jeuclid-parent-3.1.9/0000755000175000017500000000000011335262770015322 5ustar sylvestresylvestrejeuclid-parent-3.1.9/LICENSE.txt0000644000175000017500000002613611335260526017152 0ustar sylvestresylvestre Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. jeuclid-parent-3.1.9/README.Release0000644000175000017500000000653511335260526017567 0ustar sylvestresylvestreBefore the Release Send mail to jeuclid-devel, asking for potential release, count votes Release day: 2. Test with maven: mvn -DdryRun=true release:prepare (check if that works, and resolve any issues before going ahead) mvn release:clean mvn install 3. Actually prepare release: mvn release:prepare fails half-way through due to missing dependencies, fix with mvn install mvn release:prepare -Dresume if you get a mercurial commit error: - edit release.properties, set completedPhase to scm-commit-release - resume mvn release:prepare -Dresume Then the same again, this time to scm-commit-development 4. Perform the release Ensure that you have a shell at sourceforge: /usr/bin/ssh -T maxberger,jeuclid@shell.sourceforge.net create (use your user name) mvn release:perform -DgenerateReleasePoms=true (checks out the project into target/checkout) WILL FAIL after uploading jeuclid-parent, but that's ok! clean up after release: mvn release:clean 5. Manually build, install locally cd target/checkout mvn install 6. Deploy to m2-release (which is automatically synced to ibiblio) disable all modules except -mathviewer, -core, -core16 -cli -swt (use only comments, do not delete lines!) currently: fop, jeuclid, minimal, testsuite (edit pom.xml in target / checkout) mvn deploy 7. Re-enable distribution plugins (that where disabled in 1: none) Also, re-enable all modules ( still in target / checkout ) hg revert pom.xml build the real release packages: mvn package build source packages: mvn assembly:assembly -Ddescriptor=src/assemble/source.xml (TODO: Maybe also in support/ ) upload to sf: VERSION=3.1.2 #replace with version USER=maxberger #replace with your sf id cd jeuclid/target rsync -avP -e ssh jeuclid-$VERSION-distribution.zip ${USER},jeuclid@frs.sourceforge.net:/home/frs/project/j/je/jeuclid/3.1.x/${VERSION}/ cd ../../jeuclid-mathviewer/target rsync -avP -e ssh jeuclid-mathviewer-$VERSION-osx.zip ${USER},jeuclid@frs.sourceforge.net:/home/frs/project/j/je/jeuclid/3.1.x/${VERSION}/ rsync -avP -e ssh jeuclid-mathviewer-$VERSION-win32.zip ${USER},jeuclid@frs.sourceforge.net:/home/frs/project/j/je/jeuclid/3.1.x/${VERSION}/ cd ../../jeuclid-minimal/target rsync -avP -e ssh jeuclid-minimal-$VERSION-distribution.zip ${USER},jeuclid@frs.sourceforge.net:/home/frs/project/j/je/jeuclid/3.1.x/${VERSION}/ cd ../../jeuclid-fop/target rsync -avP -e ssh jeuclid-fop-$VERSION-distribution.zip ${USER},jeuclid@frs.sourceforge.net:/home/frs/project/j/je/jeuclid/3.1.x/${VERSION}/ cd ../../target/ rsync -avP -e ssh jeuclid-parent-$VERSION-src.zip ${USER},jeuclid@frs.sourceforge.net:/home/frs/project/j/je/jeuclid/3.1.x/${VERSION}/ cd .. Log into SF website and use files. ( release ) Write News on SF site 8. Update website go back to main SVN, cd ../.. cd src/site edit docbook/index.xml cd ../.. 9. update src/changes/changes.xml 12. commit changes mvn -Dmessage="Updated file after release" scm:checkin 13. Send email to jeuclid-users and jeuclid-devel, and optionally to www-math@w3.org jeuclid-parent-3.1.9/jeuclid-mathviewer/0000755000175000017500000000000011335263004021101 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/build.xml0000644000175000017500000000571011335260530022726 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-mathviewer/pom.xml0000644000175000017500000002770211335260530022427 0ustar sylvestresylvestre jeuclid-parent net.sourceforge.jeuclid 3.1.9 4.0.0 net.sourceforge.jeuclid jeuclid-mathviewer JEuclid Mathviewer Module This module contains a swing MathViewer application. package maven-jar-plugin 2.3 net.sourceforge.jeuclid.app.mathviewer.MathViewer true true true org.codehaus.mojo.webstart webstart-maven-plugin 1.0-alpha-2 mathviewer.jnlp net.sourceforge.jeuclid.app.mathviewer.MathViewer true false ${basedir}/keystore verysecret evenmoresecret signKey 365 jeuclid.sf.net true true true ${project.build.directory}/site site jnlp org.codehaus.mojo osxappbundle-maven-plugin 1.0-alpha-1 net.sourceforge.jeuclid.app.mathviewer.MathViewer ${basedir}/src/main/app-resources/JavaApplicationStub ${basedir}/src/main/app-resources/jeuclid.icns 1.5+ JEuclid MathViewer package bundle org.apache.maven.plugins maven-dependency-plugin 2.1 unpack-dependencies generate-resources unpack net.sourceforge.jeuclid jeuclid-core jar ${project.build.directory}/core false true org.apache.maven.plugins maven-shade-plugin 1.2.2 package shade ${project.artifactId}-ueber false ${project.artifactId}-ueber-${project.version}-shaded false com.akathist.maven.plugins.launch4j launch4j-maven-plugin 1.3 l4j-clui package launch4j gui ${project.build.directory}/${project.artifactId}-${project.version}.exe ${project.build.directory}/original-${project.artifactId}-ueber-${project.version}-shaded.jar net.sourceforge.jeuclid.app.mathviewer.MathViewer JEuclid Mathviewer 1.5.0 0.0.0.0 ${project.version} JEuclid Mathviewer JEuclid Project http://jeuclid.sf.net/ 0.0.0.0 ${project.version} JEuclid Mathviewer ${project.artifactId} ${project.artifactId}-${project.version}.exe src/main/app-resources/jeuclid.ico maven-assembly-plugin 2.2-beta-4 src/assemble/osx.xml src/assemble/win32.xml false package attached netbeans-public netbeans.execution true maven-jar-plugin true lib net.sourceforge.jeuclid.app.MathViewer maven-assembly-plugin nb package directory ${basedir}/src/main/assemblies/netbeans-run.xml executable net.sourceforge.jeuclid jeuclid-core 3.1.9 com.apple AppleJavaExtensions 1.2 org.apache.xmlgraphics batik-svggen 1.7 javax.servlet servlet-api xml-apis xml-apis xml-apis xml-apis-ext xalan xalan true org.freehep freehep-graphicsio-emf 2.1.3 true junit junit org.freehep freehep-graphicsio-gif 1.2.3 true org.freehep freehep-graphicsio-pdf 2.1.3 true junit junit org.freehep freehep-graphicsio-ps 2.1.3 true junit junit org.freehep freehep-graphicsio-swf 2.1.3 true junit junit net.sourceforge.jeuclid dejavu-fonts 2.29 net.sourceforge.jeuclid stix-fonts 1.0-beta-2 net.sourceforge.jeuclid ams-fonts 1.0 akathist-repository Akathist Repository http://www.9stmaryrd.com/maven akathist-repository Akathist Repository http://www.9stmaryrd.com/maven jeuclid-parent-3.1.9/jeuclid-mathviewer/src/0000755000175000017500000000000011335260530021671 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/site/0000755000175000017500000000000011335260530022635 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/site/site.xml0000644000175000017500000000133211335260530024322 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-mathviewer/src/assemble/0000755000175000017500000000000011335260530023464 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/assemble/win32.xml0000644000175000017500000000134711335260530025155 0ustar sylvestresylvestre win32 zip target/jeuclid-mathviewer-${version}.exe JEuclid MathViewer.exe 0755 target/core/net/sourceforge/jeuclid/LICENSE.txt 0644 target/core/net/sourceforge/jeuclid/NOTICE 0644 LICENSE.FreeHEP 0644 jeuclid-parent-3.1.9/jeuclid-mathviewer/src/assemble/osx.xml0000644000175000017500000000220611335260530025017 0ustar sylvestresylvestre osx zip target/jeuclid-mathviewer-${version}.app JEuclid MathViewer.app Contents/MacOS/JavaApplicationStub 0755 target/jeuclid-mathviewer-${version}.app JEuclid MathViewer.app Contents/MacOS/JavaApplicationStub 0644 target/core/net/sourceforge/jeuclid/LICENSE.txt 0644 target/core/net/sourceforge/jeuclid/NOTICE 0644 LICENSE.FreeHEP 0644 jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/0000755000175000017500000000000011335260530022615 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/jnlp/0000755000175000017500000000000011335260530023560 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/jnlp/template.vm0000644000175000017500000000137211335260530025742 0ustar sylvestresylvestre JEuclid MathViewer JEuclid developers $project.url $informationDescription $dependencies jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/jnlp/resources/0000755000175000017500000000000011335260530025572 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/jnlp/resources/jeuclid.gif0000644000175000017500000000164211335260530027703 0ustar sylvestresylvestreGIF89a 2& 3,;2*)%;3 ?<2C4R?OI9VJ+RK;ZR;bLgR`N fW3we5QMBTQHUTQg_G|mD}qPkicpmiwtjo)l6r=z z5vDvS}LQ9[`ezH^\@KYhar4ƦWɭiǰxٹkٽui<IWvemwƳͽԽĕçǦ̻ƎϜ҉ӕ؇ݖڬ۠!g, gfO0//''%##" .Q15[[aacddbBAaZZVU@@?><$,OHcʲdDbc[<$0ɱPdeBdջ?/[eeAAAdӹZYUzeÁWb1ሙz 0`ɪB3JW-5 0j#z#' A$KH0Z&Fyޑ Hbf0yE a h NY@*c+L\m!x|A +MՐbDi6ܭ$i[ XaMSd netbeans false target *.jar lib false runtime jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/app-resources/0000755000175000017500000000000011335260530025405 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/app-resources/JavaApplicationStub0000644000175000017500000013520011335260530031234 0ustar sylvestresylvestreX@ pJ 0 8__PAGEZERO__TEXT __text__TEXT'|__picsymbol_stub__TEXTD-D__symbol_stub__TEXTD-D__cstring__TEXTD-D__textcoal_nt__TEXT/ __DATA0 __data__DATA0 __dyld__DATA0 __cfstring__DATA,0, __bss__DATA0 __common__DATA04__IMPORT@0__pointers__IMPORT@0__jump_table__IMPORT@0__OBJCP@__cat_cls_meth__OBJCP@__cat_inst_meth__OBJCP@__string_object__OBJCP@__cstring_object__OBJCP@__message_refs__OBJCP@__sel_fixup__OBJCP@__cls_refs__OBJCP@__class__OBJC P @__meta_class__OBJC P @__cls_meth__OBJC P @__inst_meth__OBJC P @__protocol__OBJC P @__category__OBJC P @__class_vars__OBJC P @__instance_vars__OBJC P @__module_info__OBJC P @__symbols__OBJCP@8__LINKEDIT`@P@ /usr/lib/dyld C/System/Library/PrivateFrameworks/JavaApplicationLauncher.framework/Versions/A/JavaApplicationLauncher `C7,/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 4ۭC/usr/lib/libgcc_s.1.dylib 4ACX/usr/lib/libSystem.B.dylibP6SH P$pS"S R$P'j]\$ML$ˉ\$UWVS,EE EtЋtED$H$Et$E 8ud'/D‰vut   E8t E8uD$ ED$E D$E$a$2twUS$ED$c$U$[]Ðh%0%0UWVS  &2n GJ]H{()a{ 0& 0& 0& 0& 0& |0& l0& \0& L0& <0& ,0& 1,)(-'*"05 +%.3#2/4!$_NXArgc_NXArgv___progname__mh_execute_header_catch_exception_raise_catch_exception_raise_state_catch_exception_raise_state_identity_clock_alarm_reply_do_mach_notify_dead_name_do_mach_notify_no_senders_do_mach_notify_port_deleted_do_mach_notify_send_once_do_seqnos_mach_notify_dead_name_do_seqnos_mach_notify_no_senders_do_seqnos_mach_notify_port_deleted_do_seqnos_mach_notify_send_once_environ_receive_samples.objc_class_name_NSBundle_CFBundleCopyBundleURL_CFBundleCopyResourceURL_CFBundleCreate_CFBundleGetInfoDictionary_CFBundleGetMainBundle_CFBundleGetVersionNumber_CFDictionaryContainsKey_CFDictionaryGetTypeID_CFDictionaryGetValue_CFGetTypeID_CFRelease_CFStringGetCString_CFStringGetTypeID_CFURLCreateWithFileSystemPath_CFURLGetFileSystemRepresentation_MRJApplicationMainArgs_NSAddImage_NSAddressOfSymbol_NSLookupSymbolInImage___CFConstantStringClassReference___keymgr_dwarf2_register_sections___sF__cthread_init_routine_atexit_chdir_errno_exit_fprintf_fwrite_launchJavaApplication_mach_init_routine_objc_msgSend_stat_strcmp_strcpy 8__PAGEZERO__TEXT __text__TEXT@ @__picsymbol_stub__TEXT)88$__symbol_stub__TEXT)88__picsymbolstub1__TEXT)@`@ __cstring__TEXT*__symbol_stub1__TEXT.@@ __DATA0 __data__DATA0 __nl_symbol_ptr__DATA0 '__la_symbol_ptr__DATA0( (,__dyld__DATA0 __cfstring__DATA0 __bss__DATA1 __common__DATA14__OBJC@0__cat_cls_meth__OBJC@0__cat_inst_meth__OBJC@0__string_object__OBJC@0__cstring_object__OBJC@0__message_refs__OBJC@0__sel_fixup__OBJC@0__cls_refs__OBJC@0__class__OBJC@ 0 __meta_class__OBJC@ 0 __cls_meth__OBJC@ 0 __inst_meth__OBJC@ 0 __protocol__OBJC@ 0 __category__OBJC@ 0 __class_vars__OBJC@ 0 __instance_vars__OBJC@ 0 __module_info__OBJC@ 0 __symbols__OBJC@08__LINKEDITP @  /usr/lib/dyld C誫/System/Library/PrivateFrameworks/JavaApplicationLauncher.framework/Versions/A/JavaApplicationLauncher `C7,/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 4C/usr/lib/libgcc_s.1.dylib 4CAX/usr/lib/libSystem.B.dylib@@E\$ P.DSC C.(@|: x8!T!48!z8;cW{:|=`ak}iN!|!B||x|#x|+xH <_l<_p<_t<_B/A }N!<_B/A }N!H i<_| /A }N!HH<8c88H݀a8/AH E8<_B}/@HD//@|Jx}"Kx 9)|u@/A8 <_xH <_bxx/Ax/@xxx8HH m |uA9+}b[x9@Kp|B}=|9 D}N |B}=|9\}N |B}=|9 D}N |B}=|9}N |B}=|9x}N |B}=|9X}N |B}=|9 }N |B}=|9}N |!B<8c 88H8}N!8!`|N |B}=|9}N |bx|uM |Cx//A 8BH 8b|bx|u@N |uA<|t@4H8|H|tX@ 8B|Ix|| u@8`N 8`N 8@K|a!B<8c 88H<8c 8 x~x|8`8(HE|`x8^8x^8|^88(8`-H|`x^88`-8Hـ!|N |B}=|9}N |B}=|98}N |B}=|9}N |!|> x~x|888`-H|`x@8@ xBHe<_B h88/A^8T>+A<_8b`H<_8bHH݀!|N |B}=|9}N |B}=|9|}N |B}=|9}N |<`88c,D?;@!?H <|xx<`@<c@80;1H y<<x8081|{xH Y<81 |yx|+xxcxH 9<x8|zx810cxH <|}x8-8xHH ]8!`|lx}#xDxx|88N ||yx|#x!pH 1|}yALH|zyA`<81@H |~yAH|}xH}@H<8`81P88H|yA@8`xHi|{y&AH||xHcxH<`@A<x81`HI||y@<x81pHa|yAH%|}xH}@;X<x`x8@Hi/Ax8a8H8a8H=9!88c;|I8BTB>+A ;<`88c-HE/@<8-H <8-/A(8a8Hi/A(#xxExHQH8a8HE/AKEH<x8188H/AHxHi/A`;8x8H /ADxHM</.`.|.xH/@ <`<c0$8-x8cH#xxHy8`HD<<`0$8c.888Ha8`H;xH @K8!|N |B}h=k|}N |B}h=k|}N |B}h=k|}N |B}h=k|}N |B}h=k|p}N |B}h=k|T}N |B}h=k|8}N |B}h=k|}N |B}h=k|}N |B}h=k|}N |B}h=k|}N __dyld_mod_term_funcs__dyld_make_delayed_module_initializer_calls__dyld_image_count__dyld_get_image_name__dyld_get_image_header__dyld_NSLookupSymbolInImage__dyld_NSAddressOfSymbollibobjc__objcInitThe kernel support for the dynamic linker is not present to run this program. localizedStringForKey:value:table:bundleWithIdentifier:NSBundleJavaApplicationStub/JavaApplicationStub.m/System/Library/Frameworks/Cocoa.framework/Cocoacom.apple.JavaApplicationLauncherCannotLaunchApplicationCannot launch applicationOldJavaAlertIt requires a newer javaQuit_NSRunCriticalAlertPanelJava/System/Library/PrivateFrameworks/JavaApplicationLauncher.frameworkJNLPJVMVersion/System/Library/Frameworks/JavaVM.framework/Versions/1.3.11.3.11.3MRJApp.propertiesERROR: Could not change the current working directory to %s CFBundleGetMainBundle() failed=`0T}N =`0X}N =`0\}N =`0`}N =`0d}N =`0h}N =`0l}N =`0p}N =`0t}N =`0x}N =`0|}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N =`0}N *$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,x!,,, ,,- -(C-l-t -++, ,10 00 4 1K 1h 1 1 1 1 1 1  1. 1P 1t 10 1! $;Un3?Ri%3Y   &2n KNaH(*8:?[4{=U8{ 1&P1p&P1`&P1P&P1@&P10&P1 &P1&P1&P0&P0&P5'10+,.-7/2"9> 3%<#;8=!$6?:4*()5'10+,.-7/2"9> 3%<#;8=!$6?_NXArgc_NXArgv___progname__mh_execute_header_catch_exception_raise_catch_exception_raise_state_catch_exception_raise_state_identity_clock_alarm_reply_do_mach_notify_dead_name_do_mach_notify_no_senders_do_mach_notify_port_deleted_do_mach_notify_send_once_do_seqnos_mach_notify_dead_name_do_seqnos_mach_notify_no_senders_do_seqnos_mach_notify_port_deleted_do_seqnos_mach_notify_send_once_environ_receive_samples.objc_class_name_NSBundle_CFBundleCopyBundleURL_CFBundleCopyResourceURL_CFBundleCreate_CFBundleGetInfoDictionary_CFBundleGetMainBundle_CFBundleGetVersionNumber_CFDictionaryContainsKey_CFDictionaryGetTypeID_CFDictionaryGetValue_CFGetTypeID_CFRelease_CFStringGetCString_CFStringGetTypeID_CFURLCreateWithFileSystemPath_CFURLGetFileSystemRepresentation_MRJApplicationMainArgs_NSAddImage_NSAddressOfSymbol_NSLookupSymbolInImage___CFConstantStringClassReference___keymgr_dwarf2_register_sections___keymgr_global___sF__cthread_init_routine__dyld_register_func_for_add_image__dyld_register_func_for_remove_image__init_keymgr__keymgr_get_and_lock_processwide_ptr__keymgr_set_and_unlock_processwide_ptr_abort_atexit_calloc_chdir_errno_exit_fprintf$LDBL128_free_fwrite_launchJavaApplication_mach_init_routine_objc_msgSend_stat_strcmp_strcpy_strlenjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/app-resources/jeuclid.ico0000644000175000017500000024144611335260530027533 0ustar sylvestresylvestrehF 00%V(:(  im`RxocXJ8t}g~_ttfXI%ilx}xzNdS/wy}lMm\5聽nRta8艿gztTwd9{xb6r\8iT:`kor]RDGqbUPUw<( @ )oInomjorvxzzyyvtqmie`ZUPJC<4 y &2\[Wvto2Zj,3Dtv|xsoic^XQJD=3 |4CTJxxu+JV5Ub^v}xslf_YRKC<3?RG{~;RZztnf`XQIA9LbK:LSE_h{i5fye^WOG>PgM=MS7HOPq}Dm|ik2;ld\SKBPgRBNS:JOf]Q|p3;piaXOFQgVEOSKP8LTy3 ,;,9 )7(6'3&2$1#.!-!*)(& %ZuogKkomkjhjlnqrtuvttssqpnlifdb^[WUQMHD@<71$ ,:%oew8ssqpnlX_oxz{}~~~~~}{zxvtqnkheb^ZVROJFA=822Ys&qMd!)quvusqG  2::`pl}{xvrokhc_\XTPJFB=822 .< (/sYywvtEy4Wd~Xc{yuqniea]XTOLFA<82%&lwzyy~_M|B_ke~zvsnjfc^YUOKF@;31'm{{~{0BH|xtpkfb]XSOID?92%(m{i4HPz}ytfT^+=Cs dupid^XQJC %-o %(uKeoB\fsv fwrkf`YSKE %.p &(x9JPIdoy hztmhaZTMF &.p!&(n'15TsY|z h|vnib\TMG &/p!&(k +:A|| b}wpic[VNG &/p"&(UdktmX|n d~wqjd]UNG &0p $%}#(l~xrjc]UME &0pYcgwqjc\TMD &0p)**~xpibYRKE &0p***}wohaYQIG &0p|vmg^VNJH &0pzrkd\TMKI &0p023xqi`XQNLK &0p@CEtz||tme^UQONL &0pjqt[_bEKN/35xpiaYTRQOM &3rFKMXbf|tme\WUSRPM #Tڄ'*,CJLwog_YXVTSQ<'0c?|LTW;BDzrjb][YWVTS>K$YQ\a?HK|slc`^\ZYWV-l-Xi=y}tlfba_]\YBDSV=U=T,=+<+;*:)9)9(8(7'7'6&5%4%3$2$2#1"0"/!.!- ,,+*)(''&%$#""!             1 FaGcGcFbFaE`Mh Zx`fdddccbbbaa```__~_}]|]|\{\y[xZwZxYxYwYvYuYtWsXrWrUqUqUoUnSnRnRlSkSkQiQiQiOgOfNfNfNeMdMdLcLcLcKaK`K`K_I^H^H^H]H]G[FZG[G[GZEYEYEXDXDXCWDWDWBUBUAUBUBUAUAS@S?R?R?R?P?Q=P>Q=Q=P=N5E *6     !HcqHdHcGc Sq/Qgjiigggfeeddcbbaa`bbeeefgghiijkjkkmmllmllllmlkjiiiihhgfeedccbaa_^\[[ZYYVVUTQPPNLLJIGFCB@@><;:7744322+`{# u9U IeIeHdWsKoqpponmmllkkjiihggfhikklnmmoopqqqrrrrssrssrrrqqqqpononnmllkjihgffdba``_]\ZYXXVUSRPOOMKIHFECB@?=;:865432221x" 9U JgIfIe&rnrrqqpoonmmllkjjiihjkmmnooqqrsstuuuuvvwvvvuvvutuutssrrqrqponnmlkjigfeecba`^]\[ZXVVUSRPOMMJHGEDB@?><:96543222219J KhJgIf=ttsrqqppoonmmllkjjkmoopqrstuvwwxxxyyzyyyzzyzyyyyyxwvvvuutssrqppnmlkjihffedba`^^[ZZXVUTSQPNMKJGFDCA?><::753322222XrKgmKhJg>uutssrqqppoonmmlkhYVVZktvwwxyz{{{|||||}}|~}|}}|||{{{zzyxwwvuutsrqponmlkjihfecbb__]\[XXVTSRPOMLKHFECA?><:9753222222[uu FjKhKh(vvvuutssrqqppoommQ4>  "((GS;hyJiz|||}~~}}}||{{yxwvvutsrqponmkjhgfecb``^][ZWWUSRQONKKIHFCB@>=;9853222222=N!LiKh]zqwvvuutsrrqqpooX#) =hyEtXy~~||{zyxwvutsrqponmlkhgeecb`_^[ZYWVTRQPNLKIGECB@>=;9853222221!Lg%LiKhQxwwvuuttsrqqpn2\l+2CqNOCq(/.LWaQp~~}|{zyxwvusrqoolljihgfcca_^][YXVUTQPNMJIGEDB@>=;985322222!- PoLi]zwywwvvuutssrqq)JV6?d\$:B\\a~~}|zyxwvutrqonmkjigfecb`^\\YXWUSQPOMKIHFDB@><:885222221!UqLiCyyxwwvvuutsuv(FR Am~~-HR7Ub^[~}|{zyxutsrqonlkihgedba_][ZXWUTQPNMJIHFDB@><:86422222kJf-LjLibzyyxwwvvuuuxNK|(>F(>EXU~}|zyywvtsqpomkiigeeca_^\ZXWVSRPOMKIHFDB@=<:8642222*5Wr^LjYvyzzyyxwwvux{|{Fu  Jy+0LqZ~}{zyxvutspomlkihfdca_^[ZYWVSROOLKIHFCA?=<98542222]>uLj!l{{zzyyxwx{}~pge-BJNrn~||zxwvtrronljjgfecb_^\[YWUSRPOLKIGDCA?=;9852222 /=6pLj,y{{{zyyxz~~*/;V_Qt}|zyxvurrpomkjgfdcb_^\ZYWUSRONLJIFDBA?<:864222?R<:8643H^?vLj1{{~#'(,Vu+=DQsxl}|zywvtrqnmD!AM6i9rRca`]\YXVTRONLJIFDB@=;9853H^?vLj1{~.=C Xu Stv.BK_Out~}zywvtrpnD(O_;wdba_]\YXUSRONLIHFCA>=;964I^?vLj1~?RZYv TtYQwMr|~|zywvtrpE!BO;:75I^?vLj3CW^ [v Uu=WbSxQwobGyaxwutrF"BO=whedb`^\ZXVTRPOLIHFCA>=:96I^?vLj4DW^ \w Vu&+).Sy\3;(BNGyvywusG#CO=wigeca`]\YXUSROMLIGEC@><:7I^?vLj5EW_ ^w Wu=WbOso:_m6Ziq|zxwuH#COCjigdca^]ZYWURPNLJIECA>=:8I^?vLj6FX_ `w XuEbnIiuOs[-JUo}|zxwH#COElihedba^\YWVSQPMKIGEB@>;:I^?vLj8GX_ ax Yv'+RuZw %WbPs|+1*0f|{zJ$COGmmjiedba^\ZWVTQPMKIFDB@=;I^?vLj:IX_dy [wD_j\Sv+AJ)._~}{K+O]Hpnlihedb_][YWUSQNLJHEB@>;I^?vLj;KY_ ey \w!.3$4:YbMtZ}|L-Q_Hpnmkifdca_\ZXUTQONKHFDA?<I^?vLjJ^?vLj>MZ_ iz0;? _x8NV!.3ggy PuN.Q_Ktqpoljgfda`][XVSRPMKHFDA?I^?vLj?NZ_ j{0;? `xLkwFco  PtO/R`Lvtqomkhfeb`]\YWURPMLIFDA?I^?vLj@O[_ j{0;? ax  GerP/R`Lvurpoljgfda^]ZWVSQOMIGEB@J^?vLj@P[_ l|1;? by 0DLW{P/R`Mwusqoljhfeb`]ZXVTQOMJHEC@J^?vLjAP[_ m|1;? cx +0 5KSZoR0R`Nxvsqpmkigeb`^[ZWTRONKHFCAJ^?vLjBQ[_ n|2;? cy +0?W`qW{RsR0R`Nxwurqnlihfca_\ZXURPNKIFDAJ^?vLjCR[_ o}2;? dy",1GGv~|zwvrpnkheda^\XWSPNKIFCJ^?vLjIw} !z k|5R^"7@Do}zxuspnkhfca^[YVTQMKHECJ^?vLjJx} !{l|_-ITDn~~zxusqnkifc`_\YVRPMKHEBJ^?vLjJy} !{m|/KV3R]m||zwuspnjhfc`^[YUSPMJHDCJ^?vLjKz} !{Ycgtx}zwutpmkheca^[XVSONJGECJ^?vLjKz} !| }{xurqmkifb`][WUROLKGDCJ^?vLjK{~ !}}zwvspmjgec`]ZWUQOLIGDDJ^?vLjL{~ !}}zxusonkhec`][WTQNLHEEDJ^?vLjL{~ !~|zxurpmjgeb_\YWTQNKHFEEK^?vLjL|~ !~|zwuromjgeb_\XVSPNJGGFEK^?vLjL|~~|zwsrnligd`^[XUSPLJHGGFK^?vLjL|~~}ywsqokhfca\ZWTQOKIHHGFK^?vLjL~{yvtpmjhec`]ZVTQNLIIHGGK^?vLjL~zxvromjgdb^\YVSPMJJIIHGK^?vLjL}zvtroljgda][XTRNLKJJIHHK^?vLjL~|ywtqnkhfc`]YWTPNLLJJIIHK^?vLjL|~{yurpmjgea^\YVSPMLLKJJIIK^?vLjLost~zxuroligd`^ZWUQNMMLLKJJIK^?vLjKbef|yxtqolieb`\ZVSQNNMMLLKJJK^?vLjKUXY~|yvspmjgea^[WVRPONNMMLLJJK_?vLjKGJK|~zwtroljfc`]ZXSQPOONNMLLKJK_?vLjK134:=>{V]_PWYirv{yvtqmkgeb^\YURQQPONNMMLLKK_?vLjJNRT !zdlo HPSr}}zxuromjfc`\ZWTRRQPPONNMMLLL_?vLjJyyDIK&)+q}{zvtpnkgea_\XVSSRQQPPONNMMLL_ByLjAovx7=?}{wuqpmifba][WTTSSRQQPOONNMLBS[Lj0qV[]Zdg~|ywsrmkhdb^\XVUTTSRRQQPOONMM3@}Lj[w=ACw.24v}zxtrolifc_]ZWVVUTSSRRQPPONNM "]ɀLjLielp$'(vFNQ|yutpmjgd`^[XWVVUTTSSRQQPPONB5U`zLicnwzv}zwurnkgea`\YXWWVVUTTSSRQQPOO,qvLi_z.24KQTvDKMQY]{xvspligca\ZYYXWWVVUTTSSRQQPN &LiKh{ #&(tBHJ.35|ywrpmjhdb^[ZZYYXWWVVUTSSRRQQ6-}RKh_z`jns!$&}zxtqnkiec_\\[ZYYXXWWVUTTSSRQP &  QmKh<| LTW#$!"~{xurpkhfd`]]\[[ZYYXWWVVUTTSSRHX!uKhJg^bns /58~|yvspmjfd`^]]\\[[ZYYXWWVVUTTS)f~!UJgIf^MW[5=?ISV}zwspmjheb_^^]]\\[ZZYYXWWVVUT)g-4!NIfIej{=jzV=U=T,=+<+;*:)9)9(8(7'7'6&5%4%3$2$2#1"0"/!.!- ,,+*)(''&%$#""!          @^jv)m᤼fbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb~b}b}b}b}b|b{b{b{b{bzbzbzbyay`x`w^w]v]u\t\t[tZs~Ys}Yr}Xr|Xq{Wp{VpzUoyUoyTnxTmwSlwRlwRlvQkuPkuPjtOitOitNhsMhrLgrLfqKfqKepJdpIdoIcoHcmGclGalFalF`kE`jD`jC_iC^iB]iA]hA]g@[gMlzdr`??jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/app-resources/jeuclid.icns0000644000175000017500000015323211335260530027710 0ustar sylvestresylvestreicns֚ics#His32*ѿoݧݦܥ(ܬdҨ*`ak˾ɜʛ֟̚z؅͛Ԝߎބ̜Ϛ߰ڃ˚/ʜڹˏș֒ܣŚ:̲qbUPY΄`IJr]RL೽ϻϽiT>ðr\;߯{xb:ČgtTwd=ѻnRta<{y}lMm\9/llx}xzNdS2n~_ttfXI(o`RxocXJ9=s8mkG<}ICN#??il32*# yxTQm*pysu wUwT wTր wfW}wpP?;uoPP8yxqh_UKXEȒ<`aSsvme\RIUB¿:f]QppiaXOFN=\7PDikld\SKBL:E{i5e^WOG>I{~;ztnf`XQIA9Txxu+5^vQ}xslf_YRKC<3Xvto2Dv|xsoic^XQJD=3!*BNoomjorvxzzyyvtqmie`ZUPJC<5"l8mk- )[Tich#H????ih32*}{yxvtsqpnljigedb`^][ZWUTRQNMKJBmrΑ R٬aKWDL,LفC Mf&tbN5)E|)3)))*)*)g)%܁()(k)(A)(5)(݀ Po)(݀ of((^Cʁ((tjlʁ((r\ɀ((7((eހ!( (O( P(H؂(k Ёd*:pBrS AU(~}yxuromjgfca][WVTQPNJFDA@=;:6510.,%.)*tnmmlkihgfecba`_][ZYXUTRPOLKJGGDCB@?=7\w ry'ǙCŔ\Hˀ l|TB>\*Jǖ6wKbtq_xK3 tCz t2ǀ t t t*{ t*tct\$ݽ#t&d|ݨt[&:t&1s|ܿt,&Jd۾r%e\۽r%T=ڽr%i_`ټ q]%gQ{ػq%s0ֺq3$[չp%$GزԸ¿p+HtpB,s՚|_܁*yW։؂[!Mt҂ 2`2L֌ШԀd?pЁЄ1>)b]\[ZYUTRPNKKHHFCA@>=:96440/.,*)&&#$!$)vf>889:98775320/-,*('%$#""! 6r=Ŀ}tlfba_]\YBPYԹQ?ſ|slc`^\ZYWV-D?ۓL;ľ~zrjb][YWVTS*a'Cýwog_YXVTSQ<4FX|tme\WUSRPM 1j[E/ĽxpiaYTRQOM 1@t꥘|tme^UQONL 10¼xqi`XQNLK 1üzrkd\TMKI 1½|vmg^VNJH 1*¼}wohaYQIG 1)~xpibYRKE 1YĿwqjc\TMD 1߉ ½}l~xrjc]UME 0݆"UtmXn d~wqjd]UNG 0و!k +|| b}wpic[VNG /֝!n'TYz h|vnib\TMG /Қ ¾x9Iy hztmhaZTMF -Η uKBsv fwrkf`YSK E ,ԁ+ɔ>+s dupid^XQJC ,̀őLCCr brmfa\VPIB +J|8Qp _pjd_YSMGA *R_ Rl ]mgb\VQKE? )q@}_|h Yid^YSNIB< (k2wkjxe Vea[UPLE?:({i4zR}ytf<_a]XRNHB=6'{{~{0|xtpkfb]XSOID?92'wzyy~_MBe+~zvsnjfc^YUOKF@;31?YywvtE4~Xc\{yuqniea]XTOLFA<82&6)uvusqG :l}{xvrokhc_\XTPJFB=822 <9ssqpnlX_oxz{}~}{zxvtqnkheb^ZVROJFA=821 +"Njomkjhjlnqrtuvttssqpnlifdb^[WUQMHD@<71& 6   h8mk  \c$ݸ!(wqoo!ՠ%it32h M{ͳ ~}}|{{zyyxwvuut srrqqppoomlkjjihggonZr`_^^]\[ZYYXWVUTTSRQPONNMLKJIIHGFEDDCBA@??>=<;:9987765432210/.-,,+*)(''&%$#""!  j&cba`n~~}|{{zyxxwvvutssr qppoonnmmlkjiih gfZH' P "iccuы,  edv*N$s feZ:Egf[?V=%hgs 8ʃ~=mhW$"Xhzn&& ihȂ (J5 iz4TM]&zizji݀p(ͅQÌ jwC4"j]gÀ@jx?SjˆK+_jT!߇o S_j4>_Yv_jK_jY_jf^jt^j^j^j^jǁ^jЀ^j^j^j!^j!^j!߇^j!߆^j!߆ ^j!߅g^j!߄V]^j!߃T^j!߃ ^@^j|!߂ ̂oCqG^jd!߁ ΀ [ÁV|P^j`!߀ ΀y7|P ^j`! ΁"#z|P ^j_! ΂&DkP ^j_! ΂.c1P^j_ ߈ ΁ 8 rP^j_ އ+΀D \ÀP^j_ ݆?΀E+7P^j_ ?·E;}P^j_ ݀?· =NL]^j_ ݂?Ά 1Yr` ^j_ ݊?΄0`ڂ `^j_ ݊?΂0S`^j_ ݊?͆L`^j_ ݊?ͅ r`^j_ ފ?̈́wo`^j_ ?̓ V3_^j_ +̓ _^j_ ͂fЀ_^j_ ވ́3:_^j_̀jJ.]^j_׀̀bʀ10O^j_̓+ EO^j_ͅnuUO^j_ͅͅbmiO^j^̈́̄+.;NO^j^̓̄bO^jẐ̃ͅO^jC ր̂K‹_^j',ރD́Mˇ^jHj^jq^j ^j/_RjҾJ<3jv 0>jiډFEwiR~RbizV?ƃB ihƈl 2/WӀhz)y!jh >(SyւQhgƻzgf|UfeOUedt"dccs#  Ocba`j~~|}}zyxwwusrrqonnlkjihgfcbb`_^[\[\\[ZM: 6kk`_^^]\[ZYYXWVUTTSRQPONNMLKJIIHGFEDDCBA@??>=<;:9987765432210/.-,,+*)(''&%$#""!  .M{§~}|{zyyxwwvut ssrrqppoonml kkjiihhgffeddcaa`_^][q2anZZEEDCCBBA@@??>==<;;::9887765544322110//..-,,++*))((''&%%$$#""!!  ^ GFFEUkz~~~}}|{{zyxwwvvutrqqpoonnljhggffdcbaa`__][[ZXWWVUTSJ:G] "NHGZ΀͂̃ʫr#IH\%̓̂˂Ɖ!D- s IIz΃̂˃H3uEJIW=S"́̂˃ʂg4%KJn 5&̃˂ʃf5QK|T#/!΀͂˂ʃɀHK_j$,̀˃ʂɀLK &H3*˃ʂɁdžL_2QKY'˂ʃɀȀ`Lw ˀʃɀȂq{LLl'ȃN'ʂɀȃL[A2ʂɁȂLq[d#ʁɀȂǀ3Lv=+ʀɀȃǀBLI)} !ɁȃǁLLR ܂l P}%ɀȂǂLL3=<]WrȂǃKLJ ȂǂKLX (ȀǂKLe.ǃKLs+΀ǃƀKL &ǁƁKLBǀƂ KL  ƂKL  %ƂKL9ƁKL~΀4ƀKL ~րŀKL ~ $ŁKL ~ 5ŁKL ~ 'ŁJL~ ;JL} QJL} cEJL} |OKRJL} 7|ےIǹJL }  |jR7oJLz {hA<տc>vJL b 4 { UNmE|Հ6JL] {pFx1smE|JL ]  {  m}mE{Հ/JL] ؀{€ %?G`ssE{JL'] ~z,[(,wڈE|ȀJL]~z4 u grw܀8E{JL\~)zU? SsهDJLv\~<z?'1uهDJL\} <z?5psހ9هDJL0\};y7GExހ@؇PJL[} ;y ,PfۀD؆RJL[|;yN+W{s؆RJL[|Ԁ;x+Kۀ:؅RJL [|;y D{ځ2RJL [{Ӂ ;x  e݀:ֆRJL Z{;x kc tހ=օRILZzр;xN.uـօQр*ILZz(w{}xޘ~ـ ՅQЀ ȀJLZzw[u>ՄQIL Yy w.4t؀0ՄQILXyw_v߁A)ـ5ԄOIL Xx vWsށ=+*ԄCIL XxvM'uڻ <ԄCILXwubisހ&ؒJӄCĀILWwuWs܀_ZӃCǀILWwu &)y݀ـ3By҃CwƀILWv uWxwˁـ!׻y҂BwÀILRv t ߀wr܀ۀ׀тBwƀILڀ =ut߫Buۀ׀րՀ1ЂOwILۀ #(u=s߀ְˠ܁ۀ؀ׁ!ЁAirHLـۀ߀ At _x߁ہ؀ՀҀΟHL׀݀ހe݀݁ـ׀րŀHLՀځ݀ނ߀ws߂݁ۀـ؀ցҀ̀ŀHLyՀ؀ـ݂*Vtހ݀ہڀـׁՀр̀?LlՃضـۀ܂Brބ݁ۀځ؁ցӀπ̀.LYՃ u yـ+q܁݁ہڀ؀ׁҀƀ LLՃԀӈ|׀ڀ>>݄̀܂ځ؀ׁԁҀрƀŀYLԂFmӀ׀HUڀڂڄ؁׀ցӁрЀˀƀ jL]ҁԂӀJ 6ؔ:׀فق ؁׀Ճҁ΀ LKԃӀ\ +qq(L׀؀؁ق؀ׁրՁ Ѐ̀mK]ԂӁҀ#ht̀ւ׀؂׀ՁԀӃρÀ`LKvԂӁ҂К4 "GhՃր׀ׂրՀԁӀҁЀ΀̀ǀÀ?KJӁ҃рǦԃփՃԀӁҁрπ̀_nJIӀ҃т ҁӇԀҀӀҁсЂ΀ Ȁ_8gIIq́҂тЃρӀ҂ӁҀсЀ΁ˀɀǀĀ=8kIHW҂тЃ΁ЁҀҀфЁ΁́ˀɁHHGT܀؀ׂք ڀۇڃق؁ՁԁҁЀɀƀҽo `fGFFENaktrqqonnmljjihhfgegfccdda``bb_``]]\[[ZYVUTRUQ OONOOMMKLLKKIHGEFE:-6k{MEEDCCBBA@@??>==<;;::9887765544322110//..-,,++*))((''&%%$$#""!!   M{詉fb6a``^]]\\[ZYYXXWVUUTTSRRQPPOONMLLKKJIIHGGFFEDCCBAA@PoZw ?R/AIJJKLMNML&KKJJIHGFDDCBA@?>=<;:9976653310/.-,+*)('&%%$ -" à͇G¿}zxuqolhfccbaa``_^]]\\[[ZYK0 RuUx̀ρЃсπEÿ}{wtqnkiebaa``_^^]]\[[ZYYXWV: (6sN<̀Ѐ҈ҀG}ywtqnkidc``_^^]]\\[ZYYXXWWVTEU^ЀӀԀՄM5IҀB}zwspmjheb_^^]]\\[ZZYYXWWVVUT)%^ր׃b I/~|yvspmjfd`^]]\\[[ZYYXWWVVUTTS)! <ـځ LF~{xurpkhfd`]]\[[ZYYXWWVVUTTSSR Rۂ ݑ`sٶ!H}zxtqnkiec_\\[ZYYXXWWVUTTSSRQP {݁ #tBE.|ywrpmjhdb^[ZZYYXWWVVUTSSRRQQ6 uށ.KvDEQ{xvspligca\ZYYXWWVVUTTSSRQQPN cހ nIv}zwurnkgea`\YXWWVVUTTSSRQQPOO,+Ke$v䜀DF|yutpmjgd`^[XWVVUTTSSRQQPPONB"=wـw.v}zxtrolifc_]ZWVVUTSSRRQPPONNM x0V䤀qZ~|ywsrmkhdb^\XVUTTSRRQQPOONMMPAoo7}{wuqpmifba][WTTSSRQQPOONNMLLJyynD&q{zvtpnkgea_\XVSSRQQPPONNMMLLJNz҂zd Hr}zxuromjfc`\ZWTRRQPPONNMMLLLK1:{VPi{yvtqmkgeb^\YURQQPONNMMLLKLKG|zخ~zwtroljfc`]ZXSQPOONNMLLKJLKU|~|yvspmjgea^[WVRPONNMMLLJJLKb¿|yxtqolieb`\ZVSQNNMMLLKJJLLo~zxuroligd`^ZWUQNMMLLKJJILL|~{yurpmjgea^\YVSPMLLKJJIILL~|ywtqnkhfc`]YWTPNLLJJIIHLL}zvtroljgda][XTRNLKJJIHHLL~zxvromjgdb^\YVSPMJJIIHGLL~{yvtpmjhec`]ZVTQNLIIHGGLL|~}ywsqokhfca\ZWTQOKIHHGFLL|~|zwsrnligd`^[XUSPLJHGGFLL| ~|zwuromjgeb_\XVSPNJGGFELL{ ~|zxurpmjgeb_\YWTQNKHFEELL{}}zxusonkhec`][WTQNLHEEDLK{}}zwvspmjgec`]ZWUQOLIGDDLKz|ܱ}{xurqmkifb`][WUROLKGDCLKz{Ytx}zwutpmkheca^[XVSONJGECLJy{ Ӏdm/3m||zwuspnjhfc`^[YUSPMJHDCLJx{؀l_-D~~zxusqnkifc`_\YVRPMKHEBLIwz k5"D}zxuspnkhfca^[YVTQMKHECLItybkǪVy+@'G~|zwvrpnkheda^\XWSPNKIFCLIw]x jl F8]YF+K~{zwurpnkhfc`^\YWTPNKIFCLHzXx jȉ\W#QoE+K~{ywtrpnjhfc`^[YVTQNKIFCLH{Xw iŧq NYE*K~{zvuqonjieca^[YVTPNKIFDLHzWu iì3fEQI*J}zxvtqnmjhec`^ZXVTPNKHFDLGvWv h#HTfU*J~|ywvsqnljgec`^ZYVTQMKHFCLFyVt h* \JRTU*J~|ywvrpmljgdb_]ZXVSPNKHECLFsUs# g2i;R{U)O}{yvurpmkifcb_\YXUSPMKGFCLEvTs3 f¾1u$TbT)Q|zxvtqoljheda^\ZWURPMKHFBLD߀rTq3 f0)nPRT)O{zwvtqnkjhec`^[ZWTRPMJHECLCۀSp2 e+61UrT0O{ywurpnkigeb`]\YVTQPLJGDBLC܀rRo2 d"ɀ̀Mi0 _8!ggy PN.Ktqpoljgfda`][XVSRPMKHFDA?L=ʀwLg _YYUiT~M.Jspnmkifdc`^\YXUSQOMJHECA>L<ƁǂKf ^AR^W}M-Iqpnljhedb_][YWTRPNLJGDC@=L;uKe \!$YbMZ}|L-Hpnmkifdca_\ZXUTQONKHFDA?<L:Idj [D\S+_~}{K+Hpnlihedb_][YWUSQNLJHEB@>;L8~H b [{>P|f|{zJ$Gmmjiedba^\ZWVTQPMKIFDB@=;L8}G a YRZw%g}|zwJ$Gmjigdca_][YWVRPOMJHFCA?<;L6|F ` XEIO[-o}|zxwH#Elihedba^\YWVSQPMKIGEB@>;:L5E ^g W=Oo:6q|zxwuH#Cjigdca^]ZYWURPNLJIECA>=:8L4D \h VS\(GvywusG#=igeca`]\YXUSROMLIGEC@><:7L3C [l U=SQobGaxwutrF"=hedb`^\ZXVTRPOLIHFCA>=:96L1~?Y TYQM|~|zywvtrpE!;:75L1{~ .Xj Sv._Ot~}zywvtrpnD(;dba_]\YXUSRONLIHFCA>=;964L1{{~ VR+Qxl}|zywvtrqnmD!69Rca`]\YXVTRONLJIFDB@=;9853L1{}0UOCkT|}|{xwutrqomlhiO_ca`^\ZXVTRQONKIGDBA><:8643L1{!|~IbQ|{zxwvtrponljhfdcb`^\ZXWUSQONKIHFCA?=;98532K1{zzy} TQwK~|{zwwusqqpmkjhfedb`^\ZYWUSQONLIHFDB@=<985422F,{"zyyxz~~;QE}|zyxvurrpomkjgfdcb_^\ZYWUSRONLJIFDBA?<:8642-`!{{zzyyxwx{}~pge-NnB~||zxwvtrronljjgfecb_^\[YWUSRPOLKIGDCA?=;9852 0yzzyyxwwvux{|{FJLZ>~}{zyxvutspomlkihfdca_^[ZYWVSROOLKIHFCA?=<98542"bzyyxwwvvuxNK((XUG~}|zyywvtsqpomkiigeeca_^\ZXWVSRPOMKIHFDB@=<:8642*Cyyxwwvvuutsuv( A~-7^[>~}|{zyxutsrqonlkihgedba_][ZXWUTQPNMJIHFDB@><:8642wywwvvuutssrqq)d\$\\aA~~}|zyxwvutrqonmkjigfecb`^\\YXWUSQPOMKIHFDB@><:88521)Qxwwvuuttsrqqpn2CNOC.aQp7~~}|{zyxwvusrqoolljihgfcca_^][YXVUTQPNMJIGEDB@>=;98532 qwvvuutsrrqqpooX =EXyA~~||{zyxwvutsrqponmlkhgeecb`_^[ZYWVTRQPNLKIGECB@>=;985321F(vvuutssrqqppoommQ(;Jiz|}~~}6||{{yxwvvutsrqponmkjhgfecb``^][ZWWUSRQONKKIHFCB@>=;98532! >uutssrqqppoonmmlkhYVVZktvwwxyz{|}}|~}|}}|{7zzyxwwvuutsrqponmlkjihfecbb__]\[XXVTSRPOMLKHFECA?><:97532"=ttsrqqppoonmmllkjjkmoopqrstuvwwxyyzyzzyzyxwv4uutssrqppnmlkjihffedba`^^[ZZXVUTSQPNMKJGFDCA?><::75332#%nrrqqpoonmmllkjjiihjkmmnooqqrsstuvvwv>uvvutuutssrrqrqponnmlkjigfeecba`^]\[ZXVVUSRPOMMJHGEDB@?><:9654323" Joqpponmmllkkjiihggfhikklnmmoopqrssrssrq4pononnmllkjihgffdba``_]\ZYXXVUSRPOOMKIHFECB@?=;:8654323"  2Vmmllj ihhggfeeddceehikklmmnonoprrqqrqrqpon3mmlkjjihhgffcb`__^]]YYXWTSSQOOLKIHEDBB@=<;88554562F  )t8mk@)m`5 u1 E! u!}-U5]^]-5%-!mu  qu!%1jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/0000755000175000017500000000000011335260530024627 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/icons/0000755000175000017500000000000011335260530025742 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/icons/jeuclid_128x128.png0000644000175000017500000003014411335260530031106 0ustar sylvestresylvestrePNG  IHDR>abKGDC pHYsHHFk>0IDATx}i]E[;G2$$$Qd2D (ڟ6jЭ"* !Ќ̃͠ `H 7MrZߏUvSyn9{׮]ֻƪ]ZZZZZZZZZZZZZZZZZZ%EٿryQeGs}-5oZ y^G2aWNG Q|u[[|\[nF .nJDOvpdϙq۪='CeG ]E?wЄaCvL8^p/-;`ͭÇٶu>W~;`ȱF)+7 DܨBIW^8j ɲ4]=n\Òm~;Ig혟Umiن"->ǚgvᵵ;nn4'77?g󏧜K6[?t/>F,Ɯ`ĩ(2ӄRPܜ>wjZhF斂%Qss@OGM{T}{ZvS EUyv`gί|}y|WjmrO_<{;F՞}"ҕ܎gը#}!T(tdUֳm$(d7JtOJq1M 4li8 m1P짮v *,$H0ߎ⺕ Gۗk{@5]x?u`Ϟ=J=}w?4ŧ70|S_DCSex&>  Eg* @D$$ 0fЖN߃'yNK@X&k!!Q|Y`>7\$nM:^ 4A)3ϔ'LpU?矸pgT0NEIVF) +"k1y%`FRJGyMC1A> 3W2o+ʶ\R>0 2`q@x.igsK{zSy./pigζM|I\G,~Hҽ}{\] ?d.8xlG<'62vJ:%k#۞bQ Iz$Tٛ7߿jwK ;仯uϿ&瘷0|ܿo+GJ;M.=3Q̙=g~8}_Z۶;]=$?̘jqye@a8)%+Al%.Glg7&pXNX==}Gο a/(2# GsA 7, >X|+/S8cpc{SwaɎL_{`mRaJTdDTqkAIk¡׳4VY J,J @J}Ygq7bΦ_Sظs^xv-#FIsy( 8K0[?HP%r >u0{b9SLƹ|FBsf瞸 'x#úq=?4RJeVx,EQBh*M0WjJl]%5A</.1[v9v5{powr/U@UȠ& &VT*/g̞ âEGDcS3njz"7য়}7|7^{-/HտwPC&C\c$'Re$,S^^8?dm]W{[g d G= ủ"@ 5fr+B=`lBx_D}}Oɓ&`ؐP_|k~uO0q87;.r#)@%`VJx)͈?h|!/ R=* z~5rỊ r#7Z1Tb$F"_P ?ֻS&ODcc#fΜ>]mkm/mxs,4[|R:7(U@{ 0_БM l@{039Pџ+2?"bRHGÂ`~/#ƍ@aLGBN_r".#OwcZ')80τɷPۜ3:@ ƚt ƌ-8+̺Z=\@$3s̏@Y95^;X·+xX*j7L\e2m}HJ@h>y&?y=3ZaHH%Ó>atmVkfx!#&'2RJX l_h_~e¸qc0nܘP?Dy b_Y_Y-LA,X ,\$P E@ dD~SQ`,c4"gar C@ 3 <#NQ| WJ ۞P `?r@gG1b3w( ?P9`}S^C8%A .%x/a5 m N v?[*HrU`b8ԋ%XB+h0dH'&HÈ0m$@ssfΘ@a۶a9%gշ #`R8vDkR)(bJ I#[<xPoO()- 5Hv`5 oqtx2<Ygƍq#0bİ<^BfB8zYmFdSȚǕm'G3^(df`d*ʬ/B%a* I?#$R$u׼ P m} @کo3cE\V`9/!P Cϝdę:~ʞ#-@*9Q$ w\) 8&PlJVĒB>@5^cpK&Nf܎kCW@{{;ۑeT'K>H#7+n٘rKm:oJY6ߙRZhp! @b44 t"6&2v 1wSā˽dxhAJVUt.56mv=hkkCG{GNlsc3O^i;Z0Or\IvL[i6E1^쾼ut"Yb-0wwwvw6%Xc6KV!vydx% # +pɄr)bG΃]r]ߔ< @CED򌖠+vo@JIĂdd-U<*̗0L'OT|&<6> 1>.m=a}ሑ'( &$H!~0m9ZDv޶PopX!6\$յt.3kjj "ħDxsĜ3)h 2'ȍP|_D)JJXִDsE }`o\N 0frљгk}5Y/ɥb䏓tu|kQh@F~">8F:}--hWE@27 JºTV)y ;jBMNfx˨9N̘Bpk`T1H>*%3r|?`(湞lOL81L):bvQ/*y\. 羉'3/ f:3'Lu{J"3q(H5@MYΧADJu^k$ʨJ~-S n9zHPDd \$b:ڨěG@Vѹ}oRUoؗ< _ Ifsvy%Lv1Hi!(TVN%̀wh* 4XՋbAJY/6UcUT ~zm-@cO"<׳{M/{{ ER)tLcp_+4C8Z+oF(Dq3DqkDG(&7H TA}NbPz%@|Yq;S@1/8×0lV-!)E:6=jGYiиȐBuXE;mM !}/LF4GP;ޟ1gw>P=SwlU---)fDx9j  Y'Fg3 ,XMG8ǷcĴXWhC)UtpùAIv/2P#8Nٽw/`މ;_=ޗX_G28y}(3ٮ<bZ)*0&-!%$@r)uf^`|-͢ڥ{dҫ~zz{$<~pmں P@VR4o% ~-B 7֚Q̼8U7Ƌmyfg loBܜ0C[Bnذ'x8oLM4 To 9?F|O)kHĚ49 '}"~\shnCzDhivh0׻ҝ ^SE=c  }@^-9V Q{)dD=,E<ٵp{"g LNpmO'a˶L8ct$*%R܇mD&3G˳l)I$/$=}JݟUlhN> yƎ2 [-w< E[=RDG[3ul67çG̏}R CiY$@QNC7kYX!6mdɛ:k6\uhj@`Js='VY?G1 Baf٣Xf#y;P__¢@sS]>j4֗t< ( X:ĸ 5E2PsA7-z3DK Yja\kֶ-Gכcw_s9z4ryk-91fT&YD~DLQ#Z> LAG89 "FH]>(p-"滝:c'4ۦĸ-P欄չvH[ _v _8 ZkpCEcNF=׸a8mSdbR+J[@Aظe% ٖ %U@HIUMu'w̏ODa$Abk["h4Ec{2ȶނ{o=koo}[8e@xW_ݏv8cPe; .'R-uB`)Ag>S." Y;RՐǫ7 U>}{L@HR bsgٶҠaEč ez?ccæm;q]gu/}Whmn)c0nt'7)-ͪ2( Qԛ/Pu$(ٓv@b%`)v vڴuYCΣP1O%r^f Fi/k9_y?;%, <ܫ䇏C5Nx,d*Z!Hb;G_{{%̘5C)_C I񂝪>A`vԤ:OȽVoNT(;'a}Y {o~߆E:Ϧ ]e4{n RɱpI(P͒!1%FQ& 0*fp,!1Jd-ּMLl[,C3s=*f,a0SZġ\] W뵿Req6Uڈ]Gr"H"J2Sv?f6Ę#%<6a }:v2SUPu˂@ \&)gbGXPi<;_BH ^hL[2{.OGƐ&|cۼLo U]XWr0 ] Y?GJHFXXA`/ Z)(U '_L#L|8+H-GH i~<<* چA)}'g]KJ|8۝D93aS@J 08U1)k 2|/Q"ך v> E y#f $--=pٵ;,.ң5"wb]OڷSK?v<+*bn"nA>Sb ƴVTs/mB)H3:4 J!UucE 70sP I D-(W.bߥwC@4ާ}-q5 9xC5;rANΫ,/%,: $$J,8p"fLζ&̜2Wk{!ذyqΏFc} : ؑ* 6nH\3m"!9I4XmS()M凶Ρx,L`E H+VAoي4f!=DvI0o_YN;{Es>~Ӌpqaq˅c{-@Vd㨀cA{hB;)Љ   ͙D⥋zvr4U5X&x[n5ALn}쩗qů٧-=X|fќر㷗ŗ㻗݋Zexe/"'Pv*Hp) q@DOjZzwJP۽k0dԑf"|3i!i]ۦݻq7QC0yp lܙؐW?0Zu-.$ $ ^ ;E UfHXZ`vEh1ۿ1Z{;Q$U͛RJe/o# ~%7c+pCKN8*#c2閦PNo(xt%~r.]߁M23">dt!t> &3J0$k +]i^!b,|O M5kb ,AVϮ?hiaMm93t˰-Ϟw${kdžM#KK%+e; }J\ΤhbAPyd5g$ȥ`k\:V@.SJh)-DZONBܟfiG/am8G<638xHm؁_{Nv:AXJѧttcoQSRۤd#If9vh;)?%:fU3+Us|EbX-$7&u19F|ׯ+w^Xr\^>r*apߋv?ásǢ>{gqH!S̠Oi&$ Ar`ƶ 'PgԵ*Yp1g3+ KQeb:W*g $y8,$&~v}ncNC_?N]4# P3sr]#4&m82Wܾ-LZE'H^& VxQe6 .Y0J_Dt&ԅLfݪXkne2,7nhmiX ^PbAI&'&f3x왕~q30g r!MLIpUζ ߍF>ȶAJG7D /7Thd0oTD0N-yooNr RX!T*X8o'T .?8/9G[GHT<;XZ\9)UXS3Gw.04[iQU0o4v$NW +j7%̊%7 (^*}n1C"!"# (V6_}ʻgbq31khs_!eY3"6- ew=pt7b ^6Ҿ9:lǝ#C#A 3F/B2#3"pMI_O792ә`>+]?P8&}TNɖs(hzX l!tcLsLU?#&9$[P-B8m yxgEcb=Q(r&If*Hˍ-#@/庺5ޱsW$18i*]ڶG.b%ݬ4 M^`]op0Jo b@42#5,B4OJFs9$P/J}p`HZ-`b ]a/|mypnזnhn36 (H >COy(MhgzY>+lBW.|_nAy1rX+=r'&M"V!ftB'O{Ď`z!KGHF˼pާrTN?KgS!o5w%(\G4LˠB{{`'D;T#k?9˔,S8xY1J)lһc洑cncDL< ɮ5ˇG<{rMaW{L@< OHq`SQ@q"(v߅ |!߭lk%5s{ˈCAfpgҪ-Vt4ZFL8 1͍^A=SnpH܆0X>B8w" " }w*ORw.%N\tN:᰷b=9Vz͠ʘ ҄uh"A䖓 !5NBBd? kRK$>=Kܳv5*ZF*?6A&Xuպ?ac;}Ek\")N)H N:vkom^ SǶ{.㧬&WU4CLxL"|Ԫi"tKutM[8mUCK3(-k7^t(2Vr :Q0y<bM4gde60>20OXIbG2]r6< ^+%1Z%ߜu|"B`%yK*4MM0"v蛫pQн/b-*S46f35kn:ZQC5D |8K$3A=*TM. ° >@XErs B I`~^R&9j|=C|@o, 'N@}LvΝ5%0adT3[ĝбj8'l#r/KND~`n'$Ho(43(x=8Ysi&8*h+;E;D@+oXt^eݒBU#-nKu:ϷK{:v4חQҤ:%) HED^#mme3HYm苟d<ڭw[xYkcA9Z߫'I5nJEK* vm0oVz{_\>zBôL "w&t))95%co]ڧv-x{"иbJJJJJJJJJJJJJJJJJJo-ޤzIENDB`jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/intl/0000755000175000017500000000000011335260530025575 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/intl/mathviewer.properties0000644000175000017500000000257011335260530032072 0ustar sylvestresylvestreMathViewer.windowTitle=JEuclid MathViewer MathViewer.FileMenu=File MathViewer.EditMenu=Edit MathViewer.helpMenu=Help MathViewer.exit=Exit MathViewer.formattedCopy=Copy (Formatted) MathViewer.unformattedCopy=Copy (Unformatted) MathViewer.paste=Paste MathViewer.pasteFailure=Attempt to paste MathML text from clipboard failed MathViewer.error=Error MathViewer.aboutMenuItem=About MathViewer.aboutWindowTitle=About MathViewer.aboutContent=MathViewer, part of JEuclid, http://jeuclid.sourceforge.net/ MathViewer.open=Open File... MathViewer.errorParsing=Error parsing file MathViewer.errorAccessing=Error accessing file MathViewer.noFileLoaded=Please load a MathML file or paste MathML from clipboard MathViewer.viewMenu=View MathViewer.textBigger=Make Text Bigger MathViewer.textSmaller=Make Text Smaller MathViewer.export=Export... MathViewer.exportError=Error during Export MathViewer.debug=Debug mode MathViewer.alias=Anti-aliasing MathViewer.viewModifyParams=View/Modify All Parameters... MathViewer.ParametersDialog.title=Rendering Parameters MathViewer.save=OK MathViewer.cancel=Cancel MathViewer.ParametersDialog.pickColor=Pick a Color MathViewer.ParametersDialog.showColorChooser=Show Color Chooser... MathViewer.ParametersDialog.showFontSelection=Show Font Selection... MathViewer.ok=OK MathViewer.FontSelectionDialog.title=Font Selection MathViewer.FontSelectionDialog.topLabel=Font Selection jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/intl/mathviewer_it.properties0000644000175000017500000000311111335260530032556 0ustar sylvestresylvestreMathViewer.windowTitle=JEuclid MathViewer MathViewer.FileMenu=File MathViewer.EditMenu=Modifica MathViewer.helpMenu=Aiuto MathViewer.exit=Esci MathViewer.formattedCopy=Copia (Formattato) MathViewer.unformattedCopy=Copia (Non formattato) MathViewer.paste=Incolla MathViewer.pasteFailure=Tentativo di incollare il testo MathML dagli appunti fallito MathViewer.error=Errore MathViewer.aboutMenuItem=Informazioni MathViewer.aboutWindowTitle=Informazioni MathViewer.aboutContent=MathViewer, é parte di JEuclid, http://jeuclid.sourceforge.net/ MathViewer.open=Apri File... MathViewer.errorParsing=Errore durante la conversione del file MathViewer.errorAccessing=Errore durante l'accesso al file MathViewer.noFileLoaded=Prego carica un file MathML o copia un file MathML dagli appunti MathViewer.viewMenu=Visualizza MathViewer.textBigger=Aumenta dimensione del testo/immagine MathViewer.textSmaller=Diminuisci dimensione del testo/immagine MathViewer.export=Esporta... MathViewer.exportError=Errore durante l'esportazione del file MathViewer.debug=Modalita Debug MathViewer.alias=Anti-aliasing MathViewer.viewModifyParams=Visualizza/Modifica Tutti i Parametri... MathViewer.ParametersDialog.title=Parametri di Rendering MathViewer.save=OK MathViewer.cancel=Annulla MathViewer.ParametersDialog.pickColor=Seleziona un colore MathViewer.ParametersDialog.showColorChooser=Visualizza Selezione dei Colori... MathViewer.ParametersDialog.showFontSelection=Visualizza Selezione dei font... MathViewer.ok=OK MathViewer.FontSelectionDialog.title=Selezione dei font MathViewer.FontSelectionDialog.topLabel=Selezione dei font jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/intl/mathviewer_de.properties0000644000175000017500000000271511335260530032543 0ustar sylvestresylvestreMathViewer.windowTitle=JEuclid MathViewer MathViewer.FileMenu=Datei MathViewer.EditMenu=Editieren MathViewer.helpMenu=Hilfe MathViewer.exit=Beenden MathViewer.formattedCopy=Kopieren (Formatiert) MathViewer.unformattedCopy=Kopieren (Unformattiert) MathViewer.paste=Einfgen MathViewer.pasteFailure=Der versuch von der Zwischenablage zu laden schlug fehl MathViewer.error=Fehler MathViewer.aboutMenuItem=ber MathViewer.aboutWindowTitle=ber MathViewer.aboutContent=MathViewer, ein Teil von JEuclid, http://jeuclid.sourceforge.net/ MathViewer.open=Datei ffnen... MathViewer.errorParsing=Fehler beim parsen der Datei MathViewer.errorAccessing=Fehler beim Zugriff auf die Datei MathViewer.noFileLoaded=Bitte laden Sie MathML von einer Datei oder der Zwischenablage MathViewer.viewMenu=Ansicht MathViewer.textBigger=Text vergrssern MathViewer.textSmaller=Text verkleinern MathViewer.export=Exportieren... MathViewer.exportError=Fehler beim Exportieren MathViewer.debug=Fehlersuche MathViewer.alias=Anti-aliasing MathViewer.viewModifyParams=Ansehen/nderen aller Parameter... MathViewer.ParametersDialog.title=Render Parameter MathViewer.save=Ok MathViewer.cancel=Abbruch MathViewer.ParametersDialog.pickColor=Whlen Sie eine Farbe MathViewer.ParametersDialog.showColorChooser=Farbauswahl anzeigen... MathViewer.ParametersDialog.showFontSelection=Schriftwahl anzeigen... MathViewer.ok=OK MathViewer.FontSelectionDialog.title=Schriftwahl MathViewer.FontSelectionDialog.topLabel=Schriftwahl jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/resources/intl/mathviewer_fr.properties0000644000175000017500000000134311335260530032556 0ustar sylvestresylvestreMathViewer.windowTitle=JEuclid MathViewer MathViewer.FileMenu=Fichier MathViewer.helpMenu=Aide MathViewer.exit=Quitter MathViewer.aboutMenuItem=A propos MathViewer.aboutWindowTitle=A propos MathViewer.aboutContent=MathViewer, module de JEuclid, http://jeuclid.sourceforge.net/ MathViewer.open=Ouvrir fichier... MathViewer.errorParsing=Erreur analyse syntaxique fichier MathViewer.errorAccessing=Erreur accs fichier MathViewer.noFileLoaded=Veuilez charger un fichier MathML MathViewer.viewMenu=Afficher MathViewer.textBigger=Augmenter la taille du texte MathViewer.textSmaller=Diminuer la taille du texte MathViewer.export=Exporter... MathViewer.exportError=Erreur exportation MathViewer.debug=Mode dbogage MathViewer.alias=Anti-aliasing jeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/0000755000175000017500000000000011335260530023536 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/0000755000175000017500000000000011335260530024324 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/0000755000175000017500000000000011335260530026647 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530030266 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/0000755000175000017500000000000011335260530031046 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/0000755000175000017500000000000011335260530033221 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/FontSelectionDialog.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/FontSel0000644000175000017500000001500711335260530034521 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FontSelectionDialog.java,v 503f7e4f22db 2008/04/28 12:43:00 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.awt.BorderLayout; import java.awt.Dialog; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Vector; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ScrollPaneConstants; import javax.swing.WindowConstants; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import net.sourceforge.jeuclid.font.FontFactory; /** * Dialog that lets user select one or more fonts available in the system. * * @version $Revision: 503f7e4f22db $ */ // CHECKSTYLE:OFF public class FontSelectionDialog extends JDialog { // CHECKSTYLE:ON private static final int SAMPLE_FONTSIZE = 14; /** * */ private static final long serialVersionUID = 1L; private static final String PREVIEW_TEXT = "The quick brown fox jumps over the lazy dog. 123456790"; private final List fontNames = new ArrayList(); private JList list; /** * Default Constructor. * * @param parent * parent dialog * @param currentFontNames * font names to select initially */ public FontSelectionDialog(final Dialog parent, final List currentFontNames) { super(parent); this.init(currentFontNames); } /** * Default Constructor. * * @param parent * parent frame * @param currentFontNames * font names to select initially */ public FontSelectionDialog(final Frame parent, final List currentFontNames) { super(parent); this.init(currentFontNames); } private void init(final List currentFontNames) { this.setTitle(Messages .getString("MathViewer.FontSelectionDialog.title")); this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); this .getContentPane() .add( new JLabel( Messages .getString("MathViewer.FontSelectionDialog.topLabel")), BorderLayout.NORTH); this.setupFontsList(currentFontNames); this.setupButtons(); this.pack(); this.setLocationByPlatform(true); this.setModal(true); } /** * @return selected font names if OK was pressed to close the dialog */ public List getFontNames() { return this.fontNames; } private void setupFontsList(final List currentFontNames) { // CHECKSTYLE:OFF // Vector is a must because JList requires it. final Vector allFonts = new Vector(FontFactory .getInstance().listFontNames()); // CHECKSTYLE:ON Collections.sort(allFonts); this.list = new JList(allFonts); final List selectedIndicies = new ArrayList(); if (currentFontNames != null && !currentFontNames.isEmpty()) { for (final String value : currentFontNames) { final int i = Collections.binarySearch(allFonts, value); if (i > -1) { selectedIndicies.add(i); } } } final int[] selectedIndiciesArr = new int[selectedIndicies.size()]; for (int i = 0; i < selectedIndiciesArr.length; i++) { selectedIndiciesArr[i] = selectedIndicies.get(i); } this.list.setSelectedIndices(selectedIndiciesArr); final JScrollPane scrollPane = new JScrollPane(this.list, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); final JTextArea preview = new JTextArea( FontSelectionDialog.PREVIEW_TEXT); this.list.addListSelectionListener(new ListSelectionListener() { public void valueChanged(final ListSelectionEvent e) { preview.setFont(FontFactory.getInstance().getFont( (String) FontSelectionDialog.this.list .getSelectedValue(), Font.PLAIN, FontSelectionDialog.SAMPLE_FONTSIZE)); preview.revalidate(); } }); this.getContentPane().add(scrollPane, BorderLayout.WEST); this.getContentPane().add(preview, BorderLayout.CENTER); } private void setupButtons() { final JPanel buttonsPanel = new JPanel(new FlowLayout( FlowLayout.CENTER)); final JButton btnOK = new JButton(Messages.getString("MathViewer.ok")); btnOK.setMnemonic('O'); final ActionListener actionListener = new ActionListener() { public void actionPerformed(final ActionEvent e) { if (e.getSource() == btnOK) { for (Object val : FontSelectionDialog.this.list .getSelectedValues()) { FontSelectionDialog.this.fontNames.add((String) val); } } FontSelectionDialog.this.dispose(); } }; btnOK.addActionListener(actionListener); buttonsPanel.add(btnOK); final JButton btnCancel = new JButton(Messages .getString("MathViewer.cancel")); btnCancel.setMnemonic('C'); btnCancel.addActionListener(actionListener); buttonsPanel.add(btnCancel); this.getContentPane().add(buttonsPanel, BorderLayout.SOUTH); } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/ParametersDialog.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/Paramet0000644000175000017500000002530711335260530034544 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ParametersDialog.java,v 7c3709650942 2009/04/09 06:59:49 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.swing.Box; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JColorChooser; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JDialog; import javax.swing.JFormattedTextField; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.WindowConstants; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.context.typewrapper.BooleanTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.ColorTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.EnumTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.NumberTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.TypeWrapper; import net.sourceforge.jeuclid.swing.JMathComponent; /** * Dialog that lets user see and change all Layout Parameters. * * @see Parameter * * @version $Revision: 7c3709650942 $ */ // CHECKSTYLE:OFF public class ParametersDialog extends JDialog { // CHECKSTYLE:ON private static final int NUMBER_OF_COLUMNS = 5; /** * */ private static final long serialVersionUID = 1L; private static final int PADDING = 30; private static interface DataExtractor { Object extractData(); } private final JMathComponent mathComponent; // CHECKSTYLE:OFF private final Map extractors = new HashMap(); // CHECKSTYLE:ON /** * Initialize all the swing stuff. * * @param parent * parent MainFrame */ public ParametersDialog(final MainFrame parent) { super(parent); this.mathComponent = parent.getMathComponent(); this .setTitle(Messages .getString("MathViewer.ParametersDialog.title")); this.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); final JPanel paramArea = new JPanel(new GridBagLayout()); this.getContentPane().add(paramArea, BorderLayout.CENTER); final GridBagConstraints gbc = new GridBagConstraints(); gbc.gridy = 0; gbc.weightx = 1; gbc.ipadx = ParametersDialog.PADDING; // gbc.fill = GridBagConstraints.HORIZONTAL; for (final Parameter param : Parameter.values()) { final JLabel label = new JLabel(param.getOptionName()); label.setToolTipText(param.getOptionDesc()); gbc.gridx = 0; gbc.anchor = GridBagConstraints.EAST; paramArea.add(label, gbc); gbc.gridx = 1; gbc.anchor = GridBagConstraints.WEST; paramArea.add(this.createInputForParameter(param), gbc); gbc.gridy++; } this.setupButtonsPanel(); this.setSize(this.getMinimumSize().width, this.getPreferredSize().height); this.setLocationByPlatform(true); this.setModal(true); } private void setupButtonsPanel() { final JPanel buttonsPanel = new JPanel(new FlowLayout( FlowLayout.CENTER)); final JButton btnSave = new JButton(Messages .getString("MathViewer.save")); btnSave.setMnemonic('S'); btnSave.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { final Map newValues = new HashMap(); for (final Map.Entry entry : ParametersDialog.this.extractors .entrySet()) { newValues.put(entry.getKey(), entry.getValue() .extractData()); } ParametersDialog.this.mathComponent.setParameters(newValues); ParametersDialog.this.dispose(); } }); buttonsPanel.add(btnSave); final JButton btnCancel = new JButton(Messages .getString("MathViewer.cancel")); btnCancel.setMnemonic('C'); btnCancel.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { ParametersDialog.this.dispose(); } }); buttonsPanel.add(btnCancel); this.getContentPane().add(buttonsPanel, BorderLayout.SOUTH); } private JComponent createInputForParameter(final Parameter param) { JComponent input = null; final TypeWrapper type = param.getTypeWrapper(); DataExtractor dataExtractor = null; if (type instanceof BooleanTypeWrapper) { final JCheckBox checkbox = new JCheckBox(); Boolean val = (Boolean) this.mathComponent.getParameters() .getParameter(param); if (val == null) { val = Boolean.FALSE; } checkbox.setSelected(val.booleanValue()); input = checkbox; dataExtractor = new DataExtractor() { public Object extractData() { return Boolean.valueOf(checkbox.isSelected()); } }; } else if (type instanceof ColorTypeWrapper) { final Map.Entry entry = this .setupColorParameter(param); input = entry.getKey(); dataExtractor = entry.getValue(); } else if (type instanceof EnumTypeWrapper) { final Object val = this.mathComponent.getParameters() .getParameter(param); final JComboBox comboBox = new JComboBox(((EnumTypeWrapper) type) .values()); if (val != null) { comboBox.setSelectedItem(val); } input = comboBox; dataExtractor = new DataExtractor() { public Object extractData() { return comboBox.getSelectedItem(); } }; } else if (type instanceof NumberTypeWrapper) { final JFormattedTextField ftf = new JFormattedTextField( this.mathComponent.getParameters().getParameter(param)); input = ftf; dataExtractor = new DataExtractor() { public Object extractData() { return ftf.getValue(); } }; } else { final Map.Entry entry = this .setupTextParameter(param); input = entry.getKey(); dataExtractor = entry.getValue(); } input.setToolTipText(param.getOptionDesc()); this.extractors.put(param, dataExtractor); return input; } private Map.Entry setupColorParameter( final Parameter param) { Color color = (Color) this.mathComponent.getParameters() .getParameter(param); if (color == null) { color = Color.white; } final JColorChooser colorChooser = new JColorChooser(color); final JDialog colorChooserDialog = JColorChooser.createDialog( ParametersDialog.this, Messages .getString("MathViewer.ParametersDialog.pickColor"), true, colorChooser, null, null); final JPanel box = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); box.setBackground(color); final JButton btn = new JButton(Messages .getString("MathViewer.ParametersDialog.showColorChooser")); btn.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { colorChooserDialog.setVisible(true); box.setBackground(colorChooser.getColor()); box.revalidate(); } }); box.add(btn); box.add(Box.createHorizontalStrut(ParametersDialog.PADDING)); return Collections.singletonMap(box, new DataExtractor() { public Object extractData() { return colorChooser.getColor(); } }).entrySet().iterator().next(); } private Map.Entry setupTextParameter( final Parameter param) { final JTextField text = new JTextField(param .toString(this.mathComponent.getParameters().getParameter( param)), 50); text.setMinimumSize(text.getPreferredSize()); final Box box = Box.createHorizontalBox(); box.add(text); box .add(Box .createHorizontalStrut(ParametersDialog.NUMBER_OF_COLUMNS)); final JButton btn = new JButton(Messages .getString("MathViewer.ParametersDialog.showFontSelection")); box.add(btn); btn.addActionListener(new ActionListener() { @SuppressWarnings("unchecked") public void actionPerformed(final ActionEvent e) { final FontSelectionDialog fsd = new FontSelectionDialog( ParametersDialog.this, (List) param .fromString(text.getText())); fsd.setVisible(true); if (fsd.getFontNames().isEmpty()) { text.setText(""); } else { text.setText(param.toString(fsd.getFontNames())); } } }); return Collections.singletonMap(box, new DataExtractor() { public Object extractData() { return param.fromString(text.getText()); } }).entrySet().iterator().next(); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/package-info.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/package0000644000175000017500000000172311335260530034542 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Contains the actual implementation of the MathViewer app.

While the main MathViewer class only contains the startup code, this package contains the actual windows and control elements of the MathViewer application.

*/ package net.sourceforge.jeuclid.app.mathviewer; ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/Messages.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/Message0000644000175000017500000000405211335260530034531 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Messages.java,v 38ef83fddf0c 2009/02/17 12:21:58 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.util.MissingResourceException; import java.util.ResourceBundle; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Class to load i18n messages. * * @version $Revision: 38ef83fddf0c $ */ public final class Messages { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(Messages.class); private static final String BUNDLE_NAME = "intl.mathviewer"; //$NON-NLS-1$ private static ResourceBundle resourceBundle; private Messages() { } /** * retrieve a translation string. * * @param key * key to look for * @return the expanded string */ public static String getString(final String key) { String retVal = '!' + key + '!'; try { if (Messages.resourceBundle != null) { retVal = Messages.resourceBundle.getString(key); } } catch (final MissingResourceException e) { Messages.LOGGER.warn(e.getMessage()); } return retVal; } static { try { Messages.resourceBundle = ResourceBundle .getBundle(Messages.BUNDLE_NAME); } catch (final MissingResourceException e) { Messages.LOGGER.warn(e.getMessage()); } } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/AboutDialog.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/AboutDi0000644000175000017500000000764711335260530034511 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AboutDialog.java,v 9fe6e50a4648 2008/05/23 10:08:31 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.awt.BorderLayout; import java.awt.Font; import java.awt.Frame; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.ImageIcon; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingConstants; import net.sourceforge.jeuclid.LayoutContext; /** * About Dialog for MathViewer. * * @version $Revision: 9fe6e50a4648 $ */ public final class AboutDialog extends JDialog { private static final int LARGE_FONT = 14; private static final int SMALL_FONT = 12; private static final String ABOUT_FONT = "SansSerif"; private static final long serialVersionUID = 1L; private JPanel jContentPane; private JLabel iconLabel; private JLabel jeuclidLabel; private JLabel wwwLabel; /** * @param owner * Owner for this frame. */ public AboutDialog(final Frame owner) { super(owner); this.initialize(); } /** * This method initializes this * * @return void */ private void initialize() { this.setModal(true); this.setResizable(false); this.setContentPane(this.getJContentPane()); this.setTitle(Messages.getString("MathViewer.aboutWindowTitle")); //$NON-NLS-1$ this.addKeyListener(new KeyAdapter() { @Override public void keyPressed(final KeyEvent e) { if (e.getKeyCode() == KeyEvent.VK_V && e.isAltDown()) { JOptionPane.showMessageDialog(AboutDialog.this, "Version: " + LayoutContext.class.getPackage() .getImplementationVersion()); } } }); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (this.jContentPane == null) { this.wwwLabel = new JLabel(); this.wwwLabel.setText(" http://jeuclid.sourceforge.net "); this.wwwLabel.setFont(new Font(AboutDialog.ABOUT_FONT, Font.PLAIN, AboutDialog.SMALL_FONT)); this.wwwLabel.setHorizontalAlignment(SwingConstants.CENTER); this.jeuclidLabel = new JLabel(); this.jeuclidLabel.setText("JEuclid MathViewer"); this.jeuclidLabel.setHorizontalAlignment(SwingConstants.CENTER); this.jeuclidLabel.setFont(new Font(AboutDialog.ABOUT_FONT, Font.BOLD, AboutDialog.LARGE_FONT)); this.iconLabel = new JLabel(); this.iconLabel.setHorizontalAlignment(SwingConstants.CENTER); this.iconLabel.setIcon(new ImageIcon(this.getClass().getResource( "/icons/jeuclid_128x128.png"))); this.jContentPane = new JPanel(); this.jContentPane.setLayout(new BorderLayout()); this.jContentPane.add(this.iconLabel, BorderLayout.NORTH); this.jContentPane.add(this.jeuclidLabel, BorderLayout.CENTER); this.jContentPane.add(this.wwwLabel, BorderLayout.SOUTH); } return this.jContentPane; } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/MainFrame.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/MainFra0000644000175000017500000006275111335260530034474 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MainFrame.java,v 9fcde7bec879 2009/04/04 20:27:55 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Point; import java.awt.Toolkit; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.File; import javax.swing.JCheckBoxMenuItem; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.KeyStroke; import javax.swing.ScrollPaneConstants; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import net.sourceforge.jeuclid.MathMLSerializer; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.swing.JMathComponent; import org.w3c.dom.Document; /** * Main frame for the MathViewer application. * * @version $Revision: 9fcde7bec879 $ */ // CHECKSTYLE:OFF public class MainFrame extends JFrame { // CHECKSTYLE:ON private static final int DEFAULT_HEIGHT = 200; private static final int DEFAULT_WIDTH = 350; private static final FileIO FILEIO = FileIO.getInstance(); // /** // * Logger for this class // */ // currently unused. // private static final Log LOGGER = LogFactory.getLog(MathViewer.class); private static final long serialVersionUID = 1L; private static final float FONT_SIZE_MULTIPLICATOR = 1.20f; private JPanel jContentPane; private JMenuBar jJMenuBar; private JMenu fileMenu; private JMenu editMenu; private JMenu helpMenu; private JMenuItem exitMenuItem; private JMenuItem unformattedCopyMenuItem; private JMenuItem formattedCopyMenuItem; private JMenuItem pasteMenuItem; private JMenuItem aboutMenuItem; private JMenuItem openMenuItem; private JDialog aboutDialog; private JSplitPane splitPane; private JScrollPane scrollPane; private JScrollPane scrollPane2; private JTextArea textArea; private JMathComponent mathComponent; private JMenu viewMenu; private JMenuItem biggerMenuItem; private JMenuItem smallerMenuItem; private JMenuItem exportMenuItem; private JCheckBoxMenuItem aliasMenuItem; private JCheckBoxMenuItem debugMenuItem; /** * This is the default constructor. */ public MainFrame() { super(); this.initialize(); } /** * This method initializes this * * @return void */ private void initialize() { this.setJMenuBar(this.getJJMenuBar()); this.setSize(MainFrame.DEFAULT_WIDTH, MainFrame.DEFAULT_HEIGHT); this.setContentPane(this.getJContentPane()); this.setTitle(Messages.getString("MathViewer.windowTitle")); //$NON-NLS-1$ this.setLocationByPlatform(true); } /** * This method initializes jContentPane * * @return javax.swing.JPanel */ private JPanel getJContentPane() { if (this.jContentPane == null) { this.jContentPane = new JPanel(); this.jContentPane.setLayout(new BorderLayout()); this.jContentPane.add(this.getSplitPane(), BorderLayout.CENTER); } return this.jContentPane; } /** * This method initializes jJMenuBar * * @return javax.swing.JMenuBar */ private JMenuBar getJJMenuBar() { if (this.jJMenuBar == null) { this.jJMenuBar = new JMenuBar(); this.jJMenuBar.add(this.getFileMenu()); this.jJMenuBar.add(this.getEditMenu()); this.jJMenuBar.add(this.getViewMenu()); if (!MathViewer.OSX) { // This will need to be changed once the Help menu contains // more that just the About item. this.jJMenuBar.add(this.getHelpMenu()); } } return this.jJMenuBar; } /** * This method initializes jMenu * * @return javax.swing.JMenu */ private JMenu getFileMenu() { if (this.fileMenu == null) { this.fileMenu = new JMenu(); this.fileMenu.setText(Messages.getString("MathViewer.FileMenu")); //$NON-NLS-1$ this.fileMenu.add(this.getOpenMenuItem()); this.fileMenu.add(this.getExportMenuItem()); if (!MathViewer.OSX) { this.fileMenu.add(this.getExitMenuItem()); } } return this.fileMenu; } /** * This method initializes jMenu * * @return javax.swing.JMenu */ private JMenu getEditMenu() { if (this.editMenu == null) { this.editMenu = new JMenu(); this.editMenu.setText(Messages.getString("MathViewer.EditMenu")); //$NON-NLS-1$ this.editMenu.add(this.getUnformattedCopyMenuItem()); this.editMenu.add(this.getFormattedCopyMenuItem()); this.editMenu.add(this.getPasteMenuItem()); } return this.editMenu; } /** * This method initializes jMenu * * @return javax.swing.JMenu */ private JMenu getHelpMenu() { if (this.helpMenu == null) { this.helpMenu = new JMenu(); this.helpMenu.setText(Messages.getString("MathViewer.helpMenu")); //$NON-NLS-1$ // If there are more items, please modify getJJMenuBar to always // display the help menu and this function to not display about on // OS X this.helpMenu.add(this.getAboutMenuItem()); } return this.helpMenu; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getExitMenuItem() { if (this.exitMenuItem == null) { this.exitMenuItem = new JMenuItem(); this.exitMenuItem.setText(Messages.getString("MathViewer.exit")); //$NON-NLS-1$ this.exitMenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_Q, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask(), true)); this.exitMenuItem.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { System.exit(0); } }); } return this.exitMenuItem; } private JMenuItem getUnformattedCopyMenuItem() { if (this.unformattedCopyMenuItem == null) { this.unformattedCopyMenuItem = new JMenuItem(); this.unformattedCopyMenuItem.setText(Messages .getString("MathViewer.unformattedCopy")); //$NON-NLS-1$ this.unformattedCopyMenuItem.setAccelerator(KeyStroke .getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask(), true)); this.unformattedCopyMenuItem .addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { MainFrame.this.copyToClipboard(false); } }); } return this.unformattedCopyMenuItem; } private JMenuItem getFormattedCopyMenuItem() { if (this.formattedCopyMenuItem == null) { this.formattedCopyMenuItem = new JMenuItem(); this.formattedCopyMenuItem.setText(Messages .getString("MathViewer.formattedCopy")); //$NON-NLS-1$ this.formattedCopyMenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_C, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask() | InputEvent.SHIFT_DOWN_MASK, true)); this.formattedCopyMenuItem .addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { MainFrame.this.copyToClipboard(true); } }); } return this.formattedCopyMenuItem; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getPasteMenuItem() { if (this.pasteMenuItem == null) { this.pasteMenuItem = new JMenuItem(); this.pasteMenuItem .setText(Messages.getString("MathViewer.paste")); //$NON-NLS-1$ this.pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_V, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask(), true)); this.pasteMenuItem.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { MainFrame.this.pasteFromClipboard(); } }); } return this.pasteMenuItem; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getAboutMenuItem() { if (this.aboutMenuItem == null) { this.aboutMenuItem = new JMenuItem(); this.aboutMenuItem.setText(Messages .getString("MathViewer.aboutMenuItem")); //$NON-NLS-1$ this.aboutMenuItem.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { MainFrame.this.displayAbout(); } }); } return this.aboutMenuItem; } /** * Display the about dialog. */ public void displayAbout() { final JDialog aDialog = MainFrame.this.getAboutDialog(); aDialog.pack(); final Point loc = MainFrame.this.getLocation(); loc .translate( (MainFrame.this.getWidth() - aDialog.getWidth()) / 2, 0); aDialog.setLocation(loc); aDialog.setVisible(true); } /** * This method initializes aboutDialog * * @return javax.swing.JDialog */ private JDialog getAboutDialog() { if (this.aboutDialog == null) { this.aboutDialog = new AboutDialog(this); } return this.aboutDialog; } /** * This method initializes jMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getOpenMenuItem() { if (this.openMenuItem == null) { this.openMenuItem = new JMenuItem(); this.openMenuItem.setText(Messages.getString("MathViewer.open")); //$NON-NLS-1$ this.openMenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_O, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask(), true)); this.openMenuItem .addActionListener(new java.awt.event.ActionListener() { public void actionPerformed( final java.awt.event.ActionEvent e) { MainFrame.this.openFile(); } }); } return this.openMenuItem; } /** * Try to load a given file into this frame. * * @param f * reference to the file. */ public void loadFile(final File f) { final Document doc = MainFrame.FILEIO.loadFile(this, f); if (doc != null) { this.getMathComponent().setDocument(doc); this.getTextArea().setText( MathMLSerializer.serializeDocument(doc, false, false)); } } /** * carries out the actual file-open procedure. */ protected void openFile() { final File file = MainFrame.FILEIO.selectFileToOpen(this); this.loadFile(file); } /** * This method initializes splitPane * * @return {@link JSplitPane} */ private JSplitPane getSplitPane() { if (this.splitPane == null) { this.splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, this .getScrollPane(), this.getScrollPane2()); this.splitPane.setOneTouchExpandable(true); this.splitPane.setResizeWeight(1.0); } return this.splitPane; } /** * This method initializes textArea * * @return {@link JTextArea} */ private JTextArea getTextArea() { if (this.textArea == null) { this.textArea = new JTextArea(); this.textArea.setText("\n" + "\n" + ""); this.textArea.setEditable(true); this.textArea.getDocument().addDocumentListener( new DocumentListener() { public void changedUpdate( final DocumentEvent documentevent) { MainFrame.this.updateFromTextArea(); } public void insertUpdate( final DocumentEvent documentevent) { MainFrame.this.updateFromTextArea(); } public void removeUpdate( final DocumentEvent documentevent) { MainFrame.this.updateFromTextArea(); } }); this.textArea.setBackground(Color.WHITE); } return this.textArea; } private void updateFromTextArea() { try { this.getMathComponent().setContent(this.getTextArea().getText()); this.textArea.setForeground(Color.BLACK); // CHECKSTYLE:OFF // in this case, we want to explicitly provide catch-all error // handling. } catch (final RuntimeException e) { // CHECKSTYLE:ON this.textArea.setForeground(Color.RED); } } /** * This method initializes scrollPane * * @return javax.swing.JScrollPane */ private JScrollPane getScrollPane() { if (this.scrollPane == null) { this.scrollPane = new JScrollPane(); this.scrollPane.setViewportView(this.getMathComponent()); if (MathViewer.OSX) { this.scrollPane .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); this.scrollPane .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); } } return this.scrollPane; } /** * This method initializes scrollPane2 * * @return javax.swing.JScrollPane */ private JScrollPane getScrollPane2() { if (this.scrollPane2 == null) { this.scrollPane2 = new JScrollPane(); this.scrollPane2.setViewportView(this.getTextArea()); if (MathViewer.OSX) { this.scrollPane2 .setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); this.scrollPane2 .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); } } return this.scrollPane2; } /** * This method initializes mathComponent. * * @return net.sourceforge.jeuclid.swing.JMathComponent */ public JMathComponent getMathComponent() { if (this.mathComponent == null) { this.mathComponent = new JMathComponent(); this.mathComponent .setContent("" //$NON-NLS-1$ + Messages.getString("MathViewer.noFileLoaded") + ""); //$NON-NLS-1$ //$NON-NLS-2$ this.mathComponent.setFocusable(true); } return this.mathComponent; } /** * This method initializes viewMenu * * @return javax.swing.JMenu */ private JMenu getViewMenu() { if (this.viewMenu == null) { this.viewMenu = new JMenu(); this.viewMenu.setText(Messages.getString("MathViewer.viewMenu")); //$NON-NLS-1$ this.viewMenu.add(this.getBiggerMenuItem()); this.viewMenu.add(this.getSmallerMenuItem()); this.viewMenu.add(this.getAliasMenuItem()); this.viewMenu.add(this.getDebugMenuItem()); if (!MathViewer.OSX) { this.viewMenu.add(this.getViewModifyParams()); } } return this.viewMenu; } private JMenuItem getViewModifyParams() { final JMenuItem mi = new JMenuItem(Messages .getString("MathViewer.viewModifyParams")); mi.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { MainFrame.this.displaySettings(); } }); return mi; } /** * Display the settings dialog. */ public void displaySettings() { new ParametersDialog(MainFrame.this).setVisible(true); MainFrame.this.debugMenuItem .setSelected(((Boolean) MainFrame.this.mathComponent .getParameters().getParameter(Parameter.DEBUG)) .booleanValue()); MainFrame.this.aliasMenuItem .setSelected(((Boolean) MainFrame.this.mathComponent .getParameters().getParameter(Parameter.ANTIALIAS)) .booleanValue()); } /** * This method initializes biggerMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getBiggerMenuItem() { if (this.biggerMenuItem == null) { this.biggerMenuItem = new JMenuItem(); this.biggerMenuItem.setText(Messages .getString("MathViewer.textBigger")); //$NON-NLS-1$ this.biggerMenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_ADD, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask(), true)); this.biggerMenuItem .addActionListener(new java.awt.event.ActionListener() { public void actionPerformed( final java.awt.event.ActionEvent e) { final JMathComponent jmc = MainFrame.this .getMathComponent(); jmc.setFontSize(jmc.getFontSize() * MainFrame.FONT_SIZE_MULTIPLICATOR); } }); } return this.biggerMenuItem; } /** * This method initializes smallerMenuItem * * @return javax.swing.JMenuItem */ private JMenuItem getSmallerMenuItem() { if (this.smallerMenuItem == null) { this.smallerMenuItem = new JMenuItem(); this.smallerMenuItem.setText(Messages .getString("MathViewer.textSmaller")); //$NON-NLS-1$ this.smallerMenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_SUBTRACT, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask(), true)); this.smallerMenuItem .addActionListener(new java.awt.event.ActionListener() { public void actionPerformed( final java.awt.event.ActionEvent e) { final JMathComponent jmc = MainFrame.this .getMathComponent(); jmc.setFontSize(jmc.getFontSize() / MainFrame.FONT_SIZE_MULTIPLICATOR); } }); } return this.smallerMenuItem; } /** * This method initializes exportMenuItem. * * @return javax.swing.JMenuItem */ private JMenuItem getExportMenuItem() { if (this.exportMenuItem == null) { this.exportMenuItem = new JMenuItem(); this.exportMenuItem.setText(Messages .getString("MathViewer.export")); //$NON-NLS-1$ this.exportMenuItem.setAccelerator(KeyStroke.getKeyStroke( KeyEvent.VK_S, Toolkit.getDefaultToolkit() .getMenuShortcutKeyMask(), true)); this.exportMenuItem .addActionListener(new java.awt.event.ActionListener() { public void actionPerformed( final java.awt.event.ActionEvent e) { MainFrame.this.exportFile(); } }); } return this.exportMenuItem; } /** * Carries out the actual export File operation. */ protected void exportFile() { MainFrame.FILEIO.saveDocument(this, this.getMathComponent() .getDocument(), this.getMathComponent().getParameters()); } /** * This method initializes aliasMenuItem * * @return javax.swing.JCheckBoxMenuItem */ private JCheckBoxMenuItem getAliasMenuItem() { if (this.aliasMenuItem == null) { this.aliasMenuItem = new JCheckBoxMenuItem(); this.aliasMenuItem .setText(Messages.getString("MathViewer.alias")); //$NON-NLS-1$ this.aliasMenuItem.setSelected((Boolean) LayoutContextImpl .getDefaultLayoutContext().getParameter( Parameter.ANTIALIAS)); this.aliasMenuItem .addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged( final java.awt.event.ItemEvent e) { MainFrame.this.getMathComponent() .setParameter( Parameter.ANTIALIAS, MainFrame.this.aliasMenuItem .isSelected()); } }); } return this.aliasMenuItem; } /** * This method initializes debugMenuItem * * @return javax.swing.JCheckBoxMenuItem */ private JCheckBoxMenuItem getDebugMenuItem() { if (this.debugMenuItem == null) { this.debugMenuItem = new JCheckBoxMenuItem(); this.debugMenuItem .setText(Messages.getString("MathViewer.debug")); //$NON-NLS-1$ this.debugMenuItem.setSelected((Boolean) LayoutContextImpl .getDefaultLayoutContext().getParameter(Parameter.DEBUG)); this.debugMenuItem .addItemListener(new java.awt.event.ItemListener() { public void itemStateChanged( final java.awt.event.ItemEvent e) { MainFrame.this.getMathComponent() .setParameter( Parameter.DEBUG, MainFrame.this.debugMenuItem .isSelected()); } }); } return this.debugMenuItem; } private void pasteFromClipboard() { final Transferable content = Toolkit.getDefaultToolkit() .getSystemClipboard().getContents(null); if (content != null && content.isDataFlavorSupported(DataFlavor.stringFlavor)) { try { final String newContent = (String) content .getTransferData(DataFlavor.stringFlavor); this.getMathComponent().setContent(newContent); this.getTextArea().setText(newContent); // CHECKSTYLE:OFF // in this case, we want to explicitly provide catch-all error // handling. } catch (final Exception e) { // CHECKSTYLE:ON JOptionPane.showMessageDialog(this, new String[] { Messages.getString("MathViewer.pasteFailure"), e.toString(), }, Messages .getString("MathViewer.error"), JOptionPane.ERROR_MESSAGE); } } } private void copyToClipboard(final boolean formatted) { Toolkit.getDefaultToolkit().getSystemClipboard().setContents( new StringSelection(MathMLSerializer.serializeDocument( this.mathComponent.getDocument(), false, formatted)), null); } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/MathViewer.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/MathVie0000644000175000017500000000636311335260530034511 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathViewer.java,v 82b869fad581 2008/04/20 10:17:11 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.io.File; import javax.swing.JFrame; import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; import net.sourceforge.jeuclid.Constants; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.apple.eawt.Application; /** * A simple application for viewing MathML documents. * * @version $Revision: 82b869fad581 $ */ public final class MathViewer { /** * Set to true if we're running under Mac OS X. */ public static final boolean OSX = System.getProperty("mrj.version") != null; //$NON-NLS-1$ /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(MathViewer.class); private static File source; private MathViewer() { // Empty on purpose } /** * Launches this application. * * @param args * command line arguments. Ignored. */ public static void main(final String[] args) { MathViewer.source = null; if (args.length > 0) { MathViewer.source = new File(args[0]); } if (MathViewer.OSX) { System.setProperty("apple.laf.useScreenMenuBar", Constants.TRUE); //$NON-NLS-1$ //$NON-NLS-2$ } try { UIManager.setLookAndFeel(UIManager .getSystemLookAndFeelClassName()); } catch (final ClassNotFoundException e) { MathViewer.LOGGER.debug(e); } catch (final InstantiationException e) { MathViewer.LOGGER.debug(e); } catch (final IllegalAccessException e) { MathViewer.LOGGER.debug(e); } catch (final UnsupportedLookAndFeelException e) { MathViewer.LOGGER.debug(e); } SwingUtilities.invokeLater(new Runnable() { public void run() { final MainFrame mainFrame = new MainFrame(); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); if (MathViewer.OSX) { final Application a = Application.getApplication(); a.setEnabledAboutMenu(true); a.setEnabledPreferencesMenu(true); a.addApplicationListener(new MainFrameAppListener( mainFrame)); } if (MathViewer.source != null) { mainFrame.loadFile(MathViewer.source); } mainFrame.setVisible(true); } }); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/MainFrameAppListener.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/MainFra0000644000175000017500000000405411335260530034464 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MainFrameAppListener.java,v 9fe6e50a4648 2008/05/23 10:08:31 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.io.File; import com.apple.eawt.ApplicationAdapter; import com.apple.eawt.ApplicationEvent; /** * @version $Revision: 9fe6e50a4648 $ */ public class MainFrameAppListener extends ApplicationAdapter { private final MainFrame frame; // /** // * Logger for this class // */ // Unused. // private static final Log LOGGER = LogFactory // .getLog(MainFrameAppListener.class); /** * Default Constructor. * * @param mainFrame * MainFrame to use */ public MainFrameAppListener(final MainFrame mainFrame) { this.frame = mainFrame; } /** {@inheritDoc} */ @Override public void handleOpenFile(final ApplicationEvent arg0) { this.frame.loadFile(new File(arg0.getFilename())); arg0.setHandled(true); } /** {@inheritDoc} */ @Override public void handleAbout(final ApplicationEvent arg0) { this.frame.displayAbout(); arg0.setHandled(true); } /** {@inheritDoc} */ @Override public void handlePreferences(final ApplicationEvent arg0) { this.frame.displaySettings(); arg0.setHandled(true); } /** {@inheritDoc} */ @Override public void handleQuit(final ApplicationEvent arg0) { System.exit(0); arg0.setHandled(true); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/FileIO.javajeuclid-parent-3.1.9/jeuclid-mathviewer/src/main/java/net/sourceforge/jeuclid/app/mathviewer/FileIO.0000644000175000017500000002115111335260530034331 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FileIO.java,v cca61eec2241 2008/05/23 09:53:47 maxberger $ */ package net.sourceforge.jeuclid.app.mathviewer; import java.awt.FileDialog; import java.awt.Frame; import java.io.File; import java.io.FilenameFilter; import java.io.IOException; import java.util.Set; import javax.swing.JFileChooser; import javax.swing.JOptionPane; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.converter.Converter; import net.sourceforge.jeuclid.converter.ConverterRegistry; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; /** * File I/O support functionality for MathViewer. * * @version $Revision: cca61eec2241 $ */ public final class FileIO { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(FileIO.class); private static final String EXPORT_ERROR = "MathViewer.exportError"; //$NON-NLS-1$, private File lastPath; private static final class SingletonHolder { private static FileIO instance = new FileIO(); private SingletonHolder() { } } private FileIO() { } /** * Retrieve the FileIO object. * * @return the FileIO object */ public static FileIO getInstance() { return FileIO.SingletonHolder.instance; } private static String getExtension(final String fileName) { return fileName.substring(fileName.lastIndexOf('.') + 1); } private static class SaveExportFilter implements FilenameFilter { private final Set extensions; protected SaveExportFilter() { this.extensions = ConverterRegistry.getInstance() .getAvailableExtensions(); }; public boolean accept(final File dir, final String name) { return this.extensions.contains(FileIO.getExtension(name)); } } /** * Select a file. * * @param parent * Frame of the parent * @return A File or null. */ public File selectFileToOpen(final Frame parent) { final File selectedFile; if (MathViewer.OSX) { // Have to use AWT file chooser for Mac-friendlyness final FileDialog chooser = new FileDialog(parent, "Please select a MathML file"); if (this.lastPath != null) { chooser.setDirectory(this.lastPath.toString()); } chooser.setVisible(true); final String fileName = chooser.getFile(); if (fileName != null) { selectedFile = new File(chooser.getDirectory(), fileName); } else { selectedFile = null; } } else { final JFileChooser fc = new JFileChooser(this.lastPath); final int returnVal = fc.showOpenDialog(parent); if (returnVal == JFileChooser.APPROVE_OPTION) { selectedFile = fc.getSelectedFile(); } else { selectedFile = null; } } if (selectedFile != null) { this.lastPath = selectedFile.getParentFile(); } return selectedFile; } /** * Load the given file. * * @param selectedFile * File object to load. * @param parent * Frame of parent window * @return a parsed Document or null */ public Document loadFile(final Frame parent, final File selectedFile) { Document retVal; if (selectedFile == null) { retVal = null; } else { try { retVal = MathMLParserSupport.parseFile(selectedFile); } catch (final SAXException e) { retVal = null; FileIO.LOGGER.warn(e.getMessage(), e); JOptionPane .showMessageDialog( parent, e.getMessage(), Messages.getString("MathViewer.errorParsing"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ } catch (final IOException e) { retVal = null; FileIO.LOGGER.warn(e.getMessage(), e); JOptionPane .showMessageDialog( parent, e.getMessage(), Messages .getString("MathViewer.errorAccessing"), JOptionPane.ERROR_MESSAGE); //$NON-NLS-1$ } } return retVal; } /** * Save a document. * * @param parent * frame of parent. * @param document * the MML document to save. * @param params * rendering parameters. */ public void saveDocument(final Frame parent, final Node document, final MutableLayoutContext params) { final File selectedFile; if (MathViewer.OSX) { // Have to use AWT file chooser for Mac-friendlyness final FileDialog chooser = new FileDialog(parent, "Export to...", FileDialog.SAVE); if (this.lastPath != null) { chooser.setDirectory(this.lastPath.toString()); } chooser.setFilenameFilter(new SaveExportFilter()); chooser.setVisible(true); final String fileName = chooser.getFile(); if (fileName != null) { selectedFile = new File(chooser.getDirectory(), fileName); } else { selectedFile = null; } } else { final JFileChooser fc = new JFileChooser(this.lastPath); final int returnVal = fc.showSaveDialog(parent); if (returnVal == JFileChooser.APPROVE_OPTION) { selectedFile = fc.getSelectedFile(); } else { selectedFile = null; } } if (selectedFile != null) { this.lastPath = selectedFile.getParentFile(); FileIO.LOGGER.info(selectedFile); int doIt = JOptionPane.YES_OPTION; if (selectedFile.exists()) { doIt = JOptionPane.showConfirmDialog(parent, "File " + selectedFile.getName() + " already exists. Overwrite?", "Confirm Overwrite", JOptionPane.YES_NO_OPTION); } if (doIt == JOptionPane.YES_OPTION) { this.exportAs(parent, selectedFile, document, params); } } } private void exportAs(final Frame parent, final File selectedFile, final Node document, final MutableLayoutContext params) { final String fileName = selectedFile.getName(); final String extension = FileIO.getExtension(fileName); final String mimetype = ConverterRegistry.getInstance() .getMimeTypeForSuffix(extension); if (mimetype != null) { try { if (Converter.getInstance().convert(document, selectedFile, mimetype, params) == null) { JOptionPane.showMessageDialog(parent, "Failed to write to " + fileName, Messages .getString(FileIO.EXPORT_ERROR), JOptionPane.ERROR_MESSAGE); } } catch (final IOException e) { FileIO.LOGGER.warn(e); JOptionPane.showMessageDialog(parent, e.getMessage(), Messages.getString(FileIO.EXPORT_ERROR), JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(parent, "Unsupported file extension " + extension, Messages .getString(FileIO.EXPORT_ERROR), JOptionPane.ERROR_MESSAGE); } } } jeuclid-parent-3.1.9/jeuclid-core/0000755000175000017500000000000011335263002017654 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/build.xml0000644000175000017500000001230311335260526021504 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core/pom.xml0000644000175000017500000001277411335260526021214 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid-core JEuclid Core Module net.sourceforge.jeuclid jeuclid-parent 3.1.9 This is the core module containing the basic JEuclid rendering and document handling classes. org.codehaus.groovy.maven gmaven-plugin 1.0 process-classes execute ${pom.basedir}/src/main/script/precompile.groovy org.apache.felix maven-bundle-plugin 2.0.1 bundle-manifest process-classes manifest org.apache.maven.plugins maven-jar-plugin 2.3 ${project.build.outputDirectory}/META-INF/MANIFEST.MF commons-logging commons-logging 1.1.1 avalon-framework avalon-framework javax.servlet servlet-api junit junit log4j log4j logkit logkit ant ant 1.6.5 true org.apache.xmlgraphics batik-svg-dom 1.7 javax.servlet servlet-api xalan xalan org.apache.xmlgraphics batik-svggen 1.7 javax.servlet servlet-api xml-apis xml-apis xml-apis xml-apis-ext xalan xalan true org.freehep freehep-graphicsio-emf 2.1.3 true org.freehep freehep-graphicsio-gif 1.2.3 true org.freehep freehep-graphicsio-pdf 2.1.3 true org.freehep freehep-graphicsio-ps 2.1.3 true org.freehep freehep-graphicsio-svg 2.1.3 true org.freehep freehep-graphicsio-swf 2.1.3 true org.apache.xmlgraphics xmlgraphics-commons 1.3.1 net.jcip jcip-annotations 1.0 provided jeuclid-parent-3.1.9/jeuclid-core/src/0000755000175000017500000000000011335260530020446 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/site/0000755000175000017500000000000011335260530021412 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/site/site.xml0000644000175000017500000000133211335260530023077 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core/src/test/0000755000175000017500000000000011335260530021425 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/resources/0000755000175000017500000000000011335260530023437 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example3.mml0000644000175000017500000000353511335260530025672 0ustar sylvestresylvestre ( ( a b c d ) ( e f g h ) 0 ( i j k l ) ) jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example5.mml0000644000175000017500000001004211335260530025663 0ustar sylvestresylvestre x = ( { x 11 x 12 x 21 x 22 y 1 y 2 } z ) = [ + ] x = 0 x = 1 = a + b + + y 123 + z a b c jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example1.mml0000644000175000017500000000051011335260530025656 0ustar sylvestresylvestre 1 x dt t jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example6.mml0000644000175000017500000000102511335260530025665 0ustar sylvestresylvestre I ( x ) = F ( x ) + C jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example2.mml0000644000175000017500000000055511335260530025670 0ustar sylvestresylvestre ( h k / 2 ) jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example7.mml0000644000175000017500000000063311335260530025672 0ustar sylvestresylvestre x y b a z c d jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example10.mml0000644000175000017500000000030511335260530025740 0ustar sylvestresylvestre 1 x jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example4.mml0000644000175000017500000000261611335260530025672 0ustar sylvestresylvestre { a , ... , a k   a 's , b , ... , b   b 's k +  elements } jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example8.mml0000644000175000017500000000054511335260530025675 0ustar sylvestresylvestre A-D-START = M942NO-PREV-EARN + M943NO-CURR-EARN + M952NO-ADDRESSES * 2 + 1 jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example9.mml0000644000175000017500000000042411335260530025672 0ustar sylvestresylvestre 3 jeuclid-parent-3.1.9/jeuclid-core/src/test/resources/example.odf0000644000175000017500000001443211335260530025570 0ustar sylvestresylvestrePK6[**mimetypeapplication/vnd.oasis.opendocument.formulaPK6Configurations2/statusbar/PK6'Configurations2/accelerator/current.xmlPKPK6Configurations2/floater/PK6Configurations2/popupmenu/PK6Configurations2/progressbar/PK6Configurations2/menubar/PK6Configurations2/toolbar/PK6Configurations2/images/Bitmaps/PK6 content.xmlVj@) 9{mB! BSh@JOe] Ү]G=>BO'Zr$7Nع|3}1 EKV OR..t>zUGGn7ޟ!$z||s p2ĸ7`Qxׅ oa% )ryP3Ac'q܈f} 9 U,$BsOY(M.Y+5šrA> ComްW۴>Z+#(7WqQ nlϟXZ雀9kpQ$Nb,dyYYK \q):(k4h[C%_z#oXL@- l%xa17Gs&nS4DүT"~$UK!k1.$n?ljps6ĠQ=5,옎*m*A&meu{fdys UTh&|5EciHZlX5HCKQ݋>A|_:,nHI.6I8=@mLE,$oJHIE2D{0߇1li宩W5 2dAɿgt8fK?lUTM@0mo0SG Fw#2;*}-LPL)휞\)S?ᖄ\)6Ω?ISlxP,v='(2*94<5K2X?崹S;TL[ϙ%ҷqGT=X hfvi\ h5)7bS^> l=\մ MHI Ɣ H\h<deWFu[ˈ (mY`CRf1ݱF~im篙aJp` Ǣ.fqOsk5bƍ͜7Jj"VtNN-pBp{ƪ^vKr%_^9K&sf|"jHi"ްݷp| v:Ux}c <{kvR!~W-飻}D&_/s;_"Ih cpK9l s O a @C9-?ҩ6lBwG$/|bKK1CzzlrĢhl^.?<.(d rqݒkӳ\ h,u8~uFl/39=r~JpהS2My Rċ`$H8@+BDa';;{/7id `73t>J*#_axMV>X:nQ5=؞HX&R`[γ:u9zҴZx]W(Z8>[:U*ryG +qqz.Gvc\hRy=KMK++Y<?gyL(Y0oP qLy?Q,v ߃N{>zAHAB,EcEJ73y$>37خ$^9E!ު(=KW(&$Ҹ?%V&rBd/ Dɲp13ˇphh{1$Y?t[!caI0Ȧs̘ZޜW( qziےmg6#b,pqHm"x摅DwƳ6fyܿtCØ-K04-5(OT(]؍H4Tu.* |( @O68CJ_7oɮ.l޵0n0tOPKŏ  PK6 settings.xmlݙQo0)P^'h U(lL{3^;B)!)#x%qrU^qLIh5zCڸ?l]{"2)y:%RG;p6|b>E\V,õo_0VþjCXV#sHȯ r ]Z<46D {| =|bDUkUFѪ&N䔥54|pi<*SS*<#>hLkmZSM12^ *zE$**"hհ]}ZP|p|ÐbTUH U^m5'[} a?dT-+,ȁAD{~.; 6hl6Fko2d~3q,ޓ_uüft1&>(+m]Ue>pUNlcY5UAdwKdymUc]xސ@h S<]ɒ mEJz}8r0q^ CNʀq\ӑ}Wb]RɧQ@ \Tk(iQSRM)R6FB@Iq }Ӻ,HFٺ<^S0Ah,^ Gv@5rPWײx /sқ?h̼PK6B?PK6META-INF/manifest.xmlj0 }{m6t:Jj\ڷSme,Y`,[r}c$]'QSn~bi}HѵHS"Z^%ۯɴZT yb`yʽ뛓V46RY۔W=xʃ$1p-2xP GR.s!ぱ1";)bpk #|l!PQL'IQׂ0Sx`9MxwE][ڐ n7 dΟ?PK^)P;PK6[**mimetypePK6PConfigurations2/statusbar/PK6'Configurations2/accelerator/current.xmlPK6Configurations2/floater/PK6Configurations2/popupmenu/PK6MConfigurations2/progressbar/PK6Configurations2/menubar/PK6Configurations2/toolbar/PK6Configurations2/images/Bitmaps/PK6V 0content.xmlPK6RgGmeta.xmlPK6ŏ  "Thumbnails/thumbnail.pngPK66B? settings.xmlPK6^)P;META-INF/manifest.xmlPKNjeuclid-parent-3.1.9/jeuclid-core/src/test/java/0000755000175000017500000000000011335260530022346 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/0000755000175000017500000000000011335260530023134 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/0000755000175000017500000000000011335260530025457 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530027076 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/0000755000175000017500000000000011335260530030055 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/0000755000175000017500000000000011335260530031671 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/MoTest.java0000644000175000017500000000625511335260530033757 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MoTest.java,v c37c0744ea08 2009/09/24 17:29:41 max $ */ package net.sourceforge.jeuclid.test.elements; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.elements.presentation.token.Mo; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.mathml.MathMLDocument; import org.w3c.dom.mathml.MathMLMathElement; import org.w3c.dom.mathml.MathMLOperatorElement; /** * Various tests for the MO Element. * * @version $Revision: c37c0744ea08 $ */ public class MoTest { /** * Tests JEuclid MO Extensions * * @throws Exception * if anything goes wrong. */ @Test public void testMOExtensions() throws Exception { final Document doc = MathMLParserSupport .parseString("" + "" + "X" + "X" + "X" + "X" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(doc); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final Mo mo = (Mo) mathElement .getChildNodes().item(0); Assert.assertNotNull(mo); Assert.assertTrue(Boolean.parseBoolean(mo.getStretchy())); Assert.assertEquals(mo.getExtendedStretchy(), "true"); final Mo mo2 = (Mo) mathElement.getChildNodes().item(1); Assert.assertNotNull(mo2); Assert.assertTrue(Boolean.parseBoolean(mo2.getStretchy())); Assert.assertEquals(mo2.getExtendedStretchy(), "horizontal"); final Mo mo3 = (Mo) mathElement.getChildNodes().item(2); Assert.assertNotNull(mo3); Assert.assertTrue(Boolean.parseBoolean(mo3.getStretchy())); Assert.assertEquals(mo3.getExtendedStretchy(), "vertical"); final Mo mo4 = (Mo) mathElement.getChildNodes().item(3); Assert.assertNotNull(mo4); Assert.assertTrue(Boolean.parseBoolean(mo4.getStretchy())); Assert.assertEquals(mo4.getExtendedStretchy(), "true"); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/MFencedTest.javajeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/MFencedTest.ja0000644000175000017500000000501111335260530034343 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MFencedTest.java,v 34009469c57a 2009/08/07 15:21:37 max $ */ package net.sourceforge.jeuclid.test.elements; import junit.framework.Assert; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.mathml.MathMLDocument; import org.w3c.dom.mathml.MathMLFencedElement; import org.w3c.dom.mathml.MathMLMathElement; /** * Various tests for the MFenced Element. * * @version $Revision: 34009469c57a $ */ public class MFencedTest { /** * Tests three different values for separators. * * @throws Exception * if anything goes wrong. */ @Test public void testSeparators() throws Exception { Assert.assertEquals(",", createFenced("").getSeparators()); Assert.assertEquals("", createFenced("separators=''").getSeparators()); Assert.assertEquals(",", createFenced("separators=','").getSeparators()); Assert.assertEquals("|", createFenced("separators='|'").getSeparators()); Assert.assertEquals("|", createFenced("separators=' | '").getSeparators()); Assert.assertEquals("|,", createFenced("separators=' | , '").getSeparators()); } private MathMLFencedElement createFenced(String content) throws Exception { final Document docWithID = MathMLParserSupport .parseString("" + "" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(docWithID); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLFencedElement fencedElement = (MathMLFencedElement) mathElement .getFirstChild(); return fencedElement; } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/ContentTest.javajeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/ContentTest.ja0000644000175000017500000000617611335260530034471 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ContentTest.java,v b468e2a947ac 2008/11/27 09:30:42 maxberger $ */ package net.sourceforge.jeuclid.test.elements; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.MathMLSerializer; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.mathml.MathMLAnnotationElement; import org.w3c.dom.mathml.MathMLDocument; import org.w3c.dom.mathml.MathMLMathElement; import org.w3c.dom.mathml.MathMLSemanticsElement; /** * Various tests for the DOM model. * * @version $Revision: b468e2a947ac $ */ public class ContentTest { /** * Tests is the Annotation element. * * @throws Exception * if anything goes wrong. */ @Test public void testAnnotation() throws Exception { final Document docWithID = MathMLParserSupport .parseString("" + " x 5 " + "\\sin x + 5"); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(docWithID); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLSemanticsElement semElement = (MathMLSemanticsElement) mathElement .getFirstChild(); final MathMLAnnotationElement anno = (MathMLAnnotationElement) semElement .getAnnotation(1); Assert.assertEquals(anno.getEncoding(), "TeX"); Assert.assertEquals(anno.getBody(), "\\sin x + 5"); anno.setEncoding("text/plain"); anno.setBody("sin(x)+5"); final Document reserial = MathMLParserSupport .parseString("" + " x 5 " + "sin(x)+5"); final MathMLDocument docElement2 = DOMBuilder.getInstance() .createJeuclidDom(reserial); // TODO Assert.assertEquals(MathMLSerializer.serializeDocument(docElement, false, false), MathMLSerializer.serializeDocument( docElement2, false, false)); } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/MMultiTest.javajeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/elements/MMultiTest.jav0000644000175000017500000001022011335260530034435 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MMultiTest.java,v 9af8f7182adc 2009/09/04 16:21:09 max $ */ package net.sourceforge.jeuclid.test.elements; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.mathml.MathMLDocument; import org.w3c.dom.mathml.MathMLMathElement; import org.w3c.dom.mathml.MathMLMultiScriptsElement; /** * Various tests for the MMultiscript Element. * * @version $Revision: 9af8f7182adc $ */ public class MMultiTest { /** * Tests Proper identification of sub and superscripts. * * @throws Exception * if anything goes wrong. */ @Test public void testIdentSimple() throws Exception { final Document docWithID = MathMLParserSupport .parseString("" + "" + "x" + "1" + "2" + " " + "3" + "4" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(docWithID); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLMultiScriptsElement multiElement = (MathMLMultiScriptsElement) mathElement .getFirstChild(); Assert.assertEquals(multiElement.getBase().getTextContent(), "x"); Assert.assertEquals(multiElement.getSubScript(1).getTextContent(), "1"); Assert.assertEquals(multiElement.getSuperScript(1).getTextContent(), "2"); Assert.assertEquals(multiElement.getPreSubScript(1).getTextContent(), "3"); Assert.assertEquals(multiElement.getPreSuperScript(1).getTextContent(), "4"); } /** * Tests Proper identification of sub and superscripts with whitespace. * * @throws Exception * if anything goes wrong. */ @Test public void testIdentSpace() throws Exception { final Document docWithID = MathMLParserSupport .parseString("" + "\n" + " x\n" + " 1\n" + " 2\n" + " \n" + " 3\n" + " 4\n" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(docWithID); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLMultiScriptsElement multiElement = (MathMLMultiScriptsElement) mathElement .getFirstChild(); Assert.assertEquals(multiElement.getBase().getTextContent(), "x"); Assert.assertEquals(multiElement.getSubScript(1).getTextContent(), "1"); Assert.assertEquals(multiElement.getSuperScript(1).getTextContent(), "2"); Assert.assertEquals(multiElement.getPreSubScript(1).getTextContent(), "3"); Assert.assertEquals(multiElement.getPreSuperScript(1).getTextContent(), "4"); } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/MathComponentTest.java0000644000175000017500000000533511335260530034342 0ustar sylvestresylvestre/* * Copyright 2002 - 2006 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathComponentTest.java,v b468e2a947ac 2008/11/27 09:30:42 maxberger $ */ package net.sourceforge.jeuclid.test; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.HeadlessException; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import net.sourceforge.jeuclid.ResourceEntityResolver; import net.sourceforge.jeuclid.awt.MathComponent; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.xml.sax.InputSource; /** * Tests the AWT math component. * * @version $Revision: b468e2a947ac $ */ public class MathComponentTest { /** * Test string with xml header. */ private static String test = "" + "1x" + "dtt"; /** * Tests if AWT component starts up. * @throws Exception if the test fails. */ @Test public void testAWTComponent() throws Exception { Document document; final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory .newInstance(); final DocumentBuilder parser = documentBuilderFactory .newDocumentBuilder(); parser.setEntityResolver(new ResourceEntityResolver()); document = parser.parse(new InputSource(new StringReader( MathComponentTest.test))); try { final Frame frame = new Frame("Test MathComponent"); frame.setLayout(new BorderLayout()); final MathComponent component = new MathComponent(); component.setDocument(document); component.setDebug(false); frame.add(component, BorderLayout.CENTER); frame.setVisible(true); frame.pack(); frame.invalidate(); frame.validate(); frame.dispose(); } catch (final HeadlessException he) { // Ignore to make test work on servers. } } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/OperatorDictTest.java0000644000175000017500000001073211335260530034162 0ustar sylvestresylvestre/* * Copyright 2002 - 2006 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: OperatorDictTest.java,v 51c390b5de9a 2009/09/07 16:34:58 max $ */ package net.sourceforge.jeuclid.test; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary2; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary3; import net.sourceforge.jeuclid.elements.support.operatordict.UnknownAttributeException; import org.testng.Assert; import org.testng.annotations.Test; /** * Tests the OperatorDict class. * * @version $Revision: 51c390b5de9a $ */ public class OperatorDictTest { /** * Default Constructor. */ public OperatorDictTest() { // Empty on purpose } /** * Test various operators for correct default values. * * @throws Exception * if the test fails. */ @Test public void testAttrs2() throws Exception { final OperatorDictionary opDict = OperatorDictionary2.getInstance(); Assert.assertEquals(opDict.getDefaultAttributeValue("\u002d", "infix", "lspace"), "mediummathspace"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u002d", "prefix", "lspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u002d", "postfix", "lspace"), "verythinmathspace"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u0028", "prefix", "lspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u0028", "infix", "lspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u0028", "postfix", "lspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u2063", "infix", "rspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u2063", "postfix", "rspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u2063", "infix", "fence"), "false"); try { opDict.getDefaultAttributeValue("\u2063", "infix", "foobar"); Assert.fail("foobar should throw UnknownAttributeException!"); } catch (final UnknownAttributeException uae) { // Ignore } } /** * Test various operators for correct default values. * * @throws Exception * if the test fails. */ @Test public void testAttrs3() throws Exception { final OperatorDictionary opDict = OperatorDictionary3.getInstance(); Assert.assertEquals(opDict.getDefaultAttributeValue("\u002d", "infix", "lspace"), "mediummathspace"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u002d", "prefix", "lspace"), "mediummathspace"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u002d", "postfix", "lspace"), "mediummathspace"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u0028", "prefix", "lspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u0028", "infix", "lspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u0028", "postfix", "lspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u2063", "infix", "rspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u2063", "postfix", "rspace"), "0em"); Assert.assertEquals(opDict.getDefaultAttributeValue("\u2063", "infix", "fence"), "false"); try { opDict.getDefaultAttributeValue("\u2063", "infix", "foobar"); Assert.fail("foobar should throw UnknownAttributeException!"); } catch (final UnknownAttributeException uae) { // Ignore } } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/MathBaseTest.java0000644000175000017500000000742311335260530033252 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathBaseTest.java,v b468e2a947ac 2008/11/27 09:30:42 maxberger $ */ package net.sourceforge.jeuclid.test; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.ParserConfigurationException; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** * A JUnit Test case for MathBase. * * @version $Revision: b468e2a947ac $ */ public class MathBaseTest { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(MathBaseTest.class); /** * Helper class to load included examples. * @param name Name of the example * @return the loaded Document * @throws ParserConfigurationException if anything goes wrong. * @throws SAXException if anything goes wrong. * @throws IOException if anything goes wrong. */ public static Document loadDocument(final String name) throws ParserConfigurationException, SAXException, IOException { final DocumentBuilder parser = MathMLParserSupport .createDocumentBuilder(); Document document = null; MathBaseTest.LOGGER.info("reading:" + name); final InputSource source = new InputSource(MathBaseTest.class .getResourceAsStream("/" + name)); document = parser.parse(source); System.out.println(name + " loaded"); return document; } /** * Tests the examples at resources/test/exampleX.mml. * * @throws Exception * if an error occurs. */ @Test public void testEmbeddedExamples() throws Exception { for (int example = 1; example <= 7; example++) { final String exName = "example" + example + ".mml"; final Document document = MathBaseTest.loadDocument(exName); DOMBuilder.getInstance().createJeuclidDom(document); } } /** * Tests ODF Reader. * * @throws Exception * if an error occurs. */ @Test public void testOdf() throws Exception { Assert.assertNotNull(MathMLParserSupport .parseInputStreamODF(MathBaseTest.class .getResourceAsStream("/" + "example.odf"))); } /** * Tests the new Parser API. * * @throws Exception * if an error occurs. */ @Test public void testNewParser() throws Exception { // Assert.assertNotNull(MathBaseFactory.getMathBaseFactory() // .createMathBase( // new StreamSource(MathBaseTest.class // .getResourceAsStream("/" + "example.odf")), // LayoutContextImpl.getDefaultLayoutContext())); // Assert.assertNotNull(MathBaseFactory.getMathBaseFactory() // .createMathBase( // new StreamSource(MathBaseTest.class // .getResourceAsStream("/" + "example1.mml")), // LayoutContextImpl.getDefaultLayoutContext())); } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/LayoutTest.java0000644000175000017500000002044511335260530033042 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutTest.java,v a9320f31de60 2009/04/10 12:26:03 maxberger $ */ package net.sourceforge.jeuclid.test; import java.util.List; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.elements.presentation.general.Mfrac; import net.sourceforge.jeuclid.elements.presentation.token.Mi; import net.sourceforge.jeuclid.elements.presentation.token.Mn; import net.sourceforge.jeuclid.layout.JEuclidView; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLDocument; import org.w3c.dom.mathml.MathMLFractionElement; import org.w3c.dom.mathml.MathMLMathElement; import org.w3c.dom.mathml.MathMLPresentationContainer; import org.w3c.dom.mathml.MathMLPresentationToken; import org.w3c.dom.views.DocumentView; /** * @version $Revision: a9320f31de60 $ */ public class LayoutTest { /** * Test string with xml header. */ final static public String TEST1 = "" + "(555"; /** * Test if there is something in the view. * * @throws Exception * if the test fails. */ @Test public void testViewNotEmpty() throws Exception { final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom( MathMLParserSupport.parseString(LayoutTest.TEST1)); final JEuclidView view = (JEuclidView) (((DocumentView) docElement) .getDefaultView()); Assert.assertTrue(view.getAscentHeight() > 1.0f, "View has not enough ascent: " + view.getAscentHeight()); Assert.assertTrue(view.getWidth() > 1.0f, "View has not enoguh width: " + view.getWidth()); Assert.assertTrue(view.getDescentHeight() >= 0.0f, "Descent Height < 0: " + view.getDescentHeight()); } /** * Tests if view modifies itself when DOM is modified. * * @throws Exception * if the test fails. */ @Test public void testViewMutable() throws Exception { final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom( MathMLParserSupport.parseString(LayoutTest.TEST1)); final JEuclidView view = (JEuclidView) (((DocumentView) docElement) .getDefaultView()); final float oldAscent = view.getAscentHeight(); final float oldWidth = view.getWidth(); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLPresentationContainer mrow = (MathMLPresentationContainer) mathElement .getFirstChild(); final LayoutableNode mop = (LayoutableNode) mrow.getFirstChild(); final float oldmopascent = view.getInfo(mop).getAscentHeight( LayoutStage.STAGE2); final MathMLFractionElement mfrac = (MathMLFractionElement) docElement .createElement(Mfrac.ELEMENT); final MathMLPresentationToken denom = (MathMLPresentationToken) docElement .createElement(Mn.ELEMENT); denom.setTextContent("123"); mfrac.setDenominator(denom); final MathMLPresentationToken nom = (MathMLPresentationToken) docElement .createElement(Mi.ELEMENT); nom.setTextContent("X"); mfrac.setNumerator(nom); mrow.appendChild(mfrac); Assert.assertTrue(view.getWidth() > oldWidth, "Width of view should increase: " + view.getWidth() + " > " + oldWidth); Assert.assertTrue(view.getAscentHeight() > oldAscent, "Heightof view should increase: " + view.getAscentHeight() + " > " + oldAscent); final float newmopascent = view.getInfo(mop).getAscentHeight( LayoutStage.STAGE2); Assert.assertTrue(newmopascent > oldmopascent, "Operator should be larger: " + newmopascent + " > " + oldmopascent); } /** * Test whitespace handling. * * @throws Exception * if the test fails. */ @Test public void testWhitespace() throws Exception { final MathMLDocument docElement = DOMBuilder .getInstance() .createJeuclidDom( MathMLParserSupport .parseString("x x x x x x")); final JEuclidView view = (JEuclidView) (((DocumentView) docElement) .getDefaultView()); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final LayoutableNode m1 = (LayoutableNode) mathElement .getFirstChild(); final LayoutableNode m2 = (LayoutableNode) m1.getNextSibling(); final LayoutableNode m3 = (LayoutableNode) m2.getNextSibling(); // To trigger layout view.getWidth(); final float w1 = view.getInfo(m1).getWidth(LayoutStage.STAGE2); final float w2 = view.getInfo(m2).getWidth(LayoutStage.STAGE2); final float w3 = view.getInfo(m3).getWidth(LayoutStage.STAGE2); Assert.assertEquals(w2, w1, "Whitespace around text should be trimmed to none"); Assert.assertEquals(w3, w1, "Whitespace inside text should be trimmed to 1"); } /** * Test MO without math parent. * * @throws Exception * if the test fails. */ @Test public void testMoWithoutParent() throws Exception { final MathMLDocument docElement = DOMBuilder .getInstance() .createJeuclidDom( MathMLParserSupport .parseString("")); final JEuclidView view = (JEuclidView) (((DocumentView) docElement) .getDefaultView()); // To trigger layout view.getWidth(); } /** * Test MO without any parent. * * @throws Exception * if the test fails. */ @Test public void testMoWithoutParent2() throws Exception { final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom( MathMLParserSupport.parseString("")); final JEuclidView view = (JEuclidView) (((DocumentView) docElement) .getDefaultView()); // To trigger layout view.getWidth(); } /** * Test if getNodesAt() works. * * @throws Exception * if the test fails. */ @Test public void testGetNodesAt() throws Exception { final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom( MathMLParserSupport.parseString(LayoutTest.TEST1)); final JEuclidView view = (JEuclidView) (((DocumentView) docElement) .getDefaultView()); final List rlist = view.getNodesAt(15, 0, 0, 0); Assert.assertSame(rlist.get(0).getNode(), docElement); final Node math = docElement.getFirstChild(); Assert.assertSame(rlist.get(1).getNode(), math); final Node mrow = math.getFirstChild(); Assert.assertSame(rlist.get(2).getNode(), mrow); final Node five = mrow.getFirstChild().getNextSibling(); Assert.assertSame(rlist.get(3).getNode(), five); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/LayoutContextParamTest.javajeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/LayoutContextParamTest.0000644000175000017500000001561511335260530034531 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutContextParamTest.java,v 38db1a498ca5 2009/09/25 22:17:03 max $ */ package net.sourceforge.jeuclid.test; import java.awt.Color; import java.util.Arrays; import java.util.Collections; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Display; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.generic.DocumentElement; import net.sourceforge.jeuclid.elements.generic.MathImpl; import org.testng.Assert; import org.testng.annotations.Test; /** * Test for {@link net.sourceforge.jeuclid.context.Parameter} enum. * * @version $Revision: 38db1a498ca5 $ */ public class LayoutContextParamTest { /** * Default Constructor. */ public LayoutContextParamTest() { // Empty on purpose } /** * Tests implementation of {@link Parameter#valid(Object)} method. */ @Test public void testValid() { Assert.assertTrue(Parameter.DEBUG.valid(Boolean.TRUE)); Assert.assertFalse(Parameter.DEBUG.valid("true")); Assert.assertTrue(Parameter.DISPLAY.valid(Display.BLOCK)); Assert.assertFalse(Parameter.DISPLAY.valid(null)); Assert.assertTrue(Parameter.FONTS_SERIF.valid(Collections .singletonList("Arial"))); Assert.assertFalse(Parameter.FONTS_SERIF.valid("Courier")); Assert.assertTrue(Parameter.MATHBACKGROUND.valid(Color.RED)); Assert.assertTrue(Parameter.MATHBACKGROUND.valid(null)); Assert.assertTrue(Parameter.MATHSIZE.valid(Float.valueOf(1))); Assert.assertFalse(Parameter.MATHSIZE.valid(Integer.valueOf(1))); Assert.assertTrue(Parameter.SCRIPTLEVEL.valid(Integer.valueOf(1))); Assert.assertFalse(Parameter.SCRIPTLEVEL.valid(Float.valueOf(1))); } /** * Tests implementation of {@link Parameter#fromString(String)} method. */ @Test public void testFromString() { Assert.assertEquals(Parameter.DEBUG.fromString("true"), Boolean.TRUE); Assert.assertEquals(Parameter.DEBUG.fromString(null), null); Assert.assertEquals(Parameter.DISPLAY.fromString("BLOCK"), Display.BLOCK); try { Parameter.DISPLAY.fromString("foo"); Assert.fail(); } catch (final IllegalArgumentException e) { } Assert.assertEquals(Parameter.FONTS_SERIF.fromString("Arial"), Collections.singletonList("arial")); Assert.assertEquals( Parameter.FONTS_SERIF.fromString("Arial,Helvetica"), Arrays .asList(new String[] { "arial", "helvetica" })); Assert.assertEquals(Parameter.FONTS_SERIF.fromString("Foo, Bar"), Arrays.asList(new String[] { "foo", "bar" })); Assert.assertEquals(Parameter.MATHCOLOR.fromString("RED"), Color.RED); try { Parameter.MATHCOLOR.fromString("violet"); Assert.fail(); } catch (final IllegalArgumentException e) { } Assert.assertEquals(Parameter.MATHCOLOR.fromString("rgb(100,100,100)"), new Color(100, 100, 100)); Assert.assertEquals(Parameter.MATHSIZE.fromString("0.5"), Float .valueOf(0.5f)); Assert.assertEquals(Parameter.SCRIPTLEVEL.fromString("1"), Integer .valueOf(1)); } /** * Tests implementation of {@link Parameter#toString(String)} method. */ @Test public void testToString() { Assert.assertEquals(Parameter.DEBUG.toString(Boolean.TRUE), "true"); Assert.assertEquals(Parameter.DEBUG.toString(null), null); Assert.assertEquals(Parameter.DISPLAY.toString(Display.INLINE), "INLINE"); Assert.assertEquals(Parameter.FONTS_SERIF.toString(Collections .singletonList("font")), "font"); Assert.assertEquals(Parameter.FONTS_SERIF.toString(Arrays .asList(new String[] { "f1", "f2" })), "f1, f2"); Assert.assertEquals(Parameter.MATHCOLOR.toString(Color.RED), "red"); Assert.assertEquals(Parameter.MATHCOLOR.toString(null), null); Assert.assertEquals( Parameter.MATHCOLOR.toString(new Color(32, 32, 32)), "#202020"); Assert.assertEquals(Parameter.MATHSIZE.toString(Float.valueOf(0.5f)), "0.5"); Assert.assertEquals(Parameter.SCRIPTLEVEL.toString(Integer.valueOf(2)), "2"); } /** * Test parameter passing from String. */ @Test public void testParamFromOldNSProgrammatically() { final MathImpl mi = new MathImpl(MathImpl.ELEMENT, new DocumentElement()); final LayoutContext defaultContext = LayoutContextImpl .getDefaultLayoutContext(); final LayoutContext testContext1 = mi.getChildLayoutContext(0, defaultContext); Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE), 12.0f); mi.setAttributeNS(Constants.NS_OLD_JEUCLID_EXT, "jeuclid:fontSize", "13"); Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE), 13.0f); // Case sensitive! mi.setAttributeNS(Constants.NS_OLD_JEUCLID_EXT, "jeuclid:fontsize", "14"); Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE), 13.0f); } /** * Test parameter passing from String. */ @Test public void testParamFromNSProgrammatically() { final MathImpl mi = new MathImpl(MathImpl.ELEMENT, new DocumentElement()); final LayoutContext defaultContext = LayoutContextImpl .getDefaultLayoutContext(); final LayoutContext testContext1 = mi.getChildLayoutContext(0, defaultContext); Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE), 12.0f); mi.setAttributeNS(Constants.NS_JEUCLID_EXT, "jeuclid:fontSize", "13"); Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE), 13.0f); // Case sensitive! mi.setAttributeNS(Constants.NS_JEUCLID_EXT, "jeuclid:fontsize", "14"); Assert.assertEquals(testContext1.getParameter(Parameter.MATHSIZE), 13.0f); } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/DOMNameSpaceTest.java0000644000175000017500000000627011335260530033761 0ustar sylvestresylvestre/* * Copyright 2002 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: DOMNameSpaceTest.java,v 5eece7211ab2 2009/08/28 09:34:21 max $ */ package net.sourceforge.jeuclid.test; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLDocument; /** * Tests misc DOM Namespace functionality * * @version $Revision: 5eece7211ab2 $ */ public class DOMNameSpaceTest { /** * Tests if MathML Namespace is kept. * * @throws Exception * if the test fails. */ @Test public void testNameSpaceKeep() throws Exception { final Document doc = MathMLParserSupport .parseString("1"); Assert.assertEquals(doc.getDocumentElement().getNamespaceURI(), AbstractJEuclidElement.URI); final MathMLDocument jdoc = DOMBuilder.getInstance().createJeuclidDom( doc); Assert.assertEquals(jdoc.getDocumentElement().getNamespaceURI(), AbstractJEuclidElement.URI); } /** * Tests if MathML Namespace is added. * * @throws Exception * if the test fails. */ @Test public void testNameSpaceAdded() throws Exception { final Document doc = MathMLParserSupport .parseString("1"); Assert.assertEquals(doc.getDocumentElement().getNamespaceURI(), null); final MathMLDocument jdoc = DOMBuilder.getInstance().createJeuclidDom( doc); Assert.assertEquals(jdoc.getDocumentElement().getNamespaceURI(), AbstractJEuclidElement.URI); } /** * Tests foreign namespaces * * @throws Exception * if the test fails. */ @Test public void testForeignNameSpaces() throws Exception { final Document doc = MathMLParserSupport .parseString("1"); Assert.assertEquals(doc.getDocumentElement().getNamespaceURI(), null); final MathMLDocument jdoc = DOMBuilder.getInstance().createJeuclidDom( doc); Assert.assertEquals(jdoc.getDocumentElement().getNamespaceURI(), AbstractJEuclidElement.URI); Node n = jdoc.getDocumentElement().getChildNodes().item(0); Assert.assertEquals(n.getNamespaceURI(), "http://www.atest.org/"); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/CharacterConverterTest.javajeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/CharacterConverterTest.0000644000175000017500000000344611335260530034511 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: CharacterConverterTest.java,v b468e2a947ac 2008/11/27 09:30:42 maxberger $ */ package net.sourceforge.jeuclid.test; import net.sourceforge.jeuclid.elements.support.text.CharConverter; import org.testng.Assert; import org.testng.annotations.Test; /** * @version $Revision: b468e2a947ac $ */ public class CharacterConverterTest { /** * Default Constructor. */ public CharacterConverterTest() { // Empty on purpose } /** * Tests late character conversion. * @throws Exception if the test fails. */ @Test public void testLate() throws Exception { Assert.assertEquals(CharConverter.convertLate("abcdef"), "abcdef"); Assert.assertEquals(CharConverter .convertLate("x\u2061\u200b\u2062\u2148x"), "xx"); Assert.assertEquals(CharConverter.convertLate("\u0332"), "\u00AF"); } /** * Tests early character conversion. * @throws Exception if the test fails. */ @Test public void testEarly() throws Exception { Assert.assertEquals(CharConverter.convertEarly("abcdef"), "abcdef"); Assert.assertEquals(CharConverter.convertEarly("x\uE080x"), "x\u2031x"); } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/FontFactoryTest.java0000644000175000017500000000572711335260530034031 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FontFactoryTest.java,v f27ff8ca245b 2008/11/28 14:59:19 maxberger $ */ package net.sourceforge.jeuclid.test; import java.awt.Font; import net.sourceforge.jeuclid.font.FontFactory; import org.testng.Assert; import org.testng.annotations.Test; /** * Test for {@link net.sourceforge.jeuclid.font.FontFactory} class and its * concrete subclasses. * * @version $Revision: f27ff8ca245b $ */ public final class FontFactoryTest { private static final String DIALOG = "Dialog"; private static final int TEST_FONT_SIZE = 14; /** */ public FontFactoryTest() { } /** * Tests basic FontFactory functionality (returning standard fonts, * defaulting to standard fonts). * * @throws Exception * if anything goes wrong */ @Test public void fontFactoryTest() throws Exception { final String builtInFamily = "Monospaced"; final String defaultFamily = FontFactoryTest.DIALOG; final String customFamily = "Bitstream Vera Sans Mono"; final String customAltname = "BitstreamVeraSansMono-Roman"; final FontFactory fontFactory = FontFactory.getInstance(); // get a non-default built-in font final Font builtInFont = fontFactory.getFont(builtInFamily, Font.PLAIN, FontFactoryTest.TEST_FONT_SIZE); Assert.assertEquals(builtInFamily, builtInFont.getFamily()); // get a non-default, not cached font final Font foo = fontFactory.getFont("foo456789", Font.PLAIN, FontFactoryTest.TEST_FONT_SIZE); Assert.assertEquals(foo.getFamily(), defaultFamily); // register a custom font and then get it fontFactory.registerFont(Font.TRUETYPE_FONT, this.getClass() .getResourceAsStream("/VeraMono.ttf")); Font customFont = fontFactory.getFont(customFamily, Font.PLAIN, FontFactoryTest.TEST_FONT_SIZE); if (customFont.getFamily().equals(FontFactoryTest.DIALOG)) { customFont = fontFactory.getFont(customAltname, Font.PLAIN, FontFactoryTest.TEST_FONT_SIZE); Assert.assertEquals(customFont.getFamily(), customAltname); } else { Assert.assertEquals(customFont.getFamily(), customFamily); } Assert.assertEquals(customFont.getSize(), FontFactoryTest.TEST_FONT_SIZE); } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/DOMModelTest.java0000644000175000017500000012746211335260530033174 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: DOMModelTest.java,v b4b0786c4d39 2009/08/28 16:04:47 max $ */ package net.sourceforge.jeuclid.test; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.util.Set; import java.util.TreeSet; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.MathMLSerializer; import net.sourceforge.jeuclid.elements.JEuclidElementFactory; import net.sourceforge.jeuclid.elements.content.semantic.Annotation; import net.sourceforge.jeuclid.elements.content.semantic.Semantics; import net.sourceforge.jeuclid.elements.generic.DocumentElement; import net.sourceforge.jeuclid.elements.generic.MathImpl; import net.sourceforge.jeuclid.elements.presentation.enlivening.Maction; import net.sourceforge.jeuclid.elements.presentation.general.Menclose; import net.sourceforge.jeuclid.elements.presentation.general.Merror; import net.sourceforge.jeuclid.elements.presentation.general.Mfenced; import net.sourceforge.jeuclid.elements.presentation.general.Mfrac; import net.sourceforge.jeuclid.elements.presentation.general.Mpadded; import net.sourceforge.jeuclid.elements.presentation.general.Mphantom; import net.sourceforge.jeuclid.elements.presentation.general.Mroot; import net.sourceforge.jeuclid.elements.presentation.general.Mrow; import net.sourceforge.jeuclid.elements.presentation.general.Msqrt; import net.sourceforge.jeuclid.elements.presentation.general.Mstyle; import net.sourceforge.jeuclid.elements.presentation.script.Mmultiscripts; import net.sourceforge.jeuclid.elements.presentation.script.Mover; import net.sourceforge.jeuclid.elements.presentation.script.Mprescripts; import net.sourceforge.jeuclid.elements.presentation.script.Msub; import net.sourceforge.jeuclid.elements.presentation.script.Msubsup; import net.sourceforge.jeuclid.elements.presentation.script.Msup; import net.sourceforge.jeuclid.elements.presentation.script.Munder; import net.sourceforge.jeuclid.elements.presentation.script.Munderover; import net.sourceforge.jeuclid.elements.presentation.script.None; import net.sourceforge.jeuclid.elements.presentation.table.Maligngroup; import net.sourceforge.jeuclid.elements.presentation.table.Malignmark; import net.sourceforge.jeuclid.elements.presentation.table.Mlabeledtr; import net.sourceforge.jeuclid.elements.presentation.table.Mtable; import net.sourceforge.jeuclid.elements.presentation.table.Mtd; import net.sourceforge.jeuclid.elements.presentation.table.Mtr; import net.sourceforge.jeuclid.elements.presentation.token.Mglyph; import net.sourceforge.jeuclid.elements.presentation.token.Mi; import net.sourceforge.jeuclid.elements.presentation.token.Mn; import net.sourceforge.jeuclid.elements.presentation.token.Mo; import net.sourceforge.jeuclid.elements.presentation.token.Ms; import net.sourceforge.jeuclid.elements.presentation.token.Mspace; import net.sourceforge.jeuclid.elements.presentation.token.Mtext; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.events.Event; import org.w3c.dom.events.EventListener; import org.w3c.dom.events.EventTarget; import org.w3c.dom.mathml.MathMLActionElement; import org.w3c.dom.mathml.MathMLAlignGroupElement; import org.w3c.dom.mathml.MathMLAlignMarkElement; import org.w3c.dom.mathml.MathMLAnnotationElement; import org.w3c.dom.mathml.MathMLDocument; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLEncloseElement; import org.w3c.dom.mathml.MathMLFencedElement; import org.w3c.dom.mathml.MathMLFractionElement; import org.w3c.dom.mathml.MathMLGlyphElement; import org.w3c.dom.mathml.MathMLLabeledRowElement; import org.w3c.dom.mathml.MathMLMathElement; import org.w3c.dom.mathml.MathMLMultiScriptsElement; import org.w3c.dom.mathml.MathMLOperatorElement; import org.w3c.dom.mathml.MathMLPaddedElement; import org.w3c.dom.mathml.MathMLPresentationContainer; import org.w3c.dom.mathml.MathMLPresentationToken; import org.w3c.dom.mathml.MathMLRadicalElement; import org.w3c.dom.mathml.MathMLScriptElement; import org.w3c.dom.mathml.MathMLSemanticsElement; import org.w3c.dom.mathml.MathMLSpaceElement; import org.w3c.dom.mathml.MathMLStringLitElement; import org.w3c.dom.mathml.MathMLStyleElement; import org.w3c.dom.mathml.MathMLTableCellElement; import org.w3c.dom.mathml.MathMLTableElement; import org.w3c.dom.mathml.MathMLTableRowElement; import org.w3c.dom.mathml.MathMLUnderOverElement; /** * Various tests for the DOM model. * * @version $Revision: b4b0786c4d39 $ */ // CHECKSTYLE:OFF public class DOMModelTest { // CHECKSTYLE:ON private int docCount; private int mathCount; private int miCount; /** * Default constructor. */ public DOMModelTest() { // Empty on purpose. } /** * Tests is the "id" attribute works. * * @throws Exception * if anything goes wrong. */ @Test public void testID() throws Exception { final Document docWithID = MathMLParserSupport .parseString("" + "1"); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(docWithID); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); Assert.assertEquals(mathElement.getDisplay(), "block"); final MathMLPresentationContainer row = (MathMLPresentationContainer) mathElement .getFirstChild(); Assert.assertNotNull(row); Assert.assertEquals(row.getId(), "abc"); } /** * Tests if serialization works. * * @throws Exception * if anything goes wrong. */ @Test public void testSerialization() throws Exception { final String shouldBe = "" + "1"; final Document origDoc = MathMLParserSupport.parseString(shouldBe); final MathMLDocument mathMLDoc = DOMBuilder.getInstance() .createJeuclidDom(origDoc); final String reserialStr = MathMLSerializer.serializeDocument( mathMLDoc, false, false); final Document reserial = MathMLParserSupport.parseString(reserialStr); Assert.assertTrue(reserial.isEqualNode(origDoc), "is: " + reserialStr + "\nshould be: " + shouldBe); } /** * Tests if serialization with malignmark works. * * @throws Exception * if anything goes wrong. */ @Test public void testSerialization2() throws Exception { final String shouldBe = "" + "AlignmentTest"; final Document origDoc = MathMLParserSupport.parseString(shouldBe); final MathMLDocument mathMLDoc = DOMBuilder.getInstance() .createJeuclidDom(origDoc); final String reserialStr = MathMLSerializer.serializeDocument( mathMLDoc, false, false); final Document reserial = MathMLParserSupport.parseString(reserialStr); Assert.assertTrue(reserial.isEqualNode(origDoc), "is: " + reserialStr + "\nshould be: " + shouldBe); } /** * Tests is all attributes on mathOperator work. * * @throws Exception * if anything goes wrong. */ @Test public void testMOAttrs() throws Exception { final Document doc = MathMLParserSupport .parseString("" + "X" + "Y" + "}" + "" + "" + ")" + ")" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(doc); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLOperatorElement mo = (MathMLOperatorElement) mathElement .getChildNodes().item(0); Assert.assertNotNull(mo); Assert.assertTrue(Boolean.parseBoolean(mo.getStretchy())); final Mo mo2 = (Mo) mathElement.getChildNodes().item(1); Assert.assertNotNull(mo2); Assert.assertFalse(Boolean.parseBoolean(mo2.getStretchy())); final Mo mo3 = (Mo) mathElement.getChildNodes().item(2); // Should be strechty, since it is fence Assert.assertTrue(Boolean.parseBoolean(mo3.getStretchy())); final Mo mo4 = (Mo) mathElement.getChildNodes().item(3); Assert.assertFalse(Boolean.parseBoolean(mo4.getStretchy())); final Mo mo5 = (Mo) mathElement.getChildNodes().item(4); Assert.assertTrue(Boolean.parseBoolean(mo5.getStretchy())); final Mo mo6 = (Mo) mathElement.getChildNodes().item(5); Assert.assertFalse(Boolean.parseBoolean(mo6.getStretchy())); final Mo mo7 = (Mo) mathElement.getChildNodes().item(6); Assert.assertTrue(Boolean.parseBoolean(mo7.getStretchy())); } /** * Tests of objects created from MathElementFactory implement the proper * interfaces from W3C Dom. * * @throws Exception * if anything goes wrong. */ @Test public void testInterfaces() throws Exception { // This mapping is taken straight from Table D.2.2, MathML 2.0 spec // TODO: Someday none of these should be commented out. // TODO: Use DOM instead; final Document ownerDocument = new DocumentElement(); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "math", ownerDocument) instanceof MathMLMathElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mi", ownerDocument) instanceof MathMLPresentationToken); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mn", ownerDocument) instanceof MathMLPresentationToken); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mo", ownerDocument) instanceof MathMLOperatorElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mtext", ownerDocument) instanceof MathMLPresentationToken); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mspace", ownerDocument) instanceof MathMLSpaceElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "ms", ownerDocument) instanceof MathMLStringLitElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mglyph", ownerDocument) instanceof MathMLGlyphElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mrow", ownerDocument) instanceof MathMLPresentationContainer); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mfrac", ownerDocument) instanceof MathMLFractionElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "msqrt", ownerDocument) instanceof MathMLRadicalElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mroot", ownerDocument) instanceof MathMLRadicalElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mstyle", ownerDocument) instanceof MathMLStyleElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "merror", ownerDocument) instanceof MathMLPresentationContainer); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mpadded", ownerDocument) instanceof MathMLPaddedElement); Assert .assertTrue(JEuclidElementFactory.elementFromName(null, "mphantom", ownerDocument) instanceof MathMLPresentationContainer); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mfenced", ownerDocument) instanceof MathMLFencedElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "menclose", ownerDocument) instanceof MathMLEncloseElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "msub", ownerDocument) instanceof MathMLScriptElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "msup", ownerDocument) instanceof MathMLScriptElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "msubsup", ownerDocument) instanceof MathMLScriptElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "munder", ownerDocument) instanceof MathMLUnderOverElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mover", ownerDocument) instanceof MathMLUnderOverElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "munderover", ownerDocument) instanceof MathMLUnderOverElement); Assert .assertTrue(JEuclidElementFactory.elementFromName(null, "mmultiscripts", ownerDocument) instanceof MathMLMultiScriptsElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mtable", ownerDocument) instanceof MathMLTableElement); Assert .assertTrue(JEuclidElementFactory.elementFromName(null, "mlabeledtr", ownerDocument) instanceof MathMLLabeledRowElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mtr", ownerDocument) instanceof MathMLTableRowElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "mtd", ownerDocument) instanceof MathMLTableCellElement); Assert .assertTrue(JEuclidElementFactory.elementFromName(null, "maligngroup", ownerDocument) instanceof MathMLAlignGroupElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "malignmark", ownerDocument) instanceof MathMLAlignMarkElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "maction", ownerDocument) instanceof MathMLActionElement); // Assert // .assertTrue(MathElementFactory.elementFromName("cn", aMap, // base) instanceof MathMLCnElement); // Assert // .assertTrue(MathElementFactory.elementFromName("ci", aMap, // base) instanceof MathMLCiElement); // Assert.assertTrue(MathElementFactory.elementFromName("csymbol", // aMap, // base) instanceof MathMLCsymbolElement); // Assert.assertTrue(MathElementFactory.elementFromName("apply", aMap, // base) instanceof MathMLApplyElement); // Assert.assertTrue(MathElementFactory.elementFromName("reln", aMap, // base) instanceof MathMLContentContainer); // Assert // .assertTrue(MathElementFactory.elementFromName("fn", aMap, // base) instanceof MathMLFnElement); // Assert.assertTrue(MathElementFactory.elementFromName("interval", // aMap) instanceof MathMLIntervalElement); // Assert.assertTrue(MathElementFactory.elementFromName("inverse", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("condition", // aMap) instanceof MathMLConditionElement); // Assert.assertTrue(MathElementFactory.elementFromName("declare", // aMap, // base) instanceof MathMLDeclareElement); // Assert.assertTrue(MathElementFactory.elementFromName("lambda", // aMap, // base) instanceof MathMLLambdaElement); // Assert.assertTrue(MathElementFactory.elementFromName("compose", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("ident", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("domain", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("codomain", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("image", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName( // "domainofapplication", aMap) instanceof // MathMLContentContainer); // Assert.assertTrue(MathElementFactory.elementFromName("piecewise", // aMap) instanceof MathMLPiecewiseElement); // Assert.assertTrue(MathElementFactory.elementFromName("piece", aMap, // base) instanceof MathMLCaseElement); // Assert.assertTrue(MathElementFactory.elementFromName("otherwise", // aMap) instanceof MathMLContentContainer); // Assert.assertTrue(MathElementFactory.elementFromName("quotient", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("exp", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("factorial", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("divide", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("max", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("min", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("minus", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("plus", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("power", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("rem", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("times", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("root", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("gcd", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("and", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName("or", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("xor", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("not", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("implies", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("forall", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("exists", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("abs", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("conjugate", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arg", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("real", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("imaginary", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("lcm", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("floor", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("ceiling", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName("eq", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("neq", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName("gt", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName("lt", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("geq", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("leq", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("equivalent", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("approx", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("factorof", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("int", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("diff", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("partialdiff", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("lowlimit", // aMap) instanceof MathMLContentContainer); // Assert.assertTrue(MathElementFactory.elementFromName("uplimit", // aMap, // base) instanceof MathMLContentContainer); // Assert.assertTrue(MathElementFactory.elementFromName("bvar", aMap, // base) instanceof MathMLBvarElement); // Assert.assertTrue(MathElementFactory.elementFromName("degree", // aMap, // base) instanceof MathMLContentContainer); // Assert.assertTrue(MathElementFactory.elementFromName("divergence", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("grad", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("curl", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("laplacian", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("set", aMap, // base) instanceof MathMLSetElement); // Assert.assertTrue(MathElementFactory.elementFromName("list", aMap, // base) instanceof MathMLListElement); // Assert.assertTrue(MathElementFactory.elementFromName("union", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("intersect", // aMap) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName("in", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("notin", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("subset", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("prsubset", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("notsubset", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("notprsubset", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("setdiff", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("card", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName( // "cartesianproduct", aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("sum", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("product", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("limit", aMap, // base) instanceof MathMLPredefinedSymbol); // This interface does not exist. // Assert.assertTrue(MathElementFactory.elementFromName("tendsto", // aMap, // base) instanceof MathMLTendsToElement); // Assert.assertTrue(MathElementFactory.elementFromName("exp", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName("ln", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("log", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("sin", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("cos", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("tan", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("sec", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("csc", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("cot", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("sinh", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("cosh", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("tanh", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("sech", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("csch", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("coth", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arcsin", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arccos", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arctan", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arccosh", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arccot", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arccoth", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arccsc", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arccsch", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arcsec", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arcsech", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arcsinh", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("arctanh", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("mean", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("sdev", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("variance", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("median", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("mode", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("moment", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("momentabout", // aMap) instanceof MathMLContentContainer); // Assert.assertTrue(MathElementFactory.elementFromName("vector", // aMap, // base) instanceof MathMLVectorElement); // Assert.assertTrue(MathElementFactory.elementFromName("matrix", // aMap, // base) instanceof MathMLMatrixElement); // Assert.assertTrue(MathElementFactory.elementFromName("matrixrow", // aMap) instanceof MathMLMatrixrowElement); // Assert.assertTrue(MathElementFactory.elementFromName("determinant", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("transpose", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("selector", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("vectorproduct", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("scalarproduct", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("outerproduct", // aMap) instanceof MathMLPredefinedSymbol); Assert .assertTrue(JEuclidElementFactory.elementFromName(null, "annotation", ownerDocument) instanceof MathMLAnnotationElement); Assert.assertTrue(JEuclidElementFactory.elementFromName(null, "semantics", ownerDocument) instanceof MathMLSemanticsElement); // Assert // .assertTrue(MathElementFactory.elementFromName( // "annotation-xml", aMap) instanceof // MathMLXMLAnnotationElement); // Assert.assertTrue(MathElementFactory.elementFromName("integers", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("reals", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("rationals", // aMap) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName( // "naturalnumbers", aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("complexes", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("primes", // aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("exponentiale", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("imaginaryi", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("notanumber", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("true", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("false", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("emptyset", // aMap) instanceof MathMLPredefinedSymbol); // Assert // .assertTrue(MathElementFactory.elementFromName("pi", aMap, // base) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("eulergamma", // aMap) instanceof MathMLPredefinedSymbol); // Assert.assertTrue(MathElementFactory.elementFromName("infinity", // aMap) instanceof MathMLPredefinedSymbol); } /** * Misc tests on {@link Mfrac}. * * @throws Exception * if the test fails. */ @Test public void testFrac() throws Exception { final Document d = new DocumentElement(); final MathMLFractionElement mfrac = (MathMLFractionElement) d .createElement(Mfrac.ELEMENT); final Mi mi = (Mi) d.createElement(Mi.ELEMENT); final Mrow mrow = (Mrow) d.createElement(Mrow.ELEMENT); final Mi mi2 = (Mi) d.createElement(Mi.ELEMENT); mfrac.setDenominator(mi); mfrac.setNumerator(mrow); Assert.assertEquals(mi, mfrac.getDenominator()); Assert.assertEquals(mrow, mfrac.getNumerator()); Assert.assertEquals(mfrac.getChildNodes().getLength(), 2); mfrac.setNumerator(mi2); Assert.assertEquals(mi, mfrac.getDenominator()); Assert.assertEquals(mi2, mfrac.getNumerator()); Assert.assertEquals(mfrac.getChildNodes().getLength(), 2); } /** * Misc tests on {@link Mmultiscripts}. * * @throws Exception * if the test fails. */ @Test public void testMMultiScripts() throws Exception { final Document doc = MathMLParserSupport .parseString("" + "" + "x" + "a" + "b" + "" + "c" + "d" + "" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(doc); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLMultiScriptsElement multi = (MathMLMultiScriptsElement) mathElement .getChildNodes().item(0); Assert.assertEquals(multi.getBase().getTextContent(), "x"); Assert.assertEquals(multi.getSubScript(1).getTextContent(), "a"); Assert.assertEquals(multi.getSuperScript(1).getTextContent(), "b"); Assert.assertEquals(multi.getPreSubScript(1).getTextContent(), "c"); Assert.assertEquals(multi.getPreSuperScript(1).getTextContent(), "d"); Assert.assertEquals(multi.getNumprescriptcolumns(), 1); Assert.assertEquals(multi.getNumscriptcolumns(), 1); final Mi mi = (Mi) docElement.createElement(Mi.ELEMENT); multi.insertPreSubScriptBefore(0, mi); Assert.assertEquals(multi.getNumprescriptcolumns(), 2); Assert.assertEquals(multi.getChildNodes().getLength(), 8); } /** * More tests on {@link Mmultiscripts}. * * @throws Exception * if the test fails. */ @Test public void testMMultiScripts2() throws Exception { final Document doc = MathMLParserSupport .parseString("" + "" + "" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(doc); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLMultiScriptsElement multi = (MathMLMultiScriptsElement) mathElement .getChildNodes().item(0); multi.setSubScriptAt(1, (MathMLElement) docElement .createElement(Mi.ELEMENT)); Assert.assertEquals(multi.getChildNodes().getLength(), 3); multi.setSuperScriptAt(1, (MathMLElement) docElement .createElement(Mi.ELEMENT)); Assert.assertEquals(multi.getChildNodes().getLength(), 3); multi.insertPreSuperScriptBefore(0, (MathMLElement) docElement .createElement(Mi.ELEMENT)); Assert.assertEquals(multi.getChildNodes().getLength(), 6); multi.insertPreSubScriptBefore(0, (Mi) docElement .createElement(Mi.ELEMENT)); Assert.assertEquals(multi.getChildNodes().getLength(), 8); Assert.assertNull(multi.getSubScript(0)); Assert.assertNull(multi.getSuperScript(0)); Assert.assertNull(multi.getSubScript(20)); Assert.assertNull(multi.getSuperScript(20)); } /** * Test DOM Events. * * @throws Exception * if the test fails. */ @Test public void testEvents() throws Exception { final Document doc = MathMLParserSupport .parseString("" + "x" + ""); final MathMLDocument docElement = DOMBuilder.getInstance() .createJeuclidDom(doc); final MathMLMathElement mathElement = (MathMLMathElement) docElement .getFirstChild(); final MathMLElement mi = (MathMLElement) mathElement.getChildNodes() .item(0); this.docCount = 0; this.mathCount = 0; this.miCount = 0; ((EventTarget) mathElement).addEventListener("DOMSubtreeModified", new EventListener() { public void handleEvent(final Event evt) { DOMModelTest.this.mathCount++; } }, false); ((EventTarget) mi).addEventListener("DOMSubtreeModified", new EventListener() { public void handleEvent(final Event evt) { DOMModelTest.this.miCount++; } }, false); ((EventTarget) docElement).addEventListener("DOMSubtreeModified", new EventListener() { public void handleEvent(final Event evt) { DOMModelTest.this.docCount++; } }, false); mathElement.appendChild(docElement.createElement(Mi.ELEMENT)); Assert.assertTrue(this.miCount == 0, "Event must not be called on Mi"); Assert.assertTrue(this.mathCount > 0, "Event must be called on Math"); Assert .assertTrue(this.docCount > 0, "Event must be called on Document"); } /** * Test getSup/getSuper on sub, sup, and subsuper. * * @throws Exception * if the test fails. */ @Test public void testBadSupSuper() throws Exception { final Document ownerDocument = new DocumentElement(); final MathMLScriptElement msup = (MathMLScriptElement) ownerDocument .createElement(Msup.ELEMENT); final MathMLScriptElement msubsup = (MathMLScriptElement) ownerDocument .createElement(Msubsup.ELEMENT); final MathMLScriptElement msub = (MathMLScriptElement) ownerDocument .createElement(Msub.ELEMENT); msup.getSuperscript(); msup.getSubscript(); msub.getSuperscript(); msub.getSubscript(); msubsup.getSuperscript(); msubsup.getSubscript(); } private void testImpl(final Class whichClass) throws Exception { final String name = whichClass.getName(); final Method[] methods = whichClass.getDeclaredMethods(); final Set names = new TreeSet(); for (final Method m : methods) { names.add(m.getName()); } Assert.assertTrue(names.contains("newNode"), name + " must override newNode"); Assert.assertFalse(names.contains("getTagName"), name + " must not override getTagName"); Assert.assertTrue(Modifier.isFinal(whichClass.getModifiers()), name + " must be final"); } /** * Test implementation of all presentation elements. * * @throws Exception * if the test fails. */ @Test public void testProperImplementation() throws Exception { this.testImpl(MathImpl.class); this.testImpl(Mfenced.class); this.testImpl(Mfrac.class); this.testImpl(Menclose.class); this.testImpl(Mphantom.class); this.testImpl(Msup.class); this.testImpl(Msub.class); this.testImpl(Mmultiscripts.class); this.testImpl(Mprescripts.class); this.testImpl(None.class); this.testImpl(Msubsup.class); this.testImpl(Munder.class); this.testImpl(Mover.class); this.testImpl(Munderover.class); this.testImpl(Mspace.class); this.testImpl(Ms.class); this.testImpl(Mstyle.class); this.testImpl(Msqrt.class); this.testImpl(Mroot.class); this.testImpl(Mtable.class); this.testImpl(Mtr.class); this.testImpl(Mlabeledtr.class); this.testImpl(Mtd.class); this.testImpl(Mo.class); this.testImpl(Mi.class); this.testImpl(Mn.class); this.testImpl(Mtext.class); this.testImpl(Mrow.class); this.testImpl(Maligngroup.class); this.testImpl(Malignmark.class); this.testImpl(Semantics.class); this.testImpl(Annotation.class); this.testImpl(Mpadded.class); this.testImpl(Merror.class); this.testImpl(Maction.class); this.testImpl(Mglyph.class); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/MultiAttributedCharacterIteratorTest.javajeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/MultiAttributedCharacte0000644000175000017500000000440111335260530034554 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MultiAttributedCharacterIteratorTest.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.test; import java.text.AttributedCharacterIterator; import java.text.AttributedString; import net.sourceforge.jeuclid.elements.support.text.MultiAttributedCharacterIterator; import org.testng.Assert; import org.testng.annotations.Test; /** * Tests {@link MultiAttributedCharacterIterator} * * @version $Revision: 923658a2b249 $ */ public class MultiAttributedCharacterIteratorTest { /** * test without attributes. * * @throws Exception * if the tests fail. */ @Test public void testNoAttribs() throws Exception { final AttributedString as1 = new AttributedString("Test"); final AttributedString as2 = new AttributedString("Cont"); final MultiAttributedCharacterIterator maci = new MultiAttributedCharacterIterator(); maci.appendAttributedCharacterIterator(as1.getIterator()); maci.appendAttributedCharacterIterator(as2.getIterator()); Assert.assertTrue(maci.getAllAttributeKeys().isEmpty()); Assert.assertTrue(maci.getAttributes().isEmpty()); Assert.assertEquals(maci.getEndIndex(), 8); final AttributedCharacterIterator nac1 = new AttributedString(maci) .getIterator(); final AttributedCharacterIterator nac2 = new AttributedString( "TestCont").getIterator(); for (int i = nac1.getBeginIndex(); i < nac1.getEndIndex(); i++) { nac1.setIndex(i); nac2.setIndex(i); Assert.assertEquals(nac1.current(), nac2.current()); } } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/DOMBuilderTest.java0000644000175000017500000001225511335260530033513 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: DOMBuilderTest.java,v 8e50d7e07b33 2009/10/27 13:26:47 max $ */ package net.sourceforge.jeuclid.test; import java.io.StringReader; import javax.xml.parsers.DocumentBuilderFactory; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.presentation.token.Mspace; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLPresentationToken; import org.xml.sax.InputSource; /** * A JUnit test for DOMBuilder; in particular, the sources it can take as input. * * @version $Revision: 8e50d7e07b33 $ */ public class DOMBuilderTest { private final DocumentBuilderFactory documentBuilderFactory; /** * Initialize test. */ public DOMBuilderTest() { this.documentBuilderFactory = DocumentBuilderFactory.newInstance(); this.documentBuilderFactory.setNamespaceAware(true); this.documentBuilderFactory.setValidating(false); } /** * Tests if DOM can be constructed manually. * * @throws Exception * if the test fails. */ @Test public void testConstructor() throws Exception { final Document doc = this.parse("1"); final Document jdoc = DOMBuilder.getInstance().createJeuclidDom(doc); final Node firstChild = jdoc.getFirstChild(); Assert.assertEquals(firstChild.getNodeName(), "math"); Assert.assertEquals(firstChild.getFirstChild().getNodeName(), "mn"); final DocumentFragment documentFragment = doc.createDocumentFragment(); documentFragment.appendChild(doc.createElement(Mspace.ELEMENT)); Assert.assertEquals(DOMBuilder.getInstance().createJeuclidDom( documentFragment).getFirstChild().getNodeName(), "mspace"); try { DOMBuilder.getInstance().createJeuclidDom( doc.getDocumentElement().getFirstChild().getFirstChild()); Assert.fail("Expected IllegalArgumentException"); } catch (final IllegalArgumentException e) { } } private Document parse(final String text) throws Exception { return this.documentBuilderFactory.newDocumentBuilder().parse( new InputSource(new StringReader(text))); } /** * Tests for namespace issues with manual element construction in default * namespace. * * @throws Exception * if the test fails. */ @Test public void testConstructionNSDefault() throws Exception { final Document doc = this.parse(""); final Document jdoc = DOMBuilder.getInstance().createJeuclidDom(doc); final Node mathNode = jdoc.getFirstChild(); Assert.assertEquals(mathNode.getNodeName(), "math"); Assert.assertEquals(mathNode.getNamespaceURI(), AbstractJEuclidElement.URI); final MathMLPresentationToken mn = (MathMLPresentationToken) mathNode .getOwnerDocument().createElement("mn"); mn.setTextContent("1"); mathNode.appendChild(mn); Assert.assertSame(mn.getOwnerDocument(), mathNode.getOwnerDocument()); Assert.assertSame(mn.getOwnerMathElement(), mathNode); Assert.assertEquals(mn.getNamespaceURI(), AbstractJEuclidElement.URI); } /** * Tests for namespace issues with manual element construction in mml * namespace. * * @throws Exception * if the test fails. */ @Test public void testConstructionNSMml() throws Exception { final Document doc = this.parse(""); final Document jdoc = DOMBuilder.getInstance().createJeuclidDom(doc); final Node mathNode = jdoc.getFirstChild(); Assert.assertEquals(mathNode.getNodeName(), "mml:math"); Assert.assertEquals(mathNode.getLocalName(), "math"); Assert.assertEquals(mathNode.getNamespaceURI(), AbstractJEuclidElement.URI); final MathMLPresentationToken mn = (MathMLPresentationToken) mathNode .getOwnerDocument().createElement("mn"); mn.setTextContent("1"); mathNode.appendChild(mn); Assert.assertSame(mn.getOwnerDocument(), mathNode.getOwnerDocument()); Assert.assertSame(mn.getOwnerMathElement(), mathNode); Assert.assertEquals(mn.getNamespaceURI(), AbstractJEuclidElement.URI); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/CharacterMappingTest.javajeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/CharacterMappingTest.ja0000644000175000017500000001024311335260530034441 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: CharacterMappingTest.java,v b468e2a947ac 2008/11/27 09:30:42 maxberger $ */ package net.sourceforge.jeuclid.test; import java.awt.Font; import java.util.List; import net.sourceforge.jeuclid.elements.support.attributes.FontFamily; import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; import net.sourceforge.jeuclid.elements.support.text.CharacterMapping; import net.sourceforge.jeuclid.elements.support.text.CodePointAndVariant; import org.testng.Assert; import org.testng.annotations.Test; /** * @version $Revision: b468e2a947ac $ */ public class CharacterMappingTest { /** * Default Constructor. */ public CharacterMappingTest() { // Empty on purpose } /** * Tests some standard code mappings. * @throws Exception if the test fails. */ @Test public void testMappings() throws Exception { final CharacterMapping cMap = CharacterMapping.getInstance(); final CodePointAndVariant test = new CodePointAndVariant(0x1D555, MathVariant.ITALIC); Assert.assertEquals(test, new CodePointAndVariant(0x1d555, MathVariant.ITALIC)); final CodePointAndVariant split = cMap.extractUnicodeAttr(test); Assert.assertEquals(split, new CodePointAndVariant(0x64, new MathVariant(Font.ITALIC, FontFamily.DOUBLE_STRUCK))); final CodePointAndVariant fin = cMap.composeUnicodeChar(split, false); Assert.assertEquals(fin, new CodePointAndVariant(0x2146, MathVariant.NORMAL)); final CodePointAndVariant fina = cMap.composeUnicodeChar(split, true); Assert.assertEquals(fina, new CodePointAndVariant(0x2146, MathVariant.NORMAL)); final CodePointAndVariant test2 = new CodePointAndVariant(0x1D555, MathVariant.BOLD); Assert.assertEquals(test2, new CodePointAndVariant(0x1d555, MathVariant.BOLD)); final CodePointAndVariant split2 = cMap.extractUnicodeAttr(test2); Assert.assertEquals(split2, new CodePointAndVariant(0x64, new MathVariant(Font.BOLD, FontFamily.DOUBLE_STRUCK))); final CodePointAndVariant fin2 = cMap.composeUnicodeChar(split2, false); Assert.assertEquals(fin2, new CodePointAndVariant(0x1d555, MathVariant.BOLD)); final CodePointAndVariant fin2a = cMap.composeUnicodeChar(split2, true); Assert.assertEquals(fin2a, new CodePointAndVariant(0x64, new MathVariant(Font.BOLD, FontFamily.DOUBLE_STRUCK))); } /** * Tests code mapping alternatives. * @throws Exception if the test fails. */ @Test public void testAlternatives() throws Exception { final CharacterMapping cMap = CharacterMapping.getInstance(); final CodePointAndVariant space = new CodePointAndVariant(0x20, MathVariant.NORMAL); final List spacelist = cMap .getAllAlternatives(space); Assert.assertEquals(spacelist.get(0), space); Assert.assertEquals(spacelist.get(1), new CodePointAndVariant(160, MathVariant.NORMAL)); Assert.assertEquals(spacelist.size(), 2); final CodePointAndVariant a = new CodePointAndVariant(65, MathVariant.NORMAL); Assert.assertEquals(cMap.getAllAlternatives(a).size(), 1); final CodePointAndVariant test = new CodePointAndVariant(0x1D555, MathVariant.ITALIC); Assert.assertEquals(cMap.getAllAlternatives(test).size(), 3); } } jeuclid-parent-3.1.9/jeuclid-core/src/test/java/net/sourceforge/jeuclid/test/ConverterTest.java0000644000175000017500000002657211335260530033543 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ConverterTest.java,v 248c80cf5aa9 2009/08/28 09:16:22 max $ */ package net.sourceforge.jeuclid.test; import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.converter.Converter; import net.sourceforge.jeuclid.converter.ConverterRegistry; import net.sourceforge.jeuclid.converter.ConverterPlugin.DocumentWithDimension; import net.sourceforge.jeuclid.elements.generic.DocumentElement; import org.testng.Assert; import org.testng.annotations.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.svg.SVGDocument; /** * @version $Revision: 248c80cf5aa9 $ */ public class ConverterTest { /** * Test string with xml header. */ public static final String TEST1 = "" + "1x" + "dtt"; private void testConverterXXX(String ext, String mimeext) throws Exception { final Document doc = MathMLParserSupport .parseString(ConverterTest.TEST1); final File outFile = new File(this.getOutDir(), "test1." + ext); final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); params.setParameter(Parameter.MATHSIZE, 25f); Converter.getInstance().convert(doc, outFile, "image/" + mimeext, params); Assert.assertTrue(outFile.exists()); Assert.assertTrue(outFile.length() > 0); } /** * Tests if PNG converter is available. * * @throws Exception * if the test fails. */ @Test public void testConverterPNG() throws Exception { this.testConverterXXX("png", "png"); } /** * Tests if JPEG converter is available. * * @throws Exception * if the test fails. */ @Test public void testConverterJPG() throws Exception { this.testConverterXXX("jpg", "jpeg"); } /** * Tests if BMP converter is available. * * @throws Exception * if the test fails. */ @Test public void testConverterBMP() throws Exception { this.testConverterXXX("bmp", "bmp"); } /** * Tests if SVG converter is available and creates an output file. * * @throws Exception * if the test fails. */ @Test public void testConverterSVG() throws Exception { final Document doc = MathMLParserSupport .parseString(ConverterTest.TEST1); final File outFile = new File(this.getOutDir(), "test1.svg"); final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); params.setParameter(Parameter.MATHSIZE, 25f); Converter.getInstance().convert(doc, outFile, net.sourceforge.jeuclid.converter.Converter.TYPE_SVG, params); Assert.assertTrue(outFile.exists(), "SVG file was not created"); Assert.assertTrue(outFile.length() > 0, "SVG file is empty"); Assert.assertTrue(outFile.length() > 2048, "SVG file is too small"); } /** * Tests if PDF converter is available and creates an output file. * * @throws Exception * if the test fails. */ @Test public void testConverterPDF() throws Exception { final Document doc = MathMLParserSupport .parseString(ConverterTest.TEST1); final File outFile = new File(this.getOutDir(), "test1.pdf"); final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); params.setParameter(Parameter.MATHSIZE, 25f); Converter.getInstance() .convert(doc, outFile, "application/pdf", params); Assert.assertTrue(outFile.exists(), "PDF file was not created"); Assert.assertTrue(outFile.length() > 0, "PDF file is empty"); Assert.assertTrue(outFile.length() > 2048, "PDF file is too small"); } /** * Tests if SVG converter is available and creates an output DOM. * * @throws Exception * if the test fails. */ @Test public void testConverterSVGtoDOM() throws Exception { final Document doc = MathMLParserSupport .parseString(ConverterTest.TEST1); final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); params.setParameter(Parameter.MATHSIZE, 25f); final DocumentWithDimension svgdocdim = Converter.getInstance() .convert(doc, net.sourceforge.jeuclid.converter.Converter.TYPE_SVG, params); Assert.assertNotNull(svgdocdim); final Document svgdoc = svgdocdim.getDocument(); Assert.assertNotNull(svgdoc); Assert.assertTrue(svgdoc instanceof SVGDocument, "Document is not a SVGDocument"); final Element e = (Element) svgdoc.getFirstChild(); Assert.assertEquals("svg", e.getLocalName()); Assert.assertTrue(e.getChildNodes().getLength() > 0, "SVG Document is empty!"); Assert.assertTrue(svgdocdim.getDimension().height > 1); Assert.assertTrue(svgdocdim.getDimension().width > 1); } /** * Create and return temp directory. * * @return temp directory. */ public File getOutDir() { final File outDir = new File("temp"); if (!outDir.isDirectory()) { final boolean success = outDir.mkdirs(); Assert .assertTrue( success, "Failed to create temp directory. Please delete all files / directories named temp"); } return outDir; } /** * Tests the examples at resources/test/exampleX.mml. * * @throws Exception * if an error occurs. */ @Test public void testConvertEmbeddedExamples() throws Exception { final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); params.setParameter(Parameter.MATHSIZE, 16f); for (int example = 1; example <= 10; example++) { final String exName = "example" + example + ".mml"; final File outFile = new File(this.getOutDir(), "example" + example + ".png"); final Document document = MathBaseTest.loadDocument(exName); Converter.getInstance().convert(document, outFile, "image/png", params); Assert.assertTrue(outFile.exists()); Assert.assertTrue(outFile.length() > 0); } } /** * Tests if some mime-types are registered properly. * * @throws Exception * if the test fails. */ @Test public void testConverterMimeTypes() throws Exception { Assert .assertTrue(net.sourceforge.jeuclid.converter.Converter.TYPE_SVG .equalsIgnoreCase(ConverterRegistry .getInstance() .getMimeTypeForSuffix( net.sourceforge.jeuclid.converter.Converter.EXTENSION_SVG))); Assert .assertTrue(net.sourceforge.jeuclid.converter.Converter.EXTENSION_SVG .equalsIgnoreCase(ConverterRegistry .getInstance() .getSuffixForMimeType( net.sourceforge.jeuclid.converter.Converter.TYPE_SVG))); final String pngType = ConverterRegistry.getInstance() .getMimeTypeForSuffix("png"); Assert.assertTrue("image/png".equalsIgnoreCase(pngType) || "image/x-png".equalsIgnoreCase(pngType)); Assert.assertTrue("png".equalsIgnoreCase(ConverterRegistry .getInstance().getSuffixForMimeType("image/png"))); } /** * Tests if rendered creates a buffered image with alpha values * * @throws Exception * if the test fails. */ @Test public void testConverterBufferedImage() throws Exception { final Document doc = MathMLParserSupport .parseString(ConverterTest.TEST1); final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); params.setParameter(Parameter.MATHSIZE, 25f); BufferedImage bi = Converter.getInstance().render(doc, params); Assert.assertTrue(bi.getWidth() > 10, "Image Created was not wide enough"); Assert.assertTrue(bi.getHeight() > 10, "Image Created was not tall enough"); int ltpixel = bi.getRGB(0, 0); Assert.assertEquals(ltpixel, 0, "Expected Transparent Pixel, got " + ltpixel); } /** * Tests if rendered creates a buffered image for an empty document * * @throws Exception * if the test fails. */ @Test public void testConverterBufferedImageEmptyDoc() throws Exception { final Document doc = new DocumentElement(); final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); BufferedImage bi = Converter.getInstance().render(doc, params); Assert.assertNotNull(bi); } /** * Tests if rendered creates a buffered image without alpha values * * @throws Exception * if the test fails. */ @Test public void testConverterBufferedImageNoAlpha() throws Exception { final Document doc = MathMLParserSupport .parseString(ConverterTest.TEST1); final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); params.setParameter(Parameter.MATHSIZE, 25f); BufferedImage bi = Converter.getInstance().render(doc, params, BufferedImage.TYPE_3BYTE_BGR); Assert.assertTrue(bi.getWidth() > 10, "Image Created was not wide enough"); Assert.assertTrue(bi.getHeight() > 10, "Image Created was not tall enough"); int ltpixel = bi.getRGB(0, 0); int white = Color.WHITE.getRGB(); Assert.assertEquals(ltpixel, white, "Expected white Pixel (" + white + "), got " + ltpixel); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/0000755000175000017500000000000011335260530021372 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/script/0000755000175000017500000000000011335260530022676 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/script/precompile.groovy0000644000175000017500000000542211335260530026307 0ustar sylvestresylvestreimport java.io.FileOutputStream; import java.io.ObjectOutput; import java.io.ObjectOutputStream; import java.io.OutputStream; import javax.xml.transform.Source; import javax.xml.transform.Templates; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamSource; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary2; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary3; import net.sourceforge.jeuclid.elements.support.text.CharacterMapping; File basedir = new File("${project.basedir}"); //log.info("Precompiling XSLT stylesheet..."); //try { // Source stylesheet = new StreamSource(new File(basedir,"target/classes/content/mathmlc2p.xsl")) // TransformerFactory factory = TransformerFactory.newInstance(); // factory.setAttribute("generate-translet", Boolean.TRUE); // factory.setAttribute("package-name", "translet"); // File destDir = new File(basedir,"target/classes"); // factory.setAttribute("destination-directory", destDir.getAbsolutePath()); // Templates templates = factory.newTemplates(stylesheet); // // OutputStream os = new FileOutputStream(new File(basedir,"target/classes/content/mathmlc2p.ser")); // ObjectOutput oo = new ObjectOutputStream(os); // oo.writeObject(templates); // oo.close(); //} catch (Exception e) { // log.info("Could not precompile stylesheet (optional step)"); // log.info("Reason: "+e.getMessage()); //} File newDict2 = new File(basedir,"target/classes/net/sourceforge/jeuclid/moDictionary.ser"); File oldDict2 = new File(basedir,"target/classes/net/sourceforge/jeuclid/moDictionary.xml"); if (!newDict2.exists()) { log.info("Preloading operator dictionary 2..."); Object dict2 = OperatorDictionary2.getInstance(); os = new FileOutputStream(newDict2); oo = new ObjectOutputStream(os); oo.writeObject(dict2); oo.close(); } ant.delete(file:oldDict2); File newDict3 = new File(basedir,"target/classes/net/sourceforge/jeuclid/appendixc.ser"); File oldDict3 = new File(basedir,"target/classes/net/sourceforge/jeuclid/appendixc.xml"); if (!newDict3.exists()) { log.info("Preloading operator dictionary 3..."); Object dict3 = OperatorDictionary3.getInstance(); os = new FileOutputStream(newDict3); oo = new ObjectOutputStream(os); oo.writeObject(dict3); oo.close(); } ant.delete(file:oldDict3); File newMap = new File(basedir,"target/classes/net/sourceforge/jeuclid/charmap.ser"); File oldMap = new File(basedir,"target/classes/net/sourceforge/jeuclid/UnicodeData.txt"); if (!newMap.exists()) { log.info("Preloading character mappings..."); CharacterMapping map = CharacterMapping.getInstance(); os = new FileOutputStream(newMap); oo = new ObjectOutputStream(os); oo.writeObject(map); oo.close(); } ant.delete(file:oldMap); log.info("Precompilation done!"); jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/0000755000175000017500000000000011335260530023404 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/resources/META-INF/0000755000175000017500000000000011335260530024544 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/resources/META-INF/services/0000755000175000017500000000000011335260530026367 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/META-INF/services/net.sourceforge.jeuclid.converter.ConverterDetectorjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/META-INF/services/net.sourceforge.jeuclid.conve0000644000175000017500000000022711335260530034152 0ustar sylvestresylvestrenet.sourceforge.jeuclid.converter.ImageIODetector net.sourceforge.jeuclid.converter.BatikDetector net.sourceforge.jeuclid.converter.FreeHepDetector jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/0000755000175000017500000000000011335260530024172 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/0000755000175000017500000000000011335260530026515 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530030134 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/LICENSE.txt0000644000175000017500000002613611335260530031767 0ustar sylvestresylvestre Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright [yyyy] [name of copyright owner] Licensed 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. ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/openoffice.mathml.1.0.1/jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/openoffice.mathml.1.0.10000755000175000017500000000000011335260530034107 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/openoffice.mathml.1.0.1/math.dtdjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/openoffice.mathml.1.0.10000644000175000017500000010521711335260530034117 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/0000755000175000017500000000000011335260530031714 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml2.dtd0000644000175000017500000016033011335260530033760 0ustar sylvestresylvestre %mathml-qname.mod;]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> %ent-isoamsa; %ent-isoamsb; %ent-isoamsc; %ent-isoamsn; %ent-isoamso; %ent-isoamsr; %ent-isogrk3; %ent-isomfrk; %ent-isomopf; %ent-isomscr; %ent-isotech; %ent-isobox; %ent-isocyr1; %ent-isocyr2; %ent-isodia; %ent-isolat1; %ent-isolat2; %ent-isonum; %ent-isopub; %ent-mmlextra; %ent-mmlalias; ]]> jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/0000755000175000017500000000000011335260530033046 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isodia.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isod0000644000175000017500000000270111335260530033727 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoamsb.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoa0000644000175000017500000000752511335260530033735 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isocyr2.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoc0000644000175000017500000000463111335260530033732 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isonum.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/ison0000644000175000017500000001327011335260530033744 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isogrk2.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isog0000644000175000017500000000425211335260530033735 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isogrk1.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isog0000644000175000017500000000757011335260530033743 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isotech.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isot0000644000175000017500000001210311335260530033744 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoamsr.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoa0000644000175000017500000001572611335260530033737 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isolat1.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isol0000644000175000017500000001211711335260530033741 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isolat2.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isol0000644000175000017500000002124111335260530033737 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isobox.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isob0000644000175000017500000000666311335260530033740 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoamsc.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoa0000644000175000017500000000262511335260530033731 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isogrk4.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isog0000644000175000017500000000707511335260530033743 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isogrk3.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isog0000644000175000017500000000664711335260530033747 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoamsn.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoa0000644000175000017500000001266311335260530033734 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoamsa.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoa0000644000175000017500000001177211335260530033734 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isopub.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isop0000644000175000017500000001470211335260530033747 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoamso.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoa0000644000175000017500000000366411335260530033735 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isocyr1.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso8879/isoc0000644000175000017500000001221111335260530033723 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml2-qname-1.modjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml2-qnam0000644000175000017500000003177611335260530034153 0ustar sylvestresylvestre ]]> ]]> ]]> jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/0000755000175000017500000000000011335260530033257 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsb.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000002252411335260530033437 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isotech.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000003016111335260530033433 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsr.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000003346511335260530033445 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isomfrk.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000001057611335260530033443 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsc.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000000431611335260530033436 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isomopf.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000000473211335260530033440 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isogrk4.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000000707511335260530033443 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isogrk3.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000000716311335260530033441 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isomscr.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000001071511335260530033436 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsn.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000001741111335260530033436 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsa.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000002650511335260530033442 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamso.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/i0000644000175000017500000001052011335260530033430 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml/0000755000175000017500000000000011335260530033176 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml/mmlalias.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml/mmlal0000644000175000017500000011150011335260530034221 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml/mmlextra.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/mathml/mmlex0000644000175000017500000001714211335260530034250 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/html/0000755000175000017500000000000011335260530032660 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/html/special.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/html/special0000644000175000017500000000453611335260530034233 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/html/symbol.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/html/symbol.0000644000175000017500000002055011335260530034170 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/html/lat1.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/html/lat1.en0000644000175000017500000002014111335260530034043 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/xhtml-math11-f.dtdjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.2.0/xhtml-math110000644000175000017500000140100711335260530034067 0ustar sylvestresylvestre ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> %SVG.dtd; ]]> ]]> ]]> %xhtml-arch.mod;]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> %xhtml-legacy.mod;]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> %mathml-qname.mod;]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> ]]> jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/appendixc.xml0000644000175000017500000154272711335260530032653 0ustar sylvestresylvestre Operator Dictionary
Editors'
Draft

C Operator Dictionary (Non-Normative)

The following table gives the suggested dictionary of rendering properties for operators, fences, separators, and accents in MathML, all of which are represented by mo elements. For brevity, all such elements will be called simply "operators" in this Appendix.

C.1 Indexing of the operator dictionary

Note that the dictionary is indexed not just by the element content, but by the element content and form attribute value, together. Operators with more than one possible form have more than one entry. The MathML specification describes how the renderer chooses ("infers") which form to use when no form attribute is given; see Section 3.2.5.7.2 Default value of the form attribute.

Having made that choice, or with the form attribute explicitly specified in the <mo> element's start tag, the MathML renderer uses the remaining attributes from the dictionary entry for the appropriate single form of that operator, ignoring the entries for the other possible forms.

In the table below, all non-ASCII characters are represented by XML-style hexadecimal numeric character references. The choice of markup (character data, numeric character reference or named entity reference) for a given character in MathML has no effect on its rendering.

C.2 Format of operator dictionary entries

Each row of the table is indexed as described above by the both the character (given by codepoint and Unicode Name) and the value of the form attribute. The fourth column gives the priority which as described in Section 3.3.1 Horizontally Group Sub-Expressions <mrow>), is significant for the proper grouping of sub-expressions using <mrow>. The rule described there is especially relevant to the automatic generation of MathML by conversion from other formats for displayed mathematics, such as TEX, which do not always specify how sub-expressions nest.

The length valued attribues such as lspace are given explictly in the following columns. Boolean valued attributes such as stretchy are specified together in the final Properties column by listing the attribute name if its value should be set to true by the dictionary.

Any attribute not listed for some entry has its default value, which is given in parentheses in the table of attributes in Section 3.2.5 Operator, Fence, Separator or Accent <mo>.

( ( left parenthesis prefix 1 0 0 fence stretchy

could be expressed as an mo element by:

<mo form="prefix" fence="true" stretchy="true" lspace="0em" rspace="0em"> ( </mo>
(

(note the whitespace added around the content for readability; Such whitespace will be ignored by a MathML system, as described in Section 2.1.7 Collapsing Whitespace in Input.

This entry means that, for MathML renderers which use this suggested operator dictionary, giving the element <mo form="prefix"> ( </mo> alone, or simply <mo> ( </mo> in a position for which form="prefix" would be inferred (see below), is equivalent to giving the element with all attributes as shown above.

In some versions of this specification, the rows of the table may be reordered by clicking on a heading in the top row, to cause the table to be ordered by that column.

C.3 Notes on lspace and rspace attributes

The values for lspace and rspace given here range from 0 to 7, they are given numerically in order to save space in the table, the values should be taken as referring to the named mathematical spaces, as follows.

Table Entry Named Space Default Length
0 0 em
1 veryverythinmathspace 1/18 em
2 verythinmathspace 2/18 em
3 thinmathspace 3/18 em
4 mediummathspace 4/18 em
5 thickmathspace 5/18 em
6 verythickmathspace 6/18 em
7 veryverythickmathspace 7/18 em

For the invisible operators whose content is &InvisibleTimes; or &ApplyFunction;, it is suggested that MathML renderers choose spacing in a context-sensitive way (which is an exception to the static values given in the following table). For <mo>&ApplyFunction;</mo>, the total spacing ("lspace"+"rspace") in expressions such as "sin x" (where the right operand doesn't start with a fence) should be greater than zero; for <mo>&InvisibleTimes;</mo>, the total spacing should be greater than zero when both operands (or the nearest tokens on either side, if on the baseline) are identifiers displayed in a non-slanted font (i.e.. under the suggested rules, when both operands are multi-character identifiers).

Some renderers may wish to use no spacing for most operators appearing in scripts (i.e. when scriptlevel is greater than 0; see Section 3.3.4 Style Change <mstyle>), as is the case in TEX.

C.4 Operator dictionary entries

Character Glyph Name form priority lspace rspace minsize Properties
&#x2A3F; ⨿ amalgamation or coproduct infix 1 4 4
&#x27E8; mathematical left angle bracket prefix 2 0 0 fence stretchy symmetric
&#x2500; box drawings light horizontal infix 4 0 0 0 stretchy
&#x2758; light vertical bar infix 7 4 4 fence stretchy symmetric
-> -> multiple character operator: -> infix 8 4 4
// // multiple character operator: // infix 8 4 4
; ; semicolon infix 10 0 3 separator
|| || multiple character operator: || infix 10 3 3
&amp;&amp; && multiple character operator: && infix 12 4 4
** ** multiple character operator: ** infix 12 1 1
&lt;= <= multiple character operator: <= infix 12 4 4
&lt;> <> multiple character operator: <> infix 12 1 1
&#x2018; left single quotation mark prefix 12 0 0 fence
&#x201C; left double quotation mark prefix 12 0 0 fence
&#x228F;&#x338; ⊏̸ square image of with slash infix 15 4 4
&#x2290;&#x338; ⊐̸ square original of with slash infix 15 4 4
&#x2242;&#x338; ≂̸ minus tilde with slash infix 16 4 4
&#x224E;&#x338; ≎̸ geometrically equivalent to with slash infix 16 4 4
&#x224F;&#x338; ≏̸ difference between with slash infix 16 4 4
&#x2266;&#x338; ≦̸ less-than over equal to with slash infix 16 4 4
&#x226A;&#x338; ≪̸ much less than with slash infix 16 4 4
&#x226B;&#x338; ≫̸ much greater than with slash infix 16 4 4
&#x227F;&#x338; ≿̸ succeeds or equivalent to with slash infix 16 4 4
&#x2282;&#x20D2; ⊂⃒ subset of with vertical line infix 16 4 4
&#x2283;&#x20D2; ⊃⃒ superset of with vertical line infix 16 4 4
&#x27E6; mathematical left white square bracket prefix 16 0 0 fence stretchy symmetric
&#x27F5; long leftwards arrow infix 16 1 1 stretchy
&#x27F6; long rightwards arrow infix 16 1 1 stretchy
&#x27F7; long left right arrow infix 16 1 1 stretchy
&#x27F8; long leftwards double arrow infix 16 1 1 stretchy
&#x27F9; long rightwards double arrow infix 16 1 1 stretchy
&#x27FA; long left right double arrow infix 16 1 1 stretchy
&#x29CF;&#x338; ⧏̸ left triangle beside vertical bar with slash infix 16 4 4
&#x29D0;&#x338; ⧐̸ vertical bar beside right triangle with slash infix 16 4 4
&#x2A7D;&#x338; ⩽̸ less-than or slanted equal to with slash infix 16 4 4
&#x2A7E;&#x338; ⩾̸ greater-than or slanted equal to with slash infix 16 4 4
&#x2AA1;&#x338; ⪡̸ double nested less-than with slash infix 16 4 4
&#x2AA2;&#x338; ⪢̸ double nested greater-than with slash infix 16 4 4
&#x2AAF;&#x338; ⪯̸ precedes above single-line equals sign with slash infix 16 4 4
&#x2AB0;&#x338; ⪰̸ succeeds above single-line equals sign with slash infix 16 4 4
>= >= multiple character operator: >= infix 17 4 4
@ @ commercial at infix 25 1 1
? ? question mark infix 28 1 1
_ _ low line infix 29 1 1
, , comma infix 30 0 3 separator
&#x2063; invisible separator infix 30 0 0 separator
&#x2234; therefore infix 70 5 5
&#x2235; because infix 70 5 5
.. .. multiple character operator: .. postfix 100 0 0
... ... multiple character operator: ... postfix 100 0 0
: : colon infix 100 1 2
&#x2026; horizontal ellipsis infix 150 0 0
&#x22EE; vertical ellipsis infix 150 5 5
&#x22EF; midline horizontal ellipsis infix 150 0 0
&#x22F1; down right diagonal ellipsis infix 150 5 5
&#x220B; contains as member infix 160 5 5
&#x22A2; right tack infix 170 5 5
&#x22A3; left tack infix 170 5 5
&#x22A4; down tack infix 170 5 5
&#x22A8; true infix 170 5 5
&#x22A9; forces infix 170 5 5
&#x22AC; does not prove infix 170 5 5
&#x22AD; not true infix 170 5 5
&#x22AE; does not force infix 170 5 5
&#x22AF; negated double vertical bar double right turnstile infix 170 5 5
&#x2228; logical or infix 190 4 4
&#x2019; right single quotation mark postfix 200 0 0 fence
&#x201D; right double quotation mark postfix 200 0 0 fence
&#x2227; logical and infix 200 4 4
&#x2200; for all prefix 230 2 1
&#x2203; there exists prefix 230 2 1
&#x2204; there does not exist prefix 230 2 1
&#x2201; complement infix 240 1 2
&#x2208; element of infix 240 5 5
&#x2209; not an element of infix 240 5 5
&#x220C; does not contain as member infix 240 5 5
&#x2282; subset of infix 240 5 5
&#x2283; superset of infix 240 5 5
&#x2284; not a subset of infix 240 5 5
&#x2285; not a superset of infix 240 5 5
&#x2286; subset of or equal to infix 240 5 5
&#x2287; superset of or equal to infix 240 5 5
&#x2288; neither a subset of nor equal to infix 240 5 5
&#x2289; neither a superset of nor equal to infix 240 5 5
&#x228A; subset of with not equal to infix 240 5 5
&#x228B; superset of with not equal to infix 240 5 5
&#x2264; less-than or equal to infix 241 5 5
&#x2265; greater-than or equal to infix 242 5 5
> > greater-than sign infix 243 5 5
&#x226F; not greater-than infix 244 5 5
&lt; < less-than sign infix 245 5 5
&#x226E; not less-than infix 246 5 5
&#x2248; almost equal to infix 247 5 5
&#x223C; tilde operator infix 250 5 5
&#x2249; not almost equal to infix 250 5 5
&#x2262; not identical to infix 252 5 5
&#x2260; not equal to infix 255 5 5
!= != multiple character operator: != infix 260 4 4
*= *= multiple character operator: *= infix 260 4 4
+= += multiple character operator: += infix 260 4 4
-= -= multiple character operator: -= infix 260 4 4
/= /= multiple character operator: /= infix 260 4 4
:= := multiple character operator: := infix 260 4 4
= = equals sign infix 260 5 5
== == multiple character operator: == infix 260 4 4
&#x221D; proportional to infix 260 5 5
&#x2224; does not divide infix 260 5 5
&#x2225; parallel to infix 260 5 5
&#x2226; not parallel to infix 260 5 5
&#x2241; not tilde infix 260 5 5
&#x2243; asymptotically equal to infix 260 5 5
&#x2244; not asymptotically equal to infix 260 5 5
&#x2245; approximately equal to infix 260 5 5
&#x2246; approximately but not actually equal to infix 260 5 5
&#x2247; neither approximately nor actually equal to infix 260 5 5
&#x224D; equivalent to infix 260 5 5
&#x2254; colon equals infix 260 5 5
&#x2257; ring equal to infix 260 5 5
&#x2259; estimates infix 260 5 5
&#x225A; equiangular to infix 260 5 5
&#x225C; delta equal to infix 260 5 5
&#x225F; questioned equal to infix 260 5 5
&#x2261; identical to infix 260 5 5
&#x2268; less-than but not equal to infix 260 5 5
&#x2269; greater-than but not equal to infix 260 5 5
&#x226A; much less-than infix 260 5 5
&#x226B; much greater-than infix 260 5 5
&#x226D; not equivalent to infix 260 5 5
&#x2270; neither less-than nor equal to infix 260 5 5
&#x2271; neither greater-than nor equal to infix 260 5 5
&#x227A; precedes infix 260 5 5
&#x227B; succeeds infix 260 5 5
&#x227C; precedes or equal to infix 260 5 5
&#x227D; succeeds or equal to infix 260 5 5
&#x2280; does not precede infix 260 5 5
&#x2281; does not succeed infix 260 5 5
&#x22A5; up tack infix 260 5 5
&#x22B4; normal subgroup of or equal to infix 260 5 5
&#x22B5; contains as normal subgroup or equal to infix 260 5 5
&#x22C9; left normal factor semidirect product infix 260 4 4
&#x22CA; right normal factor semidirect product infix 260 4 4
&#x22CB; left semidirect product infix 260 4 4
&#x22CC; right semidirect product infix 260 4 4
&#x22D4; pitchfork infix 260 5 5
&#x22D6; less-than with dot infix 260 5 5
&#x22D7; greater-than with dot infix 260 5 5
&#x22D8; very much less-than infix 260 5 5
&#x22D9; very much greater-than infix 260 5 5
&#x22EA; not normal subgroup of infix 260 5 5
&#x22EB; does not contain as normal subgroup infix 260 5 5
&#x22EC; not normal subgroup of or equal to infix 260 5 5
&#x22ED; does not contain as normal subgroup or equal infix 260 5 5
&#x25A0; black square infix 260 3 3
&#x25A1; white square infix 260 3 3
&#x25AA; black small square infix 260 3 3
&#x25AB; white small square infix 260 3 3
&#x25AD; white rectangle infix 260 3 3
&#x25AE; black vertical rectangle infix 260 3 3
&#x25AF; white vertical rectangle infix 260 3 3
&#x25B0; black parallelogram infix 260 3 3
&#x25B1; white parallelogram infix 260 3 3
&#x25B3; white up-pointing triangle infix 260 4 4
&#x25B4; black up-pointing small triangle infix 260 4 4
&#x25B5; white up-pointing small triangle infix 260 4 4
&#x25B6; black right-pointing triangle infix 260 4 4
&#x25B7; white right-pointing triangle infix 260 4 4
&#x25B8; black right-pointing small triangle infix 260 4 4
&#x25B9; white right-pointing small triangle infix 260 4 4
&#x25BC; black down-pointing triangle infix 260 4 4
&#x25BD; white down-pointing triangle infix 260 4 4
&#x25BE; black down-pointing small triangle infix 260 4 4
&#x25BF; white down-pointing small triangle infix 260 4 4
&#x25C0; black left-pointing triangle infix 260 4 4
&#x25C1; white left-pointing triangle infix 260 4 4
&#x25C2; black left-pointing small triangle infix 260 4 4
&#x25C3; white left-pointing small triangle infix 260 4 4
&#x25C4; black left-pointing pointer infix 260 4 4
&#x25C5; white left-pointing pointer infix 260 4 4
&#x25C6; black diamond infix 260 4 4
&#x25C7; white diamond infix 260 4 4
&#x25C8; white diamond containing black small diamond infix 260 4 4
&#x25C9; fisheye infix 260 4 4
&#x25CC; dotted circle infix 260 4 4
&#x25CD; circle with vertical fill infix 260 4 4
&#x25CE; bullseye infix 260 4 4
&#x25CF; black circle infix 260 4 4
&#x25D6; left half black circle infix 260 4 4
&#x25D7; right half black circle infix 260 4 4
&#x25E6; white bullet infix 260 4 4
&#x29C0; circled less-than infix 260 5 5
&#x29C1; circled greater-than infix 260 5 5
&#x29E3; equals sign and slanted parallel infix 260 5 5
&#x29E4; equals sign and slanted parallel with tilde above infix 260 5 5
&#x29E5; identical to and slanted parallel infix 260 5 5
&#x29E6; gleich stark infix 260 5 5
&#x29F3; error-barred black circle infix 260 3 3
&#x2A87; less-than and single-line not equal to infix 260 5 5
&#x2A88; greater-than and single-line not equal to infix 260 5 5
&#x2AAF; precedes above single-line equals sign infix 260 5 5
&#x2AB0; succeeds above single-line equals sign infix 260 5 5
&#x2044; fraction slash infix 265 4 4 stretchy
&#x2206; increment infix 265 3 3
&#x220A; small element of infix 265 5 5
&#x220D; small contains as member infix 265 5 5
&#x220E; end of proof infix 265 3 3
&#x2215; division slash infix 265 4 4 stretchy
&#x2217; asterisk operator infix 265 4 4
&#x2219; bullet operator infix 265 4 4
&#x221F; right angle infix 265 5 5
&#x2223; divides infix 265 5 5
&#x2236; ratio infix 265 5 5
&#x2237; proportion infix 265 5 5
&#x2238; dot minus infix 265 4 4
&#x2239; excess infix 265 5 5
&#x223A; geometric proportion infix 265 4 4
&#x223B; homothetic infix 265 5 5
&#x223D; reversed tilde infix 265 5 5
&#x223E; inverted lazy s infix 265 5 5
&#x223F; sine wave infix 265 3 3
&#x2242; minus tilde infix 265 5 5
&#x224A; almost equal or equal to infix 265 5 5
&#x224B; triple tilde infix 265 5 5
&#x224C; all equal to infix 265 5 5
&#x224E; geometrically equivalent to infix 265 5 5
&#x224F; difference between infix 265 5 5
&#x2250; approaches the limit infix 265 5 5
&#x2251; geometrically equal to infix 265 5 5
&#x2252; approximately equal to or the image of infix 265 5 5
&#x2253; image of or approximately equal to infix 265 5 5
&#x2255; equals colon infix 265 5 5
&#x2256; ring in equal to infix 265 5 5
&#x2258; corresponds to infix 265 5 5
&#x225D; equal to by definition infix 265 5 5
&#x225E; measured by infix 265 5 5
&#x2263; strictly equivalent to infix 265 5 5
&#x2266; less-than over equal to infix 265 5 5
&#x2267; greater-than over equal to infix 265 5 5
&#x226C; between infix 265 5 5
&#x2272; less-than or equivalent to infix 265 5 5
&#x2273; greater-than or equivalent to infix 265 5 5
&#x2274; neither less-than nor equivalent to infix 265 5 5
&#x2275; neither greater-than nor equivalent to infix 265 5 5
&#x2276; less-than or greater-than infix 265 5 5
&#x2277; greater-than or less-than infix 265 5 5
&#x2278; neither less-than nor greater-than infix 265 5 5
&#x2279; neither greater-than nor less-than infix 265 5 5
&#x227E; precedes or equivalent to infix 265 5 5
&#x227F; succeeds or equivalent to infix 265 5 5
&#x228C; multiset infix 265 4 4
&#x228D; multiset multiplication infix 265 4 4
&#x228E; multiset union infix 265 4 4
&#x228F; square image of infix 265 5 5
&#x2290; square original of infix 265 5 5
&#x2291; square image of or equal to infix 265 5 5
&#x2292; square original of or equal to infix 265 5 5
&#x2293; square cap infix 265 4 4
&#x2294; square cup infix 265 4 4
&#x229A; circled ring operator infix 265 4 4
&#x229B; circled asterisk operator infix 265 4 4
&#x229C; circled equals infix 265 4 4
&#x229D; circled dash infix 265 4 4
&#x22A6; assertion infix 265 5 5
&#x22A7; models infix 265 5 5
&#x22AA; triple vertical bar right turnstile infix 265 5 5
&#x22AB; double vertical bar double right turnstile infix 265 5 5
&#x22B0; precedes under relation infix 265 5 5
&#x22B1; succeeds under relation infix 265 5 5
&#x22B2; normal subgroup of infix 265 5 5
&#x22B3; contains as normal subgroup infix 265 5 5
&#x22B6; original of infix 265 5 5
&#x22B7; image of infix 265 5 5
&#x22B9; hermitian conjugate matrix infix 265 5 5
&#x22BA; intercalate infix 265 4 4
&#x22BB; xor infix 265 4 4
&#x22BC; nand infix 265 4 4
&#x22BD; nor infix 265 4 4
&#x22BE; right angle with arc infix 265 3 3
&#x22BF; right triangle infix 265 3 3
&#x22C4; diamond operator infix 265 4 4
&#x22C6; star operator infix 265 4 4
&#x22C7; division times infix 265 4 4
&#x22C8; bowtie infix 265 5 5
&#x22CD; reversed tilde equals infix 265 5 5
&#x22CE; curly logical or infix 265 4 4
&#x22CF; curly logical and infix 265 4 4
&#x22D0; double subset infix 265 5 5
&#x22D1; double superset infix 265 5 5
&#x22D2; double intersection infix 265 4 4
&#x22D3; double union infix 265 4 4
&#x22D5; equal and parallel to infix 265 5 5
&#x22DA; less-than equal to or greater-than infix 265 5 5
&#x22DB; greater-than equal to or less-than infix 265 5 5
&#x22DC; equal to or less-than infix 265 5 5
&#x22DD; equal to or greater-than infix 265 5 5
&#x22DE; equal to or precedes infix 265 5 5
&#x22DF; equal to or succeeds infix 265 5 5
&#x22E0; does not precede or equal infix 265 5 5
&#x22E1; does not succeed or equal infix 265 5 5
&#x22E2; not square image of or equal to infix 265 5 5
&#x22E3; not square original of or equal to infix 265 5 5
&#x22E4; square image of or not equal to infix 265 5 5
&#x22E5; square original of or not equal to infix 265 5 5
&#x22E6; less-than but not equivalent to infix 265 5 5
&#x22E7; greater-than but not equivalent to infix 265 5 5
&#x22E8; precedes but not equivalent to infix 265 5 5
&#x22E9; succeeds but not equivalent to infix 265 5 5
&#x22F0; up right diagonal ellipsis infix 265 5 5
&#x22F2; element of with long horizontal stroke infix 265 5 5
&#x22F3; element of with vertical bar at end of horizontal stroke infix 265 5 5
&#x22F4; small element of with vertical bar at end of horizontal stroke infix 265 5 5
&#x22F5; element of with dot above infix 265 5 5
&#x22F6; element of with overbar infix 265 5 5
&#x22F7; small element of with overbar infix 265 5 5
&#x22F8; element of with underbar infix 265 5 5
&#x22F9; element of with two horizontal strokes infix 265 5 5
&#x22FA; contains with long horizontal stroke infix 265 5 5
&#x22FB; contains with vertical bar at end of horizontal stroke infix 265 5 5
&#x22FC; small contains with vertical bar at end of horizontal stroke infix 265 5 5
&#x22FD; contains with overbar infix 265 5 5
&#x22FE; small contains with overbar infix 265 5 5
&#x22FF; z notation bag membership infix 265 5 5
&#x25B2; black up-pointing triangle infix 265 4 4
&#x2981; z notation spot infix 265 3 3
&#x2982; z notation type colon infix 265 3 3
&#x2991; left angle bracket with dot prefix 265 0 0 fence stretchy symmetric
&#x2992; right angle bracket with dot postfix 265 0 0 fence stretchy symmetric
&#x2993; left arc less-than bracket prefix 265 0 0 fence stretchy symmetric
&#x2994; right arc greater-than bracket postfix 265 0 0 fence stretchy symmetric
&#x2995; double left arc greater-than bracket prefix 265 0 0 fence stretchy symmetric
&#x2996; double right arc less-than bracket postfix 265 0 0 fence stretchy symmetric
&#x29A0; spherical angle opening left infix 265 3 3
&#x29A1; spherical angle opening up infix 265 3 3
&#x29A2; turned angle infix 265 3 3
&#x29A3; reversed angle infix 265 3 3
&#x29A4; angle with underbar infix 265 3 3
&#x29A5; reversed angle with underbar infix 265 3 3
&#x29A6; oblique angle opening up infix 265 3 3
&#x29A7; oblique angle opening down infix 265 3 3
&#x29A8; measured angle with open arm ending in arrow pointing up and right infix 265 3 3
&#x29A9; measured angle with open arm ending in arrow pointing up and left infix 265 3 3
&#x29AA; measured angle with open arm ending in arrow pointing down and right infix 265 3 3
&#x29AB; measured angle with open arm ending in arrow pointing down and left infix 265 3 3
&#x29AC; measured angle with open arm ending in arrow pointing right and up infix 265 3 3
&#x29AD; measured angle with open arm ending in arrow pointing left and up infix 265 3 3
&#x29AE; measured angle with open arm ending in arrow pointing right and down infix 265 3 3
&#x29AF; measured angle with open arm ending in arrow pointing left and down infix 265 3 3
&#x29B0; reversed empty set infix 265 3 3
&#x29B1; empty set with overbar infix 265 3 3
&#x29B2; empty set with small circle above infix 265 3 3
&#x29B3; empty set with right arrow above infix 265 3 3
&#x29B4; empty set with left arrow above infix 265 3 3
&#x29B5; circle with horizontal bar infix 265 3 3
&#x29B6; circled vertical bar infix 265 4 4
&#x29B7; circled parallel infix 265 4 4
&#x29B8; circled reverse solidus infix 265 4 4
&#x29B9; circled perpendicular infix 265 4 4
&#x29BA; circle divided by horizontal bar and top half divided by vertical bar infix 265 4 4
&#x29BB; circle with superimposed x infix 265 4 4
&#x29BC; circled anticlockwise-rotated division sign infix 265 4 4
&#x29BD; up arrow through circle infix 265 4 4
&#x29BE; circled white bullet infix 265 4 4
&#x29BF; ⦿ circled bullet infix 265 4 4
&#x29C2; circle with small circle to the right infix 265 3 3
&#x29C3; circle with two horizontal strokes to the right infix 265 3 3
&#x29C4; squared rising diagonal slash infix 265 4 4
&#x29C5; squared falling diagonal slash infix 265 4 4
&#x29C6; squared asterisk infix 265 4 4
&#x29C7; squared small circle infix 265 4 4
&#x29C8; squared square infix 265 4 4
&#x29C9; two joined squares infix 265 3 3
&#x29CA; triangle with dot above infix 265 3 3
&#x29CB; triangle with underbar infix 265 3 3
&#x29CC; s in triangle infix 265 3 3
&#x29CD; triangle with serifs at bottom infix 265 3 3
&#x29CE; right triangle above left triangle infix 265 5 5
&#x29CF; left triangle beside vertical bar infix 265 5 5
&#x29D0; vertical bar beside right triangle infix 265 5 5
&#x29D1; bowtie with left half black infix 265 5 5
&#x29D2; bowtie with right half black infix 265 5 5
&#x29D3; black bowtie infix 265 5 5
&#x29D4; times with left half black infix 265 5 5
&#x29D5; times with right half black infix 265 5 5
&#x29D6; white hourglass infix 265 4 4
&#x29D7; black hourglass infix 265 4 4
&#x29D8; left wiggly fence infix 265 3 3
&#x29D9; right wiggly fence infix 265 3 3
&#x29DA; left double wiggly fence infix 265 3 3
&#x29DB; right double wiggly fence infix 265 3 3
&#x29DC; incomplete infinity infix 265 3 3
&#x29DD; tie over infinity infix 265 3 3
&#x29DE; infinity negated with vertical bar infix 265 5 5
&#x29E0; square with contoured outline infix 265 3 3
&#x29E1; increases as infix 265 5 5
&#x29E2; shuffle product infix 265 4 4
&#x29E7; thermodynamic infix 265 3 3
&#x29E8; down-pointing triangle with left half black infix 265 3 3
&#x29E9; down-pointing triangle with right half black infix 265 3 3
&#x29EA; black diamond with down arrow infix 265 3 3
&#x29EB; black lozenge infix 265 3 3
&#x29EC; white circle with down arrow infix 265 3 3
&#x29ED; black circle with down arrow infix 265 3 3
&#x29EE; error-barred white square infix 265 3 3
&#x29F0; error-barred white diamond infix 265 3 3
&#x29F1; error-barred black diamond infix 265 3 3
&#x29F2; error-barred white circle infix 265 3 3
&#x29F5; reverse solidus operator infix 265 4 4
&#x29F6; solidus with overbar infix 265 4 4
&#x29F7; reverse solidus with horizontal stroke infix 265 4 4
&#x29F8; big solidus infix 265 3 3
&#x29F9; big reverse solidus infix 265 3 3
&#x29FA; double plus infix 265 3 3
&#x29FB; triple plus infix 265 3 3
&#x29FE; tiny infix 265 4 4
&#x29FF; ⧿ miny infix 265 4 4
&#x2A1D; join infix 265 3 3
&#x2A1E; large left triangle operator infix 265 3 3
&#x2A1F; z notation schema composition infix 265 3 3
&#x2A20; z notation schema piping infix 265 3 3
&#x2A21; z notation schema projection infix 265 3 3
&#x2A22; plus sign with small circle above infix 265 4 4
&#x2A23; plus sign with circumflex accent above infix 265 4 4
&#x2A24; plus sign with tilde above infix 265 4 4
&#x2A25; plus sign with dot below infix 265 4 4
&#x2A26; plus sign with tilde below infix 265 4 4
&#x2A27; plus sign with subscript two infix 265 4 4
&#x2A28; plus sign with black triangle infix 265 4 4
&#x2A29; minus sign with comma above infix 265 4 4
&#x2A2A; minus sign with dot below infix 265 4 4
&#x2A2B; minus sign with falling dots infix 265 4 4
&#x2A2C; minus sign with rising dots infix 265 4 4
&#x2A2D; plus sign in left half circle infix 265 4 4
&#x2A2E; plus sign in right half circle infix 265 4 4
&#x2A30; multiplication sign with dot above infix 265 4 4
&#x2A31; multiplication sign with underbar infix 265 4 4
&#x2A32; semidirect product with bottom closed infix 265 4 4
&#x2A33; smash product infix 265 4 4
&#x2A34; multiplication sign in left half circle infix 265 4 4
&#x2A35; multiplication sign in right half circle infix 265 4 4
&#x2A36; circled multiplication sign with circumflex accent infix 265 4 4
&#x2A37; multiplication sign in double circle infix 265 4 4
&#x2A38; circled division sign infix 265 4 4
&#x2A39; plus sign in triangle infix 265 4 4
&#x2A3A; minus sign in triangle infix 265 4 4
&#x2A3B; multiplication sign in triangle infix 265 4 4
&#x2A3C; interior product infix 265 4 4
&#x2A3D; righthand interior product infix 265 4 4
&#x2A3E; z notation relational composition infix 265 4 4
&#x2A40; intersection with dot infix 265 4 4
&#x2A41; union with minus sign infix 265 4 4
&#x2A42; union with overbar infix 265 4 4
&#x2A43; intersection with overbar infix 265 4 4
&#x2A44; intersection with logical and infix 265 4 4
&#x2A45; union with logical or infix 265 4 4
&#x2A46; union above intersection infix 265 4 4
&#x2A47; intersection above union infix 265 4 4
&#x2A48; union above bar above intersection infix 265 4 4
&#x2A49; intersection above bar above union infix 265 4 4
&#x2A4A; union beside and joined with union infix 265 4 4
&#x2A4B; intersection beside and joined with intersection infix 265 4 4
&#x2A4C; closed union with serifs infix 265 4 4
&#x2A4D; closed intersection with serifs infix 265 4 4
&#x2A4E; double square intersection infix 265 4 4
&#x2A4F; double square union infix 265 4 4
&#x2A50; closed union with serifs and smash product infix 265 4 4
&#x2A51; logical and with dot above infix 265 4 4
&#x2A52; logical or with dot above infix 265 4 4
&#x2A53; double logical and infix 265 4 4
&#x2A54; double logical or infix 265 4 4
&#x2A55; two intersecting logical and infix 265 4 4
&#x2A56; two intersecting logical or infix 265 4 4
&#x2A57; sloping large or infix 265 4 4
&#x2A58; sloping large and infix 265 4 4
&#x2A59; logical or overlapping logical and infix 265 5 5
&#x2A5A; logical and with middle stem infix 265 4 4
&#x2A5B; logical or with middle stem infix 265 4 4
&#x2A5C; logical and with horizontal dash infix 265 4 4
&#x2A5D; logical or with horizontal dash infix 265 4 4
&#x2A5E; logical and with double overbar infix 265 4 4
&#x2A5F; logical and with underbar infix 265 4 4
&#x2A60; logical and with double underbar infix 265 4 4
&#x2A61; small vee with underbar infix 265 4 4
&#x2A62; logical or with double overbar infix 265 4 4
&#x2A63; logical or with double underbar infix 265 4 4
&#x2A64; z notation domain antirestriction infix 265 4 4
&#x2A65; z notation range antirestriction infix 265 4 4
&#x2A66; equals sign with dot below infix 265 5 5
&#x2A67; identical with dot above infix 265 5 5
&#x2A68; triple horizontal bar with double vertical stroke infix 265 5 5
&#x2A69; triple horizontal bar with triple vertical stroke infix 265 5 5
&#x2A6A; tilde operator with dot above infix 265 5 5
&#x2A6B; tilde operator with rising dots infix 265 5 5
&#x2A6C; similar minus similar infix 265 5 5
&#x2A6D; congruent with dot above infix 265 5 5
&#x2A6E; equals with asterisk infix 265 5 5
&#x2A6F; almost equal to with circumflex accent infix 265 5 5
&#x2A70; approximately equal or equal to infix 265 5 5
&#x2A71; equals sign above plus sign infix 265 4 4
&#x2A72; plus sign above equals sign infix 265 4 4
&#x2A73; equals sign above tilde operator infix 265 5 5
&#x2A74; double colon equal infix 265 5 5
&#x2A75; two consecutive equals signs infix 265 5 5
&#x2A76; three consecutive equals signs infix 265 5 5
&#x2A77; equals sign with two dots above and two dots below infix 265 5 5
&#x2A78; equivalent with four dots above infix 265 5 5
&#x2A79; less-than with circle inside infix 265 5 5
&#x2A7A; greater-than with circle inside infix 265 5 5
&#x2A7B; less-than with question mark above infix 265 5 5
&#x2A7C; greater-than with question mark above infix 265 5 5
&#x2A7D; less-than or slanted equal to infix 265 5 5
&#x2A7E; greater-than or slanted equal to infix 265 5 5
&#x2A7F; ⩿ less-than or slanted equal to with dot inside infix 265 5 5
&#x2A80; greater-than or slanted equal to with dot inside infix 265 5 5
&#x2A81; less-than or slanted equal to with dot above infix 265 5 5
&#x2A82; greater-than or slanted equal to with dot above infix 265 5 5
&#x2A83; less-than or slanted equal to with dot above right infix 265 5 5
&#x2A84; greater-than or slanted equal to with dot above left infix 265 5 5
&#x2A85; less-than or approximate infix 265 5 5
&#x2A86; greater-than or approximate infix 265 5 5
&#x2A89; less-than and not approximate infix 265 5 5
&#x2A8A; greater-than and not approximate infix 265 5 5
&#x2A8B; less-than above double-line equal above greater-than infix 265 5 5
&#x2A8C; greater-than above double-line equal above less-than infix 265 5 5
&#x2A8D; less-than above similar or equal infix 265 5 5
&#x2A8E; greater-than above similar or equal infix 265 5 5
&#x2A8F; less-than above similar above greater-than infix 265 5 5
&#x2A90; greater-than above similar above less-than infix 265 5 5
&#x2A91; less-than above greater-than above double-line equal infix 265 5 5
&#x2A92; greater-than above less-than above double-line equal infix 265 5 5
&#x2A93; less-than above slanted equal above greater-than above slanted equal infix 265 5 5
&#x2A94; greater-than above slanted equal above less-than above slanted equal infix 265 5 5
&#x2A95; slanted equal to or less-than infix 265 5 5
&#x2A96; slanted equal to or greater-than infix 265 5 5
&#x2A97; slanted equal to or less-than with dot inside infix 265 5 5
&#x2A98; slanted equal to or greater-than with dot inside infix 265 5 5
&#x2A99; double-line equal to or less-than infix 265 5 5
&#x2A9A; double-line equal to or greater-than infix 265 5 5
&#x2A9B; double-line slanted equal to or less-than infix 265 5 5
&#x2A9C; double-line slanted equal to or greater-than infix 265 5 5
&#x2A9D; similar or less-than infix 265 5 5
&#x2A9E; similar or greater-than infix 265 5 5
&#x2A9F; similar above less-than above equals sign infix 265 5 5
&#x2AA0; similar above greater-than above equals sign infix 265 5 5
&#x2AA1; double nested less-than infix 265 5 5
&#x2AA2; double nested greater-than infix 265 5 5
&#x2AA3; double nested less-than with underbar infix 265 5 5
&#x2AA4; greater-than overlapping less-than infix 265 5 5
&#x2AA5; greater-than beside less-than infix 265 5 5
&#x2AA6; less-than closed by curve infix 265 5 5
&#x2AA7; greater-than closed by curve infix 265 5 5
&#x2AA8; less-than closed by curve above slanted equal infix 265 5 5
&#x2AA9; greater-than closed by curve above slanted equal infix 265 5 5
&#x2AAA; smaller than infix 265 5 5
&#x2AAB; larger than infix 265 5 5
&#x2AAC; smaller than or equal to infix 265 5 5
&#x2AAD; larger than or equal to infix 265 5 5
&#x2AAE; equals sign with bumpy above infix 265 5 5
&#x2AB1; precedes above single-line not equal to infix 265 5 5
&#x2AB2; succeeds above single-line not equal to infix 265 5 5
&#x2AB3; precedes above equals sign infix 265 5 5
&#x2AB4; succeeds above equals sign infix 265 5 5
&#x2AB5; precedes above not equal to infix 265 5 5
&#x2AB6; succeeds above not equal to infix 265 5 5
&#x2AB7; precedes above almost equal to infix 265 5 5
&#x2AB8; succeeds above almost equal to infix 265 5 5
&#x2AB9; precedes above not almost equal to infix 265 5 5
&#x2ABA; succeeds above not almost equal to infix 265 5 5
&#x2ABB; double precedes infix 265 5 5
&#x2ABC; double succeeds infix 265 5 5
&#x2ABD; subset with dot infix 265 5 5
&#x2ABE; superset with dot infix 265 5 5
&#x2ABF; ⪿ subset with plus sign below infix 265 5 5
&#x2AC0; superset with plus sign below infix 265 5 5
&#x2AC1; subset with multiplication sign below infix 265 5 5
&#x2AC2; superset with multiplication sign below infix 265 5 5
&#x2AC3; subset of or equal to with dot above infix 265 5 5
&#x2AC4; superset of or equal to with dot above infix 265 5 5
&#x2AC5; subset of above equals sign infix 265 5 5
&#x2AC6; superset of above equals sign infix 265 5 5
&#x2AC7; subset of above tilde operator infix 265 5 5
&#x2AC8; superset of above tilde operator infix 265 5 5
&#x2AC9; subset of above almost equal to infix 265 5 5
&#x2ACA; superset of above almost equal to infix 265 5 5
&#x2ACB; subset of above not equal to infix 265 5 5
&#x2ACC; superset of above not equal to infix 265 5 5
&#x2ACD; square left open box operator infix 265 5 5
&#x2ACE; square right open box operator infix 265 5 5
&#x2ACF; closed subset infix 265 5 5
&#x2AD0; closed superset infix 265 5 5
&#x2AD1; closed subset or equal to infix 265 5 5
&#x2AD2; closed superset or equal to infix 265 5 5
&#x2AD3; subset above superset infix 265 5 5
&#x2AD4; superset above subset infix 265 5 5
&#x2AD5; subset above subset infix 265 5 5
&#x2AD6; superset above superset infix 265 5 5
&#x2AD7; superset beside subset infix 265 5 5
&#x2AD8; superset beside and joined by dash with subset infix 265 5 5
&#x2AD9; element of opening downwards infix 265 5 5
&#x2ADA; pitchfork with tee top infix 265 5 5
&#x2ADB; transversal intersection infix 265 5 5
&#x2ADC; forking infix 265 5 5
&#x2ADD; nonforking infix 265 5 5
&#x2ADE; short left tack infix 265 5 5
&#x2ADF; short down tack infix 265 5 5
&#x2AE0; short up tack infix 265 5 5
&#x2AE1; perpendicular with s infix 265 5 5
&#x2AE2; vertical bar triple right turnstile infix 265 5 5
&#x2AE3; double vertical bar left turnstile infix 265 5 5
&#x2AE4; vertical bar double left turnstile infix 265 5 5
&#x2AE5; double vertical bar double left turnstile infix 265 5 5
&#x2AE6; long dash from left member of double vertical infix 265 5 5
&#x2AE7; short down tack with overbar infix 265 5 5
&#x2AE8; short up tack with underbar infix 265 5 5
&#x2AE9; short up tack above short down tack infix 265 5 5
&#x2AEA; double down tack infix 265 5 5
&#x2AEB; double up tack infix 265 5 5
&#x2AEC; double stroke not sign infix 265 5 5
&#x2AED; reversed double stroke not sign infix 265 5 5
&#x2AEE; does not divide with reversed negation slash infix 265 5 5
&#x2AEF; vertical line with circle above infix 265 5 5
&#x2AF0; vertical line with circle below infix 265 5 5
&#x2AF1; down tack with circle below infix 265 5 5
&#x2AF2; parallel with horizontal stroke infix 265 5 5
&#x2AF3; parallel with tilde operator infix 265 5 5
&#x2AF4; triple vertical bar binary relation infix 265 4 4
&#x2AF5; triple vertical bar with horizontal stroke infix 265 4 4
&#x2AF6; triple colon operator infix 265 4 4
&#x2AF7; triple nested less-than infix 265 5 5
&#x2AF8; triple nested greater-than infix 265 5 5
&#x2AF9; double-line slanted less-than or equal to infix 265 5 5
&#x2AFA; double-line slanted greater-than or equal to infix 265 5 5
&#x2AFB; triple solidus binary relation infix 265 4 4
&#x2AFD; double solidus operator infix 265 4 4
&#x2AFE; white vertical bar infix 265 3 3
( ( left parenthesis prefix 270 0 0 fence stretchy symmetric
) ) right parenthesis postfix 270 0 0 fence stretchy symmetric
[ [ left square bracket prefix 270 0 0 fence stretchy symmetric
] ] right square bracket postfix 270 0 0 fence stretchy symmetric
{ { left curly bracket prefix 270 0 0 fence stretchy symmetric
| | vertical line infix 270 2 2 fence stretchy symmetric
} } right curly bracket postfix 270 0 0 fence stretchy symmetric
&#x2192; rightwards arrow infix 270 5 5 stretchy accent
&#x2194; left right arrow infix 270 5 5 stretchy accent
&#x2196; north west arrow infix 270 5 5 stretchy
&#x2199; south west arrow infix 270 5 5 stretchy
&#x219A; leftwards arrow with stroke infix 270 5 5
&#x219B; rightwards arrow with stroke infix 270 5 5
&#x219C; leftwards wave arrow infix 270 5 5
&#x219D; rightwards wave arrow infix 270 5 5
&#x219E; leftwards two headed arrow infix 270 5 5
&#x219F; upwards two headed arrow infix 270 5 5
&#x21A0; rightwards two headed arrow infix 270 5 5
&#x21A1; downwards two headed arrow infix 270 5 5
&#x21A2; leftwards arrow with tail infix 270 5 5
&#x21A3; rightwards arrow with tail infix 270 5 5
&#x21A4; leftwards arrow from bar infix 270 5 5 stretchy
&#x21A5; upwards arrow from bar infix 270 5 5 stretchy
&#x21A6; rightwards arrow from bar infix 270 5 5 stretchy
&#x21A7; downwards arrow from bar infix 270 5 5 stretchy
&#x21A8; up down arrow with base infix 270 5 5
&#x21A9; leftwards arrow with hook infix 270 5 5
&#x21AA; rightwards arrow with hook infix 270 5 5
&#x21AB; leftwards arrow with loop infix 270 5 5
&#x21AC; rightwards arrow with loop infix 270 5 5
&#x21AD; left right wave arrow infix 270 5 5
&#x21AE; left right arrow with stroke infix 270 5 5
&#x21AF; downwards zigzag arrow infix 270 5 5
&#x21B0; upwards arrow with tip leftwards infix 270 5 5
&#x21B1; upwards arrow with tip rightwards infix 270 5 5
&#x21B2; downwards arrow with tip leftwards infix 270 5 5
&#x21B3; downwards arrow with tip rightwards infix 270 5 5
&#x21B4; rightwards arrow with corner downwards infix 270 5 5
&#x21B5; downwards arrow with corner leftwards infix 270 5 5
&#x21B6; anticlockwise top semicircle arrow infix 270 5 5
&#x21B7; clockwise top semicircle arrow infix 270 5 5
&#x21B8; north west arrow to long bar infix 270 5 5
&#x21B9; leftwards arrow to bar over rightwards arrow to bar infix 270 5 5
&#x21BA; anticlockwise open circle arrow infix 270 5 5
&#x21BB; clockwise open circle arrow infix 270 5 5
&#x21BC; leftwards harpoon with barb upwards infix 270 5 5 stretchy accent
&#x21BD; leftwards harpoon with barb downwards infix 270 5 5 stretchy
&#x21BE; upwards harpoon with barb rightwards infix 270 5 5 stretchy
&#x21BF; upwards harpoon with barb leftwards infix 270 5 5 stretchy
&#x21C0; rightwards harpoon with barb upwards infix 270 5 5 stretchy accent
&#x21C1; rightwards harpoon with barb downwards infix 270 5 5 stretchy
&#x21C2; downwards harpoon with barb rightwards infix 270 5 5 stretchy
&#x21C3; downwards harpoon with barb leftwards infix 270 5 5 stretchy
&#x21C4; rightwards arrow over leftwards arrow infix 270 5 5 stretchy
&#x21C5; upwards arrow leftwards of downwards arrow infix 270 5 5 stretchy
&#x21C6; leftwards arrow over rightwards arrow infix 270 5 5 stretchy
&#x21C7; leftwards paired arrows infix 270 5 5
&#x21C8; upwards paired arrows infix 270 5 5
&#x21C9; rightwards paired arrows infix 270 5 5
&#x21CA; downwards paired arrows infix 270 5 5
&#x21CB; leftwards harpoon over rightwards harpoon infix 270 5 5 stretchy
&#x21CC; rightwards harpoon over leftwards harpoon infix 270 5 5 stretchy
&#x21CD; leftwards double arrow with stroke infix 270 5 5
&#x21CE; left right double arrow with stroke infix 270 5 5
&#x21CF; rightwards double arrow with stroke infix 270 5 5
&#x21D0; leftwards double arrow infix 270 5 5 stretchy
&#x21D2; rightwards double arrow infix 270 5 5 stretchy
&#x21D4; left right double arrow infix 270 5 5 stretchy
&#x21D6; north west double arrow infix 270 5 5
&#x21D7; north east double arrow infix 270 5 5
&#x21D8; south east double arrow infix 270 5 5
&#x21D9; south west double arrow infix 270 5 5
&#x21DA; leftwards triple arrow infix 270 5 5
&#x21DB; rightwards triple arrow infix 270 5 5
&#x21DC; leftwards squiggle arrow infix 270 5 5
&#x21DD; rightwards squiggle arrow infix 270 5 5
&#x21DE; upwards arrow with double stroke infix 270 5 5
&#x21DF; downwards arrow with double stroke infix 270 5 5
&#x21E0; leftwards dashed arrow infix 270 5 5
&#x21E1; upwards dashed arrow infix 270 5 5
&#x21E2; rightwards dashed arrow infix 270 5 5
&#x21E3; downwards dashed arrow infix 270 5 5
&#x21E4; leftwards arrow to bar infix 270 5 5 stretchy
&#x21E5; rightwards arrow to bar infix 270 5 5 stretchy
&#x21E6; leftwards white arrow infix 270 5 5
&#x21E7; upwards white arrow infix 270 5 5
&#x21E8; rightwards white arrow infix 270 5 5
&#x21E9; downwards white arrow infix 270 5 5
&#x21EA; upwards white arrow from bar infix 270 5 5
&#x21EB; upwards white arrow on pedestal infix 270 5 5
&#x21EC; upwards white arrow on pedestal with horizontal bar infix 270 5 5
&#x21ED; upwards white arrow on pedestal with vertical bar infix 270 5 5
&#x21EE; upwards white double arrow infix 270 5 5
&#x21EF; upwards white double arrow on pedestal infix 270 5 5
&#x21F0; rightwards white arrow from wall infix 270 5 5
&#x21F1; north west arrow to corner infix 270 5 5
&#x21F2; south east arrow to corner infix 270 5 5
&#x21F3; up down white arrow infix 270 5 5
&#x21F4; right arrow with small circle infix 270 5 5
&#x21F5; downwards arrow leftwards of upwards arrow infix 270 5 5 stretchy
&#x21F6; three rightwards arrows infix 270 5 5
&#x21F7; leftwards arrow with vertical stroke infix 270 5 5
&#x21F8; rightwards arrow with vertical stroke infix 270 5 5
&#x21F9; left right arrow with vertical stroke infix 270 5 5
&#x21FA; leftwards arrow with double vertical stroke infix 270 5 5
&#x21FB; rightwards arrow with double vertical stroke infix 270 5 5
&#x21FC; left right arrow with double vertical stroke infix 270 5 5
&#x21FD; leftwards open-headed arrow infix 270 5 5
&#x21FE; rightwards open-headed arrow infix 270 5 5
&#x21FF; left right open-headed arrow infix 270 5 5
&#x22B8; multimap infix 270 5 5
&#x2308; left ceiling prefix 270 0 0 fence stretchy symmetric
&#x2309; right ceiling postfix 270 0 0 fence stretchy symmetric
&#x230A; left floor prefix 270 0 0 fence stretchy symmetric
&#x230B; right floor postfix 270 0 0 fence stretchy symmetric
&#x27E7; mathematical right white square bracket postfix 270 0 0 fence stretchy symmetric
&#x27E9; mathematical right angle bracket postfix 270 0 0 fence stretchy symmetric
&#x2900; rightwards two-headed arrow with vertical stroke infix 270 5 5
&#x2901; rightwards two-headed arrow with double vertical stroke infix 270 5 5
&#x2902; leftwards double arrow with vertical stroke infix 270 5 5
&#x2903; rightwards double arrow with vertical stroke infix 270 5 5
&#x2904; left right double arrow with vertical stroke infix 270 5 5
&#x2905; rightwards two-headed arrow from bar infix 270 5 5
&#x2906; leftwards double arrow from bar infix 270 5 5
&#x2907; rightwards double arrow from bar infix 270 5 5
&#x2908; downwards arrow with horizontal stroke infix 270 5 5
&#x2909; upwards arrow with horizontal stroke infix 270 5 5
&#x290A; upwards triple arrow infix 270 5 5
&#x290B; downwards triple arrow infix 270 5 5
&#x290C; leftwards double dash arrow infix 270 5 5
&#x290D; rightwards double dash arrow infix 270 5 5
&#x290E; leftwards triple dash arrow infix 270 5 5
&#x290F; rightwards triple dash arrow infix 270 5 5
&#x2910; rightwards two-headed triple dash arrow infix 270 5 5
&#x2911; rightwards arrow with dotted stem infix 270 5 5
&#x2912; upwards arrow to bar infix 270 5 5 stretchy
&#x2913; downwards arrow to bar infix 270 5 5 stretchy
&#x2914; rightwards arrow with tail with vertical stroke infix 270 5 5
&#x2915; rightwards arrow with tail with double vertical stroke infix 270 5 5
&#x2916; rightwards two-headed arrow with tail infix 270 5 5
&#x2917; rightwards two-headed arrow with tail with vertical stroke infix 270 5 5
&#x2918; rightwards two-headed arrow with tail with double vertical stroke infix 270 5 5
&#x2919; leftwards arrow-tail infix 270 5 5
&#x291A; rightwards arrow-tail infix 270 5 5
&#x291B; leftwards double arrow-tail infix 270 5 5
&#x291C; rightwards double arrow-tail infix 270 5 5
&#x291D; leftwards arrow to black diamond infix 270 5 5
&#x291E; rightwards arrow to black diamond infix 270 5 5
&#x291F; leftwards arrow from bar to black diamond infix 270 5 5
&#x2920; rightwards arrow from bar to black diamond infix 270 5 5
&#x2921; north west and south east arrow infix 270 5 5
&#x2922; north east and south west arrow infix 270 5 5
&#x2923; north west arrow with hook infix 270 5 5
&#x2924; north east arrow with hook infix 270 5 5
&#x2925; south east arrow with hook infix 270 5 5
&#x2926; south west arrow with hook infix 270 5 5
&#x2927; north west arrow and north east arrow infix 270 5 5
&#x2928; north east arrow and south east arrow infix 270 5 5
&#x2929; south east arrow and south west arrow infix 270 5 5
&#x292A; south west arrow and north west arrow infix 270 5 5
&#x292B; rising diagonal crossing falling diagonal infix 270 5 5
&#x292C; falling diagonal crossing rising diagonal infix 270 5 5
&#x292D; south east arrow crossing north east arrow infix 270 5 5
&#x292E; north east arrow crossing south east arrow infix 270 5 5
&#x292F; falling diagonal crossing north east arrow infix 270 5 5
&#x2930; rising diagonal crossing south east arrow infix 270 5 5
&#x2931; north east arrow crossing north west arrow infix 270 5 5
&#x2932; north west arrow crossing north east arrow infix 270 5 5
&#x2933; wave arrow pointing directly right infix 270 5 5
&#x2934; arrow pointing rightwards then curving upwards infix 270 5 5
&#x2935; arrow pointing rightwards then curving downwards infix 270 5 5
&#x2936; arrow pointing downwards then curving leftwards infix 270 5 5
&#x2937; arrow pointing downwards then curving rightwards infix 270 5 5
&#x2938; right-side arc clockwise arrow infix 270 5 5
&#x2939; left-side arc anticlockwise arrow infix 270 5 5
&#x293A; top arc anticlockwise arrow infix 270 5 5
&#x293B; bottom arc anticlockwise arrow infix 270 5 5
&#x293C; top arc clockwise arrow with minus infix 270 5 5
&#x293D; top arc anticlockwise arrow with plus infix 270 5 5
&#x293E; lower right semicircular clockwise arrow infix 270 5 5
&#x293F; ⤿ lower left semicircular anticlockwise arrow infix 270 5 5
&#x2940; anticlockwise closed circle arrow infix 270 5 5
&#x2941; clockwise closed circle arrow infix 270 5 5
&#x2942; rightwards arrow above short leftwards arrow infix 270 5 5
&#x2943; leftwards arrow above short rightwards arrow infix 270 5 5
&#x2944; short rightwards arrow above leftwards arrow infix 270 5 5
&#x2945; rightwards arrow with plus below infix 270 5 5
&#x2946; leftwards arrow with plus below infix 270 5 5
&#x2947; rightwards arrow through x infix 270 5 5
&#x2948; left right arrow through small circle infix 270 5 5
&#x2949; upwards two-headed arrow from small circle infix 270 5 5
&#x294A; left barb up right barb down harpoon infix 270 5 5
&#x294B; left barb down right barb up harpoon infix 270 5 5
&#x294C; up barb right down barb left harpoon infix 270 5 5
&#x294D; up barb left down barb right harpoon infix 270 5 5
&#x294E; left barb up right barb up harpoon infix 270 5 5 stretchy accent
&#x294F; up barb right down barb right harpoon infix 270 5 5 stretchy
&#x2950; left barb down right barb down harpoon infix 270 5 5 stretchy
&#x2951; up barb left down barb left harpoon infix 270 5 5 stretchy
&#x2952; leftwards harpoon with barb up to bar infix 270 5 5 stretchy
&#x2953; rightwards harpoon with barb up to bar infix 270 5 5 stretchy
&#x2954; upwards harpoon with barb right to bar infix 270 5 5 stretchy
&#x2955; downwards harpoon with barb right to bar infix 270 5 5 stretchy
&#x2956; leftwards harpoon with barb down to bar infix 270 5 5 stretchy
&#x2957; rightwards harpoon with barb down to bar infix 270 5 5 stretchy
&#x2958; upwards harpoon with barb left to bar infix 270 5 5 stretchy
&#x2959; downwards harpoon with barb left to bar infix 270 5 5 stretchy
&#x295A; leftwards harpoon with barb up from bar infix 270 5 5 stretchy
&#x295B; rightwards harpoon with barb up from bar infix 270 5 5 stretchy
&#x295C; upwards harpoon with barb right from bar infix 270 5 5 stretchy
&#x295D; downwards harpoon with barb right from bar infix 270 5 5 stretchy
&#x295E; leftwards harpoon with barb down from bar infix 270 5 5 stretchy
&#x295F; rightwards harpoon with barb down from bar infix 270 5 5 stretchy
&#x2960; upwards harpoon with barb left from bar infix 270 5 5 stretchy
&#x2961; downwards harpoon with barb left from bar infix 270 5 5 stretchy
&#x2962; leftwards harpoon with barb up above leftwards harpoon with barb down infix 270 5 5
&#x2963; upwards harpoon with barb left beside upwards harpoon with barb right infix 270 5 5
&#x2964; rightwards harpoon with barb up above rightwards harpoon with barb down infix 270 5 5
&#x2965; downwards harpoon with barb left beside downwards harpoon with barb right infix 270 5 5
&#x2966; leftwards harpoon with barb up above rightwards harpoon with barb up infix 270 5 5
&#x2967; leftwards harpoon with barb down above rightwards harpoon with barb down infix 270 5 5
&#x2968; rightwards harpoon with barb up above leftwards harpoon with barb up infix 270 5 5
&#x2969; rightwards harpoon with barb down above leftwards harpoon with barb down infix 270 5 5
&#x296A; leftwards harpoon with barb up above long dash infix 270 5 5
&#x296B; leftwards harpoon with barb down below long dash infix 270 5 5
&#x296C; rightwards harpoon with barb up above long dash infix 270 5 5
&#x296D; rightwards harpoon with barb down below long dash infix 270 5 5
&#x296E; upwards harpoon with barb left beside downwards harpoon with barb right infix 270 5 5 stretchy
&#x296F; downwards harpoon with barb left beside upwards harpoon with barb right infix 270 5 5 stretchy
&#x2970; right double arrow with rounded head infix 270 5 5
&#x2971; equals sign above rightwards arrow infix 270 5 5
&#x2972; tilde operator above rightwards arrow infix 270 5 5
&#x2973; leftwards arrow above tilde operator infix 270 5 5
&#x2974; rightwards arrow above tilde operator infix 270 5 5
&#x2975; rightwards arrow above almost equal to infix 270 5 5
&#x2976; less-than above leftwards arrow infix 270 5 5
&#x2977; leftwards arrow through less-than infix 270 5 5
&#x2978; greater-than above rightwards arrow infix 270 5 5
&#x2979; subset above rightwards arrow infix 270 5 5
&#x297A; leftwards arrow through subset infix 270 5 5
&#x297B; superset above leftwards arrow infix 270 5 5
&#x297C; left fish tail infix 270 5 5
&#x297D; right fish tail infix 270 5 5
&#x297E; up fish tail infix 270 5 5
&#x297F; ⥿ down fish tail infix 270 5 5
&#x2980; triple vertical bar delimiter infix 270 0 0
&#x2983; left white curly bracket prefix 270 0 0 fence stretchy symmetric
&#x2984; right white curly bracket postfix 270 0 0 fence stretchy symmetric
&#x2985; left white parenthesis prefix 270 0 0 fence stretchy symmetric
&#x2986; right white parenthesis postfix 270 0 0 fence stretchy symmetric
&#x2987; z notation left image bracket prefix 270 0 0 fence stretchy symmetric
&#x2988; z notation right image bracket postfix 270 0 0 fence stretchy symmetric
&#x2989; z notation left binding bracket prefix 270 0 0 fence stretchy symmetric
&#x298A; z notation right binding bracket postfix 270 0 0 fence stretchy symmetric
&#x298B; left square bracket with underbar prefix 270 0 0 fence stretchy symmetric
&#x298C; right square bracket with underbar postfix 270 0 0 fence stretchy symmetric
&#x298D; left square bracket with tick in top corner prefix 270 0 0 fence stretchy symmetric
&#x298E; right square bracket with tick in bottom corner postfix 270 0 0 fence stretchy symmetric
&#x298F; left square bracket with tick in bottom corner prefix 270 0 0 fence stretchy symmetric
&#x2990; right square bracket with tick in top corner postfix 270 0 0 fence stretchy symmetric
&#x2997; left black tortoise shell bracket prefix 270 0 0 fence stretchy symmetric
&#x2998; right black tortoise shell bracket postfix 270 0 0 fence stretchy symmetric
&#x2999; dotted fence infix 270 3 3
&#x299A; vertical zigzag line infix 270 3 3
&#x299B; measured angle opening left infix 270 3 3
&#x299C; right angle variant with square infix 270 3 3
&#x299D; measured right angle with dot infix 270 3 3
&#x299E; angle with s inside infix 270 3 3
&#x299F; acute angle infix 270 3 3
&#x29DF; double-ended multimap infix 270 3 3
&#x29EF; error-barred black square infix 270 3 3
&#x29F4; rule-delayed infix 270 5 5
&#x29FC; left-pointing curved angle bracket prefix 270 0 0 fence stretchy symmetric
&#x29FD; right-pointing curved angle bracket postfix 270 0 0 fence stretchy symmetric
&#x2190; leftwards arrow infix 271 5 5 stretchy accent
&#x2197; north east arrow infix 271 5 5 stretchy
&#x2198; south east arrow infix 271 5 5 stretchy
+ + plus sign infix 275 4 4
- - hyphen-minus infix 275 4 4
&#xB1; ± plus-minus sign infix 275 4 4
&#x2212; minus sign infix 275 4 4
&#x2213; minus-or-plus sign infix 275 4 4
&#x2214; dot plus infix 275 4 4
&#x229E; squared plus infix 275 4 4
&#x229F; squared minus infix 275 4 4
&#x2211; n-ary summation prefix 290 1 2 largeop movablelimits symmetric
&#x2A0A; modulo two sum prefix 290 1 2 largeop movablelimits symmetric
&#x2A0B; summation with integral prefix 290 1 2 largeop movablelimits symmetric
&#x222C; double integral prefix 300 0 1 largeop symmetric
&#x222D; triple integral prefix 300 0 1 largeop symmetric
&#x2295; circled plus infix 300 4 4
&#x2296; circled minus infix 300 4 4
&#x2298; circled division slash infix 300 4 4
&#x2A01; n-ary circled plus operator prefix 300 1 2 largeop movablelimits symmetric
&#x222B; integral prefix 310 0 1 largeop symmetric
&#x222E; contour integral prefix 310 0 1 largeop movablelimits symmetric
&#x222F; surface integral prefix 310 0 1 largeop movablelimits symmetric
&#x2230; volume integral prefix 310 0 1 largeop movablelimits symmetric
&#x2231; clockwise integral prefix 310 0 1 largeop movablelimits symmetric
&#x2232; clockwise contour integral prefix 310 0 1 largeop movablelimits symmetric
&#x2233; anticlockwise contour integral prefix 310 0 1 largeop movablelimits symmetric
&#x2A0C; quadruple integral operator prefix 310 0 1 largeop movablelimits symmetric
&#x2A0D; finite part integral prefix 310 1 2 largeop movablelimits symmetric
&#x2A0E; integral with double stroke prefix 310 1 2 largeop movablelimits symmetric
&#x2A0F; integral average with slash prefix 310 1 2 largeop movablelimits symmetric
&#x2A10; circulation function prefix 310 1 2 largeop movablelimits symmetric
&#x2A11; anticlockwise integration prefix 310 1 2 largeop movablelimits symmetric
&#x2A12; line integration with rectangular path around pole prefix 310 1 2 largeop movablelimits symmetric
&#x2A13; line integration with semicircular path around pole prefix 310 1 2 largeop movablelimits symmetric
&#x2A14; line integration not including the pole prefix 310 1 2 largeop movablelimits symmetric
&#x2A15; integral around a point operator prefix 310 1 2 largeop movablelimits symmetric
&#x2A16; quaternion integral operator prefix 310 1 2 largeop movablelimits symmetric
&#x2A17; integral with leftwards arrow with hook prefix 310 1 2 largeop movablelimits symmetric
&#x2A18; integral with times sign prefix 310 1 2 largeop movablelimits symmetric
&#x2A19; integral with intersection prefix 310 1 2 largeop movablelimits symmetric
&#x2A1A; integral with union prefix 310 1 2 largeop movablelimits symmetric
&#x2A1B; integral with overbar prefix 310 1 2 largeop movablelimits symmetric
&#x2A1C; integral with underbar prefix 310 1 2 largeop movablelimits symmetric
&#x22C3; n-ary union prefix 320 1 2 largeop movablelimits symmetric
&#x2A03; n-ary union operator with dot prefix 320 1 2 largeop movablelimits symmetric
&#x2A04; n-ary union operator with plus prefix 320 1 2 largeop movablelimits symmetric
&#x22C2; n-ary intersection prefix 330 1 2 largeop movablelimits symmetric
&#x2A05; n-ary square intersection operator prefix 330 1 2 largeop movablelimits symmetric
&#x2A06; n-ary square union operator prefix 330 1 2 largeop movablelimits symmetric
&#x2AFC; large triple vertical bar operator prefix 330 1 2 largeop movablelimits symmetric
&#x2AFF; ⫿ n-ary white vertical bar prefix 330 1 2 largeop movablelimits symmetric
&#x2240; wreath product infix 340 4 4
&#x220F; n-ary product prefix 350 1 2 largeop movablelimits symmetric
&#x2210; n-ary coproduct prefix 350 1 2 largeop movablelimits symmetric
&#x2229; intersection infix 350 4 4
&#x222A; union infix 350 4 4
* * asterisk infix 390 3 3
. . full stop infix 390 3 3
&#xD7; × multiplication sign infix 390 4 4
&#x2022; bullet infix 390 4 4
&#x2062; invisible times infix 390 0 0
&#x22A0; squared times infix 390 4 4
&#x22A1; squared dot operator infix 390 4 4
&#x2A2F; vector or cross product infix 390 4 4
&#xB7; · middle dot infix 400 4 4
&#x22C5; dot operator infix 400 4 4
&#x2297; circled times infix 410 4 4
&#x2A02; n-ary circled times operator prefix 410 1 2 largeop movablelimits symmetric
&#x2A09; n-ary times operator prefix 410 1 2 largeop movablelimits symmetric
&#x22C1; n-ary logical or prefix 420 1 2 largeop movablelimits symmetric
&#x2A08; two logical or operator prefix 420 1 2 largeop movablelimits symmetric
&#x22C0; n-ary logical and prefix 430 1 2 largeop movablelimits symmetric
&#x2A07; two logical and operator prefix 430 1 2 largeop movablelimits symmetric
% % percent sign infix 440 3 3
\ \ reverse solidus infix 450 0 0
&#x2216; set minus infix 450 4 4
/ / solidus infix 460 1 1
&#xF7; ÷ division sign infix 460 4 4
&#x2220; angle prefix 470 0 0
&#x2221; measured angle prefix 470 0 0
&#x2222; spherical angle prefix 470 0 0
&#xAC; ¬ not sign prefix 480 2 1
&#x2299; circled dot operator infix 510 4 4
&#x2A00; n-ary circled dot operator prefix 510 1 2 largeop movablelimits symmetric
&#x2202; partial differential prefix 540 2 1
&#x2207; nabla prefix 540 2 1
&#x2191; upwards arrow infix 570 5 5 stretchy
&#x2193; downwards arrow infix 570 5 5 stretchy
&#x2195; up down arrow infix 570 5 5 stretchy
&#x21D1; upwards double arrow infix 570 5 5 stretchy
&#x21D3; downwards double arrow infix 570 5 5 stretchy
&#x21D5; up down double arrow infix 570 5 5 stretchy
&#x2032; prime postfix 600 0 2
&#x266D; music flat sign postfix 600 0 2
&#x266E; music natural sign postfix 600 0 2
&#x266F; music sharp sign postfix 600 0 2
! ! exclamation mark postfix 610 1 0
!! !! multiple character operator: !! postfix 610 1 0
min min multiple character operator: "min" prefix 645 1 3
&#x3C3; σ greek small letter sigma prefix 645 1 1
&#x2111; black-letter capital i prefix 645 1 1
&#x2113; script small l prefix 645 1 1
&#x211C; black-letter capital r prefix 645 1 1
&#x2145; double-struck italic capital d prefix 645 2 1
&#x2146; double-struck italic small d prefix 645 2 0
&#x2147; double-struck italic small e prefix 645 0 0
&#x2148; double-struck italic small i prefix 645 0 0
&#x2149; double-struck italic small j prefix 645 0 0
&#x221A; square root prefix 645 1 1 stretchy
&#x221B; cube root prefix 645 1 1
&#x221C; fourth root prefix 645 1 1
&#x2061; function application infix 650 0 0
&amp; & ampersand postfix 680 0 0
' ' apostrophe postfix 680 0 0 accent
++ ++ multiple character operator: ++ postfix 680 0 0
-- -- multiple character operator: -- postfix 680 0 0
^ ^ circumflex accent postfix 680 0 0 stretchy accent
` ` grave accent postfix 680 0 0 accent
~ ~ tilde postfix 680 0 0 stretchy accent
&#xA8; ¨ diaeresis postfix 680 0 0 accent
&#xAF; ¯ macron postfix 680 0 0 stretchy accent
&#xB0; ° degree sign postfix 680 0 0
&#xB4; ´ acute accent postfix 680 0 0 accent
&#xB8; ¸ cedilla postfix 680 0 0 accent
&#x2C6; ˆ modifier letter circumflex accent postfix 680 0 0 stretchy accent
&#x2C7; ˇ caron postfix 680 0 0 stretchy accent
&#x2D8; ˘ breve postfix 680 0 0 accent
&#x2D9; ˙ dot above postfix 680 0 0 accent
&#x2DA; ˚ ring above postfix 680 0 0 accent
&#x2DC; ˜ small tilde postfix 680 0 0 stretchy accent
&#x2DD; ˝ double acute accent postfix 680 0 0 accent
&#x302; ̂ combining circumflex accent postfix 680 0 0 accent
&#x311; ̑ combining inverted breve postfix 680 0 0 accent
&#x332; ̲ combining low line postfix 680 0 0 stretchy accent
&#x2064; invisible plus infix 680 0 0
&#x20DB; combining three dots above postfix 680 0 0 accent
&#x23B4; top square bracket postfix 680 0 0 stretchy accent
&#x23B5; bottom square bracket postfix 680 0 0 stretchy accent
&#x23DC; top parenthesis postfix 680 0 0 stretchy accent
&#x23DD; bottom parenthesis postfix 680 0 0 stretchy accent
&#x23DE; top curly bracket postfix 680 0 0 stretchy accent
&#x23DF; bottom curly bracket postfix 680 0 0 stretchy accent
&#x2713; check mark infix 680 0 0 stretchy accent
&#x2218; ring operator infix 700 4 4
jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/UnicodeData.txt0000644000175000017500000375441711335260530033102 0ustar sylvestresylvestre0000;;Cc;0;BN;;;;;N;NULL;;;; 0001;;Cc;0;BN;;;;;N;START OF HEADING;;;; 0002;;Cc;0;BN;;;;;N;START OF TEXT;;;; 0003;;Cc;0;BN;;;;;N;END OF TEXT;;;; 0004;;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;; 0005;;Cc;0;BN;;;;;N;ENQUIRY;;;; 0006;;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;; 0007;;Cc;0;BN;;;;;N;BELL;;;; 0008;;Cc;0;BN;;;;;N;BACKSPACE;;;; 0009;;Cc;0;S;;;;;N;CHARACTER TABULATION;;;; 000A;;Cc;0;B;;;;;N;LINE FEED (LF);;;; 000B;;Cc;0;S;;;;;N;LINE TABULATION;;;; 000C;;Cc;0;WS;;;;;N;FORM FEED (FF);;;; 000D;;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;; 000E;;Cc;0;BN;;;;;N;SHIFT OUT;;;; 000F;;Cc;0;BN;;;;;N;SHIFT IN;;;; 0010;;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;; 0011;;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;; 0012;;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;; 0013;;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;; 0014;;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;; 0015;;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;; 0016;;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;; 0017;;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;; 0018;;Cc;0;BN;;;;;N;CANCEL;;;; 0019;;Cc;0;BN;;;;;N;END OF MEDIUM;;;; 001A;;Cc;0;BN;;;;;N;SUBSTITUTE;;;; 001B;;Cc;0;BN;;;;;N;ESCAPE;;;; 001C;;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;; 001D;;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;; 001E;;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;; 001F;;Cc;0;S;;;;;N;INFORMATION SEPARATOR ONE;;;; 0020;SPACE;Zs;0;WS;;;;;N;;;;; 0021;EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; 0022;QUOTATION MARK;Po;0;ON;;;;;N;;;;; 0023;NUMBER SIGN;Po;0;ET;;;;;N;;;;; 0024;DOLLAR SIGN;Sc;0;ET;;;;;N;;;;; 0025;PERCENT SIGN;Po;0;ET;;;;;N;;;;; 0026;AMPERSAND;Po;0;ON;;;;;N;;;;; 0027;APOSTROPHE;Po;0;ON;;;;;N;APOSTROPHE-QUOTE;;;; 0028;LEFT PARENTHESIS;Ps;0;ON;;;;;Y;OPENING PARENTHESIS;;;; 0029;RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;CLOSING PARENTHESIS;;;; 002A;ASTERISK;Po;0;ON;;;;;N;;;;; 002B;PLUS SIGN;Sm;0;ES;;;;;N;;;;; 002C;COMMA;Po;0;CS;;;;;N;;;;; 002D;HYPHEN-MINUS;Pd;0;ES;;;;;N;;;;; 002E;FULL STOP;Po;0;CS;;;;;N;PERIOD;;;; 002F;SOLIDUS;Po;0;CS;;;;;N;SLASH;;;; 0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;; 0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;; 0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;; 0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;; 0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;; 0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;; 0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;; 0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;; 0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;; 0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;; 003A;COLON;Po;0;CS;;;;;N;;;;; 003B;SEMICOLON;Po;0;ON;;;;;N;;;;; 003C;LESS-THAN SIGN;Sm;0;ON;;;;;Y;;;;; 003D;EQUALS SIGN;Sm;0;ON;;;;;N;;;;; 003E;GREATER-THAN SIGN;Sm;0;ON;;;;;Y;;;;; 003F;QUESTION MARK;Po;0;ON;;;;;N;;;;; 0040;COMMERCIAL AT;Po;0;ON;;;;;N;;;;; 0041;LATIN CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0061; 0042;LATIN CAPITAL LETTER B;Lu;0;L;;;;;N;;;;0062; 0043;LATIN CAPITAL LETTER C;Lu;0;L;;;;;N;;;;0063; 0044;LATIN CAPITAL LETTER D;Lu;0;L;;;;;N;;;;0064; 0045;LATIN CAPITAL LETTER E;Lu;0;L;;;;;N;;;;0065; 0046;LATIN CAPITAL LETTER F;Lu;0;L;;;;;N;;;;0066; 0047;LATIN CAPITAL LETTER G;Lu;0;L;;;;;N;;;;0067; 0048;LATIN CAPITAL LETTER H;Lu;0;L;;;;;N;;;;0068; 0049;LATIN CAPITAL LETTER I;Lu;0;L;;;;;N;;;;0069; 004A;LATIN CAPITAL LETTER J;Lu;0;L;;;;;N;;;;006A; 004B;LATIN CAPITAL LETTER K;Lu;0;L;;;;;N;;;;006B; 004C;LATIN CAPITAL LETTER L;Lu;0;L;;;;;N;;;;006C; 004D;LATIN CAPITAL LETTER M;Lu;0;L;;;;;N;;;;006D; 004E;LATIN CAPITAL LETTER N;Lu;0;L;;;;;N;;;;006E; 004F;LATIN CAPITAL LETTER O;Lu;0;L;;;;;N;;;;006F; 0050;LATIN CAPITAL LETTER P;Lu;0;L;;;;;N;;;;0070; 0051;LATIN CAPITAL LETTER Q;Lu;0;L;;;;;N;;;;0071; 0052;LATIN CAPITAL LETTER R;Lu;0;L;;;;;N;;;;0072; 0053;LATIN CAPITAL LETTER S;Lu;0;L;;;;;N;;;;0073; 0054;LATIN CAPITAL LETTER T;Lu;0;L;;;;;N;;;;0074; 0055;LATIN CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0075; 0056;LATIN CAPITAL LETTER V;Lu;0;L;;;;;N;;;;0076; 0057;LATIN CAPITAL LETTER W;Lu;0;L;;;;;N;;;;0077; 0058;LATIN CAPITAL LETTER X;Lu;0;L;;;;;N;;;;0078; 0059;LATIN CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;0079; 005A;LATIN CAPITAL LETTER Z;Lu;0;L;;;;;N;;;;007A; 005B;LEFT SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING SQUARE BRACKET;;;; 005C;REVERSE SOLIDUS;Po;0;ON;;;;;N;BACKSLASH;;;; 005D;RIGHT SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING SQUARE BRACKET;;;; 005E;CIRCUMFLEX ACCENT;Sk;0;ON;;;;;N;SPACING CIRCUMFLEX;;;; 005F;LOW LINE;Pc;0;ON;;;;;N;SPACING UNDERSCORE;;;; 0060;GRAVE ACCENT;Sk;0;ON;;;;;N;SPACING GRAVE;;;; 0061;LATIN SMALL LETTER A;Ll;0;L;;;;;N;;;0041;;0041 0062;LATIN SMALL LETTER B;Ll;0;L;;;;;N;;;0042;;0042 0063;LATIN SMALL LETTER C;Ll;0;L;;;;;N;;;0043;;0043 0064;LATIN SMALL LETTER D;Ll;0;L;;;;;N;;;0044;;0044 0065;LATIN SMALL LETTER E;Ll;0;L;;;;;N;;;0045;;0045 0066;LATIN SMALL LETTER F;Ll;0;L;;;;;N;;;0046;;0046 0067;LATIN SMALL LETTER G;Ll;0;L;;;;;N;;;0047;;0047 0068;LATIN SMALL LETTER H;Ll;0;L;;;;;N;;;0048;;0048 0069;LATIN SMALL LETTER I;Ll;0;L;;;;;N;;;0049;;0049 006A;LATIN SMALL LETTER J;Ll;0;L;;;;;N;;;004A;;004A 006B;LATIN SMALL LETTER K;Ll;0;L;;;;;N;;;004B;;004B 006C;LATIN SMALL LETTER L;Ll;0;L;;;;;N;;;004C;;004C 006D;LATIN SMALL LETTER M;Ll;0;L;;;;;N;;;004D;;004D 006E;LATIN SMALL LETTER N;Ll;0;L;;;;;N;;;004E;;004E 006F;LATIN SMALL LETTER O;Ll;0;L;;;;;N;;;004F;;004F 0070;LATIN SMALL LETTER P;Ll;0;L;;;;;N;;;0050;;0050 0071;LATIN SMALL LETTER Q;Ll;0;L;;;;;N;;;0051;;0051 0072;LATIN SMALL LETTER R;Ll;0;L;;;;;N;;;0052;;0052 0073;LATIN SMALL LETTER S;Ll;0;L;;;;;N;;;0053;;0053 0074;LATIN SMALL LETTER T;Ll;0;L;;;;;N;;;0054;;0054 0075;LATIN SMALL LETTER U;Ll;0;L;;;;;N;;;0055;;0055 0076;LATIN SMALL LETTER V;Ll;0;L;;;;;N;;;0056;;0056 0077;LATIN SMALL LETTER W;Ll;0;L;;;;;N;;;0057;;0057 0078;LATIN SMALL LETTER X;Ll;0;L;;;;;N;;;0058;;0058 0079;LATIN SMALL LETTER Y;Ll;0;L;;;;;N;;;0059;;0059 007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A 007B;LEFT CURLY BRACKET;Ps;0;ON;;;;;Y;OPENING CURLY BRACKET;;;; 007C;VERTICAL LINE;Sm;0;ON;;;;;N;VERTICAL BAR;;;; 007D;RIGHT CURLY BRACKET;Pe;0;ON;;;;;Y;CLOSING CURLY BRACKET;;;; 007E;TILDE;Sm;0;ON;;;;;N;;;;; 007F;;Cc;0;BN;;;;;N;DELETE;;;; 0080;;Cc;0;BN;;;;;N;;;;; 0081;;Cc;0;BN;;;;;N;;;;; 0082;;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;; 0083;;Cc;0;BN;;;;;N;NO BREAK HERE;;;; 0084;;Cc;0;BN;;;;;N;;;;; 0085;;Cc;0;B;;;;;N;NEXT LINE (NEL);;;; 0086;;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;; 0087;;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;; 0088;;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;; 0089;;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;; 008A;;Cc;0;BN;;;;;N;LINE TABULATION SET;;;; 008B;;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;; 008C;;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;; 008D;;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;; 008E;;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;; 008F;;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;; 0090;;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;; 0091;;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;; 0092;;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;; 0093;;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;; 0094;;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;; 0095;;Cc;0;BN;;;;;N;MESSAGE WAITING;;;; 0096;;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;; 0097;;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;; 0098;;Cc;0;BN;;;;;N;START OF STRING;;;; 0099;;Cc;0;BN;;;;;N;;;;; 009A;;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;; 009B;;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;; 009C;;Cc;0;BN;;;;;N;STRING TERMINATOR;;;; 009D;;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;; 009E;;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;; 009F;;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;; 00A0;NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;NON-BREAKING SPACE;;;; 00A1;INVERTED EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; 00A2;CENT SIGN;Sc;0;ET;;;;;N;;;;; 00A3;POUND SIGN;Sc;0;ET;;;;;N;;;;; 00A4;CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; 00A5;YEN SIGN;Sc;0;ET;;;;;N;;;;; 00A6;BROKEN BAR;So;0;ON;;;;;N;BROKEN VERTICAL BAR;;;; 00A7;SECTION SIGN;So;0;ON;;;;;N;;;;; 00A8;DIAERESIS;Sk;0;ON; 0020 0308;;;;N;SPACING DIAERESIS;;;; 00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;; 00AA;FEMININE ORDINAL INDICATOR;Ll;0;L; 0061;;;;N;;;;; 00AB;LEFT-POINTING DOUBLE ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING GUILLEMET;*;;; 00AC;NOT SIGN;Sm;0;ON;;;;;N;;;;; 00AD;SOFT HYPHEN;Cf;0;BN;;;;;N;;;;; 00AE;REGISTERED SIGN;So;0;ON;;;;;N;REGISTERED TRADE MARK SIGN;;;; 00AF;MACRON;Sk;0;ON; 0020 0304;;;;N;SPACING MACRON;;;; 00B0;DEGREE SIGN;So;0;ET;;;;;N;;;;; 00B1;PLUS-MINUS SIGN;Sm;0;ET;;;;;N;PLUS-OR-MINUS SIGN;;;; 00B2;SUPERSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;; 00B3;SUPERSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;; 00B4;ACUTE ACCENT;Sk;0;ON; 0020 0301;;;;N;SPACING ACUTE;;;; 00B5;MICRO SIGN;Ll;0;L; 03BC;;;;N;;;039C;;039C 00B6;PILCROW SIGN;So;0;ON;;;;;N;PARAGRAPH SIGN;;;; 00B7;MIDDLE DOT;Po;0;ON;;;;;N;;;;; 00B8;CEDILLA;Sk;0;ON; 0020 0327;;;;N;SPACING CEDILLA;;;; 00B9;SUPERSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;; 00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L; 006F;;;;N;;;;; 00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;*;;; 00BC;VULGAR FRACTION ONE QUARTER;No;0;ON; 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;; 00BD;VULGAR FRACTION ONE HALF;No;0;ON; 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;; 00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON; 0033 2044 0034;;;3/4;N;FRACTION THREE QUARTERS;;;; 00BF;INVERTED QUESTION MARK;Po;0;ON;;;;;N;;;;; 00C0;LATIN CAPITAL LETTER A WITH GRAVE;Lu;0;L;0041 0300;;;;N;LATIN CAPITAL LETTER A GRAVE;;;00E0; 00C1;LATIN CAPITAL LETTER A WITH ACUTE;Lu;0;L;0041 0301;;;;N;LATIN CAPITAL LETTER A ACUTE;;;00E1; 00C2;LATIN CAPITAL LETTER A WITH CIRCUMFLEX;Lu;0;L;0041 0302;;;;N;LATIN CAPITAL LETTER A CIRCUMFLEX;;;00E2; 00C3;LATIN CAPITAL LETTER A WITH TILDE;Lu;0;L;0041 0303;;;;N;LATIN CAPITAL LETTER A TILDE;;;00E3; 00C4;LATIN CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0041 0308;;;;N;LATIN CAPITAL LETTER A DIAERESIS;;;00E4; 00C5;LATIN CAPITAL LETTER A WITH RING ABOVE;Lu;0;L;0041 030A;;;;N;LATIN CAPITAL LETTER A RING;;;00E5; 00C6;LATIN CAPITAL LETTER AE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER A E;ash *;;00E6; 00C7;LATIN CAPITAL LETTER C WITH CEDILLA;Lu;0;L;0043 0327;;;;N;LATIN CAPITAL LETTER C CEDILLA;;;00E7; 00C8;LATIN CAPITAL LETTER E WITH GRAVE;Lu;0;L;0045 0300;;;;N;LATIN CAPITAL LETTER E GRAVE;;;00E8; 00C9;LATIN CAPITAL LETTER E WITH ACUTE;Lu;0;L;0045 0301;;;;N;LATIN CAPITAL LETTER E ACUTE;;;00E9; 00CA;LATIN CAPITAL LETTER E WITH CIRCUMFLEX;Lu;0;L;0045 0302;;;;N;LATIN CAPITAL LETTER E CIRCUMFLEX;;;00EA; 00CB;LATIN CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;0045 0308;;;;N;LATIN CAPITAL LETTER E DIAERESIS;;;00EB; 00CC;LATIN CAPITAL LETTER I WITH GRAVE;Lu;0;L;0049 0300;;;;N;LATIN CAPITAL LETTER I GRAVE;;;00EC; 00CD;LATIN CAPITAL LETTER I WITH ACUTE;Lu;0;L;0049 0301;;;;N;LATIN CAPITAL LETTER I ACUTE;;;00ED; 00CE;LATIN CAPITAL LETTER I WITH CIRCUMFLEX;Lu;0;L;0049 0302;;;;N;LATIN CAPITAL LETTER I CIRCUMFLEX;;;00EE; 00CF;LATIN CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0049 0308;;;;N;LATIN CAPITAL LETTER I DIAERESIS;;;00EF; 00D0;LATIN CAPITAL LETTER ETH;Lu;0;L;;;;;N;;Icelandic;;00F0; 00D1;LATIN CAPITAL LETTER N WITH TILDE;Lu;0;L;004E 0303;;;;N;LATIN CAPITAL LETTER N TILDE;;;00F1; 00D2;LATIN CAPITAL LETTER O WITH GRAVE;Lu;0;L;004F 0300;;;;N;LATIN CAPITAL LETTER O GRAVE;;;00F2; 00D3;LATIN CAPITAL LETTER O WITH ACUTE;Lu;0;L;004F 0301;;;;N;LATIN CAPITAL LETTER O ACUTE;;;00F3; 00D4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX;Lu;0;L;004F 0302;;;;N;LATIN CAPITAL LETTER O CIRCUMFLEX;;;00F4; 00D5;LATIN CAPITAL LETTER O WITH TILDE;Lu;0;L;004F 0303;;;;N;LATIN CAPITAL LETTER O TILDE;;;00F5; 00D6;LATIN CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;004F 0308;;;;N;LATIN CAPITAL LETTER O DIAERESIS;;;00F6; 00D7;MULTIPLICATION SIGN;Sm;0;ON;;;;;N;;;;; 00D8;LATIN CAPITAL LETTER O WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O SLASH;;;00F8; 00D9;LATIN CAPITAL LETTER U WITH GRAVE;Lu;0;L;0055 0300;;;;N;LATIN CAPITAL LETTER U GRAVE;;;00F9; 00DA;LATIN CAPITAL LETTER U WITH ACUTE;Lu;0;L;0055 0301;;;;N;LATIN CAPITAL LETTER U ACUTE;;;00FA; 00DB;LATIN CAPITAL LETTER U WITH CIRCUMFLEX;Lu;0;L;0055 0302;;;;N;LATIN CAPITAL LETTER U CIRCUMFLEX;;;00FB; 00DC;LATIN CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0055 0308;;;;N;LATIN CAPITAL LETTER U DIAERESIS;;;00FC; 00DD;LATIN CAPITAL LETTER Y WITH ACUTE;Lu;0;L;0059 0301;;;;N;LATIN CAPITAL LETTER Y ACUTE;;;00FD; 00DE;LATIN CAPITAL LETTER THORN;Lu;0;L;;;;;N;;Icelandic;;00FE; 00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;German;;; 00E0;LATIN SMALL LETTER A WITH GRAVE;Ll;0;L;0061 0300;;;;N;LATIN SMALL LETTER A GRAVE;;00C0;;00C0 00E1;LATIN SMALL LETTER A WITH ACUTE;Ll;0;L;0061 0301;;;;N;LATIN SMALL LETTER A ACUTE;;00C1;;00C1 00E2;LATIN SMALL LETTER A WITH CIRCUMFLEX;Ll;0;L;0061 0302;;;;N;LATIN SMALL LETTER A CIRCUMFLEX;;00C2;;00C2 00E3;LATIN SMALL LETTER A WITH TILDE;Ll;0;L;0061 0303;;;;N;LATIN SMALL LETTER A TILDE;;00C3;;00C3 00E4;LATIN SMALL LETTER A WITH DIAERESIS;Ll;0;L;0061 0308;;;;N;LATIN SMALL LETTER A DIAERESIS;;00C4;;00C4 00E5;LATIN SMALL LETTER A WITH RING ABOVE;Ll;0;L;0061 030A;;;;N;LATIN SMALL LETTER A RING;;00C5;;00C5 00E6;LATIN SMALL LETTER AE;Ll;0;L;;;;;N;LATIN SMALL LETTER A E;ash *;00C6;;00C6 00E7;LATIN SMALL LETTER C WITH CEDILLA;Ll;0;L;0063 0327;;;;N;LATIN SMALL LETTER C CEDILLA;;00C7;;00C7 00E8;LATIN SMALL LETTER E WITH GRAVE;Ll;0;L;0065 0300;;;;N;LATIN SMALL LETTER E GRAVE;;00C8;;00C8 00E9;LATIN SMALL LETTER E WITH ACUTE;Ll;0;L;0065 0301;;;;N;LATIN SMALL LETTER E ACUTE;;00C9;;00C9 00EA;LATIN SMALL LETTER E WITH CIRCUMFLEX;Ll;0;L;0065 0302;;;;N;LATIN SMALL LETTER E CIRCUMFLEX;;00CA;;00CA 00EB;LATIN SMALL LETTER E WITH DIAERESIS;Ll;0;L;0065 0308;;;;N;LATIN SMALL LETTER E DIAERESIS;;00CB;;00CB 00EC;LATIN SMALL LETTER I WITH GRAVE;Ll;0;L;0069 0300;;;;N;LATIN SMALL LETTER I GRAVE;;00CC;;00CC 00ED;LATIN SMALL LETTER I WITH ACUTE;Ll;0;L;0069 0301;;;;N;LATIN SMALL LETTER I ACUTE;;00CD;;00CD 00EE;LATIN SMALL LETTER I WITH CIRCUMFLEX;Ll;0;L;0069 0302;;;;N;LATIN SMALL LETTER I CIRCUMFLEX;;00CE;;00CE 00EF;LATIN SMALL LETTER I WITH DIAERESIS;Ll;0;L;0069 0308;;;;N;LATIN SMALL LETTER I DIAERESIS;;00CF;;00CF 00F0;LATIN SMALL LETTER ETH;Ll;0;L;;;;;N;;Icelandic;00D0;;00D0 00F1;LATIN SMALL LETTER N WITH TILDE;Ll;0;L;006E 0303;;;;N;LATIN SMALL LETTER N TILDE;;00D1;;00D1 00F2;LATIN SMALL LETTER O WITH GRAVE;Ll;0;L;006F 0300;;;;N;LATIN SMALL LETTER O GRAVE;;00D2;;00D2 00F3;LATIN SMALL LETTER O WITH ACUTE;Ll;0;L;006F 0301;;;;N;LATIN SMALL LETTER O ACUTE;;00D3;;00D3 00F4;LATIN SMALL LETTER O WITH CIRCUMFLEX;Ll;0;L;006F 0302;;;;N;LATIN SMALL LETTER O CIRCUMFLEX;;00D4;;00D4 00F5;LATIN SMALL LETTER O WITH TILDE;Ll;0;L;006F 0303;;;;N;LATIN SMALL LETTER O TILDE;;00D5;;00D5 00F6;LATIN SMALL LETTER O WITH DIAERESIS;Ll;0;L;006F 0308;;;;N;LATIN SMALL LETTER O DIAERESIS;;00D6;;00D6 00F7;DIVISION SIGN;Sm;0;ON;;;;;N;;;;; 00F8;LATIN SMALL LETTER O WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER O SLASH;;00D8;;00D8 00F9;LATIN SMALL LETTER U WITH GRAVE;Ll;0;L;0075 0300;;;;N;LATIN SMALL LETTER U GRAVE;;00D9;;00D9 00FA;LATIN SMALL LETTER U WITH ACUTE;Ll;0;L;0075 0301;;;;N;LATIN SMALL LETTER U ACUTE;;00DA;;00DA 00FB;LATIN SMALL LETTER U WITH CIRCUMFLEX;Ll;0;L;0075 0302;;;;N;LATIN SMALL LETTER U CIRCUMFLEX;;00DB;;00DB 00FC;LATIN SMALL LETTER U WITH DIAERESIS;Ll;0;L;0075 0308;;;;N;LATIN SMALL LETTER U DIAERESIS;;00DC;;00DC 00FD;LATIN SMALL LETTER Y WITH ACUTE;Ll;0;L;0079 0301;;;;N;LATIN SMALL LETTER Y ACUTE;;00DD;;00DD 00FE;LATIN SMALL LETTER THORN;Ll;0;L;;;;;N;;Icelandic;00DE;;00DE 00FF;LATIN SMALL LETTER Y WITH DIAERESIS;Ll;0;L;0079 0308;;;;N;LATIN SMALL LETTER Y DIAERESIS;;0178;;0178 0100;LATIN CAPITAL LETTER A WITH MACRON;Lu;0;L;0041 0304;;;;N;LATIN CAPITAL LETTER A MACRON;;;0101; 0101;LATIN SMALL LETTER A WITH MACRON;Ll;0;L;0061 0304;;;;N;LATIN SMALL LETTER A MACRON;;0100;;0100 0102;LATIN CAPITAL LETTER A WITH BREVE;Lu;0;L;0041 0306;;;;N;LATIN CAPITAL LETTER A BREVE;;;0103; 0103;LATIN SMALL LETTER A WITH BREVE;Ll;0;L;0061 0306;;;;N;LATIN SMALL LETTER A BREVE;;0102;;0102 0104;LATIN CAPITAL LETTER A WITH OGONEK;Lu;0;L;0041 0328;;;;N;LATIN CAPITAL LETTER A OGONEK;;;0105; 0105;LATIN SMALL LETTER A WITH OGONEK;Ll;0;L;0061 0328;;;;N;LATIN SMALL LETTER A OGONEK;;0104;;0104 0106;LATIN CAPITAL LETTER C WITH ACUTE;Lu;0;L;0043 0301;;;;N;LATIN CAPITAL LETTER C ACUTE;;;0107; 0107;LATIN SMALL LETTER C WITH ACUTE;Ll;0;L;0063 0301;;;;N;LATIN SMALL LETTER C ACUTE;;0106;;0106 0108;LATIN CAPITAL LETTER C WITH CIRCUMFLEX;Lu;0;L;0043 0302;;;;N;LATIN CAPITAL LETTER C CIRCUMFLEX;;;0109; 0109;LATIN SMALL LETTER C WITH CIRCUMFLEX;Ll;0;L;0063 0302;;;;N;LATIN SMALL LETTER C CIRCUMFLEX;;0108;;0108 010A;LATIN CAPITAL LETTER C WITH DOT ABOVE;Lu;0;L;0043 0307;;;;N;LATIN CAPITAL LETTER C DOT;;;010B; 010B;LATIN SMALL LETTER C WITH DOT ABOVE;Ll;0;L;0063 0307;;;;N;LATIN SMALL LETTER C DOT;;010A;;010A 010C;LATIN CAPITAL LETTER C WITH CARON;Lu;0;L;0043 030C;;;;N;LATIN CAPITAL LETTER C HACEK;;;010D; 010D;LATIN SMALL LETTER C WITH CARON;Ll;0;L;0063 030C;;;;N;LATIN SMALL LETTER C HACEK;;010C;;010C 010E;LATIN CAPITAL LETTER D WITH CARON;Lu;0;L;0044 030C;;;;N;LATIN CAPITAL LETTER D HACEK;;;010F; 010F;LATIN SMALL LETTER D WITH CARON;Ll;0;L;0064 030C;;;;N;LATIN SMALL LETTER D HACEK;;010E;;010E 0110;LATIN CAPITAL LETTER D WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D BAR;;;0111; 0111;LATIN SMALL LETTER D WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER D BAR;;0110;;0110 0112;LATIN CAPITAL LETTER E WITH MACRON;Lu;0;L;0045 0304;;;;N;LATIN CAPITAL LETTER E MACRON;;;0113; 0113;LATIN SMALL LETTER E WITH MACRON;Ll;0;L;0065 0304;;;;N;LATIN SMALL LETTER E MACRON;;0112;;0112 0114;LATIN CAPITAL LETTER E WITH BREVE;Lu;0;L;0045 0306;;;;N;LATIN CAPITAL LETTER E BREVE;;;0115; 0115;LATIN SMALL LETTER E WITH BREVE;Ll;0;L;0065 0306;;;;N;LATIN SMALL LETTER E BREVE;;0114;;0114 0116;LATIN CAPITAL LETTER E WITH DOT ABOVE;Lu;0;L;0045 0307;;;;N;LATIN CAPITAL LETTER E DOT;;;0117; 0117;LATIN SMALL LETTER E WITH DOT ABOVE;Ll;0;L;0065 0307;;;;N;LATIN SMALL LETTER E DOT;;0116;;0116 0118;LATIN CAPITAL LETTER E WITH OGONEK;Lu;0;L;0045 0328;;;;N;LATIN CAPITAL LETTER E OGONEK;;;0119; 0119;LATIN SMALL LETTER E WITH OGONEK;Ll;0;L;0065 0328;;;;N;LATIN SMALL LETTER E OGONEK;;0118;;0118 011A;LATIN CAPITAL LETTER E WITH CARON;Lu;0;L;0045 030C;;;;N;LATIN CAPITAL LETTER E HACEK;;;011B; 011B;LATIN SMALL LETTER E WITH CARON;Ll;0;L;0065 030C;;;;N;LATIN SMALL LETTER E HACEK;;011A;;011A 011C;LATIN CAPITAL LETTER G WITH CIRCUMFLEX;Lu;0;L;0047 0302;;;;N;LATIN CAPITAL LETTER G CIRCUMFLEX;;;011D; 011D;LATIN SMALL LETTER G WITH CIRCUMFLEX;Ll;0;L;0067 0302;;;;N;LATIN SMALL LETTER G CIRCUMFLEX;;011C;;011C 011E;LATIN CAPITAL LETTER G WITH BREVE;Lu;0;L;0047 0306;;;;N;LATIN CAPITAL LETTER G BREVE;;;011F; 011F;LATIN SMALL LETTER G WITH BREVE;Ll;0;L;0067 0306;;;;N;LATIN SMALL LETTER G BREVE;;011E;;011E 0120;LATIN CAPITAL LETTER G WITH DOT ABOVE;Lu;0;L;0047 0307;;;;N;LATIN CAPITAL LETTER G DOT;;;0121; 0121;LATIN SMALL LETTER G WITH DOT ABOVE;Ll;0;L;0067 0307;;;;N;LATIN SMALL LETTER G DOT;;0120;;0120 0122;LATIN CAPITAL LETTER G WITH CEDILLA;Lu;0;L;0047 0327;;;;N;LATIN CAPITAL LETTER G CEDILLA;;;0123; 0123;LATIN SMALL LETTER G WITH CEDILLA;Ll;0;L;0067 0327;;;;N;LATIN SMALL LETTER G CEDILLA;;0122;;0122 0124;LATIN CAPITAL LETTER H WITH CIRCUMFLEX;Lu;0;L;0048 0302;;;;N;LATIN CAPITAL LETTER H CIRCUMFLEX;;;0125; 0125;LATIN SMALL LETTER H WITH CIRCUMFLEX;Ll;0;L;0068 0302;;;;N;LATIN SMALL LETTER H CIRCUMFLEX;;0124;;0124 0126;LATIN CAPITAL LETTER H WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER H BAR;;;0127; 0127;LATIN SMALL LETTER H WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER H BAR;;0126;;0126 0128;LATIN CAPITAL LETTER I WITH TILDE;Lu;0;L;0049 0303;;;;N;LATIN CAPITAL LETTER I TILDE;;;0129; 0129;LATIN SMALL LETTER I WITH TILDE;Ll;0;L;0069 0303;;;;N;LATIN SMALL LETTER I TILDE;;0128;;0128 012A;LATIN CAPITAL LETTER I WITH MACRON;Lu;0;L;0049 0304;;;;N;LATIN CAPITAL LETTER I MACRON;;;012B; 012B;LATIN SMALL LETTER I WITH MACRON;Ll;0;L;0069 0304;;;;N;LATIN SMALL LETTER I MACRON;;012A;;012A 012C;LATIN CAPITAL LETTER I WITH BREVE;Lu;0;L;0049 0306;;;;N;LATIN CAPITAL LETTER I BREVE;;;012D; 012D;LATIN SMALL LETTER I WITH BREVE;Ll;0;L;0069 0306;;;;N;LATIN SMALL LETTER I BREVE;;012C;;012C 012E;LATIN CAPITAL LETTER I WITH OGONEK;Lu;0;L;0049 0328;;;;N;LATIN CAPITAL LETTER I OGONEK;;;012F; 012F;LATIN SMALL LETTER I WITH OGONEK;Ll;0;L;0069 0328;;;;N;LATIN SMALL LETTER I OGONEK;;012E;;012E 0130;LATIN CAPITAL LETTER I WITH DOT ABOVE;Lu;0;L;0049 0307;;;;N;LATIN CAPITAL LETTER I DOT;;;0069; 0131;LATIN SMALL LETTER DOTLESS I;Ll;0;L;;;;;N;;;0049;;0049 0132;LATIN CAPITAL LIGATURE IJ;Lu;0;L; 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133; 0133;LATIN SMALL LIGATURE IJ;Ll;0;L; 0069 006A;;;;N;LATIN SMALL LETTER I J;;0132;;0132 0134;LATIN CAPITAL LETTER J WITH CIRCUMFLEX;Lu;0;L;004A 0302;;;;N;LATIN CAPITAL LETTER J CIRCUMFLEX;;;0135; 0135;LATIN SMALL LETTER J WITH CIRCUMFLEX;Ll;0;L;006A 0302;;;;N;LATIN SMALL LETTER J CIRCUMFLEX;;0134;;0134 0136;LATIN CAPITAL LETTER K WITH CEDILLA;Lu;0;L;004B 0327;;;;N;LATIN CAPITAL LETTER K CEDILLA;;;0137; 0137;LATIN SMALL LETTER K WITH CEDILLA;Ll;0;L;006B 0327;;;;N;LATIN SMALL LETTER K CEDILLA;;0136;;0136 0138;LATIN SMALL LETTER KRA;Ll;0;L;;;;;N;;Greenlandic;;; 0139;LATIN CAPITAL LETTER L WITH ACUTE;Lu;0;L;004C 0301;;;;N;LATIN CAPITAL LETTER L ACUTE;;;013A; 013A;LATIN SMALL LETTER L WITH ACUTE;Ll;0;L;006C 0301;;;;N;LATIN SMALL LETTER L ACUTE;;0139;;0139 013B;LATIN CAPITAL LETTER L WITH CEDILLA;Lu;0;L;004C 0327;;;;N;LATIN CAPITAL LETTER L CEDILLA;;;013C; 013C;LATIN SMALL LETTER L WITH CEDILLA;Ll;0;L;006C 0327;;;;N;LATIN SMALL LETTER L CEDILLA;;013B;;013B 013D;LATIN CAPITAL LETTER L WITH CARON;Lu;0;L;004C 030C;;;;N;LATIN CAPITAL LETTER L HACEK;;;013E; 013E;LATIN SMALL LETTER L WITH CARON;Ll;0;L;006C 030C;;;;N;LATIN SMALL LETTER L HACEK;;013D;;013D 013F;LATIN CAPITAL LETTER L WITH MIDDLE DOT;Lu;0;L; 004C 00B7;;;;N;;;;0140; 0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L; 006C 00B7;;;;N;;;013F;;013F 0141;LATIN CAPITAL LETTER L WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER L SLASH;;;0142; 0142;LATIN SMALL LETTER L WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER L SLASH;;0141;;0141 0143;LATIN CAPITAL LETTER N WITH ACUTE;Lu;0;L;004E 0301;;;;N;LATIN CAPITAL LETTER N ACUTE;;;0144; 0144;LATIN SMALL LETTER N WITH ACUTE;Ll;0;L;006E 0301;;;;N;LATIN SMALL LETTER N ACUTE;;0143;;0143 0145;LATIN CAPITAL LETTER N WITH CEDILLA;Lu;0;L;004E 0327;;;;N;LATIN CAPITAL LETTER N CEDILLA;;;0146; 0146;LATIN SMALL LETTER N WITH CEDILLA;Ll;0;L;006E 0327;;;;N;LATIN SMALL LETTER N CEDILLA;;0145;;0145 0147;LATIN CAPITAL LETTER N WITH CARON;Lu;0;L;004E 030C;;;;N;LATIN CAPITAL LETTER N HACEK;;;0148; 0148;LATIN SMALL LETTER N WITH CARON;Ll;0;L;006E 030C;;;;N;LATIN SMALL LETTER N HACEK;;0147;;0147 0149;LATIN SMALL LETTER N PRECEDED BY APOSTROPHE;Ll;0;L; 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;; 014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;Sami;;014B; 014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;Sami;014A;;014A 014C;LATIN CAPITAL LETTER O WITH MACRON;Lu;0;L;004F 0304;;;;N;LATIN CAPITAL LETTER O MACRON;;;014D; 014D;LATIN SMALL LETTER O WITH MACRON;Ll;0;L;006F 0304;;;;N;LATIN SMALL LETTER O MACRON;;014C;;014C 014E;LATIN CAPITAL LETTER O WITH BREVE;Lu;0;L;004F 0306;;;;N;LATIN CAPITAL LETTER O BREVE;;;014F; 014F;LATIN SMALL LETTER O WITH BREVE;Ll;0;L;006F 0306;;;;N;LATIN SMALL LETTER O BREVE;;014E;;014E 0150;LATIN CAPITAL LETTER O WITH DOUBLE ACUTE;Lu;0;L;004F 030B;;;;N;LATIN CAPITAL LETTER O DOUBLE ACUTE;;;0151; 0151;LATIN SMALL LETTER O WITH DOUBLE ACUTE;Ll;0;L;006F 030B;;;;N;LATIN SMALL LETTER O DOUBLE ACUTE;;0150;;0150 0152;LATIN CAPITAL LIGATURE OE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O E;;;0153; 0153;LATIN SMALL LIGATURE OE;Ll;0;L;;;;;N;LATIN SMALL LETTER O E;;0152;;0152 0154;LATIN CAPITAL LETTER R WITH ACUTE;Lu;0;L;0052 0301;;;;N;LATIN CAPITAL LETTER R ACUTE;;;0155; 0155;LATIN SMALL LETTER R WITH ACUTE;Ll;0;L;0072 0301;;;;N;LATIN SMALL LETTER R ACUTE;;0154;;0154 0156;LATIN CAPITAL LETTER R WITH CEDILLA;Lu;0;L;0052 0327;;;;N;LATIN CAPITAL LETTER R CEDILLA;;;0157; 0157;LATIN SMALL LETTER R WITH CEDILLA;Ll;0;L;0072 0327;;;;N;LATIN SMALL LETTER R CEDILLA;;0156;;0156 0158;LATIN CAPITAL LETTER R WITH CARON;Lu;0;L;0052 030C;;;;N;LATIN CAPITAL LETTER R HACEK;;;0159; 0159;LATIN SMALL LETTER R WITH CARON;Ll;0;L;0072 030C;;;;N;LATIN SMALL LETTER R HACEK;;0158;;0158 015A;LATIN CAPITAL LETTER S WITH ACUTE;Lu;0;L;0053 0301;;;;N;LATIN CAPITAL LETTER S ACUTE;;;015B; 015B;LATIN SMALL LETTER S WITH ACUTE;Ll;0;L;0073 0301;;;;N;LATIN SMALL LETTER S ACUTE;;015A;;015A 015C;LATIN CAPITAL LETTER S WITH CIRCUMFLEX;Lu;0;L;0053 0302;;;;N;LATIN CAPITAL LETTER S CIRCUMFLEX;;;015D; 015D;LATIN SMALL LETTER S WITH CIRCUMFLEX;Ll;0;L;0073 0302;;;;N;LATIN SMALL LETTER S CIRCUMFLEX;;015C;;015C 015E;LATIN CAPITAL LETTER S WITH CEDILLA;Lu;0;L;0053 0327;;;;N;LATIN CAPITAL LETTER S CEDILLA;*;;015F; 015F;LATIN SMALL LETTER S WITH CEDILLA;Ll;0;L;0073 0327;;;;N;LATIN SMALL LETTER S CEDILLA;*;015E;;015E 0160;LATIN CAPITAL LETTER S WITH CARON;Lu;0;L;0053 030C;;;;N;LATIN CAPITAL LETTER S HACEK;;;0161; 0161;LATIN SMALL LETTER S WITH CARON;Ll;0;L;0073 030C;;;;N;LATIN SMALL LETTER S HACEK;;0160;;0160 0162;LATIN CAPITAL LETTER T WITH CEDILLA;Lu;0;L;0054 0327;;;;N;LATIN CAPITAL LETTER T CEDILLA;*;;0163; 0163;LATIN SMALL LETTER T WITH CEDILLA;Ll;0;L;0074 0327;;;;N;LATIN SMALL LETTER T CEDILLA;*;0162;;0162 0164;LATIN CAPITAL LETTER T WITH CARON;Lu;0;L;0054 030C;;;;N;LATIN CAPITAL LETTER T HACEK;;;0165; 0165;LATIN SMALL LETTER T WITH CARON;Ll;0;L;0074 030C;;;;N;LATIN SMALL LETTER T HACEK;;0164;;0164 0166;LATIN CAPITAL LETTER T WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T BAR;;;0167; 0167;LATIN SMALL LETTER T WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER T BAR;;0166;;0166 0168;LATIN CAPITAL LETTER U WITH TILDE;Lu;0;L;0055 0303;;;;N;LATIN CAPITAL LETTER U TILDE;;;0169; 0169;LATIN SMALL LETTER U WITH TILDE;Ll;0;L;0075 0303;;;;N;LATIN SMALL LETTER U TILDE;;0168;;0168 016A;LATIN CAPITAL LETTER U WITH MACRON;Lu;0;L;0055 0304;;;;N;LATIN CAPITAL LETTER U MACRON;;;016B; 016B;LATIN SMALL LETTER U WITH MACRON;Ll;0;L;0075 0304;;;;N;LATIN SMALL LETTER U MACRON;;016A;;016A 016C;LATIN CAPITAL LETTER U WITH BREVE;Lu;0;L;0055 0306;;;;N;LATIN CAPITAL LETTER U BREVE;;;016D; 016D;LATIN SMALL LETTER U WITH BREVE;Ll;0;L;0075 0306;;;;N;LATIN SMALL LETTER U BREVE;;016C;;016C 016E;LATIN CAPITAL LETTER U WITH RING ABOVE;Lu;0;L;0055 030A;;;;N;LATIN CAPITAL LETTER U RING;;;016F; 016F;LATIN SMALL LETTER U WITH RING ABOVE;Ll;0;L;0075 030A;;;;N;LATIN SMALL LETTER U RING;;016E;;016E 0170;LATIN CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0055 030B;;;;N;LATIN CAPITAL LETTER U DOUBLE ACUTE;;;0171; 0171;LATIN SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0075 030B;;;;N;LATIN SMALL LETTER U DOUBLE ACUTE;;0170;;0170 0172;LATIN CAPITAL LETTER U WITH OGONEK;Lu;0;L;0055 0328;;;;N;LATIN CAPITAL LETTER U OGONEK;;;0173; 0173;LATIN SMALL LETTER U WITH OGONEK;Ll;0;L;0075 0328;;;;N;LATIN SMALL LETTER U OGONEK;;0172;;0172 0174;LATIN CAPITAL LETTER W WITH CIRCUMFLEX;Lu;0;L;0057 0302;;;;N;LATIN CAPITAL LETTER W CIRCUMFLEX;;;0175; 0175;LATIN SMALL LETTER W WITH CIRCUMFLEX;Ll;0;L;0077 0302;;;;N;LATIN SMALL LETTER W CIRCUMFLEX;;0174;;0174 0176;LATIN CAPITAL LETTER Y WITH CIRCUMFLEX;Lu;0;L;0059 0302;;;;N;LATIN CAPITAL LETTER Y CIRCUMFLEX;;;0177; 0177;LATIN SMALL LETTER Y WITH CIRCUMFLEX;Ll;0;L;0079 0302;;;;N;LATIN SMALL LETTER Y CIRCUMFLEX;;0176;;0176 0178;LATIN CAPITAL LETTER Y WITH DIAERESIS;Lu;0;L;0059 0308;;;;N;LATIN CAPITAL LETTER Y DIAERESIS;;;00FF; 0179;LATIN CAPITAL LETTER Z WITH ACUTE;Lu;0;L;005A 0301;;;;N;LATIN CAPITAL LETTER Z ACUTE;;;017A; 017A;LATIN SMALL LETTER Z WITH ACUTE;Ll;0;L;007A 0301;;;;N;LATIN SMALL LETTER Z ACUTE;;0179;;0179 017B;LATIN CAPITAL LETTER Z WITH DOT ABOVE;Lu;0;L;005A 0307;;;;N;LATIN CAPITAL LETTER Z DOT;;;017C; 017C;LATIN SMALL LETTER Z WITH DOT ABOVE;Ll;0;L;007A 0307;;;;N;LATIN SMALL LETTER Z DOT;;017B;;017B 017D;LATIN CAPITAL LETTER Z WITH CARON;Lu;0;L;005A 030C;;;;N;LATIN CAPITAL LETTER Z HACEK;;;017E; 017E;LATIN SMALL LETTER Z WITH CARON;Ll;0;L;007A 030C;;;;N;LATIN SMALL LETTER Z HACEK;;017D;;017D 017F;LATIN SMALL LETTER LONG S;Ll;0;L; 0073;;;;N;;;0053;;0053 0180;LATIN SMALL LETTER B WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER B BAR;;0243;;0243 0181;LATIN CAPITAL LETTER B WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B HOOK;;;0253; 0182;LATIN CAPITAL LETTER B WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER B TOPBAR;;;0183; 0183;LATIN SMALL LETTER B WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER B TOPBAR;;0182;;0182 0184;LATIN CAPITAL LETTER TONE SIX;Lu;0;L;;;;;N;;;;0185; 0185;LATIN SMALL LETTER TONE SIX;Ll;0;L;;;;;N;;;0184;;0184 0186;LATIN CAPITAL LETTER OPEN O;Lu;0;L;;;;;N;;;;0254; 0187;LATIN CAPITAL LETTER C WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER C HOOK;;;0188; 0188;LATIN SMALL LETTER C WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER C HOOK;;0187;;0187 0189;LATIN CAPITAL LETTER AFRICAN D;Lu;0;L;;;;;N;;*;;0256; 018A;LATIN CAPITAL LETTER D WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D HOOK;;;0257; 018B;LATIN CAPITAL LETTER D WITH TOPBAR;Lu;0;L;;;;;N;LATIN CAPITAL LETTER D TOPBAR;;;018C; 018C;LATIN SMALL LETTER D WITH TOPBAR;Ll;0;L;;;;;N;LATIN SMALL LETTER D TOPBAR;;018B;;018B 018D;LATIN SMALL LETTER TURNED DELTA;Ll;0;L;;;;;N;;;;; 018E;LATIN CAPITAL LETTER REVERSED E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER TURNED E;;;01DD; 018F;LATIN CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;0259; 0190;LATIN CAPITAL LETTER OPEN E;Lu;0;L;;;;;N;LATIN CAPITAL LETTER EPSILON;;;025B; 0191;LATIN CAPITAL LETTER F WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER F HOOK;;;0192; 0192;LATIN SMALL LETTER F WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT F;;0191;;0191 0193;LATIN CAPITAL LETTER G WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G HOOK;;;0260; 0194;LATIN CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;0263; 0195;LATIN SMALL LETTER HV;Ll;0;L;;;;;N;LATIN SMALL LETTER H V;hwair;01F6;;01F6 0196;LATIN CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;0269; 0197;LATIN CAPITAL LETTER I WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED I;;;0268; 0198;LATIN CAPITAL LETTER K WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER K HOOK;;;0199; 0199;LATIN SMALL LETTER K WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER K HOOK;;0198;;0198 019A;LATIN SMALL LETTER L WITH BAR;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED L;;023D;;023D 019B;LATIN SMALL LETTER LAMBDA WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED LAMBDA;;;; 019C;LATIN CAPITAL LETTER TURNED M;Lu;0;L;;;;;N;;;;026F; 019D;LATIN CAPITAL LETTER N WITH LEFT HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER N HOOK;;;0272; 019E;LATIN SMALL LETTER N WITH LONG RIGHT LEG;Ll;0;L;;;;;N;;;0220;;0220 019F;LATIN CAPITAL LETTER O WITH MIDDLE TILDE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER BARRED O;*;;0275; 01A0;LATIN CAPITAL LETTER O WITH HORN;Lu;0;L;004F 031B;;;;N;LATIN CAPITAL LETTER O HORN;;;01A1; 01A1;LATIN SMALL LETTER O WITH HORN;Ll;0;L;006F 031B;;;;N;LATIN SMALL LETTER O HORN;;01A0;;01A0 01A2;LATIN CAPITAL LETTER OI;Lu;0;L;;;;;N;LATIN CAPITAL LETTER O I;gha;;01A3; 01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;gha;01A2;;01A2 01A4;LATIN CAPITAL LETTER P WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER P HOOK;;;01A5; 01A5;LATIN SMALL LETTER P WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER P HOOK;;01A4;;01A4 01A6;LATIN LETTER YR;Lu;0;L;;;;;N;LATIN LETTER Y R;*;;0280; 01A7;LATIN CAPITAL LETTER TONE TWO;Lu;0;L;;;;;N;;;;01A8; 01A8;LATIN SMALL LETTER TONE TWO;Ll;0;L;;;;;N;;;01A7;;01A7 01A9;LATIN CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;0283; 01AA;LATIN LETTER REVERSED ESH LOOP;Ll;0;L;;;;;N;;;;; 01AB;LATIN SMALL LETTER T WITH PALATAL HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T PALATAL HOOK;;;; 01AC;LATIN CAPITAL LETTER T WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T HOOK;;;01AD; 01AD;LATIN SMALL LETTER T WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T HOOK;;01AC;;01AC 01AE;LATIN CAPITAL LETTER T WITH RETROFLEX HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER T RETROFLEX HOOK;;;0288; 01AF;LATIN CAPITAL LETTER U WITH HORN;Lu;0;L;0055 031B;;;;N;LATIN CAPITAL LETTER U HORN;;;01B0; 01B0;LATIN SMALL LETTER U WITH HORN;Ll;0;L;0075 031B;;;;N;LATIN SMALL LETTER U HORN;;01AF;;01AF 01B1;LATIN CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;028A; 01B2;LATIN CAPITAL LETTER V WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER SCRIPT V;;;028B; 01B3;LATIN CAPITAL LETTER Y WITH HOOK;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Y HOOK;;;01B4; 01B4;LATIN SMALL LETTER Y WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Y HOOK;;01B3;;01B3 01B5;LATIN CAPITAL LETTER Z WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER Z BAR;;;01B6; 01B6;LATIN SMALL LETTER Z WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER Z BAR;;01B5;;01B5 01B7;LATIN CAPITAL LETTER EZH;Lu;0;L;;;;;N;LATIN CAPITAL LETTER YOGH;;;0292; 01B8;LATIN CAPITAL LETTER EZH REVERSED;Lu;0;L;;;;;N;LATIN CAPITAL LETTER REVERSED YOGH;;;01B9; 01B9;LATIN SMALL LETTER EZH REVERSED;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED YOGH;;01B8;;01B8 01BA;LATIN SMALL LETTER EZH WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH WITH TAIL;;;; 01BB;LATIN LETTER TWO WITH STROKE;Lo;0;L;;;;;N;LATIN LETTER TWO BAR;;;; 01BC;LATIN CAPITAL LETTER TONE FIVE;Lu;0;L;;;;;N;;;;01BD; 01BD;LATIN SMALL LETTER TONE FIVE;Ll;0;L;;;;;N;;;01BC;;01BC 01BE;LATIN LETTER INVERTED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER INVERTED GLOTTAL STOP BAR;;;; 01BF;LATIN LETTER WYNN;Ll;0;L;;;;;N;;;01F7;;01F7 01C0;LATIN LETTER DENTAL CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE;;;; 01C1;LATIN LETTER LATERAL CLICK;Lo;0;L;;;;;N;LATIN LETTER DOUBLE PIPE;;;; 01C2;LATIN LETTER ALVEOLAR CLICK;Lo;0;L;;;;;N;LATIN LETTER PIPE DOUBLE BAR;;;; 01C3;LATIN LETTER RETROFLEX CLICK;Lo;0;L;;;;;N;LATIN LETTER EXCLAMATION MARK;;;; 01C4;LATIN CAPITAL LETTER DZ WITH CARON;Lu;0;L; 0044 017D;;;;N;LATIN CAPITAL LETTER D Z HACEK;;;01C6;01C5 01C5;LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON;Lt;0;L; 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5 01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L; 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5 01C7;LATIN CAPITAL LETTER LJ;Lu;0;L; 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8 01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L; 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8 01C9;LATIN SMALL LETTER LJ;Ll;0;L; 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8 01CA;LATIN CAPITAL LETTER NJ;Lu;0;L; 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB 01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L; 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB 01CC;LATIN SMALL LETTER NJ;Ll;0;L; 006E 006A;;;;N;LATIN SMALL LETTER N J;;01CA;;01CB 01CD;LATIN CAPITAL LETTER A WITH CARON;Lu;0;L;0041 030C;;;;N;LATIN CAPITAL LETTER A HACEK;;;01CE; 01CE;LATIN SMALL LETTER A WITH CARON;Ll;0;L;0061 030C;;;;N;LATIN SMALL LETTER A HACEK;;01CD;;01CD 01CF;LATIN CAPITAL LETTER I WITH CARON;Lu;0;L;0049 030C;;;;N;LATIN CAPITAL LETTER I HACEK;;;01D0; 01D0;LATIN SMALL LETTER I WITH CARON;Ll;0;L;0069 030C;;;;N;LATIN SMALL LETTER I HACEK;;01CF;;01CF 01D1;LATIN CAPITAL LETTER O WITH CARON;Lu;0;L;004F 030C;;;;N;LATIN CAPITAL LETTER O HACEK;;;01D2; 01D2;LATIN SMALL LETTER O WITH CARON;Ll;0;L;006F 030C;;;;N;LATIN SMALL LETTER O HACEK;;01D1;;01D1 01D3;LATIN CAPITAL LETTER U WITH CARON;Lu;0;L;0055 030C;;;;N;LATIN CAPITAL LETTER U HACEK;;;01D4; 01D4;LATIN SMALL LETTER U WITH CARON;Ll;0;L;0075 030C;;;;N;LATIN SMALL LETTER U HACEK;;01D3;;01D3 01D5;LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON;Lu;0;L;00DC 0304;;;;N;LATIN CAPITAL LETTER U DIAERESIS MACRON;;;01D6; 01D6;LATIN SMALL LETTER U WITH DIAERESIS AND MACRON;Ll;0;L;00FC 0304;;;;N;LATIN SMALL LETTER U DIAERESIS MACRON;;01D5;;01D5 01D7;LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE;Lu;0;L;00DC 0301;;;;N;LATIN CAPITAL LETTER U DIAERESIS ACUTE;;;01D8; 01D8;LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE;Ll;0;L;00FC 0301;;;;N;LATIN SMALL LETTER U DIAERESIS ACUTE;;01D7;;01D7 01D9;LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON;Lu;0;L;00DC 030C;;;;N;LATIN CAPITAL LETTER U DIAERESIS HACEK;;;01DA; 01DA;LATIN SMALL LETTER U WITH DIAERESIS AND CARON;Ll;0;L;00FC 030C;;;;N;LATIN SMALL LETTER U DIAERESIS HACEK;;01D9;;01D9 01DB;LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE;Lu;0;L;00DC 0300;;;;N;LATIN CAPITAL LETTER U DIAERESIS GRAVE;;;01DC; 01DC;LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE;Ll;0;L;00FC 0300;;;;N;LATIN SMALL LETTER U DIAERESIS GRAVE;;01DB;;01DB 01DD;LATIN SMALL LETTER TURNED E;Ll;0;L;;;;;N;;;018E;;018E 01DE;LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON;Lu;0;L;00C4 0304;;;;N;LATIN CAPITAL LETTER A DIAERESIS MACRON;;;01DF; 01DF;LATIN SMALL LETTER A WITH DIAERESIS AND MACRON;Ll;0;L;00E4 0304;;;;N;LATIN SMALL LETTER A DIAERESIS MACRON;;01DE;;01DE 01E0;LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON;Lu;0;L;0226 0304;;;;N;LATIN CAPITAL LETTER A DOT MACRON;;;01E1; 01E1;LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON;Ll;0;L;0227 0304;;;;N;LATIN SMALL LETTER A DOT MACRON;;01E0;;01E0 01E2;LATIN CAPITAL LETTER AE WITH MACRON;Lu;0;L;00C6 0304;;;;N;LATIN CAPITAL LETTER A E MACRON;ash *;;01E3; 01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;ash *;01E2;;01E2 01E4;LATIN CAPITAL LETTER G WITH STROKE;Lu;0;L;;;;;N;LATIN CAPITAL LETTER G BAR;;;01E5; 01E5;LATIN SMALL LETTER G WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER G BAR;;01E4;;01E4 01E6;LATIN CAPITAL LETTER G WITH CARON;Lu;0;L;0047 030C;;;;N;LATIN CAPITAL LETTER G HACEK;;;01E7; 01E7;LATIN SMALL LETTER G WITH CARON;Ll;0;L;0067 030C;;;;N;LATIN SMALL LETTER G HACEK;;01E6;;01E6 01E8;LATIN CAPITAL LETTER K WITH CARON;Lu;0;L;004B 030C;;;;N;LATIN CAPITAL LETTER K HACEK;;;01E9; 01E9;LATIN SMALL LETTER K WITH CARON;Ll;0;L;006B 030C;;;;N;LATIN SMALL LETTER K HACEK;;01E8;;01E8 01EA;LATIN CAPITAL LETTER O WITH OGONEK;Lu;0;L;004F 0328;;;;N;LATIN CAPITAL LETTER O OGONEK;;;01EB; 01EB;LATIN SMALL LETTER O WITH OGONEK;Ll;0;L;006F 0328;;;;N;LATIN SMALL LETTER O OGONEK;;01EA;;01EA 01EC;LATIN CAPITAL LETTER O WITH OGONEK AND MACRON;Lu;0;L;01EA 0304;;;;N;LATIN CAPITAL LETTER O OGONEK MACRON;;;01ED; 01ED;LATIN SMALL LETTER O WITH OGONEK AND MACRON;Ll;0;L;01EB 0304;;;;N;LATIN SMALL LETTER O OGONEK MACRON;;01EC;;01EC 01EE;LATIN CAPITAL LETTER EZH WITH CARON;Lu;0;L;01B7 030C;;;;N;LATIN CAPITAL LETTER YOGH HACEK;;;01EF; 01EF;LATIN SMALL LETTER EZH WITH CARON;Ll;0;L;0292 030C;;;;N;LATIN SMALL LETTER YOGH HACEK;;01EE;;01EE 01F0;LATIN SMALL LETTER J WITH CARON;Ll;0;L;006A 030C;;;;N;LATIN SMALL LETTER J HACEK;;;; 01F1;LATIN CAPITAL LETTER DZ;Lu;0;L; 0044 005A;;;;N;;;;01F3;01F2 01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L; 0044 007A;;;;N;;;01F1;01F3;01F2 01F3;LATIN SMALL LETTER DZ;Ll;0;L; 0064 007A;;;;N;;;01F1;;01F2 01F4;LATIN CAPITAL LETTER G WITH ACUTE;Lu;0;L;0047 0301;;;;N;;;;01F5; 01F5;LATIN SMALL LETTER G WITH ACUTE;Ll;0;L;0067 0301;;;;N;;;01F4;;01F4 01F6;LATIN CAPITAL LETTER HWAIR;Lu;0;L;;;;;N;;;;0195; 01F7;LATIN CAPITAL LETTER WYNN;Lu;0;L;;;;;N;;;;01BF; 01F8;LATIN CAPITAL LETTER N WITH GRAVE;Lu;0;L;004E 0300;;;;N;;;;01F9; 01F9;LATIN SMALL LETTER N WITH GRAVE;Ll;0;L;006E 0300;;;;N;;;01F8;;01F8 01FA;LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE;Lu;0;L;00C5 0301;;;;N;;;;01FB; 01FB;LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE;Ll;0;L;00E5 0301;;;;N;;;01FA;;01FA 01FC;LATIN CAPITAL LETTER AE WITH ACUTE;Lu;0;L;00C6 0301;;;;N;;ash *;;01FD; 01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;ash *;01FC;;01FC 01FE;LATIN CAPITAL LETTER O WITH STROKE AND ACUTE;Lu;0;L;00D8 0301;;;;N;;;;01FF; 01FF;LATIN SMALL LETTER O WITH STROKE AND ACUTE;Ll;0;L;00F8 0301;;;;N;;;01FE;;01FE 0200;LATIN CAPITAL LETTER A WITH DOUBLE GRAVE;Lu;0;L;0041 030F;;;;N;;;;0201; 0201;LATIN SMALL LETTER A WITH DOUBLE GRAVE;Ll;0;L;0061 030F;;;;N;;;0200;;0200 0202;LATIN CAPITAL LETTER A WITH INVERTED BREVE;Lu;0;L;0041 0311;;;;N;;;;0203; 0203;LATIN SMALL LETTER A WITH INVERTED BREVE;Ll;0;L;0061 0311;;;;N;;;0202;;0202 0204;LATIN CAPITAL LETTER E WITH DOUBLE GRAVE;Lu;0;L;0045 030F;;;;N;;;;0205; 0205;LATIN SMALL LETTER E WITH DOUBLE GRAVE;Ll;0;L;0065 030F;;;;N;;;0204;;0204 0206;LATIN CAPITAL LETTER E WITH INVERTED BREVE;Lu;0;L;0045 0311;;;;N;;;;0207; 0207;LATIN SMALL LETTER E WITH INVERTED BREVE;Ll;0;L;0065 0311;;;;N;;;0206;;0206 0208;LATIN CAPITAL LETTER I WITH DOUBLE GRAVE;Lu;0;L;0049 030F;;;;N;;;;0209; 0209;LATIN SMALL LETTER I WITH DOUBLE GRAVE;Ll;0;L;0069 030F;;;;N;;;0208;;0208 020A;LATIN CAPITAL LETTER I WITH INVERTED BREVE;Lu;0;L;0049 0311;;;;N;;;;020B; 020B;LATIN SMALL LETTER I WITH INVERTED BREVE;Ll;0;L;0069 0311;;;;N;;;020A;;020A 020C;LATIN CAPITAL LETTER O WITH DOUBLE GRAVE;Lu;0;L;004F 030F;;;;N;;;;020D; 020D;LATIN SMALL LETTER O WITH DOUBLE GRAVE;Ll;0;L;006F 030F;;;;N;;;020C;;020C 020E;LATIN CAPITAL LETTER O WITH INVERTED BREVE;Lu;0;L;004F 0311;;;;N;;;;020F; 020F;LATIN SMALL LETTER O WITH INVERTED BREVE;Ll;0;L;006F 0311;;;;N;;;020E;;020E 0210;LATIN CAPITAL LETTER R WITH DOUBLE GRAVE;Lu;0;L;0052 030F;;;;N;;;;0211; 0211;LATIN SMALL LETTER R WITH DOUBLE GRAVE;Ll;0;L;0072 030F;;;;N;;;0210;;0210 0212;LATIN CAPITAL LETTER R WITH INVERTED BREVE;Lu;0;L;0052 0311;;;;N;;;;0213; 0213;LATIN SMALL LETTER R WITH INVERTED BREVE;Ll;0;L;0072 0311;;;;N;;;0212;;0212 0214;LATIN CAPITAL LETTER U WITH DOUBLE GRAVE;Lu;0;L;0055 030F;;;;N;;;;0215; 0215;LATIN SMALL LETTER U WITH DOUBLE GRAVE;Ll;0;L;0075 030F;;;;N;;;0214;;0214 0216;LATIN CAPITAL LETTER U WITH INVERTED BREVE;Lu;0;L;0055 0311;;;;N;;;;0217; 0217;LATIN SMALL LETTER U WITH INVERTED BREVE;Ll;0;L;0075 0311;;;;N;;;0216;;0216 0218;LATIN CAPITAL LETTER S WITH COMMA BELOW;Lu;0;L;0053 0326;;;;N;;*;;0219; 0219;LATIN SMALL LETTER S WITH COMMA BELOW;Ll;0;L;0073 0326;;;;N;;*;0218;;0218 021A;LATIN CAPITAL LETTER T WITH COMMA BELOW;Lu;0;L;0054 0326;;;;N;;*;;021B; 021B;LATIN SMALL LETTER T WITH COMMA BELOW;Ll;0;L;0074 0326;;;;N;;*;021A;;021A 021C;LATIN CAPITAL LETTER YOGH;Lu;0;L;;;;;N;;;;021D; 021D;LATIN SMALL LETTER YOGH;Ll;0;L;;;;;N;;;021C;;021C 021E;LATIN CAPITAL LETTER H WITH CARON;Lu;0;L;0048 030C;;;;N;;;;021F; 021F;LATIN SMALL LETTER H WITH CARON;Ll;0;L;0068 030C;;;;N;;;021E;;021E 0220;LATIN CAPITAL LETTER N WITH LONG RIGHT LEG;Lu;0;L;;;;;N;;;;019E; 0221;LATIN SMALL LETTER D WITH CURL;Ll;0;L;;;;;N;;;;; 0222;LATIN CAPITAL LETTER OU;Lu;0;L;;;;;N;;;;0223; 0223;LATIN SMALL LETTER OU;Ll;0;L;;;;;N;;;0222;;0222 0224;LATIN CAPITAL LETTER Z WITH HOOK;Lu;0;L;;;;;N;;;;0225; 0225;LATIN SMALL LETTER Z WITH HOOK;Ll;0;L;;;;;N;;;0224;;0224 0226;LATIN CAPITAL LETTER A WITH DOT ABOVE;Lu;0;L;0041 0307;;;;N;;;;0227; 0227;LATIN SMALL LETTER A WITH DOT ABOVE;Ll;0;L;0061 0307;;;;N;;;0226;;0226 0228;LATIN CAPITAL LETTER E WITH CEDILLA;Lu;0;L;0045 0327;;;;N;;;;0229; 0229;LATIN SMALL LETTER E WITH CEDILLA;Ll;0;L;0065 0327;;;;N;;;0228;;0228 022A;LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON;Lu;0;L;00D6 0304;;;;N;;;;022B; 022B;LATIN SMALL LETTER O WITH DIAERESIS AND MACRON;Ll;0;L;00F6 0304;;;;N;;;022A;;022A 022C;LATIN CAPITAL LETTER O WITH TILDE AND MACRON;Lu;0;L;00D5 0304;;;;N;;;;022D; 022D;LATIN SMALL LETTER O WITH TILDE AND MACRON;Ll;0;L;00F5 0304;;;;N;;;022C;;022C 022E;LATIN CAPITAL LETTER O WITH DOT ABOVE;Lu;0;L;004F 0307;;;;N;;;;022F; 022F;LATIN SMALL LETTER O WITH DOT ABOVE;Ll;0;L;006F 0307;;;;N;;;022E;;022E 0230;LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON;Lu;0;L;022E 0304;;;;N;;;;0231; 0231;LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON;Ll;0;L;022F 0304;;;;N;;;0230;;0230 0232;LATIN CAPITAL LETTER Y WITH MACRON;Lu;0;L;0059 0304;;;;N;;;;0233; 0233;LATIN SMALL LETTER Y WITH MACRON;Ll;0;L;0079 0304;;;;N;;;0232;;0232 0234;LATIN SMALL LETTER L WITH CURL;Ll;0;L;;;;;N;;;;; 0235;LATIN SMALL LETTER N WITH CURL;Ll;0;L;;;;;N;;;;; 0236;LATIN SMALL LETTER T WITH CURL;Ll;0;L;;;;;N;;;;; 0237;LATIN SMALL LETTER DOTLESS J;Ll;0;L;;;;;N;;;;; 0238;LATIN SMALL LETTER DB DIGRAPH;Ll;0;L;;;;;N;;;;; 0239;LATIN SMALL LETTER QP DIGRAPH;Ll;0;L;;;;;N;;;;; 023A;LATIN CAPITAL LETTER A WITH STROKE;Lu;0;L;;;;;N;;;;2C65; 023B;LATIN CAPITAL LETTER C WITH STROKE;Lu;0;L;;;;;N;;;;023C; 023C;LATIN SMALL LETTER C WITH STROKE;Ll;0;L;;;;;N;;;023B;;023B 023D;LATIN CAPITAL LETTER L WITH BAR;Lu;0;L;;;;;N;;;;019A; 023E;LATIN CAPITAL LETTER T WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;2C66; 023F;LATIN SMALL LETTER S WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; 0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;;; 0241;LATIN CAPITAL LETTER GLOTTAL STOP;Lu;0;L;;;;;N;;;;0242; 0242;LATIN SMALL LETTER GLOTTAL STOP;Ll;0;L;;;;;N;;;0241;;0241 0243;LATIN CAPITAL LETTER B WITH STROKE;Lu;0;L;;;;;N;;;;0180; 0244;LATIN CAPITAL LETTER U BAR;Lu;0;L;;;;;N;;;;0289; 0245;LATIN CAPITAL LETTER TURNED V;Lu;0;L;;;;;N;;;;028C; 0246;LATIN CAPITAL LETTER E WITH STROKE;Lu;0;L;;;;;N;;;;0247; 0247;LATIN SMALL LETTER E WITH STROKE;Ll;0;L;;;;;N;;;0246;;0246 0248;LATIN CAPITAL LETTER J WITH STROKE;Lu;0;L;;;;;N;;;;0249; 0249;LATIN SMALL LETTER J WITH STROKE;Ll;0;L;;;;;N;;;0248;;0248 024A;LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL;Lu;0;L;;;;;N;;;;024B; 024B;LATIN SMALL LETTER Q WITH HOOK TAIL;Ll;0;L;;;;;N;;;024A;;024A 024C;LATIN CAPITAL LETTER R WITH STROKE;Lu;0;L;;;;;N;;;;024D; 024D;LATIN SMALL LETTER R WITH STROKE;Ll;0;L;;;;;N;;;024C;;024C 024E;LATIN CAPITAL LETTER Y WITH STROKE;Lu;0;L;;;;;N;;;;024F; 024F;LATIN SMALL LETTER Y WITH STROKE;Ll;0;L;;;;;N;;;024E;;024E 0250;LATIN SMALL LETTER TURNED A;Ll;0;L;;;;;N;;;;; 0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;;; 0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;;; 0253;LATIN SMALL LETTER B WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER B HOOK;;0181;;0181 0254;LATIN SMALL LETTER OPEN O;Ll;0;L;;;;;N;;;0186;;0186 0255;LATIN SMALL LETTER C WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER C CURL;;;; 0256;LATIN SMALL LETTER D WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER D RETROFLEX HOOK;;0189;;0189 0257;LATIN SMALL LETTER D WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER D HOOK;;018A;;018A 0258;LATIN SMALL LETTER REVERSED E;Ll;0;L;;;;;N;;;;; 0259;LATIN SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;018F;;018F 025A;LATIN SMALL LETTER SCHWA WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCHWA HOOK;;;; 025B;LATIN SMALL LETTER OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER EPSILON;;0190;;0190 025C;LATIN SMALL LETTER REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON;;;; 025D;LATIN SMALL LETTER REVERSED OPEN E WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED EPSILON HOOK;;;; 025E;LATIN SMALL LETTER CLOSED REVERSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED REVERSED EPSILON;;;; 025F;LATIN SMALL LETTER DOTLESS J WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR;;;; 0260;LATIN SMALL LETTER G WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER G HOOK;;0193;;0193 0261;LATIN SMALL LETTER SCRIPT G;Ll;0;L;;;;;N;;;;; 0262;LATIN LETTER SMALL CAPITAL G;Ll;0;L;;;;;N;;;;; 0263;LATIN SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0194;;0194 0264;LATIN SMALL LETTER RAMS HORN;Ll;0;L;;;;;N;LATIN SMALL LETTER BABY GAMMA;;;; 0265;LATIN SMALL LETTER TURNED H;Ll;0;L;;;;;N;;;;; 0266;LATIN SMALL LETTER H WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER H HOOK;;;; 0267;LATIN SMALL LETTER HENG WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER HENG HOOK;;;; 0268;LATIN SMALL LETTER I WITH STROKE;Ll;0;L;;;;;N;LATIN SMALL LETTER BARRED I;;0197;;0197 0269;LATIN SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0196;;0196 026A;LATIN LETTER SMALL CAPITAL I;Ll;0;L;;;;;N;;;;; 026B;LATIN SMALL LETTER L WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;2C62;;2C62 026C;LATIN SMALL LETTER L WITH BELT;Ll;0;L;;;;;N;LATIN SMALL LETTER L BELT;;;; 026D;LATIN SMALL LETTER L WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER L RETROFLEX HOOK;;;; 026E;LATIN SMALL LETTER LEZH;Ll;0;L;;;;;N;LATIN SMALL LETTER L YOGH;;;; 026F;LATIN SMALL LETTER TURNED M;Ll;0;L;;;;;N;;;019C;;019C 0270;LATIN SMALL LETTER TURNED M WITH LONG LEG;Ll;0;L;;;;;N;;;;; 0271;LATIN SMALL LETTER M WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER M HOOK;;;; 0272;LATIN SMALL LETTER N WITH LEFT HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N HOOK;;019D;;019D 0273;LATIN SMALL LETTER N WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER N RETROFLEX HOOK;;;; 0274;LATIN LETTER SMALL CAPITAL N;Ll;0;L;;;;;N;;;;; 0275;LATIN SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;019F;;019F 0276;LATIN LETTER SMALL CAPITAL OE;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL O E;;;; 0277;LATIN SMALL LETTER CLOSED OMEGA;Ll;0;L;;;;;N;;;;; 0278;LATIN SMALL LETTER PHI;Ll;0;L;;;;;N;;;;; 0279;LATIN SMALL LETTER TURNED R;Ll;0;L;;;;;N;;;;; 027A;LATIN SMALL LETTER TURNED R WITH LONG LEG;Ll;0;L;;;;;N;;;;; 027B;LATIN SMALL LETTER TURNED R WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED R HOOK;;;; 027C;LATIN SMALL LETTER R WITH LONG LEG;Ll;0;L;;;;;N;;;;; 027D;LATIN SMALL LETTER R WITH TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER R HOOK;;2C64;;2C64 027E;LATIN SMALL LETTER R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER FISHHOOK R;;;; 027F;LATIN SMALL LETTER REVERSED R WITH FISHHOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER REVERSED FISHHOOK R;;;; 0280;LATIN LETTER SMALL CAPITAL R;Ll;0;L;;;;;N;;*;01A6;;01A6 0281;LATIN LETTER SMALL CAPITAL INVERTED R;Ll;0;L;;;;;N;;;;; 0282;LATIN SMALL LETTER S WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER S HOOK;;;; 0283;LATIN SMALL LETTER ESH;Ll;0;L;;;;;N;;;01A9;;01A9 0284;LATIN SMALL LETTER DOTLESS J WITH STROKE AND HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER DOTLESS J BAR HOOK;;;; 0285;LATIN SMALL LETTER SQUAT REVERSED ESH;Ll;0;L;;;;;N;;;;; 0286;LATIN SMALL LETTER ESH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER ESH CURL;;;; 0287;LATIN SMALL LETTER TURNED T;Ll;0;L;;;;;N;;;;; 0288;LATIN SMALL LETTER T WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER T RETROFLEX HOOK;;01AE;;01AE 0289;LATIN SMALL LETTER U BAR;Ll;0;L;;;;;N;;;0244;;0244 028A;LATIN SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;01B1;;01B1 028B;LATIN SMALL LETTER V WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT V;;01B2;;01B2 028C;LATIN SMALL LETTER TURNED V;Ll;0;L;;;;;N;;;0245;;0245 028D;LATIN SMALL LETTER TURNED W;Ll;0;L;;;;;N;;;;; 028E;LATIN SMALL LETTER TURNED Y;Ll;0;L;;;;;N;;;;; 028F;LATIN LETTER SMALL CAPITAL Y;Ll;0;L;;;;;N;;;;; 0290;LATIN SMALL LETTER Z WITH RETROFLEX HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Z RETROFLEX HOOK;;;; 0291;LATIN SMALL LETTER Z WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER Z CURL;;;; 0292;LATIN SMALL LETTER EZH;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH;;01B7;;01B7 0293;LATIN SMALL LETTER EZH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER YOGH CURL;;;; 0294;LATIN LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; 0295;LATIN LETTER PHARYNGEAL VOICED FRICATIVE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP;;;; 0296;LATIN LETTER INVERTED GLOTTAL STOP;Ll;0;L;;;;;N;;;;; 0297;LATIN LETTER STRETCHED C;Ll;0;L;;;;;N;;;;; 0298;LATIN LETTER BILABIAL CLICK;Ll;0;L;;;;;N;LATIN LETTER BULLSEYE;;;; 0299;LATIN LETTER SMALL CAPITAL B;Ll;0;L;;;;;N;;;;; 029A;LATIN SMALL LETTER CLOSED OPEN E;Ll;0;L;;;;;N;LATIN SMALL LETTER CLOSED EPSILON;;;; 029B;LATIN LETTER SMALL CAPITAL G WITH HOOK;Ll;0;L;;;;;N;LATIN LETTER SMALL CAPITAL G HOOK;;;; 029C;LATIN LETTER SMALL CAPITAL H;Ll;0;L;;;;;N;;;;; 029D;LATIN SMALL LETTER J WITH CROSSED-TAIL;Ll;0;L;;;;;N;LATIN SMALL LETTER CROSSED-TAIL J;;;; 029E;LATIN SMALL LETTER TURNED K;Ll;0;L;;;;;N;;;;; 029F;LATIN LETTER SMALL CAPITAL L;Ll;0;L;;;;;N;;;;; 02A0;LATIN SMALL LETTER Q WITH HOOK;Ll;0;L;;;;;N;LATIN SMALL LETTER Q HOOK;;;; 02A1;LATIN LETTER GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER GLOTTAL STOP BAR;;;; 02A2;LATIN LETTER REVERSED GLOTTAL STOP WITH STROKE;Ll;0;L;;;;;N;LATIN LETTER REVERSED GLOTTAL STOP BAR;;;; 02A3;LATIN SMALL LETTER DZ DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z;;;; 02A4;LATIN SMALL LETTER DEZH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER D YOGH;;;; 02A5;LATIN SMALL LETTER DZ DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER D Z CURL;;;; 02A6;LATIN SMALL LETTER TS DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T S;;;; 02A7;LATIN SMALL LETTER TESH DIGRAPH;Ll;0;L;;;;;N;LATIN SMALL LETTER T ESH;;;; 02A8;LATIN SMALL LETTER TC DIGRAPH WITH CURL;Ll;0;L;;;;;N;LATIN SMALL LETTER T C CURL;;;; 02A9;LATIN SMALL LETTER FENG DIGRAPH;Ll;0;L;;;;;N;;;;; 02AA;LATIN SMALL LETTER LS DIGRAPH;Ll;0;L;;;;;N;;;;; 02AB;LATIN SMALL LETTER LZ DIGRAPH;Ll;0;L;;;;;N;;;;; 02AC;LATIN LETTER BILABIAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; 02AD;LATIN LETTER BIDENTAL PERCUSSIVE;Ll;0;L;;;;;N;;;;; 02AE;LATIN SMALL LETTER TURNED H WITH FISHHOOK;Ll;0;L;;;;;N;;;;; 02AF;LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL;Ll;0;L;;;;;N;;;;; 02B0;MODIFIER LETTER SMALL H;Lm;0;L; 0068;;;;N;;;;; 02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L; 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;; 02B2;MODIFIER LETTER SMALL J;Lm;0;L; 006A;;;;N;;;;; 02B3;MODIFIER LETTER SMALL R;Lm;0;L; 0072;;;;N;;;;; 02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L; 0279;;;;N;;;;; 02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L; 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;; 02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L; 0281;;;;N;;;;; 02B7;MODIFIER LETTER SMALL W;Lm;0;L; 0077;;;;N;;;;; 02B8;MODIFIER LETTER SMALL Y;Lm;0;L; 0079;;;;N;;;;; 02B9;MODIFIER LETTER PRIME;Lm;0;ON;;;;;N;;;;; 02BA;MODIFIER LETTER DOUBLE PRIME;Lm;0;ON;;;;;N;;;;; 02BB;MODIFIER LETTER TURNED COMMA;Lm;0;L;;;;;N;;;;; 02BC;MODIFIER LETTER APOSTROPHE;Lm;0;L;;;;;N;;;;; 02BD;MODIFIER LETTER REVERSED COMMA;Lm;0;L;;;;;N;;;;; 02BE;MODIFIER LETTER RIGHT HALF RING;Lm;0;L;;;;;N;;;;; 02BF;MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; 02C0;MODIFIER LETTER GLOTTAL STOP;Lm;0;L;;;;;N;;;;; 02C1;MODIFIER LETTER REVERSED GLOTTAL STOP;Lm;0;L;;;;;N;;;;; 02C2;MODIFIER LETTER LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02C3;MODIFIER LETTER RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02C4;MODIFIER LETTER UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02C5;MODIFIER LETTER DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02C6;MODIFIER LETTER CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER CIRCUMFLEX;;;; 02C7;CARON;Lm;0;ON;;;;;N;MODIFIER LETTER HACEK;Mandarin Chinese third tone;;; 02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;; 02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;Mandarin Chinese first tone;;; 02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;Mandarin Chinese second tone;;; 02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;Mandarin Chinese fourth tone;;; 02CC;MODIFIER LETTER LOW VERTICAL LINE;Lm;0;ON;;;;;N;;;;; 02CD;MODIFIER LETTER LOW MACRON;Lm;0;ON;;;;;N;;;;; 02CE;MODIFIER LETTER LOW GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW GRAVE;;;; 02CF;MODIFIER LETTER LOW ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER LOW ACUTE;;;; 02D0;MODIFIER LETTER TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; 02D1;MODIFIER LETTER HALF TRIANGULAR COLON;Lm;0;L;;;;;N;;;;; 02D2;MODIFIER LETTER CENTRED RIGHT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED RIGHT HALF RING;;;; 02D3;MODIFIER LETTER CENTRED LEFT HALF RING;Sk;0;ON;;;;;N;MODIFIER LETTER CENTERED LEFT HALF RING;;;; 02D4;MODIFIER LETTER UP TACK;Sk;0;ON;;;;;N;;;;; 02D5;MODIFIER LETTER DOWN TACK;Sk;0;ON;;;;;N;;;;; 02D6;MODIFIER LETTER PLUS SIGN;Sk;0;ON;;;;;N;;;;; 02D7;MODIFIER LETTER MINUS SIGN;Sk;0;ON;;;;;N;;;;; 02D8;BREVE;Sk;0;ON; 0020 0306;;;;N;SPACING BREVE;;;; 02D9;DOT ABOVE;Sk;0;ON; 0020 0307;;;;N;SPACING DOT ABOVE;Mandarin Chinese light tone;;; 02DA;RING ABOVE;Sk;0;ON; 0020 030A;;;;N;SPACING RING ABOVE;;;; 02DB;OGONEK;Sk;0;ON; 0020 0328;;;;N;SPACING OGONEK;;;; 02DC;SMALL TILDE;Sk;0;ON; 0020 0303;;;;N;SPACING TILDE;;;; 02DD;DOUBLE ACUTE ACCENT;Sk;0;ON; 0020 030B;;;;N;SPACING DOUBLE ACUTE;;;; 02DE;MODIFIER LETTER RHOTIC HOOK;Sk;0;ON;;;;;N;;;;; 02DF;MODIFIER LETTER CROSS ACCENT;Sk;0;ON;;;;;N;;;;; 02E0;MODIFIER LETTER SMALL GAMMA;Lm;0;L; 0263;;;;N;;;;; 02E1;MODIFIER LETTER SMALL L;Lm;0;L; 006C;;;;N;;;;; 02E2;MODIFIER LETTER SMALL S;Lm;0;L; 0073;;;;N;;;;; 02E3;MODIFIER LETTER SMALL X;Lm;0;L; 0078;;;;N;;;;; 02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L; 0295;;;;N;;;;; 02E5;MODIFIER LETTER EXTRA-HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; 02E6;MODIFIER LETTER HIGH TONE BAR;Sk;0;ON;;;;;N;;;;; 02E7;MODIFIER LETTER MID TONE BAR;Sk;0;ON;;;;;N;;;;; 02E8;MODIFIER LETTER LOW TONE BAR;Sk;0;ON;;;;;N;;;;; 02E9;MODIFIER LETTER EXTRA-LOW TONE BAR;Sk;0;ON;;;;;N;;;;; 02EA;MODIFIER LETTER YIN DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; 02EB;MODIFIER LETTER YANG DEPARTING TONE MARK;Sk;0;ON;;;;;N;;;;; 02EC;MODIFIER LETTER VOICING;Sk;0;ON;;;;;N;;;;; 02ED;MODIFIER LETTER UNASPIRATED;Sk;0;ON;;;;;N;;;;; 02EE;MODIFIER LETTER DOUBLE APOSTROPHE;Lm;0;L;;;;;N;;;;; 02EF;MODIFIER LETTER LOW DOWN ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02F0;MODIFIER LETTER LOW UP ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02F1;MODIFIER LETTER LOW LEFT ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02F2;MODIFIER LETTER LOW RIGHT ARROWHEAD;Sk;0;ON;;;;;N;;;;; 02F3;MODIFIER LETTER LOW RING;Sk;0;ON;;;;;N;;;;; 02F4;MODIFIER LETTER MIDDLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; 02F5;MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT;Sk;0;ON;;;;;N;;;;; 02F6;MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT;Sk;0;ON;;;;;N;;;;; 02F7;MODIFIER LETTER LOW TILDE;Sk;0;ON;;;;;N;;;;; 02F8;MODIFIER LETTER RAISED COLON;Sk;0;ON;;;;;N;;;;; 02F9;MODIFIER LETTER BEGIN HIGH TONE;Sk;0;ON;;;;;N;;;;; 02FA;MODIFIER LETTER END HIGH TONE;Sk;0;ON;;;;;N;;;;; 02FB;MODIFIER LETTER BEGIN LOW TONE;Sk;0;ON;;;;;N;;;;; 02FC;MODIFIER LETTER END LOW TONE;Sk;0;ON;;;;;N;;;;; 02FD;MODIFIER LETTER SHELF;Sk;0;ON;;;;;N;;;;; 02FE;MODIFIER LETTER OPEN SHELF;Sk;0;ON;;;;;N;;;;; 02FF;MODIFIER LETTER LOW LEFT ARROW;Sk;0;ON;;;;;N;;;;; 0300;COMBINING GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING GRAVE;Varia;;; 0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;Oxia, Tonos;;; 0302;COMBINING CIRCUMFLEX ACCENT;Mn;230;NSM;;;;;N;NON-SPACING CIRCUMFLEX;;;; 0303;COMBINING TILDE;Mn;230;NSM;;;;;N;NON-SPACING TILDE;;;; 0304;COMBINING MACRON;Mn;230;NSM;;;;;N;NON-SPACING MACRON;;;; 0305;COMBINING OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING OVERSCORE;;;; 0306;COMBINING BREVE;Mn;230;NSM;;;;;N;NON-SPACING BREVE;Vrachy;;; 0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;; 0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;Dialytika;;; 0309;COMBINING HOOK ABOVE;Mn;230;NSM;;;;;N;NON-SPACING HOOK ABOVE;;;; 030A;COMBINING RING ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RING ABOVE;;;; 030B;COMBINING DOUBLE ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE ACUTE;;;; 030C;COMBINING CARON;Mn;230;NSM;;;;;N;NON-SPACING HACEK;;;; 030D;COMBINING VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL LINE ABOVE;;;; 030E;COMBINING DOUBLE VERTICAL LINE ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE VERTICAL LINE ABOVE;;;; 030F;COMBINING DOUBLE GRAVE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE GRAVE;;;; 0310;COMBINING CANDRABINDU;Mn;230;NSM;;;;;N;NON-SPACING CANDRABINDU;;;; 0311;COMBINING INVERTED BREVE;Mn;230;NSM;;;;;N;NON-SPACING INVERTED BREVE;;;; 0312;COMBINING TURNED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING TURNED COMMA ABOVE;;;; 0313;COMBINING COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING COMMA ABOVE;Psili;;; 0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;Dasia;;; 0315;COMBINING COMMA ABOVE RIGHT;Mn;232;NSM;;;;;N;NON-SPACING COMMA ABOVE RIGHT;;;; 0316;COMBINING GRAVE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING GRAVE BELOW;;;; 0317;COMBINING ACUTE ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING ACUTE BELOW;;;; 0318;COMBINING LEFT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT TACK BELOW;;;; 0319;COMBINING RIGHT TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT TACK BELOW;;;; 031A;COMBINING LEFT ANGLE ABOVE;Mn;232;NSM;;;;;N;NON-SPACING LEFT ANGLE ABOVE;;;; 031B;COMBINING HORN;Mn;216;NSM;;;;;N;NON-SPACING HORN;;;; 031C;COMBINING LEFT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING LEFT HALF RING BELOW;;;; 031D;COMBINING UP TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING UP TACK BELOW;;;; 031E;COMBINING DOWN TACK BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOWN TACK BELOW;;;; 031F;COMBINING PLUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING PLUS SIGN BELOW;;;; 0320;COMBINING MINUS SIGN BELOW;Mn;220;NSM;;;;;N;NON-SPACING MINUS SIGN BELOW;;;; 0321;COMBINING PALATALIZED HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING PALATALIZED HOOK BELOW;;;; 0322;COMBINING RETROFLEX HOOK BELOW;Mn;202;NSM;;;;;N;NON-SPACING RETROFLEX HOOK BELOW;;;; 0323;COMBINING DOT BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOT BELOW;;;; 0324;COMBINING DIAERESIS BELOW;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE DOT BELOW;;;; 0325;COMBINING RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RING BELOW;;;; 0326;COMBINING COMMA BELOW;Mn;220;NSM;;;;;N;NON-SPACING COMMA BELOW;;;; 0327;COMBINING CEDILLA;Mn;202;NSM;;;;;N;NON-SPACING CEDILLA;;;; 0328;COMBINING OGONEK;Mn;202;NSM;;;;;N;NON-SPACING OGONEK;;;; 0329;COMBINING VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;NON-SPACING VERTICAL LINE BELOW;;;; 032A;COMBINING BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BRIDGE BELOW;;;; 032B;COMBINING INVERTED DOUBLE ARCH BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED DOUBLE ARCH BELOW;;;; 032C;COMBINING CARON BELOW;Mn;220;NSM;;;;;N;NON-SPACING HACEK BELOW;;;; 032D;COMBINING CIRCUMFLEX ACCENT BELOW;Mn;220;NSM;;;;;N;NON-SPACING CIRCUMFLEX BELOW;;;; 032E;COMBINING BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING BREVE BELOW;;;; 032F;COMBINING INVERTED BREVE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BREVE BELOW;;;; 0330;COMBINING TILDE BELOW;Mn;220;NSM;;;;;N;NON-SPACING TILDE BELOW;;;; 0331;COMBINING MACRON BELOW;Mn;220;NSM;;;;;N;NON-SPACING MACRON BELOW;;;; 0332;COMBINING LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING UNDERSCORE;;;; 0333;COMBINING DOUBLE LOW LINE;Mn;220;NSM;;;;;N;NON-SPACING DOUBLE UNDERSCORE;;;; 0334;COMBINING TILDE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING TILDE OVERLAY;;;; 0335;COMBINING SHORT STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT BAR OVERLAY;;;; 0336;COMBINING LONG STROKE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG BAR OVERLAY;;;; 0337;COMBINING SHORT SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT SLASH OVERLAY;;;; 0338;COMBINING LONG SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG SLASH OVERLAY;;;; 0339;COMBINING RIGHT HALF RING BELOW;Mn;220;NSM;;;;;N;NON-SPACING RIGHT HALF RING BELOW;;;; 033A;COMBINING INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;NON-SPACING INVERTED BRIDGE BELOW;;;; 033B;COMBINING SQUARE BELOW;Mn;220;NSM;;;;;N;NON-SPACING SQUARE BELOW;;;; 033C;COMBINING SEAGULL BELOW;Mn;220;NSM;;;;;N;NON-SPACING SEAGULL BELOW;;;; 033D;COMBINING X ABOVE;Mn;230;NSM;;;;;N;NON-SPACING X ABOVE;;;; 033E;COMBINING VERTICAL TILDE;Mn;230;NSM;;;;;N;NON-SPACING VERTICAL TILDE;;;; 033F;COMBINING DOUBLE OVERLINE;Mn;230;NSM;;;;;N;NON-SPACING DOUBLE OVERSCORE;;;; 0340;COMBINING GRAVE TONE MARK;Mn;230;NSM;0300;;;;N;NON-SPACING GRAVE TONE MARK;Vietnamese;;; 0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;Vietnamese;;; 0342;COMBINING GREEK PERISPOMENI;Mn;230;NSM;;;;;N;;;;; 0343;COMBINING GREEK KORONIS;Mn;230;NSM;0313;;;;N;;;;; 0344;COMBINING GREEK DIALYTIKA TONOS;Mn;230;NSM;0308 0301;;;;N;GREEK NON-SPACING DIAERESIS TONOS;;;; 0345;COMBINING GREEK YPOGEGRAMMENI;Mn;240;NSM;;;;;N;GREEK NON-SPACING IOTA BELOW;;0399;;0399 0346;COMBINING BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; 0347;COMBINING EQUALS SIGN BELOW;Mn;220;NSM;;;;;N;;;;; 0348;COMBINING DOUBLE VERTICAL LINE BELOW;Mn;220;NSM;;;;;N;;;;; 0349;COMBINING LEFT ANGLE BELOW;Mn;220;NSM;;;;;N;;;;; 034A;COMBINING NOT TILDE ABOVE;Mn;230;NSM;;;;;N;;;;; 034B;COMBINING HOMOTHETIC ABOVE;Mn;230;NSM;;;;;N;;;;; 034C;COMBINING ALMOST EQUAL TO ABOVE;Mn;230;NSM;;;;;N;;;;; 034D;COMBINING LEFT RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; 034E;COMBINING UPWARDS ARROW BELOW;Mn;220;NSM;;;;;N;;;;; 034F;COMBINING GRAPHEME JOINER;Mn;0;NSM;;;;;N;;;;; 0350;COMBINING RIGHT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; 0351;COMBINING LEFT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; 0352;COMBINING FERMATA;Mn;230;NSM;;;;;N;;;;; 0353;COMBINING X BELOW;Mn;220;NSM;;;;;N;;;;; 0354;COMBINING LEFT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; 0355;COMBINING RIGHT ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; 0356;COMBINING RIGHT ARROWHEAD AND UP ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; 0357;COMBINING RIGHT HALF RING ABOVE;Mn;230;NSM;;;;;N;;;;; 0358;COMBINING DOT ABOVE RIGHT;Mn;232;NSM;;;;;N;;;;; 0359;COMBINING ASTERISK BELOW;Mn;220;NSM;;;;;N;;;;; 035A;COMBINING DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; 035B;COMBINING ZIGZAG ABOVE;Mn;230;NSM;;;;;N;;;;; 035C;COMBINING DOUBLE BREVE BELOW;Mn;233;NSM;;;;;N;;;;; 035D;COMBINING DOUBLE BREVE;Mn;234;NSM;;;;;N;;;;; 035E;COMBINING DOUBLE MACRON;Mn;234;NSM;;;;;N;;;;; 035F;COMBINING DOUBLE MACRON BELOW;Mn;233;NSM;;;;;N;;;;; 0360;COMBINING DOUBLE TILDE;Mn;234;NSM;;;;;N;;;;; 0361;COMBINING DOUBLE INVERTED BREVE;Mn;234;NSM;;;;;N;;;;; 0362;COMBINING DOUBLE RIGHTWARDS ARROW BELOW;Mn;233;NSM;;;;;N;;;;; 0363;COMBINING LATIN SMALL LETTER A;Mn;230;NSM;;;;;N;;;;; 0364;COMBINING LATIN SMALL LETTER E;Mn;230;NSM;;;;;N;;;;; 0365;COMBINING LATIN SMALL LETTER I;Mn;230;NSM;;;;;N;;;;; 0366;COMBINING LATIN SMALL LETTER O;Mn;230;NSM;;;;;N;;;;; 0367;COMBINING LATIN SMALL LETTER U;Mn;230;NSM;;;;;N;;;;; 0368;COMBINING LATIN SMALL LETTER C;Mn;230;NSM;;;;;N;;;;; 0369;COMBINING LATIN SMALL LETTER D;Mn;230;NSM;;;;;N;;;;; 036A;COMBINING LATIN SMALL LETTER H;Mn;230;NSM;;;;;N;;;;; 036B;COMBINING LATIN SMALL LETTER M;Mn;230;NSM;;;;;N;;;;; 036C;COMBINING LATIN SMALL LETTER R;Mn;230;NSM;;;;;N;;;;; 036D;COMBINING LATIN SMALL LETTER T;Mn;230;NSM;;;;;N;;;;; 036E;COMBINING LATIN SMALL LETTER V;Mn;230;NSM;;;;;N;;;;; 036F;COMBINING LATIN SMALL LETTER X;Mn;230;NSM;;;;;N;;;;; 0374;GREEK NUMERAL SIGN;Sk;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;Dexia keraia;;; 0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;Aristeri keraia;;; 037A;GREEK YPOGEGRAMMENI;Lm;0;L; 0020 0345;;;;N;GREEK SPACING IOTA BELOW;;;; 037B;GREEK SMALL REVERSED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FD;;03FD 037C;GREEK SMALL DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FE;;03FE 037D;GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL;Ll;0;L;;;;;N;;;03FF;;03FF 037E;GREEK QUESTION MARK;Po;0;ON;003B;;;;N;;Erotimatiko;;; 0384;GREEK TONOS;Sk;0;ON; 0020 0301;;;;N;GREEK SPACING TONOS;;;; 0385;GREEK DIALYTIKA TONOS;Sk;0;ON;00A8 0301;;;;N;GREEK SPACING DIAERESIS TONOS;;;; 0386;GREEK CAPITAL LETTER ALPHA WITH TONOS;Lu;0;L;0391 0301;;;;N;GREEK CAPITAL LETTER ALPHA TONOS;;;03AC; 0387;GREEK ANO TELEIA;Po;0;ON;00B7;;;;N;;;;; 0388;GREEK CAPITAL LETTER EPSILON WITH TONOS;Lu;0;L;0395 0301;;;;N;GREEK CAPITAL LETTER EPSILON TONOS;;;03AD; 0389;GREEK CAPITAL LETTER ETA WITH TONOS;Lu;0;L;0397 0301;;;;N;GREEK CAPITAL LETTER ETA TONOS;;;03AE; 038A;GREEK CAPITAL LETTER IOTA WITH TONOS;Lu;0;L;0399 0301;;;;N;GREEK CAPITAL LETTER IOTA TONOS;;;03AF; 038C;GREEK CAPITAL LETTER OMICRON WITH TONOS;Lu;0;L;039F 0301;;;;N;GREEK CAPITAL LETTER OMICRON TONOS;;;03CC; 038E;GREEK CAPITAL LETTER UPSILON WITH TONOS;Lu;0;L;03A5 0301;;;;N;GREEK CAPITAL LETTER UPSILON TONOS;;;03CD; 038F;GREEK CAPITAL LETTER OMEGA WITH TONOS;Lu;0;L;03A9 0301;;;;N;GREEK CAPITAL LETTER OMEGA TONOS;;;03CE; 0390;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS;Ll;0;L;03CA 0301;;;;N;GREEK SMALL LETTER IOTA DIAERESIS TONOS;;;; 0391;GREEK CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;03B1; 0392;GREEK CAPITAL LETTER BETA;Lu;0;L;;;;;N;;;;03B2; 0393;GREEK CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;03B3; 0394;GREEK CAPITAL LETTER DELTA;Lu;0;L;;;;;N;;;;03B4; 0395;GREEK CAPITAL LETTER EPSILON;Lu;0;L;;;;;N;;;;03B5; 0396;GREEK CAPITAL LETTER ZETA;Lu;0;L;;;;;N;;;;03B6; 0397;GREEK CAPITAL LETTER ETA;Lu;0;L;;;;;N;;;;03B7; 0398;GREEK CAPITAL LETTER THETA;Lu;0;L;;;;;N;;;;03B8; 0399;GREEK CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;03B9; 039A;GREEK CAPITAL LETTER KAPPA;Lu;0;L;;;;;N;;;;03BA; 039B;GREEK CAPITAL LETTER LAMDA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER LAMBDA;;;03BB; 039C;GREEK CAPITAL LETTER MU;Lu;0;L;;;;;N;;;;03BC; 039D;GREEK CAPITAL LETTER NU;Lu;0;L;;;;;N;;;;03BD; 039E;GREEK CAPITAL LETTER XI;Lu;0;L;;;;;N;;;;03BE; 039F;GREEK CAPITAL LETTER OMICRON;Lu;0;L;;;;;N;;;;03BF; 03A0;GREEK CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;03C0; 03A1;GREEK CAPITAL LETTER RHO;Lu;0;L;;;;;N;;;;03C1; 03A3;GREEK CAPITAL LETTER SIGMA;Lu;0;L;;;;;N;;;;03C3; 03A4;GREEK CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;03C4; 03A5;GREEK CAPITAL LETTER UPSILON;Lu;0;L;;;;;N;;;;03C5; 03A6;GREEK CAPITAL LETTER PHI;Lu;0;L;;;;;N;;;;03C6; 03A7;GREEK CAPITAL LETTER CHI;Lu;0;L;;;;;N;;;;03C7; 03A8;GREEK CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;03C8; 03A9;GREEK CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;03C9; 03AA;GREEK CAPITAL LETTER IOTA WITH DIALYTIKA;Lu;0;L;0399 0308;;;;N;GREEK CAPITAL LETTER IOTA DIAERESIS;;;03CA; 03AB;GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA;Lu;0;L;03A5 0308;;;;N;GREEK CAPITAL LETTER UPSILON DIAERESIS;;;03CB; 03AC;GREEK SMALL LETTER ALPHA WITH TONOS;Ll;0;L;03B1 0301;;;;N;GREEK SMALL LETTER ALPHA TONOS;;0386;;0386 03AD;GREEK SMALL LETTER EPSILON WITH TONOS;Ll;0;L;03B5 0301;;;;N;GREEK SMALL LETTER EPSILON TONOS;;0388;;0388 03AE;GREEK SMALL LETTER ETA WITH TONOS;Ll;0;L;03B7 0301;;;;N;GREEK SMALL LETTER ETA TONOS;;0389;;0389 03AF;GREEK SMALL LETTER IOTA WITH TONOS;Ll;0;L;03B9 0301;;;;N;GREEK SMALL LETTER IOTA TONOS;;038A;;038A 03B0;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS;Ll;0;L;03CB 0301;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS TONOS;;;; 03B1;GREEK SMALL LETTER ALPHA;Ll;0;L;;;;;N;;;0391;;0391 03B2;GREEK SMALL LETTER BETA;Ll;0;L;;;;;N;;;0392;;0392 03B3;GREEK SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;0393;;0393 03B4;GREEK SMALL LETTER DELTA;Ll;0;L;;;;;N;;;0394;;0394 03B5;GREEK SMALL LETTER EPSILON;Ll;0;L;;;;;N;;;0395;;0395 03B6;GREEK SMALL LETTER ZETA;Ll;0;L;;;;;N;;;0396;;0396 03B7;GREEK SMALL LETTER ETA;Ll;0;L;;;;;N;;;0397;;0397 03B8;GREEK SMALL LETTER THETA;Ll;0;L;;;;;N;;;0398;;0398 03B9;GREEK SMALL LETTER IOTA;Ll;0;L;;;;;N;;;0399;;0399 03BA;GREEK SMALL LETTER KAPPA;Ll;0;L;;;;;N;;;039A;;039A 03BB;GREEK SMALL LETTER LAMDA;Ll;0;L;;;;;N;GREEK SMALL LETTER LAMBDA;;039B;;039B 03BC;GREEK SMALL LETTER MU;Ll;0;L;;;;;N;;;039C;;039C 03BD;GREEK SMALL LETTER NU;Ll;0;L;;;;;N;;;039D;;039D 03BE;GREEK SMALL LETTER XI;Ll;0;L;;;;;N;;;039E;;039E 03BF;GREEK SMALL LETTER OMICRON;Ll;0;L;;;;;N;;;039F;;039F 03C0;GREEK SMALL LETTER PI;Ll;0;L;;;;;N;;;03A0;;03A0 03C1;GREEK SMALL LETTER RHO;Ll;0;L;;;;;N;;;03A1;;03A1 03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 03C3;GREEK SMALL LETTER SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3 03C4;GREEK SMALL LETTER TAU;Ll;0;L;;;;;N;;;03A4;;03A4 03C5;GREEK SMALL LETTER UPSILON;Ll;0;L;;;;;N;;;03A5;;03A5 03C6;GREEK SMALL LETTER PHI;Ll;0;L;;;;;N;;;03A6;;03A6 03C7;GREEK SMALL LETTER CHI;Ll;0;L;;;;;N;;;03A7;;03A7 03C8;GREEK SMALL LETTER PSI;Ll;0;L;;;;;N;;;03A8;;03A8 03C9;GREEK SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;03A9;;03A9 03CA;GREEK SMALL LETTER IOTA WITH DIALYTIKA;Ll;0;L;03B9 0308;;;;N;GREEK SMALL LETTER IOTA DIAERESIS;;03AA;;03AA 03CB;GREEK SMALL LETTER UPSILON WITH DIALYTIKA;Ll;0;L;03C5 0308;;;;N;GREEK SMALL LETTER UPSILON DIAERESIS;;03AB;;03AB 03CC;GREEK SMALL LETTER OMICRON WITH TONOS;Ll;0;L;03BF 0301;;;;N;GREEK SMALL LETTER OMICRON TONOS;;038C;;038C 03CD;GREEK SMALL LETTER UPSILON WITH TONOS;Ll;0;L;03C5 0301;;;;N;GREEK SMALL LETTER UPSILON TONOS;;038E;;038E 03CE;GREEK SMALL LETTER OMEGA WITH TONOS;Ll;0;L;03C9 0301;;;;N;GREEK SMALL LETTER OMEGA TONOS;;038F;;038F 03D0;GREEK BETA SYMBOL;Ll;0;L; 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 03D1;GREEK THETA SYMBOL;Ll;0;L; 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L; 03A5;;;;N;GREEK CAPITAL LETTER UPSILON HOOK;;;; 03D3;GREEK UPSILON WITH ACUTE AND HOOK SYMBOL;Lu;0;L;03D2 0301;;;;N;GREEK CAPITAL LETTER UPSILON HOOK TONOS;;;; 03D4;GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL;Lu;0;L;03D2 0308;;;;N;GREEK CAPITAL LETTER UPSILON HOOK DIAERESIS;;;; 03D5;GREEK PHI SYMBOL;Ll;0;L; 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 03D6;GREEK PI SYMBOL;Ll;0;L; 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;;; 03D8;GREEK LETTER ARCHAIC KOPPA;Lu;0;L;;;;;N;;*;;03D9; 03D9;GREEK SMALL LETTER ARCHAIC KOPPA;Ll;0;L;;;;;N;;*;03D8;;03D8 03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;03DB; 03DB;GREEK SMALL LETTER STIGMA;Ll;0;L;;;;;N;;;03DA;;03DA 03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;03DD; 03DD;GREEK SMALL LETTER DIGAMMA;Ll;0;L;;;;;N;;;03DC;;03DC 03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;03DF; 03DF;GREEK SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;03DE;;03DE 03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;03E1; 03E1;GREEK SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;03E0;;03E0 03E2;COPTIC CAPITAL LETTER SHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHEI;;;03E3; 03E3;COPTIC SMALL LETTER SHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER SHEI;;03E2;;03E2 03E4;COPTIC CAPITAL LETTER FEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER FEI;;;03E5; 03E5;COPTIC SMALL LETTER FEI;Ll;0;L;;;;;N;GREEK SMALL LETTER FEI;;03E4;;03E4 03E6;COPTIC CAPITAL LETTER KHEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KHEI;;;03E7; 03E7;COPTIC SMALL LETTER KHEI;Ll;0;L;;;;;N;GREEK SMALL LETTER KHEI;;03E6;;03E6 03E8;COPTIC CAPITAL LETTER HORI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER HORI;;;03E9; 03E9;COPTIC SMALL LETTER HORI;Ll;0;L;;;;;N;GREEK SMALL LETTER HORI;;03E8;;03E8 03EA;COPTIC CAPITAL LETTER GANGIA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER GANGIA;;;03EB; 03EB;COPTIC SMALL LETTER GANGIA;Ll;0;L;;;;;N;GREEK SMALL LETTER GANGIA;;03EA;;03EA 03EC;COPTIC CAPITAL LETTER SHIMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SHIMA;;;03ED; 03ED;COPTIC SMALL LETTER SHIMA;Ll;0;L;;;;;N;GREEK SMALL LETTER SHIMA;;03EC;;03EC 03EE;COPTIC CAPITAL LETTER DEI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DEI;;;03EF; 03EF;COPTIC SMALL LETTER DEI;Ll;0;L;;;;;N;GREEK SMALL LETTER DEI;;03EE;;03EE 03F0;GREEK KAPPA SYMBOL;Ll;0;L; 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A 03F1;GREEK RHO SYMBOL;Ll;0;L; 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L; 03C2;;;;N;GREEK SMALL LETTER LUNATE SIGMA;;03F9;;03F9 03F3;GREEK LETTER YOT;Ll;0;L;;;;;N;;;;; 03F4;GREEK CAPITAL THETA SYMBOL;Lu;0;L; 0398;;;;N;;;;03B8; 03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L; 03B5;;;;N;;;0395;;0395 03F6;GREEK REVERSED LUNATE EPSILON SYMBOL;Sm;0;ON;;;;;N;;;;; 03F7;GREEK CAPITAL LETTER SHO;Lu;0;L;;;;;N;;;;03F8; 03F8;GREEK SMALL LETTER SHO;Ll;0;L;;;;;N;;;03F7;;03F7 03F9;GREEK CAPITAL LUNATE SIGMA SYMBOL;Lu;0;L; 03A3;;;;N;;;;03F2; 03FA;GREEK CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;03FB; 03FB;GREEK SMALL LETTER SAN;Ll;0;L;;;;;N;;;03FA;;03FA 03FC;GREEK RHO WITH STROKE SYMBOL;Ll;0;L;;;;;N;;;;; 03FD;GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037B; 03FE;GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037C; 03FF;GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL;Lu;0;L;;;;;N;;;;037D; 0400;CYRILLIC CAPITAL LETTER IE WITH GRAVE;Lu;0;L;0415 0300;;;;N;;;;0450; 0401;CYRILLIC CAPITAL LETTER IO;Lu;0;L;0415 0308;;;;N;;;;0451; 0402;CYRILLIC CAPITAL LETTER DJE;Lu;0;L;;;;;N;;Serbocroatian;;0452; 0403;CYRILLIC CAPITAL LETTER GJE;Lu;0;L;0413 0301;;;;N;;;;0453; 0404;CYRILLIC CAPITAL LETTER UKRAINIAN IE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER E;;;0454; 0405;CYRILLIC CAPITAL LETTER DZE;Lu;0;L;;;;;N;;;;0455; 0406;CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER I;;;0456; 0407;CYRILLIC CAPITAL LETTER YI;Lu;0;L;0406 0308;;;;N;;Ukrainian;;0457; 0408;CYRILLIC CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;0458; 0409;CYRILLIC CAPITAL LETTER LJE;Lu;0;L;;;;;N;;;;0459; 040A;CYRILLIC CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;045A; 040B;CYRILLIC CAPITAL LETTER TSHE;Lu;0;L;;;;;N;;Serbocroatian;;045B; 040C;CYRILLIC CAPITAL LETTER KJE;Lu;0;L;041A 0301;;;;N;;;;045C; 040D;CYRILLIC CAPITAL LETTER I WITH GRAVE;Lu;0;L;0418 0300;;;;N;;;;045D; 040E;CYRILLIC CAPITAL LETTER SHORT U;Lu;0;L;0423 0306;;;;N;;Byelorussian;;045E; 040F;CYRILLIC CAPITAL LETTER DZHE;Lu;0;L;;;;;N;;;;045F; 0410;CYRILLIC CAPITAL LETTER A;Lu;0;L;;;;;N;;;;0430; 0411;CYRILLIC CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;0431; 0412;CYRILLIC CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;0432; 0413;CYRILLIC CAPITAL LETTER GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE;;;0433; 0414;CYRILLIC CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;0434; 0415;CYRILLIC CAPITAL LETTER IE;Lu;0;L;;;;;N;;;;0435; 0416;CYRILLIC CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;0436; 0417;CYRILLIC CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;0437; 0418;CYRILLIC CAPITAL LETTER I;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER II;;;0438; 0419;CYRILLIC CAPITAL LETTER SHORT I;Lu;0;L;0418 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT II;;;0439; 041A;CYRILLIC CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;043A; 041B;CYRILLIC CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;043B; 041C;CYRILLIC CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;043C; 041D;CYRILLIC CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;043D; 041E;CYRILLIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;043E; 041F;CYRILLIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;043F; 0420;CYRILLIC CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;0440; 0421;CYRILLIC CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;0441; 0422;CYRILLIC CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;0442; 0423;CYRILLIC CAPITAL LETTER U;Lu;0;L;;;;;N;;;;0443; 0424;CYRILLIC CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;0444; 0425;CYRILLIC CAPITAL LETTER HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA;;;0445; 0426;CYRILLIC CAPITAL LETTER TSE;Lu;0;L;;;;;N;;;;0446; 0427;CYRILLIC CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;0447; 0428;CYRILLIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0448; 0429;CYRILLIC CAPITAL LETTER SHCHA;Lu;0;L;;;;;N;;;;0449; 042A;CYRILLIC CAPITAL LETTER HARD SIGN;Lu;0;L;;;;;N;;;;044A; 042B;CYRILLIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER YERI;;;044B; 042C;CYRILLIC CAPITAL LETTER SOFT SIGN;Lu;0;L;;;;;N;;;;044C; 042D;CYRILLIC CAPITAL LETTER E;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED E;;;044D; 042E;CYRILLIC CAPITAL LETTER YU;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IU;;;044E; 042F;CYRILLIC CAPITAL LETTER YA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IA;;;044F; 0430;CYRILLIC SMALL LETTER A;Ll;0;L;;;;;N;;;0410;;0410 0431;CYRILLIC SMALL LETTER BE;Ll;0;L;;;;;N;;;0411;;0411 0432;CYRILLIC SMALL LETTER VE;Ll;0;L;;;;;N;;;0412;;0412 0433;CYRILLIC SMALL LETTER GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE;;0413;;0413 0434;CYRILLIC SMALL LETTER DE;Ll;0;L;;;;;N;;;0414;;0414 0435;CYRILLIC SMALL LETTER IE;Ll;0;L;;;;;N;;;0415;;0415 0436;CYRILLIC SMALL LETTER ZHE;Ll;0;L;;;;;N;;;0416;;0416 0437;CYRILLIC SMALL LETTER ZE;Ll;0;L;;;;;N;;;0417;;0417 0438;CYRILLIC SMALL LETTER I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER II;;0418;;0418 0439;CYRILLIC SMALL LETTER SHORT I;Ll;0;L;0438 0306;;;;N;CYRILLIC SMALL LETTER SHORT II;;0419;;0419 043A;CYRILLIC SMALL LETTER KA;Ll;0;L;;;;;N;;;041A;;041A 043B;CYRILLIC SMALL LETTER EL;Ll;0;L;;;;;N;;;041B;;041B 043C;CYRILLIC SMALL LETTER EM;Ll;0;L;;;;;N;;;041C;;041C 043D;CYRILLIC SMALL LETTER EN;Ll;0;L;;;;;N;;;041D;;041D 043E;CYRILLIC SMALL LETTER O;Ll;0;L;;;;;N;;;041E;;041E 043F;CYRILLIC SMALL LETTER PE;Ll;0;L;;;;;N;;;041F;;041F 0440;CYRILLIC SMALL LETTER ER;Ll;0;L;;;;;N;;;0420;;0420 0441;CYRILLIC SMALL LETTER ES;Ll;0;L;;;;;N;;;0421;;0421 0442;CYRILLIC SMALL LETTER TE;Ll;0;L;;;;;N;;;0422;;0422 0443;CYRILLIC SMALL LETTER U;Ll;0;L;;;;;N;;;0423;;0423 0444;CYRILLIC SMALL LETTER EF;Ll;0;L;;;;;N;;;0424;;0424 0445;CYRILLIC SMALL LETTER HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA;;0425;;0425 0446;CYRILLIC SMALL LETTER TSE;Ll;0;L;;;;;N;;;0426;;0426 0447;CYRILLIC SMALL LETTER CHE;Ll;0;L;;;;;N;;;0427;;0427 0448;CYRILLIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;0428;;0428 0449;CYRILLIC SMALL LETTER SHCHA;Ll;0;L;;;;;N;;;0429;;0429 044A;CYRILLIC SMALL LETTER HARD SIGN;Ll;0;L;;;;;N;;;042A;;042A 044B;CYRILLIC SMALL LETTER YERU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER YERI;;042B;;042B 044C;CYRILLIC SMALL LETTER SOFT SIGN;Ll;0;L;;;;;N;;;042C;;042C 044D;CYRILLIC SMALL LETTER E;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED E;;042D;;042D 044E;CYRILLIC SMALL LETTER YU;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IU;;042E;;042E 044F;CYRILLIC SMALL LETTER YA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IA;;042F;;042F 0450;CYRILLIC SMALL LETTER IE WITH GRAVE;Ll;0;L;0435 0300;;;;N;;;0400;;0400 0451;CYRILLIC SMALL LETTER IO;Ll;0;L;0435 0308;;;;N;;;0401;;0401 0452;CYRILLIC SMALL LETTER DJE;Ll;0;L;;;;;N;;Serbocroatian;0402;;0402 0453;CYRILLIC SMALL LETTER GJE;Ll;0;L;0433 0301;;;;N;;;0403;;0403 0454;CYRILLIC SMALL LETTER UKRAINIAN IE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER E;;0404;;0404 0455;CYRILLIC SMALL LETTER DZE;Ll;0;L;;;;;N;;;0405;;0405 0456;CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER I;;0406;;0406 0457;CYRILLIC SMALL LETTER YI;Ll;0;L;0456 0308;;;;N;;Ukrainian;0407;;0407 0458;CYRILLIC SMALL LETTER JE;Ll;0;L;;;;;N;;;0408;;0408 0459;CYRILLIC SMALL LETTER LJE;Ll;0;L;;;;;N;;;0409;;0409 045A;CYRILLIC SMALL LETTER NJE;Ll;0;L;;;;;N;;;040A;;040A 045B;CYRILLIC SMALL LETTER TSHE;Ll;0;L;;;;;N;;Serbocroatian;040B;;040B 045C;CYRILLIC SMALL LETTER KJE;Ll;0;L;043A 0301;;;;N;;;040C;;040C 045D;CYRILLIC SMALL LETTER I WITH GRAVE;Ll;0;L;0438 0300;;;;N;;;040D;;040D 045E;CYRILLIC SMALL LETTER SHORT U;Ll;0;L;0443 0306;;;;N;;Byelorussian;040E;;040E 045F;CYRILLIC SMALL LETTER DZHE;Ll;0;L;;;;;N;;;040F;;040F 0460;CYRILLIC CAPITAL LETTER OMEGA;Lu;0;L;;;;;N;;;;0461; 0461;CYRILLIC SMALL LETTER OMEGA;Ll;0;L;;;;;N;;;0460;;0460 0462;CYRILLIC CAPITAL LETTER YAT;Lu;0;L;;;;;N;;;;0463; 0463;CYRILLIC SMALL LETTER YAT;Ll;0;L;;;;;N;;;0462;;0462 0464;CYRILLIC CAPITAL LETTER IOTIFIED E;Lu;0;L;;;;;N;;;;0465; 0465;CYRILLIC SMALL LETTER IOTIFIED E;Ll;0;L;;;;;N;;;0464;;0464 0466;CYRILLIC CAPITAL LETTER LITTLE YUS;Lu;0;L;;;;;N;;;;0467; 0467;CYRILLIC SMALL LETTER LITTLE YUS;Ll;0;L;;;;;N;;;0466;;0466 0468;CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS;Lu;0;L;;;;;N;;;;0469; 0469;CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS;Ll;0;L;;;;;N;;;0468;;0468 046A;CYRILLIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;046B; 046B;CYRILLIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;046A;;046A 046C;CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS;Lu;0;L;;;;;N;;;;046D; 046D;CYRILLIC SMALL LETTER IOTIFIED BIG YUS;Ll;0;L;;;;;N;;;046C;;046C 046E;CYRILLIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;046F; 046F;CYRILLIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;046E;;046E 0470;CYRILLIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;0471; 0471;CYRILLIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;0470;;0470 0472;CYRILLIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;0473; 0473;CYRILLIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;0472;;0472 0474;CYRILLIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;0475; 0475;CYRILLIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;0474;;0474 0476;CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Lu;0;L;0474 030F;;;;N;CYRILLIC CAPITAL LETTER IZHITSA DOUBLE GRAVE;;;0477; 0477;CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT;Ll;0;L;0475 030F;;;;N;CYRILLIC SMALL LETTER IZHITSA DOUBLE GRAVE;;0476;;0476 0478;CYRILLIC CAPITAL LETTER UK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER UK DIGRAPH;;;0479; 0479;CYRILLIC SMALL LETTER UK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER UK DIGRAPH;;0478;;0478 047A;CYRILLIC CAPITAL LETTER ROUND OMEGA;Lu;0;L;;;;;N;;;;047B; 047B;CYRILLIC SMALL LETTER ROUND OMEGA;Ll;0;L;;;;;N;;;047A;;047A 047C;CYRILLIC CAPITAL LETTER OMEGA WITH TITLO;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER OMEGA TITLO;;;047D; 047D;CYRILLIC SMALL LETTER OMEGA WITH TITLO;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER OMEGA TITLO;;047C;;047C 047E;CYRILLIC CAPITAL LETTER OT;Lu;0;L;;;;;N;;;;047F; 047F;CYRILLIC SMALL LETTER OT;Ll;0;L;;;;;N;;;047E;;047E 0480;CYRILLIC CAPITAL LETTER KOPPA;Lu;0;L;;;;;N;;;;0481; 0481;CYRILLIC SMALL LETTER KOPPA;Ll;0;L;;;;;N;;;0480;;0480 0482;CYRILLIC THOUSANDS SIGN;So;0;L;;;;;N;;;;; 0483;COMBINING CYRILLIC TITLO;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING TITLO;;;; 0484;COMBINING CYRILLIC PALATALIZATION;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PALATALIZATION;;;; 0485;COMBINING CYRILLIC DASIA PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING DASIA PNEUMATA;;;; 0486;COMBINING CYRILLIC PSILI PNEUMATA;Mn;230;NSM;;;;;N;CYRILLIC NON-SPACING PSILI PNEUMATA;;;; 0488;COMBINING CYRILLIC HUNDRED THOUSANDS SIGN;Me;0;NSM;;;;;N;;;;; 0489;COMBINING CYRILLIC MILLIONS SIGN;Me;0;NSM;;;;;N;;;;; 048A;CYRILLIC CAPITAL LETTER SHORT I WITH TAIL;Lu;0;L;;;;;N;;;;048B; 048B;CYRILLIC SMALL LETTER SHORT I WITH TAIL;Ll;0;L;;;;;N;;;048A;;048A 048C;CYRILLIC CAPITAL LETTER SEMISOFT SIGN;Lu;0;L;;;;;N;;;;048D; 048D;CYRILLIC SMALL LETTER SEMISOFT SIGN;Ll;0;L;;;;;N;;;048C;;048C 048E;CYRILLIC CAPITAL LETTER ER WITH TICK;Lu;0;L;;;;;N;;;;048F; 048F;CYRILLIC SMALL LETTER ER WITH TICK;Ll;0;L;;;;;N;;;048E;;048E 0490;CYRILLIC CAPITAL LETTER GHE WITH UPTURN;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE WITH UPTURN;;;0491; 0491;CYRILLIC SMALL LETTER GHE WITH UPTURN;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE WITH UPTURN;;0490;;0490 0492;CYRILLIC CAPITAL LETTER GHE WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE BAR;;;0493; 0493;CYRILLIC SMALL LETTER GHE WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE BAR;;0492;;0492 0494;CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER GE HOOK;;;0495; 0495;CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER GE HOOK;;0494;;0494 0496;CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZHE WITH RIGHT DESCENDER;;;0497; 0497;CYRILLIC SMALL LETTER ZHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZHE WITH RIGHT DESCENDER;;0496;;0496 0498;CYRILLIC CAPITAL LETTER ZE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ZE CEDILLA;;;0499; 0499;CYRILLIC SMALL LETTER ZE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ZE CEDILLA;;0498;;0498 049A;CYRILLIC CAPITAL LETTER KA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA WITH RIGHT DESCENDER;;;049B; 049B;CYRILLIC SMALL LETTER KA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA WITH RIGHT DESCENDER;;049A;;049A 049C;CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA VERTICAL BAR;;;049D; 049D;CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA VERTICAL BAR;;049C;;049C 049E;CYRILLIC CAPITAL LETTER KA WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA BAR;;;049F; 049F;CYRILLIC SMALL LETTER KA WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA BAR;;049E;;049E 04A0;CYRILLIC CAPITAL LETTER BASHKIR KA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER REVERSED GE KA;;;04A1; 04A1;CYRILLIC SMALL LETTER BASHKIR KA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER REVERSED GE KA;;04A0;;04A0 04A2;CYRILLIC CAPITAL LETTER EN WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN WITH RIGHT DESCENDER;;;04A3; 04A3;CYRILLIC SMALL LETTER EN WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN WITH RIGHT DESCENDER;;04A2;;04A2 04A4;CYRILLIC CAPITAL LIGATURE EN GHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN GE;;;04A5; 04A5;CYRILLIC SMALL LIGATURE EN GHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN GE;;04A4;;04A4 04A6;CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER PE HOOK;Abkhasian;;04A7; 04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;Abkhasian;04A6;;04A6 04A8;CYRILLIC CAPITAL LETTER ABKHASIAN HA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER O HOOK;;;04A9; 04A9;CYRILLIC SMALL LETTER ABKHASIAN HA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER O HOOK;;04A8;;04A8 04AA;CYRILLIC CAPITAL LETTER ES WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER ES CEDILLA;;;04AB; 04AB;CYRILLIC SMALL LETTER ES WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER ES CEDILLA;;04AA;;04AA 04AC;CYRILLIC CAPITAL LETTER TE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE WITH RIGHT DESCENDER;;;04AD; 04AD;CYRILLIC SMALL LETTER TE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE WITH RIGHT DESCENDER;;04AC;;04AC 04AE;CYRILLIC CAPITAL LETTER STRAIGHT U;Lu;0;L;;;;;N;;;;04AF; 04AF;CYRILLIC SMALL LETTER STRAIGHT U;Ll;0;L;;;;;N;;;04AE;;04AE 04B0;CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER STRAIGHT U BAR;;;04B1; 04B1;CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER STRAIGHT U BAR;;04B0;;04B0 04B2;CYRILLIC CAPITAL LETTER HA WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KHA WITH RIGHT DESCENDER;;;04B3; 04B3;CYRILLIC SMALL LETTER HA WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KHA WITH RIGHT DESCENDER;;04B2;;04B2 04B4;CYRILLIC CAPITAL LIGATURE TE TSE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER TE TSE;Abkhasian;;04B5; 04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;Abkhasian;04B4;;04B4 04B6;CYRILLIC CAPITAL LETTER CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH RIGHT DESCENDER;;;04B7; 04B7;CYRILLIC SMALL LETTER CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH RIGHT DESCENDER;;04B6;;04B6 04B8;CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE VERTICAL BAR;;;04B9; 04B9;CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE VERTICAL BAR;;04B8;;04B8 04BA;CYRILLIC CAPITAL LETTER SHHA;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER H;;;04BB; 04BB;CYRILLIC SMALL LETTER SHHA;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER H;;04BA;;04BA 04BC;CYRILLIC CAPITAL LETTER ABKHASIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK;;;04BD; 04BD;CYRILLIC SMALL LETTER ABKHASIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK;;04BC;;04BC 04BE;CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER IE HOOK OGONEK;;;04BF; 04BF;CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER IE HOOK OGONEK;;04BE;;04BE 04C0;CYRILLIC LETTER PALOCHKA;Lu;0;L;;;;;N;CYRILLIC LETTER I;;;04CF; 04C1;CYRILLIC CAPITAL LETTER ZHE WITH BREVE;Lu;0;L;0416 0306;;;;N;CYRILLIC CAPITAL LETTER SHORT ZHE;;;04C2; 04C2;CYRILLIC SMALL LETTER ZHE WITH BREVE;Ll;0;L;0436 0306;;;;N;CYRILLIC SMALL LETTER SHORT ZHE;;04C1;;04C1 04C3;CYRILLIC CAPITAL LETTER KA WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER KA HOOK;;;04C4; 04C4;CYRILLIC SMALL LETTER KA WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER KA HOOK;;04C3;;04C3 04C5;CYRILLIC CAPITAL LETTER EL WITH TAIL;Lu;0;L;;;;;N;;;;04C6; 04C6;CYRILLIC SMALL LETTER EL WITH TAIL;Ll;0;L;;;;;N;;;04C5;;04C5 04C7;CYRILLIC CAPITAL LETTER EN WITH HOOK;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER EN HOOK;;;04C8; 04C8;CYRILLIC SMALL LETTER EN WITH HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER EN HOOK;;04C7;;04C7 04C9;CYRILLIC CAPITAL LETTER EN WITH TAIL;Lu;0;L;;;;;N;;;;04CA; 04CA;CYRILLIC SMALL LETTER EN WITH TAIL;Ll;0;L;;;;;N;;;04C9;;04C9 04CB;CYRILLIC CAPITAL LETTER KHAKASSIAN CHE;Lu;0;L;;;;;N;CYRILLIC CAPITAL LETTER CHE WITH LEFT DESCENDER;;;04CC; 04CC;CYRILLIC SMALL LETTER KHAKASSIAN CHE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER CHE WITH LEFT DESCENDER;;04CB;;04CB 04CD;CYRILLIC CAPITAL LETTER EM WITH TAIL;Lu;0;L;;;;;N;;;;04CE; 04CE;CYRILLIC SMALL LETTER EM WITH TAIL;Ll;0;L;;;;;N;;;04CD;;04CD 04CF;CYRILLIC SMALL LETTER PALOCHKA;Ll;0;L;;;;;N;;;04C0;;04C0 04D0;CYRILLIC CAPITAL LETTER A WITH BREVE;Lu;0;L;0410 0306;;;;N;;;;04D1; 04D1;CYRILLIC SMALL LETTER A WITH BREVE;Ll;0;L;0430 0306;;;;N;;;04D0;;04D0 04D2;CYRILLIC CAPITAL LETTER A WITH DIAERESIS;Lu;0;L;0410 0308;;;;N;;;;04D3; 04D3;CYRILLIC SMALL LETTER A WITH DIAERESIS;Ll;0;L;0430 0308;;;;N;;;04D2;;04D2 04D4;CYRILLIC CAPITAL LIGATURE A IE;Lu;0;L;;;;;N;;;;04D5; 04D5;CYRILLIC SMALL LIGATURE A IE;Ll;0;L;;;;;N;;;04D4;;04D4 04D6;CYRILLIC CAPITAL LETTER IE WITH BREVE;Lu;0;L;0415 0306;;;;N;;;;04D7; 04D7;CYRILLIC SMALL LETTER IE WITH BREVE;Ll;0;L;0435 0306;;;;N;;;04D6;;04D6 04D8;CYRILLIC CAPITAL LETTER SCHWA;Lu;0;L;;;;;N;;;;04D9; 04D9;CYRILLIC SMALL LETTER SCHWA;Ll;0;L;;;;;N;;;04D8;;04D8 04DA;CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS;Lu;0;L;04D8 0308;;;;N;;;;04DB; 04DB;CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS;Ll;0;L;04D9 0308;;;;N;;;04DA;;04DA 04DC;CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS;Lu;0;L;0416 0308;;;;N;;;;04DD; 04DD;CYRILLIC SMALL LETTER ZHE WITH DIAERESIS;Ll;0;L;0436 0308;;;;N;;;04DC;;04DC 04DE;CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS;Lu;0;L;0417 0308;;;;N;;;;04DF; 04DF;CYRILLIC SMALL LETTER ZE WITH DIAERESIS;Ll;0;L;0437 0308;;;;N;;;04DE;;04DE 04E0;CYRILLIC CAPITAL LETTER ABKHASIAN DZE;Lu;0;L;;;;;N;;;;04E1; 04E1;CYRILLIC SMALL LETTER ABKHASIAN DZE;Ll;0;L;;;;;N;;;04E0;;04E0 04E2;CYRILLIC CAPITAL LETTER I WITH MACRON;Lu;0;L;0418 0304;;;;N;;;;04E3; 04E3;CYRILLIC SMALL LETTER I WITH MACRON;Ll;0;L;0438 0304;;;;N;;;04E2;;04E2 04E4;CYRILLIC CAPITAL LETTER I WITH DIAERESIS;Lu;0;L;0418 0308;;;;N;;;;04E5; 04E5;CYRILLIC SMALL LETTER I WITH DIAERESIS;Ll;0;L;0438 0308;;;;N;;;04E4;;04E4 04E6;CYRILLIC CAPITAL LETTER O WITH DIAERESIS;Lu;0;L;041E 0308;;;;N;;;;04E7; 04E7;CYRILLIC SMALL LETTER O WITH DIAERESIS;Ll;0;L;043E 0308;;;;N;;;04E6;;04E6 04E8;CYRILLIC CAPITAL LETTER BARRED O;Lu;0;L;;;;;N;;;;04E9; 04E9;CYRILLIC SMALL LETTER BARRED O;Ll;0;L;;;;;N;;;04E8;;04E8 04EA;CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS;Lu;0;L;04E8 0308;;;;N;;;;04EB; 04EB;CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS;Ll;0;L;04E9 0308;;;;N;;;04EA;;04EA 04EC;CYRILLIC CAPITAL LETTER E WITH DIAERESIS;Lu;0;L;042D 0308;;;;N;;;;04ED; 04ED;CYRILLIC SMALL LETTER E WITH DIAERESIS;Ll;0;L;044D 0308;;;;N;;;04EC;;04EC 04EE;CYRILLIC CAPITAL LETTER U WITH MACRON;Lu;0;L;0423 0304;;;;N;;;;04EF; 04EF;CYRILLIC SMALL LETTER U WITH MACRON;Ll;0;L;0443 0304;;;;N;;;04EE;;04EE 04F0;CYRILLIC CAPITAL LETTER U WITH DIAERESIS;Lu;0;L;0423 0308;;;;N;;;;04F1; 04F1;CYRILLIC SMALL LETTER U WITH DIAERESIS;Ll;0;L;0443 0308;;;;N;;;04F0;;04F0 04F2;CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE;Lu;0;L;0423 030B;;;;N;;;;04F3; 04F3;CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE;Ll;0;L;0443 030B;;;;N;;;04F2;;04F2 04F4;CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS;Lu;0;L;0427 0308;;;;N;;;;04F5; 04F5;CYRILLIC SMALL LETTER CHE WITH DIAERESIS;Ll;0;L;0447 0308;;;;N;;;04F4;;04F4 04F6;CYRILLIC CAPITAL LETTER GHE WITH DESCENDER;Lu;0;L;;;;;N;;;;04F7; 04F7;CYRILLIC SMALL LETTER GHE WITH DESCENDER;Ll;0;L;;;;;N;;;04F6;;04F6 04F8;CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS;Lu;0;L;042B 0308;;;;N;;;;04F9; 04F9;CYRILLIC SMALL LETTER YERU WITH DIAERESIS;Ll;0;L;044B 0308;;;;N;;;04F8;;04F8 04FA;CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK;Lu;0;L;;;;;N;;;;04FB; 04FB;CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK;Ll;0;L;;;;;N;;;04FA;;04FA 04FC;CYRILLIC CAPITAL LETTER HA WITH HOOK;Lu;0;L;;;;;N;;;;04FD; 04FD;CYRILLIC SMALL LETTER HA WITH HOOK;Ll;0;L;;;;;N;;;04FC;;04FC 04FE;CYRILLIC CAPITAL LETTER HA WITH STROKE;Lu;0;L;;;;;N;;;;04FF; 04FF;CYRILLIC SMALL LETTER HA WITH STROKE;Ll;0;L;;;;;N;;;04FE;;04FE 0500;CYRILLIC CAPITAL LETTER KOMI DE;Lu;0;L;;;;;N;;;;0501; 0501;CYRILLIC SMALL LETTER KOMI DE;Ll;0;L;;;;;N;;;0500;;0500 0502;CYRILLIC CAPITAL LETTER KOMI DJE;Lu;0;L;;;;;N;;;;0503; 0503;CYRILLIC SMALL LETTER KOMI DJE;Ll;0;L;;;;;N;;;0502;;0502 0504;CYRILLIC CAPITAL LETTER KOMI ZJE;Lu;0;L;;;;;N;;;;0505; 0505;CYRILLIC SMALL LETTER KOMI ZJE;Ll;0;L;;;;;N;;;0504;;0504 0506;CYRILLIC CAPITAL LETTER KOMI DZJE;Lu;0;L;;;;;N;;;;0507; 0507;CYRILLIC SMALL LETTER KOMI DZJE;Ll;0;L;;;;;N;;;0506;;0506 0508;CYRILLIC CAPITAL LETTER KOMI LJE;Lu;0;L;;;;;N;;;;0509; 0509;CYRILLIC SMALL LETTER KOMI LJE;Ll;0;L;;;;;N;;;0508;;0508 050A;CYRILLIC CAPITAL LETTER KOMI NJE;Lu;0;L;;;;;N;;;;050B; 050B;CYRILLIC SMALL LETTER KOMI NJE;Ll;0;L;;;;;N;;;050A;;050A 050C;CYRILLIC CAPITAL LETTER KOMI SJE;Lu;0;L;;;;;N;;;;050D; 050D;CYRILLIC SMALL LETTER KOMI SJE;Ll;0;L;;;;;N;;;050C;;050C 050E;CYRILLIC CAPITAL LETTER KOMI TJE;Lu;0;L;;;;;N;;;;050F; 050F;CYRILLIC SMALL LETTER KOMI TJE;Ll;0;L;;;;;N;;;050E;;050E 0510;CYRILLIC CAPITAL LETTER REVERSED ZE;Lu;0;L;;;;;N;;;;0511; 0511;CYRILLIC SMALL LETTER REVERSED ZE;Ll;0;L;;;;;N;;;0510;;0510 0512;CYRILLIC CAPITAL LETTER EL WITH HOOK;Lu;0;L;;;;;N;;;;0513; 0513;CYRILLIC SMALL LETTER EL WITH HOOK;Ll;0;L;;;;;N;;;0512;;0512 0531;ARMENIAN CAPITAL LETTER AYB;Lu;0;L;;;;;N;;;;0561; 0532;ARMENIAN CAPITAL LETTER BEN;Lu;0;L;;;;;N;;;;0562; 0533;ARMENIAN CAPITAL LETTER GIM;Lu;0;L;;;;;N;;;;0563; 0534;ARMENIAN CAPITAL LETTER DA;Lu;0;L;;;;;N;;;;0564; 0535;ARMENIAN CAPITAL LETTER ECH;Lu;0;L;;;;;N;;;;0565; 0536;ARMENIAN CAPITAL LETTER ZA;Lu;0;L;;;;;N;;;;0566; 0537;ARMENIAN CAPITAL LETTER EH;Lu;0;L;;;;;N;;;;0567; 0538;ARMENIAN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;0568; 0539;ARMENIAN CAPITAL LETTER TO;Lu;0;L;;;;;N;;;;0569; 053A;ARMENIAN CAPITAL LETTER ZHE;Lu;0;L;;;;;N;;;;056A; 053B;ARMENIAN CAPITAL LETTER INI;Lu;0;L;;;;;N;;;;056B; 053C;ARMENIAN CAPITAL LETTER LIWN;Lu;0;L;;;;;N;;;;056C; 053D;ARMENIAN CAPITAL LETTER XEH;Lu;0;L;;;;;N;;;;056D; 053E;ARMENIAN CAPITAL LETTER CA;Lu;0;L;;;;;N;;;;056E; 053F;ARMENIAN CAPITAL LETTER KEN;Lu;0;L;;;;;N;;;;056F; 0540;ARMENIAN CAPITAL LETTER HO;Lu;0;L;;;;;N;;;;0570; 0541;ARMENIAN CAPITAL LETTER JA;Lu;0;L;;;;;N;;;;0571; 0542;ARMENIAN CAPITAL LETTER GHAD;Lu;0;L;;;;;N;ARMENIAN CAPITAL LETTER LAD;;;0572; 0543;ARMENIAN CAPITAL LETTER CHEH;Lu;0;L;;;;;N;;;;0573; 0544;ARMENIAN CAPITAL LETTER MEN;Lu;0;L;;;;;N;;;;0574; 0545;ARMENIAN CAPITAL LETTER YI;Lu;0;L;;;;;N;;;;0575; 0546;ARMENIAN CAPITAL LETTER NOW;Lu;0;L;;;;;N;;;;0576; 0547;ARMENIAN CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;0577; 0548;ARMENIAN CAPITAL LETTER VO;Lu;0;L;;;;;N;;;;0578; 0549;ARMENIAN CAPITAL LETTER CHA;Lu;0;L;;;;;N;;;;0579; 054A;ARMENIAN CAPITAL LETTER PEH;Lu;0;L;;;;;N;;;;057A; 054B;ARMENIAN CAPITAL LETTER JHEH;Lu;0;L;;;;;N;;;;057B; 054C;ARMENIAN CAPITAL LETTER RA;Lu;0;L;;;;;N;;;;057C; 054D;ARMENIAN CAPITAL LETTER SEH;Lu;0;L;;;;;N;;;;057D; 054E;ARMENIAN CAPITAL LETTER VEW;Lu;0;L;;;;;N;;;;057E; 054F;ARMENIAN CAPITAL LETTER TIWN;Lu;0;L;;;;;N;;;;057F; 0550;ARMENIAN CAPITAL LETTER REH;Lu;0;L;;;;;N;;;;0580; 0551;ARMENIAN CAPITAL LETTER CO;Lu;0;L;;;;;N;;;;0581; 0552;ARMENIAN CAPITAL LETTER YIWN;Lu;0;L;;;;;N;;;;0582; 0553;ARMENIAN CAPITAL LETTER PIWR;Lu;0;L;;;;;N;;;;0583; 0554;ARMENIAN CAPITAL LETTER KEH;Lu;0;L;;;;;N;;;;0584; 0555;ARMENIAN CAPITAL LETTER OH;Lu;0;L;;;;;N;;;;0585; 0556;ARMENIAN CAPITAL LETTER FEH;Lu;0;L;;;;;N;;;;0586; 0559;ARMENIAN MODIFIER LETTER LEFT HALF RING;Lm;0;L;;;;;N;;;;; 055A;ARMENIAN APOSTROPHE;Po;0;L;;;;;N;ARMENIAN MODIFIER LETTER RIGHT HALF RING;;;; 055B;ARMENIAN EMPHASIS MARK;Po;0;L;;;;;N;;;;; 055C;ARMENIAN EXCLAMATION MARK;Po;0;L;;;;;N;;;;; 055D;ARMENIAN COMMA;Po;0;L;;;;;N;;;;; 055E;ARMENIAN QUESTION MARK;Po;0;L;;;;;N;;;;; 055F;ARMENIAN ABBREVIATION MARK;Po;0;L;;;;;N;;;;; 0561;ARMENIAN SMALL LETTER AYB;Ll;0;L;;;;;N;;;0531;;0531 0562;ARMENIAN SMALL LETTER BEN;Ll;0;L;;;;;N;;;0532;;0532 0563;ARMENIAN SMALL LETTER GIM;Ll;0;L;;;;;N;;;0533;;0533 0564;ARMENIAN SMALL LETTER DA;Ll;0;L;;;;;N;;;0534;;0534 0565;ARMENIAN SMALL LETTER ECH;Ll;0;L;;;;;N;;;0535;;0535 0566;ARMENIAN SMALL LETTER ZA;Ll;0;L;;;;;N;;;0536;;0536 0567;ARMENIAN SMALL LETTER EH;Ll;0;L;;;;;N;;;0537;;0537 0568;ARMENIAN SMALL LETTER ET;Ll;0;L;;;;;N;;;0538;;0538 0569;ARMENIAN SMALL LETTER TO;Ll;0;L;;;;;N;;;0539;;0539 056A;ARMENIAN SMALL LETTER ZHE;Ll;0;L;;;;;N;;;053A;;053A 056B;ARMENIAN SMALL LETTER INI;Ll;0;L;;;;;N;;;053B;;053B 056C;ARMENIAN SMALL LETTER LIWN;Ll;0;L;;;;;N;;;053C;;053C 056D;ARMENIAN SMALL LETTER XEH;Ll;0;L;;;;;N;;;053D;;053D 056E;ARMENIAN SMALL LETTER CA;Ll;0;L;;;;;N;;;053E;;053E 056F;ARMENIAN SMALL LETTER KEN;Ll;0;L;;;;;N;;;053F;;053F 0570;ARMENIAN SMALL LETTER HO;Ll;0;L;;;;;N;;;0540;;0540 0571;ARMENIAN SMALL LETTER JA;Ll;0;L;;;;;N;;;0541;;0541 0572;ARMENIAN SMALL LETTER GHAD;Ll;0;L;;;;;N;ARMENIAN SMALL LETTER LAD;;0542;;0542 0573;ARMENIAN SMALL LETTER CHEH;Ll;0;L;;;;;N;;;0543;;0543 0574;ARMENIAN SMALL LETTER MEN;Ll;0;L;;;;;N;;;0544;;0544 0575;ARMENIAN SMALL LETTER YI;Ll;0;L;;;;;N;;;0545;;0545 0576;ARMENIAN SMALL LETTER NOW;Ll;0;L;;;;;N;;;0546;;0546 0577;ARMENIAN SMALL LETTER SHA;Ll;0;L;;;;;N;;;0547;;0547 0578;ARMENIAN SMALL LETTER VO;Ll;0;L;;;;;N;;;0548;;0548 0579;ARMENIAN SMALL LETTER CHA;Ll;0;L;;;;;N;;;0549;;0549 057A;ARMENIAN SMALL LETTER PEH;Ll;0;L;;;;;N;;;054A;;054A 057B;ARMENIAN SMALL LETTER JHEH;Ll;0;L;;;;;N;;;054B;;054B 057C;ARMENIAN SMALL LETTER RA;Ll;0;L;;;;;N;;;054C;;054C 057D;ARMENIAN SMALL LETTER SEH;Ll;0;L;;;;;N;;;054D;;054D 057E;ARMENIAN SMALL LETTER VEW;Ll;0;L;;;;;N;;;054E;;054E 057F;ARMENIAN SMALL LETTER TIWN;Ll;0;L;;;;;N;;;054F;;054F 0580;ARMENIAN SMALL LETTER REH;Ll;0;L;;;;;N;;;0550;;0550 0581;ARMENIAN SMALL LETTER CO;Ll;0;L;;;;;N;;;0551;;0551 0582;ARMENIAN SMALL LETTER YIWN;Ll;0;L;;;;;N;;;0552;;0552 0583;ARMENIAN SMALL LETTER PIWR;Ll;0;L;;;;;N;;;0553;;0553 0584;ARMENIAN SMALL LETTER KEH;Ll;0;L;;;;;N;;;0554;;0554 0585;ARMENIAN SMALL LETTER OH;Ll;0;L;;;;;N;;;0555;;0555 0586;ARMENIAN SMALL LETTER FEH;Ll;0;L;;;;;N;;;0556;;0556 0587;ARMENIAN SMALL LIGATURE ECH YIWN;Ll;0;L; 0565 0582;;;;N;;;;; 0589;ARMENIAN FULL STOP;Po;0;L;;;;;N;ARMENIAN PERIOD;;;; 058A;ARMENIAN HYPHEN;Pd;0;ON;;;;;N;;;;; 0591;HEBREW ACCENT ETNAHTA;Mn;220;NSM;;;;;N;;;;; 0592;HEBREW ACCENT SEGOL;Mn;230;NSM;;;;;N;;;;; 0593;HEBREW ACCENT SHALSHELET;Mn;230;NSM;;;;;N;;;;; 0594;HEBREW ACCENT ZAQEF QATAN;Mn;230;NSM;;;;;N;;;;; 0595;HEBREW ACCENT ZAQEF GADOL;Mn;230;NSM;;;;;N;;;;; 0596;HEBREW ACCENT TIPEHA;Mn;220;NSM;;;;;N;;*;;; 0597;HEBREW ACCENT REVIA;Mn;230;NSM;;;;;N;;;;; 0598;HEBREW ACCENT ZARQA;Mn;230;NSM;;;;;N;;*;;; 0599;HEBREW ACCENT PASHTA;Mn;230;NSM;;;;;N;;;;; 059A;HEBREW ACCENT YETIV;Mn;222;NSM;;;;;N;;;;; 059B;HEBREW ACCENT TEVIR;Mn;220;NSM;;;;;N;;;;; 059C;HEBREW ACCENT GERESH;Mn;230;NSM;;;;;N;;;;; 059D;HEBREW ACCENT GERESH MUQDAM;Mn;230;NSM;;;;;N;;;;; 059E;HEBREW ACCENT GERSHAYIM;Mn;230;NSM;;;;;N;;;;; 059F;HEBREW ACCENT QARNEY PARA;Mn;230;NSM;;;;;N;;;;; 05A0;HEBREW ACCENT TELISHA GEDOLA;Mn;230;NSM;;;;;N;;;;; 05A1;HEBREW ACCENT PAZER;Mn;230;NSM;;;;;N;;;;; 05A2;HEBREW ACCENT ATNAH HAFUKH;Mn;220;NSM;;;;;N;;;;; 05A3;HEBREW ACCENT MUNAH;Mn;220;NSM;;;;;N;;;;; 05A4;HEBREW ACCENT MAHAPAKH;Mn;220;NSM;;;;;N;;;;; 05A5;HEBREW ACCENT MERKHA;Mn;220;NSM;;;;;N;;*;;; 05A6;HEBREW ACCENT MERKHA KEFULA;Mn;220;NSM;;;;;N;;;;; 05A7;HEBREW ACCENT DARGA;Mn;220;NSM;;;;;N;;;;; 05A8;HEBREW ACCENT QADMA;Mn;230;NSM;;;;;N;;*;;; 05A9;HEBREW ACCENT TELISHA QETANA;Mn;230;NSM;;;;;N;;;;; 05AA;HEBREW ACCENT YERAH BEN YOMO;Mn;220;NSM;;;;;N;;*;;; 05AB;HEBREW ACCENT OLE;Mn;230;NSM;;;;;N;;;;; 05AC;HEBREW ACCENT ILUY;Mn;230;NSM;;;;;N;;;;; 05AD;HEBREW ACCENT DEHI;Mn;222;NSM;;;;;N;;;;; 05AE;HEBREW ACCENT ZINOR;Mn;228;NSM;;;;;N;;;;; 05AF;HEBREW MARK MASORA CIRCLE;Mn;230;NSM;;;;;N;;;;; 05B0;HEBREW POINT SHEVA;Mn;10;NSM;;;;;N;;;;; 05B1;HEBREW POINT HATAF SEGOL;Mn;11;NSM;;;;;N;;;;; 05B2;HEBREW POINT HATAF PATAH;Mn;12;NSM;;;;;N;;;;; 05B3;HEBREW POINT HATAF QAMATS;Mn;13;NSM;;;;;N;;;;; 05B4;HEBREW POINT HIRIQ;Mn;14;NSM;;;;;N;;;;; 05B5;HEBREW POINT TSERE;Mn;15;NSM;;;;;N;;;;; 05B6;HEBREW POINT SEGOL;Mn;16;NSM;;;;;N;;;;; 05B7;HEBREW POINT PATAH;Mn;17;NSM;;;;;N;;;;; 05B8;HEBREW POINT QAMATS;Mn;18;NSM;;;;;N;;;;; 05B9;HEBREW POINT HOLAM;Mn;19;NSM;;;;;N;;;;; 05BA;HEBREW POINT HOLAM HASER FOR VAV;Mn;19;NSM;;;;;N;;;;; 05BB;HEBREW POINT QUBUTS;Mn;20;NSM;;;;;N;;;;; 05BC;HEBREW POINT DAGESH OR MAPIQ;Mn;21;NSM;;;;;N;HEBREW POINT DAGESH;or shuruq;;; 05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;*;;; 05BE;HEBREW PUNCTUATION MAQAF;Po;0;R;;;;;N;;;;; 05BF;HEBREW POINT RAFE;Mn;23;NSM;;;;;N;;;;; 05C0;HEBREW PUNCTUATION PASEQ;Po;0;R;;;;;N;HEBREW POINT PASEQ;*;;; 05C1;HEBREW POINT SHIN DOT;Mn;24;NSM;;;;;N;;;;; 05C2;HEBREW POINT SIN DOT;Mn;25;NSM;;;;;N;;;;; 05C3;HEBREW PUNCTUATION SOF PASUQ;Po;0;R;;;;;N;;*;;; 05C4;HEBREW MARK UPPER DOT;Mn;230;NSM;;;;;N;;;;; 05C5;HEBREW MARK LOWER DOT;Mn;220;NSM;;;;;N;;;;; 05C6;HEBREW PUNCTUATION NUN HAFUKHA;Po;0;R;;;;;N;;;;; 05C7;HEBREW POINT QAMATS QATAN;Mn;18;NSM;;;;;N;;;;; 05D0;HEBREW LETTER ALEF;Lo;0;R;;;;;N;;;;; 05D1;HEBREW LETTER BET;Lo;0;R;;;;;N;;;;; 05D2;HEBREW LETTER GIMEL;Lo;0;R;;;;;N;;;;; 05D3;HEBREW LETTER DALET;Lo;0;R;;;;;N;;;;; 05D4;HEBREW LETTER HE;Lo;0;R;;;;;N;;;;; 05D5;HEBREW LETTER VAV;Lo;0;R;;;;;N;;;;; 05D6;HEBREW LETTER ZAYIN;Lo;0;R;;;;;N;;;;; 05D7;HEBREW LETTER HET;Lo;0;R;;;;;N;;;;; 05D8;HEBREW LETTER TET;Lo;0;R;;;;;N;;;;; 05D9;HEBREW LETTER YOD;Lo;0;R;;;;;N;;;;; 05DA;HEBREW LETTER FINAL KAF;Lo;0;R;;;;;N;;;;; 05DB;HEBREW LETTER KAF;Lo;0;R;;;;;N;;;;; 05DC;HEBREW LETTER LAMED;Lo;0;R;;;;;N;;;;; 05DD;HEBREW LETTER FINAL MEM;Lo;0;R;;;;;N;;;;; 05DE;HEBREW LETTER MEM;Lo;0;R;;;;;N;;;;; 05DF;HEBREW LETTER FINAL NUN;Lo;0;R;;;;;N;;;;; 05E0;HEBREW LETTER NUN;Lo;0;R;;;;;N;;;;; 05E1;HEBREW LETTER SAMEKH;Lo;0;R;;;;;N;;;;; 05E2;HEBREW LETTER AYIN;Lo;0;R;;;;;N;;;;; 05E3;HEBREW LETTER FINAL PE;Lo;0;R;;;;;N;;;;; 05E4;HEBREW LETTER PE;Lo;0;R;;;;;N;;;;; 05E5;HEBREW LETTER FINAL TSADI;Lo;0;R;;;;;N;;;;; 05E6;HEBREW LETTER TSADI;Lo;0;R;;;;;N;;;;; 05E7;HEBREW LETTER QOF;Lo;0;R;;;;;N;;;;; 05E8;HEBREW LETTER RESH;Lo;0;R;;;;;N;;;;; 05E9;HEBREW LETTER SHIN;Lo;0;R;;;;;N;;;;; 05EA;HEBREW LETTER TAV;Lo;0;R;;;;;N;;;;; 05F0;HEBREW LIGATURE YIDDISH DOUBLE VAV;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE VAV;;;; 05F1;HEBREW LIGATURE YIDDISH VAV YOD;Lo;0;R;;;;;N;HEBREW LETTER VAV YOD;;;; 05F2;HEBREW LIGATURE YIDDISH DOUBLE YOD;Lo;0;R;;;;;N;HEBREW LETTER DOUBLE YOD;;;; 05F3;HEBREW PUNCTUATION GERESH;Po;0;R;;;;;N;;;;; 05F4;HEBREW PUNCTUATION GERSHAYIM;Po;0;R;;;;;N;;;;; 0600;ARABIC NUMBER SIGN;Cf;0;AL;;;;;N;;;;; 0601;ARABIC SIGN SANAH;Cf;0;AL;;;;;N;;;;; 0602;ARABIC FOOTNOTE MARKER;Cf;0;AL;;;;;N;;;;; 0603;ARABIC SIGN SAFHA;Cf;0;AL;;;;;N;;;;; 060B;AFGHANI SIGN;Sc;0;AL;;;;;N;;;;; 060C;ARABIC COMMA;Po;0;CS;;;;;N;;;;; 060D;ARABIC DATE SEPARATOR;Po;0;AL;;;;;N;;;;; 060E;ARABIC POETIC VERSE SIGN;So;0;ON;;;;;N;;;;; 060F;ARABIC SIGN MISRA;So;0;ON;;;;;N;;;;; 0610;ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM;Mn;230;NSM;;;;;N;;;;; 0611;ARABIC SIGN ALAYHE ASSALLAM;Mn;230;NSM;;;;;N;;;;; 0612;ARABIC SIGN RAHMATULLAH ALAYHE;Mn;230;NSM;;;;;N;;;;; 0613;ARABIC SIGN RADI ALLAHOU ANHU;Mn;230;NSM;;;;;N;;;;; 0614;ARABIC SIGN TAKHALLUS;Mn;230;NSM;;;;;N;;;;; 0615;ARABIC SMALL HIGH TAH;Mn;230;NSM;;;;;N;;;;; 061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;; 061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;; 061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;; 0621;ARABIC LETTER HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH;;;; 0622;ARABIC LETTER ALEF WITH MADDA ABOVE;Lo;0;AL;0627 0653;;;;N;ARABIC LETTER MADDAH ON ALEF;;;; 0623;ARABIC LETTER ALEF WITH HAMZA ABOVE;Lo;0;AL;0627 0654;;;;N;ARABIC LETTER HAMZAH ON ALEF;;;; 0624;ARABIC LETTER WAW WITH HAMZA ABOVE;Lo;0;AL;0648 0654;;;;N;ARABIC LETTER HAMZAH ON WAW;;;; 0625;ARABIC LETTER ALEF WITH HAMZA BELOW;Lo;0;AL;0627 0655;;;;N;ARABIC LETTER HAMZAH UNDER ALEF;;;; 0626;ARABIC LETTER YEH WITH HAMZA ABOVE;Lo;0;AL;064A 0654;;;;N;ARABIC LETTER HAMZAH ON YA;;;; 0627;ARABIC LETTER ALEF;Lo;0;AL;;;;;N;;;;; 0628;ARABIC LETTER BEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA;;;; 0629;ARABIC LETTER TEH MARBUTA;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH;;;; 062A;ARABIC LETTER TEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA;;;; 062B;ARABIC LETTER THEH;Lo;0;AL;;;;;N;ARABIC LETTER THAA;;;; 062C;ARABIC LETTER JEEM;Lo;0;AL;;;;;N;;;;; 062D;ARABIC LETTER HAH;Lo;0;AL;;;;;N;ARABIC LETTER HAA;;;; 062E;ARABIC LETTER KHAH;Lo;0;AL;;;;;N;ARABIC LETTER KHAA;;;; 062F;ARABIC LETTER DAL;Lo;0;AL;;;;;N;;;;; 0630;ARABIC LETTER THAL;Lo;0;AL;;;;;N;;;;; 0631;ARABIC LETTER REH;Lo;0;AL;;;;;N;ARABIC LETTER RA;;;; 0632;ARABIC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; 0633;ARABIC LETTER SEEN;Lo;0;AL;;;;;N;;;;; 0634;ARABIC LETTER SHEEN;Lo;0;AL;;;;;N;;;;; 0635;ARABIC LETTER SAD;Lo;0;AL;;;;;N;;;;; 0636;ARABIC LETTER DAD;Lo;0;AL;;;;;N;;;;; 0637;ARABIC LETTER TAH;Lo;0;AL;;;;;N;;;;; 0638;ARABIC LETTER ZAH;Lo;0;AL;;;;;N;ARABIC LETTER DHAH;;;; 0639;ARABIC LETTER AIN;Lo;0;AL;;;;;N;;;;; 063A;ARABIC LETTER GHAIN;Lo;0;AL;;;;;N;;;;; 0640;ARABIC TATWEEL;Lm;0;AL;;;;;N;;;;; 0641;ARABIC LETTER FEH;Lo;0;AL;;;;;N;ARABIC LETTER FA;;;; 0642;ARABIC LETTER QAF;Lo;0;AL;;;;;N;;;;; 0643;ARABIC LETTER KAF;Lo;0;AL;;;;;N;ARABIC LETTER CAF;;;; 0644;ARABIC LETTER LAM;Lo;0;AL;;;;;N;;;;; 0645;ARABIC LETTER MEEM;Lo;0;AL;;;;;N;;;;; 0646;ARABIC LETTER NOON;Lo;0;AL;;;;;N;;;;; 0647;ARABIC LETTER HEH;Lo;0;AL;;;;;N;ARABIC LETTER HA;;;; 0648;ARABIC LETTER WAW;Lo;0;AL;;;;;N;;;;; 0649;ARABIC LETTER ALEF MAKSURA;Lo;0;AL;;;;;N;ARABIC LETTER ALEF MAQSURAH;;;; 064A;ARABIC LETTER YEH;Lo;0;AL;;;;;N;ARABIC LETTER YA;;;; 064B;ARABIC FATHATAN;Mn;27;NSM;;;;;N;;;;; 064C;ARABIC DAMMATAN;Mn;28;NSM;;;;;N;;;;; 064D;ARABIC KASRATAN;Mn;29;NSM;;;;;N;;;;; 064E;ARABIC FATHA;Mn;30;NSM;;;;;N;ARABIC FATHAH;;;; 064F;ARABIC DAMMA;Mn;31;NSM;;;;;N;ARABIC DAMMAH;;;; 0650;ARABIC KASRA;Mn;32;NSM;;;;;N;ARABIC KASRAH;;;; 0651;ARABIC SHADDA;Mn;33;NSM;;;;;N;ARABIC SHADDAH;;;; 0652;ARABIC SUKUN;Mn;34;NSM;;;;;N;;;;; 0653;ARABIC MADDAH ABOVE;Mn;230;NSM;;;;;N;;;;; 0654;ARABIC HAMZA ABOVE;Mn;230;NSM;;;;;N;;;;; 0655;ARABIC HAMZA BELOW;Mn;220;NSM;;;;;N;;;;; 0656;ARABIC SUBSCRIPT ALEF;Mn;220;NSM;;;;;N;;;;; 0657;ARABIC INVERTED DAMMA;Mn;230;NSM;;;;;N;;;;; 0658;ARABIC MARK NOON GHUNNA;Mn;230;NSM;;;;;N;;;;; 0659;ARABIC ZWARAKAY;Mn;230;NSM;;;;;N;;;;; 065A;ARABIC VOWEL SIGN SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; 065B;ARABIC VOWEL SIGN INVERTED SMALL V ABOVE;Mn;230;NSM;;;;;N;;;;; 065C;ARABIC VOWEL SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; 065D;ARABIC REVERSED DAMMA;Mn;230;NSM;;;;;N;;;;; 065E;ARABIC FATHA WITH TWO DOTS;Mn;230;NSM;;;;;N;;;;; 0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;; 0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;; 0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;; 0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;; 0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;; 0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;; 0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;; 0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;; 0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;; 0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;; 066A;ARABIC PERCENT SIGN;Po;0;ET;;;;;N;;;;; 066B;ARABIC DECIMAL SEPARATOR;Po;0;AN;;;;;N;;;;; 066C;ARABIC THOUSANDS SEPARATOR;Po;0;AN;;;;;N;;;;; 066D;ARABIC FIVE POINTED STAR;Po;0;AL;;;;;N;;;;; 066E;ARABIC LETTER DOTLESS BEH;Lo;0;AL;;;;;N;;;;; 066F;ARABIC LETTER DOTLESS QAF;Lo;0;AL;;;;;N;;;;; 0670;ARABIC LETTER SUPERSCRIPT ALEF;Mn;35;NSM;;;;;N;ARABIC ALEF ABOVE;;;; 0671;ARABIC LETTER ALEF WASLA;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAT WASL ON ALEF;;;; 0672;ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH ON ALEF;;;; 0673;ARABIC LETTER ALEF WITH WAVY HAMZA BELOW;Lo;0;AL;;;;;N;ARABIC LETTER WAVY HAMZAH UNDER ALEF;;;; 0674;ARABIC LETTER HIGH HAMZA;Lo;0;AL;;;;;N;ARABIC LETTER HIGH HAMZAH;;;; 0675;ARABIC LETTER HIGH HAMZA ALEF;Lo;0;AL; 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;; 0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL; 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;; 0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL; 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;; 0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL; 064A 0674;;;;N;ARABIC LETTER HIGH HAMZAH YA;;;; 0679;ARABIC LETTER TTEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH SMALL TAH;;;; 067A;ARABIC LETTER TTEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH TWO DOTS VERTICAL ABOVE;;;; 067B;ARABIC LETTER BEEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH TWO DOTS VERTICAL BELOW;;;; 067C;ARABIC LETTER TEH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH RING;;;; 067D;ARABIC LETTER TEH WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS ABOVE DOWNWARD;;;; 067E;ARABIC LETTER PEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH THREE DOTS BELOW;;;; 067F;ARABIC LETTER TEHEH;Lo;0;AL;;;;;N;ARABIC LETTER TAA WITH FOUR DOTS ABOVE;;;; 0680;ARABIC LETTER BEHEH;Lo;0;AL;;;;;N;ARABIC LETTER BAA WITH FOUR DOTS BELOW;;;; 0681;ARABIC LETTER HAH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAMZAH ON HAA;;;; 0682;ARABIC LETTER HAH WITH TWO DOTS VERTICAL ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH TWO DOTS VERTICAL ABOVE;;;; 0683;ARABIC LETTER NYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS;;;; 0684;ARABIC LETTER DYEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE TWO DOTS VERTICAL;;;; 0685;ARABIC LETTER HAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH THREE DOTS ABOVE;;;; 0686;ARABIC LETTER TCHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE THREE DOTS DOWNWARD;;;; 0687;ARABIC LETTER TCHEHEH;Lo;0;AL;;;;;N;ARABIC LETTER HAA WITH MIDDLE FOUR DOTS;;;; 0688;ARABIC LETTER DDAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH SMALL TAH;;;; 0689;ARABIC LETTER DAL WITH RING;Lo;0;AL;;;;;N;;;;; 068A;ARABIC LETTER DAL WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; 068B;ARABIC LETTER DAL WITH DOT BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; 068C;ARABIC LETTER DAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS ABOVE;;;; 068D;ARABIC LETTER DDAHAL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH TWO DOTS BELOW;;;; 068E;ARABIC LETTER DUL;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE;;;; 068F;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARDS;Lo;0;AL;;;;;N;ARABIC LETTER DAL WITH THREE DOTS ABOVE DOWNWARD;;;; 0690;ARABIC LETTER DAL WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 0691;ARABIC LETTER RREH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL TAH;;;; 0692;ARABIC LETTER REH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V;;;; 0693;ARABIC LETTER REH WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH RING;;;; 0694;ARABIC LETTER REH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW;;;; 0695;ARABIC LETTER REH WITH SMALL V BELOW;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH SMALL V BELOW;;;; 0696;ARABIC LETTER REH WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH DOT BELOW AND DOT ABOVE;;;; 0697;ARABIC LETTER REH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH TWO DOTS ABOVE;;;; 0698;ARABIC LETTER JEH;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH THREE DOTS ABOVE;;;; 0699;ARABIC LETTER REH WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER RA WITH FOUR DOTS ABOVE;;;; 069A;ARABIC LETTER SEEN WITH DOT BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; 069B;ARABIC LETTER SEEN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; 069C;ARABIC LETTER SEEN WITH THREE DOTS BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 069D;ARABIC LETTER SAD WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; 069E;ARABIC LETTER SAD WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 069F;ARABIC LETTER TAH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 06A0;ARABIC LETTER AIN WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 06A1;ARABIC LETTER DOTLESS FEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS FA;;;; 06A2;ARABIC LETTER FEH WITH DOT MOVED BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT MOVED BELOW;;;; 06A3;ARABIC LETTER FEH WITH DOT BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH DOT BELOW;;;; 06A4;ARABIC LETTER VEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS ABOVE;;;; 06A5;ARABIC LETTER FEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH THREE DOTS BELOW;;;; 06A6;ARABIC LETTER PEHEH;Lo;0;AL;;;;;N;ARABIC LETTER FA WITH FOUR DOTS ABOVE;;;; 06A7;ARABIC LETTER QAF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; 06A8;ARABIC LETTER QAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 06A9;ARABIC LETTER KEHEH;Lo;0;AL;;;;;N;ARABIC LETTER OPEN CAF;;;; 06AA;ARABIC LETTER SWASH KAF;Lo;0;AL;;;;;N;ARABIC LETTER SWASH CAF;;;; 06AB;ARABIC LETTER KAF WITH RING;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH RING;;;; 06AC;ARABIC LETTER KAF WITH DOT ABOVE;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH DOT ABOVE;;;; 06AD;ARABIC LETTER NG;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS ABOVE;;;; 06AE;ARABIC LETTER KAF WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER CAF WITH THREE DOTS BELOW;;;; 06AF;ARABIC LETTER GAF;Lo;0;AL;;;;;N;;*;;; 06B0;ARABIC LETTER GAF WITH RING;Lo;0;AL;;;;;N;;;;; 06B1;ARABIC LETTER NGOEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS ABOVE;;;; 06B2;ARABIC LETTER GAF WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; 06B3;ARABIC LETTER GUEH;Lo;0;AL;;;;;N;ARABIC LETTER GAF WITH TWO DOTS VERTICAL BELOW;;;; 06B4;ARABIC LETTER GAF WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 06B5;ARABIC LETTER LAM WITH SMALL V;Lo;0;AL;;;;;N;;;;; 06B6;ARABIC LETTER LAM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; 06B7;ARABIC LETTER LAM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 06B8;ARABIC LETTER LAM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;; 06B9;ARABIC LETTER NOON WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; 06BA;ARABIC LETTER NOON GHUNNA;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON;;;; 06BB;ARABIC LETTER RNOON;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS NOON WITH SMALL TAH;;;; 06BC;ARABIC LETTER NOON WITH RING;Lo;0;AL;;;;;N;;;;; 06BD;ARABIC LETTER NOON WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 06BE;ARABIC LETTER HEH DOACHASHMEE;Lo;0;AL;;;;;N;ARABIC LETTER KNOTTED HA;;;; 06BF;ARABIC LETTER TCHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; 06C0;ARABIC LETTER HEH WITH YEH ABOVE;Lo;0;AL;06D5 0654;;;;N;ARABIC LETTER HAMZAH ON HA;;;; 06C1;ARABIC LETTER HEH GOAL;Lo;0;AL;;;;;N;ARABIC LETTER HA GOAL;;;; 06C2;ARABIC LETTER HEH GOAL WITH HAMZA ABOVE;Lo;0;AL;06C1 0654;;;;N;ARABIC LETTER HAMZAH ON HA GOAL;;;; 06C3;ARABIC LETTER TEH MARBUTA GOAL;Lo;0;AL;;;;;N;ARABIC LETTER TAA MARBUTAH GOAL;;;; 06C4;ARABIC LETTER WAW WITH RING;Lo;0;AL;;;;;N;;;;; 06C5;ARABIC LETTER KIRGHIZ OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH BAR;;;; 06C6;ARABIC LETTER OE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH SMALL V;;;; 06C7;ARABIC LETTER U;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH DAMMAH;;;; 06C8;ARABIC LETTER YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH ALEF ABOVE;;;; 06C9;ARABIC LETTER KIRGHIZ YU;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH INVERTED SMALL V;;;; 06CA;ARABIC LETTER WAW WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 06CB;ARABIC LETTER VE;Lo;0;AL;;;;;N;ARABIC LETTER WAW WITH THREE DOTS ABOVE;;;; 06CC;ARABIC LETTER FARSI YEH;Lo;0;AL;;;;;N;ARABIC LETTER DOTLESS YA;;;; 06CD;ARABIC LETTER YEH WITH TAIL;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TAIL;;;; 06CE;ARABIC LETTER YEH WITH SMALL V;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH SMALL V;;;; 06CF;ARABIC LETTER WAW WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; 06D0;ARABIC LETTER E;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH TWO DOTS VERTICAL BELOW;*;;; 06D1;ARABIC LETTER YEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;ARABIC LETTER YA WITH THREE DOTS BELOW;;;; 06D2;ARABIC LETTER YEH BARREE;Lo;0;AL;;;;;N;ARABIC LETTER YA BARREE;;;; 06D3;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE;Lo;0;AL;06D2 0654;;;;N;ARABIC LETTER HAMZAH ON YA BARREE;;;; 06D4;ARABIC FULL STOP;Po;0;AL;;;;;N;ARABIC PERIOD;;;; 06D5;ARABIC LETTER AE;Lo;0;AL;;;;;N;;;;; 06D6;ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; 06D7;ARABIC SMALL HIGH LIGATURE QAF WITH LAM WITH ALEF MAKSURA;Mn;230;NSM;;;;;N;;;;; 06D8;ARABIC SMALL HIGH MEEM INITIAL FORM;Mn;230;NSM;;;;;N;;;;; 06D9;ARABIC SMALL HIGH LAM ALEF;Mn;230;NSM;;;;;N;;;;; 06DA;ARABIC SMALL HIGH JEEM;Mn;230;NSM;;;;;N;;;;; 06DB;ARABIC SMALL HIGH THREE DOTS;Mn;230;NSM;;;;;N;;;;; 06DC;ARABIC SMALL HIGH SEEN;Mn;230;NSM;;;;;N;;;;; 06DD;ARABIC END OF AYAH;Cf;0;AL;;;;;N;;;;; 06DE;ARABIC START OF RUB EL HIZB;Me;0;NSM;;;;;N;;;;; 06DF;ARABIC SMALL HIGH ROUNDED ZERO;Mn;230;NSM;;;;;N;;;;; 06E0;ARABIC SMALL HIGH UPRIGHT RECTANGULAR ZERO;Mn;230;NSM;;;;;N;;;;; 06E1;ARABIC SMALL HIGH DOTLESS HEAD OF KHAH;Mn;230;NSM;;;;;N;;;;; 06E2;ARABIC SMALL HIGH MEEM ISOLATED FORM;Mn;230;NSM;;;;;N;;;;; 06E3;ARABIC SMALL LOW SEEN;Mn;220;NSM;;;;;N;;;;; 06E4;ARABIC SMALL HIGH MADDA;Mn;230;NSM;;;;;N;;;;; 06E5;ARABIC SMALL WAW;Lm;0;AL;;;;;N;;;;; 06E6;ARABIC SMALL YEH;Lm;0;AL;;;;;N;;;;; 06E7;ARABIC SMALL HIGH YEH;Mn;230;NSM;;;;;N;;;;; 06E8;ARABIC SMALL HIGH NOON;Mn;230;NSM;;;;;N;;;;; 06E9;ARABIC PLACE OF SAJDAH;So;0;ON;;;;;N;;;;; 06EA;ARABIC EMPTY CENTRE LOW STOP;Mn;220;NSM;;;;;N;;;;; 06EB;ARABIC EMPTY CENTRE HIGH STOP;Mn;230;NSM;;;;;N;;;;; 06EC;ARABIC ROUNDED HIGH STOP WITH FILLED CENTRE;Mn;230;NSM;;;;;N;;;;; 06ED;ARABIC SMALL LOW MEEM;Mn;220;NSM;;;;;N;;;;; 06EE;ARABIC LETTER DAL WITH INVERTED V;Lo;0;AL;;;;;N;;;;; 06EF;ARABIC LETTER REH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; 06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;; 06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;; 06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;; 06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;; 06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;; 06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;; 06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;; 06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;; 06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;; 06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;; 06FA;ARABIC LETTER SHEEN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; 06FB;ARABIC LETTER DAD WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; 06FC;ARABIC LETTER GHAIN WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; 06FD;ARABIC SIGN SINDHI AMPERSAND;So;0;AL;;;;;N;;;;; 06FE;ARABIC SIGN SINDHI POSTPOSITION MEN;So;0;AL;;;;;N;;;;; 06FF;ARABIC LETTER HEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;; 0700;SYRIAC END OF PARAGRAPH;Po;0;AL;;;;;N;;;;; 0701;SYRIAC SUPRALINEAR FULL STOP;Po;0;AL;;;;;N;;;;; 0702;SYRIAC SUBLINEAR FULL STOP;Po;0;AL;;;;;N;;;;; 0703;SYRIAC SUPRALINEAR COLON;Po;0;AL;;;;;N;;;;; 0704;SYRIAC SUBLINEAR COLON;Po;0;AL;;;;;N;;;;; 0705;SYRIAC HORIZONTAL COLON;Po;0;AL;;;;;N;;;;; 0706;SYRIAC COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; 0707;SYRIAC COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; 0708;SYRIAC SUPRALINEAR COLON SKEWED LEFT;Po;0;AL;;;;;N;;;;; 0709;SYRIAC SUBLINEAR COLON SKEWED RIGHT;Po;0;AL;;;;;N;;;;; 070A;SYRIAC CONTRACTION;Po;0;AL;;;;;N;;;;; 070B;SYRIAC HARKLEAN OBELUS;Po;0;AL;;;;;N;;;;; 070C;SYRIAC HARKLEAN METOBELUS;Po;0;AL;;;;;N;;;;; 070D;SYRIAC HARKLEAN ASTERISCUS;Po;0;AL;;;;;N;;;;; 070F;SYRIAC ABBREVIATION MARK;Cf;0;BN;;;;;N;;;;; 0710;SYRIAC LETTER ALAPH;Lo;0;AL;;;;;N;;;;; 0711;SYRIAC LETTER SUPERSCRIPT ALAPH;Mn;36;NSM;;;;;N;;;;; 0712;SYRIAC LETTER BETH;Lo;0;AL;;;;;N;;;;; 0713;SYRIAC LETTER GAMAL;Lo;0;AL;;;;;N;;;;; 0714;SYRIAC LETTER GAMAL GARSHUNI;Lo;0;AL;;;;;N;;;;; 0715;SYRIAC LETTER DALATH;Lo;0;AL;;;;;N;;;;; 0716;SYRIAC LETTER DOTLESS DALATH RISH;Lo;0;AL;;;;;N;;;;; 0717;SYRIAC LETTER HE;Lo;0;AL;;;;;N;;;;; 0718;SYRIAC LETTER WAW;Lo;0;AL;;;;;N;;;;; 0719;SYRIAC LETTER ZAIN;Lo;0;AL;;;;;N;;;;; 071A;SYRIAC LETTER HETH;Lo;0;AL;;;;;N;;;;; 071B;SYRIAC LETTER TETH;Lo;0;AL;;;;;N;;;;; 071C;SYRIAC LETTER TETH GARSHUNI;Lo;0;AL;;;;;N;;;;; 071D;SYRIAC LETTER YUDH;Lo;0;AL;;;;;N;;;;; 071E;SYRIAC LETTER YUDH HE;Lo;0;AL;;;;;N;;;;; 071F;SYRIAC LETTER KAPH;Lo;0;AL;;;;;N;;;;; 0720;SYRIAC LETTER LAMADH;Lo;0;AL;;;;;N;;;;; 0721;SYRIAC LETTER MIM;Lo;0;AL;;;;;N;;;;; 0722;SYRIAC LETTER NUN;Lo;0;AL;;;;;N;;;;; 0723;SYRIAC LETTER SEMKATH;Lo;0;AL;;;;;N;;;;; 0724;SYRIAC LETTER FINAL SEMKATH;Lo;0;AL;;;;;N;;;;; 0725;SYRIAC LETTER E;Lo;0;AL;;;;;N;;;;; 0726;SYRIAC LETTER PE;Lo;0;AL;;;;;N;;;;; 0727;SYRIAC LETTER REVERSED PE;Lo;0;AL;;;;;N;;;;; 0728;SYRIAC LETTER SADHE;Lo;0;AL;;;;;N;;;;; 0729;SYRIAC LETTER QAPH;Lo;0;AL;;;;;N;;;;; 072A;SYRIAC LETTER RISH;Lo;0;AL;;;;;N;;;;; 072B;SYRIAC LETTER SHIN;Lo;0;AL;;;;;N;;;;; 072C;SYRIAC LETTER TAW;Lo;0;AL;;;;;N;;;;; 072D;SYRIAC LETTER PERSIAN BHETH;Lo;0;AL;;;;;N;;;;; 072E;SYRIAC LETTER PERSIAN GHAMAL;Lo;0;AL;;;;;N;;;;; 072F;SYRIAC LETTER PERSIAN DHALATH;Lo;0;AL;;;;;N;;;;; 0730;SYRIAC PTHAHA ABOVE;Mn;230;NSM;;;;;N;;;;; 0731;SYRIAC PTHAHA BELOW;Mn;220;NSM;;;;;N;;;;; 0732;SYRIAC PTHAHA DOTTED;Mn;230;NSM;;;;;N;;;;; 0733;SYRIAC ZQAPHA ABOVE;Mn;230;NSM;;;;;N;;;;; 0734;SYRIAC ZQAPHA BELOW;Mn;220;NSM;;;;;N;;;;; 0735;SYRIAC ZQAPHA DOTTED;Mn;230;NSM;;;;;N;;;;; 0736;SYRIAC RBASA ABOVE;Mn;230;NSM;;;;;N;;;;; 0737;SYRIAC RBASA BELOW;Mn;220;NSM;;;;;N;;;;; 0738;SYRIAC DOTTED ZLAMA HORIZONTAL;Mn;220;NSM;;;;;N;;;;; 0739;SYRIAC DOTTED ZLAMA ANGULAR;Mn;220;NSM;;;;;N;;;;; 073A;SYRIAC HBASA ABOVE;Mn;230;NSM;;;;;N;;;;; 073B;SYRIAC HBASA BELOW;Mn;220;NSM;;;;;N;;;;; 073C;SYRIAC HBASA-ESASA DOTTED;Mn;220;NSM;;;;;N;;;;; 073D;SYRIAC ESASA ABOVE;Mn;230;NSM;;;;;N;;;;; 073E;SYRIAC ESASA BELOW;Mn;220;NSM;;;;;N;;;;; 073F;SYRIAC RWAHA;Mn;230;NSM;;;;;N;;;;; 0740;SYRIAC FEMININE DOT;Mn;230;NSM;;;;;N;;;;; 0741;SYRIAC QUSHSHAYA;Mn;230;NSM;;;;;N;;;;; 0742;SYRIAC RUKKAKHA;Mn;220;NSM;;;;;N;;;;; 0743;SYRIAC TWO VERTICAL DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; 0744;SYRIAC TWO VERTICAL DOTS BELOW;Mn;220;NSM;;;;;N;;;;; 0745;SYRIAC THREE DOTS ABOVE;Mn;230;NSM;;;;;N;;;;; 0746;SYRIAC THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;; 0747;SYRIAC OBLIQUE LINE ABOVE;Mn;230;NSM;;;;;N;;;;; 0748;SYRIAC OBLIQUE LINE BELOW;Mn;220;NSM;;;;;N;;;;; 0749;SYRIAC MUSIC;Mn;230;NSM;;;;;N;;;;; 074A;SYRIAC BARREKH;Mn;230;NSM;;;;;N;;;;; 074D;SYRIAC LETTER SOGDIAN ZHAIN;Lo;0;AL;;;;;N;;;;; 074E;SYRIAC LETTER SOGDIAN KHAPH;Lo;0;AL;;;;;N;;;;; 074F;SYRIAC LETTER SOGDIAN FE;Lo;0;AL;;;;;N;;;;; 0750;ARABIC LETTER BEH WITH THREE DOTS HORIZONTALLY BELOW;Lo;0;AL;;;;;N;;;;; 0751;ARABIC LETTER BEH WITH DOT BELOW AND THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 0752;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; 0753;ARABIC LETTER BEH WITH THREE DOTS POINTING UPWARDS BELOW AND TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 0754;ARABIC LETTER BEH WITH TWO DOTS BELOW AND DOT ABOVE;Lo;0;AL;;;;;N;;;;; 0755;ARABIC LETTER BEH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; 0756;ARABIC LETTER BEH WITH SMALL V;Lo;0;AL;;;;;N;;;;; 0757;ARABIC LETTER HAH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 0758;ARABIC LETTER HAH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; 0759;ARABIC LETTER DAL WITH TWO DOTS VERTICALLY BELOW AND SMALL TAH;Lo;0;AL;;;;;N;;;;; 075A;ARABIC LETTER DAL WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;; 075B;ARABIC LETTER REH WITH STROKE;Lo;0;AL;;;;;N;;;;; 075C;ARABIC LETTER SEEN WITH FOUR DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 075D;ARABIC LETTER AIN WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 075E;ARABIC LETTER AIN WITH THREE DOTS POINTING DOWNWARDS ABOVE;Lo;0;AL;;;;;N;;;;; 075F;ARABIC LETTER AIN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; 0760;ARABIC LETTER FEH WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; 0761;ARABIC LETTER FEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; 0762;ARABIC LETTER KEHEH WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; 0763;ARABIC LETTER KEHEH WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;; 0764;ARABIC LETTER KEHEH WITH THREE DOTS POINTING UPWARDS BELOW;Lo;0;AL;;;;;N;;;;; 0765;ARABIC LETTER MEEM WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;; 0766;ARABIC LETTER MEEM WITH DOT BELOW;Lo;0;AL;;;;;N;;;;; 0767;ARABIC LETTER NOON WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;; 0768;ARABIC LETTER NOON WITH SMALL TAH;Lo;0;AL;;;;;N;;;;; 0769;ARABIC LETTER NOON WITH SMALL V;Lo;0;AL;;;;;N;;;;; 076A;ARABIC LETTER LAM WITH BAR;Lo;0;AL;;;;;N;;;;; 076B;ARABIC LETTER REH WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; 076C;ARABIC LETTER REH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;; 076D;ARABIC LETTER SEEN WITH TWO DOTS VERTICALLY ABOVE;Lo;0;AL;;;;;N;;;;; 0780;THAANA LETTER HAA;Lo;0;AL;;;;;N;;;;; 0781;THAANA LETTER SHAVIYANI;Lo;0;AL;;;;;N;;;;; 0782;THAANA LETTER NOONU;Lo;0;AL;;;;;N;;;;; 0783;THAANA LETTER RAA;Lo;0;AL;;;;;N;;;;; 0784;THAANA LETTER BAA;Lo;0;AL;;;;;N;;;;; 0785;THAANA LETTER LHAVIYANI;Lo;0;AL;;;;;N;;;;; 0786;THAANA LETTER KAAFU;Lo;0;AL;;;;;N;;;;; 0787;THAANA LETTER ALIFU;Lo;0;AL;;;;;N;;;;; 0788;THAANA LETTER VAAVU;Lo;0;AL;;;;;N;;;;; 0789;THAANA LETTER MEEMU;Lo;0;AL;;;;;N;;;;; 078A;THAANA LETTER FAAFU;Lo;0;AL;;;;;N;;;;; 078B;THAANA LETTER DHAALU;Lo;0;AL;;;;;N;;;;; 078C;THAANA LETTER THAA;Lo;0;AL;;;;;N;;;;; 078D;THAANA LETTER LAAMU;Lo;0;AL;;;;;N;;;;; 078E;THAANA LETTER GAAFU;Lo;0;AL;;;;;N;;;;; 078F;THAANA LETTER GNAVIYANI;Lo;0;AL;;;;;N;;;;; 0790;THAANA LETTER SEENU;Lo;0;AL;;;;;N;;;;; 0791;THAANA LETTER DAVIYANI;Lo;0;AL;;;;;N;;;;; 0792;THAANA LETTER ZAVIYANI;Lo;0;AL;;;;;N;;;;; 0793;THAANA LETTER TAVIYANI;Lo;0;AL;;;;;N;;;;; 0794;THAANA LETTER YAA;Lo;0;AL;;;;;N;;;;; 0795;THAANA LETTER PAVIYANI;Lo;0;AL;;;;;N;;;;; 0796;THAANA LETTER JAVIYANI;Lo;0;AL;;;;;N;;;;; 0797;THAANA LETTER CHAVIYANI;Lo;0;AL;;;;;N;;;;; 0798;THAANA LETTER TTAA;Lo;0;AL;;;;;N;;;;; 0799;THAANA LETTER HHAA;Lo;0;AL;;;;;N;;;;; 079A;THAANA LETTER KHAA;Lo;0;AL;;;;;N;;;;; 079B;THAANA LETTER THAALU;Lo;0;AL;;;;;N;;;;; 079C;THAANA LETTER ZAA;Lo;0;AL;;;;;N;;;;; 079D;THAANA LETTER SHEENU;Lo;0;AL;;;;;N;;;;; 079E;THAANA LETTER SAADHU;Lo;0;AL;;;;;N;;;;; 079F;THAANA LETTER DAADHU;Lo;0;AL;;;;;N;;;;; 07A0;THAANA LETTER TO;Lo;0;AL;;;;;N;;;;; 07A1;THAANA LETTER ZO;Lo;0;AL;;;;;N;;;;; 07A2;THAANA LETTER AINU;Lo;0;AL;;;;;N;;;;; 07A3;THAANA LETTER GHAINU;Lo;0;AL;;;;;N;;;;; 07A4;THAANA LETTER QAAFU;Lo;0;AL;;;;;N;;;;; 07A5;THAANA LETTER WAAVU;Lo;0;AL;;;;;N;;;;; 07A6;THAANA ABAFILI;Mn;0;NSM;;;;;N;;;;; 07A7;THAANA AABAAFILI;Mn;0;NSM;;;;;N;;;;; 07A8;THAANA IBIFILI;Mn;0;NSM;;;;;N;;;;; 07A9;THAANA EEBEEFILI;Mn;0;NSM;;;;;N;;;;; 07AA;THAANA UBUFILI;Mn;0;NSM;;;;;N;;;;; 07AB;THAANA OOBOOFILI;Mn;0;NSM;;;;;N;;;;; 07AC;THAANA EBEFILI;Mn;0;NSM;;;;;N;;;;; 07AD;THAANA EYBEYFILI;Mn;0;NSM;;;;;N;;;;; 07AE;THAANA OBOFILI;Mn;0;NSM;;;;;N;;;;; 07AF;THAANA OABOAFILI;Mn;0;NSM;;;;;N;;;;; 07B0;THAANA SUKUN;Mn;0;NSM;;;;;N;;;;; 07B1;THAANA LETTER NAA;Lo;0;AL;;;;;N;;;;; 07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;; 07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;; 07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;; 07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;; 07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;; 07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;; 07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;; 07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;; 07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;; 07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;; 07CA;NKO LETTER A;Lo;0;R;;;;;N;;;;; 07CB;NKO LETTER EE;Lo;0;R;;;;;N;;;;; 07CC;NKO LETTER I;Lo;0;R;;;;;N;;;;; 07CD;NKO LETTER E;Lo;0;R;;;;;N;;;;; 07CE;NKO LETTER U;Lo;0;R;;;;;N;;;;; 07CF;NKO LETTER OO;Lo;0;R;;;;;N;;;;; 07D0;NKO LETTER O;Lo;0;R;;;;;N;;;;; 07D1;NKO LETTER DAGBASINNA;Lo;0;R;;;;;N;;;;; 07D2;NKO LETTER N;Lo;0;R;;;;;N;;;;; 07D3;NKO LETTER BA;Lo;0;R;;;;;N;;;;; 07D4;NKO LETTER PA;Lo;0;R;;;;;N;;;;; 07D5;NKO LETTER TA;Lo;0;R;;;;;N;;;;; 07D6;NKO LETTER JA;Lo;0;R;;;;;N;;;;; 07D7;NKO LETTER CHA;Lo;0;R;;;;;N;;;;; 07D8;NKO LETTER DA;Lo;0;R;;;;;N;;;;; 07D9;NKO LETTER RA;Lo;0;R;;;;;N;;;;; 07DA;NKO LETTER RRA;Lo;0;R;;;;;N;;;;; 07DB;NKO LETTER SA;Lo;0;R;;;;;N;;;;; 07DC;NKO LETTER GBA;Lo;0;R;;;;;N;;;;; 07DD;NKO LETTER FA;Lo;0;R;;;;;N;;;;; 07DE;NKO LETTER KA;Lo;0;R;;;;;N;;;;; 07DF;NKO LETTER LA;Lo;0;R;;;;;N;;;;; 07E0;NKO LETTER NA WOLOSO;Lo;0;R;;;;;N;;;;; 07E1;NKO LETTER MA;Lo;0;R;;;;;N;;;;; 07E2;NKO LETTER NYA;Lo;0;R;;;;;N;;;;; 07E3;NKO LETTER NA;Lo;0;R;;;;;N;;;;; 07E4;NKO LETTER HA;Lo;0;R;;;;;N;;;;; 07E5;NKO LETTER WA;Lo;0;R;;;;;N;;;;; 07E6;NKO LETTER YA;Lo;0;R;;;;;N;;;;; 07E7;NKO LETTER NYA WOLOSO;Lo;0;R;;;;;N;;;;; 07E8;NKO LETTER JONA JA;Lo;0;R;;;;;N;;;;; 07E9;NKO LETTER JONA CHA;Lo;0;R;;;;;N;;;;; 07EA;NKO LETTER JONA RA;Lo;0;R;;;;;N;;;;; 07EB;NKO COMBINING SHORT HIGH TONE;Mn;230;NSM;;;;;N;;;;; 07EC;NKO COMBINING SHORT LOW TONE;Mn;230;NSM;;;;;N;;;;; 07ED;NKO COMBINING SHORT RISING TONE;Mn;230;NSM;;;;;N;;;;; 07EE;NKO COMBINING LONG DESCENDING TONE;Mn;230;NSM;;;;;N;;;;; 07EF;NKO COMBINING LONG HIGH TONE;Mn;230;NSM;;;;;N;;;;; 07F0;NKO COMBINING LONG LOW TONE;Mn;230;NSM;;;;;N;;;;; 07F1;NKO COMBINING LONG RISING TONE;Mn;230;NSM;;;;;N;;;;; 07F2;NKO COMBINING NASALIZATION MARK;Mn;220;NSM;;;;;N;;;;; 07F3;NKO COMBINING DOUBLE DOT ABOVE;Mn;230;NSM;;;;;N;;;;; 07F4;NKO HIGH TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; 07F5;NKO LOW TONE APOSTROPHE;Lm;0;R;;;;;N;;;;; 07F6;NKO SYMBOL OO DENNEN;So;0;ON;;;;;N;;;;; 07F7;NKO SYMBOL GBAKURUNEN;Po;0;ON;;;;;N;;;;; 07F8;NKO COMMA;Po;0;ON;;;;;N;;;;; 07F9;NKO EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; 07FA;NKO LAJANYALAN;Lm;0;R;;;;;N;;;;; 0901;DEVANAGARI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0902;DEVANAGARI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; 0903;DEVANAGARI SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0904;DEVANAGARI LETTER SHORT A;Lo;0;L;;;;;N;;;;; 0905;DEVANAGARI LETTER A;Lo;0;L;;;;;N;;;;; 0906;DEVANAGARI LETTER AA;Lo;0;L;;;;;N;;;;; 0907;DEVANAGARI LETTER I;Lo;0;L;;;;;N;;;;; 0908;DEVANAGARI LETTER II;Lo;0;L;;;;;N;;;;; 0909;DEVANAGARI LETTER U;Lo;0;L;;;;;N;;;;; 090A;DEVANAGARI LETTER UU;Lo;0;L;;;;;N;;;;; 090B;DEVANAGARI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 090C;DEVANAGARI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 090D;DEVANAGARI LETTER CANDRA E;Lo;0;L;;;;;N;;;;; 090E;DEVANAGARI LETTER SHORT E;Lo;0;L;;;;;N;;;;; 090F;DEVANAGARI LETTER E;Lo;0;L;;;;;N;;;;; 0910;DEVANAGARI LETTER AI;Lo;0;L;;;;;N;;;;; 0911;DEVANAGARI LETTER CANDRA O;Lo;0;L;;;;;N;;;;; 0912;DEVANAGARI LETTER SHORT O;Lo;0;L;;;;;N;;;;; 0913;DEVANAGARI LETTER O;Lo;0;L;;;;;N;;;;; 0914;DEVANAGARI LETTER AU;Lo;0;L;;;;;N;;;;; 0915;DEVANAGARI LETTER KA;Lo;0;L;;;;;N;;;;; 0916;DEVANAGARI LETTER KHA;Lo;0;L;;;;;N;;;;; 0917;DEVANAGARI LETTER GA;Lo;0;L;;;;;N;;;;; 0918;DEVANAGARI LETTER GHA;Lo;0;L;;;;;N;;;;; 0919;DEVANAGARI LETTER NGA;Lo;0;L;;;;;N;;;;; 091A;DEVANAGARI LETTER CA;Lo;0;L;;;;;N;;;;; 091B;DEVANAGARI LETTER CHA;Lo;0;L;;;;;N;;;;; 091C;DEVANAGARI LETTER JA;Lo;0;L;;;;;N;;;;; 091D;DEVANAGARI LETTER JHA;Lo;0;L;;;;;N;;;;; 091E;DEVANAGARI LETTER NYA;Lo;0;L;;;;;N;;;;; 091F;DEVANAGARI LETTER TTA;Lo;0;L;;;;;N;;;;; 0920;DEVANAGARI LETTER TTHA;Lo;0;L;;;;;N;;;;; 0921;DEVANAGARI LETTER DDA;Lo;0;L;;;;;N;;;;; 0922;DEVANAGARI LETTER DDHA;Lo;0;L;;;;;N;;;;; 0923;DEVANAGARI LETTER NNA;Lo;0;L;;;;;N;;;;; 0924;DEVANAGARI LETTER TA;Lo;0;L;;;;;N;;;;; 0925;DEVANAGARI LETTER THA;Lo;0;L;;;;;N;;;;; 0926;DEVANAGARI LETTER DA;Lo;0;L;;;;;N;;;;; 0927;DEVANAGARI LETTER DHA;Lo;0;L;;;;;N;;;;; 0928;DEVANAGARI LETTER NA;Lo;0;L;;;;;N;;;;; 0929;DEVANAGARI LETTER NNNA;Lo;0;L;0928 093C;;;;N;;;;; 092A;DEVANAGARI LETTER PA;Lo;0;L;;;;;N;;;;; 092B;DEVANAGARI LETTER PHA;Lo;0;L;;;;;N;;;;; 092C;DEVANAGARI LETTER BA;Lo;0;L;;;;;N;;;;; 092D;DEVANAGARI LETTER BHA;Lo;0;L;;;;;N;;;;; 092E;DEVANAGARI LETTER MA;Lo;0;L;;;;;N;;;;; 092F;DEVANAGARI LETTER YA;Lo;0;L;;;;;N;;;;; 0930;DEVANAGARI LETTER RA;Lo;0;L;;;;;N;;;;; 0931;DEVANAGARI LETTER RRA;Lo;0;L;0930 093C;;;;N;;;;; 0932;DEVANAGARI LETTER LA;Lo;0;L;;;;;N;;;;; 0933;DEVANAGARI LETTER LLA;Lo;0;L;;;;;N;;;;; 0934;DEVANAGARI LETTER LLLA;Lo;0;L;0933 093C;;;;N;;;;; 0935;DEVANAGARI LETTER VA;Lo;0;L;;;;;N;;;;; 0936;DEVANAGARI LETTER SHA;Lo;0;L;;;;;N;;;;; 0937;DEVANAGARI LETTER SSA;Lo;0;L;;;;;N;;;;; 0938;DEVANAGARI LETTER SA;Lo;0;L;;;;;N;;;;; 0939;DEVANAGARI LETTER HA;Lo;0;L;;;;;N;;;;; 093C;DEVANAGARI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 093D;DEVANAGARI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; 093E;DEVANAGARI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 093F;DEVANAGARI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; 0940;DEVANAGARI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; 0941;DEVANAGARI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 0942;DEVANAGARI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 0943;DEVANAGARI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 0944;DEVANAGARI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; 0945;DEVANAGARI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; 0946;DEVANAGARI VOWEL SIGN SHORT E;Mn;0;NSM;;;;;N;;;;; 0947;DEVANAGARI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; 0948;DEVANAGARI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; 0949;DEVANAGARI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; 094A;DEVANAGARI VOWEL SIGN SHORT O;Mc;0;L;;;;;N;;;;; 094B;DEVANAGARI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; 094C;DEVANAGARI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; 094D;DEVANAGARI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0950;DEVANAGARI OM;Lo;0;L;;;;;N;;;;; 0951;DEVANAGARI STRESS SIGN UDATTA;Mn;230;NSM;;;;;N;;;;; 0952;DEVANAGARI STRESS SIGN ANUDATTA;Mn;220;NSM;;;;;N;;;;; 0953;DEVANAGARI GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; 0954;DEVANAGARI ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; 0958;DEVANAGARI LETTER QA;Lo;0;L;0915 093C;;;;N;;;;; 0959;DEVANAGARI LETTER KHHA;Lo;0;L;0916 093C;;;;N;;;;; 095A;DEVANAGARI LETTER GHHA;Lo;0;L;0917 093C;;;;N;;;;; 095B;DEVANAGARI LETTER ZA;Lo;0;L;091C 093C;;;;N;;;;; 095C;DEVANAGARI LETTER DDDHA;Lo;0;L;0921 093C;;;;N;;;;; 095D;DEVANAGARI LETTER RHA;Lo;0;L;0922 093C;;;;N;;;;; 095E;DEVANAGARI LETTER FA;Lo;0;L;092B 093C;;;;N;;;;; 095F;DEVANAGARI LETTER YYA;Lo;0;L;092F 093C;;;;N;;;;; 0960;DEVANAGARI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0961;DEVANAGARI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0962;DEVANAGARI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; 0963;DEVANAGARI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; 0964;DEVANAGARI DANDA;Po;0;L;;;;;N;;;;; 0965;DEVANAGARI DOUBLE DANDA;Po;0;L;;;;;N;;;;; 0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0970;DEVANAGARI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;; 097B;DEVANAGARI LETTER GGA;Lo;0;L;;;;;N;;;;; 097C;DEVANAGARI LETTER JJA;Lo;0;L;;;;;N;;;;; 097D;DEVANAGARI LETTER GLOTTAL STOP;Lo;0;L;;;;;N;;;;; 097E;DEVANAGARI LETTER DDDA;Lo;0;L;;;;;N;;;;; 097F;DEVANAGARI LETTER BBA;Lo;0;L;;;;;N;;;;; 0981;BENGALI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0982;BENGALI SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0983;BENGALI SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0985;BENGALI LETTER A;Lo;0;L;;;;;N;;;;; 0986;BENGALI LETTER AA;Lo;0;L;;;;;N;;;;; 0987;BENGALI LETTER I;Lo;0;L;;;;;N;;;;; 0988;BENGALI LETTER II;Lo;0;L;;;;;N;;;;; 0989;BENGALI LETTER U;Lo;0;L;;;;;N;;;;; 098A;BENGALI LETTER UU;Lo;0;L;;;;;N;;;;; 098B;BENGALI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 098C;BENGALI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 098F;BENGALI LETTER E;Lo;0;L;;;;;N;;;;; 0990;BENGALI LETTER AI;Lo;0;L;;;;;N;;;;; 0993;BENGALI LETTER O;Lo;0;L;;;;;N;;;;; 0994;BENGALI LETTER AU;Lo;0;L;;;;;N;;;;; 0995;BENGALI LETTER KA;Lo;0;L;;;;;N;;;;; 0996;BENGALI LETTER KHA;Lo;0;L;;;;;N;;;;; 0997;BENGALI LETTER GA;Lo;0;L;;;;;N;;;;; 0998;BENGALI LETTER GHA;Lo;0;L;;;;;N;;;;; 0999;BENGALI LETTER NGA;Lo;0;L;;;;;N;;;;; 099A;BENGALI LETTER CA;Lo;0;L;;;;;N;;;;; 099B;BENGALI LETTER CHA;Lo;0;L;;;;;N;;;;; 099C;BENGALI LETTER JA;Lo;0;L;;;;;N;;;;; 099D;BENGALI LETTER JHA;Lo;0;L;;;;;N;;;;; 099E;BENGALI LETTER NYA;Lo;0;L;;;;;N;;;;; 099F;BENGALI LETTER TTA;Lo;0;L;;;;;N;;;;; 09A0;BENGALI LETTER TTHA;Lo;0;L;;;;;N;;;;; 09A1;BENGALI LETTER DDA;Lo;0;L;;;;;N;;;;; 09A2;BENGALI LETTER DDHA;Lo;0;L;;;;;N;;;;; 09A3;BENGALI LETTER NNA;Lo;0;L;;;;;N;;;;; 09A4;BENGALI LETTER TA;Lo;0;L;;;;;N;;;;; 09A5;BENGALI LETTER THA;Lo;0;L;;;;;N;;;;; 09A6;BENGALI LETTER DA;Lo;0;L;;;;;N;;;;; 09A7;BENGALI LETTER DHA;Lo;0;L;;;;;N;;;;; 09A8;BENGALI LETTER NA;Lo;0;L;;;;;N;;;;; 09AA;BENGALI LETTER PA;Lo;0;L;;;;;N;;;;; 09AB;BENGALI LETTER PHA;Lo;0;L;;;;;N;;;;; 09AC;BENGALI LETTER BA;Lo;0;L;;;;;N;;;;; 09AD;BENGALI LETTER BHA;Lo;0;L;;;;;N;;;;; 09AE;BENGALI LETTER MA;Lo;0;L;;;;;N;;;;; 09AF;BENGALI LETTER YA;Lo;0;L;;;;;N;;;;; 09B0;BENGALI LETTER RA;Lo;0;L;;;;;N;;;;; 09B2;BENGALI LETTER LA;Lo;0;L;;;;;N;;;;; 09B6;BENGALI LETTER SHA;Lo;0;L;;;;;N;;;;; 09B7;BENGALI LETTER SSA;Lo;0;L;;;;;N;;;;; 09B8;BENGALI LETTER SA;Lo;0;L;;;;;N;;;;; 09B9;BENGALI LETTER HA;Lo;0;L;;;;;N;;;;; 09BC;BENGALI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 09BD;BENGALI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; 09BE;BENGALI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 09BF;BENGALI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; 09C0;BENGALI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; 09C1;BENGALI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 09C2;BENGALI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 09C3;BENGALI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 09C4;BENGALI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; 09C7;BENGALI VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 09C8;BENGALI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; 09CB;BENGALI VOWEL SIGN O;Mc;0;L;09C7 09BE;;;;N;;;;; 09CC;BENGALI VOWEL SIGN AU;Mc;0;L;09C7 09D7;;;;N;;;;; 09CD;BENGALI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 09CE;BENGALI LETTER KHANDA TA;Lo;0;L;;;;;N;;;;; 09D7;BENGALI AU LENGTH MARK;Mc;0;L;;;;;N;;;;; 09DC;BENGALI LETTER RRA;Lo;0;L;09A1 09BC;;;;N;;;;; 09DD;BENGALI LETTER RHA;Lo;0;L;09A2 09BC;;;;N;;;;; 09DF;BENGALI LETTER YYA;Lo;0;L;09AF 09BC;;;;N;;;;; 09E0;BENGALI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 09E1;BENGALI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 09E2;BENGALI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; 09E3;BENGALI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; 09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 09F0;BENGALI LETTER RA WITH MIDDLE DIAGONAL;Lo;0;L;;;;;N;;Assamese;;; 09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;Assamese;;; 09F2;BENGALI RUPEE MARK;Sc;0;ET;;;;;N;;;;; 09F3;BENGALI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; 09F4;BENGALI CURRENCY NUMERATOR ONE;No;0;L;;;;1;N;;;;; 09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;2;N;;;;; 09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3;N;;;;; 09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;4;N;;;;; 09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;;N;;;;; 09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;; 09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;; 0A01;GURMUKHI SIGN ADAK BINDI;Mn;0;NSM;;;;;N;;;;; 0A02;GURMUKHI SIGN BINDI;Mn;0;NSM;;;;;N;;;;; 0A03;GURMUKHI SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0A05;GURMUKHI LETTER A;Lo;0;L;;;;;N;;;;; 0A06;GURMUKHI LETTER AA;Lo;0;L;;;;;N;;;;; 0A07;GURMUKHI LETTER I;Lo;0;L;;;;;N;;;;; 0A08;GURMUKHI LETTER II;Lo;0;L;;;;;N;;;;; 0A09;GURMUKHI LETTER U;Lo;0;L;;;;;N;;;;; 0A0A;GURMUKHI LETTER UU;Lo;0;L;;;;;N;;;;; 0A0F;GURMUKHI LETTER EE;Lo;0;L;;;;;N;;;;; 0A10;GURMUKHI LETTER AI;Lo;0;L;;;;;N;;;;; 0A13;GURMUKHI LETTER OO;Lo;0;L;;;;;N;;;;; 0A14;GURMUKHI LETTER AU;Lo;0;L;;;;;N;;;;; 0A15;GURMUKHI LETTER KA;Lo;0;L;;;;;N;;;;; 0A16;GURMUKHI LETTER KHA;Lo;0;L;;;;;N;;;;; 0A17;GURMUKHI LETTER GA;Lo;0;L;;;;;N;;;;; 0A18;GURMUKHI LETTER GHA;Lo;0;L;;;;;N;;;;; 0A19;GURMUKHI LETTER NGA;Lo;0;L;;;;;N;;;;; 0A1A;GURMUKHI LETTER CA;Lo;0;L;;;;;N;;;;; 0A1B;GURMUKHI LETTER CHA;Lo;0;L;;;;;N;;;;; 0A1C;GURMUKHI LETTER JA;Lo;0;L;;;;;N;;;;; 0A1D;GURMUKHI LETTER JHA;Lo;0;L;;;;;N;;;;; 0A1E;GURMUKHI LETTER NYA;Lo;0;L;;;;;N;;;;; 0A1F;GURMUKHI LETTER TTA;Lo;0;L;;;;;N;;;;; 0A20;GURMUKHI LETTER TTHA;Lo;0;L;;;;;N;;;;; 0A21;GURMUKHI LETTER DDA;Lo;0;L;;;;;N;;;;; 0A22;GURMUKHI LETTER DDHA;Lo;0;L;;;;;N;;;;; 0A23;GURMUKHI LETTER NNA;Lo;0;L;;;;;N;;;;; 0A24;GURMUKHI LETTER TA;Lo;0;L;;;;;N;;;;; 0A25;GURMUKHI LETTER THA;Lo;0;L;;;;;N;;;;; 0A26;GURMUKHI LETTER DA;Lo;0;L;;;;;N;;;;; 0A27;GURMUKHI LETTER DHA;Lo;0;L;;;;;N;;;;; 0A28;GURMUKHI LETTER NA;Lo;0;L;;;;;N;;;;; 0A2A;GURMUKHI LETTER PA;Lo;0;L;;;;;N;;;;; 0A2B;GURMUKHI LETTER PHA;Lo;0;L;;;;;N;;;;; 0A2C;GURMUKHI LETTER BA;Lo;0;L;;;;;N;;;;; 0A2D;GURMUKHI LETTER BHA;Lo;0;L;;;;;N;;;;; 0A2E;GURMUKHI LETTER MA;Lo;0;L;;;;;N;;;;; 0A2F;GURMUKHI LETTER YA;Lo;0;L;;;;;N;;;;; 0A30;GURMUKHI LETTER RA;Lo;0;L;;;;;N;;;;; 0A32;GURMUKHI LETTER LA;Lo;0;L;;;;;N;;;;; 0A33;GURMUKHI LETTER LLA;Lo;0;L;0A32 0A3C;;;;N;;;;; 0A35;GURMUKHI LETTER VA;Lo;0;L;;;;;N;;;;; 0A36;GURMUKHI LETTER SHA;Lo;0;L;0A38 0A3C;;;;N;;;;; 0A38;GURMUKHI LETTER SA;Lo;0;L;;;;;N;;;;; 0A39;GURMUKHI LETTER HA;Lo;0;L;;;;;N;;;;; 0A3C;GURMUKHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 0A3E;GURMUKHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 0A3F;GURMUKHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; 0A40;GURMUKHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; 0A41;GURMUKHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 0A42;GURMUKHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 0A47;GURMUKHI VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; 0A48;GURMUKHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; 0A4B;GURMUKHI VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; 0A4C;GURMUKHI VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; 0A4D;GURMUKHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0A59;GURMUKHI LETTER KHHA;Lo;0;L;0A16 0A3C;;;;N;;;;; 0A5A;GURMUKHI LETTER GHHA;Lo;0;L;0A17 0A3C;;;;N;;;;; 0A5B;GURMUKHI LETTER ZA;Lo;0;L;0A1C 0A3C;;;;N;;;;; 0A5C;GURMUKHI LETTER RRA;Lo;0;L;;;;;N;;;;; 0A5E;GURMUKHI LETTER FA;Lo;0;L;0A2B 0A3C;;;;N;;;;; 0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0A70;GURMUKHI TIPPI;Mn;0;NSM;;;;;N;;;;; 0A71;GURMUKHI ADDAK;Mn;0;NSM;;;;;N;;;;; 0A72;GURMUKHI IRI;Lo;0;L;;;;;N;;;;; 0A73;GURMUKHI URA;Lo;0;L;;;;;N;;;;; 0A74;GURMUKHI EK ONKAR;Lo;0;L;;;;;N;;;;; 0A81;GUJARATI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0A82;GUJARATI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; 0A83;GUJARATI SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0A85;GUJARATI LETTER A;Lo;0;L;;;;;N;;;;; 0A86;GUJARATI LETTER AA;Lo;0;L;;;;;N;;;;; 0A87;GUJARATI LETTER I;Lo;0;L;;;;;N;;;;; 0A88;GUJARATI LETTER II;Lo;0;L;;;;;N;;;;; 0A89;GUJARATI LETTER U;Lo;0;L;;;;;N;;;;; 0A8A;GUJARATI LETTER UU;Lo;0;L;;;;;N;;;;; 0A8B;GUJARATI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 0A8C;GUJARATI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 0A8D;GUJARATI VOWEL CANDRA E;Lo;0;L;;;;;N;;;;; 0A8F;GUJARATI LETTER E;Lo;0;L;;;;;N;;;;; 0A90;GUJARATI LETTER AI;Lo;0;L;;;;;N;;;;; 0A91;GUJARATI VOWEL CANDRA O;Lo;0;L;;;;;N;;;;; 0A93;GUJARATI LETTER O;Lo;0;L;;;;;N;;;;; 0A94;GUJARATI LETTER AU;Lo;0;L;;;;;N;;;;; 0A95;GUJARATI LETTER KA;Lo;0;L;;;;;N;;;;; 0A96;GUJARATI LETTER KHA;Lo;0;L;;;;;N;;;;; 0A97;GUJARATI LETTER GA;Lo;0;L;;;;;N;;;;; 0A98;GUJARATI LETTER GHA;Lo;0;L;;;;;N;;;;; 0A99;GUJARATI LETTER NGA;Lo;0;L;;;;;N;;;;; 0A9A;GUJARATI LETTER CA;Lo;0;L;;;;;N;;;;; 0A9B;GUJARATI LETTER CHA;Lo;0;L;;;;;N;;;;; 0A9C;GUJARATI LETTER JA;Lo;0;L;;;;;N;;;;; 0A9D;GUJARATI LETTER JHA;Lo;0;L;;;;;N;;;;; 0A9E;GUJARATI LETTER NYA;Lo;0;L;;;;;N;;;;; 0A9F;GUJARATI LETTER TTA;Lo;0;L;;;;;N;;;;; 0AA0;GUJARATI LETTER TTHA;Lo;0;L;;;;;N;;;;; 0AA1;GUJARATI LETTER DDA;Lo;0;L;;;;;N;;;;; 0AA2;GUJARATI LETTER DDHA;Lo;0;L;;;;;N;;;;; 0AA3;GUJARATI LETTER NNA;Lo;0;L;;;;;N;;;;; 0AA4;GUJARATI LETTER TA;Lo;0;L;;;;;N;;;;; 0AA5;GUJARATI LETTER THA;Lo;0;L;;;;;N;;;;; 0AA6;GUJARATI LETTER DA;Lo;0;L;;;;;N;;;;; 0AA7;GUJARATI LETTER DHA;Lo;0;L;;;;;N;;;;; 0AA8;GUJARATI LETTER NA;Lo;0;L;;;;;N;;;;; 0AAA;GUJARATI LETTER PA;Lo;0;L;;;;;N;;;;; 0AAB;GUJARATI LETTER PHA;Lo;0;L;;;;;N;;;;; 0AAC;GUJARATI LETTER BA;Lo;0;L;;;;;N;;;;; 0AAD;GUJARATI LETTER BHA;Lo;0;L;;;;;N;;;;; 0AAE;GUJARATI LETTER MA;Lo;0;L;;;;;N;;;;; 0AAF;GUJARATI LETTER YA;Lo;0;L;;;;;N;;;;; 0AB0;GUJARATI LETTER RA;Lo;0;L;;;;;N;;;;; 0AB2;GUJARATI LETTER LA;Lo;0;L;;;;;N;;;;; 0AB3;GUJARATI LETTER LLA;Lo;0;L;;;;;N;;;;; 0AB5;GUJARATI LETTER VA;Lo;0;L;;;;;N;;;;; 0AB6;GUJARATI LETTER SHA;Lo;0;L;;;;;N;;;;; 0AB7;GUJARATI LETTER SSA;Lo;0;L;;;;;N;;;;; 0AB8;GUJARATI LETTER SA;Lo;0;L;;;;;N;;;;; 0AB9;GUJARATI LETTER HA;Lo;0;L;;;;;N;;;;; 0ABC;GUJARATI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 0ABD;GUJARATI SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; 0ABE;GUJARATI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 0ABF;GUJARATI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; 0AC0;GUJARATI VOWEL SIGN II;Mc;0;L;;;;;N;;;;; 0AC1;GUJARATI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 0AC2;GUJARATI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 0AC3;GUJARATI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 0AC4;GUJARATI VOWEL SIGN VOCALIC RR;Mn;0;NSM;;;;;N;;;;; 0AC5;GUJARATI VOWEL SIGN CANDRA E;Mn;0;NSM;;;;;N;;;;; 0AC7;GUJARATI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; 0AC8;GUJARATI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; 0AC9;GUJARATI VOWEL SIGN CANDRA O;Mc;0;L;;;;;N;;;;; 0ACB;GUJARATI VOWEL SIGN O;Mc;0;L;;;;;N;;;;; 0ACC;GUJARATI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; 0ACD;GUJARATI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0AD0;GUJARATI OM;Lo;0;L;;;;;N;;;;; 0AE0;GUJARATI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0AE1;GUJARATI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0AE2;GUJARATI VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; 0AE3;GUJARATI VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; 0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0AF1;GUJARATI RUPEE SIGN;Sc;0;ET;;;;;N;;;;; 0B01;ORIYA SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;; 0B02;ORIYA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0B03;ORIYA SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0B05;ORIYA LETTER A;Lo;0;L;;;;;N;;;;; 0B06;ORIYA LETTER AA;Lo;0;L;;;;;N;;;;; 0B07;ORIYA LETTER I;Lo;0;L;;;;;N;;;;; 0B08;ORIYA LETTER II;Lo;0;L;;;;;N;;;;; 0B09;ORIYA LETTER U;Lo;0;L;;;;;N;;;;; 0B0A;ORIYA LETTER UU;Lo;0;L;;;;;N;;;;; 0B0B;ORIYA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 0B0C;ORIYA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 0B0F;ORIYA LETTER E;Lo;0;L;;;;;N;;;;; 0B10;ORIYA LETTER AI;Lo;0;L;;;;;N;;;;; 0B13;ORIYA LETTER O;Lo;0;L;;;;;N;;;;; 0B14;ORIYA LETTER AU;Lo;0;L;;;;;N;;;;; 0B15;ORIYA LETTER KA;Lo;0;L;;;;;N;;;;; 0B16;ORIYA LETTER KHA;Lo;0;L;;;;;N;;;;; 0B17;ORIYA LETTER GA;Lo;0;L;;;;;N;;;;; 0B18;ORIYA LETTER GHA;Lo;0;L;;;;;N;;;;; 0B19;ORIYA LETTER NGA;Lo;0;L;;;;;N;;;;; 0B1A;ORIYA LETTER CA;Lo;0;L;;;;;N;;;;; 0B1B;ORIYA LETTER CHA;Lo;0;L;;;;;N;;;;; 0B1C;ORIYA LETTER JA;Lo;0;L;;;;;N;;;;; 0B1D;ORIYA LETTER JHA;Lo;0;L;;;;;N;;;;; 0B1E;ORIYA LETTER NYA;Lo;0;L;;;;;N;;;;; 0B1F;ORIYA LETTER TTA;Lo;0;L;;;;;N;;;;; 0B20;ORIYA LETTER TTHA;Lo;0;L;;;;;N;;;;; 0B21;ORIYA LETTER DDA;Lo;0;L;;;;;N;;;;; 0B22;ORIYA LETTER DDHA;Lo;0;L;;;;;N;;;;; 0B23;ORIYA LETTER NNA;Lo;0;L;;;;;N;;;;; 0B24;ORIYA LETTER TA;Lo;0;L;;;;;N;;;;; 0B25;ORIYA LETTER THA;Lo;0;L;;;;;N;;;;; 0B26;ORIYA LETTER DA;Lo;0;L;;;;;N;;;;; 0B27;ORIYA LETTER DHA;Lo;0;L;;;;;N;;;;; 0B28;ORIYA LETTER NA;Lo;0;L;;;;;N;;;;; 0B2A;ORIYA LETTER PA;Lo;0;L;;;;;N;;;;; 0B2B;ORIYA LETTER PHA;Lo;0;L;;;;;N;;;;; 0B2C;ORIYA LETTER BA;Lo;0;L;;;;;N;;;;; 0B2D;ORIYA LETTER BHA;Lo;0;L;;;;;N;;;;; 0B2E;ORIYA LETTER MA;Lo;0;L;;;;;N;;;;; 0B2F;ORIYA LETTER YA;Lo;0;L;;;;;N;;;;; 0B30;ORIYA LETTER RA;Lo;0;L;;;;;N;;;;; 0B32;ORIYA LETTER LA;Lo;0;L;;;;;N;;;;; 0B33;ORIYA LETTER LLA;Lo;0;L;;;;;N;;;;; 0B35;ORIYA LETTER VA;Lo;0;L;;;;;N;;;;; 0B36;ORIYA LETTER SHA;Lo;0;L;;;;;N;;;;; 0B37;ORIYA LETTER SSA;Lo;0;L;;;;;N;;;;; 0B38;ORIYA LETTER SA;Lo;0;L;;;;;N;;;;; 0B39;ORIYA LETTER HA;Lo;0;L;;;;;N;;;;; 0B3C;ORIYA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 0B3D;ORIYA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; 0B3E;ORIYA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 0B3F;ORIYA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 0B40;ORIYA VOWEL SIGN II;Mc;0;L;;;;;N;;;;; 0B41;ORIYA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 0B42;ORIYA VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 0B43;ORIYA VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 0B47;ORIYA VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 0B48;ORIYA VOWEL SIGN AI;Mc;0;L;0B47 0B56;;;;N;;;;; 0B4B;ORIYA VOWEL SIGN O;Mc;0;L;0B47 0B3E;;;;N;;;;; 0B4C;ORIYA VOWEL SIGN AU;Mc;0;L;0B47 0B57;;;;N;;;;; 0B4D;ORIYA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0B56;ORIYA AI LENGTH MARK;Mn;0;NSM;;;;;N;;;;; 0B57;ORIYA AU LENGTH MARK;Mc;0;L;;;;;N;;;;; 0B5C;ORIYA LETTER RRA;Lo;0;L;0B21 0B3C;;;;N;;;;; 0B5D;ORIYA LETTER RHA;Lo;0;L;0B22 0B3C;;;;N;;;;; 0B5F;ORIYA LETTER YYA;Lo;0;L;;;;;N;;;;; 0B60;ORIYA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0B61;ORIYA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0B70;ORIYA ISSHAR;So;0;L;;;;;N;;;;; 0B71;ORIYA LETTER WA;Lo;0;L;;;;;N;;;;; 0B82;TAMIL SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; 0B83;TAMIL SIGN VISARGA;Lo;0;L;;;;;N;;;;; 0B85;TAMIL LETTER A;Lo;0;L;;;;;N;;;;; 0B86;TAMIL LETTER AA;Lo;0;L;;;;;N;;;;; 0B87;TAMIL LETTER I;Lo;0;L;;;;;N;;;;; 0B88;TAMIL LETTER II;Lo;0;L;;;;;N;;;;; 0B89;TAMIL LETTER U;Lo;0;L;;;;;N;;;;; 0B8A;TAMIL LETTER UU;Lo;0;L;;;;;N;;;;; 0B8E;TAMIL LETTER E;Lo;0;L;;;;;N;;;;; 0B8F;TAMIL LETTER EE;Lo;0;L;;;;;N;;;;; 0B90;TAMIL LETTER AI;Lo;0;L;;;;;N;;;;; 0B92;TAMIL LETTER O;Lo;0;L;;;;;N;;;;; 0B93;TAMIL LETTER OO;Lo;0;L;;;;;N;;;;; 0B94;TAMIL LETTER AU;Lo;0;L;0B92 0BD7;;;;N;;;;; 0B95;TAMIL LETTER KA;Lo;0;L;;;;;N;;;;; 0B99;TAMIL LETTER NGA;Lo;0;L;;;;;N;;;;; 0B9A;TAMIL LETTER CA;Lo;0;L;;;;;N;;;;; 0B9C;TAMIL LETTER JA;Lo;0;L;;;;;N;;;;; 0B9E;TAMIL LETTER NYA;Lo;0;L;;;;;N;;;;; 0B9F;TAMIL LETTER TTA;Lo;0;L;;;;;N;;;;; 0BA3;TAMIL LETTER NNA;Lo;0;L;;;;;N;;;;; 0BA4;TAMIL LETTER TA;Lo;0;L;;;;;N;;;;; 0BA8;TAMIL LETTER NA;Lo;0;L;;;;;N;;;;; 0BA9;TAMIL LETTER NNNA;Lo;0;L;;;;;N;;;;; 0BAA;TAMIL LETTER PA;Lo;0;L;;;;;N;;;;; 0BAE;TAMIL LETTER MA;Lo;0;L;;;;;N;;;;; 0BAF;TAMIL LETTER YA;Lo;0;L;;;;;N;;;;; 0BB0;TAMIL LETTER RA;Lo;0;L;;;;;N;;;;; 0BB1;TAMIL LETTER RRA;Lo;0;L;;;;;N;;;;; 0BB2;TAMIL LETTER LA;Lo;0;L;;;;;N;;;;; 0BB3;TAMIL LETTER LLA;Lo;0;L;;;;;N;;;;; 0BB4;TAMIL LETTER LLLA;Lo;0;L;;;;;N;;;;; 0BB5;TAMIL LETTER VA;Lo;0;L;;;;;N;;;;; 0BB6;TAMIL LETTER SHA;Lo;0;L;;;;;N;;;;; 0BB7;TAMIL LETTER SSA;Lo;0;L;;;;;N;;;;; 0BB8;TAMIL LETTER SA;Lo;0;L;;;;;N;;;;; 0BB9;TAMIL LETTER HA;Lo;0;L;;;;;N;;;;; 0BBE;TAMIL VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 0BBF;TAMIL VOWEL SIGN I;Mc;0;L;;;;;N;;;;; 0BC0;TAMIL VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; 0BC1;TAMIL VOWEL SIGN U;Mc;0;L;;;;;N;;;;; 0BC2;TAMIL VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; 0BC6;TAMIL VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 0BC7;TAMIL VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; 0BC8;TAMIL VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; 0BCA;TAMIL VOWEL SIGN O;Mc;0;L;0BC6 0BBE;;;;N;;;;; 0BCB;TAMIL VOWEL SIGN OO;Mc;0;L;0BC7 0BBE;;;;N;;;;; 0BCC;TAMIL VOWEL SIGN AU;Mc;0;L;0BC6 0BD7;;;;N;;;;; 0BCD;TAMIL SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0BD7;TAMIL AU LENGTH MARK;Mc;0;L;;;;;N;;;;; 0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0BF0;TAMIL NUMBER TEN;No;0;L;;;;10;N;;;;; 0BF1;TAMIL NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; 0BF2;TAMIL NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; 0BF3;TAMIL DAY SIGN;So;0;ON;;;;;N;;Naal;;; 0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;Maatham;;; 0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;Varudam;;; 0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;Patru;;; 0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;Varavu;;; 0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;Merpadi;;; 0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;Rupai;;; 0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;Enn;;; 0C01;TELUGU SIGN CANDRABINDU;Mc;0;L;;;;;N;;;;; 0C02;TELUGU SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0C03;TELUGU SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0C05;TELUGU LETTER A;Lo;0;L;;;;;N;;;;; 0C06;TELUGU LETTER AA;Lo;0;L;;;;;N;;;;; 0C07;TELUGU LETTER I;Lo;0;L;;;;;N;;;;; 0C08;TELUGU LETTER II;Lo;0;L;;;;;N;;;;; 0C09;TELUGU LETTER U;Lo;0;L;;;;;N;;;;; 0C0A;TELUGU LETTER UU;Lo;0;L;;;;;N;;;;; 0C0B;TELUGU LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 0C0C;TELUGU LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 0C0E;TELUGU LETTER E;Lo;0;L;;;;;N;;;;; 0C0F;TELUGU LETTER EE;Lo;0;L;;;;;N;;;;; 0C10;TELUGU LETTER AI;Lo;0;L;;;;;N;;;;; 0C12;TELUGU LETTER O;Lo;0;L;;;;;N;;;;; 0C13;TELUGU LETTER OO;Lo;0;L;;;;;N;;;;; 0C14;TELUGU LETTER AU;Lo;0;L;;;;;N;;;;; 0C15;TELUGU LETTER KA;Lo;0;L;;;;;N;;;;; 0C16;TELUGU LETTER KHA;Lo;0;L;;;;;N;;;;; 0C17;TELUGU LETTER GA;Lo;0;L;;;;;N;;;;; 0C18;TELUGU LETTER GHA;Lo;0;L;;;;;N;;;;; 0C19;TELUGU LETTER NGA;Lo;0;L;;;;;N;;;;; 0C1A;TELUGU LETTER CA;Lo;0;L;;;;;N;;;;; 0C1B;TELUGU LETTER CHA;Lo;0;L;;;;;N;;;;; 0C1C;TELUGU LETTER JA;Lo;0;L;;;;;N;;;;; 0C1D;TELUGU LETTER JHA;Lo;0;L;;;;;N;;;;; 0C1E;TELUGU LETTER NYA;Lo;0;L;;;;;N;;;;; 0C1F;TELUGU LETTER TTA;Lo;0;L;;;;;N;;;;; 0C20;TELUGU LETTER TTHA;Lo;0;L;;;;;N;;;;; 0C21;TELUGU LETTER DDA;Lo;0;L;;;;;N;;;;; 0C22;TELUGU LETTER DDHA;Lo;0;L;;;;;N;;;;; 0C23;TELUGU LETTER NNA;Lo;0;L;;;;;N;;;;; 0C24;TELUGU LETTER TA;Lo;0;L;;;;;N;;;;; 0C25;TELUGU LETTER THA;Lo;0;L;;;;;N;;;;; 0C26;TELUGU LETTER DA;Lo;0;L;;;;;N;;;;; 0C27;TELUGU LETTER DHA;Lo;0;L;;;;;N;;;;; 0C28;TELUGU LETTER NA;Lo;0;L;;;;;N;;;;; 0C2A;TELUGU LETTER PA;Lo;0;L;;;;;N;;;;; 0C2B;TELUGU LETTER PHA;Lo;0;L;;;;;N;;;;; 0C2C;TELUGU LETTER BA;Lo;0;L;;;;;N;;;;; 0C2D;TELUGU LETTER BHA;Lo;0;L;;;;;N;;;;; 0C2E;TELUGU LETTER MA;Lo;0;L;;;;;N;;;;; 0C2F;TELUGU LETTER YA;Lo;0;L;;;;;N;;;;; 0C30;TELUGU LETTER RA;Lo;0;L;;;;;N;;;;; 0C31;TELUGU LETTER RRA;Lo;0;L;;;;;N;;;;; 0C32;TELUGU LETTER LA;Lo;0;L;;;;;N;;;;; 0C33;TELUGU LETTER LLA;Lo;0;L;;;;;N;;;;; 0C35;TELUGU LETTER VA;Lo;0;L;;;;;N;;;;; 0C36;TELUGU LETTER SHA;Lo;0;L;;;;;N;;;;; 0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;; 0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;; 0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;; 0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;; 0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 0C40;TELUGU VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; 0C41;TELUGU VOWEL SIGN U;Mc;0;L;;;;;N;;;;; 0C42;TELUGU VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; 0C43;TELUGU VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; 0C44;TELUGU VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; 0C46;TELUGU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; 0C47;TELUGU VOWEL SIGN EE;Mn;0;NSM;;;;;N;;;;; 0C48;TELUGU VOWEL SIGN AI;Mn;0;NSM;0C46 0C56;;;;N;;;;; 0C4A;TELUGU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; 0C4B;TELUGU VOWEL SIGN OO;Mn;0;NSM;;;;;N;;;;; 0C4C;TELUGU VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; 0C4D;TELUGU SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0C55;TELUGU LENGTH MARK;Mn;84;NSM;;;;;N;;;;; 0C56;TELUGU AI LENGTH MARK;Mn;91;NSM;;;;;N;;;;; 0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0C82;KANNADA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0C83;KANNADA SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0C85;KANNADA LETTER A;Lo;0;L;;;;;N;;;;; 0C86;KANNADA LETTER AA;Lo;0;L;;;;;N;;;;; 0C87;KANNADA LETTER I;Lo;0;L;;;;;N;;;;; 0C88;KANNADA LETTER II;Lo;0;L;;;;;N;;;;; 0C89;KANNADA LETTER U;Lo;0;L;;;;;N;;;;; 0C8A;KANNADA LETTER UU;Lo;0;L;;;;;N;;;;; 0C8B;KANNADA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 0C8C;KANNADA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 0C8E;KANNADA LETTER E;Lo;0;L;;;;;N;;;;; 0C8F;KANNADA LETTER EE;Lo;0;L;;;;;N;;;;; 0C90;KANNADA LETTER AI;Lo;0;L;;;;;N;;;;; 0C92;KANNADA LETTER O;Lo;0;L;;;;;N;;;;; 0C93;KANNADA LETTER OO;Lo;0;L;;;;;N;;;;; 0C94;KANNADA LETTER AU;Lo;0;L;;;;;N;;;;; 0C95;KANNADA LETTER KA;Lo;0;L;;;;;N;;;;; 0C96;KANNADA LETTER KHA;Lo;0;L;;;;;N;;;;; 0C97;KANNADA LETTER GA;Lo;0;L;;;;;N;;;;; 0C98;KANNADA LETTER GHA;Lo;0;L;;;;;N;;;;; 0C99;KANNADA LETTER NGA;Lo;0;L;;;;;N;;;;; 0C9A;KANNADA LETTER CA;Lo;0;L;;;;;N;;;;; 0C9B;KANNADA LETTER CHA;Lo;0;L;;;;;N;;;;; 0C9C;KANNADA LETTER JA;Lo;0;L;;;;;N;;;;; 0C9D;KANNADA LETTER JHA;Lo;0;L;;;;;N;;;;; 0C9E;KANNADA LETTER NYA;Lo;0;L;;;;;N;;;;; 0C9F;KANNADA LETTER TTA;Lo;0;L;;;;;N;;;;; 0CA0;KANNADA LETTER TTHA;Lo;0;L;;;;;N;;;;; 0CA1;KANNADA LETTER DDA;Lo;0;L;;;;;N;;;;; 0CA2;KANNADA LETTER DDHA;Lo;0;L;;;;;N;;;;; 0CA3;KANNADA LETTER NNA;Lo;0;L;;;;;N;;;;; 0CA4;KANNADA LETTER TA;Lo;0;L;;;;;N;;;;; 0CA5;KANNADA LETTER THA;Lo;0;L;;;;;N;;;;; 0CA6;KANNADA LETTER DA;Lo;0;L;;;;;N;;;;; 0CA7;KANNADA LETTER DHA;Lo;0;L;;;;;N;;;;; 0CA8;KANNADA LETTER NA;Lo;0;L;;;;;N;;;;; 0CAA;KANNADA LETTER PA;Lo;0;L;;;;;N;;;;; 0CAB;KANNADA LETTER PHA;Lo;0;L;;;;;N;;;;; 0CAC;KANNADA LETTER BA;Lo;0;L;;;;;N;;;;; 0CAD;KANNADA LETTER BHA;Lo;0;L;;;;;N;;;;; 0CAE;KANNADA LETTER MA;Lo;0;L;;;;;N;;;;; 0CAF;KANNADA LETTER YA;Lo;0;L;;;;;N;;;;; 0CB0;KANNADA LETTER RA;Lo;0;L;;;;;N;;;;; 0CB1;KANNADA LETTER RRA;Lo;0;L;;;;;N;;;;; 0CB2;KANNADA LETTER LA;Lo;0;L;;;;;N;;;;; 0CB3;KANNADA LETTER LLA;Lo;0;L;;;;;N;;;;; 0CB5;KANNADA LETTER VA;Lo;0;L;;;;;N;;;;; 0CB6;KANNADA LETTER SHA;Lo;0;L;;;;;N;;;;; 0CB7;KANNADA LETTER SSA;Lo;0;L;;;;;N;;;;; 0CB8;KANNADA LETTER SA;Lo;0;L;;;;;N;;;;; 0CB9;KANNADA LETTER HA;Lo;0;L;;;;;N;;;;; 0CBC;KANNADA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;; 0CBD;KANNADA SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;; 0CBE;KANNADA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 0CBF;KANNADA VOWEL SIGN I;Mn;0;L;;;;;N;;;;; 0CC0;KANNADA VOWEL SIGN II;Mc;0;L;0CBF 0CD5;;;;N;;;;; 0CC1;KANNADA VOWEL SIGN U;Mc;0;L;;;;;N;;;;; 0CC2;KANNADA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; 0CC3;KANNADA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; 0CC4;KANNADA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; 0CC6;KANNADA VOWEL SIGN E;Mn;0;L;;;;;N;;;;; 0CC7;KANNADA VOWEL SIGN EE;Mc;0;L;0CC6 0CD5;;;;N;;;;; 0CC8;KANNADA VOWEL SIGN AI;Mc;0;L;0CC6 0CD6;;;;N;;;;; 0CCA;KANNADA VOWEL SIGN O;Mc;0;L;0CC6 0CC2;;;;N;;;;; 0CCB;KANNADA VOWEL SIGN OO;Mc;0;L;0CCA 0CD5;;;;N;;;;; 0CCC;KANNADA VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;; 0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;; 0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;; 0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;; 0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0CE2;KANNADA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; 0CE3;KANNADA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; 0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0CF1;KANNADA SIGN JIHVAMULIYA;So;0;ON;;;;;N;;;;; 0CF2;KANNADA SIGN UPADHMANIYA;So;0;ON;;;;;N;;;;; 0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;; 0D03;MALAYALAM SIGN VISARGA;Mc;0;L;;;;;N;;;;; 0D05;MALAYALAM LETTER A;Lo;0;L;;;;;N;;;;; 0D06;MALAYALAM LETTER AA;Lo;0;L;;;;;N;;;;; 0D07;MALAYALAM LETTER I;Lo;0;L;;;;;N;;;;; 0D08;MALAYALAM LETTER II;Lo;0;L;;;;;N;;;;; 0D09;MALAYALAM LETTER U;Lo;0;L;;;;;N;;;;; 0D0A;MALAYALAM LETTER UU;Lo;0;L;;;;;N;;;;; 0D0B;MALAYALAM LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 0D0C;MALAYALAM LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 0D0E;MALAYALAM LETTER E;Lo;0;L;;;;;N;;;;; 0D0F;MALAYALAM LETTER EE;Lo;0;L;;;;;N;;;;; 0D10;MALAYALAM LETTER AI;Lo;0;L;;;;;N;;;;; 0D12;MALAYALAM LETTER O;Lo;0;L;;;;;N;;;;; 0D13;MALAYALAM LETTER OO;Lo;0;L;;;;;N;;;;; 0D14;MALAYALAM LETTER AU;Lo;0;L;;;;;N;;;;; 0D15;MALAYALAM LETTER KA;Lo;0;L;;;;;N;;;;; 0D16;MALAYALAM LETTER KHA;Lo;0;L;;;;;N;;;;; 0D17;MALAYALAM LETTER GA;Lo;0;L;;;;;N;;;;; 0D18;MALAYALAM LETTER GHA;Lo;0;L;;;;;N;;;;; 0D19;MALAYALAM LETTER NGA;Lo;0;L;;;;;N;;;;; 0D1A;MALAYALAM LETTER CA;Lo;0;L;;;;;N;;;;; 0D1B;MALAYALAM LETTER CHA;Lo;0;L;;;;;N;;;;; 0D1C;MALAYALAM LETTER JA;Lo;0;L;;;;;N;;;;; 0D1D;MALAYALAM LETTER JHA;Lo;0;L;;;;;N;;;;; 0D1E;MALAYALAM LETTER NYA;Lo;0;L;;;;;N;;;;; 0D1F;MALAYALAM LETTER TTA;Lo;0;L;;;;;N;;;;; 0D20;MALAYALAM LETTER TTHA;Lo;0;L;;;;;N;;;;; 0D21;MALAYALAM LETTER DDA;Lo;0;L;;;;;N;;;;; 0D22;MALAYALAM LETTER DDHA;Lo;0;L;;;;;N;;;;; 0D23;MALAYALAM LETTER NNA;Lo;0;L;;;;;N;;;;; 0D24;MALAYALAM LETTER TA;Lo;0;L;;;;;N;;;;; 0D25;MALAYALAM LETTER THA;Lo;0;L;;;;;N;;;;; 0D26;MALAYALAM LETTER DA;Lo;0;L;;;;;N;;;;; 0D27;MALAYALAM LETTER DHA;Lo;0;L;;;;;N;;;;; 0D28;MALAYALAM LETTER NA;Lo;0;L;;;;;N;;;;; 0D2A;MALAYALAM LETTER PA;Lo;0;L;;;;;N;;;;; 0D2B;MALAYALAM LETTER PHA;Lo;0;L;;;;;N;;;;; 0D2C;MALAYALAM LETTER BA;Lo;0;L;;;;;N;;;;; 0D2D;MALAYALAM LETTER BHA;Lo;0;L;;;;;N;;;;; 0D2E;MALAYALAM LETTER MA;Lo;0;L;;;;;N;;;;; 0D2F;MALAYALAM LETTER YA;Lo;0;L;;;;;N;;;;; 0D30;MALAYALAM LETTER RA;Lo;0;L;;;;;N;;;;; 0D31;MALAYALAM LETTER RRA;Lo;0;L;;;;;N;;;;; 0D32;MALAYALAM LETTER LA;Lo;0;L;;;;;N;;;;; 0D33;MALAYALAM LETTER LLA;Lo;0;L;;;;;N;;;;; 0D34;MALAYALAM LETTER LLLA;Lo;0;L;;;;;N;;;;; 0D35;MALAYALAM LETTER VA;Lo;0;L;;;;;N;;;;; 0D36;MALAYALAM LETTER SHA;Lo;0;L;;;;;N;;;;; 0D37;MALAYALAM LETTER SSA;Lo;0;L;;;;;N;;;;; 0D38;MALAYALAM LETTER SA;Lo;0;L;;;;;N;;;;; 0D39;MALAYALAM LETTER HA;Lo;0;L;;;;;N;;;;; 0D3E;MALAYALAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 0D3F;MALAYALAM VOWEL SIGN I;Mc;0;L;;;;;N;;;;; 0D40;MALAYALAM VOWEL SIGN II;Mc;0;L;;;;;N;;;;; 0D41;MALAYALAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 0D42;MALAYALAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 0D43;MALAYALAM VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 0D46;MALAYALAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 0D47;MALAYALAM VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; 0D48;MALAYALAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; 0D4A;MALAYALAM VOWEL SIGN O;Mc;0;L;0D46 0D3E;;;;N;;;;; 0D4B;MALAYALAM VOWEL SIGN OO;Mc;0;L;0D47 0D3E;;;;N;;;;; 0D4C;MALAYALAM VOWEL SIGN AU;Mc;0;L;0D46 0D57;;;;N;;;;; 0D4D;MALAYALAM SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 0D57;MALAYALAM AU LENGTH MARK;Mc;0;L;;;;;N;;;;; 0D60;MALAYALAM LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 0D61;MALAYALAM LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0D82;SINHALA SIGN ANUSVARAYA;Mc;0;L;;;;;N;;;;; 0D83;SINHALA SIGN VISARGAYA;Mc;0;L;;;;;N;;;;; 0D85;SINHALA LETTER AYANNA;Lo;0;L;;;;;N;;;;; 0D86;SINHALA LETTER AAYANNA;Lo;0;L;;;;;N;;;;; 0D87;SINHALA LETTER AEYANNA;Lo;0;L;;;;;N;;;;; 0D88;SINHALA LETTER AEEYANNA;Lo;0;L;;;;;N;;;;; 0D89;SINHALA LETTER IYANNA;Lo;0;L;;;;;N;;;;; 0D8A;SINHALA LETTER IIYANNA;Lo;0;L;;;;;N;;;;; 0D8B;SINHALA LETTER UYANNA;Lo;0;L;;;;;N;;;;; 0D8C;SINHALA LETTER UUYANNA;Lo;0;L;;;;;N;;;;; 0D8D;SINHALA LETTER IRUYANNA;Lo;0;L;;;;;N;;;;; 0D8E;SINHALA LETTER IRUUYANNA;Lo;0;L;;;;;N;;;;; 0D8F;SINHALA LETTER ILUYANNA;Lo;0;L;;;;;N;;;;; 0D90;SINHALA LETTER ILUUYANNA;Lo;0;L;;;;;N;;;;; 0D91;SINHALA LETTER EYANNA;Lo;0;L;;;;;N;;;;; 0D92;SINHALA LETTER EEYANNA;Lo;0;L;;;;;N;;;;; 0D93;SINHALA LETTER AIYANNA;Lo;0;L;;;;;N;;;;; 0D94;SINHALA LETTER OYANNA;Lo;0;L;;;;;N;;;;; 0D95;SINHALA LETTER OOYANNA;Lo;0;L;;;;;N;;;;; 0D96;SINHALA LETTER AUYANNA;Lo;0;L;;;;;N;;;;; 0D9A;SINHALA LETTER ALPAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; 0D9B;SINHALA LETTER MAHAAPRAANA KAYANNA;Lo;0;L;;;;;N;;;;; 0D9C;SINHALA LETTER ALPAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; 0D9D;SINHALA LETTER MAHAAPRAANA GAYANNA;Lo;0;L;;;;;N;;;;; 0D9E;SINHALA LETTER KANTAJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; 0D9F;SINHALA LETTER SANYAKA GAYANNA;Lo;0;L;;;;;N;;;;; 0DA0;SINHALA LETTER ALPAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; 0DA1;SINHALA LETTER MAHAAPRAANA CAYANNA;Lo;0;L;;;;;N;;;;; 0DA2;SINHALA LETTER ALPAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; 0DA3;SINHALA LETTER MAHAAPRAANA JAYANNA;Lo;0;L;;;;;N;;;;; 0DA4;SINHALA LETTER TAALUJA NAASIKYAYA;Lo;0;L;;;;;N;;;;; 0DA5;SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA;Lo;0;L;;;;;N;;;;; 0DA6;SINHALA LETTER SANYAKA JAYANNA;Lo;0;L;;;;;N;;;;; 0DA7;SINHALA LETTER ALPAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; 0DA8;SINHALA LETTER MAHAAPRAANA TTAYANNA;Lo;0;L;;;;;N;;;;; 0DA9;SINHALA LETTER ALPAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; 0DAA;SINHALA LETTER MAHAAPRAANA DDAYANNA;Lo;0;L;;;;;N;;;;; 0DAB;SINHALA LETTER MUURDHAJA NAYANNA;Lo;0;L;;;;;N;;;;; 0DAC;SINHALA LETTER SANYAKA DDAYANNA;Lo;0;L;;;;;N;;;;; 0DAD;SINHALA LETTER ALPAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; 0DAE;SINHALA LETTER MAHAAPRAANA TAYANNA;Lo;0;L;;;;;N;;;;; 0DAF;SINHALA LETTER ALPAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; 0DB0;SINHALA LETTER MAHAAPRAANA DAYANNA;Lo;0;L;;;;;N;;;;; 0DB1;SINHALA LETTER DANTAJA NAYANNA;Lo;0;L;;;;;N;;;;; 0DB3;SINHALA LETTER SANYAKA DAYANNA;Lo;0;L;;;;;N;;;;; 0DB4;SINHALA LETTER ALPAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; 0DB5;SINHALA LETTER MAHAAPRAANA PAYANNA;Lo;0;L;;;;;N;;;;; 0DB6;SINHALA LETTER ALPAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; 0DB7;SINHALA LETTER MAHAAPRAANA BAYANNA;Lo;0;L;;;;;N;;;;; 0DB8;SINHALA LETTER MAYANNA;Lo;0;L;;;;;N;;;;; 0DB9;SINHALA LETTER AMBA BAYANNA;Lo;0;L;;;;;N;;;;; 0DBA;SINHALA LETTER YAYANNA;Lo;0;L;;;;;N;;;;; 0DBB;SINHALA LETTER RAYANNA;Lo;0;L;;;;;N;;;;; 0DBD;SINHALA LETTER DANTAJA LAYANNA;Lo;0;L;;;;;N;;;;; 0DC0;SINHALA LETTER VAYANNA;Lo;0;L;;;;;N;;;;; 0DC1;SINHALA LETTER TAALUJA SAYANNA;Lo;0;L;;;;;N;;;;; 0DC2;SINHALA LETTER MUURDHAJA SAYANNA;Lo;0;L;;;;;N;;;;; 0DC3;SINHALA LETTER DANTAJA SAYANNA;Lo;0;L;;;;;N;;;;; 0DC4;SINHALA LETTER HAYANNA;Lo;0;L;;;;;N;;;;; 0DC5;SINHALA LETTER MUURDHAJA LAYANNA;Lo;0;L;;;;;N;;;;; 0DC6;SINHALA LETTER FAYANNA;Lo;0;L;;;;;N;;;;; 0DCA;SINHALA SIGN AL-LAKUNA;Mn;9;NSM;;;;;N;;;;; 0DCF;SINHALA VOWEL SIGN AELA-PILLA;Mc;0;L;;;;;N;;;;; 0DD0;SINHALA VOWEL SIGN KETTI AEDA-PILLA;Mc;0;L;;;;;N;;;;; 0DD1;SINHALA VOWEL SIGN DIGA AEDA-PILLA;Mc;0;L;;;;;N;;;;; 0DD2;SINHALA VOWEL SIGN KETTI IS-PILLA;Mn;0;NSM;;;;;N;;;;; 0DD3;SINHALA VOWEL SIGN DIGA IS-PILLA;Mn;0;NSM;;;;;N;;;;; 0DD4;SINHALA VOWEL SIGN KETTI PAA-PILLA;Mn;0;NSM;;;;;N;;;;; 0DD6;SINHALA VOWEL SIGN DIGA PAA-PILLA;Mn;0;NSM;;;;;N;;;;; 0DD8;SINHALA VOWEL SIGN GAETTA-PILLA;Mc;0;L;;;;;N;;;;; 0DD9;SINHALA VOWEL SIGN KOMBUVA;Mc;0;L;;;;;N;;;;; 0DDA;SINHALA VOWEL SIGN DIGA KOMBUVA;Mc;0;L;0DD9 0DCA;;;;N;;;;; 0DDB;SINHALA VOWEL SIGN KOMBU DEKA;Mc;0;L;;;;;N;;;;; 0DDC;SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA;Mc;0;L;0DD9 0DCF;;;;N;;;;; 0DDD;SINHALA VOWEL SIGN KOMBUVA HAA DIGA AELA-PILLA;Mc;0;L;0DDC 0DCA;;;;N;;;;; 0DDE;SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA;Mc;0;L;0DD9 0DDF;;;;N;;;;; 0DDF;SINHALA VOWEL SIGN GAYANUKITTA;Mc;0;L;;;;;N;;;;; 0DF2;SINHALA VOWEL SIGN DIGA GAETTA-PILLA;Mc;0;L;;;;;N;;;;; 0DF3;SINHALA VOWEL SIGN DIGA GAYANUKITTA;Mc;0;L;;;;;N;;;;; 0DF4;SINHALA PUNCTUATION KUNDDALIYA;Po;0;L;;;;;N;;;;; 0E01;THAI CHARACTER KO KAI;Lo;0;L;;;;;N;THAI LETTER KO KAI;;;; 0E02;THAI CHARACTER KHO KHAI;Lo;0;L;;;;;N;THAI LETTER KHO KHAI;;;; 0E03;THAI CHARACTER KHO KHUAT;Lo;0;L;;;;;N;THAI LETTER KHO KHUAT;;;; 0E04;THAI CHARACTER KHO KHWAI;Lo;0;L;;;;;N;THAI LETTER KHO KHWAI;;;; 0E05;THAI CHARACTER KHO KHON;Lo;0;L;;;;;N;THAI LETTER KHO KHON;;;; 0E06;THAI CHARACTER KHO RAKHANG;Lo;0;L;;;;;N;THAI LETTER KHO RAKHANG;;;; 0E07;THAI CHARACTER NGO NGU;Lo;0;L;;;;;N;THAI LETTER NGO NGU;;;; 0E08;THAI CHARACTER CHO CHAN;Lo;0;L;;;;;N;THAI LETTER CHO CHAN;;;; 0E09;THAI CHARACTER CHO CHING;Lo;0;L;;;;;N;THAI LETTER CHO CHING;;;; 0E0A;THAI CHARACTER CHO CHANG;Lo;0;L;;;;;N;THAI LETTER CHO CHANG;;;; 0E0B;THAI CHARACTER SO SO;Lo;0;L;;;;;N;THAI LETTER SO SO;;;; 0E0C;THAI CHARACTER CHO CHOE;Lo;0;L;;;;;N;THAI LETTER CHO CHOE;;;; 0E0D;THAI CHARACTER YO YING;Lo;0;L;;;;;N;THAI LETTER YO YING;;;; 0E0E;THAI CHARACTER DO CHADA;Lo;0;L;;;;;N;THAI LETTER DO CHADA;;;; 0E0F;THAI CHARACTER TO PATAK;Lo;0;L;;;;;N;THAI LETTER TO PATAK;;;; 0E10;THAI CHARACTER THO THAN;Lo;0;L;;;;;N;THAI LETTER THO THAN;;;; 0E11;THAI CHARACTER THO NANGMONTHO;Lo;0;L;;;;;N;THAI LETTER THO NANGMONTHO;;;; 0E12;THAI CHARACTER THO PHUTHAO;Lo;0;L;;;;;N;THAI LETTER THO PHUTHAO;;;; 0E13;THAI CHARACTER NO NEN;Lo;0;L;;;;;N;THAI LETTER NO NEN;;;; 0E14;THAI CHARACTER DO DEK;Lo;0;L;;;;;N;THAI LETTER DO DEK;;;; 0E15;THAI CHARACTER TO TAO;Lo;0;L;;;;;N;THAI LETTER TO TAO;;;; 0E16;THAI CHARACTER THO THUNG;Lo;0;L;;;;;N;THAI LETTER THO THUNG;;;; 0E17;THAI CHARACTER THO THAHAN;Lo;0;L;;;;;N;THAI LETTER THO THAHAN;;;; 0E18;THAI CHARACTER THO THONG;Lo;0;L;;;;;N;THAI LETTER THO THONG;;;; 0E19;THAI CHARACTER NO NU;Lo;0;L;;;;;N;THAI LETTER NO NU;;;; 0E1A;THAI CHARACTER BO BAIMAI;Lo;0;L;;;;;N;THAI LETTER BO BAIMAI;;;; 0E1B;THAI CHARACTER PO PLA;Lo;0;L;;;;;N;THAI LETTER PO PLA;;;; 0E1C;THAI CHARACTER PHO PHUNG;Lo;0;L;;;;;N;THAI LETTER PHO PHUNG;;;; 0E1D;THAI CHARACTER FO FA;Lo;0;L;;;;;N;THAI LETTER FO FA;;;; 0E1E;THAI CHARACTER PHO PHAN;Lo;0;L;;;;;N;THAI LETTER PHO PHAN;;;; 0E1F;THAI CHARACTER FO FAN;Lo;0;L;;;;;N;THAI LETTER FO FAN;;;; 0E20;THAI CHARACTER PHO SAMPHAO;Lo;0;L;;;;;N;THAI LETTER PHO SAMPHAO;;;; 0E21;THAI CHARACTER MO MA;Lo;0;L;;;;;N;THAI LETTER MO MA;;;; 0E22;THAI CHARACTER YO YAK;Lo;0;L;;;;;N;THAI LETTER YO YAK;;;; 0E23;THAI CHARACTER RO RUA;Lo;0;L;;;;;N;THAI LETTER RO RUA;;;; 0E24;THAI CHARACTER RU;Lo;0;L;;;;;N;THAI LETTER RU;;;; 0E25;THAI CHARACTER LO LING;Lo;0;L;;;;;N;THAI LETTER LO LING;;;; 0E26;THAI CHARACTER LU;Lo;0;L;;;;;N;THAI LETTER LU;;;; 0E27;THAI CHARACTER WO WAEN;Lo;0;L;;;;;N;THAI LETTER WO WAEN;;;; 0E28;THAI CHARACTER SO SALA;Lo;0;L;;;;;N;THAI LETTER SO SALA;;;; 0E29;THAI CHARACTER SO RUSI;Lo;0;L;;;;;N;THAI LETTER SO RUSI;;;; 0E2A;THAI CHARACTER SO SUA;Lo;0;L;;;;;N;THAI LETTER SO SUA;;;; 0E2B;THAI CHARACTER HO HIP;Lo;0;L;;;;;N;THAI LETTER HO HIP;;;; 0E2C;THAI CHARACTER LO CHULA;Lo;0;L;;;;;N;THAI LETTER LO CHULA;;;; 0E2D;THAI CHARACTER O ANG;Lo;0;L;;;;;N;THAI LETTER O ANG;;;; 0E2E;THAI CHARACTER HO NOKHUK;Lo;0;L;;;;;N;THAI LETTER HO NOK HUK;;;; 0E2F;THAI CHARACTER PAIYANNOI;Lo;0;L;;;;;N;THAI PAI YAN NOI;paiyan noi;;; 0E30;THAI CHARACTER SARA A;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA A;;;; 0E31;THAI CHARACTER MAI HAN-AKAT;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI HAN-AKAT;;;; 0E32;THAI CHARACTER SARA AA;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AA;;;; 0E33;THAI CHARACTER SARA AM;Lo;0;L; 0E4D 0E32;;;;N;THAI VOWEL SIGN SARA AM;;;; 0E34;THAI CHARACTER SARA I;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA I;;;; 0E35;THAI CHARACTER SARA II;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA II;;;; 0E36;THAI CHARACTER SARA UE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UE;;;; 0E37;THAI CHARACTER SARA UEE;Mn;0;NSM;;;;;N;THAI VOWEL SIGN SARA UEE;sara uue;;; 0E38;THAI CHARACTER SARA U;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA U;;;; 0E39;THAI CHARACTER SARA UU;Mn;103;NSM;;;;;N;THAI VOWEL SIGN SARA UU;;;; 0E3A;THAI CHARACTER PHINTHU;Mn;9;NSM;;;;;N;THAI VOWEL SIGN PHINTHU;;;; 0E3F;THAI CURRENCY SYMBOL BAHT;Sc;0;ET;;;;;N;THAI BAHT SIGN;;;; 0E40;THAI CHARACTER SARA E;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA E;;;; 0E41;THAI CHARACTER SARA AE;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA AE;;;; 0E42;THAI CHARACTER SARA O;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA O;;;; 0E43;THAI CHARACTER SARA AI MAIMUAN;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MUAN;sara ai mai muan;;; 0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;sara ai mai malai;;; 0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;lakkhang yao;;; 0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;mai yamok;;; 0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;mai taikhu;;; 0E48;THAI CHARACTER MAI EK;Mn;107;NSM;;;;;N;THAI TONE MAI EK;;;; 0E49;THAI CHARACTER MAI THO;Mn;107;NSM;;;;;N;THAI TONE MAI THO;;;; 0E4A;THAI CHARACTER MAI TRI;Mn;107;NSM;;;;;N;THAI TONE MAI TRI;;;; 0E4B;THAI CHARACTER MAI CHATTAWA;Mn;107;NSM;;;;;N;THAI TONE MAI CHATTAWA;;;; 0E4C;THAI CHARACTER THANTHAKHAT;Mn;0;NSM;;;;;N;THAI THANTHAKHAT;;;; 0E4D;THAI CHARACTER NIKHAHIT;Mn;0;NSM;;;;;N;THAI NIKKHAHIT;nikkhahit;;; 0E4E;THAI CHARACTER YAMAKKAN;Mn;0;NSM;;;;;N;THAI YAMAKKAN;;;; 0E4F;THAI CHARACTER FONGMAN;Po;0;L;;;;;N;THAI FONGMAN;;;; 0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0E5A;THAI CHARACTER ANGKHANKHU;Po;0;L;;;;;N;THAI ANGKHANKHU;;;; 0E5B;THAI CHARACTER KHOMUT;Po;0;L;;;;;N;THAI KHOMUT;;;; 0E81;LAO LETTER KO;Lo;0;L;;;;;N;;;;; 0E82;LAO LETTER KHO SUNG;Lo;0;L;;;;;N;;;;; 0E84;LAO LETTER KHO TAM;Lo;0;L;;;;;N;;;;; 0E87;LAO LETTER NGO;Lo;0;L;;;;;N;;;;; 0E88;LAO LETTER CO;Lo;0;L;;;;;N;;;;; 0E8A;LAO LETTER SO TAM;Lo;0;L;;;;;N;;;;; 0E8D;LAO LETTER NYO;Lo;0;L;;;;;N;;;;; 0E94;LAO LETTER DO;Lo;0;L;;;;;N;;;;; 0E95;LAO LETTER TO;Lo;0;L;;;;;N;;;;; 0E96;LAO LETTER THO SUNG;Lo;0;L;;;;;N;;;;; 0E97;LAO LETTER THO TAM;Lo;0;L;;;;;N;;;;; 0E99;LAO LETTER NO;Lo;0;L;;;;;N;;;;; 0E9A;LAO LETTER BO;Lo;0;L;;;;;N;;;;; 0E9B;LAO LETTER PO;Lo;0;L;;;;;N;;;;; 0E9C;LAO LETTER PHO SUNG;Lo;0;L;;;;;N;;;;; 0E9D;LAO LETTER FO TAM;Lo;0;L;;;;;N;;;;; 0E9E;LAO LETTER PHO TAM;Lo;0;L;;;;;N;;;;; 0E9F;LAO LETTER FO SUNG;Lo;0;L;;;;;N;;;;; 0EA1;LAO LETTER MO;Lo;0;L;;;;;N;;;;; 0EA2;LAO LETTER YO;Lo;0;L;;;;;N;;;;; 0EA3;LAO LETTER LO LING;Lo;0;L;;;;;N;;;;; 0EA5;LAO LETTER LO LOOT;Lo;0;L;;;;;N;;;;; 0EA7;LAO LETTER WO;Lo;0;L;;;;;N;;;;; 0EAA;LAO LETTER SO SUNG;Lo;0;L;;;;;N;;;;; 0EAB;LAO LETTER HO SUNG;Lo;0;L;;;;;N;;;;; 0EAD;LAO LETTER O;Lo;0;L;;;;;N;;;;; 0EAE;LAO LETTER HO TAM;Lo;0;L;;;;;N;;;;; 0EAF;LAO ELLIPSIS;Lo;0;L;;;;;N;;;;; 0EB0;LAO VOWEL SIGN A;Lo;0;L;;;;;N;;;;; 0EB1;LAO VOWEL SIGN MAI KAN;Mn;0;NSM;;;;;N;;;;; 0EB2;LAO VOWEL SIGN AA;Lo;0;L;;;;;N;;;;; 0EB3;LAO VOWEL SIGN AM;Lo;0;L; 0ECD 0EB2;;;;N;;;;; 0EB4;LAO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 0EB5;LAO VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; 0EB6;LAO VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; 0EB7;LAO VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; 0EB8;LAO VOWEL SIGN U;Mn;118;NSM;;;;;N;;;;; 0EB9;LAO VOWEL SIGN UU;Mn;118;NSM;;;;;N;;;;; 0EBB;LAO VOWEL SIGN MAI KON;Mn;0;NSM;;;;;N;;;;; 0EBC;LAO SEMIVOWEL SIGN LO;Mn;0;NSM;;;;;N;;;;; 0EBD;LAO SEMIVOWEL SIGN NYO;Lo;0;L;;;;;N;;;;; 0EC0;LAO VOWEL SIGN E;Lo;0;L;;;;;N;;;;; 0EC1;LAO VOWEL SIGN EI;Lo;0;L;;;;;N;;;;; 0EC2;LAO VOWEL SIGN O;Lo;0;L;;;;;N;;;;; 0EC3;LAO VOWEL SIGN AY;Lo;0;L;;;;;N;;;;; 0EC4;LAO VOWEL SIGN AI;Lo;0;L;;;;;N;;;;; 0EC6;LAO KO LA;Lm;0;L;;;;;N;;;;; 0EC8;LAO TONE MAI EK;Mn;122;NSM;;;;;N;;;;; 0EC9;LAO TONE MAI THO;Mn;122;NSM;;;;;N;;;;; 0ECA;LAO TONE MAI TI;Mn;122;NSM;;;;;N;;;;; 0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;; 0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;; 0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;; 0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0EDC;LAO HO NO;Lo;0;L; 0EAB 0E99;;;;N;;;;; 0EDD;LAO HO MO;Lo;0;L; 0EAB 0EA1;;;;N;;;;; 0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;; 0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;ter yik go a thung;;; 0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;ter yik go wum nam chey ma;;; 0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;ter yik go wum ter tsek ma;;; 0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;yik go dun ma;;; 0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;yik go kab ma;;; 0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;yik go pur shey ma;;; 0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;yik go tsek shey ma;;; 0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;drul shey;;; 0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;kur yik go;;; 0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;ka sho yik go;;; 0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;tsek;;; 0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L; 0F0B;;;;N;;tsek tar;;; 0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;shey;;; 0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;nyi shey;;; 0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;tsek shey;;; 0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;nyi tsek shey;;; 0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;rinchen pung shey;;; 0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;gya tram shey;;; 0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;dzu ta me long chen;;; 0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;ter tsek;;; 0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;che ta;;; 0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;hlak ta;;; 0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;trachen char ta;;; 0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;kyu pa;;; 0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;dong tsu;;; 0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;deka chig;;; 0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;deka nyi;;; 0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;deka sum;;; 0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;dena chig;;; 0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;dena nyi;;; 0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;deka dena;;; 0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 0F2A;TIBETAN DIGIT HALF ONE;No;0;L;;;;1/2;N;;;;; 0F2B;TIBETAN DIGIT HALF TWO;No;0;L;;;;3/2;N;;;;; 0F2C;TIBETAN DIGIT HALF THREE;No;0;L;;;;5/2;N;;;;; 0F2D;TIBETAN DIGIT HALF FOUR;No;0;L;;;;7/2;N;;;;; 0F2E;TIBETAN DIGIT HALF FIVE;No;0;L;;;;9/2;N;;;;; 0F2F;TIBETAN DIGIT HALF SIX;No;0;L;;;;11/2;N;;;;; 0F30;TIBETAN DIGIT HALF SEVEN;No;0;L;;;;13/2;N;;;;; 0F31;TIBETAN DIGIT HALF EIGHT;No;0;L;;;;15/2;N;;;;; 0F32;TIBETAN DIGIT HALF NINE;No;0;L;;;;17/2;N;;;;; 0F33;TIBETAN DIGIT HALF ZERO;No;0;L;;;;-1/2;N;;;;; 0F34;TIBETAN MARK BSDUS RTAGS;So;0;L;;;;;N;;du ta;;; 0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;nge zung nyi da;;; 0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;dzu ta shi mig chen;;; 0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;nge zung gor ta;;; 0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;che go;;; 0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;tsa tru;;; 0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;gug ta yun;;; 0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;gug ta ye;;; 0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;ang kang yun;;; 0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;ang kang ye;;; 0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;yar tse;;; 0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;mar tse;;; 0F40;TIBETAN LETTER KA;Lo;0;L;;;;;N;;;;; 0F41;TIBETAN LETTER KHA;Lo;0;L;;;;;N;;;;; 0F42;TIBETAN LETTER GA;Lo;0;L;;;;;N;;;;; 0F43;TIBETAN LETTER GHA;Lo;0;L;0F42 0FB7;;;;N;;;;; 0F44;TIBETAN LETTER NGA;Lo;0;L;;;;;N;;;;; 0F45;TIBETAN LETTER CA;Lo;0;L;;;;;N;;;;; 0F46;TIBETAN LETTER CHA;Lo;0;L;;;;;N;;;;; 0F47;TIBETAN LETTER JA;Lo;0;L;;;;;N;;;;; 0F49;TIBETAN LETTER NYA;Lo;0;L;;;;;N;;;;; 0F4A;TIBETAN LETTER TTA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED TA;;;; 0F4B;TIBETAN LETTER TTHA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED THA;;;; 0F4C;TIBETAN LETTER DDA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED DA;;;; 0F4D;TIBETAN LETTER DDHA;Lo;0;L;0F4C 0FB7;;;;N;;;;; 0F4E;TIBETAN LETTER NNA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED NA;;;; 0F4F;TIBETAN LETTER TA;Lo;0;L;;;;;N;;;;; 0F50;TIBETAN LETTER THA;Lo;0;L;;;;;N;;;;; 0F51;TIBETAN LETTER DA;Lo;0;L;;;;;N;;;;; 0F52;TIBETAN LETTER DHA;Lo;0;L;0F51 0FB7;;;;N;;;;; 0F53;TIBETAN LETTER NA;Lo;0;L;;;;;N;;;;; 0F54;TIBETAN LETTER PA;Lo;0;L;;;;;N;;;;; 0F55;TIBETAN LETTER PHA;Lo;0;L;;;;;N;;;;; 0F56;TIBETAN LETTER BA;Lo;0;L;;;;;N;;;;; 0F57;TIBETAN LETTER BHA;Lo;0;L;0F56 0FB7;;;;N;;;;; 0F58;TIBETAN LETTER MA;Lo;0;L;;;;;N;;;;; 0F59;TIBETAN LETTER TSA;Lo;0;L;;;;;N;;;;; 0F5A;TIBETAN LETTER TSHA;Lo;0;L;;;;;N;;;;; 0F5B;TIBETAN LETTER DZA;Lo;0;L;;;;;N;;;;; 0F5C;TIBETAN LETTER DZHA;Lo;0;L;0F5B 0FB7;;;;N;;;;; 0F5D;TIBETAN LETTER WA;Lo;0;L;;;;;N;;;;; 0F5E;TIBETAN LETTER ZHA;Lo;0;L;;;;;N;;;;; 0F5F;TIBETAN LETTER ZA;Lo;0;L;;;;;N;;;;; 0F60;TIBETAN LETTER -A;Lo;0;L;;;;;N;TIBETAN LETTER AA;;;; 0F61;TIBETAN LETTER YA;Lo;0;L;;;;;N;;;;; 0F62;TIBETAN LETTER RA;Lo;0;L;;;;;N;;*;;; 0F63;TIBETAN LETTER LA;Lo;0;L;;;;;N;;;;; 0F64;TIBETAN LETTER SHA;Lo;0;L;;;;;N;;;;; 0F65;TIBETAN LETTER SSA;Lo;0;L;;;;;N;TIBETAN LETTER REVERSED SHA;;;; 0F66;TIBETAN LETTER SA;Lo;0;L;;;;;N;;;;; 0F67;TIBETAN LETTER HA;Lo;0;L;;;;;N;;;;; 0F68;TIBETAN LETTER A;Lo;0;L;;;;;N;;;;; 0F69;TIBETAN LETTER KSSA;Lo;0;L;0F40 0FB5;;;;N;;;;; 0F6A;TIBETAN LETTER FIXED-FORM RA;Lo;0;L;;;;;N;;*;;; 0F71;TIBETAN VOWEL SIGN AA;Mn;129;NSM;;;;;N;;;;; 0F72;TIBETAN VOWEL SIGN I;Mn;130;NSM;;;;;N;;;;; 0F73;TIBETAN VOWEL SIGN II;Mn;0;NSM;0F71 0F72;;;;N;;;;; 0F74;TIBETAN VOWEL SIGN U;Mn;132;NSM;;;;;N;;;;; 0F75;TIBETAN VOWEL SIGN UU;Mn;0;NSM;0F71 0F74;;;;N;;;;; 0F76;TIBETAN VOWEL SIGN VOCALIC R;Mn;0;NSM;0FB2 0F80;;;;N;;;;; 0F77;TIBETAN VOWEL SIGN VOCALIC RR;Mn;0;NSM; 0FB2 0F81;;;;N;;;;; 0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;; 0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM; 0FB3 0F81;;;;N;;;;; 0F7A;TIBETAN VOWEL SIGN E;Mn;130;NSM;;;;;N;;;;; 0F7B;TIBETAN VOWEL SIGN EE;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AI;;;; 0F7C;TIBETAN VOWEL SIGN O;Mn;130;NSM;;;;;N;;;;; 0F7D;TIBETAN VOWEL SIGN OO;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN AU;;;; 0F7E;TIBETAN SIGN RJES SU NGA RO;Mn;0;NSM;;;;;N;TIBETAN ANUSVARA;je su nga ro;;; 0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;nam chey;;; 0F80;TIBETAN VOWEL SIGN REVERSED I;Mn;130;NSM;;;;;N;TIBETAN VOWEL SIGN SHORT I;;;; 0F81;TIBETAN VOWEL SIGN REVERSED II;Mn;0;NSM;0F71 0F80;;;;N;;;;; 0F82;TIBETAN SIGN NYI ZLA NAA DA;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU WITH ORNAMENT;nyi da na da;;; 0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;nan de;;; 0F84;TIBETAN MARK HALANTA;Mn;9;NSM;;;;;N;TIBETAN VIRAMA;;;; 0F85;TIBETAN MARK PALUTA;Po;0;L;;;;;N;TIBETAN CHUCHENYIGE;;;; 0F86;TIBETAN SIGN LCI RTAGS;Mn;230;NSM;;;;;N;;ji ta;;; 0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;yang ta;;; 0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;che tsa chen;;; 0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;chu chen;;; 0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;tru chen ging;;; 0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;tru me ging;;; 0F90;TIBETAN SUBJOINED LETTER KA;Mn;0;NSM;;;;;N;;;;; 0F91;TIBETAN SUBJOINED LETTER KHA;Mn;0;NSM;;;;;N;;;;; 0F92;TIBETAN SUBJOINED LETTER GA;Mn;0;NSM;;;;;N;;;;; 0F93;TIBETAN SUBJOINED LETTER GHA;Mn;0;NSM;0F92 0FB7;;;;N;;;;; 0F94;TIBETAN SUBJOINED LETTER NGA;Mn;0;NSM;;;;;N;;;;; 0F95;TIBETAN SUBJOINED LETTER CA;Mn;0;NSM;;;;;N;;;;; 0F96;TIBETAN SUBJOINED LETTER CHA;Mn;0;NSM;;;;;N;;;;; 0F97;TIBETAN SUBJOINED LETTER JA;Mn;0;NSM;;;;;N;;;;; 0F99;TIBETAN SUBJOINED LETTER NYA;Mn;0;NSM;;;;;N;;;;; 0F9A;TIBETAN SUBJOINED LETTER TTA;Mn;0;NSM;;;;;N;;;;; 0F9B;TIBETAN SUBJOINED LETTER TTHA;Mn;0;NSM;;;;;N;;;;; 0F9C;TIBETAN SUBJOINED LETTER DDA;Mn;0;NSM;;;;;N;;;;; 0F9D;TIBETAN SUBJOINED LETTER DDHA;Mn;0;NSM;0F9C 0FB7;;;;N;;;;; 0F9E;TIBETAN SUBJOINED LETTER NNA;Mn;0;NSM;;;;;N;;;;; 0F9F;TIBETAN SUBJOINED LETTER TA;Mn;0;NSM;;;;;N;;;;; 0FA0;TIBETAN SUBJOINED LETTER THA;Mn;0;NSM;;;;;N;;;;; 0FA1;TIBETAN SUBJOINED LETTER DA;Mn;0;NSM;;;;;N;;;;; 0FA2;TIBETAN SUBJOINED LETTER DHA;Mn;0;NSM;0FA1 0FB7;;;;N;;;;; 0FA3;TIBETAN SUBJOINED LETTER NA;Mn;0;NSM;;;;;N;;;;; 0FA4;TIBETAN SUBJOINED LETTER PA;Mn;0;NSM;;;;;N;;;;; 0FA5;TIBETAN SUBJOINED LETTER PHA;Mn;0;NSM;;;;;N;;;;; 0FA6;TIBETAN SUBJOINED LETTER BA;Mn;0;NSM;;;;;N;;;;; 0FA7;TIBETAN SUBJOINED LETTER BHA;Mn;0;NSM;0FA6 0FB7;;;;N;;;;; 0FA8;TIBETAN SUBJOINED LETTER MA;Mn;0;NSM;;;;;N;;;;; 0FA9;TIBETAN SUBJOINED LETTER TSA;Mn;0;NSM;;;;;N;;;;; 0FAA;TIBETAN SUBJOINED LETTER TSHA;Mn;0;NSM;;;;;N;;;;; 0FAB;TIBETAN SUBJOINED LETTER DZA;Mn;0;NSM;;;;;N;;;;; 0FAC;TIBETAN SUBJOINED LETTER DZHA;Mn;0;NSM;0FAB 0FB7;;;;N;;;;; 0FAD;TIBETAN SUBJOINED LETTER WA;Mn;0;NSM;;;;;N;;*;;; 0FAE;TIBETAN SUBJOINED LETTER ZHA;Mn;0;NSM;;;;;N;;;;; 0FAF;TIBETAN SUBJOINED LETTER ZA;Mn;0;NSM;;;;;N;;;;; 0FB0;TIBETAN SUBJOINED LETTER -A;Mn;0;NSM;;;;;N;;;;; 0FB1;TIBETAN SUBJOINED LETTER YA;Mn;0;NSM;;;;;N;;*;;; 0FB2;TIBETAN SUBJOINED LETTER RA;Mn;0;NSM;;;;;N;;*;;; 0FB3;TIBETAN SUBJOINED LETTER LA;Mn;0;NSM;;;;;N;;;;; 0FB4;TIBETAN SUBJOINED LETTER SHA;Mn;0;NSM;;;;;N;;;;; 0FB5;TIBETAN SUBJOINED LETTER SSA;Mn;0;NSM;;;;;N;;;;; 0FB6;TIBETAN SUBJOINED LETTER SA;Mn;0;NSM;;;;;N;;;;; 0FB7;TIBETAN SUBJOINED LETTER HA;Mn;0;NSM;;;;;N;;;;; 0FB8;TIBETAN SUBJOINED LETTER A;Mn;0;NSM;;;;;N;;;;; 0FB9;TIBETAN SUBJOINED LETTER KSSA;Mn;0;NSM;0F90 0FB5;;;;N;;;;; 0FBA;TIBETAN SUBJOINED LETTER FIXED-FORM WA;Mn;0;NSM;;;;;N;;*;;; 0FBB;TIBETAN SUBJOINED LETTER FIXED-FORM YA;Mn;0;NSM;;;;;N;;*;;; 0FBC;TIBETAN SUBJOINED LETTER FIXED-FORM RA;Mn;0;NSM;;;;;N;;*;;; 0FBE;TIBETAN KU RU KHA;So;0;L;;;;;N;;kuruka;;; 0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;kuruka shi mik chen;;; 0FC0;TIBETAN CANTILLATION SIGN HEAVY BEAT;So;0;L;;;;;N;;;;; 0FC1;TIBETAN CANTILLATION SIGN LIGHT BEAT;So;0;L;;;;;N;;;;; 0FC2;TIBETAN CANTILLATION SIGN CANG TE-U;So;0;L;;;;;N;;chang tyu;;; 0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;bub chey;;; 0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;drilbu;;; 0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;dorje;;; 0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;pema den;;; 0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;dorje gya dram;;; 0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;phurba;;; 0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;norbu;;; 0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;norbu nyi khyi;;; 0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;norbu sum khyi;;; 0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;norbu shi khyi;;; 0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;dena sum;;; 0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;ka shog gi go gyen;;; 0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;nyam yig gi go gyen;;; 1000;MYANMAR LETTER KA;Lo;0;L;;;;;N;;;;; 1001;MYANMAR LETTER KHA;Lo;0;L;;;;;N;;;;; 1002;MYANMAR LETTER GA;Lo;0;L;;;;;N;;;;; 1003;MYANMAR LETTER GHA;Lo;0;L;;;;;N;;;;; 1004;MYANMAR LETTER NGA;Lo;0;L;;;;;N;;;;; 1005;MYANMAR LETTER CA;Lo;0;L;;;;;N;;;;; 1006;MYANMAR LETTER CHA;Lo;0;L;;;;;N;;;;; 1007;MYANMAR LETTER JA;Lo;0;L;;;;;N;;;;; 1008;MYANMAR LETTER JHA;Lo;0;L;;;;;N;;;;; 1009;MYANMAR LETTER NYA;Lo;0;L;;;;;N;;;;; 100A;MYANMAR LETTER NNYA;Lo;0;L;;;;;N;;;;; 100B;MYANMAR LETTER TTA;Lo;0;L;;;;;N;;;;; 100C;MYANMAR LETTER TTHA;Lo;0;L;;;;;N;;;;; 100D;MYANMAR LETTER DDA;Lo;0;L;;;;;N;;;;; 100E;MYANMAR LETTER DDHA;Lo;0;L;;;;;N;;;;; 100F;MYANMAR LETTER NNA;Lo;0;L;;;;;N;;;;; 1010;MYANMAR LETTER TA;Lo;0;L;;;;;N;;;;; 1011;MYANMAR LETTER THA;Lo;0;L;;;;;N;;;;; 1012;MYANMAR LETTER DA;Lo;0;L;;;;;N;;;;; 1013;MYANMAR LETTER DHA;Lo;0;L;;;;;N;;;;; 1014;MYANMAR LETTER NA;Lo;0;L;;;;;N;;;;; 1015;MYANMAR LETTER PA;Lo;0;L;;;;;N;;;;; 1016;MYANMAR LETTER PHA;Lo;0;L;;;;;N;;;;; 1017;MYANMAR LETTER BA;Lo;0;L;;;;;N;;;;; 1018;MYANMAR LETTER BHA;Lo;0;L;;;;;N;;;;; 1019;MYANMAR LETTER MA;Lo;0;L;;;;;N;;;;; 101A;MYANMAR LETTER YA;Lo;0;L;;;;;N;;;;; 101B;MYANMAR LETTER RA;Lo;0;L;;;;;N;;;;; 101C;MYANMAR LETTER LA;Lo;0;L;;;;;N;;;;; 101D;MYANMAR LETTER WA;Lo;0;L;;;;;N;;;;; 101E;MYANMAR LETTER SA;Lo;0;L;;;;;N;;;;; 101F;MYANMAR LETTER HA;Lo;0;L;;;;;N;;;;; 1020;MYANMAR LETTER LLA;Lo;0;L;;;;;N;;;;; 1021;MYANMAR LETTER A;Lo;0;L;;;;;N;;;;; 1023;MYANMAR LETTER I;Lo;0;L;;;;;N;;;;; 1024;MYANMAR LETTER II;Lo;0;L;;;;;N;;;;; 1025;MYANMAR LETTER U;Lo;0;L;;;;;N;;;;; 1026;MYANMAR LETTER UU;Lo;0;L;1025 102E;;;;N;;;;; 1027;MYANMAR LETTER E;Lo;0;L;;;;;N;;;;; 1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;; 102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;; 102C;MYANMAR VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 102D;MYANMAR VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 102E;MYANMAR VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; 102F;MYANMAR VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1030;MYANMAR VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 1031;MYANMAR VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 1032;MYANMAR VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;; 1036;MYANMAR SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; 1037;MYANMAR SIGN DOT BELOW;Mn;7;NSM;;;;;N;;;;; 1038;MYANMAR SIGN VISARGA;Mc;0;L;;;;;N;;;;; 1039;MYANMAR SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 104A;MYANMAR SIGN LITTLE SECTION;Po;0;L;;;;;N;;;;; 104B;MYANMAR SIGN SECTION;Po;0;L;;;;;N;;;;; 104C;MYANMAR SYMBOL LOCATIVE;Po;0;L;;;;;N;;;;; 104D;MYANMAR SYMBOL COMPLETED;Po;0;L;;;;;N;;;;; 104E;MYANMAR SYMBOL AFOREMENTIONED;Po;0;L;;;;;N;;;;; 104F;MYANMAR SYMBOL GENITIVE;Po;0;L;;;;;N;;;;; 1050;MYANMAR LETTER SHA;Lo;0;L;;;;;N;;;;; 1051;MYANMAR LETTER SSA;Lo;0;L;;;;;N;;;;; 1052;MYANMAR LETTER VOCALIC R;Lo;0;L;;;;;N;;;;; 1053;MYANMAR LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;; 1054;MYANMAR LETTER VOCALIC L;Lo;0;L;;;;;N;;;;; 1055;MYANMAR LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;; 1056;MYANMAR VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;; 1057;MYANMAR VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;; 1058;MYANMAR VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;; 1059;MYANMAR VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;N;;;;; 10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;Khutsuri;;2D00; 10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;Khutsuri;;2D01; 10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;Khutsuri;;2D02; 10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;Khutsuri;;2D03; 10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;Khutsuri;;2D04; 10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;Khutsuri;;2D05; 10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;Khutsuri;;2D06; 10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;Khutsuri;;2D07; 10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;Khutsuri;;2D08; 10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;Khutsuri;;2D09; 10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;Khutsuri;;2D0A; 10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;Khutsuri;;2D0B; 10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;Khutsuri;;2D0C; 10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;Khutsuri;;2D0D; 10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;Khutsuri;;2D0E; 10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;Khutsuri;;2D0F; 10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;Khutsuri;;2D10; 10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;Khutsuri;;2D11; 10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;Khutsuri;;2D12; 10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;Khutsuri;;2D13; 10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;Khutsuri;;2D14; 10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;Khutsuri;;2D15; 10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;Khutsuri;;2D16; 10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;Khutsuri;;2D17; 10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;Khutsuri;;2D18; 10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;Khutsuri;;2D19; 10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;Khutsuri;;2D1A; 10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;Khutsuri;;2D1B; 10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;Khutsuri;;2D1C; 10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;Khutsuri;;2D1D; 10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;Khutsuri;;2D1E; 10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;Khutsuri;;2D1F; 10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;Khutsuri;;2D20; 10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;Khutsuri;;2D21; 10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;Khutsuri;;2D22; 10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;Khutsuri;;2D23; 10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;Khutsuri;;2D24; 10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;Khutsuri;;2D25; 10D0;GEORGIAN LETTER AN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER AN;;;; 10D1;GEORGIAN LETTER BAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER BAN;;;; 10D2;GEORGIAN LETTER GAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GAN;;;; 10D3;GEORGIAN LETTER DON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER DON;;;; 10D4;GEORGIAN LETTER EN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER EN;;;; 10D5;GEORGIAN LETTER VIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER VIN;;;; 10D6;GEORGIAN LETTER ZEN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZEN;;;; 10D7;GEORGIAN LETTER TAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAN;;;; 10D8;GEORGIAN LETTER IN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER IN;;;; 10D9;GEORGIAN LETTER KAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KAN;;;; 10DA;GEORGIAN LETTER LAS;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER LAS;;;; 10DB;GEORGIAN LETTER MAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER MAN;;;; 10DC;GEORGIAN LETTER NAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER NAR;;;; 10DD;GEORGIAN LETTER ON;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ON;;;; 10DE;GEORGIAN LETTER PAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PAR;;;; 10DF;GEORGIAN LETTER ZHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER ZHAR;;;; 10E0;GEORGIAN LETTER RAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER RAE;;;; 10E1;GEORGIAN LETTER SAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SAN;;;; 10E2;GEORGIAN LETTER TAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER TAR;;;; 10E3;GEORGIAN LETTER UN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER UN;;;; 10E4;GEORGIAN LETTER PHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER PHAR;;;; 10E5;GEORGIAN LETTER KHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER KHAR;;;; 10E6;GEORGIAN LETTER GHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER GHAN;;;; 10E7;GEORGIAN LETTER QAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER QAR;;;; 10E8;GEORGIAN LETTER SHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER SHIN;;;; 10E9;GEORGIAN LETTER CHIN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHIN;;;; 10EA;GEORGIAN LETTER CAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CAN;;;; 10EB;GEORGIAN LETTER JIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JIL;;;; 10EC;GEORGIAN LETTER CIL;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CIL;;;; 10ED;GEORGIAN LETTER CHAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER CHAR;;;; 10EE;GEORGIAN LETTER XAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER XAN;;;; 10EF;GEORGIAN LETTER JHAN;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER JHAN;;;; 10F0;GEORGIAN LETTER HAE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAE;;;; 10F1;GEORGIAN LETTER HE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HE;;;; 10F2;GEORGIAN LETTER HIE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HIE;;;; 10F3;GEORGIAN LETTER WE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER WE;;;; 10F4;GEORGIAN LETTER HAR;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HAR;;;; 10F5;GEORGIAN LETTER HOE;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER HOE;;;; 10F6;GEORGIAN LETTER FI;Lo;0;L;;;;;N;GEORGIAN SMALL LETTER FI;;;; 10F7;GEORGIAN LETTER YN;Lo;0;L;;;;;N;;;;; 10F8;GEORGIAN LETTER ELIFI;Lo;0;L;;;;;N;;;;; 10F9;GEORGIAN LETTER TURNED GAN;Lo;0;L;;;;;N;;;;; 10FA;GEORGIAN LETTER AIN;Lo;0;L;;;;;N;;;;; 10FB;GEORGIAN PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; 10FC;MODIFIER LETTER GEORGIAN NAR;Lm;0;L; 10DC;;;;N;;;;; 1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; 1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; 1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; 1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; 1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;dd *;;; 1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;r *;;; 1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; 1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; 1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;bb *;;; 1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;s *;;; 110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; 110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;; 110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; 110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;jj *;;; 110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; 110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; 1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; 1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; 1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; 1113;HANGUL CHOSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; 1114;HANGUL CHOSEONG SSANGNIEUN;Lo;0;L;;;;;N;;;;; 1115;HANGUL CHOSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; 1116;HANGUL CHOSEONG NIEUN-PIEUP;Lo;0;L;;;;;N;;;;; 1117;HANGUL CHOSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; 1118;HANGUL CHOSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; 1119;HANGUL CHOSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; 111A;HANGUL CHOSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;; 111B;HANGUL CHOSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;; 111C;HANGUL CHOSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; 111D;HANGUL CHOSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; 111E;HANGUL CHOSEONG PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; 111F;HANGUL CHOSEONG PIEUP-NIEUN;Lo;0;L;;;;;N;;;;; 1120;HANGUL CHOSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;; 1121;HANGUL CHOSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;; 1122;HANGUL CHOSEONG PIEUP-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; 1123;HANGUL CHOSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; 1124;HANGUL CHOSEONG PIEUP-SIOS-PIEUP;Lo;0;L;;;;;N;;;;; 1125;HANGUL CHOSEONG PIEUP-SSANGSIOS;Lo;0;L;;;;;N;;;;; 1126;HANGUL CHOSEONG PIEUP-SIOS-CIEUC;Lo;0;L;;;;;N;;;;; 1127;HANGUL CHOSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;; 1128;HANGUL CHOSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;; 1129;HANGUL CHOSEONG PIEUP-THIEUTH;Lo;0;L;;;;;N;;;;; 112A;HANGUL CHOSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; 112B;HANGUL CHOSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; 112C;HANGUL CHOSEONG KAPYEOUNSSANGPIEUP;Lo;0;L;;;;;N;;;;; 112D;HANGUL CHOSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; 112E;HANGUL CHOSEONG SIOS-NIEUN;Lo;0;L;;;;;N;;;;; 112F;HANGUL CHOSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; 1130;HANGUL CHOSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; 1131;HANGUL CHOSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;; 1132;HANGUL CHOSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; 1133;HANGUL CHOSEONG SIOS-PIEUP-KIYEOK;Lo;0;L;;;;;N;;;;; 1134;HANGUL CHOSEONG SIOS-SSANGSIOS;Lo;0;L;;;;;N;;;;; 1135;HANGUL CHOSEONG SIOS-IEUNG;Lo;0;L;;;;;N;;;;; 1136;HANGUL CHOSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;; 1137;HANGUL CHOSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;; 1138;HANGUL CHOSEONG SIOS-KHIEUKH;Lo;0;L;;;;;N;;;;; 1139;HANGUL CHOSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;; 113A;HANGUL CHOSEONG SIOS-PHIEUPH;Lo;0;L;;;;;N;;;;; 113B;HANGUL CHOSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;; 113C;HANGUL CHOSEONG CHITUEUMSIOS;Lo;0;L;;;;;N;;;;; 113D;HANGUL CHOSEONG CHITUEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; 113E;HANGUL CHOSEONG CEONGCHIEUMSIOS;Lo;0;L;;;;;N;;;;; 113F;HANGUL CHOSEONG CEONGCHIEUMSSANGSIOS;Lo;0;L;;;;;N;;;;; 1140;HANGUL CHOSEONG PANSIOS;Lo;0;L;;;;;N;;;;; 1141;HANGUL CHOSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; 1142;HANGUL CHOSEONG IEUNG-TIKEUT;Lo;0;L;;;;;N;;;;; 1143;HANGUL CHOSEONG IEUNG-MIEUM;Lo;0;L;;;;;N;;;;; 1144;HANGUL CHOSEONG IEUNG-PIEUP;Lo;0;L;;;;;N;;;;; 1145;HANGUL CHOSEONG IEUNG-SIOS;Lo;0;L;;;;;N;;;;; 1146;HANGUL CHOSEONG IEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; 1147;HANGUL CHOSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; 1148;HANGUL CHOSEONG IEUNG-CIEUC;Lo;0;L;;;;;N;;;;; 1149;HANGUL CHOSEONG IEUNG-CHIEUCH;Lo;0;L;;;;;N;;;;; 114A;HANGUL CHOSEONG IEUNG-THIEUTH;Lo;0;L;;;;;N;;;;; 114B;HANGUL CHOSEONG IEUNG-PHIEUPH;Lo;0;L;;;;;N;;;;; 114C;HANGUL CHOSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; 114D;HANGUL CHOSEONG CIEUC-IEUNG;Lo;0;L;;;;;N;;;;; 114E;HANGUL CHOSEONG CHITUEUMCIEUC;Lo;0;L;;;;;N;;;;; 114F;HANGUL CHOSEONG CHITUEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; 1150;HANGUL CHOSEONG CEONGCHIEUMCIEUC;Lo;0;L;;;;;N;;;;; 1151;HANGUL CHOSEONG CEONGCHIEUMSSANGCIEUC;Lo;0;L;;;;;N;;;;; 1152;HANGUL CHOSEONG CHIEUCH-KHIEUKH;Lo;0;L;;;;;N;;;;; 1153;HANGUL CHOSEONG CHIEUCH-HIEUH;Lo;0;L;;;;;N;;;;; 1154;HANGUL CHOSEONG CHITUEUMCHIEUCH;Lo;0;L;;;;;N;;;;; 1155;HANGUL CHOSEONG CEONGCHIEUMCHIEUCH;Lo;0;L;;;;;N;;;;; 1156;HANGUL CHOSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; 1157;HANGUL CHOSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; 1158;HANGUL CHOSEONG SSANGHIEUH;Lo;0;L;;;;;N;;;;; 1159;HANGUL CHOSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; 115F;HANGUL CHOSEONG FILLER;Lo;0;L;;;;;N;;;;; 1160;HANGUL JUNGSEONG FILLER;Lo;0;L;;;;;N;;;;; 1161;HANGUL JUNGSEONG A;Lo;0;L;;;;;N;;;;; 1162;HANGUL JUNGSEONG AE;Lo;0;L;;;;;N;;;;; 1163;HANGUL JUNGSEONG YA;Lo;0;L;;;;;N;;;;; 1164;HANGUL JUNGSEONG YAE;Lo;0;L;;;;;N;;;;; 1165;HANGUL JUNGSEONG EO;Lo;0;L;;;;;N;;;;; 1166;HANGUL JUNGSEONG E;Lo;0;L;;;;;N;;;;; 1167;HANGUL JUNGSEONG YEO;Lo;0;L;;;;;N;;;;; 1168;HANGUL JUNGSEONG YE;Lo;0;L;;;;;N;;;;; 1169;HANGUL JUNGSEONG O;Lo;0;L;;;;;N;;;;; 116A;HANGUL JUNGSEONG WA;Lo;0;L;;;;;N;;;;; 116B;HANGUL JUNGSEONG WAE;Lo;0;L;;;;;N;;;;; 116C;HANGUL JUNGSEONG OE;Lo;0;L;;;;;N;;;;; 116D;HANGUL JUNGSEONG YO;Lo;0;L;;;;;N;;;;; 116E;HANGUL JUNGSEONG U;Lo;0;L;;;;;N;;;;; 116F;HANGUL JUNGSEONG WEO;Lo;0;L;;;;;N;;;;; 1170;HANGUL JUNGSEONG WE;Lo;0;L;;;;;N;;;;; 1171;HANGUL JUNGSEONG WI;Lo;0;L;;;;;N;;;;; 1172;HANGUL JUNGSEONG YU;Lo;0;L;;;;;N;;;;; 1173;HANGUL JUNGSEONG EU;Lo;0;L;;;;;N;;;;; 1174;HANGUL JUNGSEONG YI;Lo;0;L;;;;;N;;;;; 1175;HANGUL JUNGSEONG I;Lo;0;L;;;;;N;;;;; 1176;HANGUL JUNGSEONG A-O;Lo;0;L;;;;;N;;;;; 1177;HANGUL JUNGSEONG A-U;Lo;0;L;;;;;N;;;;; 1178;HANGUL JUNGSEONG YA-O;Lo;0;L;;;;;N;;;;; 1179;HANGUL JUNGSEONG YA-YO;Lo;0;L;;;;;N;;;;; 117A;HANGUL JUNGSEONG EO-O;Lo;0;L;;;;;N;;;;; 117B;HANGUL JUNGSEONG EO-U;Lo;0;L;;;;;N;;;;; 117C;HANGUL JUNGSEONG EO-EU;Lo;0;L;;;;;N;;;;; 117D;HANGUL JUNGSEONG YEO-O;Lo;0;L;;;;;N;;;;; 117E;HANGUL JUNGSEONG YEO-U;Lo;0;L;;;;;N;;;;; 117F;HANGUL JUNGSEONG O-EO;Lo;0;L;;;;;N;;;;; 1180;HANGUL JUNGSEONG O-E;Lo;0;L;;;;;N;;;;; 1181;HANGUL JUNGSEONG O-YE;Lo;0;L;;;;;N;;;;; 1182;HANGUL JUNGSEONG O-O;Lo;0;L;;;;;N;;;;; 1183;HANGUL JUNGSEONG O-U;Lo;0;L;;;;;N;;;;; 1184;HANGUL JUNGSEONG YO-YA;Lo;0;L;;;;;N;;;;; 1185;HANGUL JUNGSEONG YO-YAE;Lo;0;L;;;;;N;;;;; 1186;HANGUL JUNGSEONG YO-YEO;Lo;0;L;;;;;N;;;;; 1187;HANGUL JUNGSEONG YO-O;Lo;0;L;;;;;N;;;;; 1188;HANGUL JUNGSEONG YO-I;Lo;0;L;;;;;N;;;;; 1189;HANGUL JUNGSEONG U-A;Lo;0;L;;;;;N;;;;; 118A;HANGUL JUNGSEONG U-AE;Lo;0;L;;;;;N;;;;; 118B;HANGUL JUNGSEONG U-EO-EU;Lo;0;L;;;;;N;;;;; 118C;HANGUL JUNGSEONG U-YE;Lo;0;L;;;;;N;;;;; 118D;HANGUL JUNGSEONG U-U;Lo;0;L;;;;;N;;;;; 118E;HANGUL JUNGSEONG YU-A;Lo;0;L;;;;;N;;;;; 118F;HANGUL JUNGSEONG YU-EO;Lo;0;L;;;;;N;;;;; 1190;HANGUL JUNGSEONG YU-E;Lo;0;L;;;;;N;;;;; 1191;HANGUL JUNGSEONG YU-YEO;Lo;0;L;;;;;N;;;;; 1192;HANGUL JUNGSEONG YU-YE;Lo;0;L;;;;;N;;;;; 1193;HANGUL JUNGSEONG YU-U;Lo;0;L;;;;;N;;;;; 1194;HANGUL JUNGSEONG YU-I;Lo;0;L;;;;;N;;;;; 1195;HANGUL JUNGSEONG EU-U;Lo;0;L;;;;;N;;;;; 1196;HANGUL JUNGSEONG EU-EU;Lo;0;L;;;;;N;;;;; 1197;HANGUL JUNGSEONG YI-U;Lo;0;L;;;;;N;;;;; 1198;HANGUL JUNGSEONG I-A;Lo;0;L;;;;;N;;;;; 1199;HANGUL JUNGSEONG I-YA;Lo;0;L;;;;;N;;;;; 119A;HANGUL JUNGSEONG I-O;Lo;0;L;;;;;N;;;;; 119B;HANGUL JUNGSEONG I-U;Lo;0;L;;;;;N;;;;; 119C;HANGUL JUNGSEONG I-EU;Lo;0;L;;;;;N;;;;; 119D;HANGUL JUNGSEONG I-ARAEA;Lo;0;L;;;;;N;;;;; 119E;HANGUL JUNGSEONG ARAEA;Lo;0;L;;;;;N;;;;; 119F;HANGUL JUNGSEONG ARAEA-EO;Lo;0;L;;;;;N;;;;; 11A0;HANGUL JUNGSEONG ARAEA-U;Lo;0;L;;;;;N;;;;; 11A1;HANGUL JUNGSEONG ARAEA-I;Lo;0;L;;;;;N;;;;; 11A2;HANGUL JUNGSEONG SSANGARAEA;Lo;0;L;;;;;N;;;;; 11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;g *;;; 11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;gg *;;; 11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;gs *;;; 11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;n *;;; 11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;nj *;;; 11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;nh *;;; 11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;d *;;; 11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;l *;;; 11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;lg *;;; 11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;lm *;;; 11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;lb *;;; 11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;ls *;;; 11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;lt *;;; 11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;lp *;;; 11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;lh *;;; 11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;m *;;; 11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;b *;;; 11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;bs *;;; 11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;s *;;; 11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;ss *;;; 11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;ng *;;; 11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;j *;;; 11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;c *;;; 11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;k *;;; 11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;t *;;; 11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;p *;;; 11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;h *;;; 11C3;HANGUL JONGSEONG KIYEOK-RIEUL;Lo;0;L;;;;;N;;;;; 11C4;HANGUL JONGSEONG KIYEOK-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; 11C5;HANGUL JONGSEONG NIEUN-KIYEOK;Lo;0;L;;;;;N;;;;; 11C6;HANGUL JONGSEONG NIEUN-TIKEUT;Lo;0;L;;;;;N;;;;; 11C7;HANGUL JONGSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;; 11C8;HANGUL JONGSEONG NIEUN-PANSIOS;Lo;0;L;;;;;N;;;;; 11C9;HANGUL JONGSEONG NIEUN-THIEUTH;Lo;0;L;;;;;N;;;;; 11CA;HANGUL JONGSEONG TIKEUT-KIYEOK;Lo;0;L;;;;;N;;;;; 11CB;HANGUL JONGSEONG TIKEUT-RIEUL;Lo;0;L;;;;;N;;;;; 11CC;HANGUL JONGSEONG RIEUL-KIYEOK-SIOS;Lo;0;L;;;;;N;;;;; 11CD;HANGUL JONGSEONG RIEUL-NIEUN;Lo;0;L;;;;;N;;;;; 11CE;HANGUL JONGSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;; 11CF;HANGUL JONGSEONG RIEUL-TIKEUT-HIEUH;Lo;0;L;;;;;N;;;;; 11D0;HANGUL JONGSEONG SSANGRIEUL;Lo;0;L;;;;;N;;;;; 11D1;HANGUL JONGSEONG RIEUL-MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; 11D2;HANGUL JONGSEONG RIEUL-MIEUM-SIOS;Lo;0;L;;;;;N;;;;; 11D3;HANGUL JONGSEONG RIEUL-PIEUP-SIOS;Lo;0;L;;;;;N;;;;; 11D4;HANGUL JONGSEONG RIEUL-PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; 11D5;HANGUL JONGSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; 11D6;HANGUL JONGSEONG RIEUL-SSANGSIOS;Lo;0;L;;;;;N;;;;; 11D7;HANGUL JONGSEONG RIEUL-PANSIOS;Lo;0;L;;;;;N;;;;; 11D8;HANGUL JONGSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;; 11D9;HANGUL JONGSEONG RIEUL-YEORINHIEUH;Lo;0;L;;;;;N;;;;; 11DA;HANGUL JONGSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;; 11DB;HANGUL JONGSEONG MIEUM-RIEUL;Lo;0;L;;;;;N;;;;; 11DC;HANGUL JONGSEONG MIEUM-PIEUP;Lo;0;L;;;;;N;;;;; 11DD;HANGUL JONGSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;; 11DE;HANGUL JONGSEONG MIEUM-SSANGSIOS;Lo;0;L;;;;;N;;;;; 11DF;HANGUL JONGSEONG MIEUM-PANSIOS;Lo;0;L;;;;;N;;;;; 11E0;HANGUL JONGSEONG MIEUM-CHIEUCH;Lo;0;L;;;;;N;;;;; 11E1;HANGUL JONGSEONG MIEUM-HIEUH;Lo;0;L;;;;;N;;;;; 11E2;HANGUL JONGSEONG KAPYEOUNMIEUM;Lo;0;L;;;;;N;;;;; 11E3;HANGUL JONGSEONG PIEUP-RIEUL;Lo;0;L;;;;;N;;;;; 11E4;HANGUL JONGSEONG PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;; 11E5;HANGUL JONGSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;; 11E6;HANGUL JONGSEONG KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;; 11E7;HANGUL JONGSEONG SIOS-KIYEOK;Lo;0;L;;;;;N;;;;; 11E8;HANGUL JONGSEONG SIOS-TIKEUT;Lo;0;L;;;;;N;;;;; 11E9;HANGUL JONGSEONG SIOS-RIEUL;Lo;0;L;;;;;N;;;;; 11EA;HANGUL JONGSEONG SIOS-PIEUP;Lo;0;L;;;;;N;;;;; 11EB;HANGUL JONGSEONG PANSIOS;Lo;0;L;;;;;N;;;;; 11EC;HANGUL JONGSEONG IEUNG-KIYEOK;Lo;0;L;;;;;N;;;;; 11ED;HANGUL JONGSEONG IEUNG-SSANGKIYEOK;Lo;0;L;;;;;N;;;;; 11EE;HANGUL JONGSEONG SSANGIEUNG;Lo;0;L;;;;;N;;;;; 11EF;HANGUL JONGSEONG IEUNG-KHIEUKH;Lo;0;L;;;;;N;;;;; 11F0;HANGUL JONGSEONG YESIEUNG;Lo;0;L;;;;;N;;;;; 11F1;HANGUL JONGSEONG YESIEUNG-SIOS;Lo;0;L;;;;;N;;;;; 11F2;HANGUL JONGSEONG YESIEUNG-PANSIOS;Lo;0;L;;;;;N;;;;; 11F3;HANGUL JONGSEONG PHIEUPH-PIEUP;Lo;0;L;;;;;N;;;;; 11F4;HANGUL JONGSEONG KAPYEOUNPHIEUPH;Lo;0;L;;;;;N;;;;; 11F5;HANGUL JONGSEONG HIEUH-NIEUN;Lo;0;L;;;;;N;;;;; 11F6;HANGUL JONGSEONG HIEUH-RIEUL;Lo;0;L;;;;;N;;;;; 11F7;HANGUL JONGSEONG HIEUH-MIEUM;Lo;0;L;;;;;N;;;;; 11F8;HANGUL JONGSEONG HIEUH-PIEUP;Lo;0;L;;;;;N;;;;; 11F9;HANGUL JONGSEONG YEORINHIEUH;Lo;0;L;;;;;N;;;;; 1200;ETHIOPIC SYLLABLE HA;Lo;0;L;;;;;N;;;;; 1201;ETHIOPIC SYLLABLE HU;Lo;0;L;;;;;N;;;;; 1202;ETHIOPIC SYLLABLE HI;Lo;0;L;;;;;N;;;;; 1203;ETHIOPIC SYLLABLE HAA;Lo;0;L;;;;;N;;;;; 1204;ETHIOPIC SYLLABLE HEE;Lo;0;L;;;;;N;;;;; 1205;ETHIOPIC SYLLABLE HE;Lo;0;L;;;;;N;;;;; 1206;ETHIOPIC SYLLABLE HO;Lo;0;L;;;;;N;;;;; 1207;ETHIOPIC SYLLABLE HOA;Lo;0;L;;;;;N;;;;; 1208;ETHIOPIC SYLLABLE LA;Lo;0;L;;;;;N;;;;; 1209;ETHIOPIC SYLLABLE LU;Lo;0;L;;;;;N;;;;; 120A;ETHIOPIC SYLLABLE LI;Lo;0;L;;;;;N;;;;; 120B;ETHIOPIC SYLLABLE LAA;Lo;0;L;;;;;N;;;;; 120C;ETHIOPIC SYLLABLE LEE;Lo;0;L;;;;;N;;;;; 120D;ETHIOPIC SYLLABLE LE;Lo;0;L;;;;;N;;;;; 120E;ETHIOPIC SYLLABLE LO;Lo;0;L;;;;;N;;;;; 120F;ETHIOPIC SYLLABLE LWA;Lo;0;L;;;;;N;;;;; 1210;ETHIOPIC SYLLABLE HHA;Lo;0;L;;;;;N;;;;; 1211;ETHIOPIC SYLLABLE HHU;Lo;0;L;;;;;N;;;;; 1212;ETHIOPIC SYLLABLE HHI;Lo;0;L;;;;;N;;;;; 1213;ETHIOPIC SYLLABLE HHAA;Lo;0;L;;;;;N;;;;; 1214;ETHIOPIC SYLLABLE HHEE;Lo;0;L;;;;;N;;;;; 1215;ETHIOPIC SYLLABLE HHE;Lo;0;L;;;;;N;;;;; 1216;ETHIOPIC SYLLABLE HHO;Lo;0;L;;;;;N;;;;; 1217;ETHIOPIC SYLLABLE HHWA;Lo;0;L;;;;;N;;;;; 1218;ETHIOPIC SYLLABLE MA;Lo;0;L;;;;;N;;;;; 1219;ETHIOPIC SYLLABLE MU;Lo;0;L;;;;;N;;;;; 121A;ETHIOPIC SYLLABLE MI;Lo;0;L;;;;;N;;;;; 121B;ETHIOPIC SYLLABLE MAA;Lo;0;L;;;;;N;;;;; 121C;ETHIOPIC SYLLABLE MEE;Lo;0;L;;;;;N;;;;; 121D;ETHIOPIC SYLLABLE ME;Lo;0;L;;;;;N;;;;; 121E;ETHIOPIC SYLLABLE MO;Lo;0;L;;;;;N;;;;; 121F;ETHIOPIC SYLLABLE MWA;Lo;0;L;;;;;N;;;;; 1220;ETHIOPIC SYLLABLE SZA;Lo;0;L;;;;;N;;;;; 1221;ETHIOPIC SYLLABLE SZU;Lo;0;L;;;;;N;;;;; 1222;ETHIOPIC SYLLABLE SZI;Lo;0;L;;;;;N;;;;; 1223;ETHIOPIC SYLLABLE SZAA;Lo;0;L;;;;;N;;;;; 1224;ETHIOPIC SYLLABLE SZEE;Lo;0;L;;;;;N;;;;; 1225;ETHIOPIC SYLLABLE SZE;Lo;0;L;;;;;N;;;;; 1226;ETHIOPIC SYLLABLE SZO;Lo;0;L;;;;;N;;;;; 1227;ETHIOPIC SYLLABLE SZWA;Lo;0;L;;;;;N;;;;; 1228;ETHIOPIC SYLLABLE RA;Lo;0;L;;;;;N;;;;; 1229;ETHIOPIC SYLLABLE RU;Lo;0;L;;;;;N;;;;; 122A;ETHIOPIC SYLLABLE RI;Lo;0;L;;;;;N;;;;; 122B;ETHIOPIC SYLLABLE RAA;Lo;0;L;;;;;N;;;;; 122C;ETHIOPIC SYLLABLE REE;Lo;0;L;;;;;N;;;;; 122D;ETHIOPIC SYLLABLE RE;Lo;0;L;;;;;N;;;;; 122E;ETHIOPIC SYLLABLE RO;Lo;0;L;;;;;N;;;;; 122F;ETHIOPIC SYLLABLE RWA;Lo;0;L;;;;;N;;;;; 1230;ETHIOPIC SYLLABLE SA;Lo;0;L;;;;;N;;;;; 1231;ETHIOPIC SYLLABLE SU;Lo;0;L;;;;;N;;;;; 1232;ETHIOPIC SYLLABLE SI;Lo;0;L;;;;;N;;;;; 1233;ETHIOPIC SYLLABLE SAA;Lo;0;L;;;;;N;;;;; 1234;ETHIOPIC SYLLABLE SEE;Lo;0;L;;;;;N;;;;; 1235;ETHIOPIC SYLLABLE SE;Lo;0;L;;;;;N;;;;; 1236;ETHIOPIC SYLLABLE SO;Lo;0;L;;;;;N;;;;; 1237;ETHIOPIC SYLLABLE SWA;Lo;0;L;;;;;N;;;;; 1238;ETHIOPIC SYLLABLE SHA;Lo;0;L;;;;;N;;;;; 1239;ETHIOPIC SYLLABLE SHU;Lo;0;L;;;;;N;;;;; 123A;ETHIOPIC SYLLABLE SHI;Lo;0;L;;;;;N;;;;; 123B;ETHIOPIC SYLLABLE SHAA;Lo;0;L;;;;;N;;;;; 123C;ETHIOPIC SYLLABLE SHEE;Lo;0;L;;;;;N;;;;; 123D;ETHIOPIC SYLLABLE SHE;Lo;0;L;;;;;N;;;;; 123E;ETHIOPIC SYLLABLE SHO;Lo;0;L;;;;;N;;;;; 123F;ETHIOPIC SYLLABLE SHWA;Lo;0;L;;;;;N;;;;; 1240;ETHIOPIC SYLLABLE QA;Lo;0;L;;;;;N;;;;; 1241;ETHIOPIC SYLLABLE QU;Lo;0;L;;;;;N;;;;; 1242;ETHIOPIC SYLLABLE QI;Lo;0;L;;;;;N;;;;; 1243;ETHIOPIC SYLLABLE QAA;Lo;0;L;;;;;N;;;;; 1244;ETHIOPIC SYLLABLE QEE;Lo;0;L;;;;;N;;;;; 1245;ETHIOPIC SYLLABLE QE;Lo;0;L;;;;;N;;;;; 1246;ETHIOPIC SYLLABLE QO;Lo;0;L;;;;;N;;;;; 1247;ETHIOPIC SYLLABLE QOA;Lo;0;L;;;;;N;;;;; 1248;ETHIOPIC SYLLABLE QWA;Lo;0;L;;;;;N;;;;; 124A;ETHIOPIC SYLLABLE QWI;Lo;0;L;;;;;N;;;;; 124B;ETHIOPIC SYLLABLE QWAA;Lo;0;L;;;;;N;;;;; 124C;ETHIOPIC SYLLABLE QWEE;Lo;0;L;;;;;N;;;;; 124D;ETHIOPIC SYLLABLE QWE;Lo;0;L;;;;;N;;;;; 1250;ETHIOPIC SYLLABLE QHA;Lo;0;L;;;;;N;;;;; 1251;ETHIOPIC SYLLABLE QHU;Lo;0;L;;;;;N;;;;; 1252;ETHIOPIC SYLLABLE QHI;Lo;0;L;;;;;N;;;;; 1253;ETHIOPIC SYLLABLE QHAA;Lo;0;L;;;;;N;;;;; 1254;ETHIOPIC SYLLABLE QHEE;Lo;0;L;;;;;N;;;;; 1255;ETHIOPIC SYLLABLE QHE;Lo;0;L;;;;;N;;;;; 1256;ETHIOPIC SYLLABLE QHO;Lo;0;L;;;;;N;;;;; 1258;ETHIOPIC SYLLABLE QHWA;Lo;0;L;;;;;N;;;;; 125A;ETHIOPIC SYLLABLE QHWI;Lo;0;L;;;;;N;;;;; 125B;ETHIOPIC SYLLABLE QHWAA;Lo;0;L;;;;;N;;;;; 125C;ETHIOPIC SYLLABLE QHWEE;Lo;0;L;;;;;N;;;;; 125D;ETHIOPIC SYLLABLE QHWE;Lo;0;L;;;;;N;;;;; 1260;ETHIOPIC SYLLABLE BA;Lo;0;L;;;;;N;;;;; 1261;ETHIOPIC SYLLABLE BU;Lo;0;L;;;;;N;;;;; 1262;ETHIOPIC SYLLABLE BI;Lo;0;L;;;;;N;;;;; 1263;ETHIOPIC SYLLABLE BAA;Lo;0;L;;;;;N;;;;; 1264;ETHIOPIC SYLLABLE BEE;Lo;0;L;;;;;N;;;;; 1265;ETHIOPIC SYLLABLE BE;Lo;0;L;;;;;N;;;;; 1266;ETHIOPIC SYLLABLE BO;Lo;0;L;;;;;N;;;;; 1267;ETHIOPIC SYLLABLE BWA;Lo;0;L;;;;;N;;;;; 1268;ETHIOPIC SYLLABLE VA;Lo;0;L;;;;;N;;;;; 1269;ETHIOPIC SYLLABLE VU;Lo;0;L;;;;;N;;;;; 126A;ETHIOPIC SYLLABLE VI;Lo;0;L;;;;;N;;;;; 126B;ETHIOPIC SYLLABLE VAA;Lo;0;L;;;;;N;;;;; 126C;ETHIOPIC SYLLABLE VEE;Lo;0;L;;;;;N;;;;; 126D;ETHIOPIC SYLLABLE VE;Lo;0;L;;;;;N;;;;; 126E;ETHIOPIC SYLLABLE VO;Lo;0;L;;;;;N;;;;; 126F;ETHIOPIC SYLLABLE VWA;Lo;0;L;;;;;N;;;;; 1270;ETHIOPIC SYLLABLE TA;Lo;0;L;;;;;N;;;;; 1271;ETHIOPIC SYLLABLE TU;Lo;0;L;;;;;N;;;;; 1272;ETHIOPIC SYLLABLE TI;Lo;0;L;;;;;N;;;;; 1273;ETHIOPIC SYLLABLE TAA;Lo;0;L;;;;;N;;;;; 1274;ETHIOPIC SYLLABLE TEE;Lo;0;L;;;;;N;;;;; 1275;ETHIOPIC SYLLABLE TE;Lo;0;L;;;;;N;;;;; 1276;ETHIOPIC SYLLABLE TO;Lo;0;L;;;;;N;;;;; 1277;ETHIOPIC SYLLABLE TWA;Lo;0;L;;;;;N;;;;; 1278;ETHIOPIC SYLLABLE CA;Lo;0;L;;;;;N;;;;; 1279;ETHIOPIC SYLLABLE CU;Lo;0;L;;;;;N;;;;; 127A;ETHIOPIC SYLLABLE CI;Lo;0;L;;;;;N;;;;; 127B;ETHIOPIC SYLLABLE CAA;Lo;0;L;;;;;N;;;;; 127C;ETHIOPIC SYLLABLE CEE;Lo;0;L;;;;;N;;;;; 127D;ETHIOPIC SYLLABLE CE;Lo;0;L;;;;;N;;;;; 127E;ETHIOPIC SYLLABLE CO;Lo;0;L;;;;;N;;;;; 127F;ETHIOPIC SYLLABLE CWA;Lo;0;L;;;;;N;;;;; 1280;ETHIOPIC SYLLABLE XA;Lo;0;L;;;;;N;;;;; 1281;ETHIOPIC SYLLABLE XU;Lo;0;L;;;;;N;;;;; 1282;ETHIOPIC SYLLABLE XI;Lo;0;L;;;;;N;;;;; 1283;ETHIOPIC SYLLABLE XAA;Lo;0;L;;;;;N;;;;; 1284;ETHIOPIC SYLLABLE XEE;Lo;0;L;;;;;N;;;;; 1285;ETHIOPIC SYLLABLE XE;Lo;0;L;;;;;N;;;;; 1286;ETHIOPIC SYLLABLE XO;Lo;0;L;;;;;N;;;;; 1287;ETHIOPIC SYLLABLE XOA;Lo;0;L;;;;;N;;;;; 1288;ETHIOPIC SYLLABLE XWA;Lo;0;L;;;;;N;;;;; 128A;ETHIOPIC SYLLABLE XWI;Lo;0;L;;;;;N;;;;; 128B;ETHIOPIC SYLLABLE XWAA;Lo;0;L;;;;;N;;;;; 128C;ETHIOPIC SYLLABLE XWEE;Lo;0;L;;;;;N;;;;; 128D;ETHIOPIC SYLLABLE XWE;Lo;0;L;;;;;N;;;;; 1290;ETHIOPIC SYLLABLE NA;Lo;0;L;;;;;N;;;;; 1291;ETHIOPIC SYLLABLE NU;Lo;0;L;;;;;N;;;;; 1292;ETHIOPIC SYLLABLE NI;Lo;0;L;;;;;N;;;;; 1293;ETHIOPIC SYLLABLE NAA;Lo;0;L;;;;;N;;;;; 1294;ETHIOPIC SYLLABLE NEE;Lo;0;L;;;;;N;;;;; 1295;ETHIOPIC SYLLABLE NE;Lo;0;L;;;;;N;;;;; 1296;ETHIOPIC SYLLABLE NO;Lo;0;L;;;;;N;;;;; 1297;ETHIOPIC SYLLABLE NWA;Lo;0;L;;;;;N;;;;; 1298;ETHIOPIC SYLLABLE NYA;Lo;0;L;;;;;N;;;;; 1299;ETHIOPIC SYLLABLE NYU;Lo;0;L;;;;;N;;;;; 129A;ETHIOPIC SYLLABLE NYI;Lo;0;L;;;;;N;;;;; 129B;ETHIOPIC SYLLABLE NYAA;Lo;0;L;;;;;N;;;;; 129C;ETHIOPIC SYLLABLE NYEE;Lo;0;L;;;;;N;;;;; 129D;ETHIOPIC SYLLABLE NYE;Lo;0;L;;;;;N;;;;; 129E;ETHIOPIC SYLLABLE NYO;Lo;0;L;;;;;N;;;;; 129F;ETHIOPIC SYLLABLE NYWA;Lo;0;L;;;;;N;;;;; 12A0;ETHIOPIC SYLLABLE GLOTTAL A;Lo;0;L;;;;;N;;;;; 12A1;ETHIOPIC SYLLABLE GLOTTAL U;Lo;0;L;;;;;N;;;;; 12A2;ETHIOPIC SYLLABLE GLOTTAL I;Lo;0;L;;;;;N;;;;; 12A3;ETHIOPIC SYLLABLE GLOTTAL AA;Lo;0;L;;;;;N;;;;; 12A4;ETHIOPIC SYLLABLE GLOTTAL EE;Lo;0;L;;;;;N;;;;; 12A5;ETHIOPIC SYLLABLE GLOTTAL E;Lo;0;L;;;;;N;;;;; 12A6;ETHIOPIC SYLLABLE GLOTTAL O;Lo;0;L;;;;;N;;;;; 12A7;ETHIOPIC SYLLABLE GLOTTAL WA;Lo;0;L;;;;;N;;;;; 12A8;ETHIOPIC SYLLABLE KA;Lo;0;L;;;;;N;;;;; 12A9;ETHIOPIC SYLLABLE KU;Lo;0;L;;;;;N;;;;; 12AA;ETHIOPIC SYLLABLE KI;Lo;0;L;;;;;N;;;;; 12AB;ETHIOPIC SYLLABLE KAA;Lo;0;L;;;;;N;;;;; 12AC;ETHIOPIC SYLLABLE KEE;Lo;0;L;;;;;N;;;;; 12AD;ETHIOPIC SYLLABLE KE;Lo;0;L;;;;;N;;;;; 12AE;ETHIOPIC SYLLABLE KO;Lo;0;L;;;;;N;;;;; 12AF;ETHIOPIC SYLLABLE KOA;Lo;0;L;;;;;N;;;;; 12B0;ETHIOPIC SYLLABLE KWA;Lo;0;L;;;;;N;;;;; 12B2;ETHIOPIC SYLLABLE KWI;Lo;0;L;;;;;N;;;;; 12B3;ETHIOPIC SYLLABLE KWAA;Lo;0;L;;;;;N;;;;; 12B4;ETHIOPIC SYLLABLE KWEE;Lo;0;L;;;;;N;;;;; 12B5;ETHIOPIC SYLLABLE KWE;Lo;0;L;;;;;N;;;;; 12B8;ETHIOPIC SYLLABLE KXA;Lo;0;L;;;;;N;;;;; 12B9;ETHIOPIC SYLLABLE KXU;Lo;0;L;;;;;N;;;;; 12BA;ETHIOPIC SYLLABLE KXI;Lo;0;L;;;;;N;;;;; 12BB;ETHIOPIC SYLLABLE KXAA;Lo;0;L;;;;;N;;;;; 12BC;ETHIOPIC SYLLABLE KXEE;Lo;0;L;;;;;N;;;;; 12BD;ETHIOPIC SYLLABLE KXE;Lo;0;L;;;;;N;;;;; 12BE;ETHIOPIC SYLLABLE KXO;Lo;0;L;;;;;N;;;;; 12C0;ETHIOPIC SYLLABLE KXWA;Lo;0;L;;;;;N;;;;; 12C2;ETHIOPIC SYLLABLE KXWI;Lo;0;L;;;;;N;;;;; 12C3;ETHIOPIC SYLLABLE KXWAA;Lo;0;L;;;;;N;;;;; 12C4;ETHIOPIC SYLLABLE KXWEE;Lo;0;L;;;;;N;;;;; 12C5;ETHIOPIC SYLLABLE KXWE;Lo;0;L;;;;;N;;;;; 12C8;ETHIOPIC SYLLABLE WA;Lo;0;L;;;;;N;;;;; 12C9;ETHIOPIC SYLLABLE WU;Lo;0;L;;;;;N;;;;; 12CA;ETHIOPIC SYLLABLE WI;Lo;0;L;;;;;N;;;;; 12CB;ETHIOPIC SYLLABLE WAA;Lo;0;L;;;;;N;;;;; 12CC;ETHIOPIC SYLLABLE WEE;Lo;0;L;;;;;N;;;;; 12CD;ETHIOPIC SYLLABLE WE;Lo;0;L;;;;;N;;;;; 12CE;ETHIOPIC SYLLABLE WO;Lo;0;L;;;;;N;;;;; 12CF;ETHIOPIC SYLLABLE WOA;Lo;0;L;;;;;N;;;;; 12D0;ETHIOPIC SYLLABLE PHARYNGEAL A;Lo;0;L;;;;;N;;;;; 12D1;ETHIOPIC SYLLABLE PHARYNGEAL U;Lo;0;L;;;;;N;;;;; 12D2;ETHIOPIC SYLLABLE PHARYNGEAL I;Lo;0;L;;;;;N;;;;; 12D3;ETHIOPIC SYLLABLE PHARYNGEAL AA;Lo;0;L;;;;;N;;;;; 12D4;ETHIOPIC SYLLABLE PHARYNGEAL EE;Lo;0;L;;;;;N;;;;; 12D5;ETHIOPIC SYLLABLE PHARYNGEAL E;Lo;0;L;;;;;N;;;;; 12D6;ETHIOPIC SYLLABLE PHARYNGEAL O;Lo;0;L;;;;;N;;;;; 12D8;ETHIOPIC SYLLABLE ZA;Lo;0;L;;;;;N;;;;; 12D9;ETHIOPIC SYLLABLE ZU;Lo;0;L;;;;;N;;;;; 12DA;ETHIOPIC SYLLABLE ZI;Lo;0;L;;;;;N;;;;; 12DB;ETHIOPIC SYLLABLE ZAA;Lo;0;L;;;;;N;;;;; 12DC;ETHIOPIC SYLLABLE ZEE;Lo;0;L;;;;;N;;;;; 12DD;ETHIOPIC SYLLABLE ZE;Lo;0;L;;;;;N;;;;; 12DE;ETHIOPIC SYLLABLE ZO;Lo;0;L;;;;;N;;;;; 12DF;ETHIOPIC SYLLABLE ZWA;Lo;0;L;;;;;N;;;;; 12E0;ETHIOPIC SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; 12E1;ETHIOPIC SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; 12E2;ETHIOPIC SYLLABLE ZHI;Lo;0;L;;;;;N;;;;; 12E3;ETHIOPIC SYLLABLE ZHAA;Lo;0;L;;;;;N;;;;; 12E4;ETHIOPIC SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;; 12E5;ETHIOPIC SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; 12E6;ETHIOPIC SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; 12E7;ETHIOPIC SYLLABLE ZHWA;Lo;0;L;;;;;N;;;;; 12E8;ETHIOPIC SYLLABLE YA;Lo;0;L;;;;;N;;;;; 12E9;ETHIOPIC SYLLABLE YU;Lo;0;L;;;;;N;;;;; 12EA;ETHIOPIC SYLLABLE YI;Lo;0;L;;;;;N;;;;; 12EB;ETHIOPIC SYLLABLE YAA;Lo;0;L;;;;;N;;;;; 12EC;ETHIOPIC SYLLABLE YEE;Lo;0;L;;;;;N;;;;; 12ED;ETHIOPIC SYLLABLE YE;Lo;0;L;;;;;N;;;;; 12EE;ETHIOPIC SYLLABLE YO;Lo;0;L;;;;;N;;;;; 12EF;ETHIOPIC SYLLABLE YOA;Lo;0;L;;;;;N;;;;; 12F0;ETHIOPIC SYLLABLE DA;Lo;0;L;;;;;N;;;;; 12F1;ETHIOPIC SYLLABLE DU;Lo;0;L;;;;;N;;;;; 12F2;ETHIOPIC SYLLABLE DI;Lo;0;L;;;;;N;;;;; 12F3;ETHIOPIC SYLLABLE DAA;Lo;0;L;;;;;N;;;;; 12F4;ETHIOPIC SYLLABLE DEE;Lo;0;L;;;;;N;;;;; 12F5;ETHIOPIC SYLLABLE DE;Lo;0;L;;;;;N;;;;; 12F6;ETHIOPIC SYLLABLE DO;Lo;0;L;;;;;N;;;;; 12F7;ETHIOPIC SYLLABLE DWA;Lo;0;L;;;;;N;;;;; 12F8;ETHIOPIC SYLLABLE DDA;Lo;0;L;;;;;N;;;;; 12F9;ETHIOPIC SYLLABLE DDU;Lo;0;L;;;;;N;;;;; 12FA;ETHIOPIC SYLLABLE DDI;Lo;0;L;;;;;N;;;;; 12FB;ETHIOPIC SYLLABLE DDAA;Lo;0;L;;;;;N;;;;; 12FC;ETHIOPIC SYLLABLE DDEE;Lo;0;L;;;;;N;;;;; 12FD;ETHIOPIC SYLLABLE DDE;Lo;0;L;;;;;N;;;;; 12FE;ETHIOPIC SYLLABLE DDO;Lo;0;L;;;;;N;;;;; 12FF;ETHIOPIC SYLLABLE DDWA;Lo;0;L;;;;;N;;;;; 1300;ETHIOPIC SYLLABLE JA;Lo;0;L;;;;;N;;;;; 1301;ETHIOPIC SYLLABLE JU;Lo;0;L;;;;;N;;;;; 1302;ETHIOPIC SYLLABLE JI;Lo;0;L;;;;;N;;;;; 1303;ETHIOPIC SYLLABLE JAA;Lo;0;L;;;;;N;;;;; 1304;ETHIOPIC SYLLABLE JEE;Lo;0;L;;;;;N;;;;; 1305;ETHIOPIC SYLLABLE JE;Lo;0;L;;;;;N;;;;; 1306;ETHIOPIC SYLLABLE JO;Lo;0;L;;;;;N;;;;; 1307;ETHIOPIC SYLLABLE JWA;Lo;0;L;;;;;N;;;;; 1308;ETHIOPIC SYLLABLE GA;Lo;0;L;;;;;N;;;;; 1309;ETHIOPIC SYLLABLE GU;Lo;0;L;;;;;N;;;;; 130A;ETHIOPIC SYLLABLE GI;Lo;0;L;;;;;N;;;;; 130B;ETHIOPIC SYLLABLE GAA;Lo;0;L;;;;;N;;;;; 130C;ETHIOPIC SYLLABLE GEE;Lo;0;L;;;;;N;;;;; 130D;ETHIOPIC SYLLABLE GE;Lo;0;L;;;;;N;;;;; 130E;ETHIOPIC SYLLABLE GO;Lo;0;L;;;;;N;;;;; 130F;ETHIOPIC SYLLABLE GOA;Lo;0;L;;;;;N;;;;; 1310;ETHIOPIC SYLLABLE GWA;Lo;0;L;;;;;N;;;;; 1312;ETHIOPIC SYLLABLE GWI;Lo;0;L;;;;;N;;;;; 1313;ETHIOPIC SYLLABLE GWAA;Lo;0;L;;;;;N;;;;; 1314;ETHIOPIC SYLLABLE GWEE;Lo;0;L;;;;;N;;;;; 1315;ETHIOPIC SYLLABLE GWE;Lo;0;L;;;;;N;;;;; 1318;ETHIOPIC SYLLABLE GGA;Lo;0;L;;;;;N;;;;; 1319;ETHIOPIC SYLLABLE GGU;Lo;0;L;;;;;N;;;;; 131A;ETHIOPIC SYLLABLE GGI;Lo;0;L;;;;;N;;;;; 131B;ETHIOPIC SYLLABLE GGAA;Lo;0;L;;;;;N;;;;; 131C;ETHIOPIC SYLLABLE GGEE;Lo;0;L;;;;;N;;;;; 131D;ETHIOPIC SYLLABLE GGE;Lo;0;L;;;;;N;;;;; 131E;ETHIOPIC SYLLABLE GGO;Lo;0;L;;;;;N;;;;; 131F;ETHIOPIC SYLLABLE GGWAA;Lo;0;L;;;;;N;;;;; 1320;ETHIOPIC SYLLABLE THA;Lo;0;L;;;;;N;;;;; 1321;ETHIOPIC SYLLABLE THU;Lo;0;L;;;;;N;;;;; 1322;ETHIOPIC SYLLABLE THI;Lo;0;L;;;;;N;;;;; 1323;ETHIOPIC SYLLABLE THAA;Lo;0;L;;;;;N;;;;; 1324;ETHIOPIC SYLLABLE THEE;Lo;0;L;;;;;N;;;;; 1325;ETHIOPIC SYLLABLE THE;Lo;0;L;;;;;N;;;;; 1326;ETHIOPIC SYLLABLE THO;Lo;0;L;;;;;N;;;;; 1327;ETHIOPIC SYLLABLE THWA;Lo;0;L;;;;;N;;;;; 1328;ETHIOPIC SYLLABLE CHA;Lo;0;L;;;;;N;;;;; 1329;ETHIOPIC SYLLABLE CHU;Lo;0;L;;;;;N;;;;; 132A;ETHIOPIC SYLLABLE CHI;Lo;0;L;;;;;N;;;;; 132B;ETHIOPIC SYLLABLE CHAA;Lo;0;L;;;;;N;;;;; 132C;ETHIOPIC SYLLABLE CHEE;Lo;0;L;;;;;N;;;;; 132D;ETHIOPIC SYLLABLE CHE;Lo;0;L;;;;;N;;;;; 132E;ETHIOPIC SYLLABLE CHO;Lo;0;L;;;;;N;;;;; 132F;ETHIOPIC SYLLABLE CHWA;Lo;0;L;;;;;N;;;;; 1330;ETHIOPIC SYLLABLE PHA;Lo;0;L;;;;;N;;;;; 1331;ETHIOPIC SYLLABLE PHU;Lo;0;L;;;;;N;;;;; 1332;ETHIOPIC SYLLABLE PHI;Lo;0;L;;;;;N;;;;; 1333;ETHIOPIC SYLLABLE PHAA;Lo;0;L;;;;;N;;;;; 1334;ETHIOPIC SYLLABLE PHEE;Lo;0;L;;;;;N;;;;; 1335;ETHIOPIC SYLLABLE PHE;Lo;0;L;;;;;N;;;;; 1336;ETHIOPIC SYLLABLE PHO;Lo;0;L;;;;;N;;;;; 1337;ETHIOPIC SYLLABLE PHWA;Lo;0;L;;;;;N;;;;; 1338;ETHIOPIC SYLLABLE TSA;Lo;0;L;;;;;N;;;;; 1339;ETHIOPIC SYLLABLE TSU;Lo;0;L;;;;;N;;;;; 133A;ETHIOPIC SYLLABLE TSI;Lo;0;L;;;;;N;;;;; 133B;ETHIOPIC SYLLABLE TSAA;Lo;0;L;;;;;N;;;;; 133C;ETHIOPIC SYLLABLE TSEE;Lo;0;L;;;;;N;;;;; 133D;ETHIOPIC SYLLABLE TSE;Lo;0;L;;;;;N;;;;; 133E;ETHIOPIC SYLLABLE TSO;Lo;0;L;;;;;N;;;;; 133F;ETHIOPIC SYLLABLE TSWA;Lo;0;L;;;;;N;;;;; 1340;ETHIOPIC SYLLABLE TZA;Lo;0;L;;;;;N;;;;; 1341;ETHIOPIC SYLLABLE TZU;Lo;0;L;;;;;N;;;;; 1342;ETHIOPIC SYLLABLE TZI;Lo;0;L;;;;;N;;;;; 1343;ETHIOPIC SYLLABLE TZAA;Lo;0;L;;;;;N;;;;; 1344;ETHIOPIC SYLLABLE TZEE;Lo;0;L;;;;;N;;;;; 1345;ETHIOPIC SYLLABLE TZE;Lo;0;L;;;;;N;;;;; 1346;ETHIOPIC SYLLABLE TZO;Lo;0;L;;;;;N;;;;; 1347;ETHIOPIC SYLLABLE TZOA;Lo;0;L;;;;;N;;;;; 1348;ETHIOPIC SYLLABLE FA;Lo;0;L;;;;;N;;;;; 1349;ETHIOPIC SYLLABLE FU;Lo;0;L;;;;;N;;;;; 134A;ETHIOPIC SYLLABLE FI;Lo;0;L;;;;;N;;;;; 134B;ETHIOPIC SYLLABLE FAA;Lo;0;L;;;;;N;;;;; 134C;ETHIOPIC SYLLABLE FEE;Lo;0;L;;;;;N;;;;; 134D;ETHIOPIC SYLLABLE FE;Lo;0;L;;;;;N;;;;; 134E;ETHIOPIC SYLLABLE FO;Lo;0;L;;;;;N;;;;; 134F;ETHIOPIC SYLLABLE FWA;Lo;0;L;;;;;N;;;;; 1350;ETHIOPIC SYLLABLE PA;Lo;0;L;;;;;N;;;;; 1351;ETHIOPIC SYLLABLE PU;Lo;0;L;;;;;N;;;;; 1352;ETHIOPIC SYLLABLE PI;Lo;0;L;;;;;N;;;;; 1353;ETHIOPIC SYLLABLE PAA;Lo;0;L;;;;;N;;;;; 1354;ETHIOPIC SYLLABLE PEE;Lo;0;L;;;;;N;;;;; 1355;ETHIOPIC SYLLABLE PE;Lo;0;L;;;;;N;;;;; 1356;ETHIOPIC SYLLABLE PO;Lo;0;L;;;;;N;;;;; 1357;ETHIOPIC SYLLABLE PWA;Lo;0;L;;;;;N;;;;; 1358;ETHIOPIC SYLLABLE RYA;Lo;0;L;;;;;N;;;;; 1359;ETHIOPIC SYLLABLE MYA;Lo;0;L;;;;;N;;;;; 135A;ETHIOPIC SYLLABLE FYA;Lo;0;L;;;;;N;;;;; 135F;ETHIOPIC COMBINING GEMINATION MARK;Mn;230;NSM;;;;;N;;;;; 1360;ETHIOPIC SECTION MARK;So;0;L;;;;;N;;;;; 1361;ETHIOPIC WORDSPACE;Po;0;L;;;;;N;;;;; 1362;ETHIOPIC FULL STOP;Po;0;L;;;;;N;;;;; 1363;ETHIOPIC COMMA;Po;0;L;;;;;N;;;;; 1364;ETHIOPIC SEMICOLON;Po;0;L;;;;;N;;;;; 1365;ETHIOPIC COLON;Po;0;L;;;;;N;;;;; 1366;ETHIOPIC PREFACE COLON;Po;0;L;;;;;N;;;;; 1367;ETHIOPIC QUESTION MARK;Po;0;L;;;;;N;;;;; 1368;ETHIOPIC PARAGRAPH SEPARATOR;Po;0;L;;;;;N;;;;; 1369;ETHIOPIC DIGIT ONE;No;0;L;;;1;1;N;;;;; 136A;ETHIOPIC DIGIT TWO;No;0;L;;;2;2;N;;;;; 136B;ETHIOPIC DIGIT THREE;No;0;L;;;3;3;N;;;;; 136C;ETHIOPIC DIGIT FOUR;No;0;L;;;4;4;N;;;;; 136D;ETHIOPIC DIGIT FIVE;No;0;L;;;5;5;N;;;;; 136E;ETHIOPIC DIGIT SIX;No;0;L;;;6;6;N;;;;; 136F;ETHIOPIC DIGIT SEVEN;No;0;L;;;7;7;N;;;;; 1370;ETHIOPIC DIGIT EIGHT;No;0;L;;;8;8;N;;;;; 1371;ETHIOPIC DIGIT NINE;No;0;L;;;9;9;N;;;;; 1372;ETHIOPIC NUMBER TEN;No;0;L;;;;10;N;;;;; 1373;ETHIOPIC NUMBER TWENTY;No;0;L;;;;20;N;;;;; 1374;ETHIOPIC NUMBER THIRTY;No;0;L;;;;30;N;;;;; 1375;ETHIOPIC NUMBER FORTY;No;0;L;;;;40;N;;;;; 1376;ETHIOPIC NUMBER FIFTY;No;0;L;;;;50;N;;;;; 1377;ETHIOPIC NUMBER SIXTY;No;0;L;;;;60;N;;;;; 1378;ETHIOPIC NUMBER SEVENTY;No;0;L;;;;70;N;;;;; 1379;ETHIOPIC NUMBER EIGHTY;No;0;L;;;;80;N;;;;; 137A;ETHIOPIC NUMBER NINETY;No;0;L;;;;90;N;;;;; 137B;ETHIOPIC NUMBER HUNDRED;No;0;L;;;;100;N;;;;; 137C;ETHIOPIC NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; 1380;ETHIOPIC SYLLABLE SEBATBEIT MWA;Lo;0;L;;;;;N;;;;; 1381;ETHIOPIC SYLLABLE MWI;Lo;0;L;;;;;N;;;;; 1382;ETHIOPIC SYLLABLE MWEE;Lo;0;L;;;;;N;;;;; 1383;ETHIOPIC SYLLABLE MWE;Lo;0;L;;;;;N;;;;; 1384;ETHIOPIC SYLLABLE SEBATBEIT BWA;Lo;0;L;;;;;N;;;;; 1385;ETHIOPIC SYLLABLE BWI;Lo;0;L;;;;;N;;;;; 1386;ETHIOPIC SYLLABLE BWEE;Lo;0;L;;;;;N;;;;; 1387;ETHIOPIC SYLLABLE BWE;Lo;0;L;;;;;N;;;;; 1388;ETHIOPIC SYLLABLE SEBATBEIT FWA;Lo;0;L;;;;;N;;;;; 1389;ETHIOPIC SYLLABLE FWI;Lo;0;L;;;;;N;;;;; 138A;ETHIOPIC SYLLABLE FWEE;Lo;0;L;;;;;N;;;;; 138B;ETHIOPIC SYLLABLE FWE;Lo;0;L;;;;;N;;;;; 138C;ETHIOPIC SYLLABLE SEBATBEIT PWA;Lo;0;L;;;;;N;;;;; 138D;ETHIOPIC SYLLABLE PWI;Lo;0;L;;;;;N;;;;; 138E;ETHIOPIC SYLLABLE PWEE;Lo;0;L;;;;;N;;;;; 138F;ETHIOPIC SYLLABLE PWE;Lo;0;L;;;;;N;;;;; 1390;ETHIOPIC TONAL MARK YIZET;So;0;ON;;;;;N;;;;; 1391;ETHIOPIC TONAL MARK DERET;So;0;ON;;;;;N;;;;; 1392;ETHIOPIC TONAL MARK RIKRIK;So;0;ON;;;;;N;;;;; 1393;ETHIOPIC TONAL MARK SHORT RIKRIK;So;0;ON;;;;;N;;;;; 1394;ETHIOPIC TONAL MARK DIFAT;So;0;ON;;;;;N;;;;; 1395;ETHIOPIC TONAL MARK KENAT;So;0;ON;;;;;N;;;;; 1396;ETHIOPIC TONAL MARK CHIRET;So;0;ON;;;;;N;;;;; 1397;ETHIOPIC TONAL MARK HIDET;So;0;ON;;;;;N;;;;; 1398;ETHIOPIC TONAL MARK DERET-HIDET;So;0;ON;;;;;N;;;;; 1399;ETHIOPIC TONAL MARK KURT;So;0;ON;;;;;N;;;;; 13A0;CHEROKEE LETTER A;Lo;0;L;;;;;N;;;;; 13A1;CHEROKEE LETTER E;Lo;0;L;;;;;N;;;;; 13A2;CHEROKEE LETTER I;Lo;0;L;;;;;N;;;;; 13A3;CHEROKEE LETTER O;Lo;0;L;;;;;N;;;;; 13A4;CHEROKEE LETTER U;Lo;0;L;;;;;N;;;;; 13A5;CHEROKEE LETTER V;Lo;0;L;;;;;N;;;;; 13A6;CHEROKEE LETTER GA;Lo;0;L;;;;;N;;;;; 13A7;CHEROKEE LETTER KA;Lo;0;L;;;;;N;;;;; 13A8;CHEROKEE LETTER GE;Lo;0;L;;;;;N;;;;; 13A9;CHEROKEE LETTER GI;Lo;0;L;;;;;N;;;;; 13AA;CHEROKEE LETTER GO;Lo;0;L;;;;;N;;;;; 13AB;CHEROKEE LETTER GU;Lo;0;L;;;;;N;;;;; 13AC;CHEROKEE LETTER GV;Lo;0;L;;;;;N;;;;; 13AD;CHEROKEE LETTER HA;Lo;0;L;;;;;N;;;;; 13AE;CHEROKEE LETTER HE;Lo;0;L;;;;;N;;;;; 13AF;CHEROKEE LETTER HI;Lo;0;L;;;;;N;;;;; 13B0;CHEROKEE LETTER HO;Lo;0;L;;;;;N;;;;; 13B1;CHEROKEE LETTER HU;Lo;0;L;;;;;N;;;;; 13B2;CHEROKEE LETTER HV;Lo;0;L;;;;;N;;;;; 13B3;CHEROKEE LETTER LA;Lo;0;L;;;;;N;;;;; 13B4;CHEROKEE LETTER LE;Lo;0;L;;;;;N;;;;; 13B5;CHEROKEE LETTER LI;Lo;0;L;;;;;N;;;;; 13B6;CHEROKEE LETTER LO;Lo;0;L;;;;;N;;;;; 13B7;CHEROKEE LETTER LU;Lo;0;L;;;;;N;;;;; 13B8;CHEROKEE LETTER LV;Lo;0;L;;;;;N;;;;; 13B9;CHEROKEE LETTER MA;Lo;0;L;;;;;N;;;;; 13BA;CHEROKEE LETTER ME;Lo;0;L;;;;;N;;;;; 13BB;CHEROKEE LETTER MI;Lo;0;L;;;;;N;;;;; 13BC;CHEROKEE LETTER MO;Lo;0;L;;;;;N;;;;; 13BD;CHEROKEE LETTER MU;Lo;0;L;;;;;N;;;;; 13BE;CHEROKEE LETTER NA;Lo;0;L;;;;;N;;;;; 13BF;CHEROKEE LETTER HNA;Lo;0;L;;;;;N;;;;; 13C0;CHEROKEE LETTER NAH;Lo;0;L;;;;;N;;;;; 13C1;CHEROKEE LETTER NE;Lo;0;L;;;;;N;;;;; 13C2;CHEROKEE LETTER NI;Lo;0;L;;;;;N;;;;; 13C3;CHEROKEE LETTER NO;Lo;0;L;;;;;N;;;;; 13C4;CHEROKEE LETTER NU;Lo;0;L;;;;;N;;;;; 13C5;CHEROKEE LETTER NV;Lo;0;L;;;;;N;;;;; 13C6;CHEROKEE LETTER QUA;Lo;0;L;;;;;N;;;;; 13C7;CHEROKEE LETTER QUE;Lo;0;L;;;;;N;;;;; 13C8;CHEROKEE LETTER QUI;Lo;0;L;;;;;N;;;;; 13C9;CHEROKEE LETTER QUO;Lo;0;L;;;;;N;;;;; 13CA;CHEROKEE LETTER QUU;Lo;0;L;;;;;N;;;;; 13CB;CHEROKEE LETTER QUV;Lo;0;L;;;;;N;;;;; 13CC;CHEROKEE LETTER SA;Lo;0;L;;;;;N;;;;; 13CD;CHEROKEE LETTER S;Lo;0;L;;;;;N;;;;; 13CE;CHEROKEE LETTER SE;Lo;0;L;;;;;N;;;;; 13CF;CHEROKEE LETTER SI;Lo;0;L;;;;;N;;;;; 13D0;CHEROKEE LETTER SO;Lo;0;L;;;;;N;;;;; 13D1;CHEROKEE LETTER SU;Lo;0;L;;;;;N;;;;; 13D2;CHEROKEE LETTER SV;Lo;0;L;;;;;N;;;;; 13D3;CHEROKEE LETTER DA;Lo;0;L;;;;;N;;;;; 13D4;CHEROKEE LETTER TA;Lo;0;L;;;;;N;;;;; 13D5;CHEROKEE LETTER DE;Lo;0;L;;;;;N;;;;; 13D6;CHEROKEE LETTER TE;Lo;0;L;;;;;N;;;;; 13D7;CHEROKEE LETTER DI;Lo;0;L;;;;;N;;;;; 13D8;CHEROKEE LETTER TI;Lo;0;L;;;;;N;;;;; 13D9;CHEROKEE LETTER DO;Lo;0;L;;;;;N;;;;; 13DA;CHEROKEE LETTER DU;Lo;0;L;;;;;N;;;;; 13DB;CHEROKEE LETTER DV;Lo;0;L;;;;;N;;;;; 13DC;CHEROKEE LETTER DLA;Lo;0;L;;;;;N;;;;; 13DD;CHEROKEE LETTER TLA;Lo;0;L;;;;;N;;;;; 13DE;CHEROKEE LETTER TLE;Lo;0;L;;;;;N;;;;; 13DF;CHEROKEE LETTER TLI;Lo;0;L;;;;;N;;;;; 13E0;CHEROKEE LETTER TLO;Lo;0;L;;;;;N;;;;; 13E1;CHEROKEE LETTER TLU;Lo;0;L;;;;;N;;;;; 13E2;CHEROKEE LETTER TLV;Lo;0;L;;;;;N;;;;; 13E3;CHEROKEE LETTER TSA;Lo;0;L;;;;;N;;;;; 13E4;CHEROKEE LETTER TSE;Lo;0;L;;;;;N;;;;; 13E5;CHEROKEE LETTER TSI;Lo;0;L;;;;;N;;;;; 13E6;CHEROKEE LETTER TSO;Lo;0;L;;;;;N;;;;; 13E7;CHEROKEE LETTER TSU;Lo;0;L;;;;;N;;;;; 13E8;CHEROKEE LETTER TSV;Lo;0;L;;;;;N;;;;; 13E9;CHEROKEE LETTER WA;Lo;0;L;;;;;N;;;;; 13EA;CHEROKEE LETTER WE;Lo;0;L;;;;;N;;;;; 13EB;CHEROKEE LETTER WI;Lo;0;L;;;;;N;;;;; 13EC;CHEROKEE LETTER WO;Lo;0;L;;;;;N;;;;; 13ED;CHEROKEE LETTER WU;Lo;0;L;;;;;N;;;;; 13EE;CHEROKEE LETTER WV;Lo;0;L;;;;;N;;;;; 13EF;CHEROKEE LETTER YA;Lo;0;L;;;;;N;;;;; 13F0;CHEROKEE LETTER YE;Lo;0;L;;;;;N;;;;; 13F1;CHEROKEE LETTER YI;Lo;0;L;;;;;N;;;;; 13F2;CHEROKEE LETTER YO;Lo;0;L;;;;;N;;;;; 13F3;CHEROKEE LETTER YU;Lo;0;L;;;;;N;;;;; 13F4;CHEROKEE LETTER YV;Lo;0;L;;;;;N;;;;; 1401;CANADIAN SYLLABICS E;Lo;0;L;;;;;N;;;;; 1402;CANADIAN SYLLABICS AAI;Lo;0;L;;;;;N;;;;; 1403;CANADIAN SYLLABICS I;Lo;0;L;;;;;N;;;;; 1404;CANADIAN SYLLABICS II;Lo;0;L;;;;;N;;;;; 1405;CANADIAN SYLLABICS O;Lo;0;L;;;;;N;;;;; 1406;CANADIAN SYLLABICS OO;Lo;0;L;;;;;N;;;;; 1407;CANADIAN SYLLABICS Y-CREE OO;Lo;0;L;;;;;N;;;;; 1408;CANADIAN SYLLABICS CARRIER EE;Lo;0;L;;;;;N;;;;; 1409;CANADIAN SYLLABICS CARRIER I;Lo;0;L;;;;;N;;;;; 140A;CANADIAN SYLLABICS A;Lo;0;L;;;;;N;;;;; 140B;CANADIAN SYLLABICS AA;Lo;0;L;;;;;N;;;;; 140C;CANADIAN SYLLABICS WE;Lo;0;L;;;;;N;;;;; 140D;CANADIAN SYLLABICS WEST-CREE WE;Lo;0;L;;;;;N;;;;; 140E;CANADIAN SYLLABICS WI;Lo;0;L;;;;;N;;;;; 140F;CANADIAN SYLLABICS WEST-CREE WI;Lo;0;L;;;;;N;;;;; 1410;CANADIAN SYLLABICS WII;Lo;0;L;;;;;N;;;;; 1411;CANADIAN SYLLABICS WEST-CREE WII;Lo;0;L;;;;;N;;;;; 1412;CANADIAN SYLLABICS WO;Lo;0;L;;;;;N;;;;; 1413;CANADIAN SYLLABICS WEST-CREE WO;Lo;0;L;;;;;N;;;;; 1414;CANADIAN SYLLABICS WOO;Lo;0;L;;;;;N;;;;; 1415;CANADIAN SYLLABICS WEST-CREE WOO;Lo;0;L;;;;;N;;;;; 1416;CANADIAN SYLLABICS NASKAPI WOO;Lo;0;L;;;;;N;;;;; 1417;CANADIAN SYLLABICS WA;Lo;0;L;;;;;N;;;;; 1418;CANADIAN SYLLABICS WEST-CREE WA;Lo;0;L;;;;;N;;;;; 1419;CANADIAN SYLLABICS WAA;Lo;0;L;;;;;N;;;;; 141A;CANADIAN SYLLABICS WEST-CREE WAA;Lo;0;L;;;;;N;;;;; 141B;CANADIAN SYLLABICS NASKAPI WAA;Lo;0;L;;;;;N;;;;; 141C;CANADIAN SYLLABICS AI;Lo;0;L;;;;;N;;;;; 141D;CANADIAN SYLLABICS Y-CREE W;Lo;0;L;;;;;N;;;;; 141E;CANADIAN SYLLABICS GLOTTAL STOP;Lo;0;L;;;;;N;;;;; 141F;CANADIAN SYLLABICS FINAL ACUTE;Lo;0;L;;;;;N;;;;; 1420;CANADIAN SYLLABICS FINAL GRAVE;Lo;0;L;;;;;N;;;;; 1421;CANADIAN SYLLABICS FINAL BOTTOM HALF RING;Lo;0;L;;;;;N;;;;; 1422;CANADIAN SYLLABICS FINAL TOP HALF RING;Lo;0;L;;;;;N;;;;; 1423;CANADIAN SYLLABICS FINAL RIGHT HALF RING;Lo;0;L;;;;;N;;;;; 1424;CANADIAN SYLLABICS FINAL RING;Lo;0;L;;;;;N;;;;; 1425;CANADIAN SYLLABICS FINAL DOUBLE ACUTE;Lo;0;L;;;;;N;;;;; 1426;CANADIAN SYLLABICS FINAL DOUBLE SHORT VERTICAL STROKES;Lo;0;L;;;;;N;;;;; 1427;CANADIAN SYLLABICS FINAL MIDDLE DOT;Lo;0;L;;;;;N;;;;; 1428;CANADIAN SYLLABICS FINAL SHORT HORIZONTAL STROKE;Lo;0;L;;;;;N;;;;; 1429;CANADIAN SYLLABICS FINAL PLUS;Lo;0;L;;;;;N;;;;; 142A;CANADIAN SYLLABICS FINAL DOWN TACK;Lo;0;L;;;;;N;;;;; 142B;CANADIAN SYLLABICS EN;Lo;0;L;;;;;N;;;;; 142C;CANADIAN SYLLABICS IN;Lo;0;L;;;;;N;;;;; 142D;CANADIAN SYLLABICS ON;Lo;0;L;;;;;N;;;;; 142E;CANADIAN SYLLABICS AN;Lo;0;L;;;;;N;;;;; 142F;CANADIAN SYLLABICS PE;Lo;0;L;;;;;N;;;;; 1430;CANADIAN SYLLABICS PAAI;Lo;0;L;;;;;N;;;;; 1431;CANADIAN SYLLABICS PI;Lo;0;L;;;;;N;;;;; 1432;CANADIAN SYLLABICS PII;Lo;0;L;;;;;N;;;;; 1433;CANADIAN SYLLABICS PO;Lo;0;L;;;;;N;;;;; 1434;CANADIAN SYLLABICS POO;Lo;0;L;;;;;N;;;;; 1435;CANADIAN SYLLABICS Y-CREE POO;Lo;0;L;;;;;N;;;;; 1436;CANADIAN SYLLABICS CARRIER HEE;Lo;0;L;;;;;N;;;;; 1437;CANADIAN SYLLABICS CARRIER HI;Lo;0;L;;;;;N;;;;; 1438;CANADIAN SYLLABICS PA;Lo;0;L;;;;;N;;;;; 1439;CANADIAN SYLLABICS PAA;Lo;0;L;;;;;N;;;;; 143A;CANADIAN SYLLABICS PWE;Lo;0;L;;;;;N;;;;; 143B;CANADIAN SYLLABICS WEST-CREE PWE;Lo;0;L;;;;;N;;;;; 143C;CANADIAN SYLLABICS PWI;Lo;0;L;;;;;N;;;;; 143D;CANADIAN SYLLABICS WEST-CREE PWI;Lo;0;L;;;;;N;;;;; 143E;CANADIAN SYLLABICS PWII;Lo;0;L;;;;;N;;;;; 143F;CANADIAN SYLLABICS WEST-CREE PWII;Lo;0;L;;;;;N;;;;; 1440;CANADIAN SYLLABICS PWO;Lo;0;L;;;;;N;;;;; 1441;CANADIAN SYLLABICS WEST-CREE PWO;Lo;0;L;;;;;N;;;;; 1442;CANADIAN SYLLABICS PWOO;Lo;0;L;;;;;N;;;;; 1443;CANADIAN SYLLABICS WEST-CREE PWOO;Lo;0;L;;;;;N;;;;; 1444;CANADIAN SYLLABICS PWA;Lo;0;L;;;;;N;;;;; 1445;CANADIAN SYLLABICS WEST-CREE PWA;Lo;0;L;;;;;N;;;;; 1446;CANADIAN SYLLABICS PWAA;Lo;0;L;;;;;N;;;;; 1447;CANADIAN SYLLABICS WEST-CREE PWAA;Lo;0;L;;;;;N;;;;; 1448;CANADIAN SYLLABICS Y-CREE PWAA;Lo;0;L;;;;;N;;;;; 1449;CANADIAN SYLLABICS P;Lo;0;L;;;;;N;;;;; 144A;CANADIAN SYLLABICS WEST-CREE P;Lo;0;L;;;;;N;;;;; 144B;CANADIAN SYLLABICS CARRIER H;Lo;0;L;;;;;N;;;;; 144C;CANADIAN SYLLABICS TE;Lo;0;L;;;;;N;;;;; 144D;CANADIAN SYLLABICS TAAI;Lo;0;L;;;;;N;;;;; 144E;CANADIAN SYLLABICS TI;Lo;0;L;;;;;N;;;;; 144F;CANADIAN SYLLABICS TII;Lo;0;L;;;;;N;;;;; 1450;CANADIAN SYLLABICS TO;Lo;0;L;;;;;N;;;;; 1451;CANADIAN SYLLABICS TOO;Lo;0;L;;;;;N;;;;; 1452;CANADIAN SYLLABICS Y-CREE TOO;Lo;0;L;;;;;N;;;;; 1453;CANADIAN SYLLABICS CARRIER DEE;Lo;0;L;;;;;N;;;;; 1454;CANADIAN SYLLABICS CARRIER DI;Lo;0;L;;;;;N;;;;; 1455;CANADIAN SYLLABICS TA;Lo;0;L;;;;;N;;;;; 1456;CANADIAN SYLLABICS TAA;Lo;0;L;;;;;N;;;;; 1457;CANADIAN SYLLABICS TWE;Lo;0;L;;;;;N;;;;; 1458;CANADIAN SYLLABICS WEST-CREE TWE;Lo;0;L;;;;;N;;;;; 1459;CANADIAN SYLLABICS TWI;Lo;0;L;;;;;N;;;;; 145A;CANADIAN SYLLABICS WEST-CREE TWI;Lo;0;L;;;;;N;;;;; 145B;CANADIAN SYLLABICS TWII;Lo;0;L;;;;;N;;;;; 145C;CANADIAN SYLLABICS WEST-CREE TWII;Lo;0;L;;;;;N;;;;; 145D;CANADIAN SYLLABICS TWO;Lo;0;L;;;;;N;;;;; 145E;CANADIAN SYLLABICS WEST-CREE TWO;Lo;0;L;;;;;N;;;;; 145F;CANADIAN SYLLABICS TWOO;Lo;0;L;;;;;N;;;;; 1460;CANADIAN SYLLABICS WEST-CREE TWOO;Lo;0;L;;;;;N;;;;; 1461;CANADIAN SYLLABICS TWA;Lo;0;L;;;;;N;;;;; 1462;CANADIAN SYLLABICS WEST-CREE TWA;Lo;0;L;;;;;N;;;;; 1463;CANADIAN SYLLABICS TWAA;Lo;0;L;;;;;N;;;;; 1464;CANADIAN SYLLABICS WEST-CREE TWAA;Lo;0;L;;;;;N;;;;; 1465;CANADIAN SYLLABICS NASKAPI TWAA;Lo;0;L;;;;;N;;;;; 1466;CANADIAN SYLLABICS T;Lo;0;L;;;;;N;;;;; 1467;CANADIAN SYLLABICS TTE;Lo;0;L;;;;;N;;;;; 1468;CANADIAN SYLLABICS TTI;Lo;0;L;;;;;N;;;;; 1469;CANADIAN SYLLABICS TTO;Lo;0;L;;;;;N;;;;; 146A;CANADIAN SYLLABICS TTA;Lo;0;L;;;;;N;;;;; 146B;CANADIAN SYLLABICS KE;Lo;0;L;;;;;N;;;;; 146C;CANADIAN SYLLABICS KAAI;Lo;0;L;;;;;N;;;;; 146D;CANADIAN SYLLABICS KI;Lo;0;L;;;;;N;;;;; 146E;CANADIAN SYLLABICS KII;Lo;0;L;;;;;N;;;;; 146F;CANADIAN SYLLABICS KO;Lo;0;L;;;;;N;;;;; 1470;CANADIAN SYLLABICS KOO;Lo;0;L;;;;;N;;;;; 1471;CANADIAN SYLLABICS Y-CREE KOO;Lo;0;L;;;;;N;;;;; 1472;CANADIAN SYLLABICS KA;Lo;0;L;;;;;N;;;;; 1473;CANADIAN SYLLABICS KAA;Lo;0;L;;;;;N;;;;; 1474;CANADIAN SYLLABICS KWE;Lo;0;L;;;;;N;;;;; 1475;CANADIAN SYLLABICS WEST-CREE KWE;Lo;0;L;;;;;N;;;;; 1476;CANADIAN SYLLABICS KWI;Lo;0;L;;;;;N;;;;; 1477;CANADIAN SYLLABICS WEST-CREE KWI;Lo;0;L;;;;;N;;;;; 1478;CANADIAN SYLLABICS KWII;Lo;0;L;;;;;N;;;;; 1479;CANADIAN SYLLABICS WEST-CREE KWII;Lo;0;L;;;;;N;;;;; 147A;CANADIAN SYLLABICS KWO;Lo;0;L;;;;;N;;;;; 147B;CANADIAN SYLLABICS WEST-CREE KWO;Lo;0;L;;;;;N;;;;; 147C;CANADIAN SYLLABICS KWOO;Lo;0;L;;;;;N;;;;; 147D;CANADIAN SYLLABICS WEST-CREE KWOO;Lo;0;L;;;;;N;;;;; 147E;CANADIAN SYLLABICS KWA;Lo;0;L;;;;;N;;;;; 147F;CANADIAN SYLLABICS WEST-CREE KWA;Lo;0;L;;;;;N;;;;; 1480;CANADIAN SYLLABICS KWAA;Lo;0;L;;;;;N;;;;; 1481;CANADIAN SYLLABICS WEST-CREE KWAA;Lo;0;L;;;;;N;;;;; 1482;CANADIAN SYLLABICS NASKAPI KWAA;Lo;0;L;;;;;N;;;;; 1483;CANADIAN SYLLABICS K;Lo;0;L;;;;;N;;;;; 1484;CANADIAN SYLLABICS KW;Lo;0;L;;;;;N;;;;; 1485;CANADIAN SYLLABICS SOUTH-SLAVEY KEH;Lo;0;L;;;;;N;;;;; 1486;CANADIAN SYLLABICS SOUTH-SLAVEY KIH;Lo;0;L;;;;;N;;;;; 1487;CANADIAN SYLLABICS SOUTH-SLAVEY KOH;Lo;0;L;;;;;N;;;;; 1488;CANADIAN SYLLABICS SOUTH-SLAVEY KAH;Lo;0;L;;;;;N;;;;; 1489;CANADIAN SYLLABICS CE;Lo;0;L;;;;;N;;;;; 148A;CANADIAN SYLLABICS CAAI;Lo;0;L;;;;;N;;;;; 148B;CANADIAN SYLLABICS CI;Lo;0;L;;;;;N;;;;; 148C;CANADIAN SYLLABICS CII;Lo;0;L;;;;;N;;;;; 148D;CANADIAN SYLLABICS CO;Lo;0;L;;;;;N;;;;; 148E;CANADIAN SYLLABICS COO;Lo;0;L;;;;;N;;;;; 148F;CANADIAN SYLLABICS Y-CREE COO;Lo;0;L;;;;;N;;;;; 1490;CANADIAN SYLLABICS CA;Lo;0;L;;;;;N;;;;; 1491;CANADIAN SYLLABICS CAA;Lo;0;L;;;;;N;;;;; 1492;CANADIAN SYLLABICS CWE;Lo;0;L;;;;;N;;;;; 1493;CANADIAN SYLLABICS WEST-CREE CWE;Lo;0;L;;;;;N;;;;; 1494;CANADIAN SYLLABICS CWI;Lo;0;L;;;;;N;;;;; 1495;CANADIAN SYLLABICS WEST-CREE CWI;Lo;0;L;;;;;N;;;;; 1496;CANADIAN SYLLABICS CWII;Lo;0;L;;;;;N;;;;; 1497;CANADIAN SYLLABICS WEST-CREE CWII;Lo;0;L;;;;;N;;;;; 1498;CANADIAN SYLLABICS CWO;Lo;0;L;;;;;N;;;;; 1499;CANADIAN SYLLABICS WEST-CREE CWO;Lo;0;L;;;;;N;;;;; 149A;CANADIAN SYLLABICS CWOO;Lo;0;L;;;;;N;;;;; 149B;CANADIAN SYLLABICS WEST-CREE CWOO;Lo;0;L;;;;;N;;;;; 149C;CANADIAN SYLLABICS CWA;Lo;0;L;;;;;N;;;;; 149D;CANADIAN SYLLABICS WEST-CREE CWA;Lo;0;L;;;;;N;;;;; 149E;CANADIAN SYLLABICS CWAA;Lo;0;L;;;;;N;;;;; 149F;CANADIAN SYLLABICS WEST-CREE CWAA;Lo;0;L;;;;;N;;;;; 14A0;CANADIAN SYLLABICS NASKAPI CWAA;Lo;0;L;;;;;N;;;;; 14A1;CANADIAN SYLLABICS C;Lo;0;L;;;;;N;;;;; 14A2;CANADIAN SYLLABICS SAYISI TH;Lo;0;L;;;;;N;;;;; 14A3;CANADIAN SYLLABICS ME;Lo;0;L;;;;;N;;;;; 14A4;CANADIAN SYLLABICS MAAI;Lo;0;L;;;;;N;;;;; 14A5;CANADIAN SYLLABICS MI;Lo;0;L;;;;;N;;;;; 14A6;CANADIAN SYLLABICS MII;Lo;0;L;;;;;N;;;;; 14A7;CANADIAN SYLLABICS MO;Lo;0;L;;;;;N;;;;; 14A8;CANADIAN SYLLABICS MOO;Lo;0;L;;;;;N;;;;; 14A9;CANADIAN SYLLABICS Y-CREE MOO;Lo;0;L;;;;;N;;;;; 14AA;CANADIAN SYLLABICS MA;Lo;0;L;;;;;N;;;;; 14AB;CANADIAN SYLLABICS MAA;Lo;0;L;;;;;N;;;;; 14AC;CANADIAN SYLLABICS MWE;Lo;0;L;;;;;N;;;;; 14AD;CANADIAN SYLLABICS WEST-CREE MWE;Lo;0;L;;;;;N;;;;; 14AE;CANADIAN SYLLABICS MWI;Lo;0;L;;;;;N;;;;; 14AF;CANADIAN SYLLABICS WEST-CREE MWI;Lo;0;L;;;;;N;;;;; 14B0;CANADIAN SYLLABICS MWII;Lo;0;L;;;;;N;;;;; 14B1;CANADIAN SYLLABICS WEST-CREE MWII;Lo;0;L;;;;;N;;;;; 14B2;CANADIAN SYLLABICS MWO;Lo;0;L;;;;;N;;;;; 14B3;CANADIAN SYLLABICS WEST-CREE MWO;Lo;0;L;;;;;N;;;;; 14B4;CANADIAN SYLLABICS MWOO;Lo;0;L;;;;;N;;;;; 14B5;CANADIAN SYLLABICS WEST-CREE MWOO;Lo;0;L;;;;;N;;;;; 14B6;CANADIAN SYLLABICS MWA;Lo;0;L;;;;;N;;;;; 14B7;CANADIAN SYLLABICS WEST-CREE MWA;Lo;0;L;;;;;N;;;;; 14B8;CANADIAN SYLLABICS MWAA;Lo;0;L;;;;;N;;;;; 14B9;CANADIAN SYLLABICS WEST-CREE MWAA;Lo;0;L;;;;;N;;;;; 14BA;CANADIAN SYLLABICS NASKAPI MWAA;Lo;0;L;;;;;N;;;;; 14BB;CANADIAN SYLLABICS M;Lo;0;L;;;;;N;;;;; 14BC;CANADIAN SYLLABICS WEST-CREE M;Lo;0;L;;;;;N;;;;; 14BD;CANADIAN SYLLABICS MH;Lo;0;L;;;;;N;;;;; 14BE;CANADIAN SYLLABICS ATHAPASCAN M;Lo;0;L;;;;;N;;;;; 14BF;CANADIAN SYLLABICS SAYISI M;Lo;0;L;;;;;N;;;;; 14C0;CANADIAN SYLLABICS NE;Lo;0;L;;;;;N;;;;; 14C1;CANADIAN SYLLABICS NAAI;Lo;0;L;;;;;N;;;;; 14C2;CANADIAN SYLLABICS NI;Lo;0;L;;;;;N;;;;; 14C3;CANADIAN SYLLABICS NII;Lo;0;L;;;;;N;;;;; 14C4;CANADIAN SYLLABICS NO;Lo;0;L;;;;;N;;;;; 14C5;CANADIAN SYLLABICS NOO;Lo;0;L;;;;;N;;;;; 14C6;CANADIAN SYLLABICS Y-CREE NOO;Lo;0;L;;;;;N;;;;; 14C7;CANADIAN SYLLABICS NA;Lo;0;L;;;;;N;;;;; 14C8;CANADIAN SYLLABICS NAA;Lo;0;L;;;;;N;;;;; 14C9;CANADIAN SYLLABICS NWE;Lo;0;L;;;;;N;;;;; 14CA;CANADIAN SYLLABICS WEST-CREE NWE;Lo;0;L;;;;;N;;;;; 14CB;CANADIAN SYLLABICS NWA;Lo;0;L;;;;;N;;;;; 14CC;CANADIAN SYLLABICS WEST-CREE NWA;Lo;0;L;;;;;N;;;;; 14CD;CANADIAN SYLLABICS NWAA;Lo;0;L;;;;;N;;;;; 14CE;CANADIAN SYLLABICS WEST-CREE NWAA;Lo;0;L;;;;;N;;;;; 14CF;CANADIAN SYLLABICS NASKAPI NWAA;Lo;0;L;;;;;N;;;;; 14D0;CANADIAN SYLLABICS N;Lo;0;L;;;;;N;;;;; 14D1;CANADIAN SYLLABICS CARRIER NG;Lo;0;L;;;;;N;;;;; 14D2;CANADIAN SYLLABICS NH;Lo;0;L;;;;;N;;;;; 14D3;CANADIAN SYLLABICS LE;Lo;0;L;;;;;N;;;;; 14D4;CANADIAN SYLLABICS LAAI;Lo;0;L;;;;;N;;;;; 14D5;CANADIAN SYLLABICS LI;Lo;0;L;;;;;N;;;;; 14D6;CANADIAN SYLLABICS LII;Lo;0;L;;;;;N;;;;; 14D7;CANADIAN SYLLABICS LO;Lo;0;L;;;;;N;;;;; 14D8;CANADIAN SYLLABICS LOO;Lo;0;L;;;;;N;;;;; 14D9;CANADIAN SYLLABICS Y-CREE LOO;Lo;0;L;;;;;N;;;;; 14DA;CANADIAN SYLLABICS LA;Lo;0;L;;;;;N;;;;; 14DB;CANADIAN SYLLABICS LAA;Lo;0;L;;;;;N;;;;; 14DC;CANADIAN SYLLABICS LWE;Lo;0;L;;;;;N;;;;; 14DD;CANADIAN SYLLABICS WEST-CREE LWE;Lo;0;L;;;;;N;;;;; 14DE;CANADIAN SYLLABICS LWI;Lo;0;L;;;;;N;;;;; 14DF;CANADIAN SYLLABICS WEST-CREE LWI;Lo;0;L;;;;;N;;;;; 14E0;CANADIAN SYLLABICS LWII;Lo;0;L;;;;;N;;;;; 14E1;CANADIAN SYLLABICS WEST-CREE LWII;Lo;0;L;;;;;N;;;;; 14E2;CANADIAN SYLLABICS LWO;Lo;0;L;;;;;N;;;;; 14E3;CANADIAN SYLLABICS WEST-CREE LWO;Lo;0;L;;;;;N;;;;; 14E4;CANADIAN SYLLABICS LWOO;Lo;0;L;;;;;N;;;;; 14E5;CANADIAN SYLLABICS WEST-CREE LWOO;Lo;0;L;;;;;N;;;;; 14E6;CANADIAN SYLLABICS LWA;Lo;0;L;;;;;N;;;;; 14E7;CANADIAN SYLLABICS WEST-CREE LWA;Lo;0;L;;;;;N;;;;; 14E8;CANADIAN SYLLABICS LWAA;Lo;0;L;;;;;N;;;;; 14E9;CANADIAN SYLLABICS WEST-CREE LWAA;Lo;0;L;;;;;N;;;;; 14EA;CANADIAN SYLLABICS L;Lo;0;L;;;;;N;;;;; 14EB;CANADIAN SYLLABICS WEST-CREE L;Lo;0;L;;;;;N;;;;; 14EC;CANADIAN SYLLABICS MEDIAL L;Lo;0;L;;;;;N;;;;; 14ED;CANADIAN SYLLABICS SE;Lo;0;L;;;;;N;;;;; 14EE;CANADIAN SYLLABICS SAAI;Lo;0;L;;;;;N;;;;; 14EF;CANADIAN SYLLABICS SI;Lo;0;L;;;;;N;;;;; 14F0;CANADIAN SYLLABICS SII;Lo;0;L;;;;;N;;;;; 14F1;CANADIAN SYLLABICS SO;Lo;0;L;;;;;N;;;;; 14F2;CANADIAN SYLLABICS SOO;Lo;0;L;;;;;N;;;;; 14F3;CANADIAN SYLLABICS Y-CREE SOO;Lo;0;L;;;;;N;;;;; 14F4;CANADIAN SYLLABICS SA;Lo;0;L;;;;;N;;;;; 14F5;CANADIAN SYLLABICS SAA;Lo;0;L;;;;;N;;;;; 14F6;CANADIAN SYLLABICS SWE;Lo;0;L;;;;;N;;;;; 14F7;CANADIAN SYLLABICS WEST-CREE SWE;Lo;0;L;;;;;N;;;;; 14F8;CANADIAN SYLLABICS SWI;Lo;0;L;;;;;N;;;;; 14F9;CANADIAN SYLLABICS WEST-CREE SWI;Lo;0;L;;;;;N;;;;; 14FA;CANADIAN SYLLABICS SWII;Lo;0;L;;;;;N;;;;; 14FB;CANADIAN SYLLABICS WEST-CREE SWII;Lo;0;L;;;;;N;;;;; 14FC;CANADIAN SYLLABICS SWO;Lo;0;L;;;;;N;;;;; 14FD;CANADIAN SYLLABICS WEST-CREE SWO;Lo;0;L;;;;;N;;;;; 14FE;CANADIAN SYLLABICS SWOO;Lo;0;L;;;;;N;;;;; 14FF;CANADIAN SYLLABICS WEST-CREE SWOO;Lo;0;L;;;;;N;;;;; 1500;CANADIAN SYLLABICS SWA;Lo;0;L;;;;;N;;;;; 1501;CANADIAN SYLLABICS WEST-CREE SWA;Lo;0;L;;;;;N;;;;; 1502;CANADIAN SYLLABICS SWAA;Lo;0;L;;;;;N;;;;; 1503;CANADIAN SYLLABICS WEST-CREE SWAA;Lo;0;L;;;;;N;;;;; 1504;CANADIAN SYLLABICS NASKAPI SWAA;Lo;0;L;;;;;N;;;;; 1505;CANADIAN SYLLABICS S;Lo;0;L;;;;;N;;;;; 1506;CANADIAN SYLLABICS ATHAPASCAN S;Lo;0;L;;;;;N;;;;; 1507;CANADIAN SYLLABICS SW;Lo;0;L;;;;;N;;;;; 1508;CANADIAN SYLLABICS BLACKFOOT S;Lo;0;L;;;;;N;;;;; 1509;CANADIAN SYLLABICS MOOSE-CREE SK;Lo;0;L;;;;;N;;;;; 150A;CANADIAN SYLLABICS NASKAPI SKW;Lo;0;L;;;;;N;;;;; 150B;CANADIAN SYLLABICS NASKAPI S-W;Lo;0;L;;;;;N;;;;; 150C;CANADIAN SYLLABICS NASKAPI SPWA;Lo;0;L;;;;;N;;;;; 150D;CANADIAN SYLLABICS NASKAPI STWA;Lo;0;L;;;;;N;;;;; 150E;CANADIAN SYLLABICS NASKAPI SKWA;Lo;0;L;;;;;N;;;;; 150F;CANADIAN SYLLABICS NASKAPI SCWA;Lo;0;L;;;;;N;;;;; 1510;CANADIAN SYLLABICS SHE;Lo;0;L;;;;;N;;;;; 1511;CANADIAN SYLLABICS SHI;Lo;0;L;;;;;N;;;;; 1512;CANADIAN SYLLABICS SHII;Lo;0;L;;;;;N;;;;; 1513;CANADIAN SYLLABICS SHO;Lo;0;L;;;;;N;;;;; 1514;CANADIAN SYLLABICS SHOO;Lo;0;L;;;;;N;;;;; 1515;CANADIAN SYLLABICS SHA;Lo;0;L;;;;;N;;;;; 1516;CANADIAN SYLLABICS SHAA;Lo;0;L;;;;;N;;;;; 1517;CANADIAN SYLLABICS SHWE;Lo;0;L;;;;;N;;;;; 1518;CANADIAN SYLLABICS WEST-CREE SHWE;Lo;0;L;;;;;N;;;;; 1519;CANADIAN SYLLABICS SHWI;Lo;0;L;;;;;N;;;;; 151A;CANADIAN SYLLABICS WEST-CREE SHWI;Lo;0;L;;;;;N;;;;; 151B;CANADIAN SYLLABICS SHWII;Lo;0;L;;;;;N;;;;; 151C;CANADIAN SYLLABICS WEST-CREE SHWII;Lo;0;L;;;;;N;;;;; 151D;CANADIAN SYLLABICS SHWO;Lo;0;L;;;;;N;;;;; 151E;CANADIAN SYLLABICS WEST-CREE SHWO;Lo;0;L;;;;;N;;;;; 151F;CANADIAN SYLLABICS SHWOO;Lo;0;L;;;;;N;;;;; 1520;CANADIAN SYLLABICS WEST-CREE SHWOO;Lo;0;L;;;;;N;;;;; 1521;CANADIAN SYLLABICS SHWA;Lo;0;L;;;;;N;;;;; 1522;CANADIAN SYLLABICS WEST-CREE SHWA;Lo;0;L;;;;;N;;;;; 1523;CANADIAN SYLLABICS SHWAA;Lo;0;L;;;;;N;;;;; 1524;CANADIAN SYLLABICS WEST-CREE SHWAA;Lo;0;L;;;;;N;;;;; 1525;CANADIAN SYLLABICS SH;Lo;0;L;;;;;N;;;;; 1526;CANADIAN SYLLABICS YE;Lo;0;L;;;;;N;;;;; 1527;CANADIAN SYLLABICS YAAI;Lo;0;L;;;;;N;;;;; 1528;CANADIAN SYLLABICS YI;Lo;0;L;;;;;N;;;;; 1529;CANADIAN SYLLABICS YII;Lo;0;L;;;;;N;;;;; 152A;CANADIAN SYLLABICS YO;Lo;0;L;;;;;N;;;;; 152B;CANADIAN SYLLABICS YOO;Lo;0;L;;;;;N;;;;; 152C;CANADIAN SYLLABICS Y-CREE YOO;Lo;0;L;;;;;N;;;;; 152D;CANADIAN SYLLABICS YA;Lo;0;L;;;;;N;;;;; 152E;CANADIAN SYLLABICS YAA;Lo;0;L;;;;;N;;;;; 152F;CANADIAN SYLLABICS YWE;Lo;0;L;;;;;N;;;;; 1530;CANADIAN SYLLABICS WEST-CREE YWE;Lo;0;L;;;;;N;;;;; 1531;CANADIAN SYLLABICS YWI;Lo;0;L;;;;;N;;;;; 1532;CANADIAN SYLLABICS WEST-CREE YWI;Lo;0;L;;;;;N;;;;; 1533;CANADIAN SYLLABICS YWII;Lo;0;L;;;;;N;;;;; 1534;CANADIAN SYLLABICS WEST-CREE YWII;Lo;0;L;;;;;N;;;;; 1535;CANADIAN SYLLABICS YWO;Lo;0;L;;;;;N;;;;; 1536;CANADIAN SYLLABICS WEST-CREE YWO;Lo;0;L;;;;;N;;;;; 1537;CANADIAN SYLLABICS YWOO;Lo;0;L;;;;;N;;;;; 1538;CANADIAN SYLLABICS WEST-CREE YWOO;Lo;0;L;;;;;N;;;;; 1539;CANADIAN SYLLABICS YWA;Lo;0;L;;;;;N;;;;; 153A;CANADIAN SYLLABICS WEST-CREE YWA;Lo;0;L;;;;;N;;;;; 153B;CANADIAN SYLLABICS YWAA;Lo;0;L;;;;;N;;;;; 153C;CANADIAN SYLLABICS WEST-CREE YWAA;Lo;0;L;;;;;N;;;;; 153D;CANADIAN SYLLABICS NASKAPI YWAA;Lo;0;L;;;;;N;;;;; 153E;CANADIAN SYLLABICS Y;Lo;0;L;;;;;N;;;;; 153F;CANADIAN SYLLABICS BIBLE-CREE Y;Lo;0;L;;;;;N;;;;; 1540;CANADIAN SYLLABICS WEST-CREE Y;Lo;0;L;;;;;N;;;;; 1541;CANADIAN SYLLABICS SAYISI YI;Lo;0;L;;;;;N;;;;; 1542;CANADIAN SYLLABICS RE;Lo;0;L;;;;;N;;;;; 1543;CANADIAN SYLLABICS R-CREE RE;Lo;0;L;;;;;N;;;;; 1544;CANADIAN SYLLABICS WEST-CREE LE;Lo;0;L;;;;;N;;;;; 1545;CANADIAN SYLLABICS RAAI;Lo;0;L;;;;;N;;;;; 1546;CANADIAN SYLLABICS RI;Lo;0;L;;;;;N;;;;; 1547;CANADIAN SYLLABICS RII;Lo;0;L;;;;;N;;;;; 1548;CANADIAN SYLLABICS RO;Lo;0;L;;;;;N;;;;; 1549;CANADIAN SYLLABICS ROO;Lo;0;L;;;;;N;;;;; 154A;CANADIAN SYLLABICS WEST-CREE LO;Lo;0;L;;;;;N;;;;; 154B;CANADIAN SYLLABICS RA;Lo;0;L;;;;;N;;;;; 154C;CANADIAN SYLLABICS RAA;Lo;0;L;;;;;N;;;;; 154D;CANADIAN SYLLABICS WEST-CREE LA;Lo;0;L;;;;;N;;;;; 154E;CANADIAN SYLLABICS RWAA;Lo;0;L;;;;;N;;;;; 154F;CANADIAN SYLLABICS WEST-CREE RWAA;Lo;0;L;;;;;N;;;;; 1550;CANADIAN SYLLABICS R;Lo;0;L;;;;;N;;;;; 1551;CANADIAN SYLLABICS WEST-CREE R;Lo;0;L;;;;;N;;;;; 1552;CANADIAN SYLLABICS MEDIAL R;Lo;0;L;;;;;N;;;;; 1553;CANADIAN SYLLABICS FE;Lo;0;L;;;;;N;;;;; 1554;CANADIAN SYLLABICS FAAI;Lo;0;L;;;;;N;;;;; 1555;CANADIAN SYLLABICS FI;Lo;0;L;;;;;N;;;;; 1556;CANADIAN SYLLABICS FII;Lo;0;L;;;;;N;;;;; 1557;CANADIAN SYLLABICS FO;Lo;0;L;;;;;N;;;;; 1558;CANADIAN SYLLABICS FOO;Lo;0;L;;;;;N;;;;; 1559;CANADIAN SYLLABICS FA;Lo;0;L;;;;;N;;;;; 155A;CANADIAN SYLLABICS FAA;Lo;0;L;;;;;N;;;;; 155B;CANADIAN SYLLABICS FWAA;Lo;0;L;;;;;N;;;;; 155C;CANADIAN SYLLABICS WEST-CREE FWAA;Lo;0;L;;;;;N;;;;; 155D;CANADIAN SYLLABICS F;Lo;0;L;;;;;N;;;;; 155E;CANADIAN SYLLABICS THE;Lo;0;L;;;;;N;;;;; 155F;CANADIAN SYLLABICS N-CREE THE;Lo;0;L;;;;;N;;;;; 1560;CANADIAN SYLLABICS THI;Lo;0;L;;;;;N;;;;; 1561;CANADIAN SYLLABICS N-CREE THI;Lo;0;L;;;;;N;;;;; 1562;CANADIAN SYLLABICS THII;Lo;0;L;;;;;N;;;;; 1563;CANADIAN SYLLABICS N-CREE THII;Lo;0;L;;;;;N;;;;; 1564;CANADIAN SYLLABICS THO;Lo;0;L;;;;;N;;;;; 1565;CANADIAN SYLLABICS THOO;Lo;0;L;;;;;N;;;;; 1566;CANADIAN SYLLABICS THA;Lo;0;L;;;;;N;;;;; 1567;CANADIAN SYLLABICS THAA;Lo;0;L;;;;;N;;;;; 1568;CANADIAN SYLLABICS THWAA;Lo;0;L;;;;;N;;;;; 1569;CANADIAN SYLLABICS WEST-CREE THWAA;Lo;0;L;;;;;N;;;;; 156A;CANADIAN SYLLABICS TH;Lo;0;L;;;;;N;;;;; 156B;CANADIAN SYLLABICS TTHE;Lo;0;L;;;;;N;;;;; 156C;CANADIAN SYLLABICS TTHI;Lo;0;L;;;;;N;;;;; 156D;CANADIAN SYLLABICS TTHO;Lo;0;L;;;;;N;;;;; 156E;CANADIAN SYLLABICS TTHA;Lo;0;L;;;;;N;;;;; 156F;CANADIAN SYLLABICS TTH;Lo;0;L;;;;;N;;;;; 1570;CANADIAN SYLLABICS TYE;Lo;0;L;;;;;N;;;;; 1571;CANADIAN SYLLABICS TYI;Lo;0;L;;;;;N;;;;; 1572;CANADIAN SYLLABICS TYO;Lo;0;L;;;;;N;;;;; 1573;CANADIAN SYLLABICS TYA;Lo;0;L;;;;;N;;;;; 1574;CANADIAN SYLLABICS NUNAVIK HE;Lo;0;L;;;;;N;;;;; 1575;CANADIAN SYLLABICS NUNAVIK HI;Lo;0;L;;;;;N;;;;; 1576;CANADIAN SYLLABICS NUNAVIK HII;Lo;0;L;;;;;N;;;;; 1577;CANADIAN SYLLABICS NUNAVIK HO;Lo;0;L;;;;;N;;;;; 1578;CANADIAN SYLLABICS NUNAVIK HOO;Lo;0;L;;;;;N;;;;; 1579;CANADIAN SYLLABICS NUNAVIK HA;Lo;0;L;;;;;N;;;;; 157A;CANADIAN SYLLABICS NUNAVIK HAA;Lo;0;L;;;;;N;;;;; 157B;CANADIAN SYLLABICS NUNAVIK H;Lo;0;L;;;;;N;;;;; 157C;CANADIAN SYLLABICS NUNAVUT H;Lo;0;L;;;;;N;;;;; 157D;CANADIAN SYLLABICS HK;Lo;0;L;;;;;N;;;;; 157E;CANADIAN SYLLABICS QAAI;Lo;0;L;;;;;N;;;;; 157F;CANADIAN SYLLABICS QI;Lo;0;L;;;;;N;;;;; 1580;CANADIAN SYLLABICS QII;Lo;0;L;;;;;N;;;;; 1581;CANADIAN SYLLABICS QO;Lo;0;L;;;;;N;;;;; 1582;CANADIAN SYLLABICS QOO;Lo;0;L;;;;;N;;;;; 1583;CANADIAN SYLLABICS QA;Lo;0;L;;;;;N;;;;; 1584;CANADIAN SYLLABICS QAA;Lo;0;L;;;;;N;;;;; 1585;CANADIAN SYLLABICS Q;Lo;0;L;;;;;N;;;;; 1586;CANADIAN SYLLABICS TLHE;Lo;0;L;;;;;N;;;;; 1587;CANADIAN SYLLABICS TLHI;Lo;0;L;;;;;N;;;;; 1588;CANADIAN SYLLABICS TLHO;Lo;0;L;;;;;N;;;;; 1589;CANADIAN SYLLABICS TLHA;Lo;0;L;;;;;N;;;;; 158A;CANADIAN SYLLABICS WEST-CREE RE;Lo;0;L;;;;;N;;;;; 158B;CANADIAN SYLLABICS WEST-CREE RI;Lo;0;L;;;;;N;;;;; 158C;CANADIAN SYLLABICS WEST-CREE RO;Lo;0;L;;;;;N;;;;; 158D;CANADIAN SYLLABICS WEST-CREE RA;Lo;0;L;;;;;N;;;;; 158E;CANADIAN SYLLABICS NGAAI;Lo;0;L;;;;;N;;;;; 158F;CANADIAN SYLLABICS NGI;Lo;0;L;;;;;N;;;;; 1590;CANADIAN SYLLABICS NGII;Lo;0;L;;;;;N;;;;; 1591;CANADIAN SYLLABICS NGO;Lo;0;L;;;;;N;;;;; 1592;CANADIAN SYLLABICS NGOO;Lo;0;L;;;;;N;;;;; 1593;CANADIAN SYLLABICS NGA;Lo;0;L;;;;;N;;;;; 1594;CANADIAN SYLLABICS NGAA;Lo;0;L;;;;;N;;;;; 1595;CANADIAN SYLLABICS NG;Lo;0;L;;;;;N;;;;; 1596;CANADIAN SYLLABICS NNG;Lo;0;L;;;;;N;;;;; 1597;CANADIAN SYLLABICS SAYISI SHE;Lo;0;L;;;;;N;;;;; 1598;CANADIAN SYLLABICS SAYISI SHI;Lo;0;L;;;;;N;;;;; 1599;CANADIAN SYLLABICS SAYISI SHO;Lo;0;L;;;;;N;;;;; 159A;CANADIAN SYLLABICS SAYISI SHA;Lo;0;L;;;;;N;;;;; 159B;CANADIAN SYLLABICS WOODS-CREE THE;Lo;0;L;;;;;N;;;;; 159C;CANADIAN SYLLABICS WOODS-CREE THI;Lo;0;L;;;;;N;;;;; 159D;CANADIAN SYLLABICS WOODS-CREE THO;Lo;0;L;;;;;N;;;;; 159E;CANADIAN SYLLABICS WOODS-CREE THA;Lo;0;L;;;;;N;;;;; 159F;CANADIAN SYLLABICS WOODS-CREE TH;Lo;0;L;;;;;N;;;;; 15A0;CANADIAN SYLLABICS LHI;Lo;0;L;;;;;N;;;;; 15A1;CANADIAN SYLLABICS LHII;Lo;0;L;;;;;N;;;;; 15A2;CANADIAN SYLLABICS LHO;Lo;0;L;;;;;N;;;;; 15A3;CANADIAN SYLLABICS LHOO;Lo;0;L;;;;;N;;;;; 15A4;CANADIAN SYLLABICS LHA;Lo;0;L;;;;;N;;;;; 15A5;CANADIAN SYLLABICS LHAA;Lo;0;L;;;;;N;;;;; 15A6;CANADIAN SYLLABICS LH;Lo;0;L;;;;;N;;;;; 15A7;CANADIAN SYLLABICS TH-CREE THE;Lo;0;L;;;;;N;;;;; 15A8;CANADIAN SYLLABICS TH-CREE THI;Lo;0;L;;;;;N;;;;; 15A9;CANADIAN SYLLABICS TH-CREE THII;Lo;0;L;;;;;N;;;;; 15AA;CANADIAN SYLLABICS TH-CREE THO;Lo;0;L;;;;;N;;;;; 15AB;CANADIAN SYLLABICS TH-CREE THOO;Lo;0;L;;;;;N;;;;; 15AC;CANADIAN SYLLABICS TH-CREE THA;Lo;0;L;;;;;N;;;;; 15AD;CANADIAN SYLLABICS TH-CREE THAA;Lo;0;L;;;;;N;;;;; 15AE;CANADIAN SYLLABICS TH-CREE TH;Lo;0;L;;;;;N;;;;; 15AF;CANADIAN SYLLABICS AIVILIK B;Lo;0;L;;;;;N;;;;; 15B0;CANADIAN SYLLABICS BLACKFOOT E;Lo;0;L;;;;;N;;;;; 15B1;CANADIAN SYLLABICS BLACKFOOT I;Lo;0;L;;;;;N;;;;; 15B2;CANADIAN SYLLABICS BLACKFOOT O;Lo;0;L;;;;;N;;;;; 15B3;CANADIAN SYLLABICS BLACKFOOT A;Lo;0;L;;;;;N;;;;; 15B4;CANADIAN SYLLABICS BLACKFOOT WE;Lo;0;L;;;;;N;;;;; 15B5;CANADIAN SYLLABICS BLACKFOOT WI;Lo;0;L;;;;;N;;;;; 15B6;CANADIAN SYLLABICS BLACKFOOT WO;Lo;0;L;;;;;N;;;;; 15B7;CANADIAN SYLLABICS BLACKFOOT WA;Lo;0;L;;;;;N;;;;; 15B8;CANADIAN SYLLABICS BLACKFOOT NE;Lo;0;L;;;;;N;;;;; 15B9;CANADIAN SYLLABICS BLACKFOOT NI;Lo;0;L;;;;;N;;;;; 15BA;CANADIAN SYLLABICS BLACKFOOT NO;Lo;0;L;;;;;N;;;;; 15BB;CANADIAN SYLLABICS BLACKFOOT NA;Lo;0;L;;;;;N;;;;; 15BC;CANADIAN SYLLABICS BLACKFOOT KE;Lo;0;L;;;;;N;;;;; 15BD;CANADIAN SYLLABICS BLACKFOOT KI;Lo;0;L;;;;;N;;;;; 15BE;CANADIAN SYLLABICS BLACKFOOT KO;Lo;0;L;;;;;N;;;;; 15BF;CANADIAN SYLLABICS BLACKFOOT KA;Lo;0;L;;;;;N;;;;; 15C0;CANADIAN SYLLABICS SAYISI HE;Lo;0;L;;;;;N;;;;; 15C1;CANADIAN SYLLABICS SAYISI HI;Lo;0;L;;;;;N;;;;; 15C2;CANADIAN SYLLABICS SAYISI HO;Lo;0;L;;;;;N;;;;; 15C3;CANADIAN SYLLABICS SAYISI HA;Lo;0;L;;;;;N;;;;; 15C4;CANADIAN SYLLABICS CARRIER GHU;Lo;0;L;;;;;N;;;;; 15C5;CANADIAN SYLLABICS CARRIER GHO;Lo;0;L;;;;;N;;;;; 15C6;CANADIAN SYLLABICS CARRIER GHE;Lo;0;L;;;;;N;;;;; 15C7;CANADIAN SYLLABICS CARRIER GHEE;Lo;0;L;;;;;N;;;;; 15C8;CANADIAN SYLLABICS CARRIER GHI;Lo;0;L;;;;;N;;;;; 15C9;CANADIAN SYLLABICS CARRIER GHA;Lo;0;L;;;;;N;;;;; 15CA;CANADIAN SYLLABICS CARRIER RU;Lo;0;L;;;;;N;;;;; 15CB;CANADIAN SYLLABICS CARRIER RO;Lo;0;L;;;;;N;;;;; 15CC;CANADIAN SYLLABICS CARRIER RE;Lo;0;L;;;;;N;;;;; 15CD;CANADIAN SYLLABICS CARRIER REE;Lo;0;L;;;;;N;;;;; 15CE;CANADIAN SYLLABICS CARRIER RI;Lo;0;L;;;;;N;;;;; 15CF;CANADIAN SYLLABICS CARRIER RA;Lo;0;L;;;;;N;;;;; 15D0;CANADIAN SYLLABICS CARRIER WU;Lo;0;L;;;;;N;;;;; 15D1;CANADIAN SYLLABICS CARRIER WO;Lo;0;L;;;;;N;;;;; 15D2;CANADIAN SYLLABICS CARRIER WE;Lo;0;L;;;;;N;;;;; 15D3;CANADIAN SYLLABICS CARRIER WEE;Lo;0;L;;;;;N;;;;; 15D4;CANADIAN SYLLABICS CARRIER WI;Lo;0;L;;;;;N;;;;; 15D5;CANADIAN SYLLABICS CARRIER WA;Lo;0;L;;;;;N;;;;; 15D6;CANADIAN SYLLABICS CARRIER HWU;Lo;0;L;;;;;N;;;;; 15D7;CANADIAN SYLLABICS CARRIER HWO;Lo;0;L;;;;;N;;;;; 15D8;CANADIAN SYLLABICS CARRIER HWE;Lo;0;L;;;;;N;;;;; 15D9;CANADIAN SYLLABICS CARRIER HWEE;Lo;0;L;;;;;N;;;;; 15DA;CANADIAN SYLLABICS CARRIER HWI;Lo;0;L;;;;;N;;;;; 15DB;CANADIAN SYLLABICS CARRIER HWA;Lo;0;L;;;;;N;;;;; 15DC;CANADIAN SYLLABICS CARRIER THU;Lo;0;L;;;;;N;;;;; 15DD;CANADIAN SYLLABICS CARRIER THO;Lo;0;L;;;;;N;;;;; 15DE;CANADIAN SYLLABICS CARRIER THE;Lo;0;L;;;;;N;;;;; 15DF;CANADIAN SYLLABICS CARRIER THEE;Lo;0;L;;;;;N;;;;; 15E0;CANADIAN SYLLABICS CARRIER THI;Lo;0;L;;;;;N;;;;; 15E1;CANADIAN SYLLABICS CARRIER THA;Lo;0;L;;;;;N;;;;; 15E2;CANADIAN SYLLABICS CARRIER TTU;Lo;0;L;;;;;N;;;;; 15E3;CANADIAN SYLLABICS CARRIER TTO;Lo;0;L;;;;;N;;;;; 15E4;CANADIAN SYLLABICS CARRIER TTE;Lo;0;L;;;;;N;;;;; 15E5;CANADIAN SYLLABICS CARRIER TTEE;Lo;0;L;;;;;N;;;;; 15E6;CANADIAN SYLLABICS CARRIER TTI;Lo;0;L;;;;;N;;;;; 15E7;CANADIAN SYLLABICS CARRIER TTA;Lo;0;L;;;;;N;;;;; 15E8;CANADIAN SYLLABICS CARRIER PU;Lo;0;L;;;;;N;;;;; 15E9;CANADIAN SYLLABICS CARRIER PO;Lo;0;L;;;;;N;;;;; 15EA;CANADIAN SYLLABICS CARRIER PE;Lo;0;L;;;;;N;;;;; 15EB;CANADIAN SYLLABICS CARRIER PEE;Lo;0;L;;;;;N;;;;; 15EC;CANADIAN SYLLABICS CARRIER PI;Lo;0;L;;;;;N;;;;; 15ED;CANADIAN SYLLABICS CARRIER PA;Lo;0;L;;;;;N;;;;; 15EE;CANADIAN SYLLABICS CARRIER P;Lo;0;L;;;;;N;;;;; 15EF;CANADIAN SYLLABICS CARRIER GU;Lo;0;L;;;;;N;;;;; 15F0;CANADIAN SYLLABICS CARRIER GO;Lo;0;L;;;;;N;;;;; 15F1;CANADIAN SYLLABICS CARRIER GE;Lo;0;L;;;;;N;;;;; 15F2;CANADIAN SYLLABICS CARRIER GEE;Lo;0;L;;;;;N;;;;; 15F3;CANADIAN SYLLABICS CARRIER GI;Lo;0;L;;;;;N;;;;; 15F4;CANADIAN SYLLABICS CARRIER GA;Lo;0;L;;;;;N;;;;; 15F5;CANADIAN SYLLABICS CARRIER KHU;Lo;0;L;;;;;N;;;;; 15F6;CANADIAN SYLLABICS CARRIER KHO;Lo;0;L;;;;;N;;;;; 15F7;CANADIAN SYLLABICS CARRIER KHE;Lo;0;L;;;;;N;;;;; 15F8;CANADIAN SYLLABICS CARRIER KHEE;Lo;0;L;;;;;N;;;;; 15F9;CANADIAN SYLLABICS CARRIER KHI;Lo;0;L;;;;;N;;;;; 15FA;CANADIAN SYLLABICS CARRIER KHA;Lo;0;L;;;;;N;;;;; 15FB;CANADIAN SYLLABICS CARRIER KKU;Lo;0;L;;;;;N;;;;; 15FC;CANADIAN SYLLABICS CARRIER KKO;Lo;0;L;;;;;N;;;;; 15FD;CANADIAN SYLLABICS CARRIER KKE;Lo;0;L;;;;;N;;;;; 15FE;CANADIAN SYLLABICS CARRIER KKEE;Lo;0;L;;;;;N;;;;; 15FF;CANADIAN SYLLABICS CARRIER KKI;Lo;0;L;;;;;N;;;;; 1600;CANADIAN SYLLABICS CARRIER KKA;Lo;0;L;;;;;N;;;;; 1601;CANADIAN SYLLABICS CARRIER KK;Lo;0;L;;;;;N;;;;; 1602;CANADIAN SYLLABICS CARRIER NU;Lo;0;L;;;;;N;;;;; 1603;CANADIAN SYLLABICS CARRIER NO;Lo;0;L;;;;;N;;;;; 1604;CANADIAN SYLLABICS CARRIER NE;Lo;0;L;;;;;N;;;;; 1605;CANADIAN SYLLABICS CARRIER NEE;Lo;0;L;;;;;N;;;;; 1606;CANADIAN SYLLABICS CARRIER NI;Lo;0;L;;;;;N;;;;; 1607;CANADIAN SYLLABICS CARRIER NA;Lo;0;L;;;;;N;;;;; 1608;CANADIAN SYLLABICS CARRIER MU;Lo;0;L;;;;;N;;;;; 1609;CANADIAN SYLLABICS CARRIER MO;Lo;0;L;;;;;N;;;;; 160A;CANADIAN SYLLABICS CARRIER ME;Lo;0;L;;;;;N;;;;; 160B;CANADIAN SYLLABICS CARRIER MEE;Lo;0;L;;;;;N;;;;; 160C;CANADIAN SYLLABICS CARRIER MI;Lo;0;L;;;;;N;;;;; 160D;CANADIAN SYLLABICS CARRIER MA;Lo;0;L;;;;;N;;;;; 160E;CANADIAN SYLLABICS CARRIER YU;Lo;0;L;;;;;N;;;;; 160F;CANADIAN SYLLABICS CARRIER YO;Lo;0;L;;;;;N;;;;; 1610;CANADIAN SYLLABICS CARRIER YE;Lo;0;L;;;;;N;;;;; 1611;CANADIAN SYLLABICS CARRIER YEE;Lo;0;L;;;;;N;;;;; 1612;CANADIAN SYLLABICS CARRIER YI;Lo;0;L;;;;;N;;;;; 1613;CANADIAN SYLLABICS CARRIER YA;Lo;0;L;;;;;N;;;;; 1614;CANADIAN SYLLABICS CARRIER JU;Lo;0;L;;;;;N;;;;; 1615;CANADIAN SYLLABICS SAYISI JU;Lo;0;L;;;;;N;;;;; 1616;CANADIAN SYLLABICS CARRIER JO;Lo;0;L;;;;;N;;;;; 1617;CANADIAN SYLLABICS CARRIER JE;Lo;0;L;;;;;N;;;;; 1618;CANADIAN SYLLABICS CARRIER JEE;Lo;0;L;;;;;N;;;;; 1619;CANADIAN SYLLABICS CARRIER JI;Lo;0;L;;;;;N;;;;; 161A;CANADIAN SYLLABICS SAYISI JI;Lo;0;L;;;;;N;;;;; 161B;CANADIAN SYLLABICS CARRIER JA;Lo;0;L;;;;;N;;;;; 161C;CANADIAN SYLLABICS CARRIER JJU;Lo;0;L;;;;;N;;;;; 161D;CANADIAN SYLLABICS CARRIER JJO;Lo;0;L;;;;;N;;;;; 161E;CANADIAN SYLLABICS CARRIER JJE;Lo;0;L;;;;;N;;;;; 161F;CANADIAN SYLLABICS CARRIER JJEE;Lo;0;L;;;;;N;;;;; 1620;CANADIAN SYLLABICS CARRIER JJI;Lo;0;L;;;;;N;;;;; 1621;CANADIAN SYLLABICS CARRIER JJA;Lo;0;L;;;;;N;;;;; 1622;CANADIAN SYLLABICS CARRIER LU;Lo;0;L;;;;;N;;;;; 1623;CANADIAN SYLLABICS CARRIER LO;Lo;0;L;;;;;N;;;;; 1624;CANADIAN SYLLABICS CARRIER LE;Lo;0;L;;;;;N;;;;; 1625;CANADIAN SYLLABICS CARRIER LEE;Lo;0;L;;;;;N;;;;; 1626;CANADIAN SYLLABICS CARRIER LI;Lo;0;L;;;;;N;;;;; 1627;CANADIAN SYLLABICS CARRIER LA;Lo;0;L;;;;;N;;;;; 1628;CANADIAN SYLLABICS CARRIER DLU;Lo;0;L;;;;;N;;;;; 1629;CANADIAN SYLLABICS CARRIER DLO;Lo;0;L;;;;;N;;;;; 162A;CANADIAN SYLLABICS CARRIER DLE;Lo;0;L;;;;;N;;;;; 162B;CANADIAN SYLLABICS CARRIER DLEE;Lo;0;L;;;;;N;;;;; 162C;CANADIAN SYLLABICS CARRIER DLI;Lo;0;L;;;;;N;;;;; 162D;CANADIAN SYLLABICS CARRIER DLA;Lo;0;L;;;;;N;;;;; 162E;CANADIAN SYLLABICS CARRIER LHU;Lo;0;L;;;;;N;;;;; 162F;CANADIAN SYLLABICS CARRIER LHO;Lo;0;L;;;;;N;;;;; 1630;CANADIAN SYLLABICS CARRIER LHE;Lo;0;L;;;;;N;;;;; 1631;CANADIAN SYLLABICS CARRIER LHEE;Lo;0;L;;;;;N;;;;; 1632;CANADIAN SYLLABICS CARRIER LHI;Lo;0;L;;;;;N;;;;; 1633;CANADIAN SYLLABICS CARRIER LHA;Lo;0;L;;;;;N;;;;; 1634;CANADIAN SYLLABICS CARRIER TLHU;Lo;0;L;;;;;N;;;;; 1635;CANADIAN SYLLABICS CARRIER TLHO;Lo;0;L;;;;;N;;;;; 1636;CANADIAN SYLLABICS CARRIER TLHE;Lo;0;L;;;;;N;;;;; 1637;CANADIAN SYLLABICS CARRIER TLHEE;Lo;0;L;;;;;N;;;;; 1638;CANADIAN SYLLABICS CARRIER TLHI;Lo;0;L;;;;;N;;;;; 1639;CANADIAN SYLLABICS CARRIER TLHA;Lo;0;L;;;;;N;;;;; 163A;CANADIAN SYLLABICS CARRIER TLU;Lo;0;L;;;;;N;;;;; 163B;CANADIAN SYLLABICS CARRIER TLO;Lo;0;L;;;;;N;;;;; 163C;CANADIAN SYLLABICS CARRIER TLE;Lo;0;L;;;;;N;;;;; 163D;CANADIAN SYLLABICS CARRIER TLEE;Lo;0;L;;;;;N;;;;; 163E;CANADIAN SYLLABICS CARRIER TLI;Lo;0;L;;;;;N;;;;; 163F;CANADIAN SYLLABICS CARRIER TLA;Lo;0;L;;;;;N;;;;; 1640;CANADIAN SYLLABICS CARRIER ZU;Lo;0;L;;;;;N;;;;; 1641;CANADIAN SYLLABICS CARRIER ZO;Lo;0;L;;;;;N;;;;; 1642;CANADIAN SYLLABICS CARRIER ZE;Lo;0;L;;;;;N;;;;; 1643;CANADIAN SYLLABICS CARRIER ZEE;Lo;0;L;;;;;N;;;;; 1644;CANADIAN SYLLABICS CARRIER ZI;Lo;0;L;;;;;N;;;;; 1645;CANADIAN SYLLABICS CARRIER ZA;Lo;0;L;;;;;N;;;;; 1646;CANADIAN SYLLABICS CARRIER Z;Lo;0;L;;;;;N;;;;; 1647;CANADIAN SYLLABICS CARRIER INITIAL Z;Lo;0;L;;;;;N;;;;; 1648;CANADIAN SYLLABICS CARRIER DZU;Lo;0;L;;;;;N;;;;; 1649;CANADIAN SYLLABICS CARRIER DZO;Lo;0;L;;;;;N;;;;; 164A;CANADIAN SYLLABICS CARRIER DZE;Lo;0;L;;;;;N;;;;; 164B;CANADIAN SYLLABICS CARRIER DZEE;Lo;0;L;;;;;N;;;;; 164C;CANADIAN SYLLABICS CARRIER DZI;Lo;0;L;;;;;N;;;;; 164D;CANADIAN SYLLABICS CARRIER DZA;Lo;0;L;;;;;N;;;;; 164E;CANADIAN SYLLABICS CARRIER SU;Lo;0;L;;;;;N;;;;; 164F;CANADIAN SYLLABICS CARRIER SO;Lo;0;L;;;;;N;;;;; 1650;CANADIAN SYLLABICS CARRIER SE;Lo;0;L;;;;;N;;;;; 1651;CANADIAN SYLLABICS CARRIER SEE;Lo;0;L;;;;;N;;;;; 1652;CANADIAN SYLLABICS CARRIER SI;Lo;0;L;;;;;N;;;;; 1653;CANADIAN SYLLABICS CARRIER SA;Lo;0;L;;;;;N;;;;; 1654;CANADIAN SYLLABICS CARRIER SHU;Lo;0;L;;;;;N;;;;; 1655;CANADIAN SYLLABICS CARRIER SHO;Lo;0;L;;;;;N;;;;; 1656;CANADIAN SYLLABICS CARRIER SHE;Lo;0;L;;;;;N;;;;; 1657;CANADIAN SYLLABICS CARRIER SHEE;Lo;0;L;;;;;N;;;;; 1658;CANADIAN SYLLABICS CARRIER SHI;Lo;0;L;;;;;N;;;;; 1659;CANADIAN SYLLABICS CARRIER SHA;Lo;0;L;;;;;N;;;;; 165A;CANADIAN SYLLABICS CARRIER SH;Lo;0;L;;;;;N;;;;; 165B;CANADIAN SYLLABICS CARRIER TSU;Lo;0;L;;;;;N;;;;; 165C;CANADIAN SYLLABICS CARRIER TSO;Lo;0;L;;;;;N;;;;; 165D;CANADIAN SYLLABICS CARRIER TSE;Lo;0;L;;;;;N;;;;; 165E;CANADIAN SYLLABICS CARRIER TSEE;Lo;0;L;;;;;N;;;;; 165F;CANADIAN SYLLABICS CARRIER TSI;Lo;0;L;;;;;N;;;;; 1660;CANADIAN SYLLABICS CARRIER TSA;Lo;0;L;;;;;N;;;;; 1661;CANADIAN SYLLABICS CARRIER CHU;Lo;0;L;;;;;N;;;;; 1662;CANADIAN SYLLABICS CARRIER CHO;Lo;0;L;;;;;N;;;;; 1663;CANADIAN SYLLABICS CARRIER CHE;Lo;0;L;;;;;N;;;;; 1664;CANADIAN SYLLABICS CARRIER CHEE;Lo;0;L;;;;;N;;;;; 1665;CANADIAN SYLLABICS CARRIER CHI;Lo;0;L;;;;;N;;;;; 1666;CANADIAN SYLLABICS CARRIER CHA;Lo;0;L;;;;;N;;;;; 1667;CANADIAN SYLLABICS CARRIER TTSU;Lo;0;L;;;;;N;;;;; 1668;CANADIAN SYLLABICS CARRIER TTSO;Lo;0;L;;;;;N;;;;; 1669;CANADIAN SYLLABICS CARRIER TTSE;Lo;0;L;;;;;N;;;;; 166A;CANADIAN SYLLABICS CARRIER TTSEE;Lo;0;L;;;;;N;;;;; 166B;CANADIAN SYLLABICS CARRIER TTSI;Lo;0;L;;;;;N;;;;; 166C;CANADIAN SYLLABICS CARRIER TTSA;Lo;0;L;;;;;N;;;;; 166D;CANADIAN SYLLABICS CHI SIGN;Po;0;L;;;;;N;;;;; 166E;CANADIAN SYLLABICS FULL STOP;Po;0;L;;;;;N;;;;; 166F;CANADIAN SYLLABICS QAI;Lo;0;L;;;;;N;;;;; 1670;CANADIAN SYLLABICS NGAI;Lo;0;L;;;;;N;;;;; 1671;CANADIAN SYLLABICS NNGI;Lo;0;L;;;;;N;;;;; 1672;CANADIAN SYLLABICS NNGII;Lo;0;L;;;;;N;;;;; 1673;CANADIAN SYLLABICS NNGO;Lo;0;L;;;;;N;;;;; 1674;CANADIAN SYLLABICS NNGOO;Lo;0;L;;;;;N;;;;; 1675;CANADIAN SYLLABICS NNGA;Lo;0;L;;;;;N;;;;; 1676;CANADIAN SYLLABICS NNGAA;Lo;0;L;;;;;N;;;;; 1680;OGHAM SPACE MARK;Zs;0;WS;;;;;N;;;;; 1681;OGHAM LETTER BEITH;Lo;0;L;;;;;N;;;;; 1682;OGHAM LETTER LUIS;Lo;0;L;;;;;N;;;;; 1683;OGHAM LETTER FEARN;Lo;0;L;;;;;N;;;;; 1684;OGHAM LETTER SAIL;Lo;0;L;;;;;N;;;;; 1685;OGHAM LETTER NION;Lo;0;L;;;;;N;;;;; 1686;OGHAM LETTER UATH;Lo;0;L;;;;;N;;;;; 1687;OGHAM LETTER DAIR;Lo;0;L;;;;;N;;;;; 1688;OGHAM LETTER TINNE;Lo;0;L;;;;;N;;;;; 1689;OGHAM LETTER COLL;Lo;0;L;;;;;N;;;;; 168A;OGHAM LETTER CEIRT;Lo;0;L;;;;;N;;;;; 168B;OGHAM LETTER MUIN;Lo;0;L;;;;;N;;;;; 168C;OGHAM LETTER GORT;Lo;0;L;;;;;N;;;;; 168D;OGHAM LETTER NGEADAL;Lo;0;L;;;;;N;;;;; 168E;OGHAM LETTER STRAIF;Lo;0;L;;;;;N;;;;; 168F;OGHAM LETTER RUIS;Lo;0;L;;;;;N;;;;; 1690;OGHAM LETTER AILM;Lo;0;L;;;;;N;;;;; 1691;OGHAM LETTER ONN;Lo;0;L;;;;;N;;;;; 1692;OGHAM LETTER UR;Lo;0;L;;;;;N;;;;; 1693;OGHAM LETTER EADHADH;Lo;0;L;;;;;N;;;;; 1694;OGHAM LETTER IODHADH;Lo;0;L;;;;;N;;;;; 1695;OGHAM LETTER EABHADH;Lo;0;L;;;;;N;;;;; 1696;OGHAM LETTER OR;Lo;0;L;;;;;N;;;;; 1697;OGHAM LETTER UILLEANN;Lo;0;L;;;;;N;;;;; 1698;OGHAM LETTER IFIN;Lo;0;L;;;;;N;;;;; 1699;OGHAM LETTER EAMHANCHOLL;Lo;0;L;;;;;N;;;;; 169A;OGHAM LETTER PEITH;Lo;0;L;;;;;N;;;;; 169B;OGHAM FEATHER MARK;Ps;0;ON;;;;;Y;;;;; 169C;OGHAM REVERSED FEATHER MARK;Pe;0;ON;;;;;Y;;;;; 16A0;RUNIC LETTER FEHU FEOH FE F;Lo;0;L;;;;;N;;;;; 16A1;RUNIC LETTER V;Lo;0;L;;;;;N;;;;; 16A2;RUNIC LETTER URUZ UR U;Lo;0;L;;;;;N;;;;; 16A3;RUNIC LETTER YR;Lo;0;L;;;;;N;;;;; 16A4;RUNIC LETTER Y;Lo;0;L;;;;;N;;;;; 16A5;RUNIC LETTER W;Lo;0;L;;;;;N;;;;; 16A6;RUNIC LETTER THURISAZ THURS THORN;Lo;0;L;;;;;N;;;;; 16A7;RUNIC LETTER ETH;Lo;0;L;;;;;N;;;;; 16A8;RUNIC LETTER ANSUZ A;Lo;0;L;;;;;N;;;;; 16A9;RUNIC LETTER OS O;Lo;0;L;;;;;N;;;;; 16AA;RUNIC LETTER AC A;Lo;0;L;;;;;N;;;;; 16AB;RUNIC LETTER AESC;Lo;0;L;;;;;N;;;;; 16AC;RUNIC LETTER LONG-BRANCH-OSS O;Lo;0;L;;;;;N;;;;; 16AD;RUNIC LETTER SHORT-TWIG-OSS O;Lo;0;L;;;;;N;;;;; 16AE;RUNIC LETTER O;Lo;0;L;;;;;N;;;;; 16AF;RUNIC LETTER OE;Lo;0;L;;;;;N;;;;; 16B0;RUNIC LETTER ON;Lo;0;L;;;;;N;;;;; 16B1;RUNIC LETTER RAIDO RAD REID R;Lo;0;L;;;;;N;;;;; 16B2;RUNIC LETTER KAUNA;Lo;0;L;;;;;N;;;;; 16B3;RUNIC LETTER CEN;Lo;0;L;;;;;N;;;;; 16B4;RUNIC LETTER KAUN K;Lo;0;L;;;;;N;;;;; 16B5;RUNIC LETTER G;Lo;0;L;;;;;N;;;;; 16B6;RUNIC LETTER ENG;Lo;0;L;;;;;N;;;;; 16B7;RUNIC LETTER GEBO GYFU G;Lo;0;L;;;;;N;;;;; 16B8;RUNIC LETTER GAR;Lo;0;L;;;;;N;;;;; 16B9;RUNIC LETTER WUNJO WYNN W;Lo;0;L;;;;;N;;;;; 16BA;RUNIC LETTER HAGLAZ H;Lo;0;L;;;;;N;;;;; 16BB;RUNIC LETTER HAEGL H;Lo;0;L;;;;;N;;;;; 16BC;RUNIC LETTER LONG-BRANCH-HAGALL H;Lo;0;L;;;;;N;;;;; 16BD;RUNIC LETTER SHORT-TWIG-HAGALL H;Lo;0;L;;;;;N;;;;; 16BE;RUNIC LETTER NAUDIZ NYD NAUD N;Lo;0;L;;;;;N;;;;; 16BF;RUNIC LETTER SHORT-TWIG-NAUD N;Lo;0;L;;;;;N;;;;; 16C0;RUNIC LETTER DOTTED-N;Lo;0;L;;;;;N;;;;; 16C1;RUNIC LETTER ISAZ IS ISS I;Lo;0;L;;;;;N;;;;; 16C2;RUNIC LETTER E;Lo;0;L;;;;;N;;;;; 16C3;RUNIC LETTER JERAN J;Lo;0;L;;;;;N;;;;; 16C4;RUNIC LETTER GER;Lo;0;L;;;;;N;;;;; 16C5;RUNIC LETTER LONG-BRANCH-AR AE;Lo;0;L;;;;;N;;;;; 16C6;RUNIC LETTER SHORT-TWIG-AR A;Lo;0;L;;;;;N;;;;; 16C7;RUNIC LETTER IWAZ EOH;Lo;0;L;;;;;N;;;;; 16C8;RUNIC LETTER PERTHO PEORTH P;Lo;0;L;;;;;N;;;;; 16C9;RUNIC LETTER ALGIZ EOLHX;Lo;0;L;;;;;N;;;;; 16CA;RUNIC LETTER SOWILO S;Lo;0;L;;;;;N;;;;; 16CB;RUNIC LETTER SIGEL LONG-BRANCH-SOL S;Lo;0;L;;;;;N;;;;; 16CC;RUNIC LETTER SHORT-TWIG-SOL S;Lo;0;L;;;;;N;;;;; 16CD;RUNIC LETTER C;Lo;0;L;;;;;N;;;;; 16CE;RUNIC LETTER Z;Lo;0;L;;;;;N;;;;; 16CF;RUNIC LETTER TIWAZ TIR TYR T;Lo;0;L;;;;;N;;;;; 16D0;RUNIC LETTER SHORT-TWIG-TYR T;Lo;0;L;;;;;N;;;;; 16D1;RUNIC LETTER D;Lo;0;L;;;;;N;;;;; 16D2;RUNIC LETTER BERKANAN BEORC BJARKAN B;Lo;0;L;;;;;N;;;;; 16D3;RUNIC LETTER SHORT-TWIG-BJARKAN B;Lo;0;L;;;;;N;;;;; 16D4;RUNIC LETTER DOTTED-P;Lo;0;L;;;;;N;;;;; 16D5;RUNIC LETTER OPEN-P;Lo;0;L;;;;;N;;;;; 16D6;RUNIC LETTER EHWAZ EH E;Lo;0;L;;;;;N;;;;; 16D7;RUNIC LETTER MANNAZ MAN M;Lo;0;L;;;;;N;;;;; 16D8;RUNIC LETTER LONG-BRANCH-MADR M;Lo;0;L;;;;;N;;;;; 16D9;RUNIC LETTER SHORT-TWIG-MADR M;Lo;0;L;;;;;N;;;;; 16DA;RUNIC LETTER LAUKAZ LAGU LOGR L;Lo;0;L;;;;;N;;;;; 16DB;RUNIC LETTER DOTTED-L;Lo;0;L;;;;;N;;;;; 16DC;RUNIC LETTER INGWAZ;Lo;0;L;;;;;N;;;;; 16DD;RUNIC LETTER ING;Lo;0;L;;;;;N;;;;; 16DE;RUNIC LETTER DAGAZ DAEG D;Lo;0;L;;;;;N;;;;; 16DF;RUNIC LETTER OTHALAN ETHEL O;Lo;0;L;;;;;N;;;;; 16E0;RUNIC LETTER EAR;Lo;0;L;;;;;N;;;;; 16E1;RUNIC LETTER IOR;Lo;0;L;;;;;N;;;;; 16E2;RUNIC LETTER CWEORTH;Lo;0;L;;;;;N;;;;; 16E3;RUNIC LETTER CALC;Lo;0;L;;;;;N;;;;; 16E4;RUNIC LETTER CEALC;Lo;0;L;;;;;N;;;;; 16E5;RUNIC LETTER STAN;Lo;0;L;;;;;N;;;;; 16E6;RUNIC LETTER LONG-BRANCH-YR;Lo;0;L;;;;;N;;;;; 16E7;RUNIC LETTER SHORT-TWIG-YR;Lo;0;L;;;;;N;;;;; 16E8;RUNIC LETTER ICELANDIC-YR;Lo;0;L;;;;;N;;;;; 16E9;RUNIC LETTER Q;Lo;0;L;;;;;N;;;;; 16EA;RUNIC LETTER X;Lo;0;L;;;;;N;;;;; 16EB;RUNIC SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; 16EC;RUNIC MULTIPLE PUNCTUATION;Po;0;L;;;;;N;;;;; 16ED;RUNIC CROSS PUNCTUATION;Po;0;L;;;;;N;;;;; 16EE;RUNIC ARLAUG SYMBOL;Nl;0;L;;;;17;N;;golden number 17;;; 16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;golden number 18;;; 16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;golden number 19;;; 1700;TAGALOG LETTER A;Lo;0;L;;;;;N;;;;; 1701;TAGALOG LETTER I;Lo;0;L;;;;;N;;;;; 1702;TAGALOG LETTER U;Lo;0;L;;;;;N;;;;; 1703;TAGALOG LETTER KA;Lo;0;L;;;;;N;;;;; 1704;TAGALOG LETTER GA;Lo;0;L;;;;;N;;;;; 1705;TAGALOG LETTER NGA;Lo;0;L;;;;;N;;;;; 1706;TAGALOG LETTER TA;Lo;0;L;;;;;N;;;;; 1707;TAGALOG LETTER DA;Lo;0;L;;;;;N;;;;; 1708;TAGALOG LETTER NA;Lo;0;L;;;;;N;;;;; 1709;TAGALOG LETTER PA;Lo;0;L;;;;;N;;;;; 170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;; 170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;; 170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;; 170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;; 170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;; 1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;; 1711;TAGALOG LETTER HA;Lo;0;L;;;;;N;;;;; 1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;; 1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;; 1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;; 1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;; 1723;HANUNOO LETTER KA;Lo;0;L;;;;;N;;;;; 1724;HANUNOO LETTER GA;Lo;0;L;;;;;N;;;;; 1725;HANUNOO LETTER NGA;Lo;0;L;;;;;N;;;;; 1726;HANUNOO LETTER TA;Lo;0;L;;;;;N;;;;; 1727;HANUNOO LETTER DA;Lo;0;L;;;;;N;;;;; 1728;HANUNOO LETTER NA;Lo;0;L;;;;;N;;;;; 1729;HANUNOO LETTER PA;Lo;0;L;;;;;N;;;;; 172A;HANUNOO LETTER BA;Lo;0;L;;;;;N;;;;; 172B;HANUNOO LETTER MA;Lo;0;L;;;;;N;;;;; 172C;HANUNOO LETTER YA;Lo;0;L;;;;;N;;;;; 172D;HANUNOO LETTER RA;Lo;0;L;;;;;N;;;;; 172E;HANUNOO LETTER LA;Lo;0;L;;;;;N;;;;; 172F;HANUNOO LETTER WA;Lo;0;L;;;;;N;;;;; 1730;HANUNOO LETTER SA;Lo;0;L;;;;;N;;;;; 1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;; 1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;; 1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;; 1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;; 1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;; 1741;BUHID LETTER I;Lo;0;L;;;;;N;;;;; 1742;BUHID LETTER U;Lo;0;L;;;;;N;;;;; 1743;BUHID LETTER KA;Lo;0;L;;;;;N;;;;; 1744;BUHID LETTER GA;Lo;0;L;;;;;N;;;;; 1745;BUHID LETTER NGA;Lo;0;L;;;;;N;;;;; 1746;BUHID LETTER TA;Lo;0;L;;;;;N;;;;; 1747;BUHID LETTER DA;Lo;0;L;;;;;N;;;;; 1748;BUHID LETTER NA;Lo;0;L;;;;;N;;;;; 1749;BUHID LETTER PA;Lo;0;L;;;;;N;;;;; 174A;BUHID LETTER BA;Lo;0;L;;;;;N;;;;; 174B;BUHID LETTER MA;Lo;0;L;;;;;N;;;;; 174C;BUHID LETTER YA;Lo;0;L;;;;;N;;;;; 174D;BUHID LETTER RA;Lo;0;L;;;;;N;;;;; 174E;BUHID LETTER LA;Lo;0;L;;;;;N;;;;; 174F;BUHID LETTER WA;Lo;0;L;;;;;N;;;;; 1750;BUHID LETTER SA;Lo;0;L;;;;;N;;;;; 1751;BUHID LETTER HA;Lo;0;L;;;;;N;;;;; 1752;BUHID VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1753;BUHID VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1760;TAGBANWA LETTER A;Lo;0;L;;;;;N;;;;; 1761;TAGBANWA LETTER I;Lo;0;L;;;;;N;;;;; 1762;TAGBANWA LETTER U;Lo;0;L;;;;;N;;;;; 1763;TAGBANWA LETTER KA;Lo;0;L;;;;;N;;;;; 1764;TAGBANWA LETTER GA;Lo;0;L;;;;;N;;;;; 1765;TAGBANWA LETTER NGA;Lo;0;L;;;;;N;;;;; 1766;TAGBANWA LETTER TA;Lo;0;L;;;;;N;;;;; 1767;TAGBANWA LETTER DA;Lo;0;L;;;;;N;;;;; 1768;TAGBANWA LETTER NA;Lo;0;L;;;;;N;;;;; 1769;TAGBANWA LETTER PA;Lo;0;L;;;;;N;;;;; 176A;TAGBANWA LETTER BA;Lo;0;L;;;;;N;;;;; 176B;TAGBANWA LETTER MA;Lo;0;L;;;;;N;;;;; 176C;TAGBANWA LETTER YA;Lo;0;L;;;;;N;;;;; 176E;TAGBANWA LETTER LA;Lo;0;L;;;;;N;;;;; 176F;TAGBANWA LETTER WA;Lo;0;L;;;;;N;;;;; 1770;TAGBANWA LETTER SA;Lo;0;L;;;;;N;;;;; 1772;TAGBANWA VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1773;TAGBANWA VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1780;KHMER LETTER KA;Lo;0;L;;;;;N;;;;; 1781;KHMER LETTER KHA;Lo;0;L;;;;;N;;;;; 1782;KHMER LETTER KO;Lo;0;L;;;;;N;;;;; 1783;KHMER LETTER KHO;Lo;0;L;;;;;N;;;;; 1784;KHMER LETTER NGO;Lo;0;L;;;;;N;;;;; 1785;KHMER LETTER CA;Lo;0;L;;;;;N;;;;; 1786;KHMER LETTER CHA;Lo;0;L;;;;;N;;;;; 1787;KHMER LETTER CO;Lo;0;L;;;;;N;;;;; 1788;KHMER LETTER CHO;Lo;0;L;;;;;N;;;;; 1789;KHMER LETTER NYO;Lo;0;L;;;;;N;;;;; 178A;KHMER LETTER DA;Lo;0;L;;;;;N;;;;; 178B;KHMER LETTER TTHA;Lo;0;L;;;;;N;;;;; 178C;KHMER LETTER DO;Lo;0;L;;;;;N;;;;; 178D;KHMER LETTER TTHO;Lo;0;L;;;;;N;;;;; 178E;KHMER LETTER NNO;Lo;0;L;;;;;N;;;;; 178F;KHMER LETTER TA;Lo;0;L;;;;;N;;;;; 1790;KHMER LETTER THA;Lo;0;L;;;;;N;;;;; 1791;KHMER LETTER TO;Lo;0;L;;;;;N;;;;; 1792;KHMER LETTER THO;Lo;0;L;;;;;N;;;;; 1793;KHMER LETTER NO;Lo;0;L;;;;;N;;;;; 1794;KHMER LETTER BA;Lo;0;L;;;;;N;;;;; 1795;KHMER LETTER PHA;Lo;0;L;;;;;N;;;;; 1796;KHMER LETTER PO;Lo;0;L;;;;;N;;;;; 1797;KHMER LETTER PHO;Lo;0;L;;;;;N;;;;; 1798;KHMER LETTER MO;Lo;0;L;;;;;N;;;;; 1799;KHMER LETTER YO;Lo;0;L;;;;;N;;;;; 179A;KHMER LETTER RO;Lo;0;L;;;;;N;;;;; 179B;KHMER LETTER LO;Lo;0;L;;;;;N;;;;; 179C;KHMER LETTER VO;Lo;0;L;;;;;N;;;;; 179D;KHMER LETTER SHA;Lo;0;L;;;;;N;;;;; 179E;KHMER LETTER SSO;Lo;0;L;;;;;N;;;;; 179F;KHMER LETTER SA;Lo;0;L;;;;;N;;;;; 17A0;KHMER LETTER HA;Lo;0;L;;;;;N;;;;; 17A1;KHMER LETTER LA;Lo;0;L;;;;;N;;;;; 17A2;KHMER LETTER QA;Lo;0;L;;;;;N;;;;; 17A3;KHMER INDEPENDENT VOWEL QAQ;Lo;0;L;;;;;N;;*;;; 17A4;KHMER INDEPENDENT VOWEL QAA;Lo;0;L;;;;;N;;*;;; 17A5;KHMER INDEPENDENT VOWEL QI;Lo;0;L;;;;;N;;;;; 17A6;KHMER INDEPENDENT VOWEL QII;Lo;0;L;;;;;N;;;;; 17A7;KHMER INDEPENDENT VOWEL QU;Lo;0;L;;;;;N;;;;; 17A8;KHMER INDEPENDENT VOWEL QUK;Lo;0;L;;;;;N;;;;; 17A9;KHMER INDEPENDENT VOWEL QUU;Lo;0;L;;;;;N;;;;; 17AA;KHMER INDEPENDENT VOWEL QUUV;Lo;0;L;;;;;N;;;;; 17AB;KHMER INDEPENDENT VOWEL RY;Lo;0;L;;;;;N;;;;; 17AC;KHMER INDEPENDENT VOWEL RYY;Lo;0;L;;;;;N;;;;; 17AD;KHMER INDEPENDENT VOWEL LY;Lo;0;L;;;;;N;;;;; 17AE;KHMER INDEPENDENT VOWEL LYY;Lo;0;L;;;;;N;;;;; 17AF;KHMER INDEPENDENT VOWEL QE;Lo;0;L;;;;;N;;;;; 17B0;KHMER INDEPENDENT VOWEL QAI;Lo;0;L;;;;;N;;;;; 17B1;KHMER INDEPENDENT VOWEL QOO TYPE ONE;Lo;0;L;;;;;N;;;;; 17B2;KHMER INDEPENDENT VOWEL QOO TYPE TWO;Lo;0;L;;;;;N;;;;; 17B3;KHMER INDEPENDENT VOWEL QAU;Lo;0;L;;;;;N;;;;; 17B4;KHMER VOWEL INHERENT AQ;Cf;0;L;;;;;N;;*;;; 17B5;KHMER VOWEL INHERENT AA;Cf;0;L;;;;;N;;*;;; 17B6;KHMER VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 17B7;KHMER VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 17B8;KHMER VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;; 17B9;KHMER VOWEL SIGN Y;Mn;0;NSM;;;;;N;;;;; 17BA;KHMER VOWEL SIGN YY;Mn;0;NSM;;;;;N;;;;; 17BB;KHMER VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 17BC;KHMER VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;; 17BD;KHMER VOWEL SIGN UA;Mn;0;NSM;;;;;N;;;;; 17BE;KHMER VOWEL SIGN OE;Mc;0;L;;;;;N;;;;; 17BF;KHMER VOWEL SIGN YA;Mc;0;L;;;;;N;;;;; 17C0;KHMER VOWEL SIGN IE;Mc;0;L;;;;;N;;;;; 17C1;KHMER VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 17C2;KHMER VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; 17C3;KHMER VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; 17C4;KHMER VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; 17C5;KHMER VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; 17C6;KHMER SIGN NIKAHIT;Mn;0;NSM;;;;;N;;;;; 17C7;KHMER SIGN REAHMUK;Mc;0;L;;;;;N;;;;; 17C8;KHMER SIGN YUUKALEAPINTU;Mc;0;L;;;;;N;;;;; 17C9;KHMER SIGN MUUSIKATOAN;Mn;0;NSM;;;;;N;;;;; 17CA;KHMER SIGN TRIISAP;Mn;0;NSM;;;;;N;;;;; 17CB;KHMER SIGN BANTOC;Mn;0;NSM;;;;;N;;;;; 17CC;KHMER SIGN ROBAT;Mn;0;NSM;;;;;N;;;;; 17CD;KHMER SIGN TOANDAKHIAT;Mn;0;NSM;;;;;N;;;;; 17CE;KHMER SIGN KAKABAT;Mn;0;NSM;;;;;N;;;;; 17CF;KHMER SIGN AHSDA;Mn;0;NSM;;;;;N;;;;; 17D0;KHMER SIGN SAMYOK SANNYA;Mn;0;NSM;;;;;N;;;;; 17D1;KHMER SIGN VIRIAM;Mn;0;NSM;;;;;N;;;;; 17D2;KHMER SIGN COENG;Mn;9;NSM;;;;;N;;;;; 17D3;KHMER SIGN BATHAMASAT;Mn;0;NSM;;;;;N;;*;;; 17D4;KHMER SIGN KHAN;Po;0;L;;;;;N;;;;; 17D5;KHMER SIGN BARIYOOSAN;Po;0;L;;;;;N;;;;; 17D6;KHMER SIGN CAMNUC PII KUUH;Po;0;L;;;;;N;;;;; 17D7;KHMER SIGN LEK TOO;Lm;0;L;;;;;N;;;;; 17D8;KHMER SIGN BEYYAL;Po;0;L;;;;;N;;*;;; 17D9;KHMER SIGN PHNAEK MUAN;Po;0;L;;;;;N;;;;; 17DA;KHMER SIGN KOOMUUT;Po;0;L;;;;;N;;;;; 17DB;KHMER CURRENCY SYMBOL RIEL;Sc;0;ET;;;;;N;;;;; 17DC;KHMER SIGN AVAKRAHASANYA;Lo;0;L;;;;;N;;;;; 17DD;KHMER SIGN ATTHACAN;Mn;230;NSM;;;;;N;;;;; 17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 17F0;KHMER SYMBOL LEK ATTAK SON;No;0;ON;;;;0;N;;;;; 17F1;KHMER SYMBOL LEK ATTAK MUOY;No;0;ON;;;;1;N;;;;; 17F2;KHMER SYMBOL LEK ATTAK PII;No;0;ON;;;;2;N;;;;; 17F3;KHMER SYMBOL LEK ATTAK BEI;No;0;ON;;;;3;N;;;;; 17F4;KHMER SYMBOL LEK ATTAK BUON;No;0;ON;;;;4;N;;;;; 17F5;KHMER SYMBOL LEK ATTAK PRAM;No;0;ON;;;;5;N;;;;; 17F6;KHMER SYMBOL LEK ATTAK PRAM-MUOY;No;0;ON;;;;6;N;;;;; 17F7;KHMER SYMBOL LEK ATTAK PRAM-PII;No;0;ON;;;;7;N;;;;; 17F8;KHMER SYMBOL LEK ATTAK PRAM-BEI;No;0;ON;;;;8;N;;;;; 17F9;KHMER SYMBOL LEK ATTAK PRAM-BUON;No;0;ON;;;;9;N;;;;; 1800;MONGOLIAN BIRGA;Po;0;ON;;;;;N;;;;; 1801;MONGOLIAN ELLIPSIS;Po;0;ON;;;;;N;;;;; 1802;MONGOLIAN COMMA;Po;0;ON;;;;;N;;;;; 1803;MONGOLIAN FULL STOP;Po;0;ON;;;;;N;;;;; 1804;MONGOLIAN COLON;Po;0;ON;;;;;N;;;;; 1805;MONGOLIAN FOUR DOTS;Po;0;ON;;;;;N;;;;; 1806;MONGOLIAN TODO SOFT HYPHEN;Pd;0;ON;;;;;N;;;;; 1807;MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER;Po;0;ON;;;;;N;;;;; 1808;MONGOLIAN MANCHU COMMA;Po;0;ON;;;;;N;;;;; 1809;MONGOLIAN MANCHU FULL STOP;Po;0;ON;;;;;N;;;;; 180A;MONGOLIAN NIRUGU;Po;0;ON;;;;;N;;;;; 180B;MONGOLIAN FREE VARIATION SELECTOR ONE;Mn;0;NSM;;;;;N;;;;; 180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;; 180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;; 180E;MONGOLIAN VOWEL SEPARATOR;Zs;0;WS;;;;;N;;;;; 1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1820;MONGOLIAN LETTER A;Lo;0;L;;;;;N;;;;; 1821;MONGOLIAN LETTER E;Lo;0;L;;;;;N;;;;; 1822;MONGOLIAN LETTER I;Lo;0;L;;;;;N;;;;; 1823;MONGOLIAN LETTER O;Lo;0;L;;;;;N;;;;; 1824;MONGOLIAN LETTER U;Lo;0;L;;;;;N;;;;; 1825;MONGOLIAN LETTER OE;Lo;0;L;;;;;N;;;;; 1826;MONGOLIAN LETTER UE;Lo;0;L;;;;;N;;;;; 1827;MONGOLIAN LETTER EE;Lo;0;L;;;;;N;;;;; 1828;MONGOLIAN LETTER NA;Lo;0;L;;;;;N;;;;; 1829;MONGOLIAN LETTER ANG;Lo;0;L;;;;;N;;;;; 182A;MONGOLIAN LETTER BA;Lo;0;L;;;;;N;;;;; 182B;MONGOLIAN LETTER PA;Lo;0;L;;;;;N;;;;; 182C;MONGOLIAN LETTER QA;Lo;0;L;;;;;N;;;;; 182D;MONGOLIAN LETTER GA;Lo;0;L;;;;;N;;;;; 182E;MONGOLIAN LETTER MA;Lo;0;L;;;;;N;;;;; 182F;MONGOLIAN LETTER LA;Lo;0;L;;;;;N;;;;; 1830;MONGOLIAN LETTER SA;Lo;0;L;;;;;N;;;;; 1831;MONGOLIAN LETTER SHA;Lo;0;L;;;;;N;;;;; 1832;MONGOLIAN LETTER TA;Lo;0;L;;;;;N;;;;; 1833;MONGOLIAN LETTER DA;Lo;0;L;;;;;N;;;;; 1834;MONGOLIAN LETTER CHA;Lo;0;L;;;;;N;;;;; 1835;MONGOLIAN LETTER JA;Lo;0;L;;;;;N;;;;; 1836;MONGOLIAN LETTER YA;Lo;0;L;;;;;N;;;;; 1837;MONGOLIAN LETTER RA;Lo;0;L;;;;;N;;;;; 1838;MONGOLIAN LETTER WA;Lo;0;L;;;;;N;;;;; 1839;MONGOLIAN LETTER FA;Lo;0;L;;;;;N;;;;; 183A;MONGOLIAN LETTER KA;Lo;0;L;;;;;N;;;;; 183B;MONGOLIAN LETTER KHA;Lo;0;L;;;;;N;;;;; 183C;MONGOLIAN LETTER TSA;Lo;0;L;;;;;N;;;;; 183D;MONGOLIAN LETTER ZA;Lo;0;L;;;;;N;;;;; 183E;MONGOLIAN LETTER HAA;Lo;0;L;;;;;N;;;;; 183F;MONGOLIAN LETTER ZRA;Lo;0;L;;;;;N;;;;; 1840;MONGOLIAN LETTER LHA;Lo;0;L;;;;;N;;;;; 1841;MONGOLIAN LETTER ZHI;Lo;0;L;;;;;N;;;;; 1842;MONGOLIAN LETTER CHI;Lo;0;L;;;;;N;;;;; 1843;MONGOLIAN LETTER TODO LONG VOWEL SIGN;Lm;0;L;;;;;N;;;;; 1844;MONGOLIAN LETTER TODO E;Lo;0;L;;;;;N;;;;; 1845;MONGOLIAN LETTER TODO I;Lo;0;L;;;;;N;;;;; 1846;MONGOLIAN LETTER TODO O;Lo;0;L;;;;;N;;;;; 1847;MONGOLIAN LETTER TODO U;Lo;0;L;;;;;N;;;;; 1848;MONGOLIAN LETTER TODO OE;Lo;0;L;;;;;N;;;;; 1849;MONGOLIAN LETTER TODO UE;Lo;0;L;;;;;N;;;;; 184A;MONGOLIAN LETTER TODO ANG;Lo;0;L;;;;;N;;;;; 184B;MONGOLIAN LETTER TODO BA;Lo;0;L;;;;;N;;;;; 184C;MONGOLIAN LETTER TODO PA;Lo;0;L;;;;;N;;;;; 184D;MONGOLIAN LETTER TODO QA;Lo;0;L;;;;;N;;;;; 184E;MONGOLIAN LETTER TODO GA;Lo;0;L;;;;;N;;;;; 184F;MONGOLIAN LETTER TODO MA;Lo;0;L;;;;;N;;;;; 1850;MONGOLIAN LETTER TODO TA;Lo;0;L;;;;;N;;;;; 1851;MONGOLIAN LETTER TODO DA;Lo;0;L;;;;;N;;;;; 1852;MONGOLIAN LETTER TODO CHA;Lo;0;L;;;;;N;;;;; 1853;MONGOLIAN LETTER TODO JA;Lo;0;L;;;;;N;;;;; 1854;MONGOLIAN LETTER TODO TSA;Lo;0;L;;;;;N;;;;; 1855;MONGOLIAN LETTER TODO YA;Lo;0;L;;;;;N;;;;; 1856;MONGOLIAN LETTER TODO WA;Lo;0;L;;;;;N;;;;; 1857;MONGOLIAN LETTER TODO KA;Lo;0;L;;;;;N;;;;; 1858;MONGOLIAN LETTER TODO GAA;Lo;0;L;;;;;N;;;;; 1859;MONGOLIAN LETTER TODO HAA;Lo;0;L;;;;;N;;;;; 185A;MONGOLIAN LETTER TODO JIA;Lo;0;L;;;;;N;;;;; 185B;MONGOLIAN LETTER TODO NIA;Lo;0;L;;;;;N;;;;; 185C;MONGOLIAN LETTER TODO DZA;Lo;0;L;;;;;N;;;;; 185D;MONGOLIAN LETTER SIBE E;Lo;0;L;;;;;N;;;;; 185E;MONGOLIAN LETTER SIBE I;Lo;0;L;;;;;N;;;;; 185F;MONGOLIAN LETTER SIBE IY;Lo;0;L;;;;;N;;;;; 1860;MONGOLIAN LETTER SIBE UE;Lo;0;L;;;;;N;;;;; 1861;MONGOLIAN LETTER SIBE U;Lo;0;L;;;;;N;;;;; 1862;MONGOLIAN LETTER SIBE ANG;Lo;0;L;;;;;N;;;;; 1863;MONGOLIAN LETTER SIBE KA;Lo;0;L;;;;;N;;;;; 1864;MONGOLIAN LETTER SIBE GA;Lo;0;L;;;;;N;;;;; 1865;MONGOLIAN LETTER SIBE HA;Lo;0;L;;;;;N;;;;; 1866;MONGOLIAN LETTER SIBE PA;Lo;0;L;;;;;N;;;;; 1867;MONGOLIAN LETTER SIBE SHA;Lo;0;L;;;;;N;;;;; 1868;MONGOLIAN LETTER SIBE TA;Lo;0;L;;;;;N;;;;; 1869;MONGOLIAN LETTER SIBE DA;Lo;0;L;;;;;N;;;;; 186A;MONGOLIAN LETTER SIBE JA;Lo;0;L;;;;;N;;;;; 186B;MONGOLIAN LETTER SIBE FA;Lo;0;L;;;;;N;;;;; 186C;MONGOLIAN LETTER SIBE GAA;Lo;0;L;;;;;N;;;;; 186D;MONGOLIAN LETTER SIBE HAA;Lo;0;L;;;;;N;;;;; 186E;MONGOLIAN LETTER SIBE TSA;Lo;0;L;;;;;N;;;;; 186F;MONGOLIAN LETTER SIBE ZA;Lo;0;L;;;;;N;;;;; 1870;MONGOLIAN LETTER SIBE RAA;Lo;0;L;;;;;N;;;;; 1871;MONGOLIAN LETTER SIBE CHA;Lo;0;L;;;;;N;;;;; 1872;MONGOLIAN LETTER SIBE ZHA;Lo;0;L;;;;;N;;;;; 1873;MONGOLIAN LETTER MANCHU I;Lo;0;L;;;;;N;;;;; 1874;MONGOLIAN LETTER MANCHU KA;Lo;0;L;;;;;N;;;;; 1875;MONGOLIAN LETTER MANCHU RA;Lo;0;L;;;;;N;;;;; 1876;MONGOLIAN LETTER MANCHU FA;Lo;0;L;;;;;N;;;;; 1877;MONGOLIAN LETTER MANCHU ZHA;Lo;0;L;;;;;N;;;;; 1880;MONGOLIAN LETTER ALI GALI ANUSVARA ONE;Lo;0;L;;;;;N;;;;; 1881;MONGOLIAN LETTER ALI GALI VISARGA ONE;Lo;0;L;;;;;N;;;;; 1882;MONGOLIAN LETTER ALI GALI DAMARU;Lo;0;L;;;;;N;;;;; 1883;MONGOLIAN LETTER ALI GALI UBADAMA;Lo;0;L;;;;;N;;;;; 1884;MONGOLIAN LETTER ALI GALI INVERTED UBADAMA;Lo;0;L;;;;;N;;;;; 1885;MONGOLIAN LETTER ALI GALI BALUDA;Lo;0;L;;;;;N;;;;; 1886;MONGOLIAN LETTER ALI GALI THREE BALUDA;Lo;0;L;;;;;N;;;;; 1887;MONGOLIAN LETTER ALI GALI A;Lo;0;L;;;;;N;;;;; 1888;MONGOLIAN LETTER ALI GALI I;Lo;0;L;;;;;N;;;;; 1889;MONGOLIAN LETTER ALI GALI KA;Lo;0;L;;;;;N;;;;; 188A;MONGOLIAN LETTER ALI GALI NGA;Lo;0;L;;;;;N;;;;; 188B;MONGOLIAN LETTER ALI GALI CA;Lo;0;L;;;;;N;;;;; 188C;MONGOLIAN LETTER ALI GALI TTA;Lo;0;L;;;;;N;;;;; 188D;MONGOLIAN LETTER ALI GALI TTHA;Lo;0;L;;;;;N;;;;; 188E;MONGOLIAN LETTER ALI GALI DDA;Lo;0;L;;;;;N;;;;; 188F;MONGOLIAN LETTER ALI GALI NNA;Lo;0;L;;;;;N;;;;; 1890;MONGOLIAN LETTER ALI GALI TA;Lo;0;L;;;;;N;;;;; 1891;MONGOLIAN LETTER ALI GALI DA;Lo;0;L;;;;;N;;;;; 1892;MONGOLIAN LETTER ALI GALI PA;Lo;0;L;;;;;N;;;;; 1893;MONGOLIAN LETTER ALI GALI PHA;Lo;0;L;;;;;N;;;;; 1894;MONGOLIAN LETTER ALI GALI SSA;Lo;0;L;;;;;N;;;;; 1895;MONGOLIAN LETTER ALI GALI ZHA;Lo;0;L;;;;;N;;;;; 1896;MONGOLIAN LETTER ALI GALI ZA;Lo;0;L;;;;;N;;;;; 1897;MONGOLIAN LETTER ALI GALI AH;Lo;0;L;;;;;N;;;;; 1898;MONGOLIAN LETTER TODO ALI GALI TA;Lo;0;L;;;;;N;;;;; 1899;MONGOLIAN LETTER TODO ALI GALI ZHA;Lo;0;L;;;;;N;;;;; 189A;MONGOLIAN LETTER MANCHU ALI GALI GHA;Lo;0;L;;;;;N;;;;; 189B;MONGOLIAN LETTER MANCHU ALI GALI NGA;Lo;0;L;;;;;N;;;;; 189C;MONGOLIAN LETTER MANCHU ALI GALI CA;Lo;0;L;;;;;N;;;;; 189D;MONGOLIAN LETTER MANCHU ALI GALI JHA;Lo;0;L;;;;;N;;;;; 189E;MONGOLIAN LETTER MANCHU ALI GALI TTA;Lo;0;L;;;;;N;;;;; 189F;MONGOLIAN LETTER MANCHU ALI GALI DDHA;Lo;0;L;;;;;N;;;;; 18A0;MONGOLIAN LETTER MANCHU ALI GALI TA;Lo;0;L;;;;;N;;;;; 18A1;MONGOLIAN LETTER MANCHU ALI GALI DHA;Lo;0;L;;;;;N;;;;; 18A2;MONGOLIAN LETTER MANCHU ALI GALI SSA;Lo;0;L;;;;;N;;;;; 18A3;MONGOLIAN LETTER MANCHU ALI GALI CYA;Lo;0;L;;;;;N;;;;; 18A4;MONGOLIAN LETTER MANCHU ALI GALI ZHA;Lo;0;L;;;;;N;;;;; 18A5;MONGOLIAN LETTER MANCHU ALI GALI ZA;Lo;0;L;;;;;N;;;;; 18A6;MONGOLIAN LETTER ALI GALI HALF U;Lo;0;L;;;;;N;;;;; 18A7;MONGOLIAN LETTER ALI GALI HALF YA;Lo;0;L;;;;;N;;;;; 18A8;MONGOLIAN LETTER MANCHU ALI GALI BHA;Lo;0;L;;;;;N;;;;; 18A9;MONGOLIAN LETTER ALI GALI DAGALGA;Mn;228;NSM;;;;;N;;;;; 1900;LIMBU VOWEL-CARRIER LETTER;Lo;0;L;;;;;N;;;;; 1901;LIMBU LETTER KA;Lo;0;L;;;;;N;;;;; 1902;LIMBU LETTER KHA;Lo;0;L;;;;;N;;;;; 1903;LIMBU LETTER GA;Lo;0;L;;;;;N;;;;; 1904;LIMBU LETTER GHA;Lo;0;L;;;;;N;;;;; 1905;LIMBU LETTER NGA;Lo;0;L;;;;;N;;;;; 1906;LIMBU LETTER CA;Lo;0;L;;;;;N;;;;; 1907;LIMBU LETTER CHA;Lo;0;L;;;;;N;;;;; 1908;LIMBU LETTER JA;Lo;0;L;;;;;N;;;;; 1909;LIMBU LETTER JHA;Lo;0;L;;;;;N;;;;; 190A;LIMBU LETTER YAN;Lo;0;L;;;;;N;;;;; 190B;LIMBU LETTER TA;Lo;0;L;;;;;N;;;;; 190C;LIMBU LETTER THA;Lo;0;L;;;;;N;;;;; 190D;LIMBU LETTER DA;Lo;0;L;;;;;N;;;;; 190E;LIMBU LETTER DHA;Lo;0;L;;;;;N;;;;; 190F;LIMBU LETTER NA;Lo;0;L;;;;;N;;;;; 1910;LIMBU LETTER PA;Lo;0;L;;;;;N;;;;; 1911;LIMBU LETTER PHA;Lo;0;L;;;;;N;;;;; 1912;LIMBU LETTER BA;Lo;0;L;;;;;N;;;;; 1913;LIMBU LETTER BHA;Lo;0;L;;;;;N;;;;; 1914;LIMBU LETTER MA;Lo;0;L;;;;;N;;;;; 1915;LIMBU LETTER YA;Lo;0;L;;;;;N;;;;; 1916;LIMBU LETTER RA;Lo;0;L;;;;;N;;;;; 1917;LIMBU LETTER LA;Lo;0;L;;;;;N;;;;; 1918;LIMBU LETTER WA;Lo;0;L;;;;;N;;;;; 1919;LIMBU LETTER SHA;Lo;0;L;;;;;N;;;;; 191A;LIMBU LETTER SSA;Lo;0;L;;;;;N;;;;; 191B;LIMBU LETTER SA;Lo;0;L;;;;;N;;;;; 191C;LIMBU LETTER HA;Lo;0;L;;;;;N;;;;; 1920;LIMBU VOWEL SIGN A;Mn;0;NSM;;;;;N;;;;; 1921;LIMBU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 1922;LIMBU VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 1923;LIMBU VOWEL SIGN EE;Mc;0;L;;;;;N;;;;; 1924;LIMBU VOWEL SIGN AI;Mc;0;L;;;;;N;;;;; 1925;LIMBU VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; 1926;LIMBU VOWEL SIGN AU;Mc;0;L;;;;;N;;;;; 1927;LIMBU VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; 1928;LIMBU VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; 1929;LIMBU SUBJOINED LETTER YA;Mc;0;NSM;;;;;N;;;;; 192A;LIMBU SUBJOINED LETTER RA;Mc;0;NSM;;;;;N;;;;; 192B;LIMBU SUBJOINED LETTER WA;Mc;0;NSM;;;;;N;;;;; 1930;LIMBU SMALL LETTER KA;Mc;0;L;;;;;N;;;;; 1931;LIMBU SMALL LETTER NGA;Mc;0;L;;;;;N;;;;; 1932;LIMBU SMALL LETTER ANUSVARA;Mn;0;NSM;;;;;N;;;;; 1933;LIMBU SMALL LETTER TA;Mc;0;L;;;;;N;;;;; 1934;LIMBU SMALL LETTER NA;Mc;0;L;;;;;N;;;;; 1935;LIMBU SMALL LETTER PA;Mc;0;L;;;;;N;;;;; 1936;LIMBU SMALL LETTER MA;Mc;0;L;;;;;N;;;;; 1937;LIMBU SMALL LETTER RA;Mc;0;L;;;;;N;;;;; 1938;LIMBU SMALL LETTER LA;Mc;0;L;;;;;N;;;;; 1939;LIMBU SIGN MUKPHRENG;Mn;222;NSM;;;;;N;;;;; 193A;LIMBU SIGN KEMPHRENG;Mn;230;NSM;;;;;N;;;;; 193B;LIMBU SIGN SA-I;Mn;220;NSM;;;;;N;;;;; 1940;LIMBU SIGN LOO;So;0;ON;;;;;N;;;;; 1944;LIMBU EXCLAMATION MARK;Po;0;ON;;;;;N;;;;; 1945;LIMBU QUESTION MARK;Po;0;ON;;;;;N;;;;; 1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1950;TAI LE LETTER KA;Lo;0;L;;;;;N;;;;; 1951;TAI LE LETTER XA;Lo;0;L;;;;;N;;;;; 1952;TAI LE LETTER NGA;Lo;0;L;;;;;N;;;;; 1953;TAI LE LETTER TSA;Lo;0;L;;;;;N;;;;; 1954;TAI LE LETTER SA;Lo;0;L;;;;;N;;;;; 1955;TAI LE LETTER YA;Lo;0;L;;;;;N;;;;; 1956;TAI LE LETTER TA;Lo;0;L;;;;;N;;;;; 1957;TAI LE LETTER THA;Lo;0;L;;;;;N;;;;; 1958;TAI LE LETTER LA;Lo;0;L;;;;;N;;;;; 1959;TAI LE LETTER PA;Lo;0;L;;;;;N;;;;; 195A;TAI LE LETTER PHA;Lo;0;L;;;;;N;;;;; 195B;TAI LE LETTER MA;Lo;0;L;;;;;N;;;;; 195C;TAI LE LETTER FA;Lo;0;L;;;;;N;;;;; 195D;TAI LE LETTER VA;Lo;0;L;;;;;N;;;;; 195E;TAI LE LETTER HA;Lo;0;L;;;;;N;;;;; 195F;TAI LE LETTER QA;Lo;0;L;;;;;N;;;;; 1960;TAI LE LETTER KHA;Lo;0;L;;;;;N;;;;; 1961;TAI LE LETTER TSHA;Lo;0;L;;;;;N;;;;; 1962;TAI LE LETTER NA;Lo;0;L;;;;;N;;;;; 1963;TAI LE LETTER A;Lo;0;L;;;;;N;;;;; 1964;TAI LE LETTER I;Lo;0;L;;;;;N;;;;; 1965;TAI LE LETTER EE;Lo;0;L;;;;;N;;;;; 1966;TAI LE LETTER EH;Lo;0;L;;;;;N;;;;; 1967;TAI LE LETTER U;Lo;0;L;;;;;N;;;;; 1968;TAI LE LETTER OO;Lo;0;L;;;;;N;;;;; 1969;TAI LE LETTER O;Lo;0;L;;;;;N;;;;; 196A;TAI LE LETTER UE;Lo;0;L;;;;;N;;;;; 196B;TAI LE LETTER E;Lo;0;L;;;;;N;;;;; 196C;TAI LE LETTER AUE;Lo;0;L;;;;;N;;;;; 196D;TAI LE LETTER AI;Lo;0;L;;;;;N;;;;; 1970;TAI LE LETTER TONE-2;Lo;0;L;;;;;N;;;;; 1971;TAI LE LETTER TONE-3;Lo;0;L;;;;;N;;;;; 1972;TAI LE LETTER TONE-4;Lo;0;L;;;;;N;;;;; 1973;TAI LE LETTER TONE-5;Lo;0;L;;;;;N;;;;; 1974;TAI LE LETTER TONE-6;Lo;0;L;;;;;N;;;;; 1980;NEW TAI LUE LETTER HIGH QA;Lo;0;L;;;;;N;;;;; 1981;NEW TAI LUE LETTER LOW QA;Lo;0;L;;;;;N;;;;; 1982;NEW TAI LUE LETTER HIGH KA;Lo;0;L;;;;;N;;;;; 1983;NEW TAI LUE LETTER HIGH XA;Lo;0;L;;;;;N;;;;; 1984;NEW TAI LUE LETTER HIGH NGA;Lo;0;L;;;;;N;;;;; 1985;NEW TAI LUE LETTER LOW KA;Lo;0;L;;;;;N;;;;; 1986;NEW TAI LUE LETTER LOW XA;Lo;0;L;;;;;N;;;;; 1987;NEW TAI LUE LETTER LOW NGA;Lo;0;L;;;;;N;;;;; 1988;NEW TAI LUE LETTER HIGH TSA;Lo;0;L;;;;;N;;;;; 1989;NEW TAI LUE LETTER HIGH SA;Lo;0;L;;;;;N;;;;; 198A;NEW TAI LUE LETTER HIGH YA;Lo;0;L;;;;;N;;;;; 198B;NEW TAI LUE LETTER LOW TSA;Lo;0;L;;;;;N;;;;; 198C;NEW TAI LUE LETTER LOW SA;Lo;0;L;;;;;N;;;;; 198D;NEW TAI LUE LETTER LOW YA;Lo;0;L;;;;;N;;;;; 198E;NEW TAI LUE LETTER HIGH TA;Lo;0;L;;;;;N;;;;; 198F;NEW TAI LUE LETTER HIGH THA;Lo;0;L;;;;;N;;;;; 1990;NEW TAI LUE LETTER HIGH NA;Lo;0;L;;;;;N;;;;; 1991;NEW TAI LUE LETTER LOW TA;Lo;0;L;;;;;N;;;;; 1992;NEW TAI LUE LETTER LOW THA;Lo;0;L;;;;;N;;;;; 1993;NEW TAI LUE LETTER LOW NA;Lo;0;L;;;;;N;;;;; 1994;NEW TAI LUE LETTER HIGH PA;Lo;0;L;;;;;N;;;;; 1995;NEW TAI LUE LETTER HIGH PHA;Lo;0;L;;;;;N;;;;; 1996;NEW TAI LUE LETTER HIGH MA;Lo;0;L;;;;;N;;;;; 1997;NEW TAI LUE LETTER LOW PA;Lo;0;L;;;;;N;;;;; 1998;NEW TAI LUE LETTER LOW PHA;Lo;0;L;;;;;N;;;;; 1999;NEW TAI LUE LETTER LOW MA;Lo;0;L;;;;;N;;;;; 199A;NEW TAI LUE LETTER HIGH FA;Lo;0;L;;;;;N;;;;; 199B;NEW TAI LUE LETTER HIGH VA;Lo;0;L;;;;;N;;;;; 199C;NEW TAI LUE LETTER HIGH LA;Lo;0;L;;;;;N;;;;; 199D;NEW TAI LUE LETTER LOW FA;Lo;0;L;;;;;N;;;;; 199E;NEW TAI LUE LETTER LOW VA;Lo;0;L;;;;;N;;;;; 199F;NEW TAI LUE LETTER LOW LA;Lo;0;L;;;;;N;;;;; 19A0;NEW TAI LUE LETTER HIGH HA;Lo;0;L;;;;;N;;;;; 19A1;NEW TAI LUE LETTER HIGH DA;Lo;0;L;;;;;N;;;;; 19A2;NEW TAI LUE LETTER HIGH BA;Lo;0;L;;;;;N;;;;; 19A3;NEW TAI LUE LETTER LOW HA;Lo;0;L;;;;;N;;;;; 19A4;NEW TAI LUE LETTER LOW DA;Lo;0;L;;;;;N;;;;; 19A5;NEW TAI LUE LETTER LOW BA;Lo;0;L;;;;;N;;;;; 19A6;NEW TAI LUE LETTER HIGH KVA;Lo;0;L;;;;;N;;;;; 19A7;NEW TAI LUE LETTER HIGH XVA;Lo;0;L;;;;;N;;;;; 19A8;NEW TAI LUE LETTER LOW KVA;Lo;0;L;;;;;N;;;;; 19A9;NEW TAI LUE LETTER LOW XVA;Lo;0;L;;;;;N;;;;; 19B0;NEW TAI LUE VOWEL SIGN VOWEL SHORTENER;Mc;0;L;;;;;N;;;;; 19B1;NEW TAI LUE VOWEL SIGN AA;Mc;0;L;;;;;N;;;;; 19B2;NEW TAI LUE VOWEL SIGN II;Mc;0;L;;;;;N;;;;; 19B3;NEW TAI LUE VOWEL SIGN U;Mc;0;L;;;;;N;;;;; 19B4;NEW TAI LUE VOWEL SIGN UU;Mc;0;L;;;;;N;;;;; 19B5;NEW TAI LUE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 19B6;NEW TAI LUE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; 19B7;NEW TAI LUE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; 19B8;NEW TAI LUE VOWEL SIGN OA;Mc;0;L;;;;;N;;;;; 19B9;NEW TAI LUE VOWEL SIGN UE;Mc;0;L;;;;;N;;;;; 19BA;NEW TAI LUE VOWEL SIGN AY;Mc;0;L;;;;;N;;;;; 19BB;NEW TAI LUE VOWEL SIGN AAY;Mc;0;L;;;;;N;;;;; 19BC;NEW TAI LUE VOWEL SIGN UY;Mc;0;L;;;;;N;;;;; 19BD;NEW TAI LUE VOWEL SIGN OY;Mc;0;L;;;;;N;;;;; 19BE;NEW TAI LUE VOWEL SIGN OAY;Mc;0;L;;;;;N;;;;; 19BF;NEW TAI LUE VOWEL SIGN UEY;Mc;0;L;;;;;N;;;;; 19C0;NEW TAI LUE VOWEL SIGN IY;Mc;0;L;;;;;N;;;;; 19C1;NEW TAI LUE LETTER FINAL V;Lo;0;L;;;;;N;;;;; 19C2;NEW TAI LUE LETTER FINAL NG;Lo;0;L;;;;;N;;;;; 19C3;NEW TAI LUE LETTER FINAL N;Lo;0;L;;;;;N;;;;; 19C4;NEW TAI LUE LETTER FINAL M;Lo;0;L;;;;;N;;;;; 19C5;NEW TAI LUE LETTER FINAL K;Lo;0;L;;;;;N;;;;; 19C6;NEW TAI LUE LETTER FINAL D;Lo;0;L;;;;;N;;;;; 19C7;NEW TAI LUE LETTER FINAL B;Lo;0;L;;;;;N;;;;; 19C8;NEW TAI LUE TONE MARK-1;Mc;0;L;;;;;N;;;;; 19C9;NEW TAI LUE TONE MARK-2;Mc;0;L;;;;;N;;;;; 19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 19DE;NEW TAI LUE SIGN LAE;Po;0;ON;;;;;N;;;;; 19DF;NEW TAI LUE SIGN LAEV;Po;0;ON;;;;;N;;;;; 19E0;KHMER SYMBOL PATHAMASAT;So;0;ON;;;;;N;;;;; 19E1;KHMER SYMBOL MUOY KOET;So;0;ON;;;;;N;;;;; 19E2;KHMER SYMBOL PII KOET;So;0;ON;;;;;N;;;;; 19E3;KHMER SYMBOL BEI KOET;So;0;ON;;;;;N;;;;; 19E4;KHMER SYMBOL BUON KOET;So;0;ON;;;;;N;;;;; 19E5;KHMER SYMBOL PRAM KOET;So;0;ON;;;;;N;;;;; 19E6;KHMER SYMBOL PRAM-MUOY KOET;So;0;ON;;;;;N;;;;; 19E7;KHMER SYMBOL PRAM-PII KOET;So;0;ON;;;;;N;;;;; 19E8;KHMER SYMBOL PRAM-BEI KOET;So;0;ON;;;;;N;;;;; 19E9;KHMER SYMBOL PRAM-BUON KOET;So;0;ON;;;;;N;;;;; 19EA;KHMER SYMBOL DAP KOET;So;0;ON;;;;;N;;;;; 19EB;KHMER SYMBOL DAP-MUOY KOET;So;0;ON;;;;;N;;;;; 19EC;KHMER SYMBOL DAP-PII KOET;So;0;ON;;;;;N;;;;; 19ED;KHMER SYMBOL DAP-BEI KOET;So;0;ON;;;;;N;;;;; 19EE;KHMER SYMBOL DAP-BUON KOET;So;0;ON;;;;;N;;;;; 19EF;KHMER SYMBOL DAP-PRAM KOET;So;0;ON;;;;;N;;;;; 19F0;KHMER SYMBOL TUTEYASAT;So;0;ON;;;;;N;;;;; 19F1;KHMER SYMBOL MUOY ROC;So;0;ON;;;;;N;;;;; 19F2;KHMER SYMBOL PII ROC;So;0;ON;;;;;N;;;;; 19F3;KHMER SYMBOL BEI ROC;So;0;ON;;;;;N;;;;; 19F4;KHMER SYMBOL BUON ROC;So;0;ON;;;;;N;;;;; 19F5;KHMER SYMBOL PRAM ROC;So;0;ON;;;;;N;;;;; 19F6;KHMER SYMBOL PRAM-MUOY ROC;So;0;ON;;;;;N;;;;; 19F7;KHMER SYMBOL PRAM-PII ROC;So;0;ON;;;;;N;;;;; 19F8;KHMER SYMBOL PRAM-BEI ROC;So;0;ON;;;;;N;;;;; 19F9;KHMER SYMBOL PRAM-BUON ROC;So;0;ON;;;;;N;;;;; 19FA;KHMER SYMBOL DAP ROC;So;0;ON;;;;;N;;;;; 19FB;KHMER SYMBOL DAP-MUOY ROC;So;0;ON;;;;;N;;;;; 19FC;KHMER SYMBOL DAP-PII ROC;So;0;ON;;;;;N;;;;; 19FD;KHMER SYMBOL DAP-BEI ROC;So;0;ON;;;;;N;;;;; 19FE;KHMER SYMBOL DAP-BUON ROC;So;0;ON;;;;;N;;;;; 19FF;KHMER SYMBOL DAP-PRAM ROC;So;0;ON;;;;;N;;;;; 1A00;BUGINESE LETTER KA;Lo;0;L;;;;;N;;;;; 1A01;BUGINESE LETTER GA;Lo;0;L;;;;;N;;;;; 1A02;BUGINESE LETTER NGA;Lo;0;L;;;;;N;;;;; 1A03;BUGINESE LETTER NGKA;Lo;0;L;;;;;N;;;;; 1A04;BUGINESE LETTER PA;Lo;0;L;;;;;N;;;;; 1A05;BUGINESE LETTER BA;Lo;0;L;;;;;N;;;;; 1A06;BUGINESE LETTER MA;Lo;0;L;;;;;N;;;;; 1A07;BUGINESE LETTER MPA;Lo;0;L;;;;;N;;;;; 1A08;BUGINESE LETTER TA;Lo;0;L;;;;;N;;;;; 1A09;BUGINESE LETTER DA;Lo;0;L;;;;;N;;;;; 1A0A;BUGINESE LETTER NA;Lo;0;L;;;;;N;;;;; 1A0B;BUGINESE LETTER NRA;Lo;0;L;;;;;N;;;;; 1A0C;BUGINESE LETTER CA;Lo;0;L;;;;;N;;;;; 1A0D;BUGINESE LETTER JA;Lo;0;L;;;;;N;;;;; 1A0E;BUGINESE LETTER NYA;Lo;0;L;;;;;N;;;;; 1A0F;BUGINESE LETTER NYCA;Lo;0;L;;;;;N;;;;; 1A10;BUGINESE LETTER YA;Lo;0;L;;;;;N;;;;; 1A11;BUGINESE LETTER RA;Lo;0;L;;;;;N;;;;; 1A12;BUGINESE LETTER LA;Lo;0;L;;;;;N;;;;; 1A13;BUGINESE LETTER VA;Lo;0;L;;;;;N;;;;; 1A14;BUGINESE LETTER SA;Lo;0;L;;;;;N;;;;; 1A15;BUGINESE LETTER A;Lo;0;L;;;;;N;;;;; 1A16;BUGINESE LETTER HA;Lo;0;L;;;;;N;;;;; 1A17;BUGINESE VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;; 1A18;BUGINESE VOWEL SIGN U;Mn;220;NSM;;;;;N;;;;; 1A19;BUGINESE VOWEL SIGN E;Mc;0;L;;;;;N;;;;; 1A1A;BUGINESE VOWEL SIGN O;Mc;0;L;;;;;N;;;;; 1A1B;BUGINESE VOWEL SIGN AE;Mc;0;L;;;;;N;;;;; 1A1E;BUGINESE PALLAWA;Po;0;L;;;;;N;;;;; 1A1F;BUGINESE END OF SECTION;Po;0;L;;;;;N;;;;; 1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;ardhacandra;;; 1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;candrabindu;;; 1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;anusvara;;; 1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;repha;;; 1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;visarga;;; 1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;a;;; 1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;aa;;; 1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;i;;; 1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;ii;;; 1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;u;;; 1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;uu;;; 1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;vocalic r;;; 1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;vocalic rr;;; 1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;vocalic l;;; 1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;vocalic ll;;; 1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;e;;; 1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;ai;;; 1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;o;;; 1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;au;;; 1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;; 1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;kha;;; 1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;; 1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;gha;;; 1B17;BALINESE LETTER NGA;Lo;0;L;;;;;N;;;;; 1B18;BALINESE LETTER CA;Lo;0;L;;;;;N;;;;; 1B19;BALINESE LETTER CA LACA;Lo;0;L;;;;;N;;cha;;; 1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;; 1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;jha;;; 1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;; 1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;tta;;; 1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ttha;;; 1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;dda;;; 1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;ddha;;; 1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;nna;;; 1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;; 1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;tha;;; 1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;; 1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;dha;;; 1B26;BALINESE LETTER NA;Lo;0;L;;;;;N;;;;; 1B27;BALINESE LETTER PA;Lo;0;L;;;;;N;;;;; 1B28;BALINESE LETTER PA KAPAL;Lo;0;L;;;;;N;;pha;;; 1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;; 1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;bha;;; 1B2B;BALINESE LETTER MA;Lo;0;L;;;;;N;;;;; 1B2C;BALINESE LETTER YA;Lo;0;L;;;;;N;;;;; 1B2D;BALINESE LETTER RA;Lo;0;L;;;;;N;;;;; 1B2E;BALINESE LETTER LA;Lo;0;L;;;;;N;;;;; 1B2F;BALINESE LETTER WA;Lo;0;L;;;;;N;;;;; 1B30;BALINESE LETTER SA SAGA;Lo;0;L;;;;;N;;sha;;; 1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;ssa;;; 1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;; 1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;; 1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;nukta;;; 1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;aa;;; 1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;i;;; 1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;ii;;; 1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;u;;; 1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;uu;;; 1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;vocalic r;;; 1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;vocalic rr;;; 1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;vocalic l;;; 1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;vocalic ll;;; 1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;e;;; 1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;ai;;; 1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;o;;; 1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;au;;; 1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;ae;;; 1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;oe;;; 1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;virama;;; 1B45;BALINESE LETTER KAF SASAK;Lo;0;L;;;;;N;;;;; 1B46;BALINESE LETTER KHOT SASAK;Lo;0;L;;;;;N;;;;; 1B47;BALINESE LETTER TZIR SASAK;Lo;0;L;;;;;N;;;;; 1B48;BALINESE LETTER EF SASAK;Lo;0;L;;;;;N;;;;; 1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;; 1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;; 1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;; 1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 1B5A;BALINESE PANTI;Po;0;L;;;;;N;;section;;; 1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;honorific section;;; 1B5C;BALINESE WINDU;Po;0;L;;;;;N;;punctuation ring;;; 1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;colon;;; 1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;danda;;; 1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;double danda;;; 1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;line-breaking hyphen;;; 1B61;BALINESE MUSICAL SYMBOL DONG;So;0;L;;;;;N;;;;; 1B62;BALINESE MUSICAL SYMBOL DENG;So;0;L;;;;;N;;;;; 1B63;BALINESE MUSICAL SYMBOL DUNG;So;0;L;;;;;N;;;;; 1B64;BALINESE MUSICAL SYMBOL DANG;So;0;L;;;;;N;;;;; 1B65;BALINESE MUSICAL SYMBOL DANG SURANG;So;0;L;;;;;N;;;;; 1B66;BALINESE MUSICAL SYMBOL DING;So;0;L;;;;;N;;;;; 1B67;BALINESE MUSICAL SYMBOL DAENG;So;0;L;;;;;N;;;;; 1B68;BALINESE MUSICAL SYMBOL DEUNG;So;0;L;;;;;N;;;;; 1B69;BALINESE MUSICAL SYMBOL DAING;So;0;L;;;;;N;;;;; 1B6A;BALINESE MUSICAL SYMBOL DANG GEDE;So;0;L;;;;;N;;;;; 1B6B;BALINESE MUSICAL SYMBOL COMBINING TEGEH;Mn;230;NSM;;;;;N;;;;; 1B6C;BALINESE MUSICAL SYMBOL COMBINING ENDEP;Mn;220;NSM;;;;;N;;;;; 1B6D;BALINESE MUSICAL SYMBOL COMBINING KEMPUL;Mn;230;NSM;;;;;N;;;;; 1B6E;BALINESE MUSICAL SYMBOL COMBINING KEMPLI;Mn;230;NSM;;;;;N;;;;; 1B6F;BALINESE MUSICAL SYMBOL COMBINING JEGOGAN;Mn;230;NSM;;;;;N;;;;; 1B70;BALINESE MUSICAL SYMBOL COMBINING KEMPUL WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; 1B71;BALINESE MUSICAL SYMBOL COMBINING KEMPLI WITH JEGOGAN;Mn;230;NSM;;;;;N;;;;; 1B72;BALINESE MUSICAL SYMBOL COMBINING BENDE;Mn;230;NSM;;;;;N;;;;; 1B73;BALINESE MUSICAL SYMBOL COMBINING GONG;Mn;230;NSM;;;;;N;;;;; 1B74;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG;So;0;L;;;;;N;;;;; 1B75;BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DAG;So;0;L;;;;;N;;;;; 1B76;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TUK;So;0;L;;;;;N;;;;; 1B77;BALINESE MUSICAL SYMBOL RIGHT-HAND CLOSED TAK;So;0;L;;;;;N;;;;; 1B78;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PANG;So;0;L;;;;;N;;;;; 1B79;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PUNG;So;0;L;;;;;N;;;;; 1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;; 1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;; 1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;; 1D00;LATIN LETTER SMALL CAPITAL A;Ll;0;L;;;;;N;;;;; 1D01;LATIN LETTER SMALL CAPITAL AE;Ll;0;L;;;;;N;;;;; 1D02;LATIN SMALL LETTER TURNED AE;Ll;0;L;;;;;N;;;;; 1D03;LATIN LETTER SMALL CAPITAL BARRED B;Ll;0;L;;;;;N;;;;; 1D04;LATIN LETTER SMALL CAPITAL C;Ll;0;L;;;;;N;;;;; 1D05;LATIN LETTER SMALL CAPITAL D;Ll;0;L;;;;;N;;;;; 1D06;LATIN LETTER SMALL CAPITAL ETH;Ll;0;L;;;;;N;;;;; 1D07;LATIN LETTER SMALL CAPITAL E;Ll;0;L;;;;;N;;;;; 1D08;LATIN SMALL LETTER TURNED OPEN E;Ll;0;L;;;;;N;;;;; 1D09;LATIN SMALL LETTER TURNED I;Ll;0;L;;;;;N;;;;; 1D0A;LATIN LETTER SMALL CAPITAL J;Ll;0;L;;;;;N;;;;; 1D0B;LATIN LETTER SMALL CAPITAL K;Ll;0;L;;;;;N;;;;; 1D0C;LATIN LETTER SMALL CAPITAL L WITH STROKE;Ll;0;L;;;;;N;;;;; 1D0D;LATIN LETTER SMALL CAPITAL M;Ll;0;L;;;;;N;;;;; 1D0E;LATIN LETTER SMALL CAPITAL REVERSED N;Ll;0;L;;;;;N;;;;; 1D0F;LATIN LETTER SMALL CAPITAL O;Ll;0;L;;;;;N;;;;; 1D10;LATIN LETTER SMALL CAPITAL OPEN O;Ll;0;L;;;;;N;;;;; 1D11;LATIN SMALL LETTER SIDEWAYS O;Ll;0;L;;;;;N;;;;; 1D12;LATIN SMALL LETTER SIDEWAYS OPEN O;Ll;0;L;;;;;N;;;;; 1D13;LATIN SMALL LETTER SIDEWAYS O WITH STROKE;Ll;0;L;;;;;N;;;;; 1D14;LATIN SMALL LETTER TURNED OE;Ll;0;L;;;;;N;;;;; 1D15;LATIN LETTER SMALL CAPITAL OU;Ll;0;L;;;;;N;;;;; 1D16;LATIN SMALL LETTER TOP HALF O;Ll;0;L;;;;;N;;;;; 1D17;LATIN SMALL LETTER BOTTOM HALF O;Ll;0;L;;;;;N;;;;; 1D18;LATIN LETTER SMALL CAPITAL P;Ll;0;L;;;;;N;;;;; 1D19;LATIN LETTER SMALL CAPITAL REVERSED R;Ll;0;L;;;;;N;;;;; 1D1A;LATIN LETTER SMALL CAPITAL TURNED R;Ll;0;L;;;;;N;;;;; 1D1B;LATIN LETTER SMALL CAPITAL T;Ll;0;L;;;;;N;;;;; 1D1C;LATIN LETTER SMALL CAPITAL U;Ll;0;L;;;;;N;;;;; 1D1D;LATIN SMALL LETTER SIDEWAYS U;Ll;0;L;;;;;N;;;;; 1D1E;LATIN SMALL LETTER SIDEWAYS DIAERESIZED U;Ll;0;L;;;;;N;;;;; 1D1F;LATIN SMALL LETTER SIDEWAYS TURNED M;Ll;0;L;;;;;N;;;;; 1D20;LATIN LETTER SMALL CAPITAL V;Ll;0;L;;;;;N;;;;; 1D21;LATIN LETTER SMALL CAPITAL W;Ll;0;L;;;;;N;;;;; 1D22;LATIN LETTER SMALL CAPITAL Z;Ll;0;L;;;;;N;;;;; 1D23;LATIN LETTER SMALL CAPITAL EZH;Ll;0;L;;;;;N;;;;; 1D24;LATIN LETTER VOICED LARYNGEAL SPIRANT;Ll;0;L;;;;;N;;;;; 1D25;LATIN LETTER AIN;Ll;0;L;;;;;N;;;;; 1D26;GREEK LETTER SMALL CAPITAL GAMMA;Ll;0;L;;;;;N;;;;; 1D27;GREEK LETTER SMALL CAPITAL LAMDA;Ll;0;L;;;;;N;;;;; 1D28;GREEK LETTER SMALL CAPITAL PI;Ll;0;L;;;;;N;;;;; 1D29;GREEK LETTER SMALL CAPITAL RHO;Ll;0;L;;;;;N;;;;; 1D2A;GREEK LETTER SMALL CAPITAL PSI;Ll;0;L;;;;;N;;;;; 1D2B;CYRILLIC LETTER SMALL CAPITAL EL;Ll;0;L;;;;;N;;;;; 1D2C;MODIFIER LETTER CAPITAL A;Lm;0;L; 0041;;;;N;;;;; 1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L; 00C6;;;;N;;;;; 1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L; 0042;;;;N;;;;; 1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;; 1D30;MODIFIER LETTER CAPITAL D;Lm;0;L; 0044;;;;N;;;;; 1D31;MODIFIER LETTER CAPITAL E;Lm;0;L; 0045;;;;N;;;;; 1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L; 018E;;;;N;;;;; 1D33;MODIFIER LETTER CAPITAL G;Lm;0;L; 0047;;;;N;;;;; 1D34;MODIFIER LETTER CAPITAL H;Lm;0;L; 0048;;;;N;;;;; 1D35;MODIFIER LETTER CAPITAL I;Lm;0;L; 0049;;;;N;;;;; 1D36;MODIFIER LETTER CAPITAL J;Lm;0;L; 004A;;;;N;;;;; 1D37;MODIFIER LETTER CAPITAL K;Lm;0;L; 004B;;;;N;;;;; 1D38;MODIFIER LETTER CAPITAL L;Lm;0;L; 004C;;;;N;;;;; 1D39;MODIFIER LETTER CAPITAL M;Lm;0;L; 004D;;;;N;;;;; 1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L; 004E;;;;N;;;;; 1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;; 1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L; 004F;;;;N;;;;; 1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L; 0222;;;;N;;;;; 1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L; 0050;;;;N;;;;; 1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L; 0052;;;;N;;;;; 1D40;MODIFIER LETTER CAPITAL T;Lm;0;L; 0054;;;;N;;;;; 1D41;MODIFIER LETTER CAPITAL U;Lm;0;L; 0055;;;;N;;;;; 1D42;MODIFIER LETTER CAPITAL W;Lm;0;L; 0057;;;;N;;;;; 1D43;MODIFIER LETTER SMALL A;Lm;0;L; 0061;;;;N;;;;; 1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L; 0250;;;;N;;;;; 1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L; 0251;;;;N;;;;; 1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L; 1D02;;;;N;;;;; 1D47;MODIFIER LETTER SMALL B;Lm;0;L; 0062;;;;N;;;;; 1D48;MODIFIER LETTER SMALL D;Lm;0;L; 0064;;;;N;;;;; 1D49;MODIFIER LETTER SMALL E;Lm;0;L; 0065;;;;N;;;;; 1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L; 0259;;;;N;;;;; 1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L; 025B;;;;N;;;;; 1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L; 025C;;;;N;;;;; 1D4D;MODIFIER LETTER SMALL G;Lm;0;L; 0067;;;;N;;;;; 1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;; 1D4F;MODIFIER LETTER SMALL K;Lm;0;L; 006B;;;;N;;;;; 1D50;MODIFIER LETTER SMALL M;Lm;0;L; 006D;;;;N;;;;; 1D51;MODIFIER LETTER SMALL ENG;Lm;0;L; 014B;;;;N;;;;; 1D52;MODIFIER LETTER SMALL O;Lm;0;L; 006F;;;;N;;;;; 1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L; 0254;;;;N;;;;; 1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L; 1D16;;;;N;;;;; 1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L; 1D17;;;;N;;;;; 1D56;MODIFIER LETTER SMALL P;Lm;0;L; 0070;;;;N;;;;; 1D57;MODIFIER LETTER SMALL T;Lm;0;L; 0074;;;;N;;;;; 1D58;MODIFIER LETTER SMALL U;Lm;0;L; 0075;;;;N;;;;; 1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L; 1D1D;;;;N;;;;; 1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L; 026F;;;;N;;;;; 1D5B;MODIFIER LETTER SMALL V;Lm;0;L; 0076;;;;N;;;;; 1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L; 1D25;;;;N;;;;; 1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L; 03B2;;;;N;;;;; 1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L; 03B3;;;;N;;;;; 1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L; 03B4;;;;N;;;;; 1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L; 03C6;;;;N;;;;; 1D61;MODIFIER LETTER SMALL CHI;Lm;0;L; 03C7;;;;N;;;;; 1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; 1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L; 0072;;;;N;;;;; 1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L; 0075;;;;N;;;;; 1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L; 0076;;;;N;;;;; 1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L; 03B2;;;;N;;;;; 1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L; 03B3;;;;N;;;;; 1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L; 03C1;;;;N;;;;; 1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L; 03C6;;;;N;;;;; 1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L; 03C7;;;;N;;;;; 1D6B;LATIN SMALL LETTER UE;Ll;0;L;;;;;N;;;;; 1D6C;LATIN SMALL LETTER B WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D6D;LATIN SMALL LETTER D WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D6E;LATIN SMALL LETTER F WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D6F;LATIN SMALL LETTER M WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D70;LATIN SMALL LETTER N WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D71;LATIN SMALL LETTER P WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D72;LATIN SMALL LETTER R WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D73;LATIN SMALL LETTER R WITH FISHHOOK AND MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D74;LATIN SMALL LETTER S WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D75;LATIN SMALL LETTER T WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D76;LATIN SMALL LETTER Z WITH MIDDLE TILDE;Ll;0;L;;;;;N;;;;; 1D77;LATIN SMALL LETTER TURNED G;Ll;0;L;;;;;N;;;;; 1D78;MODIFIER LETTER CYRILLIC EN;Lm;0;L; 043D;;;;N;;;;; 1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;;; 1D7A;LATIN SMALL LETTER TH WITH STRIKETHROUGH;Ll;0;L;;;;;N;;;;; 1D7B;LATIN SMALL CAPITAL LETTER I WITH STROKE;Ll;0;L;;;;;N;;;;; 1D7C;LATIN SMALL LETTER IOTA WITH STROKE;Ll;0;L;;;;;N;;;;; 1D7D;LATIN SMALL LETTER P WITH STROKE;Ll;0;L;;;;;N;;;2C63;;2C63 1D7E;LATIN SMALL CAPITAL LETTER U WITH STROKE;Ll;0;L;;;;;N;;;;; 1D7F;LATIN SMALL LETTER UPSILON WITH STROKE;Ll;0;L;;;;;N;;;;; 1D80;LATIN SMALL LETTER B WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D81;LATIN SMALL LETTER D WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D82;LATIN SMALL LETTER F WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D83;LATIN SMALL LETTER G WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D84;LATIN SMALL LETTER K WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D85;LATIN SMALL LETTER L WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D86;LATIN SMALL LETTER M WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D87;LATIN SMALL LETTER N WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D88;LATIN SMALL LETTER P WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D89;LATIN SMALL LETTER R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D8A;LATIN SMALL LETTER S WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D8B;LATIN SMALL LETTER ESH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D8C;LATIN SMALL LETTER V WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D8D;LATIN SMALL LETTER X WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D8E;LATIN SMALL LETTER Z WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;; 1D8F;LATIN SMALL LETTER A WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D90;LATIN SMALL LETTER ALPHA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D91;LATIN SMALL LETTER D WITH HOOK AND TAIL;Ll;0;L;;;;;N;;;;; 1D92;LATIN SMALL LETTER E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D93;LATIN SMALL LETTER OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D94;LATIN SMALL LETTER REVERSED OPEN E WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D95;LATIN SMALL LETTER SCHWA WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D96;LATIN SMALL LETTER I WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D97;LATIN SMALL LETTER OPEN O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D98;LATIN SMALL LETTER ESH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D99;LATIN SMALL LETTER U WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D9A;LATIN SMALL LETTER EZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;; 1D9B;MODIFIER LETTER SMALL TURNED ALPHA;Lm;0;L; 0252;;;;N;;;;; 1D9C;MODIFIER LETTER SMALL C;Lm;0;L; 0063;;;;N;;;;; 1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L; 0255;;;;N;;;;; 1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L; 00F0;;;;N;;;;; 1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L; 025C;;;;N;;;;; 1DA0;MODIFIER LETTER SMALL F;Lm;0;L; 0066;;;;N;;;;; 1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L; 025F;;;;N;;;;; 1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L; 0261;;;;N;;;;; 1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L; 0265;;;;N;;;;; 1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L; 0268;;;;N;;;;; 1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L; 0269;;;;N;;;;; 1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L; 026A;;;;N;;;;; 1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L; 1D7B;;;;N;;;;; 1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L; 029D;;;;N;;;;; 1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L; 026D;;;;N;;;;; 1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L; 1D85;;;;N;;;;; 1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L; 029F;;;;N;;;;; 1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L; 0271;;;;N;;;;; 1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L; 0270;;;;N;;;;; 1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L; 0272;;;;N;;;;; 1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L; 0273;;;;N;;;;; 1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L; 0274;;;;N;;;;; 1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L; 0275;;;;N;;;;; 1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L; 0278;;;;N;;;;; 1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L; 0282;;;;N;;;;; 1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L; 0283;;;;N;;;;; 1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L; 01AB;;;;N;;;;; 1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L; 0289;;;;N;;;;; 1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L; 028A;;;;N;;;;; 1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L; 1D1C;;;;N;;;;; 1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L; 028B;;;;N;;;;; 1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L; 028C;;;;N;;;;; 1DBB;MODIFIER LETTER SMALL Z;Lm;0;L; 007A;;;;N;;;;; 1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L; 0290;;;;N;;;;; 1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L; 0291;;;;N;;;;; 1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L; 0292;;;;N;;;;; 1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L; 03B8;;;;N;;;;; 1DC0;COMBINING DOTTED GRAVE ACCENT;Mn;230;NSM;;;;;N;;;;; 1DC1;COMBINING DOTTED ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;; 1DC2;COMBINING SNAKE BELOW;Mn;220;NSM;;;;;N;;;;; 1DC3;COMBINING SUSPENSION MARK;Mn;230;NSM;;;;;N;;;;; 1DC4;COMBINING MACRON-ACUTE;Mn;230;NSM;;;;;N;;;;; 1DC5;COMBINING GRAVE-MACRON;Mn;230;NSM;;;;;N;;;;; 1DC6;COMBINING MACRON-GRAVE;Mn;230;NSM;;;;;N;;;;; 1DC7;COMBINING ACUTE-MACRON;Mn;230;NSM;;;;;N;;;;; 1DC8;COMBINING GRAVE-ACUTE-GRAVE;Mn;230;NSM;;;;;N;;;;; 1DC9;COMBINING ACUTE-GRAVE-ACUTE;Mn;230;NSM;;;;;N;;;;; 1DCA;COMBINING LATIN SMALL LETTER R BELOW;Mn;220;NSM;;;;;N;;;;; 1DFE;COMBINING LEFT ARROWHEAD ABOVE;Mn;230;NSM;;;;;N;;;;; 1DFF;COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW;Mn;220;NSM;;;;;N;;;;; 1E00;LATIN CAPITAL LETTER A WITH RING BELOW;Lu;0;L;0041 0325;;;;N;;;;1E01; 1E01;LATIN SMALL LETTER A WITH RING BELOW;Ll;0;L;0061 0325;;;;N;;;1E00;;1E00 1E02;LATIN CAPITAL LETTER B WITH DOT ABOVE;Lu;0;L;0042 0307;;;;N;;;;1E03; 1E03;LATIN SMALL LETTER B WITH DOT ABOVE;Ll;0;L;0062 0307;;;;N;;;1E02;;1E02 1E04;LATIN CAPITAL LETTER B WITH DOT BELOW;Lu;0;L;0042 0323;;;;N;;;;1E05; 1E05;LATIN SMALL LETTER B WITH DOT BELOW;Ll;0;L;0062 0323;;;;N;;;1E04;;1E04 1E06;LATIN CAPITAL LETTER B WITH LINE BELOW;Lu;0;L;0042 0331;;;;N;;;;1E07; 1E07;LATIN SMALL LETTER B WITH LINE BELOW;Ll;0;L;0062 0331;;;;N;;;1E06;;1E06 1E08;LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE;Lu;0;L;00C7 0301;;;;N;;;;1E09; 1E09;LATIN SMALL LETTER C WITH CEDILLA AND ACUTE;Ll;0;L;00E7 0301;;;;N;;;1E08;;1E08 1E0A;LATIN CAPITAL LETTER D WITH DOT ABOVE;Lu;0;L;0044 0307;;;;N;;;;1E0B; 1E0B;LATIN SMALL LETTER D WITH DOT ABOVE;Ll;0;L;0064 0307;;;;N;;;1E0A;;1E0A 1E0C;LATIN CAPITAL LETTER D WITH DOT BELOW;Lu;0;L;0044 0323;;;;N;;;;1E0D; 1E0D;LATIN SMALL LETTER D WITH DOT BELOW;Ll;0;L;0064 0323;;;;N;;;1E0C;;1E0C 1E0E;LATIN CAPITAL LETTER D WITH LINE BELOW;Lu;0;L;0044 0331;;;;N;;;;1E0F; 1E0F;LATIN SMALL LETTER D WITH LINE BELOW;Ll;0;L;0064 0331;;;;N;;;1E0E;;1E0E 1E10;LATIN CAPITAL LETTER D WITH CEDILLA;Lu;0;L;0044 0327;;;;N;;;;1E11; 1E11;LATIN SMALL LETTER D WITH CEDILLA;Ll;0;L;0064 0327;;;;N;;;1E10;;1E10 1E12;LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW;Lu;0;L;0044 032D;;;;N;;;;1E13; 1E13;LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW;Ll;0;L;0064 032D;;;;N;;;1E12;;1E12 1E14;LATIN CAPITAL LETTER E WITH MACRON AND GRAVE;Lu;0;L;0112 0300;;;;N;;;;1E15; 1E15;LATIN SMALL LETTER E WITH MACRON AND GRAVE;Ll;0;L;0113 0300;;;;N;;;1E14;;1E14 1E16;LATIN CAPITAL LETTER E WITH MACRON AND ACUTE;Lu;0;L;0112 0301;;;;N;;;;1E17; 1E17;LATIN SMALL LETTER E WITH MACRON AND ACUTE;Ll;0;L;0113 0301;;;;N;;;1E16;;1E16 1E18;LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW;Lu;0;L;0045 032D;;;;N;;;;1E19; 1E19;LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW;Ll;0;L;0065 032D;;;;N;;;1E18;;1E18 1E1A;LATIN CAPITAL LETTER E WITH TILDE BELOW;Lu;0;L;0045 0330;;;;N;;;;1E1B; 1E1B;LATIN SMALL LETTER E WITH TILDE BELOW;Ll;0;L;0065 0330;;;;N;;;1E1A;;1E1A 1E1C;LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE;Lu;0;L;0228 0306;;;;N;;;;1E1D; 1E1D;LATIN SMALL LETTER E WITH CEDILLA AND BREVE;Ll;0;L;0229 0306;;;;N;;;1E1C;;1E1C 1E1E;LATIN CAPITAL LETTER F WITH DOT ABOVE;Lu;0;L;0046 0307;;;;N;;;;1E1F; 1E1F;LATIN SMALL LETTER F WITH DOT ABOVE;Ll;0;L;0066 0307;;;;N;;;1E1E;;1E1E 1E20;LATIN CAPITAL LETTER G WITH MACRON;Lu;0;L;0047 0304;;;;N;;;;1E21; 1E21;LATIN SMALL LETTER G WITH MACRON;Ll;0;L;0067 0304;;;;N;;;1E20;;1E20 1E22;LATIN CAPITAL LETTER H WITH DOT ABOVE;Lu;0;L;0048 0307;;;;N;;;;1E23; 1E23;LATIN SMALL LETTER H WITH DOT ABOVE;Ll;0;L;0068 0307;;;;N;;;1E22;;1E22 1E24;LATIN CAPITAL LETTER H WITH DOT BELOW;Lu;0;L;0048 0323;;;;N;;;;1E25; 1E25;LATIN SMALL LETTER H WITH DOT BELOW;Ll;0;L;0068 0323;;;;N;;;1E24;;1E24 1E26;LATIN CAPITAL LETTER H WITH DIAERESIS;Lu;0;L;0048 0308;;;;N;;;;1E27; 1E27;LATIN SMALL LETTER H WITH DIAERESIS;Ll;0;L;0068 0308;;;;N;;;1E26;;1E26 1E28;LATIN CAPITAL LETTER H WITH CEDILLA;Lu;0;L;0048 0327;;;;N;;;;1E29; 1E29;LATIN SMALL LETTER H WITH CEDILLA;Ll;0;L;0068 0327;;;;N;;;1E28;;1E28 1E2A;LATIN CAPITAL LETTER H WITH BREVE BELOW;Lu;0;L;0048 032E;;;;N;;;;1E2B; 1E2B;LATIN SMALL LETTER H WITH BREVE BELOW;Ll;0;L;0068 032E;;;;N;;;1E2A;;1E2A 1E2C;LATIN CAPITAL LETTER I WITH TILDE BELOW;Lu;0;L;0049 0330;;;;N;;;;1E2D; 1E2D;LATIN SMALL LETTER I WITH TILDE BELOW;Ll;0;L;0069 0330;;;;N;;;1E2C;;1E2C 1E2E;LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE;Lu;0;L;00CF 0301;;;;N;;;;1E2F; 1E2F;LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE;Ll;0;L;00EF 0301;;;;N;;;1E2E;;1E2E 1E30;LATIN CAPITAL LETTER K WITH ACUTE;Lu;0;L;004B 0301;;;;N;;;;1E31; 1E31;LATIN SMALL LETTER K WITH ACUTE;Ll;0;L;006B 0301;;;;N;;;1E30;;1E30 1E32;LATIN CAPITAL LETTER K WITH DOT BELOW;Lu;0;L;004B 0323;;;;N;;;;1E33; 1E33;LATIN SMALL LETTER K WITH DOT BELOW;Ll;0;L;006B 0323;;;;N;;;1E32;;1E32 1E34;LATIN CAPITAL LETTER K WITH LINE BELOW;Lu;0;L;004B 0331;;;;N;;;;1E35; 1E35;LATIN SMALL LETTER K WITH LINE BELOW;Ll;0;L;006B 0331;;;;N;;;1E34;;1E34 1E36;LATIN CAPITAL LETTER L WITH DOT BELOW;Lu;0;L;004C 0323;;;;N;;;;1E37; 1E37;LATIN SMALL LETTER L WITH DOT BELOW;Ll;0;L;006C 0323;;;;N;;;1E36;;1E36 1E38;LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON;Lu;0;L;1E36 0304;;;;N;;;;1E39; 1E39;LATIN SMALL LETTER L WITH DOT BELOW AND MACRON;Ll;0;L;1E37 0304;;;;N;;;1E38;;1E38 1E3A;LATIN CAPITAL LETTER L WITH LINE BELOW;Lu;0;L;004C 0331;;;;N;;;;1E3B; 1E3B;LATIN SMALL LETTER L WITH LINE BELOW;Ll;0;L;006C 0331;;;;N;;;1E3A;;1E3A 1E3C;LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW;Lu;0;L;004C 032D;;;;N;;;;1E3D; 1E3D;LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW;Ll;0;L;006C 032D;;;;N;;;1E3C;;1E3C 1E3E;LATIN CAPITAL LETTER M WITH ACUTE;Lu;0;L;004D 0301;;;;N;;;;1E3F; 1E3F;LATIN SMALL LETTER M WITH ACUTE;Ll;0;L;006D 0301;;;;N;;;1E3E;;1E3E 1E40;LATIN CAPITAL LETTER M WITH DOT ABOVE;Lu;0;L;004D 0307;;;;N;;;;1E41; 1E41;LATIN SMALL LETTER M WITH DOT ABOVE;Ll;0;L;006D 0307;;;;N;;;1E40;;1E40 1E42;LATIN CAPITAL LETTER M WITH DOT BELOW;Lu;0;L;004D 0323;;;;N;;;;1E43; 1E43;LATIN SMALL LETTER M WITH DOT BELOW;Ll;0;L;006D 0323;;;;N;;;1E42;;1E42 1E44;LATIN CAPITAL LETTER N WITH DOT ABOVE;Lu;0;L;004E 0307;;;;N;;;;1E45; 1E45;LATIN SMALL LETTER N WITH DOT ABOVE;Ll;0;L;006E 0307;;;;N;;;1E44;;1E44 1E46;LATIN CAPITAL LETTER N WITH DOT BELOW;Lu;0;L;004E 0323;;;;N;;;;1E47; 1E47;LATIN SMALL LETTER N WITH DOT BELOW;Ll;0;L;006E 0323;;;;N;;;1E46;;1E46 1E48;LATIN CAPITAL LETTER N WITH LINE BELOW;Lu;0;L;004E 0331;;;;N;;;;1E49; 1E49;LATIN SMALL LETTER N WITH LINE BELOW;Ll;0;L;006E 0331;;;;N;;;1E48;;1E48 1E4A;LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW;Lu;0;L;004E 032D;;;;N;;;;1E4B; 1E4B;LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW;Ll;0;L;006E 032D;;;;N;;;1E4A;;1E4A 1E4C;LATIN CAPITAL LETTER O WITH TILDE AND ACUTE;Lu;0;L;00D5 0301;;;;N;;;;1E4D; 1E4D;LATIN SMALL LETTER O WITH TILDE AND ACUTE;Ll;0;L;00F5 0301;;;;N;;;1E4C;;1E4C 1E4E;LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS;Lu;0;L;00D5 0308;;;;N;;;;1E4F; 1E4F;LATIN SMALL LETTER O WITH TILDE AND DIAERESIS;Ll;0;L;00F5 0308;;;;N;;;1E4E;;1E4E 1E50;LATIN CAPITAL LETTER O WITH MACRON AND GRAVE;Lu;0;L;014C 0300;;;;N;;;;1E51; 1E51;LATIN SMALL LETTER O WITH MACRON AND GRAVE;Ll;0;L;014D 0300;;;;N;;;1E50;;1E50 1E52;LATIN CAPITAL LETTER O WITH MACRON AND ACUTE;Lu;0;L;014C 0301;;;;N;;;;1E53; 1E53;LATIN SMALL LETTER O WITH MACRON AND ACUTE;Ll;0;L;014D 0301;;;;N;;;1E52;;1E52 1E54;LATIN CAPITAL LETTER P WITH ACUTE;Lu;0;L;0050 0301;;;;N;;;;1E55; 1E55;LATIN SMALL LETTER P WITH ACUTE;Ll;0;L;0070 0301;;;;N;;;1E54;;1E54 1E56;LATIN CAPITAL LETTER P WITH DOT ABOVE;Lu;0;L;0050 0307;;;;N;;;;1E57; 1E57;LATIN SMALL LETTER P WITH DOT ABOVE;Ll;0;L;0070 0307;;;;N;;;1E56;;1E56 1E58;LATIN CAPITAL LETTER R WITH DOT ABOVE;Lu;0;L;0052 0307;;;;N;;;;1E59; 1E59;LATIN SMALL LETTER R WITH DOT ABOVE;Ll;0;L;0072 0307;;;;N;;;1E58;;1E58 1E5A;LATIN CAPITAL LETTER R WITH DOT BELOW;Lu;0;L;0052 0323;;;;N;;;;1E5B; 1E5B;LATIN SMALL LETTER R WITH DOT BELOW;Ll;0;L;0072 0323;;;;N;;;1E5A;;1E5A 1E5C;LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON;Lu;0;L;1E5A 0304;;;;N;;;;1E5D; 1E5D;LATIN SMALL LETTER R WITH DOT BELOW AND MACRON;Ll;0;L;1E5B 0304;;;;N;;;1E5C;;1E5C 1E5E;LATIN CAPITAL LETTER R WITH LINE BELOW;Lu;0;L;0052 0331;;;;N;;;;1E5F; 1E5F;LATIN SMALL LETTER R WITH LINE BELOW;Ll;0;L;0072 0331;;;;N;;;1E5E;;1E5E 1E60;LATIN CAPITAL LETTER S WITH DOT ABOVE;Lu;0;L;0053 0307;;;;N;;;;1E61; 1E61;LATIN SMALL LETTER S WITH DOT ABOVE;Ll;0;L;0073 0307;;;;N;;;1E60;;1E60 1E62;LATIN CAPITAL LETTER S WITH DOT BELOW;Lu;0;L;0053 0323;;;;N;;;;1E63; 1E63;LATIN SMALL LETTER S WITH DOT BELOW;Ll;0;L;0073 0323;;;;N;;;1E62;;1E62 1E64;LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE;Lu;0;L;015A 0307;;;;N;;;;1E65; 1E65;LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE;Ll;0;L;015B 0307;;;;N;;;1E64;;1E64 1E66;LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE;Lu;0;L;0160 0307;;;;N;;;;1E67; 1E67;LATIN SMALL LETTER S WITH CARON AND DOT ABOVE;Ll;0;L;0161 0307;;;;N;;;1E66;;1E66 1E68;LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE;Lu;0;L;1E62 0307;;;;N;;;;1E69; 1E69;LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE;Ll;0;L;1E63 0307;;;;N;;;1E68;;1E68 1E6A;LATIN CAPITAL LETTER T WITH DOT ABOVE;Lu;0;L;0054 0307;;;;N;;;;1E6B; 1E6B;LATIN SMALL LETTER T WITH DOT ABOVE;Ll;0;L;0074 0307;;;;N;;;1E6A;;1E6A 1E6C;LATIN CAPITAL LETTER T WITH DOT BELOW;Lu;0;L;0054 0323;;;;N;;;;1E6D; 1E6D;LATIN SMALL LETTER T WITH DOT BELOW;Ll;0;L;0074 0323;;;;N;;;1E6C;;1E6C 1E6E;LATIN CAPITAL LETTER T WITH LINE BELOW;Lu;0;L;0054 0331;;;;N;;;;1E6F; 1E6F;LATIN SMALL LETTER T WITH LINE BELOW;Ll;0;L;0074 0331;;;;N;;;1E6E;;1E6E 1E70;LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW;Lu;0;L;0054 032D;;;;N;;;;1E71; 1E71;LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW;Ll;0;L;0074 032D;;;;N;;;1E70;;1E70 1E72;LATIN CAPITAL LETTER U WITH DIAERESIS BELOW;Lu;0;L;0055 0324;;;;N;;;;1E73; 1E73;LATIN SMALL LETTER U WITH DIAERESIS BELOW;Ll;0;L;0075 0324;;;;N;;;1E72;;1E72 1E74;LATIN CAPITAL LETTER U WITH TILDE BELOW;Lu;0;L;0055 0330;;;;N;;;;1E75; 1E75;LATIN SMALL LETTER U WITH TILDE BELOW;Ll;0;L;0075 0330;;;;N;;;1E74;;1E74 1E76;LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW;Lu;0;L;0055 032D;;;;N;;;;1E77; 1E77;LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW;Ll;0;L;0075 032D;;;;N;;;1E76;;1E76 1E78;LATIN CAPITAL LETTER U WITH TILDE AND ACUTE;Lu;0;L;0168 0301;;;;N;;;;1E79; 1E79;LATIN SMALL LETTER U WITH TILDE AND ACUTE;Ll;0;L;0169 0301;;;;N;;;1E78;;1E78 1E7A;LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS;Lu;0;L;016A 0308;;;;N;;;;1E7B; 1E7B;LATIN SMALL LETTER U WITH MACRON AND DIAERESIS;Ll;0;L;016B 0308;;;;N;;;1E7A;;1E7A 1E7C;LATIN CAPITAL LETTER V WITH TILDE;Lu;0;L;0056 0303;;;;N;;;;1E7D; 1E7D;LATIN SMALL LETTER V WITH TILDE;Ll;0;L;0076 0303;;;;N;;;1E7C;;1E7C 1E7E;LATIN CAPITAL LETTER V WITH DOT BELOW;Lu;0;L;0056 0323;;;;N;;;;1E7F; 1E7F;LATIN SMALL LETTER V WITH DOT BELOW;Ll;0;L;0076 0323;;;;N;;;1E7E;;1E7E 1E80;LATIN CAPITAL LETTER W WITH GRAVE;Lu;0;L;0057 0300;;;;N;;;;1E81; 1E81;LATIN SMALL LETTER W WITH GRAVE;Ll;0;L;0077 0300;;;;N;;;1E80;;1E80 1E82;LATIN CAPITAL LETTER W WITH ACUTE;Lu;0;L;0057 0301;;;;N;;;;1E83; 1E83;LATIN SMALL LETTER W WITH ACUTE;Ll;0;L;0077 0301;;;;N;;;1E82;;1E82 1E84;LATIN CAPITAL LETTER W WITH DIAERESIS;Lu;0;L;0057 0308;;;;N;;;;1E85; 1E85;LATIN SMALL LETTER W WITH DIAERESIS;Ll;0;L;0077 0308;;;;N;;;1E84;;1E84 1E86;LATIN CAPITAL LETTER W WITH DOT ABOVE;Lu;0;L;0057 0307;;;;N;;;;1E87; 1E87;LATIN SMALL LETTER W WITH DOT ABOVE;Ll;0;L;0077 0307;;;;N;;;1E86;;1E86 1E88;LATIN CAPITAL LETTER W WITH DOT BELOW;Lu;0;L;0057 0323;;;;N;;;;1E89; 1E89;LATIN SMALL LETTER W WITH DOT BELOW;Ll;0;L;0077 0323;;;;N;;;1E88;;1E88 1E8A;LATIN CAPITAL LETTER X WITH DOT ABOVE;Lu;0;L;0058 0307;;;;N;;;;1E8B; 1E8B;LATIN SMALL LETTER X WITH DOT ABOVE;Ll;0;L;0078 0307;;;;N;;;1E8A;;1E8A 1E8C;LATIN CAPITAL LETTER X WITH DIAERESIS;Lu;0;L;0058 0308;;;;N;;;;1E8D; 1E8D;LATIN SMALL LETTER X WITH DIAERESIS;Ll;0;L;0078 0308;;;;N;;;1E8C;;1E8C 1E8E;LATIN CAPITAL LETTER Y WITH DOT ABOVE;Lu;0;L;0059 0307;;;;N;;;;1E8F; 1E8F;LATIN SMALL LETTER Y WITH DOT ABOVE;Ll;0;L;0079 0307;;;;N;;;1E8E;;1E8E 1E90;LATIN CAPITAL LETTER Z WITH CIRCUMFLEX;Lu;0;L;005A 0302;;;;N;;;;1E91; 1E91;LATIN SMALL LETTER Z WITH CIRCUMFLEX;Ll;0;L;007A 0302;;;;N;;;1E90;;1E90 1E92;LATIN CAPITAL LETTER Z WITH DOT BELOW;Lu;0;L;005A 0323;;;;N;;;;1E93; 1E93;LATIN SMALL LETTER Z WITH DOT BELOW;Ll;0;L;007A 0323;;;;N;;;1E92;;1E92 1E94;LATIN CAPITAL LETTER Z WITH LINE BELOW;Lu;0;L;005A 0331;;;;N;;;;1E95; 1E95;LATIN SMALL LETTER Z WITH LINE BELOW;Ll;0;L;007A 0331;;;;N;;;1E94;;1E94 1E96;LATIN SMALL LETTER H WITH LINE BELOW;Ll;0;L;0068 0331;;;;N;;;;; 1E97;LATIN SMALL LETTER T WITH DIAERESIS;Ll;0;L;0074 0308;;;;N;;;;; 1E98;LATIN SMALL LETTER W WITH RING ABOVE;Ll;0;L;0077 030A;;;;N;;;;; 1E99;LATIN SMALL LETTER Y WITH RING ABOVE;Ll;0;L;0079 030A;;;;N;;;;; 1E9A;LATIN SMALL LETTER A WITH RIGHT HALF RING;Ll;0;L; 0061 02BE;;;;N;;;;; 1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60 1EA0;LATIN CAPITAL LETTER A WITH DOT BELOW;Lu;0;L;0041 0323;;;;N;;;;1EA1; 1EA1;LATIN SMALL LETTER A WITH DOT BELOW;Ll;0;L;0061 0323;;;;N;;;1EA0;;1EA0 1EA2;LATIN CAPITAL LETTER A WITH HOOK ABOVE;Lu;0;L;0041 0309;;;;N;;;;1EA3; 1EA3;LATIN SMALL LETTER A WITH HOOK ABOVE;Ll;0;L;0061 0309;;;;N;;;1EA2;;1EA2 1EA4;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00C2 0301;;;;N;;;;1EA5; 1EA5;LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00E2 0301;;;;N;;;1EA4;;1EA4 1EA6;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00C2 0300;;;;N;;;;1EA7; 1EA7;LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00E2 0300;;;;N;;;1EA6;;1EA6 1EA8;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00C2 0309;;;;N;;;;1EA9; 1EA9;LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00E2 0309;;;;N;;;1EA8;;1EA8 1EAA;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE;Lu;0;L;00C2 0303;;;;N;;;;1EAB; 1EAB;LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE;Ll;0;L;00E2 0303;;;;N;;;1EAA;;1EAA 1EAC;LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EA0 0302;;;;N;;;;1EAD; 1EAD;LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EA1 0302;;;;N;;;1EAC;;1EAC 1EAE;LATIN CAPITAL LETTER A WITH BREVE AND ACUTE;Lu;0;L;0102 0301;;;;N;;;;1EAF; 1EAF;LATIN SMALL LETTER A WITH BREVE AND ACUTE;Ll;0;L;0103 0301;;;;N;;;1EAE;;1EAE 1EB0;LATIN CAPITAL LETTER A WITH BREVE AND GRAVE;Lu;0;L;0102 0300;;;;N;;;;1EB1; 1EB1;LATIN SMALL LETTER A WITH BREVE AND GRAVE;Ll;0;L;0103 0300;;;;N;;;1EB0;;1EB0 1EB2;LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE;Lu;0;L;0102 0309;;;;N;;;;1EB3; 1EB3;LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE;Ll;0;L;0103 0309;;;;N;;;1EB2;;1EB2 1EB4;LATIN CAPITAL LETTER A WITH BREVE AND TILDE;Lu;0;L;0102 0303;;;;N;;;;1EB5; 1EB5;LATIN SMALL LETTER A WITH BREVE AND TILDE;Ll;0;L;0103 0303;;;;N;;;1EB4;;1EB4 1EB6;LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW;Lu;0;L;1EA0 0306;;;;N;;;;1EB7; 1EB7;LATIN SMALL LETTER A WITH BREVE AND DOT BELOW;Ll;0;L;1EA1 0306;;;;N;;;1EB6;;1EB6 1EB8;LATIN CAPITAL LETTER E WITH DOT BELOW;Lu;0;L;0045 0323;;;;N;;;;1EB9; 1EB9;LATIN SMALL LETTER E WITH DOT BELOW;Ll;0;L;0065 0323;;;;N;;;1EB8;;1EB8 1EBA;LATIN CAPITAL LETTER E WITH HOOK ABOVE;Lu;0;L;0045 0309;;;;N;;;;1EBB; 1EBB;LATIN SMALL LETTER E WITH HOOK ABOVE;Ll;0;L;0065 0309;;;;N;;;1EBA;;1EBA 1EBC;LATIN CAPITAL LETTER E WITH TILDE;Lu;0;L;0045 0303;;;;N;;;;1EBD; 1EBD;LATIN SMALL LETTER E WITH TILDE;Ll;0;L;0065 0303;;;;N;;;1EBC;;1EBC 1EBE;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00CA 0301;;;;N;;;;1EBF; 1EBF;LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00EA 0301;;;;N;;;1EBE;;1EBE 1EC0;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00CA 0300;;;;N;;;;1EC1; 1EC1;LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00EA 0300;;;;N;;;1EC0;;1EC0 1EC2;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00CA 0309;;;;N;;;;1EC3; 1EC3;LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00EA 0309;;;;N;;;1EC2;;1EC2 1EC4;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE;Lu;0;L;00CA 0303;;;;N;;;;1EC5; 1EC5;LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE;Ll;0;L;00EA 0303;;;;N;;;1EC4;;1EC4 1EC6;LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1EB8 0302;;;;N;;;;1EC7; 1EC7;LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1EB9 0302;;;;N;;;1EC6;;1EC6 1EC8;LATIN CAPITAL LETTER I WITH HOOK ABOVE;Lu;0;L;0049 0309;;;;N;;;;1EC9; 1EC9;LATIN SMALL LETTER I WITH HOOK ABOVE;Ll;0;L;0069 0309;;;;N;;;1EC8;;1EC8 1ECA;LATIN CAPITAL LETTER I WITH DOT BELOW;Lu;0;L;0049 0323;;;;N;;;;1ECB; 1ECB;LATIN SMALL LETTER I WITH DOT BELOW;Ll;0;L;0069 0323;;;;N;;;1ECA;;1ECA 1ECC;LATIN CAPITAL LETTER O WITH DOT BELOW;Lu;0;L;004F 0323;;;;N;;;;1ECD; 1ECD;LATIN SMALL LETTER O WITH DOT BELOW;Ll;0;L;006F 0323;;;;N;;;1ECC;;1ECC 1ECE;LATIN CAPITAL LETTER O WITH HOOK ABOVE;Lu;0;L;004F 0309;;;;N;;;;1ECF; 1ECF;LATIN SMALL LETTER O WITH HOOK ABOVE;Ll;0;L;006F 0309;;;;N;;;1ECE;;1ECE 1ED0;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE;Lu;0;L;00D4 0301;;;;N;;;;1ED1; 1ED1;LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE;Ll;0;L;00F4 0301;;;;N;;;1ED0;;1ED0 1ED2;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE;Lu;0;L;00D4 0300;;;;N;;;;1ED3; 1ED3;LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE;Ll;0;L;00F4 0300;;;;N;;;1ED2;;1ED2 1ED4;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Lu;0;L;00D4 0309;;;;N;;;;1ED5; 1ED5;LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE;Ll;0;L;00F4 0309;;;;N;;;1ED4;;1ED4 1ED6;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE;Lu;0;L;00D4 0303;;;;N;;;;1ED7; 1ED7;LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE;Ll;0;L;00F4 0303;;;;N;;;1ED6;;1ED6 1ED8;LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Lu;0;L;1ECC 0302;;;;N;;;;1ED9; 1ED9;LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW;Ll;0;L;1ECD 0302;;;;N;;;1ED8;;1ED8 1EDA;LATIN CAPITAL LETTER O WITH HORN AND ACUTE;Lu;0;L;01A0 0301;;;;N;;;;1EDB; 1EDB;LATIN SMALL LETTER O WITH HORN AND ACUTE;Ll;0;L;01A1 0301;;;;N;;;1EDA;;1EDA 1EDC;LATIN CAPITAL LETTER O WITH HORN AND GRAVE;Lu;0;L;01A0 0300;;;;N;;;;1EDD; 1EDD;LATIN SMALL LETTER O WITH HORN AND GRAVE;Ll;0;L;01A1 0300;;;;N;;;1EDC;;1EDC 1EDE;LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE;Lu;0;L;01A0 0309;;;;N;;;;1EDF; 1EDF;LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE;Ll;0;L;01A1 0309;;;;N;;;1EDE;;1EDE 1EE0;LATIN CAPITAL LETTER O WITH HORN AND TILDE;Lu;0;L;01A0 0303;;;;N;;;;1EE1; 1EE1;LATIN SMALL LETTER O WITH HORN AND TILDE;Ll;0;L;01A1 0303;;;;N;;;1EE0;;1EE0 1EE2;LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW;Lu;0;L;01A0 0323;;;;N;;;;1EE3; 1EE3;LATIN SMALL LETTER O WITH HORN AND DOT BELOW;Ll;0;L;01A1 0323;;;;N;;;1EE2;;1EE2 1EE4;LATIN CAPITAL LETTER U WITH DOT BELOW;Lu;0;L;0055 0323;;;;N;;;;1EE5; 1EE5;LATIN SMALL LETTER U WITH DOT BELOW;Ll;0;L;0075 0323;;;;N;;;1EE4;;1EE4 1EE6;LATIN CAPITAL LETTER U WITH HOOK ABOVE;Lu;0;L;0055 0309;;;;N;;;;1EE7; 1EE7;LATIN SMALL LETTER U WITH HOOK ABOVE;Ll;0;L;0075 0309;;;;N;;;1EE6;;1EE6 1EE8;LATIN CAPITAL LETTER U WITH HORN AND ACUTE;Lu;0;L;01AF 0301;;;;N;;;;1EE9; 1EE9;LATIN SMALL LETTER U WITH HORN AND ACUTE;Ll;0;L;01B0 0301;;;;N;;;1EE8;;1EE8 1EEA;LATIN CAPITAL LETTER U WITH HORN AND GRAVE;Lu;0;L;01AF 0300;;;;N;;;;1EEB; 1EEB;LATIN SMALL LETTER U WITH HORN AND GRAVE;Ll;0;L;01B0 0300;;;;N;;;1EEA;;1EEA 1EEC;LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE;Lu;0;L;01AF 0309;;;;N;;;;1EED; 1EED;LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE;Ll;0;L;01B0 0309;;;;N;;;1EEC;;1EEC 1EEE;LATIN CAPITAL LETTER U WITH HORN AND TILDE;Lu;0;L;01AF 0303;;;;N;;;;1EEF; 1EEF;LATIN SMALL LETTER U WITH HORN AND TILDE;Ll;0;L;01B0 0303;;;;N;;;1EEE;;1EEE 1EF0;LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW;Lu;0;L;01AF 0323;;;;N;;;;1EF1; 1EF1;LATIN SMALL LETTER U WITH HORN AND DOT BELOW;Ll;0;L;01B0 0323;;;;N;;;1EF0;;1EF0 1EF2;LATIN CAPITAL LETTER Y WITH GRAVE;Lu;0;L;0059 0300;;;;N;;;;1EF3; 1EF3;LATIN SMALL LETTER Y WITH GRAVE;Ll;0;L;0079 0300;;;;N;;;1EF2;;1EF2 1EF4;LATIN CAPITAL LETTER Y WITH DOT BELOW;Lu;0;L;0059 0323;;;;N;;;;1EF5; 1EF5;LATIN SMALL LETTER Y WITH DOT BELOW;Ll;0;L;0079 0323;;;;N;;;1EF4;;1EF4 1EF6;LATIN CAPITAL LETTER Y WITH HOOK ABOVE;Lu;0;L;0059 0309;;;;N;;;;1EF7; 1EF7;LATIN SMALL LETTER Y WITH HOOK ABOVE;Ll;0;L;0079 0309;;;;N;;;1EF6;;1EF6 1EF8;LATIN CAPITAL LETTER Y WITH TILDE;Lu;0;L;0059 0303;;;;N;;;;1EF9; 1EF9;LATIN SMALL LETTER Y WITH TILDE;Ll;0;L;0079 0303;;;;N;;;1EF8;;1EF8 1F00;GREEK SMALL LETTER ALPHA WITH PSILI;Ll;0;L;03B1 0313;;;;N;;;1F08;;1F08 1F01;GREEK SMALL LETTER ALPHA WITH DASIA;Ll;0;L;03B1 0314;;;;N;;;1F09;;1F09 1F02;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA;Ll;0;L;1F00 0300;;;;N;;;1F0A;;1F0A 1F03;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA;Ll;0;L;1F01 0300;;;;N;;;1F0B;;1F0B 1F04;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA;Ll;0;L;1F00 0301;;;;N;;;1F0C;;1F0C 1F05;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA;Ll;0;L;1F01 0301;;;;N;;;1F0D;;1F0D 1F06;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI;Ll;0;L;1F00 0342;;;;N;;;1F0E;;1F0E 1F07;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI;Ll;0;L;1F01 0342;;;;N;;;1F0F;;1F0F 1F08;GREEK CAPITAL LETTER ALPHA WITH PSILI;Lu;0;L;0391 0313;;;;N;;;;1F00; 1F09;GREEK CAPITAL LETTER ALPHA WITH DASIA;Lu;0;L;0391 0314;;;;N;;;;1F01; 1F0A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA;Lu;0;L;1F08 0300;;;;N;;;;1F02; 1F0B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA;Lu;0;L;1F09 0300;;;;N;;;;1F03; 1F0C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA;Lu;0;L;1F08 0301;;;;N;;;;1F04; 1F0D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA;Lu;0;L;1F09 0301;;;;N;;;;1F05; 1F0E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI;Lu;0;L;1F08 0342;;;;N;;;;1F06; 1F0F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI;Lu;0;L;1F09 0342;;;;N;;;;1F07; 1F10;GREEK SMALL LETTER EPSILON WITH PSILI;Ll;0;L;03B5 0313;;;;N;;;1F18;;1F18 1F11;GREEK SMALL LETTER EPSILON WITH DASIA;Ll;0;L;03B5 0314;;;;N;;;1F19;;1F19 1F12;GREEK SMALL LETTER EPSILON WITH PSILI AND VARIA;Ll;0;L;1F10 0300;;;;N;;;1F1A;;1F1A 1F13;GREEK SMALL LETTER EPSILON WITH DASIA AND VARIA;Ll;0;L;1F11 0300;;;;N;;;1F1B;;1F1B 1F14;GREEK SMALL LETTER EPSILON WITH PSILI AND OXIA;Ll;0;L;1F10 0301;;;;N;;;1F1C;;1F1C 1F15;GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA;Ll;0;L;1F11 0301;;;;N;;;1F1D;;1F1D 1F18;GREEK CAPITAL LETTER EPSILON WITH PSILI;Lu;0;L;0395 0313;;;;N;;;;1F10; 1F19;GREEK CAPITAL LETTER EPSILON WITH DASIA;Lu;0;L;0395 0314;;;;N;;;;1F11; 1F1A;GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA;Lu;0;L;1F18 0300;;;;N;;;;1F12; 1F1B;GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA;Lu;0;L;1F19 0300;;;;N;;;;1F13; 1F1C;GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA;Lu;0;L;1F18 0301;;;;N;;;;1F14; 1F1D;GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA;Lu;0;L;1F19 0301;;;;N;;;;1F15; 1F20;GREEK SMALL LETTER ETA WITH PSILI;Ll;0;L;03B7 0313;;;;N;;;1F28;;1F28 1F21;GREEK SMALL LETTER ETA WITH DASIA;Ll;0;L;03B7 0314;;;;N;;;1F29;;1F29 1F22;GREEK SMALL LETTER ETA WITH PSILI AND VARIA;Ll;0;L;1F20 0300;;;;N;;;1F2A;;1F2A 1F23;GREEK SMALL LETTER ETA WITH DASIA AND VARIA;Ll;0;L;1F21 0300;;;;N;;;1F2B;;1F2B 1F24;GREEK SMALL LETTER ETA WITH PSILI AND OXIA;Ll;0;L;1F20 0301;;;;N;;;1F2C;;1F2C 1F25;GREEK SMALL LETTER ETA WITH DASIA AND OXIA;Ll;0;L;1F21 0301;;;;N;;;1F2D;;1F2D 1F26;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI;Ll;0;L;1F20 0342;;;;N;;;1F2E;;1F2E 1F27;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI;Ll;0;L;1F21 0342;;;;N;;;1F2F;;1F2F 1F28;GREEK CAPITAL LETTER ETA WITH PSILI;Lu;0;L;0397 0313;;;;N;;;;1F20; 1F29;GREEK CAPITAL LETTER ETA WITH DASIA;Lu;0;L;0397 0314;;;;N;;;;1F21; 1F2A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA;Lu;0;L;1F28 0300;;;;N;;;;1F22; 1F2B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA;Lu;0;L;1F29 0300;;;;N;;;;1F23; 1F2C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA;Lu;0;L;1F28 0301;;;;N;;;;1F24; 1F2D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA;Lu;0;L;1F29 0301;;;;N;;;;1F25; 1F2E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI;Lu;0;L;1F28 0342;;;;N;;;;1F26; 1F2F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI;Lu;0;L;1F29 0342;;;;N;;;;1F27; 1F30;GREEK SMALL LETTER IOTA WITH PSILI;Ll;0;L;03B9 0313;;;;N;;;1F38;;1F38 1F31;GREEK SMALL LETTER IOTA WITH DASIA;Ll;0;L;03B9 0314;;;;N;;;1F39;;1F39 1F32;GREEK SMALL LETTER IOTA WITH PSILI AND VARIA;Ll;0;L;1F30 0300;;;;N;;;1F3A;;1F3A 1F33;GREEK SMALL LETTER IOTA WITH DASIA AND VARIA;Ll;0;L;1F31 0300;;;;N;;;1F3B;;1F3B 1F34;GREEK SMALL LETTER IOTA WITH PSILI AND OXIA;Ll;0;L;1F30 0301;;;;N;;;1F3C;;1F3C 1F35;GREEK SMALL LETTER IOTA WITH DASIA AND OXIA;Ll;0;L;1F31 0301;;;;N;;;1F3D;;1F3D 1F36;GREEK SMALL LETTER IOTA WITH PSILI AND PERISPOMENI;Ll;0;L;1F30 0342;;;;N;;;1F3E;;1F3E 1F37;GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI;Ll;0;L;1F31 0342;;;;N;;;1F3F;;1F3F 1F38;GREEK CAPITAL LETTER IOTA WITH PSILI;Lu;0;L;0399 0313;;;;N;;;;1F30; 1F39;GREEK CAPITAL LETTER IOTA WITH DASIA;Lu;0;L;0399 0314;;;;N;;;;1F31; 1F3A;GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA;Lu;0;L;1F38 0300;;;;N;;;;1F32; 1F3B;GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA;Lu;0;L;1F39 0300;;;;N;;;;1F33; 1F3C;GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA;Lu;0;L;1F38 0301;;;;N;;;;1F34; 1F3D;GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA;Lu;0;L;1F39 0301;;;;N;;;;1F35; 1F3E;GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI;Lu;0;L;1F38 0342;;;;N;;;;1F36; 1F3F;GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI;Lu;0;L;1F39 0342;;;;N;;;;1F37; 1F40;GREEK SMALL LETTER OMICRON WITH PSILI;Ll;0;L;03BF 0313;;;;N;;;1F48;;1F48 1F41;GREEK SMALL LETTER OMICRON WITH DASIA;Ll;0;L;03BF 0314;;;;N;;;1F49;;1F49 1F42;GREEK SMALL LETTER OMICRON WITH PSILI AND VARIA;Ll;0;L;1F40 0300;;;;N;;;1F4A;;1F4A 1F43;GREEK SMALL LETTER OMICRON WITH DASIA AND VARIA;Ll;0;L;1F41 0300;;;;N;;;1F4B;;1F4B 1F44;GREEK SMALL LETTER OMICRON WITH PSILI AND OXIA;Ll;0;L;1F40 0301;;;;N;;;1F4C;;1F4C 1F45;GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA;Ll;0;L;1F41 0301;;;;N;;;1F4D;;1F4D 1F48;GREEK CAPITAL LETTER OMICRON WITH PSILI;Lu;0;L;039F 0313;;;;N;;;;1F40; 1F49;GREEK CAPITAL LETTER OMICRON WITH DASIA;Lu;0;L;039F 0314;;;;N;;;;1F41; 1F4A;GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA;Lu;0;L;1F48 0300;;;;N;;;;1F42; 1F4B;GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA;Lu;0;L;1F49 0300;;;;N;;;;1F43; 1F4C;GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA;Lu;0;L;1F48 0301;;;;N;;;;1F44; 1F4D;GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA;Lu;0;L;1F49 0301;;;;N;;;;1F45; 1F50;GREEK SMALL LETTER UPSILON WITH PSILI;Ll;0;L;03C5 0313;;;;N;;;;; 1F51;GREEK SMALL LETTER UPSILON WITH DASIA;Ll;0;L;03C5 0314;;;;N;;;1F59;;1F59 1F52;GREEK SMALL LETTER UPSILON WITH PSILI AND VARIA;Ll;0;L;1F50 0300;;;;N;;;;; 1F53;GREEK SMALL LETTER UPSILON WITH DASIA AND VARIA;Ll;0;L;1F51 0300;;;;N;;;1F5B;;1F5B 1F54;GREEK SMALL LETTER UPSILON WITH PSILI AND OXIA;Ll;0;L;1F50 0301;;;;N;;;;; 1F55;GREEK SMALL LETTER UPSILON WITH DASIA AND OXIA;Ll;0;L;1F51 0301;;;;N;;;1F5D;;1F5D 1F56;GREEK SMALL LETTER UPSILON WITH PSILI AND PERISPOMENI;Ll;0;L;1F50 0342;;;;N;;;;; 1F57;GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI;Ll;0;L;1F51 0342;;;;N;;;1F5F;;1F5F 1F59;GREEK CAPITAL LETTER UPSILON WITH DASIA;Lu;0;L;03A5 0314;;;;N;;;;1F51; 1F5B;GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA;Lu;0;L;1F59 0300;;;;N;;;;1F53; 1F5D;GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA;Lu;0;L;1F59 0301;;;;N;;;;1F55; 1F5F;GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI;Lu;0;L;1F59 0342;;;;N;;;;1F57; 1F60;GREEK SMALL LETTER OMEGA WITH PSILI;Ll;0;L;03C9 0313;;;;N;;;1F68;;1F68 1F61;GREEK SMALL LETTER OMEGA WITH DASIA;Ll;0;L;03C9 0314;;;;N;;;1F69;;1F69 1F62;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA;Ll;0;L;1F60 0300;;;;N;;;1F6A;;1F6A 1F63;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA;Ll;0;L;1F61 0300;;;;N;;;1F6B;;1F6B 1F64;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA;Ll;0;L;1F60 0301;;;;N;;;1F6C;;1F6C 1F65;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA;Ll;0;L;1F61 0301;;;;N;;;1F6D;;1F6D 1F66;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI;Ll;0;L;1F60 0342;;;;N;;;1F6E;;1F6E 1F67;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI;Ll;0;L;1F61 0342;;;;N;;;1F6F;;1F6F 1F68;GREEK CAPITAL LETTER OMEGA WITH PSILI;Lu;0;L;03A9 0313;;;;N;;;;1F60; 1F69;GREEK CAPITAL LETTER OMEGA WITH DASIA;Lu;0;L;03A9 0314;;;;N;;;;1F61; 1F6A;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA;Lu;0;L;1F68 0300;;;;N;;;;1F62; 1F6B;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA;Lu;0;L;1F69 0300;;;;N;;;;1F63; 1F6C;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA;Lu;0;L;1F68 0301;;;;N;;;;1F64; 1F6D;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA;Lu;0;L;1F69 0301;;;;N;;;;1F65; 1F6E;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI;Lu;0;L;1F68 0342;;;;N;;;;1F66; 1F6F;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI;Lu;0;L;1F69 0342;;;;N;;;;1F67; 1F70;GREEK SMALL LETTER ALPHA WITH VARIA;Ll;0;L;03B1 0300;;;;N;;;1FBA;;1FBA 1F71;GREEK SMALL LETTER ALPHA WITH OXIA;Ll;0;L;03AC;;;;N;;;1FBB;;1FBB 1F72;GREEK SMALL LETTER EPSILON WITH VARIA;Ll;0;L;03B5 0300;;;;N;;;1FC8;;1FC8 1F73;GREEK SMALL LETTER EPSILON WITH OXIA;Ll;0;L;03AD;;;;N;;;1FC9;;1FC9 1F74;GREEK SMALL LETTER ETA WITH VARIA;Ll;0;L;03B7 0300;;;;N;;;1FCA;;1FCA 1F75;GREEK SMALL LETTER ETA WITH OXIA;Ll;0;L;03AE;;;;N;;;1FCB;;1FCB 1F76;GREEK SMALL LETTER IOTA WITH VARIA;Ll;0;L;03B9 0300;;;;N;;;1FDA;;1FDA 1F77;GREEK SMALL LETTER IOTA WITH OXIA;Ll;0;L;03AF;;;;N;;;1FDB;;1FDB 1F78;GREEK SMALL LETTER OMICRON WITH VARIA;Ll;0;L;03BF 0300;;;;N;;;1FF8;;1FF8 1F79;GREEK SMALL LETTER OMICRON WITH OXIA;Ll;0;L;03CC;;;;N;;;1FF9;;1FF9 1F7A;GREEK SMALL LETTER UPSILON WITH VARIA;Ll;0;L;03C5 0300;;;;N;;;1FEA;;1FEA 1F7B;GREEK SMALL LETTER UPSILON WITH OXIA;Ll;0;L;03CD;;;;N;;;1FEB;;1FEB 1F7C;GREEK SMALL LETTER OMEGA WITH VARIA;Ll;0;L;03C9 0300;;;;N;;;1FFA;;1FFA 1F7D;GREEK SMALL LETTER OMEGA WITH OXIA;Ll;0;L;03CE;;;;N;;;1FFB;;1FFB 1F80;GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F00 0345;;;;N;;;1F88;;1F88 1F81;GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F01 0345;;;;N;;;1F89;;1F89 1F82;GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F02 0345;;;;N;;;1F8A;;1F8A 1F83;GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F03 0345;;;;N;;;1F8B;;1F8B 1F84;GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F04 0345;;;;N;;;1F8C;;1F8C 1F85;GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F05 0345;;;;N;;;1F8D;;1F8D 1F86;GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F06 0345;;;;N;;;1F8E;;1F8E 1F87;GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F07 0345;;;;N;;;1F8F;;1F8F 1F88;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F08 0345;;;;N;;;;1F80; 1F89;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F09 0345;;;;N;;;;1F81; 1F8A;GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0A 0345;;;;N;;;;1F82; 1F8B;GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F0B 0345;;;;N;;;;1F83; 1F8C;GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0C 0345;;;;N;;;;1F84; 1F8D;GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F0D 0345;;;;N;;;;1F85; 1F8E;GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0E 0345;;;;N;;;;1F86; 1F8F;GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F0F 0345;;;;N;;;;1F87; 1F90;GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F20 0345;;;;N;;;1F98;;1F98 1F91;GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F21 0345;;;;N;;;1F99;;1F99 1F92;GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F22 0345;;;;N;;;1F9A;;1F9A 1F93;GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F23 0345;;;;N;;;1F9B;;1F9B 1F94;GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F24 0345;;;;N;;;1F9C;;1F9C 1F95;GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F25 0345;;;;N;;;1F9D;;1F9D 1F96;GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F26 0345;;;;N;;;1F9E;;1F9E 1F97;GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F27 0345;;;;N;;;1F9F;;1F9F 1F98;GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F28 0345;;;;N;;;;1F90; 1F99;GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F29 0345;;;;N;;;;1F91; 1F9A;GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2A 0345;;;;N;;;;1F92; 1F9B;GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F2B 0345;;;;N;;;;1F93; 1F9C;GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2C 0345;;;;N;;;;1F94; 1F9D;GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F2D 0345;;;;N;;;;1F95; 1F9E;GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2E 0345;;;;N;;;;1F96; 1F9F;GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F2F 0345;;;;N;;;;1F97; 1FA0;GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI;Ll;0;L;1F60 0345;;;;N;;;1FA8;;1FA8 1FA1;GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI;Ll;0;L;1F61 0345;;;;N;;;1FA9;;1FA9 1FA2;GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F62 0345;;;;N;;;1FAA;;1FAA 1FA3;GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI;Ll;0;L;1F63 0345;;;;N;;;1FAB;;1FAB 1FA4;GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F64 0345;;;;N;;;1FAC;;1FAC 1FA5;GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI;Ll;0;L;1F65 0345;;;;N;;;1FAD;;1FAD 1FA6;GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F66 0345;;;;N;;;1FAE;;1FAE 1FA7;GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1F67 0345;;;;N;;;1FAF;;1FAF 1FA8;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI;Lt;0;L;1F68 0345;;;;N;;;;1FA0; 1FA9;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI;Lt;0;L;1F69 0345;;;;N;;;;1FA1; 1FAA;GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6A 0345;;;;N;;;;1FA2; 1FAB;GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI;Lt;0;L;1F6B 0345;;;;N;;;;1FA3; 1FAC;GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6C 0345;;;;N;;;;1FA4; 1FAD;GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI;Lt;0;L;1F6D 0345;;;;N;;;;1FA5; 1FAE;GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6E 0345;;;;N;;;;1FA6; 1FAF;GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI;Lt;0;L;1F6F 0345;;;;N;;;;1FA7; 1FB0;GREEK SMALL LETTER ALPHA WITH VRACHY;Ll;0;L;03B1 0306;;;;N;;;1FB8;;1FB8 1FB1;GREEK SMALL LETTER ALPHA WITH MACRON;Ll;0;L;03B1 0304;;;;N;;;1FB9;;1FB9 1FB2;GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F70 0345;;;;N;;;;; 1FB3;GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI;Ll;0;L;03B1 0345;;;;N;;;1FBC;;1FBC 1FB4;GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AC 0345;;;;N;;;;; 1FB6;GREEK SMALL LETTER ALPHA WITH PERISPOMENI;Ll;0;L;03B1 0342;;;;N;;;;; 1FB7;GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FB6 0345;;;;N;;;;; 1FB8;GREEK CAPITAL LETTER ALPHA WITH VRACHY;Lu;0;L;0391 0306;;;;N;;;;1FB0; 1FB9;GREEK CAPITAL LETTER ALPHA WITH MACRON;Lu;0;L;0391 0304;;;;N;;;;1FB1; 1FBA;GREEK CAPITAL LETTER ALPHA WITH VARIA;Lu;0;L;0391 0300;;;;N;;;;1F70; 1FBB;GREEK CAPITAL LETTER ALPHA WITH OXIA;Lu;0;L;0386;;;;N;;;;1F71; 1FBC;GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI;Lt;0;L;0391 0345;;;;N;;;;1FB3; 1FBD;GREEK KORONIS;Sk;0;ON; 0020 0313;;;;N;;;;; 1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399 1FBF;GREEK PSILI;Sk;0;ON; 0020 0313;;;;N;;;;; 1FC0;GREEK PERISPOMENI;Sk;0;ON; 0020 0342;;;;N;;;;; 1FC1;GREEK DIALYTIKA AND PERISPOMENI;Sk;0;ON;00A8 0342;;;;N;;;;; 1FC2;GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F74 0345;;;;N;;;;; 1FC3;GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI;Ll;0;L;03B7 0345;;;;N;;;1FCC;;1FCC 1FC4;GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03AE 0345;;;;N;;;;; 1FC6;GREEK SMALL LETTER ETA WITH PERISPOMENI;Ll;0;L;03B7 0342;;;;N;;;;; 1FC7;GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FC6 0345;;;;N;;;;; 1FC8;GREEK CAPITAL LETTER EPSILON WITH VARIA;Lu;0;L;0395 0300;;;;N;;;;1F72; 1FC9;GREEK CAPITAL LETTER EPSILON WITH OXIA;Lu;0;L;0388;;;;N;;;;1F73; 1FCA;GREEK CAPITAL LETTER ETA WITH VARIA;Lu;0;L;0397 0300;;;;N;;;;1F74; 1FCB;GREEK CAPITAL LETTER ETA WITH OXIA;Lu;0;L;0389;;;;N;;;;1F75; 1FCC;GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI;Lt;0;L;0397 0345;;;;N;;;;1FC3; 1FCD;GREEK PSILI AND VARIA;Sk;0;ON;1FBF 0300;;;;N;;;;; 1FCE;GREEK PSILI AND OXIA;Sk;0;ON;1FBF 0301;;;;N;;;;; 1FCF;GREEK PSILI AND PERISPOMENI;Sk;0;ON;1FBF 0342;;;;N;;;;; 1FD0;GREEK SMALL LETTER IOTA WITH VRACHY;Ll;0;L;03B9 0306;;;;N;;;1FD8;;1FD8 1FD1;GREEK SMALL LETTER IOTA WITH MACRON;Ll;0;L;03B9 0304;;;;N;;;1FD9;;1FD9 1FD2;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND VARIA;Ll;0;L;03CA 0300;;;;N;;;;; 1FD3;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA;Ll;0;L;0390;;;;N;;;;; 1FD6;GREEK SMALL LETTER IOTA WITH PERISPOMENI;Ll;0;L;03B9 0342;;;;N;;;;; 1FD7;GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CA 0342;;;;N;;;;; 1FD8;GREEK CAPITAL LETTER IOTA WITH VRACHY;Lu;0;L;0399 0306;;;;N;;;;1FD0; 1FD9;GREEK CAPITAL LETTER IOTA WITH MACRON;Lu;0;L;0399 0304;;;;N;;;;1FD1; 1FDA;GREEK CAPITAL LETTER IOTA WITH VARIA;Lu;0;L;0399 0300;;;;N;;;;1F76; 1FDB;GREEK CAPITAL LETTER IOTA WITH OXIA;Lu;0;L;038A;;;;N;;;;1F77; 1FDD;GREEK DASIA AND VARIA;Sk;0;ON;1FFE 0300;;;;N;;;;; 1FDE;GREEK DASIA AND OXIA;Sk;0;ON;1FFE 0301;;;;N;;;;; 1FDF;GREEK DASIA AND PERISPOMENI;Sk;0;ON;1FFE 0342;;;;N;;;;; 1FE0;GREEK SMALL LETTER UPSILON WITH VRACHY;Ll;0;L;03C5 0306;;;;N;;;1FE8;;1FE8 1FE1;GREEK SMALL LETTER UPSILON WITH MACRON;Ll;0;L;03C5 0304;;;;N;;;1FE9;;1FE9 1FE2;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND VARIA;Ll;0;L;03CB 0300;;;;N;;;;; 1FE3;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA;Ll;0;L;03B0;;;;N;;;;; 1FE4;GREEK SMALL LETTER RHO WITH PSILI;Ll;0;L;03C1 0313;;;;N;;;;; 1FE5;GREEK SMALL LETTER RHO WITH DASIA;Ll;0;L;03C1 0314;;;;N;;;1FEC;;1FEC 1FE6;GREEK SMALL LETTER UPSILON WITH PERISPOMENI;Ll;0;L;03C5 0342;;;;N;;;;; 1FE7;GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI;Ll;0;L;03CB 0342;;;;N;;;;; 1FE8;GREEK CAPITAL LETTER UPSILON WITH VRACHY;Lu;0;L;03A5 0306;;;;N;;;;1FE0; 1FE9;GREEK CAPITAL LETTER UPSILON WITH MACRON;Lu;0;L;03A5 0304;;;;N;;;;1FE1; 1FEA;GREEK CAPITAL LETTER UPSILON WITH VARIA;Lu;0;L;03A5 0300;;;;N;;;;1F7A; 1FEB;GREEK CAPITAL LETTER UPSILON WITH OXIA;Lu;0;L;038E;;;;N;;;;1F7B; 1FEC;GREEK CAPITAL LETTER RHO WITH DASIA;Lu;0;L;03A1 0314;;;;N;;;;1FE5; 1FED;GREEK DIALYTIKA AND VARIA;Sk;0;ON;00A8 0300;;;;N;;;;; 1FEE;GREEK DIALYTIKA AND OXIA;Sk;0;ON;0385;;;;N;;;;; 1FEF;GREEK VARIA;Sk;0;ON;0060;;;;N;;;;; 1FF2;GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI;Ll;0;L;1F7C 0345;;;;N;;;;; 1FF3;GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI;Ll;0;L;03C9 0345;;;;N;;;1FFC;;1FFC 1FF4;GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI;Ll;0;L;03CE 0345;;;;N;;;;; 1FF6;GREEK SMALL LETTER OMEGA WITH PERISPOMENI;Ll;0;L;03C9 0342;;;;N;;;;; 1FF7;GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI;Ll;0;L;1FF6 0345;;;;N;;;;; 1FF8;GREEK CAPITAL LETTER OMICRON WITH VARIA;Lu;0;L;039F 0300;;;;N;;;;1F78; 1FF9;GREEK CAPITAL LETTER OMICRON WITH OXIA;Lu;0;L;038C;;;;N;;;;1F79; 1FFA;GREEK CAPITAL LETTER OMEGA WITH VARIA;Lu;0;L;03A9 0300;;;;N;;;;1F7C; 1FFB;GREEK CAPITAL LETTER OMEGA WITH OXIA;Lu;0;L;038F;;;;N;;;;1F7D; 1FFC;GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI;Lt;0;L;03A9 0345;;;;N;;;;1FF3; 1FFD;GREEK OXIA;Sk;0;ON;00B4;;;;N;;;;; 1FFE;GREEK DASIA;Sk;0;ON; 0020 0314;;;;N;;;;; 2000;EN QUAD;Zs;0;WS;2002;;;;N;;;;; 2001;EM QUAD;Zs;0;WS;2003;;;;N;;;;; 2002;EN SPACE;Zs;0;WS; 0020;;;;N;;;;; 2003;EM SPACE;Zs;0;WS; 0020;;;;N;;;;; 2004;THREE-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; 2005;FOUR-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; 2006;SIX-PER-EM SPACE;Zs;0;WS; 0020;;;;N;;;;; 2007;FIGURE SPACE;Zs;0;WS; 0020;;;;N;;;;; 2008;PUNCTUATION SPACE;Zs;0;WS; 0020;;;;N;;;;; 2009;THIN SPACE;Zs;0;WS; 0020;;;;N;;;;; 200A;HAIR SPACE;Zs;0;WS; 0020;;;;N;;;;; 200B;ZERO WIDTH SPACE;Cf;0;BN;;;;;N;;;;; 200C;ZERO WIDTH NON-JOINER;Cf;0;BN;;;;;N;;;;; 200D;ZERO WIDTH JOINER;Cf;0;BN;;;;;N;;;;; 200E;LEFT-TO-RIGHT MARK;Cf;0;L;;;;;N;;;;; 200F;RIGHT-TO-LEFT MARK;Cf;0;R;;;;;N;;;;; 2010;HYPHEN;Pd;0;ON;;;;;N;;;;; 2011;NON-BREAKING HYPHEN;Pd;0;ON; 2010;;;;N;;;;; 2012;FIGURE DASH;Pd;0;ON;;;;;N;;;;; 2013;EN DASH;Pd;0;ON;;;;;N;;;;; 2014;EM DASH;Pd;0;ON;;;;;N;;;;; 2015;HORIZONTAL BAR;Pd;0;ON;;;;;N;QUOTATION DASH;;;; 2016;DOUBLE VERTICAL LINE;Po;0;ON;;;;;N;DOUBLE VERTICAL BAR;;;; 2017;DOUBLE LOW LINE;Po;0;ON; 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;; 2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;Y;SINGLE TURNED COMMA QUOTATION MARK;;;; 2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;Y;SINGLE COMMA QUOTATION MARK;;;; 201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;Y;LOW SINGLE COMMA QUOTATION MARK;;;; 201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;Y;SINGLE REVERSED COMMA QUOTATION MARK;;;; 201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;Y;DOUBLE TURNED COMMA QUOTATION MARK;;;; 201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;Y;DOUBLE COMMA QUOTATION MARK;;;; 201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;Y;LOW DOUBLE COMMA QUOTATION MARK;;;; 201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;Y;DOUBLE REVERSED COMMA QUOTATION MARK;;;; 2020;DAGGER;Po;0;ON;;;;;N;;;;; 2021;DOUBLE DAGGER;Po;0;ON;;;;;N;;;;; 2022;BULLET;Po;0;ON;;;;;N;;;;; 2023;TRIANGULAR BULLET;Po;0;ON;;;;;N;;;;; 2024;ONE DOT LEADER;Po;0;ON; 002E;;;;N;;;;; 2025;TWO DOT LEADER;Po;0;ON; 002E 002E;;;;N;;;;; 2026;HORIZONTAL ELLIPSIS;Po;0;ON; 002E 002E 002E;;;;N;;;;; 2027;HYPHENATION POINT;Po;0;ON;;;;;N;;;;; 2028;LINE SEPARATOR;Zl;0;WS;;;;;N;;;;; 2029;PARAGRAPH SEPARATOR;Zp;0;B;;;;;N;;;;; 202A;LEFT-TO-RIGHT EMBEDDING;Cf;0;LRE;;;;;N;;;;; 202B;RIGHT-TO-LEFT EMBEDDING;Cf;0;RLE;;;;;N;;;;; 202C;POP DIRECTIONAL FORMATTING;Cf;0;PDF;;;;;N;;;;; 202D;LEFT-TO-RIGHT OVERRIDE;Cf;0;LRO;;;;;N;;;;; 202E;RIGHT-TO-LEFT OVERRIDE;Cf;0;RLO;;;;;N;;;;; 202F;NARROW NO-BREAK SPACE;Zs;0;CS; 0020;;;;N;;;;; 2030;PER MILLE SIGN;Po;0;ET;;;;;N;;;;; 2031;PER TEN THOUSAND SIGN;Po;0;ET;;;;;N;;;;; 2032;PRIME;Po;0;ET;;;;;N;;;;; 2033;DOUBLE PRIME;Po;0;ET; 2032 2032;;;;N;;;;; 2034;TRIPLE PRIME;Po;0;ET; 2032 2032 2032;;;;N;;;;; 2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;; 2036;REVERSED DOUBLE PRIME;Po;0;ON; 2035 2035;;;;N;;;;; 2037;REVERSED TRIPLE PRIME;Po;0;ON; 2035 2035 2035;;;;N;;;;; 2038;CARET;Po;0;ON;;;;;N;;;;; 2039;SINGLE LEFT-POINTING ANGLE QUOTATION MARK;Pi;0;ON;;;;;Y;LEFT POINTING SINGLE GUILLEMET;;;; 203A;SINGLE RIGHT-POINTING ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING SINGLE GUILLEMET;;;; 203B;REFERENCE MARK;Po;0;ON;;;;;N;;;;; 203C;DOUBLE EXCLAMATION MARK;Po;0;ON; 0021 0021;;;;N;;;;; 203D;INTERROBANG;Po;0;ON;;;;;N;;;;; 203E;OVERLINE;Po;0;ON; 0020 0305;;;;N;SPACING OVERSCORE;;;; 203F;UNDERTIE;Pc;0;ON;;;;;N;;Enotikon;;; 2040;CHARACTER TIE;Pc;0;ON;;;;;N;;;;; 2041;CARET INSERTION POINT;Po;0;ON;;;;;N;;;;; 2042;ASTERISM;Po;0;ON;;;;;N;;;;; 2043;HYPHEN BULLET;Po;0;ON;;;;;N;;;;; 2044;FRACTION SLASH;Sm;0;CS;;;;;N;;;;; 2045;LEFT SQUARE BRACKET WITH QUILL;Ps;0;ON;;;;;Y;;;;; 2046;RIGHT SQUARE BRACKET WITH QUILL;Pe;0;ON;;;;;Y;;;;; 2047;DOUBLE QUESTION MARK;Po;0;ON; 003F 003F;;;;N;;;;; 2048;QUESTION EXCLAMATION MARK;Po;0;ON; 003F 0021;;;;N;;;;; 2049;EXCLAMATION QUESTION MARK;Po;0;ON; 0021 003F;;;;N;;;;; 204A;TIRONIAN SIGN ET;Po;0;ON;;;;;N;;;;; 204B;REVERSED PILCROW SIGN;Po;0;ON;;;;;N;;;;; 204C;BLACK LEFTWARDS BULLET;Po;0;ON;;;;;N;;;;; 204D;BLACK RIGHTWARDS BULLET;Po;0;ON;;;;;N;;;;; 204E;LOW ASTERISK;Po;0;ON;;;;;N;;;;; 204F;REVERSED SEMICOLON;Po;0;ON;;;;;N;;;;; 2050;CLOSE UP;Po;0;ON;;;;;N;;;;; 2051;TWO ASTERISKS ALIGNED VERTICALLY;Po;0;ON;;;;;N;;;;; 2052;COMMERCIAL MINUS SIGN;Sm;0;ON;;;;;N;;;;; 2053;SWUNG DASH;Po;0;ON;;;;;N;;;;; 2054;INVERTED UNDERTIE;Pc;0;ON;;;;;N;;;;; 2055;FLOWER PUNCTUATION MARK;Po;0;ON;;;;;N;;;;; 2056;THREE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; 2057;QUADRUPLE PRIME;Po;0;ON; 2032 2032 2032 2032;;;;N;;;;; 2058;FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; 2059;FIVE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; 205A;TWO DOT PUNCTUATION;Po;0;ON;;;;;N;;;;; 205B;FOUR DOT MARK;Po;0;ON;;;;;N;;;;; 205C;DOTTED CROSS;Po;0;ON;;;;;N;;;;; 205D;TRICOLON;Po;0;ON;;;;;N;;;;; 205E;VERTICAL FOUR DOTS;Po;0;ON;;;;;N;;;;; 205F;MEDIUM MATHEMATICAL SPACE;Zs;0;WS; 0020;;;;N;;;;; 2060;WORD JOINER;Cf;0;BN;;;;;N;;;;; 2061;FUNCTION APPLICATION;Cf;0;BN;;;;;N;;;;; 2062;INVISIBLE TIMES;Cf;0;BN;;;;;N;;;;; 2063;INVISIBLE SEPARATOR;Cf;0;BN;;;;;N;;;;; 206A;INHIBIT SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; 206B;ACTIVATE SYMMETRIC SWAPPING;Cf;0;BN;;;;;N;;;;; 206C;INHIBIT ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; 206D;ACTIVATE ARABIC FORM SHAPING;Cf;0;BN;;;;;N;;;;; 206E;NATIONAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; 206F;NOMINAL DIGIT SHAPES;Cf;0;BN;;;;;N;;;;; 2070;SUPERSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;; 2071;SUPERSCRIPT LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;;; 2074;SUPERSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;; 2075;SUPERSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;; 2076;SUPERSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;; 2077;SUPERSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;; 2078;SUPERSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;; 2079;SUPERSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;; 207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; 207B;SUPERSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;; 207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; 207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;; 207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;; 207F;SUPERSCRIPT LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;;; 2080;SUBSCRIPT ZERO;No;0;EN; 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;; 2081;SUBSCRIPT ONE;No;0;EN; 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;; 2082;SUBSCRIPT TWO;No;0;EN; 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;; 2083;SUBSCRIPT THREE;No;0;EN; 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;; 2084;SUBSCRIPT FOUR;No;0;EN; 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;; 2085;SUBSCRIPT FIVE;No;0;EN; 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;; 2086;SUBSCRIPT SIX;No;0;EN; 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;; 2087;SUBSCRIPT SEVEN;No;0;EN; 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;; 2088;SUBSCRIPT EIGHT;No;0;EN; 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;; 2089;SUBSCRIPT NINE;No;0;EN; 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;; 208A;SUBSCRIPT PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; 208B;SUBSCRIPT MINUS;Sm;0;ES; 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;; 208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; 208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;; 208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;; 2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L; 0061;;;;N;;;;; 2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L; 0065;;;;N;;;;; 2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L; 006F;;;;N;;;;; 2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L; 0078;;;;N;;;;; 2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L; 0259;;;;N;;;;; 20A0;EURO-CURRENCY SIGN;Sc;0;ET;;;;;N;;;;; 20A1;COLON SIGN;Sc;0;ET;;;;;N;;;;; 20A2;CRUZEIRO SIGN;Sc;0;ET;;;;;N;;;;; 20A3;FRENCH FRANC SIGN;Sc;0;ET;;;;;N;;;;; 20A4;LIRA SIGN;Sc;0;ET;;;;;N;;;;; 20A5;MILL SIGN;Sc;0;ET;;;;;N;;;;; 20A6;NAIRA SIGN;Sc;0;ET;;;;;N;;;;; 20A7;PESETA SIGN;Sc;0;ET;;;;;N;;;;; 20A8;RUPEE SIGN;Sc;0;ET; 0052 0073;;;;N;;;;; 20A9;WON SIGN;Sc;0;ET;;;;;N;;;;; 20AA;NEW SHEQEL SIGN;Sc;0;ET;;;;;N;;;;; 20AB;DONG SIGN;Sc;0;ET;;;;;N;;;;; 20AC;EURO SIGN;Sc;0;ET;;;;;N;;;;; 20AD;KIP SIGN;Sc;0;ET;;;;;N;;;;; 20AE;TUGRIK SIGN;Sc;0;ET;;;;;N;;;;; 20AF;DRACHMA SIGN;Sc;0;ET;;;;;N;;;;; 20B0;GERMAN PENNY SIGN;Sc;0;ET;;;;;N;;;;; 20B1;PESO SIGN;Sc;0;ET;;;;;N;;;;; 20B2;GUARANI SIGN;Sc;0;ET;;;;;N;;;;; 20B3;AUSTRAL SIGN;Sc;0;ET;;;;;N;;;;; 20B4;HRYVNIA SIGN;Sc;0;ET;;;;;N;;;;; 20B5;CEDI SIGN;Sc;0;ET;;;;;N;;;;; 20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;; 20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;; 20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;; 20D3;COMBINING SHORT VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING SHORT VERTICAL BAR OVERLAY;;;; 20D4;COMBINING ANTICLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING ANTICLOCKWISE ARROW ABOVE;;;; 20D5;COMBINING CLOCKWISE ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING CLOCKWISE ARROW ABOVE;;;; 20D6;COMBINING LEFT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT ARROW ABOVE;;;; 20D7;COMBINING RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT ARROW ABOVE;;;; 20D8;COMBINING RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING RING OVERLAY;;;; 20D9;COMBINING CLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING CLOCKWISE RING OVERLAY;;;; 20DA;COMBINING ANTICLOCKWISE RING OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING ANTICLOCKWISE RING OVERLAY;;;; 20DB;COMBINING THREE DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING THREE DOTS ABOVE;;;; 20DC;COMBINING FOUR DOTS ABOVE;Mn;230;NSM;;;;;N;NON-SPACING FOUR DOTS ABOVE;;;; 20DD;COMBINING ENCLOSING CIRCLE;Me;0;NSM;;;;;N;ENCLOSING CIRCLE;;;; 20DE;COMBINING ENCLOSING SQUARE;Me;0;NSM;;;;;N;ENCLOSING SQUARE;;;; 20DF;COMBINING ENCLOSING DIAMOND;Me;0;NSM;;;;;N;ENCLOSING DIAMOND;;;; 20E0;COMBINING ENCLOSING CIRCLE BACKSLASH;Me;0;NSM;;;;;N;ENCLOSING CIRCLE SLASH;;;; 20E1;COMBINING LEFT RIGHT ARROW ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT RIGHT ARROW ABOVE;;;; 20E2;COMBINING ENCLOSING SCREEN;Me;0;NSM;;;;;N;;;;; 20E3;COMBINING ENCLOSING KEYCAP;Me;0;NSM;;;;;N;;;;; 20E4;COMBINING ENCLOSING UPWARD POINTING TRIANGLE;Me;0;NSM;;;;;N;;;;; 20E5;COMBINING REVERSE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; 20E6;COMBINING DOUBLE VERTICAL STROKE OVERLAY;Mn;1;NSM;;;;;N;;;;; 20E7;COMBINING ANNUITY SYMBOL;Mn;230;NSM;;;;;N;;;;; 20E8;COMBINING TRIPLE UNDERDOT;Mn;220;NSM;;;;;N;;;;; 20E9;COMBINING WIDE BRIDGE ABOVE;Mn;230;NSM;;;;;N;;;;; 20EA;COMBINING LEFTWARDS ARROW OVERLAY;Mn;1;NSM;;;;;N;;;;; 20EB;COMBINING LONG DOUBLE SOLIDUS OVERLAY;Mn;1;NSM;;;;;N;;;;; 20EC;COMBINING RIGHTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; 20ED;COMBINING LEFTWARDS HARPOON WITH BARB DOWNWARDS;Mn;220;NSM;;;;;N;;;;; 20EE;COMBINING LEFT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; 20EF;COMBINING RIGHT ARROW BELOW;Mn;220;NSM;;;;;N;;;;; 2100;ACCOUNT OF;So;0;ON; 0061 002F 0063;;;;N;;;;; 2101;ADDRESSED TO THE SUBJECT;So;0;ON; 0061 002F 0073;;;;N;;;;; 2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L; 0043;;;;N;DOUBLE-STRUCK C;;;; 2103;DEGREE CELSIUS;So;0;ON; 00B0 0043;;;;N;DEGREES CENTIGRADE;;;; 2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;; 2105;CARE OF;So;0;ON; 0063 002F 006F;;;;N;;;;; 2106;CADA UNA;So;0;ON; 0063 002F 0075;;;;N;;;;; 2107;EULER CONSTANT;Lu;0;L; 0190;;;;N;EULERS;;;; 2108;SCRUPLE;So;0;ON;;;;;N;;;;; 2109;DEGREE FAHRENHEIT;So;0;ON; 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;; 210A;SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; 210B;SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;SCRIPT H;;;; 210C;BLACK-LETTER CAPITAL H;Lu;0;L; 0048;;;;N;BLACK-LETTER H;;;; 210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L; 0048;;;;N;DOUBLE-STRUCK H;;;; 210E;PLANCK CONSTANT;Ll;0;L; 0068;;;;N;;;;; 210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L; 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;; 2110;SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;SCRIPT I;;;; 2111;BLACK-LETTER CAPITAL I;Lu;0;L; 0049;;;;N;BLACK-LETTER I;;;; 2112;SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;SCRIPT L;;;; 2113;SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; 2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;; 2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L; 004E;;;;N;DOUBLE-STRUCK N;;;; 2116;NUMERO SIGN;So;0;ON; 004E 006F;;;;N;NUMERO;;;; 2117;SOUND RECORDING COPYRIGHT;So;0;ON;;;;;N;;;;; 2118;SCRIPT CAPITAL P;So;0;ON;;;;;N;SCRIPT P;;;; 2119;DOUBLE-STRUCK CAPITAL P;Lu;0;L; 0050;;;;N;DOUBLE-STRUCK P;;;; 211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L; 0051;;;;N;DOUBLE-STRUCK Q;;;; 211B;SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;SCRIPT R;;;; 211C;BLACK-LETTER CAPITAL R;Lu;0;L; 0052;;;;N;BLACK-LETTER R;;;; 211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L; 0052;;;;N;DOUBLE-STRUCK R;;;; 211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;; 211F;RESPONSE;So;0;ON;;;;;N;;;;; 2120;SERVICE MARK;So;0;ON; 0053 004D;;;;N;;;;; 2121;TELEPHONE SIGN;So;0;ON; 0054 0045 004C;;;;N;T E L SYMBOL;;;; 2122;TRADE MARK SIGN;So;0;ON; 0054 004D;;;;N;TRADEMARK;;;; 2123;VERSICLE;So;0;ON;;;;;N;;;;; 2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L; 005A;;;;N;DOUBLE-STRUCK Z;;;; 2125;OUNCE SIGN;So;0;ON;;;;;N;OUNCE;;;; 2126;OHM SIGN;Lu;0;L;03A9;;;;N;OHM;;;03C9; 2127;INVERTED OHM SIGN;So;0;ON;;;;;N;MHO;;;; 2128;BLACK-LETTER CAPITAL Z;Lu;0;L; 005A;;;;N;BLACK-LETTER Z;;;; 2129;TURNED GREEK SMALL LETTER IOTA;So;0;ON;;;;;N;;;;; 212A;KELVIN SIGN;Lu;0;L;004B;;;;N;DEGREES KELVIN;;;006B; 212B;ANGSTROM SIGN;Lu;0;L;00C5;;;;N;ANGSTROM UNIT;;;00E5; 212C;SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;SCRIPT B;;;; 212D;BLACK-LETTER CAPITAL C;Lu;0;L; 0043;;;;N;BLACK-LETTER C;;;; 212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;; 212F;SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; 2130;SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;SCRIPT E;;;; 2131;SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;SCRIPT F;;;; 2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E; 2133;SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;SCRIPT M;;;; 2134;SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; 2135;ALEF SYMBOL;Lo;0;L; 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;; 2136;BET SYMBOL;Lo;0;L; 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;; 2137;GIMEL SYMBOL;Lo;0;L; 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;; 2138;DALET SYMBOL;Lo;0;L; 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;; 2139;INFORMATION SOURCE;Ll;0;L; 0069;;;;N;;;;; 213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;; 213B;FACSIMILE SIGN;So;0;ON; 0046 0041 0058;;;;N;;;;; 213C;DOUBLE-STRUCK SMALL PI;Ll;0;L; 03C0;;;;N;;;;; 213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; 213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; 213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; 2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON; 2211;;;;Y;;;;; 2141;TURNED SANS-SERIF CAPITAL G;Sm;0;ON;;;;;N;;;;; 2142;TURNED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; 2143;REVERSED SANS-SERIF CAPITAL L;Sm;0;ON;;;;;N;;;;; 2144;TURNED SANS-SERIF CAPITAL Y;Sm;0;ON;;;;;N;;;;; 2145;DOUBLE-STRUCK ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; 2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; 2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; 2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; 214A;PROPERTY LINE;So;0;ON;;;;;N;;;;; 214B;TURNED AMPERSAND;Sm;0;ON;;;;;N;;;;; 214C;PER SIGN;So;0;ON;;;;;N;;;;; 214D;AKTIESELSKAB;So;0;ON;;;;;N;;;;; 214E;TURNED SMALL F;Ll;0;L;;;;;N;;;2132;;2132 2153;VULGAR FRACTION ONE THIRD;No;0;ON; 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;; 2154;VULGAR FRACTION TWO THIRDS;No;0;ON; 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;; 2155;VULGAR FRACTION ONE FIFTH;No;0;ON; 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;; 2156;VULGAR FRACTION TWO FIFTHS;No;0;ON; 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;; 2157;VULGAR FRACTION THREE FIFTHS;No;0;ON; 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;; 2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON; 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;; 2159;VULGAR FRACTION ONE SIXTH;No;0;ON; 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;; 215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON; 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;; 215B;VULGAR FRACTION ONE EIGHTH;No;0;ON; 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;; 215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON; 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;; 215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON; 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;; 215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON; 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;; 215F;FRACTION NUMERATOR ONE;No;0;ON; 0031 2044;;;1;N;;;;; 2160;ROMAN NUMERAL ONE;Nl;0;L; 0049;;;1;N;;;;2170; 2161;ROMAN NUMERAL TWO;Nl;0;L; 0049 0049;;;2;N;;;;2171; 2162;ROMAN NUMERAL THREE;Nl;0;L; 0049 0049 0049;;;3;N;;;;2172; 2163;ROMAN NUMERAL FOUR;Nl;0;L; 0049 0056;;;4;N;;;;2173; 2164;ROMAN NUMERAL FIVE;Nl;0;L; 0056;;;5;N;;;;2174; 2165;ROMAN NUMERAL SIX;Nl;0;L; 0056 0049;;;6;N;;;;2175; 2166;ROMAN NUMERAL SEVEN;Nl;0;L; 0056 0049 0049;;;7;N;;;;2176; 2167;ROMAN NUMERAL EIGHT;Nl;0;L; 0056 0049 0049 0049;;;8;N;;;;2177; 2168;ROMAN NUMERAL NINE;Nl;0;L; 0049 0058;;;9;N;;;;2178; 2169;ROMAN NUMERAL TEN;Nl;0;L; 0058;;;10;N;;;;2179; 216A;ROMAN NUMERAL ELEVEN;Nl;0;L; 0058 0049;;;11;N;;;;217A; 216B;ROMAN NUMERAL TWELVE;Nl;0;L; 0058 0049 0049;;;12;N;;;;217B; 216C;ROMAN NUMERAL FIFTY;Nl;0;L; 004C;;;50;N;;;;217C; 216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0043;;;100;N;;;;217D; 216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0044;;;500;N;;;;217E; 216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 004D;;;1000;N;;;;217F; 2170;SMALL ROMAN NUMERAL ONE;Nl;0;L; 0069;;;1;N;;;2160;;2160 2171;SMALL ROMAN NUMERAL TWO;Nl;0;L; 0069 0069;;;2;N;;;2161;;2161 2172;SMALL ROMAN NUMERAL THREE;Nl;0;L; 0069 0069 0069;;;3;N;;;2162;;2162 2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L; 0069 0076;;;4;N;;;2163;;2163 2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L; 0076;;;5;N;;;2164;;2164 2175;SMALL ROMAN NUMERAL SIX;Nl;0;L; 0076 0069;;;6;N;;;2165;;2165 2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L; 0076 0069 0069;;;7;N;;;2166;;2166 2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L; 0076 0069 0069 0069;;;8;N;;;2167;;2167 2178;SMALL ROMAN NUMERAL NINE;Nl;0;L; 0069 0078;;;9;N;;;2168;;2168 2179;SMALL ROMAN NUMERAL TEN;Nl;0;L; 0078;;;10;N;;;2169;;2169 217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L; 0078 0069;;;11;N;;;216A;;216A 217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L; 0078 0069 0069;;;12;N;;;216B;;216B 217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L; 006C;;;50;N;;;216C;;216C 217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L; 0063;;;100;N;;;216D;;216D 217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L; 0064;;;500;N;;;216E;;216E 217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L; 006D;;;1000;N;;;216F;;216F 2180;ROMAN NUMERAL ONE THOUSAND C D;Nl;0;L;;;;1000;N;;;;; 2181;ROMAN NUMERAL FIVE THOUSAND;Nl;0;L;;;;5000;N;;;;; 2182;ROMAN NUMERAL TEN THOUSAND;Nl;0;L;;;;10000;N;;;;; 2183;ROMAN NUMERAL REVERSED ONE HUNDRED;Lu;0;L;;;;;N;;;;2184; 2184;LATIN SMALL LETTER REVERSED C;Ll;0;L;;;;;N;;;2183;;2183 2190;LEFTWARDS ARROW;Sm;0;ON;;;;;N;LEFT ARROW;;;; 2191;UPWARDS ARROW;Sm;0;ON;;;;;N;UP ARROW;;;; 2192;RIGHTWARDS ARROW;Sm;0;ON;;;;;N;RIGHT ARROW;;;; 2193;DOWNWARDS ARROW;Sm;0;ON;;;;;N;DOWN ARROW;;;; 2194;LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; 2195;UP DOWN ARROW;So;0;ON;;;;;N;;;;; 2196;NORTH WEST ARROW;So;0;ON;;;;;N;UPPER LEFT ARROW;;;; 2197;NORTH EAST ARROW;So;0;ON;;;;;N;UPPER RIGHT ARROW;;;; 2198;SOUTH EAST ARROW;So;0;ON;;;;;N;LOWER RIGHT ARROW;;;; 2199;SOUTH WEST ARROW;So;0;ON;;;;;N;LOWER LEFT ARROW;;;; 219A;LEFTWARDS ARROW WITH STROKE;Sm;0;ON;2190 0338;;;;N;LEFT ARROW WITH STROKE;;;; 219B;RIGHTWARDS ARROW WITH STROKE;Sm;0;ON;2192 0338;;;;N;RIGHT ARROW WITH STROKE;;;; 219C;LEFTWARDS WAVE ARROW;So;0;ON;;;;;N;LEFT WAVE ARROW;;;; 219D;RIGHTWARDS WAVE ARROW;So;0;ON;;;;;N;RIGHT WAVE ARROW;;;; 219E;LEFTWARDS TWO HEADED ARROW;So;0;ON;;;;;N;LEFT TWO HEADED ARROW;;;; 219F;UPWARDS TWO HEADED ARROW;So;0;ON;;;;;N;UP TWO HEADED ARROW;;;; 21A0;RIGHTWARDS TWO HEADED ARROW;Sm;0;ON;;;;;N;RIGHT TWO HEADED ARROW;;;; 21A1;DOWNWARDS TWO HEADED ARROW;So;0;ON;;;;;N;DOWN TWO HEADED ARROW;;;; 21A2;LEFTWARDS ARROW WITH TAIL;So;0;ON;;;;;N;LEFT ARROW WITH TAIL;;;; 21A3;RIGHTWARDS ARROW WITH TAIL;Sm;0;ON;;;;;N;RIGHT ARROW WITH TAIL;;;; 21A4;LEFTWARDS ARROW FROM BAR;So;0;ON;;;;;N;LEFT ARROW FROM BAR;;;; 21A5;UPWARDS ARROW FROM BAR;So;0;ON;;;;;N;UP ARROW FROM BAR;;;; 21A6;RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;RIGHT ARROW FROM BAR;;;; 21A7;DOWNWARDS ARROW FROM BAR;So;0;ON;;;;;N;DOWN ARROW FROM BAR;;;; 21A8;UP DOWN ARROW WITH BASE;So;0;ON;;;;;N;;;;; 21A9;LEFTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;LEFT ARROW WITH HOOK;;;; 21AA;RIGHTWARDS ARROW WITH HOOK;So;0;ON;;;;;N;RIGHT ARROW WITH HOOK;;;; 21AB;LEFTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;LEFT ARROW WITH LOOP;;;; 21AC;RIGHTWARDS ARROW WITH LOOP;So;0;ON;;;;;N;RIGHT ARROW WITH LOOP;;;; 21AD;LEFT RIGHT WAVE ARROW;So;0;ON;;;;;N;;;;; 21AE;LEFT RIGHT ARROW WITH STROKE;Sm;0;ON;2194 0338;;;;N;;;;; 21AF;DOWNWARDS ZIGZAG ARROW;So;0;ON;;;;;N;DOWN ZIGZAG ARROW;;;; 21B0;UPWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP LEFT;;;; 21B1;UPWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;UP ARROW WITH TIP RIGHT;;;; 21B2;DOWNWARDS ARROW WITH TIP LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP LEFT;;;; 21B3;DOWNWARDS ARROW WITH TIP RIGHTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH TIP RIGHT;;;; 21B4;RIGHTWARDS ARROW WITH CORNER DOWNWARDS;So;0;ON;;;;;N;RIGHT ARROW WITH CORNER DOWN;;;; 21B5;DOWNWARDS ARROW WITH CORNER LEFTWARDS;So;0;ON;;;;;N;DOWN ARROW WITH CORNER LEFT;;;; 21B6;ANTICLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; 21B7;CLOCKWISE TOP SEMICIRCLE ARROW;So;0;ON;;;;;N;;;;; 21B8;NORTH WEST ARROW TO LONG BAR;So;0;ON;;;;;N;UPPER LEFT ARROW TO LONG BAR;;;; 21B9;LEFTWARDS ARROW TO BAR OVER RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR OVER RIGHT ARROW TO BAR;;;; 21BA;ANTICLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; 21BB;CLOCKWISE OPEN CIRCLE ARROW;So;0;ON;;;;;N;;;;; 21BC;LEFTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB UP;;;; 21BD;LEFTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;LEFT HARPOON WITH BARB DOWN;;;; 21BE;UPWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB RIGHT;;;; 21BF;UPWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;UP HARPOON WITH BARB LEFT;;;; 21C0;RIGHTWARDS HARPOON WITH BARB UPWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB UP;;;; 21C1;RIGHTWARDS HARPOON WITH BARB DOWNWARDS;So;0;ON;;;;;N;RIGHT HARPOON WITH BARB DOWN;;;; 21C2;DOWNWARDS HARPOON WITH BARB RIGHTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB RIGHT;;;; 21C3;DOWNWARDS HARPOON WITH BARB LEFTWARDS;So;0;ON;;;;;N;DOWN HARPOON WITH BARB LEFT;;;; 21C4;RIGHTWARDS ARROW OVER LEFTWARDS ARROW;So;0;ON;;;;;N;RIGHT ARROW OVER LEFT ARROW;;;; 21C5;UPWARDS ARROW LEFTWARDS OF DOWNWARDS ARROW;So;0;ON;;;;;N;UP ARROW LEFT OF DOWN ARROW;;;; 21C6;LEFTWARDS ARROW OVER RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT ARROW OVER RIGHT ARROW;;;; 21C7;LEFTWARDS PAIRED ARROWS;So;0;ON;;;;;N;LEFT PAIRED ARROWS;;;; 21C8;UPWARDS PAIRED ARROWS;So;0;ON;;;;;N;UP PAIRED ARROWS;;;; 21C9;RIGHTWARDS PAIRED ARROWS;So;0;ON;;;;;N;RIGHT PAIRED ARROWS;;;; 21CA;DOWNWARDS PAIRED ARROWS;So;0;ON;;;;;N;DOWN PAIRED ARROWS;;;; 21CB;LEFTWARDS HARPOON OVER RIGHTWARDS HARPOON;So;0;ON;;;;;N;LEFT HARPOON OVER RIGHT HARPOON;;;; 21CC;RIGHTWARDS HARPOON OVER LEFTWARDS HARPOON;So;0;ON;;;;;N;RIGHT HARPOON OVER LEFT HARPOON;;;; 21CD;LEFTWARDS DOUBLE ARROW WITH STROKE;So;0;ON;21D0 0338;;;;N;LEFT DOUBLE ARROW WITH STROKE;;;; 21CE;LEFT RIGHT DOUBLE ARROW WITH STROKE;Sm;0;ON;21D4 0338;;;;N;;;;; 21CF;RIGHTWARDS DOUBLE ARROW WITH STROKE;Sm;0;ON;21D2 0338;;;;N;RIGHT DOUBLE ARROW WITH STROKE;;;; 21D0;LEFTWARDS DOUBLE ARROW;So;0;ON;;;;;N;LEFT DOUBLE ARROW;;;; 21D1;UPWARDS DOUBLE ARROW;So;0;ON;;;;;N;UP DOUBLE ARROW;;;; 21D2;RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;RIGHT DOUBLE ARROW;;;; 21D3;DOWNWARDS DOUBLE ARROW;So;0;ON;;;;;N;DOWN DOUBLE ARROW;;;; 21D4;LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; 21D5;UP DOWN DOUBLE ARROW;So;0;ON;;;;;N;;;;; 21D6;NORTH WEST DOUBLE ARROW;So;0;ON;;;;;N;UPPER LEFT DOUBLE ARROW;;;; 21D7;NORTH EAST DOUBLE ARROW;So;0;ON;;;;;N;UPPER RIGHT DOUBLE ARROW;;;; 21D8;SOUTH EAST DOUBLE ARROW;So;0;ON;;;;;N;LOWER RIGHT DOUBLE ARROW;;;; 21D9;SOUTH WEST DOUBLE ARROW;So;0;ON;;;;;N;LOWER LEFT DOUBLE ARROW;;;; 21DA;LEFTWARDS TRIPLE ARROW;So;0;ON;;;;;N;LEFT TRIPLE ARROW;;;; 21DB;RIGHTWARDS TRIPLE ARROW;So;0;ON;;;;;N;RIGHT TRIPLE ARROW;;;; 21DC;LEFTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;LEFT SQUIGGLE ARROW;;;; 21DD;RIGHTWARDS SQUIGGLE ARROW;So;0;ON;;;;;N;RIGHT SQUIGGLE ARROW;;;; 21DE;UPWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;UP ARROW WITH DOUBLE STROKE;;;; 21DF;DOWNWARDS ARROW WITH DOUBLE STROKE;So;0;ON;;;;;N;DOWN ARROW WITH DOUBLE STROKE;;;; 21E0;LEFTWARDS DASHED ARROW;So;0;ON;;;;;N;LEFT DASHED ARROW;;;; 21E1;UPWARDS DASHED ARROW;So;0;ON;;;;;N;UP DASHED ARROW;;;; 21E2;RIGHTWARDS DASHED ARROW;So;0;ON;;;;;N;RIGHT DASHED ARROW;;;; 21E3;DOWNWARDS DASHED ARROW;So;0;ON;;;;;N;DOWN DASHED ARROW;;;; 21E4;LEFTWARDS ARROW TO BAR;So;0;ON;;;;;N;LEFT ARROW TO BAR;;;; 21E5;RIGHTWARDS ARROW TO BAR;So;0;ON;;;;;N;RIGHT ARROW TO BAR;;;; 21E6;LEFTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE LEFT ARROW;;;; 21E7;UPWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE UP ARROW;;;; 21E8;RIGHTWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE RIGHT ARROW;;;; 21E9;DOWNWARDS WHITE ARROW;So;0;ON;;;;;N;WHITE DOWN ARROW;;;; 21EA;UPWARDS WHITE ARROW FROM BAR;So;0;ON;;;;;N;WHITE UP ARROW FROM BAR;;;; 21EB;UPWARDS WHITE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; 21EC;UPWARDS WHITE ARROW ON PEDESTAL WITH HORIZONTAL BAR;So;0;ON;;;;;N;;;;; 21ED;UPWARDS WHITE ARROW ON PEDESTAL WITH VERTICAL BAR;So;0;ON;;;;;N;;;;; 21EE;UPWARDS WHITE DOUBLE ARROW;So;0;ON;;;;;N;;;;; 21EF;UPWARDS WHITE DOUBLE ARROW ON PEDESTAL;So;0;ON;;;;;N;;;;; 21F0;RIGHTWARDS WHITE ARROW FROM WALL;So;0;ON;;;;;N;;;;; 21F1;NORTH WEST ARROW TO CORNER;So;0;ON;;;;;N;;;;; 21F2;SOUTH EAST ARROW TO CORNER;So;0;ON;;;;;N;;;;; 21F3;UP DOWN WHITE ARROW;So;0;ON;;;;;N;;;;; 21F4;RIGHT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; 21F5;DOWNWARDS ARROW LEFTWARDS OF UPWARDS ARROW;Sm;0;ON;;;;;N;;;;; 21F6;THREE RIGHTWARDS ARROWS;Sm;0;ON;;;;;N;;;;; 21F7;LEFTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 21F8;RIGHTWARDS ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 21F9;LEFT RIGHT ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 21FA;LEFTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 21FB;RIGHTWARDS ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 21FC;LEFT RIGHT ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 21FD;LEFTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; 21FE;RIGHTWARDS OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; 21FF;LEFT RIGHT OPEN-HEADED ARROW;Sm;0;ON;;;;;N;;;;; 2200;FOR ALL;Sm;0;ON;;;;;N;;;;; 2201;COMPLEMENT;Sm;0;ON;;;;;Y;;;;; 2202;PARTIAL DIFFERENTIAL;Sm;0;ON;;;;;Y;;;;; 2203;THERE EXISTS;Sm;0;ON;;;;;Y;;;;; 2204;THERE DOES NOT EXIST;Sm;0;ON;2203 0338;;;;Y;;;;; 2205;EMPTY SET;Sm;0;ON;;;;;N;;;;; 2206;INCREMENT;Sm;0;ON;;;;;N;;;;; 2207;NABLA;Sm;0;ON;;;;;N;;;;; 2208;ELEMENT OF;Sm;0;ON;;;;;Y;;;;; 2209;NOT AN ELEMENT OF;Sm;0;ON;2208 0338;;;;Y;;;;; 220A;SMALL ELEMENT OF;Sm;0;ON;;;;;Y;;;;; 220B;CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; 220C;DOES NOT CONTAIN AS MEMBER;Sm;0;ON;220B 0338;;;;Y;;;;; 220D;SMALL CONTAINS AS MEMBER;Sm;0;ON;;;;;Y;;;;; 220E;END OF PROOF;Sm;0;ON;;;;;N;;;;; 220F;N-ARY PRODUCT;Sm;0;ON;;;;;N;;;;; 2210;N-ARY COPRODUCT;Sm;0;ON;;;;;N;;;;; 2211;N-ARY SUMMATION;Sm;0;ON;;;;;Y;;;;; 2212;MINUS SIGN;Sm;0;ES;;;;;N;;;;; 2213;MINUS-OR-PLUS SIGN;Sm;0;ET;;;;;N;;;;; 2214;DOT PLUS;Sm;0;ON;;;;;N;;;;; 2215;DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; 2216;SET MINUS;Sm;0;ON;;;;;Y;;;;; 2217;ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; 2218;RING OPERATOR;Sm;0;ON;;;;;N;;;;; 2219;BULLET OPERATOR;Sm;0;ON;;;;;N;;;;; 221A;SQUARE ROOT;Sm;0;ON;;;;;Y;;;;; 221B;CUBE ROOT;Sm;0;ON;;;;;Y;;;;; 221C;FOURTH ROOT;Sm;0;ON;;;;;Y;;;;; 221D;PROPORTIONAL TO;Sm;0;ON;;;;;Y;;;;; 221E;INFINITY;Sm;0;ON;;;;;N;;;;; 221F;RIGHT ANGLE;Sm;0;ON;;;;;Y;;;;; 2220;ANGLE;Sm;0;ON;;;;;Y;;;;; 2221;MEASURED ANGLE;Sm;0;ON;;;;;Y;;;;; 2222;SPHERICAL ANGLE;Sm;0;ON;;;;;Y;;;;; 2223;DIVIDES;Sm;0;ON;;;;;N;;;;; 2224;DOES NOT DIVIDE;Sm;0;ON;2223 0338;;;;Y;;;;; 2225;PARALLEL TO;Sm;0;ON;;;;;N;;;;; 2226;NOT PARALLEL TO;Sm;0;ON;2225 0338;;;;Y;;;;; 2227;LOGICAL AND;Sm;0;ON;;;;;N;;;;; 2228;LOGICAL OR;Sm;0;ON;;;;;N;;;;; 2229;INTERSECTION;Sm;0;ON;;;;;N;;;;; 222A;UNION;Sm;0;ON;;;;;N;;;;; 222B;INTEGRAL;Sm;0;ON;;;;;Y;;;;; 222C;DOUBLE INTEGRAL;Sm;0;ON; 222B 222B;;;;Y;;;;; 222D;TRIPLE INTEGRAL;Sm;0;ON; 222B 222B 222B;;;;Y;;;;; 222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; 222F;SURFACE INTEGRAL;Sm;0;ON; 222E 222E;;;;Y;;;;; 2230;VOLUME INTEGRAL;Sm;0;ON; 222E 222E 222E;;;;Y;;;;; 2231;CLOCKWISE INTEGRAL;Sm;0;ON;;;;;Y;;;;; 2232;CLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; 2233;ANTICLOCKWISE CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;; 2234;THEREFORE;Sm;0;ON;;;;;N;;;;; 2235;BECAUSE;Sm;0;ON;;;;;N;;;;; 2236;RATIO;Sm;0;ON;;;;;N;;;;; 2237;PROPORTION;Sm;0;ON;;;;;N;;;;; 2238;DOT MINUS;Sm;0;ON;;;;;N;;;;; 2239;EXCESS;Sm;0;ON;;;;;Y;;;;; 223A;GEOMETRIC PROPORTION;Sm;0;ON;;;;;N;;;;; 223B;HOMOTHETIC;Sm;0;ON;;;;;Y;;;;; 223C;TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; 223D;REVERSED TILDE;Sm;0;ON;;;;;Y;;lazy S;;; 223E;INVERTED LAZY S;Sm;0;ON;;;;;Y;;;;; 223F;SINE WAVE;Sm;0;ON;;;;;Y;;;;; 2240;WREATH PRODUCT;Sm;0;ON;;;;;Y;;;;; 2241;NOT TILDE;Sm;0;ON;223C 0338;;;;Y;;;;; 2242;MINUS TILDE;Sm;0;ON;;;;;Y;;;;; 2243;ASYMPTOTICALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2244;NOT ASYMPTOTICALLY EQUAL TO;Sm;0;ON;2243 0338;;;;Y;;;;; 2245;APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2246;APPROXIMATELY BUT NOT ACTUALLY EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2247;NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO;Sm;0;ON;2245 0338;;;;Y;;;;; 2248;ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2249;NOT ALMOST EQUAL TO;Sm;0;ON;2248 0338;;;;Y;;;;; 224A;ALMOST EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 224B;TRIPLE TILDE;Sm;0;ON;;;;;Y;;;;; 224C;ALL EQUAL TO;Sm;0;ON;;;;;Y;;;;; 224D;EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; 224E;GEOMETRICALLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; 224F;DIFFERENCE BETWEEN;Sm;0;ON;;;;;N;;;;; 2250;APPROACHES THE LIMIT;Sm;0;ON;;;;;N;;;;; 2251;GEOMETRICALLY EQUAL TO;Sm;0;ON;;;;;N;;;;; 2252;APPROXIMATELY EQUAL TO OR THE IMAGE OF;Sm;0;ON;;;;;Y;;;;; 2253;IMAGE OF OR APPROXIMATELY EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2254;COLON EQUALS;Sm;0;ON;;;;;Y;COLON EQUAL;;;; 2255;EQUALS COLON;Sm;0;ON;;;;;Y;EQUAL COLON;;;; 2256;RING IN EQUAL TO;Sm;0;ON;;;;;N;;;;; 2257;RING EQUAL TO;Sm;0;ON;;;;;N;;;;; 2258;CORRESPONDS TO;Sm;0;ON;;;;;N;;;;; 2259;ESTIMATES;Sm;0;ON;;;;;N;;;;; 225A;EQUIANGULAR TO;Sm;0;ON;;;;;N;;;;; 225B;STAR EQUALS;Sm;0;ON;;;;;N;;;;; 225C;DELTA EQUAL TO;Sm;0;ON;;;;;N;;;;; 225D;EQUAL TO BY DEFINITION;Sm;0;ON;;;;;N;;;;; 225E;MEASURED BY;Sm;0;ON;;;;;N;;;;; 225F;QUESTIONED EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2260;NOT EQUAL TO;Sm;0;ON;003D 0338;;;;Y;;;;; 2261;IDENTICAL TO;Sm;0;ON;;;;;N;;;;; 2262;NOT IDENTICAL TO;Sm;0;ON;2261 0338;;;;Y;;;;; 2263;STRICTLY EQUIVALENT TO;Sm;0;ON;;;;;N;;;;; 2264;LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUAL TO;;;; 2265;GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUAL TO;;;; 2266;LESS-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN OVER EQUAL TO;;;; 2267;GREATER-THAN OVER EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN OVER EQUAL TO;;;; 2268;LESS-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUAL TO;;;; 2269;GREATER-THAN BUT NOT EQUAL TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUAL TO;;;; 226A;MUCH LESS-THAN;Sm;0;ON;;;;;Y;MUCH LESS THAN;;;; 226B;MUCH GREATER-THAN;Sm;0;ON;;;;;Y;MUCH GREATER THAN;;;; 226C;BETWEEN;Sm;0;ON;;;;;N;;;;; 226D;NOT EQUIVALENT TO;Sm;0;ON;224D 0338;;;;N;;;;; 226E;NOT LESS-THAN;Sm;0;ON;003C 0338;;;;Y;NOT LESS THAN;;;; 226F;NOT GREATER-THAN;Sm;0;ON;003E 0338;;;;Y;NOT GREATER THAN;;;; 2270;NEITHER LESS-THAN NOR EQUAL TO;Sm;0;ON;2264 0338;;;;Y;NEITHER LESS THAN NOR EQUAL TO;;;; 2271;NEITHER GREATER-THAN NOR EQUAL TO;Sm;0;ON;2265 0338;;;;Y;NEITHER GREATER THAN NOR EQUAL TO;;;; 2272;LESS-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN OR EQUIVALENT TO;;;; 2273;GREATER-THAN OR EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN OR EQUIVALENT TO;;;; 2274;NEITHER LESS-THAN NOR EQUIVALENT TO;Sm;0;ON;2272 0338;;;;Y;NEITHER LESS THAN NOR EQUIVALENT TO;;;; 2275;NEITHER GREATER-THAN NOR EQUIVALENT TO;Sm;0;ON;2273 0338;;;;Y;NEITHER GREATER THAN NOR EQUIVALENT TO;;;; 2276;LESS-THAN OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN OR GREATER THAN;;;; 2277;GREATER-THAN OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN OR LESS THAN;;;; 2278;NEITHER LESS-THAN NOR GREATER-THAN;Sm;0;ON;2276 0338;;;;Y;NEITHER LESS THAN NOR GREATER THAN;;;; 2279;NEITHER GREATER-THAN NOR LESS-THAN;Sm;0;ON;2277 0338;;;;Y;NEITHER GREATER THAN NOR LESS THAN;;;; 227A;PRECEDES;Sm;0;ON;;;;;Y;;;;; 227B;SUCCEEDS;Sm;0;ON;;;;;Y;;;;; 227C;PRECEDES OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 227D;SUCCEEDS OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 227E;PRECEDES OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; 227F;SUCCEEDS OR EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; 2280;DOES NOT PRECEDE;Sm;0;ON;227A 0338;;;;Y;;;;; 2281;DOES NOT SUCCEED;Sm;0;ON;227B 0338;;;;Y;;;;; 2282;SUBSET OF;Sm;0;ON;;;;;Y;;;;; 2283;SUPERSET OF;Sm;0;ON;;;;;Y;;;;; 2284;NOT A SUBSET OF;Sm;0;ON;2282 0338;;;;Y;;;;; 2285;NOT A SUPERSET OF;Sm;0;ON;2283 0338;;;;Y;;;;; 2286;SUBSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2287;SUPERSET OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2288;NEITHER A SUBSET OF NOR EQUAL TO;Sm;0;ON;2286 0338;;;;Y;;;;; 2289;NEITHER A SUPERSET OF NOR EQUAL TO;Sm;0;ON;2287 0338;;;;Y;;;;; 228A;SUBSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUBSET OF OR NOT EQUAL TO;;;; 228B;SUPERSET OF WITH NOT EQUAL TO;Sm;0;ON;;;;;Y;SUPERSET OF OR NOT EQUAL TO;;;; 228C;MULTISET;Sm;0;ON;;;;;Y;;;;; 228D;MULTISET MULTIPLICATION;Sm;0;ON;;;;;N;;;;; 228E;MULTISET UNION;Sm;0;ON;;;;;N;;;;; 228F;SQUARE IMAGE OF;Sm;0;ON;;;;;Y;;;;; 2290;SQUARE ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; 2291;SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2292;SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2293;SQUARE CAP;Sm;0;ON;;;;;N;;;;; 2294;SQUARE CUP;Sm;0;ON;;;;;N;;;;; 2295;CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; 2296;CIRCLED MINUS;Sm;0;ON;;;;;N;;;;; 2297;CIRCLED TIMES;Sm;0;ON;;;;;N;;;;; 2298;CIRCLED DIVISION SLASH;Sm;0;ON;;;;;Y;;;;; 2299;CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; 229A;CIRCLED RING OPERATOR;Sm;0;ON;;;;;N;;;;; 229B;CIRCLED ASTERISK OPERATOR;Sm;0;ON;;;;;N;;;;; 229C;CIRCLED EQUALS;Sm;0;ON;;;;;N;;;;; 229D;CIRCLED DASH;Sm;0;ON;;;;;N;;;;; 229E;SQUARED PLUS;Sm;0;ON;;;;;N;;;;; 229F;SQUARED MINUS;Sm;0;ON;;;;;N;;;;; 22A0;SQUARED TIMES;Sm;0;ON;;;;;N;;;;; 22A1;SQUARED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; 22A2;RIGHT TACK;Sm;0;ON;;;;;Y;;;;; 22A3;LEFT TACK;Sm;0;ON;;;;;Y;;;;; 22A4;DOWN TACK;Sm;0;ON;;;;;N;;;;; 22A5;UP TACK;Sm;0;ON;;;;;N;;;;; 22A6;ASSERTION;Sm;0;ON;;;;;Y;;;;; 22A7;MODELS;Sm;0;ON;;;;;Y;;;;; 22A8;TRUE;Sm;0;ON;;;;;Y;;;;; 22A9;FORCES;Sm;0;ON;;;;;Y;;;;; 22AA;TRIPLE VERTICAL BAR RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; 22AB;DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; 22AC;DOES NOT PROVE;Sm;0;ON;22A2 0338;;;;Y;;;;; 22AD;NOT TRUE;Sm;0;ON;22A8 0338;;;;Y;;;;; 22AE;DOES NOT FORCE;Sm;0;ON;22A9 0338;;;;Y;;;;; 22AF;NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE;Sm;0;ON;22AB 0338;;;;Y;;;;; 22B0;PRECEDES UNDER RELATION;Sm;0;ON;;;;;Y;;;;; 22B1;SUCCEEDS UNDER RELATION;Sm;0;ON;;;;;Y;;;;; 22B2;NORMAL SUBGROUP OF;Sm;0;ON;;;;;Y;;;;; 22B3;CONTAINS AS NORMAL SUBGROUP;Sm;0;ON;;;;;Y;;;;; 22B4;NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 22B5;CONTAINS AS NORMAL SUBGROUP OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 22B6;ORIGINAL OF;Sm;0;ON;;;;;Y;;;;; 22B7;IMAGE OF;Sm;0;ON;;;;;Y;;;;; 22B8;MULTIMAP;Sm;0;ON;;;;;Y;;;;; 22B9;HERMITIAN CONJUGATE MATRIX;Sm;0;ON;;;;;N;;;;; 22BA;INTERCALATE;Sm;0;ON;;;;;N;;;;; 22BB;XOR;Sm;0;ON;;;;;N;;;;; 22BC;NAND;Sm;0;ON;;;;;N;;;;; 22BD;NOR;Sm;0;ON;;;;;N;;;;; 22BE;RIGHT ANGLE WITH ARC;Sm;0;ON;;;;;Y;;;;; 22BF;RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; 22C0;N-ARY LOGICAL AND;Sm;0;ON;;;;;N;;;;; 22C1;N-ARY LOGICAL OR;Sm;0;ON;;;;;N;;;;; 22C2;N-ARY INTERSECTION;Sm;0;ON;;;;;N;;;;; 22C3;N-ARY UNION;Sm;0;ON;;;;;N;;;;; 22C4;DIAMOND OPERATOR;Sm;0;ON;;;;;N;;;;; 22C5;DOT OPERATOR;Sm;0;ON;;;;;N;;;;; 22C6;STAR OPERATOR;Sm;0;ON;;;;;N;;;;; 22C7;DIVISION TIMES;Sm;0;ON;;;;;N;;;;; 22C8;BOWTIE;Sm;0;ON;;;;;N;;;;; 22C9;LEFT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; 22CA;RIGHT NORMAL FACTOR SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; 22CB;LEFT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; 22CC;RIGHT SEMIDIRECT PRODUCT;Sm;0;ON;;;;;Y;;;;; 22CD;REVERSED TILDE EQUALS;Sm;0;ON;;;;;Y;;;;; 22CE;CURLY LOGICAL OR;Sm;0;ON;;;;;N;;;;; 22CF;CURLY LOGICAL AND;Sm;0;ON;;;;;N;;;;; 22D0;DOUBLE SUBSET;Sm;0;ON;;;;;Y;;;;; 22D1;DOUBLE SUPERSET;Sm;0;ON;;;;;Y;;;;; 22D2;DOUBLE INTERSECTION;Sm;0;ON;;;;;N;;;;; 22D3;DOUBLE UNION;Sm;0;ON;;;;;N;;;;; 22D4;PITCHFORK;Sm;0;ON;;;;;N;;;;; 22D5;EQUAL AND PARALLEL TO;Sm;0;ON;;;;;N;;;;; 22D6;LESS-THAN WITH DOT;Sm;0;ON;;;;;Y;LESS THAN WITH DOT;;;; 22D7;GREATER-THAN WITH DOT;Sm;0;ON;;;;;Y;GREATER THAN WITH DOT;;;; 22D8;VERY MUCH LESS-THAN;Sm;0;ON;;;;;Y;VERY MUCH LESS THAN;;;; 22D9;VERY MUCH GREATER-THAN;Sm;0;ON;;;;;Y;VERY MUCH GREATER THAN;;;; 22DA;LESS-THAN EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;LESS THAN EQUAL TO OR GREATER THAN;;;; 22DB;GREATER-THAN EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;GREATER THAN EQUAL TO OR LESS THAN;;;; 22DC;EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR LESS THAN;;;; 22DD;EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;EQUAL TO OR GREATER THAN;;;; 22DE;EQUAL TO OR PRECEDES;Sm;0;ON;;;;;Y;;;;; 22DF;EQUAL TO OR SUCCEEDS;Sm;0;ON;;;;;Y;;;;; 22E0;DOES NOT PRECEDE OR EQUAL;Sm;0;ON;227C 0338;;;;Y;;;;; 22E1;DOES NOT SUCCEED OR EQUAL;Sm;0;ON;227D 0338;;;;Y;;;;; 22E2;NOT SQUARE IMAGE OF OR EQUAL TO;Sm;0;ON;2291 0338;;;;Y;;;;; 22E3;NOT SQUARE ORIGINAL OF OR EQUAL TO;Sm;0;ON;2292 0338;;;;Y;;;;; 22E4;SQUARE IMAGE OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 22E5;SQUARE ORIGINAL OF OR NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 22E6;LESS-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;LESS THAN BUT NOT EQUIVALENT TO;;;; 22E7;GREATER-THAN BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;GREATER THAN BUT NOT EQUIVALENT TO;;;; 22E8;PRECEDES BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; 22E9;SUCCEEDS BUT NOT EQUIVALENT TO;Sm;0;ON;;;;;Y;;;;; 22EA;NOT NORMAL SUBGROUP OF;Sm;0;ON;22B2 0338;;;;Y;;;;; 22EB;DOES NOT CONTAIN AS NORMAL SUBGROUP;Sm;0;ON;22B3 0338;;;;Y;;;;; 22EC;NOT NORMAL SUBGROUP OF OR EQUAL TO;Sm;0;ON;22B4 0338;;;;Y;;;;; 22ED;DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL;Sm;0;ON;22B5 0338;;;;Y;;;;; 22EE;VERTICAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; 22EF;MIDLINE HORIZONTAL ELLIPSIS;Sm;0;ON;;;;;N;;;;; 22F0;UP RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; 22F1;DOWN RIGHT DIAGONAL ELLIPSIS;Sm;0;ON;;;;;Y;;;;; 22F2;ELEMENT OF WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; 22F3;ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; 22F4;SMALL ELEMENT OF WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; 22F5;ELEMENT OF WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; 22F6;ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; 22F7;SMALL ELEMENT OF WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; 22F8;ELEMENT OF WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; 22F9;ELEMENT OF WITH TWO HORIZONTAL STROKES;Sm;0;ON;;;;;Y;;;;; 22FA;CONTAINS WITH LONG HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; 22FB;CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; 22FC;SMALL CONTAINS WITH VERTICAL BAR AT END OF HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; 22FD;CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; 22FE;SMALL CONTAINS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; 22FF;Z NOTATION BAG MEMBERSHIP;Sm;0;ON;;;;;Y;;;;; 2300;DIAMETER SIGN;So;0;ON;;;;;N;;;;; 2301;ELECTRIC ARROW;So;0;ON;;;;;N;;;;; 2302;HOUSE;So;0;ON;;;;;N;;;;; 2303;UP ARROWHEAD;So;0;ON;;;;;N;;;;; 2304;DOWN ARROWHEAD;So;0;ON;;;;;N;;;;; 2305;PROJECTIVE;So;0;ON;;;;;N;;;;; 2306;PERSPECTIVE;So;0;ON;;;;;N;;;;; 2307;WAVY LINE;So;0;ON;;;;;N;;;;; 2308;LEFT CEILING;Sm;0;ON;;;;;Y;;;;; 2309;RIGHT CEILING;Sm;0;ON;;;;;Y;;;;; 230A;LEFT FLOOR;Sm;0;ON;;;;;Y;;;;; 230B;RIGHT FLOOR;Sm;0;ON;;;;;Y;;;;; 230C;BOTTOM RIGHT CROP;So;0;ON;;;;;N;;;;; 230D;BOTTOM LEFT CROP;So;0;ON;;;;;N;;;;; 230E;TOP RIGHT CROP;So;0;ON;;;;;N;;;;; 230F;TOP LEFT CROP;So;0;ON;;;;;N;;;;; 2310;REVERSED NOT SIGN;So;0;ON;;;;;N;;;;; 2311;SQUARE LOZENGE;So;0;ON;;;;;N;;;;; 2312;ARC;So;0;ON;;;;;N;;;;; 2313;SEGMENT;So;0;ON;;;;;N;;;;; 2314;SECTOR;So;0;ON;;;;;N;;;;; 2315;TELEPHONE RECORDER;So;0;ON;;;;;N;;;;; 2316;POSITION INDICATOR;So;0;ON;;;;;N;;;;; 2317;VIEWDATA SQUARE;So;0;ON;;;;;N;;;;; 2318;PLACE OF INTEREST SIGN;So;0;ON;;;;;N;COMMAND KEY;;;; 2319;TURNED NOT SIGN;So;0;ON;;;;;N;;;;; 231A;WATCH;So;0;ON;;;;;N;;;;; 231B;HOURGLASS;So;0;ON;;;;;N;;;;; 231C;TOP LEFT CORNER;So;0;ON;;;;;N;;;;; 231D;TOP RIGHT CORNER;So;0;ON;;;;;N;;;;; 231E;BOTTOM LEFT CORNER;So;0;ON;;;;;N;;;;; 231F;BOTTOM RIGHT CORNER;So;0;ON;;;;;N;;;;; 2320;TOP HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; 2321;BOTTOM HALF INTEGRAL;Sm;0;ON;;;;;Y;;;;; 2322;FROWN;So;0;ON;;;;;N;;;;; 2323;SMILE;So;0;ON;;;;;N;;;;; 2324;UP ARROWHEAD BETWEEN TWO HORIZONTAL BARS;So;0;ON;;;;;N;ENTER KEY;;;; 2325;OPTION KEY;So;0;ON;;;;;N;;;;; 2326;ERASE TO THE RIGHT;So;0;ON;;;;;N;DELETE TO THE RIGHT KEY;;;; 2327;X IN A RECTANGLE BOX;So;0;ON;;;;;N;CLEAR KEY;;;; 2328;KEYBOARD;So;0;ON;;;;;N;;;;; 2329;LEFT-POINTING ANGLE BRACKET;Ps;0;ON;3008;;;;Y;BRA;;;; 232A;RIGHT-POINTING ANGLE BRACKET;Pe;0;ON;3009;;;;Y;KET;;;; 232B;ERASE TO THE LEFT;So;0;ON;;;;;N;DELETE TO THE LEFT KEY;;;; 232C;BENZENE RING;So;0;ON;;;;;N;;;;; 232D;CYLINDRICITY;So;0;ON;;;;;N;;;;; 232E;ALL AROUND-PROFILE;So;0;ON;;;;;N;;;;; 232F;SYMMETRY;So;0;ON;;;;;N;;;;; 2330;TOTAL RUNOUT;So;0;ON;;;;;N;;;;; 2331;DIMENSION ORIGIN;So;0;ON;;;;;N;;;;; 2332;CONICAL TAPER;So;0;ON;;;;;N;;;;; 2333;SLOPE;So;0;ON;;;;;N;;;;; 2334;COUNTERBORE;So;0;ON;;;;;N;;;;; 2335;COUNTERSINK;So;0;ON;;;;;N;;;;; 2336;APL FUNCTIONAL SYMBOL I-BEAM;So;0;L;;;;;N;;;;; 2337;APL FUNCTIONAL SYMBOL SQUISH QUAD;So;0;L;;;;;N;;;;; 2338;APL FUNCTIONAL SYMBOL QUAD EQUAL;So;0;L;;;;;N;;;;; 2339;APL FUNCTIONAL SYMBOL QUAD DIVIDE;So;0;L;;;;;N;;;;; 233A;APL FUNCTIONAL SYMBOL QUAD DIAMOND;So;0;L;;;;;N;;;;; 233B;APL FUNCTIONAL SYMBOL QUAD JOT;So;0;L;;;;;N;;;;; 233C;APL FUNCTIONAL SYMBOL QUAD CIRCLE;So;0;L;;;;;N;;;;; 233D;APL FUNCTIONAL SYMBOL CIRCLE STILE;So;0;L;;;;;N;;;;; 233E;APL FUNCTIONAL SYMBOL CIRCLE JOT;So;0;L;;;;;N;;;;; 233F;APL FUNCTIONAL SYMBOL SLASH BAR;So;0;L;;;;;N;;;;; 2340;APL FUNCTIONAL SYMBOL BACKSLASH BAR;So;0;L;;;;;N;;;;; 2341;APL FUNCTIONAL SYMBOL QUAD SLASH;So;0;L;;;;;N;;;;; 2342;APL FUNCTIONAL SYMBOL QUAD BACKSLASH;So;0;L;;;;;N;;;;; 2343;APL FUNCTIONAL SYMBOL QUAD LESS-THAN;So;0;L;;;;;N;;;;; 2344;APL FUNCTIONAL SYMBOL QUAD GREATER-THAN;So;0;L;;;;;N;;;;; 2345;APL FUNCTIONAL SYMBOL LEFTWARDS VANE;So;0;L;;;;;N;;;;; 2346;APL FUNCTIONAL SYMBOL RIGHTWARDS VANE;So;0;L;;;;;N;;;;; 2347;APL FUNCTIONAL SYMBOL QUAD LEFTWARDS ARROW;So;0;L;;;;;N;;;;; 2348;APL FUNCTIONAL SYMBOL QUAD RIGHTWARDS ARROW;So;0;L;;;;;N;;;;; 2349;APL FUNCTIONAL SYMBOL CIRCLE BACKSLASH;So;0;L;;;;;N;;;;; 234A;APL FUNCTIONAL SYMBOL DOWN TACK UNDERBAR;So;0;L;;;;;N;;*;;; 234B;APL FUNCTIONAL SYMBOL DELTA STILE;So;0;L;;;;;N;;;;; 234C;APL FUNCTIONAL SYMBOL QUAD DOWN CARET;So;0;L;;;;;N;;;;; 234D;APL FUNCTIONAL SYMBOL QUAD DELTA;So;0;L;;;;;N;;;;; 234E;APL FUNCTIONAL SYMBOL DOWN TACK JOT;So;0;L;;;;;N;;*;;; 234F;APL FUNCTIONAL SYMBOL UPWARDS VANE;So;0;L;;;;;N;;;;; 2350;APL FUNCTIONAL SYMBOL QUAD UPWARDS ARROW;So;0;L;;;;;N;;;;; 2351;APL FUNCTIONAL SYMBOL UP TACK OVERBAR;So;0;L;;;;;N;;*;;; 2352;APL FUNCTIONAL SYMBOL DEL STILE;So;0;L;;;;;N;;;;; 2353;APL FUNCTIONAL SYMBOL QUAD UP CARET;So;0;L;;;;;N;;;;; 2354;APL FUNCTIONAL SYMBOL QUAD DEL;So;0;L;;;;;N;;;;; 2355;APL FUNCTIONAL SYMBOL UP TACK JOT;So;0;L;;;;;N;;*;;; 2356;APL FUNCTIONAL SYMBOL DOWNWARDS VANE;So;0;L;;;;;N;;;;; 2357;APL FUNCTIONAL SYMBOL QUAD DOWNWARDS ARROW;So;0;L;;;;;N;;;;; 2358;APL FUNCTIONAL SYMBOL QUOTE UNDERBAR;So;0;L;;;;;N;;;;; 2359;APL FUNCTIONAL SYMBOL DELTA UNDERBAR;So;0;L;;;;;N;;;;; 235A;APL FUNCTIONAL SYMBOL DIAMOND UNDERBAR;So;0;L;;;;;N;;;;; 235B;APL FUNCTIONAL SYMBOL JOT UNDERBAR;So;0;L;;;;;N;;;;; 235C;APL FUNCTIONAL SYMBOL CIRCLE UNDERBAR;So;0;L;;;;;N;;;;; 235D;APL FUNCTIONAL SYMBOL UP SHOE JOT;So;0;L;;;;;N;;;;; 235E;APL FUNCTIONAL SYMBOL QUOTE QUAD;So;0;L;;;;;N;;;;; 235F;APL FUNCTIONAL SYMBOL CIRCLE STAR;So;0;L;;;;;N;;;;; 2360;APL FUNCTIONAL SYMBOL QUAD COLON;So;0;L;;;;;N;;;;; 2361;APL FUNCTIONAL SYMBOL UP TACK DIAERESIS;So;0;L;;;;;N;;*;;; 2362;APL FUNCTIONAL SYMBOL DEL DIAERESIS;So;0;L;;;;;N;;;;; 2363;APL FUNCTIONAL SYMBOL STAR DIAERESIS;So;0;L;;;;;N;;;;; 2364;APL FUNCTIONAL SYMBOL JOT DIAERESIS;So;0;L;;;;;N;;;;; 2365;APL FUNCTIONAL SYMBOL CIRCLE DIAERESIS;So;0;L;;;;;N;;;;; 2366;APL FUNCTIONAL SYMBOL DOWN SHOE STILE;So;0;L;;;;;N;;;;; 2367;APL FUNCTIONAL SYMBOL LEFT SHOE STILE;So;0;L;;;;;N;;;;; 2368;APL FUNCTIONAL SYMBOL TILDE DIAERESIS;So;0;L;;;;;N;;;;; 2369;APL FUNCTIONAL SYMBOL GREATER-THAN DIAERESIS;So;0;L;;;;;N;;;;; 236A;APL FUNCTIONAL SYMBOL COMMA BAR;So;0;L;;;;;N;;;;; 236B;APL FUNCTIONAL SYMBOL DEL TILDE;So;0;L;;;;;N;;;;; 236C;APL FUNCTIONAL SYMBOL ZILDE;So;0;L;;;;;N;;;;; 236D;APL FUNCTIONAL SYMBOL STILE TILDE;So;0;L;;;;;N;;;;; 236E;APL FUNCTIONAL SYMBOL SEMICOLON UNDERBAR;So;0;L;;;;;N;;;;; 236F;APL FUNCTIONAL SYMBOL QUAD NOT EQUAL;So;0;L;;;;;N;;;;; 2370;APL FUNCTIONAL SYMBOL QUAD QUESTION;So;0;L;;;;;N;;;;; 2371;APL FUNCTIONAL SYMBOL DOWN CARET TILDE;So;0;L;;;;;N;;;;; 2372;APL FUNCTIONAL SYMBOL UP CARET TILDE;So;0;L;;;;;N;;;;; 2373;APL FUNCTIONAL SYMBOL IOTA;So;0;L;;;;;N;;;;; 2374;APL FUNCTIONAL SYMBOL RHO;So;0;L;;;;;N;;;;; 2375;APL FUNCTIONAL SYMBOL OMEGA;So;0;L;;;;;N;;;;; 2376;APL FUNCTIONAL SYMBOL ALPHA UNDERBAR;So;0;L;;;;;N;;;;; 2377;APL FUNCTIONAL SYMBOL EPSILON UNDERBAR;So;0;L;;;;;N;;;;; 2378;APL FUNCTIONAL SYMBOL IOTA UNDERBAR;So;0;L;;;;;N;;;;; 2379;APL FUNCTIONAL SYMBOL OMEGA UNDERBAR;So;0;L;;;;;N;;;;; 237A;APL FUNCTIONAL SYMBOL ALPHA;So;0;L;;;;;N;;;;; 237B;NOT CHECK MARK;So;0;ON;;;;;N;;;;; 237C;RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW;Sm;0;ON;;;;;N;;;;; 237D;SHOULDERED OPEN BOX;So;0;ON;;;;;N;;;;; 237E;BELL SYMBOL;So;0;ON;;;;;N;;;;; 237F;VERTICAL LINE WITH MIDDLE DOT;So;0;ON;;;;;N;;;;; 2380;INSERTION SYMBOL;So;0;ON;;;;;N;;;;; 2381;CONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; 2382;DISCONTINUOUS UNDERLINE SYMBOL;So;0;ON;;;;;N;;;;; 2383;EMPHASIS SYMBOL;So;0;ON;;;;;N;;;;; 2384;COMPOSITION SYMBOL;So;0;ON;;;;;N;;;;; 2385;WHITE SQUARE WITH CENTRE VERTICAL LINE;So;0;ON;;;;;N;;;;; 2386;ENTER SYMBOL;So;0;ON;;;;;N;;;;; 2387;ALTERNATIVE KEY SYMBOL;So;0;ON;;;;;N;;;;; 2388;HELM SYMBOL;So;0;ON;;;;;N;;;;; 2389;CIRCLED HORIZONTAL BAR WITH NOTCH;So;0;ON;;;;;N;;pause;;; 238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;break;;; 238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;escape;;; 238C;UNDO SYMBOL;So;0;ON;;;;;N;;;;; 238D;MONOSTABLE SYMBOL;So;0;ON;;;;;N;;;;; 238E;HYSTERESIS SYMBOL;So;0;ON;;;;;N;;;;; 238F;OPEN-CIRCUIT-OUTPUT H-TYPE SYMBOL;So;0;ON;;;;;N;;;;; 2390;OPEN-CIRCUIT-OUTPUT L-TYPE SYMBOL;So;0;ON;;;;;N;;;;; 2391;PASSIVE-PULL-DOWN-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; 2392;PASSIVE-PULL-UP-OUTPUT SYMBOL;So;0;ON;;;;;N;;;;; 2393;DIRECT CURRENT SYMBOL FORM TWO;So;0;ON;;;;;N;;;;; 2394;SOFTWARE-FUNCTION SYMBOL;So;0;ON;;;;;N;;;;; 2395;APL FUNCTIONAL SYMBOL QUAD;So;0;L;;;;;N;;;;; 2396;DECIMAL SEPARATOR KEY SYMBOL;So;0;ON;;;;;N;;;;; 2397;PREVIOUS PAGE;So;0;ON;;;;;N;;;;; 2398;NEXT PAGE;So;0;ON;;;;;N;;;;; 2399;PRINT SCREEN SYMBOL;So;0;ON;;;;;N;;;;; 239A;CLEAR SCREEN SYMBOL;So;0;ON;;;;;N;;;;; 239B;LEFT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; 239C;LEFT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; 239D;LEFT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; 239E;RIGHT PARENTHESIS UPPER HOOK;Sm;0;ON;;;;;N;;;;; 239F;RIGHT PARENTHESIS EXTENSION;Sm;0;ON;;;;;N;;;;; 23A0;RIGHT PARENTHESIS LOWER HOOK;Sm;0;ON;;;;;N;;;;; 23A1;LEFT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; 23A2;LEFT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; 23A3;LEFT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; 23A4;RIGHT SQUARE BRACKET UPPER CORNER;Sm;0;ON;;;;;N;;;;; 23A5;RIGHT SQUARE BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; 23A6;RIGHT SQUARE BRACKET LOWER CORNER;Sm;0;ON;;;;;N;;;;; 23A7;LEFT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; 23A8;LEFT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; 23A9;LEFT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; 23AA;CURLY BRACKET EXTENSION;Sm;0;ON;;;;;N;;;;; 23AB;RIGHT CURLY BRACKET UPPER HOOK;Sm;0;ON;;;;;N;;;;; 23AC;RIGHT CURLY BRACKET MIDDLE PIECE;Sm;0;ON;;;;;N;;;;; 23AD;RIGHT CURLY BRACKET LOWER HOOK;Sm;0;ON;;;;;N;;;;; 23AE;INTEGRAL EXTENSION;Sm;0;ON;;;;;N;;;;; 23AF;HORIZONTAL LINE EXTENSION;Sm;0;ON;;;;;N;;;;; 23B0;UPPER LEFT OR LOWER RIGHT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; 23B1;UPPER RIGHT OR LOWER LEFT CURLY BRACKET SECTION;Sm;0;ON;;;;;N;;;;; 23B2;SUMMATION TOP;Sm;0;ON;;;;;N;;;;; 23B3;SUMMATION BOTTOM;Sm;0;ON;;;;;N;;;;; 23B4;TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; 23B5;BOTTOM SQUARE BRACKET;So;0;ON;;;;;N;;;;; 23B6;BOTTOM SQUARE BRACKET OVER TOP SQUARE BRACKET;So;0;ON;;;;;N;;;;; 23B7;RADICAL SYMBOL BOTTOM;So;0;ON;;;;;N;;;;; 23B8;LEFT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; 23B9;RIGHT VERTICAL BOX LINE;So;0;ON;;;;;N;;;;; 23BA;HORIZONTAL SCAN LINE-1;So;0;ON;;;;;N;;;;; 23BB;HORIZONTAL SCAN LINE-3;So;0;ON;;;;;N;;;;; 23BC;HORIZONTAL SCAN LINE-7;So;0;ON;;;;;N;;;;; 23BD;HORIZONTAL SCAN LINE-9;So;0;ON;;;;;N;;;;; 23BE;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP RIGHT;So;0;ON;;;;;N;;;;; 23BF;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM RIGHT;So;0;ON;;;;;N;;;;; 23C0;DENTISTRY SYMBOL LIGHT VERTICAL WITH CIRCLE;So;0;ON;;;;;N;;;;; 23C1;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; 23C2;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH CIRCLE;So;0;ON;;;;;N;;;;; 23C3;DENTISTRY SYMBOL LIGHT VERTICAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; 23C4;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; 23C5;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH TRIANGLE;So;0;ON;;;;;N;;;;; 23C6;DENTISTRY SYMBOL LIGHT VERTICAL AND WAVE;So;0;ON;;;;;N;;;;; 23C7;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; 23C8;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL WITH WAVE;So;0;ON;;;;;N;;;;; 23C9;DENTISTRY SYMBOL LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;;;;; 23CA;DENTISTRY SYMBOL LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;;;;; 23CB;DENTISTRY SYMBOL LIGHT VERTICAL AND TOP LEFT;So;0;ON;;;;;N;;;;; 23CC;DENTISTRY SYMBOL LIGHT VERTICAL AND BOTTOM LEFT;So;0;ON;;;;;N;;;;; 23CD;SQUARE FOOT;So;0;ON;;;;;N;;;;; 23CE;RETURN SYMBOL;So;0;ON;;;;;N;;;;; 23CF;EJECT SYMBOL;So;0;ON;;;;;N;;;;; 23D0;VERTICAL LINE EXTENSION;So;0;ON;;;;;N;;;;; 23D1;METRICAL BREVE;So;0;ON;;;;;N;;;;; 23D2;METRICAL LONG OVER SHORT;So;0;ON;;;;;N;;;;; 23D3;METRICAL SHORT OVER LONG;So;0;ON;;;;;N;;;;; 23D4;METRICAL LONG OVER TWO SHORTS;So;0;ON;;;;;N;;;;; 23D5;METRICAL TWO SHORTS OVER LONG;So;0;ON;;;;;N;;;;; 23D6;METRICAL TWO SHORTS JOINED;So;0;ON;;;;;N;;;;; 23D7;METRICAL TRISEME;So;0;ON;;;;;N;;;;; 23D8;METRICAL TETRASEME;So;0;ON;;;;;N;;;;; 23D9;METRICAL PENTASEME;So;0;ON;;;;;N;;;;; 23DA;EARTH GROUND;So;0;ON;;;;;N;;;;; 23DB;FUSE;So;0;ON;;;;;N;;;;; 23DC;TOP PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; 23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;mathematical use;;; 23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; 23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; 23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; 23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;mathematical use;;; 23E2;WHITE TRAPEZIUM;So;0;ON;;;;;N;;;;; 23E3;BENZENE RING WITH CIRCLE;So;0;ON;;;;;N;;;;; 23E4;STRAIGHTNESS;So;0;ON;;;;;N;;;;; 23E5;FLATNESS;So;0;ON;;;;;N;;;;; 23E6;AC CURRENT;So;0;ON;;;;;N;;;;; 23E7;ELECTRICAL INTERSECTION;So;0;ON;;;;;N;;;;; 2400;SYMBOL FOR NULL;So;0;ON;;;;;N;GRAPHIC FOR NULL;;;; 2401;SYMBOL FOR START OF HEADING;So;0;ON;;;;;N;GRAPHIC FOR START OF HEADING;;;; 2402;SYMBOL FOR START OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR START OF TEXT;;;; 2403;SYMBOL FOR END OF TEXT;So;0;ON;;;;;N;GRAPHIC FOR END OF TEXT;;;; 2404;SYMBOL FOR END OF TRANSMISSION;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION;;;; 2405;SYMBOL FOR ENQUIRY;So;0;ON;;;;;N;GRAPHIC FOR ENQUIRY;;;; 2406;SYMBOL FOR ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR ACKNOWLEDGE;;;; 2407;SYMBOL FOR BELL;So;0;ON;;;;;N;GRAPHIC FOR BELL;;;; 2408;SYMBOL FOR BACKSPACE;So;0;ON;;;;;N;GRAPHIC FOR BACKSPACE;;;; 2409;SYMBOL FOR HORIZONTAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR HORIZONTAL TABULATION;;;; 240A;SYMBOL FOR LINE FEED;So;0;ON;;;;;N;GRAPHIC FOR LINE FEED;;;; 240B;SYMBOL FOR VERTICAL TABULATION;So;0;ON;;;;;N;GRAPHIC FOR VERTICAL TABULATION;;;; 240C;SYMBOL FOR FORM FEED;So;0;ON;;;;;N;GRAPHIC FOR FORM FEED;;;; 240D;SYMBOL FOR CARRIAGE RETURN;So;0;ON;;;;;N;GRAPHIC FOR CARRIAGE RETURN;;;; 240E;SYMBOL FOR SHIFT OUT;So;0;ON;;;;;N;GRAPHIC FOR SHIFT OUT;;;; 240F;SYMBOL FOR SHIFT IN;So;0;ON;;;;;N;GRAPHIC FOR SHIFT IN;;;; 2410;SYMBOL FOR DATA LINK ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR DATA LINK ESCAPE;;;; 2411;SYMBOL FOR DEVICE CONTROL ONE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL ONE;;;; 2412;SYMBOL FOR DEVICE CONTROL TWO;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL TWO;;;; 2413;SYMBOL FOR DEVICE CONTROL THREE;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL THREE;;;; 2414;SYMBOL FOR DEVICE CONTROL FOUR;So;0;ON;;;;;N;GRAPHIC FOR DEVICE CONTROL FOUR;;;; 2415;SYMBOL FOR NEGATIVE ACKNOWLEDGE;So;0;ON;;;;;N;GRAPHIC FOR NEGATIVE ACKNOWLEDGE;;;; 2416;SYMBOL FOR SYNCHRONOUS IDLE;So;0;ON;;;;;N;GRAPHIC FOR SYNCHRONOUS IDLE;;;; 2417;SYMBOL FOR END OF TRANSMISSION BLOCK;So;0;ON;;;;;N;GRAPHIC FOR END OF TRANSMISSION BLOCK;;;; 2418;SYMBOL FOR CANCEL;So;0;ON;;;;;N;GRAPHIC FOR CANCEL;;;; 2419;SYMBOL FOR END OF MEDIUM;So;0;ON;;;;;N;GRAPHIC FOR END OF MEDIUM;;;; 241A;SYMBOL FOR SUBSTITUTE;So;0;ON;;;;;N;GRAPHIC FOR SUBSTITUTE;;;; 241B;SYMBOL FOR ESCAPE;So;0;ON;;;;;N;GRAPHIC FOR ESCAPE;;;; 241C;SYMBOL FOR FILE SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR FILE SEPARATOR;;;; 241D;SYMBOL FOR GROUP SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR GROUP SEPARATOR;;;; 241E;SYMBOL FOR RECORD SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR RECORD SEPARATOR;;;; 241F;SYMBOL FOR UNIT SEPARATOR;So;0;ON;;;;;N;GRAPHIC FOR UNIT SEPARATOR;;;; 2420;SYMBOL FOR SPACE;So;0;ON;;;;;N;GRAPHIC FOR SPACE;;;; 2421;SYMBOL FOR DELETE;So;0;ON;;;;;N;GRAPHIC FOR DELETE;;;; 2422;BLANK SYMBOL;So;0;ON;;;;;N;BLANK;;;; 2423;OPEN BOX;So;0;ON;;;;;N;;;;; 2424;SYMBOL FOR NEWLINE;So;0;ON;;;;;N;GRAPHIC FOR NEWLINE;;;; 2425;SYMBOL FOR DELETE FORM TWO;So;0;ON;;;;;N;;;;; 2426;SYMBOL FOR SUBSTITUTE FORM TWO;So;0;ON;;;;;N;;;;; 2440;OCR HOOK;So;0;ON;;;;;N;;;;; 2441;OCR CHAIR;So;0;ON;;;;;N;;;;; 2442;OCR FORK;So;0;ON;;;;;N;;;;; 2443;OCR INVERTED FORK;So;0;ON;;;;;N;;;;; 2444;OCR BELT BUCKLE;So;0;ON;;;;;N;;;;; 2445;OCR BOW TIE;So;0;ON;;;;;N;;;;; 2446;OCR BRANCH BANK IDENTIFICATION;So;0;ON;;;;;N;;;;; 2447;OCR AMOUNT OF CHECK;So;0;ON;;;;;N;;;;; 2448;OCR DASH;So;0;ON;;;;;N;;;;; 2449;OCR CUSTOMER ACCOUNT NUMBER;So;0;ON;;;;;N;;;;; 244A;OCR DOUBLE BACKSLASH;So;0;ON;;;;;N;;;;; 2460;CIRCLED DIGIT ONE;No;0;ON; 0031;;1;1;N;;;;; 2461;CIRCLED DIGIT TWO;No;0;ON; 0032;;2;2;N;;;;; 2462;CIRCLED DIGIT THREE;No;0;ON; 0033;;3;3;N;;;;; 2463;CIRCLED DIGIT FOUR;No;0;ON; 0034;;4;4;N;;;;; 2464;CIRCLED DIGIT FIVE;No;0;ON; 0035;;5;5;N;;;;; 2465;CIRCLED DIGIT SIX;No;0;ON; 0036;;6;6;N;;;;; 2466;CIRCLED DIGIT SEVEN;No;0;ON; 0037;;7;7;N;;;;; 2467;CIRCLED DIGIT EIGHT;No;0;ON; 0038;;8;8;N;;;;; 2468;CIRCLED DIGIT NINE;No;0;ON; 0039;;9;9;N;;;;; 2469;CIRCLED NUMBER TEN;No;0;ON; 0031 0030;;;10;N;;;;; 246A;CIRCLED NUMBER ELEVEN;No;0;ON; 0031 0031;;;11;N;;;;; 246B;CIRCLED NUMBER TWELVE;No;0;ON; 0031 0032;;;12;N;;;;; 246C;CIRCLED NUMBER THIRTEEN;No;0;ON; 0031 0033;;;13;N;;;;; 246D;CIRCLED NUMBER FOURTEEN;No;0;ON; 0031 0034;;;14;N;;;;; 246E;CIRCLED NUMBER FIFTEEN;No;0;ON; 0031 0035;;;15;N;;;;; 246F;CIRCLED NUMBER SIXTEEN;No;0;ON; 0031 0036;;;16;N;;;;; 2470;CIRCLED NUMBER SEVENTEEN;No;0;ON; 0031 0037;;;17;N;;;;; 2471;CIRCLED NUMBER EIGHTEEN;No;0;ON; 0031 0038;;;18;N;;;;; 2472;CIRCLED NUMBER NINETEEN;No;0;ON; 0031 0039;;;19;N;;;;; 2473;CIRCLED NUMBER TWENTY;No;0;ON; 0032 0030;;;20;N;;;;; 2474;PARENTHESIZED DIGIT ONE;No;0;ON; 0028 0031 0029;;1;1;N;;;;; 2475;PARENTHESIZED DIGIT TWO;No;0;ON; 0028 0032 0029;;2;2;N;;;;; 2476;PARENTHESIZED DIGIT THREE;No;0;ON; 0028 0033 0029;;3;3;N;;;;; 2477;PARENTHESIZED DIGIT FOUR;No;0;ON; 0028 0034 0029;;4;4;N;;;;; 2478;PARENTHESIZED DIGIT FIVE;No;0;ON; 0028 0035 0029;;5;5;N;;;;; 2479;PARENTHESIZED DIGIT SIX;No;0;ON; 0028 0036 0029;;6;6;N;;;;; 247A;PARENTHESIZED DIGIT SEVEN;No;0;ON; 0028 0037 0029;;7;7;N;;;;; 247B;PARENTHESIZED DIGIT EIGHT;No;0;ON; 0028 0038 0029;;8;8;N;;;;; 247C;PARENTHESIZED DIGIT NINE;No;0;ON; 0028 0039 0029;;9;9;N;;;;; 247D;PARENTHESIZED NUMBER TEN;No;0;ON; 0028 0031 0030 0029;;;10;N;;;;; 247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON; 0028 0031 0031 0029;;;11;N;;;;; 247F;PARENTHESIZED NUMBER TWELVE;No;0;ON; 0028 0031 0032 0029;;;12;N;;;;; 2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON; 0028 0031 0033 0029;;;13;N;;;;; 2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON; 0028 0031 0034 0029;;;14;N;;;;; 2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON; 0028 0031 0035 0029;;;15;N;;;;; 2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON; 0028 0031 0036 0029;;;16;N;;;;; 2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON; 0028 0031 0037 0029;;;17;N;;;;; 2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON; 0028 0031 0038 0029;;;18;N;;;;; 2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON; 0028 0031 0039 0029;;;19;N;;;;; 2487;PARENTHESIZED NUMBER TWENTY;No;0;ON; 0028 0032 0030 0029;;;20;N;;;;; 2488;DIGIT ONE FULL STOP;No;0;EN; 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;; 2489;DIGIT TWO FULL STOP;No;0;EN; 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;; 248A;DIGIT THREE FULL STOP;No;0;EN; 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;; 248B;DIGIT FOUR FULL STOP;No;0;EN; 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;; 248C;DIGIT FIVE FULL STOP;No;0;EN; 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;; 248D;DIGIT SIX FULL STOP;No;0;EN; 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;; 248E;DIGIT SEVEN FULL STOP;No;0;EN; 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;; 248F;DIGIT EIGHT FULL STOP;No;0;EN; 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;; 2490;DIGIT NINE FULL STOP;No;0;EN; 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;; 2491;NUMBER TEN FULL STOP;No;0;EN; 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;; 2492;NUMBER ELEVEN FULL STOP;No;0;EN; 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;; 2493;NUMBER TWELVE FULL STOP;No;0;EN; 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;; 2494;NUMBER THIRTEEN FULL STOP;No;0;EN; 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;; 2495;NUMBER FOURTEEN FULL STOP;No;0;EN; 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;; 2496;NUMBER FIFTEEN FULL STOP;No;0;EN; 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;; 2497;NUMBER SIXTEEN FULL STOP;No;0;EN; 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;; 2498;NUMBER SEVENTEEN FULL STOP;No;0;EN; 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;; 2499;NUMBER EIGHTEEN FULL STOP;No;0;EN; 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;; 249A;NUMBER NINETEEN FULL STOP;No;0;EN; 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;; 249B;NUMBER TWENTY FULL STOP;No;0;EN; 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;; 249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L; 0028 0061 0029;;;;N;;;;; 249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L; 0028 0062 0029;;;;N;;;;; 249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L; 0028 0063 0029;;;;N;;;;; 249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L; 0028 0064 0029;;;;N;;;;; 24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L; 0028 0065 0029;;;;N;;;;; 24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L; 0028 0066 0029;;;;N;;;;; 24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L; 0028 0067 0029;;;;N;;;;; 24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L; 0028 0068 0029;;;;N;;;;; 24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L; 0028 0069 0029;;;;N;;;;; 24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L; 0028 006A 0029;;;;N;;;;; 24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L; 0028 006B 0029;;;;N;;;;; 24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L; 0028 006C 0029;;;;N;;;;; 24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L; 0028 006D 0029;;;;N;;;;; 24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L; 0028 006E 0029;;;;N;;;;; 24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L; 0028 006F 0029;;;;N;;;;; 24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L; 0028 0070 0029;;;;N;;;;; 24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L; 0028 0071 0029;;;;N;;;;; 24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L; 0028 0072 0029;;;;N;;;;; 24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L; 0028 0073 0029;;;;N;;;;; 24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L; 0028 0074 0029;;;;N;;;;; 24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L; 0028 0075 0029;;;;N;;;;; 24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L; 0028 0076 0029;;;;N;;;;; 24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L; 0028 0077 0029;;;;N;;;;; 24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L; 0028 0078 0029;;;;N;;;;; 24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L; 0028 0079 0029;;;;N;;;;; 24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L; 0028 007A 0029;;;;N;;;;; 24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L; 0041;;;;N;;;;24D0; 24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L; 0042;;;;N;;;;24D1; 24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L; 0043;;;;N;;;;24D2; 24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L; 0044;;;;N;;;;24D3; 24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L; 0045;;;;N;;;;24D4; 24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L; 0046;;;;N;;;;24D5; 24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L; 0047;;;;N;;;;24D6; 24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L; 0048;;;;N;;;;24D7; 24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L; 0049;;;;N;;;;24D8; 24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L; 004A;;;;N;;;;24D9; 24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L; 004B;;;;N;;;;24DA; 24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L; 004C;;;;N;;;;24DB; 24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L; 004D;;;;N;;;;24DC; 24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L; 004E;;;;N;;;;24DD; 24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L; 004F;;;;N;;;;24DE; 24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L; 0050;;;;N;;;;24DF; 24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L; 0051;;;;N;;;;24E0; 24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L; 0052;;;;N;;;;24E1; 24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L; 0053;;;;N;;;;24E2; 24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L; 0054;;;;N;;;;24E3; 24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L; 0055;;;;N;;;;24E4; 24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L; 0056;;;;N;;;;24E5; 24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L; 0057;;;;N;;;;24E6; 24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L; 0058;;;;N;;;;24E7; 24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L; 0059;;;;N;;;;24E8; 24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L; 005A;;;;N;;;;24E9; 24D0;CIRCLED LATIN SMALL LETTER A;So;0;L; 0061;;;;N;;;24B6;;24B6 24D1;CIRCLED LATIN SMALL LETTER B;So;0;L; 0062;;;;N;;;24B7;;24B7 24D2;CIRCLED LATIN SMALL LETTER C;So;0;L; 0063;;;;N;;;24B8;;24B8 24D3;CIRCLED LATIN SMALL LETTER D;So;0;L; 0064;;;;N;;;24B9;;24B9 24D4;CIRCLED LATIN SMALL LETTER E;So;0;L; 0065;;;;N;;;24BA;;24BA 24D5;CIRCLED LATIN SMALL LETTER F;So;0;L; 0066;;;;N;;;24BB;;24BB 24D6;CIRCLED LATIN SMALL LETTER G;So;0;L; 0067;;;;N;;;24BC;;24BC 24D7;CIRCLED LATIN SMALL LETTER H;So;0;L; 0068;;;;N;;;24BD;;24BD 24D8;CIRCLED LATIN SMALL LETTER I;So;0;L; 0069;;;;N;;;24BE;;24BE 24D9;CIRCLED LATIN SMALL LETTER J;So;0;L; 006A;;;;N;;;24BF;;24BF 24DA;CIRCLED LATIN SMALL LETTER K;So;0;L; 006B;;;;N;;;24C0;;24C0 24DB;CIRCLED LATIN SMALL LETTER L;So;0;L; 006C;;;;N;;;24C1;;24C1 24DC;CIRCLED LATIN SMALL LETTER M;So;0;L; 006D;;;;N;;;24C2;;24C2 24DD;CIRCLED LATIN SMALL LETTER N;So;0;L; 006E;;;;N;;;24C3;;24C3 24DE;CIRCLED LATIN SMALL LETTER O;So;0;L; 006F;;;;N;;;24C4;;24C4 24DF;CIRCLED LATIN SMALL LETTER P;So;0;L; 0070;;;;N;;;24C5;;24C5 24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L; 0071;;;;N;;;24C6;;24C6 24E1;CIRCLED LATIN SMALL LETTER R;So;0;L; 0072;;;;N;;;24C7;;24C7 24E2;CIRCLED LATIN SMALL LETTER S;So;0;L; 0073;;;;N;;;24C8;;24C8 24E3;CIRCLED LATIN SMALL LETTER T;So;0;L; 0074;;;;N;;;24C9;;24C9 24E4;CIRCLED LATIN SMALL LETTER U;So;0;L; 0075;;;;N;;;24CA;;24CA 24E5;CIRCLED LATIN SMALL LETTER V;So;0;L; 0076;;;;N;;;24CB;;24CB 24E6;CIRCLED LATIN SMALL LETTER W;So;0;L; 0077;;;;N;;;24CC;;24CC 24E7;CIRCLED LATIN SMALL LETTER X;So;0;L; 0078;;;;N;;;24CD;;24CD 24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L; 0079;;;;N;;;24CE;;24CE 24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L; 007A;;;;N;;;24CF;;24CF 24EA;CIRCLED DIGIT ZERO;No;0;ON; 0030;;0;0;N;;;;; 24EB;NEGATIVE CIRCLED NUMBER ELEVEN;No;0;ON;;;;11;N;;;;; 24EC;NEGATIVE CIRCLED NUMBER TWELVE;No;0;ON;;;;12;N;;;;; 24ED;NEGATIVE CIRCLED NUMBER THIRTEEN;No;0;ON;;;;13;N;;;;; 24EE;NEGATIVE CIRCLED NUMBER FOURTEEN;No;0;ON;;;;14;N;;;;; 24EF;NEGATIVE CIRCLED NUMBER FIFTEEN;No;0;ON;;;;15;N;;;;; 24F0;NEGATIVE CIRCLED NUMBER SIXTEEN;No;0;ON;;;;16;N;;;;; 24F1;NEGATIVE CIRCLED NUMBER SEVENTEEN;No;0;ON;;;;17;N;;;;; 24F2;NEGATIVE CIRCLED NUMBER EIGHTEEN;No;0;ON;;;;18;N;;;;; 24F3;NEGATIVE CIRCLED NUMBER NINETEEN;No;0;ON;;;;19;N;;;;; 24F4;NEGATIVE CIRCLED NUMBER TWENTY;No;0;ON;;;;20;N;;;;; 24F5;DOUBLE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;;;;; 24F6;DOUBLE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;;;;; 24F7;DOUBLE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;;;;; 24F8;DOUBLE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;;;;; 24F9;DOUBLE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;;;;; 24FA;DOUBLE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;;;;; 24FB;DOUBLE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;;;;; 24FC;DOUBLE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;;;;; 24FD;DOUBLE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;;;;; 24FE;DOUBLE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;;;;; 24FF;NEGATIVE CIRCLED DIGIT ZERO;No;0;ON;;;0;0;N;;;;; 2500;BOX DRAWINGS LIGHT HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT HORIZONTAL;;;; 2501;BOX DRAWINGS HEAVY HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY HORIZONTAL;;;; 2502;BOX DRAWINGS LIGHT VERTICAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL;;;; 2503;BOX DRAWINGS HEAVY VERTICAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL;;;; 2504;BOX DRAWINGS LIGHT TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH HORIZONTAL;;;; 2505;BOX DRAWINGS HEAVY TRIPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH HORIZONTAL;;;; 2506;BOX DRAWINGS LIGHT TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT TRIPLE DASH VERTICAL;;;; 2507;BOX DRAWINGS HEAVY TRIPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY TRIPLE DASH VERTICAL;;;; 2508;BOX DRAWINGS LIGHT QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH HORIZONTAL;;;; 2509;BOX DRAWINGS HEAVY QUADRUPLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH HORIZONTAL;;;; 250A;BOX DRAWINGS LIGHT QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT QUADRUPLE DASH VERTICAL;;;; 250B;BOX DRAWINGS HEAVY QUADRUPLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY QUADRUPLE DASH VERTICAL;;;; 250C;BOX DRAWINGS LIGHT DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND RIGHT;;;; 250D;BOX DRAWINGS DOWN LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT HEAVY;;;; 250E;BOX DRAWINGS DOWN HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT LIGHT;;;; 250F;BOX DRAWINGS HEAVY DOWN AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND RIGHT;;;; 2510;BOX DRAWINGS LIGHT DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT DOWN AND LEFT;;;; 2511;BOX DRAWINGS DOWN LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT HEAVY;;;; 2512;BOX DRAWINGS DOWN HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT LIGHT;;;; 2513;BOX DRAWINGS HEAVY DOWN AND LEFT;So;0;ON;;;;;N;FORMS HEAVY DOWN AND LEFT;;;; 2514;BOX DRAWINGS LIGHT UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT UP AND RIGHT;;;; 2515;BOX DRAWINGS UP LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT HEAVY;;;; 2516;BOX DRAWINGS UP HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT LIGHT;;;; 2517;BOX DRAWINGS HEAVY UP AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY UP AND RIGHT;;;; 2518;BOX DRAWINGS LIGHT UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT UP AND LEFT;;;; 2519;BOX DRAWINGS UP LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT HEAVY;;;; 251A;BOX DRAWINGS UP HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT LIGHT;;;; 251B;BOX DRAWINGS HEAVY UP AND LEFT;So;0;ON;;;;;N;FORMS HEAVY UP AND LEFT;;;; 251C;BOX DRAWINGS LIGHT VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND RIGHT;;;; 251D;BOX DRAWINGS VERTICAL LIGHT AND RIGHT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND RIGHT HEAVY;;;; 251E;BOX DRAWINGS UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND RIGHT DOWN LIGHT;;;; 251F;BOX DRAWINGS DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND RIGHT UP LIGHT;;;; 2520;BOX DRAWINGS VERTICAL HEAVY AND RIGHT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND RIGHT LIGHT;;;; 2521;BOX DRAWINGS DOWN LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND RIGHT UP HEAVY;;;; 2522;BOX DRAWINGS UP LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND RIGHT DOWN HEAVY;;;; 2523;BOX DRAWINGS HEAVY VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND RIGHT;;;; 2524;BOX DRAWINGS LIGHT VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND LEFT;;;; 2525;BOX DRAWINGS VERTICAL LIGHT AND LEFT HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND LEFT HEAVY;;;; 2526;BOX DRAWINGS UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND LEFT DOWN LIGHT;;;; 2527;BOX DRAWINGS DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND LEFT UP LIGHT;;;; 2528;BOX DRAWINGS VERTICAL HEAVY AND LEFT LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND LEFT LIGHT;;;; 2529;BOX DRAWINGS DOWN LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND LEFT UP HEAVY;;;; 252A;BOX DRAWINGS UP LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND LEFT DOWN HEAVY;;;; 252B;BOX DRAWINGS HEAVY VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND LEFT;;;; 252C;BOX DRAWINGS LIGHT DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOWN AND HORIZONTAL;;;; 252D;BOX DRAWINGS LEFT HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT DOWN LIGHT;;;; 252E;BOX DRAWINGS RIGHT HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT DOWN LIGHT;;;; 252F;BOX DRAWINGS DOWN LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND HORIZONTAL HEAVY;;;; 2530;BOX DRAWINGS DOWN HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND HORIZONTAL LIGHT;;;; 2531;BOX DRAWINGS RIGHT LIGHT AND LEFT DOWN HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT DOWN HEAVY;;;; 2532;BOX DRAWINGS LEFT LIGHT AND RIGHT DOWN HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT DOWN HEAVY;;;; 2533;BOX DRAWINGS HEAVY DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOWN AND HORIZONTAL;;;; 2534;BOX DRAWINGS LIGHT UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT UP AND HORIZONTAL;;;; 2535;BOX DRAWINGS LEFT HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT UP LIGHT;;;; 2536;BOX DRAWINGS RIGHT HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT UP LIGHT;;;; 2537;BOX DRAWINGS UP LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND HORIZONTAL HEAVY;;;; 2538;BOX DRAWINGS UP HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND HORIZONTAL LIGHT;;;; 2539;BOX DRAWINGS RIGHT LIGHT AND LEFT UP HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT UP HEAVY;;;; 253A;BOX DRAWINGS LEFT LIGHT AND RIGHT UP HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT UP HEAVY;;;; 253B;BOX DRAWINGS HEAVY UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY UP AND HORIZONTAL;;;; 253C;BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT VERTICAL AND HORIZONTAL;;;; 253D;BOX DRAWINGS LEFT HEAVY AND RIGHT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS LEFT HEAVY AND RIGHT VERTICAL LIGHT;;;; 253E;BOX DRAWINGS RIGHT HEAVY AND LEFT VERTICAL LIGHT;So;0;ON;;;;;N;FORMS RIGHT HEAVY AND LEFT VERTICAL LIGHT;;;; 253F;BOX DRAWINGS VERTICAL LIGHT AND HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS VERTICAL LIGHT AND HORIZONTAL HEAVY;;;; 2540;BOX DRAWINGS UP HEAVY AND DOWN HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS UP HEAVY AND DOWN HORIZONTAL LIGHT;;;; 2541;BOX DRAWINGS DOWN HEAVY AND UP HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS DOWN HEAVY AND UP HORIZONTAL LIGHT;;;; 2542;BOX DRAWINGS VERTICAL HEAVY AND HORIZONTAL LIGHT;So;0;ON;;;;;N;FORMS VERTICAL HEAVY AND HORIZONTAL LIGHT;;;; 2543;BOX DRAWINGS LEFT UP HEAVY AND RIGHT DOWN LIGHT;So;0;ON;;;;;N;FORMS LEFT UP HEAVY AND RIGHT DOWN LIGHT;;;; 2544;BOX DRAWINGS RIGHT UP HEAVY AND LEFT DOWN LIGHT;So;0;ON;;;;;N;FORMS RIGHT UP HEAVY AND LEFT DOWN LIGHT;;;; 2545;BOX DRAWINGS LEFT DOWN HEAVY AND RIGHT UP LIGHT;So;0;ON;;;;;N;FORMS LEFT DOWN HEAVY AND RIGHT UP LIGHT;;;; 2546;BOX DRAWINGS RIGHT DOWN HEAVY AND LEFT UP LIGHT;So;0;ON;;;;;N;FORMS RIGHT DOWN HEAVY AND LEFT UP LIGHT;;;; 2547;BOX DRAWINGS DOWN LIGHT AND UP HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS DOWN LIGHT AND UP HORIZONTAL HEAVY;;;; 2548;BOX DRAWINGS UP LIGHT AND DOWN HORIZONTAL HEAVY;So;0;ON;;;;;N;FORMS UP LIGHT AND DOWN HORIZONTAL HEAVY;;;; 2549;BOX DRAWINGS RIGHT LIGHT AND LEFT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS RIGHT LIGHT AND LEFT VERTICAL HEAVY;;;; 254A;BOX DRAWINGS LEFT LIGHT AND RIGHT VERTICAL HEAVY;So;0;ON;;;;;N;FORMS LEFT LIGHT AND RIGHT VERTICAL HEAVY;;;; 254B;BOX DRAWINGS HEAVY VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY VERTICAL AND HORIZONTAL;;;; 254C;BOX DRAWINGS LIGHT DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH HORIZONTAL;;;; 254D;BOX DRAWINGS HEAVY DOUBLE DASH HORIZONTAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH HORIZONTAL;;;; 254E;BOX DRAWINGS LIGHT DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS LIGHT DOUBLE DASH VERTICAL;;;; 254F;BOX DRAWINGS HEAVY DOUBLE DASH VERTICAL;So;0;ON;;;;;N;FORMS HEAVY DOUBLE DASH VERTICAL;;;; 2550;BOX DRAWINGS DOUBLE HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE HORIZONTAL;;;; 2551;BOX DRAWINGS DOUBLE VERTICAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL;;;; 2552;BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND RIGHT DOUBLE;;;; 2553;BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND RIGHT SINGLE;;;; 2554;BOX DRAWINGS DOUBLE DOWN AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND RIGHT;;;; 2555;BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND LEFT DOUBLE;;;; 2556;BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND LEFT SINGLE;;;; 2557;BOX DRAWINGS DOUBLE DOWN AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND LEFT;;;; 2558;BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND RIGHT DOUBLE;;;; 2559;BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND RIGHT SINGLE;;;; 255A;BOX DRAWINGS DOUBLE UP AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE UP AND RIGHT;;;; 255B;BOX DRAWINGS UP SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND LEFT DOUBLE;;;; 255C;BOX DRAWINGS UP DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND LEFT SINGLE;;;; 255D;BOX DRAWINGS DOUBLE UP AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE UP AND LEFT;;;; 255E;BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND RIGHT DOUBLE;;;; 255F;BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND RIGHT SINGLE;;;; 2560;BOX DRAWINGS DOUBLE VERTICAL AND RIGHT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND RIGHT;;;; 2561;BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND LEFT DOUBLE;;;; 2562;BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND LEFT SINGLE;;;; 2563;BOX DRAWINGS DOUBLE VERTICAL AND LEFT;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND LEFT;;;; 2564;BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS DOWN SINGLE AND HORIZONTAL DOUBLE;;;; 2565;BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS DOWN DOUBLE AND HORIZONTAL SINGLE;;;; 2566;BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE DOWN AND HORIZONTAL;;;; 2567;BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS UP SINGLE AND HORIZONTAL DOUBLE;;;; 2568;BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS UP DOUBLE AND HORIZONTAL SINGLE;;;; 2569;BOX DRAWINGS DOUBLE UP AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE UP AND HORIZONTAL;;;; 256A;BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE;So;0;ON;;;;;N;FORMS VERTICAL SINGLE AND HORIZONTAL DOUBLE;;;; 256B;BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE;So;0;ON;;;;;N;FORMS VERTICAL DOUBLE AND HORIZONTAL SINGLE;;;; 256C;BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL;So;0;ON;;;;;N;FORMS DOUBLE VERTICAL AND HORIZONTAL;;;; 256D;BOX DRAWINGS LIGHT ARC DOWN AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND RIGHT;;;; 256E;BOX DRAWINGS LIGHT ARC DOWN AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC DOWN AND LEFT;;;; 256F;BOX DRAWINGS LIGHT ARC UP AND LEFT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND LEFT;;;; 2570;BOX DRAWINGS LIGHT ARC UP AND RIGHT;So;0;ON;;;;;N;FORMS LIGHT ARC UP AND RIGHT;;;; 2571;BOX DRAWINGS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER RIGHT TO LOWER LEFT;;;; 2572;BOX DRAWINGS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL UPPER LEFT TO LOWER RIGHT;;;; 2573;BOX DRAWINGS LIGHT DIAGONAL CROSS;So;0;ON;;;;;N;FORMS LIGHT DIAGONAL CROSS;;;; 2574;BOX DRAWINGS LIGHT LEFT;So;0;ON;;;;;N;FORMS LIGHT LEFT;;;; 2575;BOX DRAWINGS LIGHT UP;So;0;ON;;;;;N;FORMS LIGHT UP;;;; 2576;BOX DRAWINGS LIGHT RIGHT;So;0;ON;;;;;N;FORMS LIGHT RIGHT;;;; 2577;BOX DRAWINGS LIGHT DOWN;So;0;ON;;;;;N;FORMS LIGHT DOWN;;;; 2578;BOX DRAWINGS HEAVY LEFT;So;0;ON;;;;;N;FORMS HEAVY LEFT;;;; 2579;BOX DRAWINGS HEAVY UP;So;0;ON;;;;;N;FORMS HEAVY UP;;;; 257A;BOX DRAWINGS HEAVY RIGHT;So;0;ON;;;;;N;FORMS HEAVY RIGHT;;;; 257B;BOX DRAWINGS HEAVY DOWN;So;0;ON;;;;;N;FORMS HEAVY DOWN;;;; 257C;BOX DRAWINGS LIGHT LEFT AND HEAVY RIGHT;So;0;ON;;;;;N;FORMS LIGHT LEFT AND HEAVY RIGHT;;;; 257D;BOX DRAWINGS LIGHT UP AND HEAVY DOWN;So;0;ON;;;;;N;FORMS LIGHT UP AND HEAVY DOWN;;;; 257E;BOX DRAWINGS HEAVY LEFT AND LIGHT RIGHT;So;0;ON;;;;;N;FORMS HEAVY LEFT AND LIGHT RIGHT;;;; 257F;BOX DRAWINGS HEAVY UP AND LIGHT DOWN;So;0;ON;;;;;N;FORMS HEAVY UP AND LIGHT DOWN;;;; 2580;UPPER HALF BLOCK;So;0;ON;;;;;N;;;;; 2581;LOWER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; 2582;LOWER ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; 2583;LOWER THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; 2584;LOWER HALF BLOCK;So;0;ON;;;;;N;;;;; 2585;LOWER FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; 2586;LOWER THREE QUARTERS BLOCK;So;0;ON;;;;;N;LOWER THREE QUARTER BLOCK;;;; 2587;LOWER SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; 2588;FULL BLOCK;So;0;ON;;;;;N;;;;; 2589;LEFT SEVEN EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; 258A;LEFT THREE QUARTERS BLOCK;So;0;ON;;;;;N;LEFT THREE QUARTER BLOCK;;;; 258B;LEFT FIVE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; 258C;LEFT HALF BLOCK;So;0;ON;;;;;N;;;;; 258D;LEFT THREE EIGHTHS BLOCK;So;0;ON;;;;;N;;;;; 258E;LEFT ONE QUARTER BLOCK;So;0;ON;;;;;N;;;;; 258F;LEFT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; 2590;RIGHT HALF BLOCK;So;0;ON;;;;;N;;;;; 2591;LIGHT SHADE;So;0;ON;;;;;N;;;;; 2592;MEDIUM SHADE;So;0;ON;;;;;N;;;;; 2593;DARK SHADE;So;0;ON;;;;;N;;;;; 2594;UPPER ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; 2595;RIGHT ONE EIGHTH BLOCK;So;0;ON;;;;;N;;;;; 2596;QUADRANT LOWER LEFT;So;0;ON;;;;;N;;;;; 2597;QUADRANT LOWER RIGHT;So;0;ON;;;;;N;;;;; 2598;QUADRANT UPPER LEFT;So;0;ON;;;;;N;;;;; 2599;QUADRANT UPPER LEFT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; 259A;QUADRANT UPPER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; 259B;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; 259C;QUADRANT UPPER LEFT AND UPPER RIGHT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; 259D;QUADRANT UPPER RIGHT;So;0;ON;;;;;N;;;;; 259E;QUADRANT UPPER RIGHT AND LOWER LEFT;So;0;ON;;;;;N;;;;; 259F;QUADRANT UPPER RIGHT AND LOWER LEFT AND LOWER RIGHT;So;0;ON;;;;;N;;;;; 25A0;BLACK SQUARE;So;0;ON;;;;;N;;;;; 25A1;WHITE SQUARE;So;0;ON;;;;;N;;;;; 25A2;WHITE SQUARE WITH ROUNDED CORNERS;So;0;ON;;;;;N;;;;; 25A3;WHITE SQUARE CONTAINING BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; 25A4;SQUARE WITH HORIZONTAL FILL;So;0;ON;;;;;N;;;;; 25A5;SQUARE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; 25A6;SQUARE WITH ORTHOGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; 25A7;SQUARE WITH UPPER LEFT TO LOWER RIGHT FILL;So;0;ON;;;;;N;;;;; 25A8;SQUARE WITH UPPER RIGHT TO LOWER LEFT FILL;So;0;ON;;;;;N;;;;; 25A9;SQUARE WITH DIAGONAL CROSSHATCH FILL;So;0;ON;;;;;N;;;;; 25AA;BLACK SMALL SQUARE;So;0;ON;;;;;N;;;;; 25AB;WHITE SMALL SQUARE;So;0;ON;;;;;N;;;;; 25AC;BLACK RECTANGLE;So;0;ON;;;;;N;;;;; 25AD;WHITE RECTANGLE;So;0;ON;;;;;N;;;;; 25AE;BLACK VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; 25AF;WHITE VERTICAL RECTANGLE;So;0;ON;;;;;N;;;;; 25B0;BLACK PARALLELOGRAM;So;0;ON;;;;;N;;;;; 25B1;WHITE PARALLELOGRAM;So;0;ON;;;;;N;;;;; 25B2;BLACK UP-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING TRIANGLE;;;; 25B3;WHITE UP-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE;;;; 25B4;BLACK UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK UP POINTING SMALL TRIANGLE;;;; 25B5;WHITE UP-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE UP POINTING SMALL TRIANGLE;;;; 25B6;BLACK RIGHT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING TRIANGLE;;;; 25B7;WHITE RIGHT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE RIGHT POINTING TRIANGLE;;;; 25B8;BLACK RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK RIGHT POINTING SMALL TRIANGLE;;;; 25B9;WHITE RIGHT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE RIGHT POINTING SMALL TRIANGLE;;;; 25BA;BLACK RIGHT-POINTING POINTER;So;0;ON;;;;;N;BLACK RIGHT POINTING POINTER;;;; 25BB;WHITE RIGHT-POINTING POINTER;So;0;ON;;;;;N;WHITE RIGHT POINTING POINTER;;;; 25BC;BLACK DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING TRIANGLE;;;; 25BD;WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING TRIANGLE;;;; 25BE;BLACK DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK DOWN POINTING SMALL TRIANGLE;;;; 25BF;WHITE DOWN-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE DOWN POINTING SMALL TRIANGLE;;;; 25C0;BLACK LEFT-POINTING TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING TRIANGLE;;;; 25C1;WHITE LEFT-POINTING TRIANGLE;Sm;0;ON;;;;;N;WHITE LEFT POINTING TRIANGLE;;;; 25C2;BLACK LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;BLACK LEFT POINTING SMALL TRIANGLE;;;; 25C3;WHITE LEFT-POINTING SMALL TRIANGLE;So;0;ON;;;;;N;WHITE LEFT POINTING SMALL TRIANGLE;;;; 25C4;BLACK LEFT-POINTING POINTER;So;0;ON;;;;;N;BLACK LEFT POINTING POINTER;;;; 25C5;WHITE LEFT-POINTING POINTER;So;0;ON;;;;;N;WHITE LEFT POINTING POINTER;;;; 25C6;BLACK DIAMOND;So;0;ON;;;;;N;;;;; 25C7;WHITE DIAMOND;So;0;ON;;;;;N;;;;; 25C8;WHITE DIAMOND CONTAINING BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;; 25C9;FISHEYE;So;0;ON;;;;;N;;;;; 25CA;LOZENGE;So;0;ON;;;;;N;;;;; 25CB;WHITE CIRCLE;So;0;ON;;;;;N;;;;; 25CC;DOTTED CIRCLE;So;0;ON;;;;;N;;;;; 25CD;CIRCLE WITH VERTICAL FILL;So;0;ON;;;;;N;;;;; 25CE;BULLSEYE;So;0;ON;;;;;N;;;;; 25CF;BLACK CIRCLE;So;0;ON;;;;;N;;;;; 25D0;CIRCLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; 25D1;CIRCLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; 25D2;CIRCLE WITH LOWER HALF BLACK;So;0;ON;;;;;N;;;;; 25D3;CIRCLE WITH UPPER HALF BLACK;So;0;ON;;;;;N;;;;; 25D4;CIRCLE WITH UPPER RIGHT QUADRANT BLACK;So;0;ON;;;;;N;;;;; 25D5;CIRCLE WITH ALL BUT UPPER LEFT QUADRANT BLACK;So;0;ON;;;;;N;;;;; 25D6;LEFT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; 25D7;RIGHT HALF BLACK CIRCLE;So;0;ON;;;;;N;;;;; 25D8;INVERSE BULLET;So;0;ON;;;;;N;;;;; 25D9;INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; 25DA;UPPER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; 25DB;LOWER HALF INVERSE WHITE CIRCLE;So;0;ON;;;;;N;;;;; 25DC;UPPER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; 25DD;UPPER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; 25DE;LOWER RIGHT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; 25DF;LOWER LEFT QUADRANT CIRCULAR ARC;So;0;ON;;;;;N;;;;; 25E0;UPPER HALF CIRCLE;So;0;ON;;;;;N;;;;; 25E1;LOWER HALF CIRCLE;So;0;ON;;;;;N;;;;; 25E2;BLACK LOWER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; 25E3;BLACK LOWER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; 25E4;BLACK UPPER LEFT TRIANGLE;So;0;ON;;;;;N;;;;; 25E5;BLACK UPPER RIGHT TRIANGLE;So;0;ON;;;;;N;;;;; 25E6;WHITE BULLET;So;0;ON;;;;;N;;;;; 25E7;SQUARE WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; 25E8;SQUARE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; 25E9;SQUARE WITH UPPER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; 25EA;SQUARE WITH LOWER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; 25EB;WHITE SQUARE WITH VERTICAL BISECTING LINE;So;0;ON;;;;;N;;;;; 25EC;WHITE UP-POINTING TRIANGLE WITH DOT;So;0;ON;;;;;N;WHITE UP POINTING TRIANGLE WITH DOT;;;; 25ED;UP-POINTING TRIANGLE WITH LEFT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH LEFT HALF BLACK;;;; 25EE;UP-POINTING TRIANGLE WITH RIGHT HALF BLACK;So;0;ON;;;;;N;UP POINTING TRIANGLE WITH RIGHT HALF BLACK;;;; 25EF;LARGE CIRCLE;So;0;ON;;;;;N;;;;; 25F0;WHITE SQUARE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; 25F1;WHITE SQUARE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; 25F2;WHITE SQUARE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; 25F3;WHITE SQUARE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; 25F4;WHITE CIRCLE WITH UPPER LEFT QUADRANT;So;0;ON;;;;;N;;;;; 25F5;WHITE CIRCLE WITH LOWER LEFT QUADRANT;So;0;ON;;;;;N;;;;; 25F6;WHITE CIRCLE WITH LOWER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; 25F7;WHITE CIRCLE WITH UPPER RIGHT QUADRANT;So;0;ON;;;;;N;;;;; 25F8;UPPER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; 25F9;UPPER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; 25FA;LOWER LEFT TRIANGLE;Sm;0;ON;;;;;N;;;;; 25FB;WHITE MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; 25FC;BLACK MEDIUM SQUARE;Sm;0;ON;;;;;N;;;;; 25FD;WHITE MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; 25FE;BLACK MEDIUM SMALL SQUARE;Sm;0;ON;;;;;N;;;;; 25FF;LOWER RIGHT TRIANGLE;Sm;0;ON;;;;;N;;;;; 2600;BLACK SUN WITH RAYS;So;0;ON;;;;;N;;;;; 2601;CLOUD;So;0;ON;;;;;N;;;;; 2602;UMBRELLA;So;0;ON;;;;;N;;;;; 2603;SNOWMAN;So;0;ON;;;;;N;;;;; 2604;COMET;So;0;ON;;;;;N;;;;; 2605;BLACK STAR;So;0;ON;;;;;N;;;;; 2606;WHITE STAR;So;0;ON;;;;;N;;;;; 2607;LIGHTNING;So;0;ON;;;;;N;;;;; 2608;THUNDERSTORM;So;0;ON;;;;;N;;;;; 2609;SUN;So;0;ON;;;;;N;;;;; 260A;ASCENDING NODE;So;0;ON;;;;;N;;;;; 260B;DESCENDING NODE;So;0;ON;;;;;N;;;;; 260C;CONJUNCTION;So;0;ON;;;;;N;;;;; 260D;OPPOSITION;So;0;ON;;;;;N;;;;; 260E;BLACK TELEPHONE;So;0;ON;;;;;N;;;;; 260F;WHITE TELEPHONE;So;0;ON;;;;;N;;;;; 2610;BALLOT BOX;So;0;ON;;;;;N;;;;; 2611;BALLOT BOX WITH CHECK;So;0;ON;;;;;N;;;;; 2612;BALLOT BOX WITH X;So;0;ON;;;;;N;;;;; 2613;SALTIRE;So;0;ON;;;;;N;;;;; 2614;UMBRELLA WITH RAIN DROPS;So;0;ON;;;;;N;;;;; 2615;HOT BEVERAGE;So;0;ON;;;;;N;;;;; 2616;WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;; 2617;BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;; 2618;SHAMROCK;So;0;ON;;;;;N;;;;; 2619;REVERSED ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; 261A;BLACK LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; 261B;BLACK RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; 261C;WHITE LEFT POINTING INDEX;So;0;ON;;;;;N;;;;; 261D;WHITE UP POINTING INDEX;So;0;ON;;;;;N;;;;; 261E;WHITE RIGHT POINTING INDEX;So;0;ON;;;;;N;;;;; 261F;WHITE DOWN POINTING INDEX;So;0;ON;;;;;N;;;;; 2620;SKULL AND CROSSBONES;So;0;ON;;;;;N;;;;; 2621;CAUTION SIGN;So;0;ON;;;;;N;;;;; 2622;RADIOACTIVE SIGN;So;0;ON;;;;;N;;;;; 2623;BIOHAZARD SIGN;So;0;ON;;;;;N;;;;; 2624;CADUCEUS;So;0;ON;;;;;N;;;;; 2625;ANKH;So;0;ON;;;;;N;;;;; 2626;ORTHODOX CROSS;So;0;ON;;;;;N;;;;; 2627;CHI RHO;So;0;ON;;;;;N;;;;; 2628;CROSS OF LORRAINE;So;0;ON;;;;;N;;;;; 2629;CROSS OF JERUSALEM;So;0;ON;;;;;N;;;;; 262A;STAR AND CRESCENT;So;0;ON;;;;;N;;;;; 262B;FARSI SYMBOL;So;0;ON;;;;;N;SYMBOL OF IRAN;;;; 262C;ADI SHAKTI;So;0;ON;;;;;N;;;;; 262D;HAMMER AND SICKLE;So;0;ON;;;;;N;;;;; 262E;PEACE SYMBOL;So;0;ON;;;;;N;;;;; 262F;YIN YANG;So;0;ON;;;;;N;;;;; 2630;TRIGRAM FOR HEAVEN;So;0;ON;;;;;N;;;;; 2631;TRIGRAM FOR LAKE;So;0;ON;;;;;N;;;;; 2632;TRIGRAM FOR FIRE;So;0;ON;;;;;N;;;;; 2633;TRIGRAM FOR THUNDER;So;0;ON;;;;;N;;;;; 2634;TRIGRAM FOR WIND;So;0;ON;;;;;N;;;;; 2635;TRIGRAM FOR WATER;So;0;ON;;;;;N;;;;; 2636;TRIGRAM FOR MOUNTAIN;So;0;ON;;;;;N;;;;; 2637;TRIGRAM FOR EARTH;So;0;ON;;;;;N;;;;; 2638;WHEEL OF DHARMA;So;0;ON;;;;;N;;;;; 2639;WHITE FROWNING FACE;So;0;ON;;;;;N;;;;; 263A;WHITE SMILING FACE;So;0;ON;;;;;N;;;;; 263B;BLACK SMILING FACE;So;0;ON;;;;;N;;;;; 263C;WHITE SUN WITH RAYS;So;0;ON;;;;;N;;;;; 263D;FIRST QUARTER MOON;So;0;ON;;;;;N;;;;; 263E;LAST QUARTER MOON;So;0;ON;;;;;N;;;;; 263F;MERCURY;So;0;ON;;;;;N;;;;; 2640;FEMALE SIGN;So;0;ON;;;;;N;;;;; 2641;EARTH;So;0;ON;;;;;N;;;;; 2642;MALE SIGN;So;0;ON;;;;;N;;;;; 2643;JUPITER;So;0;ON;;;;;N;;;;; 2644;SATURN;So;0;ON;;;;;N;;;;; 2645;URANUS;So;0;ON;;;;;N;;;;; 2646;NEPTUNE;So;0;ON;;;;;N;;;;; 2647;PLUTO;So;0;ON;;;;;N;;;;; 2648;ARIES;So;0;ON;;;;;N;;;;; 2649;TAURUS;So;0;ON;;;;;N;;;;; 264A;GEMINI;So;0;ON;;;;;N;;;;; 264B;CANCER;So;0;ON;;;;;N;;;;; 264C;LEO;So;0;ON;;;;;N;;;;; 264D;VIRGO;So;0;ON;;;;;N;;;;; 264E;LIBRA;So;0;ON;;;;;N;;;;; 264F;SCORPIUS;So;0;ON;;;;;N;;;;; 2650;SAGITTARIUS;So;0;ON;;;;;N;;;;; 2651;CAPRICORN;So;0;ON;;;;;N;;;;; 2652;AQUARIUS;So;0;ON;;;;;N;;;;; 2653;PISCES;So;0;ON;;;;;N;;;;; 2654;WHITE CHESS KING;So;0;ON;;;;;N;;;;; 2655;WHITE CHESS QUEEN;So;0;ON;;;;;N;;;;; 2656;WHITE CHESS ROOK;So;0;ON;;;;;N;;;;; 2657;WHITE CHESS BISHOP;So;0;ON;;;;;N;;;;; 2658;WHITE CHESS KNIGHT;So;0;ON;;;;;N;;;;; 2659;WHITE CHESS PAWN;So;0;ON;;;;;N;;;;; 265A;BLACK CHESS KING;So;0;ON;;;;;N;;;;; 265B;BLACK CHESS QUEEN;So;0;ON;;;;;N;;;;; 265C;BLACK CHESS ROOK;So;0;ON;;;;;N;;;;; 265D;BLACK CHESS BISHOP;So;0;ON;;;;;N;;;;; 265E;BLACK CHESS KNIGHT;So;0;ON;;;;;N;;;;; 265F;BLACK CHESS PAWN;So;0;ON;;;;;N;;;;; 2660;BLACK SPADE SUIT;So;0;ON;;;;;N;;;;; 2661;WHITE HEART SUIT;So;0;ON;;;;;N;;;;; 2662;WHITE DIAMOND SUIT;So;0;ON;;;;;N;;;;; 2663;BLACK CLUB SUIT;So;0;ON;;;;;N;;;;; 2664;WHITE SPADE SUIT;So;0;ON;;;;;N;;;;; 2665;BLACK HEART SUIT;So;0;ON;;;;;N;;;;; 2666;BLACK DIAMOND SUIT;So;0;ON;;;;;N;;;;; 2667;WHITE CLUB SUIT;So;0;ON;;;;;N;;;;; 2668;HOT SPRINGS;So;0;ON;;;;;N;;;;; 2669;QUARTER NOTE;So;0;ON;;;;;N;;;;; 266A;EIGHTH NOTE;So;0;ON;;;;;N;;;;; 266B;BEAMED EIGHTH NOTES;So;0;ON;;;;;N;BARRED EIGHTH NOTES;;;; 266C;BEAMED SIXTEENTH NOTES;So;0;ON;;;;;N;BARRED SIXTEENTH NOTES;;;; 266D;MUSIC FLAT SIGN;So;0;ON;;;;;N;FLAT;;;; 266E;MUSIC NATURAL SIGN;So;0;ON;;;;;N;NATURAL;;;; 266F;MUSIC SHARP SIGN;Sm;0;ON;;;;;N;SHARP;;;; 2670;WEST SYRIAC CROSS;So;0;ON;;;;;N;;;;; 2671;EAST SYRIAC CROSS;So;0;ON;;;;;N;;;;; 2672;UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; 2673;RECYCLING SYMBOL FOR TYPE-1 PLASTICS;So;0;ON;;;;;N;;pete;;; 2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;hdpe;;; 2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;pvc;;; 2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;ldpe;;; 2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;pp;;; 2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;ps;;; 2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;other;;; 267A;RECYCLING SYMBOL FOR GENERIC MATERIALS;So;0;ON;;;;;N;;;;; 267B;BLACK UNIVERSAL RECYCLING SYMBOL;So;0;ON;;;;;N;;;;; 267C;RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; 267D;PARTIALLY-RECYCLED PAPER SYMBOL;So;0;ON;;;;;N;;;;; 267E;PERMANENT PAPER SIGN;So;0;ON;;;;;N;;;;; 267F;WHEELCHAIR SYMBOL;So;0;ON;;;;;N;;;;; 2680;DIE FACE-1;So;0;ON;;;;;N;;;;; 2681;DIE FACE-2;So;0;ON;;;;;N;;;;; 2682;DIE FACE-3;So;0;ON;;;;;N;;;;; 2683;DIE FACE-4;So;0;ON;;;;;N;;;;; 2684;DIE FACE-5;So;0;ON;;;;;N;;;;; 2685;DIE FACE-6;So;0;ON;;;;;N;;;;; 2686;WHITE CIRCLE WITH DOT RIGHT;So;0;ON;;;;;N;;;;; 2687;WHITE CIRCLE WITH TWO DOTS;So;0;ON;;;;;N;;;;; 2688;BLACK CIRCLE WITH WHITE DOT RIGHT;So;0;ON;;;;;N;;;;; 2689;BLACK CIRCLE WITH TWO WHITE DOTS;So;0;ON;;;;;N;;;;; 268A;MONOGRAM FOR YANG;So;0;ON;;;;;N;;;;; 268B;MONOGRAM FOR YIN;So;0;ON;;;;;N;;;;; 268C;DIGRAM FOR GREATER YANG;So;0;ON;;;;;N;;;;; 268D;DIGRAM FOR LESSER YIN;So;0;ON;;;;;N;;;;; 268E;DIGRAM FOR LESSER YANG;So;0;ON;;;;;N;;;;; 268F;DIGRAM FOR GREATER YIN;So;0;ON;;;;;N;;;;; 2690;WHITE FLAG;So;0;ON;;;;;N;;;;; 2691;BLACK FLAG;So;0;ON;;;;;N;;;;; 2692;HAMMER AND PICK;So;0;ON;;;;;N;;;;; 2693;ANCHOR;So;0;ON;;;;;N;;;;; 2694;CROSSED SWORDS;So;0;ON;;;;;N;;;;; 2695;STAFF OF AESCULAPIUS;So;0;ON;;;;;N;;;;; 2696;SCALES;So;0;ON;;;;;N;;;;; 2697;ALEMBIC;So;0;ON;;;;;N;;;;; 2698;FLOWER;So;0;ON;;;;;N;;;;; 2699;GEAR;So;0;ON;;;;;N;;;;; 269A;STAFF OF HERMES;So;0;ON;;;;;N;;;;; 269B;ATOM SYMBOL;So;0;ON;;;;;N;;;;; 269C;FLEUR-DE-LIS;So;0;ON;;;;;N;;;;; 26A0;WARNING SIGN;So;0;ON;;;;;N;;;;; 26A1;HIGH VOLTAGE SIGN;So;0;ON;;;;;N;;;;; 26A2;DOUBLED FEMALE SIGN;So;0;ON;;;;;N;;;;; 26A3;DOUBLED MALE SIGN;So;0;ON;;;;;N;;;;; 26A4;INTERLOCKED FEMALE AND MALE SIGN;So;0;ON;;;;;N;;;;; 26A5;MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; 26A6;MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; 26A7;MALE WITH STROKE AND MALE AND FEMALE SIGN;So;0;ON;;;;;N;;;;; 26A8;VERTICAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; 26A9;HORIZONTAL MALE WITH STROKE SIGN;So;0;ON;;;;;N;;;;; 26AA;MEDIUM WHITE CIRCLE;So;0;ON;;;;;N;;;;; 26AB;MEDIUM BLACK CIRCLE;So;0;ON;;;;;N;;;;; 26AC;MEDIUM SMALL WHITE CIRCLE;So;0;L;;;;;N;;;;; 26AD;MARRIAGE SYMBOL;So;0;ON;;;;;N;;;;; 26AE;DIVORCE SYMBOL;So;0;ON;;;;;N;;;;; 26AF;UNMARRIED PARTNERSHIP SYMBOL;So;0;ON;;;;;N;;;;; 26B0;COFFIN;So;0;ON;;;;;N;;;;; 26B1;FUNERAL URN;So;0;ON;;;;;N;;;;; 26B2;NEUTER;So;0;ON;;;;;N;;;;; 2701;UPPER BLADE SCISSORS;So;0;ON;;;;;N;;;;; 2702;BLACK SCISSORS;So;0;ON;;;;;N;;;;; 2703;LOWER BLADE SCISSORS;So;0;ON;;;;;N;;;;; 2704;WHITE SCISSORS;So;0;ON;;;;;N;;;;; 2706;TELEPHONE LOCATION SIGN;So;0;ON;;;;;N;;;;; 2707;TAPE DRIVE;So;0;ON;;;;;N;;;;; 2708;AIRPLANE;So;0;ON;;;;;N;;;;; 2709;ENVELOPE;So;0;ON;;;;;N;;;;; 270C;VICTORY HAND;So;0;ON;;;;;N;;;;; 270D;WRITING HAND;So;0;ON;;;;;N;;;;; 270E;LOWER RIGHT PENCIL;So;0;ON;;;;;N;;;;; 270F;PENCIL;So;0;ON;;;;;N;;;;; 2710;UPPER RIGHT PENCIL;So;0;ON;;;;;N;;;;; 2711;WHITE NIB;So;0;ON;;;;;N;;;;; 2712;BLACK NIB;So;0;ON;;;;;N;;;;; 2713;CHECK MARK;So;0;ON;;;;;N;;;;; 2714;HEAVY CHECK MARK;So;0;ON;;;;;N;;;;; 2715;MULTIPLICATION X;So;0;ON;;;;;N;;;;; 2716;HEAVY MULTIPLICATION X;So;0;ON;;;;;N;;;;; 2717;BALLOT X;So;0;ON;;;;;N;;;;; 2718;HEAVY BALLOT X;So;0;ON;;;;;N;;;;; 2719;OUTLINED GREEK CROSS;So;0;ON;;;;;N;;;;; 271A;HEAVY GREEK CROSS;So;0;ON;;;;;N;;;;; 271B;OPEN CENTRE CROSS;So;0;ON;;;;;N;OPEN CENTER CROSS;;;; 271C;HEAVY OPEN CENTRE CROSS;So;0;ON;;;;;N;HEAVY OPEN CENTER CROSS;;;; 271D;LATIN CROSS;So;0;ON;;;;;N;;;;; 271E;SHADOWED WHITE LATIN CROSS;So;0;ON;;;;;N;;;;; 271F;OUTLINED LATIN CROSS;So;0;ON;;;;;N;;;;; 2720;MALTESE CROSS;So;0;ON;;;;;N;;;;; 2721;STAR OF DAVID;So;0;ON;;;;;N;;;;; 2722;FOUR TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 2723;FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 2724;HEAVY FOUR BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 2725;FOUR CLUB-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 2726;BLACK FOUR POINTED STAR;So;0;ON;;;;;N;;;;; 2727;WHITE FOUR POINTED STAR;So;0;ON;;;;;N;;;;; 2729;STRESS OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;; 272A;CIRCLED WHITE STAR;So;0;ON;;;;;N;;;;; 272B;OPEN CENTRE BLACK STAR;So;0;ON;;;;;N;OPEN CENTER BLACK STAR;;;; 272C;BLACK CENTRE WHITE STAR;So;0;ON;;;;;N;BLACK CENTER WHITE STAR;;;; 272D;OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; 272E;HEAVY OUTLINED BLACK STAR;So;0;ON;;;;;N;;;;; 272F;PINWHEEL STAR;So;0;ON;;;;;N;;;;; 2730;SHADOWED WHITE STAR;So;0;ON;;;;;N;;;;; 2731;HEAVY ASTERISK;So;0;ON;;;;;N;;;;; 2732;OPEN CENTRE ASTERISK;So;0;ON;;;;;N;OPEN CENTER ASTERISK;;;; 2733;EIGHT SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 2734;EIGHT POINTED BLACK STAR;So;0;ON;;;;;N;;;;; 2735;EIGHT POINTED PINWHEEL STAR;So;0;ON;;;;;N;;;;; 2736;SIX POINTED BLACK STAR;So;0;ON;;;;;N;;;;; 2737;EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; 2738;HEAVY EIGHT POINTED RECTILINEAR BLACK STAR;So;0;ON;;;;;N;;;;; 2739;TWELVE POINTED BLACK STAR;So;0;ON;;;;;N;;;;; 273A;SIXTEEN POINTED ASTERISK;So;0;ON;;;;;N;;;;; 273B;TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 273C;OPEN CENTRE TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;OPEN CENTER TEARDROP-SPOKED ASTERISK;;;; 273D;HEAVY TEARDROP-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 273E;SIX PETALLED BLACK AND WHITE FLORETTE;So;0;ON;;;;;N;;;;; 273F;BLACK FLORETTE;So;0;ON;;;;;N;;;;; 2740;WHITE FLORETTE;So;0;ON;;;;;N;;;;; 2741;EIGHT PETALLED OUTLINED BLACK FLORETTE;So;0;ON;;;;;N;;;;; 2742;CIRCLED OPEN CENTRE EIGHT POINTED STAR;So;0;ON;;;;;N;CIRCLED OPEN CENTER EIGHT POINTED STAR;;;; 2743;HEAVY TEARDROP-SPOKED PINWHEEL ASTERISK;So;0;ON;;;;;N;;;;; 2744;SNOWFLAKE;So;0;ON;;;;;N;;;;; 2745;TIGHT TRIFOLIATE SNOWFLAKE;So;0;ON;;;;;N;;;;; 2746;HEAVY CHEVRON SNOWFLAKE;So;0;ON;;;;;N;;;;; 2747;SPARKLE;So;0;ON;;;;;N;;;;; 2748;HEAVY SPARKLE;So;0;ON;;;;;N;;;;; 2749;BALLOON-SPOKED ASTERISK;So;0;ON;;;;;N;;;;; 274A;EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; 274B;HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK;So;0;ON;;;;;N;;;;; 274D;SHADOWED WHITE CIRCLE;So;0;ON;;;;;N;;;;; 274F;LOWER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; 2750;UPPER RIGHT DROP-SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; 2751;LOWER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; 2752;UPPER RIGHT SHADOWED WHITE SQUARE;So;0;ON;;;;;N;;;;; 2756;BLACK DIAMOND MINUS WHITE X;So;0;ON;;;;;N;;;;; 2758;LIGHT VERTICAL BAR;So;0;ON;;;;;N;;;;; 2759;MEDIUM VERTICAL BAR;So;0;ON;;;;;N;;;;; 275A;HEAVY VERTICAL BAR;So;0;ON;;;;;N;;;;; 275B;HEAVY SINGLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; 275C;HEAVY SINGLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; 275D;HEAVY DOUBLE TURNED COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; 275E;HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; 2761;CURVED STEM PARAGRAPH SIGN ORNAMENT;So;0;ON;;;;;N;;;;; 2762;HEAVY EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; 2763;HEAVY HEART EXCLAMATION MARK ORNAMENT;So;0;ON;;;;;N;;;;; 2764;HEAVY BLACK HEART;So;0;ON;;;;;N;;;;; 2765;ROTATED HEAVY BLACK HEART BULLET;So;0;ON;;;;;N;;;;; 2766;FLORAL HEART;So;0;ON;;;;;N;;;;; 2767;ROTATED FLORAL HEART BULLET;So;0;ON;;;;;N;;;;; 2768;MEDIUM LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; 2769;MEDIUM RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; 276A;MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT;Ps;0;ON;;;;;Y;;;;; 276B;MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT;Pe;0;ON;;;;;Y;;;;; 276C;MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; 276D;MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; 276E;HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT;Ps;0;ON;;;;;Y;;;;; 276F;HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT;Pe;0;ON;;;;;Y;;;;; 2770;HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; 2771;HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; 2772;LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; 2773;LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; 2774;MEDIUM LEFT CURLY BRACKET ORNAMENT;Ps;0;ON;;;;;Y;;;;; 2775;MEDIUM RIGHT CURLY BRACKET ORNAMENT;Pe;0;ON;;;;;Y;;;;; 2776;DINGBAT NEGATIVE CIRCLED DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED DIGIT ONE;;;; 2777;DINGBAT NEGATIVE CIRCLED DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED DIGIT TWO;;;; 2778;DINGBAT NEGATIVE CIRCLED DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED DIGIT THREE;;;; 2779;DINGBAT NEGATIVE CIRCLED DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED DIGIT FOUR;;;; 277A;DINGBAT NEGATIVE CIRCLED DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED DIGIT FIVE;;;; 277B;DINGBAT NEGATIVE CIRCLED DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED DIGIT SIX;;;; 277C;DINGBAT NEGATIVE CIRCLED DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED DIGIT SEVEN;;;; 277D;DINGBAT NEGATIVE CIRCLED DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED DIGIT EIGHT;;;; 277E;DINGBAT NEGATIVE CIRCLED DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED DIGIT NINE;;;; 277F;DINGBAT NEGATIVE CIRCLED NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED NUMBER TEN;;;; 2780;DINGBAT CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;CIRCLED SANS-SERIF DIGIT ONE;;;; 2781;DINGBAT CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;CIRCLED SANS-SERIF DIGIT TWO;;;; 2782;DINGBAT CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;CIRCLED SANS-SERIF DIGIT THREE;;;; 2783;DINGBAT CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;CIRCLED SANS-SERIF DIGIT FOUR;;;; 2784;DINGBAT CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;CIRCLED SANS-SERIF DIGIT FIVE;;;; 2785;DINGBAT CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;CIRCLED SANS-SERIF DIGIT SIX;;;; 2786;DINGBAT CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;CIRCLED SANS-SERIF DIGIT SEVEN;;;; 2787;DINGBAT CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;CIRCLED SANS-SERIF DIGIT EIGHT;;;; 2788;DINGBAT CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;CIRCLED SANS-SERIF DIGIT NINE;;;; 2789;DINGBAT CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;CIRCLED SANS-SERIF NUMBER TEN;;;; 278A;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ONE;No;0;ON;;;1;1;N;INVERSE CIRCLED SANS-SERIF DIGIT ONE;;;; 278B;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT TWO;No;0;ON;;;2;2;N;INVERSE CIRCLED SANS-SERIF DIGIT TWO;;;; 278C;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT THREE;No;0;ON;;;3;3;N;INVERSE CIRCLED SANS-SERIF DIGIT THREE;;;; 278D;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FOUR;No;0;ON;;;4;4;N;INVERSE CIRCLED SANS-SERIF DIGIT FOUR;;;; 278E;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT FIVE;No;0;ON;;;5;5;N;INVERSE CIRCLED SANS-SERIF DIGIT FIVE;;;; 278F;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SIX;No;0;ON;;;6;6;N;INVERSE CIRCLED SANS-SERIF DIGIT SIX;;;; 2790;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT SEVEN;No;0;ON;;;7;7;N;INVERSE CIRCLED SANS-SERIF DIGIT SEVEN;;;; 2791;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT EIGHT;No;0;ON;;;8;8;N;INVERSE CIRCLED SANS-SERIF DIGIT EIGHT;;;; 2792;DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT NINE;No;0;ON;;;9;9;N;INVERSE CIRCLED SANS-SERIF DIGIT NINE;;;; 2793;DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN;No;0;ON;;;;10;N;INVERSE CIRCLED SANS-SERIF NUMBER TEN;;;; 2794;HEAVY WIDE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WIDE-HEADED RIGHT ARROW;;;; 2798;HEAVY SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT ARROW;;;; 2799;HEAVY RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY RIGHT ARROW;;;; 279A;HEAVY NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT ARROW;;;; 279B;DRAFTING POINT RIGHTWARDS ARROW;So;0;ON;;;;;N;DRAFTING POINT RIGHT ARROW;;;; 279C;HEAVY ROUND-TIPPED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY ROUND-TIPPED RIGHT ARROW;;;; 279D;TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;TRIANGLE-HEADED RIGHT ARROW;;;; 279E;HEAVY TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TRIANGLE-HEADED RIGHT ARROW;;;; 279F;DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;DASHED TRIANGLE-HEADED RIGHT ARROW;;;; 27A0;HEAVY DASHED TRIANGLE-HEADED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY DASHED TRIANGLE-HEADED RIGHT ARROW;;;; 27A1;BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK RIGHT ARROW;;;; 27A2;THREE-D TOP-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D TOP-LIGHTED RIGHT ARROWHEAD;;;; 27A3;THREE-D BOTTOM-LIGHTED RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;THREE-D BOTTOM-LIGHTED RIGHT ARROWHEAD;;;; 27A4;BLACK RIGHTWARDS ARROWHEAD;So;0;ON;;;;;N;BLACK RIGHT ARROWHEAD;;;; 27A5;HEAVY BLACK CURVED DOWNWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED DOWN AND RIGHT ARROW;;;; 27A6;HEAVY BLACK CURVED UPWARDS AND RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK CURVED UP AND RIGHT ARROW;;;; 27A7;SQUAT BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;SQUAT BLACK RIGHT ARROW;;;; 27A8;HEAVY CONCAVE-POINTED BLACK RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY CONCAVE-POINTED BLACK RIGHT ARROW;;;; 27A9;RIGHT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;RIGHT-SHADED WHITE RIGHT ARROW;;;; 27AA;LEFT-SHADED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;LEFT-SHADED WHITE RIGHT ARROW;;;; 27AB;BACK-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;BACK-TILTED SHADOWED WHITE RIGHT ARROW;;;; 27AC;FRONT-TILTED SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;FRONT-TILTED SHADOWED WHITE RIGHT ARROW;;;; 27AD;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; 27AE;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; 27AF;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED LOWER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; 27B1;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;NOTCHED UPPER RIGHT-SHADOWED WHITE RIGHT ARROW;;;; 27B2;CIRCLED HEAVY WHITE RIGHTWARDS ARROW;So;0;ON;;;;;N;CIRCLED HEAVY WHITE RIGHT ARROW;;;; 27B3;WHITE-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;WHITE-FEATHERED RIGHT ARROW;;;; 27B4;BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED LOWER RIGHT ARROW;;;; 27B5;BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;BLACK-FEATHERED RIGHT ARROW;;;; 27B6;BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;BLACK-FEATHERED UPPER RIGHT ARROW;;;; 27B7;HEAVY BLACK-FEATHERED SOUTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED LOWER RIGHT ARROW;;;; 27B8;HEAVY BLACK-FEATHERED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED RIGHT ARROW;;;; 27B9;HEAVY BLACK-FEATHERED NORTH EAST ARROW;So;0;ON;;;;;N;HEAVY BLACK-FEATHERED UPPER RIGHT ARROW;;;; 27BA;TEARDROP-BARBED RIGHTWARDS ARROW;So;0;ON;;;;;N;TEARDROP-BARBED RIGHT ARROW;;;; 27BB;HEAVY TEARDROP-SHANKED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY TEARDROP-SHANKED RIGHT ARROW;;;; 27BC;WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;WEDGE-TAILED RIGHT ARROW;;;; 27BD;HEAVY WEDGE-TAILED RIGHTWARDS ARROW;So;0;ON;;;;;N;HEAVY WEDGE-TAILED RIGHT ARROW;;;; 27BE;OPEN-OUTLINED RIGHTWARDS ARROW;So;0;ON;;;;;N;OPEN-OUTLINED RIGHT ARROW;;;; 27C0;THREE DIMENSIONAL ANGLE;Sm;0;ON;;;;;Y;;;;; 27C1;WHITE TRIANGLE CONTAINING SMALL WHITE TRIANGLE;Sm;0;ON;;;;;N;;;;; 27C2;PERPENDICULAR;Sm;0;ON;;;;;N;;;;; 27C3;OPEN SUBSET;Sm;0;ON;;;;;Y;;;;; 27C4;OPEN SUPERSET;Sm;0;ON;;;;;Y;;;;; 27C5;LEFT S-SHAPED BAG DELIMITER;Ps;0;ON;;;;;Y;;;;; 27C6;RIGHT S-SHAPED BAG DELIMITER;Pe;0;ON;;;;;Y;;;;; 27C7;OR WITH DOT INSIDE;Sm;0;ON;;;;;N;;;;; 27C8;REVERSE SOLIDUS PRECEDING SUBSET;Sm;0;ON;;;;;N;;;;; 27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;N;;;;; 27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; 27D0;WHITE DIAMOND WITH CENTRED DOT;Sm;0;ON;;;;;N;;;;; 27D1;AND WITH DOT;Sm;0;ON;;;;;N;;;;; 27D2;ELEMENT OF OPENING UPWARDS;Sm;0;ON;;;;;N;;;;; 27D3;LOWER RIGHT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; 27D4;UPPER LEFT CORNER WITH DOT;Sm;0;ON;;;;;Y;;;;; 27D5;LEFT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; 27D6;RIGHT OUTER JOIN;Sm;0;ON;;;;;Y;;;;; 27D7;FULL OUTER JOIN;Sm;0;ON;;;;;N;;;;; 27D8;LARGE UP TACK;Sm;0;ON;;;;;N;;;;; 27D9;LARGE DOWN TACK;Sm;0;ON;;;;;N;;;;; 27DA;LEFT AND RIGHT DOUBLE TURNSTILE;Sm;0;ON;;;;;N;;;;; 27DB;LEFT AND RIGHT TACK;Sm;0;ON;;;;;N;;;;; 27DC;LEFT MULTIMAP;Sm;0;ON;;;;;Y;;;;; 27DD;LONG RIGHT TACK;Sm;0;ON;;;;;Y;;;;; 27DE;LONG LEFT TACK;Sm;0;ON;;;;;Y;;;;; 27DF;UP TACK WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; 27E0;LOZENGE DIVIDED BY HORIZONTAL RULE;Sm;0;ON;;;;;N;;;;; 27E1;WHITE CONCAVE-SIDED DIAMOND;Sm;0;ON;;;;;N;;;;; 27E2;WHITE CONCAVE-SIDED DIAMOND WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; 27E3;WHITE CONCAVE-SIDED DIAMOND WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; 27E4;WHITE SQUARE WITH LEFTWARDS TICK;Sm;0;ON;;;;;Y;;;;; 27E5;WHITE SQUARE WITH RIGHTWARDS TICK;Sm;0;ON;;;;;Y;;;;; 27E6;MATHEMATICAL LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;;;;; 27E7;MATHEMATICAL RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;;;;; 27E8;MATHEMATICAL LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; 27E9;MATHEMATICAL RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; 27EA;MATHEMATICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; 27EB;MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; 27F0;UPWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; 27F1;DOWNWARDS QUADRUPLE ARROW;Sm;0;ON;;;;;N;;;;; 27F2;ANTICLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; 27F3;CLOCKWISE GAPPED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; 27F4;RIGHT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;; 27F5;LONG LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 27F6;LONG RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 27F7;LONG LEFT RIGHT ARROW;Sm;0;ON;;;;;N;;;;; 27F8;LONG LEFTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; 27F9;LONG RIGHTWARDS DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; 27FA;LONG LEFT RIGHT DOUBLE ARROW;Sm;0;ON;;;;;N;;;;; 27FB;LONG LEFTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 27FC;LONG RIGHTWARDS ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 27FD;LONG LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 27FE;LONG RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 27FF;LONG RIGHTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;; 2800;BRAILLE PATTERN BLANK;So;0;L;;;;;N;;;;; 2801;BRAILLE PATTERN DOTS-1;So;0;L;;;;;N;;;;; 2802;BRAILLE PATTERN DOTS-2;So;0;L;;;;;N;;;;; 2803;BRAILLE PATTERN DOTS-12;So;0;L;;;;;N;;;;; 2804;BRAILLE PATTERN DOTS-3;So;0;L;;;;;N;;;;; 2805;BRAILLE PATTERN DOTS-13;So;0;L;;;;;N;;;;; 2806;BRAILLE PATTERN DOTS-23;So;0;L;;;;;N;;;;; 2807;BRAILLE PATTERN DOTS-123;So;0;L;;;;;N;;;;; 2808;BRAILLE PATTERN DOTS-4;So;0;L;;;;;N;;;;; 2809;BRAILLE PATTERN DOTS-14;So;0;L;;;;;N;;;;; 280A;BRAILLE PATTERN DOTS-24;So;0;L;;;;;N;;;;; 280B;BRAILLE PATTERN DOTS-124;So;0;L;;;;;N;;;;; 280C;BRAILLE PATTERN DOTS-34;So;0;L;;;;;N;;;;; 280D;BRAILLE PATTERN DOTS-134;So;0;L;;;;;N;;;;; 280E;BRAILLE PATTERN DOTS-234;So;0;L;;;;;N;;;;; 280F;BRAILLE PATTERN DOTS-1234;So;0;L;;;;;N;;;;; 2810;BRAILLE PATTERN DOTS-5;So;0;L;;;;;N;;;;; 2811;BRAILLE PATTERN DOTS-15;So;0;L;;;;;N;;;;; 2812;BRAILLE PATTERN DOTS-25;So;0;L;;;;;N;;;;; 2813;BRAILLE PATTERN DOTS-125;So;0;L;;;;;N;;;;; 2814;BRAILLE PATTERN DOTS-35;So;0;L;;;;;N;;;;; 2815;BRAILLE PATTERN DOTS-135;So;0;L;;;;;N;;;;; 2816;BRAILLE PATTERN DOTS-235;So;0;L;;;;;N;;;;; 2817;BRAILLE PATTERN DOTS-1235;So;0;L;;;;;N;;;;; 2818;BRAILLE PATTERN DOTS-45;So;0;L;;;;;N;;;;; 2819;BRAILLE PATTERN DOTS-145;So;0;L;;;;;N;;;;; 281A;BRAILLE PATTERN DOTS-245;So;0;L;;;;;N;;;;; 281B;BRAILLE PATTERN DOTS-1245;So;0;L;;;;;N;;;;; 281C;BRAILLE PATTERN DOTS-345;So;0;L;;;;;N;;;;; 281D;BRAILLE PATTERN DOTS-1345;So;0;L;;;;;N;;;;; 281E;BRAILLE PATTERN DOTS-2345;So;0;L;;;;;N;;;;; 281F;BRAILLE PATTERN DOTS-12345;So;0;L;;;;;N;;;;; 2820;BRAILLE PATTERN DOTS-6;So;0;L;;;;;N;;;;; 2821;BRAILLE PATTERN DOTS-16;So;0;L;;;;;N;;;;; 2822;BRAILLE PATTERN DOTS-26;So;0;L;;;;;N;;;;; 2823;BRAILLE PATTERN DOTS-126;So;0;L;;;;;N;;;;; 2824;BRAILLE PATTERN DOTS-36;So;0;L;;;;;N;;;;; 2825;BRAILLE PATTERN DOTS-136;So;0;L;;;;;N;;;;; 2826;BRAILLE PATTERN DOTS-236;So;0;L;;;;;N;;;;; 2827;BRAILLE PATTERN DOTS-1236;So;0;L;;;;;N;;;;; 2828;BRAILLE PATTERN DOTS-46;So;0;L;;;;;N;;;;; 2829;BRAILLE PATTERN DOTS-146;So;0;L;;;;;N;;;;; 282A;BRAILLE PATTERN DOTS-246;So;0;L;;;;;N;;;;; 282B;BRAILLE PATTERN DOTS-1246;So;0;L;;;;;N;;;;; 282C;BRAILLE PATTERN DOTS-346;So;0;L;;;;;N;;;;; 282D;BRAILLE PATTERN DOTS-1346;So;0;L;;;;;N;;;;; 282E;BRAILLE PATTERN DOTS-2346;So;0;L;;;;;N;;;;; 282F;BRAILLE PATTERN DOTS-12346;So;0;L;;;;;N;;;;; 2830;BRAILLE PATTERN DOTS-56;So;0;L;;;;;N;;;;; 2831;BRAILLE PATTERN DOTS-156;So;0;L;;;;;N;;;;; 2832;BRAILLE PATTERN DOTS-256;So;0;L;;;;;N;;;;; 2833;BRAILLE PATTERN DOTS-1256;So;0;L;;;;;N;;;;; 2834;BRAILLE PATTERN DOTS-356;So;0;L;;;;;N;;;;; 2835;BRAILLE PATTERN DOTS-1356;So;0;L;;;;;N;;;;; 2836;BRAILLE PATTERN DOTS-2356;So;0;L;;;;;N;;;;; 2837;BRAILLE PATTERN DOTS-12356;So;0;L;;;;;N;;;;; 2838;BRAILLE PATTERN DOTS-456;So;0;L;;;;;N;;;;; 2839;BRAILLE PATTERN DOTS-1456;So;0;L;;;;;N;;;;; 283A;BRAILLE PATTERN DOTS-2456;So;0;L;;;;;N;;;;; 283B;BRAILLE PATTERN DOTS-12456;So;0;L;;;;;N;;;;; 283C;BRAILLE PATTERN DOTS-3456;So;0;L;;;;;N;;;;; 283D;BRAILLE PATTERN DOTS-13456;So;0;L;;;;;N;;;;; 283E;BRAILLE PATTERN DOTS-23456;So;0;L;;;;;N;;;;; 283F;BRAILLE PATTERN DOTS-123456;So;0;L;;;;;N;;;;; 2840;BRAILLE PATTERN DOTS-7;So;0;L;;;;;N;;;;; 2841;BRAILLE PATTERN DOTS-17;So;0;L;;;;;N;;;;; 2842;BRAILLE PATTERN DOTS-27;So;0;L;;;;;N;;;;; 2843;BRAILLE PATTERN DOTS-127;So;0;L;;;;;N;;;;; 2844;BRAILLE PATTERN DOTS-37;So;0;L;;;;;N;;;;; 2845;BRAILLE PATTERN DOTS-137;So;0;L;;;;;N;;;;; 2846;BRAILLE PATTERN DOTS-237;So;0;L;;;;;N;;;;; 2847;BRAILLE PATTERN DOTS-1237;So;0;L;;;;;N;;;;; 2848;BRAILLE PATTERN DOTS-47;So;0;L;;;;;N;;;;; 2849;BRAILLE PATTERN DOTS-147;So;0;L;;;;;N;;;;; 284A;BRAILLE PATTERN DOTS-247;So;0;L;;;;;N;;;;; 284B;BRAILLE PATTERN DOTS-1247;So;0;L;;;;;N;;;;; 284C;BRAILLE PATTERN DOTS-347;So;0;L;;;;;N;;;;; 284D;BRAILLE PATTERN DOTS-1347;So;0;L;;;;;N;;;;; 284E;BRAILLE PATTERN DOTS-2347;So;0;L;;;;;N;;;;; 284F;BRAILLE PATTERN DOTS-12347;So;0;L;;;;;N;;;;; 2850;BRAILLE PATTERN DOTS-57;So;0;L;;;;;N;;;;; 2851;BRAILLE PATTERN DOTS-157;So;0;L;;;;;N;;;;; 2852;BRAILLE PATTERN DOTS-257;So;0;L;;;;;N;;;;; 2853;BRAILLE PATTERN DOTS-1257;So;0;L;;;;;N;;;;; 2854;BRAILLE PATTERN DOTS-357;So;0;L;;;;;N;;;;; 2855;BRAILLE PATTERN DOTS-1357;So;0;L;;;;;N;;;;; 2856;BRAILLE PATTERN DOTS-2357;So;0;L;;;;;N;;;;; 2857;BRAILLE PATTERN DOTS-12357;So;0;L;;;;;N;;;;; 2858;BRAILLE PATTERN DOTS-457;So;0;L;;;;;N;;;;; 2859;BRAILLE PATTERN DOTS-1457;So;0;L;;;;;N;;;;; 285A;BRAILLE PATTERN DOTS-2457;So;0;L;;;;;N;;;;; 285B;BRAILLE PATTERN DOTS-12457;So;0;L;;;;;N;;;;; 285C;BRAILLE PATTERN DOTS-3457;So;0;L;;;;;N;;;;; 285D;BRAILLE PATTERN DOTS-13457;So;0;L;;;;;N;;;;; 285E;BRAILLE PATTERN DOTS-23457;So;0;L;;;;;N;;;;; 285F;BRAILLE PATTERN DOTS-123457;So;0;L;;;;;N;;;;; 2860;BRAILLE PATTERN DOTS-67;So;0;L;;;;;N;;;;; 2861;BRAILLE PATTERN DOTS-167;So;0;L;;;;;N;;;;; 2862;BRAILLE PATTERN DOTS-267;So;0;L;;;;;N;;;;; 2863;BRAILLE PATTERN DOTS-1267;So;0;L;;;;;N;;;;; 2864;BRAILLE PATTERN DOTS-367;So;0;L;;;;;N;;;;; 2865;BRAILLE PATTERN DOTS-1367;So;0;L;;;;;N;;;;; 2866;BRAILLE PATTERN DOTS-2367;So;0;L;;;;;N;;;;; 2867;BRAILLE PATTERN DOTS-12367;So;0;L;;;;;N;;;;; 2868;BRAILLE PATTERN DOTS-467;So;0;L;;;;;N;;;;; 2869;BRAILLE PATTERN DOTS-1467;So;0;L;;;;;N;;;;; 286A;BRAILLE PATTERN DOTS-2467;So;0;L;;;;;N;;;;; 286B;BRAILLE PATTERN DOTS-12467;So;0;L;;;;;N;;;;; 286C;BRAILLE PATTERN DOTS-3467;So;0;L;;;;;N;;;;; 286D;BRAILLE PATTERN DOTS-13467;So;0;L;;;;;N;;;;; 286E;BRAILLE PATTERN DOTS-23467;So;0;L;;;;;N;;;;; 286F;BRAILLE PATTERN DOTS-123467;So;0;L;;;;;N;;;;; 2870;BRAILLE PATTERN DOTS-567;So;0;L;;;;;N;;;;; 2871;BRAILLE PATTERN DOTS-1567;So;0;L;;;;;N;;;;; 2872;BRAILLE PATTERN DOTS-2567;So;0;L;;;;;N;;;;; 2873;BRAILLE PATTERN DOTS-12567;So;0;L;;;;;N;;;;; 2874;BRAILLE PATTERN DOTS-3567;So;0;L;;;;;N;;;;; 2875;BRAILLE PATTERN DOTS-13567;So;0;L;;;;;N;;;;; 2876;BRAILLE PATTERN DOTS-23567;So;0;L;;;;;N;;;;; 2877;BRAILLE PATTERN DOTS-123567;So;0;L;;;;;N;;;;; 2878;BRAILLE PATTERN DOTS-4567;So;0;L;;;;;N;;;;; 2879;BRAILLE PATTERN DOTS-14567;So;0;L;;;;;N;;;;; 287A;BRAILLE PATTERN DOTS-24567;So;0;L;;;;;N;;;;; 287B;BRAILLE PATTERN DOTS-124567;So;0;L;;;;;N;;;;; 287C;BRAILLE PATTERN DOTS-34567;So;0;L;;;;;N;;;;; 287D;BRAILLE PATTERN DOTS-134567;So;0;L;;;;;N;;;;; 287E;BRAILLE PATTERN DOTS-234567;So;0;L;;;;;N;;;;; 287F;BRAILLE PATTERN DOTS-1234567;So;0;L;;;;;N;;;;; 2880;BRAILLE PATTERN DOTS-8;So;0;L;;;;;N;;;;; 2881;BRAILLE PATTERN DOTS-18;So;0;L;;;;;N;;;;; 2882;BRAILLE PATTERN DOTS-28;So;0;L;;;;;N;;;;; 2883;BRAILLE PATTERN DOTS-128;So;0;L;;;;;N;;;;; 2884;BRAILLE PATTERN DOTS-38;So;0;L;;;;;N;;;;; 2885;BRAILLE PATTERN DOTS-138;So;0;L;;;;;N;;;;; 2886;BRAILLE PATTERN DOTS-238;So;0;L;;;;;N;;;;; 2887;BRAILLE PATTERN DOTS-1238;So;0;L;;;;;N;;;;; 2888;BRAILLE PATTERN DOTS-48;So;0;L;;;;;N;;;;; 2889;BRAILLE PATTERN DOTS-148;So;0;L;;;;;N;;;;; 288A;BRAILLE PATTERN DOTS-248;So;0;L;;;;;N;;;;; 288B;BRAILLE PATTERN DOTS-1248;So;0;L;;;;;N;;;;; 288C;BRAILLE PATTERN DOTS-348;So;0;L;;;;;N;;;;; 288D;BRAILLE PATTERN DOTS-1348;So;0;L;;;;;N;;;;; 288E;BRAILLE PATTERN DOTS-2348;So;0;L;;;;;N;;;;; 288F;BRAILLE PATTERN DOTS-12348;So;0;L;;;;;N;;;;; 2890;BRAILLE PATTERN DOTS-58;So;0;L;;;;;N;;;;; 2891;BRAILLE PATTERN DOTS-158;So;0;L;;;;;N;;;;; 2892;BRAILLE PATTERN DOTS-258;So;0;L;;;;;N;;;;; 2893;BRAILLE PATTERN DOTS-1258;So;0;L;;;;;N;;;;; 2894;BRAILLE PATTERN DOTS-358;So;0;L;;;;;N;;;;; 2895;BRAILLE PATTERN DOTS-1358;So;0;L;;;;;N;;;;; 2896;BRAILLE PATTERN DOTS-2358;So;0;L;;;;;N;;;;; 2897;BRAILLE PATTERN DOTS-12358;So;0;L;;;;;N;;;;; 2898;BRAILLE PATTERN DOTS-458;So;0;L;;;;;N;;;;; 2899;BRAILLE PATTERN DOTS-1458;So;0;L;;;;;N;;;;; 289A;BRAILLE PATTERN DOTS-2458;So;0;L;;;;;N;;;;; 289B;BRAILLE PATTERN DOTS-12458;So;0;L;;;;;N;;;;; 289C;BRAILLE PATTERN DOTS-3458;So;0;L;;;;;N;;;;; 289D;BRAILLE PATTERN DOTS-13458;So;0;L;;;;;N;;;;; 289E;BRAILLE PATTERN DOTS-23458;So;0;L;;;;;N;;;;; 289F;BRAILLE PATTERN DOTS-123458;So;0;L;;;;;N;;;;; 28A0;BRAILLE PATTERN DOTS-68;So;0;L;;;;;N;;;;; 28A1;BRAILLE PATTERN DOTS-168;So;0;L;;;;;N;;;;; 28A2;BRAILLE PATTERN DOTS-268;So;0;L;;;;;N;;;;; 28A3;BRAILLE PATTERN DOTS-1268;So;0;L;;;;;N;;;;; 28A4;BRAILLE PATTERN DOTS-368;So;0;L;;;;;N;;;;; 28A5;BRAILLE PATTERN DOTS-1368;So;0;L;;;;;N;;;;; 28A6;BRAILLE PATTERN DOTS-2368;So;0;L;;;;;N;;;;; 28A7;BRAILLE PATTERN DOTS-12368;So;0;L;;;;;N;;;;; 28A8;BRAILLE PATTERN DOTS-468;So;0;L;;;;;N;;;;; 28A9;BRAILLE PATTERN DOTS-1468;So;0;L;;;;;N;;;;; 28AA;BRAILLE PATTERN DOTS-2468;So;0;L;;;;;N;;;;; 28AB;BRAILLE PATTERN DOTS-12468;So;0;L;;;;;N;;;;; 28AC;BRAILLE PATTERN DOTS-3468;So;0;L;;;;;N;;;;; 28AD;BRAILLE PATTERN DOTS-13468;So;0;L;;;;;N;;;;; 28AE;BRAILLE PATTERN DOTS-23468;So;0;L;;;;;N;;;;; 28AF;BRAILLE PATTERN DOTS-123468;So;0;L;;;;;N;;;;; 28B0;BRAILLE PATTERN DOTS-568;So;0;L;;;;;N;;;;; 28B1;BRAILLE PATTERN DOTS-1568;So;0;L;;;;;N;;;;; 28B2;BRAILLE PATTERN DOTS-2568;So;0;L;;;;;N;;;;; 28B3;BRAILLE PATTERN DOTS-12568;So;0;L;;;;;N;;;;; 28B4;BRAILLE PATTERN DOTS-3568;So;0;L;;;;;N;;;;; 28B5;BRAILLE PATTERN DOTS-13568;So;0;L;;;;;N;;;;; 28B6;BRAILLE PATTERN DOTS-23568;So;0;L;;;;;N;;;;; 28B7;BRAILLE PATTERN DOTS-123568;So;0;L;;;;;N;;;;; 28B8;BRAILLE PATTERN DOTS-4568;So;0;L;;;;;N;;;;; 28B9;BRAILLE PATTERN DOTS-14568;So;0;L;;;;;N;;;;; 28BA;BRAILLE PATTERN DOTS-24568;So;0;L;;;;;N;;;;; 28BB;BRAILLE PATTERN DOTS-124568;So;0;L;;;;;N;;;;; 28BC;BRAILLE PATTERN DOTS-34568;So;0;L;;;;;N;;;;; 28BD;BRAILLE PATTERN DOTS-134568;So;0;L;;;;;N;;;;; 28BE;BRAILLE PATTERN DOTS-234568;So;0;L;;;;;N;;;;; 28BF;BRAILLE PATTERN DOTS-1234568;So;0;L;;;;;N;;;;; 28C0;BRAILLE PATTERN DOTS-78;So;0;L;;;;;N;;;;; 28C1;BRAILLE PATTERN DOTS-178;So;0;L;;;;;N;;;;; 28C2;BRAILLE PATTERN DOTS-278;So;0;L;;;;;N;;;;; 28C3;BRAILLE PATTERN DOTS-1278;So;0;L;;;;;N;;;;; 28C4;BRAILLE PATTERN DOTS-378;So;0;L;;;;;N;;;;; 28C5;BRAILLE PATTERN DOTS-1378;So;0;L;;;;;N;;;;; 28C6;BRAILLE PATTERN DOTS-2378;So;0;L;;;;;N;;;;; 28C7;BRAILLE PATTERN DOTS-12378;So;0;L;;;;;N;;;;; 28C8;BRAILLE PATTERN DOTS-478;So;0;L;;;;;N;;;;; 28C9;BRAILLE PATTERN DOTS-1478;So;0;L;;;;;N;;;;; 28CA;BRAILLE PATTERN DOTS-2478;So;0;L;;;;;N;;;;; 28CB;BRAILLE PATTERN DOTS-12478;So;0;L;;;;;N;;;;; 28CC;BRAILLE PATTERN DOTS-3478;So;0;L;;;;;N;;;;; 28CD;BRAILLE PATTERN DOTS-13478;So;0;L;;;;;N;;;;; 28CE;BRAILLE PATTERN DOTS-23478;So;0;L;;;;;N;;;;; 28CF;BRAILLE PATTERN DOTS-123478;So;0;L;;;;;N;;;;; 28D0;BRAILLE PATTERN DOTS-578;So;0;L;;;;;N;;;;; 28D1;BRAILLE PATTERN DOTS-1578;So;0;L;;;;;N;;;;; 28D2;BRAILLE PATTERN DOTS-2578;So;0;L;;;;;N;;;;; 28D3;BRAILLE PATTERN DOTS-12578;So;0;L;;;;;N;;;;; 28D4;BRAILLE PATTERN DOTS-3578;So;0;L;;;;;N;;;;; 28D5;BRAILLE PATTERN DOTS-13578;So;0;L;;;;;N;;;;; 28D6;BRAILLE PATTERN DOTS-23578;So;0;L;;;;;N;;;;; 28D7;BRAILLE PATTERN DOTS-123578;So;0;L;;;;;N;;;;; 28D8;BRAILLE PATTERN DOTS-4578;So;0;L;;;;;N;;;;; 28D9;BRAILLE PATTERN DOTS-14578;So;0;L;;;;;N;;;;; 28DA;BRAILLE PATTERN DOTS-24578;So;0;L;;;;;N;;;;; 28DB;BRAILLE PATTERN DOTS-124578;So;0;L;;;;;N;;;;; 28DC;BRAILLE PATTERN DOTS-34578;So;0;L;;;;;N;;;;; 28DD;BRAILLE PATTERN DOTS-134578;So;0;L;;;;;N;;;;; 28DE;BRAILLE PATTERN DOTS-234578;So;0;L;;;;;N;;;;; 28DF;BRAILLE PATTERN DOTS-1234578;So;0;L;;;;;N;;;;; 28E0;BRAILLE PATTERN DOTS-678;So;0;L;;;;;N;;;;; 28E1;BRAILLE PATTERN DOTS-1678;So;0;L;;;;;N;;;;; 28E2;BRAILLE PATTERN DOTS-2678;So;0;L;;;;;N;;;;; 28E3;BRAILLE PATTERN DOTS-12678;So;0;L;;;;;N;;;;; 28E4;BRAILLE PATTERN DOTS-3678;So;0;L;;;;;N;;;;; 28E5;BRAILLE PATTERN DOTS-13678;So;0;L;;;;;N;;;;; 28E6;BRAILLE PATTERN DOTS-23678;So;0;L;;;;;N;;;;; 28E7;BRAILLE PATTERN DOTS-123678;So;0;L;;;;;N;;;;; 28E8;BRAILLE PATTERN DOTS-4678;So;0;L;;;;;N;;;;; 28E9;BRAILLE PATTERN DOTS-14678;So;0;L;;;;;N;;;;; 28EA;BRAILLE PATTERN DOTS-24678;So;0;L;;;;;N;;;;; 28EB;BRAILLE PATTERN DOTS-124678;So;0;L;;;;;N;;;;; 28EC;BRAILLE PATTERN DOTS-34678;So;0;L;;;;;N;;;;; 28ED;BRAILLE PATTERN DOTS-134678;So;0;L;;;;;N;;;;; 28EE;BRAILLE PATTERN DOTS-234678;So;0;L;;;;;N;;;;; 28EF;BRAILLE PATTERN DOTS-1234678;So;0;L;;;;;N;;;;; 28F0;BRAILLE PATTERN DOTS-5678;So;0;L;;;;;N;;;;; 28F1;BRAILLE PATTERN DOTS-15678;So;0;L;;;;;N;;;;; 28F2;BRAILLE PATTERN DOTS-25678;So;0;L;;;;;N;;;;; 28F3;BRAILLE PATTERN DOTS-125678;So;0;L;;;;;N;;;;; 28F4;BRAILLE PATTERN DOTS-35678;So;0;L;;;;;N;;;;; 28F5;BRAILLE PATTERN DOTS-135678;So;0;L;;;;;N;;;;; 28F6;BRAILLE PATTERN DOTS-235678;So;0;L;;;;;N;;;;; 28F7;BRAILLE PATTERN DOTS-1235678;So;0;L;;;;;N;;;;; 28F8;BRAILLE PATTERN DOTS-45678;So;0;L;;;;;N;;;;; 28F9;BRAILLE PATTERN DOTS-145678;So;0;L;;;;;N;;;;; 28FA;BRAILLE PATTERN DOTS-245678;So;0;L;;;;;N;;;;; 28FB;BRAILLE PATTERN DOTS-1245678;So;0;L;;;;;N;;;;; 28FC;BRAILLE PATTERN DOTS-345678;So;0;L;;;;;N;;;;; 28FD;BRAILLE PATTERN DOTS-1345678;So;0;L;;;;;N;;;;; 28FE;BRAILLE PATTERN DOTS-2345678;So;0;L;;;;;N;;;;; 28FF;BRAILLE PATTERN DOTS-12345678;So;0;L;;;;;N;;;;; 2900;RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2901;RIGHTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2902;LEFTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2903;RIGHTWARDS DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2904;LEFT RIGHT DOUBLE ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2905;RIGHTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 2906;LEFTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 2907;RIGHTWARDS DOUBLE ARROW FROM BAR;Sm;0;ON;;;;;N;;;;; 2908;DOWNWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; 2909;UPWARDS ARROW WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; 290A;UPWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; 290B;DOWNWARDS TRIPLE ARROW;Sm;0;ON;;;;;N;;;;; 290C;LEFTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; 290D;RIGHTWARDS DOUBLE DASH ARROW;Sm;0;ON;;;;;N;;;;; 290E;LEFTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; 290F;RIGHTWARDS TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; 2910;RIGHTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;; 2911;RIGHTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;; 2912;UPWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; 2913;DOWNWARDS ARROW TO BAR;Sm;0;ON;;;;;N;;;;; 2914;RIGHTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2915;RIGHTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2916;RIGHTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;; 2917;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2918;RIGHTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2919;LEFTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; 291A;RIGHTWARDS ARROW-TAIL;Sm;0;ON;;;;;N;;;;; 291B;LEFTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; 291C;RIGHTWARDS DOUBLE ARROW-TAIL;Sm;0;ON;;;;;N;;;;; 291D;LEFTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; 291E;RIGHTWARDS ARROW TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; 291F;LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; 2920;RIGHTWARDS ARROW FROM BAR TO BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; 2921;NORTH WEST AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 2922;NORTH EAST AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; 2923;NORTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; 2924;NORTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; 2925;SOUTH EAST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; 2926;SOUTH WEST ARROW WITH HOOK;Sm;0;ON;;;;;N;;;;; 2927;NORTH WEST ARROW AND NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 2928;NORTH EAST ARROW AND SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 2929;SOUTH EAST ARROW AND SOUTH WEST ARROW;Sm;0;ON;;;;;N;;;;; 292A;SOUTH WEST ARROW AND NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; 292B;RISING DIAGONAL CROSSING FALLING DIAGONAL;Sm;0;ON;;;;;N;;;;; 292C;FALLING DIAGONAL CROSSING RISING DIAGONAL;Sm;0;ON;;;;;N;;;;; 292D;SOUTH EAST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 292E;NORTH EAST ARROW CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 292F;FALLING DIAGONAL CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 2930;RISING DIAGONAL CROSSING SOUTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 2931;NORTH EAST ARROW CROSSING NORTH WEST ARROW;Sm;0;ON;;;;;N;;;;; 2932;NORTH WEST ARROW CROSSING NORTH EAST ARROW;Sm;0;ON;;;;;N;;;;; 2933;WAVE ARROW POINTING DIRECTLY RIGHT;Sm;0;ON;;;;;N;;;;; 2934;ARROW POINTING RIGHTWARDS THEN CURVING UPWARDS;Sm;0;ON;;;;;N;;;;; 2935;ARROW POINTING RIGHTWARDS THEN CURVING DOWNWARDS;Sm;0;ON;;;;;N;;;;; 2936;ARROW POINTING DOWNWARDS THEN CURVING LEFTWARDS;Sm;0;ON;;;;;N;;;;; 2937;ARROW POINTING DOWNWARDS THEN CURVING RIGHTWARDS;Sm;0;ON;;;;;N;;;;; 2938;RIGHT-SIDE ARC CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; 2939;LEFT-SIDE ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; 293A;TOP ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; 293B;BOTTOM ARC ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; 293C;TOP ARC CLOCKWISE ARROW WITH MINUS;Sm;0;ON;;;;;N;;;;; 293D;TOP ARC ANTICLOCKWISE ARROW WITH PLUS;Sm;0;ON;;;;;N;;;;; 293E;LOWER RIGHT SEMICIRCULAR CLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; 293F;LOWER LEFT SEMICIRCULAR ANTICLOCKWISE ARROW;Sm;0;ON;;;;;N;;;;; 2940;ANTICLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; 2941;CLOCKWISE CLOSED CIRCLE ARROW;Sm;0;ON;;;;;N;;;;; 2942;RIGHTWARDS ARROW ABOVE SHORT LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 2943;LEFTWARDS ARROW ABOVE SHORT RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 2944;SHORT RIGHTWARDS ARROW ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 2945;RIGHTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; 2946;LEFTWARDS ARROW WITH PLUS BELOW;Sm;0;ON;;;;;N;;;;; 2947;RIGHTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;; 2948;LEFT RIGHT ARROW THROUGH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; 2949;UPWARDS TWO-HEADED ARROW FROM SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; 294A;LEFT BARB UP RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; 294B;LEFT BARB DOWN RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; 294C;UP BARB RIGHT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; 294D;UP BARB LEFT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; 294E;LEFT BARB UP RIGHT BARB UP HARPOON;Sm;0;ON;;;;;N;;;;; 294F;UP BARB RIGHT DOWN BARB RIGHT HARPOON;Sm;0;ON;;;;;N;;;;; 2950;LEFT BARB DOWN RIGHT BARB DOWN HARPOON;Sm;0;ON;;;;;N;;;;; 2951;UP BARB LEFT DOWN BARB LEFT HARPOON;Sm;0;ON;;;;;N;;;;; 2952;LEFTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; 2953;RIGHTWARDS HARPOON WITH BARB UP TO BAR;Sm;0;ON;;;;;N;;;;; 2954;UPWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; 2955;DOWNWARDS HARPOON WITH BARB RIGHT TO BAR;Sm;0;ON;;;;;N;;;;; 2956;LEFTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; 2957;RIGHTWARDS HARPOON WITH BARB DOWN TO BAR;Sm;0;ON;;;;;N;;;;; 2958;UPWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; 2959;DOWNWARDS HARPOON WITH BARB LEFT TO BAR;Sm;0;ON;;;;;N;;;;; 295A;LEFTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; 295B;RIGHTWARDS HARPOON WITH BARB UP FROM BAR;Sm;0;ON;;;;;N;;;;; 295C;UPWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; 295D;DOWNWARDS HARPOON WITH BARB RIGHT FROM BAR;Sm;0;ON;;;;;N;;;;; 295E;LEFTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; 295F;RIGHTWARDS HARPOON WITH BARB DOWN FROM BAR;Sm;0;ON;;;;;N;;;;; 2960;UPWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; 2961;DOWNWARDS HARPOON WITH BARB LEFT FROM BAR;Sm;0;ON;;;;;N;;;;; 2962;LEFTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; 2963;UPWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; 2964;RIGHTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; 2965;DOWNWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; 2966;LEFTWARDS HARPOON WITH BARB UP ABOVE RIGHTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; 2967;LEFTWARDS HARPOON WITH BARB DOWN ABOVE RIGHTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; 2968;RIGHTWARDS HARPOON WITH BARB UP ABOVE LEFTWARDS HARPOON WITH BARB UP;Sm;0;ON;;;;;N;;;;; 2969;RIGHTWARDS HARPOON WITH BARB DOWN ABOVE LEFTWARDS HARPOON WITH BARB DOWN;Sm;0;ON;;;;;N;;;;; 296A;LEFTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; 296B;LEFTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; 296C;RIGHTWARDS HARPOON WITH BARB UP ABOVE LONG DASH;Sm;0;ON;;;;;N;;;;; 296D;RIGHTWARDS HARPOON WITH BARB DOWN BELOW LONG DASH;Sm;0;ON;;;;;N;;;;; 296E;UPWARDS HARPOON WITH BARB LEFT BESIDE DOWNWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; 296F;DOWNWARDS HARPOON WITH BARB LEFT BESIDE UPWARDS HARPOON WITH BARB RIGHT;Sm;0;ON;;;;;N;;;;; 2970;RIGHT DOUBLE ARROW WITH ROUNDED HEAD;Sm;0;ON;;;;;N;;;;; 2971;EQUALS SIGN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 2972;TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 2973;LEFTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; 2974;RIGHTWARDS ARROW ABOVE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;; 2975;RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;; 2976;LESS-THAN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 2977;LEFTWARDS ARROW THROUGH LESS-THAN;Sm;0;ON;;;;;N;;;;; 2978;GREATER-THAN ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 2979;SUBSET ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 297A;LEFTWARDS ARROW THROUGH SUBSET;Sm;0;ON;;;;;N;;;;; 297B;SUPERSET ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;; 297C;LEFT FISH TAIL;Sm;0;ON;;;;;N;;;;; 297D;RIGHT FISH TAIL;Sm;0;ON;;;;;N;;;;; 297E;UP FISH TAIL;Sm;0;ON;;;;;N;;;;; 297F;DOWN FISH TAIL;Sm;0;ON;;;;;N;;;;; 2980;TRIPLE VERTICAL BAR DELIMITER;Sm;0;ON;;;;;N;;;;; 2981;Z NOTATION SPOT;Sm;0;ON;;;;;N;;;;; 2982;Z NOTATION TYPE COLON;Sm;0;ON;;;;;N;;;;; 2983;LEFT WHITE CURLY BRACKET;Ps;0;ON;;;;;Y;;;;; 2984;RIGHT WHITE CURLY BRACKET;Pe;0;ON;;;;;Y;;;;; 2985;LEFT WHITE PARENTHESIS;Ps;0;ON;;;;;Y;;;;; 2986;RIGHT WHITE PARENTHESIS;Pe;0;ON;;;;;Y;;;;; 2987;Z NOTATION LEFT IMAGE BRACKET;Ps;0;ON;;;;;Y;;;;; 2988;Z NOTATION RIGHT IMAGE BRACKET;Pe;0;ON;;;;;Y;;;;; 2989;Z NOTATION LEFT BINDING BRACKET;Ps;0;ON;;;;;Y;;;;; 298A;Z NOTATION RIGHT BINDING BRACKET;Pe;0;ON;;;;;Y;;;;; 298B;LEFT SQUARE BRACKET WITH UNDERBAR;Ps;0;ON;;;;;Y;;;;; 298C;RIGHT SQUARE BRACKET WITH UNDERBAR;Pe;0;ON;;;;;Y;;;;; 298D;LEFT SQUARE BRACKET WITH TICK IN TOP CORNER;Ps;0;ON;;;;;Y;;;;; 298E;RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Pe;0;ON;;;;;Y;;;;; 298F;LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER;Ps;0;ON;;;;;Y;;;;; 2990;RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER;Pe;0;ON;;;;;Y;;;;; 2991;LEFT ANGLE BRACKET WITH DOT;Ps;0;ON;;;;;Y;;;;; 2992;RIGHT ANGLE BRACKET WITH DOT;Pe;0;ON;;;;;Y;;;;; 2993;LEFT ARC LESS-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; 2994;RIGHT ARC GREATER-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; 2995;DOUBLE LEFT ARC GREATER-THAN BRACKET;Ps;0;ON;;;;;Y;;;;; 2996;DOUBLE RIGHT ARC LESS-THAN BRACKET;Pe;0;ON;;;;;Y;;;;; 2997;LEFT BLACK TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;; 2998;RIGHT BLACK TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;; 2999;DOTTED FENCE;Sm;0;ON;;;;;N;;;;; 299A;VERTICAL ZIGZAG LINE;Sm;0;ON;;;;;N;;;;; 299B;MEASURED ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; 299C;RIGHT ANGLE VARIANT WITH SQUARE;Sm;0;ON;;;;;Y;;;;; 299D;MEASURED RIGHT ANGLE WITH DOT;Sm;0;ON;;;;;Y;;;;; 299E;ANGLE WITH S INSIDE;Sm;0;ON;;;;;Y;;;;; 299F;ACUTE ANGLE;Sm;0;ON;;;;;Y;;;;; 29A0;SPHERICAL ANGLE OPENING LEFT;Sm;0;ON;;;;;Y;;;;; 29A1;SPHERICAL ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; 29A2;TURNED ANGLE;Sm;0;ON;;;;;Y;;;;; 29A3;REVERSED ANGLE;Sm;0;ON;;;;;Y;;;;; 29A4;ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; 29A5;REVERSED ANGLE WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; 29A6;OBLIQUE ANGLE OPENING UP;Sm;0;ON;;;;;Y;;;;; 29A7;OBLIQUE ANGLE OPENING DOWN;Sm;0;ON;;;;;Y;;;;; 29A8;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND RIGHT;Sm;0;ON;;;;;Y;;;;; 29A9;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING UP AND LEFT;Sm;0;ON;;;;;Y;;;;; 29AA;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND RIGHT;Sm;0;ON;;;;;Y;;;;; 29AB;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING DOWN AND LEFT;Sm;0;ON;;;;;Y;;;;; 29AC;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND UP;Sm;0;ON;;;;;Y;;;;; 29AD;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND UP;Sm;0;ON;;;;;Y;;;;; 29AE;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING RIGHT AND DOWN;Sm;0;ON;;;;;Y;;;;; 29AF;MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW POINTING LEFT AND DOWN;Sm;0;ON;;;;;Y;;;;; 29B0;REVERSED EMPTY SET;Sm;0;ON;;;;;N;;;;; 29B1;EMPTY SET WITH OVERBAR;Sm;0;ON;;;;;N;;;;; 29B2;EMPTY SET WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; 29B3;EMPTY SET WITH RIGHT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; 29B4;EMPTY SET WITH LEFT ARROW ABOVE;Sm;0;ON;;;;;N;;;;; 29B5;CIRCLE WITH HORIZONTAL BAR;Sm;0;ON;;;;;N;;;;; 29B6;CIRCLED VERTICAL BAR;Sm;0;ON;;;;;N;;;;; 29B7;CIRCLED PARALLEL;Sm;0;ON;;;;;N;;;;; 29B8;CIRCLED REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; 29B9;CIRCLED PERPENDICULAR;Sm;0;ON;;;;;N;;;;; 29BA;CIRCLE DIVIDED BY HORIZONTAL BAR AND TOP HALF DIVIDED BY VERTICAL BAR;Sm;0;ON;;;;;N;;;;; 29BB;CIRCLE WITH SUPERIMPOSED X;Sm;0;ON;;;;;N;;;;; 29BC;CIRCLED ANTICLOCKWISE-ROTATED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; 29BD;UP ARROW THROUGH CIRCLE;Sm;0;ON;;;;;N;;;;; 29BE;CIRCLED WHITE BULLET;Sm;0;ON;;;;;N;;;;; 29BF;CIRCLED BULLET;Sm;0;ON;;;;;N;;;;; 29C0;CIRCLED LESS-THAN;Sm;0;ON;;;;;Y;;;;; 29C1;CIRCLED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 29C2;CIRCLE WITH SMALL CIRCLE TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; 29C3;CIRCLE WITH TWO HORIZONTAL STROKES TO THE RIGHT;Sm;0;ON;;;;;Y;;;;; 29C4;SQUARED RISING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; 29C5;SQUARED FALLING DIAGONAL SLASH;Sm;0;ON;;;;;Y;;;;; 29C6;SQUARED ASTERISK;Sm;0;ON;;;;;N;;;;; 29C7;SQUARED SMALL CIRCLE;Sm;0;ON;;;;;N;;;;; 29C8;SQUARED SQUARE;Sm;0;ON;;;;;N;;;;; 29C9;TWO JOINED SQUARES;Sm;0;ON;;;;;Y;;;;; 29CA;TRIANGLE WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; 29CB;TRIANGLE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; 29CC;S IN TRIANGLE;Sm;0;ON;;;;;N;;;;; 29CD;TRIANGLE WITH SERIFS AT BOTTOM;Sm;0;ON;;;;;N;;;;; 29CE;RIGHT TRIANGLE ABOVE LEFT TRIANGLE;Sm;0;ON;;;;;Y;;;;; 29CF;LEFT TRIANGLE BESIDE VERTICAL BAR;Sm;0;ON;;;;;Y;;;;; 29D0;VERTICAL BAR BESIDE RIGHT TRIANGLE;Sm;0;ON;;;;;Y;;;;; 29D1;BOWTIE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; 29D2;BOWTIE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; 29D3;BLACK BOWTIE;Sm;0;ON;;;;;N;;;;; 29D4;TIMES WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; 29D5;TIMES WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; 29D6;WHITE HOURGLASS;Sm;0;ON;;;;;N;;;;; 29D7;BLACK HOURGLASS;Sm;0;ON;;;;;N;;;;; 29D8;LEFT WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; 29D9;RIGHT WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; 29DA;LEFT DOUBLE WIGGLY FENCE;Ps;0;ON;;;;;Y;;;;; 29DB;RIGHT DOUBLE WIGGLY FENCE;Pe;0;ON;;;;;Y;;;;; 29DC;INCOMPLETE INFINITY;Sm;0;ON;;;;;Y;;;;; 29DD;TIE OVER INFINITY;Sm;0;ON;;;;;N;;;;; 29DE;INFINITY NEGATED WITH VERTICAL BAR;Sm;0;ON;;;;;N;;;;; 29DF;DOUBLE-ENDED MULTIMAP;Sm;0;ON;;;;;N;;;;; 29E0;SQUARE WITH CONTOURED OUTLINE;Sm;0;ON;;;;;N;;;;; 29E1;INCREASES AS;Sm;0;ON;;;;;Y;;;;; 29E2;SHUFFLE PRODUCT;Sm;0;ON;;;;;N;;;;; 29E3;EQUALS SIGN AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; 29E4;EQUALS SIGN AND SLANTED PARALLEL WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; 29E5;IDENTICAL TO AND SLANTED PARALLEL;Sm;0;ON;;;;;Y;;;;; 29E6;GLEICH STARK;Sm;0;ON;;;;;N;;;;; 29E7;THERMODYNAMIC;Sm;0;ON;;;;;N;;;;; 29E8;DOWN-POINTING TRIANGLE WITH LEFT HALF BLACK;Sm;0;ON;;;;;Y;;;;; 29E9;DOWN-POINTING TRIANGLE WITH RIGHT HALF BLACK;Sm;0;ON;;;;;Y;;;;; 29EA;BLACK DIAMOND WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; 29EB;BLACK LOZENGE;Sm;0;ON;;;;;N;;;;; 29EC;WHITE CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; 29ED;BLACK CIRCLE WITH DOWN ARROW;Sm;0;ON;;;;;N;;;;; 29EE;ERROR-BARRED WHITE SQUARE;Sm;0;ON;;;;;N;;;;; 29EF;ERROR-BARRED BLACK SQUARE;Sm;0;ON;;;;;N;;;;; 29F0;ERROR-BARRED WHITE DIAMOND;Sm;0;ON;;;;;N;;;;; 29F1;ERROR-BARRED BLACK DIAMOND;Sm;0;ON;;;;;N;;;;; 29F2;ERROR-BARRED WHITE CIRCLE;Sm;0;ON;;;;;N;;;;; 29F3;ERROR-BARRED BLACK CIRCLE;Sm;0;ON;;;;;N;;;;; 29F4;RULE-DELAYED;Sm;0;ON;;;;;Y;;;;; 29F5;REVERSE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; 29F6;SOLIDUS WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; 29F7;REVERSE SOLIDUS WITH HORIZONTAL STROKE;Sm;0;ON;;;;;Y;;;;; 29F8;BIG SOLIDUS;Sm;0;ON;;;;;Y;;;;; 29F9;BIG REVERSE SOLIDUS;Sm;0;ON;;;;;Y;;;;; 29FA;DOUBLE PLUS;Sm;0;ON;;;;;N;;;;; 29FB;TRIPLE PLUS;Sm;0;ON;;;;;N;;;;; 29FC;LEFT-POINTING CURVED ANGLE BRACKET;Ps;0;ON;;;;;Y;;;;; 29FD;RIGHT-POINTING CURVED ANGLE BRACKET;Pe;0;ON;;;;;Y;;;;; 29FE;TINY;Sm;0;ON;;;;;N;;;;; 29FF;MINY;Sm;0;ON;;;;;N;;;;; 2A00;N-ARY CIRCLED DOT OPERATOR;Sm;0;ON;;;;;N;;;;; 2A01;N-ARY CIRCLED PLUS OPERATOR;Sm;0;ON;;;;;N;;;;; 2A02;N-ARY CIRCLED TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; 2A03;N-ARY UNION OPERATOR WITH DOT;Sm;0;ON;;;;;N;;;;; 2A04;N-ARY UNION OPERATOR WITH PLUS;Sm;0;ON;;;;;N;;;;; 2A05;N-ARY SQUARE INTERSECTION OPERATOR;Sm;0;ON;;;;;N;;;;; 2A06;N-ARY SQUARE UNION OPERATOR;Sm;0;ON;;;;;N;;;;; 2A07;TWO LOGICAL AND OPERATOR;Sm;0;ON;;;;;N;;;;; 2A08;TWO LOGICAL OR OPERATOR;Sm;0;ON;;;;;N;;;;; 2A09;N-ARY TIMES OPERATOR;Sm;0;ON;;;;;N;;;;; 2A0A;MODULO TWO SUM;Sm;0;ON;;;;;Y;;;;; 2A0B;SUMMATION WITH INTEGRAL;Sm;0;ON;;;;;Y;;;;; 2A0C;QUADRUPLE INTEGRAL OPERATOR;Sm;0;ON; 222B 222B 222B 222B;;;;Y;;;;; 2A0D;FINITE PART INTEGRAL;Sm;0;ON;;;;;Y;;;;; 2A0E;INTEGRAL WITH DOUBLE STROKE;Sm;0;ON;;;;;Y;;;;; 2A0F;INTEGRAL AVERAGE WITH SLASH;Sm;0;ON;;;;;Y;;;;; 2A10;CIRCULATION FUNCTION;Sm;0;ON;;;;;Y;;;;; 2A11;ANTICLOCKWISE INTEGRATION;Sm;0;ON;;;;;Y;;;;; 2A12;LINE INTEGRATION WITH RECTANGULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; 2A13;LINE INTEGRATION WITH SEMICIRCULAR PATH AROUND POLE;Sm;0;ON;;;;;Y;;;;; 2A14;LINE INTEGRATION NOT INCLUDING THE POLE;Sm;0;ON;;;;;Y;;;;; 2A15;INTEGRAL AROUND A POINT OPERATOR;Sm;0;ON;;;;;Y;;;;; 2A16;QUATERNION INTEGRAL OPERATOR;Sm;0;ON;;;;;Y;;;;; 2A17;INTEGRAL WITH LEFTWARDS ARROW WITH HOOK;Sm;0;ON;;;;;Y;;;;; 2A18;INTEGRAL WITH TIMES SIGN;Sm;0;ON;;;;;Y;;;;; 2A19;INTEGRAL WITH INTERSECTION;Sm;0;ON;;;;;Y;;;;; 2A1A;INTEGRAL WITH UNION;Sm;0;ON;;;;;Y;;;;; 2A1B;INTEGRAL WITH OVERBAR;Sm;0;ON;;;;;Y;;;;; 2A1C;INTEGRAL WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; 2A1D;JOIN;Sm;0;ON;;;;;N;;;;; 2A1E;LARGE LEFT TRIANGLE OPERATOR;Sm;0;ON;;;;;Y;;;;; 2A1F;Z NOTATION SCHEMA COMPOSITION;Sm;0;ON;;;;;Y;;;;; 2A20;Z NOTATION SCHEMA PIPING;Sm;0;ON;;;;;Y;;;;; 2A21;Z NOTATION SCHEMA PROJECTION;Sm;0;ON;;;;;Y;;;;; 2A22;PLUS SIGN WITH SMALL CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; 2A23;PLUS SIGN WITH CIRCUMFLEX ACCENT ABOVE;Sm;0;ON;;;;;N;;;;; 2A24;PLUS SIGN WITH TILDE ABOVE;Sm;0;ON;;;;;Y;;;;; 2A25;PLUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; 2A26;PLUS SIGN WITH TILDE BELOW;Sm;0;ON;;;;;Y;;;;; 2A27;PLUS SIGN WITH SUBSCRIPT TWO;Sm;0;ON;;;;;N;;;;; 2A28;PLUS SIGN WITH BLACK TRIANGLE;Sm;0;ON;;;;;N;;;;; 2A29;MINUS SIGN WITH COMMA ABOVE;Sm;0;ON;;;;;Y;;;;; 2A2A;MINUS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; 2A2B;MINUS SIGN WITH FALLING DOTS;Sm;0;ON;;;;;Y;;;;; 2A2C;MINUS SIGN WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; 2A2D;PLUS SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; 2A2E;PLUS SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; 2A2F;VECTOR OR CROSS PRODUCT;Sm;0;ON;;;;;N;;;;; 2A30;MULTIPLICATION SIGN WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; 2A31;MULTIPLICATION SIGN WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; 2A32;SEMIDIRECT PRODUCT WITH BOTTOM CLOSED;Sm;0;ON;;;;;N;;;;; 2A33;SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; 2A34;MULTIPLICATION SIGN IN LEFT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; 2A35;MULTIPLICATION SIGN IN RIGHT HALF CIRCLE;Sm;0;ON;;;;;Y;;;;; 2A36;CIRCLED MULTIPLICATION SIGN WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;N;;;;; 2A37;MULTIPLICATION SIGN IN DOUBLE CIRCLE;Sm;0;ON;;;;;N;;;;; 2A38;CIRCLED DIVISION SIGN;Sm;0;ON;;;;;N;;;;; 2A39;PLUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; 2A3A;MINUS SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; 2A3B;MULTIPLICATION SIGN IN TRIANGLE;Sm;0;ON;;;;;N;;;;; 2A3C;INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; 2A3D;RIGHTHAND INTERIOR PRODUCT;Sm;0;ON;;;;;Y;;;;; 2A3E;Z NOTATION RELATIONAL COMPOSITION;Sm;0;ON;;;;;Y;;;;; 2A3F;AMALGAMATION OR COPRODUCT;Sm;0;ON;;;;;N;;;;; 2A40;INTERSECTION WITH DOT;Sm;0;ON;;;;;N;;;;; 2A41;UNION WITH MINUS SIGN;Sm;0;ON;;;;;N;;;;; 2A42;UNION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; 2A43;INTERSECTION WITH OVERBAR;Sm;0;ON;;;;;N;;;;; 2A44;INTERSECTION WITH LOGICAL AND;Sm;0;ON;;;;;N;;;;; 2A45;UNION WITH LOGICAL OR;Sm;0;ON;;;;;N;;;;; 2A46;UNION ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; 2A47;INTERSECTION ABOVE UNION;Sm;0;ON;;;;;N;;;;; 2A48;UNION ABOVE BAR ABOVE INTERSECTION;Sm;0;ON;;;;;N;;;;; 2A49;INTERSECTION ABOVE BAR ABOVE UNION;Sm;0;ON;;;;;N;;;;; 2A4A;UNION BESIDE AND JOINED WITH UNION;Sm;0;ON;;;;;N;;;;; 2A4B;INTERSECTION BESIDE AND JOINED WITH INTERSECTION;Sm;0;ON;;;;;N;;;;; 2A4C;CLOSED UNION WITH SERIFS;Sm;0;ON;;;;;N;;;;; 2A4D;CLOSED INTERSECTION WITH SERIFS;Sm;0;ON;;;;;N;;;;; 2A4E;DOUBLE SQUARE INTERSECTION;Sm;0;ON;;;;;N;;;;; 2A4F;DOUBLE SQUARE UNION;Sm;0;ON;;;;;N;;;;; 2A50;CLOSED UNION WITH SERIFS AND SMASH PRODUCT;Sm;0;ON;;;;;N;;;;; 2A51;LOGICAL AND WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; 2A52;LOGICAL OR WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; 2A53;DOUBLE LOGICAL AND;Sm;0;ON;;;;;N;;;;; 2A54;DOUBLE LOGICAL OR;Sm;0;ON;;;;;N;;;;; 2A55;TWO INTERSECTING LOGICAL AND;Sm;0;ON;;;;;N;;;;; 2A56;TWO INTERSECTING LOGICAL OR;Sm;0;ON;;;;;N;;;;; 2A57;SLOPING LARGE OR;Sm;0;ON;;;;;Y;;;;; 2A58;SLOPING LARGE AND;Sm;0;ON;;;;;Y;;;;; 2A59;LOGICAL OR OVERLAPPING LOGICAL AND;Sm;0;ON;;;;;N;;;;; 2A5A;LOGICAL AND WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; 2A5B;LOGICAL OR WITH MIDDLE STEM;Sm;0;ON;;;;;N;;;;; 2A5C;LOGICAL AND WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; 2A5D;LOGICAL OR WITH HORIZONTAL DASH;Sm;0;ON;;;;;N;;;;; 2A5E;LOGICAL AND WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; 2A5F;LOGICAL AND WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; 2A60;LOGICAL AND WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; 2A61;SMALL VEE WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; 2A62;LOGICAL OR WITH DOUBLE OVERBAR;Sm;0;ON;;;;;N;;;;; 2A63;LOGICAL OR WITH DOUBLE UNDERBAR;Sm;0;ON;;;;;N;;;;; 2A64;Z NOTATION DOMAIN ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; 2A65;Z NOTATION RANGE ANTIRESTRICTION;Sm;0;ON;;;;;Y;;;;; 2A66;EQUALS SIGN WITH DOT BELOW;Sm;0;ON;;;;;N;;;;; 2A67;IDENTICAL WITH DOT ABOVE;Sm;0;ON;;;;;N;;;;; 2A68;TRIPLE HORIZONTAL BAR WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2A69;TRIPLE HORIZONTAL BAR WITH TRIPLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;; 2A6A;TILDE OPERATOR WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; 2A6B;TILDE OPERATOR WITH RISING DOTS;Sm;0;ON;;;;;Y;;;;; 2A6C;SIMILAR MINUS SIMILAR;Sm;0;ON;;;;;Y;;;;; 2A6D;CONGRUENT WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; 2A6E;EQUALS WITH ASTERISK;Sm;0;ON;;;;;N;;;;; 2A6F;ALMOST EQUAL TO WITH CIRCUMFLEX ACCENT;Sm;0;ON;;;;;Y;;;;; 2A70;APPROXIMATELY EQUAL OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2A71;EQUALS SIGN ABOVE PLUS SIGN;Sm;0;ON;;;;;N;;;;; 2A72;PLUS SIGN ABOVE EQUALS SIGN;Sm;0;ON;;;;;N;;;;; 2A73;EQUALS SIGN ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; 2A74;DOUBLE COLON EQUAL;Sm;0;ON; 003A 003A 003D;;;;Y;;;;; 2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D;;;;N;;;;; 2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON; 003D 003D 003D;;;;N;;;;; 2A77;EQUALS SIGN WITH TWO DOTS ABOVE AND TWO DOTS BELOW;Sm;0;ON;;;;;N;;;;; 2A78;EQUIVALENT WITH FOUR DOTS ABOVE;Sm;0;ON;;;;;N;;;;; 2A79;LESS-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; 2A7A;GREATER-THAN WITH CIRCLE INSIDE;Sm;0;ON;;;;;Y;;;;; 2A7B;LESS-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; 2A7C;GREATER-THAN WITH QUESTION MARK ABOVE;Sm;0;ON;;;;;Y;;;;; 2A7D;LESS-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2A7E;GREATER-THAN OR SLANTED EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2A7F;LESS-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; 2A80;GREATER-THAN OR SLANTED EQUAL TO WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; 2A81;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; 2A82;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; 2A83;LESS-THAN OR SLANTED EQUAL TO WITH DOT ABOVE RIGHT;Sm;0;ON;;;;;Y;;;;; 2A84;GREATER-THAN OR SLANTED EQUAL TO WITH DOT ABOVE LEFT;Sm;0;ON;;;;;Y;;;;; 2A85;LESS-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; 2A86;GREATER-THAN OR APPROXIMATE;Sm;0;ON;;;;;Y;;;;; 2A87;LESS-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2A88;GREATER-THAN AND SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2A89;LESS-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; 2A8A;GREATER-THAN AND NOT APPROXIMATE;Sm;0;ON;;;;;Y;;;;; 2A8B;LESS-THAN ABOVE DOUBLE-LINE EQUAL ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2A8C;GREATER-THAN ABOVE DOUBLE-LINE EQUAL ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2A8D;LESS-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; 2A8E;GREATER-THAN ABOVE SIMILAR OR EQUAL;Sm;0;ON;;;;;Y;;;;; 2A8F;LESS-THAN ABOVE SIMILAR ABOVE GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2A90;GREATER-THAN ABOVE SIMILAR ABOVE LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2A91;LESS-THAN ABOVE GREATER-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; 2A92;GREATER-THAN ABOVE LESS-THAN ABOVE DOUBLE-LINE EQUAL;Sm;0;ON;;;;;Y;;;;; 2A93;LESS-THAN ABOVE SLANTED EQUAL ABOVE GREATER-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; 2A94;GREATER-THAN ABOVE SLANTED EQUAL ABOVE LESS-THAN ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; 2A95;SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2A96;SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2A97;SLANTED EQUAL TO OR LESS-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; 2A98;SLANTED EQUAL TO OR GREATER-THAN WITH DOT INSIDE;Sm;0;ON;;;;;Y;;;;; 2A99;DOUBLE-LINE EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2A9A;DOUBLE-LINE EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2A9B;DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2A9C;DOUBLE-LINE SLANTED EQUAL TO OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2A9D;SIMILAR OR LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2A9E;SIMILAR OR GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2A9F;SIMILAR ABOVE LESS-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AA0;SIMILAR ABOVE GREATER-THAN ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AA1;DOUBLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2AA2;DOUBLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2AA3;DOUBLE NESTED LESS-THAN WITH UNDERBAR;Sm;0;ON;;;;;Y;;;;; 2AA4;GREATER-THAN OVERLAPPING LESS-THAN;Sm;0;ON;;;;;N;;;;; 2AA5;GREATER-THAN BESIDE LESS-THAN;Sm;0;ON;;;;;N;;;;; 2AA6;LESS-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; 2AA7;GREATER-THAN CLOSED BY CURVE;Sm;0;ON;;;;;Y;;;;; 2AA8;LESS-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; 2AA9;GREATER-THAN CLOSED BY CURVE ABOVE SLANTED EQUAL;Sm;0;ON;;;;;Y;;;;; 2AAA;SMALLER THAN;Sm;0;ON;;;;;Y;;;;; 2AAB;LARGER THAN;Sm;0;ON;;;;;Y;;;;; 2AAC;SMALLER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AAD;LARGER THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AAE;EQUALS SIGN WITH BUMPY ABOVE;Sm;0;ON;;;;;N;;;;; 2AAF;PRECEDES ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AB0;SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AB1;PRECEDES ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AB2;SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AB3;PRECEDES ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AB4;SUCCEEDS ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AB5;PRECEDES ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AB6;SUCCEEDS ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AB7;PRECEDES ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AB8;SUCCEEDS ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AB9;PRECEDES ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2ABA;SUCCEEDS ABOVE NOT ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2ABB;DOUBLE PRECEDES;Sm;0;ON;;;;;Y;;;;; 2ABC;DOUBLE SUCCEEDS;Sm;0;ON;;;;;Y;;;;; 2ABD;SUBSET WITH DOT;Sm;0;ON;;;;;Y;;;;; 2ABE;SUPERSET WITH DOT;Sm;0;ON;;;;;Y;;;;; 2ABF;SUBSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; 2AC0;SUPERSET WITH PLUS SIGN BELOW;Sm;0;ON;;;;;Y;;;;; 2AC1;SUBSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; 2AC2;SUPERSET WITH MULTIPLICATION SIGN BELOW;Sm;0;ON;;;;;Y;;;;; 2AC3;SUBSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; 2AC4;SUPERSET OF OR EQUAL TO WITH DOT ABOVE;Sm;0;ON;;;;;Y;;;;; 2AC5;SUBSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AC6;SUPERSET OF ABOVE EQUALS SIGN;Sm;0;ON;;;;;Y;;;;; 2AC7;SUBSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; 2AC8;SUPERSET OF ABOVE TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; 2AC9;SUBSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2ACA;SUPERSET OF ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2ACB;SUBSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2ACC;SUPERSET OF ABOVE NOT EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2ACD;SQUARE LEFT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; 2ACE;SQUARE RIGHT OPEN BOX OPERATOR;Sm;0;ON;;;;;Y;;;;; 2ACF;CLOSED SUBSET;Sm;0;ON;;;;;Y;;;;; 2AD0;CLOSED SUPERSET;Sm;0;ON;;;;;Y;;;;; 2AD1;CLOSED SUBSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AD2;CLOSED SUPERSET OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AD3;SUBSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; 2AD4;SUPERSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; 2AD5;SUBSET ABOVE SUBSET;Sm;0;ON;;;;;Y;;;;; 2AD6;SUPERSET ABOVE SUPERSET;Sm;0;ON;;;;;Y;;;;; 2AD7;SUPERSET BESIDE SUBSET;Sm;0;ON;;;;;N;;;;; 2AD8;SUPERSET BESIDE AND JOINED BY DASH WITH SUBSET;Sm;0;ON;;;;;N;;;;; 2AD9;ELEMENT OF OPENING DOWNWARDS;Sm;0;ON;;;;;N;;;;; 2ADA;PITCHFORK WITH TEE TOP;Sm;0;ON;;;;;N;;;;; 2ADB;TRANSVERSAL INTERSECTION;Sm;0;ON;;;;;N;;;;; 2ADC;FORKING;Sm;0;ON;2ADD 0338;;;;Y;;not independent;;; 2ADD;NONFORKING;Sm;0;ON;;;;;N;;independent;;; 2ADE;SHORT LEFT TACK;Sm;0;ON;;;;;Y;;;;; 2ADF;SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; 2AE0;SHORT UP TACK;Sm;0;ON;;;;;N;;;;; 2AE1;PERPENDICULAR WITH S;Sm;0;ON;;;;;N;;;;; 2AE2;VERTICAL BAR TRIPLE RIGHT TURNSTILE;Sm;0;ON;;;;;Y;;;;; 2AE3;DOUBLE VERTICAL BAR LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; 2AE4;VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; 2AE5;DOUBLE VERTICAL BAR DOUBLE LEFT TURNSTILE;Sm;0;ON;;;;;Y;;;;; 2AE6;LONG DASH FROM LEFT MEMBER OF DOUBLE VERTICAL;Sm;0;ON;;;;;Y;;;;; 2AE7;SHORT DOWN TACK WITH OVERBAR;Sm;0;ON;;;;;N;;;;; 2AE8;SHORT UP TACK WITH UNDERBAR;Sm;0;ON;;;;;N;;;;; 2AE9;SHORT UP TACK ABOVE SHORT DOWN TACK;Sm;0;ON;;;;;N;;;;; 2AEA;DOUBLE DOWN TACK;Sm;0;ON;;;;;N;;;;; 2AEB;DOUBLE UP TACK;Sm;0;ON;;;;;N;;;;; 2AEC;DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; 2AED;REVERSED DOUBLE STROKE NOT SIGN;Sm;0;ON;;;;;Y;;;;; 2AEE;DOES NOT DIVIDE WITH REVERSED NEGATION SLASH;Sm;0;ON;;;;;Y;;;;; 2AEF;VERTICAL LINE WITH CIRCLE ABOVE;Sm;0;ON;;;;;N;;;;; 2AF0;VERTICAL LINE WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; 2AF1;DOWN TACK WITH CIRCLE BELOW;Sm;0;ON;;;;;N;;;;; 2AF2;PARALLEL WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; 2AF3;PARALLEL WITH TILDE OPERATOR;Sm;0;ON;;;;;Y;;;;; 2AF4;TRIPLE VERTICAL BAR BINARY RELATION;Sm;0;ON;;;;;N;;;;; 2AF5;TRIPLE VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;; 2AF6;TRIPLE COLON OPERATOR;Sm;0;ON;;;;;N;;;;; 2AF7;TRIPLE NESTED LESS-THAN;Sm;0;ON;;;;;Y;;;;; 2AF8;TRIPLE NESTED GREATER-THAN;Sm;0;ON;;;;;Y;;;;; 2AF9;DOUBLE-LINE SLANTED LESS-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AFA;DOUBLE-LINE SLANTED GREATER-THAN OR EQUAL TO;Sm;0;ON;;;;;Y;;;;; 2AFB;TRIPLE SOLIDUS BINARY RELATION;Sm;0;ON;;;;;Y;;;;; 2AFC;LARGE TRIPLE VERTICAL BAR OPERATOR;Sm;0;ON;;;;;N;;;;; 2AFD;DOUBLE SOLIDUS OPERATOR;Sm;0;ON;;;;;Y;;;;; 2AFE;WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; 2AFF;N-ARY WHITE VERTICAL BAR;Sm;0;ON;;;;;N;;;;; 2B00;NORTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; 2B01;NORTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; 2B02;SOUTH EAST WHITE ARROW;So;0;ON;;;;;N;;;;; 2B03;SOUTH WEST WHITE ARROW;So;0;ON;;;;;N;;;;; 2B04;LEFT RIGHT WHITE ARROW;So;0;ON;;;;;N;;;;; 2B05;LEFTWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; 2B06;UPWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; 2B07;DOWNWARDS BLACK ARROW;So;0;ON;;;;;N;;;;; 2B08;NORTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; 2B09;NORTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; 2B0A;SOUTH EAST BLACK ARROW;So;0;ON;;;;;N;;;;; 2B0B;SOUTH WEST BLACK ARROW;So;0;ON;;;;;N;;;;; 2B0C;LEFT RIGHT BLACK ARROW;So;0;ON;;;;;N;;;;; 2B0D;UP DOWN BLACK ARROW;So;0;ON;;;;;N;;;;; 2B0E;RIGHTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; 2B0F;RIGHTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; 2B10;LEFTWARDS ARROW WITH TIP DOWNWARDS;So;0;ON;;;;;N;;;;; 2B11;LEFTWARDS ARROW WITH TIP UPWARDS;So;0;ON;;;;;N;;;;; 2B12;SQUARE WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; 2B13;SQUARE WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; 2B14;SQUARE WITH UPPER RIGHT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; 2B15;SQUARE WITH LOWER LEFT DIAGONAL HALF BLACK;So;0;ON;;;;;N;;;;; 2B16;DIAMOND WITH LEFT HALF BLACK;So;0;ON;;;;;N;;;;; 2B17;DIAMOND WITH RIGHT HALF BLACK;So;0;ON;;;;;N;;;;; 2B18;DIAMOND WITH TOP HALF BLACK;So;0;ON;;;;;N;;;;; 2B19;DIAMOND WITH BOTTOM HALF BLACK;So;0;ON;;;;;N;;;;; 2B1A;DOTTED SQUARE;So;0;ON;;;;;N;;;;; 2B20;WHITE PENTAGON;So;0;ON;;;;;N;;;;; 2B21;WHITE HEXAGON;So;0;ON;;;;;N;;;;; 2B22;BLACK HEXAGON;So;0;ON;;;;;N;;;;; 2B23;HORIZONTAL BLACK HEXAGON;So;0;ON;;;;;N;;;;; 2C00;GLAGOLITIC CAPITAL LETTER AZU;Lu;0;L;;;;;N;;;;2C30; 2C01;GLAGOLITIC CAPITAL LETTER BUKY;Lu;0;L;;;;;N;;;;2C31; 2C02;GLAGOLITIC CAPITAL LETTER VEDE;Lu;0;L;;;;;N;;;;2C32; 2C03;GLAGOLITIC CAPITAL LETTER GLAGOLI;Lu;0;L;;;;;N;;;;2C33; 2C04;GLAGOLITIC CAPITAL LETTER DOBRO;Lu;0;L;;;;;N;;;;2C34; 2C05;GLAGOLITIC CAPITAL LETTER YESTU;Lu;0;L;;;;;N;;;;2C35; 2C06;GLAGOLITIC CAPITAL LETTER ZHIVETE;Lu;0;L;;;;;N;;;;2C36; 2C07;GLAGOLITIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;2C37; 2C08;GLAGOLITIC CAPITAL LETTER ZEMLJA;Lu;0;L;;;;;N;;;;2C38; 2C09;GLAGOLITIC CAPITAL LETTER IZHE;Lu;0;L;;;;;N;;;;2C39; 2C0A;GLAGOLITIC CAPITAL LETTER INITIAL IZHE;Lu;0;L;;;;;N;;;;2C3A; 2C0B;GLAGOLITIC CAPITAL LETTER I;Lu;0;L;;;;;N;;;;2C3B; 2C0C;GLAGOLITIC CAPITAL LETTER DJERVI;Lu;0;L;;;;;N;;;;2C3C; 2C0D;GLAGOLITIC CAPITAL LETTER KAKO;Lu;0;L;;;;;N;;;;2C3D; 2C0E;GLAGOLITIC CAPITAL LETTER LJUDIJE;Lu;0;L;;;;;N;;;;2C3E; 2C0F;GLAGOLITIC CAPITAL LETTER MYSLITE;Lu;0;L;;;;;N;;;;2C3F; 2C10;GLAGOLITIC CAPITAL LETTER NASHI;Lu;0;L;;;;;N;;;;2C40; 2C11;GLAGOLITIC CAPITAL LETTER ONU;Lu;0;L;;;;;N;;;;2C41; 2C12;GLAGOLITIC CAPITAL LETTER POKOJI;Lu;0;L;;;;;N;;;;2C42; 2C13;GLAGOLITIC CAPITAL LETTER RITSI;Lu;0;L;;;;;N;;;;2C43; 2C14;GLAGOLITIC CAPITAL LETTER SLOVO;Lu;0;L;;;;;N;;;;2C44; 2C15;GLAGOLITIC CAPITAL LETTER TVRIDO;Lu;0;L;;;;;N;;;;2C45; 2C16;GLAGOLITIC CAPITAL LETTER UKU;Lu;0;L;;;;;N;;;;2C46; 2C17;GLAGOLITIC CAPITAL LETTER FRITU;Lu;0;L;;;;;N;;;;2C47; 2C18;GLAGOLITIC CAPITAL LETTER HERU;Lu;0;L;;;;;N;;;;2C48; 2C19;GLAGOLITIC CAPITAL LETTER OTU;Lu;0;L;;;;;N;;;;2C49; 2C1A;GLAGOLITIC CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;2C4A; 2C1B;GLAGOLITIC CAPITAL LETTER SHTA;Lu;0;L;;;;;N;;;;2C4B; 2C1C;GLAGOLITIC CAPITAL LETTER TSI;Lu;0;L;;;;;N;;;;2C4C; 2C1D;GLAGOLITIC CAPITAL LETTER CHRIVI;Lu;0;L;;;;;N;;;;2C4D; 2C1E;GLAGOLITIC CAPITAL LETTER SHA;Lu;0;L;;;;;N;;;;2C4E; 2C1F;GLAGOLITIC CAPITAL LETTER YERU;Lu;0;L;;;;;N;;;;2C4F; 2C20;GLAGOLITIC CAPITAL LETTER YERI;Lu;0;L;;;;;N;;;;2C50; 2C21;GLAGOLITIC CAPITAL LETTER YATI;Lu;0;L;;;;;N;;;;2C51; 2C22;GLAGOLITIC CAPITAL LETTER SPIDERY HA;Lu;0;L;;;;;N;;;;2C52; 2C23;GLAGOLITIC CAPITAL LETTER YU;Lu;0;L;;;;;N;;;;2C53; 2C24;GLAGOLITIC CAPITAL LETTER SMALL YUS;Lu;0;L;;;;;N;;;;2C54; 2C25;GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL;Lu;0;L;;;;;N;;;;2C55; 2C26;GLAGOLITIC CAPITAL LETTER YO;Lu;0;L;;;;;N;;;;2C56; 2C27;GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS;Lu;0;L;;;;;N;;;;2C57; 2C28;GLAGOLITIC CAPITAL LETTER BIG YUS;Lu;0;L;;;;;N;;;;2C58; 2C29;GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS;Lu;0;L;;;;;N;;;;2C59; 2C2A;GLAGOLITIC CAPITAL LETTER FITA;Lu;0;L;;;;;N;;;;2C5A; 2C2B;GLAGOLITIC CAPITAL LETTER IZHITSA;Lu;0;L;;;;;N;;;;2C5B; 2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C; 2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D; 2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E; 2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00 2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01 2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02 2C33;GLAGOLITIC SMALL LETTER GLAGOLI;Ll;0;L;;;;;N;;;2C03;;2C03 2C34;GLAGOLITIC SMALL LETTER DOBRO;Ll;0;L;;;;;N;;;2C04;;2C04 2C35;GLAGOLITIC SMALL LETTER YESTU;Ll;0;L;;;;;N;;;2C05;;2C05 2C36;GLAGOLITIC SMALL LETTER ZHIVETE;Ll;0;L;;;;;N;;;2C06;;2C06 2C37;GLAGOLITIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;2C07;;2C07 2C38;GLAGOLITIC SMALL LETTER ZEMLJA;Ll;0;L;;;;;N;;;2C08;;2C08 2C39;GLAGOLITIC SMALL LETTER IZHE;Ll;0;L;;;;;N;;;2C09;;2C09 2C3A;GLAGOLITIC SMALL LETTER INITIAL IZHE;Ll;0;L;;;;;N;;;2C0A;;2C0A 2C3B;GLAGOLITIC SMALL LETTER I;Ll;0;L;;;;;N;;;2C0B;;2C0B 2C3C;GLAGOLITIC SMALL LETTER DJERVI;Ll;0;L;;;;;N;;;2C0C;;2C0C 2C3D;GLAGOLITIC SMALL LETTER KAKO;Ll;0;L;;;;;N;;;2C0D;;2C0D 2C3E;GLAGOLITIC SMALL LETTER LJUDIJE;Ll;0;L;;;;;N;;;2C0E;;2C0E 2C3F;GLAGOLITIC SMALL LETTER MYSLITE;Ll;0;L;;;;;N;;;2C0F;;2C0F 2C40;GLAGOLITIC SMALL LETTER NASHI;Ll;0;L;;;;;N;;;2C10;;2C10 2C41;GLAGOLITIC SMALL LETTER ONU;Ll;0;L;;;;;N;;;2C11;;2C11 2C42;GLAGOLITIC SMALL LETTER POKOJI;Ll;0;L;;;;;N;;;2C12;;2C12 2C43;GLAGOLITIC SMALL LETTER RITSI;Ll;0;L;;;;;N;;;2C13;;2C13 2C44;GLAGOLITIC SMALL LETTER SLOVO;Ll;0;L;;;;;N;;;2C14;;2C14 2C45;GLAGOLITIC SMALL LETTER TVRIDO;Ll;0;L;;;;;N;;;2C15;;2C15 2C46;GLAGOLITIC SMALL LETTER UKU;Ll;0;L;;;;;N;;;2C16;;2C16 2C47;GLAGOLITIC SMALL LETTER FRITU;Ll;0;L;;;;;N;;;2C17;;2C17 2C48;GLAGOLITIC SMALL LETTER HERU;Ll;0;L;;;;;N;;;2C18;;2C18 2C49;GLAGOLITIC SMALL LETTER OTU;Ll;0;L;;;;;N;;;2C19;;2C19 2C4A;GLAGOLITIC SMALL LETTER PE;Ll;0;L;;;;;N;;;2C1A;;2C1A 2C4B;GLAGOLITIC SMALL LETTER SHTA;Ll;0;L;;;;;N;;;2C1B;;2C1B 2C4C;GLAGOLITIC SMALL LETTER TSI;Ll;0;L;;;;;N;;;2C1C;;2C1C 2C4D;GLAGOLITIC SMALL LETTER CHRIVI;Ll;0;L;;;;;N;;;2C1D;;2C1D 2C4E;GLAGOLITIC SMALL LETTER SHA;Ll;0;L;;;;;N;;;2C1E;;2C1E 2C4F;GLAGOLITIC SMALL LETTER YERU;Ll;0;L;;;;;N;;;2C1F;;2C1F 2C50;GLAGOLITIC SMALL LETTER YERI;Ll;0;L;;;;;N;;;2C20;;2C20 2C51;GLAGOLITIC SMALL LETTER YATI;Ll;0;L;;;;;N;;;2C21;;2C21 2C52;GLAGOLITIC SMALL LETTER SPIDERY HA;Ll;0;L;;;;;N;;;2C22;;2C22 2C53;GLAGOLITIC SMALL LETTER YU;Ll;0;L;;;;;N;;;2C23;;2C23 2C54;GLAGOLITIC SMALL LETTER SMALL YUS;Ll;0;L;;;;;N;;;2C24;;2C24 2C55;GLAGOLITIC SMALL LETTER SMALL YUS WITH TAIL;Ll;0;L;;;;;N;;;2C25;;2C25 2C56;GLAGOLITIC SMALL LETTER YO;Ll;0;L;;;;;N;;;2C26;;2C26 2C57;GLAGOLITIC SMALL LETTER IOTATED SMALL YUS;Ll;0;L;;;;;N;;;2C27;;2C27 2C58;GLAGOLITIC SMALL LETTER BIG YUS;Ll;0;L;;;;;N;;;2C28;;2C28 2C59;GLAGOLITIC SMALL LETTER IOTATED BIG YUS;Ll;0;L;;;;;N;;;2C29;;2C29 2C5A;GLAGOLITIC SMALL LETTER FITA;Ll;0;L;;;;;N;;;2C2A;;2C2A 2C5B;GLAGOLITIC SMALL LETTER IZHITSA;Ll;0;L;;;;;N;;;2C2B;;2C2B 2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C 2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D 2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E 2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61; 2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60 2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B; 2C63;LATIN CAPITAL LETTER P WITH STROKE;Lu;0;L;;;;;N;;;;1D7D; 2C64;LATIN CAPITAL LETTER R WITH TAIL;Lu;0;L;;;;;N;;;;027D; 2C65;LATIN SMALL LETTER A WITH STROKE;Ll;0;L;;;;;N;;;023A;;023A 2C66;LATIN SMALL LETTER T WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;023E;;023E 2C67;LATIN CAPITAL LETTER H WITH DESCENDER;Lu;0;L;;;;;N;;;;2C68; 2C68;LATIN SMALL LETTER H WITH DESCENDER;Ll;0;L;;;;;N;;;2C67;;2C67 2C69;LATIN CAPITAL LETTER K WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6A; 2C6A;LATIN SMALL LETTER K WITH DESCENDER;Ll;0;L;;;;;N;;;2C69;;2C69 2C6B;LATIN CAPITAL LETTER Z WITH DESCENDER;Lu;0;L;;;;;N;;;;2C6C; 2C6C;LATIN SMALL LETTER Z WITH DESCENDER;Ll;0;L;;;;;N;;;2C6B;;2C6B 2C74;LATIN SMALL LETTER V WITH CURL;Ll;0;L;;;;;N;;;;; 2C75;LATIN CAPITAL LETTER HALF H;Lu;0;L;;;;;N;;;;2C76; 2C76;LATIN SMALL LETTER HALF H;Ll;0;L;;;;;N;;;2C75;;2C75 2C77;LATIN SMALL LETTER TAILLESS PHI;Ll;0;L;;;;;N;;;;; 2C80;COPTIC CAPITAL LETTER ALFA;Lu;0;L;;;;;N;;;;2C81; 2C81;COPTIC SMALL LETTER ALFA;Ll;0;L;;;;;N;;;2C80;;2C80 2C82;COPTIC CAPITAL LETTER VIDA;Lu;0;L;;;;;N;;;;2C83; 2C83;COPTIC SMALL LETTER VIDA;Ll;0;L;;;;;N;;;2C82;;2C82 2C84;COPTIC CAPITAL LETTER GAMMA;Lu;0;L;;;;;N;;;;2C85; 2C85;COPTIC SMALL LETTER GAMMA;Ll;0;L;;;;;N;;;2C84;;2C84 2C86;COPTIC CAPITAL LETTER DALDA;Lu;0;L;;;;;N;;;;2C87; 2C87;COPTIC SMALL LETTER DALDA;Ll;0;L;;;;;N;;;2C86;;2C86 2C88;COPTIC CAPITAL LETTER EIE;Lu;0;L;;;;;N;;;;2C89; 2C89;COPTIC SMALL LETTER EIE;Ll;0;L;;;;;N;;;2C88;;2C88 2C8A;COPTIC CAPITAL LETTER SOU;Lu;0;L;;;;;N;;;;2C8B; 2C8B;COPTIC SMALL LETTER SOU;Ll;0;L;;;;;N;;;2C8A;;2C8A 2C8C;COPTIC CAPITAL LETTER ZATA;Lu;0;L;;;;;N;;;;2C8D; 2C8D;COPTIC SMALL LETTER ZATA;Ll;0;L;;;;;N;;;2C8C;;2C8C 2C8E;COPTIC CAPITAL LETTER HATE;Lu;0;L;;;;;N;;;;2C8F; 2C8F;COPTIC SMALL LETTER HATE;Ll;0;L;;;;;N;;;2C8E;;2C8E 2C90;COPTIC CAPITAL LETTER THETHE;Lu;0;L;;;;;N;;;;2C91; 2C91;COPTIC SMALL LETTER THETHE;Ll;0;L;;;;;N;;;2C90;;2C90 2C92;COPTIC CAPITAL LETTER IAUDA;Lu;0;L;;;;;N;;;;2C93; 2C93;COPTIC SMALL LETTER IAUDA;Ll;0;L;;;;;N;;;2C92;;2C92 2C94;COPTIC CAPITAL LETTER KAPA;Lu;0;L;;;;;N;;;;2C95; 2C95;COPTIC SMALL LETTER KAPA;Ll;0;L;;;;;N;;;2C94;;2C94 2C96;COPTIC CAPITAL LETTER LAULA;Lu;0;L;;;;;N;;;;2C97; 2C97;COPTIC SMALL LETTER LAULA;Ll;0;L;;;;;N;;;2C96;;2C96 2C98;COPTIC CAPITAL LETTER MI;Lu;0;L;;;;;N;;;;2C99; 2C99;COPTIC SMALL LETTER MI;Ll;0;L;;;;;N;;;2C98;;2C98 2C9A;COPTIC CAPITAL LETTER NI;Lu;0;L;;;;;N;;;;2C9B; 2C9B;COPTIC SMALL LETTER NI;Ll;0;L;;;;;N;;;2C9A;;2C9A 2C9C;COPTIC CAPITAL LETTER KSI;Lu;0;L;;;;;N;;;;2C9D; 2C9D;COPTIC SMALL LETTER KSI;Ll;0;L;;;;;N;;;2C9C;;2C9C 2C9E;COPTIC CAPITAL LETTER O;Lu;0;L;;;;;N;;;;2C9F; 2C9F;COPTIC SMALL LETTER O;Ll;0;L;;;;;N;;;2C9E;;2C9E 2CA0;COPTIC CAPITAL LETTER PI;Lu;0;L;;;;;N;;;;2CA1; 2CA1;COPTIC SMALL LETTER PI;Ll;0;L;;;;;N;;;2CA0;;2CA0 2CA2;COPTIC CAPITAL LETTER RO;Lu;0;L;;;;;N;;;;2CA3; 2CA3;COPTIC SMALL LETTER RO;Ll;0;L;;;;;N;;;2CA2;;2CA2 2CA4;COPTIC CAPITAL LETTER SIMA;Lu;0;L;;;;;N;;;;2CA5; 2CA5;COPTIC SMALL LETTER SIMA;Ll;0;L;;;;;N;;;2CA4;;2CA4 2CA6;COPTIC CAPITAL LETTER TAU;Lu;0;L;;;;;N;;;;2CA7; 2CA7;COPTIC SMALL LETTER TAU;Ll;0;L;;;;;N;;;2CA6;;2CA6 2CA8;COPTIC CAPITAL LETTER UA;Lu;0;L;;;;;N;;;;2CA9; 2CA9;COPTIC SMALL LETTER UA;Ll;0;L;;;;;N;;;2CA8;;2CA8 2CAA;COPTIC CAPITAL LETTER FI;Lu;0;L;;;;;N;;;;2CAB; 2CAB;COPTIC SMALL LETTER FI;Ll;0;L;;;;;N;;;2CAA;;2CAA 2CAC;COPTIC CAPITAL LETTER KHI;Lu;0;L;;;;;N;;;;2CAD; 2CAD;COPTIC SMALL LETTER KHI;Ll;0;L;;;;;N;;;2CAC;;2CAC 2CAE;COPTIC CAPITAL LETTER PSI;Lu;0;L;;;;;N;;;;2CAF; 2CAF;COPTIC SMALL LETTER PSI;Ll;0;L;;;;;N;;;2CAE;;2CAE 2CB0;COPTIC CAPITAL LETTER OOU;Lu;0;L;;;;;N;;;;2CB1; 2CB1;COPTIC SMALL LETTER OOU;Ll;0;L;;;;;N;;;2CB0;;2CB0 2CB2;COPTIC CAPITAL LETTER DIALECT-P ALEF;Lu;0;L;;;;;N;;;;2CB3; 2CB3;COPTIC SMALL LETTER DIALECT-P ALEF;Ll;0;L;;;;;N;;;2CB2;;2CB2 2CB4;COPTIC CAPITAL LETTER OLD COPTIC AIN;Lu;0;L;;;;;N;;;;2CB5; 2CB5;COPTIC SMALL LETTER OLD COPTIC AIN;Ll;0;L;;;;;N;;;2CB4;;2CB4 2CB6;COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE;Lu;0;L;;;;;N;;;;2CB7; 2CB7;COPTIC SMALL LETTER CRYPTOGRAMMIC EIE;Ll;0;L;;;;;N;;;2CB6;;2CB6 2CB8;COPTIC CAPITAL LETTER DIALECT-P KAPA;Lu;0;L;;;;;N;;;;2CB9; 2CB9;COPTIC SMALL LETTER DIALECT-P KAPA;Ll;0;L;;;;;N;;;2CB8;;2CB8 2CBA;COPTIC CAPITAL LETTER DIALECT-P NI;Lu;0;L;;;;;N;;;;2CBB; 2CBB;COPTIC SMALL LETTER DIALECT-P NI;Ll;0;L;;;;;N;;;2CBA;;2CBA 2CBC;COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI;Lu;0;L;;;;;N;;;;2CBD; 2CBD;COPTIC SMALL LETTER CRYPTOGRAMMIC NI;Ll;0;L;;;;;N;;;2CBC;;2CBC 2CBE;COPTIC CAPITAL LETTER OLD COPTIC OOU;Lu;0;L;;;;;N;;;;2CBF; 2CBF;COPTIC SMALL LETTER OLD COPTIC OOU;Ll;0;L;;;;;N;;;2CBE;;2CBE 2CC0;COPTIC CAPITAL LETTER SAMPI;Lu;0;L;;;;;N;;;;2CC1; 2CC1;COPTIC SMALL LETTER SAMPI;Ll;0;L;;;;;N;;;2CC0;;2CC0 2CC2;COPTIC CAPITAL LETTER CROSSED SHEI;Lu;0;L;;;;;N;;;;2CC3; 2CC3;COPTIC SMALL LETTER CROSSED SHEI;Ll;0;L;;;;;N;;;2CC2;;2CC2 2CC4;COPTIC CAPITAL LETTER OLD COPTIC SHEI;Lu;0;L;;;;;N;;;;2CC5; 2CC5;COPTIC SMALL LETTER OLD COPTIC SHEI;Ll;0;L;;;;;N;;;2CC4;;2CC4 2CC6;COPTIC CAPITAL LETTER OLD COPTIC ESH;Lu;0;L;;;;;N;;;;2CC7; 2CC7;COPTIC SMALL LETTER OLD COPTIC ESH;Ll;0;L;;;;;N;;;2CC6;;2CC6 2CC8;COPTIC CAPITAL LETTER AKHMIMIC KHEI;Lu;0;L;;;;;N;;;;2CC9; 2CC9;COPTIC SMALL LETTER AKHMIMIC KHEI;Ll;0;L;;;;;N;;;2CC8;;2CC8 2CCA;COPTIC CAPITAL LETTER DIALECT-P HORI;Lu;0;L;;;;;N;;;;2CCB; 2CCB;COPTIC SMALL LETTER DIALECT-P HORI;Ll;0;L;;;;;N;;;2CCA;;2CCA 2CCC;COPTIC CAPITAL LETTER OLD COPTIC HORI;Lu;0;L;;;;;N;;;;2CCD; 2CCD;COPTIC SMALL LETTER OLD COPTIC HORI;Ll;0;L;;;;;N;;;2CCC;;2CCC 2CCE;COPTIC CAPITAL LETTER OLD COPTIC HA;Lu;0;L;;;;;N;;;;2CCF; 2CCF;COPTIC SMALL LETTER OLD COPTIC HA;Ll;0;L;;;;;N;;;2CCE;;2CCE 2CD0;COPTIC CAPITAL LETTER L-SHAPED HA;Lu;0;L;;;;;N;;;;2CD1; 2CD1;COPTIC SMALL LETTER L-SHAPED HA;Ll;0;L;;;;;N;;;2CD0;;2CD0 2CD2;COPTIC CAPITAL LETTER OLD COPTIC HEI;Lu;0;L;;;;;N;;;;2CD3; 2CD3;COPTIC SMALL LETTER OLD COPTIC HEI;Ll;0;L;;;;;N;;;2CD2;;2CD2 2CD4;COPTIC CAPITAL LETTER OLD COPTIC HAT;Lu;0;L;;;;;N;;;;2CD5; 2CD5;COPTIC SMALL LETTER OLD COPTIC HAT;Ll;0;L;;;;;N;;;2CD4;;2CD4 2CD6;COPTIC CAPITAL LETTER OLD COPTIC GANGIA;Lu;0;L;;;;;N;;;;2CD7; 2CD7;COPTIC SMALL LETTER OLD COPTIC GANGIA;Ll;0;L;;;;;N;;;2CD6;;2CD6 2CD8;COPTIC CAPITAL LETTER OLD COPTIC DJA;Lu;0;L;;;;;N;;;;2CD9; 2CD9;COPTIC SMALL LETTER OLD COPTIC DJA;Ll;0;L;;;;;N;;;2CD8;;2CD8 2CDA;COPTIC CAPITAL LETTER OLD COPTIC SHIMA;Lu;0;L;;;;;N;;;;2CDB; 2CDB;COPTIC SMALL LETTER OLD COPTIC SHIMA;Ll;0;L;;;;;N;;;2CDA;;2CDA 2CDC;COPTIC CAPITAL LETTER OLD NUBIAN SHIMA;Lu;0;L;;;;;N;;;;2CDD; 2CDD;COPTIC SMALL LETTER OLD NUBIAN SHIMA;Ll;0;L;;;;;N;;;2CDC;;2CDC 2CDE;COPTIC CAPITAL LETTER OLD NUBIAN NGI;Lu;0;L;;;;;N;;;;2CDF; 2CDF;COPTIC SMALL LETTER OLD NUBIAN NGI;Ll;0;L;;;;;N;;;2CDE;;2CDE 2CE0;COPTIC CAPITAL LETTER OLD NUBIAN NYI;Lu;0;L;;;;;N;;;;2CE1; 2CE1;COPTIC SMALL LETTER OLD NUBIAN NYI;Ll;0;L;;;;;N;;;2CE0;;2CE0 2CE2;COPTIC CAPITAL LETTER OLD NUBIAN WAU;Lu;0;L;;;;;N;;;;2CE3; 2CE3;COPTIC SMALL LETTER OLD NUBIAN WAU;Ll;0;L;;;;;N;;;2CE2;;2CE2 2CE4;COPTIC SYMBOL KAI;Ll;0;L;;;;;N;;;;; 2CE5;COPTIC SYMBOL MI RO;So;0;ON;;;;;N;;;;; 2CE6;COPTIC SYMBOL PI RO;So;0;ON;;;;;N;;;;; 2CE7;COPTIC SYMBOL STAUROS;So;0;ON;;;;;N;;;;; 2CE8;COPTIC SYMBOL TAU RO;So;0;ON;;;;;N;;;;; 2CE9;COPTIC SYMBOL KHI RO;So;0;ON;;;;;N;;;;; 2CEA;COPTIC SYMBOL SHIMA SIMA;So;0;ON;;;;;N;;;;; 2CF9;COPTIC OLD NUBIAN FULL STOP;Po;0;ON;;;;;N;;;;; 2CFA;COPTIC OLD NUBIAN DIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; 2CFB;COPTIC OLD NUBIAN INDIRECT QUESTION MARK;Po;0;ON;;;;;N;;;;; 2CFC;COPTIC OLD NUBIAN VERSE DIVIDER;Po;0;ON;;;;;N;;;;; 2CFD;COPTIC FRACTION ONE HALF;No;0;ON;;;;1/2;N;;;;; 2CFE;COPTIC FULL STOP;Po;0;ON;;;;;N;;;;; 2CFF;COPTIC MORPHOLOGICAL DIVIDER;Po;0;ON;;;;;N;;;;; 2D00;GEORGIAN SMALL LETTER AN;Ll;0;L;;;;;N;;Khutsuri;10A0;;10A0 2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;Khutsuri;10A1;;10A1 2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;Khutsuri;10A2;;10A2 2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;Khutsuri;10A3;;10A3 2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;Khutsuri;10A4;;10A4 2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;Khutsuri;10A5;;10A5 2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;Khutsuri;10A6;;10A6 2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;Khutsuri;10A7;;10A7 2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;Khutsuri;10A8;;10A8 2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;Khutsuri;10A9;;10A9 2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;Khutsuri;10AA;;10AA 2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;Khutsuri;10AB;;10AB 2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;Khutsuri;10AC;;10AC 2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;Khutsuri;10AD;;10AD 2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;Khutsuri;10AE;;10AE 2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;Khutsuri;10AF;;10AF 2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;Khutsuri;10B0;;10B0 2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;Khutsuri;10B1;;10B1 2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;Khutsuri;10B2;;10B2 2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;Khutsuri;10B3;;10B3 2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;Khutsuri;10B4;;10B4 2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;Khutsuri;10B5;;10B5 2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;Khutsuri;10B6;;10B6 2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;Khutsuri;10B7;;10B7 2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;Khutsuri;10B8;;10B8 2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;Khutsuri;10B9;;10B9 2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;Khutsuri;10BA;;10BA 2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;Khutsuri;10BB;;10BB 2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;Khutsuri;10BC;;10BC 2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;Khutsuri;10BD;;10BD 2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;Khutsuri;10BE;;10BE 2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;Khutsuri;10BF;;10BF 2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;Khutsuri;10C0;;10C0 2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;Khutsuri;10C1;;10C1 2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;Khutsuri;10C2;;10C2 2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;Khutsuri;10C3;;10C3 2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;Khutsuri;10C4;;10C4 2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;Khutsuri;10C5;;10C5 2D30;TIFINAGH LETTER YA;Lo;0;L;;;;;N;;;;; 2D31;TIFINAGH LETTER YAB;Lo;0;L;;;;;N;;;;; 2D32;TIFINAGH LETTER YABH;Lo;0;L;;;;;N;;;;; 2D33;TIFINAGH LETTER YAG;Lo;0;L;;;;;N;;;;; 2D34;TIFINAGH LETTER YAGHH;Lo;0;L;;;;;N;;;;; 2D35;TIFINAGH LETTER BERBER ACADEMY YAJ;Lo;0;L;;;;;N;;;;; 2D36;TIFINAGH LETTER YAJ;Lo;0;L;;;;;N;;;;; 2D37;TIFINAGH LETTER YAD;Lo;0;L;;;;;N;;;;; 2D38;TIFINAGH LETTER YADH;Lo;0;L;;;;;N;;;;; 2D39;TIFINAGH LETTER YADD;Lo;0;L;;;;;N;;;;; 2D3A;TIFINAGH LETTER YADDH;Lo;0;L;;;;;N;;;;; 2D3B;TIFINAGH LETTER YEY;Lo;0;L;;;;;N;;;;; 2D3C;TIFINAGH LETTER YAF;Lo;0;L;;;;;N;;;;; 2D3D;TIFINAGH LETTER YAK;Lo;0;L;;;;;N;;;;; 2D3E;TIFINAGH LETTER TUAREG YAK;Lo;0;L;;;;;N;;;;; 2D3F;TIFINAGH LETTER YAKHH;Lo;0;L;;;;;N;;;;; 2D40;TIFINAGH LETTER YAH;Lo;0;L;;;;;N;;Tuareg yab;;; 2D41;TIFINAGH LETTER BERBER ACADEMY YAH;Lo;0;L;;;;;N;;;;; 2D42;TIFINAGH LETTER TUAREG YAH;Lo;0;L;;;;;N;;;;; 2D43;TIFINAGH LETTER YAHH;Lo;0;L;;;;;N;;;;; 2D44;TIFINAGH LETTER YAA;Lo;0;L;;;;;N;;;;; 2D45;TIFINAGH LETTER YAKH;Lo;0;L;;;;;N;;;;; 2D46;TIFINAGH LETTER TUAREG YAKH;Lo;0;L;;;;;N;;;;; 2D47;TIFINAGH LETTER YAQ;Lo;0;L;;;;;N;;;;; 2D48;TIFINAGH LETTER TUAREG YAQ;Lo;0;L;;;;;N;;;;; 2D49;TIFINAGH LETTER YI;Lo;0;L;;;;;N;;;;; 2D4A;TIFINAGH LETTER YAZH;Lo;0;L;;;;;N;;;;; 2D4B;TIFINAGH LETTER AHAGGAR YAZH;Lo;0;L;;;;;N;;;;; 2D4C;TIFINAGH LETTER TUAREG YAZH;Lo;0;L;;;;;N;;;;; 2D4D;TIFINAGH LETTER YAL;Lo;0;L;;;;;N;;;;; 2D4E;TIFINAGH LETTER YAM;Lo;0;L;;;;;N;;;;; 2D4F;TIFINAGH LETTER YAN;Lo;0;L;;;;;N;;;;; 2D50;TIFINAGH LETTER TUAREG YAGN;Lo;0;L;;;;;N;;;;; 2D51;TIFINAGH LETTER TUAREG YANG;Lo;0;L;;;;;N;;;;; 2D52;TIFINAGH LETTER YAP;Lo;0;L;;;;;N;;;;; 2D53;TIFINAGH LETTER YU;Lo;0;L;;;;;N;;Tuareg yaw;;; 2D54;TIFINAGH LETTER YAR;Lo;0;L;;;;;N;;;;; 2D55;TIFINAGH LETTER YARR;Lo;0;L;;;;;N;;;;; 2D56;TIFINAGH LETTER YAGH;Lo;0;L;;;;;N;;;;; 2D57;TIFINAGH LETTER TUAREG YAGH;Lo;0;L;;;;;N;;;;; 2D58;TIFINAGH LETTER AYER YAGH;Lo;0;L;;;;;N;;Adrar yaj;;; 2D59;TIFINAGH LETTER YAS;Lo;0;L;;;;;N;;;;; 2D5A;TIFINAGH LETTER YASS;Lo;0;L;;;;;N;;;;; 2D5B;TIFINAGH LETTER YASH;Lo;0;L;;;;;N;;;;; 2D5C;TIFINAGH LETTER YAT;Lo;0;L;;;;;N;;;;; 2D5D;TIFINAGH LETTER YATH;Lo;0;L;;;;;N;;;;; 2D5E;TIFINAGH LETTER YACH;Lo;0;L;;;;;N;;;;; 2D5F;TIFINAGH LETTER YATT;Lo;0;L;;;;;N;;;;; 2D60;TIFINAGH LETTER YAV;Lo;0;L;;;;;N;;;;; 2D61;TIFINAGH LETTER YAW;Lo;0;L;;;;;N;;;;; 2D62;TIFINAGH LETTER YAY;Lo;0;L;;;;;N;;;;; 2D63;TIFINAGH LETTER YAZ;Lo;0;L;;;;;N;;;;; 2D64;TIFINAGH LETTER TAWELLEMET YAZ;Lo;0;L;;;;;N;;harpoon yaz;;; 2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;; 2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L; 2D61;;;;N;;tamatart;;; 2D80;ETHIOPIC SYLLABLE LOA;Lo;0;L;;;;;N;;;;; 2D81;ETHIOPIC SYLLABLE MOA;Lo;0;L;;;;;N;;;;; 2D82;ETHIOPIC SYLLABLE ROA;Lo;0;L;;;;;N;;;;; 2D83;ETHIOPIC SYLLABLE SOA;Lo;0;L;;;;;N;;;;; 2D84;ETHIOPIC SYLLABLE SHOA;Lo;0;L;;;;;N;;;;; 2D85;ETHIOPIC SYLLABLE BOA;Lo;0;L;;;;;N;;;;; 2D86;ETHIOPIC SYLLABLE TOA;Lo;0;L;;;;;N;;;;; 2D87;ETHIOPIC SYLLABLE COA;Lo;0;L;;;;;N;;;;; 2D88;ETHIOPIC SYLLABLE NOA;Lo;0;L;;;;;N;;;;; 2D89;ETHIOPIC SYLLABLE NYOA;Lo;0;L;;;;;N;;;;; 2D8A;ETHIOPIC SYLLABLE GLOTTAL OA;Lo;0;L;;;;;N;;;;; 2D8B;ETHIOPIC SYLLABLE ZOA;Lo;0;L;;;;;N;;;;; 2D8C;ETHIOPIC SYLLABLE DOA;Lo;0;L;;;;;N;;;;; 2D8D;ETHIOPIC SYLLABLE DDOA;Lo;0;L;;;;;N;;;;; 2D8E;ETHIOPIC SYLLABLE JOA;Lo;0;L;;;;;N;;;;; 2D8F;ETHIOPIC SYLLABLE THOA;Lo;0;L;;;;;N;;;;; 2D90;ETHIOPIC SYLLABLE CHOA;Lo;0;L;;;;;N;;;;; 2D91;ETHIOPIC SYLLABLE PHOA;Lo;0;L;;;;;N;;;;; 2D92;ETHIOPIC SYLLABLE POA;Lo;0;L;;;;;N;;;;; 2D93;ETHIOPIC SYLLABLE GGWA;Lo;0;L;;;;;N;;;;; 2D94;ETHIOPIC SYLLABLE GGWI;Lo;0;L;;;;;N;;;;; 2D95;ETHIOPIC SYLLABLE GGWEE;Lo;0;L;;;;;N;;;;; 2D96;ETHIOPIC SYLLABLE GGWE;Lo;0;L;;;;;N;;;;; 2DA0;ETHIOPIC SYLLABLE SSA;Lo;0;L;;;;;N;;;;; 2DA1;ETHIOPIC SYLLABLE SSU;Lo;0;L;;;;;N;;;;; 2DA2;ETHIOPIC SYLLABLE SSI;Lo;0;L;;;;;N;;;;; 2DA3;ETHIOPIC SYLLABLE SSAA;Lo;0;L;;;;;N;;;;; 2DA4;ETHIOPIC SYLLABLE SSEE;Lo;0;L;;;;;N;;;;; 2DA5;ETHIOPIC SYLLABLE SSE;Lo;0;L;;;;;N;;;;; 2DA6;ETHIOPIC SYLLABLE SSO;Lo;0;L;;;;;N;;;;; 2DA8;ETHIOPIC SYLLABLE CCA;Lo;0;L;;;;;N;;;;; 2DA9;ETHIOPIC SYLLABLE CCU;Lo;0;L;;;;;N;;;;; 2DAA;ETHIOPIC SYLLABLE CCI;Lo;0;L;;;;;N;;;;; 2DAB;ETHIOPIC SYLLABLE CCAA;Lo;0;L;;;;;N;;;;; 2DAC;ETHIOPIC SYLLABLE CCEE;Lo;0;L;;;;;N;;;;; 2DAD;ETHIOPIC SYLLABLE CCE;Lo;0;L;;;;;N;;;;; 2DAE;ETHIOPIC SYLLABLE CCO;Lo;0;L;;;;;N;;;;; 2DB0;ETHIOPIC SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; 2DB1;ETHIOPIC SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; 2DB2;ETHIOPIC SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; 2DB3;ETHIOPIC SYLLABLE ZZAA;Lo;0;L;;;;;N;;;;; 2DB4;ETHIOPIC SYLLABLE ZZEE;Lo;0;L;;;;;N;;;;; 2DB5;ETHIOPIC SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; 2DB6;ETHIOPIC SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; 2DB8;ETHIOPIC SYLLABLE CCHA;Lo;0;L;;;;;N;;;;; 2DB9;ETHIOPIC SYLLABLE CCHU;Lo;0;L;;;;;N;;;;; 2DBA;ETHIOPIC SYLLABLE CCHI;Lo;0;L;;;;;N;;;;; 2DBB;ETHIOPIC SYLLABLE CCHAA;Lo;0;L;;;;;N;;;;; 2DBC;ETHIOPIC SYLLABLE CCHEE;Lo;0;L;;;;;N;;;;; 2DBD;ETHIOPIC SYLLABLE CCHE;Lo;0;L;;;;;N;;;;; 2DBE;ETHIOPIC SYLLABLE CCHO;Lo;0;L;;;;;N;;;;; 2DC0;ETHIOPIC SYLLABLE QYA;Lo;0;L;;;;;N;;;;; 2DC1;ETHIOPIC SYLLABLE QYU;Lo;0;L;;;;;N;;;;; 2DC2;ETHIOPIC SYLLABLE QYI;Lo;0;L;;;;;N;;;;; 2DC3;ETHIOPIC SYLLABLE QYAA;Lo;0;L;;;;;N;;;;; 2DC4;ETHIOPIC SYLLABLE QYEE;Lo;0;L;;;;;N;;;;; 2DC5;ETHIOPIC SYLLABLE QYE;Lo;0;L;;;;;N;;;;; 2DC6;ETHIOPIC SYLLABLE QYO;Lo;0;L;;;;;N;;;;; 2DC8;ETHIOPIC SYLLABLE KYA;Lo;0;L;;;;;N;;;;; 2DC9;ETHIOPIC SYLLABLE KYU;Lo;0;L;;;;;N;;;;; 2DCA;ETHIOPIC SYLLABLE KYI;Lo;0;L;;;;;N;;;;; 2DCB;ETHIOPIC SYLLABLE KYAA;Lo;0;L;;;;;N;;;;; 2DCC;ETHIOPIC SYLLABLE KYEE;Lo;0;L;;;;;N;;;;; 2DCD;ETHIOPIC SYLLABLE KYE;Lo;0;L;;;;;N;;;;; 2DCE;ETHIOPIC SYLLABLE KYO;Lo;0;L;;;;;N;;;;; 2DD0;ETHIOPIC SYLLABLE XYA;Lo;0;L;;;;;N;;;;; 2DD1;ETHIOPIC SYLLABLE XYU;Lo;0;L;;;;;N;;;;; 2DD2;ETHIOPIC SYLLABLE XYI;Lo;0;L;;;;;N;;;;; 2DD3;ETHIOPIC SYLLABLE XYAA;Lo;0;L;;;;;N;;;;; 2DD4;ETHIOPIC SYLLABLE XYEE;Lo;0;L;;;;;N;;;;; 2DD5;ETHIOPIC SYLLABLE XYE;Lo;0;L;;;;;N;;;;; 2DD6;ETHIOPIC SYLLABLE XYO;Lo;0;L;;;;;N;;;;; 2DD8;ETHIOPIC SYLLABLE GYA;Lo;0;L;;;;;N;;;;; 2DD9;ETHIOPIC SYLLABLE GYU;Lo;0;L;;;;;N;;;;; 2DDA;ETHIOPIC SYLLABLE GYI;Lo;0;L;;;;;N;;;;; 2DDB;ETHIOPIC SYLLABLE GYAA;Lo;0;L;;;;;N;;;;; 2DDC;ETHIOPIC SYLLABLE GYEE;Lo;0;L;;;;;N;;;;; 2DDD;ETHIOPIC SYLLABLE GYE;Lo;0;L;;;;;N;;;;; 2DDE;ETHIOPIC SYLLABLE GYO;Lo;0;L;;;;;N;;;;; 2E00;RIGHT ANGLE SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; 2E01;RIGHT ANGLE DOTTED SUBSTITUTION MARKER;Po;0;ON;;;;;N;;;;; 2E02;LEFT SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; 2E03;RIGHT SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; 2E04;LEFT DOTTED SUBSTITUTION BRACKET;Pi;0;ON;;;;;Y;;;;; 2E05;RIGHT DOTTED SUBSTITUTION BRACKET;Pf;0;ON;;;;;Y;;;;; 2E06;RAISED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; 2E07;RAISED DOTTED INTERPOLATION MARKER;Po;0;ON;;;;;N;;;;; 2E08;DOTTED TRANSPOSITION MARKER;Po;0;ON;;;;;N;;;;; 2E09;LEFT TRANSPOSITION BRACKET;Pi;0;ON;;;;;Y;;;;; 2E0A;RIGHT TRANSPOSITION BRACKET;Pf;0;ON;;;;;Y;;;;; 2E0B;RAISED SQUARE;Po;0;ON;;;;;N;;;;; 2E0C;LEFT RAISED OMISSION BRACKET;Pi;0;ON;;;;;Y;;;;; 2E0D;RIGHT RAISED OMISSION BRACKET;Pf;0;ON;;;;;Y;;;;; 2E0E;EDITORIAL CORONIS;Po;0;ON;;;;;N;;;;; 2E0F;PARAGRAPHOS;Po;0;ON;;;;;N;;;;; 2E10;FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; 2E11;REVERSED FORKED PARAGRAPHOS;Po;0;ON;;;;;N;;;;; 2E12;HYPODIASTOLE;Po;0;ON;;;;;N;;;;; 2E13;DOTTED OBELOS;Po;0;ON;;;;;N;;;;; 2E14;DOWNWARDS ANCORA;Po;0;ON;;;;;N;;;;; 2E15;UPWARDS ANCORA;Po;0;ON;;;;;N;;;;; 2E16;DOTTED RIGHT-POINTING ANGLE;Po;0;ON;;;;;N;;;;; 2E17;DOUBLE OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;; 2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;; 2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;; 2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;; 2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;; 2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;; 2E83;CJK RADICAL SECOND TWO;So;0;ON;;;;;N;;;;; 2E84;CJK RADICAL SECOND THREE;So;0;ON;;;;;N;;;;; 2E85;CJK RADICAL PERSON;So;0;ON;;;;;N;;;;; 2E86;CJK RADICAL BOX;So;0;ON;;;;;N;;;;; 2E87;CJK RADICAL TABLE;So;0;ON;;;;;N;;;;; 2E88;CJK RADICAL KNIFE ONE;So;0;ON;;;;;N;;;;; 2E89;CJK RADICAL KNIFE TWO;So;0;ON;;;;;N;;;;; 2E8A;CJK RADICAL DIVINATION;So;0;ON;;;;;N;;;;; 2E8B;CJK RADICAL SEAL;So;0;ON;;;;;N;;;;; 2E8C;CJK RADICAL SMALL ONE;So;0;ON;;;;;N;;;;; 2E8D;CJK RADICAL SMALL TWO;So;0;ON;;;;;N;;;;; 2E8E;CJK RADICAL LAME ONE;So;0;ON;;;;;N;;;;; 2E8F;CJK RADICAL LAME TWO;So;0;ON;;;;;N;;;;; 2E90;CJK RADICAL LAME THREE;So;0;ON;;;;;N;;;;; 2E91;CJK RADICAL LAME FOUR;So;0;ON;;;;;N;;;;; 2E92;CJK RADICAL SNAKE;So;0;ON;;;;;N;;;;; 2E93;CJK RADICAL THREAD;So;0;ON;;;;;N;;;;; 2E94;CJK RADICAL SNOUT ONE;So;0;ON;;;;;N;;;;; 2E95;CJK RADICAL SNOUT TWO;So;0;ON;;;;;N;;;;; 2E96;CJK RADICAL HEART ONE;So;0;ON;;;;;N;;;;; 2E97;CJK RADICAL HEART TWO;So;0;ON;;;;;N;;;;; 2E98;CJK RADICAL HAND;So;0;ON;;;;;N;;;;; 2E99;CJK RADICAL RAP;So;0;ON;;;;;N;;;;; 2E9B;CJK RADICAL CHOKE;So;0;ON;;;;;N;;;;; 2E9C;CJK RADICAL SUN;So;0;ON;;;;;N;;;;; 2E9D;CJK RADICAL MOON;So;0;ON;;;;;N;;;;; 2E9E;CJK RADICAL DEATH;So;0;ON;;;;;N;;;;; 2E9F;CJK RADICAL MOTHER;So;0;ON; 6BCD;;;;N;;;;; 2EA0;CJK RADICAL CIVILIAN;So;0;ON;;;;;N;;;;; 2EA1;CJK RADICAL WATER ONE;So;0;ON;;;;;N;;;;; 2EA2;CJK RADICAL WATER TWO;So;0;ON;;;;;N;;;;; 2EA3;CJK RADICAL FIRE;So;0;ON;;;;;N;;;;; 2EA4;CJK RADICAL PAW ONE;So;0;ON;;;;;N;;;;; 2EA5;CJK RADICAL PAW TWO;So;0;ON;;;;;N;;;;; 2EA6;CJK RADICAL SIMPLIFIED HALF TREE TRUNK;So;0;ON;;;;;N;;;;; 2EA7;CJK RADICAL COW;So;0;ON;;;;;N;;;;; 2EA8;CJK RADICAL DOG;So;0;ON;;;;;N;;;;; 2EA9;CJK RADICAL JADE;So;0;ON;;;;;N;;;;; 2EAA;CJK RADICAL BOLT OF CLOTH;So;0;ON;;;;;N;;;;; 2EAB;CJK RADICAL EYE;So;0;ON;;;;;N;;;;; 2EAC;CJK RADICAL SPIRIT ONE;So;0;ON;;;;;N;;;;; 2EAD;CJK RADICAL SPIRIT TWO;So;0;ON;;;;;N;;;;; 2EAE;CJK RADICAL BAMBOO;So;0;ON;;;;;N;;;;; 2EAF;CJK RADICAL SILK;So;0;ON;;;;;N;;;;; 2EB0;CJK RADICAL C-SIMPLIFIED SILK;So;0;ON;;;;;N;;;;; 2EB1;CJK RADICAL NET ONE;So;0;ON;;;;;N;;;;; 2EB2;CJK RADICAL NET TWO;So;0;ON;;;;;N;;;;; 2EB3;CJK RADICAL NET THREE;So;0;ON;;;;;N;;;;; 2EB4;CJK RADICAL NET FOUR;So;0;ON;;;;;N;;;;; 2EB5;CJK RADICAL MESH;So;0;ON;;;;;N;;;;; 2EB6;CJK RADICAL SHEEP;So;0;ON;;;;;N;;;;; 2EB7;CJK RADICAL RAM;So;0;ON;;;;;N;;;;; 2EB8;CJK RADICAL EWE;So;0;ON;;;;;N;;;;; 2EB9;CJK RADICAL OLD;So;0;ON;;;;;N;;;;; 2EBA;CJK RADICAL BRUSH ONE;So;0;ON;;;;;N;;;;; 2EBB;CJK RADICAL BRUSH TWO;So;0;ON;;;;;N;;;;; 2EBC;CJK RADICAL MEAT;So;0;ON;;;;;N;;;;; 2EBD;CJK RADICAL MORTAR;So;0;ON;;;;;N;;;;; 2EBE;CJK RADICAL GRASS ONE;So;0;ON;;;;;N;;;;; 2EBF;CJK RADICAL GRASS TWO;So;0;ON;;;;;N;;;;; 2EC0;CJK RADICAL GRASS THREE;So;0;ON;;;;;N;;;;; 2EC1;CJK RADICAL TIGER;So;0;ON;;;;;N;;;;; 2EC2;CJK RADICAL CLOTHES;So;0;ON;;;;;N;;;;; 2EC3;CJK RADICAL WEST ONE;So;0;ON;;;;;N;;;;; 2EC4;CJK RADICAL WEST TWO;So;0;ON;;;;;N;;;;; 2EC5;CJK RADICAL C-SIMPLIFIED SEE;So;0;ON;;;;;N;;;;; 2EC6;CJK RADICAL SIMPLIFIED HORN;So;0;ON;;;;;N;;;;; 2EC7;CJK RADICAL HORN;So;0;ON;;;;;N;;;;; 2EC8;CJK RADICAL C-SIMPLIFIED SPEECH;So;0;ON;;;;;N;;;;; 2EC9;CJK RADICAL C-SIMPLIFIED SHELL;So;0;ON;;;;;N;;;;; 2ECA;CJK RADICAL FOOT;So;0;ON;;;;;N;;;;; 2ECB;CJK RADICAL C-SIMPLIFIED CART;So;0;ON;;;;;N;;;;; 2ECC;CJK RADICAL SIMPLIFIED WALK;So;0;ON;;;;;N;;;;; 2ECD;CJK RADICAL WALK ONE;So;0;ON;;;;;N;;;;; 2ECE;CJK RADICAL WALK TWO;So;0;ON;;;;;N;;;;; 2ECF;CJK RADICAL CITY;So;0;ON;;;;;N;;;;; 2ED0;CJK RADICAL C-SIMPLIFIED GOLD;So;0;ON;;;;;N;;;;; 2ED1;CJK RADICAL LONG ONE;So;0;ON;;;;;N;;;;; 2ED2;CJK RADICAL LONG TWO;So;0;ON;;;;;N;;;;; 2ED3;CJK RADICAL C-SIMPLIFIED LONG;So;0;ON;;;;;N;;;;; 2ED4;CJK RADICAL C-SIMPLIFIED GATE;So;0;ON;;;;;N;;;;; 2ED5;CJK RADICAL MOUND ONE;So;0;ON;;;;;N;;;;; 2ED6;CJK RADICAL MOUND TWO;So;0;ON;;;;;N;;;;; 2ED7;CJK RADICAL RAIN;So;0;ON;;;;;N;;;;; 2ED8;CJK RADICAL BLUE;So;0;ON;;;;;N;;;;; 2ED9;CJK RADICAL C-SIMPLIFIED TANNED LEATHER;So;0;ON;;;;;N;;;;; 2EDA;CJK RADICAL C-SIMPLIFIED LEAF;So;0;ON;;;;;N;;;;; 2EDB;CJK RADICAL C-SIMPLIFIED WIND;So;0;ON;;;;;N;;;;; 2EDC;CJK RADICAL C-SIMPLIFIED FLY;So;0;ON;;;;;N;;;;; 2EDD;CJK RADICAL EAT ONE;So;0;ON;;;;;N;;;;; 2EDE;CJK RADICAL EAT TWO;So;0;ON;;;;;N;;;;; 2EDF;CJK RADICAL EAT THREE;So;0;ON;;;;;N;;;;; 2EE0;CJK RADICAL C-SIMPLIFIED EAT;So;0;ON;;;;;N;;;;; 2EE1;CJK RADICAL HEAD;So;0;ON;;;;;N;;;;; 2EE2;CJK RADICAL C-SIMPLIFIED HORSE;So;0;ON;;;;;N;;;;; 2EE3;CJK RADICAL BONE;So;0;ON;;;;;N;;;;; 2EE4;CJK RADICAL GHOST;So;0;ON;;;;;N;;;;; 2EE5;CJK RADICAL C-SIMPLIFIED FISH;So;0;ON;;;;;N;;;;; 2EE6;CJK RADICAL C-SIMPLIFIED BIRD;So;0;ON;;;;;N;;;;; 2EE7;CJK RADICAL C-SIMPLIFIED SALT;So;0;ON;;;;;N;;;;; 2EE8;CJK RADICAL SIMPLIFIED WHEAT;So;0;ON;;;;;N;;;;; 2EE9;CJK RADICAL SIMPLIFIED YELLOW;So;0;ON;;;;;N;;;;; 2EEA;CJK RADICAL C-SIMPLIFIED FROG;So;0;ON;;;;;N;;;;; 2EEB;CJK RADICAL J-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; 2EEC;CJK RADICAL C-SIMPLIFIED EVEN;So;0;ON;;;;;N;;;;; 2EED;CJK RADICAL J-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; 2EEE;CJK RADICAL C-SIMPLIFIED TOOTH;So;0;ON;;;;;N;;;;; 2EEF;CJK RADICAL J-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; 2EF0;CJK RADICAL C-SIMPLIFIED DRAGON;So;0;ON;;;;;N;;;;; 2EF1;CJK RADICAL TURTLE;So;0;ON;;;;;N;;;;; 2EF2;CJK RADICAL J-SIMPLIFIED TURTLE;So;0;ON;;;;;N;;;;; 2EF3;CJK RADICAL C-SIMPLIFIED TURTLE;So;0;ON; 9F9F;;;;N;;;;; 2F00;KANGXI RADICAL ONE;So;0;ON; 4E00;;;;N;;;;; 2F01;KANGXI RADICAL LINE;So;0;ON; 4E28;;;;N;;;;; 2F02;KANGXI RADICAL DOT;So;0;ON; 4E36;;;;N;;;;; 2F03;KANGXI RADICAL SLASH;So;0;ON; 4E3F;;;;N;;;;; 2F04;KANGXI RADICAL SECOND;So;0;ON; 4E59;;;;N;;;;; 2F05;KANGXI RADICAL HOOK;So;0;ON; 4E85;;;;N;;;;; 2F06;KANGXI RADICAL TWO;So;0;ON; 4E8C;;;;N;;;;; 2F07;KANGXI RADICAL LID;So;0;ON; 4EA0;;;;N;;;;; 2F08;KANGXI RADICAL MAN;So;0;ON; 4EBA;;;;N;;;;; 2F09;KANGXI RADICAL LEGS;So;0;ON; 513F;;;;N;;;;; 2F0A;KANGXI RADICAL ENTER;So;0;ON; 5165;;;;N;;;;; 2F0B;KANGXI RADICAL EIGHT;So;0;ON; 516B;;;;N;;;;; 2F0C;KANGXI RADICAL DOWN BOX;So;0;ON; 5182;;;;N;;;;; 2F0D;KANGXI RADICAL COVER;So;0;ON; 5196;;;;N;;;;; 2F0E;KANGXI RADICAL ICE;So;0;ON; 51AB;;;;N;;;;; 2F0F;KANGXI RADICAL TABLE;So;0;ON; 51E0;;;;N;;;;; 2F10;KANGXI RADICAL OPEN BOX;So;0;ON; 51F5;;;;N;;;;; 2F11;KANGXI RADICAL KNIFE;So;0;ON; 5200;;;;N;;;;; 2F12;KANGXI RADICAL POWER;So;0;ON; 529B;;;;N;;;;; 2F13;KANGXI RADICAL WRAP;So;0;ON; 52F9;;;;N;;;;; 2F14;KANGXI RADICAL SPOON;So;0;ON; 5315;;;;N;;;;; 2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON; 531A;;;;N;;;;; 2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON; 5338;;;;N;;;;; 2F17;KANGXI RADICAL TEN;So;0;ON; 5341;;;;N;;;;; 2F18;KANGXI RADICAL DIVINATION;So;0;ON; 535C;;;;N;;;;; 2F19;KANGXI RADICAL SEAL;So;0;ON; 5369;;;;N;;;;; 2F1A;KANGXI RADICAL CLIFF;So;0;ON; 5382;;;;N;;;;; 2F1B;KANGXI RADICAL PRIVATE;So;0;ON; 53B6;;;;N;;;;; 2F1C;KANGXI RADICAL AGAIN;So;0;ON; 53C8;;;;N;;;;; 2F1D;KANGXI RADICAL MOUTH;So;0;ON; 53E3;;;;N;;;;; 2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON; 56D7;;;;N;;;;; 2F1F;KANGXI RADICAL EARTH;So;0;ON; 571F;;;;N;;;;; 2F20;KANGXI RADICAL SCHOLAR;So;0;ON; 58EB;;;;N;;;;; 2F21;KANGXI RADICAL GO;So;0;ON; 5902;;;;N;;;;; 2F22;KANGXI RADICAL GO SLOWLY;So;0;ON; 590A;;;;N;;;;; 2F23;KANGXI RADICAL EVENING;So;0;ON; 5915;;;;N;;;;; 2F24;KANGXI RADICAL BIG;So;0;ON; 5927;;;;N;;;;; 2F25;KANGXI RADICAL WOMAN;So;0;ON; 5973;;;;N;;;;; 2F26;KANGXI RADICAL CHILD;So;0;ON; 5B50;;;;N;;;;; 2F27;KANGXI RADICAL ROOF;So;0;ON; 5B80;;;;N;;;;; 2F28;KANGXI RADICAL INCH;So;0;ON; 5BF8;;;;N;;;;; 2F29;KANGXI RADICAL SMALL;So;0;ON; 5C0F;;;;N;;;;; 2F2A;KANGXI RADICAL LAME;So;0;ON; 5C22;;;;N;;;;; 2F2B;KANGXI RADICAL CORPSE;So;0;ON; 5C38;;;;N;;;;; 2F2C;KANGXI RADICAL SPROUT;So;0;ON; 5C6E;;;;N;;;;; 2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON; 5C71;;;;N;;;;; 2F2E;KANGXI RADICAL RIVER;So;0;ON; 5DDB;;;;N;;;;; 2F2F;KANGXI RADICAL WORK;So;0;ON; 5DE5;;;;N;;;;; 2F30;KANGXI RADICAL ONESELF;So;0;ON; 5DF1;;;;N;;;;; 2F31;KANGXI RADICAL TURBAN;So;0;ON; 5DFE;;;;N;;;;; 2F32;KANGXI RADICAL DRY;So;0;ON; 5E72;;;;N;;;;; 2F33;KANGXI RADICAL SHORT THREAD;So;0;ON; 5E7A;;;;N;;;;; 2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON; 5E7F;;;;N;;;;; 2F35;KANGXI RADICAL LONG STRIDE;So;0;ON; 5EF4;;;;N;;;;; 2F36;KANGXI RADICAL TWO HANDS;So;0;ON; 5EFE;;;;N;;;;; 2F37;KANGXI RADICAL SHOOT;So;0;ON; 5F0B;;;;N;;;;; 2F38;KANGXI RADICAL BOW;So;0;ON; 5F13;;;;N;;;;; 2F39;KANGXI RADICAL SNOUT;So;0;ON; 5F50;;;;N;;;;; 2F3A;KANGXI RADICAL BRISTLE;So;0;ON; 5F61;;;;N;;;;; 2F3B;KANGXI RADICAL STEP;So;0;ON; 5F73;;;;N;;;;; 2F3C;KANGXI RADICAL HEART;So;0;ON; 5FC3;;;;N;;;;; 2F3D;KANGXI RADICAL HALBERD;So;0;ON; 6208;;;;N;;;;; 2F3E;KANGXI RADICAL DOOR;So;0;ON; 6236;;;;N;;;;; 2F3F;KANGXI RADICAL HAND;So;0;ON; 624B;;;;N;;;;; 2F40;KANGXI RADICAL BRANCH;So;0;ON; 652F;;;;N;;;;; 2F41;KANGXI RADICAL RAP;So;0;ON; 6534;;;;N;;;;; 2F42;KANGXI RADICAL SCRIPT;So;0;ON; 6587;;;;N;;;;; 2F43;KANGXI RADICAL DIPPER;So;0;ON; 6597;;;;N;;;;; 2F44;KANGXI RADICAL AXE;So;0;ON; 65A4;;;;N;;;;; 2F45;KANGXI RADICAL SQUARE;So;0;ON; 65B9;;;;N;;;;; 2F46;KANGXI RADICAL NOT;So;0;ON; 65E0;;;;N;;;;; 2F47;KANGXI RADICAL SUN;So;0;ON; 65E5;;;;N;;;;; 2F48;KANGXI RADICAL SAY;So;0;ON; 66F0;;;;N;;;;; 2F49;KANGXI RADICAL MOON;So;0;ON; 6708;;;;N;;;;; 2F4A;KANGXI RADICAL TREE;So;0;ON; 6728;;;;N;;;;; 2F4B;KANGXI RADICAL LACK;So;0;ON; 6B20;;;;N;;;;; 2F4C;KANGXI RADICAL STOP;So;0;ON; 6B62;;;;N;;;;; 2F4D;KANGXI RADICAL DEATH;So;0;ON; 6B79;;;;N;;;;; 2F4E;KANGXI RADICAL WEAPON;So;0;ON; 6BB3;;;;N;;;;; 2F4F;KANGXI RADICAL DO NOT;So;0;ON; 6BCB;;;;N;;;;; 2F50;KANGXI RADICAL COMPARE;So;0;ON; 6BD4;;;;N;;;;; 2F51;KANGXI RADICAL FUR;So;0;ON; 6BDB;;;;N;;;;; 2F52;KANGXI RADICAL CLAN;So;0;ON; 6C0F;;;;N;;;;; 2F53;KANGXI RADICAL STEAM;So;0;ON; 6C14;;;;N;;;;; 2F54;KANGXI RADICAL WATER;So;0;ON; 6C34;;;;N;;;;; 2F55;KANGXI RADICAL FIRE;So;0;ON; 706B;;;;N;;;;; 2F56;KANGXI RADICAL CLAW;So;0;ON; 722A;;;;N;;;;; 2F57;KANGXI RADICAL FATHER;So;0;ON; 7236;;;;N;;;;; 2F58;KANGXI RADICAL DOUBLE X;So;0;ON; 723B;;;;N;;;;; 2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON; 723F;;;;N;;;;; 2F5A;KANGXI RADICAL SLICE;So;0;ON; 7247;;;;N;;;;; 2F5B;KANGXI RADICAL FANG;So;0;ON; 7259;;;;N;;;;; 2F5C;KANGXI RADICAL COW;So;0;ON; 725B;;;;N;;;;; 2F5D;KANGXI RADICAL DOG;So;0;ON; 72AC;;;;N;;;;; 2F5E;KANGXI RADICAL PROFOUND;So;0;ON; 7384;;;;N;;;;; 2F5F;KANGXI RADICAL JADE;So;0;ON; 7389;;;;N;;;;; 2F60;KANGXI RADICAL MELON;So;0;ON; 74DC;;;;N;;;;; 2F61;KANGXI RADICAL TILE;So;0;ON; 74E6;;;;N;;;;; 2F62;KANGXI RADICAL SWEET;So;0;ON; 7518;;;;N;;;;; 2F63;KANGXI RADICAL LIFE;So;0;ON; 751F;;;;N;;;;; 2F64;KANGXI RADICAL USE;So;0;ON; 7528;;;;N;;;;; 2F65;KANGXI RADICAL FIELD;So;0;ON; 7530;;;;N;;;;; 2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON; 758B;;;;N;;;;; 2F67;KANGXI RADICAL SICKNESS;So;0;ON; 7592;;;;N;;;;; 2F68;KANGXI RADICAL DOTTED TENT;So;0;ON; 7676;;;;N;;;;; 2F69;KANGXI RADICAL WHITE;So;0;ON; 767D;;;;N;;;;; 2F6A;KANGXI RADICAL SKIN;So;0;ON; 76AE;;;;N;;;;; 2F6B;KANGXI RADICAL DISH;So;0;ON; 76BF;;;;N;;;;; 2F6C;KANGXI RADICAL EYE;So;0;ON; 76EE;;;;N;;;;; 2F6D;KANGXI RADICAL SPEAR;So;0;ON; 77DB;;;;N;;;;; 2F6E;KANGXI RADICAL ARROW;So;0;ON; 77E2;;;;N;;;;; 2F6F;KANGXI RADICAL STONE;So;0;ON; 77F3;;;;N;;;;; 2F70;KANGXI RADICAL SPIRIT;So;0;ON; 793A;;;;N;;;;; 2F71;KANGXI RADICAL TRACK;So;0;ON; 79B8;;;;N;;;;; 2F72;KANGXI RADICAL GRAIN;So;0;ON; 79BE;;;;N;;;;; 2F73;KANGXI RADICAL CAVE;So;0;ON; 7A74;;;;N;;;;; 2F74;KANGXI RADICAL STAND;So;0;ON; 7ACB;;;;N;;;;; 2F75;KANGXI RADICAL BAMBOO;So;0;ON; 7AF9;;;;N;;;;; 2F76;KANGXI RADICAL RICE;So;0;ON; 7C73;;;;N;;;;; 2F77;KANGXI RADICAL SILK;So;0;ON; 7CF8;;;;N;;;;; 2F78;KANGXI RADICAL JAR;So;0;ON; 7F36;;;;N;;;;; 2F79;KANGXI RADICAL NET;So;0;ON; 7F51;;;;N;;;;; 2F7A;KANGXI RADICAL SHEEP;So;0;ON; 7F8A;;;;N;;;;; 2F7B;KANGXI RADICAL FEATHER;So;0;ON; 7FBD;;;;N;;;;; 2F7C;KANGXI RADICAL OLD;So;0;ON; 8001;;;;N;;;;; 2F7D;KANGXI RADICAL AND;So;0;ON; 800C;;;;N;;;;; 2F7E;KANGXI RADICAL PLOW;So;0;ON; 8012;;;;N;;;;; 2F7F;KANGXI RADICAL EAR;So;0;ON; 8033;;;;N;;;;; 2F80;KANGXI RADICAL BRUSH;So;0;ON; 807F;;;;N;;;;; 2F81;KANGXI RADICAL MEAT;So;0;ON; 8089;;;;N;;;;; 2F82;KANGXI RADICAL MINISTER;So;0;ON; 81E3;;;;N;;;;; 2F83;KANGXI RADICAL SELF;So;0;ON; 81EA;;;;N;;;;; 2F84;KANGXI RADICAL ARRIVE;So;0;ON; 81F3;;;;N;;;;; 2F85;KANGXI RADICAL MORTAR;So;0;ON; 81FC;;;;N;;;;; 2F86;KANGXI RADICAL TONGUE;So;0;ON; 820C;;;;N;;;;; 2F87;KANGXI RADICAL OPPOSE;So;0;ON; 821B;;;;N;;;;; 2F88;KANGXI RADICAL BOAT;So;0;ON; 821F;;;;N;;;;; 2F89;KANGXI RADICAL STOPPING;So;0;ON; 826E;;;;N;;;;; 2F8A;KANGXI RADICAL COLOR;So;0;ON; 8272;;;;N;;;;; 2F8B;KANGXI RADICAL GRASS;So;0;ON; 8278;;;;N;;;;; 2F8C;KANGXI RADICAL TIGER;So;0;ON; 864D;;;;N;;;;; 2F8D;KANGXI RADICAL INSECT;So;0;ON; 866B;;;;N;;;;; 2F8E;KANGXI RADICAL BLOOD;So;0;ON; 8840;;;;N;;;;; 2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON; 884C;;;;N;;;;; 2F90;KANGXI RADICAL CLOTHES;So;0;ON; 8863;;;;N;;;;; 2F91;KANGXI RADICAL WEST;So;0;ON; 897E;;;;N;;;;; 2F92;KANGXI RADICAL SEE;So;0;ON; 898B;;;;N;;;;; 2F93;KANGXI RADICAL HORN;So;0;ON; 89D2;;;;N;;;;; 2F94;KANGXI RADICAL SPEECH;So;0;ON; 8A00;;;;N;;;;; 2F95;KANGXI RADICAL VALLEY;So;0;ON; 8C37;;;;N;;;;; 2F96;KANGXI RADICAL BEAN;So;0;ON; 8C46;;;;N;;;;; 2F97;KANGXI RADICAL PIG;So;0;ON; 8C55;;;;N;;;;; 2F98;KANGXI RADICAL BADGER;So;0;ON; 8C78;;;;N;;;;; 2F99;KANGXI RADICAL SHELL;So;0;ON; 8C9D;;;;N;;;;; 2F9A;KANGXI RADICAL RED;So;0;ON; 8D64;;;;N;;;;; 2F9B;KANGXI RADICAL RUN;So;0;ON; 8D70;;;;N;;;;; 2F9C;KANGXI RADICAL FOOT;So;0;ON; 8DB3;;;;N;;;;; 2F9D;KANGXI RADICAL BODY;So;0;ON; 8EAB;;;;N;;;;; 2F9E;KANGXI RADICAL CART;So;0;ON; 8ECA;;;;N;;;;; 2F9F;KANGXI RADICAL BITTER;So;0;ON; 8F9B;;;;N;;;;; 2FA0;KANGXI RADICAL MORNING;So;0;ON; 8FB0;;;;N;;;;; 2FA1;KANGXI RADICAL WALK;So;0;ON; 8FB5;;;;N;;;;; 2FA2;KANGXI RADICAL CITY;So;0;ON; 9091;;;;N;;;;; 2FA3;KANGXI RADICAL WINE;So;0;ON; 9149;;;;N;;;;; 2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON; 91C6;;;;N;;;;; 2FA5;KANGXI RADICAL VILLAGE;So;0;ON; 91CC;;;;N;;;;; 2FA6;KANGXI RADICAL GOLD;So;0;ON; 91D1;;;;N;;;;; 2FA7;KANGXI RADICAL LONG;So;0;ON; 9577;;;;N;;;;; 2FA8;KANGXI RADICAL GATE;So;0;ON; 9580;;;;N;;;;; 2FA9;KANGXI RADICAL MOUND;So;0;ON; 961C;;;;N;;;;; 2FAA;KANGXI RADICAL SLAVE;So;0;ON; 96B6;;;;N;;;;; 2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON; 96B9;;;;N;;;;; 2FAC;KANGXI RADICAL RAIN;So;0;ON; 96E8;;;;N;;;;; 2FAD;KANGXI RADICAL BLUE;So;0;ON; 9751;;;;N;;;;; 2FAE;KANGXI RADICAL WRONG;So;0;ON; 975E;;;;N;;;;; 2FAF;KANGXI RADICAL FACE;So;0;ON; 9762;;;;N;;;;; 2FB0;KANGXI RADICAL LEATHER;So;0;ON; 9769;;;;N;;;;; 2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON; 97CB;;;;N;;;;; 2FB2;KANGXI RADICAL LEEK;So;0;ON; 97ED;;;;N;;;;; 2FB3;KANGXI RADICAL SOUND;So;0;ON; 97F3;;;;N;;;;; 2FB4;KANGXI RADICAL LEAF;So;0;ON; 9801;;;;N;;;;; 2FB5;KANGXI RADICAL WIND;So;0;ON; 98A8;;;;N;;;;; 2FB6;KANGXI RADICAL FLY;So;0;ON; 98DB;;;;N;;;;; 2FB7;KANGXI RADICAL EAT;So;0;ON; 98DF;;;;N;;;;; 2FB8;KANGXI RADICAL HEAD;So;0;ON; 9996;;;;N;;;;; 2FB9;KANGXI RADICAL FRAGRANT;So;0;ON; 9999;;;;N;;;;; 2FBA;KANGXI RADICAL HORSE;So;0;ON; 99AC;;;;N;;;;; 2FBB;KANGXI RADICAL BONE;So;0;ON; 9AA8;;;;N;;;;; 2FBC;KANGXI RADICAL TALL;So;0;ON; 9AD8;;;;N;;;;; 2FBD;KANGXI RADICAL HAIR;So;0;ON; 9ADF;;;;N;;;;; 2FBE;KANGXI RADICAL FIGHT;So;0;ON; 9B25;;;;N;;;;; 2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON; 9B2F;;;;N;;;;; 2FC0;KANGXI RADICAL CAULDRON;So;0;ON; 9B32;;;;N;;;;; 2FC1;KANGXI RADICAL GHOST;So;0;ON; 9B3C;;;;N;;;;; 2FC2;KANGXI RADICAL FISH;So;0;ON; 9B5A;;;;N;;;;; 2FC3;KANGXI RADICAL BIRD;So;0;ON; 9CE5;;;;N;;;;; 2FC4;KANGXI RADICAL SALT;So;0;ON; 9E75;;;;N;;;;; 2FC5;KANGXI RADICAL DEER;So;0;ON; 9E7F;;;;N;;;;; 2FC6;KANGXI RADICAL WHEAT;So;0;ON; 9EA5;;;;N;;;;; 2FC7;KANGXI RADICAL HEMP;So;0;ON; 9EBB;;;;N;;;;; 2FC8;KANGXI RADICAL YELLOW;So;0;ON; 9EC3;;;;N;;;;; 2FC9;KANGXI RADICAL MILLET;So;0;ON; 9ECD;;;;N;;;;; 2FCA;KANGXI RADICAL BLACK;So;0;ON; 9ED1;;;;N;;;;; 2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON; 9EF9;;;;N;;;;; 2FCC;KANGXI RADICAL FROG;So;0;ON; 9EFD;;;;N;;;;; 2FCD;KANGXI RADICAL TRIPOD;So;0;ON; 9F0E;;;;N;;;;; 2FCE;KANGXI RADICAL DRUM;So;0;ON; 9F13;;;;N;;;;; 2FCF;KANGXI RADICAL RAT;So;0;ON; 9F20;;;;N;;;;; 2FD0;KANGXI RADICAL NOSE;So;0;ON; 9F3B;;;;N;;;;; 2FD1;KANGXI RADICAL EVEN;So;0;ON; 9F4A;;;;N;;;;; 2FD2;KANGXI RADICAL TOOTH;So;0;ON; 9F52;;;;N;;;;; 2FD3;KANGXI RADICAL DRAGON;So;0;ON; 9F8D;;;;N;;;;; 2FD4;KANGXI RADICAL TURTLE;So;0;ON; 9F9C;;;;N;;;;; 2FD5;KANGXI RADICAL FLUTE;So;0;ON; 9FA0;;;;N;;;;; 2FF0;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT;So;0;ON;;;;;N;;;;; 2FF1;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO BELOW;So;0;ON;;;;;N;;;;; 2FF2;IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO MIDDLE AND RIGHT;So;0;ON;;;;;N;;;;; 2FF3;IDEOGRAPHIC DESCRIPTION CHARACTER ABOVE TO MIDDLE AND BELOW;So;0;ON;;;;;N;;;;; 2FF4;IDEOGRAPHIC DESCRIPTION CHARACTER FULL SURROUND;So;0;ON;;;;;N;;;;; 2FF5;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM ABOVE;So;0;ON;;;;;N;;;;; 2FF6;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM BELOW;So;0;ON;;;;;N;;;;; 2FF7;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LEFT;So;0;ON;;;;;N;;;;; 2FF8;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER LEFT;So;0;ON;;;;;N;;;;; 2FF9;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM UPPER RIGHT;So;0;ON;;;;;N;;;;; 2FFA;IDEOGRAPHIC DESCRIPTION CHARACTER SURROUND FROM LOWER LEFT;So;0;ON;;;;;N;;;;; 2FFB;IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID;So;0;ON;;;;;N;;;;; 3000;IDEOGRAPHIC SPACE;Zs;0;WS; 0020;;;;N;;;;; 3001;IDEOGRAPHIC COMMA;Po;0;ON;;;;;N;;;;; 3002;IDEOGRAPHIC FULL STOP;Po;0;ON;;;;;N;IDEOGRAPHIC PERIOD;;;; 3003;DITTO MARK;Po;0;ON;;;;;N;;;;; 3004;JAPANESE INDUSTRIAL STANDARD SYMBOL;So;0;ON;;;;;N;;;;; 3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; 3006;IDEOGRAPHIC CLOSING MARK;Lo;0;L;;;;;N;;;;; 3007;IDEOGRAPHIC NUMBER ZERO;Nl;0;L;;;;0;N;;;;; 3008;LEFT ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING ANGLE BRACKET;;;; 3009;RIGHT ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING ANGLE BRACKET;;;; 300A;LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;;;;;Y;OPENING DOUBLE ANGLE BRACKET;;;; 300B;RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;;;;;Y;CLOSING DOUBLE ANGLE BRACKET;;;; 300C;LEFT CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING CORNER BRACKET;;;; 300D;RIGHT CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING CORNER BRACKET;;;; 300E;LEFT WHITE CORNER BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE CORNER BRACKET;;;; 300F;RIGHT WHITE CORNER BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE CORNER BRACKET;;;; 3010;LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING BLACK LENTICULAR BRACKET;;;; 3011;RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING BLACK LENTICULAR BRACKET;;;; 3012;POSTAL MARK;So;0;ON;;;;;N;;;;; 3013;GETA MARK;So;0;ON;;;;;N;;;;; 3014;LEFT TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING TORTOISE SHELL BRACKET;;;; 3015;RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING TORTOISE SHELL BRACKET;;;; 3016;LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE LENTICULAR BRACKET;;;; 3017;RIGHT WHITE LENTICULAR BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE LENTICULAR BRACKET;;;; 3018;LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE TORTOISE SHELL BRACKET;;;; 3019;RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE TORTOISE SHELL BRACKET;;;; 301A;LEFT WHITE SQUARE BRACKET;Ps;0;ON;;;;;Y;OPENING WHITE SQUARE BRACKET;;;; 301B;RIGHT WHITE SQUARE BRACKET;Pe;0;ON;;;;;Y;CLOSING WHITE SQUARE BRACKET;;;; 301C;WAVE DASH;Pd;0;ON;;;;;N;;;;; 301D;REVERSED DOUBLE PRIME QUOTATION MARK;Ps;0;ON;;;;;Y;;;;; 301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;Y;;;;; 301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;Y;;;;; 3020;POSTAL MARK FACE;So;0;ON;;;;;N;;;;; 3021;HANGZHOU NUMERAL ONE;Nl;0;L;;;;1;N;;;;; 3022;HANGZHOU NUMERAL TWO;Nl;0;L;;;;2;N;;;;; 3023;HANGZHOU NUMERAL THREE;Nl;0;L;;;;3;N;;;;; 3024;HANGZHOU NUMERAL FOUR;Nl;0;L;;;;4;N;;;;; 3025;HANGZHOU NUMERAL FIVE;Nl;0;L;;;;5;N;;;;; 3026;HANGZHOU NUMERAL SIX;Nl;0;L;;;;6;N;;;;; 3027;HANGZHOU NUMERAL SEVEN;Nl;0;L;;;;7;N;;;;; 3028;HANGZHOU NUMERAL EIGHT;Nl;0;L;;;;8;N;;;;; 3029;HANGZHOU NUMERAL NINE;Nl;0;L;;;;9;N;;;;; 302A;IDEOGRAPHIC LEVEL TONE MARK;Mn;218;NSM;;;;;N;;;;; 302B;IDEOGRAPHIC RISING TONE MARK;Mn;228;NSM;;;;;N;;;;; 302C;IDEOGRAPHIC DEPARTING TONE MARK;Mn;232;NSM;;;;;N;;;;; 302D;IDEOGRAPHIC ENTERING TONE MARK;Mn;222;NSM;;;;;N;;;;; 302E;HANGUL SINGLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; 302F;HANGUL DOUBLE DOT TONE MARK;Mn;224;NSM;;;;;N;;;;; 3030;WAVY DASH;Pd;0;ON;;;;;N;;;;; 3031;VERTICAL KANA REPEAT MARK;Lm;0;L;;;;;N;;;;; 3032;VERTICAL KANA REPEAT WITH VOICED SOUND MARK;Lm;0;L;;;;;N;;;;; 3033;VERTICAL KANA REPEAT MARK UPPER HALF;Lm;0;L;;;;;N;;;;; 3034;VERTICAL KANA REPEAT WITH VOICED SOUND MARK UPPER HALF;Lm;0;L;;;;;N;;;;; 3035;VERTICAL KANA REPEAT MARK LOWER HALF;Lm;0;L;;;;;N;;;;; 3036;CIRCLED POSTAL MARK;So;0;ON; 3012;;;;N;;;;; 3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;; 3038;HANGZHOU NUMERAL TEN;Nl;0;L; 5341;;;10;N;;;;; 3039;HANGZHOU NUMERAL TWENTY;Nl;0;L; 5344;;;20;N;;;;; 303A;HANGZHOU NUMERAL THIRTY;Nl;0;L; 5345;;;30;N;;;;; 303B;VERTICAL IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;; 303C;MASU MARK;Lo;0;L;;;;;N;;;;; 303D;PART ALTERNATION MARK;Po;0;ON;;;;;N;;;;; 303E;IDEOGRAPHIC VARIATION INDICATOR;So;0;ON;;;;;N;;;;; 303F;IDEOGRAPHIC HALF FILL SPACE;So;0;ON;;;;;N;;;;; 3041;HIRAGANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; 3042;HIRAGANA LETTER A;Lo;0;L;;;;;N;;;;; 3043;HIRAGANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; 3044;HIRAGANA LETTER I;Lo;0;L;;;;;N;;;;; 3045;HIRAGANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; 3046;HIRAGANA LETTER U;Lo;0;L;;;;;N;;;;; 3047;HIRAGANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; 3048;HIRAGANA LETTER E;Lo;0;L;;;;;N;;;;; 3049;HIRAGANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; 304A;HIRAGANA LETTER O;Lo;0;L;;;;;N;;;;; 304B;HIRAGANA LETTER KA;Lo;0;L;;;;;N;;;;; 304C;HIRAGANA LETTER GA;Lo;0;L;304B 3099;;;;N;;;;; 304D;HIRAGANA LETTER KI;Lo;0;L;;;;;N;;;;; 304E;HIRAGANA LETTER GI;Lo;0;L;304D 3099;;;;N;;;;; 304F;HIRAGANA LETTER KU;Lo;0;L;;;;;N;;;;; 3050;HIRAGANA LETTER GU;Lo;0;L;304F 3099;;;;N;;;;; 3051;HIRAGANA LETTER KE;Lo;0;L;;;;;N;;;;; 3052;HIRAGANA LETTER GE;Lo;0;L;3051 3099;;;;N;;;;; 3053;HIRAGANA LETTER KO;Lo;0;L;;;;;N;;;;; 3054;HIRAGANA LETTER GO;Lo;0;L;3053 3099;;;;N;;;;; 3055;HIRAGANA LETTER SA;Lo;0;L;;;;;N;;;;; 3056;HIRAGANA LETTER ZA;Lo;0;L;3055 3099;;;;N;;;;; 3057;HIRAGANA LETTER SI;Lo;0;L;;;;;N;;;;; 3058;HIRAGANA LETTER ZI;Lo;0;L;3057 3099;;;;N;;;;; 3059;HIRAGANA LETTER SU;Lo;0;L;;;;;N;;;;; 305A;HIRAGANA LETTER ZU;Lo;0;L;3059 3099;;;;N;;;;; 305B;HIRAGANA LETTER SE;Lo;0;L;;;;;N;;;;; 305C;HIRAGANA LETTER ZE;Lo;0;L;305B 3099;;;;N;;;;; 305D;HIRAGANA LETTER SO;Lo;0;L;;;;;N;;;;; 305E;HIRAGANA LETTER ZO;Lo;0;L;305D 3099;;;;N;;;;; 305F;HIRAGANA LETTER TA;Lo;0;L;;;;;N;;;;; 3060;HIRAGANA LETTER DA;Lo;0;L;305F 3099;;;;N;;;;; 3061;HIRAGANA LETTER TI;Lo;0;L;;;;;N;;;;; 3062;HIRAGANA LETTER DI;Lo;0;L;3061 3099;;;;N;;;;; 3063;HIRAGANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; 3064;HIRAGANA LETTER TU;Lo;0;L;;;;;N;;;;; 3065;HIRAGANA LETTER DU;Lo;0;L;3064 3099;;;;N;;;;; 3066;HIRAGANA LETTER TE;Lo;0;L;;;;;N;;;;; 3067;HIRAGANA LETTER DE;Lo;0;L;3066 3099;;;;N;;;;; 3068;HIRAGANA LETTER TO;Lo;0;L;;;;;N;;;;; 3069;HIRAGANA LETTER DO;Lo;0;L;3068 3099;;;;N;;;;; 306A;HIRAGANA LETTER NA;Lo;0;L;;;;;N;;;;; 306B;HIRAGANA LETTER NI;Lo;0;L;;;;;N;;;;; 306C;HIRAGANA LETTER NU;Lo;0;L;;;;;N;;;;; 306D;HIRAGANA LETTER NE;Lo;0;L;;;;;N;;;;; 306E;HIRAGANA LETTER NO;Lo;0;L;;;;;N;;;;; 306F;HIRAGANA LETTER HA;Lo;0;L;;;;;N;;;;; 3070;HIRAGANA LETTER BA;Lo;0;L;306F 3099;;;;N;;;;; 3071;HIRAGANA LETTER PA;Lo;0;L;306F 309A;;;;N;;;;; 3072;HIRAGANA LETTER HI;Lo;0;L;;;;;N;;;;; 3073;HIRAGANA LETTER BI;Lo;0;L;3072 3099;;;;N;;;;; 3074;HIRAGANA LETTER PI;Lo;0;L;3072 309A;;;;N;;;;; 3075;HIRAGANA LETTER HU;Lo;0;L;;;;;N;;;;; 3076;HIRAGANA LETTER BU;Lo;0;L;3075 3099;;;;N;;;;; 3077;HIRAGANA LETTER PU;Lo;0;L;3075 309A;;;;N;;;;; 3078;HIRAGANA LETTER HE;Lo;0;L;;;;;N;;;;; 3079;HIRAGANA LETTER BE;Lo;0;L;3078 3099;;;;N;;;;; 307A;HIRAGANA LETTER PE;Lo;0;L;3078 309A;;;;N;;;;; 307B;HIRAGANA LETTER HO;Lo;0;L;;;;;N;;;;; 307C;HIRAGANA LETTER BO;Lo;0;L;307B 3099;;;;N;;;;; 307D;HIRAGANA LETTER PO;Lo;0;L;307B 309A;;;;N;;;;; 307E;HIRAGANA LETTER MA;Lo;0;L;;;;;N;;;;; 307F;HIRAGANA LETTER MI;Lo;0;L;;;;;N;;;;; 3080;HIRAGANA LETTER MU;Lo;0;L;;;;;N;;;;; 3081;HIRAGANA LETTER ME;Lo;0;L;;;;;N;;;;; 3082;HIRAGANA LETTER MO;Lo;0;L;;;;;N;;;;; 3083;HIRAGANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; 3084;HIRAGANA LETTER YA;Lo;0;L;;;;;N;;;;; 3085;HIRAGANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; 3086;HIRAGANA LETTER YU;Lo;0;L;;;;;N;;;;; 3087;HIRAGANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; 3088;HIRAGANA LETTER YO;Lo;0;L;;;;;N;;;;; 3089;HIRAGANA LETTER RA;Lo;0;L;;;;;N;;;;; 308A;HIRAGANA LETTER RI;Lo;0;L;;;;;N;;;;; 308B;HIRAGANA LETTER RU;Lo;0;L;;;;;N;;;;; 308C;HIRAGANA LETTER RE;Lo;0;L;;;;;N;;;;; 308D;HIRAGANA LETTER RO;Lo;0;L;;;;;N;;;;; 308E;HIRAGANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; 308F;HIRAGANA LETTER WA;Lo;0;L;;;;;N;;;;; 3090;HIRAGANA LETTER WI;Lo;0;L;;;;;N;;;;; 3091;HIRAGANA LETTER WE;Lo;0;L;;;;;N;;;;; 3092;HIRAGANA LETTER WO;Lo;0;L;;;;;N;;;;; 3093;HIRAGANA LETTER N;Lo;0;L;;;;;N;;;;; 3094;HIRAGANA LETTER VU;Lo;0;L;3046 3099;;;;N;;;;; 3095;HIRAGANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; 3096;HIRAGANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; 3099;COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA VOICED SOUND MARK;;;; 309A;COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Mn;8;NSM;;;;;N;NON-SPACING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;;;; 309B;KATAKANA-HIRAGANA VOICED SOUND MARK;Sk;0;ON; 0020 3099;;;;N;;;;; 309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON; 0020 309A;;;;N;;;;; 309D;HIRAGANA ITERATION MARK;Lm;0;L;;;;;N;;;;; 309E;HIRAGANA VOICED ITERATION MARK;Lm;0;L;309D 3099;;;;N;;;;; 309F;HIRAGANA DIGRAPH YORI;Lo;0;L; 3088 308A;;;;N;;;;; 30A0;KATAKANA-HIRAGANA DOUBLE HYPHEN;Pd;0;ON;;;;;N;;;;; 30A1;KATAKANA LETTER SMALL A;Lo;0;L;;;;;N;;;;; 30A2;KATAKANA LETTER A;Lo;0;L;;;;;N;;;;; 30A3;KATAKANA LETTER SMALL I;Lo;0;L;;;;;N;;;;; 30A4;KATAKANA LETTER I;Lo;0;L;;;;;N;;;;; 30A5;KATAKANA LETTER SMALL U;Lo;0;L;;;;;N;;;;; 30A6;KATAKANA LETTER U;Lo;0;L;;;;;N;;;;; 30A7;KATAKANA LETTER SMALL E;Lo;0;L;;;;;N;;;;; 30A8;KATAKANA LETTER E;Lo;0;L;;;;;N;;;;; 30A9;KATAKANA LETTER SMALL O;Lo;0;L;;;;;N;;;;; 30AA;KATAKANA LETTER O;Lo;0;L;;;;;N;;;;; 30AB;KATAKANA LETTER KA;Lo;0;L;;;;;N;;;;; 30AC;KATAKANA LETTER GA;Lo;0;L;30AB 3099;;;;N;;;;; 30AD;KATAKANA LETTER KI;Lo;0;L;;;;;N;;;;; 30AE;KATAKANA LETTER GI;Lo;0;L;30AD 3099;;;;N;;;;; 30AF;KATAKANA LETTER KU;Lo;0;L;;;;;N;;;;; 30B0;KATAKANA LETTER GU;Lo;0;L;30AF 3099;;;;N;;;;; 30B1;KATAKANA LETTER KE;Lo;0;L;;;;;N;;;;; 30B2;KATAKANA LETTER GE;Lo;0;L;30B1 3099;;;;N;;;;; 30B3;KATAKANA LETTER KO;Lo;0;L;;;;;N;;;;; 30B4;KATAKANA LETTER GO;Lo;0;L;30B3 3099;;;;N;;;;; 30B5;KATAKANA LETTER SA;Lo;0;L;;;;;N;;;;; 30B6;KATAKANA LETTER ZA;Lo;0;L;30B5 3099;;;;N;;;;; 30B7;KATAKANA LETTER SI;Lo;0;L;;;;;N;;;;; 30B8;KATAKANA LETTER ZI;Lo;0;L;30B7 3099;;;;N;;;;; 30B9;KATAKANA LETTER SU;Lo;0;L;;;;;N;;;;; 30BA;KATAKANA LETTER ZU;Lo;0;L;30B9 3099;;;;N;;;;; 30BB;KATAKANA LETTER SE;Lo;0;L;;;;;N;;;;; 30BC;KATAKANA LETTER ZE;Lo;0;L;30BB 3099;;;;N;;;;; 30BD;KATAKANA LETTER SO;Lo;0;L;;;;;N;;;;; 30BE;KATAKANA LETTER ZO;Lo;0;L;30BD 3099;;;;N;;;;; 30BF;KATAKANA LETTER TA;Lo;0;L;;;;;N;;;;; 30C0;KATAKANA LETTER DA;Lo;0;L;30BF 3099;;;;N;;;;; 30C1;KATAKANA LETTER TI;Lo;0;L;;;;;N;;;;; 30C2;KATAKANA LETTER DI;Lo;0;L;30C1 3099;;;;N;;;;; 30C3;KATAKANA LETTER SMALL TU;Lo;0;L;;;;;N;;;;; 30C4;KATAKANA LETTER TU;Lo;0;L;;;;;N;;;;; 30C5;KATAKANA LETTER DU;Lo;0;L;30C4 3099;;;;N;;;;; 30C6;KATAKANA LETTER TE;Lo;0;L;;;;;N;;;;; 30C7;KATAKANA LETTER DE;Lo;0;L;30C6 3099;;;;N;;;;; 30C8;KATAKANA LETTER TO;Lo;0;L;;;;;N;;;;; 30C9;KATAKANA LETTER DO;Lo;0;L;30C8 3099;;;;N;;;;; 30CA;KATAKANA LETTER NA;Lo;0;L;;;;;N;;;;; 30CB;KATAKANA LETTER NI;Lo;0;L;;;;;N;;;;; 30CC;KATAKANA LETTER NU;Lo;0;L;;;;;N;;;;; 30CD;KATAKANA LETTER NE;Lo;0;L;;;;;N;;;;; 30CE;KATAKANA LETTER NO;Lo;0;L;;;;;N;;;;; 30CF;KATAKANA LETTER HA;Lo;0;L;;;;;N;;;;; 30D0;KATAKANA LETTER BA;Lo;0;L;30CF 3099;;;;N;;;;; 30D1;KATAKANA LETTER PA;Lo;0;L;30CF 309A;;;;N;;;;; 30D2;KATAKANA LETTER HI;Lo;0;L;;;;;N;;;;; 30D3;KATAKANA LETTER BI;Lo;0;L;30D2 3099;;;;N;;;;; 30D4;KATAKANA LETTER PI;Lo;0;L;30D2 309A;;;;N;;;;; 30D5;KATAKANA LETTER HU;Lo;0;L;;;;;N;;;;; 30D6;KATAKANA LETTER BU;Lo;0;L;30D5 3099;;;;N;;;;; 30D7;KATAKANA LETTER PU;Lo;0;L;30D5 309A;;;;N;;;;; 30D8;KATAKANA LETTER HE;Lo;0;L;;;;;N;;;;; 30D9;KATAKANA LETTER BE;Lo;0;L;30D8 3099;;;;N;;;;; 30DA;KATAKANA LETTER PE;Lo;0;L;30D8 309A;;;;N;;;;; 30DB;KATAKANA LETTER HO;Lo;0;L;;;;;N;;;;; 30DC;KATAKANA LETTER BO;Lo;0;L;30DB 3099;;;;N;;;;; 30DD;KATAKANA LETTER PO;Lo;0;L;30DB 309A;;;;N;;;;; 30DE;KATAKANA LETTER MA;Lo;0;L;;;;;N;;;;; 30DF;KATAKANA LETTER MI;Lo;0;L;;;;;N;;;;; 30E0;KATAKANA LETTER MU;Lo;0;L;;;;;N;;;;; 30E1;KATAKANA LETTER ME;Lo;0;L;;;;;N;;;;; 30E2;KATAKANA LETTER MO;Lo;0;L;;;;;N;;;;; 30E3;KATAKANA LETTER SMALL YA;Lo;0;L;;;;;N;;;;; 30E4;KATAKANA LETTER YA;Lo;0;L;;;;;N;;;;; 30E5;KATAKANA LETTER SMALL YU;Lo;0;L;;;;;N;;;;; 30E6;KATAKANA LETTER YU;Lo;0;L;;;;;N;;;;; 30E7;KATAKANA LETTER SMALL YO;Lo;0;L;;;;;N;;;;; 30E8;KATAKANA LETTER YO;Lo;0;L;;;;;N;;;;; 30E9;KATAKANA LETTER RA;Lo;0;L;;;;;N;;;;; 30EA;KATAKANA LETTER RI;Lo;0;L;;;;;N;;;;; 30EB;KATAKANA LETTER RU;Lo;0;L;;;;;N;;;;; 30EC;KATAKANA LETTER RE;Lo;0;L;;;;;N;;;;; 30ED;KATAKANA LETTER RO;Lo;0;L;;;;;N;;;;; 30EE;KATAKANA LETTER SMALL WA;Lo;0;L;;;;;N;;;;; 30EF;KATAKANA LETTER WA;Lo;0;L;;;;;N;;;;; 30F0;KATAKANA LETTER WI;Lo;0;L;;;;;N;;;;; 30F1;KATAKANA LETTER WE;Lo;0;L;;;;;N;;;;; 30F2;KATAKANA LETTER WO;Lo;0;L;;;;;N;;;;; 30F3;KATAKANA LETTER N;Lo;0;L;;;;;N;;;;; 30F4;KATAKANA LETTER VU;Lo;0;L;30A6 3099;;;;N;;;;; 30F5;KATAKANA LETTER SMALL KA;Lo;0;L;;;;;N;;;;; 30F6;KATAKANA LETTER SMALL KE;Lo;0;L;;;;;N;;;;; 30F7;KATAKANA LETTER VA;Lo;0;L;30EF 3099;;;;N;;;;; 30F8;KATAKANA LETTER VI;Lo;0;L;30F0 3099;;;;N;;;;; 30F9;KATAKANA LETTER VE;Lo;0;L;30F1 3099;;;;N;;;;; 30FA;KATAKANA LETTER VO;Lo;0;L;30F2 3099;;;;N;;;;; 30FB;KATAKANA MIDDLE DOT;Po;0;ON;;;;;N;;;;; 30FC;KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;;;;;N;;;;; 30FD;KATAKANA ITERATION MARK;Lm;0;L;;;;;N;;;;; 30FE;KATAKANA VOICED ITERATION MARK;Lm;0;L;30FD 3099;;;;N;;;;; 30FF;KATAKANA DIGRAPH KOTO;Lo;0;L; 30B3 30C8;;;;N;;;;; 3105;BOPOMOFO LETTER B;Lo;0;L;;;;;N;;;;; 3106;BOPOMOFO LETTER P;Lo;0;L;;;;;N;;;;; 3107;BOPOMOFO LETTER M;Lo;0;L;;;;;N;;;;; 3108;BOPOMOFO LETTER F;Lo;0;L;;;;;N;;;;; 3109;BOPOMOFO LETTER D;Lo;0;L;;;;;N;;;;; 310A;BOPOMOFO LETTER T;Lo;0;L;;;;;N;;;;; 310B;BOPOMOFO LETTER N;Lo;0;L;;;;;N;;;;; 310C;BOPOMOFO LETTER L;Lo;0;L;;;;;N;;;;; 310D;BOPOMOFO LETTER G;Lo;0;L;;;;;N;;;;; 310E;BOPOMOFO LETTER K;Lo;0;L;;;;;N;;;;; 310F;BOPOMOFO LETTER H;Lo;0;L;;;;;N;;;;; 3110;BOPOMOFO LETTER J;Lo;0;L;;;;;N;;;;; 3111;BOPOMOFO LETTER Q;Lo;0;L;;;;;N;;;;; 3112;BOPOMOFO LETTER X;Lo;0;L;;;;;N;;;;; 3113;BOPOMOFO LETTER ZH;Lo;0;L;;;;;N;;;;; 3114;BOPOMOFO LETTER CH;Lo;0;L;;;;;N;;;;; 3115;BOPOMOFO LETTER SH;Lo;0;L;;;;;N;;;;; 3116;BOPOMOFO LETTER R;Lo;0;L;;;;;N;;;;; 3117;BOPOMOFO LETTER Z;Lo;0;L;;;;;N;;;;; 3118;BOPOMOFO LETTER C;Lo;0;L;;;;;N;;;;; 3119;BOPOMOFO LETTER S;Lo;0;L;;;;;N;;;;; 311A;BOPOMOFO LETTER A;Lo;0;L;;;;;N;;;;; 311B;BOPOMOFO LETTER O;Lo;0;L;;;;;N;;;;; 311C;BOPOMOFO LETTER E;Lo;0;L;;;;;N;;;;; 311D;BOPOMOFO LETTER EH;Lo;0;L;;;;;N;;;;; 311E;BOPOMOFO LETTER AI;Lo;0;L;;;;;N;;;;; 311F;BOPOMOFO LETTER EI;Lo;0;L;;;;;N;;;;; 3120;BOPOMOFO LETTER AU;Lo;0;L;;;;;N;;;;; 3121;BOPOMOFO LETTER OU;Lo;0;L;;;;;N;;;;; 3122;BOPOMOFO LETTER AN;Lo;0;L;;;;;N;;;;; 3123;BOPOMOFO LETTER EN;Lo;0;L;;;;;N;;;;; 3124;BOPOMOFO LETTER ANG;Lo;0;L;;;;;N;;;;; 3125;BOPOMOFO LETTER ENG;Lo;0;L;;;;;N;;;;; 3126;BOPOMOFO LETTER ER;Lo;0;L;;;;;N;;;;; 3127;BOPOMOFO LETTER I;Lo;0;L;;;;;N;;;;; 3128;BOPOMOFO LETTER U;Lo;0;L;;;;;N;;;;; 3129;BOPOMOFO LETTER IU;Lo;0;L;;;;;N;;;;; 312A;BOPOMOFO LETTER V;Lo;0;L;;;;;N;;;;; 312B;BOPOMOFO LETTER NG;Lo;0;L;;;;;N;;;;; 312C;BOPOMOFO LETTER GN;Lo;0;L;;;;;N;;;;; 3131;HANGUL LETTER KIYEOK;Lo;0;L; 1100;;;;N;HANGUL LETTER GIYEOG;;;; 3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L; 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;; 3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;; 3134;HANGUL LETTER NIEUN;Lo;0;L; 1102;;;;N;;;;; 3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;; 3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;; 3137;HANGUL LETTER TIKEUT;Lo;0;L; 1103;;;;N;HANGUL LETTER DIGEUD;;;; 3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L; 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;; 3139;HANGUL LETTER RIEUL;Lo;0;L; 1105;;;;N;HANGUL LETTER LIEUL;;;; 313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;; 313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;; 313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;; 313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L; 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;; 313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;; 313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;; 3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;; 3141;HANGUL LETTER MIEUM;Lo;0;L; 1106;;;;N;;;;; 3142;HANGUL LETTER PIEUP;Lo;0;L; 1107;;;;N;HANGUL LETTER BIEUB;;;; 3143;HANGUL LETTER SSANGPIEUP;Lo;0;L; 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;; 3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L; 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;; 3145;HANGUL LETTER SIOS;Lo;0;L; 1109;;;;N;;;;; 3146;HANGUL LETTER SSANGSIOS;Lo;0;L; 110A;;;;N;HANGUL LETTER SSANG SIOS;;;; 3147;HANGUL LETTER IEUNG;Lo;0;L; 110B;;;;N;;;;; 3148;HANGUL LETTER CIEUC;Lo;0;L; 110C;;;;N;HANGUL LETTER JIEUJ;;;; 3149;HANGUL LETTER SSANGCIEUC;Lo;0;L; 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;; 314A;HANGUL LETTER CHIEUCH;Lo;0;L; 110E;;;;N;HANGUL LETTER CIEUC;;;; 314B;HANGUL LETTER KHIEUKH;Lo;0;L; 110F;;;;N;HANGUL LETTER KIYEOK;;;; 314C;HANGUL LETTER THIEUTH;Lo;0;L; 1110;;;;N;HANGUL LETTER TIEUT;;;; 314D;HANGUL LETTER PHIEUPH;Lo;0;L; 1111;;;;N;HANGUL LETTER PIEUP;;;; 314E;HANGUL LETTER HIEUH;Lo;0;L; 1112;;;;N;;;;; 314F;HANGUL LETTER A;Lo;0;L; 1161;;;;N;;;;; 3150;HANGUL LETTER AE;Lo;0;L; 1162;;;;N;;;;; 3151;HANGUL LETTER YA;Lo;0;L; 1163;;;;N;;;;; 3152;HANGUL LETTER YAE;Lo;0;L; 1164;;;;N;;;;; 3153;HANGUL LETTER EO;Lo;0;L; 1165;;;;N;;;;; 3154;HANGUL LETTER E;Lo;0;L; 1166;;;;N;;;;; 3155;HANGUL LETTER YEO;Lo;0;L; 1167;;;;N;;;;; 3156;HANGUL LETTER YE;Lo;0;L; 1168;;;;N;;;;; 3157;HANGUL LETTER O;Lo;0;L; 1169;;;;N;;;;; 3158;HANGUL LETTER WA;Lo;0;L; 116A;;;;N;;;;; 3159;HANGUL LETTER WAE;Lo;0;L; 116B;;;;N;;;;; 315A;HANGUL LETTER OE;Lo;0;L; 116C;;;;N;;;;; 315B;HANGUL LETTER YO;Lo;0;L; 116D;;;;N;;;;; 315C;HANGUL LETTER U;Lo;0;L; 116E;;;;N;;;;; 315D;HANGUL LETTER WEO;Lo;0;L; 116F;;;;N;;;;; 315E;HANGUL LETTER WE;Lo;0;L; 1170;;;;N;;;;; 315F;HANGUL LETTER WI;Lo;0;L; 1171;;;;N;;;;; 3160;HANGUL LETTER YU;Lo;0;L; 1172;;;;N;;;;; 3161;HANGUL LETTER EU;Lo;0;L; 1173;;;;N;;;;; 3162;HANGUL LETTER YI;Lo;0;L; 1174;;;;N;;;;; 3163;HANGUL LETTER I;Lo;0;L; 1175;;;;N;;;;; 3164;HANGUL FILLER;Lo;0;L; 1160;;;;N;HANGUL CAE OM;;;; 3165;HANGUL LETTER SSANGNIEUN;Lo;0;L; 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;; 3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L; 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;; 3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L; 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;; 3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L; 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;; 3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L; 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;; 316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L; 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;; 316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L; 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;; 316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L; 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;; 316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L; 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;; 316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L; 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;; 316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L; 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;; 3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L; 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;; 3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L; 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;; 3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L; 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;; 3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L; 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;; 3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L; 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;; 3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L; 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;; 3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L; 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;; 3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L; 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;; 3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L; 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;; 3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L; 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;; 317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L; 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;; 317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L; 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;; 317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L; 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;; 317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L; 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;; 317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L; 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;; 317F;HANGUL LETTER PANSIOS;Lo;0;L; 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;; 3180;HANGUL LETTER SSANGIEUNG;Lo;0;L; 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;; 3181;HANGUL LETTER YESIEUNG;Lo;0;L; 114C;;;;N;HANGUL LETTER NGIEUNG;;;; 3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L; 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;; 3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L; 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;; 3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L; 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;; 3185;HANGUL LETTER SSANGHIEUH;Lo;0;L; 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;; 3186;HANGUL LETTER YEORINHIEUH;Lo;0;L; 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;; 3187;HANGUL LETTER YO-YA;Lo;0;L; 1184;;;;N;HANGUL LETTER YOYA;;;; 3188;HANGUL LETTER YO-YAE;Lo;0;L; 1185;;;;N;HANGUL LETTER YOYAE;;;; 3189;HANGUL LETTER YO-I;Lo;0;L; 1188;;;;N;HANGUL LETTER YOI;;;; 318A;HANGUL LETTER YU-YEO;Lo;0;L; 1191;;;;N;HANGUL LETTER YUYEO;;;; 318B;HANGUL LETTER YU-YE;Lo;0;L; 1192;;;;N;HANGUL LETTER YUYE;;;; 318C;HANGUL LETTER YU-I;Lo;0;L; 1194;;;;N;HANGUL LETTER YUI;;;; 318D;HANGUL LETTER ARAEA;Lo;0;L; 119E;;;;N;HANGUL LETTER ALAE A;;;; 318E;HANGUL LETTER ARAEAE;Lo;0;L; 11A1;;;;N;HANGUL LETTER ALAE AE;;;; 3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;Kanbun Tateten;;; 3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;Kaeriten;;; 3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L; 4E00;;;1;N;KAERITEN ITI;Kaeriten;;; 3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L; 4E8C;;;2;N;KAERITEN NI;Kaeriten;;; 3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L; 4E09;;;3;N;KAERITEN SAN;Kaeriten;;; 3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L; 56DB;;;4;N;KAERITEN SI;Kaeriten;;; 3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L; 4E0A;;;;N;KAERITEN ZYOU;Kaeriten;;; 3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L; 4E2D;;;;N;KAERITEN TYUU;Kaeriten;;; 3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L; 4E0B;;;;N;KAERITEN GE;Kaeriten;;; 3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L; 7532;;;;N;KAERITEN KOU;Kaeriten;;; 319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L; 4E59;;;;N;KAERITEN OTU;Kaeriten;;; 319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L; 4E19;;;;N;KAERITEN HEI;Kaeriten;;; 319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L; 4E01;;;;N;KAERITEN TEI;Kaeriten;;; 319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L; 5929;;;;N;KAERITEN TEN;Kaeriten;;; 319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L; 5730;;;;N;KAERITEN TI;Kaeriten;;; 319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L; 4EBA;;;;N;KAERITEN ZIN;Kaeriten;;; 31A0;BOPOMOFO LETTER BU;Lo;0;L;;;;;N;;;;; 31A1;BOPOMOFO LETTER ZI;Lo;0;L;;;;;N;;;;; 31A2;BOPOMOFO LETTER JI;Lo;0;L;;;;;N;;;;; 31A3;BOPOMOFO LETTER GU;Lo;0;L;;;;;N;;;;; 31A4;BOPOMOFO LETTER EE;Lo;0;L;;;;;N;;;;; 31A5;BOPOMOFO LETTER ENN;Lo;0;L;;;;;N;;;;; 31A6;BOPOMOFO LETTER OO;Lo;0;L;;;;;N;;;;; 31A7;BOPOMOFO LETTER ONN;Lo;0;L;;;;;N;;;;; 31A8;BOPOMOFO LETTER IR;Lo;0;L;;;;;N;;;;; 31A9;BOPOMOFO LETTER ANN;Lo;0;L;;;;;N;;;;; 31AA;BOPOMOFO LETTER INN;Lo;0;L;;;;;N;;;;; 31AB;BOPOMOFO LETTER UNN;Lo;0;L;;;;;N;;;;; 31AC;BOPOMOFO LETTER IM;Lo;0;L;;;;;N;;;;; 31AD;BOPOMOFO LETTER NGG;Lo;0;L;;;;;N;;;;; 31AE;BOPOMOFO LETTER AINN;Lo;0;L;;;;;N;;;;; 31AF;BOPOMOFO LETTER AUNN;Lo;0;L;;;;;N;;;;; 31B0;BOPOMOFO LETTER AM;Lo;0;L;;;;;N;;;;; 31B1;BOPOMOFO LETTER OM;Lo;0;L;;;;;N;;;;; 31B2;BOPOMOFO LETTER ONG;Lo;0;L;;;;;N;;;;; 31B3;BOPOMOFO LETTER INNN;Lo;0;L;;;;;N;;;;; 31B4;BOPOMOFO FINAL LETTER P;Lo;0;L;;;;;N;;;;; 31B5;BOPOMOFO FINAL LETTER T;Lo;0;L;;;;;N;;;;; 31B6;BOPOMOFO FINAL LETTER K;Lo;0;L;;;;;N;;;;; 31B7;BOPOMOFO FINAL LETTER H;Lo;0;L;;;;;N;;;;; 31C0;CJK STROKE T;So;0;ON;;;;;N;;;;; 31C1;CJK STROKE WG;So;0;ON;;;;;N;;;;; 31C2;CJK STROKE XG;So;0;ON;;;;;N;;;;; 31C3;CJK STROKE BXG;So;0;ON;;;;;N;;;;; 31C4;CJK STROKE SW;So;0;ON;;;;;N;;;;; 31C5;CJK STROKE HZZ;So;0;ON;;;;;N;;;;; 31C6;CJK STROKE HZG;So;0;ON;;;;;N;;;;; 31C7;CJK STROKE HP;So;0;ON;;;;;N;;;;; 31C8;CJK STROKE HZWG;So;0;ON;;;;;N;;;;; 31C9;CJK STROKE SZWG;So;0;ON;;;;;N;;;;; 31CA;CJK STROKE HZT;So;0;ON;;;;;N;;;;; 31CB;CJK STROKE HZZP;So;0;ON;;;;;N;;;;; 31CC;CJK STROKE HPWG;So;0;ON;;;;;N;;;;; 31CD;CJK STROKE HZW;So;0;ON;;;;;N;;;;; 31CE;CJK STROKE HZZZ;So;0;ON;;;;;N;;;;; 31CF;CJK STROKE N;So;0;ON;;;;;N;;;;; 31F0;KATAKANA LETTER SMALL KU;Lo;0;L;;;;;N;;;;; 31F1;KATAKANA LETTER SMALL SI;Lo;0;L;;;;;N;;;;; 31F2;KATAKANA LETTER SMALL SU;Lo;0;L;;;;;N;;;;; 31F3;KATAKANA LETTER SMALL TO;Lo;0;L;;;;;N;;;;; 31F4;KATAKANA LETTER SMALL NU;Lo;0;L;;;;;N;;;;; 31F5;KATAKANA LETTER SMALL HA;Lo;0;L;;;;;N;;;;; 31F6;KATAKANA LETTER SMALL HI;Lo;0;L;;;;;N;;;;; 31F7;KATAKANA LETTER SMALL HU;Lo;0;L;;;;;N;;;;; 31F8;KATAKANA LETTER SMALL HE;Lo;0;L;;;;;N;;;;; 31F9;KATAKANA LETTER SMALL HO;Lo;0;L;;;;;N;;;;; 31FA;KATAKANA LETTER SMALL MU;Lo;0;L;;;;;N;;;;; 31FB;KATAKANA LETTER SMALL RA;Lo;0;L;;;;;N;;;;; 31FC;KATAKANA LETTER SMALL RI;Lo;0;L;;;;;N;;;;; 31FD;KATAKANA LETTER SMALL RU;Lo;0;L;;;;;N;;;;; 31FE;KATAKANA LETTER SMALL RE;Lo;0;L;;;;;N;;;;; 31FF;KATAKANA LETTER SMALL RO;Lo;0;L;;;;;N;;;;; 3200;PARENTHESIZED HANGUL KIYEOK;So;0;L; 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;; 3201;PARENTHESIZED HANGUL NIEUN;So;0;L; 0028 1102 0029;;;;N;;;;; 3202;PARENTHESIZED HANGUL TIKEUT;So;0;L; 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;; 3203;PARENTHESIZED HANGUL RIEUL;So;0;L; 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;; 3204;PARENTHESIZED HANGUL MIEUM;So;0;L; 0028 1106 0029;;;;N;;;;; 3205;PARENTHESIZED HANGUL PIEUP;So;0;L; 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;; 3206;PARENTHESIZED HANGUL SIOS;So;0;L; 0028 1109 0029;;;;N;;;;; 3207;PARENTHESIZED HANGUL IEUNG;So;0;L; 0028 110B 0029;;;;N;;;;; 3208;PARENTHESIZED HANGUL CIEUC;So;0;L; 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;; 3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L; 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;; 320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L; 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;; 320B;PARENTHESIZED HANGUL THIEUTH;So;0;L; 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;; 320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L; 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;; 320D;PARENTHESIZED HANGUL HIEUH;So;0;L; 0028 1112 0029;;;;N;;;;; 320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L; 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;; 320F;PARENTHESIZED HANGUL NIEUN A;So;0;L; 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;; 3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L; 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;; 3211;PARENTHESIZED HANGUL RIEUL A;So;0;L; 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;; 3212;PARENTHESIZED HANGUL MIEUM A;So;0;L; 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;; 3213;PARENTHESIZED HANGUL PIEUP A;So;0;L; 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;; 3214;PARENTHESIZED HANGUL SIOS A;So;0;L; 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;; 3215;PARENTHESIZED HANGUL IEUNG A;So;0;L; 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;; 3216;PARENTHESIZED HANGUL CIEUC A;So;0;L; 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;; 3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L; 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;; 3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L; 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;; 3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L; 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;; 321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L; 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;; 321B;PARENTHESIZED HANGUL HIEUH A;So;0;L; 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;; 321C;PARENTHESIZED HANGUL CIEUC U;So;0;L; 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;; 321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON; 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;; 321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON; 0028 110B 1169 1112 116E 0029;;;;N;;;;; 3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L; 0028 4E00 0029;;;1;N;;;;; 3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L; 0028 4E8C 0029;;;2;N;;;;; 3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L; 0028 4E09 0029;;;3;N;;;;; 3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L; 0028 56DB 0029;;;4;N;;;;; 3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L; 0028 4E94 0029;;;5;N;;;;; 3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L; 0028 516D 0029;;;6;N;;;;; 3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L; 0028 4E03 0029;;;7;N;;;;; 3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L; 0028 516B 0029;;;8;N;;;;; 3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L; 0028 4E5D 0029;;;9;N;;;;; 3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L; 0028 5341 0029;;;10;N;;;;; 322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L; 0028 6708 0029;;;;N;;;;; 322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L; 0028 706B 0029;;;;N;;;;; 322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L; 0028 6C34 0029;;;;N;;;;; 322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L; 0028 6728 0029;;;;N;;;;; 322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L; 0028 91D1 0029;;;;N;;;;; 322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L; 0028 571F 0029;;;;N;;;;; 3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L; 0028 65E5 0029;;;;N;;;;; 3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L; 0028 682A 0029;;;;N;;;;; 3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L; 0028 6709 0029;;;;N;;;;; 3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L; 0028 793E 0029;;;;N;;;;; 3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L; 0028 540D 0029;;;;N;;;;; 3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L; 0028 7279 0029;;;;N;;;;; 3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L; 0028 8CA1 0029;;;;N;;;;; 3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L; 0028 795D 0029;;;;N;;;;; 3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L; 0028 52B4 0029;;;;N;;;;; 3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L; 0028 4EE3 0029;;;;N;;;;; 323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L; 0028 547C 0029;;;;N;;;;; 323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L; 0028 5B66 0029;;;;N;;;;; 323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L; 0028 76E3 0029;;;;N;;;;; 323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L; 0028 4F01 0029;;;;N;;;;; 323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L; 0028 8CC7 0029;;;;N;;;;; 323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L; 0028 5354 0029;;;;N;;;;; 3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L; 0028 796D 0029;;;;N;;;;; 3241;PARENTHESIZED IDEOGRAPH REST;So;0;L; 0028 4F11 0029;;;;N;;;;; 3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L; 0028 81EA 0029;;;;N;;;;; 3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L; 0028 81F3 0029;;;;N;;;;; 3250;PARTNERSHIP SIGN;So;0;ON; 0050 0054 0045;;;;N;;;;; 3251;CIRCLED NUMBER TWENTY ONE;No;0;ON; 0032 0031;;;21;N;;;;; 3252;CIRCLED NUMBER TWENTY TWO;No;0;ON; 0032 0032;;;22;N;;;;; 3253;CIRCLED NUMBER TWENTY THREE;No;0;ON; 0032 0033;;;23;N;;;;; 3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON; 0032 0034;;;24;N;;;;; 3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON; 0032 0035;;;25;N;;;;; 3256;CIRCLED NUMBER TWENTY SIX;No;0;ON; 0032 0036;;;26;N;;;;; 3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON; 0032 0037;;;27;N;;;;; 3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON; 0032 0038;;;28;N;;;;; 3259;CIRCLED NUMBER TWENTY NINE;No;0;ON; 0032 0039;;;29;N;;;;; 325A;CIRCLED NUMBER THIRTY;No;0;ON; 0033 0030;;;30;N;;;;; 325B;CIRCLED NUMBER THIRTY ONE;No;0;ON; 0033 0031;;;31;N;;;;; 325C;CIRCLED NUMBER THIRTY TWO;No;0;ON; 0033 0032;;;32;N;;;;; 325D;CIRCLED NUMBER THIRTY THREE;No;0;ON; 0033 0033;;;33;N;;;;; 325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON; 0033 0034;;;34;N;;;;; 325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON; 0033 0035;;;35;N;;;;; 3260;CIRCLED HANGUL KIYEOK;So;0;L; 1100;;;;N;CIRCLED HANGUL GIYEOG;;;; 3261;CIRCLED HANGUL NIEUN;So;0;L; 1102;;;;N;;;;; 3262;CIRCLED HANGUL TIKEUT;So;0;L; 1103;;;;N;CIRCLED HANGUL DIGEUD;;;; 3263;CIRCLED HANGUL RIEUL;So;0;L; 1105;;;;N;CIRCLED HANGUL LIEUL;;;; 3264;CIRCLED HANGUL MIEUM;So;0;L; 1106;;;;N;;;;; 3265;CIRCLED HANGUL PIEUP;So;0;L; 1107;;;;N;CIRCLED HANGUL BIEUB;;;; 3266;CIRCLED HANGUL SIOS;So;0;L; 1109;;;;N;;;;; 3267;CIRCLED HANGUL IEUNG;So;0;L; 110B;;;;N;;;;; 3268;CIRCLED HANGUL CIEUC;So;0;L; 110C;;;;N;CIRCLED HANGUL JIEUJ;;;; 3269;CIRCLED HANGUL CHIEUCH;So;0;L; 110E;;;;N;CIRCLED HANGUL CIEUC;;;; 326A;CIRCLED HANGUL KHIEUKH;So;0;L; 110F;;;;N;CIRCLED HANGUL KIYEOK;;;; 326B;CIRCLED HANGUL THIEUTH;So;0;L; 1110;;;;N;CIRCLED HANGUL TIEUT;;;; 326C;CIRCLED HANGUL PHIEUPH;So;0;L; 1111;;;;N;CIRCLED HANGUL PIEUP;;;; 326D;CIRCLED HANGUL HIEUH;So;0;L; 1112;;;;N;;;;; 326E;CIRCLED HANGUL KIYEOK A;So;0;L; 1100 1161;;;;N;CIRCLED HANGUL GA;;;; 326F;CIRCLED HANGUL NIEUN A;So;0;L; 1102 1161;;;;N;CIRCLED HANGUL NA;;;; 3270;CIRCLED HANGUL TIKEUT A;So;0;L; 1103 1161;;;;N;CIRCLED HANGUL DA;;;; 3271;CIRCLED HANGUL RIEUL A;So;0;L; 1105 1161;;;;N;CIRCLED HANGUL LA;;;; 3272;CIRCLED HANGUL MIEUM A;So;0;L; 1106 1161;;;;N;CIRCLED HANGUL MA;;;; 3273;CIRCLED HANGUL PIEUP A;So;0;L; 1107 1161;;;;N;CIRCLED HANGUL BA;;;; 3274;CIRCLED HANGUL SIOS A;So;0;L; 1109 1161;;;;N;CIRCLED HANGUL SA;;;; 3275;CIRCLED HANGUL IEUNG A;So;0;L; 110B 1161;;;;N;CIRCLED HANGUL A;;;; 3276;CIRCLED HANGUL CIEUC A;So;0;L; 110C 1161;;;;N;CIRCLED HANGUL JA;;;; 3277;CIRCLED HANGUL CHIEUCH A;So;0;L; 110E 1161;;;;N;CIRCLED HANGUL CA;;;; 3278;CIRCLED HANGUL KHIEUKH A;So;0;L; 110F 1161;;;;N;CIRCLED HANGUL KA;;;; 3279;CIRCLED HANGUL THIEUTH A;So;0;L; 1110 1161;;;;N;CIRCLED HANGUL TA;;;; 327A;CIRCLED HANGUL PHIEUPH A;So;0;L; 1111 1161;;;;N;CIRCLED HANGUL PA;;;; 327B;CIRCLED HANGUL HIEUH A;So;0;L; 1112 1161;;;;N;CIRCLED HANGUL HA;;;; 327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON; 110E 1161 11B7 1100 1169;;;;N;;;;; 327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON; 110C 116E 110B 1174;;;;N;;;;; 327E;CIRCLED HANGUL IEUNG U;So;0;ON; 110B 116E;;;;N;;;;; 327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;; 3280;CIRCLED IDEOGRAPH ONE;No;0;L; 4E00;;;1;N;;;;; 3281;CIRCLED IDEOGRAPH TWO;No;0;L; 4E8C;;;2;N;;;;; 3282;CIRCLED IDEOGRAPH THREE;No;0;L; 4E09;;;3;N;;;;; 3283;CIRCLED IDEOGRAPH FOUR;No;0;L; 56DB;;;4;N;;;;; 3284;CIRCLED IDEOGRAPH FIVE;No;0;L; 4E94;;;5;N;;;;; 3285;CIRCLED IDEOGRAPH SIX;No;0;L; 516D;;;6;N;;;;; 3286;CIRCLED IDEOGRAPH SEVEN;No;0;L; 4E03;;;7;N;;;;; 3287;CIRCLED IDEOGRAPH EIGHT;No;0;L; 516B;;;8;N;;;;; 3288;CIRCLED IDEOGRAPH NINE;No;0;L; 4E5D;;;9;N;;;;; 3289;CIRCLED IDEOGRAPH TEN;No;0;L; 5341;;;10;N;;;;; 328A;CIRCLED IDEOGRAPH MOON;So;0;L; 6708;;;;N;;;;; 328B;CIRCLED IDEOGRAPH FIRE;So;0;L; 706B;;;;N;;;;; 328C;CIRCLED IDEOGRAPH WATER;So;0;L; 6C34;;;;N;;;;; 328D;CIRCLED IDEOGRAPH WOOD;So;0;L; 6728;;;;N;;;;; 328E;CIRCLED IDEOGRAPH METAL;So;0;L; 91D1;;;;N;;;;; 328F;CIRCLED IDEOGRAPH EARTH;So;0;L; 571F;;;;N;;;;; 3290;CIRCLED IDEOGRAPH SUN;So;0;L; 65E5;;;;N;;;;; 3291;CIRCLED IDEOGRAPH STOCK;So;0;L; 682A;;;;N;;;;; 3292;CIRCLED IDEOGRAPH HAVE;So;0;L; 6709;;;;N;;;;; 3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L; 793E;;;;N;;;;; 3294;CIRCLED IDEOGRAPH NAME;So;0;L; 540D;;;;N;;;;; 3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L; 7279;;;;N;;;;; 3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L; 8CA1;;;;N;;;;; 3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L; 795D;;;;N;;;;; 3298;CIRCLED IDEOGRAPH LABOR;So;0;L; 52B4;;;;N;;;;; 3299;CIRCLED IDEOGRAPH SECRET;So;0;L; 79D8;;;;N;;;;; 329A;CIRCLED IDEOGRAPH MALE;So;0;L; 7537;;;;N;;;;; 329B;CIRCLED IDEOGRAPH FEMALE;So;0;L; 5973;;;;N;;;;; 329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L; 9069;;;;N;;;;; 329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L; 512A;;;;N;;;;; 329E;CIRCLED IDEOGRAPH PRINT;So;0;L; 5370;;;;N;;;;; 329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L; 6CE8;;;;N;;;;; 32A0;CIRCLED IDEOGRAPH ITEM;So;0;L; 9805;;;;N;;;;; 32A1;CIRCLED IDEOGRAPH REST;So;0;L; 4F11;;;;N;;;;; 32A2;CIRCLED IDEOGRAPH COPY;So;0;L; 5199;;;;N;;;;; 32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L; 6B63;;;;N;;;;; 32A4;CIRCLED IDEOGRAPH HIGH;So;0;L; 4E0A;;;;N;;;;; 32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L; 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;; 32A6;CIRCLED IDEOGRAPH LOW;So;0;L; 4E0B;;;;N;;;;; 32A7;CIRCLED IDEOGRAPH LEFT;So;0;L; 5DE6;;;;N;;;;; 32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L; 53F3;;;;N;;;;; 32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L; 533B;;;;N;;;;; 32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L; 5B97;;;;N;;;;; 32AB;CIRCLED IDEOGRAPH STUDY;So;0;L; 5B66;;;;N;;;;; 32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L; 76E3;;;;N;;;;; 32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L; 4F01;;;;N;;;;; 32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L; 8CC7;;;;N;;;;; 32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L; 5354;;;;N;;;;; 32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L; 591C;;;;N;;;;; 32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON; 0033 0036;;;36;N;;;;; 32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON; 0033 0037;;;37;N;;;;; 32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON; 0033 0038;;;38;N;;;;; 32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON; 0033 0039;;;39;N;;;;; 32B5;CIRCLED NUMBER FORTY;No;0;ON; 0034 0030;;;40;N;;;;; 32B6;CIRCLED NUMBER FORTY ONE;No;0;ON; 0034 0031;;;41;N;;;;; 32B7;CIRCLED NUMBER FORTY TWO;No;0;ON; 0034 0032;;;42;N;;;;; 32B8;CIRCLED NUMBER FORTY THREE;No;0;ON; 0034 0033;;;43;N;;;;; 32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON; 0034 0034;;;44;N;;;;; 32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON; 0034 0035;;;45;N;;;;; 32BB;CIRCLED NUMBER FORTY SIX;No;0;ON; 0034 0036;;;46;N;;;;; 32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON; 0034 0037;;;47;N;;;;; 32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON; 0034 0038;;;48;N;;;;; 32BE;CIRCLED NUMBER FORTY NINE;No;0;ON; 0034 0039;;;49;N;;;;; 32BF;CIRCLED NUMBER FIFTY;No;0;ON; 0035 0030;;;50;N;;;;; 32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L; 0031 6708;;;;N;;;;; 32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L; 0032 6708;;;;N;;;;; 32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L; 0033 6708;;;;N;;;;; 32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L; 0034 6708;;;;N;;;;; 32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L; 0035 6708;;;;N;;;;; 32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L; 0036 6708;;;;N;;;;; 32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L; 0037 6708;;;;N;;;;; 32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L; 0038 6708;;;;N;;;;; 32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L; 0039 6708;;;;N;;;;; 32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L; 0031 0030 6708;;;;N;;;;; 32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L; 0031 0031 6708;;;;N;;;;; 32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L; 0031 0032 6708;;;;N;;;;; 32CC;SQUARE HG;So;0;ON; 0048 0067;;;;N;;;;; 32CD;SQUARE ERG;So;0;ON; 0065 0072 0067;;;;N;;;;; 32CE;SQUARE EV;So;0;ON; 0065 0056;;;;N;;;;; 32CF;LIMITED LIABILITY SIGN;So;0;ON; 004C 0054 0044;;;;N;;;;; 32D0;CIRCLED KATAKANA A;So;0;L; 30A2;;;;N;;;;; 32D1;CIRCLED KATAKANA I;So;0;L; 30A4;;;;N;;;;; 32D2;CIRCLED KATAKANA U;So;0;L; 30A6;;;;N;;;;; 32D3;CIRCLED KATAKANA E;So;0;L; 30A8;;;;N;;;;; 32D4;CIRCLED KATAKANA O;So;0;L; 30AA;;;;N;;;;; 32D5;CIRCLED KATAKANA KA;So;0;L; 30AB;;;;N;;;;; 32D6;CIRCLED KATAKANA KI;So;0;L; 30AD;;;;N;;;;; 32D7;CIRCLED KATAKANA KU;So;0;L; 30AF;;;;N;;;;; 32D8;CIRCLED KATAKANA KE;So;0;L; 30B1;;;;N;;;;; 32D9;CIRCLED KATAKANA KO;So;0;L; 30B3;;;;N;;;;; 32DA;CIRCLED KATAKANA SA;So;0;L; 30B5;;;;N;;;;; 32DB;CIRCLED KATAKANA SI;So;0;L; 30B7;;;;N;;;;; 32DC;CIRCLED KATAKANA SU;So;0;L; 30B9;;;;N;;;;; 32DD;CIRCLED KATAKANA SE;So;0;L; 30BB;;;;N;;;;; 32DE;CIRCLED KATAKANA SO;So;0;L; 30BD;;;;N;;;;; 32DF;CIRCLED KATAKANA TA;So;0;L; 30BF;;;;N;;;;; 32E0;CIRCLED KATAKANA TI;So;0;L; 30C1;;;;N;;;;; 32E1;CIRCLED KATAKANA TU;So;0;L; 30C4;;;;N;;;;; 32E2;CIRCLED KATAKANA TE;So;0;L; 30C6;;;;N;;;;; 32E3;CIRCLED KATAKANA TO;So;0;L; 30C8;;;;N;;;;; 32E4;CIRCLED KATAKANA NA;So;0;L; 30CA;;;;N;;;;; 32E5;CIRCLED KATAKANA NI;So;0;L; 30CB;;;;N;;;;; 32E6;CIRCLED KATAKANA NU;So;0;L; 30CC;;;;N;;;;; 32E7;CIRCLED KATAKANA NE;So;0;L; 30CD;;;;N;;;;; 32E8;CIRCLED KATAKANA NO;So;0;L; 30CE;;;;N;;;;; 32E9;CIRCLED KATAKANA HA;So;0;L; 30CF;;;;N;;;;; 32EA;CIRCLED KATAKANA HI;So;0;L; 30D2;;;;N;;;;; 32EB;CIRCLED KATAKANA HU;So;0;L; 30D5;;;;N;;;;; 32EC;CIRCLED KATAKANA HE;So;0;L; 30D8;;;;N;;;;; 32ED;CIRCLED KATAKANA HO;So;0;L; 30DB;;;;N;;;;; 32EE;CIRCLED KATAKANA MA;So;0;L; 30DE;;;;N;;;;; 32EF;CIRCLED KATAKANA MI;So;0;L; 30DF;;;;N;;;;; 32F0;CIRCLED KATAKANA MU;So;0;L; 30E0;;;;N;;;;; 32F1;CIRCLED KATAKANA ME;So;0;L; 30E1;;;;N;;;;; 32F2;CIRCLED KATAKANA MO;So;0;L; 30E2;;;;N;;;;; 32F3;CIRCLED KATAKANA YA;So;0;L; 30E4;;;;N;;;;; 32F4;CIRCLED KATAKANA YU;So;0;L; 30E6;;;;N;;;;; 32F5;CIRCLED KATAKANA YO;So;0;L; 30E8;;;;N;;;;; 32F6;CIRCLED KATAKANA RA;So;0;L; 30E9;;;;N;;;;; 32F7;CIRCLED KATAKANA RI;So;0;L; 30EA;;;;N;;;;; 32F8;CIRCLED KATAKANA RU;So;0;L; 30EB;;;;N;;;;; 32F9;CIRCLED KATAKANA RE;So;0;L; 30EC;;;;N;;;;; 32FA;CIRCLED KATAKANA RO;So;0;L; 30ED;;;;N;;;;; 32FB;CIRCLED KATAKANA WA;So;0;L; 30EF;;;;N;;;;; 32FC;CIRCLED KATAKANA WI;So;0;L; 30F0;;;;N;;;;; 32FD;CIRCLED KATAKANA WE;So;0;L; 30F1;;;;N;;;;; 32FE;CIRCLED KATAKANA WO;So;0;L; 30F2;;;;N;;;;; 3300;SQUARE APAATO;So;0;L; 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;; 3301;SQUARE ARUHUA;So;0;L; 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;; 3302;SQUARE ANPEA;So;0;L; 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;; 3303;SQUARE AARU;So;0;L; 30A2 30FC 30EB;;;;N;SQUARED AARU;;;; 3304;SQUARE ININGU;So;0;L; 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;; 3305;SQUARE INTI;So;0;L; 30A4 30F3 30C1;;;;N;SQUARED INTI;;;; 3306;SQUARE UON;So;0;L; 30A6 30A9 30F3;;;;N;SQUARED UON;;;; 3307;SQUARE ESUKUUDO;So;0;L; 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;; 3308;SQUARE EEKAA;So;0;L; 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;; 3309;SQUARE ONSU;So;0;L; 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;; 330A;SQUARE OOMU;So;0;L; 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;; 330B;SQUARE KAIRI;So;0;L; 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;; 330C;SQUARE KARATTO;So;0;L; 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;; 330D;SQUARE KARORII;So;0;L; 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;; 330E;SQUARE GARON;So;0;L; 30AC 30ED 30F3;;;;N;SQUARED GARON;;;; 330F;SQUARE GANMA;So;0;L; 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;; 3310;SQUARE GIGA;So;0;L; 30AE 30AC;;;;N;SQUARED GIGA;;;; 3311;SQUARE GINII;So;0;L; 30AE 30CB 30FC;;;;N;SQUARED GINII;;;; 3312;SQUARE KYURII;So;0;L; 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;; 3313;SQUARE GIRUDAA;So;0;L; 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;; 3314;SQUARE KIRO;So;0;L; 30AD 30ED;;;;N;SQUARED KIRO;;;; 3315;SQUARE KIROGURAMU;So;0;L; 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;; 3316;SQUARE KIROMEETORU;So;0;L; 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;; 3317;SQUARE KIROWATTO;So;0;L; 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;; 3318;SQUARE GURAMU;So;0;L; 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;; 3319;SQUARE GURAMUTON;So;0;L; 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;; 331A;SQUARE KURUZEIRO;So;0;L; 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;; 331B;SQUARE KUROONE;So;0;L; 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;; 331C;SQUARE KEESU;So;0;L; 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;; 331D;SQUARE KORUNA;So;0;L; 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;; 331E;SQUARE KOOPO;So;0;L; 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;; 331F;SQUARE SAIKURU;So;0;L; 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;; 3320;SQUARE SANTIIMU;So;0;L; 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;; 3321;SQUARE SIRINGU;So;0;L; 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;; 3322;SQUARE SENTI;So;0;L; 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;; 3323;SQUARE SENTO;So;0;L; 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;; 3324;SQUARE DAASU;So;0;L; 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;; 3325;SQUARE DESI;So;0;L; 30C7 30B7;;;;N;SQUARED DESI;;;; 3326;SQUARE DORU;So;0;L; 30C9 30EB;;;;N;SQUARED DORU;;;; 3327;SQUARE TON;So;0;L; 30C8 30F3;;;;N;SQUARED TON;;;; 3328;SQUARE NANO;So;0;L; 30CA 30CE;;;;N;SQUARED NANO;;;; 3329;SQUARE NOTTO;So;0;L; 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;; 332A;SQUARE HAITU;So;0;L; 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;; 332B;SQUARE PAASENTO;So;0;L; 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;; 332C;SQUARE PAATU;So;0;L; 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;; 332D;SQUARE BAARERU;So;0;L; 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;; 332E;SQUARE PIASUTORU;So;0;L; 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;; 332F;SQUARE PIKURU;So;0;L; 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;; 3330;SQUARE PIKO;So;0;L; 30D4 30B3;;;;N;SQUARED PIKO;;;; 3331;SQUARE BIRU;So;0;L; 30D3 30EB;;;;N;SQUARED BIRU;;;; 3332;SQUARE HUARADDO;So;0;L; 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;; 3333;SQUARE HUIITO;So;0;L; 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;; 3334;SQUARE BUSSYERU;So;0;L; 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;; 3335;SQUARE HURAN;So;0;L; 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;; 3336;SQUARE HEKUTAARU;So;0;L; 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;; 3337;SQUARE PESO;So;0;L; 30DA 30BD;;;;N;SQUARED PESO;;;; 3338;SQUARE PENIHI;So;0;L; 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;; 3339;SQUARE HERUTU;So;0;L; 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;; 333A;SQUARE PENSU;So;0;L; 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;; 333B;SQUARE PEEZI;So;0;L; 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;; 333C;SQUARE BEETA;So;0;L; 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;; 333D;SQUARE POINTO;So;0;L; 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;; 333E;SQUARE BORUTO;So;0;L; 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;; 333F;SQUARE HON;So;0;L; 30DB 30F3;;;;N;SQUARED HON;;;; 3340;SQUARE PONDO;So;0;L; 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;; 3341;SQUARE HOORU;So;0;L; 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;; 3342;SQUARE HOON;So;0;L; 30DB 30FC 30F3;;;;N;SQUARED HOON;;;; 3343;SQUARE MAIKURO;So;0;L; 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;; 3344;SQUARE MAIRU;So;0;L; 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;; 3345;SQUARE MAHHA;So;0;L; 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;; 3346;SQUARE MARUKU;So;0;L; 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;; 3347;SQUARE MANSYON;So;0;L; 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;; 3348;SQUARE MIKURON;So;0;L; 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;; 3349;SQUARE MIRI;So;0;L; 30DF 30EA;;;;N;SQUARED MIRI;;;; 334A;SQUARE MIRIBAARU;So;0;L; 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;; 334B;SQUARE MEGA;So;0;L; 30E1 30AC;;;;N;SQUARED MEGA;;;; 334C;SQUARE MEGATON;So;0;L; 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;; 334D;SQUARE MEETORU;So;0;L; 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;; 334E;SQUARE YAADO;So;0;L; 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;; 334F;SQUARE YAARU;So;0;L; 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;; 3350;SQUARE YUAN;So;0;L; 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;; 3351;SQUARE RITTORU;So;0;L; 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;; 3352;SQUARE RIRA;So;0;L; 30EA 30E9;;;;N;SQUARED RIRA;;;; 3353;SQUARE RUPII;So;0;L; 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;; 3354;SQUARE RUUBURU;So;0;L; 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;; 3355;SQUARE REMU;So;0;L; 30EC 30E0;;;;N;SQUARED REMU;;;; 3356;SQUARE RENTOGEN;So;0;L; 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;; 3357;SQUARE WATTO;So;0;L; 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;; 3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L; 0030 70B9;;;;N;;;;; 3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L; 0031 70B9;;;;N;;;;; 335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L; 0032 70B9;;;;N;;;;; 335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L; 0033 70B9;;;;N;;;;; 335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L; 0034 70B9;;;;N;;;;; 335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L; 0035 70B9;;;;N;;;;; 335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L; 0036 70B9;;;;N;;;;; 335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L; 0037 70B9;;;;N;;;;; 3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L; 0038 70B9;;;;N;;;;; 3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L; 0039 70B9;;;;N;;;;; 3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L; 0031 0030 70B9;;;;N;;;;; 3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L; 0031 0031 70B9;;;;N;;;;; 3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L; 0031 0032 70B9;;;;N;;;;; 3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L; 0031 0033 70B9;;;;N;;;;; 3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L; 0031 0034 70B9;;;;N;;;;; 3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L; 0031 0035 70B9;;;;N;;;;; 3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L; 0031 0036 70B9;;;;N;;;;; 3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L; 0031 0037 70B9;;;;N;;;;; 336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L; 0031 0038 70B9;;;;N;;;;; 336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L; 0031 0039 70B9;;;;N;;;;; 336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L; 0032 0030 70B9;;;;N;;;;; 336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L; 0032 0031 70B9;;;;N;;;;; 336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L; 0032 0032 70B9;;;;N;;;;; 336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L; 0032 0033 70B9;;;;N;;;;; 3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L; 0032 0034 70B9;;;;N;;;;; 3371;SQUARE HPA;So;0;L; 0068 0050 0061;;;;N;;;;; 3372;SQUARE DA;So;0;L; 0064 0061;;;;N;;;;; 3373;SQUARE AU;So;0;L; 0041 0055;;;;N;;;;; 3374;SQUARE BAR;So;0;L; 0062 0061 0072;;;;N;;;;; 3375;SQUARE OV;So;0;L; 006F 0056;;;;N;;;;; 3376;SQUARE PC;So;0;L; 0070 0063;;;;N;;;;; 3377;SQUARE DM;So;0;ON; 0064 006D;;;;N;;;;; 3378;SQUARE DM SQUARED;So;0;ON; 0064 006D 00B2;;;;N;;;;; 3379;SQUARE DM CUBED;So;0;ON; 0064 006D 00B3;;;;N;;;;; 337A;SQUARE IU;So;0;ON; 0049 0055;;;;N;;;;; 337B;SQUARE ERA NAME HEISEI;So;0;L; 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;; 337C;SQUARE ERA NAME SYOUWA;So;0;L; 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;; 337D;SQUARE ERA NAME TAISYOU;So;0;L; 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;; 337E;SQUARE ERA NAME MEIZI;So;0;L; 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;; 337F;SQUARE CORPORATION;So;0;L; 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;; 3380;SQUARE PA AMPS;So;0;L; 0070 0041;;;;N;SQUARED PA AMPS;;;; 3381;SQUARE NA;So;0;L; 006E 0041;;;;N;SQUARED NA;;;; 3382;SQUARE MU A;So;0;L; 03BC 0041;;;;N;SQUARED MU A;;;; 3383;SQUARE MA;So;0;L; 006D 0041;;;;N;SQUARED MA;;;; 3384;SQUARE KA;So;0;L; 006B 0041;;;;N;SQUARED KA;;;; 3385;SQUARE KB;So;0;L; 004B 0042;;;;N;SQUARED KB;;;; 3386;SQUARE MB;So;0;L; 004D 0042;;;;N;SQUARED MB;;;; 3387;SQUARE GB;So;0;L; 0047 0042;;;;N;SQUARED GB;;;; 3388;SQUARE CAL;So;0;L; 0063 0061 006C;;;;N;SQUARED CAL;;;; 3389;SQUARE KCAL;So;0;L; 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;; 338A;SQUARE PF;So;0;L; 0070 0046;;;;N;SQUARED PF;;;; 338B;SQUARE NF;So;0;L; 006E 0046;;;;N;SQUARED NF;;;; 338C;SQUARE MU F;So;0;L; 03BC 0046;;;;N;SQUARED MU F;;;; 338D;SQUARE MU G;So;0;L; 03BC 0067;;;;N;SQUARED MU G;;;; 338E;SQUARE MG;So;0;L; 006D 0067;;;;N;SQUARED MG;;;; 338F;SQUARE KG;So;0;L; 006B 0067;;;;N;SQUARED KG;;;; 3390;SQUARE HZ;So;0;L; 0048 007A;;;;N;SQUARED HZ;;;; 3391;SQUARE KHZ;So;0;L; 006B 0048 007A;;;;N;SQUARED KHZ;;;; 3392;SQUARE MHZ;So;0;L; 004D 0048 007A;;;;N;SQUARED MHZ;;;; 3393;SQUARE GHZ;So;0;L; 0047 0048 007A;;;;N;SQUARED GHZ;;;; 3394;SQUARE THZ;So;0;L; 0054 0048 007A;;;;N;SQUARED THZ;;;; 3395;SQUARE MU L;So;0;L; 03BC 2113;;;;N;SQUARED MU L;;;; 3396;SQUARE ML;So;0;L; 006D 2113;;;;N;SQUARED ML;;;; 3397;SQUARE DL;So;0;L; 0064 2113;;;;N;SQUARED DL;;;; 3398;SQUARE KL;So;0;L; 006B 2113;;;;N;SQUARED KL;;;; 3399;SQUARE FM;So;0;L; 0066 006D;;;;N;SQUARED FM;;;; 339A;SQUARE NM;So;0;L; 006E 006D;;;;N;SQUARED NM;;;; 339B;SQUARE MU M;So;0;L; 03BC 006D;;;;N;SQUARED MU M;;;; 339C;SQUARE MM;So;0;L; 006D 006D;;;;N;SQUARED MM;;;; 339D;SQUARE CM;So;0;L; 0063 006D;;;;N;SQUARED CM;;;; 339E;SQUARE KM;So;0;L; 006B 006D;;;;N;SQUARED KM;;;; 339F;SQUARE MM SQUARED;So;0;L; 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;; 33A0;SQUARE CM SQUARED;So;0;L; 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;; 33A1;SQUARE M SQUARED;So;0;L; 006D 00B2;;;;N;SQUARED M SQUARED;;;; 33A2;SQUARE KM SQUARED;So;0;L; 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;; 33A3;SQUARE MM CUBED;So;0;L; 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;; 33A4;SQUARE CM CUBED;So;0;L; 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;; 33A5;SQUARE M CUBED;So;0;L; 006D 00B3;;;;N;SQUARED M CUBED;;;; 33A6;SQUARE KM CUBED;So;0;L; 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;; 33A7;SQUARE M OVER S;So;0;L; 006D 2215 0073;;;;N;SQUARED M OVER S;;;; 33A8;SQUARE M OVER S SQUARED;So;0;L; 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;; 33A9;SQUARE PA;So;0;L; 0050 0061;;;;N;SQUARED PA;;;; 33AA;SQUARE KPA;So;0;L; 006B 0050 0061;;;;N;SQUARED KPA;;;; 33AB;SQUARE MPA;So;0;L; 004D 0050 0061;;;;N;SQUARED MPA;;;; 33AC;SQUARE GPA;So;0;L; 0047 0050 0061;;;;N;SQUARED GPA;;;; 33AD;SQUARE RAD;So;0;L; 0072 0061 0064;;;;N;SQUARED RAD;;;; 33AE;SQUARE RAD OVER S;So;0;L; 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;; 33AF;SQUARE RAD OVER S SQUARED;So;0;L; 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;; 33B0;SQUARE PS;So;0;L; 0070 0073;;;;N;SQUARED PS;;;; 33B1;SQUARE NS;So;0;L; 006E 0073;;;;N;SQUARED NS;;;; 33B2;SQUARE MU S;So;0;L; 03BC 0073;;;;N;SQUARED MU S;;;; 33B3;SQUARE MS;So;0;L; 006D 0073;;;;N;SQUARED MS;;;; 33B4;SQUARE PV;So;0;L; 0070 0056;;;;N;SQUARED PV;;;; 33B5;SQUARE NV;So;0;L; 006E 0056;;;;N;SQUARED NV;;;; 33B6;SQUARE MU V;So;0;L; 03BC 0056;;;;N;SQUARED MU V;;;; 33B7;SQUARE MV;So;0;L; 006D 0056;;;;N;SQUARED MV;;;; 33B8;SQUARE KV;So;0;L; 006B 0056;;;;N;SQUARED KV;;;; 33B9;SQUARE MV MEGA;So;0;L; 004D 0056;;;;N;SQUARED MV MEGA;;;; 33BA;SQUARE PW;So;0;L; 0070 0057;;;;N;SQUARED PW;;;; 33BB;SQUARE NW;So;0;L; 006E 0057;;;;N;SQUARED NW;;;; 33BC;SQUARE MU W;So;0;L; 03BC 0057;;;;N;SQUARED MU W;;;; 33BD;SQUARE MW;So;0;L; 006D 0057;;;;N;SQUARED MW;;;; 33BE;SQUARE KW;So;0;L; 006B 0057;;;;N;SQUARED KW;;;; 33BF;SQUARE MW MEGA;So;0;L; 004D 0057;;;;N;SQUARED MW MEGA;;;; 33C0;SQUARE K OHM;So;0;L; 006B 03A9;;;;N;SQUARED K OHM;;;; 33C1;SQUARE M OHM;So;0;L; 004D 03A9;;;;N;SQUARED M OHM;;;; 33C2;SQUARE AM;So;0;L; 0061 002E 006D 002E;;;;N;SQUARED AM;;;; 33C3;SQUARE BQ;So;0;L; 0042 0071;;;;N;SQUARED BQ;;;; 33C4;SQUARE CC;So;0;L; 0063 0063;;;;N;SQUARED CC;;;; 33C5;SQUARE CD;So;0;L; 0063 0064;;;;N;SQUARED CD;;;; 33C6;SQUARE C OVER KG;So;0;L; 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;; 33C7;SQUARE CO;So;0;L; 0043 006F 002E;;;;N;SQUARED CO;;;; 33C8;SQUARE DB;So;0;L; 0064 0042;;;;N;SQUARED DB;;;; 33C9;SQUARE GY;So;0;L; 0047 0079;;;;N;SQUARED GY;;;; 33CA;SQUARE HA;So;0;L; 0068 0061;;;;N;SQUARED HA;;;; 33CB;SQUARE HP;So;0;L; 0048 0050;;;;N;SQUARED HP;;;; 33CC;SQUARE IN;So;0;L; 0069 006E;;;;N;SQUARED IN;;;; 33CD;SQUARE KK;So;0;L; 004B 004B;;;;N;SQUARED KK;;;; 33CE;SQUARE KM CAPITAL;So;0;L; 004B 004D;;;;N;SQUARED KM CAPITAL;;;; 33CF;SQUARE KT;So;0;L; 006B 0074;;;;N;SQUARED KT;;;; 33D0;SQUARE LM;So;0;L; 006C 006D;;;;N;SQUARED LM;;;; 33D1;SQUARE LN;So;0;L; 006C 006E;;;;N;SQUARED LN;;;; 33D2;SQUARE LOG;So;0;L; 006C 006F 0067;;;;N;SQUARED LOG;;;; 33D3;SQUARE LX;So;0;L; 006C 0078;;;;N;SQUARED LX;;;; 33D4;SQUARE MB SMALL;So;0;L; 006D 0062;;;;N;SQUARED MB SMALL;;;; 33D5;SQUARE MIL;So;0;L; 006D 0069 006C;;;;N;SQUARED MIL;;;; 33D6;SQUARE MOL;So;0;L; 006D 006F 006C;;;;N;SQUARED MOL;;;; 33D7;SQUARE PH;So;0;L; 0050 0048;;;;N;SQUARED PH;;;; 33D8;SQUARE PM;So;0;L; 0070 002E 006D 002E;;;;N;SQUARED PM;;;; 33D9;SQUARE PPM;So;0;L; 0050 0050 004D;;;;N;SQUARED PPM;;;; 33DA;SQUARE PR;So;0;L; 0050 0052;;;;N;SQUARED PR;;;; 33DB;SQUARE SR;So;0;L; 0073 0072;;;;N;SQUARED SR;;;; 33DC;SQUARE SV;So;0;L; 0053 0076;;;;N;SQUARED SV;;;; 33DD;SQUARE WB;So;0;L; 0057 0062;;;;N;SQUARED WB;;;; 33DE;SQUARE V OVER M;So;0;ON; 0056 2215 006D;;;;N;;;;; 33DF;SQUARE A OVER M;So;0;ON; 0041 2215 006D;;;;N;;;;; 33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L; 0031 65E5;;;;N;;;;; 33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L; 0032 65E5;;;;N;;;;; 33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L; 0033 65E5;;;;N;;;;; 33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L; 0034 65E5;;;;N;;;;; 33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L; 0035 65E5;;;;N;;;;; 33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L; 0036 65E5;;;;N;;;;; 33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L; 0037 65E5;;;;N;;;;; 33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L; 0038 65E5;;;;N;;;;; 33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L; 0039 65E5;;;;N;;;;; 33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L; 0031 0030 65E5;;;;N;;;;; 33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L; 0031 0031 65E5;;;;N;;;;; 33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L; 0031 0032 65E5;;;;N;;;;; 33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L; 0031 0033 65E5;;;;N;;;;; 33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L; 0031 0034 65E5;;;;N;;;;; 33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L; 0031 0035 65E5;;;;N;;;;; 33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L; 0031 0036 65E5;;;;N;;;;; 33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L; 0031 0037 65E5;;;;N;;;;; 33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L; 0031 0038 65E5;;;;N;;;;; 33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L; 0031 0039 65E5;;;;N;;;;; 33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L; 0032 0030 65E5;;;;N;;;;; 33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L; 0032 0031 65E5;;;;N;;;;; 33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L; 0032 0032 65E5;;;;N;;;;; 33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L; 0032 0033 65E5;;;;N;;;;; 33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L; 0032 0034 65E5;;;;N;;;;; 33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L; 0032 0035 65E5;;;;N;;;;; 33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L; 0032 0036 65E5;;;;N;;;;; 33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L; 0032 0037 65E5;;;;N;;;;; 33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L; 0032 0038 65E5;;;;N;;;;; 33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L; 0032 0039 65E5;;;;N;;;;; 33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L; 0033 0030 65E5;;;;N;;;;; 33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L; 0033 0031 65E5;;;;N;;;;; 33FF;SQUARE GAL;So;0;ON; 0067 0061 006C;;;;N;;;;; 3400;;Lo;0;L;;;;;N;;;;; 4DB5;;Lo;0;L;;;;;N;;;;; 4DC0;HEXAGRAM FOR THE CREATIVE HEAVEN;So;0;ON;;;;;N;;;;; 4DC1;HEXAGRAM FOR THE RECEPTIVE EARTH;So;0;ON;;;;;N;;;;; 4DC2;HEXAGRAM FOR DIFFICULTY AT THE BEGINNING;So;0;ON;;;;;N;;;;; 4DC3;HEXAGRAM FOR YOUTHFUL FOLLY;So;0;ON;;;;;N;;;;; 4DC4;HEXAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; 4DC5;HEXAGRAM FOR CONFLICT;So;0;ON;;;;;N;;;;; 4DC6;HEXAGRAM FOR THE ARMY;So;0;ON;;;;;N;;;;; 4DC7;HEXAGRAM FOR HOLDING TOGETHER;So;0;ON;;;;;N;;;;; 4DC8;HEXAGRAM FOR SMALL TAMING;So;0;ON;;;;;N;;;;; 4DC9;HEXAGRAM FOR TREADING;So;0;ON;;;;;N;;;;; 4DCA;HEXAGRAM FOR PEACE;So;0;ON;;;;;N;;;;; 4DCB;HEXAGRAM FOR STANDSTILL;So;0;ON;;;;;N;;;;; 4DCC;HEXAGRAM FOR FELLOWSHIP;So;0;ON;;;;;N;;;;; 4DCD;HEXAGRAM FOR GREAT POSSESSION;So;0;ON;;;;;N;;;;; 4DCE;HEXAGRAM FOR MODESTY;So;0;ON;;;;;N;;;;; 4DCF;HEXAGRAM FOR ENTHUSIASM;So;0;ON;;;;;N;;;;; 4DD0;HEXAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; 4DD1;HEXAGRAM FOR WORK ON THE DECAYED;So;0;ON;;;;;N;;;;; 4DD2;HEXAGRAM FOR APPROACH;So;0;ON;;;;;N;;;;; 4DD3;HEXAGRAM FOR CONTEMPLATION;So;0;ON;;;;;N;;;;; 4DD4;HEXAGRAM FOR BITING THROUGH;So;0;ON;;;;;N;;;;; 4DD5;HEXAGRAM FOR GRACE;So;0;ON;;;;;N;;;;; 4DD6;HEXAGRAM FOR SPLITTING APART;So;0;ON;;;;;N;;;;; 4DD7;HEXAGRAM FOR RETURN;So;0;ON;;;;;N;;;;; 4DD8;HEXAGRAM FOR INNOCENCE;So;0;ON;;;;;N;;;;; 4DD9;HEXAGRAM FOR GREAT TAMING;So;0;ON;;;;;N;;;;; 4DDA;HEXAGRAM FOR MOUTH CORNERS;So;0;ON;;;;;N;;;;; 4DDB;HEXAGRAM FOR GREAT PREPONDERANCE;So;0;ON;;;;;N;;;;; 4DDC;HEXAGRAM FOR THE ABYSMAL WATER;So;0;ON;;;;;N;;;;; 4DDD;HEXAGRAM FOR THE CLINGING FIRE;So;0;ON;;;;;N;;;;; 4DDE;HEXAGRAM FOR INFLUENCE;So;0;ON;;;;;N;;;;; 4DDF;HEXAGRAM FOR DURATION;So;0;ON;;;;;N;;;;; 4DE0;HEXAGRAM FOR RETREAT;So;0;ON;;;;;N;;;;; 4DE1;HEXAGRAM FOR GREAT POWER;So;0;ON;;;;;N;;;;; 4DE2;HEXAGRAM FOR PROGRESS;So;0;ON;;;;;N;;;;; 4DE3;HEXAGRAM FOR DARKENING OF THE LIGHT;So;0;ON;;;;;N;;;;; 4DE4;HEXAGRAM FOR THE FAMILY;So;0;ON;;;;;N;;;;; 4DE5;HEXAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; 4DE6;HEXAGRAM FOR OBSTRUCTION;So;0;ON;;;;;N;;;;; 4DE7;HEXAGRAM FOR DELIVERANCE;So;0;ON;;;;;N;;;;; 4DE8;HEXAGRAM FOR DECREASE;So;0;ON;;;;;N;;;;; 4DE9;HEXAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; 4DEA;HEXAGRAM FOR BREAKTHROUGH;So;0;ON;;;;;N;;;;; 4DEB;HEXAGRAM FOR COMING TO MEET;So;0;ON;;;;;N;;;;; 4DEC;HEXAGRAM FOR GATHERING TOGETHER;So;0;ON;;;;;N;;;;; 4DED;HEXAGRAM FOR PUSHING UPWARD;So;0;ON;;;;;N;;;;; 4DEE;HEXAGRAM FOR OPPRESSION;So;0;ON;;;;;N;;;;; 4DEF;HEXAGRAM FOR THE WELL;So;0;ON;;;;;N;;;;; 4DF0;HEXAGRAM FOR REVOLUTION;So;0;ON;;;;;N;;;;; 4DF1;HEXAGRAM FOR THE CAULDRON;So;0;ON;;;;;N;;;;; 4DF2;HEXAGRAM FOR THE AROUSING THUNDER;So;0;ON;;;;;N;;;;; 4DF3;HEXAGRAM FOR THE KEEPING STILL MOUNTAIN;So;0;ON;;;;;N;;;;; 4DF4;HEXAGRAM FOR DEVELOPMENT;So;0;ON;;;;;N;;;;; 4DF5;HEXAGRAM FOR THE MARRYING MAIDEN;So;0;ON;;;;;N;;;;; 4DF6;HEXAGRAM FOR ABUNDANCE;So;0;ON;;;;;N;;;;; 4DF7;HEXAGRAM FOR THE WANDERER;So;0;ON;;;;;N;;;;; 4DF8;HEXAGRAM FOR THE GENTLE WIND;So;0;ON;;;;;N;;;;; 4DF9;HEXAGRAM FOR THE JOYOUS LAKE;So;0;ON;;;;;N;;;;; 4DFA;HEXAGRAM FOR DISPERSION;So;0;ON;;;;;N;;;;; 4DFB;HEXAGRAM FOR LIMITATION;So;0;ON;;;;;N;;;;; 4DFC;HEXAGRAM FOR INNER TRUTH;So;0;ON;;;;;N;;;;; 4DFD;HEXAGRAM FOR SMALL PREPONDERANCE;So;0;ON;;;;;N;;;;; 4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;; 4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;; 4E00;;Lo;0;L;;;;;N;;;;; 9FBB;;Lo;0;L;;;;;N;;;;; A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;; A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;; A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;; A003;YI SYLLABLE IP;Lo;0;L;;;;;N;;;;; A004;YI SYLLABLE IET;Lo;0;L;;;;;N;;;;; A005;YI SYLLABLE IEX;Lo;0;L;;;;;N;;;;; A006;YI SYLLABLE IE;Lo;0;L;;;;;N;;;;; A007;YI SYLLABLE IEP;Lo;0;L;;;;;N;;;;; A008;YI SYLLABLE AT;Lo;0;L;;;;;N;;;;; A009;YI SYLLABLE AX;Lo;0;L;;;;;N;;;;; A00A;YI SYLLABLE A;Lo;0;L;;;;;N;;;;; A00B;YI SYLLABLE AP;Lo;0;L;;;;;N;;;;; A00C;YI SYLLABLE UOX;Lo;0;L;;;;;N;;;;; A00D;YI SYLLABLE UO;Lo;0;L;;;;;N;;;;; A00E;YI SYLLABLE UOP;Lo;0;L;;;;;N;;;;; A00F;YI SYLLABLE OT;Lo;0;L;;;;;N;;;;; A010;YI SYLLABLE OX;Lo;0;L;;;;;N;;;;; A011;YI SYLLABLE O;Lo;0;L;;;;;N;;;;; A012;YI SYLLABLE OP;Lo;0;L;;;;;N;;;;; A013;YI SYLLABLE EX;Lo;0;L;;;;;N;;;;; A014;YI SYLLABLE E;Lo;0;L;;;;;N;;;;; A015;YI SYLLABLE WU;Lm;0;L;;;;;N;;;;; A016;YI SYLLABLE BIT;Lo;0;L;;;;;N;;;;; A017;YI SYLLABLE BIX;Lo;0;L;;;;;N;;;;; A018;YI SYLLABLE BI;Lo;0;L;;;;;N;;;;; A019;YI SYLLABLE BIP;Lo;0;L;;;;;N;;;;; A01A;YI SYLLABLE BIET;Lo;0;L;;;;;N;;;;; A01B;YI SYLLABLE BIEX;Lo;0;L;;;;;N;;;;; A01C;YI SYLLABLE BIE;Lo;0;L;;;;;N;;;;; A01D;YI SYLLABLE BIEP;Lo;0;L;;;;;N;;;;; A01E;YI SYLLABLE BAT;Lo;0;L;;;;;N;;;;; A01F;YI SYLLABLE BAX;Lo;0;L;;;;;N;;;;; A020;YI SYLLABLE BA;Lo;0;L;;;;;N;;;;; A021;YI SYLLABLE BAP;Lo;0;L;;;;;N;;;;; A022;YI SYLLABLE BUOX;Lo;0;L;;;;;N;;;;; A023;YI SYLLABLE BUO;Lo;0;L;;;;;N;;;;; A024;YI SYLLABLE BUOP;Lo;0;L;;;;;N;;;;; A025;YI SYLLABLE BOT;Lo;0;L;;;;;N;;;;; A026;YI SYLLABLE BOX;Lo;0;L;;;;;N;;;;; A027;YI SYLLABLE BO;Lo;0;L;;;;;N;;;;; A028;YI SYLLABLE BOP;Lo;0;L;;;;;N;;;;; A029;YI SYLLABLE BEX;Lo;0;L;;;;;N;;;;; A02A;YI SYLLABLE BE;Lo;0;L;;;;;N;;;;; A02B;YI SYLLABLE BEP;Lo;0;L;;;;;N;;;;; A02C;YI SYLLABLE BUT;Lo;0;L;;;;;N;;;;; A02D;YI SYLLABLE BUX;Lo;0;L;;;;;N;;;;; A02E;YI SYLLABLE BU;Lo;0;L;;;;;N;;;;; A02F;YI SYLLABLE BUP;Lo;0;L;;;;;N;;;;; A030;YI SYLLABLE BURX;Lo;0;L;;;;;N;;;;; A031;YI SYLLABLE BUR;Lo;0;L;;;;;N;;;;; A032;YI SYLLABLE BYT;Lo;0;L;;;;;N;;;;; A033;YI SYLLABLE BYX;Lo;0;L;;;;;N;;;;; A034;YI SYLLABLE BY;Lo;0;L;;;;;N;;;;; A035;YI SYLLABLE BYP;Lo;0;L;;;;;N;;;;; A036;YI SYLLABLE BYRX;Lo;0;L;;;;;N;;;;; A037;YI SYLLABLE BYR;Lo;0;L;;;;;N;;;;; A038;YI SYLLABLE PIT;Lo;0;L;;;;;N;;;;; A039;YI SYLLABLE PIX;Lo;0;L;;;;;N;;;;; A03A;YI SYLLABLE PI;Lo;0;L;;;;;N;;;;; A03B;YI SYLLABLE PIP;Lo;0;L;;;;;N;;;;; A03C;YI SYLLABLE PIEX;Lo;0;L;;;;;N;;;;; A03D;YI SYLLABLE PIE;Lo;0;L;;;;;N;;;;; A03E;YI SYLLABLE PIEP;Lo;0;L;;;;;N;;;;; A03F;YI SYLLABLE PAT;Lo;0;L;;;;;N;;;;; A040;YI SYLLABLE PAX;Lo;0;L;;;;;N;;;;; A041;YI SYLLABLE PA;Lo;0;L;;;;;N;;;;; A042;YI SYLLABLE PAP;Lo;0;L;;;;;N;;;;; A043;YI SYLLABLE PUOX;Lo;0;L;;;;;N;;;;; A044;YI SYLLABLE PUO;Lo;0;L;;;;;N;;;;; A045;YI SYLLABLE PUOP;Lo;0;L;;;;;N;;;;; A046;YI SYLLABLE POT;Lo;0;L;;;;;N;;;;; A047;YI SYLLABLE POX;Lo;0;L;;;;;N;;;;; A048;YI SYLLABLE PO;Lo;0;L;;;;;N;;;;; A049;YI SYLLABLE POP;Lo;0;L;;;;;N;;;;; A04A;YI SYLLABLE PUT;Lo;0;L;;;;;N;;;;; A04B;YI SYLLABLE PUX;Lo;0;L;;;;;N;;;;; A04C;YI SYLLABLE PU;Lo;0;L;;;;;N;;;;; A04D;YI SYLLABLE PUP;Lo;0;L;;;;;N;;;;; A04E;YI SYLLABLE PURX;Lo;0;L;;;;;N;;;;; A04F;YI SYLLABLE PUR;Lo;0;L;;;;;N;;;;; A050;YI SYLLABLE PYT;Lo;0;L;;;;;N;;;;; A051;YI SYLLABLE PYX;Lo;0;L;;;;;N;;;;; A052;YI SYLLABLE PY;Lo;0;L;;;;;N;;;;; A053;YI SYLLABLE PYP;Lo;0;L;;;;;N;;;;; A054;YI SYLLABLE PYRX;Lo;0;L;;;;;N;;;;; A055;YI SYLLABLE PYR;Lo;0;L;;;;;N;;;;; A056;YI SYLLABLE BBIT;Lo;0;L;;;;;N;;;;; A057;YI SYLLABLE BBIX;Lo;0;L;;;;;N;;;;; A058;YI SYLLABLE BBI;Lo;0;L;;;;;N;;;;; A059;YI SYLLABLE BBIP;Lo;0;L;;;;;N;;;;; A05A;YI SYLLABLE BBIET;Lo;0;L;;;;;N;;;;; A05B;YI SYLLABLE BBIEX;Lo;0;L;;;;;N;;;;; A05C;YI SYLLABLE BBIE;Lo;0;L;;;;;N;;;;; A05D;YI SYLLABLE BBIEP;Lo;0;L;;;;;N;;;;; A05E;YI SYLLABLE BBAT;Lo;0;L;;;;;N;;;;; A05F;YI SYLLABLE BBAX;Lo;0;L;;;;;N;;;;; A060;YI SYLLABLE BBA;Lo;0;L;;;;;N;;;;; A061;YI SYLLABLE BBAP;Lo;0;L;;;;;N;;;;; A062;YI SYLLABLE BBUOX;Lo;0;L;;;;;N;;;;; A063;YI SYLLABLE BBUO;Lo;0;L;;;;;N;;;;; A064;YI SYLLABLE BBUOP;Lo;0;L;;;;;N;;;;; A065;YI SYLLABLE BBOT;Lo;0;L;;;;;N;;;;; A066;YI SYLLABLE BBOX;Lo;0;L;;;;;N;;;;; A067;YI SYLLABLE BBO;Lo;0;L;;;;;N;;;;; A068;YI SYLLABLE BBOP;Lo;0;L;;;;;N;;;;; A069;YI SYLLABLE BBEX;Lo;0;L;;;;;N;;;;; A06A;YI SYLLABLE BBE;Lo;0;L;;;;;N;;;;; A06B;YI SYLLABLE BBEP;Lo;0;L;;;;;N;;;;; A06C;YI SYLLABLE BBUT;Lo;0;L;;;;;N;;;;; A06D;YI SYLLABLE BBUX;Lo;0;L;;;;;N;;;;; A06E;YI SYLLABLE BBU;Lo;0;L;;;;;N;;;;; A06F;YI SYLLABLE BBUP;Lo;0;L;;;;;N;;;;; A070;YI SYLLABLE BBURX;Lo;0;L;;;;;N;;;;; A071;YI SYLLABLE BBUR;Lo;0;L;;;;;N;;;;; A072;YI SYLLABLE BBYT;Lo;0;L;;;;;N;;;;; A073;YI SYLLABLE BBYX;Lo;0;L;;;;;N;;;;; A074;YI SYLLABLE BBY;Lo;0;L;;;;;N;;;;; A075;YI SYLLABLE BBYP;Lo;0;L;;;;;N;;;;; A076;YI SYLLABLE NBIT;Lo;0;L;;;;;N;;;;; A077;YI SYLLABLE NBIX;Lo;0;L;;;;;N;;;;; A078;YI SYLLABLE NBI;Lo;0;L;;;;;N;;;;; A079;YI SYLLABLE NBIP;Lo;0;L;;;;;N;;;;; A07A;YI SYLLABLE NBIEX;Lo;0;L;;;;;N;;;;; A07B;YI SYLLABLE NBIE;Lo;0;L;;;;;N;;;;; A07C;YI SYLLABLE NBIEP;Lo;0;L;;;;;N;;;;; A07D;YI SYLLABLE NBAT;Lo;0;L;;;;;N;;;;; A07E;YI SYLLABLE NBAX;Lo;0;L;;;;;N;;;;; A07F;YI SYLLABLE NBA;Lo;0;L;;;;;N;;;;; A080;YI SYLLABLE NBAP;Lo;0;L;;;;;N;;;;; A081;YI SYLLABLE NBOT;Lo;0;L;;;;;N;;;;; A082;YI SYLLABLE NBOX;Lo;0;L;;;;;N;;;;; A083;YI SYLLABLE NBO;Lo;0;L;;;;;N;;;;; A084;YI SYLLABLE NBOP;Lo;0;L;;;;;N;;;;; A085;YI SYLLABLE NBUT;Lo;0;L;;;;;N;;;;; A086;YI SYLLABLE NBUX;Lo;0;L;;;;;N;;;;; A087;YI SYLLABLE NBU;Lo;0;L;;;;;N;;;;; A088;YI SYLLABLE NBUP;Lo;0;L;;;;;N;;;;; A089;YI SYLLABLE NBURX;Lo;0;L;;;;;N;;;;; A08A;YI SYLLABLE NBUR;Lo;0;L;;;;;N;;;;; A08B;YI SYLLABLE NBYT;Lo;0;L;;;;;N;;;;; A08C;YI SYLLABLE NBYX;Lo;0;L;;;;;N;;;;; A08D;YI SYLLABLE NBY;Lo;0;L;;;;;N;;;;; A08E;YI SYLLABLE NBYP;Lo;0;L;;;;;N;;;;; A08F;YI SYLLABLE NBYRX;Lo;0;L;;;;;N;;;;; A090;YI SYLLABLE NBYR;Lo;0;L;;;;;N;;;;; A091;YI SYLLABLE HMIT;Lo;0;L;;;;;N;;;;; A092;YI SYLLABLE HMIX;Lo;0;L;;;;;N;;;;; A093;YI SYLLABLE HMI;Lo;0;L;;;;;N;;;;; A094;YI SYLLABLE HMIP;Lo;0;L;;;;;N;;;;; A095;YI SYLLABLE HMIEX;Lo;0;L;;;;;N;;;;; A096;YI SYLLABLE HMIE;Lo;0;L;;;;;N;;;;; A097;YI SYLLABLE HMIEP;Lo;0;L;;;;;N;;;;; A098;YI SYLLABLE HMAT;Lo;0;L;;;;;N;;;;; A099;YI SYLLABLE HMAX;Lo;0;L;;;;;N;;;;; A09A;YI SYLLABLE HMA;Lo;0;L;;;;;N;;;;; A09B;YI SYLLABLE HMAP;Lo;0;L;;;;;N;;;;; A09C;YI SYLLABLE HMUOX;Lo;0;L;;;;;N;;;;; A09D;YI SYLLABLE HMUO;Lo;0;L;;;;;N;;;;; A09E;YI SYLLABLE HMUOP;Lo;0;L;;;;;N;;;;; A09F;YI SYLLABLE HMOT;Lo;0;L;;;;;N;;;;; A0A0;YI SYLLABLE HMOX;Lo;0;L;;;;;N;;;;; A0A1;YI SYLLABLE HMO;Lo;0;L;;;;;N;;;;; A0A2;YI SYLLABLE HMOP;Lo;0;L;;;;;N;;;;; A0A3;YI SYLLABLE HMUT;Lo;0;L;;;;;N;;;;; A0A4;YI SYLLABLE HMUX;Lo;0;L;;;;;N;;;;; A0A5;YI SYLLABLE HMU;Lo;0;L;;;;;N;;;;; A0A6;YI SYLLABLE HMUP;Lo;0;L;;;;;N;;;;; A0A7;YI SYLLABLE HMURX;Lo;0;L;;;;;N;;;;; A0A8;YI SYLLABLE HMUR;Lo;0;L;;;;;N;;;;; A0A9;YI SYLLABLE HMYX;Lo;0;L;;;;;N;;;;; A0AA;YI SYLLABLE HMY;Lo;0;L;;;;;N;;;;; A0AB;YI SYLLABLE HMYP;Lo;0;L;;;;;N;;;;; A0AC;YI SYLLABLE HMYRX;Lo;0;L;;;;;N;;;;; A0AD;YI SYLLABLE HMYR;Lo;0;L;;;;;N;;;;; A0AE;YI SYLLABLE MIT;Lo;0;L;;;;;N;;;;; A0AF;YI SYLLABLE MIX;Lo;0;L;;;;;N;;;;; A0B0;YI SYLLABLE MI;Lo;0;L;;;;;N;;;;; A0B1;YI SYLLABLE MIP;Lo;0;L;;;;;N;;;;; A0B2;YI SYLLABLE MIEX;Lo;0;L;;;;;N;;;;; A0B3;YI SYLLABLE MIE;Lo;0;L;;;;;N;;;;; A0B4;YI SYLLABLE MIEP;Lo;0;L;;;;;N;;;;; A0B5;YI SYLLABLE MAT;Lo;0;L;;;;;N;;;;; A0B6;YI SYLLABLE MAX;Lo;0;L;;;;;N;;;;; A0B7;YI SYLLABLE MA;Lo;0;L;;;;;N;;;;; A0B8;YI SYLLABLE MAP;Lo;0;L;;;;;N;;;;; A0B9;YI SYLLABLE MUOT;Lo;0;L;;;;;N;;;;; A0BA;YI SYLLABLE MUOX;Lo;0;L;;;;;N;;;;; A0BB;YI SYLLABLE MUO;Lo;0;L;;;;;N;;;;; A0BC;YI SYLLABLE MUOP;Lo;0;L;;;;;N;;;;; A0BD;YI SYLLABLE MOT;Lo;0;L;;;;;N;;;;; A0BE;YI SYLLABLE MOX;Lo;0;L;;;;;N;;;;; A0BF;YI SYLLABLE MO;Lo;0;L;;;;;N;;;;; A0C0;YI SYLLABLE MOP;Lo;0;L;;;;;N;;;;; A0C1;YI SYLLABLE MEX;Lo;0;L;;;;;N;;;;; A0C2;YI SYLLABLE ME;Lo;0;L;;;;;N;;;;; A0C3;YI SYLLABLE MUT;Lo;0;L;;;;;N;;;;; A0C4;YI SYLLABLE MUX;Lo;0;L;;;;;N;;;;; A0C5;YI SYLLABLE MU;Lo;0;L;;;;;N;;;;; A0C6;YI SYLLABLE MUP;Lo;0;L;;;;;N;;;;; A0C7;YI SYLLABLE MURX;Lo;0;L;;;;;N;;;;; A0C8;YI SYLLABLE MUR;Lo;0;L;;;;;N;;;;; A0C9;YI SYLLABLE MYT;Lo;0;L;;;;;N;;;;; A0CA;YI SYLLABLE MYX;Lo;0;L;;;;;N;;;;; A0CB;YI SYLLABLE MY;Lo;0;L;;;;;N;;;;; A0CC;YI SYLLABLE MYP;Lo;0;L;;;;;N;;;;; A0CD;YI SYLLABLE FIT;Lo;0;L;;;;;N;;;;; A0CE;YI SYLLABLE FIX;Lo;0;L;;;;;N;;;;; A0CF;YI SYLLABLE FI;Lo;0;L;;;;;N;;;;; A0D0;YI SYLLABLE FIP;Lo;0;L;;;;;N;;;;; A0D1;YI SYLLABLE FAT;Lo;0;L;;;;;N;;;;; A0D2;YI SYLLABLE FAX;Lo;0;L;;;;;N;;;;; A0D3;YI SYLLABLE FA;Lo;0;L;;;;;N;;;;; A0D4;YI SYLLABLE FAP;Lo;0;L;;;;;N;;;;; A0D5;YI SYLLABLE FOX;Lo;0;L;;;;;N;;;;; A0D6;YI SYLLABLE FO;Lo;0;L;;;;;N;;;;; A0D7;YI SYLLABLE FOP;Lo;0;L;;;;;N;;;;; A0D8;YI SYLLABLE FUT;Lo;0;L;;;;;N;;;;; A0D9;YI SYLLABLE FUX;Lo;0;L;;;;;N;;;;; A0DA;YI SYLLABLE FU;Lo;0;L;;;;;N;;;;; A0DB;YI SYLLABLE FUP;Lo;0;L;;;;;N;;;;; A0DC;YI SYLLABLE FURX;Lo;0;L;;;;;N;;;;; A0DD;YI SYLLABLE FUR;Lo;0;L;;;;;N;;;;; A0DE;YI SYLLABLE FYT;Lo;0;L;;;;;N;;;;; A0DF;YI SYLLABLE FYX;Lo;0;L;;;;;N;;;;; A0E0;YI SYLLABLE FY;Lo;0;L;;;;;N;;;;; A0E1;YI SYLLABLE FYP;Lo;0;L;;;;;N;;;;; A0E2;YI SYLLABLE VIT;Lo;0;L;;;;;N;;;;; A0E3;YI SYLLABLE VIX;Lo;0;L;;;;;N;;;;; A0E4;YI SYLLABLE VI;Lo;0;L;;;;;N;;;;; A0E5;YI SYLLABLE VIP;Lo;0;L;;;;;N;;;;; A0E6;YI SYLLABLE VIET;Lo;0;L;;;;;N;;;;; A0E7;YI SYLLABLE VIEX;Lo;0;L;;;;;N;;;;; A0E8;YI SYLLABLE VIE;Lo;0;L;;;;;N;;;;; A0E9;YI SYLLABLE VIEP;Lo;0;L;;;;;N;;;;; A0EA;YI SYLLABLE VAT;Lo;0;L;;;;;N;;;;; A0EB;YI SYLLABLE VAX;Lo;0;L;;;;;N;;;;; A0EC;YI SYLLABLE VA;Lo;0;L;;;;;N;;;;; A0ED;YI SYLLABLE VAP;Lo;0;L;;;;;N;;;;; A0EE;YI SYLLABLE VOT;Lo;0;L;;;;;N;;;;; A0EF;YI SYLLABLE VOX;Lo;0;L;;;;;N;;;;; A0F0;YI SYLLABLE VO;Lo;0;L;;;;;N;;;;; A0F1;YI SYLLABLE VOP;Lo;0;L;;;;;N;;;;; A0F2;YI SYLLABLE VEX;Lo;0;L;;;;;N;;;;; A0F3;YI SYLLABLE VEP;Lo;0;L;;;;;N;;;;; A0F4;YI SYLLABLE VUT;Lo;0;L;;;;;N;;;;; A0F5;YI SYLLABLE VUX;Lo;0;L;;;;;N;;;;; A0F6;YI SYLLABLE VU;Lo;0;L;;;;;N;;;;; A0F7;YI SYLLABLE VUP;Lo;0;L;;;;;N;;;;; A0F8;YI SYLLABLE VURX;Lo;0;L;;;;;N;;;;; A0F9;YI SYLLABLE VUR;Lo;0;L;;;;;N;;;;; A0FA;YI SYLLABLE VYT;Lo;0;L;;;;;N;;;;; A0FB;YI SYLLABLE VYX;Lo;0;L;;;;;N;;;;; A0FC;YI SYLLABLE VY;Lo;0;L;;;;;N;;;;; A0FD;YI SYLLABLE VYP;Lo;0;L;;;;;N;;;;; A0FE;YI SYLLABLE VYRX;Lo;0;L;;;;;N;;;;; A0FF;YI SYLLABLE VYR;Lo;0;L;;;;;N;;;;; A100;YI SYLLABLE DIT;Lo;0;L;;;;;N;;;;; A101;YI SYLLABLE DIX;Lo;0;L;;;;;N;;;;; A102;YI SYLLABLE DI;Lo;0;L;;;;;N;;;;; A103;YI SYLLABLE DIP;Lo;0;L;;;;;N;;;;; A104;YI SYLLABLE DIEX;Lo;0;L;;;;;N;;;;; A105;YI SYLLABLE DIE;Lo;0;L;;;;;N;;;;; A106;YI SYLLABLE DIEP;Lo;0;L;;;;;N;;;;; A107;YI SYLLABLE DAT;Lo;0;L;;;;;N;;;;; A108;YI SYLLABLE DAX;Lo;0;L;;;;;N;;;;; A109;YI SYLLABLE DA;Lo;0;L;;;;;N;;;;; A10A;YI SYLLABLE DAP;Lo;0;L;;;;;N;;;;; A10B;YI SYLLABLE DUOX;Lo;0;L;;;;;N;;;;; A10C;YI SYLLABLE DUO;Lo;0;L;;;;;N;;;;; A10D;YI SYLLABLE DOT;Lo;0;L;;;;;N;;;;; A10E;YI SYLLABLE DOX;Lo;0;L;;;;;N;;;;; A10F;YI SYLLABLE DO;Lo;0;L;;;;;N;;;;; A110;YI SYLLABLE DOP;Lo;0;L;;;;;N;;;;; A111;YI SYLLABLE DEX;Lo;0;L;;;;;N;;;;; A112;YI SYLLABLE DE;Lo;0;L;;;;;N;;;;; A113;YI SYLLABLE DEP;Lo;0;L;;;;;N;;;;; A114;YI SYLLABLE DUT;Lo;0;L;;;;;N;;;;; A115;YI SYLLABLE DUX;Lo;0;L;;;;;N;;;;; A116;YI SYLLABLE DU;Lo;0;L;;;;;N;;;;; A117;YI SYLLABLE DUP;Lo;0;L;;;;;N;;;;; A118;YI SYLLABLE DURX;Lo;0;L;;;;;N;;;;; A119;YI SYLLABLE DUR;Lo;0;L;;;;;N;;;;; A11A;YI SYLLABLE TIT;Lo;0;L;;;;;N;;;;; A11B;YI SYLLABLE TIX;Lo;0;L;;;;;N;;;;; A11C;YI SYLLABLE TI;Lo;0;L;;;;;N;;;;; A11D;YI SYLLABLE TIP;Lo;0;L;;;;;N;;;;; A11E;YI SYLLABLE TIEX;Lo;0;L;;;;;N;;;;; A11F;YI SYLLABLE TIE;Lo;0;L;;;;;N;;;;; A120;YI SYLLABLE TIEP;Lo;0;L;;;;;N;;;;; A121;YI SYLLABLE TAT;Lo;0;L;;;;;N;;;;; A122;YI SYLLABLE TAX;Lo;0;L;;;;;N;;;;; A123;YI SYLLABLE TA;Lo;0;L;;;;;N;;;;; A124;YI SYLLABLE TAP;Lo;0;L;;;;;N;;;;; A125;YI SYLLABLE TUOT;Lo;0;L;;;;;N;;;;; A126;YI SYLLABLE TUOX;Lo;0;L;;;;;N;;;;; A127;YI SYLLABLE TUO;Lo;0;L;;;;;N;;;;; A128;YI SYLLABLE TUOP;Lo;0;L;;;;;N;;;;; A129;YI SYLLABLE TOT;Lo;0;L;;;;;N;;;;; A12A;YI SYLLABLE TOX;Lo;0;L;;;;;N;;;;; A12B;YI SYLLABLE TO;Lo;0;L;;;;;N;;;;; A12C;YI SYLLABLE TOP;Lo;0;L;;;;;N;;;;; A12D;YI SYLLABLE TEX;Lo;0;L;;;;;N;;;;; A12E;YI SYLLABLE TE;Lo;0;L;;;;;N;;;;; A12F;YI SYLLABLE TEP;Lo;0;L;;;;;N;;;;; A130;YI SYLLABLE TUT;Lo;0;L;;;;;N;;;;; A131;YI SYLLABLE TUX;Lo;0;L;;;;;N;;;;; A132;YI SYLLABLE TU;Lo;0;L;;;;;N;;;;; A133;YI SYLLABLE TUP;Lo;0;L;;;;;N;;;;; A134;YI SYLLABLE TURX;Lo;0;L;;;;;N;;;;; A135;YI SYLLABLE TUR;Lo;0;L;;;;;N;;;;; A136;YI SYLLABLE DDIT;Lo;0;L;;;;;N;;;;; A137;YI SYLLABLE DDIX;Lo;0;L;;;;;N;;;;; A138;YI SYLLABLE DDI;Lo;0;L;;;;;N;;;;; A139;YI SYLLABLE DDIP;Lo;0;L;;;;;N;;;;; A13A;YI SYLLABLE DDIEX;Lo;0;L;;;;;N;;;;; A13B;YI SYLLABLE DDIE;Lo;0;L;;;;;N;;;;; A13C;YI SYLLABLE DDIEP;Lo;0;L;;;;;N;;;;; A13D;YI SYLLABLE DDAT;Lo;0;L;;;;;N;;;;; A13E;YI SYLLABLE DDAX;Lo;0;L;;;;;N;;;;; A13F;YI SYLLABLE DDA;Lo;0;L;;;;;N;;;;; A140;YI SYLLABLE DDAP;Lo;0;L;;;;;N;;;;; A141;YI SYLLABLE DDUOX;Lo;0;L;;;;;N;;;;; A142;YI SYLLABLE DDUO;Lo;0;L;;;;;N;;;;; A143;YI SYLLABLE DDUOP;Lo;0;L;;;;;N;;;;; A144;YI SYLLABLE DDOT;Lo;0;L;;;;;N;;;;; A145;YI SYLLABLE DDOX;Lo;0;L;;;;;N;;;;; A146;YI SYLLABLE DDO;Lo;0;L;;;;;N;;;;; A147;YI SYLLABLE DDOP;Lo;0;L;;;;;N;;;;; A148;YI SYLLABLE DDEX;Lo;0;L;;;;;N;;;;; A149;YI SYLLABLE DDE;Lo;0;L;;;;;N;;;;; A14A;YI SYLLABLE DDEP;Lo;0;L;;;;;N;;;;; A14B;YI SYLLABLE DDUT;Lo;0;L;;;;;N;;;;; A14C;YI SYLLABLE DDUX;Lo;0;L;;;;;N;;;;; A14D;YI SYLLABLE DDU;Lo;0;L;;;;;N;;;;; A14E;YI SYLLABLE DDUP;Lo;0;L;;;;;N;;;;; A14F;YI SYLLABLE DDURX;Lo;0;L;;;;;N;;;;; A150;YI SYLLABLE DDUR;Lo;0;L;;;;;N;;;;; A151;YI SYLLABLE NDIT;Lo;0;L;;;;;N;;;;; A152;YI SYLLABLE NDIX;Lo;0;L;;;;;N;;;;; A153;YI SYLLABLE NDI;Lo;0;L;;;;;N;;;;; A154;YI SYLLABLE NDIP;Lo;0;L;;;;;N;;;;; A155;YI SYLLABLE NDIEX;Lo;0;L;;;;;N;;;;; A156;YI SYLLABLE NDIE;Lo;0;L;;;;;N;;;;; A157;YI SYLLABLE NDAT;Lo;0;L;;;;;N;;;;; A158;YI SYLLABLE NDAX;Lo;0;L;;;;;N;;;;; A159;YI SYLLABLE NDA;Lo;0;L;;;;;N;;;;; A15A;YI SYLLABLE NDAP;Lo;0;L;;;;;N;;;;; A15B;YI SYLLABLE NDOT;Lo;0;L;;;;;N;;;;; A15C;YI SYLLABLE NDOX;Lo;0;L;;;;;N;;;;; A15D;YI SYLLABLE NDO;Lo;0;L;;;;;N;;;;; A15E;YI SYLLABLE NDOP;Lo;0;L;;;;;N;;;;; A15F;YI SYLLABLE NDEX;Lo;0;L;;;;;N;;;;; A160;YI SYLLABLE NDE;Lo;0;L;;;;;N;;;;; A161;YI SYLLABLE NDEP;Lo;0;L;;;;;N;;;;; A162;YI SYLLABLE NDUT;Lo;0;L;;;;;N;;;;; A163;YI SYLLABLE NDUX;Lo;0;L;;;;;N;;;;; A164;YI SYLLABLE NDU;Lo;0;L;;;;;N;;;;; A165;YI SYLLABLE NDUP;Lo;0;L;;;;;N;;;;; A166;YI SYLLABLE NDURX;Lo;0;L;;;;;N;;;;; A167;YI SYLLABLE NDUR;Lo;0;L;;;;;N;;;;; A168;YI SYLLABLE HNIT;Lo;0;L;;;;;N;;;;; A169;YI SYLLABLE HNIX;Lo;0;L;;;;;N;;;;; A16A;YI SYLLABLE HNI;Lo;0;L;;;;;N;;;;; A16B;YI SYLLABLE HNIP;Lo;0;L;;;;;N;;;;; A16C;YI SYLLABLE HNIET;Lo;0;L;;;;;N;;;;; A16D;YI SYLLABLE HNIEX;Lo;0;L;;;;;N;;;;; A16E;YI SYLLABLE HNIE;Lo;0;L;;;;;N;;;;; A16F;YI SYLLABLE HNIEP;Lo;0;L;;;;;N;;;;; A170;YI SYLLABLE HNAT;Lo;0;L;;;;;N;;;;; A171;YI SYLLABLE HNAX;Lo;0;L;;;;;N;;;;; A172;YI SYLLABLE HNA;Lo;0;L;;;;;N;;;;; A173;YI SYLLABLE HNAP;Lo;0;L;;;;;N;;;;; A174;YI SYLLABLE HNUOX;Lo;0;L;;;;;N;;;;; A175;YI SYLLABLE HNUO;Lo;0;L;;;;;N;;;;; A176;YI SYLLABLE HNOT;Lo;0;L;;;;;N;;;;; A177;YI SYLLABLE HNOX;Lo;0;L;;;;;N;;;;; A178;YI SYLLABLE HNOP;Lo;0;L;;;;;N;;;;; A179;YI SYLLABLE HNEX;Lo;0;L;;;;;N;;;;; A17A;YI SYLLABLE HNE;Lo;0;L;;;;;N;;;;; A17B;YI SYLLABLE HNEP;Lo;0;L;;;;;N;;;;; A17C;YI SYLLABLE HNUT;Lo;0;L;;;;;N;;;;; A17D;YI SYLLABLE NIT;Lo;0;L;;;;;N;;;;; A17E;YI SYLLABLE NIX;Lo;0;L;;;;;N;;;;; A17F;YI SYLLABLE NI;Lo;0;L;;;;;N;;;;; A180;YI SYLLABLE NIP;Lo;0;L;;;;;N;;;;; A181;YI SYLLABLE NIEX;Lo;0;L;;;;;N;;;;; A182;YI SYLLABLE NIE;Lo;0;L;;;;;N;;;;; A183;YI SYLLABLE NIEP;Lo;0;L;;;;;N;;;;; A184;YI SYLLABLE NAX;Lo;0;L;;;;;N;;;;; A185;YI SYLLABLE NA;Lo;0;L;;;;;N;;;;; A186;YI SYLLABLE NAP;Lo;0;L;;;;;N;;;;; A187;YI SYLLABLE NUOX;Lo;0;L;;;;;N;;;;; A188;YI SYLLABLE NUO;Lo;0;L;;;;;N;;;;; A189;YI SYLLABLE NUOP;Lo;0;L;;;;;N;;;;; A18A;YI SYLLABLE NOT;Lo;0;L;;;;;N;;;;; A18B;YI SYLLABLE NOX;Lo;0;L;;;;;N;;;;; A18C;YI SYLLABLE NO;Lo;0;L;;;;;N;;;;; A18D;YI SYLLABLE NOP;Lo;0;L;;;;;N;;;;; A18E;YI SYLLABLE NEX;Lo;0;L;;;;;N;;;;; A18F;YI SYLLABLE NE;Lo;0;L;;;;;N;;;;; A190;YI SYLLABLE NEP;Lo;0;L;;;;;N;;;;; A191;YI SYLLABLE NUT;Lo;0;L;;;;;N;;;;; A192;YI SYLLABLE NUX;Lo;0;L;;;;;N;;;;; A193;YI SYLLABLE NU;Lo;0;L;;;;;N;;;;; A194;YI SYLLABLE NUP;Lo;0;L;;;;;N;;;;; A195;YI SYLLABLE NURX;Lo;0;L;;;;;N;;;;; A196;YI SYLLABLE NUR;Lo;0;L;;;;;N;;;;; A197;YI SYLLABLE HLIT;Lo;0;L;;;;;N;;;;; A198;YI SYLLABLE HLIX;Lo;0;L;;;;;N;;;;; A199;YI SYLLABLE HLI;Lo;0;L;;;;;N;;;;; A19A;YI SYLLABLE HLIP;Lo;0;L;;;;;N;;;;; A19B;YI SYLLABLE HLIEX;Lo;0;L;;;;;N;;;;; A19C;YI SYLLABLE HLIE;Lo;0;L;;;;;N;;;;; A19D;YI SYLLABLE HLIEP;Lo;0;L;;;;;N;;;;; A19E;YI SYLLABLE HLAT;Lo;0;L;;;;;N;;;;; A19F;YI SYLLABLE HLAX;Lo;0;L;;;;;N;;;;; A1A0;YI SYLLABLE HLA;Lo;0;L;;;;;N;;;;; A1A1;YI SYLLABLE HLAP;Lo;0;L;;;;;N;;;;; A1A2;YI SYLLABLE HLUOX;Lo;0;L;;;;;N;;;;; A1A3;YI SYLLABLE HLUO;Lo;0;L;;;;;N;;;;; A1A4;YI SYLLABLE HLUOP;Lo;0;L;;;;;N;;;;; A1A5;YI SYLLABLE HLOX;Lo;0;L;;;;;N;;;;; A1A6;YI SYLLABLE HLO;Lo;0;L;;;;;N;;;;; A1A7;YI SYLLABLE HLOP;Lo;0;L;;;;;N;;;;; A1A8;YI SYLLABLE HLEX;Lo;0;L;;;;;N;;;;; A1A9;YI SYLLABLE HLE;Lo;0;L;;;;;N;;;;; A1AA;YI SYLLABLE HLEP;Lo;0;L;;;;;N;;;;; A1AB;YI SYLLABLE HLUT;Lo;0;L;;;;;N;;;;; A1AC;YI SYLLABLE HLUX;Lo;0;L;;;;;N;;;;; A1AD;YI SYLLABLE HLU;Lo;0;L;;;;;N;;;;; A1AE;YI SYLLABLE HLUP;Lo;0;L;;;;;N;;;;; A1AF;YI SYLLABLE HLURX;Lo;0;L;;;;;N;;;;; A1B0;YI SYLLABLE HLUR;Lo;0;L;;;;;N;;;;; A1B1;YI SYLLABLE HLYT;Lo;0;L;;;;;N;;;;; A1B2;YI SYLLABLE HLYX;Lo;0;L;;;;;N;;;;; A1B3;YI SYLLABLE HLY;Lo;0;L;;;;;N;;;;; A1B4;YI SYLLABLE HLYP;Lo;0;L;;;;;N;;;;; A1B5;YI SYLLABLE HLYRX;Lo;0;L;;;;;N;;;;; A1B6;YI SYLLABLE HLYR;Lo;0;L;;;;;N;;;;; A1B7;YI SYLLABLE LIT;Lo;0;L;;;;;N;;;;; A1B8;YI SYLLABLE LIX;Lo;0;L;;;;;N;;;;; A1B9;YI SYLLABLE LI;Lo;0;L;;;;;N;;;;; A1BA;YI SYLLABLE LIP;Lo;0;L;;;;;N;;;;; A1BB;YI SYLLABLE LIET;Lo;0;L;;;;;N;;;;; A1BC;YI SYLLABLE LIEX;Lo;0;L;;;;;N;;;;; A1BD;YI SYLLABLE LIE;Lo;0;L;;;;;N;;;;; A1BE;YI SYLLABLE LIEP;Lo;0;L;;;;;N;;;;; A1BF;YI SYLLABLE LAT;Lo;0;L;;;;;N;;;;; A1C0;YI SYLLABLE LAX;Lo;0;L;;;;;N;;;;; A1C1;YI SYLLABLE LA;Lo;0;L;;;;;N;;;;; A1C2;YI SYLLABLE LAP;Lo;0;L;;;;;N;;;;; A1C3;YI SYLLABLE LUOT;Lo;0;L;;;;;N;;;;; A1C4;YI SYLLABLE LUOX;Lo;0;L;;;;;N;;;;; A1C5;YI SYLLABLE LUO;Lo;0;L;;;;;N;;;;; A1C6;YI SYLLABLE LUOP;Lo;0;L;;;;;N;;;;; A1C7;YI SYLLABLE LOT;Lo;0;L;;;;;N;;;;; A1C8;YI SYLLABLE LOX;Lo;0;L;;;;;N;;;;; A1C9;YI SYLLABLE LO;Lo;0;L;;;;;N;;;;; A1CA;YI SYLLABLE LOP;Lo;0;L;;;;;N;;;;; A1CB;YI SYLLABLE LEX;Lo;0;L;;;;;N;;;;; A1CC;YI SYLLABLE LE;Lo;0;L;;;;;N;;;;; A1CD;YI SYLLABLE LEP;Lo;0;L;;;;;N;;;;; A1CE;YI SYLLABLE LUT;Lo;0;L;;;;;N;;;;; A1CF;YI SYLLABLE LUX;Lo;0;L;;;;;N;;;;; A1D0;YI SYLLABLE LU;Lo;0;L;;;;;N;;;;; A1D1;YI SYLLABLE LUP;Lo;0;L;;;;;N;;;;; A1D2;YI SYLLABLE LURX;Lo;0;L;;;;;N;;;;; A1D3;YI SYLLABLE LUR;Lo;0;L;;;;;N;;;;; A1D4;YI SYLLABLE LYT;Lo;0;L;;;;;N;;;;; A1D5;YI SYLLABLE LYX;Lo;0;L;;;;;N;;;;; A1D6;YI SYLLABLE LY;Lo;0;L;;;;;N;;;;; A1D7;YI SYLLABLE LYP;Lo;0;L;;;;;N;;;;; A1D8;YI SYLLABLE LYRX;Lo;0;L;;;;;N;;;;; A1D9;YI SYLLABLE LYR;Lo;0;L;;;;;N;;;;; A1DA;YI SYLLABLE GIT;Lo;0;L;;;;;N;;;;; A1DB;YI SYLLABLE GIX;Lo;0;L;;;;;N;;;;; A1DC;YI SYLLABLE GI;Lo;0;L;;;;;N;;;;; A1DD;YI SYLLABLE GIP;Lo;0;L;;;;;N;;;;; A1DE;YI SYLLABLE GIET;Lo;0;L;;;;;N;;;;; A1DF;YI SYLLABLE GIEX;Lo;0;L;;;;;N;;;;; A1E0;YI SYLLABLE GIE;Lo;0;L;;;;;N;;;;; A1E1;YI SYLLABLE GIEP;Lo;0;L;;;;;N;;;;; A1E2;YI SYLLABLE GAT;Lo;0;L;;;;;N;;;;; A1E3;YI SYLLABLE GAX;Lo;0;L;;;;;N;;;;; A1E4;YI SYLLABLE GA;Lo;0;L;;;;;N;;;;; A1E5;YI SYLLABLE GAP;Lo;0;L;;;;;N;;;;; A1E6;YI SYLLABLE GUOT;Lo;0;L;;;;;N;;;;; A1E7;YI SYLLABLE GUOX;Lo;0;L;;;;;N;;;;; A1E8;YI SYLLABLE GUO;Lo;0;L;;;;;N;;;;; A1E9;YI SYLLABLE GUOP;Lo;0;L;;;;;N;;;;; A1EA;YI SYLLABLE GOT;Lo;0;L;;;;;N;;;;; A1EB;YI SYLLABLE GOX;Lo;0;L;;;;;N;;;;; A1EC;YI SYLLABLE GO;Lo;0;L;;;;;N;;;;; A1ED;YI SYLLABLE GOP;Lo;0;L;;;;;N;;;;; A1EE;YI SYLLABLE GET;Lo;0;L;;;;;N;;;;; A1EF;YI SYLLABLE GEX;Lo;0;L;;;;;N;;;;; A1F0;YI SYLLABLE GE;Lo;0;L;;;;;N;;;;; A1F1;YI SYLLABLE GEP;Lo;0;L;;;;;N;;;;; A1F2;YI SYLLABLE GUT;Lo;0;L;;;;;N;;;;; A1F3;YI SYLLABLE GUX;Lo;0;L;;;;;N;;;;; A1F4;YI SYLLABLE GU;Lo;0;L;;;;;N;;;;; A1F5;YI SYLLABLE GUP;Lo;0;L;;;;;N;;;;; A1F6;YI SYLLABLE GURX;Lo;0;L;;;;;N;;;;; A1F7;YI SYLLABLE GUR;Lo;0;L;;;;;N;;;;; A1F8;YI SYLLABLE KIT;Lo;0;L;;;;;N;;;;; A1F9;YI SYLLABLE KIX;Lo;0;L;;;;;N;;;;; A1FA;YI SYLLABLE KI;Lo;0;L;;;;;N;;;;; A1FB;YI SYLLABLE KIP;Lo;0;L;;;;;N;;;;; A1FC;YI SYLLABLE KIEX;Lo;0;L;;;;;N;;;;; A1FD;YI SYLLABLE KIE;Lo;0;L;;;;;N;;;;; A1FE;YI SYLLABLE KIEP;Lo;0;L;;;;;N;;;;; A1FF;YI SYLLABLE KAT;Lo;0;L;;;;;N;;;;; A200;YI SYLLABLE KAX;Lo;0;L;;;;;N;;;;; A201;YI SYLLABLE KA;Lo;0;L;;;;;N;;;;; A202;YI SYLLABLE KAP;Lo;0;L;;;;;N;;;;; A203;YI SYLLABLE KUOX;Lo;0;L;;;;;N;;;;; A204;YI SYLLABLE KUO;Lo;0;L;;;;;N;;;;; A205;YI SYLLABLE KUOP;Lo;0;L;;;;;N;;;;; A206;YI SYLLABLE KOT;Lo;0;L;;;;;N;;;;; A207;YI SYLLABLE KOX;Lo;0;L;;;;;N;;;;; A208;YI SYLLABLE KO;Lo;0;L;;;;;N;;;;; A209;YI SYLLABLE KOP;Lo;0;L;;;;;N;;;;; A20A;YI SYLLABLE KET;Lo;0;L;;;;;N;;;;; A20B;YI SYLLABLE KEX;Lo;0;L;;;;;N;;;;; A20C;YI SYLLABLE KE;Lo;0;L;;;;;N;;;;; A20D;YI SYLLABLE KEP;Lo;0;L;;;;;N;;;;; A20E;YI SYLLABLE KUT;Lo;0;L;;;;;N;;;;; A20F;YI SYLLABLE KUX;Lo;0;L;;;;;N;;;;; A210;YI SYLLABLE KU;Lo;0;L;;;;;N;;;;; A211;YI SYLLABLE KUP;Lo;0;L;;;;;N;;;;; A212;YI SYLLABLE KURX;Lo;0;L;;;;;N;;;;; A213;YI SYLLABLE KUR;Lo;0;L;;;;;N;;;;; A214;YI SYLLABLE GGIT;Lo;0;L;;;;;N;;;;; A215;YI SYLLABLE GGIX;Lo;0;L;;;;;N;;;;; A216;YI SYLLABLE GGI;Lo;0;L;;;;;N;;;;; A217;YI SYLLABLE GGIEX;Lo;0;L;;;;;N;;;;; A218;YI SYLLABLE GGIE;Lo;0;L;;;;;N;;;;; A219;YI SYLLABLE GGIEP;Lo;0;L;;;;;N;;;;; A21A;YI SYLLABLE GGAT;Lo;0;L;;;;;N;;;;; A21B;YI SYLLABLE GGAX;Lo;0;L;;;;;N;;;;; A21C;YI SYLLABLE GGA;Lo;0;L;;;;;N;;;;; A21D;YI SYLLABLE GGAP;Lo;0;L;;;;;N;;;;; A21E;YI SYLLABLE GGUOT;Lo;0;L;;;;;N;;;;; A21F;YI SYLLABLE GGUOX;Lo;0;L;;;;;N;;;;; A220;YI SYLLABLE GGUO;Lo;0;L;;;;;N;;;;; A221;YI SYLLABLE GGUOP;Lo;0;L;;;;;N;;;;; A222;YI SYLLABLE GGOT;Lo;0;L;;;;;N;;;;; A223;YI SYLLABLE GGOX;Lo;0;L;;;;;N;;;;; A224;YI SYLLABLE GGO;Lo;0;L;;;;;N;;;;; A225;YI SYLLABLE GGOP;Lo;0;L;;;;;N;;;;; A226;YI SYLLABLE GGET;Lo;0;L;;;;;N;;;;; A227;YI SYLLABLE GGEX;Lo;0;L;;;;;N;;;;; A228;YI SYLLABLE GGE;Lo;0;L;;;;;N;;;;; A229;YI SYLLABLE GGEP;Lo;0;L;;;;;N;;;;; A22A;YI SYLLABLE GGUT;Lo;0;L;;;;;N;;;;; A22B;YI SYLLABLE GGUX;Lo;0;L;;;;;N;;;;; A22C;YI SYLLABLE GGU;Lo;0;L;;;;;N;;;;; A22D;YI SYLLABLE GGUP;Lo;0;L;;;;;N;;;;; A22E;YI SYLLABLE GGURX;Lo;0;L;;;;;N;;;;; A22F;YI SYLLABLE GGUR;Lo;0;L;;;;;N;;;;; A230;YI SYLLABLE MGIEX;Lo;0;L;;;;;N;;;;; A231;YI SYLLABLE MGIE;Lo;0;L;;;;;N;;;;; A232;YI SYLLABLE MGAT;Lo;0;L;;;;;N;;;;; A233;YI SYLLABLE MGAX;Lo;0;L;;;;;N;;;;; A234;YI SYLLABLE MGA;Lo;0;L;;;;;N;;;;; A235;YI SYLLABLE MGAP;Lo;0;L;;;;;N;;;;; A236;YI SYLLABLE MGUOX;Lo;0;L;;;;;N;;;;; A237;YI SYLLABLE MGUO;Lo;0;L;;;;;N;;;;; A238;YI SYLLABLE MGUOP;Lo;0;L;;;;;N;;;;; A239;YI SYLLABLE MGOT;Lo;0;L;;;;;N;;;;; A23A;YI SYLLABLE MGOX;Lo;0;L;;;;;N;;;;; A23B;YI SYLLABLE MGO;Lo;0;L;;;;;N;;;;; A23C;YI SYLLABLE MGOP;Lo;0;L;;;;;N;;;;; A23D;YI SYLLABLE MGEX;Lo;0;L;;;;;N;;;;; A23E;YI SYLLABLE MGE;Lo;0;L;;;;;N;;;;; A23F;YI SYLLABLE MGEP;Lo;0;L;;;;;N;;;;; A240;YI SYLLABLE MGUT;Lo;0;L;;;;;N;;;;; A241;YI SYLLABLE MGUX;Lo;0;L;;;;;N;;;;; A242;YI SYLLABLE MGU;Lo;0;L;;;;;N;;;;; A243;YI SYLLABLE MGUP;Lo;0;L;;;;;N;;;;; A244;YI SYLLABLE MGURX;Lo;0;L;;;;;N;;;;; A245;YI SYLLABLE MGUR;Lo;0;L;;;;;N;;;;; A246;YI SYLLABLE HXIT;Lo;0;L;;;;;N;;;;; A247;YI SYLLABLE HXIX;Lo;0;L;;;;;N;;;;; A248;YI SYLLABLE HXI;Lo;0;L;;;;;N;;;;; A249;YI SYLLABLE HXIP;Lo;0;L;;;;;N;;;;; A24A;YI SYLLABLE HXIET;Lo;0;L;;;;;N;;;;; A24B;YI SYLLABLE HXIEX;Lo;0;L;;;;;N;;;;; A24C;YI SYLLABLE HXIE;Lo;0;L;;;;;N;;;;; A24D;YI SYLLABLE HXIEP;Lo;0;L;;;;;N;;;;; A24E;YI SYLLABLE HXAT;Lo;0;L;;;;;N;;;;; A24F;YI SYLLABLE HXAX;Lo;0;L;;;;;N;;;;; A250;YI SYLLABLE HXA;Lo;0;L;;;;;N;;;;; A251;YI SYLLABLE HXAP;Lo;0;L;;;;;N;;;;; A252;YI SYLLABLE HXUOT;Lo;0;L;;;;;N;;;;; A253;YI SYLLABLE HXUOX;Lo;0;L;;;;;N;;;;; A254;YI SYLLABLE HXUO;Lo;0;L;;;;;N;;;;; A255;YI SYLLABLE HXUOP;Lo;0;L;;;;;N;;;;; A256;YI SYLLABLE HXOT;Lo;0;L;;;;;N;;;;; A257;YI SYLLABLE HXOX;Lo;0;L;;;;;N;;;;; A258;YI SYLLABLE HXO;Lo;0;L;;;;;N;;;;; A259;YI SYLLABLE HXOP;Lo;0;L;;;;;N;;;;; A25A;YI SYLLABLE HXEX;Lo;0;L;;;;;N;;;;; A25B;YI SYLLABLE HXE;Lo;0;L;;;;;N;;;;; A25C;YI SYLLABLE HXEP;Lo;0;L;;;;;N;;;;; A25D;YI SYLLABLE NGIEX;Lo;0;L;;;;;N;;;;; A25E;YI SYLLABLE NGIE;Lo;0;L;;;;;N;;;;; A25F;YI SYLLABLE NGIEP;Lo;0;L;;;;;N;;;;; A260;YI SYLLABLE NGAT;Lo;0;L;;;;;N;;;;; A261;YI SYLLABLE NGAX;Lo;0;L;;;;;N;;;;; A262;YI SYLLABLE NGA;Lo;0;L;;;;;N;;;;; A263;YI SYLLABLE NGAP;Lo;0;L;;;;;N;;;;; A264;YI SYLLABLE NGUOT;Lo;0;L;;;;;N;;;;; A265;YI SYLLABLE NGUOX;Lo;0;L;;;;;N;;;;; A266;YI SYLLABLE NGUO;Lo;0;L;;;;;N;;;;; A267;YI SYLLABLE NGOT;Lo;0;L;;;;;N;;;;; A268;YI SYLLABLE NGOX;Lo;0;L;;;;;N;;;;; A269;YI SYLLABLE NGO;Lo;0;L;;;;;N;;;;; A26A;YI SYLLABLE NGOP;Lo;0;L;;;;;N;;;;; A26B;YI SYLLABLE NGEX;Lo;0;L;;;;;N;;;;; A26C;YI SYLLABLE NGE;Lo;0;L;;;;;N;;;;; A26D;YI SYLLABLE NGEP;Lo;0;L;;;;;N;;;;; A26E;YI SYLLABLE HIT;Lo;0;L;;;;;N;;;;; A26F;YI SYLLABLE HIEX;Lo;0;L;;;;;N;;;;; A270;YI SYLLABLE HIE;Lo;0;L;;;;;N;;;;; A271;YI SYLLABLE HAT;Lo;0;L;;;;;N;;;;; A272;YI SYLLABLE HAX;Lo;0;L;;;;;N;;;;; A273;YI SYLLABLE HA;Lo;0;L;;;;;N;;;;; A274;YI SYLLABLE HAP;Lo;0;L;;;;;N;;;;; A275;YI SYLLABLE HUOT;Lo;0;L;;;;;N;;;;; A276;YI SYLLABLE HUOX;Lo;0;L;;;;;N;;;;; A277;YI SYLLABLE HUO;Lo;0;L;;;;;N;;;;; A278;YI SYLLABLE HUOP;Lo;0;L;;;;;N;;;;; A279;YI SYLLABLE HOT;Lo;0;L;;;;;N;;;;; A27A;YI SYLLABLE HOX;Lo;0;L;;;;;N;;;;; A27B;YI SYLLABLE HO;Lo;0;L;;;;;N;;;;; A27C;YI SYLLABLE HOP;Lo;0;L;;;;;N;;;;; A27D;YI SYLLABLE HEX;Lo;0;L;;;;;N;;;;; A27E;YI SYLLABLE HE;Lo;0;L;;;;;N;;;;; A27F;YI SYLLABLE HEP;Lo;0;L;;;;;N;;;;; A280;YI SYLLABLE WAT;Lo;0;L;;;;;N;;;;; A281;YI SYLLABLE WAX;Lo;0;L;;;;;N;;;;; A282;YI SYLLABLE WA;Lo;0;L;;;;;N;;;;; A283;YI SYLLABLE WAP;Lo;0;L;;;;;N;;;;; A284;YI SYLLABLE WUOX;Lo;0;L;;;;;N;;;;; A285;YI SYLLABLE WUO;Lo;0;L;;;;;N;;;;; A286;YI SYLLABLE WUOP;Lo;0;L;;;;;N;;;;; A287;YI SYLLABLE WOX;Lo;0;L;;;;;N;;;;; A288;YI SYLLABLE WO;Lo;0;L;;;;;N;;;;; A289;YI SYLLABLE WOP;Lo;0;L;;;;;N;;;;; A28A;YI SYLLABLE WEX;Lo;0;L;;;;;N;;;;; A28B;YI SYLLABLE WE;Lo;0;L;;;;;N;;;;; A28C;YI SYLLABLE WEP;Lo;0;L;;;;;N;;;;; A28D;YI SYLLABLE ZIT;Lo;0;L;;;;;N;;;;; A28E;YI SYLLABLE ZIX;Lo;0;L;;;;;N;;;;; A28F;YI SYLLABLE ZI;Lo;0;L;;;;;N;;;;; A290;YI SYLLABLE ZIP;Lo;0;L;;;;;N;;;;; A291;YI SYLLABLE ZIEX;Lo;0;L;;;;;N;;;;; A292;YI SYLLABLE ZIE;Lo;0;L;;;;;N;;;;; A293;YI SYLLABLE ZIEP;Lo;0;L;;;;;N;;;;; A294;YI SYLLABLE ZAT;Lo;0;L;;;;;N;;;;; A295;YI SYLLABLE ZAX;Lo;0;L;;;;;N;;;;; A296;YI SYLLABLE ZA;Lo;0;L;;;;;N;;;;; A297;YI SYLLABLE ZAP;Lo;0;L;;;;;N;;;;; A298;YI SYLLABLE ZUOX;Lo;0;L;;;;;N;;;;; A299;YI SYLLABLE ZUO;Lo;0;L;;;;;N;;;;; A29A;YI SYLLABLE ZUOP;Lo;0;L;;;;;N;;;;; A29B;YI SYLLABLE ZOT;Lo;0;L;;;;;N;;;;; A29C;YI SYLLABLE ZOX;Lo;0;L;;;;;N;;;;; A29D;YI SYLLABLE ZO;Lo;0;L;;;;;N;;;;; A29E;YI SYLLABLE ZOP;Lo;0;L;;;;;N;;;;; A29F;YI SYLLABLE ZEX;Lo;0;L;;;;;N;;;;; A2A0;YI SYLLABLE ZE;Lo;0;L;;;;;N;;;;; A2A1;YI SYLLABLE ZEP;Lo;0;L;;;;;N;;;;; A2A2;YI SYLLABLE ZUT;Lo;0;L;;;;;N;;;;; A2A3;YI SYLLABLE ZUX;Lo;0;L;;;;;N;;;;; A2A4;YI SYLLABLE ZU;Lo;0;L;;;;;N;;;;; A2A5;YI SYLLABLE ZUP;Lo;0;L;;;;;N;;;;; A2A6;YI SYLLABLE ZURX;Lo;0;L;;;;;N;;;;; A2A7;YI SYLLABLE ZUR;Lo;0;L;;;;;N;;;;; A2A8;YI SYLLABLE ZYT;Lo;0;L;;;;;N;;;;; A2A9;YI SYLLABLE ZYX;Lo;0;L;;;;;N;;;;; A2AA;YI SYLLABLE ZY;Lo;0;L;;;;;N;;;;; A2AB;YI SYLLABLE ZYP;Lo;0;L;;;;;N;;;;; A2AC;YI SYLLABLE ZYRX;Lo;0;L;;;;;N;;;;; A2AD;YI SYLLABLE ZYR;Lo;0;L;;;;;N;;;;; A2AE;YI SYLLABLE CIT;Lo;0;L;;;;;N;;;;; A2AF;YI SYLLABLE CIX;Lo;0;L;;;;;N;;;;; A2B0;YI SYLLABLE CI;Lo;0;L;;;;;N;;;;; A2B1;YI SYLLABLE CIP;Lo;0;L;;;;;N;;;;; A2B2;YI SYLLABLE CIET;Lo;0;L;;;;;N;;;;; A2B3;YI SYLLABLE CIEX;Lo;0;L;;;;;N;;;;; A2B4;YI SYLLABLE CIE;Lo;0;L;;;;;N;;;;; A2B5;YI SYLLABLE CIEP;Lo;0;L;;;;;N;;;;; A2B6;YI SYLLABLE CAT;Lo;0;L;;;;;N;;;;; A2B7;YI SYLLABLE CAX;Lo;0;L;;;;;N;;;;; A2B8;YI SYLLABLE CA;Lo;0;L;;;;;N;;;;; A2B9;YI SYLLABLE CAP;Lo;0;L;;;;;N;;;;; A2BA;YI SYLLABLE CUOX;Lo;0;L;;;;;N;;;;; A2BB;YI SYLLABLE CUO;Lo;0;L;;;;;N;;;;; A2BC;YI SYLLABLE CUOP;Lo;0;L;;;;;N;;;;; A2BD;YI SYLLABLE COT;Lo;0;L;;;;;N;;;;; A2BE;YI SYLLABLE COX;Lo;0;L;;;;;N;;;;; A2BF;YI SYLLABLE CO;Lo;0;L;;;;;N;;;;; A2C0;YI SYLLABLE COP;Lo;0;L;;;;;N;;;;; A2C1;YI SYLLABLE CEX;Lo;0;L;;;;;N;;;;; A2C2;YI SYLLABLE CE;Lo;0;L;;;;;N;;;;; A2C3;YI SYLLABLE CEP;Lo;0;L;;;;;N;;;;; A2C4;YI SYLLABLE CUT;Lo;0;L;;;;;N;;;;; A2C5;YI SYLLABLE CUX;Lo;0;L;;;;;N;;;;; A2C6;YI SYLLABLE CU;Lo;0;L;;;;;N;;;;; A2C7;YI SYLLABLE CUP;Lo;0;L;;;;;N;;;;; A2C8;YI SYLLABLE CURX;Lo;0;L;;;;;N;;;;; A2C9;YI SYLLABLE CUR;Lo;0;L;;;;;N;;;;; A2CA;YI SYLLABLE CYT;Lo;0;L;;;;;N;;;;; A2CB;YI SYLLABLE CYX;Lo;0;L;;;;;N;;;;; A2CC;YI SYLLABLE CY;Lo;0;L;;;;;N;;;;; A2CD;YI SYLLABLE CYP;Lo;0;L;;;;;N;;;;; A2CE;YI SYLLABLE CYRX;Lo;0;L;;;;;N;;;;; A2CF;YI SYLLABLE CYR;Lo;0;L;;;;;N;;;;; A2D0;YI SYLLABLE ZZIT;Lo;0;L;;;;;N;;;;; A2D1;YI SYLLABLE ZZIX;Lo;0;L;;;;;N;;;;; A2D2;YI SYLLABLE ZZI;Lo;0;L;;;;;N;;;;; A2D3;YI SYLLABLE ZZIP;Lo;0;L;;;;;N;;;;; A2D4;YI SYLLABLE ZZIET;Lo;0;L;;;;;N;;;;; A2D5;YI SYLLABLE ZZIEX;Lo;0;L;;;;;N;;;;; A2D6;YI SYLLABLE ZZIE;Lo;0;L;;;;;N;;;;; A2D7;YI SYLLABLE ZZIEP;Lo;0;L;;;;;N;;;;; A2D8;YI SYLLABLE ZZAT;Lo;0;L;;;;;N;;;;; A2D9;YI SYLLABLE ZZAX;Lo;0;L;;;;;N;;;;; A2DA;YI SYLLABLE ZZA;Lo;0;L;;;;;N;;;;; A2DB;YI SYLLABLE ZZAP;Lo;0;L;;;;;N;;;;; A2DC;YI SYLLABLE ZZOX;Lo;0;L;;;;;N;;;;; A2DD;YI SYLLABLE ZZO;Lo;0;L;;;;;N;;;;; A2DE;YI SYLLABLE ZZOP;Lo;0;L;;;;;N;;;;; A2DF;YI SYLLABLE ZZEX;Lo;0;L;;;;;N;;;;; A2E0;YI SYLLABLE ZZE;Lo;0;L;;;;;N;;;;; A2E1;YI SYLLABLE ZZEP;Lo;0;L;;;;;N;;;;; A2E2;YI SYLLABLE ZZUX;Lo;0;L;;;;;N;;;;; A2E3;YI SYLLABLE ZZU;Lo;0;L;;;;;N;;;;; A2E4;YI SYLLABLE ZZUP;Lo;0;L;;;;;N;;;;; A2E5;YI SYLLABLE ZZURX;Lo;0;L;;;;;N;;;;; A2E6;YI SYLLABLE ZZUR;Lo;0;L;;;;;N;;;;; A2E7;YI SYLLABLE ZZYT;Lo;0;L;;;;;N;;;;; A2E8;YI SYLLABLE ZZYX;Lo;0;L;;;;;N;;;;; A2E9;YI SYLLABLE ZZY;Lo;0;L;;;;;N;;;;; A2EA;YI SYLLABLE ZZYP;Lo;0;L;;;;;N;;;;; A2EB;YI SYLLABLE ZZYRX;Lo;0;L;;;;;N;;;;; A2EC;YI SYLLABLE ZZYR;Lo;0;L;;;;;N;;;;; A2ED;YI SYLLABLE NZIT;Lo;0;L;;;;;N;;;;; A2EE;YI SYLLABLE NZIX;Lo;0;L;;;;;N;;;;; A2EF;YI SYLLABLE NZI;Lo;0;L;;;;;N;;;;; A2F0;YI SYLLABLE NZIP;Lo;0;L;;;;;N;;;;; A2F1;YI SYLLABLE NZIEX;Lo;0;L;;;;;N;;;;; A2F2;YI SYLLABLE NZIE;Lo;0;L;;;;;N;;;;; A2F3;YI SYLLABLE NZIEP;Lo;0;L;;;;;N;;;;; A2F4;YI SYLLABLE NZAT;Lo;0;L;;;;;N;;;;; A2F5;YI SYLLABLE NZAX;Lo;0;L;;;;;N;;;;; A2F6;YI SYLLABLE NZA;Lo;0;L;;;;;N;;;;; A2F7;YI SYLLABLE NZAP;Lo;0;L;;;;;N;;;;; A2F8;YI SYLLABLE NZUOX;Lo;0;L;;;;;N;;;;; A2F9;YI SYLLABLE NZUO;Lo;0;L;;;;;N;;;;; A2FA;YI SYLLABLE NZOX;Lo;0;L;;;;;N;;;;; A2FB;YI SYLLABLE NZOP;Lo;0;L;;;;;N;;;;; A2FC;YI SYLLABLE NZEX;Lo;0;L;;;;;N;;;;; A2FD;YI SYLLABLE NZE;Lo;0;L;;;;;N;;;;; A2FE;YI SYLLABLE NZUX;Lo;0;L;;;;;N;;;;; A2FF;YI SYLLABLE NZU;Lo;0;L;;;;;N;;;;; A300;YI SYLLABLE NZUP;Lo;0;L;;;;;N;;;;; A301;YI SYLLABLE NZURX;Lo;0;L;;;;;N;;;;; A302;YI SYLLABLE NZUR;Lo;0;L;;;;;N;;;;; A303;YI SYLLABLE NZYT;Lo;0;L;;;;;N;;;;; A304;YI SYLLABLE NZYX;Lo;0;L;;;;;N;;;;; A305;YI SYLLABLE NZY;Lo;0;L;;;;;N;;;;; A306;YI SYLLABLE NZYP;Lo;0;L;;;;;N;;;;; A307;YI SYLLABLE NZYRX;Lo;0;L;;;;;N;;;;; A308;YI SYLLABLE NZYR;Lo;0;L;;;;;N;;;;; A309;YI SYLLABLE SIT;Lo;0;L;;;;;N;;;;; A30A;YI SYLLABLE SIX;Lo;0;L;;;;;N;;;;; A30B;YI SYLLABLE SI;Lo;0;L;;;;;N;;;;; A30C;YI SYLLABLE SIP;Lo;0;L;;;;;N;;;;; A30D;YI SYLLABLE SIEX;Lo;0;L;;;;;N;;;;; A30E;YI SYLLABLE SIE;Lo;0;L;;;;;N;;;;; A30F;YI SYLLABLE SIEP;Lo;0;L;;;;;N;;;;; A310;YI SYLLABLE SAT;Lo;0;L;;;;;N;;;;; A311;YI SYLLABLE SAX;Lo;0;L;;;;;N;;;;; A312;YI SYLLABLE SA;Lo;0;L;;;;;N;;;;; A313;YI SYLLABLE SAP;Lo;0;L;;;;;N;;;;; A314;YI SYLLABLE SUOX;Lo;0;L;;;;;N;;;;; A315;YI SYLLABLE SUO;Lo;0;L;;;;;N;;;;; A316;YI SYLLABLE SUOP;Lo;0;L;;;;;N;;;;; A317;YI SYLLABLE SOT;Lo;0;L;;;;;N;;;;; A318;YI SYLLABLE SOX;Lo;0;L;;;;;N;;;;; A319;YI SYLLABLE SO;Lo;0;L;;;;;N;;;;; A31A;YI SYLLABLE SOP;Lo;0;L;;;;;N;;;;; A31B;YI SYLLABLE SEX;Lo;0;L;;;;;N;;;;; A31C;YI SYLLABLE SE;Lo;0;L;;;;;N;;;;; A31D;YI SYLLABLE SEP;Lo;0;L;;;;;N;;;;; A31E;YI SYLLABLE SUT;Lo;0;L;;;;;N;;;;; A31F;YI SYLLABLE SUX;Lo;0;L;;;;;N;;;;; A320;YI SYLLABLE SU;Lo;0;L;;;;;N;;;;; A321;YI SYLLABLE SUP;Lo;0;L;;;;;N;;;;; A322;YI SYLLABLE SURX;Lo;0;L;;;;;N;;;;; A323;YI SYLLABLE SUR;Lo;0;L;;;;;N;;;;; A324;YI SYLLABLE SYT;Lo;0;L;;;;;N;;;;; A325;YI SYLLABLE SYX;Lo;0;L;;;;;N;;;;; A326;YI SYLLABLE SY;Lo;0;L;;;;;N;;;;; A327;YI SYLLABLE SYP;Lo;0;L;;;;;N;;;;; A328;YI SYLLABLE SYRX;Lo;0;L;;;;;N;;;;; A329;YI SYLLABLE SYR;Lo;0;L;;;;;N;;;;; A32A;YI SYLLABLE SSIT;Lo;0;L;;;;;N;;;;; A32B;YI SYLLABLE SSIX;Lo;0;L;;;;;N;;;;; A32C;YI SYLLABLE SSI;Lo;0;L;;;;;N;;;;; A32D;YI SYLLABLE SSIP;Lo;0;L;;;;;N;;;;; A32E;YI SYLLABLE SSIEX;Lo;0;L;;;;;N;;;;; A32F;YI SYLLABLE SSIE;Lo;0;L;;;;;N;;;;; A330;YI SYLLABLE SSIEP;Lo;0;L;;;;;N;;;;; A331;YI SYLLABLE SSAT;Lo;0;L;;;;;N;;;;; A332;YI SYLLABLE SSAX;Lo;0;L;;;;;N;;;;; A333;YI SYLLABLE SSA;Lo;0;L;;;;;N;;;;; A334;YI SYLLABLE SSAP;Lo;0;L;;;;;N;;;;; A335;YI SYLLABLE SSOT;Lo;0;L;;;;;N;;;;; A336;YI SYLLABLE SSOX;Lo;0;L;;;;;N;;;;; A337;YI SYLLABLE SSO;Lo;0;L;;;;;N;;;;; A338;YI SYLLABLE SSOP;Lo;0;L;;;;;N;;;;; A339;YI SYLLABLE SSEX;Lo;0;L;;;;;N;;;;; A33A;YI SYLLABLE SSE;Lo;0;L;;;;;N;;;;; A33B;YI SYLLABLE SSEP;Lo;0;L;;;;;N;;;;; A33C;YI SYLLABLE SSUT;Lo;0;L;;;;;N;;;;; A33D;YI SYLLABLE SSUX;Lo;0;L;;;;;N;;;;; A33E;YI SYLLABLE SSU;Lo;0;L;;;;;N;;;;; A33F;YI SYLLABLE SSUP;Lo;0;L;;;;;N;;;;; A340;YI SYLLABLE SSYT;Lo;0;L;;;;;N;;;;; A341;YI SYLLABLE SSYX;Lo;0;L;;;;;N;;;;; A342;YI SYLLABLE SSY;Lo;0;L;;;;;N;;;;; A343;YI SYLLABLE SSYP;Lo;0;L;;;;;N;;;;; A344;YI SYLLABLE SSYRX;Lo;0;L;;;;;N;;;;; A345;YI SYLLABLE SSYR;Lo;0;L;;;;;N;;;;; A346;YI SYLLABLE ZHAT;Lo;0;L;;;;;N;;;;; A347;YI SYLLABLE ZHAX;Lo;0;L;;;;;N;;;;; A348;YI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;; A349;YI SYLLABLE ZHAP;Lo;0;L;;;;;N;;;;; A34A;YI SYLLABLE ZHUOX;Lo;0;L;;;;;N;;;;; A34B;YI SYLLABLE ZHUO;Lo;0;L;;;;;N;;;;; A34C;YI SYLLABLE ZHUOP;Lo;0;L;;;;;N;;;;; A34D;YI SYLLABLE ZHOT;Lo;0;L;;;;;N;;;;; A34E;YI SYLLABLE ZHOX;Lo;0;L;;;;;N;;;;; A34F;YI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;; A350;YI SYLLABLE ZHOP;Lo;0;L;;;;;N;;;;; A351;YI SYLLABLE ZHET;Lo;0;L;;;;;N;;;;; A352;YI SYLLABLE ZHEX;Lo;0;L;;;;;N;;;;; A353;YI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;; A354;YI SYLLABLE ZHEP;Lo;0;L;;;;;N;;;;; A355;YI SYLLABLE ZHUT;Lo;0;L;;;;;N;;;;; A356;YI SYLLABLE ZHUX;Lo;0;L;;;;;N;;;;; A357;YI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;; A358;YI SYLLABLE ZHUP;Lo;0;L;;;;;N;;;;; A359;YI SYLLABLE ZHURX;Lo;0;L;;;;;N;;;;; A35A;YI SYLLABLE ZHUR;Lo;0;L;;;;;N;;;;; A35B;YI SYLLABLE ZHYT;Lo;0;L;;;;;N;;;;; A35C;YI SYLLABLE ZHYX;Lo;0;L;;;;;N;;;;; A35D;YI SYLLABLE ZHY;Lo;0;L;;;;;N;;;;; A35E;YI SYLLABLE ZHYP;Lo;0;L;;;;;N;;;;; A35F;YI SYLLABLE ZHYRX;Lo;0;L;;;;;N;;;;; A360;YI SYLLABLE ZHYR;Lo;0;L;;;;;N;;;;; A361;YI SYLLABLE CHAT;Lo;0;L;;;;;N;;;;; A362;YI SYLLABLE CHAX;Lo;0;L;;;;;N;;;;; A363;YI SYLLABLE CHA;Lo;0;L;;;;;N;;;;; A364;YI SYLLABLE CHAP;Lo;0;L;;;;;N;;;;; A365;YI SYLLABLE CHUOT;Lo;0;L;;;;;N;;;;; A366;YI SYLLABLE CHUOX;Lo;0;L;;;;;N;;;;; A367;YI SYLLABLE CHUO;Lo;0;L;;;;;N;;;;; A368;YI SYLLABLE CHUOP;Lo;0;L;;;;;N;;;;; A369;YI SYLLABLE CHOT;Lo;0;L;;;;;N;;;;; A36A;YI SYLLABLE CHOX;Lo;0;L;;;;;N;;;;; A36B;YI SYLLABLE CHO;Lo;0;L;;;;;N;;;;; A36C;YI SYLLABLE CHOP;Lo;0;L;;;;;N;;;;; A36D;YI SYLLABLE CHET;Lo;0;L;;;;;N;;;;; A36E;YI SYLLABLE CHEX;Lo;0;L;;;;;N;;;;; A36F;YI SYLLABLE CHE;Lo;0;L;;;;;N;;;;; A370;YI SYLLABLE CHEP;Lo;0;L;;;;;N;;;;; A371;YI SYLLABLE CHUX;Lo;0;L;;;;;N;;;;; A372;YI SYLLABLE CHU;Lo;0;L;;;;;N;;;;; A373;YI SYLLABLE CHUP;Lo;0;L;;;;;N;;;;; A374;YI SYLLABLE CHURX;Lo;0;L;;;;;N;;;;; A375;YI SYLLABLE CHUR;Lo;0;L;;;;;N;;;;; A376;YI SYLLABLE CHYT;Lo;0;L;;;;;N;;;;; A377;YI SYLLABLE CHYX;Lo;0;L;;;;;N;;;;; A378;YI SYLLABLE CHY;Lo;0;L;;;;;N;;;;; A379;YI SYLLABLE CHYP;Lo;0;L;;;;;N;;;;; A37A;YI SYLLABLE CHYRX;Lo;0;L;;;;;N;;;;; A37B;YI SYLLABLE CHYR;Lo;0;L;;;;;N;;;;; A37C;YI SYLLABLE RRAX;Lo;0;L;;;;;N;;;;; A37D;YI SYLLABLE RRA;Lo;0;L;;;;;N;;;;; A37E;YI SYLLABLE RRUOX;Lo;0;L;;;;;N;;;;; A37F;YI SYLLABLE RRUO;Lo;0;L;;;;;N;;;;; A380;YI SYLLABLE RROT;Lo;0;L;;;;;N;;;;; A381;YI SYLLABLE RROX;Lo;0;L;;;;;N;;;;; A382;YI SYLLABLE RRO;Lo;0;L;;;;;N;;;;; A383;YI SYLLABLE RROP;Lo;0;L;;;;;N;;;;; A384;YI SYLLABLE RRET;Lo;0;L;;;;;N;;;;; A385;YI SYLLABLE RREX;Lo;0;L;;;;;N;;;;; A386;YI SYLLABLE RRE;Lo;0;L;;;;;N;;;;; A387;YI SYLLABLE RREP;Lo;0;L;;;;;N;;;;; A388;YI SYLLABLE RRUT;Lo;0;L;;;;;N;;;;; A389;YI SYLLABLE RRUX;Lo;0;L;;;;;N;;;;; A38A;YI SYLLABLE RRU;Lo;0;L;;;;;N;;;;; A38B;YI SYLLABLE RRUP;Lo;0;L;;;;;N;;;;; A38C;YI SYLLABLE RRURX;Lo;0;L;;;;;N;;;;; A38D;YI SYLLABLE RRUR;Lo;0;L;;;;;N;;;;; A38E;YI SYLLABLE RRYT;Lo;0;L;;;;;N;;;;; A38F;YI SYLLABLE RRYX;Lo;0;L;;;;;N;;;;; A390;YI SYLLABLE RRY;Lo;0;L;;;;;N;;;;; A391;YI SYLLABLE RRYP;Lo;0;L;;;;;N;;;;; A392;YI SYLLABLE RRYRX;Lo;0;L;;;;;N;;;;; A393;YI SYLLABLE RRYR;Lo;0;L;;;;;N;;;;; A394;YI SYLLABLE NRAT;Lo;0;L;;;;;N;;;;; A395;YI SYLLABLE NRAX;Lo;0;L;;;;;N;;;;; A396;YI SYLLABLE NRA;Lo;0;L;;;;;N;;;;; A397;YI SYLLABLE NRAP;Lo;0;L;;;;;N;;;;; A398;YI SYLLABLE NROX;Lo;0;L;;;;;N;;;;; A399;YI SYLLABLE NRO;Lo;0;L;;;;;N;;;;; A39A;YI SYLLABLE NROP;Lo;0;L;;;;;N;;;;; A39B;YI SYLLABLE NRET;Lo;0;L;;;;;N;;;;; A39C;YI SYLLABLE NREX;Lo;0;L;;;;;N;;;;; A39D;YI SYLLABLE NRE;Lo;0;L;;;;;N;;;;; A39E;YI SYLLABLE NREP;Lo;0;L;;;;;N;;;;; A39F;YI SYLLABLE NRUT;Lo;0;L;;;;;N;;;;; A3A0;YI SYLLABLE NRUX;Lo;0;L;;;;;N;;;;; A3A1;YI SYLLABLE NRU;Lo;0;L;;;;;N;;;;; A3A2;YI SYLLABLE NRUP;Lo;0;L;;;;;N;;;;; A3A3;YI SYLLABLE NRURX;Lo;0;L;;;;;N;;;;; A3A4;YI SYLLABLE NRUR;Lo;0;L;;;;;N;;;;; A3A5;YI SYLLABLE NRYT;Lo;0;L;;;;;N;;;;; A3A6;YI SYLLABLE NRYX;Lo;0;L;;;;;N;;;;; A3A7;YI SYLLABLE NRY;Lo;0;L;;;;;N;;;;; A3A8;YI SYLLABLE NRYP;Lo;0;L;;;;;N;;;;; A3A9;YI SYLLABLE NRYRX;Lo;0;L;;;;;N;;;;; A3AA;YI SYLLABLE NRYR;Lo;0;L;;;;;N;;;;; A3AB;YI SYLLABLE SHAT;Lo;0;L;;;;;N;;;;; A3AC;YI SYLLABLE SHAX;Lo;0;L;;;;;N;;;;; A3AD;YI SYLLABLE SHA;Lo;0;L;;;;;N;;;;; A3AE;YI SYLLABLE SHAP;Lo;0;L;;;;;N;;;;; A3AF;YI SYLLABLE SHUOX;Lo;0;L;;;;;N;;;;; A3B0;YI SYLLABLE SHUO;Lo;0;L;;;;;N;;;;; A3B1;YI SYLLABLE SHUOP;Lo;0;L;;;;;N;;;;; A3B2;YI SYLLABLE SHOT;Lo;0;L;;;;;N;;;;; A3B3;YI SYLLABLE SHOX;Lo;0;L;;;;;N;;;;; A3B4;YI SYLLABLE SHO;Lo;0;L;;;;;N;;;;; A3B5;YI SYLLABLE SHOP;Lo;0;L;;;;;N;;;;; A3B6;YI SYLLABLE SHET;Lo;0;L;;;;;N;;;;; A3B7;YI SYLLABLE SHEX;Lo;0;L;;;;;N;;;;; A3B8;YI SYLLABLE SHE;Lo;0;L;;;;;N;;;;; A3B9;YI SYLLABLE SHEP;Lo;0;L;;;;;N;;;;; A3BA;YI SYLLABLE SHUT;Lo;0;L;;;;;N;;;;; A3BB;YI SYLLABLE SHUX;Lo;0;L;;;;;N;;;;; A3BC;YI SYLLABLE SHU;Lo;0;L;;;;;N;;;;; A3BD;YI SYLLABLE SHUP;Lo;0;L;;;;;N;;;;; A3BE;YI SYLLABLE SHURX;Lo;0;L;;;;;N;;;;; A3BF;YI SYLLABLE SHUR;Lo;0;L;;;;;N;;;;; A3C0;YI SYLLABLE SHYT;Lo;0;L;;;;;N;;;;; A3C1;YI SYLLABLE SHYX;Lo;0;L;;;;;N;;;;; A3C2;YI SYLLABLE SHY;Lo;0;L;;;;;N;;;;; A3C3;YI SYLLABLE SHYP;Lo;0;L;;;;;N;;;;; A3C4;YI SYLLABLE SHYRX;Lo;0;L;;;;;N;;;;; A3C5;YI SYLLABLE SHYR;Lo;0;L;;;;;N;;;;; A3C6;YI SYLLABLE RAT;Lo;0;L;;;;;N;;;;; A3C7;YI SYLLABLE RAX;Lo;0;L;;;;;N;;;;; A3C8;YI SYLLABLE RA;Lo;0;L;;;;;N;;;;; A3C9;YI SYLLABLE RAP;Lo;0;L;;;;;N;;;;; A3CA;YI SYLLABLE RUOX;Lo;0;L;;;;;N;;;;; A3CB;YI SYLLABLE RUO;Lo;0;L;;;;;N;;;;; A3CC;YI SYLLABLE RUOP;Lo;0;L;;;;;N;;;;; A3CD;YI SYLLABLE ROT;Lo;0;L;;;;;N;;;;; A3CE;YI SYLLABLE ROX;Lo;0;L;;;;;N;;;;; A3CF;YI SYLLABLE RO;Lo;0;L;;;;;N;;;;; A3D0;YI SYLLABLE ROP;Lo;0;L;;;;;N;;;;; A3D1;YI SYLLABLE REX;Lo;0;L;;;;;N;;;;; A3D2;YI SYLLABLE RE;Lo;0;L;;;;;N;;;;; A3D3;YI SYLLABLE REP;Lo;0;L;;;;;N;;;;; A3D4;YI SYLLABLE RUT;Lo;0;L;;;;;N;;;;; A3D5;YI SYLLABLE RUX;Lo;0;L;;;;;N;;;;; A3D6;YI SYLLABLE RU;Lo;0;L;;;;;N;;;;; A3D7;YI SYLLABLE RUP;Lo;0;L;;;;;N;;;;; A3D8;YI SYLLABLE RURX;Lo;0;L;;;;;N;;;;; A3D9;YI SYLLABLE RUR;Lo;0;L;;;;;N;;;;; A3DA;YI SYLLABLE RYT;Lo;0;L;;;;;N;;;;; A3DB;YI SYLLABLE RYX;Lo;0;L;;;;;N;;;;; A3DC;YI SYLLABLE RY;Lo;0;L;;;;;N;;;;; A3DD;YI SYLLABLE RYP;Lo;0;L;;;;;N;;;;; A3DE;YI SYLLABLE RYRX;Lo;0;L;;;;;N;;;;; A3DF;YI SYLLABLE RYR;Lo;0;L;;;;;N;;;;; A3E0;YI SYLLABLE JIT;Lo;0;L;;;;;N;;;;; A3E1;YI SYLLABLE JIX;Lo;0;L;;;;;N;;;;; A3E2;YI SYLLABLE JI;Lo;0;L;;;;;N;;;;; A3E3;YI SYLLABLE JIP;Lo;0;L;;;;;N;;;;; A3E4;YI SYLLABLE JIET;Lo;0;L;;;;;N;;;;; A3E5;YI SYLLABLE JIEX;Lo;0;L;;;;;N;;;;; A3E6;YI SYLLABLE JIE;Lo;0;L;;;;;N;;;;; A3E7;YI SYLLABLE JIEP;Lo;0;L;;;;;N;;;;; A3E8;YI SYLLABLE JUOT;Lo;0;L;;;;;N;;;;; A3E9;YI SYLLABLE JUOX;Lo;0;L;;;;;N;;;;; A3EA;YI SYLLABLE JUO;Lo;0;L;;;;;N;;;;; A3EB;YI SYLLABLE JUOP;Lo;0;L;;;;;N;;;;; A3EC;YI SYLLABLE JOT;Lo;0;L;;;;;N;;;;; A3ED;YI SYLLABLE JOX;Lo;0;L;;;;;N;;;;; A3EE;YI SYLLABLE JO;Lo;0;L;;;;;N;;;;; A3EF;YI SYLLABLE JOP;Lo;0;L;;;;;N;;;;; A3F0;YI SYLLABLE JUT;Lo;0;L;;;;;N;;;;; A3F1;YI SYLLABLE JUX;Lo;0;L;;;;;N;;;;; A3F2;YI SYLLABLE JU;Lo;0;L;;;;;N;;;;; A3F3;YI SYLLABLE JUP;Lo;0;L;;;;;N;;;;; A3F4;YI SYLLABLE JURX;Lo;0;L;;;;;N;;;;; A3F5;YI SYLLABLE JUR;Lo;0;L;;;;;N;;;;; A3F6;YI SYLLABLE JYT;Lo;0;L;;;;;N;;;;; A3F7;YI SYLLABLE JYX;Lo;0;L;;;;;N;;;;; A3F8;YI SYLLABLE JY;Lo;0;L;;;;;N;;;;; A3F9;YI SYLLABLE JYP;Lo;0;L;;;;;N;;;;; A3FA;YI SYLLABLE JYRX;Lo;0;L;;;;;N;;;;; A3FB;YI SYLLABLE JYR;Lo;0;L;;;;;N;;;;; A3FC;YI SYLLABLE QIT;Lo;0;L;;;;;N;;;;; A3FD;YI SYLLABLE QIX;Lo;0;L;;;;;N;;;;; A3FE;YI SYLLABLE QI;Lo;0;L;;;;;N;;;;; A3FF;YI SYLLABLE QIP;Lo;0;L;;;;;N;;;;; A400;YI SYLLABLE QIET;Lo;0;L;;;;;N;;;;; A401;YI SYLLABLE QIEX;Lo;0;L;;;;;N;;;;; A402;YI SYLLABLE QIE;Lo;0;L;;;;;N;;;;; A403;YI SYLLABLE QIEP;Lo;0;L;;;;;N;;;;; A404;YI SYLLABLE QUOT;Lo;0;L;;;;;N;;;;; A405;YI SYLLABLE QUOX;Lo;0;L;;;;;N;;;;; A406;YI SYLLABLE QUO;Lo;0;L;;;;;N;;;;; A407;YI SYLLABLE QUOP;Lo;0;L;;;;;N;;;;; A408;YI SYLLABLE QOT;Lo;0;L;;;;;N;;;;; A409;YI SYLLABLE QOX;Lo;0;L;;;;;N;;;;; A40A;YI SYLLABLE QO;Lo;0;L;;;;;N;;;;; A40B;YI SYLLABLE QOP;Lo;0;L;;;;;N;;;;; A40C;YI SYLLABLE QUT;Lo;0;L;;;;;N;;;;; A40D;YI SYLLABLE QUX;Lo;0;L;;;;;N;;;;; A40E;YI SYLLABLE QU;Lo;0;L;;;;;N;;;;; A40F;YI SYLLABLE QUP;Lo;0;L;;;;;N;;;;; A410;YI SYLLABLE QURX;Lo;0;L;;;;;N;;;;; A411;YI SYLLABLE QUR;Lo;0;L;;;;;N;;;;; A412;YI SYLLABLE QYT;Lo;0;L;;;;;N;;;;; A413;YI SYLLABLE QYX;Lo;0;L;;;;;N;;;;; A414;YI SYLLABLE QY;Lo;0;L;;;;;N;;;;; A415;YI SYLLABLE QYP;Lo;0;L;;;;;N;;;;; A416;YI SYLLABLE QYRX;Lo;0;L;;;;;N;;;;; A417;YI SYLLABLE QYR;Lo;0;L;;;;;N;;;;; A418;YI SYLLABLE JJIT;Lo;0;L;;;;;N;;;;; A419;YI SYLLABLE JJIX;Lo;0;L;;;;;N;;;;; A41A;YI SYLLABLE JJI;Lo;0;L;;;;;N;;;;; A41B;YI SYLLABLE JJIP;Lo;0;L;;;;;N;;;;; A41C;YI SYLLABLE JJIET;Lo;0;L;;;;;N;;;;; A41D;YI SYLLABLE JJIEX;Lo;0;L;;;;;N;;;;; A41E;YI SYLLABLE JJIE;Lo;0;L;;;;;N;;;;; A41F;YI SYLLABLE JJIEP;Lo;0;L;;;;;N;;;;; A420;YI SYLLABLE JJUOX;Lo;0;L;;;;;N;;;;; A421;YI SYLLABLE JJUO;Lo;0;L;;;;;N;;;;; A422;YI SYLLABLE JJUOP;Lo;0;L;;;;;N;;;;; A423;YI SYLLABLE JJOT;Lo;0;L;;;;;N;;;;; A424;YI SYLLABLE JJOX;Lo;0;L;;;;;N;;;;; A425;YI SYLLABLE JJO;Lo;0;L;;;;;N;;;;; A426;YI SYLLABLE JJOP;Lo;0;L;;;;;N;;;;; A427;YI SYLLABLE JJUT;Lo;0;L;;;;;N;;;;; A428;YI SYLLABLE JJUX;Lo;0;L;;;;;N;;;;; A429;YI SYLLABLE JJU;Lo;0;L;;;;;N;;;;; A42A;YI SYLLABLE JJUP;Lo;0;L;;;;;N;;;;; A42B;YI SYLLABLE JJURX;Lo;0;L;;;;;N;;;;; A42C;YI SYLLABLE JJUR;Lo;0;L;;;;;N;;;;; A42D;YI SYLLABLE JJYT;Lo;0;L;;;;;N;;;;; A42E;YI SYLLABLE JJYX;Lo;0;L;;;;;N;;;;; A42F;YI SYLLABLE JJY;Lo;0;L;;;;;N;;;;; A430;YI SYLLABLE JJYP;Lo;0;L;;;;;N;;;;; A431;YI SYLLABLE NJIT;Lo;0;L;;;;;N;;;;; A432;YI SYLLABLE NJIX;Lo;0;L;;;;;N;;;;; A433;YI SYLLABLE NJI;Lo;0;L;;;;;N;;;;; A434;YI SYLLABLE NJIP;Lo;0;L;;;;;N;;;;; A435;YI SYLLABLE NJIET;Lo;0;L;;;;;N;;;;; A436;YI SYLLABLE NJIEX;Lo;0;L;;;;;N;;;;; A437;YI SYLLABLE NJIE;Lo;0;L;;;;;N;;;;; A438;YI SYLLABLE NJIEP;Lo;0;L;;;;;N;;;;; A439;YI SYLLABLE NJUOX;Lo;0;L;;;;;N;;;;; A43A;YI SYLLABLE NJUO;Lo;0;L;;;;;N;;;;; A43B;YI SYLLABLE NJOT;Lo;0;L;;;;;N;;;;; A43C;YI SYLLABLE NJOX;Lo;0;L;;;;;N;;;;; A43D;YI SYLLABLE NJO;Lo;0;L;;;;;N;;;;; A43E;YI SYLLABLE NJOP;Lo;0;L;;;;;N;;;;; A43F;YI SYLLABLE NJUX;Lo;0;L;;;;;N;;;;; A440;YI SYLLABLE NJU;Lo;0;L;;;;;N;;;;; A441;YI SYLLABLE NJUP;Lo;0;L;;;;;N;;;;; A442;YI SYLLABLE NJURX;Lo;0;L;;;;;N;;;;; A443;YI SYLLABLE NJUR;Lo;0;L;;;;;N;;;;; A444;YI SYLLABLE NJYT;Lo;0;L;;;;;N;;;;; A445;YI SYLLABLE NJYX;Lo;0;L;;;;;N;;;;; A446;YI SYLLABLE NJY;Lo;0;L;;;;;N;;;;; A447;YI SYLLABLE NJYP;Lo;0;L;;;;;N;;;;; A448;YI SYLLABLE NJYRX;Lo;0;L;;;;;N;;;;; A449;YI SYLLABLE NJYR;Lo;0;L;;;;;N;;;;; A44A;YI SYLLABLE NYIT;Lo;0;L;;;;;N;;;;; A44B;YI SYLLABLE NYIX;Lo;0;L;;;;;N;;;;; A44C;YI SYLLABLE NYI;Lo;0;L;;;;;N;;;;; A44D;YI SYLLABLE NYIP;Lo;0;L;;;;;N;;;;; A44E;YI SYLLABLE NYIET;Lo;0;L;;;;;N;;;;; A44F;YI SYLLABLE NYIEX;Lo;0;L;;;;;N;;;;; A450;YI SYLLABLE NYIE;Lo;0;L;;;;;N;;;;; A451;YI SYLLABLE NYIEP;Lo;0;L;;;;;N;;;;; A452;YI SYLLABLE NYUOX;Lo;0;L;;;;;N;;;;; A453;YI SYLLABLE NYUO;Lo;0;L;;;;;N;;;;; A454;YI SYLLABLE NYUOP;Lo;0;L;;;;;N;;;;; A455;YI SYLLABLE NYOT;Lo;0;L;;;;;N;;;;; A456;YI SYLLABLE NYOX;Lo;0;L;;;;;N;;;;; A457;YI SYLLABLE NYO;Lo;0;L;;;;;N;;;;; A458;YI SYLLABLE NYOP;Lo;0;L;;;;;N;;;;; A459;YI SYLLABLE NYUT;Lo;0;L;;;;;N;;;;; A45A;YI SYLLABLE NYUX;Lo;0;L;;;;;N;;;;; A45B;YI SYLLABLE NYU;Lo;0;L;;;;;N;;;;; A45C;YI SYLLABLE NYUP;Lo;0;L;;;;;N;;;;; A45D;YI SYLLABLE XIT;Lo;0;L;;;;;N;;;;; A45E;YI SYLLABLE XIX;Lo;0;L;;;;;N;;;;; A45F;YI SYLLABLE XI;Lo;0;L;;;;;N;;;;; A460;YI SYLLABLE XIP;Lo;0;L;;;;;N;;;;; A461;YI SYLLABLE XIET;Lo;0;L;;;;;N;;;;; A462;YI SYLLABLE XIEX;Lo;0;L;;;;;N;;;;; A463;YI SYLLABLE XIE;Lo;0;L;;;;;N;;;;; A464;YI SYLLABLE XIEP;Lo;0;L;;;;;N;;;;; A465;YI SYLLABLE XUOX;Lo;0;L;;;;;N;;;;; A466;YI SYLLABLE XUO;Lo;0;L;;;;;N;;;;; A467;YI SYLLABLE XOT;Lo;0;L;;;;;N;;;;; A468;YI SYLLABLE XOX;Lo;0;L;;;;;N;;;;; A469;YI SYLLABLE XO;Lo;0;L;;;;;N;;;;; A46A;YI SYLLABLE XOP;Lo;0;L;;;;;N;;;;; A46B;YI SYLLABLE XYT;Lo;0;L;;;;;N;;;;; A46C;YI SYLLABLE XYX;Lo;0;L;;;;;N;;;;; A46D;YI SYLLABLE XY;Lo;0;L;;;;;N;;;;; A46E;YI SYLLABLE XYP;Lo;0;L;;;;;N;;;;; A46F;YI SYLLABLE XYRX;Lo;0;L;;;;;N;;;;; A470;YI SYLLABLE XYR;Lo;0;L;;;;;N;;;;; A471;YI SYLLABLE YIT;Lo;0;L;;;;;N;;;;; A472;YI SYLLABLE YIX;Lo;0;L;;;;;N;;;;; A473;YI SYLLABLE YI;Lo;0;L;;;;;N;;;;; A474;YI SYLLABLE YIP;Lo;0;L;;;;;N;;;;; A475;YI SYLLABLE YIET;Lo;0;L;;;;;N;;;;; A476;YI SYLLABLE YIEX;Lo;0;L;;;;;N;;;;; A477;YI SYLLABLE YIE;Lo;0;L;;;;;N;;;;; A478;YI SYLLABLE YIEP;Lo;0;L;;;;;N;;;;; A479;YI SYLLABLE YUOT;Lo;0;L;;;;;N;;;;; A47A;YI SYLLABLE YUOX;Lo;0;L;;;;;N;;;;; A47B;YI SYLLABLE YUO;Lo;0;L;;;;;N;;;;; A47C;YI SYLLABLE YUOP;Lo;0;L;;;;;N;;;;; A47D;YI SYLLABLE YOT;Lo;0;L;;;;;N;;;;; A47E;YI SYLLABLE YOX;Lo;0;L;;;;;N;;;;; A47F;YI SYLLABLE YO;Lo;0;L;;;;;N;;;;; A480;YI SYLLABLE YOP;Lo;0;L;;;;;N;;;;; A481;YI SYLLABLE YUT;Lo;0;L;;;;;N;;;;; A482;YI SYLLABLE YUX;Lo;0;L;;;;;N;;;;; A483;YI SYLLABLE YU;Lo;0;L;;;;;N;;;;; A484;YI SYLLABLE YUP;Lo;0;L;;;;;N;;;;; A485;YI SYLLABLE YURX;Lo;0;L;;;;;N;;;;; A486;YI SYLLABLE YUR;Lo;0;L;;;;;N;;;;; A487;YI SYLLABLE YYT;Lo;0;L;;;;;N;;;;; A488;YI SYLLABLE YYX;Lo;0;L;;;;;N;;;;; A489;YI SYLLABLE YY;Lo;0;L;;;;;N;;;;; A48A;YI SYLLABLE YYP;Lo;0;L;;;;;N;;;;; A48B;YI SYLLABLE YYRX;Lo;0;L;;;;;N;;;;; A48C;YI SYLLABLE YYR;Lo;0;L;;;;;N;;;;; A490;YI RADICAL QOT;So;0;ON;;;;;N;;;;; A491;YI RADICAL LI;So;0;ON;;;;;N;;;;; A492;YI RADICAL KIT;So;0;ON;;;;;N;;;;; A493;YI RADICAL NYIP;So;0;ON;;;;;N;;;;; A494;YI RADICAL CYP;So;0;ON;;;;;N;;;;; A495;YI RADICAL SSI;So;0;ON;;;;;N;;;;; A496;YI RADICAL GGOP;So;0;ON;;;;;N;;;;; A497;YI RADICAL GEP;So;0;ON;;;;;N;;;;; A498;YI RADICAL MI;So;0;ON;;;;;N;;;;; A499;YI RADICAL HXIT;So;0;ON;;;;;N;;;;; A49A;YI RADICAL LYR;So;0;ON;;;;;N;;;;; A49B;YI RADICAL BBUT;So;0;ON;;;;;N;;;;; A49C;YI RADICAL MOP;So;0;ON;;;;;N;;;;; A49D;YI RADICAL YO;So;0;ON;;;;;N;;;;; A49E;YI RADICAL PUT;So;0;ON;;;;;N;;;;; A49F;YI RADICAL HXUO;So;0;ON;;;;;N;;;;; A4A0;YI RADICAL TAT;So;0;ON;;;;;N;;;;; A4A1;YI RADICAL GA;So;0;ON;;;;;N;;;;; A4A2;YI RADICAL ZUP;So;0;ON;;;;;N;;;;; A4A3;YI RADICAL CYT;So;0;ON;;;;;N;;;;; A4A4;YI RADICAL DDUR;So;0;ON;;;;;N;;;;; A4A5;YI RADICAL BUR;So;0;ON;;;;;N;;;;; A4A6;YI RADICAL GGUO;So;0;ON;;;;;N;;;;; A4A7;YI RADICAL NYOP;So;0;ON;;;;;N;;;;; A4A8;YI RADICAL TU;So;0;ON;;;;;N;;;;; A4A9;YI RADICAL OP;So;0;ON;;;;;N;;;;; A4AA;YI RADICAL JJUT;So;0;ON;;;;;N;;;;; A4AB;YI RADICAL ZOT;So;0;ON;;;;;N;;;;; A4AC;YI RADICAL PYT;So;0;ON;;;;;N;;;;; A4AD;YI RADICAL HMO;So;0;ON;;;;;N;;;;; A4AE;YI RADICAL YIT;So;0;ON;;;;;N;;;;; A4AF;YI RADICAL VUR;So;0;ON;;;;;N;;;;; A4B0;YI RADICAL SHY;So;0;ON;;;;;N;;;;; A4B1;YI RADICAL VEP;So;0;ON;;;;;N;;;;; A4B2;YI RADICAL ZA;So;0;ON;;;;;N;;;;; A4B3;YI RADICAL JO;So;0;ON;;;;;N;;;;; A4B4;YI RADICAL NZUP;So;0;ON;;;;;N;;;;; A4B5;YI RADICAL JJY;So;0;ON;;;;;N;;;;; A4B6;YI RADICAL GOT;So;0;ON;;;;;N;;;;; A4B7;YI RADICAL JJIE;So;0;ON;;;;;N;;;;; A4B8;YI RADICAL WO;So;0;ON;;;;;N;;;;; A4B9;YI RADICAL DU;So;0;ON;;;;;N;;;;; A4BA;YI RADICAL SHUR;So;0;ON;;;;;N;;;;; A4BB;YI RADICAL LIE;So;0;ON;;;;;N;;;;; A4BC;YI RADICAL CY;So;0;ON;;;;;N;;;;; A4BD;YI RADICAL CUOP;So;0;ON;;;;;N;;;;; A4BE;YI RADICAL CIP;So;0;ON;;;;;N;;;;; A4BF;YI RADICAL HXOP;So;0;ON;;;;;N;;;;; A4C0;YI RADICAL SHAT;So;0;ON;;;;;N;;;;; A4C1;YI RADICAL ZUR;So;0;ON;;;;;N;;;;; A4C2;YI RADICAL SHOP;So;0;ON;;;;;N;;;;; A4C3;YI RADICAL CHE;So;0;ON;;;;;N;;;;; A4C4;YI RADICAL ZZIET;So;0;ON;;;;;N;;;;; A4C5;YI RADICAL NBIE;So;0;ON;;;;;N;;;;; A4C6;YI RADICAL KE;So;0;ON;;;;;N;;;;; A700;MODIFIER LETTER CHINESE TONE YIN PING;Sk;0;ON;;;;;N;;;;; A701;MODIFIER LETTER CHINESE TONE YANG PING;Sk;0;ON;;;;;N;;;;; A702;MODIFIER LETTER CHINESE TONE YIN SHANG;Sk;0;ON;;;;;N;;;;; A703;MODIFIER LETTER CHINESE TONE YANG SHANG;Sk;0;ON;;;;;N;;;;; A704;MODIFIER LETTER CHINESE TONE YIN QU;Sk;0;ON;;;;;N;;;;; A705;MODIFIER LETTER CHINESE TONE YANG QU;Sk;0;ON;;;;;N;;;;; A706;MODIFIER LETTER CHINESE TONE YIN RU;Sk;0;ON;;;;;N;;;;; A707;MODIFIER LETTER CHINESE TONE YANG RU;Sk;0;ON;;;;;N;;;;; A708;MODIFIER LETTER EXTRA-HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; A709;MODIFIER LETTER HIGH DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; A70A;MODIFIER LETTER MID DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; A70B;MODIFIER LETTER LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; A70C;MODIFIER LETTER EXTRA-LOW DOTTED TONE BAR;Sk;0;ON;;;;;N;;;;; A70D;MODIFIER LETTER EXTRA-HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A70E;MODIFIER LETTER HIGH DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A70F;MODIFIER LETTER MID DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A710;MODIFIER LETTER LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A711;MODIFIER LETTER EXTRA-LOW DOTTED LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A712;MODIFIER LETTER EXTRA-HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A713;MODIFIER LETTER HIGH LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A714;MODIFIER LETTER MID LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A715;MODIFIER LETTER LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A716;MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR;Sk;0;ON;;;;;N;;;;; A717;MODIFIER LETTER DOT VERTICAL BAR;Lm;0;ON;;;;;N;;;;; A718;MODIFIER LETTER DOT SLASH;Lm;0;ON;;;;;N;;;;; A719;MODIFIER LETTER DOT HORIZONTAL BAR;Lm;0;ON;;;;;N;;;;; A71A;MODIFIER LETTER LOWER RIGHT CORNER ANGLE;Lm;0;ON;;;;;N;;;;; A720;MODIFIER LETTER STRESS AND HIGH TONE;Sk;0;ON;;;;;N;;;;; A721;MODIFIER LETTER STRESS AND LOW TONE;Sk;0;ON;;;;;N;;;;; A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;; A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;; A802;SYLOTI NAGRI SIGN DVISVARA;Mc;0;NSM;;;;;N;;;;; A803;SYLOTI NAGRI LETTER U;Lo;0;L;;;;;N;;;;; A804;SYLOTI NAGRI LETTER E;Lo;0;L;;;;;N;;;;; A805;SYLOTI NAGRI LETTER O;Lo;0;L;;;;;N;;;;; A806;SYLOTI NAGRI SIGN HASANTA;Mn;9;NSM;;;;;N;;;;; A807;SYLOTI NAGRI LETTER KO;Lo;0;L;;;;;N;;;;; A808;SYLOTI NAGRI LETTER KHO;Lo;0;L;;;;;N;;;;; A809;SYLOTI NAGRI LETTER GO;Lo;0;L;;;;;N;;;;; A80A;SYLOTI NAGRI LETTER GHO;Lo;0;L;;;;;N;;;;; A80B;SYLOTI NAGRI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; A80C;SYLOTI NAGRI LETTER CO;Lo;0;L;;;;;N;;;;; A80D;SYLOTI NAGRI LETTER CHO;Lo;0;L;;;;;N;;;;; A80E;SYLOTI NAGRI LETTER JO;Lo;0;L;;;;;N;;;;; A80F;SYLOTI NAGRI LETTER JHO;Lo;0;L;;;;;N;;;;; A810;SYLOTI NAGRI LETTER TTO;Lo;0;L;;;;;N;;;;; A811;SYLOTI NAGRI LETTER TTHO;Lo;0;L;;;;;N;;;;; A812;SYLOTI NAGRI LETTER DDO;Lo;0;L;;;;;N;;;;; A813;SYLOTI NAGRI LETTER DDHO;Lo;0;L;;;;;N;;;;; A814;SYLOTI NAGRI LETTER TO;Lo;0;L;;;;;N;;;;; A815;SYLOTI NAGRI LETTER THO;Lo;0;L;;;;;N;;;;; A816;SYLOTI NAGRI LETTER DO;Lo;0;L;;;;;N;;;;; A817;SYLOTI NAGRI LETTER DHO;Lo;0;L;;;;;N;;;;; A818;SYLOTI NAGRI LETTER NO;Lo;0;L;;;;;N;;;;; A819;SYLOTI NAGRI LETTER PO;Lo;0;L;;;;;N;;;;; A81A;SYLOTI NAGRI LETTER PHO;Lo;0;L;;;;;N;;;;; A81B;SYLOTI NAGRI LETTER BO;Lo;0;L;;;;;N;;;;; A81C;SYLOTI NAGRI LETTER BHO;Lo;0;L;;;;;N;;;;; A81D;SYLOTI NAGRI LETTER MO;Lo;0;L;;;;;N;;;;; A81E;SYLOTI NAGRI LETTER RO;Lo;0;L;;;;;N;;;;; A81F;SYLOTI NAGRI LETTER LO;Lo;0;L;;;;;N;;;;; A820;SYLOTI NAGRI LETTER RRO;Lo;0;L;;;;;N;;;;; A821;SYLOTI NAGRI LETTER SO;Lo;0;L;;;;;N;;;;; A822;SYLOTI NAGRI LETTER HO;Lo;0;L;;;;;N;;;;; A823;SYLOTI NAGRI VOWEL SIGN A;Mc;0;L;;;;;N;;;;; A824;SYLOTI NAGRI VOWEL SIGN I;Mc;0;L;;;;;N;;;;; A825;SYLOTI NAGRI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; A826;SYLOTI NAGRI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; A827;SYLOTI NAGRI VOWEL SIGN OO;Mc;0;L;;;;;N;;;;; A828;SYLOTI NAGRI POETRY MARK-1;So;0;ON;;;;;N;;;;; A829;SYLOTI NAGRI POETRY MARK-2;So;0;ON;;;;;N;;;;; A82A;SYLOTI NAGRI POETRY MARK-3;So;0;ON;;;;;N;;;;; A82B;SYLOTI NAGRI POETRY MARK-4;So;0;ON;;;;;N;;;;; A840;PHAGS-PA LETTER KA;Lo;0;L;;;;;N;;;;; A841;PHAGS-PA LETTER KHA;Lo;0;L;;;;;N;;;;; A842;PHAGS-PA LETTER GA;Lo;0;L;;;;;N;;;;; A843;PHAGS-PA LETTER NGA;Lo;0;L;;;;;N;;;;; A844;PHAGS-PA LETTER CA;Lo;0;L;;;;;N;;;;; A845;PHAGS-PA LETTER CHA;Lo;0;L;;;;;N;;;;; A846;PHAGS-PA LETTER JA;Lo;0;L;;;;;N;;;;; A847;PHAGS-PA LETTER NYA;Lo;0;L;;;;;N;;;;; A848;PHAGS-PA LETTER TA;Lo;0;L;;;;;N;;;;; A849;PHAGS-PA LETTER THA;Lo;0;L;;;;;N;;;;; A84A;PHAGS-PA LETTER DA;Lo;0;L;;;;;N;;;;; A84B;PHAGS-PA LETTER NA;Lo;0;L;;;;;N;;;;; A84C;PHAGS-PA LETTER PA;Lo;0;L;;;;;N;;;;; A84D;PHAGS-PA LETTER PHA;Lo;0;L;;;;;N;;;;; A84E;PHAGS-PA LETTER BA;Lo;0;L;;;;;N;;;;; A84F;PHAGS-PA LETTER MA;Lo;0;L;;;;;N;;;;; A850;PHAGS-PA LETTER TSA;Lo;0;L;;;;;N;;;;; A851;PHAGS-PA LETTER TSHA;Lo;0;L;;;;;N;;;;; A852;PHAGS-PA LETTER DZA;Lo;0;L;;;;;N;;;;; A853;PHAGS-PA LETTER WA;Lo;0;L;;;;;N;;;;; A854;PHAGS-PA LETTER ZHA;Lo;0;L;;;;;N;;;;; A855;PHAGS-PA LETTER ZA;Lo;0;L;;;;;N;;;;; A856;PHAGS-PA LETTER SMALL A;Lo;0;L;;;;;N;;;;; A857;PHAGS-PA LETTER YA;Lo;0;L;;;;;N;;;;; A858;PHAGS-PA LETTER RA;Lo;0;L;;;;;N;;;;; A859;PHAGS-PA LETTER LA;Lo;0;L;;;;;N;;;;; A85A;PHAGS-PA LETTER SHA;Lo;0;L;;;;;N;;;;; A85B;PHAGS-PA LETTER SA;Lo;0;L;;;;;N;;;;; A85C;PHAGS-PA LETTER HA;Lo;0;L;;;;;N;;;;; A85D;PHAGS-PA LETTER A;Lo;0;L;;;;;N;;;;; A85E;PHAGS-PA LETTER I;Lo;0;L;;;;;N;;;;; A85F;PHAGS-PA LETTER U;Lo;0;L;;;;;N;;;;; A860;PHAGS-PA LETTER E;Lo;0;L;;;;;N;;;;; A861;PHAGS-PA LETTER O;Lo;0;L;;;;;N;;;;; A862;PHAGS-PA LETTER QA;Lo;0;L;;;;;N;;;;; A863;PHAGS-PA LETTER XA;Lo;0;L;;;;;N;;;;; A864;PHAGS-PA LETTER FA;Lo;0;L;;;;;N;;;;; A865;PHAGS-PA LETTER GGA;Lo;0;L;;;;;N;;;;; A866;PHAGS-PA LETTER EE;Lo;0;L;;;;;N;;;;; A867;PHAGS-PA SUBJOINED LETTER WA;Lo;0;L;;;;;N;;;;; A868;PHAGS-PA SUBJOINED LETTER YA;Lo;0;L;;;;;N;;;;; A869;PHAGS-PA LETTER TTA;Lo;0;L;;;;;N;;;;; A86A;PHAGS-PA LETTER TTHA;Lo;0;L;;;;;N;;;;; A86B;PHAGS-PA LETTER DDA;Lo;0;L;;;;;N;;;;; A86C;PHAGS-PA LETTER NNA;Lo;0;L;;;;;N;;;;; A86D;PHAGS-PA LETTER ALTERNATE YA;Lo;0;L;;;;;N;;;;; A86E;PHAGS-PA LETTER VOICELESS SHA;Lo;0;L;;;;;N;;;;; A86F;PHAGS-PA LETTER VOICED HA;Lo;0;L;;;;;N;;;;; A870;PHAGS-PA LETTER ASPIRATED FA;Lo;0;L;;;;;N;;;;; A871;PHAGS-PA SUBJOINED LETTER RA;Lo;0;L;;;;;N;;;;; A872;PHAGS-PA SUPERFIXED LETTER RA;Lo;0;L;;;;;N;;;;; A873;PHAGS-PA LETTER CANDRABINDU;Lo;0;L;;;;;N;;;;; A874;PHAGS-PA SINGLE HEAD MARK;Po;0;ON;;;;;N;;;;; A875;PHAGS-PA DOUBLE HEAD MARK;Po;0;ON;;;;;N;;;;; A876;PHAGS-PA MARK SHAD;Po;0;ON;;;;;N;;;;; A877;PHAGS-PA MARK DOUBLE SHAD;Po;0;ON;;;;;N;;;;; AC00;;Lo;0;L;;;;;N;;;;; D7A3;;Lo;0;L;;;;;N;;;;; D800;;Cs;0;L;;;;;N;;;;; DB7F;;Cs;0;L;;;;;N;;;;; DB80;;Cs;0;L;;;;;N;;;;; DBFF;;Cs;0;L;;;;;N;;;;; DC00;;Cs;0;L;;;;;N;;;;; DFFF;;Cs;0;L;;;;;N;;;;; E000;;Co;0;L;;;;;N;;;;; F8FF;;Co;0;L;;;;;N;;;;; F900;CJK COMPATIBILITY IDEOGRAPH-F900;Lo;0;L;8C48;;;;N;;;;; F901;CJK COMPATIBILITY IDEOGRAPH-F901;Lo;0;L;66F4;;;;N;;;;; F902;CJK COMPATIBILITY IDEOGRAPH-F902;Lo;0;L;8ECA;;;;N;;;;; F903;CJK COMPATIBILITY IDEOGRAPH-F903;Lo;0;L;8CC8;;;;N;;;;; F904;CJK COMPATIBILITY IDEOGRAPH-F904;Lo;0;L;6ED1;;;;N;;;;; F905;CJK COMPATIBILITY IDEOGRAPH-F905;Lo;0;L;4E32;;;;N;;;;; F906;CJK COMPATIBILITY IDEOGRAPH-F906;Lo;0;L;53E5;;;;N;;;;; F907;CJK COMPATIBILITY IDEOGRAPH-F907;Lo;0;L;9F9C;;;;N;;;;; F908;CJK COMPATIBILITY IDEOGRAPH-F908;Lo;0;L;9F9C;;;;N;;;;; F909;CJK COMPATIBILITY IDEOGRAPH-F909;Lo;0;L;5951;;;;N;;;;; F90A;CJK COMPATIBILITY IDEOGRAPH-F90A;Lo;0;L;91D1;;;;N;;;;; F90B;CJK COMPATIBILITY IDEOGRAPH-F90B;Lo;0;L;5587;;;;N;;;;; F90C;CJK COMPATIBILITY IDEOGRAPH-F90C;Lo;0;L;5948;;;;N;;;;; F90D;CJK COMPATIBILITY IDEOGRAPH-F90D;Lo;0;L;61F6;;;;N;;;;; F90E;CJK COMPATIBILITY IDEOGRAPH-F90E;Lo;0;L;7669;;;;N;;;;; F90F;CJK COMPATIBILITY IDEOGRAPH-F90F;Lo;0;L;7F85;;;;N;;;;; F910;CJK COMPATIBILITY IDEOGRAPH-F910;Lo;0;L;863F;;;;N;;;;; F911;CJK COMPATIBILITY IDEOGRAPH-F911;Lo;0;L;87BA;;;;N;;;;; F912;CJK COMPATIBILITY IDEOGRAPH-F912;Lo;0;L;88F8;;;;N;;;;; F913;CJK COMPATIBILITY IDEOGRAPH-F913;Lo;0;L;908F;;;;N;;;;; F914;CJK COMPATIBILITY IDEOGRAPH-F914;Lo;0;L;6A02;;;;N;;;;; F915;CJK COMPATIBILITY IDEOGRAPH-F915;Lo;0;L;6D1B;;;;N;;;;; F916;CJK COMPATIBILITY IDEOGRAPH-F916;Lo;0;L;70D9;;;;N;;;;; F917;CJK COMPATIBILITY IDEOGRAPH-F917;Lo;0;L;73DE;;;;N;;;;; F918;CJK COMPATIBILITY IDEOGRAPH-F918;Lo;0;L;843D;;;;N;;;;; F919;CJK COMPATIBILITY IDEOGRAPH-F919;Lo;0;L;916A;;;;N;;;;; F91A;CJK COMPATIBILITY IDEOGRAPH-F91A;Lo;0;L;99F1;;;;N;;;;; F91B;CJK COMPATIBILITY IDEOGRAPH-F91B;Lo;0;L;4E82;;;;N;;;;; F91C;CJK COMPATIBILITY IDEOGRAPH-F91C;Lo;0;L;5375;;;;N;;;;; F91D;CJK COMPATIBILITY IDEOGRAPH-F91D;Lo;0;L;6B04;;;;N;;;;; F91E;CJK COMPATIBILITY IDEOGRAPH-F91E;Lo;0;L;721B;;;;N;;;;; F91F;CJK COMPATIBILITY IDEOGRAPH-F91F;Lo;0;L;862D;;;;N;;;;; F920;CJK COMPATIBILITY IDEOGRAPH-F920;Lo;0;L;9E1E;;;;N;;;;; F921;CJK COMPATIBILITY IDEOGRAPH-F921;Lo;0;L;5D50;;;;N;;;;; F922;CJK COMPATIBILITY IDEOGRAPH-F922;Lo;0;L;6FEB;;;;N;;;;; F923;CJK COMPATIBILITY IDEOGRAPH-F923;Lo;0;L;85CD;;;;N;;;;; F924;CJK COMPATIBILITY IDEOGRAPH-F924;Lo;0;L;8964;;;;N;;;;; F925;CJK COMPATIBILITY IDEOGRAPH-F925;Lo;0;L;62C9;;;;N;;;;; F926;CJK COMPATIBILITY IDEOGRAPH-F926;Lo;0;L;81D8;;;;N;;;;; F927;CJK COMPATIBILITY IDEOGRAPH-F927;Lo;0;L;881F;;;;N;;;;; F928;CJK COMPATIBILITY IDEOGRAPH-F928;Lo;0;L;5ECA;;;;N;;;;; F929;CJK COMPATIBILITY IDEOGRAPH-F929;Lo;0;L;6717;;;;N;;;;; F92A;CJK COMPATIBILITY IDEOGRAPH-F92A;Lo;0;L;6D6A;;;;N;;;;; F92B;CJK COMPATIBILITY IDEOGRAPH-F92B;Lo;0;L;72FC;;;;N;;;;; F92C;CJK COMPATIBILITY IDEOGRAPH-F92C;Lo;0;L;90CE;;;;N;;;;; F92D;CJK COMPATIBILITY IDEOGRAPH-F92D;Lo;0;L;4F86;;;;N;;;;; F92E;CJK COMPATIBILITY IDEOGRAPH-F92E;Lo;0;L;51B7;;;;N;;;;; F92F;CJK COMPATIBILITY IDEOGRAPH-F92F;Lo;0;L;52DE;;;;N;;;;; F930;CJK COMPATIBILITY IDEOGRAPH-F930;Lo;0;L;64C4;;;;N;;;;; F931;CJK COMPATIBILITY IDEOGRAPH-F931;Lo;0;L;6AD3;;;;N;;;;; F932;CJK COMPATIBILITY IDEOGRAPH-F932;Lo;0;L;7210;;;;N;;;;; F933;CJK COMPATIBILITY IDEOGRAPH-F933;Lo;0;L;76E7;;;;N;;;;; F934;CJK COMPATIBILITY IDEOGRAPH-F934;Lo;0;L;8001;;;;N;;;;; F935;CJK COMPATIBILITY IDEOGRAPH-F935;Lo;0;L;8606;;;;N;;;;; F936;CJK COMPATIBILITY IDEOGRAPH-F936;Lo;0;L;865C;;;;N;;;;; F937;CJK COMPATIBILITY IDEOGRAPH-F937;Lo;0;L;8DEF;;;;N;;;;; F938;CJK COMPATIBILITY IDEOGRAPH-F938;Lo;0;L;9732;;;;N;;;;; F939;CJK COMPATIBILITY IDEOGRAPH-F939;Lo;0;L;9B6F;;;;N;;;;; F93A;CJK COMPATIBILITY IDEOGRAPH-F93A;Lo;0;L;9DFA;;;;N;;;;; F93B;CJK COMPATIBILITY IDEOGRAPH-F93B;Lo;0;L;788C;;;;N;;;;; F93C;CJK COMPATIBILITY IDEOGRAPH-F93C;Lo;0;L;797F;;;;N;;;;; F93D;CJK COMPATIBILITY IDEOGRAPH-F93D;Lo;0;L;7DA0;;;;N;;;;; F93E;CJK COMPATIBILITY IDEOGRAPH-F93E;Lo;0;L;83C9;;;;N;;;;; F93F;CJK COMPATIBILITY IDEOGRAPH-F93F;Lo;0;L;9304;;;;N;;;;; F940;CJK COMPATIBILITY IDEOGRAPH-F940;Lo;0;L;9E7F;;;;N;;;;; F941;CJK COMPATIBILITY IDEOGRAPH-F941;Lo;0;L;8AD6;;;;N;;;;; F942;CJK COMPATIBILITY IDEOGRAPH-F942;Lo;0;L;58DF;;;;N;;;;; F943;CJK COMPATIBILITY IDEOGRAPH-F943;Lo;0;L;5F04;;;;N;;;;; F944;CJK COMPATIBILITY IDEOGRAPH-F944;Lo;0;L;7C60;;;;N;;;;; F945;CJK COMPATIBILITY IDEOGRAPH-F945;Lo;0;L;807E;;;;N;;;;; F946;CJK COMPATIBILITY IDEOGRAPH-F946;Lo;0;L;7262;;;;N;;;;; F947;CJK COMPATIBILITY IDEOGRAPH-F947;Lo;0;L;78CA;;;;N;;;;; F948;CJK COMPATIBILITY IDEOGRAPH-F948;Lo;0;L;8CC2;;;;N;;;;; F949;CJK COMPATIBILITY IDEOGRAPH-F949;Lo;0;L;96F7;;;;N;;;;; F94A;CJK COMPATIBILITY IDEOGRAPH-F94A;Lo;0;L;58D8;;;;N;;;;; F94B;CJK COMPATIBILITY IDEOGRAPH-F94B;Lo;0;L;5C62;;;;N;;;;; F94C;CJK COMPATIBILITY IDEOGRAPH-F94C;Lo;0;L;6A13;;;;N;;;;; F94D;CJK COMPATIBILITY IDEOGRAPH-F94D;Lo;0;L;6DDA;;;;N;;;;; F94E;CJK COMPATIBILITY IDEOGRAPH-F94E;Lo;0;L;6F0F;;;;N;;;;; F94F;CJK COMPATIBILITY IDEOGRAPH-F94F;Lo;0;L;7D2F;;;;N;;;;; F950;CJK COMPATIBILITY IDEOGRAPH-F950;Lo;0;L;7E37;;;;N;;;;; F951;CJK COMPATIBILITY IDEOGRAPH-F951;Lo;0;L;964B;;;;N;;;;; F952;CJK COMPATIBILITY IDEOGRAPH-F952;Lo;0;L;52D2;;;;N;;;;; F953;CJK COMPATIBILITY IDEOGRAPH-F953;Lo;0;L;808B;;;;N;;;;; F954;CJK COMPATIBILITY IDEOGRAPH-F954;Lo;0;L;51DC;;;;N;;;;; F955;CJK COMPATIBILITY IDEOGRAPH-F955;Lo;0;L;51CC;;;;N;;;;; F956;CJK COMPATIBILITY IDEOGRAPH-F956;Lo;0;L;7A1C;;;;N;;;;; F957;CJK COMPATIBILITY IDEOGRAPH-F957;Lo;0;L;7DBE;;;;N;;;;; F958;CJK COMPATIBILITY IDEOGRAPH-F958;Lo;0;L;83F1;;;;N;;;;; F959;CJK COMPATIBILITY IDEOGRAPH-F959;Lo;0;L;9675;;;;N;;;;; F95A;CJK COMPATIBILITY IDEOGRAPH-F95A;Lo;0;L;8B80;;;;N;;;;; F95B;CJK COMPATIBILITY IDEOGRAPH-F95B;Lo;0;L;62CF;;;;N;;;;; F95C;CJK COMPATIBILITY IDEOGRAPH-F95C;Lo;0;L;6A02;;;;N;;;;; F95D;CJK COMPATIBILITY IDEOGRAPH-F95D;Lo;0;L;8AFE;;;;N;;;;; F95E;CJK COMPATIBILITY IDEOGRAPH-F95E;Lo;0;L;4E39;;;;N;;;;; F95F;CJK COMPATIBILITY IDEOGRAPH-F95F;Lo;0;L;5BE7;;;;N;;;;; F960;CJK COMPATIBILITY IDEOGRAPH-F960;Lo;0;L;6012;;;;N;;;;; F961;CJK COMPATIBILITY IDEOGRAPH-F961;Lo;0;L;7387;;;;N;;;;; F962;CJK COMPATIBILITY IDEOGRAPH-F962;Lo;0;L;7570;;;;N;;;;; F963;CJK COMPATIBILITY IDEOGRAPH-F963;Lo;0;L;5317;;;;N;;;;; F964;CJK COMPATIBILITY IDEOGRAPH-F964;Lo;0;L;78FB;;;;N;;;;; F965;CJK COMPATIBILITY IDEOGRAPH-F965;Lo;0;L;4FBF;;;;N;;;;; F966;CJK COMPATIBILITY IDEOGRAPH-F966;Lo;0;L;5FA9;;;;N;;;;; F967;CJK COMPATIBILITY IDEOGRAPH-F967;Lo;0;L;4E0D;;;;N;;;;; F968;CJK COMPATIBILITY IDEOGRAPH-F968;Lo;0;L;6CCC;;;;N;;;;; F969;CJK COMPATIBILITY IDEOGRAPH-F969;Lo;0;L;6578;;;;N;;;;; F96A;CJK COMPATIBILITY IDEOGRAPH-F96A;Lo;0;L;7D22;;;;N;;;;; F96B;CJK COMPATIBILITY IDEOGRAPH-F96B;Lo;0;L;53C3;;;;N;;;;; F96C;CJK COMPATIBILITY IDEOGRAPH-F96C;Lo;0;L;585E;;;;N;;;;; F96D;CJK COMPATIBILITY IDEOGRAPH-F96D;Lo;0;L;7701;;;;N;;;;; F96E;CJK COMPATIBILITY IDEOGRAPH-F96E;Lo;0;L;8449;;;;N;;;;; F96F;CJK COMPATIBILITY IDEOGRAPH-F96F;Lo;0;L;8AAA;;;;N;;;;; F970;CJK COMPATIBILITY IDEOGRAPH-F970;Lo;0;L;6BBA;;;;N;;;;; F971;CJK COMPATIBILITY IDEOGRAPH-F971;Lo;0;L;8FB0;;;;N;;;;; F972;CJK COMPATIBILITY IDEOGRAPH-F972;Lo;0;L;6C88;;;;N;;;;; F973;CJK COMPATIBILITY IDEOGRAPH-F973;Lo;0;L;62FE;;;;N;;;;; F974;CJK COMPATIBILITY IDEOGRAPH-F974;Lo;0;L;82E5;;;;N;;;;; F975;CJK COMPATIBILITY IDEOGRAPH-F975;Lo;0;L;63A0;;;;N;;;;; F976;CJK COMPATIBILITY IDEOGRAPH-F976;Lo;0;L;7565;;;;N;;;;; F977;CJK COMPATIBILITY IDEOGRAPH-F977;Lo;0;L;4EAE;;;;N;;;;; F978;CJK COMPATIBILITY IDEOGRAPH-F978;Lo;0;L;5169;;;;N;;;;; F979;CJK COMPATIBILITY IDEOGRAPH-F979;Lo;0;L;51C9;;;;N;;;;; F97A;CJK COMPATIBILITY IDEOGRAPH-F97A;Lo;0;L;6881;;;;N;;;;; F97B;CJK COMPATIBILITY IDEOGRAPH-F97B;Lo;0;L;7CE7;;;;N;;;;; F97C;CJK COMPATIBILITY IDEOGRAPH-F97C;Lo;0;L;826F;;;;N;;;;; F97D;CJK COMPATIBILITY IDEOGRAPH-F97D;Lo;0;L;8AD2;;;;N;;;;; F97E;CJK COMPATIBILITY IDEOGRAPH-F97E;Lo;0;L;91CF;;;;N;;;;; F97F;CJK COMPATIBILITY IDEOGRAPH-F97F;Lo;0;L;52F5;;;;N;;;;; F980;CJK COMPATIBILITY IDEOGRAPH-F980;Lo;0;L;5442;;;;N;;;;; F981;CJK COMPATIBILITY IDEOGRAPH-F981;Lo;0;L;5973;;;;N;;;;; F982;CJK COMPATIBILITY IDEOGRAPH-F982;Lo;0;L;5EEC;;;;N;;;;; F983;CJK COMPATIBILITY IDEOGRAPH-F983;Lo;0;L;65C5;;;;N;;;;; F984;CJK COMPATIBILITY IDEOGRAPH-F984;Lo;0;L;6FFE;;;;N;;;;; F985;CJK COMPATIBILITY IDEOGRAPH-F985;Lo;0;L;792A;;;;N;;;;; F986;CJK COMPATIBILITY IDEOGRAPH-F986;Lo;0;L;95AD;;;;N;;;;; F987;CJK COMPATIBILITY IDEOGRAPH-F987;Lo;0;L;9A6A;;;;N;;;;; F988;CJK COMPATIBILITY IDEOGRAPH-F988;Lo;0;L;9E97;;;;N;;;;; F989;CJK COMPATIBILITY IDEOGRAPH-F989;Lo;0;L;9ECE;;;;N;;;;; F98A;CJK COMPATIBILITY IDEOGRAPH-F98A;Lo;0;L;529B;;;;N;;;;; F98B;CJK COMPATIBILITY IDEOGRAPH-F98B;Lo;0;L;66C6;;;;N;;;;; F98C;CJK COMPATIBILITY IDEOGRAPH-F98C;Lo;0;L;6B77;;;;N;;;;; F98D;CJK COMPATIBILITY IDEOGRAPH-F98D;Lo;0;L;8F62;;;;N;;;;; F98E;CJK COMPATIBILITY IDEOGRAPH-F98E;Lo;0;L;5E74;;;;N;;;;; F98F;CJK COMPATIBILITY IDEOGRAPH-F98F;Lo;0;L;6190;;;;N;;;;; F990;CJK COMPATIBILITY IDEOGRAPH-F990;Lo;0;L;6200;;;;N;;;;; F991;CJK COMPATIBILITY IDEOGRAPH-F991;Lo;0;L;649A;;;;N;;;;; F992;CJK COMPATIBILITY IDEOGRAPH-F992;Lo;0;L;6F23;;;;N;;;;; F993;CJK COMPATIBILITY IDEOGRAPH-F993;Lo;0;L;7149;;;;N;;;;; F994;CJK COMPATIBILITY IDEOGRAPH-F994;Lo;0;L;7489;;;;N;;;;; F995;CJK COMPATIBILITY IDEOGRAPH-F995;Lo;0;L;79CA;;;;N;;;;; F996;CJK COMPATIBILITY IDEOGRAPH-F996;Lo;0;L;7DF4;;;;N;;;;; F997;CJK COMPATIBILITY IDEOGRAPH-F997;Lo;0;L;806F;;;;N;;;;; F998;CJK COMPATIBILITY IDEOGRAPH-F998;Lo;0;L;8F26;;;;N;;;;; F999;CJK COMPATIBILITY IDEOGRAPH-F999;Lo;0;L;84EE;;;;N;;;;; F99A;CJK COMPATIBILITY IDEOGRAPH-F99A;Lo;0;L;9023;;;;N;;;;; F99B;CJK COMPATIBILITY IDEOGRAPH-F99B;Lo;0;L;934A;;;;N;;;;; F99C;CJK COMPATIBILITY IDEOGRAPH-F99C;Lo;0;L;5217;;;;N;;;;; F99D;CJK COMPATIBILITY IDEOGRAPH-F99D;Lo;0;L;52A3;;;;N;;;;; F99E;CJK COMPATIBILITY IDEOGRAPH-F99E;Lo;0;L;54BD;;;;N;;;;; F99F;CJK COMPATIBILITY IDEOGRAPH-F99F;Lo;0;L;70C8;;;;N;;;;; F9A0;CJK COMPATIBILITY IDEOGRAPH-F9A0;Lo;0;L;88C2;;;;N;;;;; F9A1;CJK COMPATIBILITY IDEOGRAPH-F9A1;Lo;0;L;8AAA;;;;N;;;;; F9A2;CJK COMPATIBILITY IDEOGRAPH-F9A2;Lo;0;L;5EC9;;;;N;;;;; F9A3;CJK COMPATIBILITY IDEOGRAPH-F9A3;Lo;0;L;5FF5;;;;N;;;;; F9A4;CJK COMPATIBILITY IDEOGRAPH-F9A4;Lo;0;L;637B;;;;N;;;;; F9A5;CJK COMPATIBILITY IDEOGRAPH-F9A5;Lo;0;L;6BAE;;;;N;;;;; F9A6;CJK COMPATIBILITY IDEOGRAPH-F9A6;Lo;0;L;7C3E;;;;N;;;;; F9A7;CJK COMPATIBILITY IDEOGRAPH-F9A7;Lo;0;L;7375;;;;N;;;;; F9A8;CJK COMPATIBILITY IDEOGRAPH-F9A8;Lo;0;L;4EE4;;;;N;;;;; F9A9;CJK COMPATIBILITY IDEOGRAPH-F9A9;Lo;0;L;56F9;;;;N;;;;; F9AA;CJK COMPATIBILITY IDEOGRAPH-F9AA;Lo;0;L;5BE7;;;;N;;;;; F9AB;CJK COMPATIBILITY IDEOGRAPH-F9AB;Lo;0;L;5DBA;;;;N;;;;; F9AC;CJK COMPATIBILITY IDEOGRAPH-F9AC;Lo;0;L;601C;;;;N;;;;; F9AD;CJK COMPATIBILITY IDEOGRAPH-F9AD;Lo;0;L;73B2;;;;N;;;;; F9AE;CJK COMPATIBILITY IDEOGRAPH-F9AE;Lo;0;L;7469;;;;N;;;;; F9AF;CJK COMPATIBILITY IDEOGRAPH-F9AF;Lo;0;L;7F9A;;;;N;;;;; F9B0;CJK COMPATIBILITY IDEOGRAPH-F9B0;Lo;0;L;8046;;;;N;;;;; F9B1;CJK COMPATIBILITY IDEOGRAPH-F9B1;Lo;0;L;9234;;;;N;;;;; F9B2;CJK COMPATIBILITY IDEOGRAPH-F9B2;Lo;0;L;96F6;;;;N;;;;; F9B3;CJK COMPATIBILITY IDEOGRAPH-F9B3;Lo;0;L;9748;;;;N;;;;; F9B4;CJK COMPATIBILITY IDEOGRAPH-F9B4;Lo;0;L;9818;;;;N;;;;; F9B5;CJK COMPATIBILITY IDEOGRAPH-F9B5;Lo;0;L;4F8B;;;;N;;;;; F9B6;CJK COMPATIBILITY IDEOGRAPH-F9B6;Lo;0;L;79AE;;;;N;;;;; F9B7;CJK COMPATIBILITY IDEOGRAPH-F9B7;Lo;0;L;91B4;;;;N;;;;; F9B8;CJK COMPATIBILITY IDEOGRAPH-F9B8;Lo;0;L;96B8;;;;N;;;;; F9B9;CJK COMPATIBILITY IDEOGRAPH-F9B9;Lo;0;L;60E1;;;;N;;;;; F9BA;CJK COMPATIBILITY IDEOGRAPH-F9BA;Lo;0;L;4E86;;;;N;;;;; F9BB;CJK COMPATIBILITY IDEOGRAPH-F9BB;Lo;0;L;50DA;;;;N;;;;; F9BC;CJK COMPATIBILITY IDEOGRAPH-F9BC;Lo;0;L;5BEE;;;;N;;;;; F9BD;CJK COMPATIBILITY IDEOGRAPH-F9BD;Lo;0;L;5C3F;;;;N;;;;; F9BE;CJK COMPATIBILITY IDEOGRAPH-F9BE;Lo;0;L;6599;;;;N;;;;; F9BF;CJK COMPATIBILITY IDEOGRAPH-F9BF;Lo;0;L;6A02;;;;N;;;;; F9C0;CJK COMPATIBILITY IDEOGRAPH-F9C0;Lo;0;L;71CE;;;;N;;;;; F9C1;CJK COMPATIBILITY IDEOGRAPH-F9C1;Lo;0;L;7642;;;;N;;;;; F9C2;CJK COMPATIBILITY IDEOGRAPH-F9C2;Lo;0;L;84FC;;;;N;;;;; F9C3;CJK COMPATIBILITY IDEOGRAPH-F9C3;Lo;0;L;907C;;;;N;;;;; F9C4;CJK COMPATIBILITY IDEOGRAPH-F9C4;Lo;0;L;9F8D;;;;N;;;;; F9C5;CJK COMPATIBILITY IDEOGRAPH-F9C5;Lo;0;L;6688;;;;N;;;;; F9C6;CJK COMPATIBILITY IDEOGRAPH-F9C6;Lo;0;L;962E;;;;N;;;;; F9C7;CJK COMPATIBILITY IDEOGRAPH-F9C7;Lo;0;L;5289;;;;N;;;;; F9C8;CJK COMPATIBILITY IDEOGRAPH-F9C8;Lo;0;L;677B;;;;N;;;;; F9C9;CJK COMPATIBILITY IDEOGRAPH-F9C9;Lo;0;L;67F3;;;;N;;;;; F9CA;CJK COMPATIBILITY IDEOGRAPH-F9CA;Lo;0;L;6D41;;;;N;;;;; F9CB;CJK COMPATIBILITY IDEOGRAPH-F9CB;Lo;0;L;6E9C;;;;N;;;;; F9CC;CJK COMPATIBILITY IDEOGRAPH-F9CC;Lo;0;L;7409;;;;N;;;;; F9CD;CJK COMPATIBILITY IDEOGRAPH-F9CD;Lo;0;L;7559;;;;N;;;;; F9CE;CJK COMPATIBILITY IDEOGRAPH-F9CE;Lo;0;L;786B;;;;N;;;;; F9CF;CJK COMPATIBILITY IDEOGRAPH-F9CF;Lo;0;L;7D10;;;;N;;;;; F9D0;CJK COMPATIBILITY IDEOGRAPH-F9D0;Lo;0;L;985E;;;;N;;;;; F9D1;CJK COMPATIBILITY IDEOGRAPH-F9D1;Lo;0;L;516D;;;;N;;;;; F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;; F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;;N;;;;; F9D4;CJK COMPATIBILITY IDEOGRAPH-F9D4;Lo;0;L;502B;;;;N;;;;; F9D5;CJK COMPATIBILITY IDEOGRAPH-F9D5;Lo;0;L;5D19;;;;N;;;;; F9D6;CJK COMPATIBILITY IDEOGRAPH-F9D6;Lo;0;L;6DEA;;;;N;;;;; F9D7;CJK COMPATIBILITY IDEOGRAPH-F9D7;Lo;0;L;8F2A;;;;N;;;;; F9D8;CJK COMPATIBILITY IDEOGRAPH-F9D8;Lo;0;L;5F8B;;;;N;;;;; F9D9;CJK COMPATIBILITY IDEOGRAPH-F9D9;Lo;0;L;6144;;;;N;;;;; F9DA;CJK COMPATIBILITY IDEOGRAPH-F9DA;Lo;0;L;6817;;;;N;;;;; F9DB;CJK COMPATIBILITY IDEOGRAPH-F9DB;Lo;0;L;7387;;;;N;;;;; F9DC;CJK COMPATIBILITY IDEOGRAPH-F9DC;Lo;0;L;9686;;;;N;;;;; F9DD;CJK COMPATIBILITY IDEOGRAPH-F9DD;Lo;0;L;5229;;;;N;;;;; F9DE;CJK COMPATIBILITY IDEOGRAPH-F9DE;Lo;0;L;540F;;;;N;;;;; F9DF;CJK COMPATIBILITY IDEOGRAPH-F9DF;Lo;0;L;5C65;;;;N;;;;; F9E0;CJK COMPATIBILITY IDEOGRAPH-F9E0;Lo;0;L;6613;;;;N;;;;; F9E1;CJK COMPATIBILITY IDEOGRAPH-F9E1;Lo;0;L;674E;;;;N;;;;; F9E2;CJK COMPATIBILITY IDEOGRAPH-F9E2;Lo;0;L;68A8;;;;N;;;;; F9E3;CJK COMPATIBILITY IDEOGRAPH-F9E3;Lo;0;L;6CE5;;;;N;;;;; F9E4;CJK COMPATIBILITY IDEOGRAPH-F9E4;Lo;0;L;7406;;;;N;;;;; F9E5;CJK COMPATIBILITY IDEOGRAPH-F9E5;Lo;0;L;75E2;;;;N;;;;; F9E6;CJK COMPATIBILITY IDEOGRAPH-F9E6;Lo;0;L;7F79;;;;N;;;;; F9E7;CJK COMPATIBILITY IDEOGRAPH-F9E7;Lo;0;L;88CF;;;;N;;;;; F9E8;CJK COMPATIBILITY IDEOGRAPH-F9E8;Lo;0;L;88E1;;;;N;;;;; F9E9;CJK COMPATIBILITY IDEOGRAPH-F9E9;Lo;0;L;91CC;;;;N;;;;; F9EA;CJK COMPATIBILITY IDEOGRAPH-F9EA;Lo;0;L;96E2;;;;N;;;;; F9EB;CJK COMPATIBILITY IDEOGRAPH-F9EB;Lo;0;L;533F;;;;N;;;;; F9EC;CJK COMPATIBILITY IDEOGRAPH-F9EC;Lo;0;L;6EBA;;;;N;;;;; F9ED;CJK COMPATIBILITY IDEOGRAPH-F9ED;Lo;0;L;541D;;;;N;;;;; F9EE;CJK COMPATIBILITY IDEOGRAPH-F9EE;Lo;0;L;71D0;;;;N;;;;; F9EF;CJK COMPATIBILITY IDEOGRAPH-F9EF;Lo;0;L;7498;;;;N;;;;; F9F0;CJK COMPATIBILITY IDEOGRAPH-F9F0;Lo;0;L;85FA;;;;N;;;;; F9F1;CJK COMPATIBILITY IDEOGRAPH-F9F1;Lo;0;L;96A3;;;;N;;;;; F9F2;CJK COMPATIBILITY IDEOGRAPH-F9F2;Lo;0;L;9C57;;;;N;;;;; F9F3;CJK COMPATIBILITY IDEOGRAPH-F9F3;Lo;0;L;9E9F;;;;N;;;;; F9F4;CJK COMPATIBILITY IDEOGRAPH-F9F4;Lo;0;L;6797;;;;N;;;;; F9F5;CJK COMPATIBILITY IDEOGRAPH-F9F5;Lo;0;L;6DCB;;;;N;;;;; F9F6;CJK COMPATIBILITY IDEOGRAPH-F9F6;Lo;0;L;81E8;;;;N;;;;; F9F7;CJK COMPATIBILITY IDEOGRAPH-F9F7;Lo;0;L;7ACB;;;;N;;;;; F9F8;CJK COMPATIBILITY IDEOGRAPH-F9F8;Lo;0;L;7B20;;;;N;;;;; F9F9;CJK COMPATIBILITY IDEOGRAPH-F9F9;Lo;0;L;7C92;;;;N;;;;; F9FA;CJK COMPATIBILITY IDEOGRAPH-F9FA;Lo;0;L;72C0;;;;N;;;;; F9FB;CJK COMPATIBILITY IDEOGRAPH-F9FB;Lo;0;L;7099;;;;N;;;;; F9FC;CJK COMPATIBILITY IDEOGRAPH-F9FC;Lo;0;L;8B58;;;;N;;;;; F9FD;CJK COMPATIBILITY IDEOGRAPH-F9FD;Lo;0;L;4EC0;;;;N;;;;; F9FE;CJK COMPATIBILITY IDEOGRAPH-F9FE;Lo;0;L;8336;;;;N;;;;; F9FF;CJK COMPATIBILITY IDEOGRAPH-F9FF;Lo;0;L;523A;;;;N;;;;; FA00;CJK COMPATIBILITY IDEOGRAPH-FA00;Lo;0;L;5207;;;;N;;;;; FA01;CJK COMPATIBILITY IDEOGRAPH-FA01;Lo;0;L;5EA6;;;;N;;;;; FA02;CJK COMPATIBILITY IDEOGRAPH-FA02;Lo;0;L;62D3;;;;N;;;;; FA03;CJK COMPATIBILITY IDEOGRAPH-FA03;Lo;0;L;7CD6;;;;N;;;;; FA04;CJK COMPATIBILITY IDEOGRAPH-FA04;Lo;0;L;5B85;;;;N;;;;; FA05;CJK COMPATIBILITY IDEOGRAPH-FA05;Lo;0;L;6D1E;;;;N;;;;; FA06;CJK COMPATIBILITY IDEOGRAPH-FA06;Lo;0;L;66B4;;;;N;;;;; FA07;CJK COMPATIBILITY IDEOGRAPH-FA07;Lo;0;L;8F3B;;;;N;;;;; FA08;CJK COMPATIBILITY IDEOGRAPH-FA08;Lo;0;L;884C;;;;N;;;;; FA09;CJK COMPATIBILITY IDEOGRAPH-FA09;Lo;0;L;964D;;;;N;;;;; FA0A;CJK COMPATIBILITY IDEOGRAPH-FA0A;Lo;0;L;898B;;;;N;;;;; FA0B;CJK COMPATIBILITY IDEOGRAPH-FA0B;Lo;0;L;5ED3;;;;N;;;;; FA0C;CJK COMPATIBILITY IDEOGRAPH-FA0C;Lo;0;L;5140;;;;N;;;;; FA0D;CJK COMPATIBILITY IDEOGRAPH-FA0D;Lo;0;L;55C0;;;;N;;;;; FA0E;CJK COMPATIBILITY IDEOGRAPH-FA0E;Lo;0;L;;;;;N;;;;; FA0F;CJK COMPATIBILITY IDEOGRAPH-FA0F;Lo;0;L;;;;;N;;;;; FA10;CJK COMPATIBILITY IDEOGRAPH-FA10;Lo;0;L;585A;;;;N;;;;; FA11;CJK COMPATIBILITY IDEOGRAPH-FA11;Lo;0;L;;;;;N;;;;; FA12;CJK COMPATIBILITY IDEOGRAPH-FA12;Lo;0;L;6674;;;;N;;;;; FA13;CJK COMPATIBILITY IDEOGRAPH-FA13;Lo;0;L;;;;;N;;;;; FA14;CJK COMPATIBILITY IDEOGRAPH-FA14;Lo;0;L;;;;;N;;;;; FA15;CJK COMPATIBILITY IDEOGRAPH-FA15;Lo;0;L;51DE;;;;N;;;;; FA16;CJK COMPATIBILITY IDEOGRAPH-FA16;Lo;0;L;732A;;;;N;;;;; FA17;CJK COMPATIBILITY IDEOGRAPH-FA17;Lo;0;L;76CA;;;;N;;;;; FA18;CJK COMPATIBILITY IDEOGRAPH-FA18;Lo;0;L;793C;;;;N;;;;; FA19;CJK COMPATIBILITY IDEOGRAPH-FA19;Lo;0;L;795E;;;;N;;;;; FA1A;CJK COMPATIBILITY IDEOGRAPH-FA1A;Lo;0;L;7965;;;;N;;;;; FA1B;CJK COMPATIBILITY IDEOGRAPH-FA1B;Lo;0;L;798F;;;;N;;;;; FA1C;CJK COMPATIBILITY IDEOGRAPH-FA1C;Lo;0;L;9756;;;;N;;;;; FA1D;CJK COMPATIBILITY IDEOGRAPH-FA1D;Lo;0;L;7CBE;;;;N;;;;; FA1E;CJK COMPATIBILITY IDEOGRAPH-FA1E;Lo;0;L;7FBD;;;;N;;;;; FA1F;CJK COMPATIBILITY IDEOGRAPH-FA1F;Lo;0;L;;;;;N;;*;;; FA20;CJK COMPATIBILITY IDEOGRAPH-FA20;Lo;0;L;8612;;;;N;;;;; FA21;CJK COMPATIBILITY IDEOGRAPH-FA21;Lo;0;L;;;;;N;;;;; FA22;CJK COMPATIBILITY IDEOGRAPH-FA22;Lo;0;L;8AF8;;;;N;;;;; FA23;CJK COMPATIBILITY IDEOGRAPH-FA23;Lo;0;L;;;;;N;;*;;; FA24;CJK COMPATIBILITY IDEOGRAPH-FA24;Lo;0;L;;;;;N;;;;; FA25;CJK COMPATIBILITY IDEOGRAPH-FA25;Lo;0;L;9038;;;;N;;;;; FA26;CJK COMPATIBILITY IDEOGRAPH-FA26;Lo;0;L;90FD;;;;N;;;;; FA27;CJK COMPATIBILITY IDEOGRAPH-FA27;Lo;0;L;;;;;N;;;;; FA28;CJK COMPATIBILITY IDEOGRAPH-FA28;Lo;0;L;;;;;N;;;;; FA29;CJK COMPATIBILITY IDEOGRAPH-FA29;Lo;0;L;;;;;N;;;;; FA2A;CJK COMPATIBILITY IDEOGRAPH-FA2A;Lo;0;L;98EF;;;;N;;;;; FA2B;CJK COMPATIBILITY IDEOGRAPH-FA2B;Lo;0;L;98FC;;;;N;;;;; FA2C;CJK COMPATIBILITY IDEOGRAPH-FA2C;Lo;0;L;9928;;;;N;;;;; FA2D;CJK COMPATIBILITY IDEOGRAPH-FA2D;Lo;0;L;9DB4;;;;N;;;;; FA30;CJK COMPATIBILITY IDEOGRAPH-FA30;Lo;0;L;4FAE;;;;N;;;;; FA31;CJK COMPATIBILITY IDEOGRAPH-FA31;Lo;0;L;50E7;;;;N;;;;; FA32;CJK COMPATIBILITY IDEOGRAPH-FA32;Lo;0;L;514D;;;;N;;;;; FA33;CJK COMPATIBILITY IDEOGRAPH-FA33;Lo;0;L;52C9;;;;N;;;;; FA34;CJK COMPATIBILITY IDEOGRAPH-FA34;Lo;0;L;52E4;;;;N;;;;; FA35;CJK COMPATIBILITY IDEOGRAPH-FA35;Lo;0;L;5351;;;;N;;;;; FA36;CJK COMPATIBILITY IDEOGRAPH-FA36;Lo;0;L;559D;;;;N;;;;; FA37;CJK COMPATIBILITY IDEOGRAPH-FA37;Lo;0;L;5606;;;;N;;;;; FA38;CJK COMPATIBILITY IDEOGRAPH-FA38;Lo;0;L;5668;;;;N;;;;; FA39;CJK COMPATIBILITY IDEOGRAPH-FA39;Lo;0;L;5840;;;;N;;;;; FA3A;CJK COMPATIBILITY IDEOGRAPH-FA3A;Lo;0;L;58A8;;;;N;;;;; FA3B;CJK COMPATIBILITY IDEOGRAPH-FA3B;Lo;0;L;5C64;;;;N;;;;; FA3C;CJK COMPATIBILITY IDEOGRAPH-FA3C;Lo;0;L;5C6E;;;;N;;;;; FA3D;CJK COMPATIBILITY IDEOGRAPH-FA3D;Lo;0;L;6094;;;;N;;;;; FA3E;CJK COMPATIBILITY IDEOGRAPH-FA3E;Lo;0;L;6168;;;;N;;;;; FA3F;CJK COMPATIBILITY IDEOGRAPH-FA3F;Lo;0;L;618E;;;;N;;;;; FA40;CJK COMPATIBILITY IDEOGRAPH-FA40;Lo;0;L;61F2;;;;N;;;;; FA41;CJK COMPATIBILITY IDEOGRAPH-FA41;Lo;0;L;654F;;;;N;;;;; FA42;CJK COMPATIBILITY IDEOGRAPH-FA42;Lo;0;L;65E2;;;;N;;;;; FA43;CJK COMPATIBILITY IDEOGRAPH-FA43;Lo;0;L;6691;;;;N;;;;; FA44;CJK COMPATIBILITY IDEOGRAPH-FA44;Lo;0;L;6885;;;;N;;;;; FA45;CJK COMPATIBILITY IDEOGRAPH-FA45;Lo;0;L;6D77;;;;N;;;;; FA46;CJK COMPATIBILITY IDEOGRAPH-FA46;Lo;0;L;6E1A;;;;N;;;;; FA47;CJK COMPATIBILITY IDEOGRAPH-FA47;Lo;0;L;6F22;;;;N;;;;; FA48;CJK COMPATIBILITY IDEOGRAPH-FA48;Lo;0;L;716E;;;;N;;;;; FA49;CJK COMPATIBILITY IDEOGRAPH-FA49;Lo;0;L;722B;;;;N;;;;; FA4A;CJK COMPATIBILITY IDEOGRAPH-FA4A;Lo;0;L;7422;;;;N;;;;; FA4B;CJK COMPATIBILITY IDEOGRAPH-FA4B;Lo;0;L;7891;;;;N;;;;; FA4C;CJK COMPATIBILITY IDEOGRAPH-FA4C;Lo;0;L;793E;;;;N;;;;; FA4D;CJK COMPATIBILITY IDEOGRAPH-FA4D;Lo;0;L;7949;;;;N;;;;; FA4E;CJK COMPATIBILITY IDEOGRAPH-FA4E;Lo;0;L;7948;;;;N;;;;; FA4F;CJK COMPATIBILITY IDEOGRAPH-FA4F;Lo;0;L;7950;;;;N;;;;; FA50;CJK COMPATIBILITY IDEOGRAPH-FA50;Lo;0;L;7956;;;;N;;;;; FA51;CJK COMPATIBILITY IDEOGRAPH-FA51;Lo;0;L;795D;;;;N;;;;; FA52;CJK COMPATIBILITY IDEOGRAPH-FA52;Lo;0;L;798D;;;;N;;;;; FA53;CJK COMPATIBILITY IDEOGRAPH-FA53;Lo;0;L;798E;;;;N;;;;; FA54;CJK COMPATIBILITY IDEOGRAPH-FA54;Lo;0;L;7A40;;;;N;;;;; FA55;CJK COMPATIBILITY IDEOGRAPH-FA55;Lo;0;L;7A81;;;;N;;;;; FA56;CJK COMPATIBILITY IDEOGRAPH-FA56;Lo;0;L;7BC0;;;;N;;;;; FA57;CJK COMPATIBILITY IDEOGRAPH-FA57;Lo;0;L;7DF4;;;;N;;;;; FA58;CJK COMPATIBILITY IDEOGRAPH-FA58;Lo;0;L;7E09;;;;N;;;;; FA59;CJK COMPATIBILITY IDEOGRAPH-FA59;Lo;0;L;7E41;;;;N;;;;; FA5A;CJK COMPATIBILITY IDEOGRAPH-FA5A;Lo;0;L;7F72;;;;N;;;;; FA5B;CJK COMPATIBILITY IDEOGRAPH-FA5B;Lo;0;L;8005;;;;N;;;;; FA5C;CJK COMPATIBILITY IDEOGRAPH-FA5C;Lo;0;L;81ED;;;;N;;;;; FA5D;CJK COMPATIBILITY IDEOGRAPH-FA5D;Lo;0;L;8279;;;;N;;;;; FA5E;CJK COMPATIBILITY IDEOGRAPH-FA5E;Lo;0;L;8279;;;;N;;;;; FA5F;CJK COMPATIBILITY IDEOGRAPH-FA5F;Lo;0;L;8457;;;;N;;;;; FA60;CJK COMPATIBILITY IDEOGRAPH-FA60;Lo;0;L;8910;;;;N;;;;; FA61;CJK COMPATIBILITY IDEOGRAPH-FA61;Lo;0;L;8996;;;;N;;;;; FA62;CJK COMPATIBILITY IDEOGRAPH-FA62;Lo;0;L;8B01;;;;N;;;;; FA63;CJK COMPATIBILITY IDEOGRAPH-FA63;Lo;0;L;8B39;;;;N;;;;; FA64;CJK COMPATIBILITY IDEOGRAPH-FA64;Lo;0;L;8CD3;;;;N;;;;; FA65;CJK COMPATIBILITY IDEOGRAPH-FA65;Lo;0;L;8D08;;;;N;;;;; FA66;CJK COMPATIBILITY IDEOGRAPH-FA66;Lo;0;L;8FB6;;;;N;;;;; FA67;CJK COMPATIBILITY IDEOGRAPH-FA67;Lo;0;L;9038;;;;N;;;;; FA68;CJK COMPATIBILITY IDEOGRAPH-FA68;Lo;0;L;96E3;;;;N;;;;; FA69;CJK COMPATIBILITY IDEOGRAPH-FA69;Lo;0;L;97FF;;;;N;;;;; FA6A;CJK COMPATIBILITY IDEOGRAPH-FA6A;Lo;0;L;983B;;;;N;;;;; FA70;CJK COMPATIBILITY IDEOGRAPH-FA70;Lo;0;L;4E26;;;;N;;;;; FA71;CJK COMPATIBILITY IDEOGRAPH-FA71;Lo;0;L;51B5;;;;N;;;;; FA72;CJK COMPATIBILITY IDEOGRAPH-FA72;Lo;0;L;5168;;;;N;;;;; FA73;CJK COMPATIBILITY IDEOGRAPH-FA73;Lo;0;L;4F80;;;;N;;;;; FA74;CJK COMPATIBILITY IDEOGRAPH-FA74;Lo;0;L;5145;;;;N;;;;; FA75;CJK COMPATIBILITY IDEOGRAPH-FA75;Lo;0;L;5180;;;;N;;;;; FA76;CJK COMPATIBILITY IDEOGRAPH-FA76;Lo;0;L;52C7;;;;N;;;;; FA77;CJK COMPATIBILITY IDEOGRAPH-FA77;Lo;0;L;52FA;;;;N;;;;; FA78;CJK COMPATIBILITY IDEOGRAPH-FA78;Lo;0;L;559D;;;;N;;;;; FA79;CJK COMPATIBILITY IDEOGRAPH-FA79;Lo;0;L;5555;;;;N;;;;; FA7A;CJK COMPATIBILITY IDEOGRAPH-FA7A;Lo;0;L;5599;;;;N;;;;; FA7B;CJK COMPATIBILITY IDEOGRAPH-FA7B;Lo;0;L;55E2;;;;N;;;;; FA7C;CJK COMPATIBILITY IDEOGRAPH-FA7C;Lo;0;L;585A;;;;N;;;;; FA7D;CJK COMPATIBILITY IDEOGRAPH-FA7D;Lo;0;L;58B3;;;;N;;;;; FA7E;CJK COMPATIBILITY IDEOGRAPH-FA7E;Lo;0;L;5944;;;;N;;;;; FA7F;CJK COMPATIBILITY IDEOGRAPH-FA7F;Lo;0;L;5954;;;;N;;;;; FA80;CJK COMPATIBILITY IDEOGRAPH-FA80;Lo;0;L;5A62;;;;N;;;;; FA81;CJK COMPATIBILITY IDEOGRAPH-FA81;Lo;0;L;5B28;;;;N;;;;; FA82;CJK COMPATIBILITY IDEOGRAPH-FA82;Lo;0;L;5ED2;;;;N;;;;; FA83;CJK COMPATIBILITY IDEOGRAPH-FA83;Lo;0;L;5ED9;;;;N;;;;; FA84;CJK COMPATIBILITY IDEOGRAPH-FA84;Lo;0;L;5F69;;;;N;;;;; FA85;CJK COMPATIBILITY IDEOGRAPH-FA85;Lo;0;L;5FAD;;;;N;;;;; FA86;CJK COMPATIBILITY IDEOGRAPH-FA86;Lo;0;L;60D8;;;;N;;;;; FA87;CJK COMPATIBILITY IDEOGRAPH-FA87;Lo;0;L;614E;;;;N;;;;; FA88;CJK COMPATIBILITY IDEOGRAPH-FA88;Lo;0;L;6108;;;;N;;;;; FA89;CJK COMPATIBILITY IDEOGRAPH-FA89;Lo;0;L;618E;;;;N;;;;; FA8A;CJK COMPATIBILITY IDEOGRAPH-FA8A;Lo;0;L;6160;;;;N;;;;; FA8B;CJK COMPATIBILITY IDEOGRAPH-FA8B;Lo;0;L;61F2;;;;N;;;;; FA8C;CJK COMPATIBILITY IDEOGRAPH-FA8C;Lo;0;L;6234;;;;N;;;;; FA8D;CJK COMPATIBILITY IDEOGRAPH-FA8D;Lo;0;L;63C4;;;;N;;;;; FA8E;CJK COMPATIBILITY IDEOGRAPH-FA8E;Lo;0;L;641C;;;;N;;;;; FA8F;CJK COMPATIBILITY IDEOGRAPH-FA8F;Lo;0;L;6452;;;;N;;;;; FA90;CJK COMPATIBILITY IDEOGRAPH-FA90;Lo;0;L;6556;;;;N;;;;; FA91;CJK COMPATIBILITY IDEOGRAPH-FA91;Lo;0;L;6674;;;;N;;;;; FA92;CJK COMPATIBILITY IDEOGRAPH-FA92;Lo;0;L;6717;;;;N;;;;; FA93;CJK COMPATIBILITY IDEOGRAPH-FA93;Lo;0;L;671B;;;;N;;;;; FA94;CJK COMPATIBILITY IDEOGRAPH-FA94;Lo;0;L;6756;;;;N;;;;; FA95;CJK COMPATIBILITY IDEOGRAPH-FA95;Lo;0;L;6B79;;;;N;;;;; FA96;CJK COMPATIBILITY IDEOGRAPH-FA96;Lo;0;L;6BBA;;;;N;;;;; FA97;CJK COMPATIBILITY IDEOGRAPH-FA97;Lo;0;L;6D41;;;;N;;;;; FA98;CJK COMPATIBILITY IDEOGRAPH-FA98;Lo;0;L;6EDB;;;;N;;;;; FA99;CJK COMPATIBILITY IDEOGRAPH-FA99;Lo;0;L;6ECB;;;;N;;;;; FA9A;CJK COMPATIBILITY IDEOGRAPH-FA9A;Lo;0;L;6F22;;;;N;;;;; FA9B;CJK COMPATIBILITY IDEOGRAPH-FA9B;Lo;0;L;701E;;;;N;;;;; FA9C;CJK COMPATIBILITY IDEOGRAPH-FA9C;Lo;0;L;716E;;;;N;;;;; FA9D;CJK COMPATIBILITY IDEOGRAPH-FA9D;Lo;0;L;77A7;;;;N;;;;; FA9E;CJK COMPATIBILITY IDEOGRAPH-FA9E;Lo;0;L;7235;;;;N;;;;; FA9F;CJK COMPATIBILITY IDEOGRAPH-FA9F;Lo;0;L;72AF;;;;N;;;;; FAA0;CJK COMPATIBILITY IDEOGRAPH-FAA0;Lo;0;L;732A;;;;N;;;;; FAA1;CJK COMPATIBILITY IDEOGRAPH-FAA1;Lo;0;L;7471;;;;N;;;;; FAA2;CJK COMPATIBILITY IDEOGRAPH-FAA2;Lo;0;L;7506;;;;N;;;;; FAA3;CJK COMPATIBILITY IDEOGRAPH-FAA3;Lo;0;L;753B;;;;N;;;;; FAA4;CJK COMPATIBILITY IDEOGRAPH-FAA4;Lo;0;L;761D;;;;N;;;;; FAA5;CJK COMPATIBILITY IDEOGRAPH-FAA5;Lo;0;L;761F;;;;N;;;;; FAA6;CJK COMPATIBILITY IDEOGRAPH-FAA6;Lo;0;L;76CA;;;;N;;;;; FAA7;CJK COMPATIBILITY IDEOGRAPH-FAA7;Lo;0;L;76DB;;;;N;;;;; FAA8;CJK COMPATIBILITY IDEOGRAPH-FAA8;Lo;0;L;76F4;;;;N;;;;; FAA9;CJK COMPATIBILITY IDEOGRAPH-FAA9;Lo;0;L;774A;;;;N;;;;; FAAA;CJK COMPATIBILITY IDEOGRAPH-FAAA;Lo;0;L;7740;;;;N;;;;; FAAB;CJK COMPATIBILITY IDEOGRAPH-FAAB;Lo;0;L;78CC;;;;N;;;;; FAAC;CJK COMPATIBILITY IDEOGRAPH-FAAC;Lo;0;L;7AB1;;;;N;;;;; FAAD;CJK COMPATIBILITY IDEOGRAPH-FAAD;Lo;0;L;7BC0;;;;N;;;;; FAAE;CJK COMPATIBILITY IDEOGRAPH-FAAE;Lo;0;L;7C7B;;;;N;;;;; FAAF;CJK COMPATIBILITY IDEOGRAPH-FAAF;Lo;0;L;7D5B;;;;N;;;;; FAB0;CJK COMPATIBILITY IDEOGRAPH-FAB0;Lo;0;L;7DF4;;;;N;;;;; FAB1;CJK COMPATIBILITY IDEOGRAPH-FAB1;Lo;0;L;7F3E;;;;N;;;;; FAB2;CJK COMPATIBILITY IDEOGRAPH-FAB2;Lo;0;L;8005;;;;N;;;;; FAB3;CJK COMPATIBILITY IDEOGRAPH-FAB3;Lo;0;L;8352;;;;N;;;;; FAB4;CJK COMPATIBILITY IDEOGRAPH-FAB4;Lo;0;L;83EF;;;;N;;;;; FAB5;CJK COMPATIBILITY IDEOGRAPH-FAB5;Lo;0;L;8779;;;;N;;;;; FAB6;CJK COMPATIBILITY IDEOGRAPH-FAB6;Lo;0;L;8941;;;;N;;;;; FAB7;CJK COMPATIBILITY IDEOGRAPH-FAB7;Lo;0;L;8986;;;;N;;;;; FAB8;CJK COMPATIBILITY IDEOGRAPH-FAB8;Lo;0;L;8996;;;;N;;;;; FAB9;CJK COMPATIBILITY IDEOGRAPH-FAB9;Lo;0;L;8ABF;;;;N;;;;; FABA;CJK COMPATIBILITY IDEOGRAPH-FABA;Lo;0;L;8AF8;;;;N;;;;; FABB;CJK COMPATIBILITY IDEOGRAPH-FABB;Lo;0;L;8ACB;;;;N;;;;; FABC;CJK COMPATIBILITY IDEOGRAPH-FABC;Lo;0;L;8B01;;;;N;;;;; FABD;CJK COMPATIBILITY IDEOGRAPH-FABD;Lo;0;L;8AFE;;;;N;;;;; FABE;CJK COMPATIBILITY IDEOGRAPH-FABE;Lo;0;L;8AED;;;;N;;;;; FABF;CJK COMPATIBILITY IDEOGRAPH-FABF;Lo;0;L;8B39;;;;N;;;;; FAC0;CJK COMPATIBILITY IDEOGRAPH-FAC0;Lo;0;L;8B8A;;;;N;;;;; FAC1;CJK COMPATIBILITY IDEOGRAPH-FAC1;Lo;0;L;8D08;;;;N;;;;; FAC2;CJK COMPATIBILITY IDEOGRAPH-FAC2;Lo;0;L;8F38;;;;N;;;;; FAC3;CJK COMPATIBILITY IDEOGRAPH-FAC3;Lo;0;L;9072;;;;N;;;;; FAC4;CJK COMPATIBILITY IDEOGRAPH-FAC4;Lo;0;L;9199;;;;N;;;;; FAC5;CJK COMPATIBILITY IDEOGRAPH-FAC5;Lo;0;L;9276;;;;N;;;;; FAC6;CJK COMPATIBILITY IDEOGRAPH-FAC6;Lo;0;L;967C;;;;N;;;;; FAC7;CJK COMPATIBILITY IDEOGRAPH-FAC7;Lo;0;L;96E3;;;;N;;;;; FAC8;CJK COMPATIBILITY IDEOGRAPH-FAC8;Lo;0;L;9756;;;;N;;;;; FAC9;CJK COMPATIBILITY IDEOGRAPH-FAC9;Lo;0;L;97DB;;;;N;;;;; FACA;CJK COMPATIBILITY IDEOGRAPH-FACA;Lo;0;L;97FF;;;;N;;;;; FACB;CJK COMPATIBILITY IDEOGRAPH-FACB;Lo;0;L;980B;;;;N;;;;; FACC;CJK COMPATIBILITY IDEOGRAPH-FACC;Lo;0;L;983B;;;;N;;;;; FACD;CJK COMPATIBILITY IDEOGRAPH-FACD;Lo;0;L;9B12;;;;N;;;;; FACE;CJK COMPATIBILITY IDEOGRAPH-FACE;Lo;0;L;9F9C;;;;N;;;;; FACF;CJK COMPATIBILITY IDEOGRAPH-FACF;Lo;0;L;2284A;;;;N;;;;; FAD0;CJK COMPATIBILITY IDEOGRAPH-FAD0;Lo;0;L;22844;;;;N;;;;; FAD1;CJK COMPATIBILITY IDEOGRAPH-FAD1;Lo;0;L;233D5;;;;N;;;;; FAD2;CJK COMPATIBILITY IDEOGRAPH-FAD2;Lo;0;L;3B9D;;;;N;;;;; FAD3;CJK COMPATIBILITY IDEOGRAPH-FAD3;Lo;0;L;4018;;;;N;;;;; FAD4;CJK COMPATIBILITY IDEOGRAPH-FAD4;Lo;0;L;4039;;;;N;;;;; FAD5;CJK COMPATIBILITY IDEOGRAPH-FAD5;Lo;0;L;25249;;;;N;;;;; FAD6;CJK COMPATIBILITY IDEOGRAPH-FAD6;Lo;0;L;25CD0;;;;N;;;;; FAD7;CJK COMPATIBILITY IDEOGRAPH-FAD7;Lo;0;L;27ED3;;;;N;;;;; FAD8;CJK COMPATIBILITY IDEOGRAPH-FAD8;Lo;0;L;9F43;;;;N;;;;; FAD9;CJK COMPATIBILITY IDEOGRAPH-FAD9;Lo;0;L;9F8E;;;;N;;;;; FB00;LATIN SMALL LIGATURE FF;Ll;0;L; 0066 0066;;;;N;;;;; FB01;LATIN SMALL LIGATURE FI;Ll;0;L; 0066 0069;;;;N;;;;; FB02;LATIN SMALL LIGATURE FL;Ll;0;L; 0066 006C;;;;N;;;;; FB03;LATIN SMALL LIGATURE FFI;Ll;0;L; 0066 0066 0069;;;;N;;;;; FB04;LATIN SMALL LIGATURE FFL;Ll;0;L; 0066 0066 006C;;;;N;;;;; FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L; 017F 0074;;;;N;;;;; FB06;LATIN SMALL LIGATURE ST;Ll;0;L; 0073 0074;;;;N;;;;; FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L; 0574 0576;;;;N;;;;; FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L; 0574 0565;;;;N;;;;; FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L; 0574 056B;;;;N;;;;; FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L; 057E 0576;;;;N;;;;; FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L; 0574 056D;;;;N;;;;; FB1D;HEBREW LETTER YOD WITH HIRIQ;Lo;0;R;05D9 05B4;;;;N;;;;; FB1E;HEBREW POINT JUDEO-SPANISH VARIKA;Mn;26;NSM;;;;;N;HEBREW POINT VARIKA;;;; FB1F;HEBREW LIGATURE YIDDISH YOD YOD PATAH;Lo;0;R;05F2 05B7;;;;N;;;;; FB20;HEBREW LETTER ALTERNATIVE AYIN;Lo;0;R; 05E2;;;;N;;;;; FB21;HEBREW LETTER WIDE ALEF;Lo;0;R; 05D0;;;;N;;;;; FB22;HEBREW LETTER WIDE DALET;Lo;0;R; 05D3;;;;N;;;;; FB23;HEBREW LETTER WIDE HE;Lo;0;R; 05D4;;;;N;;;;; FB24;HEBREW LETTER WIDE KAF;Lo;0;R; 05DB;;;;N;;;;; FB25;HEBREW LETTER WIDE LAMED;Lo;0;R; 05DC;;;;N;;;;; FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R; 05DD;;;;N;;;;; FB27;HEBREW LETTER WIDE RESH;Lo;0;R; 05E8;;;;N;;;;; FB28;HEBREW LETTER WIDE TAV;Lo;0;R; 05EA;;;;N;;;;; FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; FB2A;HEBREW LETTER SHIN WITH SHIN DOT;Lo;0;R;05E9 05C1;;;;N;;;;; FB2B;HEBREW LETTER SHIN WITH SIN DOT;Lo;0;R;05E9 05C2;;;;N;;;;; FB2C;HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT;Lo;0;R;FB49 05C1;;;;N;;;;; FB2D;HEBREW LETTER SHIN WITH DAGESH AND SIN DOT;Lo;0;R;FB49 05C2;;;;N;;;;; FB2E;HEBREW LETTER ALEF WITH PATAH;Lo;0;R;05D0 05B7;;;;N;;;;; FB2F;HEBREW LETTER ALEF WITH QAMATS;Lo;0;R;05D0 05B8;;;;N;;;;; FB30;HEBREW LETTER ALEF WITH MAPIQ;Lo;0;R;05D0 05BC;;;;N;;;;; FB31;HEBREW LETTER BET WITH DAGESH;Lo;0;R;05D1 05BC;;;;N;;;;; FB32;HEBREW LETTER GIMEL WITH DAGESH;Lo;0;R;05D2 05BC;;;;N;;;;; FB33;HEBREW LETTER DALET WITH DAGESH;Lo;0;R;05D3 05BC;;;;N;;;;; FB34;HEBREW LETTER HE WITH MAPIQ;Lo;0;R;05D4 05BC;;;;N;;;;; FB35;HEBREW LETTER VAV WITH DAGESH;Lo;0;R;05D5 05BC;;;;N;;;;; FB36;HEBREW LETTER ZAYIN WITH DAGESH;Lo;0;R;05D6 05BC;;;;N;;;;; FB38;HEBREW LETTER TET WITH DAGESH;Lo;0;R;05D8 05BC;;;;N;;;;; FB39;HEBREW LETTER YOD WITH DAGESH;Lo;0;R;05D9 05BC;;;;N;;;;; FB3A;HEBREW LETTER FINAL KAF WITH DAGESH;Lo;0;R;05DA 05BC;;;;N;;;;; FB3B;HEBREW LETTER KAF WITH DAGESH;Lo;0;R;05DB 05BC;;;;N;;;;; FB3C;HEBREW LETTER LAMED WITH DAGESH;Lo;0;R;05DC 05BC;;;;N;;;;; FB3E;HEBREW LETTER MEM WITH DAGESH;Lo;0;R;05DE 05BC;;;;N;;;;; FB40;HEBREW LETTER NUN WITH DAGESH;Lo;0;R;05E0 05BC;;;;N;;;;; FB41;HEBREW LETTER SAMEKH WITH DAGESH;Lo;0;R;05E1 05BC;;;;N;;;;; FB43;HEBREW LETTER FINAL PE WITH DAGESH;Lo;0;R;05E3 05BC;;;;N;;;;; FB44;HEBREW LETTER PE WITH DAGESH;Lo;0;R;05E4 05BC;;;;N;;;;; FB46;HEBREW LETTER TSADI WITH DAGESH;Lo;0;R;05E6 05BC;;;;N;;;;; FB47;HEBREW LETTER QOF WITH DAGESH;Lo;0;R;05E7 05BC;;;;N;;;;; FB48;HEBREW LETTER RESH WITH DAGESH;Lo;0;R;05E8 05BC;;;;N;;;;; FB49;HEBREW LETTER SHIN WITH DAGESH;Lo;0;R;05E9 05BC;;;;N;;;;; FB4A;HEBREW LETTER TAV WITH DAGESH;Lo;0;R;05EA 05BC;;;;N;;;;; FB4B;HEBREW LETTER VAV WITH HOLAM;Lo;0;R;05D5 05B9;;;;N;;;;; FB4C;HEBREW LETTER BET WITH RAFE;Lo;0;R;05D1 05BF;;;;N;;;;; FB4D;HEBREW LETTER KAF WITH RAFE;Lo;0;R;05DB 05BF;;;;N;;;;; FB4E;HEBREW LETTER PE WITH RAFE;Lo;0;R;05E4 05BF;;;;N;;;;; FB4F;HEBREW LIGATURE ALEF LAMED;Lo;0;R; 05D0 05DC;;;;N;;;;; FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL; 0671;;;;N;;;;; FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL; 0671;;;;N;;;;; FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL; 067B;;;;N;;;;; FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL; 067B;;;;N;;;;; FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL; 067B;;;;N;;;;; FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL; 067B;;;;N;;;;; FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL; 067E;;;;N;;;;; FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL; 067E;;;;N;;;;; FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL; 067E;;;;N;;;;; FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL; 067E;;;;N;;;;; FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL; 0680;;;;N;;;;; FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL; 0680;;;;N;;;;; FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL; 0680;;;;N;;;;; FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL; 0680;;;;N;;;;; FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL; 067A;;;;N;;;;; FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL; 067A;;;;N;;;;; FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL; 067A;;;;N;;;;; FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL; 067A;;;;N;;;;; FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL; 067F;;;;N;;;;; FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL; 067F;;;;N;;;;; FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL; 067F;;;;N;;;;; FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL; 067F;;;;N;;;;; FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL; 0679;;;;N;;;;; FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL; 0679;;;;N;;;;; FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL; 0679;;;;N;;;;; FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL; 0679;;;;N;;;;; FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL; 06A4;;;;N;;;;; FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL; 06A4;;;;N;;;;; FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL; 06A4;;;;N;;;;; FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL; 06A6;;;;N;;;;; FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL; 06A6;;;;N;;;;; FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL; 06A6;;;;N;;;;; FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL; 0684;;;;N;;;;; FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL; 0684;;;;N;;;;; FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL; 0684;;;;N;;;;; FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL; 0684;;;;N;;;;; FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL; 0683;;;;N;;;;; FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL; 0683;;;;N;;;;; FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL; 0683;;;;N;;;;; FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL; 0683;;;;N;;;;; FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL; 0686;;;;N;;;;; FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL; 0686;;;;N;;;;; FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL; 0686;;;;N;;;;; FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL; 0686;;;;N;;;;; FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL; 0687;;;;N;;;;; FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL; 0687;;;;N;;;;; FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL; 0687;;;;N;;;;; FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL; 0687;;;;N;;;;; FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL; 068D;;;;N;;;;; FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL; 068D;;;;N;;;;; FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL; 068C;;;;N;;;;; FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL; 068C;;;;N;;;;; FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL; 068E;;;;N;;;;; FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL; 068E;;;;N;;;;; FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL; 0688;;;;N;;;;; FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL; 0688;;;;N;;;;; FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL; 0698;;;;N;;;;; FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL; 0698;;;;N;;;;; FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL; 0691;;;;N;;;;; FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL; 0691;;;;N;;;;; FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL; 06A9;;;;N;;;;; FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL; 06A9;;;;N;;;;; FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL; 06A9;;;;N;;;;; FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL; 06AF;;;;N;;;;; FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL; 06AF;;;;N;;;;; FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL; 06AF;;;;N;;;;; FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL; 06B3;;;;N;;;;; FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL; 06B3;;;;N;;;;; FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL; 06B3;;;;N;;;;; FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL; 06B1;;;;N;;;;; FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL; 06B1;;;;N;;;;; FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL; 06B1;;;;N;;;;; FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL; 06BA;;;;N;;;;; FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL; 06BA;;;;N;;;;; FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL; 06BB;;;;N;;;;; FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL; 06BB;;;;N;;;;; FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL; 06BB;;;;N;;;;; FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL; 06C0;;;;N;;;;; FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL; 06C0;;;;N;;;;; FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL; 06C1;;;;N;;;;; FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL; 06C1;;;;N;;;;; FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL; 06C1;;;;N;;;;; FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL; 06BE;;;;N;;;;; FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL; 06BE;;;;N;;;;; FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL; 06BE;;;;N;;;;; FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL; 06D2;;;;N;;;;; FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL; 06D2;;;;N;;;;; FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 06D3;;;;N;;;;; FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 06D3;;;;N;;;;; FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL; 06AD;;;;N;;;;; FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL; 06C7;;;;N;;;;; FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL; 06C7;;;;N;;;;; FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL; 06C6;;;;N;;;;; FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL; 06C6;;;;N;;;;; FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL; 06C8;;;;N;;;;; FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL; 06C8;;;;N;;;;; FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0677;;;;N;;;;; FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL; 06CB;;;;N;;;;; FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL; 06CB;;;;N;;;;; FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL; 06C5;;;;N;;;;; FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL; 06C5;;;;N;;;;; FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL; 06C9;;;;N;;;;; FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL; 06C9;;;;N;;;;; FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL; 06D0;;;;N;;;;; FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL; 06D0;;;;N;;;;; FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL; 06D0;;;;N;;;;; FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0649;;;;N;;;;; FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL; 0649;;;;N;;;;; FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL; 0626 0627;;;;N;;;;; FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL; 0626 0627;;;;N;;;;; FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL; 0626 06D5;;;;N;;;;; FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL; 0626 0648;;;;N;;;;; FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL; 0626 0648;;;;N;;;;; FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL; 0626 06C7;;;;N;;;;; FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL; 0626 06C6;;;;N;;;;; FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL; 0626 06C8;;;;N;;;;; FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL; 0626 06D0;;;;N;;;;; FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL; 06CC;;;;N;;;;; FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL; 06CC;;;;N;;;;; FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL; 06CC;;;;N;;;;; FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL; 0626 062C;;;;N;;;;; FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL; 0626 062D;;;;N;;;;; FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL; 0626 0645;;;;N;;;;; FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0626 0649;;;;N;;;;; FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL; 0626 064A;;;;N;;;;; FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0628 062C;;;;N;;;;; FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL; 0628 062D;;;;N;;;;; FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0628 062E;;;;N;;;;; FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0628 0645;;;;N;;;;; FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0628 0649;;;;N;;;;; FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL; 0628 064A;;;;N;;;;; FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062A 062C;;;;N;;;;; FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL; 062A 062D;;;;N;;;;; FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL; 062A 062E;;;;N;;;;; FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062A 0645;;;;N;;;;; FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062A 0649;;;;N;;;;; FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL; 062A 064A;;;;N;;;;; FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL; 062B 062C;;;;N;;;;; FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL; 062B 0645;;;;N;;;;; FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062B 0649;;;;N;;;;; FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL; 062B 064A;;;;N;;;;; FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL; 062C 062D;;;;N;;;;; FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 062C 0645;;;;N;;;;; FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062D 062C;;;;N;;;;; FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062D 0645;;;;N;;;;; FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL; 062E 062C;;;;N;;;;; FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL; 062E 062D;;;;N;;;;; FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL; 062E 0645;;;;N;;;;; FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0633 062C;;;;N;;;;; FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0633 062D;;;;N;;;;; FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0633 062E;;;;N;;;;; FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0633 0645;;;;N;;;;; FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL; 0635 062D;;;;N;;;;; FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0635 0645;;;;N;;;;; FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL; 0636 062C;;;;N;;;;; FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL; 0636 062D;;;;N;;;;; FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL; 0636 062E;;;;N;;;;; FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL; 0636 0645;;;;N;;;;; FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL; 0637 062D;;;;N;;;;; FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0637 0645;;;;N;;;;; FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL; 0638 0645;;;;N;;;;; FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL; 0639 062C;;;;N;;;;; FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL; 0639 0645;;;;N;;;;; FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL; 063A 062C;;;;N;;;;; FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL; 063A 0645;;;;N;;;;; FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0641 062C;;;;N;;;;; FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL; 0641 062D;;;;N;;;;; FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL; 0641 062E;;;;N;;;;; FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0641 0645;;;;N;;;;; FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0641 0649;;;;N;;;;; FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL; 0641 064A;;;;N;;;;; FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL; 0642 062D;;;;N;;;;; FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0642 0645;;;;N;;;;; FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0642 0649;;;;N;;;;; FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL; 0642 064A;;;;N;;;;; FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL; 0643 0627;;;;N;;;;; FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL; 0643 062C;;;;N;;;;; FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL; 0643 062D;;;;N;;;;; FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL; 0643 062E;;;;N;;;;; FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL; 0643 0644;;;;N;;;;; FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL; 0643 0645;;;;N;;;;; FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0643 0649;;;;N;;;;; FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL; 0643 064A;;;;N;;;;; FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL; 0644 062C;;;;N;;;;; FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL; 0644 062D;;;;N;;;;; FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL; 0644 062E;;;;N;;;;; FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL; 0644 0645;;;;N;;;;; FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0644 0649;;;;N;;;;; FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL; 0644 064A;;;;N;;;;; FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL; 0645 062C;;;;N;;;;; FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL; 0645 062D;;;;N;;;;; FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL; 0645 062E;;;;N;;;;; FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL; 0645 0645;;;;N;;;;; FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0645 0649;;;;N;;;;; FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL; 0645 064A;;;;N;;;;; FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL; 0646 062C;;;;N;;;;; FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL; 0646 062D;;;;N;;;;; FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL; 0646 062E;;;;N;;;;; FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL; 0646 0645;;;;N;;;;; FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0646 0649;;;;N;;;;; FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL; 0646 064A;;;;N;;;;; FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL; 0647 062C;;;;N;;;;; FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL; 0647 0645;;;;N;;;;; FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0647 0649;;;;N;;;;; FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL; 0647 064A;;;;N;;;;; FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL; 064A 062C;;;;N;;;;; FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL; 064A 062D;;;;N;;;;; FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL; 064A 062E;;;;N;;;;; FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL; 064A 0645;;;;N;;;;; FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 064A 0649;;;;N;;;;; FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL; 064A 064A;;;;N;;;;; FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0630 0670;;;;N;;;;; FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0631 0670;;;;N;;;;; FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0649 0670;;;;N;;;;; FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C 0651;;;;N;;;;; FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D 0651;;;;N;;;;; FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL; 0020 064E 0651;;;;N;;;;; FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F 0651;;;;N;;;;; FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL; 0020 0650 0651;;;;N;;;;; FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL; 0020 0651 0670;;;;N;;;;; FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL; 0626 0631;;;;N;;;;; FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL; 0626 0632;;;;N;;;;; FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL; 0626 0646;;;;N;;;;; FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0626 0649;;;;N;;;;; FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL; 0626 064A;;;;N;;;;; FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL; 0628 0631;;;;N;;;;; FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL; 0628 0632;;;;N;;;;; FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL; 0628 0646;;;;N;;;;; FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0628 0649;;;;N;;;;; FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL; 0628 064A;;;;N;;;;; FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL; 062A 0631;;;;N;;;;; FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL; 062A 0632;;;;N;;;;; FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL; 062A 0646;;;;N;;;;; FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0649;;;;N;;;;; FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL; 062A 064A;;;;N;;;;; FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL; 062B 0631;;;;N;;;;; FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL; 062B 0632;;;;N;;;;; FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL; 062B 0646;;;;N;;;;; FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062B 0649;;;;N;;;;; FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL; 062B 064A;;;;N;;;;; FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0641 0649;;;;N;;;;; FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL; 0641 064A;;;;N;;;;; FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0642 0649;;;;N;;;;; FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL; 0642 064A;;;;N;;;;; FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL; 0643 0627;;;;N;;;;; FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0643 0649;;;;N;;;;; FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL; 0643 064A;;;;N;;;;; FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 0649;;;;N;;;;; FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL; 0644 064A;;;;N;;;;; FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL; 0645 0627;;;;N;;;;; FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL; 0646 0631;;;;N;;;;; FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL; 0646 0632;;;;N;;;;; FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL; 0646 0646;;;;N;;;;; FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0649;;;;N;;;;; FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL; 0646 064A;;;;N;;;;; FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL; 0649 0670;;;;N;;;;; FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL; 064A 0631;;;;N;;;;; FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL; 064A 0632;;;;N;;;;; FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL; 064A 0646;;;;N;;;;; FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 064A 0649;;;;N;;;;; FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL; 064A 064A;;;;N;;;;; FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL; 0626 062C;;;;N;;;;; FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL; 0626 062D;;;;N;;;;; FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL; 0626 062E;;;;N;;;;; FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL; 0628 062C;;;;N;;;;; FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL; 0628 062D;;;;N;;;;; FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL; 0628 062E;;;;N;;;;; FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062C;;;;N;;;;; FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL; 062A 062D;;;;N;;;;; FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL; 062A 062E;;;;N;;;;; FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 062D;;;;N;;;;; FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062C 0645;;;;N;;;;; FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062D 062C;;;;N;;;;; FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062D 0645;;;;N;;;;; FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 062E 062C;;;;N;;;;; FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062E 0645;;;;N;;;;; FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D;;;;N;;;;; FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL; 0635 062E;;;;N;;;;; FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645;;;;N;;;;; FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL; 0636 062C;;;;N;;;;; FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL; 0636 062D;;;;N;;;;; FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL; 0636 062E;;;;N;;;;; FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL; 0636 0645;;;;N;;;;; FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL; 0637 062D;;;;N;;;;; FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL; 0639 062C;;;;N;;;;; FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645;;;;N;;;;; FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL; 063A 062C;;;;N;;;;; FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL; 063A 0645;;;;N;;;;; FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL; 0641 062C;;;;N;;;;; FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL; 0641 062D;;;;N;;;;; FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL; 0641 062E;;;;N;;;;; FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 0645;;;;N;;;;; FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL; 0642 062D;;;;N;;;;; FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL; 0642 0645;;;;N;;;;; FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL; 0643 062C;;;;N;;;;; FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL; 0643 062D;;;;N;;;;; FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL; 0643 062E;;;;N;;;;; FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C;;;;N;;;;; FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL; 0644 062D;;;;N;;;;; FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL; 0644 062E;;;;N;;;;; FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL; 0644 0647;;;;N;;;;; FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062C;;;;N;;;;; FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062D;;;;N;;;;; FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062E;;;;N;;;;; FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 0645;;;;N;;;;; FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL; 0646 062C;;;;N;;;;; FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL; 0646 062D;;;;N;;;;; FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL; 0646 062E;;;;N;;;;; FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL; 0647 062C;;;;N;;;;; FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645;;;;N;;;;; FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL; 0647 0670;;;;N;;;;; FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL; 064A 062C;;;;N;;;;; FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL; 064A 062D;;;;N;;;;; FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL; 064A 062E;;;;N;;;;; FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL; 0626 0645;;;;N;;;;; FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL; 0626 0647;;;;N;;;;; FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL; 0628 0645;;;;N;;;;; FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL; 0628 0647;;;;N;;;;; FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062A 0645;;;;N;;;;; FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL; 062A 0647;;;;N;;;;; FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL; 062B 0645;;;;N;;;;; FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL; 062B 0647;;;;N;;;;; FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0633 0645;;;;N;;;;; FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL; 0643 0644;;;;N;;;;; FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL; 0643 0645;;;;N;;;;; FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL; 0644 0645;;;;N;;;;; FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL; 0646 0645;;;;N;;;;; FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL; 0646 0647;;;;N;;;;; FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL; 064A 0645;;;;N;;;;; FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL; 064A 0647;;;;N;;;;; FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL; 0640 064E 0651;;;;N;;;;; FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F 0651;;;;N;;;;; FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL; 0640 0650 0651;;;;N;;;;; FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0637 0649;;;;N;;;;; FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL; 0637 064A;;;;N;;;;; FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0639 0649;;;;N;;;;; FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL; 0639 064A;;;;N;;;;; FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 063A 0649;;;;N;;;;; FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL; 063A 064A;;;;N;;;;; FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0633 0649;;;;N;;;;; FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0633 064A;;;;N;;;;; FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0634 0649;;;;N;;;;; FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL; 0634 064A;;;;N;;;;; FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062D 0649;;;;N;;;;; FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL; 062D 064A;;;;N;;;;; FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062C 0649;;;;N;;;;; FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL; 062C 064A;;;;N;;;;; FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 062E 0649;;;;N;;;;; FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL; 062E 064A;;;;N;;;;; FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0635 0649;;;;N;;;;; FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL; 0635 064A;;;;N;;;;; FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0636 0649;;;;N;;;;; FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL; 0636 064A;;;;N;;;;; FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL; 0634 062C;;;;N;;;;; FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL; 0634 062D;;;;N;;;;; FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL; 0634 062E;;;;N;;;;; FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL; 0634 0645;;;;N;;;;; FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL; 0634 0631;;;;N;;;;; FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL; 0633 0631;;;;N;;;;; FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL; 0635 0631;;;;N;;;;; FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL; 0636 0631;;;;N;;;;; FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0637 0649;;;;N;;;;; FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL; 0637 064A;;;;N;;;;; FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0649;;;;N;;;;; FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL; 0639 064A;;;;N;;;;; FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0649;;;;N;;;;; FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL; 063A 064A;;;;N;;;;; FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 0649;;;;N;;;;; FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL; 0633 064A;;;;N;;;;; FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0634 0649;;;;N;;;;; FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL; 0634 064A;;;;N;;;;; FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0649;;;;N;;;;; FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL; 062D 064A;;;;N;;;;; FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0649;;;;N;;;;; FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 064A;;;;N;;;;; FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062E 0649;;;;N;;;;; FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL; 062E 064A;;;;N;;;;; FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0635 0649;;;;N;;;;; FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL; 0635 064A;;;;N;;;;; FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 0649;;;;N;;;;; FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL; 0636 064A;;;;N;;;;; FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL; 0634 0631;;;;N;;;;; FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL; 0633 0631;;;;N;;;;; FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL; 0635 0631;;;;N;;;;; FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL; 0636 0631;;;;N;;;;; FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645;;;;N;;;;; FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL; 0633 0647;;;;N;;;;; FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL; 0634 0647;;;;N;;;;; FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0633 062C;;;;N;;;;; FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0633 062D;;;;N;;;;; FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0633 062E;;;;N;;;;; FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL; 0634 062C;;;;N;;;;; FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL; 0634 062D;;;;N;;;;; FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL; 0634 062E;;;;N;;;;; FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0637 0645;;;;N;;;;; FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL; 0638 0645;;;;N;;;;; FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL; 0627 064B;;;;N;;;;; FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL; 0627 064B;;;;N;;;;; FD3E;ORNATE LEFT PARENTHESIS;Ps;0;ON;;;;;N;;;;; FD3F;ORNATE RIGHT PARENTHESIS;Pe;0;ON;;;;;N;;;;; FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062C 0645;;;;N;;;;; FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 062A 062D 062C;;;;N;;;;; FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062D 0645;;;;N;;;;; FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 062A 062E 0645;;;;N;;;;; FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 062A 0645 062C;;;;N;;;;; FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062A 0645 062D;;;;N;;;;; FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 062A 0645 062E;;;;N;;;;; FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 062C 0645 062D;;;;N;;;;; FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 0645 064A;;;;N;;;;; FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062D 0645 0649;;;;N;;;;; FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0633 062D 062C;;;;N;;;;; FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 062C 062D;;;;N;;;;; FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062C 0649;;;;N;;;;; FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0633 0645 062D;;;;N;;;;; FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0633 0645 062C;;;;N;;;;; FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0633 0645 0645;;;;N;;;;; FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL; 0635 062D 062D;;;;N;;;;; FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0634 062D 0645;;;;N;;;;; FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0634 062C 064A;;;;N;;;;; FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0634 0645 062E;;;;N;;;;; FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0634 0645 0645;;;;N;;;;; FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0636 062D 0649;;;;N;;;;; FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0636 062E 0645;;;;N;;;;; FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0637 0645 062D;;;;N;;;;; FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0637 0645 0645;;;;N;;;;; FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0637 0645 064A;;;;N;;;;; FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 0645 0645;;;;N;;;;; FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0639 0645 0649;;;;N;;;;; FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 063A 0645 0645;;;;N;;;;; FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 063A 0645 064A;;;;N;;;;; FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 063A 0645 0649;;;;N;;;;; FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0641 062E 0645;;;;N;;;;; FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0642 0645 0645;;;;N;;;;; FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0644 062D 064A;;;;N;;;;; FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0644 062D 0649;;;;N;;;;; FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL; 0644 062C 062C;;;;N;;;;; FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062E 0645;;;;N;;;;; FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0644 0645 062D;;;;N;;;;; FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062D 062C;;;;N;;;;; FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062D 0645;;;;N;;;;; FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062D 064A;;;;N;;;;; FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0645 062C 062D;;;;N;;;;; FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062C 0645;;;;N;;;;; FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL; 0645 062E 062C;;;;N;;;;; FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL; 0645 062E 0645;;;;N;;;;; FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL; 0645 062C 062E;;;;N;;;;; FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL; 0647 0645 062C;;;;N;;;;; FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0647 0645 0645;;;;N;;;;; FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062D 0645;;;;N;;;;; FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062D 0649;;;;N;;;;; FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0646 062C 0645;;;;N;;;;; FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 062C 0649;;;;N;;;;; FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 0645 064A;;;;N;;;;; FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0646 0645 0649;;;;N;;;;; FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 064A 0645 0645;;;;N;;;;; FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062E 064A;;;;N;;;;; FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 062C 064A;;;;N;;;;; FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062C 0649;;;;N;;;;; FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 062A 062E 064A;;;;N;;;;; FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 062E 0649;;;;N;;;;; FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062A 0645 064A;;;;N;;;;; FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062A 0645 0649;;;;N;;;;; FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 062C 0645 064A;;;;N;;;;; FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 062D 0649;;;;N;;;;; FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 062C 0645 0649;;;;N;;;;; FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL; 0633 062E 0649;;;;N;;;;; FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0635 062D 064A;;;;N;;;;; FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0634 062D 064A;;;;N;;;;; FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0636 062D 064A;;;;N;;;;; FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 062C 064A;;;;N;;;;; FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0644 0645 064A;;;;N;;;;; FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 064A 062D 064A;;;;N;;;;; FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 062C 064A;;;;N;;;;; FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 064A 0645 064A;;;;N;;;;; FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 0645 064A;;;;N;;;;; FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0642 0645 064A;;;;N;;;;; FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0646 062D 064A;;;;N;;;;; FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL; 0642 0645 062D;;;;N;;;;; FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062D 0645;;;;N;;;;; FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0639 0645 064A;;;;N;;;;; FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0643 0645 064A;;;;N;;;;; FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0645 062E 064A;;;;N;;;;; FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL; 0644 062C 0645;;;;N;;;;; FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL; 0646 062C 062D;;;;N;;;;; FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 062C 062D 064A;;;;N;;;;; FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 062D 062C 064A;;;;N;;;;; FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0645 062C 064A;;;;N;;;;; FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL; 0641 0645 064A;;;;N;;;;; FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL; 0628 062D 064A;;;;N;;;;; FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0643 0645 0645;;;;N;;;;; FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0639 062C 0645;;;;N;;;;; FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL; 0635 0645 0645;;;;N;;;;; FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL; 0633 062E 064A;;;;N;;;;; FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL; 0646 062C 064A;;;;N;;;;; FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0635 0644 06D2;;;;N;;;;; FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL; 0642 0644 06D2;;;;N;;;;; FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL; 0627 0644 0644 0647;;;;N;;;;; FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL; 0627 0643 0628 0631;;;;N;;;;; FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL; 0645 062D 0645 062F;;;;N;;;;; FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL; 0635 0644 0639 0645;;;;N;;;;; FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL; 0631 0633 0648 0644;;;;N;;;;; FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL; 0639 0644 064A 0647;;;;N;;;;; FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL; 0648 0633 0644 0645;;;;N;;;;; FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL; 0635 0644 0649;;;;N;;;;; FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645;;;;N;ARABIC LETTER SALLALLAHOU ALAYHE WASALLAM;;;; FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL; 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;; FDFC;RIAL SIGN;Sc;0;AL; 0631 06CC 0627 0644;;;;N;;;;; FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;; FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;; FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;; FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;; FE03;VARIATION SELECTOR-4;Mn;0;NSM;;;;;N;;;;; FE04;VARIATION SELECTOR-5;Mn;0;NSM;;;;;N;;;;; FE05;VARIATION SELECTOR-6;Mn;0;NSM;;;;;N;;;;; FE06;VARIATION SELECTOR-7;Mn;0;NSM;;;;;N;;;;; FE07;VARIATION SELECTOR-8;Mn;0;NSM;;;;;N;;;;; FE08;VARIATION SELECTOR-9;Mn;0;NSM;;;;;N;;;;; FE09;VARIATION SELECTOR-10;Mn;0;NSM;;;;;N;;;;; FE0A;VARIATION SELECTOR-11;Mn;0;NSM;;;;;N;;;;; FE0B;VARIATION SELECTOR-12;Mn;0;NSM;;;;;N;;;;; FE0C;VARIATION SELECTOR-13;Mn;0;NSM;;;;;N;;;;; FE0D;VARIATION SELECTOR-14;Mn;0;NSM;;;;;N;;;;; FE0E;VARIATION SELECTOR-15;Mn;0;NSM;;;;;N;;;;; FE0F;VARIATION SELECTOR-16;Mn;0;NSM;;;;;N;;;;; FE10;PRESENTATION FORM FOR VERTICAL COMMA;Po;0;ON; 002C;;;;N;;;;; FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;;;;; FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON; 003A;;;;N;;;;; FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON; 3016;;;;N;;;;; FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON; 3017;;;;N;;;;; FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON; 2026;;;;N;;;;; FE20;COMBINING LIGATURE LEFT HALF;Mn;230;NSM;;;;;N;;;;; FE21;COMBINING LIGATURE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; FE22;COMBINING DOUBLE TILDE LEFT HALF;Mn;230;NSM;;;;;N;;;;; FE23;COMBINING DOUBLE TILDE RIGHT HALF;Mn;230;NSM;;;;;N;;;;; FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON; 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;; FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON; 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;; FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON; 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;; FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;; FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON; 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;; FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;; FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;; FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;; FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;; FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;; FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;; FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON; 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;; FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON; 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;; FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON; 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;; FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON; 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;; FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON; 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;; FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON; 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;; FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;; FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;; FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON; 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;; FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON; 300F;;;;N;GLYPH FOR VERTICAL CLOSING WHITE CORNER BRACKET;;;; FE45;SESAME DOT;Po;0;ON;;;;;N;;;;; FE46;WHITE SESAME DOT;Po;0;ON;;;;;N;;;;; FE47;PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;N;;;;; FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;N;;;;; FE49;DASHED OVERLINE;Po;0;ON; 203E;;;;N;SPACING DASHED OVERSCORE;;;; FE4A;CENTRELINE OVERLINE;Po;0;ON; 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;; FE4B;WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING WAVY OVERSCORE;;;; FE4C;DOUBLE WAVY OVERLINE;Po;0;ON; 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;; FE4D;DASHED LOW LINE;Pc;0;ON; 005F;;;;N;SPACING DASHED UNDERSCORE;;;; FE4E;CENTRELINE LOW LINE;Pc;0;ON; 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;; FE4F;WAVY LOW LINE;Pc;0;ON; 005F;;;;N;SPACING WAVY UNDERSCORE;;;; FE50;SMALL COMMA;Po;0;CS; 002C;;;;N;;;;; FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; FE52;SMALL FULL STOP;Po;0;CS; 002E;;;;N;SMALL PERIOD;;;; FE54;SMALL SEMICOLON;Po;0;ON; 003B;;;;N;;;;; FE55;SMALL COLON;Po;0;CS; 003A;;;;N;;;;; FE56;SMALL QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; FE57;SMALL EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; FE58;SMALL EM DASH;Pd;0;ON; 2014;;;;N;;;;; FE59;SMALL LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;SMALL OPENING PARENTHESIS;;;; FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;; FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;; FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;; FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON; 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;; FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON; 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;; FE5F;SMALL NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; FE60;SMALL AMPERSAND;Po;0;ON; 0026;;;;N;;;;; FE61;SMALL ASTERISK;Po;0;ON; 002A;;;;N;;;;; FE62;SMALL PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; FE63;SMALL HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; FE64;SMALL LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; FE65;SMALL GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; FE66;SMALL EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; FE68;SMALL REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;SMALL BACKSLASH;;;; FE69;SMALL DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; FE6A;SMALL PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; FE6B;SMALL COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL; 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;; FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL; 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;; FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL; 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;; FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;; FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL; 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;; FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL; 0020 064E;;;;N;ARABIC SPACING FATHAH;;;; FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL; 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;; FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL; 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;; FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL; 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;; FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL; 0020 0650;;;;N;ARABIC SPACING KASRAH;;;; FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL; 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;; FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL; 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;; FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL; 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;; FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL; 0020 0652;;;;N;ARABIC SPACING SUKUN;;;; FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL; 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;; FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL; 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;; FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;; FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;; FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;; FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;; FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;; FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;; FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;; FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;; FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;; FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;; FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;; FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL; 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;; FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;; FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL; 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;; FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;; FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;; FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;; FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL; 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;; FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;; FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL; 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;; FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;; FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;; FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;; FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL; 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;; FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;; FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;; FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;; FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL; 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;; FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;; FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;; FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;; FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL; 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;; FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;; FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;; FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;; FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL; 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;; FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;; FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;; FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;; FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL; 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;; FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;; FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL; 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;; FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;; FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL; 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;; FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;; FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL; 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;; FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;; FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL; 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;; FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;; FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;; FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;; FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL; 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;; FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;; FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;; FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;; FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL; 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;; FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;; FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;; FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;; FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL; 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;; FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;; FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;; FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;; FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL; 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;; FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;; FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;; FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;; FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL; 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;; FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;; FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;; FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;; FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL; 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;; FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;; FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;; FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;; FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL; 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;; FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;; FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;; FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;; FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL; 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;; FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;; FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;; FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;; FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL; 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;; FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;; FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;; FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;; FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL; 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;; FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;; FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;; FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;; FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL; 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;; FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;; FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;; FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;; FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL; 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;; FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;; FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;; FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;; FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL; 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;; FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;; FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;; FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;; FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL; 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;; FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;; FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;; FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;; FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL; 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;; FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;; FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL; 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;; FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;; FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL; 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;; FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;; FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;; FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;; FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL; 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;; FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON LIGATURE LAM ALEF;;;; FEF6;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL; 0644 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON LIGATURE LAM ALEF;;;; FEF7;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; FEF8;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL; 0644 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON LIGATURE LAM ALEF;;;; FEF9;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; FEFA;ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL; 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;; FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;; FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL; 0644 0627;;;;N;GLYPH FOR FINAL ARABIC LIGATURE LAM ALEF;;;; FEFF;ZERO WIDTH NO-BREAK SPACE;Cf;0;BN;;;;;N;BYTE ORDER MARK;;;; FF01;FULLWIDTH EXCLAMATION MARK;Po;0;ON; 0021;;;;N;;;;; FF02;FULLWIDTH QUOTATION MARK;Po;0;ON; 0022;;;;N;;;;; FF03;FULLWIDTH NUMBER SIGN;Po;0;ET; 0023;;;;N;;;;; FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET; 0024;;;;N;;;;; FF05;FULLWIDTH PERCENT SIGN;Po;0;ET; 0025;;;;N;;;;; FF06;FULLWIDTH AMPERSAND;Po;0;ON; 0026;;;;N;;;;; FF07;FULLWIDTH APOSTROPHE;Po;0;ON; 0027;;;;N;;;;; FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON; 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;; FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON; 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;; FF0A;FULLWIDTH ASTERISK;Po;0;ON; 002A;;;;N;;;;; FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES; 002B;;;;N;;;;; FF0C;FULLWIDTH COMMA;Po;0;CS; 002C;;;;N;;;;; FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES; 002D;;;;N;;;;; FF0E;FULLWIDTH FULL STOP;Po;0;CS; 002E;;;;N;FULLWIDTH PERIOD;;;; FF0F;FULLWIDTH SOLIDUS;Po;0;CS; 002F;;;;N;FULLWIDTH SLASH;;;; FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; FF11;FULLWIDTH DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; FF12;FULLWIDTH DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; FF13;FULLWIDTH DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; FF16;FULLWIDTH DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; FF19;FULLWIDTH DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; FF1A;FULLWIDTH COLON;Po;0;CS; 003A;;;;N;;;;; FF1B;FULLWIDTH SEMICOLON;Po;0;ON; 003B;;;;N;;;;; FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON; 003C;;;;Y;;;;; FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON; 003D;;;;N;;;;; FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON; 003E;;;;Y;;;;; FF1F;FULLWIDTH QUESTION MARK;Po;0;ON; 003F;;;;N;;;;; FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON; 0040;;;;N;;;;; FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L; 0041;;;;N;;;;FF41; FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L; 0042;;;;N;;;;FF42; FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L; 0043;;;;N;;;;FF43; FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L; 0044;;;;N;;;;FF44; FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L; 0045;;;;N;;;;FF45; FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L; 0046;;;;N;;;;FF46; FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L; 0047;;;;N;;;;FF47; FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L; 0048;;;;N;;;;FF48; FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L; 0049;;;;N;;;;FF49; FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L; 004A;;;;N;;;;FF4A; FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L; 004B;;;;N;;;;FF4B; FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L; 004C;;;;N;;;;FF4C; FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L; 004D;;;;N;;;;FF4D; FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L; 004E;;;;N;;;;FF4E; FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L; 004F;;;;N;;;;FF4F; FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L; 0050;;;;N;;;;FF50; FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L; 0051;;;;N;;;;FF51; FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L; 0052;;;;N;;;;FF52; FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L; 0053;;;;N;;;;FF53; FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L; 0054;;;;N;;;;FF54; FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L; 0055;;;;N;;;;FF55; FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L; 0056;;;;N;;;;FF56; FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L; 0057;;;;N;;;;FF57; FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L; 0058;;;;N;;;;FF58; FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L; 0059;;;;N;;;;FF59; FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L; 005A;;;;N;;;;FF5A; FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON; 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;; FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON; 005C;;;;N;FULLWIDTH BACKSLASH;;;; FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON; 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;; FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON; 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;; FF3F;FULLWIDTH LOW LINE;Pc;0;ON; 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;; FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON; 0060;;;;N;FULLWIDTH SPACING GRAVE;;;; FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L; 0061;;;;N;;;FF21;;FF21 FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L; 0062;;;;N;;;FF22;;FF22 FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L; 0063;;;;N;;;FF23;;FF23 FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L; 0064;;;;N;;;FF24;;FF24 FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L; 0065;;;;N;;;FF25;;FF25 FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L; 0066;;;;N;;;FF26;;FF26 FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L; 0067;;;;N;;;FF27;;FF27 FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L; 0068;;;;N;;;FF28;;FF28 FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L; 0069;;;;N;;;FF29;;FF29 FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L; 006A;;;;N;;;FF2A;;FF2A FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L; 006B;;;;N;;;FF2B;;FF2B FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L; 006C;;;;N;;;FF2C;;FF2C FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L; 006D;;;;N;;;FF2D;;FF2D FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L; 006E;;;;N;;;FF2E;;FF2E FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L; 006F;;;;N;;;FF2F;;FF2F FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L; 0070;;;;N;;;FF30;;FF30 FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L; 0071;;;;N;;;FF31;;FF31 FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L; 0072;;;;N;;;FF32;;FF32 FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L; 0073;;;;N;;;FF33;;FF33 FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L; 0074;;;;N;;;FF34;;FF34 FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L; 0075;;;;N;;;FF35;;FF35 FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L; 0076;;;;N;;;FF36;;FF36 FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L; 0077;;;;N;;;FF37;;FF37 FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L; 0078;;;;N;;;FF38;;FF38 FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L; 0079;;;;N;;;FF39;;FF39 FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L; 007A;;;;N;;;FF3A;;FF3A FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON; 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;; FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON; 007C;;;;N;FULLWIDTH VERTICAL BAR;;;; FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON; 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;; FF5E;FULLWIDTH TILDE;Sm;0;ON; 007E;;;;N;FULLWIDTH SPACING TILDE;;;; FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON; 2985;;;;Y;;*;;; FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON; 2986;;;;Y;;*;;; FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON; 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;; FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON; 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;; FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON; 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;; FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON; 3001;;;;N;;;;; FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON; 30FB;;;;N;;;;; FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L; 30F2;;;;N;;;;; FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L; 30A1;;;;N;;;;; FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L; 30A3;;;;N;;;;; FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L; 30A5;;;;N;;;;; FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L; 30A7;;;;N;;;;; FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L; 30A9;;;;N;;;;; FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L; 30E3;;;;N;;;;; FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L; 30E5;;;;N;;;;; FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L; 30E7;;;;N;;;;; FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L; 30C3;;;;N;;;;; FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L; 30FC;;;;N;;;;; FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L; 30A2;;;;N;;;;; FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L; 30A4;;;;N;;;;; FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L; 30A6;;;;N;;;;; FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L; 30A8;;;;N;;;;; FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L; 30AA;;;;N;;;;; FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L; 30AB;;;;N;;;;; FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L; 30AD;;;;N;;;;; FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L; 30AF;;;;N;;;;; FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L; 30B1;;;;N;;;;; FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L; 30B3;;;;N;;;;; FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L; 30B5;;;;N;;;;; FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L; 30B7;;;;N;;;;; FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L; 30B9;;;;N;;;;; FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L; 30BB;;;;N;;;;; FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L; 30BD;;;;N;;;;; FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L; 30BF;;;;N;;;;; FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L; 30C1;;;;N;;;;; FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L; 30C4;;;;N;;;;; FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L; 30C6;;;;N;;;;; FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L; 30C8;;;;N;;;;; FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L; 30CA;;;;N;;;;; FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L; 30CB;;;;N;;;;; FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L; 30CC;;;;N;;;;; FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L; 30CD;;;;N;;;;; FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L; 30CE;;;;N;;;;; FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L; 30CF;;;;N;;;;; FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L; 30D2;;;;N;;;;; FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L; 30D5;;;;N;;;;; FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L; 30D8;;;;N;;;;; FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L; 30DB;;;;N;;;;; FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L; 30DE;;;;N;;;;; FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L; 30DF;;;;N;;;;; FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L; 30E0;;;;N;;;;; FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L; 30E1;;;;N;;;;; FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L; 30E2;;;;N;;;;; FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L; 30E4;;;;N;;;;; FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L; 30E6;;;;N;;;;; FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L; 30E8;;;;N;;;;; FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L; 30E9;;;;N;;;;; FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L; 30EA;;;;N;;;;; FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L; 30EB;;;;N;;;;; FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L; 30EC;;;;N;;;;; FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L; 30ED;;;;N;;;;; FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L; 30EF;;;;N;;;;; FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L; 30F3;;;;N;;;;; FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L; 3099;;;;N;;halfwidth katakana-hiragana voiced sound mark;;; FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L; 309A;;;;N;;halfwidth katakana-hiragana semi-voiced sound mark;;; FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L; 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;; FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L; 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;; FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L; 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;; FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L; 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;; FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L; 3134;;;;N;;;;; FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L; 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;; FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L; 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;; FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L; 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;; FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L; 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;; FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L; 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;; FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L; 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;; FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L; 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;; FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L; 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;; FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L; 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;; FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L; 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;; FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L; 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;; FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L; 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;; FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L; 3141;;;;N;;;;; FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L; 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;; FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L; 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;; FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L; 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;; FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L; 3145;;;;N;;;;; FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L; 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;; FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L; 3147;;;;N;;;;; FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L; 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;; FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L; 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;; FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L; 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;; FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L; 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;; FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L; 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;; FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L; 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;; FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L; 314E;;;;N;;;;; FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L; 314F;;;;N;;;;; FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L; 3150;;;;N;;;;; FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L; 3151;;;;N;;;;; FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L; 3152;;;;N;;;;; FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L; 3153;;;;N;;;;; FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L; 3154;;;;N;;;;; FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L; 3155;;;;N;;;;; FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L; 3156;;;;N;;;;; FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L; 3157;;;;N;;;;; FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L; 3158;;;;N;;;;; FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L; 3159;;;;N;;;;; FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L; 315A;;;;N;;;;; FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L; 315B;;;;N;;;;; FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L; 315C;;;;N;;;;; FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L; 315D;;;;N;;;;; FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L; 315E;;;;N;;;;; FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L; 315F;;;;N;;;;; FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L; 3160;;;;N;;;;; FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L; 3161;;;;N;;;;; FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L; 3162;;;;N;;;;; FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L; 3163;;;;N;;;;; FFE0;FULLWIDTH CENT SIGN;Sc;0;ET; 00A2;;;;N;;;;; FFE1;FULLWIDTH POUND SIGN;Sc;0;ET; 00A3;;;;N;;;;; FFE2;FULLWIDTH NOT SIGN;Sm;0;ON; 00AC;;;;N;;;;; FFE3;FULLWIDTH MACRON;Sk;0;ON; 00AF;;;;N;FULLWIDTH SPACING MACRON;*;;; FFE4;FULLWIDTH BROKEN BAR;So;0;ON; 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;; FFE5;FULLWIDTH YEN SIGN;Sc;0;ET; 00A5;;;;N;;;;; FFE6;FULLWIDTH WON SIGN;Sc;0;ET; 20A9;;;;N;;;;; FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON; 2502;;;;N;;;;; FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON; 2190;;;;N;;;;; FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON; 2191;;;;N;;;;; FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON; 2192;;;;N;;;;; FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON; 2193;;;;N;;;;; FFED;HALFWIDTH BLACK SQUARE;So;0;ON; 25A0;;;;N;;;;; FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON; 25CB;;;;N;;;;; FFF9;INTERLINEAR ANNOTATION ANCHOR;Cf;0;ON;;;;;N;;;;; FFFA;INTERLINEAR ANNOTATION SEPARATOR;Cf;0;ON;;;;;N;;;;; FFFB;INTERLINEAR ANNOTATION TERMINATOR;Cf;0;ON;;;;;N;;;;; FFFC;OBJECT REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;; 10000;LINEAR B SYLLABLE B008 A;Lo;0;L;;;;;N;;;;; 10001;LINEAR B SYLLABLE B038 E;Lo;0;L;;;;;N;;;;; 10002;LINEAR B SYLLABLE B028 I;Lo;0;L;;;;;N;;;;; 10003;LINEAR B SYLLABLE B061 O;Lo;0;L;;;;;N;;;;; 10004;LINEAR B SYLLABLE B010 U;Lo;0;L;;;;;N;;;;; 10005;LINEAR B SYLLABLE B001 DA;Lo;0;L;;;;;N;;;;; 10006;LINEAR B SYLLABLE B045 DE;Lo;0;L;;;;;N;;;;; 10007;LINEAR B SYLLABLE B007 DI;Lo;0;L;;;;;N;;;;; 10008;LINEAR B SYLLABLE B014 DO;Lo;0;L;;;;;N;;;;; 10009;LINEAR B SYLLABLE B051 DU;Lo;0;L;;;;;N;;;;; 1000A;LINEAR B SYLLABLE B057 JA;Lo;0;L;;;;;N;;;;; 1000B;LINEAR B SYLLABLE B046 JE;Lo;0;L;;;;;N;;;;; 1000D;LINEAR B SYLLABLE B036 JO;Lo;0;L;;;;;N;;;;; 1000E;LINEAR B SYLLABLE B065 JU;Lo;0;L;;;;;N;;;;; 1000F;LINEAR B SYLLABLE B077 KA;Lo;0;L;;;;;N;;;;; 10010;LINEAR B SYLLABLE B044 KE;Lo;0;L;;;;;N;;;;; 10011;LINEAR B SYLLABLE B067 KI;Lo;0;L;;;;;N;;;;; 10012;LINEAR B SYLLABLE B070 KO;Lo;0;L;;;;;N;;;;; 10013;LINEAR B SYLLABLE B081 KU;Lo;0;L;;;;;N;;;;; 10014;LINEAR B SYLLABLE B080 MA;Lo;0;L;;;;;N;;;;; 10015;LINEAR B SYLLABLE B013 ME;Lo;0;L;;;;;N;;;;; 10016;LINEAR B SYLLABLE B073 MI;Lo;0;L;;;;;N;;;;; 10017;LINEAR B SYLLABLE B015 MO;Lo;0;L;;;;;N;;;;; 10018;LINEAR B SYLLABLE B023 MU;Lo;0;L;;;;;N;;;;; 10019;LINEAR B SYLLABLE B006 NA;Lo;0;L;;;;;N;;;;; 1001A;LINEAR B SYLLABLE B024 NE;Lo;0;L;;;;;N;;;;; 1001B;LINEAR B SYLLABLE B030 NI;Lo;0;L;;;;;N;;;;; 1001C;LINEAR B SYLLABLE B052 NO;Lo;0;L;;;;;N;;;;; 1001D;LINEAR B SYLLABLE B055 NU;Lo;0;L;;;;;N;;;;; 1001E;LINEAR B SYLLABLE B003 PA;Lo;0;L;;;;;N;;;;; 1001F;LINEAR B SYLLABLE B072 PE;Lo;0;L;;;;;N;;;;; 10020;LINEAR B SYLLABLE B039 PI;Lo;0;L;;;;;N;;;;; 10021;LINEAR B SYLLABLE B011 PO;Lo;0;L;;;;;N;;;;; 10022;LINEAR B SYLLABLE B050 PU;Lo;0;L;;;;;N;;;;; 10023;LINEAR B SYLLABLE B016 QA;Lo;0;L;;;;;N;;;;; 10024;LINEAR B SYLLABLE B078 QE;Lo;0;L;;;;;N;;;;; 10025;LINEAR B SYLLABLE B021 QI;Lo;0;L;;;;;N;;;;; 10026;LINEAR B SYLLABLE B032 QO;Lo;0;L;;;;;N;;;;; 10028;LINEAR B SYLLABLE B060 RA;Lo;0;L;;;;;N;;;;; 10029;LINEAR B SYLLABLE B027 RE;Lo;0;L;;;;;N;;;;; 1002A;LINEAR B SYLLABLE B053 RI;Lo;0;L;;;;;N;;;;; 1002B;LINEAR B SYLLABLE B002 RO;Lo;0;L;;;;;N;;;;; 1002C;LINEAR B SYLLABLE B026 RU;Lo;0;L;;;;;N;;;;; 1002D;LINEAR B SYLLABLE B031 SA;Lo;0;L;;;;;N;;;;; 1002E;LINEAR B SYLLABLE B009 SE;Lo;0;L;;;;;N;;;;; 1002F;LINEAR B SYLLABLE B041 SI;Lo;0;L;;;;;N;;;;; 10030;LINEAR B SYLLABLE B012 SO;Lo;0;L;;;;;N;;;;; 10031;LINEAR B SYLLABLE B058 SU;Lo;0;L;;;;;N;;;;; 10032;LINEAR B SYLLABLE B059 TA;Lo;0;L;;;;;N;;;;; 10033;LINEAR B SYLLABLE B004 TE;Lo;0;L;;;;;N;;;;; 10034;LINEAR B SYLLABLE B037 TI;Lo;0;L;;;;;N;;;;; 10035;LINEAR B SYLLABLE B005 TO;Lo;0;L;;;;;N;;;;; 10036;LINEAR B SYLLABLE B069 TU;Lo;0;L;;;;;N;;;;; 10037;LINEAR B SYLLABLE B054 WA;Lo;0;L;;;;;N;;;;; 10038;LINEAR B SYLLABLE B075 WE;Lo;0;L;;;;;N;;;;; 10039;LINEAR B SYLLABLE B040 WI;Lo;0;L;;;;;N;;;;; 1003A;LINEAR B SYLLABLE B042 WO;Lo;0;L;;;;;N;;;;; 1003C;LINEAR B SYLLABLE B017 ZA;Lo;0;L;;;;;N;;;;; 1003D;LINEAR B SYLLABLE B074 ZE;Lo;0;L;;;;;N;;;;; 1003F;LINEAR B SYLLABLE B020 ZO;Lo;0;L;;;;;N;;;;; 10040;LINEAR B SYLLABLE B025 A2;Lo;0;L;;;;;N;;;;; 10041;LINEAR B SYLLABLE B043 A3;Lo;0;L;;;;;N;;;;; 10042;LINEAR B SYLLABLE B085 AU;Lo;0;L;;;;;N;;;;; 10043;LINEAR B SYLLABLE B071 DWE;Lo;0;L;;;;;N;;;;; 10044;LINEAR B SYLLABLE B090 DWO;Lo;0;L;;;;;N;;;;; 10045;LINEAR B SYLLABLE B048 NWA;Lo;0;L;;;;;N;;;;; 10046;LINEAR B SYLLABLE B029 PU2;Lo;0;L;;;;;N;;;;; 10047;LINEAR B SYLLABLE B062 PTE;Lo;0;L;;;;;N;;;;; 10048;LINEAR B SYLLABLE B076 RA2;Lo;0;L;;;;;N;;;;; 10049;LINEAR B SYLLABLE B033 RA3;Lo;0;L;;;;;N;;;;; 1004A;LINEAR B SYLLABLE B068 RO2;Lo;0;L;;;;;N;;;;; 1004B;LINEAR B SYLLABLE B066 TA2;Lo;0;L;;;;;N;;;;; 1004C;LINEAR B SYLLABLE B087 TWE;Lo;0;L;;;;;N;;;;; 1004D;LINEAR B SYLLABLE B091 TWO;Lo;0;L;;;;;N;;;;; 10050;LINEAR B SYMBOL B018;Lo;0;L;;;;;N;;;;; 10051;LINEAR B SYMBOL B019;Lo;0;L;;;;;N;;;;; 10052;LINEAR B SYMBOL B022;Lo;0;L;;;;;N;;;;; 10053;LINEAR B SYMBOL B034;Lo;0;L;;;;;N;;;;; 10054;LINEAR B SYMBOL B047;Lo;0;L;;;;;N;;;;; 10055;LINEAR B SYMBOL B049;Lo;0;L;;;;;N;;;;; 10056;LINEAR B SYMBOL B056;Lo;0;L;;;;;N;;;;; 10057;LINEAR B SYMBOL B063;Lo;0;L;;;;;N;;;;; 10058;LINEAR B SYMBOL B064;Lo;0;L;;;;;N;;;;; 10059;LINEAR B SYMBOL B079;Lo;0;L;;;;;N;;;;; 1005A;LINEAR B SYMBOL B082;Lo;0;L;;;;;N;;;;; 1005B;LINEAR B SYMBOL B083;Lo;0;L;;;;;N;;;;; 1005C;LINEAR B SYMBOL B086;Lo;0;L;;;;;N;;;;; 1005D;LINEAR B SYMBOL B089;Lo;0;L;;;;;N;;;;; 10080;LINEAR B IDEOGRAM B100 MAN;Lo;0;L;;;;;N;;;;; 10081;LINEAR B IDEOGRAM B102 WOMAN;Lo;0;L;;;;;N;;;;; 10082;LINEAR B IDEOGRAM B104 DEER;Lo;0;L;;;;;N;;;;; 10083;LINEAR B IDEOGRAM B105 EQUID;Lo;0;L;;;;;N;;;;; 10084;LINEAR B IDEOGRAM B105F MARE;Lo;0;L;;;;;N;;;;; 10085;LINEAR B IDEOGRAM B105M STALLION;Lo;0;L;;;;;N;;;;; 10086;LINEAR B IDEOGRAM B106F EWE;Lo;0;L;;;;;N;;;;; 10087;LINEAR B IDEOGRAM B106M RAM;Lo;0;L;;;;;N;;;;; 10088;LINEAR B IDEOGRAM B107F SHE-GOAT;Lo;0;L;;;;;N;;;;; 10089;LINEAR B IDEOGRAM B107M HE-GOAT;Lo;0;L;;;;;N;;;;; 1008A;LINEAR B IDEOGRAM B108F SOW;Lo;0;L;;;;;N;;;;; 1008B;LINEAR B IDEOGRAM B108M BOAR;Lo;0;L;;;;;N;;;;; 1008C;LINEAR B IDEOGRAM B109F COW;Lo;0;L;;;;;N;;;;; 1008D;LINEAR B IDEOGRAM B109M BULL;Lo;0;L;;;;;N;;;;; 1008E;LINEAR B IDEOGRAM B120 WHEAT;Lo;0;L;;;;;N;;;;; 1008F;LINEAR B IDEOGRAM B121 BARLEY;Lo;0;L;;;;;N;;;;; 10090;LINEAR B IDEOGRAM B122 OLIVE;Lo;0;L;;;;;N;;;;; 10091;LINEAR B IDEOGRAM B123 SPICE;Lo;0;L;;;;;N;;;;; 10092;LINEAR B IDEOGRAM B125 CYPERUS;Lo;0;L;;;;;N;;;;; 10093;LINEAR B MONOGRAM B127 KAPO;Lo;0;L;;;;;N;;;;; 10094;LINEAR B MONOGRAM B128 KANAKO;Lo;0;L;;;;;N;;;;; 10095;LINEAR B IDEOGRAM B130 OIL;Lo;0;L;;;;;N;;;;; 10096;LINEAR B IDEOGRAM B131 WINE;Lo;0;L;;;;;N;;;;; 10097;LINEAR B IDEOGRAM B132;Lo;0;L;;;;;N;;;;; 10098;LINEAR B MONOGRAM B133 AREPA;Lo;0;L;;;;;N;;;;; 10099;LINEAR B MONOGRAM B135 MERI;Lo;0;L;;;;;N;;;;; 1009A;LINEAR B IDEOGRAM B140 BRONZE;Lo;0;L;;;;;N;;;;; 1009B;LINEAR B IDEOGRAM B141 GOLD;Lo;0;L;;;;;N;;;;; 1009C;LINEAR B IDEOGRAM B142;Lo;0;L;;;;;N;;;;; 1009D;LINEAR B IDEOGRAM B145 WOOL;Lo;0;L;;;;;N;;;;; 1009E;LINEAR B IDEOGRAM B146;Lo;0;L;;;;;N;;;;; 1009F;LINEAR B IDEOGRAM B150;Lo;0;L;;;;;N;;;;; 100A0;LINEAR B IDEOGRAM B151 HORN;Lo;0;L;;;;;N;;;;; 100A1;LINEAR B IDEOGRAM B152;Lo;0;L;;;;;N;;;;; 100A2;LINEAR B IDEOGRAM B153;Lo;0;L;;;;;N;;;;; 100A3;LINEAR B IDEOGRAM B154;Lo;0;L;;;;;N;;;;; 100A4;LINEAR B MONOGRAM B156 TURO2;Lo;0;L;;;;;N;;;;; 100A5;LINEAR B IDEOGRAM B157;Lo;0;L;;;;;N;;;;; 100A6;LINEAR B IDEOGRAM B158;Lo;0;L;;;;;N;;;;; 100A7;LINEAR B IDEOGRAM B159 CLOTH;Lo;0;L;;;;;N;;;;; 100A8;LINEAR B IDEOGRAM B160;Lo;0;L;;;;;N;;;;; 100A9;LINEAR B IDEOGRAM B161;Lo;0;L;;;;;N;;;;; 100AA;LINEAR B IDEOGRAM B162 GARMENT;Lo;0;L;;;;;N;;;;; 100AB;LINEAR B IDEOGRAM B163 ARMOUR;Lo;0;L;;;;;N;;;;; 100AC;LINEAR B IDEOGRAM B164;Lo;0;L;;;;;N;;;;; 100AD;LINEAR B IDEOGRAM B165;Lo;0;L;;;;;N;;;;; 100AE;LINEAR B IDEOGRAM B166;Lo;0;L;;;;;N;;;;; 100AF;LINEAR B IDEOGRAM B167;Lo;0;L;;;;;N;;;;; 100B0;LINEAR B IDEOGRAM B168;Lo;0;L;;;;;N;;;;; 100B1;LINEAR B IDEOGRAM B169;Lo;0;L;;;;;N;;;;; 100B2;LINEAR B IDEOGRAM B170;Lo;0;L;;;;;N;;;;; 100B3;LINEAR B IDEOGRAM B171;Lo;0;L;;;;;N;;;;; 100B4;LINEAR B IDEOGRAM B172;Lo;0;L;;;;;N;;;;; 100B5;LINEAR B IDEOGRAM B173 MONTH;Lo;0;L;;;;;N;;;;; 100B6;LINEAR B IDEOGRAM B174;Lo;0;L;;;;;N;;;;; 100B7;LINEAR B IDEOGRAM B176 TREE;Lo;0;L;;;;;N;;;;; 100B8;LINEAR B IDEOGRAM B177;Lo;0;L;;;;;N;;;;; 100B9;LINEAR B IDEOGRAM B178;Lo;0;L;;;;;N;;;;; 100BA;LINEAR B IDEOGRAM B179;Lo;0;L;;;;;N;;;;; 100BB;LINEAR B IDEOGRAM B180;Lo;0;L;;;;;N;;;;; 100BC;LINEAR B IDEOGRAM B181;Lo;0;L;;;;;N;;;;; 100BD;LINEAR B IDEOGRAM B182;Lo;0;L;;;;;N;;;;; 100BE;LINEAR B IDEOGRAM B183;Lo;0;L;;;;;N;;;;; 100BF;LINEAR B IDEOGRAM B184;Lo;0;L;;;;;N;;;;; 100C0;LINEAR B IDEOGRAM B185;Lo;0;L;;;;;N;;;;; 100C1;LINEAR B IDEOGRAM B189;Lo;0;L;;;;;N;;;;; 100C2;LINEAR B IDEOGRAM B190;Lo;0;L;;;;;N;;;;; 100C3;LINEAR B IDEOGRAM B191 HELMET;Lo;0;L;;;;;N;;;;; 100C4;LINEAR B IDEOGRAM B220 FOOTSTOOL;Lo;0;L;;;;;N;;;;; 100C5;LINEAR B IDEOGRAM B225 BATHTUB;Lo;0;L;;;;;N;;;;; 100C6;LINEAR B IDEOGRAM B230 SPEAR;Lo;0;L;;;;;N;;;;; 100C7;LINEAR B IDEOGRAM B231 ARROW;Lo;0;L;;;;;N;;;;; 100C8;LINEAR B IDEOGRAM B232;Lo;0;L;;;;;N;;;;; 100C9;LINEAR B IDEOGRAM B233 SWORD;Lo;0;L;;;;;N;;pug;;; 100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;; 100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;gup;;; 100CC;LINEAR B IDEOGRAM B240 WHEELED CHARIOT;Lo;0;L;;;;;N;;;;; 100CD;LINEAR B IDEOGRAM B241 CHARIOT;Lo;0;L;;;;;N;;;;; 100CE;LINEAR B IDEOGRAM B242 CHARIOT FRAME;Lo;0;L;;;;;N;;;;; 100CF;LINEAR B IDEOGRAM B243 WHEEL;Lo;0;L;;;;;N;;;;; 100D0;LINEAR B IDEOGRAM B245;Lo;0;L;;;;;N;;;;; 100D1;LINEAR B IDEOGRAM B246;Lo;0;L;;;;;N;;;;; 100D2;LINEAR B MONOGRAM B247 DIPTE;Lo;0;L;;;;;N;;;;; 100D3;LINEAR B IDEOGRAM B248;Lo;0;L;;;;;N;;;;; 100D4;LINEAR B IDEOGRAM B249;Lo;0;L;;;;;N;;;;; 100D5;LINEAR B IDEOGRAM B251;Lo;0;L;;;;;N;;;;; 100D6;LINEAR B IDEOGRAM B252;Lo;0;L;;;;;N;;;;; 100D7;LINEAR B IDEOGRAM B253;Lo;0;L;;;;;N;;;;; 100D8;LINEAR B IDEOGRAM B254 DART;Lo;0;L;;;;;N;;;;; 100D9;LINEAR B IDEOGRAM B255;Lo;0;L;;;;;N;;;;; 100DA;LINEAR B IDEOGRAM B256;Lo;0;L;;;;;N;;;;; 100DB;LINEAR B IDEOGRAM B257;Lo;0;L;;;;;N;;;;; 100DC;LINEAR B IDEOGRAM B258;Lo;0;L;;;;;N;;;;; 100DD;LINEAR B IDEOGRAM B259;Lo;0;L;;;;;N;;;;; 100DE;LINEAR B IDEOGRAM VESSEL B155;Lo;0;L;;;;;N;;;;; 100DF;LINEAR B IDEOGRAM VESSEL B200;Lo;0;L;;;;;N;;;;; 100E0;LINEAR B IDEOGRAM VESSEL B201;Lo;0;L;;;;;N;;;;; 100E1;LINEAR B IDEOGRAM VESSEL B202;Lo;0;L;;;;;N;;;;; 100E2;LINEAR B IDEOGRAM VESSEL B203;Lo;0;L;;;;;N;;;;; 100E3;LINEAR B IDEOGRAM VESSEL B204;Lo;0;L;;;;;N;;;;; 100E4;LINEAR B IDEOGRAM VESSEL B205;Lo;0;L;;;;;N;;;;; 100E5;LINEAR B IDEOGRAM VESSEL B206;Lo;0;L;;;;;N;;;;; 100E6;LINEAR B IDEOGRAM VESSEL B207;Lo;0;L;;;;;N;;;;; 100E7;LINEAR B IDEOGRAM VESSEL B208;Lo;0;L;;;;;N;;;;; 100E8;LINEAR B IDEOGRAM VESSEL B209;Lo;0;L;;;;;N;;;;; 100E9;LINEAR B IDEOGRAM VESSEL B210;Lo;0;L;;;;;N;;;;; 100EA;LINEAR B IDEOGRAM VESSEL B211;Lo;0;L;;;;;N;;;;; 100EB;LINEAR B IDEOGRAM VESSEL B212;Lo;0;L;;;;;N;;;;; 100EC;LINEAR B IDEOGRAM VESSEL B213;Lo;0;L;;;;;N;;;;; 100ED;LINEAR B IDEOGRAM VESSEL B214;Lo;0;L;;;;;N;;;;; 100EE;LINEAR B IDEOGRAM VESSEL B215;Lo;0;L;;;;;N;;;;; 100EF;LINEAR B IDEOGRAM VESSEL B216;Lo;0;L;;;;;N;;;;; 100F0;LINEAR B IDEOGRAM VESSEL B217;Lo;0;L;;;;;N;;;;; 100F1;LINEAR B IDEOGRAM VESSEL B218;Lo;0;L;;;;;N;;;;; 100F2;LINEAR B IDEOGRAM VESSEL B219;Lo;0;L;;;;;N;;;;; 100F3;LINEAR B IDEOGRAM VESSEL B221;Lo;0;L;;;;;N;;;;; 100F4;LINEAR B IDEOGRAM VESSEL B222;Lo;0;L;;;;;N;;;;; 100F5;LINEAR B IDEOGRAM VESSEL B226;Lo;0;L;;;;;N;;;;; 100F6;LINEAR B IDEOGRAM VESSEL B227;Lo;0;L;;;;;N;;;;; 100F7;LINEAR B IDEOGRAM VESSEL B228;Lo;0;L;;;;;N;;;;; 100F8;LINEAR B IDEOGRAM VESSEL B229;Lo;0;L;;;;;N;;;;; 100F9;LINEAR B IDEOGRAM VESSEL B250;Lo;0;L;;;;;N;;;;; 100FA;LINEAR B IDEOGRAM VESSEL B305;Lo;0;L;;;;;N;;;;; 10100;AEGEAN WORD SEPARATOR LINE;Po;0;L;;;;;N;;;;; 10101;AEGEAN WORD SEPARATOR DOT;Po;0;ON;;;;;N;;;;; 10102;AEGEAN CHECK MARK;So;0;L;;;;;N;;;;; 10107;AEGEAN NUMBER ONE;No;0;L;;;;1;N;;;;; 10108;AEGEAN NUMBER TWO;No;0;L;;;;2;N;;;;; 10109;AEGEAN NUMBER THREE;No;0;L;;;;3;N;;;;; 1010A;AEGEAN NUMBER FOUR;No;0;L;;;;4;N;;;;; 1010B;AEGEAN NUMBER FIVE;No;0;L;;;;5;N;;;;; 1010C;AEGEAN NUMBER SIX;No;0;L;;;;6;N;;;;; 1010D;AEGEAN NUMBER SEVEN;No;0;L;;;;7;N;;;;; 1010E;AEGEAN NUMBER EIGHT;No;0;L;;;;8;N;;;;; 1010F;AEGEAN NUMBER NINE;No;0;L;;;;9;N;;;;; 10110;AEGEAN NUMBER TEN;No;0;L;;;;10;N;;;;; 10111;AEGEAN NUMBER TWENTY;No;0;L;;;;20;N;;;;; 10112;AEGEAN NUMBER THIRTY;No;0;L;;;;30;N;;;;; 10113;AEGEAN NUMBER FORTY;No;0;L;;;;40;N;;;;; 10114;AEGEAN NUMBER FIFTY;No;0;L;;;;50;N;;;;; 10115;AEGEAN NUMBER SIXTY;No;0;L;;;;60;N;;;;; 10116;AEGEAN NUMBER SEVENTY;No;0;L;;;;70;N;;;;; 10117;AEGEAN NUMBER EIGHTY;No;0;L;;;;80;N;;;;; 10118;AEGEAN NUMBER NINETY;No;0;L;;;;90;N;;;;; 10119;AEGEAN NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;; 1011A;AEGEAN NUMBER TWO HUNDRED;No;0;L;;;;200;N;;;;; 1011B;AEGEAN NUMBER THREE HUNDRED;No;0;L;;;;300;N;;;;; 1011C;AEGEAN NUMBER FOUR HUNDRED;No;0;L;;;;400;N;;;;; 1011D;AEGEAN NUMBER FIVE HUNDRED;No;0;L;;;;500;N;;;;; 1011E;AEGEAN NUMBER SIX HUNDRED;No;0;L;;;;600;N;;;;; 1011F;AEGEAN NUMBER SEVEN HUNDRED;No;0;L;;;;700;N;;;;; 10120;AEGEAN NUMBER EIGHT HUNDRED;No;0;L;;;;800;N;;;;; 10121;AEGEAN NUMBER NINE HUNDRED;No;0;L;;;;900;N;;;;; 10122;AEGEAN NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;; 10123;AEGEAN NUMBER TWO THOUSAND;No;0;L;;;;2000;N;;;;; 10124;AEGEAN NUMBER THREE THOUSAND;No;0;L;;;;3000;N;;;;; 10125;AEGEAN NUMBER FOUR THOUSAND;No;0;L;;;;4000;N;;;;; 10126;AEGEAN NUMBER FIVE THOUSAND;No;0;L;;;;5000;N;;;;; 10127;AEGEAN NUMBER SIX THOUSAND;No;0;L;;;;6000;N;;;;; 10128;AEGEAN NUMBER SEVEN THOUSAND;No;0;L;;;;7000;N;;;;; 10129;AEGEAN NUMBER EIGHT THOUSAND;No;0;L;;;;8000;N;;;;; 1012A;AEGEAN NUMBER NINE THOUSAND;No;0;L;;;;9000;N;;;;; 1012B;AEGEAN NUMBER TEN THOUSAND;No;0;L;;;;10000;N;;;;; 1012C;AEGEAN NUMBER TWENTY THOUSAND;No;0;L;;;;20000;N;;;;; 1012D;AEGEAN NUMBER THIRTY THOUSAND;No;0;L;;;;30000;N;;;;; 1012E;AEGEAN NUMBER FORTY THOUSAND;No;0;L;;;;40000;N;;;;; 1012F;AEGEAN NUMBER FIFTY THOUSAND;No;0;L;;;;50000;N;;;;; 10130;AEGEAN NUMBER SIXTY THOUSAND;No;0;L;;;;60000;N;;;;; 10131;AEGEAN NUMBER SEVENTY THOUSAND;No;0;L;;;;70000;N;;;;; 10132;AEGEAN NUMBER EIGHTY THOUSAND;No;0;L;;;;80000;N;;;;; 10133;AEGEAN NUMBER NINETY THOUSAND;No;0;L;;;;90000;N;;;;; 10137;AEGEAN WEIGHT BASE UNIT;So;0;L;;;;;N;;;;; 10138;AEGEAN WEIGHT FIRST SUBUNIT;So;0;L;;;;;N;;;;; 10139;AEGEAN WEIGHT SECOND SUBUNIT;So;0;L;;;;;N;;;;; 1013A;AEGEAN WEIGHT THIRD SUBUNIT;So;0;L;;;;;N;;;;; 1013B;AEGEAN WEIGHT FOURTH SUBUNIT;So;0;L;;;;;N;;;;; 1013C;AEGEAN DRY MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; 1013D;AEGEAN LIQUID MEASURE FIRST SUBUNIT;So;0;L;;;;;N;;;;; 1013E;AEGEAN MEASURE SECOND SUBUNIT;So;0;L;;;;;N;;;;; 1013F;AEGEAN MEASURE THIRD SUBUNIT;So;0;L;;;;;N;;;;; 10140;GREEK ACROPHONIC ATTIC ONE QUARTER;Nl;0;ON;;;;1/4;N;;;;; 10141;GREEK ACROPHONIC ATTIC ONE HALF;Nl;0;ON;;;;1/2;N;;;;; 10142;GREEK ACROPHONIC ATTIC ONE DRACHMA;Nl;0;ON;;;;1;N;;;;; 10143;GREEK ACROPHONIC ATTIC FIVE;Nl;0;ON;;;;5;N;;;;; 10144;GREEK ACROPHONIC ATTIC FIFTY;Nl;0;ON;;;;50;N;;;;; 10145;GREEK ACROPHONIC ATTIC FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; 10146;GREEK ACROPHONIC ATTIC FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; 10147;GREEK ACROPHONIC ATTIC FIFTY THOUSAND;Nl;0;ON;;;;50000;N;;;;; 10148;GREEK ACROPHONIC ATTIC FIVE TALENTS;Nl;0;ON;;;;5;N;;;;; 10149;GREEK ACROPHONIC ATTIC TEN TALENTS;Nl;0;ON;;;;10;N;;;;; 1014A;GREEK ACROPHONIC ATTIC FIFTY TALENTS;Nl;0;ON;;;;50;N;;;;; 1014B;GREEK ACROPHONIC ATTIC ONE HUNDRED TALENTS;Nl;0;ON;;;;100;N;;;;; 1014C;GREEK ACROPHONIC ATTIC FIVE HUNDRED TALENTS;Nl;0;ON;;;;500;N;;;;; 1014D;GREEK ACROPHONIC ATTIC ONE THOUSAND TALENTS;Nl;0;ON;;;;1000;N;;;;; 1014E;GREEK ACROPHONIC ATTIC FIVE THOUSAND TALENTS;Nl;0;ON;;;;5000;N;;;;; 1014F;GREEK ACROPHONIC ATTIC FIVE STATERS;Nl;0;ON;;;;5;N;;;;; 10150;GREEK ACROPHONIC ATTIC TEN STATERS;Nl;0;ON;;;;10;N;;;;; 10151;GREEK ACROPHONIC ATTIC FIFTY STATERS;Nl;0;ON;;;;50;N;;;;; 10152;GREEK ACROPHONIC ATTIC ONE HUNDRED STATERS;Nl;0;ON;;;;100;N;;;;; 10153;GREEK ACROPHONIC ATTIC FIVE HUNDRED STATERS;Nl;0;ON;;;;500;N;;;;; 10154;GREEK ACROPHONIC ATTIC ONE THOUSAND STATERS;Nl;0;ON;;;;1000;N;;;;; 10155;GREEK ACROPHONIC ATTIC TEN THOUSAND STATERS;Nl;0;ON;;;;10000;N;;;;; 10156;GREEK ACROPHONIC ATTIC FIFTY THOUSAND STATERS;Nl;0;ON;;;;50000;N;;;;; 10157;GREEK ACROPHONIC ATTIC TEN MNAS;Nl;0;ON;;;;10;N;;;;; 10158;GREEK ACROPHONIC HERAEUM ONE PLETHRON;Nl;0;ON;;;;1;N;;;;; 10159;GREEK ACROPHONIC THESPIAN ONE;Nl;0;ON;;;;1;N;;;;; 1015A;GREEK ACROPHONIC HERMIONIAN ONE;Nl;0;ON;;;;1;N;;;;; 1015B;GREEK ACROPHONIC EPIDAUREAN TWO;Nl;0;ON;;;;2;N;;;;; 1015C;GREEK ACROPHONIC THESPIAN TWO;Nl;0;ON;;;;2;N;;;;; 1015D;GREEK ACROPHONIC CYRENAIC TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; 1015E;GREEK ACROPHONIC EPIDAUREAN TWO DRACHMAS;Nl;0;ON;;;;2;N;;;;; 1015F;GREEK ACROPHONIC TROEZENIAN FIVE;Nl;0;ON;;;;5;N;;;;; 10160;GREEK ACROPHONIC TROEZENIAN TEN;Nl;0;ON;;;;10;N;;;;; 10161;GREEK ACROPHONIC TROEZENIAN TEN ALTERNATE FORM;Nl;0;ON;;;;10;N;;;;; 10162;GREEK ACROPHONIC HERMIONIAN TEN;Nl;0;ON;;;;10;N;;;;; 10163;GREEK ACROPHONIC MESSENIAN TEN;Nl;0;ON;;;;10;N;;;;; 10164;GREEK ACROPHONIC THESPIAN TEN;Nl;0;ON;;;;10;N;;;;; 10165;GREEK ACROPHONIC THESPIAN THIRTY;Nl;0;ON;;;;30;N;;;;; 10166;GREEK ACROPHONIC TROEZENIAN FIFTY;Nl;0;ON;;;;50;N;;;;; 10167;GREEK ACROPHONIC TROEZENIAN FIFTY ALTERNATE FORM;Nl;0;ON;;;;50;N;;;;; 10168;GREEK ACROPHONIC HERMIONIAN FIFTY;Nl;0;ON;;;;50;N;;;;; 10169;GREEK ACROPHONIC THESPIAN FIFTY;Nl;0;ON;;;;50;N;;;;; 1016A;GREEK ACROPHONIC THESPIAN ONE HUNDRED;Nl;0;ON;;;;100;N;;;;; 1016B;GREEK ACROPHONIC THESPIAN THREE HUNDRED;Nl;0;ON;;;;300;N;;;;; 1016C;GREEK ACROPHONIC EPIDAUREAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; 1016D;GREEK ACROPHONIC TROEZENIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; 1016E;GREEK ACROPHONIC THESPIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; 1016F;GREEK ACROPHONIC CARYSTIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; 10170;GREEK ACROPHONIC NAXIAN FIVE HUNDRED;Nl;0;ON;;;;500;N;;;;; 10171;GREEK ACROPHONIC THESPIAN ONE THOUSAND;Nl;0;ON;;;;1000;N;;;;; 10172;GREEK ACROPHONIC THESPIAN FIVE THOUSAND;Nl;0;ON;;;;5000;N;;;;; 10173;GREEK ACROPHONIC DELPHIC FIVE MNAS;Nl;0;ON;;;;5;N;;;;; 10174;GREEK ACROPHONIC STRATIAN FIFTY MNAS;Nl;0;ON;;;;50;N;;;;; 10175;GREEK ONE HALF SIGN;No;0;ON;;;;1/2;N;;;;; 10176;GREEK ONE HALF SIGN ALTERNATE FORM;No;0;ON;;;;1/2;N;;;;; 10177;GREEK TWO THIRDS SIGN;No;0;ON;;;;2/3;N;;;;; 10178;GREEK THREE QUARTERS SIGN;No;0;ON;;;;3/4;N;;;;; 10179;GREEK YEAR SIGN;So;0;ON;;;;;N;;;;; 1017A;GREEK TALENT SIGN;So;0;ON;;;;;N;;;;; 1017B;GREEK DRACHMA SIGN;So;0;ON;;;;;N;;;;; 1017C;GREEK OBOL SIGN;So;0;ON;;;;;N;;;;; 1017D;GREEK TWO OBOLS SIGN;So;0;ON;;;;;N;;;;; 1017E;GREEK THREE OBOLS SIGN;So;0;ON;;;;;N;;;;; 1017F;GREEK FOUR OBOLS SIGN;So;0;ON;;;;;N;;;;; 10180;GREEK FIVE OBOLS SIGN;So;0;ON;;;;;N;;;;; 10181;GREEK METRETES SIGN;So;0;ON;;;;;N;;;;; 10182;GREEK KYATHOS BASE SIGN;So;0;ON;;;;;N;;;;; 10183;GREEK LITRA SIGN;So;0;ON;;;;;N;;;;; 10184;GREEK OUNKIA SIGN;So;0;ON;;;;;N;;;;; 10185;GREEK XESTES SIGN;So;0;ON;;;;;N;;;;; 10186;GREEK ARTABE SIGN;So;0;ON;;;;;N;;;;; 10187;GREEK AROURA SIGN;So;0;ON;;;;;N;;;;; 10188;GREEK GRAMMA SIGN;So;0;ON;;;;;N;;;;; 10189;GREEK TRYBLION BASE SIGN;So;0;ON;;;;;N;;;;; 1018A;GREEK ZERO SIGN;No;0;ON;;;;0;N;;;;; 10300;OLD ITALIC LETTER A;Lo;0;L;;;;;N;;;;; 10301;OLD ITALIC LETTER BE;Lo;0;L;;;;;N;;;;; 10302;OLD ITALIC LETTER KE;Lo;0;L;;;;;N;;;;; 10303;OLD ITALIC LETTER DE;Lo;0;L;;;;;N;;;;; 10304;OLD ITALIC LETTER E;Lo;0;L;;;;;N;;;;; 10305;OLD ITALIC LETTER VE;Lo;0;L;;;;;N;;;;; 10306;OLD ITALIC LETTER ZE;Lo;0;L;;;;;N;;;;; 10307;OLD ITALIC LETTER HE;Lo;0;L;;;;;N;;;;; 10308;OLD ITALIC LETTER THE;Lo;0;L;;;;;N;;;;; 10309;OLD ITALIC LETTER I;Lo;0;L;;;;;N;;;;; 1030A;OLD ITALIC LETTER KA;Lo;0;L;;;;;N;;;;; 1030B;OLD ITALIC LETTER EL;Lo;0;L;;;;;N;;;;; 1030C;OLD ITALIC LETTER EM;Lo;0;L;;;;;N;;;;; 1030D;OLD ITALIC LETTER EN;Lo;0;L;;;;;N;;;;; 1030E;OLD ITALIC LETTER ESH;Lo;0;L;;;;;N;;;;; 1030F;OLD ITALIC LETTER O;Lo;0;L;;;;;N;;Faliscan;;; 10310;OLD ITALIC LETTER PE;Lo;0;L;;;;;N;;;;; 10311;OLD ITALIC LETTER SHE;Lo;0;L;;;;;N;;;;; 10312;OLD ITALIC LETTER KU;Lo;0;L;;;;;N;;;;; 10313;OLD ITALIC LETTER ER;Lo;0;L;;;;;N;;;;; 10314;OLD ITALIC LETTER ES;Lo;0;L;;;;;N;;;;; 10315;OLD ITALIC LETTER TE;Lo;0;L;;;;;N;;;;; 10316;OLD ITALIC LETTER U;Lo;0;L;;;;;N;;;;; 10317;OLD ITALIC LETTER EKS;Lo;0;L;;;;;N;;Faliscan;;; 10318;OLD ITALIC LETTER PHE;Lo;0;L;;;;;N;;;;; 10319;OLD ITALIC LETTER KHE;Lo;0;L;;;;;N;;;;; 1031A;OLD ITALIC LETTER EF;Lo;0;L;;;;;N;;;;; 1031B;OLD ITALIC LETTER ERS;Lo;0;L;;;;;N;;Umbrian;;; 1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;Umbrian;;; 1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;Oscan;;; 1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;Oscan;;; 10320;OLD ITALIC NUMERAL ONE;No;0;L;;;;1;N;;;;; 10321;OLD ITALIC NUMERAL FIVE;No;0;L;;;;5;N;;;;; 10322;OLD ITALIC NUMERAL TEN;No;0;L;;;;10;N;;;;; 10323;OLD ITALIC NUMERAL FIFTY;No;0;L;;;;50;N;;;;; 10330;GOTHIC LETTER AHSA;Lo;0;L;;;;;N;;;;; 10331;GOTHIC LETTER BAIRKAN;Lo;0;L;;;;;N;;;;; 10332;GOTHIC LETTER GIBA;Lo;0;L;;;;;N;;;;; 10333;GOTHIC LETTER DAGS;Lo;0;L;;;;;N;;;;; 10334;GOTHIC LETTER AIHVUS;Lo;0;L;;;;;N;;;;; 10335;GOTHIC LETTER QAIRTHRA;Lo;0;L;;;;;N;;;;; 10336;GOTHIC LETTER IUJA;Lo;0;L;;;;;N;;;;; 10337;GOTHIC LETTER HAGL;Lo;0;L;;;;;N;;;;; 10338;GOTHIC LETTER THIUTH;Lo;0;L;;;;;N;;;;; 10339;GOTHIC LETTER EIS;Lo;0;L;;;;;N;;;;; 1033A;GOTHIC LETTER KUSMA;Lo;0;L;;;;;N;;;;; 1033B;GOTHIC LETTER LAGUS;Lo;0;L;;;;;N;;;;; 1033C;GOTHIC LETTER MANNA;Lo;0;L;;;;;N;;;;; 1033D;GOTHIC LETTER NAUTHS;Lo;0;L;;;;;N;;;;; 1033E;GOTHIC LETTER JER;Lo;0;L;;;;;N;;;;; 1033F;GOTHIC LETTER URUS;Lo;0;L;;;;;N;;;;; 10340;GOTHIC LETTER PAIRTHRA;Lo;0;L;;;;;N;;;;; 10341;GOTHIC LETTER NINETY;Nl;0;L;;;;90;N;;;;; 10342;GOTHIC LETTER RAIDA;Lo;0;L;;;;;N;;;;; 10343;GOTHIC LETTER SAUIL;Lo;0;L;;;;;N;;;;; 10344;GOTHIC LETTER TEIWS;Lo;0;L;;;;;N;;;;; 10345;GOTHIC LETTER WINJA;Lo;0;L;;;;;N;;;;; 10346;GOTHIC LETTER FAIHU;Lo;0;L;;;;;N;;;;; 10347;GOTHIC LETTER IGGWS;Lo;0;L;;;;;N;;;;; 10348;GOTHIC LETTER HWAIR;Lo;0;L;;;;;N;;;;; 10349;GOTHIC LETTER OTHAL;Lo;0;L;;;;;N;;;;; 1034A;GOTHIC LETTER NINE HUNDRED;Nl;0;L;;;;900;N;;;;; 10380;UGARITIC LETTER ALPA;Lo;0;L;;;;;N;;;;; 10381;UGARITIC LETTER BETA;Lo;0;L;;;;;N;;;;; 10382;UGARITIC LETTER GAMLA;Lo;0;L;;;;;N;;;;; 10383;UGARITIC LETTER KHA;Lo;0;L;;;;;N;;;;; 10384;UGARITIC LETTER DELTA;Lo;0;L;;;;;N;;;;; 10385;UGARITIC LETTER HO;Lo;0;L;;;;;N;;;;; 10386;UGARITIC LETTER WO;Lo;0;L;;;;;N;;;;; 10387;UGARITIC LETTER ZETA;Lo;0;L;;;;;N;;;;; 10388;UGARITIC LETTER HOTA;Lo;0;L;;;;;N;;;;; 10389;UGARITIC LETTER TET;Lo;0;L;;;;;N;;;;; 1038A;UGARITIC LETTER YOD;Lo;0;L;;;;;N;;;;; 1038B;UGARITIC LETTER KAF;Lo;0;L;;;;;N;;;;; 1038C;UGARITIC LETTER SHIN;Lo;0;L;;;;;N;;;;; 1038D;UGARITIC LETTER LAMDA;Lo;0;L;;;;;N;;;;; 1038E;UGARITIC LETTER MEM;Lo;0;L;;;;;N;;;;; 1038F;UGARITIC LETTER DHAL;Lo;0;L;;;;;N;;;;; 10390;UGARITIC LETTER NUN;Lo;0;L;;;;;N;;;;; 10391;UGARITIC LETTER ZU;Lo;0;L;;;;;N;;;;; 10392;UGARITIC LETTER SAMKA;Lo;0;L;;;;;N;;;;; 10393;UGARITIC LETTER AIN;Lo;0;L;;;;;N;;;;; 10394;UGARITIC LETTER PU;Lo;0;L;;;;;N;;;;; 10395;UGARITIC LETTER SADE;Lo;0;L;;;;;N;;;;; 10396;UGARITIC LETTER QOPA;Lo;0;L;;;;;N;;;;; 10397;UGARITIC LETTER RASHA;Lo;0;L;;;;;N;;;;; 10398;UGARITIC LETTER THANNA;Lo;0;L;;;;;N;;;;; 10399;UGARITIC LETTER GHAIN;Lo;0;L;;;;;N;;;;; 1039A;UGARITIC LETTER TO;Lo;0;L;;;;;N;;;;; 1039B;UGARITIC LETTER I;Lo;0;L;;;;;N;;;;; 1039C;UGARITIC LETTER U;Lo;0;L;;;;;N;;;;; 1039D;UGARITIC LETTER SSU;Lo;0;L;;;;;N;;;;; 1039F;UGARITIC WORD DIVIDER;Po;0;L;;;;;N;;;;; 103A0;OLD PERSIAN SIGN A;Lo;0;L;;;;;N;;;;; 103A1;OLD PERSIAN SIGN I;Lo;0;L;;;;;N;;;;; 103A2;OLD PERSIAN SIGN U;Lo;0;L;;;;;N;;;;; 103A3;OLD PERSIAN SIGN KA;Lo;0;L;;;;;N;;;;; 103A4;OLD PERSIAN SIGN KU;Lo;0;L;;;;;N;;;;; 103A5;OLD PERSIAN SIGN GA;Lo;0;L;;;;;N;;;;; 103A6;OLD PERSIAN SIGN GU;Lo;0;L;;;;;N;;;;; 103A7;OLD PERSIAN SIGN XA;Lo;0;L;;;;;N;;;;; 103A8;OLD PERSIAN SIGN CA;Lo;0;L;;;;;N;;;;; 103A9;OLD PERSIAN SIGN JA;Lo;0;L;;;;;N;;;;; 103AA;OLD PERSIAN SIGN JI;Lo;0;L;;;;;N;;;;; 103AB;OLD PERSIAN SIGN TA;Lo;0;L;;;;;N;;;;; 103AC;OLD PERSIAN SIGN TU;Lo;0;L;;;;;N;;;;; 103AD;OLD PERSIAN SIGN DA;Lo;0;L;;;;;N;;;;; 103AE;OLD PERSIAN SIGN DI;Lo;0;L;;;;;N;;;;; 103AF;OLD PERSIAN SIGN DU;Lo;0;L;;;;;N;;;;; 103B0;OLD PERSIAN SIGN THA;Lo;0;L;;;;;N;;;;; 103B1;OLD PERSIAN SIGN PA;Lo;0;L;;;;;N;;;;; 103B2;OLD PERSIAN SIGN BA;Lo;0;L;;;;;N;;;;; 103B3;OLD PERSIAN SIGN FA;Lo;0;L;;;;;N;;;;; 103B4;OLD PERSIAN SIGN NA;Lo;0;L;;;;;N;;;;; 103B5;OLD PERSIAN SIGN NU;Lo;0;L;;;;;N;;;;; 103B6;OLD PERSIAN SIGN MA;Lo;0;L;;;;;N;;;;; 103B7;OLD PERSIAN SIGN MI;Lo;0;L;;;;;N;;;;; 103B8;OLD PERSIAN SIGN MU;Lo;0;L;;;;;N;;;;; 103B9;OLD PERSIAN SIGN YA;Lo;0;L;;;;;N;;;;; 103BA;OLD PERSIAN SIGN VA;Lo;0;L;;;;;N;;;;; 103BB;OLD PERSIAN SIGN VI;Lo;0;L;;;;;N;;;;; 103BC;OLD PERSIAN SIGN RA;Lo;0;L;;;;;N;;;;; 103BD;OLD PERSIAN SIGN RU;Lo;0;L;;;;;N;;;;; 103BE;OLD PERSIAN SIGN LA;Lo;0;L;;;;;N;;;;; 103BF;OLD PERSIAN SIGN SA;Lo;0;L;;;;;N;;;;; 103C0;OLD PERSIAN SIGN ZA;Lo;0;L;;;;;N;;;;; 103C1;OLD PERSIAN SIGN SHA;Lo;0;L;;;;;N;;;;; 103C2;OLD PERSIAN SIGN SSA;Lo;0;L;;;;;N;;;;; 103C3;OLD PERSIAN SIGN HA;Lo;0;L;;;;;N;;;;; 103C8;OLD PERSIAN SIGN AURAMAZDAA;Lo;0;L;;;;;N;;;;; 103C9;OLD PERSIAN SIGN AURAMAZDAA-2;Lo;0;L;;;;;N;;;;; 103CA;OLD PERSIAN SIGN AURAMAZDAAHA;Lo;0;L;;;;;N;;;;; 103CB;OLD PERSIAN SIGN XSHAAYATHIYA;Lo;0;L;;;;;N;;;;; 103CC;OLD PERSIAN SIGN DAHYAAUSH;Lo;0;L;;;;;N;;;;; 103CD;OLD PERSIAN SIGN DAHYAAUSH-2;Lo;0;L;;;;;N;;;;; 103CE;OLD PERSIAN SIGN BAGA;Lo;0;L;;;;;N;;;;; 103CF;OLD PERSIAN SIGN BUUMISH;Lo;0;L;;;;;N;;;;; 103D0;OLD PERSIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; 103D1;OLD PERSIAN NUMBER ONE;Nl;0;L;;;;1;N;;;;; 103D2;OLD PERSIAN NUMBER TWO;Nl;0;L;;;;2;N;;;;; 103D3;OLD PERSIAN NUMBER TEN;Nl;0;L;;;;10;N;;;;; 103D4;OLD PERSIAN NUMBER TWENTY;Nl;0;L;;;;20;N;;;;; 103D5;OLD PERSIAN NUMBER HUNDRED;Nl;0;L;;;;100;N;;;;; 10400;DESERET CAPITAL LETTER LONG I;Lu;0;L;;;;;N;;;;10428; 10401;DESERET CAPITAL LETTER LONG E;Lu;0;L;;;;;N;;;;10429; 10402;DESERET CAPITAL LETTER LONG A;Lu;0;L;;;;;N;;;;1042A; 10403;DESERET CAPITAL LETTER LONG AH;Lu;0;L;;;;;N;;;;1042B; 10404;DESERET CAPITAL LETTER LONG O;Lu;0;L;;;;;N;;;;1042C; 10405;DESERET CAPITAL LETTER LONG OO;Lu;0;L;;;;;N;;;;1042D; 10406;DESERET CAPITAL LETTER SHORT I;Lu;0;L;;;;;N;;;;1042E; 10407;DESERET CAPITAL LETTER SHORT E;Lu;0;L;;;;;N;;;;1042F; 10408;DESERET CAPITAL LETTER SHORT A;Lu;0;L;;;;;N;;;;10430; 10409;DESERET CAPITAL LETTER SHORT AH;Lu;0;L;;;;;N;;;;10431; 1040A;DESERET CAPITAL LETTER SHORT O;Lu;0;L;;;;;N;;;;10432; 1040B;DESERET CAPITAL LETTER SHORT OO;Lu;0;L;;;;;N;;;;10433; 1040C;DESERET CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;10434; 1040D;DESERET CAPITAL LETTER OW;Lu;0;L;;;;;N;;;;10435; 1040E;DESERET CAPITAL LETTER WU;Lu;0;L;;;;;N;;;;10436; 1040F;DESERET CAPITAL LETTER YEE;Lu;0;L;;;;;N;;;;10437; 10410;DESERET CAPITAL LETTER H;Lu;0;L;;;;;N;;;;10438; 10411;DESERET CAPITAL LETTER PEE;Lu;0;L;;;;;N;;;;10439; 10412;DESERET CAPITAL LETTER BEE;Lu;0;L;;;;;N;;;;1043A; 10413;DESERET CAPITAL LETTER TEE;Lu;0;L;;;;;N;;;;1043B; 10414;DESERET CAPITAL LETTER DEE;Lu;0;L;;;;;N;;;;1043C; 10415;DESERET CAPITAL LETTER CHEE;Lu;0;L;;;;;N;;;;1043D; 10416;DESERET CAPITAL LETTER JEE;Lu;0;L;;;;;N;;;;1043E; 10417;DESERET CAPITAL LETTER KAY;Lu;0;L;;;;;N;;;;1043F; 10418;DESERET CAPITAL LETTER GAY;Lu;0;L;;;;;N;;;;10440; 10419;DESERET CAPITAL LETTER EF;Lu;0;L;;;;;N;;;;10441; 1041A;DESERET CAPITAL LETTER VEE;Lu;0;L;;;;;N;;;;10442; 1041B;DESERET CAPITAL LETTER ETH;Lu;0;L;;;;;N;;;;10443; 1041C;DESERET CAPITAL LETTER THEE;Lu;0;L;;;;;N;;;;10444; 1041D;DESERET CAPITAL LETTER ES;Lu;0;L;;;;;N;;;;10445; 1041E;DESERET CAPITAL LETTER ZEE;Lu;0;L;;;;;N;;;;10446; 1041F;DESERET CAPITAL LETTER ESH;Lu;0;L;;;;;N;;;;10447; 10420;DESERET CAPITAL LETTER ZHEE;Lu;0;L;;;;;N;;;;10448; 10421;DESERET CAPITAL LETTER ER;Lu;0;L;;;;;N;;;;10449; 10422;DESERET CAPITAL LETTER EL;Lu;0;L;;;;;N;;;;1044A; 10423;DESERET CAPITAL LETTER EM;Lu;0;L;;;;;N;;;;1044B; 10424;DESERET CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;1044C; 10425;DESERET CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;1044D; 10426;DESERET CAPITAL LETTER OI;Lu;0;L;;;;;N;;;;1044E; 10427;DESERET CAPITAL LETTER EW;Lu;0;L;;;;;N;;;;1044F; 10428;DESERET SMALL LETTER LONG I;Ll;0;L;;;;;N;;;10400;;10400 10429;DESERET SMALL LETTER LONG E;Ll;0;L;;;;;N;;;10401;;10401 1042A;DESERET SMALL LETTER LONG A;Ll;0;L;;;;;N;;;10402;;10402 1042B;DESERET SMALL LETTER LONG AH;Ll;0;L;;;;;N;;;10403;;10403 1042C;DESERET SMALL LETTER LONG O;Ll;0;L;;;;;N;;;10404;;10404 1042D;DESERET SMALL LETTER LONG OO;Ll;0;L;;;;;N;;;10405;;10405 1042E;DESERET SMALL LETTER SHORT I;Ll;0;L;;;;;N;;;10406;;10406 1042F;DESERET SMALL LETTER SHORT E;Ll;0;L;;;;;N;;;10407;;10407 10430;DESERET SMALL LETTER SHORT A;Ll;0;L;;;;;N;;;10408;;10408 10431;DESERET SMALL LETTER SHORT AH;Ll;0;L;;;;;N;;;10409;;10409 10432;DESERET SMALL LETTER SHORT O;Ll;0;L;;;;;N;;;1040A;;1040A 10433;DESERET SMALL LETTER SHORT OO;Ll;0;L;;;;;N;;;1040B;;1040B 10434;DESERET SMALL LETTER AY;Ll;0;L;;;;;N;;;1040C;;1040C 10435;DESERET SMALL LETTER OW;Ll;0;L;;;;;N;;;1040D;;1040D 10436;DESERET SMALL LETTER WU;Ll;0;L;;;;;N;;;1040E;;1040E 10437;DESERET SMALL LETTER YEE;Ll;0;L;;;;;N;;;1040F;;1040F 10438;DESERET SMALL LETTER H;Ll;0;L;;;;;N;;;10410;;10410 10439;DESERET SMALL LETTER PEE;Ll;0;L;;;;;N;;;10411;;10411 1043A;DESERET SMALL LETTER BEE;Ll;0;L;;;;;N;;;10412;;10412 1043B;DESERET SMALL LETTER TEE;Ll;0;L;;;;;N;;;10413;;10413 1043C;DESERET SMALL LETTER DEE;Ll;0;L;;;;;N;;;10414;;10414 1043D;DESERET SMALL LETTER CHEE;Ll;0;L;;;;;N;;;10415;;10415 1043E;DESERET SMALL LETTER JEE;Ll;0;L;;;;;N;;;10416;;10416 1043F;DESERET SMALL LETTER KAY;Ll;0;L;;;;;N;;;10417;;10417 10440;DESERET SMALL LETTER GAY;Ll;0;L;;;;;N;;;10418;;10418 10441;DESERET SMALL LETTER EF;Ll;0;L;;;;;N;;;10419;;10419 10442;DESERET SMALL LETTER VEE;Ll;0;L;;;;;N;;;1041A;;1041A 10443;DESERET SMALL LETTER ETH;Ll;0;L;;;;;N;;;1041B;;1041B 10444;DESERET SMALL LETTER THEE;Ll;0;L;;;;;N;;;1041C;;1041C 10445;DESERET SMALL LETTER ES;Ll;0;L;;;;;N;;;1041D;;1041D 10446;DESERET SMALL LETTER ZEE;Ll;0;L;;;;;N;;;1041E;;1041E 10447;DESERET SMALL LETTER ESH;Ll;0;L;;;;;N;;;1041F;;1041F 10448;DESERET SMALL LETTER ZHEE;Ll;0;L;;;;;N;;;10420;;10420 10449;DESERET SMALL LETTER ER;Ll;0;L;;;;;N;;;10421;;10421 1044A;DESERET SMALL LETTER EL;Ll;0;L;;;;;N;;;10422;;10422 1044B;DESERET SMALL LETTER EM;Ll;0;L;;;;;N;;;10423;;10423 1044C;DESERET SMALL LETTER EN;Ll;0;L;;;;;N;;;10424;;10424 1044D;DESERET SMALL LETTER ENG;Ll;0;L;;;;;N;;;10425;;10425 1044E;DESERET SMALL LETTER OI;Ll;0;L;;;;;N;;;10426;;10426 1044F;DESERET SMALL LETTER EW;Ll;0;L;;;;;N;;;10427;;10427 10450;SHAVIAN LETTER PEEP;Lo;0;L;;;;;N;;;;; 10451;SHAVIAN LETTER TOT;Lo;0;L;;;;;N;;;;; 10452;SHAVIAN LETTER KICK;Lo;0;L;;;;;N;;;;; 10453;SHAVIAN LETTER FEE;Lo;0;L;;;;;N;;;;; 10454;SHAVIAN LETTER THIGH;Lo;0;L;;;;;N;;;;; 10455;SHAVIAN LETTER SO;Lo;0;L;;;;;N;;;;; 10456;SHAVIAN LETTER SURE;Lo;0;L;;;;;N;;;;; 10457;SHAVIAN LETTER CHURCH;Lo;0;L;;;;;N;;;;; 10458;SHAVIAN LETTER YEA;Lo;0;L;;;;;N;;;;; 10459;SHAVIAN LETTER HUNG;Lo;0;L;;;;;N;;;;; 1045A;SHAVIAN LETTER BIB;Lo;0;L;;;;;N;;;;; 1045B;SHAVIAN LETTER DEAD;Lo;0;L;;;;;N;;;;; 1045C;SHAVIAN LETTER GAG;Lo;0;L;;;;;N;;;;; 1045D;SHAVIAN LETTER VOW;Lo;0;L;;;;;N;;;;; 1045E;SHAVIAN LETTER THEY;Lo;0;L;;;;;N;;;;; 1045F;SHAVIAN LETTER ZOO;Lo;0;L;;;;;N;;;;; 10460;SHAVIAN LETTER MEASURE;Lo;0;L;;;;;N;;;;; 10461;SHAVIAN LETTER JUDGE;Lo;0;L;;;;;N;;;;; 10462;SHAVIAN LETTER WOE;Lo;0;L;;;;;N;;;;; 10463;SHAVIAN LETTER HA-HA;Lo;0;L;;;;;N;;;;; 10464;SHAVIAN LETTER LOLL;Lo;0;L;;;;;N;;;;; 10465;SHAVIAN LETTER MIME;Lo;0;L;;;;;N;;;;; 10466;SHAVIAN LETTER IF;Lo;0;L;;;;;N;;;;; 10467;SHAVIAN LETTER EGG;Lo;0;L;;;;;N;;;;; 10468;SHAVIAN LETTER ASH;Lo;0;L;;;;;N;;;;; 10469;SHAVIAN LETTER ADO;Lo;0;L;;;;;N;;;;; 1046A;SHAVIAN LETTER ON;Lo;0;L;;;;;N;;;;; 1046B;SHAVIAN LETTER WOOL;Lo;0;L;;;;;N;;;;; 1046C;SHAVIAN LETTER OUT;Lo;0;L;;;;;N;;;;; 1046D;SHAVIAN LETTER AH;Lo;0;L;;;;;N;;;;; 1046E;SHAVIAN LETTER ROAR;Lo;0;L;;;;;N;;;;; 1046F;SHAVIAN LETTER NUN;Lo;0;L;;;;;N;;;;; 10470;SHAVIAN LETTER EAT;Lo;0;L;;;;;N;;;;; 10471;SHAVIAN LETTER AGE;Lo;0;L;;;;;N;;;;; 10472;SHAVIAN LETTER ICE;Lo;0;L;;;;;N;;;;; 10473;SHAVIAN LETTER UP;Lo;0;L;;;;;N;;;;; 10474;SHAVIAN LETTER OAK;Lo;0;L;;;;;N;;;;; 10475;SHAVIAN LETTER OOZE;Lo;0;L;;;;;N;;;;; 10476;SHAVIAN LETTER OIL;Lo;0;L;;;;;N;;;;; 10477;SHAVIAN LETTER AWE;Lo;0;L;;;;;N;;;;; 10478;SHAVIAN LETTER ARE;Lo;0;L;;;;;N;;;;; 10479;SHAVIAN LETTER OR;Lo;0;L;;;;;N;;;;; 1047A;SHAVIAN LETTER AIR;Lo;0;L;;;;;N;;;;; 1047B;SHAVIAN LETTER ERR;Lo;0;L;;;;;N;;;;; 1047C;SHAVIAN LETTER ARRAY;Lo;0;L;;;;;N;;;;; 1047D;SHAVIAN LETTER EAR;Lo;0;L;;;;;N;;;;; 1047E;SHAVIAN LETTER IAN;Lo;0;L;;;;;N;;;;; 1047F;SHAVIAN LETTER YEW;Lo;0;L;;;;;N;;;;; 10480;OSMANYA LETTER ALEF;Lo;0;L;;;;;N;;;;; 10481;OSMANYA LETTER BA;Lo;0;L;;;;;N;;;;; 10482;OSMANYA LETTER TA;Lo;0;L;;;;;N;;;;; 10483;OSMANYA LETTER JA;Lo;0;L;;;;;N;;;;; 10484;OSMANYA LETTER XA;Lo;0;L;;;;;N;;;;; 10485;OSMANYA LETTER KHA;Lo;0;L;;;;;N;;;;; 10486;OSMANYA LETTER DEEL;Lo;0;L;;;;;N;;;;; 10487;OSMANYA LETTER RA;Lo;0;L;;;;;N;;;;; 10488;OSMANYA LETTER SA;Lo;0;L;;;;;N;;;;; 10489;OSMANYA LETTER SHIIN;Lo;0;L;;;;;N;;;;; 1048A;OSMANYA LETTER DHA;Lo;0;L;;;;;N;;;;; 1048B;OSMANYA LETTER CAYN;Lo;0;L;;;;;N;;;;; 1048C;OSMANYA LETTER GA;Lo;0;L;;;;;N;;;;; 1048D;OSMANYA LETTER FA;Lo;0;L;;;;;N;;;;; 1048E;OSMANYA LETTER QAAF;Lo;0;L;;;;;N;;;;; 1048F;OSMANYA LETTER KAAF;Lo;0;L;;;;;N;;;;; 10490;OSMANYA LETTER LAAN;Lo;0;L;;;;;N;;;;; 10491;OSMANYA LETTER MIIN;Lo;0;L;;;;;N;;;;; 10492;OSMANYA LETTER NUUN;Lo;0;L;;;;;N;;;;; 10493;OSMANYA LETTER WAW;Lo;0;L;;;;;N;;;;; 10494;OSMANYA LETTER HA;Lo;0;L;;;;;N;;;;; 10495;OSMANYA LETTER YA;Lo;0;L;;;;;N;;;;; 10496;OSMANYA LETTER A;Lo;0;L;;;;;N;;;;; 10497;OSMANYA LETTER E;Lo;0;L;;;;;N;;;;; 10498;OSMANYA LETTER I;Lo;0;L;;;;;N;;;;; 10499;OSMANYA LETTER O;Lo;0;L;;;;;N;;;;; 1049A;OSMANYA LETTER U;Lo;0;L;;;;;N;;;;; 1049B;OSMANYA LETTER AA;Lo;0;L;;;;;N;;;;; 1049C;OSMANYA LETTER EE;Lo;0;L;;;;;N;;;;; 1049D;OSMANYA LETTER OO;Lo;0;L;;;;;N;;;;; 104A0;OSMANYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;; 104A1;OSMANYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;; 104A2;OSMANYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;; 104A3;OSMANYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;; 104A4;OSMANYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;; 104A5;OSMANYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;; 104A6;OSMANYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;; 104A7;OSMANYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;; 104A8;OSMANYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;; 104A9;OSMANYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;; 10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;; 10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;; 10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;; 10803;CYPRIOT SYLLABLE O;Lo;0;R;;;;;N;;;;; 10804;CYPRIOT SYLLABLE U;Lo;0;R;;;;;N;;;;; 10805;CYPRIOT SYLLABLE JA;Lo;0;R;;;;;N;;;;; 10808;CYPRIOT SYLLABLE JO;Lo;0;R;;;;;N;;;;; 1080A;CYPRIOT SYLLABLE KA;Lo;0;R;;;;;N;;;;; 1080B;CYPRIOT SYLLABLE KE;Lo;0;R;;;;;N;;;;; 1080C;CYPRIOT SYLLABLE KI;Lo;0;R;;;;;N;;;;; 1080D;CYPRIOT SYLLABLE KO;Lo;0;R;;;;;N;;;;; 1080E;CYPRIOT SYLLABLE KU;Lo;0;R;;;;;N;;;;; 1080F;CYPRIOT SYLLABLE LA;Lo;0;R;;;;;N;;;;; 10810;CYPRIOT SYLLABLE LE;Lo;0;R;;;;;N;;;;; 10811;CYPRIOT SYLLABLE LI;Lo;0;R;;;;;N;;;;; 10812;CYPRIOT SYLLABLE LO;Lo;0;R;;;;;N;;;;; 10813;CYPRIOT SYLLABLE LU;Lo;0;R;;;;;N;;;;; 10814;CYPRIOT SYLLABLE MA;Lo;0;R;;;;;N;;;;; 10815;CYPRIOT SYLLABLE ME;Lo;0;R;;;;;N;;;;; 10816;CYPRIOT SYLLABLE MI;Lo;0;R;;;;;N;;;;; 10817;CYPRIOT SYLLABLE MO;Lo;0;R;;;;;N;;;;; 10818;CYPRIOT SYLLABLE MU;Lo;0;R;;;;;N;;;;; 10819;CYPRIOT SYLLABLE NA;Lo;0;R;;;;;N;;;;; 1081A;CYPRIOT SYLLABLE NE;Lo;0;R;;;;;N;;;;; 1081B;CYPRIOT SYLLABLE NI;Lo;0;R;;;;;N;;;;; 1081C;CYPRIOT SYLLABLE NO;Lo;0;R;;;;;N;;;;; 1081D;CYPRIOT SYLLABLE NU;Lo;0;R;;;;;N;;;;; 1081E;CYPRIOT SYLLABLE PA;Lo;0;R;;;;;N;;;;; 1081F;CYPRIOT SYLLABLE PE;Lo;0;R;;;;;N;;;;; 10820;CYPRIOT SYLLABLE PI;Lo;0;R;;;;;N;;;;; 10821;CYPRIOT SYLLABLE PO;Lo;0;R;;;;;N;;;;; 10822;CYPRIOT SYLLABLE PU;Lo;0;R;;;;;N;;;;; 10823;CYPRIOT SYLLABLE RA;Lo;0;R;;;;;N;;;;; 10824;CYPRIOT SYLLABLE RE;Lo;0;R;;;;;N;;;;; 10825;CYPRIOT SYLLABLE RI;Lo;0;R;;;;;N;;;;; 10826;CYPRIOT SYLLABLE RO;Lo;0;R;;;;;N;;;;; 10827;CYPRIOT SYLLABLE RU;Lo;0;R;;;;;N;;;;; 10828;CYPRIOT SYLLABLE SA;Lo;0;R;;;;;N;;;;; 10829;CYPRIOT SYLLABLE SE;Lo;0;R;;;;;N;;;;; 1082A;CYPRIOT SYLLABLE SI;Lo;0;R;;;;;N;;;;; 1082B;CYPRIOT SYLLABLE SO;Lo;0;R;;;;;N;;;;; 1082C;CYPRIOT SYLLABLE SU;Lo;0;R;;;;;N;;;;; 1082D;CYPRIOT SYLLABLE TA;Lo;0;R;;;;;N;;;;; 1082E;CYPRIOT SYLLABLE TE;Lo;0;R;;;;;N;;;;; 1082F;CYPRIOT SYLLABLE TI;Lo;0;R;;;;;N;;;;; 10830;CYPRIOT SYLLABLE TO;Lo;0;R;;;;;N;;;;; 10831;CYPRIOT SYLLABLE TU;Lo;0;R;;;;;N;;;;; 10832;CYPRIOT SYLLABLE WA;Lo;0;R;;;;;N;;;;; 10833;CYPRIOT SYLLABLE WE;Lo;0;R;;;;;N;;;;; 10834;CYPRIOT SYLLABLE WI;Lo;0;R;;;;;N;;;;; 10835;CYPRIOT SYLLABLE WO;Lo;0;R;;;;;N;;;;; 10837;CYPRIOT SYLLABLE XA;Lo;0;R;;;;;N;;;;; 10838;CYPRIOT SYLLABLE XE;Lo;0;R;;;;;N;;;;; 1083C;CYPRIOT SYLLABLE ZA;Lo;0;R;;;;;N;;;;; 1083F;CYPRIOT SYLLABLE ZO;Lo;0;R;;;;;N;;;;; 10900;PHOENICIAN LETTER ALF;Lo;0;R;;;;;N;;;;; 10901;PHOENICIAN LETTER BET;Lo;0;R;;;;;N;;;;; 10902;PHOENICIAN LETTER GAML;Lo;0;R;;;;;N;;;;; 10903;PHOENICIAN LETTER DELT;Lo;0;R;;;;;N;;;;; 10904;PHOENICIAN LETTER HE;Lo;0;R;;;;;N;;;;; 10905;PHOENICIAN LETTER WAU;Lo;0;R;;;;;N;;;;; 10906;PHOENICIAN LETTER ZAI;Lo;0;R;;;;;N;;;;; 10907;PHOENICIAN LETTER HET;Lo;0;R;;;;;N;;;;; 10908;PHOENICIAN LETTER TET;Lo;0;R;;;;;N;;;;; 10909;PHOENICIAN LETTER YOD;Lo;0;R;;;;;N;;;;; 1090A;PHOENICIAN LETTER KAF;Lo;0;R;;;;;N;;;;; 1090B;PHOENICIAN LETTER LAMD;Lo;0;R;;;;;N;;;;; 1090C;PHOENICIAN LETTER MEM;Lo;0;R;;;;;N;;;;; 1090D;PHOENICIAN LETTER NUN;Lo;0;R;;;;;N;;;;; 1090E;PHOENICIAN LETTER SEMK;Lo;0;R;;;;;N;;;;; 1090F;PHOENICIAN LETTER AIN;Lo;0;R;;;;;N;;;;; 10910;PHOENICIAN LETTER PE;Lo;0;R;;;;;N;;;;; 10911;PHOENICIAN LETTER SADE;Lo;0;R;;;;;N;;;;; 10912;PHOENICIAN LETTER QOF;Lo;0;R;;;;;N;;;;; 10913;PHOENICIAN LETTER ROSH;Lo;0;R;;;;;N;;;;; 10914;PHOENICIAN LETTER SHIN;Lo;0;R;;;;;N;;;;; 10915;PHOENICIAN LETTER TAU;Lo;0;R;;;;;N;;;;; 10916;PHOENICIAN NUMBER ONE;No;0;R;;;;1;N;;;;; 10917;PHOENICIAN NUMBER TEN;No;0;R;;;;10;N;;;;; 10918;PHOENICIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;; 10919;PHOENICIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; 1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;; 10A00;KHAROSHTHI LETTER A;Lo;0;R;;;;;N;;;;; 10A01;KHAROSHTHI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;; 10A02;KHAROSHTHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;; 10A03;KHAROSHTHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;; 10A05;KHAROSHTHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;; 10A06;KHAROSHTHI VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;; 10A0C;KHAROSHTHI VOWEL LENGTH MARK;Mn;0;NSM;;;;;N;;;;; 10A0D;KHAROSHTHI SIGN DOUBLE RING BELOW;Mn;220;NSM;;;;;N;;;;; 10A0E;KHAROSHTHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;; 10A0F;KHAROSHTHI SIGN VISARGA;Mn;230;NSM;;;;;N;;;;; 10A10;KHAROSHTHI LETTER KA;Lo;0;R;;;;;N;;;;; 10A11;KHAROSHTHI LETTER KHA;Lo;0;R;;;;;N;;;;; 10A12;KHAROSHTHI LETTER GA;Lo;0;R;;;;;N;;;;; 10A13;KHAROSHTHI LETTER GHA;Lo;0;R;;;;;N;;;;; 10A15;KHAROSHTHI LETTER CA;Lo;0;R;;;;;N;;;;; 10A16;KHAROSHTHI LETTER CHA;Lo;0;R;;;;;N;;;;; 10A17;KHAROSHTHI LETTER JA;Lo;0;R;;;;;N;;;;; 10A19;KHAROSHTHI LETTER NYA;Lo;0;R;;;;;N;;;;; 10A1A;KHAROSHTHI LETTER TTA;Lo;0;R;;;;;N;;;;; 10A1B;KHAROSHTHI LETTER TTHA;Lo;0;R;;;;;N;;;;; 10A1C;KHAROSHTHI LETTER DDA;Lo;0;R;;;;;N;;;;; 10A1D;KHAROSHTHI LETTER DDHA;Lo;0;R;;;;;N;;;;; 10A1E;KHAROSHTHI LETTER NNA;Lo;0;R;;;;;N;;;;; 10A1F;KHAROSHTHI LETTER TA;Lo;0;R;;;;;N;;;;; 10A20;KHAROSHTHI LETTER THA;Lo;0;R;;;;;N;;;;; 10A21;KHAROSHTHI LETTER DA;Lo;0;R;;;;;N;;;;; 10A22;KHAROSHTHI LETTER DHA;Lo;0;R;;;;;N;;;;; 10A23;KHAROSHTHI LETTER NA;Lo;0;R;;;;;N;;;;; 10A24;KHAROSHTHI LETTER PA;Lo;0;R;;;;;N;;;;; 10A25;KHAROSHTHI LETTER PHA;Lo;0;R;;;;;N;;;;; 10A26;KHAROSHTHI LETTER BA;Lo;0;R;;;;;N;;;;; 10A27;KHAROSHTHI LETTER BHA;Lo;0;R;;;;;N;;;;; 10A28;KHAROSHTHI LETTER MA;Lo;0;R;;;;;N;;;;; 10A29;KHAROSHTHI LETTER YA;Lo;0;R;;;;;N;;;;; 10A2A;KHAROSHTHI LETTER RA;Lo;0;R;;;;;N;;;;; 10A2B;KHAROSHTHI LETTER LA;Lo;0;R;;;;;N;;;;; 10A2C;KHAROSHTHI LETTER VA;Lo;0;R;;;;;N;;;;; 10A2D;KHAROSHTHI LETTER SHA;Lo;0;R;;;;;N;;;;; 10A2E;KHAROSHTHI LETTER SSA;Lo;0;R;;;;;N;;;;; 10A2F;KHAROSHTHI LETTER SA;Lo;0;R;;;;;N;;;;; 10A30;KHAROSHTHI LETTER ZA;Lo;0;R;;;;;N;;;;; 10A31;KHAROSHTHI LETTER HA;Lo;0;R;;;;;N;;;;; 10A32;KHAROSHTHI LETTER KKA;Lo;0;R;;;;;N;;;;; 10A33;KHAROSHTHI LETTER TTTHA;Lo;0;R;;;;;N;;;;; 10A38;KHAROSHTHI SIGN BAR ABOVE;Mn;230;NSM;;;;;N;;;;; 10A39;KHAROSHTHI SIGN CAUDA;Mn;1;NSM;;;;;N;;;;; 10A3A;KHAROSHTHI SIGN DOT BELOW;Mn;220;NSM;;;;;N;;;;; 10A3F;KHAROSHTHI VIRAMA;Mn;9;NSM;;;;;N;;;;; 10A40;KHAROSHTHI DIGIT ONE;No;0;R;;;1;1;N;;;;; 10A41;KHAROSHTHI DIGIT TWO;No;0;R;;;2;2;N;;;;; 10A42;KHAROSHTHI DIGIT THREE;No;0;R;;;3;3;N;;;;; 10A43;KHAROSHTHI DIGIT FOUR;No;0;R;;;4;4;N;;;;; 10A44;KHAROSHTHI NUMBER TEN;No;0;R;;;;10;N;;;;; 10A45;KHAROSHTHI NUMBER TWENTY;No;0;R;;;;20;N;;;;; 10A46;KHAROSHTHI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;; 10A47;KHAROSHTHI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;; 10A50;KHAROSHTHI PUNCTUATION DOT;Po;0;R;;;;;N;;;;; 10A51;KHAROSHTHI PUNCTUATION SMALL CIRCLE;Po;0;R;;;;;N;;;;; 10A52;KHAROSHTHI PUNCTUATION CIRCLE;Po;0;R;;;;;N;;;;; 10A53;KHAROSHTHI PUNCTUATION CRESCENT BAR;Po;0;R;;;;;N;;;;; 10A54;KHAROSHTHI PUNCTUATION MANGALAM;Po;0;R;;;;;N;;;;; 10A55;KHAROSHTHI PUNCTUATION LOTUS;Po;0;R;;;;;N;;;;; 10A56;KHAROSHTHI PUNCTUATION DANDA;Po;0;R;;;;;N;;;;; 10A57;KHAROSHTHI PUNCTUATION DOUBLE DANDA;Po;0;R;;;;;N;;;;; 10A58;KHAROSHTHI PUNCTUATION LINES;Po;0;R;;;;;N;;;;; 12000;CUNEIFORM SIGN A;Lo;0;L;;;;;N;;;;; 12001;CUNEIFORM SIGN A TIMES A;Lo;0;L;;;;;N;;;;; 12002;CUNEIFORM SIGN A TIMES BAD;Lo;0;L;;;;;N;;;;; 12003;CUNEIFORM SIGN A TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 12004;CUNEIFORM SIGN A TIMES HA;Lo;0;L;;;;;N;;;;; 12005;CUNEIFORM SIGN A TIMES IGI;Lo;0;L;;;;;N;;;;; 12006;CUNEIFORM SIGN A TIMES LAGAR GUNU;Lo;0;L;;;;;N;;;;; 12007;CUNEIFORM SIGN A TIMES MUSH;Lo;0;L;;;;;N;;;;; 12008;CUNEIFORM SIGN A TIMES SAG;Lo;0;L;;;;;N;;;;; 12009;CUNEIFORM SIGN A2;Lo;0;L;;;;;N;;;;; 1200A;CUNEIFORM SIGN AB;Lo;0;L;;;;;N;;;;; 1200B;CUNEIFORM SIGN AB TIMES ASH2;Lo;0;L;;;;;N;;;;; 1200C;CUNEIFORM SIGN AB TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; 1200D;CUNEIFORM SIGN AB TIMES GAL;Lo;0;L;;;;;N;;;;; 1200E;CUNEIFORM SIGN AB TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 1200F;CUNEIFORM SIGN AB TIMES HA;Lo;0;L;;;;;N;;;;; 12010;CUNEIFORM SIGN AB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 12011;CUNEIFORM SIGN AB TIMES IMIN;Lo;0;L;;;;;N;;;;; 12012;CUNEIFORM SIGN AB TIMES LAGAB;Lo;0;L;;;;;N;;;;; 12013;CUNEIFORM SIGN AB TIMES SHESH;Lo;0;L;;;;;N;;;;; 12014;CUNEIFORM SIGN AB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; 12015;CUNEIFORM SIGN AB GUNU;Lo;0;L;;;;;N;;;;; 12016;CUNEIFORM SIGN AB2;Lo;0;L;;;;;N;;;;; 12017;CUNEIFORM SIGN AB2 TIMES BALAG;Lo;0;L;;;;;N;;;;; 12018;CUNEIFORM SIGN AB2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 12019;CUNEIFORM SIGN AB2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; 1201A;CUNEIFORM SIGN AB2 TIMES SHA3;Lo;0;L;;;;;N;;;;; 1201B;CUNEIFORM SIGN AB2 TIMES TAK4;Lo;0;L;;;;;N;;;;; 1201C;CUNEIFORM SIGN AD;Lo;0;L;;;;;N;;;;; 1201D;CUNEIFORM SIGN AK;Lo;0;L;;;;;N;;;;; 1201E;CUNEIFORM SIGN AK TIMES ERIN2;Lo;0;L;;;;;N;;;;; 1201F;CUNEIFORM SIGN AK TIMES SHITA PLUS GISH;Lo;0;L;;;;;N;;;;; 12020;CUNEIFORM SIGN AL;Lo;0;L;;;;;N;;;;; 12021;CUNEIFORM SIGN AL TIMES AL;Lo;0;L;;;;;N;;;;; 12022;CUNEIFORM SIGN AL TIMES DIM2;Lo;0;L;;;;;N;;;;; 12023;CUNEIFORM SIGN AL TIMES GISH;Lo;0;L;;;;;N;;;;; 12024;CUNEIFORM SIGN AL TIMES HA;Lo;0;L;;;;;N;;;;; 12025;CUNEIFORM SIGN AL TIMES KAD3;Lo;0;L;;;;;N;;;;; 12026;CUNEIFORM SIGN AL TIMES KI;Lo;0;L;;;;;N;;;;; 12027;CUNEIFORM SIGN AL TIMES SHE;Lo;0;L;;;;;N;;;;; 12028;CUNEIFORM SIGN AL TIMES USH;Lo;0;L;;;;;N;;;;; 12029;CUNEIFORM SIGN ALAN;Lo;0;L;;;;;N;;;;; 1202A;CUNEIFORM SIGN ALEPH;Lo;0;L;;;;;N;;;;; 1202B;CUNEIFORM SIGN AMAR;Lo;0;L;;;;;N;;;;; 1202C;CUNEIFORM SIGN AMAR TIMES SHE;Lo;0;L;;;;;N;;;;; 1202D;CUNEIFORM SIGN AN;Lo;0;L;;;;;N;;;;; 1202E;CUNEIFORM SIGN AN OVER AN;Lo;0;L;;;;;N;;;;; 1202F;CUNEIFORM SIGN AN THREE TIMES;Lo;0;L;;;;;N;;;;; 12030;CUNEIFORM SIGN AN PLUS NAGA OPPOSING AN PLUS NAGA;Lo;0;L;;;;;N;;;;; 12031;CUNEIFORM SIGN AN PLUS NAGA SQUARED;Lo;0;L;;;;;N;;;;; 12032;CUNEIFORM SIGN ANSHE;Lo;0;L;;;;;N;;;;; 12033;CUNEIFORM SIGN APIN;Lo;0;L;;;;;N;;;;; 12034;CUNEIFORM SIGN ARAD;Lo;0;L;;;;;N;;;;; 12035;CUNEIFORM SIGN ARAD TIMES KUR;Lo;0;L;;;;;N;;;;; 12036;CUNEIFORM SIGN ARKAB;Lo;0;L;;;;;N;;;;; 12037;CUNEIFORM SIGN ASAL2;Lo;0;L;;;;;N;;;;; 12038;CUNEIFORM SIGN ASH;Lo;0;L;;;;;N;;;;; 12039;CUNEIFORM SIGN ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; 1203A;CUNEIFORM SIGN ASH KABA TENU;Lo;0;L;;;;;N;;;;; 1203B;CUNEIFORM SIGN ASH OVER ASH TUG2 OVER TUG2 TUG2 OVER TUG2 PAP;Lo;0;L;;;;;N;;;;; 1203C;CUNEIFORM SIGN ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; 1203D;CUNEIFORM SIGN ASH OVER ASH OVER ASH CROSSING ASH OVER ASH OVER ASH;Lo;0;L;;;;;N;;;;; 1203E;CUNEIFORM SIGN ASH2;Lo;0;L;;;;;N;;;;; 1203F;CUNEIFORM SIGN ASHGAB;Lo;0;L;;;;;N;;;;; 12040;CUNEIFORM SIGN BA;Lo;0;L;;;;;N;;;;; 12041;CUNEIFORM SIGN BAD;Lo;0;L;;;;;N;;;;; 12042;CUNEIFORM SIGN BAG3;Lo;0;L;;;;;N;;;;; 12043;CUNEIFORM SIGN BAHAR2;Lo;0;L;;;;;N;;;;; 12044;CUNEIFORM SIGN BAL;Lo;0;L;;;;;N;;;;; 12045;CUNEIFORM SIGN BAL OVER BAL;Lo;0;L;;;;;N;;;;; 12046;CUNEIFORM SIGN BALAG;Lo;0;L;;;;;N;;;;; 12047;CUNEIFORM SIGN BAR;Lo;0;L;;;;;N;;;;; 12048;CUNEIFORM SIGN BARA2;Lo;0;L;;;;;N;;;;; 12049;CUNEIFORM SIGN BI;Lo;0;L;;;;;N;;;;; 1204A;CUNEIFORM SIGN BI TIMES A;Lo;0;L;;;;;N;;;;; 1204B;CUNEIFORM SIGN BI TIMES GAR;Lo;0;L;;;;;N;;;;; 1204C;CUNEIFORM SIGN BI TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 1204D;CUNEIFORM SIGN BU;Lo;0;L;;;;;N;;;;; 1204E;CUNEIFORM SIGN BU OVER BU AB;Lo;0;L;;;;;N;;;;; 1204F;CUNEIFORM SIGN BU OVER BU UN;Lo;0;L;;;;;N;;;;; 12050;CUNEIFORM SIGN BU CROSSING BU;Lo;0;L;;;;;N;;;;; 12051;CUNEIFORM SIGN BULUG;Lo;0;L;;;;;N;;;;; 12052;CUNEIFORM SIGN BULUG OVER BULUG;Lo;0;L;;;;;N;;;;; 12053;CUNEIFORM SIGN BUR;Lo;0;L;;;;;N;;;;; 12054;CUNEIFORM SIGN BUR2;Lo;0;L;;;;;N;;;;; 12055;CUNEIFORM SIGN DA;Lo;0;L;;;;;N;;;;; 12056;CUNEIFORM SIGN DAG;Lo;0;L;;;;;N;;;;; 12057;CUNEIFORM SIGN DAG KISIM5 TIMES A PLUS MASH;Lo;0;L;;;;;N;;;;; 12058;CUNEIFORM SIGN DAG KISIM5 TIMES AMAR;Lo;0;L;;;;;N;;;;; 12059;CUNEIFORM SIGN DAG KISIM5 TIMES BALAG;Lo;0;L;;;;;N;;;;; 1205A;CUNEIFORM SIGN DAG KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; 1205B;CUNEIFORM SIGN DAG KISIM5 TIMES GA;Lo;0;L;;;;;N;;;;; 1205C;CUNEIFORM SIGN DAG KISIM5 TIMES GA PLUS MASH;Lo;0;L;;;;;N;;;;; 1205D;CUNEIFORM SIGN DAG KISIM5 TIMES GI;Lo;0;L;;;;;N;;;;; 1205E;CUNEIFORM SIGN DAG KISIM5 TIMES GIR2;Lo;0;L;;;;;N;;;;; 1205F;CUNEIFORM SIGN DAG KISIM5 TIMES GUD;Lo;0;L;;;;;N;;;;; 12060;CUNEIFORM SIGN DAG KISIM5 TIMES HA;Lo;0;L;;;;;N;;;;; 12061;CUNEIFORM SIGN DAG KISIM5 TIMES IR;Lo;0;L;;;;;N;;;;; 12062;CUNEIFORM SIGN DAG KISIM5 TIMES IR PLUS LU;Lo;0;L;;;;;N;;;;; 12063;CUNEIFORM SIGN DAG KISIM5 TIMES KAK;Lo;0;L;;;;;N;;;;; 12064;CUNEIFORM SIGN DAG KISIM5 TIMES LA;Lo;0;L;;;;;N;;;;; 12065;CUNEIFORM SIGN DAG KISIM5 TIMES LU;Lo;0;L;;;;;N;;;;; 12066;CUNEIFORM SIGN DAG KISIM5 TIMES LU PLUS MASH2;Lo;0;L;;;;;N;;;;; 12067;CUNEIFORM SIGN DAG KISIM5 TIMES LUM;Lo;0;L;;;;;N;;;;; 12068;CUNEIFORM SIGN DAG KISIM5 TIMES NE;Lo;0;L;;;;;N;;;;; 12069;CUNEIFORM SIGN DAG KISIM5 TIMES PAP PLUS PAP;Lo;0;L;;;;;N;;;;; 1206A;CUNEIFORM SIGN DAG KISIM5 TIMES SI;Lo;0;L;;;;;N;;;;; 1206B;CUNEIFORM SIGN DAG KISIM5 TIMES TAK4;Lo;0;L;;;;;N;;;;; 1206C;CUNEIFORM SIGN DAG KISIM5 TIMES U2 PLUS GIR2;Lo;0;L;;;;;N;;;;; 1206D;CUNEIFORM SIGN DAG KISIM5 TIMES USH;Lo;0;L;;;;;N;;;;; 1206E;CUNEIFORM SIGN DAM;Lo;0;L;;;;;N;;;;; 1206F;CUNEIFORM SIGN DAR;Lo;0;L;;;;;N;;;;; 12070;CUNEIFORM SIGN DARA3;Lo;0;L;;;;;N;;;;; 12071;CUNEIFORM SIGN DARA4;Lo;0;L;;;;;N;;;;; 12072;CUNEIFORM SIGN DI;Lo;0;L;;;;;N;;;;; 12073;CUNEIFORM SIGN DIB;Lo;0;L;;;;;N;;;;; 12074;CUNEIFORM SIGN DIM;Lo;0;L;;;;;N;;;;; 12075;CUNEIFORM SIGN DIM TIMES SHE;Lo;0;L;;;;;N;;;;; 12076;CUNEIFORM SIGN DIM2;Lo;0;L;;;;;N;;;;; 12077;CUNEIFORM SIGN DIN;Lo;0;L;;;;;N;;;;; 12078;CUNEIFORM SIGN DIN KASKAL U GUNU DISH;Lo;0;L;;;;;N;;;;; 12079;CUNEIFORM SIGN DISH;Lo;0;L;;;;;N;;;;; 1207A;CUNEIFORM SIGN DU;Lo;0;L;;;;;N;;;;; 1207B;CUNEIFORM SIGN DU OVER DU;Lo;0;L;;;;;N;;;;; 1207C;CUNEIFORM SIGN DU GUNU;Lo;0;L;;;;;N;;;;; 1207D;CUNEIFORM SIGN DU SHESHIG;Lo;0;L;;;;;N;;;;; 1207E;CUNEIFORM SIGN DUB;Lo;0;L;;;;;N;;;;; 1207F;CUNEIFORM SIGN DUB TIMES ESH2;Lo;0;L;;;;;N;;;;; 12080;CUNEIFORM SIGN DUB2;Lo;0;L;;;;;N;;;;; 12081;CUNEIFORM SIGN DUG;Lo;0;L;;;;;N;;;;; 12082;CUNEIFORM SIGN DUGUD;Lo;0;L;;;;;N;;;;; 12083;CUNEIFORM SIGN DUH;Lo;0;L;;;;;N;;;;; 12084;CUNEIFORM SIGN DUN;Lo;0;L;;;;;N;;;;; 12085;CUNEIFORM SIGN DUN3;Lo;0;L;;;;;N;;;;; 12086;CUNEIFORM SIGN DUN3 GUNU;Lo;0;L;;;;;N;;;;; 12087;CUNEIFORM SIGN DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; 12088;CUNEIFORM SIGN DUN4;Lo;0;L;;;;;N;;;;; 12089;CUNEIFORM SIGN DUR2;Lo;0;L;;;;;N;;;;; 1208A;CUNEIFORM SIGN E;Lo;0;L;;;;;N;;;;; 1208B;CUNEIFORM SIGN E TIMES PAP;Lo;0;L;;;;;N;;;;; 1208C;CUNEIFORM SIGN E OVER E NUN OVER NUN;Lo;0;L;;;;;N;;;;; 1208D;CUNEIFORM SIGN E2;Lo;0;L;;;;;N;;;;; 1208E;CUNEIFORM SIGN E2 TIMES A PLUS HA PLUS DA;Lo;0;L;;;;;N;;;;; 1208F;CUNEIFORM SIGN E2 TIMES GAR;Lo;0;L;;;;;N;;;;; 12090;CUNEIFORM SIGN E2 TIMES MI;Lo;0;L;;;;;N;;;;; 12091;CUNEIFORM SIGN E2 TIMES SAL;Lo;0;L;;;;;N;;;;; 12092;CUNEIFORM SIGN E2 TIMES SHE;Lo;0;L;;;;;N;;;;; 12093;CUNEIFORM SIGN E2 TIMES U;Lo;0;L;;;;;N;;;;; 12094;CUNEIFORM SIGN EDIN;Lo;0;L;;;;;N;;;;; 12095;CUNEIFORM SIGN EGIR;Lo;0;L;;;;;N;;;;; 12096;CUNEIFORM SIGN EL;Lo;0;L;;;;;N;;;;; 12097;CUNEIFORM SIGN EN;Lo;0;L;;;;;N;;;;; 12098;CUNEIFORM SIGN EN TIMES GAN2;Lo;0;L;;;;;N;;;;; 12099;CUNEIFORM SIGN EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 1209A;CUNEIFORM SIGN EN TIMES ME;Lo;0;L;;;;;N;;;;; 1209B;CUNEIFORM SIGN EN CROSSING EN;Lo;0;L;;;;;N;;;;; 1209C;CUNEIFORM SIGN EN OPPOSING EN;Lo;0;L;;;;;N;;;;; 1209D;CUNEIFORM SIGN EN SQUARED;Lo;0;L;;;;;N;;;;; 1209E;CUNEIFORM SIGN EREN;Lo;0;L;;;;;N;;;;; 1209F;CUNEIFORM SIGN ERIN2;Lo;0;L;;;;;N;;;;; 120A0;CUNEIFORM SIGN ESH2;Lo;0;L;;;;;N;;;;; 120A1;CUNEIFORM SIGN EZEN;Lo;0;L;;;;;N;;;;; 120A2;CUNEIFORM SIGN EZEN TIMES A;Lo;0;L;;;;;N;;;;; 120A3;CUNEIFORM SIGN EZEN TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; 120A4;CUNEIFORM SIGN EZEN TIMES A PLUS LAL TIMES LAL;Lo;0;L;;;;;N;;;;; 120A5;CUNEIFORM SIGN EZEN TIMES AN;Lo;0;L;;;;;N;;;;; 120A6;CUNEIFORM SIGN EZEN TIMES BAD;Lo;0;L;;;;;N;;;;; 120A7;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU;Lo;0;L;;;;;N;;;;; 120A8;CUNEIFORM SIGN EZEN TIMES DUN3 GUNU GUNU;Lo;0;L;;;;;N;;;;; 120A9;CUNEIFORM SIGN EZEN TIMES HA;Lo;0;L;;;;;N;;;;; 120AA;CUNEIFORM SIGN EZEN TIMES HA GUNU;Lo;0;L;;;;;N;;;;; 120AB;CUNEIFORM SIGN EZEN TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 120AC;CUNEIFORM SIGN EZEN TIMES KASKAL;Lo;0;L;;;;;N;;;;; 120AD;CUNEIFORM SIGN EZEN TIMES KASKAL SQUARED;Lo;0;L;;;;;N;;;;; 120AE;CUNEIFORM SIGN EZEN TIMES KU3;Lo;0;L;;;;;N;;;;; 120AF;CUNEIFORM SIGN EZEN TIMES LA;Lo;0;L;;;;;N;;;;; 120B0;CUNEIFORM SIGN EZEN TIMES LAL TIMES LAL;Lo;0;L;;;;;N;;;;; 120B1;CUNEIFORM SIGN EZEN TIMES LI;Lo;0;L;;;;;N;;;;; 120B2;CUNEIFORM SIGN EZEN TIMES LU;Lo;0;L;;;;;N;;;;; 120B3;CUNEIFORM SIGN EZEN TIMES U2;Lo;0;L;;;;;N;;;;; 120B4;CUNEIFORM SIGN EZEN TIMES UD;Lo;0;L;;;;;N;;;;; 120B5;CUNEIFORM SIGN GA;Lo;0;L;;;;;N;;;;; 120B6;CUNEIFORM SIGN GA GUNU;Lo;0;L;;;;;N;;;;; 120B7;CUNEIFORM SIGN GA2;Lo;0;L;;;;;N;;;;; 120B8;CUNEIFORM SIGN GA2 TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; 120B9;CUNEIFORM SIGN GA2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; 120BA;CUNEIFORM SIGN GA2 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; 120BB;CUNEIFORM SIGN GA2 TIMES AB2 TENU PLUS TAB;Lo;0;L;;;;;N;;;;; 120BC;CUNEIFORM SIGN GA2 TIMES AN;Lo;0;L;;;;;N;;;;; 120BD;CUNEIFORM SIGN GA2 TIMES ASH;Lo;0;L;;;;;N;;;;; 120BE;CUNEIFORM SIGN GA2 TIMES ASH2 PLUS GAL;Lo;0;L;;;;;N;;;;; 120BF;CUNEIFORM SIGN GA2 TIMES BAD;Lo;0;L;;;;;N;;;;; 120C0;CUNEIFORM SIGN GA2 TIMES BAR PLUS RA;Lo;0;L;;;;;N;;;;; 120C1;CUNEIFORM SIGN GA2 TIMES BUR;Lo;0;L;;;;;N;;;;; 120C2;CUNEIFORM SIGN GA2 TIMES BUR PLUS RA;Lo;0;L;;;;;N;;;;; 120C3;CUNEIFORM SIGN GA2 TIMES DA;Lo;0;L;;;;;N;;;;; 120C4;CUNEIFORM SIGN GA2 TIMES DI;Lo;0;L;;;;;N;;;;; 120C5;CUNEIFORM SIGN GA2 TIMES DIM TIMES SHE;Lo;0;L;;;;;N;;;;; 120C6;CUNEIFORM SIGN GA2 TIMES DUB;Lo;0;L;;;;;N;;;;; 120C7;CUNEIFORM SIGN GA2 TIMES EL;Lo;0;L;;;;;N;;;;; 120C8;CUNEIFORM SIGN GA2 TIMES EL PLUS LA;Lo;0;L;;;;;N;;;;; 120C9;CUNEIFORM SIGN GA2 TIMES EN;Lo;0;L;;;;;N;;;;; 120CA;CUNEIFORM SIGN GA2 TIMES EN TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 120CB;CUNEIFORM SIGN GA2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 120CC;CUNEIFORM SIGN GA2 TIMES GAR;Lo;0;L;;;;;N;;;;; 120CD;CUNEIFORM SIGN GA2 TIMES GI;Lo;0;L;;;;;N;;;;; 120CE;CUNEIFORM SIGN GA2 TIMES GI4;Lo;0;L;;;;;N;;;;; 120CF;CUNEIFORM SIGN GA2 TIMES GI4 PLUS A;Lo;0;L;;;;;N;;;;; 120D0;CUNEIFORM SIGN GA2 TIMES GIR2 PLUS SU;Lo;0;L;;;;;N;;;;; 120D1;CUNEIFORM SIGN GA2 TIMES HA PLUS LU PLUS ESH2;Lo;0;L;;;;;N;;;;; 120D2;CUNEIFORM SIGN GA2 TIMES HAL;Lo;0;L;;;;;N;;;;; 120D3;CUNEIFORM SIGN GA2 TIMES HAL PLUS LA;Lo;0;L;;;;;N;;;;; 120D4;CUNEIFORM SIGN GA2 TIMES HI PLUS LI;Lo;0;L;;;;;N;;;;; 120D5;CUNEIFORM SIGN GA2 TIMES HUB2;Lo;0;L;;;;;N;;;;; 120D6;CUNEIFORM SIGN GA2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 120D7;CUNEIFORM SIGN GA2 TIMES ISH PLUS HU PLUS ASH;Lo;0;L;;;;;N;;;;; 120D8;CUNEIFORM SIGN GA2 TIMES KAK;Lo;0;L;;;;;N;;;;; 120D9;CUNEIFORM SIGN GA2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; 120DA;CUNEIFORM SIGN GA2 TIMES KID;Lo;0;L;;;;;N;;;;; 120DB;CUNEIFORM SIGN GA2 TIMES KID PLUS LAL;Lo;0;L;;;;;N;;;;; 120DC;CUNEIFORM SIGN GA2 TIMES KU3 PLUS AN;Lo;0;L;;;;;N;;;;; 120DD;CUNEIFORM SIGN GA2 TIMES LA;Lo;0;L;;;;;N;;;;; 120DE;CUNEIFORM SIGN GA2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; 120DF;CUNEIFORM SIGN GA2 TIMES MI;Lo;0;L;;;;;N;;;;; 120E0;CUNEIFORM SIGN GA2 TIMES NUN;Lo;0;L;;;;;N;;;;; 120E1;CUNEIFORM SIGN GA2 TIMES NUN OVER NUN;Lo;0;L;;;;;N;;;;; 120E2;CUNEIFORM SIGN GA2 TIMES PA;Lo;0;L;;;;;N;;;;; 120E3;CUNEIFORM SIGN GA2 TIMES SAL;Lo;0;L;;;;;N;;;;; 120E4;CUNEIFORM SIGN GA2 TIMES SAR;Lo;0;L;;;;;N;;;;; 120E5;CUNEIFORM SIGN GA2 TIMES SHE;Lo;0;L;;;;;N;;;;; 120E6;CUNEIFORM SIGN GA2 TIMES SHE PLUS TUR;Lo;0;L;;;;;N;;;;; 120E7;CUNEIFORM SIGN GA2 TIMES SHID;Lo;0;L;;;;;N;;;;; 120E8;CUNEIFORM SIGN GA2 TIMES SUM;Lo;0;L;;;;;N;;;;; 120E9;CUNEIFORM SIGN GA2 TIMES TAK4;Lo;0;L;;;;;N;;;;; 120EA;CUNEIFORM SIGN GA2 TIMES U;Lo;0;L;;;;;N;;;;; 120EB;CUNEIFORM SIGN GA2 TIMES UD;Lo;0;L;;;;;N;;;;; 120EC;CUNEIFORM SIGN GA2 TIMES UD PLUS DU;Lo;0;L;;;;;N;;;;; 120ED;CUNEIFORM SIGN GA2 OVER GA2;Lo;0;L;;;;;N;;;;; 120EE;CUNEIFORM SIGN GABA;Lo;0;L;;;;;N;;;;; 120EF;CUNEIFORM SIGN GABA CROSSING GABA;Lo;0;L;;;;;N;;;;; 120F0;CUNEIFORM SIGN GAD;Lo;0;L;;;;;N;;;;; 120F1;CUNEIFORM SIGN GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; 120F2;CUNEIFORM SIGN GAL;Lo;0;L;;;;;N;;;;; 120F3;CUNEIFORM SIGN GAL GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; 120F4;CUNEIFORM SIGN GALAM;Lo;0;L;;;;;N;;;;; 120F5;CUNEIFORM SIGN GAM;Lo;0;L;;;;;N;;;;; 120F6;CUNEIFORM SIGN GAN;Lo;0;L;;;;;N;;;;; 120F7;CUNEIFORM SIGN GAN2;Lo;0;L;;;;;N;;;;; 120F8;CUNEIFORM SIGN GAN2 TENU;Lo;0;L;;;;;N;;;;; 120F9;CUNEIFORM SIGN GAN2 OVER GAN2;Lo;0;L;;;;;N;;;;; 120FA;CUNEIFORM SIGN GAN2 CROSSING GAN2;Lo;0;L;;;;;N;;;;; 120FB;CUNEIFORM SIGN GAR;Lo;0;L;;;;;N;;;;; 120FC;CUNEIFORM SIGN GAR3;Lo;0;L;;;;;N;;;;; 120FD;CUNEIFORM SIGN GASHAN;Lo;0;L;;;;;N;;;;; 120FE;CUNEIFORM SIGN GESHTIN;Lo;0;L;;;;;N;;;;; 120FF;CUNEIFORM SIGN GESHTIN TIMES KUR;Lo;0;L;;;;;N;;;;; 12100;CUNEIFORM SIGN GI;Lo;0;L;;;;;N;;;;; 12101;CUNEIFORM SIGN GI TIMES E;Lo;0;L;;;;;N;;;;; 12102;CUNEIFORM SIGN GI TIMES U;Lo;0;L;;;;;N;;;;; 12103;CUNEIFORM SIGN GI CROSSING GI;Lo;0;L;;;;;N;;;;; 12104;CUNEIFORM SIGN GI4;Lo;0;L;;;;;N;;;;; 12105;CUNEIFORM SIGN GI4 OVER GI4;Lo;0;L;;;;;N;;;;; 12106;CUNEIFORM SIGN GI4 CROSSING GI4;Lo;0;L;;;;;N;;;;; 12107;CUNEIFORM SIGN GIDIM;Lo;0;L;;;;;N;;;;; 12108;CUNEIFORM SIGN GIR2;Lo;0;L;;;;;N;;;;; 12109;CUNEIFORM SIGN GIR2 GUNU;Lo;0;L;;;;;N;;;;; 1210A;CUNEIFORM SIGN GIR3;Lo;0;L;;;;;N;;;;; 1210B;CUNEIFORM SIGN GIR3 TIMES A PLUS IGI;Lo;0;L;;;;;N;;;;; 1210C;CUNEIFORM SIGN GIR3 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 1210D;CUNEIFORM SIGN GIR3 TIMES IGI;Lo;0;L;;;;;N;;;;; 1210E;CUNEIFORM SIGN GIR3 TIMES LU PLUS IGI;Lo;0;L;;;;;N;;;;; 1210F;CUNEIFORM SIGN GIR3 TIMES PA;Lo;0;L;;;;;N;;;;; 12110;CUNEIFORM SIGN GISAL;Lo;0;L;;;;;N;;;;; 12111;CUNEIFORM SIGN GISH;Lo;0;L;;;;;N;;;;; 12112;CUNEIFORM SIGN GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; 12113;CUNEIFORM SIGN GISH TIMES BAD;Lo;0;L;;;;;N;;;;; 12114;CUNEIFORM SIGN GISH TIMES TAK4;Lo;0;L;;;;;N;;;;; 12115;CUNEIFORM SIGN GISH TENU;Lo;0;L;;;;;N;;;;; 12116;CUNEIFORM SIGN GU;Lo;0;L;;;;;N;;;;; 12117;CUNEIFORM SIGN GU CROSSING GU;Lo;0;L;;;;;N;;;;; 12118;CUNEIFORM SIGN GU2;Lo;0;L;;;;;N;;;;; 12119;CUNEIFORM SIGN GU2 TIMES KAK;Lo;0;L;;;;;N;;;;; 1211A;CUNEIFORM SIGN GU2 TIMES KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 1211B;CUNEIFORM SIGN GU2 TIMES NUN;Lo;0;L;;;;;N;;;;; 1211C;CUNEIFORM SIGN GU2 TIMES SAL PLUS TUG2;Lo;0;L;;;;;N;;;;; 1211D;CUNEIFORM SIGN GU2 GUNU;Lo;0;L;;;;;N;;;;; 1211E;CUNEIFORM SIGN GUD;Lo;0;L;;;;;N;;;;; 1211F;CUNEIFORM SIGN GUD TIMES A PLUS KUR;Lo;0;L;;;;;N;;;;; 12120;CUNEIFORM SIGN GUD TIMES KUR;Lo;0;L;;;;;N;;;;; 12121;CUNEIFORM SIGN GUD OVER GUD LUGAL;Lo;0;L;;;;;N;;;;; 12122;CUNEIFORM SIGN GUL;Lo;0;L;;;;;N;;;;; 12123;CUNEIFORM SIGN GUM;Lo;0;L;;;;;N;;;;; 12124;CUNEIFORM SIGN GUM TIMES SHE;Lo;0;L;;;;;N;;;;; 12125;CUNEIFORM SIGN GUR;Lo;0;L;;;;;N;;;;; 12126;CUNEIFORM SIGN GUR7;Lo;0;L;;;;;N;;;;; 12127;CUNEIFORM SIGN GURUN;Lo;0;L;;;;;N;;;;; 12128;CUNEIFORM SIGN GURUSH;Lo;0;L;;;;;N;;;;; 12129;CUNEIFORM SIGN HA;Lo;0;L;;;;;N;;;;; 1212A;CUNEIFORM SIGN HA TENU;Lo;0;L;;;;;N;;;;; 1212B;CUNEIFORM SIGN HA GUNU;Lo;0;L;;;;;N;;;;; 1212C;CUNEIFORM SIGN HAL;Lo;0;L;;;;;N;;;;; 1212D;CUNEIFORM SIGN HI;Lo;0;L;;;;;N;;;;; 1212E;CUNEIFORM SIGN HI TIMES ASH;Lo;0;L;;;;;N;;;;; 1212F;CUNEIFORM SIGN HI TIMES ASH2;Lo;0;L;;;;;N;;;;; 12130;CUNEIFORM SIGN HI TIMES BAD;Lo;0;L;;;;;N;;;;; 12131;CUNEIFORM SIGN HI TIMES DISH;Lo;0;L;;;;;N;;;;; 12132;CUNEIFORM SIGN HI TIMES GAD;Lo;0;L;;;;;N;;;;; 12133;CUNEIFORM SIGN HI TIMES KIN;Lo;0;L;;;;;N;;;;; 12134;CUNEIFORM SIGN HI TIMES NUN;Lo;0;L;;;;;N;;;;; 12135;CUNEIFORM SIGN HI TIMES SHE;Lo;0;L;;;;;N;;;;; 12136;CUNEIFORM SIGN HI TIMES U;Lo;0;L;;;;;N;;;;; 12137;CUNEIFORM SIGN HU;Lo;0;L;;;;;N;;;;; 12138;CUNEIFORM SIGN HUB2;Lo;0;L;;;;;N;;;;; 12139;CUNEIFORM SIGN HUB2 TIMES AN;Lo;0;L;;;;;N;;;;; 1213A;CUNEIFORM SIGN HUB2 TIMES HAL;Lo;0;L;;;;;N;;;;; 1213B;CUNEIFORM SIGN HUB2 TIMES KASKAL;Lo;0;L;;;;;N;;;;; 1213C;CUNEIFORM SIGN HUB2 TIMES LISH;Lo;0;L;;;;;N;;;;; 1213D;CUNEIFORM SIGN HUB2 TIMES UD;Lo;0;L;;;;;N;;;;; 1213E;CUNEIFORM SIGN HUL2;Lo;0;L;;;;;N;;;;; 1213F;CUNEIFORM SIGN I;Lo;0;L;;;;;N;;;;; 12140;CUNEIFORM SIGN I A;Lo;0;L;;;;;N;;;;; 12141;CUNEIFORM SIGN IB;Lo;0;L;;;;;N;;;;; 12142;CUNEIFORM SIGN IDIM;Lo;0;L;;;;;N;;;;; 12143;CUNEIFORM SIGN IDIM OVER IDIM BUR;Lo;0;L;;;;;N;;;;; 12144;CUNEIFORM SIGN IDIM OVER IDIM SQUARED;Lo;0;L;;;;;N;;;;; 12145;CUNEIFORM SIGN IG;Lo;0;L;;;;;N;;;;; 12146;CUNEIFORM SIGN IGI;Lo;0;L;;;;;N;;;;; 12147;CUNEIFORM SIGN IGI DIB;Lo;0;L;;;;;N;;;;; 12148;CUNEIFORM SIGN IGI RI;Lo;0;L;;;;;N;;;;; 12149;CUNEIFORM SIGN IGI OVER IGI SHIR OVER SHIR UD OVER UD;Lo;0;L;;;;;N;;;;; 1214A;CUNEIFORM SIGN IGI GUNU;Lo;0;L;;;;;N;;;;; 1214B;CUNEIFORM SIGN IL;Lo;0;L;;;;;N;;;;; 1214C;CUNEIFORM SIGN IL TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 1214D;CUNEIFORM SIGN IL2;Lo;0;L;;;;;N;;;;; 1214E;CUNEIFORM SIGN IM;Lo;0;L;;;;;N;;;;; 1214F;CUNEIFORM SIGN IM TIMES TAK4;Lo;0;L;;;;;N;;;;; 12150;CUNEIFORM SIGN IM CROSSING IM;Lo;0;L;;;;;N;;;;; 12151;CUNEIFORM SIGN IM OPPOSING IM;Lo;0;L;;;;;N;;;;; 12152;CUNEIFORM SIGN IM SQUARED;Lo;0;L;;;;;N;;;;; 12153;CUNEIFORM SIGN IMIN;Lo;0;L;;;;;N;;;;; 12154;CUNEIFORM SIGN IN;Lo;0;L;;;;;N;;;;; 12155;CUNEIFORM SIGN IR;Lo;0;L;;;;;N;;;;; 12156;CUNEIFORM SIGN ISH;Lo;0;L;;;;;N;;;;; 12157;CUNEIFORM SIGN KA;Lo;0;L;;;;;N;;;;; 12158;CUNEIFORM SIGN KA TIMES A;Lo;0;L;;;;;N;;;;; 12159;CUNEIFORM SIGN KA TIMES AD;Lo;0;L;;;;;N;;;;; 1215A;CUNEIFORM SIGN KA TIMES AD PLUS KU3;Lo;0;L;;;;;N;;;;; 1215B;CUNEIFORM SIGN KA TIMES ASH2;Lo;0;L;;;;;N;;;;; 1215C;CUNEIFORM SIGN KA TIMES BAD;Lo;0;L;;;;;N;;;;; 1215D;CUNEIFORM SIGN KA TIMES BALAG;Lo;0;L;;;;;N;;;;; 1215E;CUNEIFORM SIGN KA TIMES BAR;Lo;0;L;;;;;N;;;;; 1215F;CUNEIFORM SIGN KA TIMES BI;Lo;0;L;;;;;N;;;;; 12160;CUNEIFORM SIGN KA TIMES ERIN2;Lo;0;L;;;;;N;;;;; 12161;CUNEIFORM SIGN KA TIMES ESH2;Lo;0;L;;;;;N;;;;; 12162;CUNEIFORM SIGN KA TIMES GA;Lo;0;L;;;;;N;;;;; 12163;CUNEIFORM SIGN KA TIMES GAL;Lo;0;L;;;;;N;;;;; 12164;CUNEIFORM SIGN KA TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 12165;CUNEIFORM SIGN KA TIMES GAR;Lo;0;L;;;;;N;;;;; 12166;CUNEIFORM SIGN KA TIMES GAR PLUS SHA3 PLUS A;Lo;0;L;;;;;N;;;;; 12167;CUNEIFORM SIGN KA TIMES GI;Lo;0;L;;;;;N;;;;; 12168;CUNEIFORM SIGN KA TIMES GIR2;Lo;0;L;;;;;N;;;;; 12169;CUNEIFORM SIGN KA TIMES GISH PLUS SAR;Lo;0;L;;;;;N;;;;; 1216A;CUNEIFORM SIGN KA TIMES GISH CROSSING GISH;Lo;0;L;;;;;N;;;;; 1216B;CUNEIFORM SIGN KA TIMES GU;Lo;0;L;;;;;N;;;;; 1216C;CUNEIFORM SIGN KA TIMES GUR7;Lo;0;L;;;;;N;;;;; 1216D;CUNEIFORM SIGN KA TIMES IGI;Lo;0;L;;;;;N;;;;; 1216E;CUNEIFORM SIGN KA TIMES IM;Lo;0;L;;;;;N;;;;; 1216F;CUNEIFORM SIGN KA TIMES KAK;Lo;0;L;;;;;N;;;;; 12170;CUNEIFORM SIGN KA TIMES KI;Lo;0;L;;;;;N;;;;; 12171;CUNEIFORM SIGN KA TIMES KID;Lo;0;L;;;;;N;;;;; 12172;CUNEIFORM SIGN KA TIMES LI;Lo;0;L;;;;;N;;;;; 12173;CUNEIFORM SIGN KA TIMES LU;Lo;0;L;;;;;N;;;;; 12174;CUNEIFORM SIGN KA TIMES ME;Lo;0;L;;;;;N;;;;; 12175;CUNEIFORM SIGN KA TIMES ME PLUS DU;Lo;0;L;;;;;N;;;;; 12176;CUNEIFORM SIGN KA TIMES ME PLUS GI;Lo;0;L;;;;;N;;;;; 12177;CUNEIFORM SIGN KA TIMES ME PLUS TE;Lo;0;L;;;;;N;;;;; 12178;CUNEIFORM SIGN KA TIMES MI;Lo;0;L;;;;;N;;;;; 12179;CUNEIFORM SIGN KA TIMES MI PLUS NUNUZ;Lo;0;L;;;;;N;;;;; 1217A;CUNEIFORM SIGN KA TIMES NE;Lo;0;L;;;;;N;;;;; 1217B;CUNEIFORM SIGN KA TIMES NUN;Lo;0;L;;;;;N;;;;; 1217C;CUNEIFORM SIGN KA TIMES PI;Lo;0;L;;;;;N;;;;; 1217D;CUNEIFORM SIGN KA TIMES RU;Lo;0;L;;;;;N;;;;; 1217E;CUNEIFORM SIGN KA TIMES SA;Lo;0;L;;;;;N;;;;; 1217F;CUNEIFORM SIGN KA TIMES SAR;Lo;0;L;;;;;N;;;;; 12180;CUNEIFORM SIGN KA TIMES SHA;Lo;0;L;;;;;N;;;;; 12181;CUNEIFORM SIGN KA TIMES SHE;Lo;0;L;;;;;N;;;;; 12182;CUNEIFORM SIGN KA TIMES SHID;Lo;0;L;;;;;N;;;;; 12183;CUNEIFORM SIGN KA TIMES SHU;Lo;0;L;;;;;N;;;;; 12184;CUNEIFORM SIGN KA TIMES SIG;Lo;0;L;;;;;N;;;;; 12185;CUNEIFORM SIGN KA TIMES SUHUR;Lo;0;L;;;;;N;;;;; 12186;CUNEIFORM SIGN KA TIMES TAR;Lo;0;L;;;;;N;;;;; 12187;CUNEIFORM SIGN KA TIMES U;Lo;0;L;;;;;N;;;;; 12188;CUNEIFORM SIGN KA TIMES U2;Lo;0;L;;;;;N;;;;; 12189;CUNEIFORM SIGN KA TIMES UD;Lo;0;L;;;;;N;;;;; 1218A;CUNEIFORM SIGN KA TIMES UMUM TIMES PA;Lo;0;L;;;;;N;;;;; 1218B;CUNEIFORM SIGN KA TIMES USH;Lo;0;L;;;;;N;;;;; 1218C;CUNEIFORM SIGN KA TIMES ZI;Lo;0;L;;;;;N;;;;; 1218D;CUNEIFORM SIGN KA2;Lo;0;L;;;;;N;;;;; 1218E;CUNEIFORM SIGN KA2 CROSSING KA2;Lo;0;L;;;;;N;;;;; 1218F;CUNEIFORM SIGN KAB;Lo;0;L;;;;;N;;;;; 12190;CUNEIFORM SIGN KAD2;Lo;0;L;;;;;N;;;;; 12191;CUNEIFORM SIGN KAD3;Lo;0;L;;;;;N;;;;; 12192;CUNEIFORM SIGN KAD4;Lo;0;L;;;;;N;;;;; 12193;CUNEIFORM SIGN KAD5;Lo;0;L;;;;;N;;;;; 12194;CUNEIFORM SIGN KAD5 OVER KAD5;Lo;0;L;;;;;N;;;;; 12195;CUNEIFORM SIGN KAK;Lo;0;L;;;;;N;;;;; 12196;CUNEIFORM SIGN KAK TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 12197;CUNEIFORM SIGN KAL;Lo;0;L;;;;;N;;;;; 12198;CUNEIFORM SIGN KAL TIMES BAD;Lo;0;L;;;;;N;;;;; 12199;CUNEIFORM SIGN KAL CROSSING KAL;Lo;0;L;;;;;N;;;;; 1219A;CUNEIFORM SIGN KAM2;Lo;0;L;;;;;N;;;;; 1219B;CUNEIFORM SIGN KAM4;Lo;0;L;;;;;N;;;;; 1219C;CUNEIFORM SIGN KASKAL;Lo;0;L;;;;;N;;;;; 1219D;CUNEIFORM SIGN KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; 1219E;CUNEIFORM SIGN KASKAL OVER KASKAL LAGAB TIMES U OVER LAGAB TIMES U;Lo;0;L;;;;;N;;;;; 1219F;CUNEIFORM SIGN KESH2;Lo;0;L;;;;;N;;;;; 121A0;CUNEIFORM SIGN KI;Lo;0;L;;;;;N;;;;; 121A1;CUNEIFORM SIGN KI TIMES BAD;Lo;0;L;;;;;N;;;;; 121A2;CUNEIFORM SIGN KI TIMES U;Lo;0;L;;;;;N;;;;; 121A3;CUNEIFORM SIGN KI TIMES UD;Lo;0;L;;;;;N;;;;; 121A4;CUNEIFORM SIGN KID;Lo;0;L;;;;;N;;;;; 121A5;CUNEIFORM SIGN KIN;Lo;0;L;;;;;N;;;;; 121A6;CUNEIFORM SIGN KISAL;Lo;0;L;;;;;N;;;;; 121A7;CUNEIFORM SIGN KISH;Lo;0;L;;;;;N;;;;; 121A8;CUNEIFORM SIGN KISIM5;Lo;0;L;;;;;N;;;;; 121A9;CUNEIFORM SIGN KISIM5 OVER KISIM5;Lo;0;L;;;;;N;;;;; 121AA;CUNEIFORM SIGN KU;Lo;0;L;;;;;N;;;;; 121AB;CUNEIFORM SIGN KU OVER HI TIMES ASH2 KU OVER HI TIMES ASH2;Lo;0;L;;;;;N;;;;; 121AC;CUNEIFORM SIGN KU3;Lo;0;L;;;;;N;;;;; 121AD;CUNEIFORM SIGN KU4;Lo;0;L;;;;;N;;;;; 121AE;CUNEIFORM SIGN KU4 VARIANT FORM;Lo;0;L;;;;;N;;;;; 121AF;CUNEIFORM SIGN KU7;Lo;0;L;;;;;N;;;;; 121B0;CUNEIFORM SIGN KUL;Lo;0;L;;;;;N;;;;; 121B1;CUNEIFORM SIGN KUL GUNU;Lo;0;L;;;;;N;;;;; 121B2;CUNEIFORM SIGN KUN;Lo;0;L;;;;;N;;;;; 121B3;CUNEIFORM SIGN KUR;Lo;0;L;;;;;N;;;;; 121B4;CUNEIFORM SIGN KUR OPPOSING KUR;Lo;0;L;;;;;N;;;;; 121B5;CUNEIFORM SIGN KUSHU2;Lo;0;L;;;;;N;;;;; 121B6;CUNEIFORM SIGN KWU318;Lo;0;L;;;;;N;;;;; 121B7;CUNEIFORM SIGN LA;Lo;0;L;;;;;N;;;;; 121B8;CUNEIFORM SIGN LAGAB;Lo;0;L;;;;;N;;;;; 121B9;CUNEIFORM SIGN LAGAB TIMES A;Lo;0;L;;;;;N;;;;; 121BA;CUNEIFORM SIGN LAGAB TIMES A PLUS DA PLUS HA;Lo;0;L;;;;;N;;;;; 121BB;CUNEIFORM SIGN LAGAB TIMES A PLUS GAR;Lo;0;L;;;;;N;;;;; 121BC;CUNEIFORM SIGN LAGAB TIMES A PLUS LAL;Lo;0;L;;;;;N;;;;; 121BD;CUNEIFORM SIGN LAGAB TIMES AL;Lo;0;L;;;;;N;;;;; 121BE;CUNEIFORM SIGN LAGAB TIMES AN;Lo;0;L;;;;;N;;;;; 121BF;CUNEIFORM SIGN LAGAB TIMES ASH ZIDA TENU;Lo;0;L;;;;;N;;;;; 121C0;CUNEIFORM SIGN LAGAB TIMES BAD;Lo;0;L;;;;;N;;;;; 121C1;CUNEIFORM SIGN LAGAB TIMES BI;Lo;0;L;;;;;N;;;;; 121C2;CUNEIFORM SIGN LAGAB TIMES DAR;Lo;0;L;;;;;N;;;;; 121C3;CUNEIFORM SIGN LAGAB TIMES EN;Lo;0;L;;;;;N;;;;; 121C4;CUNEIFORM SIGN LAGAB TIMES GA;Lo;0;L;;;;;N;;;;; 121C5;CUNEIFORM SIGN LAGAB TIMES GAR;Lo;0;L;;;;;N;;;;; 121C6;CUNEIFORM SIGN LAGAB TIMES GUD;Lo;0;L;;;;;N;;;;; 121C7;CUNEIFORM SIGN LAGAB TIMES GUD PLUS GUD;Lo;0;L;;;;;N;;;;; 121C8;CUNEIFORM SIGN LAGAB TIMES HA;Lo;0;L;;;;;N;;;;; 121C9;CUNEIFORM SIGN LAGAB TIMES HAL;Lo;0;L;;;;;N;;;;; 121CA;CUNEIFORM SIGN LAGAB TIMES HI TIMES NUN;Lo;0;L;;;;;N;;;;; 121CB;CUNEIFORM SIGN LAGAB TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 121CC;CUNEIFORM SIGN LAGAB TIMES IM;Lo;0;L;;;;;N;;;;; 121CD;CUNEIFORM SIGN LAGAB TIMES IM PLUS HA;Lo;0;L;;;;;N;;;;; 121CE;CUNEIFORM SIGN LAGAB TIMES IM PLUS LU;Lo;0;L;;;;;N;;;;; 121CF;CUNEIFORM SIGN LAGAB TIMES KI;Lo;0;L;;;;;N;;;;; 121D0;CUNEIFORM SIGN LAGAB TIMES KIN;Lo;0;L;;;;;N;;;;; 121D1;CUNEIFORM SIGN LAGAB TIMES KU3;Lo;0;L;;;;;N;;;;; 121D2;CUNEIFORM SIGN LAGAB TIMES KUL;Lo;0;L;;;;;N;;;;; 121D3;CUNEIFORM SIGN LAGAB TIMES KUL PLUS HI PLUS A;Lo;0;L;;;;;N;;;;; 121D4;CUNEIFORM SIGN LAGAB TIMES LAGAB;Lo;0;L;;;;;N;;;;; 121D5;CUNEIFORM SIGN LAGAB TIMES LISH;Lo;0;L;;;;;N;;;;; 121D6;CUNEIFORM SIGN LAGAB TIMES LU;Lo;0;L;;;;;N;;;;; 121D7;CUNEIFORM SIGN LAGAB TIMES LUL;Lo;0;L;;;;;N;;;;; 121D8;CUNEIFORM SIGN LAGAB TIMES ME;Lo;0;L;;;;;N;;;;; 121D9;CUNEIFORM SIGN LAGAB TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; 121DA;CUNEIFORM SIGN LAGAB TIMES MUSH;Lo;0;L;;;;;N;;;;; 121DB;CUNEIFORM SIGN LAGAB TIMES NE;Lo;0;L;;;;;N;;;;; 121DC;CUNEIFORM SIGN LAGAB TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; 121DD;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH PLUS ERIN2;Lo;0;L;;;;;N;;;;; 121DE;CUNEIFORM SIGN LAGAB TIMES SHITA PLUS GISH TENU;Lo;0;L;;;;;N;;;;; 121DF;CUNEIFORM SIGN LAGAB TIMES SHU2;Lo;0;L;;;;;N;;;;; 121E0;CUNEIFORM SIGN LAGAB TIMES SHU2 PLUS SHU2;Lo;0;L;;;;;N;;;;; 121E1;CUNEIFORM SIGN LAGAB TIMES SUM;Lo;0;L;;;;;N;;;;; 121E2;CUNEIFORM SIGN LAGAB TIMES TAG;Lo;0;L;;;;;N;;;;; 121E3;CUNEIFORM SIGN LAGAB TIMES TAK4;Lo;0;L;;;;;N;;;;; 121E4;CUNEIFORM SIGN LAGAB TIMES TE PLUS A PLUS SU PLUS NA;Lo;0;L;;;;;N;;;;; 121E5;CUNEIFORM SIGN LAGAB TIMES U;Lo;0;L;;;;;N;;;;; 121E6;CUNEIFORM SIGN LAGAB TIMES U PLUS A;Lo;0;L;;;;;N;;;;; 121E7;CUNEIFORM SIGN LAGAB TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; 121E8;CUNEIFORM SIGN LAGAB TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; 121E9;CUNEIFORM SIGN LAGAB TIMES UD;Lo;0;L;;;;;N;;;;; 121EA;CUNEIFORM SIGN LAGAB TIMES USH;Lo;0;L;;;;;N;;;;; 121EB;CUNEIFORM SIGN LAGAB SQUARED;Lo;0;L;;;;;N;;;;; 121EC;CUNEIFORM SIGN LAGAR;Lo;0;L;;;;;N;;;;; 121ED;CUNEIFORM SIGN LAGAR TIMES SHE;Lo;0;L;;;;;N;;;;; 121EE;CUNEIFORM SIGN LAGAR TIMES SHE PLUS SUM;Lo;0;L;;;;;N;;;;; 121EF;CUNEIFORM SIGN LAGAR GUNU;Lo;0;L;;;;;N;;;;; 121F0;CUNEIFORM SIGN LAGAR GUNU OVER LAGAR GUNU SHE;Lo;0;L;;;;;N;;;;; 121F1;CUNEIFORM SIGN LAHSHU;Lo;0;L;;;;;N;;;;; 121F2;CUNEIFORM SIGN LAL;Lo;0;L;;;;;N;;;;; 121F3;CUNEIFORM SIGN LAL TIMES LAL;Lo;0;L;;;;;N;;;;; 121F4;CUNEIFORM SIGN LAM;Lo;0;L;;;;;N;;;;; 121F5;CUNEIFORM SIGN LAM TIMES KUR;Lo;0;L;;;;;N;;;;; 121F6;CUNEIFORM SIGN LAM TIMES KUR PLUS RU;Lo;0;L;;;;;N;;;;; 121F7;CUNEIFORM SIGN LI;Lo;0;L;;;;;N;;;;; 121F8;CUNEIFORM SIGN LIL;Lo;0;L;;;;;N;;;;; 121F9;CUNEIFORM SIGN LIMMU2;Lo;0;L;;;;;N;;;;; 121FA;CUNEIFORM SIGN LISH;Lo;0;L;;;;;N;;;;; 121FB;CUNEIFORM SIGN LU;Lo;0;L;;;;;N;;;;; 121FC;CUNEIFORM SIGN LU TIMES BAD;Lo;0;L;;;;;N;;;;; 121FD;CUNEIFORM SIGN LU2;Lo;0;L;;;;;N;;;;; 121FE;CUNEIFORM SIGN LU2 TIMES AL;Lo;0;L;;;;;N;;;;; 121FF;CUNEIFORM SIGN LU2 TIMES BAD;Lo;0;L;;;;;N;;;;; 12200;CUNEIFORM SIGN LU2 TIMES ESH2;Lo;0;L;;;;;N;;;;; 12201;CUNEIFORM SIGN LU2 TIMES ESH2 TENU;Lo;0;L;;;;;N;;;;; 12202;CUNEIFORM SIGN LU2 TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 12203;CUNEIFORM SIGN LU2 TIMES HI TIMES BAD;Lo;0;L;;;;;N;;;;; 12204;CUNEIFORM SIGN LU2 TIMES IM;Lo;0;L;;;;;N;;;;; 12205;CUNEIFORM SIGN LU2 TIMES KAD2;Lo;0;L;;;;;N;;;;; 12206;CUNEIFORM SIGN LU2 TIMES KAD3;Lo;0;L;;;;;N;;;;; 12207;CUNEIFORM SIGN LU2 TIMES KAD3 PLUS ASH;Lo;0;L;;;;;N;;;;; 12208;CUNEIFORM SIGN LU2 TIMES KI;Lo;0;L;;;;;N;;;;; 12209;CUNEIFORM SIGN LU2 TIMES LA PLUS ASH;Lo;0;L;;;;;N;;;;; 1220A;CUNEIFORM SIGN LU2 TIMES LAGAB;Lo;0;L;;;;;N;;;;; 1220B;CUNEIFORM SIGN LU2 TIMES ME PLUS EN;Lo;0;L;;;;;N;;;;; 1220C;CUNEIFORM SIGN LU2 TIMES NE;Lo;0;L;;;;;N;;;;; 1220D;CUNEIFORM SIGN LU2 TIMES NU;Lo;0;L;;;;;N;;;;; 1220E;CUNEIFORM SIGN LU2 TIMES SI PLUS ASH;Lo;0;L;;;;;N;;;;; 1220F;CUNEIFORM SIGN LU2 TIMES SIK2 PLUS BU;Lo;0;L;;;;;N;;;;; 12210;CUNEIFORM SIGN LU2 TIMES TUG2;Lo;0;L;;;;;N;;;;; 12211;CUNEIFORM SIGN LU2 TENU;Lo;0;L;;;;;N;;;;; 12212;CUNEIFORM SIGN LU2 CROSSING LU2;Lo;0;L;;;;;N;;;;; 12213;CUNEIFORM SIGN LU2 OPPOSING LU2;Lo;0;L;;;;;N;;;;; 12214;CUNEIFORM SIGN LU2 SQUARED;Lo;0;L;;;;;N;;;;; 12215;CUNEIFORM SIGN LU2 SHESHIG;Lo;0;L;;;;;N;;;;; 12216;CUNEIFORM SIGN LU3;Lo;0;L;;;;;N;;;;; 12217;CUNEIFORM SIGN LUGAL;Lo;0;L;;;;;N;;;;; 12218;CUNEIFORM SIGN LUGAL OVER LUGAL;Lo;0;L;;;;;N;;;;; 12219;CUNEIFORM SIGN LUGAL OPPOSING LUGAL;Lo;0;L;;;;;N;;;;; 1221A;CUNEIFORM SIGN LUGAL SHESHIG;Lo;0;L;;;;;N;;;;; 1221B;CUNEIFORM SIGN LUH;Lo;0;L;;;;;N;;;;; 1221C;CUNEIFORM SIGN LUL;Lo;0;L;;;;;N;;;;; 1221D;CUNEIFORM SIGN LUM;Lo;0;L;;;;;N;;;;; 1221E;CUNEIFORM SIGN LUM OVER LUM;Lo;0;L;;;;;N;;;;; 1221F;CUNEIFORM SIGN LUM OVER LUM GAR OVER GAR;Lo;0;L;;;;;N;;;;; 12220;CUNEIFORM SIGN MA;Lo;0;L;;;;;N;;;;; 12221;CUNEIFORM SIGN MA TIMES TAK4;Lo;0;L;;;;;N;;;;; 12222;CUNEIFORM SIGN MA GUNU;Lo;0;L;;;;;N;;;;; 12223;CUNEIFORM SIGN MA2;Lo;0;L;;;;;N;;;;; 12224;CUNEIFORM SIGN MAH;Lo;0;L;;;;;N;;;;; 12225;CUNEIFORM SIGN MAR;Lo;0;L;;;;;N;;;;; 12226;CUNEIFORM SIGN MASH;Lo;0;L;;;;;N;;;;; 12227;CUNEIFORM SIGN MASH2;Lo;0;L;;;;;N;;;;; 12228;CUNEIFORM SIGN ME;Lo;0;L;;;;;N;;;;; 12229;CUNEIFORM SIGN MES;Lo;0;L;;;;;N;;;;; 1222A;CUNEIFORM SIGN MI;Lo;0;L;;;;;N;;;;; 1222B;CUNEIFORM SIGN MIN;Lo;0;L;;;;;N;;;;; 1222C;CUNEIFORM SIGN MU;Lo;0;L;;;;;N;;;;; 1222D;CUNEIFORM SIGN MU OVER MU;Lo;0;L;;;;;N;;;;; 1222E;CUNEIFORM SIGN MUG;Lo;0;L;;;;;N;;;;; 1222F;CUNEIFORM SIGN MUG GUNU;Lo;0;L;;;;;N;;;;; 12230;CUNEIFORM SIGN MUNSUB;Lo;0;L;;;;;N;;;;; 12231;CUNEIFORM SIGN MURGU2;Lo;0;L;;;;;N;;;;; 12232;CUNEIFORM SIGN MUSH;Lo;0;L;;;;;N;;;;; 12233;CUNEIFORM SIGN MUSH TIMES A;Lo;0;L;;;;;N;;;;; 12234;CUNEIFORM SIGN MUSH TIMES KUR;Lo;0;L;;;;;N;;;;; 12235;CUNEIFORM SIGN MUSH TIMES ZA;Lo;0;L;;;;;N;;;;; 12236;CUNEIFORM SIGN MUSH OVER MUSH;Lo;0;L;;;;;N;;;;; 12237;CUNEIFORM SIGN MUSH OVER MUSH TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; 12238;CUNEIFORM SIGN MUSH CROSSING MUSH;Lo;0;L;;;;;N;;;;; 12239;CUNEIFORM SIGN MUSH3;Lo;0;L;;;;;N;;;;; 1223A;CUNEIFORM SIGN MUSH3 TIMES A;Lo;0;L;;;;;N;;;;; 1223B;CUNEIFORM SIGN MUSH3 TIMES A PLUS DI;Lo;0;L;;;;;N;;;;; 1223C;CUNEIFORM SIGN MUSH3 TIMES DI;Lo;0;L;;;;;N;;;;; 1223D;CUNEIFORM SIGN MUSH3 GUNU;Lo;0;L;;;;;N;;;;; 1223E;CUNEIFORM SIGN NA;Lo;0;L;;;;;N;;;;; 1223F;CUNEIFORM SIGN NA2;Lo;0;L;;;;;N;;;;; 12240;CUNEIFORM SIGN NAGA;Lo;0;L;;;;;N;;;;; 12241;CUNEIFORM SIGN NAGA INVERTED;Lo;0;L;;;;;N;;;;; 12242;CUNEIFORM SIGN NAGA TIMES SHU TENU;Lo;0;L;;;;;N;;;;; 12243;CUNEIFORM SIGN NAGA OPPOSING NAGA;Lo;0;L;;;;;N;;;;; 12244;CUNEIFORM SIGN NAGAR;Lo;0;L;;;;;N;;;;; 12245;CUNEIFORM SIGN NAM NUTILLU;Lo;0;L;;;;;N;;;;; 12246;CUNEIFORM SIGN NAM;Lo;0;L;;;;;N;;;;; 12247;CUNEIFORM SIGN NAM2;Lo;0;L;;;;;N;;;;; 12248;CUNEIFORM SIGN NE;Lo;0;L;;;;;N;;;;; 12249;CUNEIFORM SIGN NE TIMES A;Lo;0;L;;;;;N;;;;; 1224A;CUNEIFORM SIGN NE TIMES UD;Lo;0;L;;;;;N;;;;; 1224B;CUNEIFORM SIGN NE SHESHIG;Lo;0;L;;;;;N;;;;; 1224C;CUNEIFORM SIGN NI;Lo;0;L;;;;;N;;;;; 1224D;CUNEIFORM SIGN NI TIMES E;Lo;0;L;;;;;N;;;;; 1224E;CUNEIFORM SIGN NI2;Lo;0;L;;;;;N;;;;; 1224F;CUNEIFORM SIGN NIM;Lo;0;L;;;;;N;;;;; 12250;CUNEIFORM SIGN NIM TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 12251;CUNEIFORM SIGN NIM TIMES GAR PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; 12252;CUNEIFORM SIGN NINDA2;Lo;0;L;;;;;N;;;;; 12253;CUNEIFORM SIGN NINDA2 TIMES AN;Lo;0;L;;;;;N;;;;; 12254;CUNEIFORM SIGN NINDA2 TIMES ASH;Lo;0;L;;;;;N;;;;; 12255;CUNEIFORM SIGN NINDA2 TIMES ASH PLUS ASH;Lo;0;L;;;;;N;;;;; 12256;CUNEIFORM SIGN NINDA2 TIMES GUD;Lo;0;L;;;;;N;;;;; 12257;CUNEIFORM SIGN NINDA2 TIMES ME PLUS GAN2 TENU;Lo;0;L;;;;;N;;;;; 12258;CUNEIFORM SIGN NINDA2 TIMES NE;Lo;0;L;;;;;N;;;;; 12259;CUNEIFORM SIGN NINDA2 TIMES NUN;Lo;0;L;;;;;N;;;;; 1225A;CUNEIFORM SIGN NINDA2 TIMES SHE;Lo;0;L;;;;;N;;;;; 1225B;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS A AN;Lo;0;L;;;;;N;;;;; 1225C;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH;Lo;0;L;;;;;N;;;;; 1225D;CUNEIFORM SIGN NINDA2 TIMES SHE PLUS ASH PLUS ASH;Lo;0;L;;;;;N;;;;; 1225E;CUNEIFORM SIGN NINDA2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; 1225F;CUNEIFORM SIGN NINDA2 TIMES USH;Lo;0;L;;;;;N;;;;; 12260;CUNEIFORM SIGN NISAG;Lo;0;L;;;;;N;;;;; 12261;CUNEIFORM SIGN NU;Lo;0;L;;;;;N;;;;; 12262;CUNEIFORM SIGN NU11;Lo;0;L;;;;;N;;;;; 12263;CUNEIFORM SIGN NUN;Lo;0;L;;;;;N;;;;; 12264;CUNEIFORM SIGN NUN LAGAR TIMES GAR;Lo;0;L;;;;;N;;;;; 12265;CUNEIFORM SIGN NUN LAGAR TIMES MASH;Lo;0;L;;;;;N;;;;; 12266;CUNEIFORM SIGN NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; 12267;CUNEIFORM SIGN NUN LAGAR TIMES SAL OVER NUN LAGAR TIMES SAL;Lo;0;L;;;;;N;;;;; 12268;CUNEIFORM SIGN NUN LAGAR TIMES USH;Lo;0;L;;;;;N;;;;; 12269;CUNEIFORM SIGN NUN TENU;Lo;0;L;;;;;N;;;;; 1226A;CUNEIFORM SIGN NUN OVER NUN;Lo;0;L;;;;;N;;;;; 1226B;CUNEIFORM SIGN NUN CROSSING NUN;Lo;0;L;;;;;N;;;;; 1226C;CUNEIFORM SIGN NUN CROSSING NUN LAGAR OVER LAGAR;Lo;0;L;;;;;N;;;;; 1226D;CUNEIFORM SIGN NUNUZ;Lo;0;L;;;;;N;;;;; 1226E;CUNEIFORM SIGN NUNUZ AB2 TIMES ASHGAB;Lo;0;L;;;;;N;;;;; 1226F;CUNEIFORM SIGN NUNUZ AB2 TIMES BI;Lo;0;L;;;;;N;;;;; 12270;CUNEIFORM SIGN NUNUZ AB2 TIMES DUG;Lo;0;L;;;;;N;;;;; 12271;CUNEIFORM SIGN NUNUZ AB2 TIMES GUD;Lo;0;L;;;;;N;;;;; 12272;CUNEIFORM SIGN NUNUZ AB2 TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 12273;CUNEIFORM SIGN NUNUZ AB2 TIMES KAD3;Lo;0;L;;;;;N;;;;; 12274;CUNEIFORM SIGN NUNUZ AB2 TIMES LA;Lo;0;L;;;;;N;;;;; 12275;CUNEIFORM SIGN NUNUZ AB2 TIMES NE;Lo;0;L;;;;;N;;;;; 12276;CUNEIFORM SIGN NUNUZ AB2 TIMES SILA3;Lo;0;L;;;;;N;;;;; 12277;CUNEIFORM SIGN NUNUZ AB2 TIMES U2;Lo;0;L;;;;;N;;;;; 12278;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI;Lo;0;L;;;;;N;;;;; 12279;CUNEIFORM SIGN NUNUZ KISIM5 TIMES BI U;Lo;0;L;;;;;N;;;;; 1227A;CUNEIFORM SIGN PA;Lo;0;L;;;;;N;;;;; 1227B;CUNEIFORM SIGN PAD;Lo;0;L;;;;;N;;;;; 1227C;CUNEIFORM SIGN PAN;Lo;0;L;;;;;N;;;;; 1227D;CUNEIFORM SIGN PAP;Lo;0;L;;;;;N;;;;; 1227E;CUNEIFORM SIGN PESH2;Lo;0;L;;;;;N;;;;; 1227F;CUNEIFORM SIGN PI;Lo;0;L;;;;;N;;;;; 12280;CUNEIFORM SIGN PI TIMES A;Lo;0;L;;;;;N;;;;; 12281;CUNEIFORM SIGN PI TIMES AB;Lo;0;L;;;;;N;;;;; 12282;CUNEIFORM SIGN PI TIMES BI;Lo;0;L;;;;;N;;;;; 12283;CUNEIFORM SIGN PI TIMES BU;Lo;0;L;;;;;N;;;;; 12284;CUNEIFORM SIGN PI TIMES E;Lo;0;L;;;;;N;;;;; 12285;CUNEIFORM SIGN PI TIMES I;Lo;0;L;;;;;N;;;;; 12286;CUNEIFORM SIGN PI TIMES IB;Lo;0;L;;;;;N;;;;; 12287;CUNEIFORM SIGN PI TIMES U;Lo;0;L;;;;;N;;;;; 12288;CUNEIFORM SIGN PI TIMES U2;Lo;0;L;;;;;N;;;;; 12289;CUNEIFORM SIGN PI CROSSING PI;Lo;0;L;;;;;N;;;;; 1228A;CUNEIFORM SIGN PIRIG;Lo;0;L;;;;;N;;;;; 1228B;CUNEIFORM SIGN PIRIG TIMES KAL;Lo;0;L;;;;;N;;;;; 1228C;CUNEIFORM SIGN PIRIG TIMES UD;Lo;0;L;;;;;N;;;;; 1228D;CUNEIFORM SIGN PIRIG TIMES ZA;Lo;0;L;;;;;N;;;;; 1228E;CUNEIFORM SIGN PIRIG OPPOSING PIRIG;Lo;0;L;;;;;N;;;;; 1228F;CUNEIFORM SIGN RA;Lo;0;L;;;;;N;;;;; 12290;CUNEIFORM SIGN RAB;Lo;0;L;;;;;N;;;;; 12291;CUNEIFORM SIGN RI;Lo;0;L;;;;;N;;;;; 12292;CUNEIFORM SIGN RU;Lo;0;L;;;;;N;;;;; 12293;CUNEIFORM SIGN SA;Lo;0;L;;;;;N;;;;; 12294;CUNEIFORM SIGN SAG NUTILLU;Lo;0;L;;;;;N;;;;; 12295;CUNEIFORM SIGN SAG;Lo;0;L;;;;;N;;;;; 12296;CUNEIFORM SIGN SAG TIMES A;Lo;0;L;;;;;N;;;;; 12297;CUNEIFORM SIGN SAG TIMES DU;Lo;0;L;;;;;N;;;;; 12298;CUNEIFORM SIGN SAG TIMES DUB;Lo;0;L;;;;;N;;;;; 12299;CUNEIFORM SIGN SAG TIMES HA;Lo;0;L;;;;;N;;;;; 1229A;CUNEIFORM SIGN SAG TIMES KAK;Lo;0;L;;;;;N;;;;; 1229B;CUNEIFORM SIGN SAG TIMES KUR;Lo;0;L;;;;;N;;;;; 1229C;CUNEIFORM SIGN SAG TIMES LUM;Lo;0;L;;;;;N;;;;; 1229D;CUNEIFORM SIGN SAG TIMES MI;Lo;0;L;;;;;N;;;;; 1229E;CUNEIFORM SIGN SAG TIMES NUN;Lo;0;L;;;;;N;;;;; 1229F;CUNEIFORM SIGN SAG TIMES SAL;Lo;0;L;;;;;N;;;;; 122A0;CUNEIFORM SIGN SAG TIMES SHID;Lo;0;L;;;;;N;;;;; 122A1;CUNEIFORM SIGN SAG TIMES TAB;Lo;0;L;;;;;N;;;;; 122A2;CUNEIFORM SIGN SAG TIMES U2;Lo;0;L;;;;;N;;;;; 122A3;CUNEIFORM SIGN SAG TIMES UB;Lo;0;L;;;;;N;;;;; 122A4;CUNEIFORM SIGN SAG TIMES UM;Lo;0;L;;;;;N;;;;; 122A5;CUNEIFORM SIGN SAG TIMES UR;Lo;0;L;;;;;N;;;;; 122A6;CUNEIFORM SIGN SAG TIMES USH;Lo;0;L;;;;;N;;;;; 122A7;CUNEIFORM SIGN SAG OVER SAG;Lo;0;L;;;;;N;;;;; 122A8;CUNEIFORM SIGN SAG GUNU;Lo;0;L;;;;;N;;;;; 122A9;CUNEIFORM SIGN SAL;Lo;0;L;;;;;N;;;;; 122AA;CUNEIFORM SIGN SAL LAGAB TIMES ASH2;Lo;0;L;;;;;N;;;;; 122AB;CUNEIFORM SIGN SANGA2;Lo;0;L;;;;;N;;;;; 122AC;CUNEIFORM SIGN SAR;Lo;0;L;;;;;N;;;;; 122AD;CUNEIFORM SIGN SHA;Lo;0;L;;;;;N;;;;; 122AE;CUNEIFORM SIGN SHA3;Lo;0;L;;;;;N;;;;; 122AF;CUNEIFORM SIGN SHA3 TIMES A;Lo;0;L;;;;;N;;;;; 122B0;CUNEIFORM SIGN SHA3 TIMES BAD;Lo;0;L;;;;;N;;;;; 122B1;CUNEIFORM SIGN SHA3 TIMES GISH;Lo;0;L;;;;;N;;;;; 122B2;CUNEIFORM SIGN SHA3 TIMES NE;Lo;0;L;;;;;N;;;;; 122B3;CUNEIFORM SIGN SHA3 TIMES SHU2;Lo;0;L;;;;;N;;;;; 122B4;CUNEIFORM SIGN SHA3 TIMES TUR;Lo;0;L;;;;;N;;;;; 122B5;CUNEIFORM SIGN SHA3 TIMES U;Lo;0;L;;;;;N;;;;; 122B6;CUNEIFORM SIGN SHA3 TIMES U PLUS A;Lo;0;L;;;;;N;;;;; 122B7;CUNEIFORM SIGN SHA6;Lo;0;L;;;;;N;;;;; 122B8;CUNEIFORM SIGN SHAB6;Lo;0;L;;;;;N;;;;; 122B9;CUNEIFORM SIGN SHAR2;Lo;0;L;;;;;N;;;;; 122BA;CUNEIFORM SIGN SHE;Lo;0;L;;;;;N;;;;; 122BB;CUNEIFORM SIGN SHE HU;Lo;0;L;;;;;N;;;;; 122BC;CUNEIFORM SIGN SHE OVER SHE GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; 122BD;CUNEIFORM SIGN SHE OVER SHE TAB OVER TAB GAR OVER GAR;Lo;0;L;;;;;N;;;;; 122BE;CUNEIFORM SIGN SHEG9;Lo;0;L;;;;;N;;;;; 122BF;CUNEIFORM SIGN SHEN;Lo;0;L;;;;;N;;;;; 122C0;CUNEIFORM SIGN SHESH;Lo;0;L;;;;;N;;;;; 122C1;CUNEIFORM SIGN SHESH2;Lo;0;L;;;;;N;;;;; 122C2;CUNEIFORM SIGN SHESHLAM;Lo;0;L;;;;;N;;;;; 122C3;CUNEIFORM SIGN SHID;Lo;0;L;;;;;N;;;;; 122C4;CUNEIFORM SIGN SHID TIMES A;Lo;0;L;;;;;N;;;;; 122C5;CUNEIFORM SIGN SHID TIMES IM;Lo;0;L;;;;;N;;;;; 122C6;CUNEIFORM SIGN SHIM;Lo;0;L;;;;;N;;;;; 122C7;CUNEIFORM SIGN SHIM TIMES A;Lo;0;L;;;;;N;;;;; 122C8;CUNEIFORM SIGN SHIM TIMES BAL;Lo;0;L;;;;;N;;;;; 122C9;CUNEIFORM SIGN SHIM TIMES BULUG;Lo;0;L;;;;;N;;;;; 122CA;CUNEIFORM SIGN SHIM TIMES DIN;Lo;0;L;;;;;N;;;;; 122CB;CUNEIFORM SIGN SHIM TIMES GAR;Lo;0;L;;;;;N;;;;; 122CC;CUNEIFORM SIGN SHIM TIMES IGI;Lo;0;L;;;;;N;;;;; 122CD;CUNEIFORM SIGN SHIM TIMES IGI GUNU;Lo;0;L;;;;;N;;;;; 122CE;CUNEIFORM SIGN SHIM TIMES KUSHU2;Lo;0;L;;;;;N;;;;; 122CF;CUNEIFORM SIGN SHIM TIMES LUL;Lo;0;L;;;;;N;;;;; 122D0;CUNEIFORM SIGN SHIM TIMES MUG;Lo;0;L;;;;;N;;;;; 122D1;CUNEIFORM SIGN SHIM TIMES SAL;Lo;0;L;;;;;N;;;;; 122D2;CUNEIFORM SIGN SHINIG;Lo;0;L;;;;;N;;;;; 122D3;CUNEIFORM SIGN SHIR;Lo;0;L;;;;;N;;;;; 122D4;CUNEIFORM SIGN SHIR TENU;Lo;0;L;;;;;N;;;;; 122D5;CUNEIFORM SIGN SHIR OVER SHIR BUR OVER BUR;Lo;0;L;;;;;N;;;;; 122D6;CUNEIFORM SIGN SHITA;Lo;0;L;;;;;N;;;;; 122D7;CUNEIFORM SIGN SHU;Lo;0;L;;;;;N;;;;; 122D8;CUNEIFORM SIGN SHU OVER INVERTED SHU;Lo;0;L;;;;;N;;;;; 122D9;CUNEIFORM SIGN SHU2;Lo;0;L;;;;;N;;;;; 122DA;CUNEIFORM SIGN SHUBUR;Lo;0;L;;;;;N;;;;; 122DB;CUNEIFORM SIGN SI;Lo;0;L;;;;;N;;;;; 122DC;CUNEIFORM SIGN SI GUNU;Lo;0;L;;;;;N;;;;; 122DD;CUNEIFORM SIGN SIG;Lo;0;L;;;;;N;;;;; 122DE;CUNEIFORM SIGN SIG4;Lo;0;L;;;;;N;;;;; 122DF;CUNEIFORM SIGN SIG4 OVER SIG4 SHU2;Lo;0;L;;;;;N;;;;; 122E0;CUNEIFORM SIGN SIK2;Lo;0;L;;;;;N;;;;; 122E1;CUNEIFORM SIGN SILA3;Lo;0;L;;;;;N;;;;; 122E2;CUNEIFORM SIGN SU;Lo;0;L;;;;;N;;;;; 122E3;CUNEIFORM SIGN SU OVER SU;Lo;0;L;;;;;N;;;;; 122E4;CUNEIFORM SIGN SUD;Lo;0;L;;;;;N;;;;; 122E5;CUNEIFORM SIGN SUD2;Lo;0;L;;;;;N;;;;; 122E6;CUNEIFORM SIGN SUHUR;Lo;0;L;;;;;N;;;;; 122E7;CUNEIFORM SIGN SUM;Lo;0;L;;;;;N;;;;; 122E8;CUNEIFORM SIGN SUMASH;Lo;0;L;;;;;N;;;;; 122E9;CUNEIFORM SIGN SUR;Lo;0;L;;;;;N;;;;; 122EA;CUNEIFORM SIGN SUR9;Lo;0;L;;;;;N;;;;; 122EB;CUNEIFORM SIGN TA;Lo;0;L;;;;;N;;;;; 122EC;CUNEIFORM SIGN TA ASTERISK;Lo;0;L;;;;;N;;;;; 122ED;CUNEIFORM SIGN TA TIMES HI;Lo;0;L;;;;;N;;;;; 122EE;CUNEIFORM SIGN TA TIMES MI;Lo;0;L;;;;;N;;;;; 122EF;CUNEIFORM SIGN TA GUNU;Lo;0;L;;;;;N;;;;; 122F0;CUNEIFORM SIGN TAB;Lo;0;L;;;;;N;;;;; 122F1;CUNEIFORM SIGN TAB OVER TAB NI OVER NI DISH OVER DISH;Lo;0;L;;;;;N;;;;; 122F2;CUNEIFORM SIGN TAB SQUARED;Lo;0;L;;;;;N;;;;; 122F3;CUNEIFORM SIGN TAG;Lo;0;L;;;;;N;;;;; 122F4;CUNEIFORM SIGN TAG TIMES BI;Lo;0;L;;;;;N;;;;; 122F5;CUNEIFORM SIGN TAG TIMES GUD;Lo;0;L;;;;;N;;;;; 122F6;CUNEIFORM SIGN TAG TIMES SHE;Lo;0;L;;;;;N;;;;; 122F7;CUNEIFORM SIGN TAG TIMES SHU;Lo;0;L;;;;;N;;;;; 122F8;CUNEIFORM SIGN TAG TIMES TUG2;Lo;0;L;;;;;N;;;;; 122F9;CUNEIFORM SIGN TAG TIMES UD;Lo;0;L;;;;;N;;;;; 122FA;CUNEIFORM SIGN TAK4;Lo;0;L;;;;;N;;;;; 122FB;CUNEIFORM SIGN TAR;Lo;0;L;;;;;N;;;;; 122FC;CUNEIFORM SIGN TE;Lo;0;L;;;;;N;;;;; 122FD;CUNEIFORM SIGN TE GUNU;Lo;0;L;;;;;N;;;;; 122FE;CUNEIFORM SIGN TI;Lo;0;L;;;;;N;;;;; 122FF;CUNEIFORM SIGN TI TENU;Lo;0;L;;;;;N;;;;; 12300;CUNEIFORM SIGN TIL;Lo;0;L;;;;;N;;;;; 12301;CUNEIFORM SIGN TIR;Lo;0;L;;;;;N;;;;; 12302;CUNEIFORM SIGN TIR TIMES TAK4;Lo;0;L;;;;;N;;;;; 12303;CUNEIFORM SIGN TIR OVER TIR;Lo;0;L;;;;;N;;;;; 12304;CUNEIFORM SIGN TIR OVER TIR GAD OVER GAD GAR OVER GAR;Lo;0;L;;;;;N;;;;; 12305;CUNEIFORM SIGN TU;Lo;0;L;;;;;N;;;;; 12306;CUNEIFORM SIGN TUG2;Lo;0;L;;;;;N;;;;; 12307;CUNEIFORM SIGN TUK;Lo;0;L;;;;;N;;;;; 12308;CUNEIFORM SIGN TUM;Lo;0;L;;;;;N;;;;; 12309;CUNEIFORM SIGN TUR;Lo;0;L;;;;;N;;;;; 1230A;CUNEIFORM SIGN TUR OVER TUR ZA OVER ZA;Lo;0;L;;;;;N;;;;; 1230B;CUNEIFORM SIGN U;Lo;0;L;;;;;N;;;;; 1230C;CUNEIFORM SIGN U GUD;Lo;0;L;;;;;N;;;;; 1230D;CUNEIFORM SIGN U U U;Lo;0;L;;;;;N;;;;; 1230E;CUNEIFORM SIGN U OVER U PA OVER PA GAR OVER GAR;Lo;0;L;;;;;N;;;;; 1230F;CUNEIFORM SIGN U OVER U SUR OVER SUR;Lo;0;L;;;;;N;;;;; 12310;CUNEIFORM SIGN U OVER U U REVERSED OVER U REVERSED;Lo;0;L;;;;;N;;;;; 12311;CUNEIFORM SIGN U2;Lo;0;L;;;;;N;;;;; 12312;CUNEIFORM SIGN UB;Lo;0;L;;;;;N;;;;; 12313;CUNEIFORM SIGN UD;Lo;0;L;;;;;N;;;;; 12314;CUNEIFORM SIGN UD KUSHU2;Lo;0;L;;;;;N;;;;; 12315;CUNEIFORM SIGN UD TIMES BAD;Lo;0;L;;;;;N;;;;; 12316;CUNEIFORM SIGN UD TIMES MI;Lo;0;L;;;;;N;;;;; 12317;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U;Lo;0;L;;;;;N;;;;; 12318;CUNEIFORM SIGN UD TIMES U PLUS U PLUS U GUNU;Lo;0;L;;;;;N;;;;; 12319;CUNEIFORM SIGN UD GUNU;Lo;0;L;;;;;N;;;;; 1231A;CUNEIFORM SIGN UD SHESHIG;Lo;0;L;;;;;N;;;;; 1231B;CUNEIFORM SIGN UD SHESHIG TIMES BAD;Lo;0;L;;;;;N;;;;; 1231C;CUNEIFORM SIGN UDUG;Lo;0;L;;;;;N;;;;; 1231D;CUNEIFORM SIGN UM;Lo;0;L;;;;;N;;;;; 1231E;CUNEIFORM SIGN UM TIMES LAGAB;Lo;0;L;;;;;N;;;;; 1231F;CUNEIFORM SIGN UM TIMES ME PLUS DA;Lo;0;L;;;;;N;;;;; 12320;CUNEIFORM SIGN UM TIMES SHA3;Lo;0;L;;;;;N;;;;; 12321;CUNEIFORM SIGN UM TIMES U;Lo;0;L;;;;;N;;;;; 12322;CUNEIFORM SIGN UMBIN;Lo;0;L;;;;;N;;;;; 12323;CUNEIFORM SIGN UMUM;Lo;0;L;;;;;N;;;;; 12324;CUNEIFORM SIGN UMUM TIMES KASKAL;Lo;0;L;;;;;N;;;;; 12325;CUNEIFORM SIGN UMUM TIMES PA;Lo;0;L;;;;;N;;;;; 12326;CUNEIFORM SIGN UN;Lo;0;L;;;;;N;;;;; 12327;CUNEIFORM SIGN UN GUNU;Lo;0;L;;;;;N;;;;; 12328;CUNEIFORM SIGN UR;Lo;0;L;;;;;N;;;;; 12329;CUNEIFORM SIGN UR CROSSING UR;Lo;0;L;;;;;N;;;;; 1232A;CUNEIFORM SIGN UR SHESHIG;Lo;0;L;;;;;N;;;;; 1232B;CUNEIFORM SIGN UR2;Lo;0;L;;;;;N;;;;; 1232C;CUNEIFORM SIGN UR2 TIMES A PLUS HA;Lo;0;L;;;;;N;;;;; 1232D;CUNEIFORM SIGN UR2 TIMES A PLUS NA;Lo;0;L;;;;;N;;;;; 1232E;CUNEIFORM SIGN UR2 TIMES AL;Lo;0;L;;;;;N;;;;; 1232F;CUNEIFORM SIGN UR2 TIMES HA;Lo;0;L;;;;;N;;;;; 12330;CUNEIFORM SIGN UR2 TIMES NUN;Lo;0;L;;;;;N;;;;; 12331;CUNEIFORM SIGN UR2 TIMES U2;Lo;0;L;;;;;N;;;;; 12332;CUNEIFORM SIGN UR2 TIMES U2 PLUS ASH;Lo;0;L;;;;;N;;;;; 12333;CUNEIFORM SIGN UR2 TIMES U2 PLUS BI;Lo;0;L;;;;;N;;;;; 12334;CUNEIFORM SIGN UR4;Lo;0;L;;;;;N;;;;; 12335;CUNEIFORM SIGN URI;Lo;0;L;;;;;N;;;;; 12336;CUNEIFORM SIGN URI3;Lo;0;L;;;;;N;;;;; 12337;CUNEIFORM SIGN URU;Lo;0;L;;;;;N;;;;; 12338;CUNEIFORM SIGN URU TIMES A;Lo;0;L;;;;;N;;;;; 12339;CUNEIFORM SIGN URU TIMES ASHGAB;Lo;0;L;;;;;N;;;;; 1233A;CUNEIFORM SIGN URU TIMES BAR;Lo;0;L;;;;;N;;;;; 1233B;CUNEIFORM SIGN URU TIMES DUN;Lo;0;L;;;;;N;;;;; 1233C;CUNEIFORM SIGN URU TIMES GA;Lo;0;L;;;;;N;;;;; 1233D;CUNEIFORM SIGN URU TIMES GAL;Lo;0;L;;;;;N;;;;; 1233E;CUNEIFORM SIGN URU TIMES GAN2 TENU;Lo;0;L;;;;;N;;;;; 1233F;CUNEIFORM SIGN URU TIMES GAR;Lo;0;L;;;;;N;;;;; 12340;CUNEIFORM SIGN URU TIMES GU;Lo;0;L;;;;;N;;;;; 12341;CUNEIFORM SIGN URU TIMES HA;Lo;0;L;;;;;N;;;;; 12342;CUNEIFORM SIGN URU TIMES IGI;Lo;0;L;;;;;N;;;;; 12343;CUNEIFORM SIGN URU TIMES IM;Lo;0;L;;;;;N;;;;; 12344;CUNEIFORM SIGN URU TIMES ISH;Lo;0;L;;;;;N;;;;; 12345;CUNEIFORM SIGN URU TIMES KI;Lo;0;L;;;;;N;;;;; 12346;CUNEIFORM SIGN URU TIMES LUM;Lo;0;L;;;;;N;;;;; 12347;CUNEIFORM SIGN URU TIMES MIN;Lo;0;L;;;;;N;;;;; 12348;CUNEIFORM SIGN URU TIMES PA;Lo;0;L;;;;;N;;;;; 12349;CUNEIFORM SIGN URU TIMES SHE;Lo;0;L;;;;;N;;;;; 1234A;CUNEIFORM SIGN URU TIMES SIG4;Lo;0;L;;;;;N;;;;; 1234B;CUNEIFORM SIGN URU TIMES TU;Lo;0;L;;;;;N;;;;; 1234C;CUNEIFORM SIGN URU TIMES U PLUS GUD;Lo;0;L;;;;;N;;;;; 1234D;CUNEIFORM SIGN URU TIMES UD;Lo;0;L;;;;;N;;;;; 1234E;CUNEIFORM SIGN URU TIMES URUDA;Lo;0;L;;;;;N;;;;; 1234F;CUNEIFORM SIGN URUDA;Lo;0;L;;;;;N;;;;; 12350;CUNEIFORM SIGN URUDA TIMES U;Lo;0;L;;;;;N;;;;; 12351;CUNEIFORM SIGN USH;Lo;0;L;;;;;N;;;;; 12352;CUNEIFORM SIGN USH TIMES A;Lo;0;L;;;;;N;;;;; 12353;CUNEIFORM SIGN USH TIMES KU;Lo;0;L;;;;;N;;;;; 12354;CUNEIFORM SIGN USH TIMES KUR;Lo;0;L;;;;;N;;;;; 12355;CUNEIFORM SIGN USH TIMES TAK4;Lo;0;L;;;;;N;;;;; 12356;CUNEIFORM SIGN USHX;Lo;0;L;;;;;N;;;;; 12357;CUNEIFORM SIGN USH2;Lo;0;L;;;;;N;;;;; 12358;CUNEIFORM SIGN USHUMX;Lo;0;L;;;;;N;;;;; 12359;CUNEIFORM SIGN UTUKI;Lo;0;L;;;;;N;;;;; 1235A;CUNEIFORM SIGN UZ3;Lo;0;L;;;;;N;;;;; 1235B;CUNEIFORM SIGN UZ3 TIMES KASKAL;Lo;0;L;;;;;N;;;;; 1235C;CUNEIFORM SIGN UZU;Lo;0;L;;;;;N;;;;; 1235D;CUNEIFORM SIGN ZA;Lo;0;L;;;;;N;;;;; 1235E;CUNEIFORM SIGN ZA TENU;Lo;0;L;;;;;N;;;;; 1235F;CUNEIFORM SIGN ZA SQUARED TIMES KUR;Lo;0;L;;;;;N;;;;; 12360;CUNEIFORM SIGN ZAG;Lo;0;L;;;;;N;;;;; 12361;CUNEIFORM SIGN ZAMX;Lo;0;L;;;;;N;;;;; 12362;CUNEIFORM SIGN ZE2;Lo;0;L;;;;;N;;;;; 12363;CUNEIFORM SIGN ZI;Lo;0;L;;;;;N;;;;; 12364;CUNEIFORM SIGN ZI OVER ZI;Lo;0;L;;;;;N;;;;; 12365;CUNEIFORM SIGN ZI3;Lo;0;L;;;;;N;;;;; 12366;CUNEIFORM SIGN ZIB;Lo;0;L;;;;;N;;;;; 12367;CUNEIFORM SIGN ZIB KABA TENU;Lo;0;L;;;;;N;;;;; 12368;CUNEIFORM SIGN ZIG;Lo;0;L;;;;;N;;;;; 12369;CUNEIFORM SIGN ZIZ2;Lo;0;L;;;;;N;;;;; 1236A;CUNEIFORM SIGN ZU;Lo;0;L;;;;;N;;;;; 1236B;CUNEIFORM SIGN ZU5;Lo;0;L;;;;;N;;;;; 1236C;CUNEIFORM SIGN ZU5 TIMES A;Lo;0;L;;;;;N;;;;; 1236D;CUNEIFORM SIGN ZUBUR;Lo;0;L;;;;;N;;;;; 1236E;CUNEIFORM SIGN ZUM;Lo;0;L;;;;;N;;;;; 12400;CUNEIFORM NUMERIC SIGN TWO ASH;Nl;0;L;;;;2;N;;;;; 12401;CUNEIFORM NUMERIC SIGN THREE ASH;Nl;0;L;;;;3;N;;;;; 12402;CUNEIFORM NUMERIC SIGN FOUR ASH;Nl;0;L;;;;4;N;;;;; 12403;CUNEIFORM NUMERIC SIGN FIVE ASH;Nl;0;L;;;;5;N;;;;; 12404;CUNEIFORM NUMERIC SIGN SIX ASH;Nl;0;L;;;;6;N;;;;; 12405;CUNEIFORM NUMERIC SIGN SEVEN ASH;Nl;0;L;;;;7;N;;;;; 12406;CUNEIFORM NUMERIC SIGN EIGHT ASH;Nl;0;L;;;;8;N;;;;; 12407;CUNEIFORM NUMERIC SIGN NINE ASH;Nl;0;L;;;;9;N;;;;; 12408;CUNEIFORM NUMERIC SIGN THREE DISH;Nl;0;L;;;;3;N;;;;; 12409;CUNEIFORM NUMERIC SIGN FOUR DISH;Nl;0;L;;;;4;N;;;;; 1240A;CUNEIFORM NUMERIC SIGN FIVE DISH;Nl;0;L;;;;5;N;;;;; 1240B;CUNEIFORM NUMERIC SIGN SIX DISH;Nl;0;L;;;;6;N;;;;; 1240C;CUNEIFORM NUMERIC SIGN SEVEN DISH;Nl;0;L;;;;7;N;;;;; 1240D;CUNEIFORM NUMERIC SIGN EIGHT DISH;Nl;0;L;;;;8;N;;;;; 1240E;CUNEIFORM NUMERIC SIGN NINE DISH;Nl;0;L;;;;9;N;;;;; 1240F;CUNEIFORM NUMERIC SIGN FOUR U;Nl;0;L;;;;4;N;;;;; 12410;CUNEIFORM NUMERIC SIGN FIVE U;Nl;0;L;;;;5;N;;;;; 12411;CUNEIFORM NUMERIC SIGN SIX U;Nl;0;L;;;;6;N;;;;; 12412;CUNEIFORM NUMERIC SIGN SEVEN U;Nl;0;L;;;;7;N;;;;; 12413;CUNEIFORM NUMERIC SIGN EIGHT U;Nl;0;L;;;;8;N;;;;; 12414;CUNEIFORM NUMERIC SIGN NINE U;Nl;0;L;;;;9;N;;;;; 12415;CUNEIFORM NUMERIC SIGN ONE GESH2;Nl;0;L;;;;1;N;;;;; 12416;CUNEIFORM NUMERIC SIGN TWO GESH2;Nl;0;L;;;;2;N;;;;; 12417;CUNEIFORM NUMERIC SIGN THREE GESH2;Nl;0;L;;;;3;N;;;;; 12418;CUNEIFORM NUMERIC SIGN FOUR GESH2;Nl;0;L;;;;4;N;;;;; 12419;CUNEIFORM NUMERIC SIGN FIVE GESH2;Nl;0;L;;;;5;N;;;;; 1241A;CUNEIFORM NUMERIC SIGN SIX GESH2;Nl;0;L;;;;6;N;;;;; 1241B;CUNEIFORM NUMERIC SIGN SEVEN GESH2;Nl;0;L;;;;7;N;;;;; 1241C;CUNEIFORM NUMERIC SIGN EIGHT GESH2;Nl;0;L;;;;8;N;;;;; 1241D;CUNEIFORM NUMERIC SIGN NINE GESH2;Nl;0;L;;;;9;N;;;;; 1241E;CUNEIFORM NUMERIC SIGN ONE GESHU;Nl;0;L;;;;1;N;;;;; 1241F;CUNEIFORM NUMERIC SIGN TWO GESHU;Nl;0;L;;;;2;N;;;;; 12420;CUNEIFORM NUMERIC SIGN THREE GESHU;Nl;0;L;;;;3;N;;;;; 12421;CUNEIFORM NUMERIC SIGN FOUR GESHU;Nl;0;L;;;;4;N;;;;; 12422;CUNEIFORM NUMERIC SIGN FIVE GESHU;Nl;0;L;;;;5;N;;;;; 12423;CUNEIFORM NUMERIC SIGN TWO SHAR2;Nl;0;L;;;;2;N;;;;; 12424;CUNEIFORM NUMERIC SIGN THREE SHAR2;Nl;0;L;;;;3;N;;;;; 12425;CUNEIFORM NUMERIC SIGN THREE SHAR2 VARIANT FORM;Nl;0;L;;;;3;N;;;;; 12426;CUNEIFORM NUMERIC SIGN FOUR SHAR2;Nl;0;L;;;;4;N;;;;; 12427;CUNEIFORM NUMERIC SIGN FIVE SHAR2;Nl;0;L;;;;5;N;;;;; 12428;CUNEIFORM NUMERIC SIGN SIX SHAR2;Nl;0;L;;;;6;N;;;;; 12429;CUNEIFORM NUMERIC SIGN SEVEN SHAR2;Nl;0;L;;;;7;N;;;;; 1242A;CUNEIFORM NUMERIC SIGN EIGHT SHAR2;Nl;0;L;;;;8;N;;;;; 1242B;CUNEIFORM NUMERIC SIGN NINE SHAR2;Nl;0;L;;;;9;N;;;;; 1242C;CUNEIFORM NUMERIC SIGN ONE SHARU;Nl;0;L;;;;1;N;;;;; 1242D;CUNEIFORM NUMERIC SIGN TWO SHARU;Nl;0;L;;;;2;N;;;;; 1242E;CUNEIFORM NUMERIC SIGN THREE SHARU;Nl;0;L;;;;3;N;;;;; 1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;; 12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;; 12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;; 12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;; 12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;; 12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;; 12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;; 12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;; 12437;CUNEIFORM NUMERIC SIGN THREE BURU VARIANT FORM;Nl;0;L;;;;3;N;;;;; 12438;CUNEIFORM NUMERIC SIGN FOUR BURU;Nl;0;L;;;;4;N;;;;; 12439;CUNEIFORM NUMERIC SIGN FIVE BURU;Nl;0;L;;;;5;N;;;;; 1243A;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH16;Nl;0;L;;;;3;N;;;;; 1243B;CUNEIFORM NUMERIC SIGN THREE VARIANT FORM ESH21;Nl;0;L;;;;3;N;;;;; 1243C;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU;Nl;0;L;;;;4;N;;;;; 1243D;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU4;Nl;0;L;;;;4;N;;;;; 1243E;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU A;Nl;0;L;;;;4;N;;;;; 1243F;CUNEIFORM NUMERIC SIGN FOUR VARIANT FORM LIMMU B;Nl;0;L;;;;4;N;;;;; 12440;CUNEIFORM NUMERIC SIGN SIX VARIANT FORM ASH9;Nl;0;L;;;;6;N;;;;; 12441;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN3;Nl;0;L;;;;7;N;;;;; 12442;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN A;Nl;0;L;;;;7;N;;;;; 12443;CUNEIFORM NUMERIC SIGN SEVEN VARIANT FORM IMIN B;Nl;0;L;;;;7;N;;;;; 12444;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU;Nl;0;L;;;;8;N;;;;; 12445;CUNEIFORM NUMERIC SIGN EIGHT VARIANT FORM USSU3;Nl;0;L;;;;8;N;;;;; 12446;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU;Nl;0;L;;;;9;N;;;;; 12447;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU3;Nl;0;L;;;;9;N;;;;; 12448;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU4;Nl;0;L;;;;9;N;;;;; 12449;CUNEIFORM NUMERIC SIGN NINE VARIANT FORM ILIMMU A;Nl;0;L;;;;9;N;;;;; 1244A;CUNEIFORM NUMERIC SIGN TWO ASH TENU;Nl;0;L;;;;2;N;;;;; 1244B;CUNEIFORM NUMERIC SIGN THREE ASH TENU;Nl;0;L;;;;3;N;;;;; 1244C;CUNEIFORM NUMERIC SIGN FOUR ASH TENU;Nl;0;L;;;;4;N;;;;; 1244D;CUNEIFORM NUMERIC SIGN FIVE ASH TENU;Nl;0;L;;;;5;N;;;;; 1244E;CUNEIFORM NUMERIC SIGN SIX ASH TENU;Nl;0;L;;;;6;N;;;;; 1244F;CUNEIFORM NUMERIC SIGN ONE BAN2;Nl;0;L;;;;1;N;;;;; 12450;CUNEIFORM NUMERIC SIGN TWO BAN2;Nl;0;L;;;;2;N;;;;; 12451;CUNEIFORM NUMERIC SIGN THREE BAN2;Nl;0;L;;;;3;N;;;;; 12452;CUNEIFORM NUMERIC SIGN FOUR BAN2;Nl;0;L;;;;4;N;;;;; 12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;; 12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;; 12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;; 12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;; 12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;; 12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;; 12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;; 1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;; 1245B;CUNEIFORM NUMERIC SIGN TWO THIRDS DISH;Nl;0;L;;;;2/3;N;;;;; 1245C;CUNEIFORM NUMERIC SIGN FIVE SIXTHS DISH;Nl;0;L;;;;5/6;N;;;;; 1245D;CUNEIFORM NUMERIC SIGN ONE THIRD VARIANT FORM A;Nl;0;L;;;;1/3;N;;;;; 1245E;CUNEIFORM NUMERIC SIGN TWO THIRDS VARIANT FORM A;Nl;0;L;;;;2/3;N;;;;; 1245F;CUNEIFORM NUMERIC SIGN ONE EIGHTH ASH;Nl;0;L;;;;1/8;N;;;;; 12460;CUNEIFORM NUMERIC SIGN ONE QUARTER ASH;Nl;0;L;;;;1/4;N;;;;; 12461;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE SIXTH;Nl;0;L;;;;1/6;N;;;;; 12462;CUNEIFORM NUMERIC SIGN OLD ASSYRIAN ONE QUARTER;Nl;0;L;;;;1/4;N;;;;; 12470;CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER;Po;0;L;;;;;N;;;;; 12471;CUNEIFORM PUNCTUATION SIGN VERTICAL COLON;Po;0;L;;;;;N;;;;; 12472;CUNEIFORM PUNCTUATION SIGN DIAGONAL COLON;Po;0;L;;;;;N;;;;; 12473;CUNEIFORM PUNCTUATION SIGN DIAGONAL TRICOLON;Po;0;L;;;;;N;;;;; 1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;; 1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;; 1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;; 1D003;BYZANTINE MUSICAL SYMBOL OXEIA EKFONITIKON;So;0;L;;;;;N;;;;; 1D004;BYZANTINE MUSICAL SYMBOL OXEIA DIPLI;So;0;L;;;;;N;;;;; 1D005;BYZANTINE MUSICAL SYMBOL VAREIA EKFONITIKON;So;0;L;;;;;N;;;;; 1D006;BYZANTINE MUSICAL SYMBOL VAREIA DIPLI;So;0;L;;;;;N;;;;; 1D007;BYZANTINE MUSICAL SYMBOL KATHISTI;So;0;L;;;;;N;;;;; 1D008;BYZANTINE MUSICAL SYMBOL SYRMATIKI;So;0;L;;;;;N;;;;; 1D009;BYZANTINE MUSICAL SYMBOL PARAKLITIKI;So;0;L;;;;;N;;;;; 1D00A;BYZANTINE MUSICAL SYMBOL YPOKRISIS;So;0;L;;;;;N;;;;; 1D00B;BYZANTINE MUSICAL SYMBOL YPOKRISIS DIPLI;So;0;L;;;;;N;;;;; 1D00C;BYZANTINE MUSICAL SYMBOL KREMASTI;So;0;L;;;;;N;;;;; 1D00D;BYZANTINE MUSICAL SYMBOL APESO EKFONITIKON;So;0;L;;;;;N;;;;; 1D00E;BYZANTINE MUSICAL SYMBOL EXO EKFONITIKON;So;0;L;;;;;N;;;;; 1D00F;BYZANTINE MUSICAL SYMBOL TELEIA;So;0;L;;;;;N;;;;; 1D010;BYZANTINE MUSICAL SYMBOL KENTIMATA;So;0;L;;;;;N;;;;; 1D011;BYZANTINE MUSICAL SYMBOL APOSTROFOS;So;0;L;;;;;N;;;;; 1D012;BYZANTINE MUSICAL SYMBOL APOSTROFOS DIPLI;So;0;L;;;;;N;;;;; 1D013;BYZANTINE MUSICAL SYMBOL SYNEVMA;So;0;L;;;;;N;;;;; 1D014;BYZANTINE MUSICAL SYMBOL THITA;So;0;L;;;;;N;;;;; 1D015;BYZANTINE MUSICAL SYMBOL OLIGON ARCHAION;So;0;L;;;;;N;;;;; 1D016;BYZANTINE MUSICAL SYMBOL GORGON ARCHAION;So;0;L;;;;;N;;;;; 1D017;BYZANTINE MUSICAL SYMBOL PSILON;So;0;L;;;;;N;;;;; 1D018;BYZANTINE MUSICAL SYMBOL CHAMILON;So;0;L;;;;;N;;;;; 1D019;BYZANTINE MUSICAL SYMBOL VATHY;So;0;L;;;;;N;;;;; 1D01A;BYZANTINE MUSICAL SYMBOL ISON ARCHAION;So;0;L;;;;;N;;;;; 1D01B;BYZANTINE MUSICAL SYMBOL KENTIMA ARCHAION;So;0;L;;;;;N;;;;; 1D01C;BYZANTINE MUSICAL SYMBOL KENTIMATA ARCHAION;So;0;L;;;;;N;;;;; 1D01D;BYZANTINE MUSICAL SYMBOL SAXIMATA;So;0;L;;;;;N;;;;; 1D01E;BYZANTINE MUSICAL SYMBOL PARICHON;So;0;L;;;;;N;;;;; 1D01F;BYZANTINE MUSICAL SYMBOL STAVROS APODEXIA;So;0;L;;;;;N;;;;; 1D020;BYZANTINE MUSICAL SYMBOL OXEIAI ARCHAION;So;0;L;;;;;N;;;;; 1D021;BYZANTINE MUSICAL SYMBOL VAREIAI ARCHAION;So;0;L;;;;;N;;;;; 1D022;BYZANTINE MUSICAL SYMBOL APODERMA ARCHAION;So;0;L;;;;;N;;;;; 1D023;BYZANTINE MUSICAL SYMBOL APOTHEMA;So;0;L;;;;;N;;;;; 1D024;BYZANTINE MUSICAL SYMBOL KLASMA;So;0;L;;;;;N;;;;; 1D025;BYZANTINE MUSICAL SYMBOL REVMA;So;0;L;;;;;N;;;;; 1D026;BYZANTINE MUSICAL SYMBOL PIASMA ARCHAION;So;0;L;;;;;N;;;;; 1D027;BYZANTINE MUSICAL SYMBOL TINAGMA;So;0;L;;;;;N;;;;; 1D028;BYZANTINE MUSICAL SYMBOL ANATRICHISMA;So;0;L;;;;;N;;;;; 1D029;BYZANTINE MUSICAL SYMBOL SEISMA;So;0;L;;;;;N;;;;; 1D02A;BYZANTINE MUSICAL SYMBOL SYNAGMA ARCHAION;So;0;L;;;;;N;;;;; 1D02B;BYZANTINE MUSICAL SYMBOL SYNAGMA META STAVROU;So;0;L;;;;;N;;;;; 1D02C;BYZANTINE MUSICAL SYMBOL OYRANISMA ARCHAION;So;0;L;;;;;N;;;;; 1D02D;BYZANTINE MUSICAL SYMBOL THEMA;So;0;L;;;;;N;;;;; 1D02E;BYZANTINE MUSICAL SYMBOL LEMOI;So;0;L;;;;;N;;;;; 1D02F;BYZANTINE MUSICAL SYMBOL DYO;So;0;L;;;;;N;;;;; 1D030;BYZANTINE MUSICAL SYMBOL TRIA;So;0;L;;;;;N;;;;; 1D031;BYZANTINE MUSICAL SYMBOL TESSERA;So;0;L;;;;;N;;;;; 1D032;BYZANTINE MUSICAL SYMBOL KRATIMATA;So;0;L;;;;;N;;;;; 1D033;BYZANTINE MUSICAL SYMBOL APESO EXO NEO;So;0;L;;;;;N;;;;; 1D034;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION;So;0;L;;;;;N;;;;; 1D035;BYZANTINE MUSICAL SYMBOL IMIFTHORA;So;0;L;;;;;N;;;;; 1D036;BYZANTINE MUSICAL SYMBOL TROMIKON ARCHAION;So;0;L;;;;;N;;;;; 1D037;BYZANTINE MUSICAL SYMBOL KATAVA TROMIKON;So;0;L;;;;;N;;;;; 1D038;BYZANTINE MUSICAL SYMBOL PELASTON;So;0;L;;;;;N;;;;; 1D039;BYZANTINE MUSICAL SYMBOL PSIFISTON;So;0;L;;;;;N;;;;; 1D03A;BYZANTINE MUSICAL SYMBOL KONTEVMA;So;0;L;;;;;N;;;;; 1D03B;BYZANTINE MUSICAL SYMBOL CHOREVMA ARCHAION;So;0;L;;;;;N;;;;; 1D03C;BYZANTINE MUSICAL SYMBOL RAPISMA;So;0;L;;;;;N;;;;; 1D03D;BYZANTINE MUSICAL SYMBOL PARAKALESMA ARCHAION;So;0;L;;;;;N;;;;; 1D03E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI ARCHAION;So;0;L;;;;;N;;;;; 1D03F;BYZANTINE MUSICAL SYMBOL ICHADIN;So;0;L;;;;;N;;;;; 1D040;BYZANTINE MUSICAL SYMBOL NANA;So;0;L;;;;;N;;;;; 1D041;BYZANTINE MUSICAL SYMBOL PETASMA;So;0;L;;;;;N;;;;; 1D042;BYZANTINE MUSICAL SYMBOL KONTEVMA ALLO;So;0;L;;;;;N;;;;; 1D043;BYZANTINE MUSICAL SYMBOL TROMIKON ALLO;So;0;L;;;;;N;;;;; 1D044;BYZANTINE MUSICAL SYMBOL STRAGGISMATA;So;0;L;;;;;N;;;;; 1D045;BYZANTINE MUSICAL SYMBOL GRONTHISMATA;So;0;L;;;;;N;;;;; 1D046;BYZANTINE MUSICAL SYMBOL ISON NEO;So;0;L;;;;;N;;;;; 1D047;BYZANTINE MUSICAL SYMBOL OLIGON NEO;So;0;L;;;;;N;;;;; 1D048;BYZANTINE MUSICAL SYMBOL OXEIA NEO;So;0;L;;;;;N;;;;; 1D049;BYZANTINE MUSICAL SYMBOL PETASTI;So;0;L;;;;;N;;;;; 1D04A;BYZANTINE MUSICAL SYMBOL KOUFISMA;So;0;L;;;;;N;;;;; 1D04B;BYZANTINE MUSICAL SYMBOL PETASTOKOUFISMA;So;0;L;;;;;N;;;;; 1D04C;BYZANTINE MUSICAL SYMBOL KRATIMOKOUFISMA;So;0;L;;;;;N;;;;; 1D04D;BYZANTINE MUSICAL SYMBOL PELASTON NEO;So;0;L;;;;;N;;;;; 1D04E;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO ANO;So;0;L;;;;;N;;;;; 1D04F;BYZANTINE MUSICAL SYMBOL KENTIMA NEO ANO;So;0;L;;;;;N;;;;; 1D050;BYZANTINE MUSICAL SYMBOL YPSILI;So;0;L;;;;;N;;;;; 1D051;BYZANTINE MUSICAL SYMBOL APOSTROFOS NEO;So;0;L;;;;;N;;;;; 1D052;BYZANTINE MUSICAL SYMBOL APOSTROFOI SYNDESMOS NEO;So;0;L;;;;;N;;;;; 1D053;BYZANTINE MUSICAL SYMBOL YPORROI;So;0;L;;;;;N;;;;; 1D054;BYZANTINE MUSICAL SYMBOL KRATIMOYPORROON;So;0;L;;;;;N;;;;; 1D055;BYZANTINE MUSICAL SYMBOL ELAFRON;So;0;L;;;;;N;;;;; 1D056;BYZANTINE MUSICAL SYMBOL CHAMILI;So;0;L;;;;;N;;;;; 1D057;BYZANTINE MUSICAL SYMBOL MIKRON ISON;So;0;L;;;;;N;;;;; 1D058;BYZANTINE MUSICAL SYMBOL VAREIA NEO;So;0;L;;;;;N;;;;; 1D059;BYZANTINE MUSICAL SYMBOL PIASMA NEO;So;0;L;;;;;N;;;;; 1D05A;BYZANTINE MUSICAL SYMBOL PSIFISTON NEO;So;0;L;;;;;N;;;;; 1D05B;BYZANTINE MUSICAL SYMBOL OMALON;So;0;L;;;;;N;;;;; 1D05C;BYZANTINE MUSICAL SYMBOL ANTIKENOMA;So;0;L;;;;;N;;;;; 1D05D;BYZANTINE MUSICAL SYMBOL LYGISMA;So;0;L;;;;;N;;;;; 1D05E;BYZANTINE MUSICAL SYMBOL PARAKLITIKI NEO;So;0;L;;;;;N;;;;; 1D05F;BYZANTINE MUSICAL SYMBOL PARAKALESMA NEO;So;0;L;;;;;N;;;;; 1D060;BYZANTINE MUSICAL SYMBOL ETERON PARAKALESMA;So;0;L;;;;;N;;;;; 1D061;BYZANTINE MUSICAL SYMBOL KYLISMA;So;0;L;;;;;N;;;;; 1D062;BYZANTINE MUSICAL SYMBOL ANTIKENOKYLISMA;So;0;L;;;;;N;;;;; 1D063;BYZANTINE MUSICAL SYMBOL TROMIKON NEO;So;0;L;;;;;N;;;;; 1D064;BYZANTINE MUSICAL SYMBOL EKSTREPTON;So;0;L;;;;;N;;;;; 1D065;BYZANTINE MUSICAL SYMBOL SYNAGMA NEO;So;0;L;;;;;N;;;;; 1D066;BYZANTINE MUSICAL SYMBOL SYRMA;So;0;L;;;;;N;;;;; 1D067;BYZANTINE MUSICAL SYMBOL CHOREVMA NEO;So;0;L;;;;;N;;;;; 1D068;BYZANTINE MUSICAL SYMBOL EPEGERMA;So;0;L;;;;;N;;;;; 1D069;BYZANTINE MUSICAL SYMBOL SEISMA NEO;So;0;L;;;;;N;;;;; 1D06A;BYZANTINE MUSICAL SYMBOL XIRON KLASMA;So;0;L;;;;;N;;;;; 1D06B;BYZANTINE MUSICAL SYMBOL TROMIKOPSIFISTON;So;0;L;;;;;N;;;;; 1D06C;BYZANTINE MUSICAL SYMBOL PSIFISTOLYGISMA;So;0;L;;;;;N;;;;; 1D06D;BYZANTINE MUSICAL SYMBOL TROMIKOLYGISMA;So;0;L;;;;;N;;;;; 1D06E;BYZANTINE MUSICAL SYMBOL TROMIKOPARAKALESMA;So;0;L;;;;;N;;;;; 1D06F;BYZANTINE MUSICAL SYMBOL PSIFISTOPARAKALESMA;So;0;L;;;;;N;;;;; 1D070;BYZANTINE MUSICAL SYMBOL TROMIKOSYNAGMA;So;0;L;;;;;N;;;;; 1D071;BYZANTINE MUSICAL SYMBOL PSIFISTOSYNAGMA;So;0;L;;;;;N;;;;; 1D072;BYZANTINE MUSICAL SYMBOL GORGOSYNTHETON;So;0;L;;;;;N;;;;; 1D073;BYZANTINE MUSICAL SYMBOL ARGOSYNTHETON;So;0;L;;;;;N;;;;; 1D074;BYZANTINE MUSICAL SYMBOL ETERON ARGOSYNTHETON;So;0;L;;;;;N;;;;; 1D075;BYZANTINE MUSICAL SYMBOL OYRANISMA NEO;So;0;L;;;;;N;;;;; 1D076;BYZANTINE MUSICAL SYMBOL THEMATISMOS ESO;So;0;L;;;;;N;;;;; 1D077;BYZANTINE MUSICAL SYMBOL THEMATISMOS EXO;So;0;L;;;;;N;;;;; 1D078;BYZANTINE MUSICAL SYMBOL THEMA APLOUN;So;0;L;;;;;N;;;;; 1D079;BYZANTINE MUSICAL SYMBOL THES KAI APOTHES;So;0;L;;;;;N;;;;; 1D07A;BYZANTINE MUSICAL SYMBOL KATAVASMA;So;0;L;;;;;N;;;;; 1D07B;BYZANTINE MUSICAL SYMBOL ENDOFONON;So;0;L;;;;;N;;;;; 1D07C;BYZANTINE MUSICAL SYMBOL YFEN KATO;So;0;L;;;;;N;;;;; 1D07D;BYZANTINE MUSICAL SYMBOL YFEN ANO;So;0;L;;;;;N;;;;; 1D07E;BYZANTINE MUSICAL SYMBOL STAVROS;So;0;L;;;;;N;;;;; 1D07F;BYZANTINE MUSICAL SYMBOL KLASMA ANO;So;0;L;;;;;N;;;;; 1D080;BYZANTINE MUSICAL SYMBOL DIPLI ARCHAION;So;0;L;;;;;N;;;;; 1D081;BYZANTINE MUSICAL SYMBOL KRATIMA ARCHAION;So;0;L;;;;;N;;;;; 1D082;BYZANTINE MUSICAL SYMBOL KRATIMA ALLO;So;0;L;;;;;N;;;;; 1D083;BYZANTINE MUSICAL SYMBOL KRATIMA NEO;So;0;L;;;;;N;;;;; 1D084;BYZANTINE MUSICAL SYMBOL APODERMA NEO;So;0;L;;;;;N;;;;; 1D085;BYZANTINE MUSICAL SYMBOL APLI;So;0;L;;;;;N;;;;; 1D086;BYZANTINE MUSICAL SYMBOL DIPLI;So;0;L;;;;;N;;;;; 1D087;BYZANTINE MUSICAL SYMBOL TRIPLI;So;0;L;;;;;N;;;;; 1D088;BYZANTINE MUSICAL SYMBOL TETRAPLI;So;0;L;;;;;N;;;;; 1D089;BYZANTINE MUSICAL SYMBOL KORONIS;So;0;L;;;;;N;;;;; 1D08A;BYZANTINE MUSICAL SYMBOL LEIMMA ENOS CHRONOU;So;0;L;;;;;N;;;;; 1D08B;BYZANTINE MUSICAL SYMBOL LEIMMA DYO CHRONON;So;0;L;;;;;N;;;;; 1D08C;BYZANTINE MUSICAL SYMBOL LEIMMA TRION CHRONON;So;0;L;;;;;N;;;;; 1D08D;BYZANTINE MUSICAL SYMBOL LEIMMA TESSARON CHRONON;So;0;L;;;;;N;;;;; 1D08E;BYZANTINE MUSICAL SYMBOL LEIMMA IMISEOS CHRONOU;So;0;L;;;;;N;;;;; 1D08F;BYZANTINE MUSICAL SYMBOL GORGON NEO ANO;So;0;L;;;;;N;;;;; 1D090;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON ARISTERA;So;0;L;;;;;N;;;;; 1D091;BYZANTINE MUSICAL SYMBOL GORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; 1D092;BYZANTINE MUSICAL SYMBOL DIGORGON;So;0;L;;;;;N;;;;; 1D093;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA KATO;So;0;L;;;;;N;;;;; 1D094;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON ARISTERA ANO;So;0;L;;;;;N;;;;; 1D095;BYZANTINE MUSICAL SYMBOL DIGORGON PARESTIGMENON DEXIA;So;0;L;;;;;N;;;;; 1D096;BYZANTINE MUSICAL SYMBOL TRIGORGON;So;0;L;;;;;N;;;;; 1D097;BYZANTINE MUSICAL SYMBOL ARGON;So;0;L;;;;;N;;;;; 1D098;BYZANTINE MUSICAL SYMBOL IMIDIARGON;So;0;L;;;;;N;;;;; 1D099;BYZANTINE MUSICAL SYMBOL DIARGON;So;0;L;;;;;N;;;;; 1D09A;BYZANTINE MUSICAL SYMBOL AGOGI POLI ARGI;So;0;L;;;;;N;;;;; 1D09B;BYZANTINE MUSICAL SYMBOL AGOGI ARGOTERI;So;0;L;;;;;N;;;;; 1D09C;BYZANTINE MUSICAL SYMBOL AGOGI ARGI;So;0;L;;;;;N;;;;; 1D09D;BYZANTINE MUSICAL SYMBOL AGOGI METRIA;So;0;L;;;;;N;;;;; 1D09E;BYZANTINE MUSICAL SYMBOL AGOGI MESI;So;0;L;;;;;N;;;;; 1D09F;BYZANTINE MUSICAL SYMBOL AGOGI GORGI;So;0;L;;;;;N;;;;; 1D0A0;BYZANTINE MUSICAL SYMBOL AGOGI GORGOTERI;So;0;L;;;;;N;;;;; 1D0A1;BYZANTINE MUSICAL SYMBOL AGOGI POLI GORGI;So;0;L;;;;;N;;;;; 1D0A2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOS ICHOS;So;0;L;;;;;N;;;;; 1D0A3;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI PROTOS ICHOS;So;0;L;;;;;N;;;;; 1D0A4;BYZANTINE MUSICAL SYMBOL MARTYRIA DEYTEROS ICHOS;So;0;L;;;;;N;;;;; 1D0A5;BYZANTINE MUSICAL SYMBOL MARTYRIA ALLI DEYTEROS ICHOS;So;0;L;;;;;N;;;;; 1D0A6;BYZANTINE MUSICAL SYMBOL MARTYRIA TRITOS ICHOS;So;0;L;;;;;N;;;;; 1D0A7;BYZANTINE MUSICAL SYMBOL MARTYRIA TRIFONIAS;So;0;L;;;;;N;;;;; 1D0A8;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS ICHOS;So;0;L;;;;;N;;;;; 1D0A9;BYZANTINE MUSICAL SYMBOL MARTYRIA TETARTOS LEGETOS ICHOS;So;0;L;;;;;N;;;;; 1D0AA;BYZANTINE MUSICAL SYMBOL MARTYRIA LEGETOS ICHOS;So;0;L;;;;;N;;;;; 1D0AB;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS ICHOS;So;0;L;;;;;N;;;;; 1D0AC;BYZANTINE MUSICAL SYMBOL ISAKIA TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; 1D0AD;BYZANTINE MUSICAL SYMBOL APOSTROFOI TELOUS ICHIMATOS;So;0;L;;;;;N;;;;; 1D0AE;BYZANTINE MUSICAL SYMBOL FANEROSIS TETRAFONIAS;So;0;L;;;;;N;;;;; 1D0AF;BYZANTINE MUSICAL SYMBOL FANEROSIS MONOFONIAS;So;0;L;;;;;N;;;;; 1D0B0;BYZANTINE MUSICAL SYMBOL FANEROSIS DIFONIAS;So;0;L;;;;;N;;;;; 1D0B1;BYZANTINE MUSICAL SYMBOL MARTYRIA VARYS ICHOS;So;0;L;;;;;N;;;;; 1D0B2;BYZANTINE MUSICAL SYMBOL MARTYRIA PROTOVARYS ICHOS;So;0;L;;;;;N;;;;; 1D0B3;BYZANTINE MUSICAL SYMBOL MARTYRIA PLAGIOS TETARTOS ICHOS;So;0;L;;;;;N;;;;; 1D0B4;BYZANTINE MUSICAL SYMBOL GORTHMIKON N APLOUN;So;0;L;;;;;N;;;;; 1D0B5;BYZANTINE MUSICAL SYMBOL GORTHMIKON N DIPLOUN;So;0;L;;;;;N;;;;; 1D0B6;BYZANTINE MUSICAL SYMBOL ENARXIS KAI FTHORA VOU;So;0;L;;;;;N;;;;; 1D0B7;BYZANTINE MUSICAL SYMBOL IMIFONON;So;0;L;;;;;N;;;;; 1D0B8;BYZANTINE MUSICAL SYMBOL IMIFTHORON;So;0;L;;;;;N;;;;; 1D0B9;BYZANTINE MUSICAL SYMBOL FTHORA ARCHAION DEYTEROU ICHOU;So;0;L;;;;;N;;;;; 1D0BA;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI PA;So;0;L;;;;;N;;;;; 1D0BB;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NANA;So;0;L;;;;;N;;;;; 1D0BC;BYZANTINE MUSICAL SYMBOL FTHORA NAOS ICHOS;So;0;L;;;;;N;;;;; 1D0BD;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI DI;So;0;L;;;;;N;;;;; 1D0BE;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON DIATONON DI;So;0;L;;;;;N;;;;; 1D0BF;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI KE;So;0;L;;;;;N;;;;; 1D0C0;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI ZO;So;0;L;;;;;N;;;;; 1D0C1;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI KATO;So;0;L;;;;;N;;;;; 1D0C2;BYZANTINE MUSICAL SYMBOL FTHORA DIATONIKI NI ANO;So;0;L;;;;;N;;;;; 1D0C3;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA DIFONIAS;So;0;L;;;;;N;;;;; 1D0C4;BYZANTINE MUSICAL SYMBOL FTHORA MALAKON CHROMA MONOFONIAS;So;0;L;;;;;N;;;;; 1D0C5;BYZANTINE MUSICAL SYMBOL FHTORA SKLIRON CHROMA VASIS;So;0;L;;;;;N;;;;; 1D0C6;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA SYNAFI;So;0;L;;;;;N;;;;; 1D0C7;BYZANTINE MUSICAL SYMBOL FTHORA NENANO;So;0;L;;;;;N;;;;; 1D0C8;BYZANTINE MUSICAL SYMBOL CHROA ZYGOS;So;0;L;;;;;N;;;;; 1D0C9;BYZANTINE MUSICAL SYMBOL CHROA KLITON;So;0;L;;;;;N;;;;; 1D0CA;BYZANTINE MUSICAL SYMBOL CHROA SPATHI;So;0;L;;;;;N;;;;; 1D0CB;BYZANTINE MUSICAL SYMBOL FTHORA I YFESIS TETARTIMORION;So;0;L;;;;;N;;;;; 1D0CC;BYZANTINE MUSICAL SYMBOL FTHORA ENARMONIOS ANTIFONIA;So;0;L;;;;;N;;;;; 1D0CD;BYZANTINE MUSICAL SYMBOL YFESIS TRITIMORION;So;0;L;;;;;N;;;;; 1D0CE;BYZANTINE MUSICAL SYMBOL DIESIS TRITIMORION;So;0;L;;;;;N;;;;; 1D0CF;BYZANTINE MUSICAL SYMBOL DIESIS TETARTIMORION;So;0;L;;;;;N;;;;; 1D0D0;BYZANTINE MUSICAL SYMBOL DIESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; 1D0D1;BYZANTINE MUSICAL SYMBOL DIESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; 1D0D2;BYZANTINE MUSICAL SYMBOL DIESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; 1D0D3;BYZANTINE MUSICAL SYMBOL DIESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; 1D0D4;BYZANTINE MUSICAL SYMBOL YFESIS APLI DYO DODEKATA;So;0;L;;;;;N;;;;; 1D0D5;BYZANTINE MUSICAL SYMBOL YFESIS MONOGRAMMOS TESSERA DODEKATA;So;0;L;;;;;N;;;;; 1D0D6;BYZANTINE MUSICAL SYMBOL YFESIS DIGRAMMOS EX DODEKATA;So;0;L;;;;;N;;;;; 1D0D7;BYZANTINE MUSICAL SYMBOL YFESIS TRIGRAMMOS OKTO DODEKATA;So;0;L;;;;;N;;;;; 1D0D8;BYZANTINE MUSICAL SYMBOL GENIKI DIESIS;So;0;L;;;;;N;;;;; 1D0D9;BYZANTINE MUSICAL SYMBOL GENIKI YFESIS;So;0;L;;;;;N;;;;; 1D0DA;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MIKRI;So;0;L;;;;;N;;;;; 1D0DB;BYZANTINE MUSICAL SYMBOL DIASTOLI APLI MEGALI;So;0;L;;;;;N;;;;; 1D0DC;BYZANTINE MUSICAL SYMBOL DIASTOLI DIPLI;So;0;L;;;;;N;;;;; 1D0DD;BYZANTINE MUSICAL SYMBOL DIASTOLI THESEOS;So;0;L;;;;;N;;;;; 1D0DE;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS;So;0;L;;;;;N;;;;; 1D0DF;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS DISIMOU;So;0;L;;;;;N;;;;; 1D0E0;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TRISIMOU;So;0;L;;;;;N;;;;; 1D0E1;BYZANTINE MUSICAL SYMBOL SIMANSIS THESEOS TETRASIMOU;So;0;L;;;;;N;;;;; 1D0E2;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS;So;0;L;;;;;N;;;;; 1D0E3;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS DISIMOU;So;0;L;;;;;N;;;;; 1D0E4;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TRISIMOU;So;0;L;;;;;N;;;;; 1D0E5;BYZANTINE MUSICAL SYMBOL SIMANSIS ARSEOS TETRASIMOU;So;0;L;;;;;N;;;;; 1D0E6;BYZANTINE MUSICAL SYMBOL DIGRAMMA GG;So;0;L;;;;;N;;;;; 1D0E7;BYZANTINE MUSICAL SYMBOL DIFTOGGOS OU;So;0;L;;;;;N;;;;; 1D0E8;BYZANTINE MUSICAL SYMBOL STIGMA;So;0;L;;;;;N;;;;; 1D0E9;BYZANTINE MUSICAL SYMBOL ARKTIKO PA;So;0;L;;;;;N;;;;; 1D0EA;BYZANTINE MUSICAL SYMBOL ARKTIKO VOU;So;0;L;;;;;N;;;;; 1D0EB;BYZANTINE MUSICAL SYMBOL ARKTIKO GA;So;0;L;;;;;N;;;;; 1D0EC;BYZANTINE MUSICAL SYMBOL ARKTIKO DI;So;0;L;;;;;N;;;;; 1D0ED;BYZANTINE MUSICAL SYMBOL ARKTIKO KE;So;0;L;;;;;N;;;;; 1D0EE;BYZANTINE MUSICAL SYMBOL ARKTIKO ZO;So;0;L;;;;;N;;;;; 1D0EF;BYZANTINE MUSICAL SYMBOL ARKTIKO NI;So;0;L;;;;;N;;;;; 1D0F0;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO MESO;So;0;L;;;;;N;;;;; 1D0F1;BYZANTINE MUSICAL SYMBOL KENTIMA NEO MESO;So;0;L;;;;;N;;;;; 1D0F2;BYZANTINE MUSICAL SYMBOL KENTIMATA NEO KATO;So;0;L;;;;;N;;;;; 1D0F3;BYZANTINE MUSICAL SYMBOL KENTIMA NEO KATO;So;0;L;;;;;N;;;;; 1D0F4;BYZANTINE MUSICAL SYMBOL KLASMA KATO;So;0;L;;;;;N;;;;; 1D0F5;BYZANTINE MUSICAL SYMBOL GORGON NEO KATO;So;0;L;;;;;N;;;;; 1D100;MUSICAL SYMBOL SINGLE BARLINE;So;0;L;;;;;N;;;;; 1D101;MUSICAL SYMBOL DOUBLE BARLINE;So;0;L;;;;;N;;;;; 1D102;MUSICAL SYMBOL FINAL BARLINE;So;0;L;;;;;N;;;;; 1D103;MUSICAL SYMBOL REVERSE FINAL BARLINE;So;0;L;;;;;N;;;;; 1D104;MUSICAL SYMBOL DASHED BARLINE;So;0;L;;;;;N;;;;; 1D105;MUSICAL SYMBOL SHORT BARLINE;So;0;L;;;;;N;;;;; 1D106;MUSICAL SYMBOL LEFT REPEAT SIGN;So;0;L;;;;;N;;;;; 1D107;MUSICAL SYMBOL RIGHT REPEAT SIGN;So;0;L;;;;;N;;;;; 1D108;MUSICAL SYMBOL REPEAT DOTS;So;0;L;;;;;N;;;;; 1D109;MUSICAL SYMBOL DAL SEGNO;So;0;L;;;;;N;;;;; 1D10A;MUSICAL SYMBOL DA CAPO;So;0;L;;;;;N;;;;; 1D10B;MUSICAL SYMBOL SEGNO;So;0;L;;;;;N;;;;; 1D10C;MUSICAL SYMBOL CODA;So;0;L;;;;;N;;;;; 1D10D;MUSICAL SYMBOL REPEATED FIGURE-1;So;0;L;;;;;N;;;;; 1D10E;MUSICAL SYMBOL REPEATED FIGURE-2;So;0;L;;;;;N;;;;; 1D10F;MUSICAL SYMBOL REPEATED FIGURE-3;So;0;L;;;;;N;;;;; 1D110;MUSICAL SYMBOL FERMATA;So;0;L;;;;;N;;;;; 1D111;MUSICAL SYMBOL FERMATA BELOW;So;0;L;;;;;N;;;;; 1D112;MUSICAL SYMBOL BREATH MARK;So;0;L;;;;;N;;;;; 1D113;MUSICAL SYMBOL CAESURA;So;0;L;;;;;N;;;;; 1D114;MUSICAL SYMBOL BRACE;So;0;L;;;;;N;;;;; 1D115;MUSICAL SYMBOL BRACKET;So;0;L;;;;;N;;;;; 1D116;MUSICAL SYMBOL ONE-LINE STAFF;So;0;L;;;;;N;;;;; 1D117;MUSICAL SYMBOL TWO-LINE STAFF;So;0;L;;;;;N;;;;; 1D118;MUSICAL SYMBOL THREE-LINE STAFF;So;0;L;;;;;N;;;;; 1D119;MUSICAL SYMBOL FOUR-LINE STAFF;So;0;L;;;;;N;;;;; 1D11A;MUSICAL SYMBOL FIVE-LINE STAFF;So;0;L;;;;;N;;;;; 1D11B;MUSICAL SYMBOL SIX-LINE STAFF;So;0;L;;;;;N;;;;; 1D11C;MUSICAL SYMBOL SIX-STRING FRETBOARD;So;0;L;;;;;N;;;;; 1D11D;MUSICAL SYMBOL FOUR-STRING FRETBOARD;So;0;L;;;;;N;;;;; 1D11E;MUSICAL SYMBOL G CLEF;So;0;L;;;;;N;;;;; 1D11F;MUSICAL SYMBOL G CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; 1D120;MUSICAL SYMBOL G CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; 1D121;MUSICAL SYMBOL C CLEF;So;0;L;;;;;N;;;;; 1D122;MUSICAL SYMBOL F CLEF;So;0;L;;;;;N;;;;; 1D123;MUSICAL SYMBOL F CLEF OTTAVA ALTA;So;0;L;;;;;N;;;;; 1D124;MUSICAL SYMBOL F CLEF OTTAVA BASSA;So;0;L;;;;;N;;;;; 1D125;MUSICAL SYMBOL DRUM CLEF-1;So;0;L;;;;;N;;;;; 1D126;MUSICAL SYMBOL DRUM CLEF-2;So;0;L;;;;;N;;;;; 1D12A;MUSICAL SYMBOL DOUBLE SHARP;So;0;L;;;;;N;;;;; 1D12B;MUSICAL SYMBOL DOUBLE FLAT;So;0;L;;;;;N;;;;; 1D12C;MUSICAL SYMBOL FLAT UP;So;0;L;;;;;N;;;;; 1D12D;MUSICAL SYMBOL FLAT DOWN;So;0;L;;;;;N;;;;; 1D12E;MUSICAL SYMBOL NATURAL UP;So;0;L;;;;;N;;;;; 1D12F;MUSICAL SYMBOL NATURAL DOWN;So;0;L;;;;;N;;;;; 1D130;MUSICAL SYMBOL SHARP UP;So;0;L;;;;;N;;;;; 1D131;MUSICAL SYMBOL SHARP DOWN;So;0;L;;;;;N;;;;; 1D132;MUSICAL SYMBOL QUARTER TONE SHARP;So;0;L;;;;;N;;;;; 1D133;MUSICAL SYMBOL QUARTER TONE FLAT;So;0;L;;;;;N;;;;; 1D134;MUSICAL SYMBOL COMMON TIME;So;0;L;;;;;N;;;;; 1D135;MUSICAL SYMBOL CUT TIME;So;0;L;;;;;N;;;;; 1D136;MUSICAL SYMBOL OTTAVA ALTA;So;0;L;;;;;N;;;;; 1D137;MUSICAL SYMBOL OTTAVA BASSA;So;0;L;;;;;N;;;;; 1D138;MUSICAL SYMBOL QUINDICESIMA ALTA;So;0;L;;;;;N;;;;; 1D139;MUSICAL SYMBOL QUINDICESIMA BASSA;So;0;L;;;;;N;;;;; 1D13A;MUSICAL SYMBOL MULTI REST;So;0;L;;;;;N;;;;; 1D13B;MUSICAL SYMBOL WHOLE REST;So;0;L;;;;;N;;;;; 1D13C;MUSICAL SYMBOL HALF REST;So;0;L;;;;;N;;;;; 1D13D;MUSICAL SYMBOL QUARTER REST;So;0;L;;;;;N;;;;; 1D13E;MUSICAL SYMBOL EIGHTH REST;So;0;L;;;;;N;;;;; 1D13F;MUSICAL SYMBOL SIXTEENTH REST;So;0;L;;;;;N;;;;; 1D140;MUSICAL SYMBOL THIRTY-SECOND REST;So;0;L;;;;;N;;;;; 1D141;MUSICAL SYMBOL SIXTY-FOURTH REST;So;0;L;;;;;N;;;;; 1D142;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH REST;So;0;L;;;;;N;;;;; 1D143;MUSICAL SYMBOL X NOTEHEAD;So;0;L;;;;;N;;;;; 1D144;MUSICAL SYMBOL PLUS NOTEHEAD;So;0;L;;;;;N;;;;; 1D145;MUSICAL SYMBOL CIRCLE X NOTEHEAD;So;0;L;;;;;N;;;;; 1D146;MUSICAL SYMBOL SQUARE NOTEHEAD WHITE;So;0;L;;;;;N;;;;; 1D147;MUSICAL SYMBOL SQUARE NOTEHEAD BLACK;So;0;L;;;;;N;;;;; 1D148;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP WHITE;So;0;L;;;;;N;;;;; 1D149;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP BLACK;So;0;L;;;;;N;;;;; 1D14A;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT WHITE;So;0;L;;;;;N;;;;; 1D14B;MUSICAL SYMBOL TRIANGLE NOTEHEAD LEFT BLACK;So;0;L;;;;;N;;;;; 1D14C;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT WHITE;So;0;L;;;;;N;;;;; 1D14D;MUSICAL SYMBOL TRIANGLE NOTEHEAD RIGHT BLACK;So;0;L;;;;;N;;;;; 1D14E;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; 1D14F;MUSICAL SYMBOL TRIANGLE NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; 1D150;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT WHITE;So;0;L;;;;;N;;;;; 1D151;MUSICAL SYMBOL TRIANGLE NOTEHEAD UP RIGHT BLACK;So;0;L;;;;;N;;;;; 1D152;MUSICAL SYMBOL MOON NOTEHEAD WHITE;So;0;L;;;;;N;;;;; 1D153;MUSICAL SYMBOL MOON NOTEHEAD BLACK;So;0;L;;;;;N;;;;; 1D154;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN WHITE;So;0;L;;;;;N;;;;; 1D155;MUSICAL SYMBOL TRIANGLE-ROUND NOTEHEAD DOWN BLACK;So;0;L;;;;;N;;;;; 1D156;MUSICAL SYMBOL PARENTHESIS NOTEHEAD;So;0;L;;;;;N;;;;; 1D157;MUSICAL SYMBOL VOID NOTEHEAD;So;0;L;;;;;N;;;;; 1D158;MUSICAL SYMBOL NOTEHEAD BLACK;So;0;L;;;;;N;;;;; 1D159;MUSICAL SYMBOL NULL NOTEHEAD;So;0;L;;;;;N;;;;; 1D15A;MUSICAL SYMBOL CLUSTER NOTEHEAD WHITE;So;0;L;;;;;N;;;;; 1D15B;MUSICAL SYMBOL CLUSTER NOTEHEAD BLACK;So;0;L;;;;;N;;;;; 1D15C;MUSICAL SYMBOL BREVE;So;0;L;;;;;N;;;;; 1D15D;MUSICAL SYMBOL WHOLE NOTE;So;0;L;;;;;N;;;;; 1D15E;MUSICAL SYMBOL HALF NOTE;So;0;L;1D157 1D165;;;;N;;;;; 1D15F;MUSICAL SYMBOL QUARTER NOTE;So;0;L;1D158 1D165;;;;N;;;;; 1D160;MUSICAL SYMBOL EIGHTH NOTE;So;0;L;1D15F 1D16E;;;;N;;;;; 1D161;MUSICAL SYMBOL SIXTEENTH NOTE;So;0;L;1D15F 1D16F;;;;N;;;;; 1D162;MUSICAL SYMBOL THIRTY-SECOND NOTE;So;0;L;1D15F 1D170;;;;N;;;;; 1D163;MUSICAL SYMBOL SIXTY-FOURTH NOTE;So;0;L;1D15F 1D171;;;;N;;;;; 1D164;MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE;So;0;L;1D15F 1D172;;;;N;;;;; 1D165;MUSICAL SYMBOL COMBINING STEM;Mc;216;L;;;;;N;;;;; 1D166;MUSICAL SYMBOL COMBINING SPRECHGESANG STEM;Mc;216;L;;;;;N;;;;; 1D167;MUSICAL SYMBOL COMBINING TREMOLO-1;Mn;1;NSM;;;;;N;;;;; 1D168;MUSICAL SYMBOL COMBINING TREMOLO-2;Mn;1;NSM;;;;;N;;;;; 1D169;MUSICAL SYMBOL COMBINING TREMOLO-3;Mn;1;NSM;;;;;N;;;;; 1D16A;MUSICAL SYMBOL FINGERED TREMOLO-1;So;0;L;;;;;N;;;;; 1D16B;MUSICAL SYMBOL FINGERED TREMOLO-2;So;0;L;;;;;N;;;;; 1D16C;MUSICAL SYMBOL FINGERED TREMOLO-3;So;0;L;;;;;N;;;;; 1D16D;MUSICAL SYMBOL COMBINING AUGMENTATION DOT;Mc;226;L;;;;;N;;;;; 1D16E;MUSICAL SYMBOL COMBINING FLAG-1;Mc;216;L;;;;;N;;;;; 1D16F;MUSICAL SYMBOL COMBINING FLAG-2;Mc;216;L;;;;;N;;;;; 1D170;MUSICAL SYMBOL COMBINING FLAG-3;Mc;216;L;;;;;N;;;;; 1D171;MUSICAL SYMBOL COMBINING FLAG-4;Mc;216;L;;;;;N;;;;; 1D172;MUSICAL SYMBOL COMBINING FLAG-5;Mc;216;L;;;;;N;;;;; 1D173;MUSICAL SYMBOL BEGIN BEAM;Cf;0;BN;;;;;N;;;;; 1D174;MUSICAL SYMBOL END BEAM;Cf;0;BN;;;;;N;;;;; 1D175;MUSICAL SYMBOL BEGIN TIE;Cf;0;BN;;;;;N;;;;; 1D176;MUSICAL SYMBOL END TIE;Cf;0;BN;;;;;N;;;;; 1D177;MUSICAL SYMBOL BEGIN SLUR;Cf;0;BN;;;;;N;;;;; 1D178;MUSICAL SYMBOL END SLUR;Cf;0;BN;;;;;N;;;;; 1D179;MUSICAL SYMBOL BEGIN PHRASE;Cf;0;BN;;;;;N;;;;; 1D17A;MUSICAL SYMBOL END PHRASE;Cf;0;BN;;;;;N;;;;; 1D17B;MUSICAL SYMBOL COMBINING ACCENT;Mn;220;NSM;;;;;N;;;;; 1D17C;MUSICAL SYMBOL COMBINING STACCATO;Mn;220;NSM;;;;;N;;;;; 1D17D;MUSICAL SYMBOL COMBINING TENUTO;Mn;220;NSM;;;;;N;;;;; 1D17E;MUSICAL SYMBOL COMBINING STACCATISSIMO;Mn;220;NSM;;;;;N;;;;; 1D17F;MUSICAL SYMBOL COMBINING MARCATO;Mn;220;NSM;;;;;N;;;;; 1D180;MUSICAL SYMBOL COMBINING MARCATO-STACCATO;Mn;220;NSM;;;;;N;;;;; 1D181;MUSICAL SYMBOL COMBINING ACCENT-STACCATO;Mn;220;NSM;;;;;N;;;;; 1D182;MUSICAL SYMBOL COMBINING LOURE;Mn;220;NSM;;;;;N;;;;; 1D183;MUSICAL SYMBOL ARPEGGIATO UP;So;0;L;;;;;N;;;;; 1D184;MUSICAL SYMBOL ARPEGGIATO DOWN;So;0;L;;;;;N;;;;; 1D185;MUSICAL SYMBOL COMBINING DOIT;Mn;230;NSM;;;;;N;;;;; 1D186;MUSICAL SYMBOL COMBINING RIP;Mn;230;NSM;;;;;N;;;;; 1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; 1D188;MUSICAL SYMBOL COMBINING SMEAR;Mn;230;NSM;;;;;N;;;;; 1D189;MUSICAL SYMBOL COMBINING BEND;Mn;230;NSM;;;;;N;;;;; 1D18A;MUSICAL SYMBOL COMBINING DOUBLE TONGUE;Mn;220;NSM;;;;;N;;;;; 1D18B;MUSICAL SYMBOL COMBINING TRIPLE TONGUE;Mn;220;NSM;;;;;N;;;;; 1D18C;MUSICAL SYMBOL RINFORZANDO;So;0;L;;;;;N;;;;; 1D18D;MUSICAL SYMBOL SUBITO;So;0;L;;;;;N;;;;; 1D18E;MUSICAL SYMBOL Z;So;0;L;;;;;N;;;;; 1D18F;MUSICAL SYMBOL PIANO;So;0;L;;;;;N;;;;; 1D190;MUSICAL SYMBOL MEZZO;So;0;L;;;;;N;;;;; 1D191;MUSICAL SYMBOL FORTE;So;0;L;;;;;N;;;;; 1D192;MUSICAL SYMBOL CRESCENDO;So;0;L;;;;;N;;;;; 1D193;MUSICAL SYMBOL DECRESCENDO;So;0;L;;;;;N;;;;; 1D194;MUSICAL SYMBOL GRACE NOTE SLASH;So;0;L;;;;;N;;;;; 1D195;MUSICAL SYMBOL GRACE NOTE NO SLASH;So;0;L;;;;;N;;;;; 1D196;MUSICAL SYMBOL TR;So;0;L;;;;;N;;;;; 1D197;MUSICAL SYMBOL TURN;So;0;L;;;;;N;;;;; 1D198;MUSICAL SYMBOL INVERTED TURN;So;0;L;;;;;N;;;;; 1D199;MUSICAL SYMBOL TURN SLASH;So;0;L;;;;;N;;;;; 1D19A;MUSICAL SYMBOL TURN UP;So;0;L;;;;;N;;;;; 1D19B;MUSICAL SYMBOL ORNAMENT STROKE-1;So;0;L;;;;;N;;;;; 1D19C;MUSICAL SYMBOL ORNAMENT STROKE-2;So;0;L;;;;;N;;;;; 1D19D;MUSICAL SYMBOL ORNAMENT STROKE-3;So;0;L;;;;;N;;;;; 1D19E;MUSICAL SYMBOL ORNAMENT STROKE-4;So;0;L;;;;;N;;;;; 1D19F;MUSICAL SYMBOL ORNAMENT STROKE-5;So;0;L;;;;;N;;;;; 1D1A0;MUSICAL SYMBOL ORNAMENT STROKE-6;So;0;L;;;;;N;;;;; 1D1A1;MUSICAL SYMBOL ORNAMENT STROKE-7;So;0;L;;;;;N;;;;; 1D1A2;MUSICAL SYMBOL ORNAMENT STROKE-8;So;0;L;;;;;N;;;;; 1D1A3;MUSICAL SYMBOL ORNAMENT STROKE-9;So;0;L;;;;;N;;;;; 1D1A4;MUSICAL SYMBOL ORNAMENT STROKE-10;So;0;L;;;;;N;;;;; 1D1A5;MUSICAL SYMBOL ORNAMENT STROKE-11;So;0;L;;;;;N;;;;; 1D1A6;MUSICAL SYMBOL HAUPTSTIMME;So;0;L;;;;;N;;;;; 1D1A7;MUSICAL SYMBOL NEBENSTIMME;So;0;L;;;;;N;;;;; 1D1A8;MUSICAL SYMBOL END OF STIMME;So;0;L;;;;;N;;;;; 1D1A9;MUSICAL SYMBOL DEGREE SLASH;So;0;L;;;;;N;;;;; 1D1AA;MUSICAL SYMBOL COMBINING DOWN BOW;Mn;230;NSM;;;;;N;;;;; 1D1AB;MUSICAL SYMBOL COMBINING UP BOW;Mn;230;NSM;;;;;N;;;;; 1D1AC;MUSICAL SYMBOL COMBINING HARMONIC;Mn;230;NSM;;;;;N;;;;; 1D1AD;MUSICAL SYMBOL COMBINING SNAP PIZZICATO;Mn;230;NSM;;;;;N;;;;; 1D1AE;MUSICAL SYMBOL PEDAL MARK;So;0;L;;;;;N;;;;; 1D1AF;MUSICAL SYMBOL PEDAL UP MARK;So;0;L;;;;;N;;;;; 1D1B0;MUSICAL SYMBOL HALF PEDAL MARK;So;0;L;;;;;N;;;;; 1D1B1;MUSICAL SYMBOL GLISSANDO UP;So;0;L;;;;;N;;;;; 1D1B2;MUSICAL SYMBOL GLISSANDO DOWN;So;0;L;;;;;N;;;;; 1D1B3;MUSICAL SYMBOL WITH FINGERNAILS;So;0;L;;;;;N;;;;; 1D1B4;MUSICAL SYMBOL DAMP;So;0;L;;;;;N;;;;; 1D1B5;MUSICAL SYMBOL DAMP ALL;So;0;L;;;;;N;;;;; 1D1B6;MUSICAL SYMBOL MAXIMA;So;0;L;;;;;N;;;;; 1D1B7;MUSICAL SYMBOL LONGA;So;0;L;;;;;N;;;;; 1D1B8;MUSICAL SYMBOL BREVIS;So;0;L;;;;;N;;;;; 1D1B9;MUSICAL SYMBOL SEMIBREVIS WHITE;So;0;L;;;;;N;;;;; 1D1BA;MUSICAL SYMBOL SEMIBREVIS BLACK;So;0;L;;;;;N;;;;; 1D1BB;MUSICAL SYMBOL MINIMA;So;0;L;1D1B9 1D165;;;;N;;;;; 1D1BC;MUSICAL SYMBOL MINIMA BLACK;So;0;L;1D1BA 1D165;;;;N;;;;; 1D1BD;MUSICAL SYMBOL SEMIMINIMA WHITE;So;0;L;1D1BB 1D16E;;;;N;;;;; 1D1BE;MUSICAL SYMBOL SEMIMINIMA BLACK;So;0;L;1D1BC 1D16E;;;;N;;;;; 1D1BF;MUSICAL SYMBOL FUSA WHITE;So;0;L;1D1BB 1D16F;;;;N;;;;; 1D1C0;MUSICAL SYMBOL FUSA BLACK;So;0;L;1D1BC 1D16F;;;;N;;;;; 1D1C1;MUSICAL SYMBOL LONGA PERFECTA REST;So;0;L;;;;;N;;;;; 1D1C2;MUSICAL SYMBOL LONGA IMPERFECTA REST;So;0;L;;;;;N;;;;; 1D1C3;MUSICAL SYMBOL BREVIS REST;So;0;L;;;;;N;;;;; 1D1C4;MUSICAL SYMBOL SEMIBREVIS REST;So;0;L;;;;;N;;;;; 1D1C5;MUSICAL SYMBOL MINIMA REST;So;0;L;;;;;N;;;;; 1D1C6;MUSICAL SYMBOL SEMIMINIMA REST;So;0;L;;;;;N;;;;; 1D1C7;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; 1D1C8;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; 1D1C9;MUSICAL SYMBOL TEMPUS PERFECTUM CUM PROLATIONE PERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; 1D1CA;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE PERFECTA;So;0;L;;;;;N;;;;; 1D1CB;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA;So;0;L;;;;;N;;;;; 1D1CC;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-1;So;0;L;;;;;N;;;;; 1D1CD;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-2;So;0;L;;;;;N;;;;; 1D1CE;MUSICAL SYMBOL TEMPUS IMPERFECTUM CUM PROLATIONE IMPERFECTA DIMINUTION-3;So;0;L;;;;;N;;;;; 1D1CF;MUSICAL SYMBOL CROIX;So;0;L;;;;;N;;;;; 1D1D0;MUSICAL SYMBOL GREGORIAN C CLEF;So;0;L;;;;;N;;;;; 1D1D1;MUSICAL SYMBOL GREGORIAN F CLEF;So;0;L;;;;;N;;;;; 1D1D2;MUSICAL SYMBOL SQUARE B;So;0;L;;;;;N;;;;; 1D1D3;MUSICAL SYMBOL VIRGA;So;0;L;;;;;N;;;;; 1D1D4;MUSICAL SYMBOL PODATUS;So;0;L;;;;;N;;;;; 1D1D5;MUSICAL SYMBOL CLIVIS;So;0;L;;;;;N;;;;; 1D1D6;MUSICAL SYMBOL SCANDICUS;So;0;L;;;;;N;;;;; 1D1D7;MUSICAL SYMBOL CLIMACUS;So;0;L;;;;;N;;;;; 1D1D8;MUSICAL SYMBOL TORCULUS;So;0;L;;;;;N;;;;; 1D1D9;MUSICAL SYMBOL PORRECTUS;So;0;L;;;;;N;;;;; 1D1DA;MUSICAL SYMBOL PORRECTUS FLEXUS;So;0;L;;;;;N;;;;; 1D1DB;MUSICAL SYMBOL SCANDICUS FLEXUS;So;0;L;;;;;N;;;;; 1D1DC;MUSICAL SYMBOL TORCULUS RESUPINUS;So;0;L;;;;;N;;;;; 1D1DD;MUSICAL SYMBOL PES SUBPUNCTIS;So;0;L;;;;;N;;;;; 1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; 1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; 1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;; 1D203;GREEK VOCAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; 1D204;GREEK VOCAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; 1D205;GREEK VOCAL NOTATION SYMBOL-6;So;0;ON;;;;;N;;;;; 1D206;GREEK VOCAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; 1D207;GREEK VOCAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; 1D208;GREEK VOCAL NOTATION SYMBOL-9;So;0;ON;;;;;N;;;;; 1D209;GREEK VOCAL NOTATION SYMBOL-10;So;0;ON;;;;;N;;;;; 1D20A;GREEK VOCAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; 1D20B;GREEK VOCAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; 1D20C;GREEK VOCAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; 1D20D;GREEK VOCAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; 1D20E;GREEK VOCAL NOTATION SYMBOL-15;So;0;ON;;;;;N;;;;; 1D20F;GREEK VOCAL NOTATION SYMBOL-16;So;0;ON;;;;;N;;;;; 1D210;GREEK VOCAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; 1D211;GREEK VOCAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; 1D212;GREEK VOCAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; 1D213;GREEK VOCAL NOTATION SYMBOL-20;So;0;ON;;;;;N;;;;; 1D214;GREEK VOCAL NOTATION SYMBOL-21;So;0;ON;;;;;N;;;;; 1D215;GREEK VOCAL NOTATION SYMBOL-22;So;0;ON;;;;;N;;;;; 1D216;GREEK VOCAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; 1D217;GREEK VOCAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; 1D218;GREEK VOCAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; 1D219;GREEK VOCAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; 1D21A;GREEK VOCAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; 1D21B;GREEK VOCAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; 1D21C;GREEK VOCAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; 1D21D;GREEK INSTRUMENTAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;; 1D21E;GREEK INSTRUMENTAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;; 1D21F;GREEK INSTRUMENTAL NOTATION SYMBOL-4;So;0;ON;;;;;N;;;;; 1D220;GREEK INSTRUMENTAL NOTATION SYMBOL-5;So;0;ON;;;;;N;;;;; 1D221;GREEK INSTRUMENTAL NOTATION SYMBOL-7;So;0;ON;;;;;N;;;;; 1D222;GREEK INSTRUMENTAL NOTATION SYMBOL-8;So;0;ON;;;;;N;;;;; 1D223;GREEK INSTRUMENTAL NOTATION SYMBOL-11;So;0;ON;;;;;N;;;;; 1D224;GREEK INSTRUMENTAL NOTATION SYMBOL-12;So;0;ON;;;;;N;;;;; 1D225;GREEK INSTRUMENTAL NOTATION SYMBOL-13;So;0;ON;;;;;N;;;;; 1D226;GREEK INSTRUMENTAL NOTATION SYMBOL-14;So;0;ON;;;;;N;;;;; 1D227;GREEK INSTRUMENTAL NOTATION SYMBOL-17;So;0;ON;;;;;N;;;;; 1D228;GREEK INSTRUMENTAL NOTATION SYMBOL-18;So;0;ON;;;;;N;;;;; 1D229;GREEK INSTRUMENTAL NOTATION SYMBOL-19;So;0;ON;;;;;N;;;;; 1D22A;GREEK INSTRUMENTAL NOTATION SYMBOL-23;So;0;ON;;;;;N;;;;; 1D22B;GREEK INSTRUMENTAL NOTATION SYMBOL-24;So;0;ON;;;;;N;;;;; 1D22C;GREEK INSTRUMENTAL NOTATION SYMBOL-25;So;0;ON;;;;;N;;;;; 1D22D;GREEK INSTRUMENTAL NOTATION SYMBOL-26;So;0;ON;;;;;N;;;;; 1D22E;GREEK INSTRUMENTAL NOTATION SYMBOL-27;So;0;ON;;;;;N;;;;; 1D22F;GREEK INSTRUMENTAL NOTATION SYMBOL-29;So;0;ON;;;;;N;;;;; 1D230;GREEK INSTRUMENTAL NOTATION SYMBOL-30;So;0;ON;;;;;N;;;;; 1D231;GREEK INSTRUMENTAL NOTATION SYMBOL-32;So;0;ON;;;;;N;;;;; 1D232;GREEK INSTRUMENTAL NOTATION SYMBOL-36;So;0;ON;;;;;N;;;;; 1D233;GREEK INSTRUMENTAL NOTATION SYMBOL-37;So;0;ON;;;;;N;;;;; 1D234;GREEK INSTRUMENTAL NOTATION SYMBOL-38;So;0;ON;;;;;N;;;;; 1D235;GREEK INSTRUMENTAL NOTATION SYMBOL-39;So;0;ON;;;;;N;;;;; 1D236;GREEK INSTRUMENTAL NOTATION SYMBOL-40;So;0;ON;;;;;N;;;;; 1D237;GREEK INSTRUMENTAL NOTATION SYMBOL-42;So;0;ON;;;;;N;;;;; 1D238;GREEK INSTRUMENTAL NOTATION SYMBOL-43;So;0;ON;;;;;N;;;;; 1D239;GREEK INSTRUMENTAL NOTATION SYMBOL-45;So;0;ON;;;;;N;;;;; 1D23A;GREEK INSTRUMENTAL NOTATION SYMBOL-47;So;0;ON;;;;;N;;;;; 1D23B;GREEK INSTRUMENTAL NOTATION SYMBOL-48;So;0;ON;;;;;N;;;;; 1D23C;GREEK INSTRUMENTAL NOTATION SYMBOL-49;So;0;ON;;;;;N;;;;; 1D23D;GREEK INSTRUMENTAL NOTATION SYMBOL-50;So;0;ON;;;;;N;;;;; 1D23E;GREEK INSTRUMENTAL NOTATION SYMBOL-51;So;0;ON;;;;;N;;;;; 1D23F;GREEK INSTRUMENTAL NOTATION SYMBOL-52;So;0;ON;;;;;N;;;;; 1D240;GREEK INSTRUMENTAL NOTATION SYMBOL-53;So;0;ON;;;;;N;;;;; 1D241;GREEK INSTRUMENTAL NOTATION SYMBOL-54;So;0;ON;;;;;N;;;;; 1D242;COMBINING GREEK MUSICAL TRISEME;Mn;230;NSM;;;;;N;;;;; 1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;; 1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;; 1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;; 1D300;MONOGRAM FOR EARTH;So;0;ON;;;;;N;;ren *;;; 1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;tian ren *;;; 1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;di ren *;;; 1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;ren tian *;;; 1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;ren di *;;; 1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;ren ren *;;; 1D306;TETRAGRAM FOR CENTRE;So;0;ON;;;;;N;;;;; 1D307;TETRAGRAM FOR FULL CIRCLE;So;0;ON;;;;;N;;;;; 1D308;TETRAGRAM FOR MIRED;So;0;ON;;;;;N;;;;; 1D309;TETRAGRAM FOR BARRIER;So;0;ON;;;;;N;;;;; 1D30A;TETRAGRAM FOR KEEPING SMALL;So;0;ON;;;;;N;;;;; 1D30B;TETRAGRAM FOR CONTRARIETY;So;0;ON;;;;;N;;;;; 1D30C;TETRAGRAM FOR ASCENT;So;0;ON;;;;;N;;;;; 1D30D;TETRAGRAM FOR OPPOSITION;So;0;ON;;;;;N;;;;; 1D30E;TETRAGRAM FOR BRANCHING OUT;So;0;ON;;;;;N;;;;; 1D30F;TETRAGRAM FOR DEFECTIVENESS OR DISTORTION;So;0;ON;;;;;N;;;;; 1D310;TETRAGRAM FOR DIVERGENCE;So;0;ON;;;;;N;;;;; 1D311;TETRAGRAM FOR YOUTHFULNESS;So;0;ON;;;;;N;;;;; 1D312;TETRAGRAM FOR INCREASE;So;0;ON;;;;;N;;;;; 1D313;TETRAGRAM FOR PENETRATION;So;0;ON;;;;;N;;;;; 1D314;TETRAGRAM FOR REACH;So;0;ON;;;;;N;;;;; 1D315;TETRAGRAM FOR CONTACT;So;0;ON;;;;;N;;;;; 1D316;TETRAGRAM FOR HOLDING BACK;So;0;ON;;;;;N;;;;; 1D317;TETRAGRAM FOR WAITING;So;0;ON;;;;;N;;;;; 1D318;TETRAGRAM FOR FOLLOWING;So;0;ON;;;;;N;;;;; 1D319;TETRAGRAM FOR ADVANCE;So;0;ON;;;;;N;;;;; 1D31A;TETRAGRAM FOR RELEASE;So;0;ON;;;;;N;;;;; 1D31B;TETRAGRAM FOR RESISTANCE;So;0;ON;;;;;N;;;;; 1D31C;TETRAGRAM FOR EASE;So;0;ON;;;;;N;;;;; 1D31D;TETRAGRAM FOR JOY;So;0;ON;;;;;N;;;;; 1D31E;TETRAGRAM FOR CONTENTION;So;0;ON;;;;;N;;;;; 1D31F;TETRAGRAM FOR ENDEAVOUR;So;0;ON;;;;;N;;;;; 1D320;TETRAGRAM FOR DUTIES;So;0;ON;;;;;N;;;;; 1D321;TETRAGRAM FOR CHANGE;So;0;ON;;;;;N;;;;; 1D322;TETRAGRAM FOR DECISIVENESS;So;0;ON;;;;;N;;;;; 1D323;TETRAGRAM FOR BOLD RESOLUTION;So;0;ON;;;;;N;;;;; 1D324;TETRAGRAM FOR PACKING;So;0;ON;;;;;N;;;;; 1D325;TETRAGRAM FOR LEGION;So;0;ON;;;;;N;;;;; 1D326;TETRAGRAM FOR CLOSENESS;So;0;ON;;;;;N;;;;; 1D327;TETRAGRAM FOR KINSHIP;So;0;ON;;;;;N;;;;; 1D328;TETRAGRAM FOR GATHERING;So;0;ON;;;;;N;;;;; 1D329;TETRAGRAM FOR STRENGTH;So;0;ON;;;;;N;;;;; 1D32A;TETRAGRAM FOR PURITY;So;0;ON;;;;;N;;;;; 1D32B;TETRAGRAM FOR FULLNESS;So;0;ON;;;;;N;;;;; 1D32C;TETRAGRAM FOR RESIDENCE;So;0;ON;;;;;N;;;;; 1D32D;TETRAGRAM FOR LAW OR MODEL;So;0;ON;;;;;N;;;;; 1D32E;TETRAGRAM FOR RESPONSE;So;0;ON;;;;;N;;;;; 1D32F;TETRAGRAM FOR GOING TO MEET;So;0;ON;;;;;N;;;;; 1D330;TETRAGRAM FOR ENCOUNTERS;So;0;ON;;;;;N;;;;; 1D331;TETRAGRAM FOR STOVE;So;0;ON;;;;;N;;;;; 1D332;TETRAGRAM FOR GREATNESS;So;0;ON;;;;;N;;;;; 1D333;TETRAGRAM FOR ENLARGEMENT;So;0;ON;;;;;N;;;;; 1D334;TETRAGRAM FOR PATTERN;So;0;ON;;;;;N;;;;; 1D335;TETRAGRAM FOR RITUAL;So;0;ON;;;;;N;;;;; 1D336;TETRAGRAM FOR FLIGHT;So;0;ON;;;;;N;;;;; 1D337;TETRAGRAM FOR VASTNESS OR WASTING;So;0;ON;;;;;N;;;;; 1D338;TETRAGRAM FOR CONSTANCY;So;0;ON;;;;;N;;;;; 1D339;TETRAGRAM FOR MEASURE;So;0;ON;;;;;N;;;;; 1D33A;TETRAGRAM FOR ETERNITY;So;0;ON;;;;;N;;;;; 1D33B;TETRAGRAM FOR UNITY;So;0;ON;;;;;N;;;;; 1D33C;TETRAGRAM FOR DIMINISHMENT;So;0;ON;;;;;N;;;;; 1D33D;TETRAGRAM FOR CLOSED MOUTH;So;0;ON;;;;;N;;;;; 1D33E;TETRAGRAM FOR GUARDEDNESS;So;0;ON;;;;;N;;;;; 1D33F;TETRAGRAM FOR GATHERING IN;So;0;ON;;;;;N;;;;; 1D340;TETRAGRAM FOR MASSING;So;0;ON;;;;;N;;;;; 1D341;TETRAGRAM FOR ACCUMULATION;So;0;ON;;;;;N;;;;; 1D342;TETRAGRAM FOR EMBELLISHMENT;So;0;ON;;;;;N;;;;; 1D343;TETRAGRAM FOR DOUBT;So;0;ON;;;;;N;;;;; 1D344;TETRAGRAM FOR WATCH;So;0;ON;;;;;N;;;;; 1D345;TETRAGRAM FOR SINKING;So;0;ON;;;;;N;;;;; 1D346;TETRAGRAM FOR INNER;So;0;ON;;;;;N;;;;; 1D347;TETRAGRAM FOR DEPARTURE;So;0;ON;;;;;N;;;;; 1D348;TETRAGRAM FOR DARKENING;So;0;ON;;;;;N;;;;; 1D349;TETRAGRAM FOR DIMMING;So;0;ON;;;;;N;;;;; 1D34A;TETRAGRAM FOR EXHAUSTION;So;0;ON;;;;;N;;;;; 1D34B;TETRAGRAM FOR SEVERANCE;So;0;ON;;;;;N;;;;; 1D34C;TETRAGRAM FOR STOPPAGE;So;0;ON;;;;;N;;;;; 1D34D;TETRAGRAM FOR HARDNESS;So;0;ON;;;;;N;;;;; 1D34E;TETRAGRAM FOR COMPLETION;So;0;ON;;;;;N;;;;; 1D34F;TETRAGRAM FOR CLOSURE;So;0;ON;;;;;N;;;;; 1D350;TETRAGRAM FOR FAILURE;So;0;ON;;;;;N;;;;; 1D351;TETRAGRAM FOR AGGRAVATION;So;0;ON;;;;;N;;;;; 1D352;TETRAGRAM FOR COMPLIANCE;So;0;ON;;;;;N;;;;; 1D353;TETRAGRAM FOR ON THE VERGE;So;0;ON;;;;;N;;;;; 1D354;TETRAGRAM FOR DIFFICULTIES;So;0;ON;;;;;N;;;;; 1D355;TETRAGRAM FOR LABOURING;So;0;ON;;;;;N;;;;; 1D356;TETRAGRAM FOR FOSTERING;So;0;ON;;;;;N;;;;; 1D360;COUNTING ROD UNIT DIGIT ONE;No;0;L;;;;1;N;;;;; 1D361;COUNTING ROD UNIT DIGIT TWO;No;0;L;;;;2;N;;;;; 1D362;COUNTING ROD UNIT DIGIT THREE;No;0;L;;;;3;N;;;;; 1D363;COUNTING ROD UNIT DIGIT FOUR;No;0;L;;;;4;N;;;;; 1D364;COUNTING ROD UNIT DIGIT FIVE;No;0;L;;;;5;N;;;;; 1D365;COUNTING ROD UNIT DIGIT SIX;No;0;L;;;;6;N;;;;; 1D366;COUNTING ROD UNIT DIGIT SEVEN;No;0;L;;;;7;N;;;;; 1D367;COUNTING ROD UNIT DIGIT EIGHT;No;0;L;;;;8;N;;;;; 1D368;COUNTING ROD UNIT DIGIT NINE;No;0;L;;;;9;N;;;;; 1D369;COUNTING ROD TENS DIGIT ONE;No;0;L;;;;10;N;;;;; 1D36A;COUNTING ROD TENS DIGIT TWO;No;0;L;;;;20;N;;;;; 1D36B;COUNTING ROD TENS DIGIT THREE;No;0;L;;;;30;N;;;;; 1D36C;COUNTING ROD TENS DIGIT FOUR;No;0;L;;;;40;N;;;;; 1D36D;COUNTING ROD TENS DIGIT FIVE;No;0;L;;;;50;N;;;;; 1D36E;COUNTING ROD TENS DIGIT SIX;No;0;L;;;;60;N;;;;; 1D36F;COUNTING ROD TENS DIGIT SEVEN;No;0;L;;;;70;N;;;;; 1D370;COUNTING ROD TENS DIGIT EIGHT;No;0;L;;;;80;N;;;;; 1D371;COUNTING ROD TENS DIGIT NINE;No;0;L;;;;90;N;;;;; 1D400;MATHEMATICAL BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L; 0041;;;;N;;;;; 1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L; 0042;;;;N;;;;; 1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L; 0043;;;;N;;;;; 1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L; 0044;;;;N;;;;; 1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L; 0045;;;;N;;;;; 1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L; 0046;;;;N;;;;; 1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L; 0047;;;;N;;;;; 1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L; 0048;;;;N;;;;; 1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L; 0049;;;;N;;;;; 1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L; 004A;;;;N;;;;; 1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L; 004B;;;;N;;;;; 1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L; 004C;;;;N;;;;; 1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L; 004D;;;;N;;;;; 1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L; 004E;;;;N;;;;; 1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L; 004F;;;;N;;;;; 1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L; 0050;;;;N;;;;; 1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L; 0051;;;;N;;;;; 1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L; 0052;;;;N;;;;; 1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L; 0053;;;;N;;;;; 1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L; 0054;;;;N;;;;; 1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L; 0055;;;;N;;;;; 1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L; 0056;;;;N;;;;; 1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L; 0057;;;;N;;;;; 1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L; 0058;;;;N;;;;; 1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L; 0059;;;;N;;;;; 1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L; 005A;;;;N;;;;; 1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L; 0061;;;;N;;;;; 1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L; 0062;;;;N;;;;; 1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L; 0063;;;;N;;;;; 1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L; 0064;;;;N;;;;; 1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L; 0065;;;;N;;;;; 1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L; 0066;;;;N;;;;; 1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L; 0067;;;;N;;;;; 1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L; 0068;;;;N;;;;; 1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L; 0069;;;;N;;;;; 1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L; 006A;;;;N;;;;; 1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L; 006B;;;;N;;;;; 1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L; 006C;;;;N;;;;; 1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L; 006D;;;;N;;;;; 1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L; 006E;;;;N;;;;; 1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L; 006F;;;;N;;;;; 1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L; 0070;;;;N;;;;; 1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L; 0071;;;;N;;;;; 1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L; 0072;;;;N;;;;; 1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L; 0073;;;;N;;;;; 1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L; 0074;;;;N;;;;; 1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L; 0075;;;;N;;;;; 1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L; 0076;;;;N;;;;; 1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L; 0077;;;;N;;;;; 1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L; 0078;;;;N;;;;; 1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L; 0079;;;;N;;;;; 1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L; 007A;;;;N;;;;; 1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L; 0131;;;;N;;;;; 1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L; 0237;;;;N;;;;; 1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; 1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; 1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; 1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; 1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; 1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; 1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; 1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; 1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; 1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; 1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; 1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; 1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; 1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; 1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; 1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; 1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; 1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; 1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; 1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; 1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; 1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; 1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; 1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; 1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; 1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; 1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; 1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; 1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; 1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; 1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; 1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; 1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; 1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; 1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; 1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; 1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; 1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; 1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; 1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; 1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; 1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; 1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; 1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; 1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; 1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; 1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; 1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; 1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; 1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; 1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; 1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; 1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; 1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; 1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; 1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; 1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; 1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; 1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; 1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; 1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; 1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; 1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; 1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; 1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; 1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; 1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; 1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; 1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; 1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; 1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; 1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; 1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; 1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; 1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; 1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; 1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; 1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; 1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; 1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; 1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; 1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; 1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; 1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; 1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; 1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; 1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; 1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; 1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; 1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; 1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; 1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; 1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; 1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; 1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; 1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; 1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; 1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; 1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; 1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; 1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; 1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; 1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; 1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; 1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; 1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; 1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; 1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; 1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; 1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; 1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; 1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; 1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; 1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; 1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; 1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; 1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; 1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; 1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; 1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; 1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; 1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; 1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; 1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; 1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; 1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; 1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; 1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; 1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; 1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; 1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; 1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; 1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; 1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; 1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; 1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; 1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; 1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; 1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; 1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; 1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; 1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; 1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; 1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; 1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; 1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; 1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; 1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; 1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; 1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; 1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; 1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; 1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; 1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; 1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; 1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; 1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; 1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; 1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; 1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; 1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; 1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; 1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; 1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; 1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; 1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; 1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; 1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; 1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; 1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; 1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; 1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; 1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; 1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; 1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; 1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; 1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; 1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; 1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; 1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; 1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; 1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; 1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; 1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; 1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; 1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L; 2207;;;;N;;;;; 1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; 1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; 1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; 1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; 1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; 1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; 1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; 1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; 1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; 1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L; 03BC;;;;N;;;;; 1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L; 03BD;;;;N;;;;; 1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L; 03BE;;;;N;;;;; 1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; 1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L; 03C0;;;;N;;;;; 1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; 1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; 1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; 1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; 1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; 1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; 1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; 1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; 1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; 1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; 1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; 1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; 1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; 1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; 1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; 1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; 1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L; 0391;;;;N;;;;; 1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L; 0392;;;;N;;;;; 1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L; 0393;;;;N;;;;; 1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L; 0394;;;;N;;;;; 1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L; 0395;;;;N;;;;; 1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L; 0396;;;;N;;;;; 1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L; 0397;;;;N;;;;; 1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L; 0398;;;;N;;;;; 1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L; 0399;;;;N;;;;; 1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L; 039A;;;;N;;;;; 1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L; 039B;;;;N;;;;; 1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L; 039C;;;;N;;;;; 1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L; 039D;;;;N;;;;; 1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L; 039E;;;;N;;;;; 1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L; 039F;;;;N;;;;; 1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L; 03A0;;;;N;;;;; 1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L; 03A1;;;;N;;;;; 1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L; 03F4;;;;N;;;;; 1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L; 03A3;;;;N;;;;; 1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L; 03A4;;;;N;;;;; 1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L; 03A5;;;;N;;;;; 1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L; 03A6;;;;N;;;;; 1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L; 03A7;;;;N;;;;; 1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L; 03A8;;;;N;;;;; 1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L; 03A9;;;;N;;;;; 1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L; 2207;;;;N;;;;; 1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L; 03B1;;;;N;;;;; 1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L; 03B2;;;;N;;;;; 1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L; 03B3;;;;N;;;;; 1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L; 03B4;;;;N;;;;; 1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L; 03B5;;;;N;;;;; 1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L; 03B6;;;;N;;;;; 1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L; 03B7;;;;N;;;;; 1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L; 03B8;;;;N;;;;; 1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L; 03B9;;;;N;;;;; 1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L; 03BA;;;;N;;;;; 1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L; 03BB;;;;N;;;;; 1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L; 03BC;;;;N;;;;; 1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L; 03BD;;;;N;;;;; 1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L; 03BE;;;;N;;;;; 1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L; 03BF;;;;N;;;;; 1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L; 03C0;;;;N;;;;; 1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L; 03C1;;;;N;;;;; 1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L; 03C2;;;;N;;;;; 1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L; 03C3;;;;N;;;;; 1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L; 03C4;;;;N;;;;; 1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L; 03C5;;;;N;;;;; 1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L; 03C6;;;;N;;;;; 1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L; 03C7;;;;N;;;;; 1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L; 03C8;;;;N;;;;; 1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L; 03C9;;;;N;;;;; 1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;L; 2202;;;;Y;;;;; 1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L; 03F5;;;;N;;;;; 1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L; 03D1;;;;N;;;;; 1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L; 03F0;;;;N;;;;; 1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L; 03D5;;;;N;;;;; 1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L; 03F1;;;;N;;;;; 1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L; 03D6;;;;N;;;;; 1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L; 03DC;;;;N;;;;; 1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L; 03DD;;;;N;;;;; 1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; 1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; 1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; 1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; 1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; 1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; 1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; 1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; 1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; 1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; 1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; 1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; 1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; 1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; 1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; 1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; 1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; 1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; 1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; 1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; 1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; 1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; 1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; 1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; 1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; 1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; 1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; 1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; 1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; 1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; 1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; 1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; 1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN; 0030;0;0;0;N;;;;; 1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN; 0031;1;1;1;N;;;;; 1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN; 0032;2;2;2;N;;;;; 1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN; 0033;3;3;3;N;;;;; 1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN; 0034;4;4;4;N;;;;; 1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN; 0035;5;5;5;N;;;;; 1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN; 0036;6;6;6;N;;;;; 1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN; 0037;7;7;7;N;;;;; 1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN; 0038;8;8;8;N;;;;; 1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN; 0039;9;9;9;N;;;;; 20000;;Lo;0;L;;;;;N;;;;; 2A6D6;;Lo;0;L;;;;;N;;;;; 2F800;CJK COMPATIBILITY IDEOGRAPH-2F800;Lo;0;L;4E3D;;;;N;;;;; 2F801;CJK COMPATIBILITY IDEOGRAPH-2F801;Lo;0;L;4E38;;;;N;;;;; 2F802;CJK COMPATIBILITY IDEOGRAPH-2F802;Lo;0;L;4E41;;;;N;;;;; 2F803;CJK COMPATIBILITY IDEOGRAPH-2F803;Lo;0;L;20122;;;;N;;;;; 2F804;CJK COMPATIBILITY IDEOGRAPH-2F804;Lo;0;L;4F60;;;;N;;;;; 2F805;CJK COMPATIBILITY IDEOGRAPH-2F805;Lo;0;L;4FAE;;;;N;;;;; 2F806;CJK COMPATIBILITY IDEOGRAPH-2F806;Lo;0;L;4FBB;;;;N;;;;; 2F807;CJK COMPATIBILITY IDEOGRAPH-2F807;Lo;0;L;5002;;;;N;;;;; 2F808;CJK COMPATIBILITY IDEOGRAPH-2F808;Lo;0;L;507A;;;;N;;;;; 2F809;CJK COMPATIBILITY IDEOGRAPH-2F809;Lo;0;L;5099;;;;N;;;;; 2F80A;CJK COMPATIBILITY IDEOGRAPH-2F80A;Lo;0;L;50E7;;;;N;;;;; 2F80B;CJK COMPATIBILITY IDEOGRAPH-2F80B;Lo;0;L;50CF;;;;N;;;;; 2F80C;CJK COMPATIBILITY IDEOGRAPH-2F80C;Lo;0;L;349E;;;;N;;;;; 2F80D;CJK COMPATIBILITY IDEOGRAPH-2F80D;Lo;0;L;2063A;;;;N;;;;; 2F80E;CJK COMPATIBILITY IDEOGRAPH-2F80E;Lo;0;L;514D;;;;N;;;;; 2F80F;CJK COMPATIBILITY IDEOGRAPH-2F80F;Lo;0;L;5154;;;;N;;;;; 2F810;CJK COMPATIBILITY IDEOGRAPH-2F810;Lo;0;L;5164;;;;N;;;;; 2F811;CJK COMPATIBILITY IDEOGRAPH-2F811;Lo;0;L;5177;;;;N;;;;; 2F812;CJK COMPATIBILITY IDEOGRAPH-2F812;Lo;0;L;2051C;;;;N;;;;; 2F813;CJK COMPATIBILITY IDEOGRAPH-2F813;Lo;0;L;34B9;;;;N;;;;; 2F814;CJK COMPATIBILITY IDEOGRAPH-2F814;Lo;0;L;5167;;;;N;;;;; 2F815;CJK COMPATIBILITY IDEOGRAPH-2F815;Lo;0;L;518D;;;;N;;;;; 2F816;CJK COMPATIBILITY IDEOGRAPH-2F816;Lo;0;L;2054B;;;;N;;;;; 2F817;CJK COMPATIBILITY IDEOGRAPH-2F817;Lo;0;L;5197;;;;N;;;;; 2F818;CJK COMPATIBILITY IDEOGRAPH-2F818;Lo;0;L;51A4;;;;N;;;;; 2F819;CJK COMPATIBILITY IDEOGRAPH-2F819;Lo;0;L;4ECC;;;;N;;;;; 2F81A;CJK COMPATIBILITY IDEOGRAPH-2F81A;Lo;0;L;51AC;;;;N;;;;; 2F81B;CJK COMPATIBILITY IDEOGRAPH-2F81B;Lo;0;L;51B5;;;;N;;;;; 2F81C;CJK COMPATIBILITY IDEOGRAPH-2F81C;Lo;0;L;291DF;;;;N;;;;; 2F81D;CJK COMPATIBILITY IDEOGRAPH-2F81D;Lo;0;L;51F5;;;;N;;;;; 2F81E;CJK COMPATIBILITY IDEOGRAPH-2F81E;Lo;0;L;5203;;;;N;;;;; 2F81F;CJK COMPATIBILITY IDEOGRAPH-2F81F;Lo;0;L;34DF;;;;N;;;;; 2F820;CJK COMPATIBILITY IDEOGRAPH-2F820;Lo;0;L;523B;;;;N;;;;; 2F821;CJK COMPATIBILITY IDEOGRAPH-2F821;Lo;0;L;5246;;;;N;;;;; 2F822;CJK COMPATIBILITY IDEOGRAPH-2F822;Lo;0;L;5272;;;;N;;;;; 2F823;CJK COMPATIBILITY IDEOGRAPH-2F823;Lo;0;L;5277;;;;N;;;;; 2F824;CJK COMPATIBILITY IDEOGRAPH-2F824;Lo;0;L;3515;;;;N;;;;; 2F825;CJK COMPATIBILITY IDEOGRAPH-2F825;Lo;0;L;52C7;;;;N;;;;; 2F826;CJK COMPATIBILITY IDEOGRAPH-2F826;Lo;0;L;52C9;;;;N;;;;; 2F827;CJK COMPATIBILITY IDEOGRAPH-2F827;Lo;0;L;52E4;;;;N;;;;; 2F828;CJK COMPATIBILITY IDEOGRAPH-2F828;Lo;0;L;52FA;;;;N;;;;; 2F829;CJK COMPATIBILITY IDEOGRAPH-2F829;Lo;0;L;5305;;;;N;;;;; 2F82A;CJK COMPATIBILITY IDEOGRAPH-2F82A;Lo;0;L;5306;;;;N;;;;; 2F82B;CJK COMPATIBILITY IDEOGRAPH-2F82B;Lo;0;L;5317;;;;N;;;;; 2F82C;CJK COMPATIBILITY IDEOGRAPH-2F82C;Lo;0;L;5349;;;;N;;;;; 2F82D;CJK COMPATIBILITY IDEOGRAPH-2F82D;Lo;0;L;5351;;;;N;;;;; 2F82E;CJK COMPATIBILITY IDEOGRAPH-2F82E;Lo;0;L;535A;;;;N;;;;; 2F82F;CJK COMPATIBILITY IDEOGRAPH-2F82F;Lo;0;L;5373;;;;N;;;;; 2F830;CJK COMPATIBILITY IDEOGRAPH-2F830;Lo;0;L;537D;;;;N;;;;; 2F831;CJK COMPATIBILITY IDEOGRAPH-2F831;Lo;0;L;537F;;;;N;;;;; 2F832;CJK COMPATIBILITY IDEOGRAPH-2F832;Lo;0;L;537F;;;;N;;;;; 2F833;CJK COMPATIBILITY IDEOGRAPH-2F833;Lo;0;L;537F;;;;N;;;;; 2F834;CJK COMPATIBILITY IDEOGRAPH-2F834;Lo;0;L;20A2C;;;;N;;;;; 2F835;CJK COMPATIBILITY IDEOGRAPH-2F835;Lo;0;L;7070;;;;N;;;;; 2F836;CJK COMPATIBILITY IDEOGRAPH-2F836;Lo;0;L;53CA;;;;N;;;;; 2F837;CJK COMPATIBILITY IDEOGRAPH-2F837;Lo;0;L;53DF;;;;N;;;;; 2F838;CJK COMPATIBILITY IDEOGRAPH-2F838;Lo;0;L;20B63;;;;N;;;;; 2F839;CJK COMPATIBILITY IDEOGRAPH-2F839;Lo;0;L;53EB;;;;N;;;;; 2F83A;CJK COMPATIBILITY IDEOGRAPH-2F83A;Lo;0;L;53F1;;;;N;;;;; 2F83B;CJK COMPATIBILITY IDEOGRAPH-2F83B;Lo;0;L;5406;;;;N;;;;; 2F83C;CJK COMPATIBILITY IDEOGRAPH-2F83C;Lo;0;L;549E;;;;N;;;;; 2F83D;CJK COMPATIBILITY IDEOGRAPH-2F83D;Lo;0;L;5438;;;;N;;;;; 2F83E;CJK COMPATIBILITY IDEOGRAPH-2F83E;Lo;0;L;5448;;;;N;;;;; 2F83F;CJK COMPATIBILITY IDEOGRAPH-2F83F;Lo;0;L;5468;;;;N;;;;; 2F840;CJK COMPATIBILITY IDEOGRAPH-2F840;Lo;0;L;54A2;;;;N;;;;; 2F841;CJK COMPATIBILITY IDEOGRAPH-2F841;Lo;0;L;54F6;;;;N;;;;; 2F842;CJK COMPATIBILITY IDEOGRAPH-2F842;Lo;0;L;5510;;;;N;;;;; 2F843;CJK COMPATIBILITY IDEOGRAPH-2F843;Lo;0;L;5553;;;;N;;;;; 2F844;CJK COMPATIBILITY IDEOGRAPH-2F844;Lo;0;L;5563;;;;N;;;;; 2F845;CJK COMPATIBILITY IDEOGRAPH-2F845;Lo;0;L;5584;;;;N;;;;; 2F846;CJK COMPATIBILITY IDEOGRAPH-2F846;Lo;0;L;5584;;;;N;;;;; 2F847;CJK COMPATIBILITY IDEOGRAPH-2F847;Lo;0;L;5599;;;;N;;;;; 2F848;CJK COMPATIBILITY IDEOGRAPH-2F848;Lo;0;L;55AB;;;;N;;;;; 2F849;CJK COMPATIBILITY IDEOGRAPH-2F849;Lo;0;L;55B3;;;;N;;;;; 2F84A;CJK COMPATIBILITY IDEOGRAPH-2F84A;Lo;0;L;55C2;;;;N;;;;; 2F84B;CJK COMPATIBILITY IDEOGRAPH-2F84B;Lo;0;L;5716;;;;N;;;;; 2F84C;CJK COMPATIBILITY IDEOGRAPH-2F84C;Lo;0;L;5606;;;;N;;;;; 2F84D;CJK COMPATIBILITY IDEOGRAPH-2F84D;Lo;0;L;5717;;;;N;;;;; 2F84E;CJK COMPATIBILITY IDEOGRAPH-2F84E;Lo;0;L;5651;;;;N;;;;; 2F84F;CJK COMPATIBILITY IDEOGRAPH-2F84F;Lo;0;L;5674;;;;N;;;;; 2F850;CJK COMPATIBILITY IDEOGRAPH-2F850;Lo;0;L;5207;;;;N;;;;; 2F851;CJK COMPATIBILITY IDEOGRAPH-2F851;Lo;0;L;58EE;;;;N;;;;; 2F852;CJK COMPATIBILITY IDEOGRAPH-2F852;Lo;0;L;57CE;;;;N;;;;; 2F853;CJK COMPATIBILITY IDEOGRAPH-2F853;Lo;0;L;57F4;;;;N;;;;; 2F854;CJK COMPATIBILITY IDEOGRAPH-2F854;Lo;0;L;580D;;;;N;;;;; 2F855;CJK COMPATIBILITY IDEOGRAPH-2F855;Lo;0;L;578B;;;;N;;;;; 2F856;CJK COMPATIBILITY IDEOGRAPH-2F856;Lo;0;L;5832;;;;N;;;;; 2F857;CJK COMPATIBILITY IDEOGRAPH-2F857;Lo;0;L;5831;;;;N;;;;; 2F858;CJK COMPATIBILITY IDEOGRAPH-2F858;Lo;0;L;58AC;;;;N;;;;; 2F859;CJK COMPATIBILITY IDEOGRAPH-2F859;Lo;0;L;214E4;;;;N;;;;; 2F85A;CJK COMPATIBILITY IDEOGRAPH-2F85A;Lo;0;L;58F2;;;;N;;;;; 2F85B;CJK COMPATIBILITY IDEOGRAPH-2F85B;Lo;0;L;58F7;;;;N;;;;; 2F85C;CJK COMPATIBILITY IDEOGRAPH-2F85C;Lo;0;L;5906;;;;N;;;;; 2F85D;CJK COMPATIBILITY IDEOGRAPH-2F85D;Lo;0;L;591A;;;;N;;;;; 2F85E;CJK COMPATIBILITY IDEOGRAPH-2F85E;Lo;0;L;5922;;;;N;;;;; 2F85F;CJK COMPATIBILITY IDEOGRAPH-2F85F;Lo;0;L;5962;;;;N;;;;; 2F860;CJK COMPATIBILITY IDEOGRAPH-2F860;Lo;0;L;216A8;;;;N;;;;; 2F861;CJK COMPATIBILITY IDEOGRAPH-2F861;Lo;0;L;216EA;;;;N;;;;; 2F862;CJK COMPATIBILITY IDEOGRAPH-2F862;Lo;0;L;59EC;;;;N;;;;; 2F863;CJK COMPATIBILITY IDEOGRAPH-2F863;Lo;0;L;5A1B;;;;N;;;;; 2F864;CJK COMPATIBILITY IDEOGRAPH-2F864;Lo;0;L;5A27;;;;N;;;;; 2F865;CJK COMPATIBILITY IDEOGRAPH-2F865;Lo;0;L;59D8;;;;N;;;;; 2F866;CJK COMPATIBILITY IDEOGRAPH-2F866;Lo;0;L;5A66;;;;N;;;;; 2F867;CJK COMPATIBILITY IDEOGRAPH-2F867;Lo;0;L;36EE;;;;N;;;;; 2F868;CJK COMPATIBILITY IDEOGRAPH-2F868;Lo;0;L;36FC;;;;N;;;;; 2F869;CJK COMPATIBILITY IDEOGRAPH-2F869;Lo;0;L;5B08;;;;N;;;;; 2F86A;CJK COMPATIBILITY IDEOGRAPH-2F86A;Lo;0;L;5B3E;;;;N;;;;; 2F86B;CJK COMPATIBILITY IDEOGRAPH-2F86B;Lo;0;L;5B3E;;;;N;;;;; 2F86C;CJK COMPATIBILITY IDEOGRAPH-2F86C;Lo;0;L;219C8;;;;N;;;;; 2F86D;CJK COMPATIBILITY IDEOGRAPH-2F86D;Lo;0;L;5BC3;;;;N;;;;; 2F86E;CJK COMPATIBILITY IDEOGRAPH-2F86E;Lo;0;L;5BD8;;;;N;;;;; 2F86F;CJK COMPATIBILITY IDEOGRAPH-2F86F;Lo;0;L;5BE7;;;;N;;;;; 2F870;CJK COMPATIBILITY IDEOGRAPH-2F870;Lo;0;L;5BF3;;;;N;;;;; 2F871;CJK COMPATIBILITY IDEOGRAPH-2F871;Lo;0;L;21B18;;;;N;;;;; 2F872;CJK COMPATIBILITY IDEOGRAPH-2F872;Lo;0;L;5BFF;;;;N;;;;; 2F873;CJK COMPATIBILITY IDEOGRAPH-2F873;Lo;0;L;5C06;;;;N;;;;; 2F874;CJK COMPATIBILITY IDEOGRAPH-2F874;Lo;0;L;5F53;;;;N;;;;; 2F875;CJK COMPATIBILITY IDEOGRAPH-2F875;Lo;0;L;5C22;;;;N;;;;; 2F876;CJK COMPATIBILITY IDEOGRAPH-2F876;Lo;0;L;3781;;;;N;;;;; 2F877;CJK COMPATIBILITY IDEOGRAPH-2F877;Lo;0;L;5C60;;;;N;;;;; 2F878;CJK COMPATIBILITY IDEOGRAPH-2F878;Lo;0;L;5C6E;;;;N;;;;; 2F879;CJK COMPATIBILITY IDEOGRAPH-2F879;Lo;0;L;5CC0;;;;N;;;;; 2F87A;CJK COMPATIBILITY IDEOGRAPH-2F87A;Lo;0;L;5C8D;;;;N;;;;; 2F87B;CJK COMPATIBILITY IDEOGRAPH-2F87B;Lo;0;L;21DE4;;;;N;;;;; 2F87C;CJK COMPATIBILITY IDEOGRAPH-2F87C;Lo;0;L;5D43;;;;N;;;;; 2F87D;CJK COMPATIBILITY IDEOGRAPH-2F87D;Lo;0;L;21DE6;;;;N;;;;; 2F87E;CJK COMPATIBILITY IDEOGRAPH-2F87E;Lo;0;L;5D6E;;;;N;;;;; 2F87F;CJK COMPATIBILITY IDEOGRAPH-2F87F;Lo;0;L;5D6B;;;;N;;;;; 2F880;CJK COMPATIBILITY IDEOGRAPH-2F880;Lo;0;L;5D7C;;;;N;;;;; 2F881;CJK COMPATIBILITY IDEOGRAPH-2F881;Lo;0;L;5DE1;;;;N;;;;; 2F882;CJK COMPATIBILITY IDEOGRAPH-2F882;Lo;0;L;5DE2;;;;N;;;;; 2F883;CJK COMPATIBILITY IDEOGRAPH-2F883;Lo;0;L;382F;;;;N;;;;; 2F884;CJK COMPATIBILITY IDEOGRAPH-2F884;Lo;0;L;5DFD;;;;N;;;;; 2F885;CJK COMPATIBILITY IDEOGRAPH-2F885;Lo;0;L;5E28;;;;N;;;;; 2F886;CJK COMPATIBILITY IDEOGRAPH-2F886;Lo;0;L;5E3D;;;;N;;;;; 2F887;CJK COMPATIBILITY IDEOGRAPH-2F887;Lo;0;L;5E69;;;;N;;;;; 2F888;CJK COMPATIBILITY IDEOGRAPH-2F888;Lo;0;L;3862;;;;N;;;;; 2F889;CJK COMPATIBILITY IDEOGRAPH-2F889;Lo;0;L;22183;;;;N;;;;; 2F88A;CJK COMPATIBILITY IDEOGRAPH-2F88A;Lo;0;L;387C;;;;N;;;;; 2F88B;CJK COMPATIBILITY IDEOGRAPH-2F88B;Lo;0;L;5EB0;;;;N;;;;; 2F88C;CJK COMPATIBILITY IDEOGRAPH-2F88C;Lo;0;L;5EB3;;;;N;;;;; 2F88D;CJK COMPATIBILITY IDEOGRAPH-2F88D;Lo;0;L;5EB6;;;;N;;;;; 2F88E;CJK COMPATIBILITY IDEOGRAPH-2F88E;Lo;0;L;5ECA;;;;N;;;;; 2F88F;CJK COMPATIBILITY IDEOGRAPH-2F88F;Lo;0;L;2A392;;;;N;;;;; 2F890;CJK COMPATIBILITY IDEOGRAPH-2F890;Lo;0;L;5EFE;;;;N;;;;; 2F891;CJK COMPATIBILITY IDEOGRAPH-2F891;Lo;0;L;22331;;;;N;;;;; 2F892;CJK COMPATIBILITY IDEOGRAPH-2F892;Lo;0;L;22331;;;;N;;;;; 2F893;CJK COMPATIBILITY IDEOGRAPH-2F893;Lo;0;L;8201;;;;N;;;;; 2F894;CJK COMPATIBILITY IDEOGRAPH-2F894;Lo;0;L;5F22;;;;N;;;;; 2F895;CJK COMPATIBILITY IDEOGRAPH-2F895;Lo;0;L;5F22;;;;N;;;;; 2F896;CJK COMPATIBILITY IDEOGRAPH-2F896;Lo;0;L;38C7;;;;N;;;;; 2F897;CJK COMPATIBILITY IDEOGRAPH-2F897;Lo;0;L;232B8;;;;N;;;;; 2F898;CJK COMPATIBILITY IDEOGRAPH-2F898;Lo;0;L;261DA;;;;N;;;;; 2F899;CJK COMPATIBILITY IDEOGRAPH-2F899;Lo;0;L;5F62;;;;N;;;;; 2F89A;CJK COMPATIBILITY IDEOGRAPH-2F89A;Lo;0;L;5F6B;;;;N;;;;; 2F89B;CJK COMPATIBILITY IDEOGRAPH-2F89B;Lo;0;L;38E3;;;;N;;;;; 2F89C;CJK COMPATIBILITY IDEOGRAPH-2F89C;Lo;0;L;5F9A;;;;N;;;;; 2F89D;CJK COMPATIBILITY IDEOGRAPH-2F89D;Lo;0;L;5FCD;;;;N;;;;; 2F89E;CJK COMPATIBILITY IDEOGRAPH-2F89E;Lo;0;L;5FD7;;;;N;;;;; 2F89F;CJK COMPATIBILITY IDEOGRAPH-2F89F;Lo;0;L;5FF9;;;;N;;;;; 2F8A0;CJK COMPATIBILITY IDEOGRAPH-2F8A0;Lo;0;L;6081;;;;N;;;;; 2F8A1;CJK COMPATIBILITY IDEOGRAPH-2F8A1;Lo;0;L;393A;;;;N;;;;; 2F8A2;CJK COMPATIBILITY IDEOGRAPH-2F8A2;Lo;0;L;391C;;;;N;;;;; 2F8A3;CJK COMPATIBILITY IDEOGRAPH-2F8A3;Lo;0;L;6094;;;;N;;;;; 2F8A4;CJK COMPATIBILITY IDEOGRAPH-2F8A4;Lo;0;L;226D4;;;;N;;;;; 2F8A5;CJK COMPATIBILITY IDEOGRAPH-2F8A5;Lo;0;L;60C7;;;;N;;;;; 2F8A6;CJK COMPATIBILITY IDEOGRAPH-2F8A6;Lo;0;L;6148;;;;N;;;;; 2F8A7;CJK COMPATIBILITY IDEOGRAPH-2F8A7;Lo;0;L;614C;;;;N;;;;; 2F8A8;CJK COMPATIBILITY IDEOGRAPH-2F8A8;Lo;0;L;614E;;;;N;;;;; 2F8A9;CJK COMPATIBILITY IDEOGRAPH-2F8A9;Lo;0;L;614C;;;;N;;;;; 2F8AA;CJK COMPATIBILITY IDEOGRAPH-2F8AA;Lo;0;L;617A;;;;N;;;;; 2F8AB;CJK COMPATIBILITY IDEOGRAPH-2F8AB;Lo;0;L;618E;;;;N;;;;; 2F8AC;CJK COMPATIBILITY IDEOGRAPH-2F8AC;Lo;0;L;61B2;;;;N;;;;; 2F8AD;CJK COMPATIBILITY IDEOGRAPH-2F8AD;Lo;0;L;61A4;;;;N;;;;; 2F8AE;CJK COMPATIBILITY IDEOGRAPH-2F8AE;Lo;0;L;61AF;;;;N;;;;; 2F8AF;CJK COMPATIBILITY IDEOGRAPH-2F8AF;Lo;0;L;61DE;;;;N;;;;; 2F8B0;CJK COMPATIBILITY IDEOGRAPH-2F8B0;Lo;0;L;61F2;;;;N;;;;; 2F8B1;CJK COMPATIBILITY IDEOGRAPH-2F8B1;Lo;0;L;61F6;;;;N;;;;; 2F8B2;CJK COMPATIBILITY IDEOGRAPH-2F8B2;Lo;0;L;6210;;;;N;;;;; 2F8B3;CJK COMPATIBILITY IDEOGRAPH-2F8B3;Lo;0;L;621B;;;;N;;;;; 2F8B4;CJK COMPATIBILITY IDEOGRAPH-2F8B4;Lo;0;L;625D;;;;N;;;;; 2F8B5;CJK COMPATIBILITY IDEOGRAPH-2F8B5;Lo;0;L;62B1;;;;N;;;;; 2F8B6;CJK COMPATIBILITY IDEOGRAPH-2F8B6;Lo;0;L;62D4;;;;N;;;;; 2F8B7;CJK COMPATIBILITY IDEOGRAPH-2F8B7;Lo;0;L;6350;;;;N;;;;; 2F8B8;CJK COMPATIBILITY IDEOGRAPH-2F8B8;Lo;0;L;22B0C;;;;N;;;;; 2F8B9;CJK COMPATIBILITY IDEOGRAPH-2F8B9;Lo;0;L;633D;;;;N;;;;; 2F8BA;CJK COMPATIBILITY IDEOGRAPH-2F8BA;Lo;0;L;62FC;;;;N;;;;; 2F8BB;CJK COMPATIBILITY IDEOGRAPH-2F8BB;Lo;0;L;6368;;;;N;;;;; 2F8BC;CJK COMPATIBILITY IDEOGRAPH-2F8BC;Lo;0;L;6383;;;;N;;;;; 2F8BD;CJK COMPATIBILITY IDEOGRAPH-2F8BD;Lo;0;L;63E4;;;;N;;;;; 2F8BE;CJK COMPATIBILITY IDEOGRAPH-2F8BE;Lo;0;L;22BF1;;;;N;;;;; 2F8BF;CJK COMPATIBILITY IDEOGRAPH-2F8BF;Lo;0;L;6422;;;;N;;;;; 2F8C0;CJK COMPATIBILITY IDEOGRAPH-2F8C0;Lo;0;L;63C5;;;;N;;;;; 2F8C1;CJK COMPATIBILITY IDEOGRAPH-2F8C1;Lo;0;L;63A9;;;;N;;;;; 2F8C2;CJK COMPATIBILITY IDEOGRAPH-2F8C2;Lo;0;L;3A2E;;;;N;;;;; 2F8C3;CJK COMPATIBILITY IDEOGRAPH-2F8C3;Lo;0;L;6469;;;;N;;;;; 2F8C4;CJK COMPATIBILITY IDEOGRAPH-2F8C4;Lo;0;L;647E;;;;N;;;;; 2F8C5;CJK COMPATIBILITY IDEOGRAPH-2F8C5;Lo;0;L;649D;;;;N;;;;; 2F8C6;CJK COMPATIBILITY IDEOGRAPH-2F8C6;Lo;0;L;6477;;;;N;;;;; 2F8C7;CJK COMPATIBILITY IDEOGRAPH-2F8C7;Lo;0;L;3A6C;;;;N;;;;; 2F8C8;CJK COMPATIBILITY IDEOGRAPH-2F8C8;Lo;0;L;654F;;;;N;;;;; 2F8C9;CJK COMPATIBILITY IDEOGRAPH-2F8C9;Lo;0;L;656C;;;;N;;;;; 2F8CA;CJK COMPATIBILITY IDEOGRAPH-2F8CA;Lo;0;L;2300A;;;;N;;;;; 2F8CB;CJK COMPATIBILITY IDEOGRAPH-2F8CB;Lo;0;L;65E3;;;;N;;;;; 2F8CC;CJK COMPATIBILITY IDEOGRAPH-2F8CC;Lo;0;L;66F8;;;;N;;;;; 2F8CD;CJK COMPATIBILITY IDEOGRAPH-2F8CD;Lo;0;L;6649;;;;N;;;;; 2F8CE;CJK COMPATIBILITY IDEOGRAPH-2F8CE;Lo;0;L;3B19;;;;N;;;;; 2F8CF;CJK COMPATIBILITY IDEOGRAPH-2F8CF;Lo;0;L;6691;;;;N;;;;; 2F8D0;CJK COMPATIBILITY IDEOGRAPH-2F8D0;Lo;0;L;3B08;;;;N;;;;; 2F8D1;CJK COMPATIBILITY IDEOGRAPH-2F8D1;Lo;0;L;3AE4;;;;N;;;;; 2F8D2;CJK COMPATIBILITY IDEOGRAPH-2F8D2;Lo;0;L;5192;;;;N;;;;; 2F8D3;CJK COMPATIBILITY IDEOGRAPH-2F8D3;Lo;0;L;5195;;;;N;;;;; 2F8D4;CJK COMPATIBILITY IDEOGRAPH-2F8D4;Lo;0;L;6700;;;;N;;;;; 2F8D5;CJK COMPATIBILITY IDEOGRAPH-2F8D5;Lo;0;L;669C;;;;N;;;;; 2F8D6;CJK COMPATIBILITY IDEOGRAPH-2F8D6;Lo;0;L;80AD;;;;N;;;;; 2F8D7;CJK COMPATIBILITY IDEOGRAPH-2F8D7;Lo;0;L;43D9;;;;N;;;;; 2F8D8;CJK COMPATIBILITY IDEOGRAPH-2F8D8;Lo;0;L;6717;;;;N;;;;; 2F8D9;CJK COMPATIBILITY IDEOGRAPH-2F8D9;Lo;0;L;671B;;;;N;;;;; 2F8DA;CJK COMPATIBILITY IDEOGRAPH-2F8DA;Lo;0;L;6721;;;;N;;;;; 2F8DB;CJK COMPATIBILITY IDEOGRAPH-2F8DB;Lo;0;L;675E;;;;N;;;;; 2F8DC;CJK COMPATIBILITY IDEOGRAPH-2F8DC;Lo;0;L;6753;;;;N;;;;; 2F8DD;CJK COMPATIBILITY IDEOGRAPH-2F8DD;Lo;0;L;233C3;;;;N;;;;; 2F8DE;CJK COMPATIBILITY IDEOGRAPH-2F8DE;Lo;0;L;3B49;;;;N;;;;; 2F8DF;CJK COMPATIBILITY IDEOGRAPH-2F8DF;Lo;0;L;67FA;;;;N;;;;; 2F8E0;CJK COMPATIBILITY IDEOGRAPH-2F8E0;Lo;0;L;6785;;;;N;;;;; 2F8E1;CJK COMPATIBILITY IDEOGRAPH-2F8E1;Lo;0;L;6852;;;;N;;;;; 2F8E2;CJK COMPATIBILITY IDEOGRAPH-2F8E2;Lo;0;L;6885;;;;N;;;;; 2F8E3;CJK COMPATIBILITY IDEOGRAPH-2F8E3;Lo;0;L;2346D;;;;N;;;;; 2F8E4;CJK COMPATIBILITY IDEOGRAPH-2F8E4;Lo;0;L;688E;;;;N;;;;; 2F8E5;CJK COMPATIBILITY IDEOGRAPH-2F8E5;Lo;0;L;681F;;;;N;;;;; 2F8E6;CJK COMPATIBILITY IDEOGRAPH-2F8E6;Lo;0;L;6914;;;;N;;;;; 2F8E7;CJK COMPATIBILITY IDEOGRAPH-2F8E7;Lo;0;L;3B9D;;;;N;;;;; 2F8E8;CJK COMPATIBILITY IDEOGRAPH-2F8E8;Lo;0;L;6942;;;;N;;;;; 2F8E9;CJK COMPATIBILITY IDEOGRAPH-2F8E9;Lo;0;L;69A3;;;;N;;;;; 2F8EA;CJK COMPATIBILITY IDEOGRAPH-2F8EA;Lo;0;L;69EA;;;;N;;;;; 2F8EB;CJK COMPATIBILITY IDEOGRAPH-2F8EB;Lo;0;L;6AA8;;;;N;;;;; 2F8EC;CJK COMPATIBILITY IDEOGRAPH-2F8EC;Lo;0;L;236A3;;;;N;;;;; 2F8ED;CJK COMPATIBILITY IDEOGRAPH-2F8ED;Lo;0;L;6ADB;;;;N;;;;; 2F8EE;CJK COMPATIBILITY IDEOGRAPH-2F8EE;Lo;0;L;3C18;;;;N;;;;; 2F8EF;CJK COMPATIBILITY IDEOGRAPH-2F8EF;Lo;0;L;6B21;;;;N;;;;; 2F8F0;CJK COMPATIBILITY IDEOGRAPH-2F8F0;Lo;0;L;238A7;;;;N;;;;; 2F8F1;CJK COMPATIBILITY IDEOGRAPH-2F8F1;Lo;0;L;6B54;;;;N;;;;; 2F8F2;CJK COMPATIBILITY IDEOGRAPH-2F8F2;Lo;0;L;3C4E;;;;N;;;;; 2F8F3;CJK COMPATIBILITY IDEOGRAPH-2F8F3;Lo;0;L;6B72;;;;N;;;;; 2F8F4;CJK COMPATIBILITY IDEOGRAPH-2F8F4;Lo;0;L;6B9F;;;;N;;;;; 2F8F5;CJK COMPATIBILITY IDEOGRAPH-2F8F5;Lo;0;L;6BBA;;;;N;;;;; 2F8F6;CJK COMPATIBILITY IDEOGRAPH-2F8F6;Lo;0;L;6BBB;;;;N;;;;; 2F8F7;CJK COMPATIBILITY IDEOGRAPH-2F8F7;Lo;0;L;23A8D;;;;N;;;;; 2F8F8;CJK COMPATIBILITY IDEOGRAPH-2F8F8;Lo;0;L;21D0B;;;;N;;;;; 2F8F9;CJK COMPATIBILITY IDEOGRAPH-2F8F9;Lo;0;L;23AFA;;;;N;;;;; 2F8FA;CJK COMPATIBILITY IDEOGRAPH-2F8FA;Lo;0;L;6C4E;;;;N;;;;; 2F8FB;CJK COMPATIBILITY IDEOGRAPH-2F8FB;Lo;0;L;23CBC;;;;N;;;;; 2F8FC;CJK COMPATIBILITY IDEOGRAPH-2F8FC;Lo;0;L;6CBF;;;;N;;;;; 2F8FD;CJK COMPATIBILITY IDEOGRAPH-2F8FD;Lo;0;L;6CCD;;;;N;;;;; 2F8FE;CJK COMPATIBILITY IDEOGRAPH-2F8FE;Lo;0;L;6C67;;;;N;;;;; 2F8FF;CJK COMPATIBILITY IDEOGRAPH-2F8FF;Lo;0;L;6D16;;;;N;;;;; 2F900;CJK COMPATIBILITY IDEOGRAPH-2F900;Lo;0;L;6D3E;;;;N;;;;; 2F901;CJK COMPATIBILITY IDEOGRAPH-2F901;Lo;0;L;6D77;;;;N;;;;; 2F902;CJK COMPATIBILITY IDEOGRAPH-2F902;Lo;0;L;6D41;;;;N;;;;; 2F903;CJK COMPATIBILITY IDEOGRAPH-2F903;Lo;0;L;6D69;;;;N;;;;; 2F904;CJK COMPATIBILITY IDEOGRAPH-2F904;Lo;0;L;6D78;;;;N;;;;; 2F905;CJK COMPATIBILITY IDEOGRAPH-2F905;Lo;0;L;6D85;;;;N;;;;; 2F906;CJK COMPATIBILITY IDEOGRAPH-2F906;Lo;0;L;23D1E;;;;N;;;;; 2F907;CJK COMPATIBILITY IDEOGRAPH-2F907;Lo;0;L;6D34;;;;N;;;;; 2F908;CJK COMPATIBILITY IDEOGRAPH-2F908;Lo;0;L;6E2F;;;;N;;;;; 2F909;CJK COMPATIBILITY IDEOGRAPH-2F909;Lo;0;L;6E6E;;;;N;;;;; 2F90A;CJK COMPATIBILITY IDEOGRAPH-2F90A;Lo;0;L;3D33;;;;N;;;;; 2F90B;CJK COMPATIBILITY IDEOGRAPH-2F90B;Lo;0;L;6ECB;;;;N;;;;; 2F90C;CJK COMPATIBILITY IDEOGRAPH-2F90C;Lo;0;L;6EC7;;;;N;;;;; 2F90D;CJK COMPATIBILITY IDEOGRAPH-2F90D;Lo;0;L;23ED1;;;;N;;;;; 2F90E;CJK COMPATIBILITY IDEOGRAPH-2F90E;Lo;0;L;6DF9;;;;N;;;;; 2F90F;CJK COMPATIBILITY IDEOGRAPH-2F90F;Lo;0;L;6F6E;;;;N;;;;; 2F910;CJK COMPATIBILITY IDEOGRAPH-2F910;Lo;0;L;23F5E;;;;N;;;;; 2F911;CJK COMPATIBILITY IDEOGRAPH-2F911;Lo;0;L;23F8E;;;;N;;;;; 2F912;CJK COMPATIBILITY IDEOGRAPH-2F912;Lo;0;L;6FC6;;;;N;;;;; 2F913;CJK COMPATIBILITY IDEOGRAPH-2F913;Lo;0;L;7039;;;;N;;;;; 2F914;CJK COMPATIBILITY IDEOGRAPH-2F914;Lo;0;L;701E;;;;N;;;;; 2F915;CJK COMPATIBILITY IDEOGRAPH-2F915;Lo;0;L;701B;;;;N;;;;; 2F916;CJK COMPATIBILITY IDEOGRAPH-2F916;Lo;0;L;3D96;;;;N;;;;; 2F917;CJK COMPATIBILITY IDEOGRAPH-2F917;Lo;0;L;704A;;;;N;;;;; 2F918;CJK COMPATIBILITY IDEOGRAPH-2F918;Lo;0;L;707D;;;;N;;;;; 2F919;CJK COMPATIBILITY IDEOGRAPH-2F919;Lo;0;L;7077;;;;N;;;;; 2F91A;CJK COMPATIBILITY IDEOGRAPH-2F91A;Lo;0;L;70AD;;;;N;;;;; 2F91B;CJK COMPATIBILITY IDEOGRAPH-2F91B;Lo;0;L;20525;;;;N;;;;; 2F91C;CJK COMPATIBILITY IDEOGRAPH-2F91C;Lo;0;L;7145;;;;N;;;;; 2F91D;CJK COMPATIBILITY IDEOGRAPH-2F91D;Lo;0;L;24263;;;;N;;;;; 2F91E;CJK COMPATIBILITY IDEOGRAPH-2F91E;Lo;0;L;719C;;;;N;;;;; 2F91F;CJK COMPATIBILITY IDEOGRAPH-2F91F;Lo;0;L;243AB;;;;N;;;;; 2F920;CJK COMPATIBILITY IDEOGRAPH-2F920;Lo;0;L;7228;;;;N;;;;; 2F921;CJK COMPATIBILITY IDEOGRAPH-2F921;Lo;0;L;7235;;;;N;;;;; 2F922;CJK COMPATIBILITY IDEOGRAPH-2F922;Lo;0;L;7250;;;;N;;;;; 2F923;CJK COMPATIBILITY IDEOGRAPH-2F923;Lo;0;L;24608;;;;N;;;;; 2F924;CJK COMPATIBILITY IDEOGRAPH-2F924;Lo;0;L;7280;;;;N;;;;; 2F925;CJK COMPATIBILITY IDEOGRAPH-2F925;Lo;0;L;7295;;;;N;;;;; 2F926;CJK COMPATIBILITY IDEOGRAPH-2F926;Lo;0;L;24735;;;;N;;;;; 2F927;CJK COMPATIBILITY IDEOGRAPH-2F927;Lo;0;L;24814;;;;N;;;;; 2F928;CJK COMPATIBILITY IDEOGRAPH-2F928;Lo;0;L;737A;;;;N;;;;; 2F929;CJK COMPATIBILITY IDEOGRAPH-2F929;Lo;0;L;738B;;;;N;;;;; 2F92A;CJK COMPATIBILITY IDEOGRAPH-2F92A;Lo;0;L;3EAC;;;;N;;;;; 2F92B;CJK COMPATIBILITY IDEOGRAPH-2F92B;Lo;0;L;73A5;;;;N;;;;; 2F92C;CJK COMPATIBILITY IDEOGRAPH-2F92C;Lo;0;L;3EB8;;;;N;;;;; 2F92D;CJK COMPATIBILITY IDEOGRAPH-2F92D;Lo;0;L;3EB8;;;;N;;;;; 2F92E;CJK COMPATIBILITY IDEOGRAPH-2F92E;Lo;0;L;7447;;;;N;;;;; 2F92F;CJK COMPATIBILITY IDEOGRAPH-2F92F;Lo;0;L;745C;;;;N;;;;; 2F930;CJK COMPATIBILITY IDEOGRAPH-2F930;Lo;0;L;7471;;;;N;;;;; 2F931;CJK COMPATIBILITY IDEOGRAPH-2F931;Lo;0;L;7485;;;;N;;;;; 2F932;CJK COMPATIBILITY IDEOGRAPH-2F932;Lo;0;L;74CA;;;;N;;;;; 2F933;CJK COMPATIBILITY IDEOGRAPH-2F933;Lo;0;L;3F1B;;;;N;;;;; 2F934;CJK COMPATIBILITY IDEOGRAPH-2F934;Lo;0;L;7524;;;;N;;;;; 2F935;CJK COMPATIBILITY IDEOGRAPH-2F935;Lo;0;L;24C36;;;;N;;;;; 2F936;CJK COMPATIBILITY IDEOGRAPH-2F936;Lo;0;L;753E;;;;N;;;;; 2F937;CJK COMPATIBILITY IDEOGRAPH-2F937;Lo;0;L;24C92;;;;N;;;;; 2F938;CJK COMPATIBILITY IDEOGRAPH-2F938;Lo;0;L;7570;;;;N;;;;; 2F939;CJK COMPATIBILITY IDEOGRAPH-2F939;Lo;0;L;2219F;;;;N;;;;; 2F93A;CJK COMPATIBILITY IDEOGRAPH-2F93A;Lo;0;L;7610;;;;N;;;;; 2F93B;CJK COMPATIBILITY IDEOGRAPH-2F93B;Lo;0;L;24FA1;;;;N;;;;; 2F93C;CJK COMPATIBILITY IDEOGRAPH-2F93C;Lo;0;L;24FB8;;;;N;;;;; 2F93D;CJK COMPATIBILITY IDEOGRAPH-2F93D;Lo;0;L;25044;;;;N;;;;; 2F93E;CJK COMPATIBILITY IDEOGRAPH-2F93E;Lo;0;L;3FFC;;;;N;;;;; 2F93F;CJK COMPATIBILITY IDEOGRAPH-2F93F;Lo;0;L;4008;;;;N;;;;; 2F940;CJK COMPATIBILITY IDEOGRAPH-2F940;Lo;0;L;76F4;;;;N;;;;; 2F941;CJK COMPATIBILITY IDEOGRAPH-2F941;Lo;0;L;250F3;;;;N;;;;; 2F942;CJK COMPATIBILITY IDEOGRAPH-2F942;Lo;0;L;250F2;;;;N;;;;; 2F943;CJK COMPATIBILITY IDEOGRAPH-2F943;Lo;0;L;25119;;;;N;;;;; 2F944;CJK COMPATIBILITY IDEOGRAPH-2F944;Lo;0;L;25133;;;;N;;;;; 2F945;CJK COMPATIBILITY IDEOGRAPH-2F945;Lo;0;L;771E;;;;N;;;;; 2F946;CJK COMPATIBILITY IDEOGRAPH-2F946;Lo;0;L;771F;;;;N;;;;; 2F947;CJK COMPATIBILITY IDEOGRAPH-2F947;Lo;0;L;771F;;;;N;;;;; 2F948;CJK COMPATIBILITY IDEOGRAPH-2F948;Lo;0;L;774A;;;;N;;;;; 2F949;CJK COMPATIBILITY IDEOGRAPH-2F949;Lo;0;L;4039;;;;N;;;;; 2F94A;CJK COMPATIBILITY IDEOGRAPH-2F94A;Lo;0;L;778B;;;;N;;;;; 2F94B;CJK COMPATIBILITY IDEOGRAPH-2F94B;Lo;0;L;4046;;;;N;;;;; 2F94C;CJK COMPATIBILITY IDEOGRAPH-2F94C;Lo;0;L;4096;;;;N;;;;; 2F94D;CJK COMPATIBILITY IDEOGRAPH-2F94D;Lo;0;L;2541D;;;;N;;;;; 2F94E;CJK COMPATIBILITY IDEOGRAPH-2F94E;Lo;0;L;784E;;;;N;;;;; 2F94F;CJK COMPATIBILITY IDEOGRAPH-2F94F;Lo;0;L;788C;;;;N;;;;; 2F950;CJK COMPATIBILITY IDEOGRAPH-2F950;Lo;0;L;78CC;;;;N;;;;; 2F951;CJK COMPATIBILITY IDEOGRAPH-2F951;Lo;0;L;40E3;;;;N;;;;; 2F952;CJK COMPATIBILITY IDEOGRAPH-2F952;Lo;0;L;25626;;;;N;;;;; 2F953;CJK COMPATIBILITY IDEOGRAPH-2F953;Lo;0;L;7956;;;;N;;;;; 2F954;CJK COMPATIBILITY IDEOGRAPH-2F954;Lo;0;L;2569A;;;;N;;;;; 2F955;CJK COMPATIBILITY IDEOGRAPH-2F955;Lo;0;L;256C5;;;;N;;;;; 2F956;CJK COMPATIBILITY IDEOGRAPH-2F956;Lo;0;L;798F;;;;N;;;;; 2F957;CJK COMPATIBILITY IDEOGRAPH-2F957;Lo;0;L;79EB;;;;N;;;;; 2F958;CJK COMPATIBILITY IDEOGRAPH-2F958;Lo;0;L;412F;;;;N;;;;; 2F959;CJK COMPATIBILITY IDEOGRAPH-2F959;Lo;0;L;7A40;;;;N;;;;; 2F95A;CJK COMPATIBILITY IDEOGRAPH-2F95A;Lo;0;L;7A4A;;;;N;;;;; 2F95B;CJK COMPATIBILITY IDEOGRAPH-2F95B;Lo;0;L;7A4F;;;;N;;;;; 2F95C;CJK COMPATIBILITY IDEOGRAPH-2F95C;Lo;0;L;2597C;;;;N;;;;; 2F95D;CJK COMPATIBILITY IDEOGRAPH-2F95D;Lo;0;L;25AA7;;;;N;;;;; 2F95E;CJK COMPATIBILITY IDEOGRAPH-2F95E;Lo;0;L;25AA7;;;;N;;;;; 2F95F;CJK COMPATIBILITY IDEOGRAPH-2F95F;Lo;0;L;7AEE;;;;N;;;;; 2F960;CJK COMPATIBILITY IDEOGRAPH-2F960;Lo;0;L;4202;;;;N;;;;; 2F961;CJK COMPATIBILITY IDEOGRAPH-2F961;Lo;0;L;25BAB;;;;N;;;;; 2F962;CJK COMPATIBILITY IDEOGRAPH-2F962;Lo;0;L;7BC6;;;;N;;;;; 2F963;CJK COMPATIBILITY IDEOGRAPH-2F963;Lo;0;L;7BC9;;;;N;;;;; 2F964;CJK COMPATIBILITY IDEOGRAPH-2F964;Lo;0;L;4227;;;;N;;;;; 2F965;CJK COMPATIBILITY IDEOGRAPH-2F965;Lo;0;L;25C80;;;;N;;;;; 2F966;CJK COMPATIBILITY IDEOGRAPH-2F966;Lo;0;L;7CD2;;;;N;;;;; 2F967;CJK COMPATIBILITY IDEOGRAPH-2F967;Lo;0;L;42A0;;;;N;;;;; 2F968;CJK COMPATIBILITY IDEOGRAPH-2F968;Lo;0;L;7CE8;;;;N;;;;; 2F969;CJK COMPATIBILITY IDEOGRAPH-2F969;Lo;0;L;7CE3;;;;N;;;;; 2F96A;CJK COMPATIBILITY IDEOGRAPH-2F96A;Lo;0;L;7D00;;;;N;;;;; 2F96B;CJK COMPATIBILITY IDEOGRAPH-2F96B;Lo;0;L;25F86;;;;N;;;;; 2F96C;CJK COMPATIBILITY IDEOGRAPH-2F96C;Lo;0;L;7D63;;;;N;;;;; 2F96D;CJK COMPATIBILITY IDEOGRAPH-2F96D;Lo;0;L;4301;;;;N;;;;; 2F96E;CJK COMPATIBILITY IDEOGRAPH-2F96E;Lo;0;L;7DC7;;;;N;;;;; 2F96F;CJK COMPATIBILITY IDEOGRAPH-2F96F;Lo;0;L;7E02;;;;N;;;;; 2F970;CJK COMPATIBILITY IDEOGRAPH-2F970;Lo;0;L;7E45;;;;N;;;;; 2F971;CJK COMPATIBILITY IDEOGRAPH-2F971;Lo;0;L;4334;;;;N;;;;; 2F972;CJK COMPATIBILITY IDEOGRAPH-2F972;Lo;0;L;26228;;;;N;;;;; 2F973;CJK COMPATIBILITY IDEOGRAPH-2F973;Lo;0;L;26247;;;;N;;;;; 2F974;CJK COMPATIBILITY IDEOGRAPH-2F974;Lo;0;L;4359;;;;N;;;;; 2F975;CJK COMPATIBILITY IDEOGRAPH-2F975;Lo;0;L;262D9;;;;N;;;;; 2F976;CJK COMPATIBILITY IDEOGRAPH-2F976;Lo;0;L;7F7A;;;;N;;;;; 2F977;CJK COMPATIBILITY IDEOGRAPH-2F977;Lo;0;L;2633E;;;;N;;;;; 2F978;CJK COMPATIBILITY IDEOGRAPH-2F978;Lo;0;L;7F95;;;;N;;;;; 2F979;CJK COMPATIBILITY IDEOGRAPH-2F979;Lo;0;L;7FFA;;;;N;;;;; 2F97A;CJK COMPATIBILITY IDEOGRAPH-2F97A;Lo;0;L;8005;;;;N;;;;; 2F97B;CJK COMPATIBILITY IDEOGRAPH-2F97B;Lo;0;L;264DA;;;;N;;;;; 2F97C;CJK COMPATIBILITY IDEOGRAPH-2F97C;Lo;0;L;26523;;;;N;;;;; 2F97D;CJK COMPATIBILITY IDEOGRAPH-2F97D;Lo;0;L;8060;;;;N;;;;; 2F97E;CJK COMPATIBILITY IDEOGRAPH-2F97E;Lo;0;L;265A8;;;;N;;;;; 2F97F;CJK COMPATIBILITY IDEOGRAPH-2F97F;Lo;0;L;8070;;;;N;;;;; 2F980;CJK COMPATIBILITY IDEOGRAPH-2F980;Lo;0;L;2335F;;;;N;;;;; 2F981;CJK COMPATIBILITY IDEOGRAPH-2F981;Lo;0;L;43D5;;;;N;;;;; 2F982;CJK COMPATIBILITY IDEOGRAPH-2F982;Lo;0;L;80B2;;;;N;;;;; 2F983;CJK COMPATIBILITY IDEOGRAPH-2F983;Lo;0;L;8103;;;;N;;;;; 2F984;CJK COMPATIBILITY IDEOGRAPH-2F984;Lo;0;L;440B;;;;N;;;;; 2F985;CJK COMPATIBILITY IDEOGRAPH-2F985;Lo;0;L;813E;;;;N;;;;; 2F986;CJK COMPATIBILITY IDEOGRAPH-2F986;Lo;0;L;5AB5;;;;N;;;;; 2F987;CJK COMPATIBILITY IDEOGRAPH-2F987;Lo;0;L;267A7;;;;N;;;;; 2F988;CJK COMPATIBILITY IDEOGRAPH-2F988;Lo;0;L;267B5;;;;N;;;;; 2F989;CJK COMPATIBILITY IDEOGRAPH-2F989;Lo;0;L;23393;;;;N;;;;; 2F98A;CJK COMPATIBILITY IDEOGRAPH-2F98A;Lo;0;L;2339C;;;;N;;;;; 2F98B;CJK COMPATIBILITY IDEOGRAPH-2F98B;Lo;0;L;8201;;;;N;;;;; 2F98C;CJK COMPATIBILITY IDEOGRAPH-2F98C;Lo;0;L;8204;;;;N;;;;; 2F98D;CJK COMPATIBILITY IDEOGRAPH-2F98D;Lo;0;L;8F9E;;;;N;;;;; 2F98E;CJK COMPATIBILITY IDEOGRAPH-2F98E;Lo;0;L;446B;;;;N;;;;; 2F98F;CJK COMPATIBILITY IDEOGRAPH-2F98F;Lo;0;L;8291;;;;N;;;;; 2F990;CJK COMPATIBILITY IDEOGRAPH-2F990;Lo;0;L;828B;;;;N;;;;; 2F991;CJK COMPATIBILITY IDEOGRAPH-2F991;Lo;0;L;829D;;;;N;;;;; 2F992;CJK COMPATIBILITY IDEOGRAPH-2F992;Lo;0;L;52B3;;;;N;;;;; 2F993;CJK COMPATIBILITY IDEOGRAPH-2F993;Lo;0;L;82B1;;;;N;;;;; 2F994;CJK COMPATIBILITY IDEOGRAPH-2F994;Lo;0;L;82B3;;;;N;;;;; 2F995;CJK COMPATIBILITY IDEOGRAPH-2F995;Lo;0;L;82BD;;;;N;;;;; 2F996;CJK COMPATIBILITY IDEOGRAPH-2F996;Lo;0;L;82E6;;;;N;;;;; 2F997;CJK COMPATIBILITY IDEOGRAPH-2F997;Lo;0;L;26B3C;;;;N;;;;; 2F998;CJK COMPATIBILITY IDEOGRAPH-2F998;Lo;0;L;82E5;;;;N;;;;; 2F999;CJK COMPATIBILITY IDEOGRAPH-2F999;Lo;0;L;831D;;;;N;;;;; 2F99A;CJK COMPATIBILITY IDEOGRAPH-2F99A;Lo;0;L;8363;;;;N;;;;; 2F99B;CJK COMPATIBILITY IDEOGRAPH-2F99B;Lo;0;L;83AD;;;;N;;;;; 2F99C;CJK COMPATIBILITY IDEOGRAPH-2F99C;Lo;0;L;8323;;;;N;;;;; 2F99D;CJK COMPATIBILITY IDEOGRAPH-2F99D;Lo;0;L;83BD;;;;N;;;;; 2F99E;CJK COMPATIBILITY IDEOGRAPH-2F99E;Lo;0;L;83E7;;;;N;;;;; 2F99F;CJK COMPATIBILITY IDEOGRAPH-2F99F;Lo;0;L;8457;;;;N;;;;; 2F9A0;CJK COMPATIBILITY IDEOGRAPH-2F9A0;Lo;0;L;8353;;;;N;;;;; 2F9A1;CJK COMPATIBILITY IDEOGRAPH-2F9A1;Lo;0;L;83CA;;;;N;;;;; 2F9A2;CJK COMPATIBILITY IDEOGRAPH-2F9A2;Lo;0;L;83CC;;;;N;;;;; 2F9A3;CJK COMPATIBILITY IDEOGRAPH-2F9A3;Lo;0;L;83DC;;;;N;;;;; 2F9A4;CJK COMPATIBILITY IDEOGRAPH-2F9A4;Lo;0;L;26C36;;;;N;;;;; 2F9A5;CJK COMPATIBILITY IDEOGRAPH-2F9A5;Lo;0;L;26D6B;;;;N;;;;; 2F9A6;CJK COMPATIBILITY IDEOGRAPH-2F9A6;Lo;0;L;26CD5;;;;N;;;;; 2F9A7;CJK COMPATIBILITY IDEOGRAPH-2F9A7;Lo;0;L;452B;;;;N;;;;; 2F9A8;CJK COMPATIBILITY IDEOGRAPH-2F9A8;Lo;0;L;84F1;;;;N;;;;; 2F9A9;CJK COMPATIBILITY IDEOGRAPH-2F9A9;Lo;0;L;84F3;;;;N;;;;; 2F9AA;CJK COMPATIBILITY IDEOGRAPH-2F9AA;Lo;0;L;8516;;;;N;;;;; 2F9AB;CJK COMPATIBILITY IDEOGRAPH-2F9AB;Lo;0;L;273CA;;;;N;;;;; 2F9AC;CJK COMPATIBILITY IDEOGRAPH-2F9AC;Lo;0;L;8564;;;;N;;;;; 2F9AD;CJK COMPATIBILITY IDEOGRAPH-2F9AD;Lo;0;L;26F2C;;;;N;;;;; 2F9AE;CJK COMPATIBILITY IDEOGRAPH-2F9AE;Lo;0;L;455D;;;;N;;;;; 2F9AF;CJK COMPATIBILITY IDEOGRAPH-2F9AF;Lo;0;L;4561;;;;N;;;;; 2F9B0;CJK COMPATIBILITY IDEOGRAPH-2F9B0;Lo;0;L;26FB1;;;;N;;;;; 2F9B1;CJK COMPATIBILITY IDEOGRAPH-2F9B1;Lo;0;L;270D2;;;;N;;;;; 2F9B2;CJK COMPATIBILITY IDEOGRAPH-2F9B2;Lo;0;L;456B;;;;N;;;;; 2F9B3;CJK COMPATIBILITY IDEOGRAPH-2F9B3;Lo;0;L;8650;;;;N;;;;; 2F9B4;CJK COMPATIBILITY IDEOGRAPH-2F9B4;Lo;0;L;865C;;;;N;;;;; 2F9B5;CJK COMPATIBILITY IDEOGRAPH-2F9B5;Lo;0;L;8667;;;;N;;;;; 2F9B6;CJK COMPATIBILITY IDEOGRAPH-2F9B6;Lo;0;L;8669;;;;N;;;;; 2F9B7;CJK COMPATIBILITY IDEOGRAPH-2F9B7;Lo;0;L;86A9;;;;N;;;;; 2F9B8;CJK COMPATIBILITY IDEOGRAPH-2F9B8;Lo;0;L;8688;;;;N;;;;; 2F9B9;CJK COMPATIBILITY IDEOGRAPH-2F9B9;Lo;0;L;870E;;;;N;;;;; 2F9BA;CJK COMPATIBILITY IDEOGRAPH-2F9BA;Lo;0;L;86E2;;;;N;;;;; 2F9BB;CJK COMPATIBILITY IDEOGRAPH-2F9BB;Lo;0;L;8779;;;;N;;;;; 2F9BC;CJK COMPATIBILITY IDEOGRAPH-2F9BC;Lo;0;L;8728;;;;N;;;;; 2F9BD;CJK COMPATIBILITY IDEOGRAPH-2F9BD;Lo;0;L;876B;;;;N;;;;; 2F9BE;CJK COMPATIBILITY IDEOGRAPH-2F9BE;Lo;0;L;8786;;;;N;;;;; 2F9BF;CJK COMPATIBILITY IDEOGRAPH-2F9BF;Lo;0;L;45D7;;;;N;;;;; 2F9C0;CJK COMPATIBILITY IDEOGRAPH-2F9C0;Lo;0;L;87E1;;;;N;;;;; 2F9C1;CJK COMPATIBILITY IDEOGRAPH-2F9C1;Lo;0;L;8801;;;;N;;;;; 2F9C2;CJK COMPATIBILITY IDEOGRAPH-2F9C2;Lo;0;L;45F9;;;;N;;;;; 2F9C3;CJK COMPATIBILITY IDEOGRAPH-2F9C3;Lo;0;L;8860;;;;N;;;;; 2F9C4;CJK COMPATIBILITY IDEOGRAPH-2F9C4;Lo;0;L;8863;;;;N;;;;; 2F9C5;CJK COMPATIBILITY IDEOGRAPH-2F9C5;Lo;0;L;27667;;;;N;;;;; 2F9C6;CJK COMPATIBILITY IDEOGRAPH-2F9C6;Lo;0;L;88D7;;;;N;;;;; 2F9C7;CJK COMPATIBILITY IDEOGRAPH-2F9C7;Lo;0;L;88DE;;;;N;;;;; 2F9C8;CJK COMPATIBILITY IDEOGRAPH-2F9C8;Lo;0;L;4635;;;;N;;;;; 2F9C9;CJK COMPATIBILITY IDEOGRAPH-2F9C9;Lo;0;L;88FA;;;;N;;;;; 2F9CA;CJK COMPATIBILITY IDEOGRAPH-2F9CA;Lo;0;L;34BB;;;;N;;;;; 2F9CB;CJK COMPATIBILITY IDEOGRAPH-2F9CB;Lo;0;L;278AE;;;;N;;;;; 2F9CC;CJK COMPATIBILITY IDEOGRAPH-2F9CC;Lo;0;L;27966;;;;N;;;;; 2F9CD;CJK COMPATIBILITY IDEOGRAPH-2F9CD;Lo;0;L;46BE;;;;N;;;;; 2F9CE;CJK COMPATIBILITY IDEOGRAPH-2F9CE;Lo;0;L;46C7;;;;N;;;;; 2F9CF;CJK COMPATIBILITY IDEOGRAPH-2F9CF;Lo;0;L;8AA0;;;;N;;;;; 2F9D0;CJK COMPATIBILITY IDEOGRAPH-2F9D0;Lo;0;L;8AED;;;;N;;;;; 2F9D1;CJK COMPATIBILITY IDEOGRAPH-2F9D1;Lo;0;L;8B8A;;;;N;;;;; 2F9D2;CJK COMPATIBILITY IDEOGRAPH-2F9D2;Lo;0;L;8C55;;;;N;;;;; 2F9D3;CJK COMPATIBILITY IDEOGRAPH-2F9D3;Lo;0;L;27CA8;;;;N;;;;; 2F9D4;CJK COMPATIBILITY IDEOGRAPH-2F9D4;Lo;0;L;8CAB;;;;N;;;;; 2F9D5;CJK COMPATIBILITY IDEOGRAPH-2F9D5;Lo;0;L;8CC1;;;;N;;;;; 2F9D6;CJK COMPATIBILITY IDEOGRAPH-2F9D6;Lo;0;L;8D1B;;;;N;;;;; 2F9D7;CJK COMPATIBILITY IDEOGRAPH-2F9D7;Lo;0;L;8D77;;;;N;;;;; 2F9D8;CJK COMPATIBILITY IDEOGRAPH-2F9D8;Lo;0;L;27F2F;;;;N;;;;; 2F9D9;CJK COMPATIBILITY IDEOGRAPH-2F9D9;Lo;0;L;20804;;;;N;;;;; 2F9DA;CJK COMPATIBILITY IDEOGRAPH-2F9DA;Lo;0;L;8DCB;;;;N;;;;; 2F9DB;CJK COMPATIBILITY IDEOGRAPH-2F9DB;Lo;0;L;8DBC;;;;N;;;;; 2F9DC;CJK COMPATIBILITY IDEOGRAPH-2F9DC;Lo;0;L;8DF0;;;;N;;;;; 2F9DD;CJK COMPATIBILITY IDEOGRAPH-2F9DD;Lo;0;L;208DE;;;;N;;;;; 2F9DE;CJK COMPATIBILITY IDEOGRAPH-2F9DE;Lo;0;L;8ED4;;;;N;;;;; 2F9DF;CJK COMPATIBILITY IDEOGRAPH-2F9DF;Lo;0;L;8F38;;;;N;;;;; 2F9E0;CJK COMPATIBILITY IDEOGRAPH-2F9E0;Lo;0;L;285D2;;;;N;;;;; 2F9E1;CJK COMPATIBILITY IDEOGRAPH-2F9E1;Lo;0;L;285ED;;;;N;;;;; 2F9E2;CJK COMPATIBILITY IDEOGRAPH-2F9E2;Lo;0;L;9094;;;;N;;;;; 2F9E3;CJK COMPATIBILITY IDEOGRAPH-2F9E3;Lo;0;L;90F1;;;;N;;;;; 2F9E4;CJK COMPATIBILITY IDEOGRAPH-2F9E4;Lo;0;L;9111;;;;N;;;;; 2F9E5;CJK COMPATIBILITY IDEOGRAPH-2F9E5;Lo;0;L;2872E;;;;N;;;;; 2F9E6;CJK COMPATIBILITY IDEOGRAPH-2F9E6;Lo;0;L;911B;;;;N;;;;; 2F9E7;CJK COMPATIBILITY IDEOGRAPH-2F9E7;Lo;0;L;9238;;;;N;;;;; 2F9E8;CJK COMPATIBILITY IDEOGRAPH-2F9E8;Lo;0;L;92D7;;;;N;;;;; 2F9E9;CJK COMPATIBILITY IDEOGRAPH-2F9E9;Lo;0;L;92D8;;;;N;;;;; 2F9EA;CJK COMPATIBILITY IDEOGRAPH-2F9EA;Lo;0;L;927C;;;;N;;;;; 2F9EB;CJK COMPATIBILITY IDEOGRAPH-2F9EB;Lo;0;L;93F9;;;;N;;;;; 2F9EC;CJK COMPATIBILITY IDEOGRAPH-2F9EC;Lo;0;L;9415;;;;N;;;;; 2F9ED;CJK COMPATIBILITY IDEOGRAPH-2F9ED;Lo;0;L;28BFA;;;;N;;;;; 2F9EE;CJK COMPATIBILITY IDEOGRAPH-2F9EE;Lo;0;L;958B;;;;N;;;;; 2F9EF;CJK COMPATIBILITY IDEOGRAPH-2F9EF;Lo;0;L;4995;;;;N;;;;; 2F9F0;CJK COMPATIBILITY IDEOGRAPH-2F9F0;Lo;0;L;95B7;;;;N;;;;; 2F9F1;CJK COMPATIBILITY IDEOGRAPH-2F9F1;Lo;0;L;28D77;;;;N;;;;; 2F9F2;CJK COMPATIBILITY IDEOGRAPH-2F9F2;Lo;0;L;49E6;;;;N;;;;; 2F9F3;CJK COMPATIBILITY IDEOGRAPH-2F9F3;Lo;0;L;96C3;;;;N;;;;; 2F9F4;CJK COMPATIBILITY IDEOGRAPH-2F9F4;Lo;0;L;5DB2;;;;N;;;;; 2F9F5;CJK COMPATIBILITY IDEOGRAPH-2F9F5;Lo;0;L;9723;;;;N;;;;; 2F9F6;CJK COMPATIBILITY IDEOGRAPH-2F9F6;Lo;0;L;29145;;;;N;;;;; 2F9F7;CJK COMPATIBILITY IDEOGRAPH-2F9F7;Lo;0;L;2921A;;;;N;;;;; 2F9F8;CJK COMPATIBILITY IDEOGRAPH-2F9F8;Lo;0;L;4A6E;;;;N;;;;; 2F9F9;CJK COMPATIBILITY IDEOGRAPH-2F9F9;Lo;0;L;4A76;;;;N;;;;; 2F9FA;CJK COMPATIBILITY IDEOGRAPH-2F9FA;Lo;0;L;97E0;;;;N;;;;; 2F9FB;CJK COMPATIBILITY IDEOGRAPH-2F9FB;Lo;0;L;2940A;;;;N;;;;; 2F9FC;CJK COMPATIBILITY IDEOGRAPH-2F9FC;Lo;0;L;4AB2;;;;N;;;;; 2F9FD;CJK COMPATIBILITY IDEOGRAPH-2F9FD;Lo;0;L;29496;;;;N;;;;; 2F9FE;CJK COMPATIBILITY IDEOGRAPH-2F9FE;Lo;0;L;980B;;;;N;;;;; 2F9FF;CJK COMPATIBILITY IDEOGRAPH-2F9FF;Lo;0;L;980B;;;;N;;;;; 2FA00;CJK COMPATIBILITY IDEOGRAPH-2FA00;Lo;0;L;9829;;;;N;;;;; 2FA01;CJK COMPATIBILITY IDEOGRAPH-2FA01;Lo;0;L;295B6;;;;N;;;;; 2FA02;CJK COMPATIBILITY IDEOGRAPH-2FA02;Lo;0;L;98E2;;;;N;;;;; 2FA03;CJK COMPATIBILITY IDEOGRAPH-2FA03;Lo;0;L;4B33;;;;N;;;;; 2FA04;CJK COMPATIBILITY IDEOGRAPH-2FA04;Lo;0;L;9929;;;;N;;;;; 2FA05;CJK COMPATIBILITY IDEOGRAPH-2FA05;Lo;0;L;99A7;;;;N;;;;; 2FA06;CJK COMPATIBILITY IDEOGRAPH-2FA06;Lo;0;L;99C2;;;;N;;;;; 2FA07;CJK COMPATIBILITY IDEOGRAPH-2FA07;Lo;0;L;99FE;;;;N;;;;; 2FA08;CJK COMPATIBILITY IDEOGRAPH-2FA08;Lo;0;L;4BCE;;;;N;;;;; 2FA09;CJK COMPATIBILITY IDEOGRAPH-2FA09;Lo;0;L;29B30;;;;N;;;;; 2FA0A;CJK COMPATIBILITY IDEOGRAPH-2FA0A;Lo;0;L;9B12;;;;N;;;;; 2FA0B;CJK COMPATIBILITY IDEOGRAPH-2FA0B;Lo;0;L;9C40;;;;N;;;;; 2FA0C;CJK COMPATIBILITY IDEOGRAPH-2FA0C;Lo;0;L;9CFD;;;;N;;;;; 2FA0D;CJK COMPATIBILITY IDEOGRAPH-2FA0D;Lo;0;L;4CCE;;;;N;;;;; 2FA0E;CJK COMPATIBILITY IDEOGRAPH-2FA0E;Lo;0;L;4CED;;;;N;;;;; 2FA0F;CJK COMPATIBILITY IDEOGRAPH-2FA0F;Lo;0;L;9D67;;;;N;;;;; 2FA10;CJK COMPATIBILITY IDEOGRAPH-2FA10;Lo;0;L;2A0CE;;;;N;;;;; 2FA11;CJK COMPATIBILITY IDEOGRAPH-2FA11;Lo;0;L;4CF8;;;;N;;;;; 2FA12;CJK COMPATIBILITY IDEOGRAPH-2FA12;Lo;0;L;2A105;;;;N;;;;; 2FA13;CJK COMPATIBILITY IDEOGRAPH-2FA13;Lo;0;L;2A20E;;;;N;;;;; 2FA14;CJK COMPATIBILITY IDEOGRAPH-2FA14;Lo;0;L;2A291;;;;N;;;;; 2FA15;CJK COMPATIBILITY IDEOGRAPH-2FA15;Lo;0;L;9EBB;;;;N;;;;; 2FA16;CJK COMPATIBILITY IDEOGRAPH-2FA16;Lo;0;L;4D56;;;;N;;;;; 2FA17;CJK COMPATIBILITY IDEOGRAPH-2FA17;Lo;0;L;9EF9;;;;N;;;;; 2FA18;CJK COMPATIBILITY IDEOGRAPH-2FA18;Lo;0;L;9EFE;;;;N;;;;; 2FA19;CJK COMPATIBILITY IDEOGRAPH-2FA19;Lo;0;L;9F05;;;;N;;;;; 2FA1A;CJK COMPATIBILITY IDEOGRAPH-2FA1A;Lo;0;L;9F0F;;;;N;;;;; 2FA1B;CJK COMPATIBILITY IDEOGRAPH-2FA1B;Lo;0;L;9F16;;;;N;;;;; 2FA1C;CJK COMPATIBILITY IDEOGRAPH-2FA1C;Lo;0;L;9F3B;;;;N;;;;; 2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;; E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;; E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;; E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;; E0022;TAG QUOTATION MARK;Cf;0;BN;;;;;N;;;;; E0023;TAG NUMBER SIGN;Cf;0;BN;;;;;N;;;;; E0024;TAG DOLLAR SIGN;Cf;0;BN;;;;;N;;;;; E0025;TAG PERCENT SIGN;Cf;0;BN;;;;;N;;;;; E0026;TAG AMPERSAND;Cf;0;BN;;;;;N;;;;; E0027;TAG APOSTROPHE;Cf;0;BN;;;;;N;;;;; E0028;TAG LEFT PARENTHESIS;Cf;0;BN;;;;;N;;;;; E0029;TAG RIGHT PARENTHESIS;Cf;0;BN;;;;;N;;;;; E002A;TAG ASTERISK;Cf;0;BN;;;;;N;;;;; E002B;TAG PLUS SIGN;Cf;0;BN;;;;;N;;;;; E002C;TAG COMMA;Cf;0;BN;;;;;N;;;;; E002D;TAG HYPHEN-MINUS;Cf;0;BN;;;;;N;;;;; E002E;TAG FULL STOP;Cf;0;BN;;;;;N;;;;; E002F;TAG SOLIDUS;Cf;0;BN;;;;;N;;;;; E0030;TAG DIGIT ZERO;Cf;0;BN;;;;;N;;;;; E0031;TAG DIGIT ONE;Cf;0;BN;;;;;N;;;;; E0032;TAG DIGIT TWO;Cf;0;BN;;;;;N;;;;; E0033;TAG DIGIT THREE;Cf;0;BN;;;;;N;;;;; E0034;TAG DIGIT FOUR;Cf;0;BN;;;;;N;;;;; E0035;TAG DIGIT FIVE;Cf;0;BN;;;;;N;;;;; E0036;TAG DIGIT SIX;Cf;0;BN;;;;;N;;;;; E0037;TAG DIGIT SEVEN;Cf;0;BN;;;;;N;;;;; E0038;TAG DIGIT EIGHT;Cf;0;BN;;;;;N;;;;; E0039;TAG DIGIT NINE;Cf;0;BN;;;;;N;;;;; E003A;TAG COLON;Cf;0;BN;;;;;N;;;;; E003B;TAG SEMICOLON;Cf;0;BN;;;;;N;;;;; E003C;TAG LESS-THAN SIGN;Cf;0;BN;;;;;N;;;;; E003D;TAG EQUALS SIGN;Cf;0;BN;;;;;N;;;;; E003E;TAG GREATER-THAN SIGN;Cf;0;BN;;;;;N;;;;; E003F;TAG QUESTION MARK;Cf;0;BN;;;;;N;;;;; E0040;TAG COMMERCIAL AT;Cf;0;BN;;;;;N;;;;; E0041;TAG LATIN CAPITAL LETTER A;Cf;0;BN;;;;;N;;;;; E0042;TAG LATIN CAPITAL LETTER B;Cf;0;BN;;;;;N;;;;; E0043;TAG LATIN CAPITAL LETTER C;Cf;0;BN;;;;;N;;;;; E0044;TAG LATIN CAPITAL LETTER D;Cf;0;BN;;;;;N;;;;; E0045;TAG LATIN CAPITAL LETTER E;Cf;0;BN;;;;;N;;;;; E0046;TAG LATIN CAPITAL LETTER F;Cf;0;BN;;;;;N;;;;; E0047;TAG LATIN CAPITAL LETTER G;Cf;0;BN;;;;;N;;;;; E0048;TAG LATIN CAPITAL LETTER H;Cf;0;BN;;;;;N;;;;; E0049;TAG LATIN CAPITAL LETTER I;Cf;0;BN;;;;;N;;;;; E004A;TAG LATIN CAPITAL LETTER J;Cf;0;BN;;;;;N;;;;; E004B;TAG LATIN CAPITAL LETTER K;Cf;0;BN;;;;;N;;;;; E004C;TAG LATIN CAPITAL LETTER L;Cf;0;BN;;;;;N;;;;; E004D;TAG LATIN CAPITAL LETTER M;Cf;0;BN;;;;;N;;;;; E004E;TAG LATIN CAPITAL LETTER N;Cf;0;BN;;;;;N;;;;; E004F;TAG LATIN CAPITAL LETTER O;Cf;0;BN;;;;;N;;;;; E0050;TAG LATIN CAPITAL LETTER P;Cf;0;BN;;;;;N;;;;; E0051;TAG LATIN CAPITAL LETTER Q;Cf;0;BN;;;;;N;;;;; E0052;TAG LATIN CAPITAL LETTER R;Cf;0;BN;;;;;N;;;;; E0053;TAG LATIN CAPITAL LETTER S;Cf;0;BN;;;;;N;;;;; E0054;TAG LATIN CAPITAL LETTER T;Cf;0;BN;;;;;N;;;;; E0055;TAG LATIN CAPITAL LETTER U;Cf;0;BN;;;;;N;;;;; E0056;TAG LATIN CAPITAL LETTER V;Cf;0;BN;;;;;N;;;;; E0057;TAG LATIN CAPITAL LETTER W;Cf;0;BN;;;;;N;;;;; E0058;TAG LATIN CAPITAL LETTER X;Cf;0;BN;;;;;N;;;;; E0059;TAG LATIN CAPITAL LETTER Y;Cf;0;BN;;;;;N;;;;; E005A;TAG LATIN CAPITAL LETTER Z;Cf;0;BN;;;;;N;;;;; E005B;TAG LEFT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; E005C;TAG REVERSE SOLIDUS;Cf;0;BN;;;;;N;;;;; E005D;TAG RIGHT SQUARE BRACKET;Cf;0;BN;;;;;N;;;;; E005E;TAG CIRCUMFLEX ACCENT;Cf;0;BN;;;;;N;;;;; E005F;TAG LOW LINE;Cf;0;BN;;;;;N;;;;; E0060;TAG GRAVE ACCENT;Cf;0;BN;;;;;N;;;;; E0061;TAG LATIN SMALL LETTER A;Cf;0;BN;;;;;N;;;;; E0062;TAG LATIN SMALL LETTER B;Cf;0;BN;;;;;N;;;;; E0063;TAG LATIN SMALL LETTER C;Cf;0;BN;;;;;N;;;;; E0064;TAG LATIN SMALL LETTER D;Cf;0;BN;;;;;N;;;;; E0065;TAG LATIN SMALL LETTER E;Cf;0;BN;;;;;N;;;;; E0066;TAG LATIN SMALL LETTER F;Cf;0;BN;;;;;N;;;;; E0067;TAG LATIN SMALL LETTER G;Cf;0;BN;;;;;N;;;;; E0068;TAG LATIN SMALL LETTER H;Cf;0;BN;;;;;N;;;;; E0069;TAG LATIN SMALL LETTER I;Cf;0;BN;;;;;N;;;;; E006A;TAG LATIN SMALL LETTER J;Cf;0;BN;;;;;N;;;;; E006B;TAG LATIN SMALL LETTER K;Cf;0;BN;;;;;N;;;;; E006C;TAG LATIN SMALL LETTER L;Cf;0;BN;;;;;N;;;;; E006D;TAG LATIN SMALL LETTER M;Cf;0;BN;;;;;N;;;;; E006E;TAG LATIN SMALL LETTER N;Cf;0;BN;;;;;N;;;;; E006F;TAG LATIN SMALL LETTER O;Cf;0;BN;;;;;N;;;;; E0070;TAG LATIN SMALL LETTER P;Cf;0;BN;;;;;N;;;;; E0071;TAG LATIN SMALL LETTER Q;Cf;0;BN;;;;;N;;;;; E0072;TAG LATIN SMALL LETTER R;Cf;0;BN;;;;;N;;;;; E0073;TAG LATIN SMALL LETTER S;Cf;0;BN;;;;;N;;;;; E0074;TAG LATIN SMALL LETTER T;Cf;0;BN;;;;;N;;;;; E0075;TAG LATIN SMALL LETTER U;Cf;0;BN;;;;;N;;;;; E0076;TAG LATIN SMALL LETTER V;Cf;0;BN;;;;;N;;;;; E0077;TAG LATIN SMALL LETTER W;Cf;0;BN;;;;;N;;;;; E0078;TAG LATIN SMALL LETTER X;Cf;0;BN;;;;;N;;;;; E0079;TAG LATIN SMALL LETTER Y;Cf;0;BN;;;;;N;;;;; E007A;TAG LATIN SMALL LETTER Z;Cf;0;BN;;;;;N;;;;; E007B;TAG LEFT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; E007C;TAG VERTICAL LINE;Cf;0;BN;;;;;N;;;;; E007D;TAG RIGHT CURLY BRACKET;Cf;0;BN;;;;;N;;;;; E007E;TAG TILDE;Cf;0;BN;;;;;N;;;;; E007F;CANCEL TAG;Cf;0;BN;;;;;N;;;;; E0100;VARIATION SELECTOR-17;Mn;0;NSM;;;;;N;;;;; E0101;VARIATION SELECTOR-18;Mn;0;NSM;;;;;N;;;;; E0102;VARIATION SELECTOR-19;Mn;0;NSM;;;;;N;;;;; E0103;VARIATION SELECTOR-20;Mn;0;NSM;;;;;N;;;;; E0104;VARIATION SELECTOR-21;Mn;0;NSM;;;;;N;;;;; E0105;VARIATION SELECTOR-22;Mn;0;NSM;;;;;N;;;;; E0106;VARIATION SELECTOR-23;Mn;0;NSM;;;;;N;;;;; E0107;VARIATION SELECTOR-24;Mn;0;NSM;;;;;N;;;;; E0108;VARIATION SELECTOR-25;Mn;0;NSM;;;;;N;;;;; E0109;VARIATION SELECTOR-26;Mn;0;NSM;;;;;N;;;;; E010A;VARIATION SELECTOR-27;Mn;0;NSM;;;;;N;;;;; E010B;VARIATION SELECTOR-28;Mn;0;NSM;;;;;N;;;;; E010C;VARIATION SELECTOR-29;Mn;0;NSM;;;;;N;;;;; E010D;VARIATION SELECTOR-30;Mn;0;NSM;;;;;N;;;;; E010E;VARIATION SELECTOR-31;Mn;0;NSM;;;;;N;;;;; E010F;VARIATION SELECTOR-32;Mn;0;NSM;;;;;N;;;;; E0110;VARIATION SELECTOR-33;Mn;0;NSM;;;;;N;;;;; E0111;VARIATION SELECTOR-34;Mn;0;NSM;;;;;N;;;;; E0112;VARIATION SELECTOR-35;Mn;0;NSM;;;;;N;;;;; E0113;VARIATION SELECTOR-36;Mn;0;NSM;;;;;N;;;;; E0114;VARIATION SELECTOR-37;Mn;0;NSM;;;;;N;;;;; E0115;VARIATION SELECTOR-38;Mn;0;NSM;;;;;N;;;;; E0116;VARIATION SELECTOR-39;Mn;0;NSM;;;;;N;;;;; E0117;VARIATION SELECTOR-40;Mn;0;NSM;;;;;N;;;;; E0118;VARIATION SELECTOR-41;Mn;0;NSM;;;;;N;;;;; E0119;VARIATION SELECTOR-42;Mn;0;NSM;;;;;N;;;;; E011A;VARIATION SELECTOR-43;Mn;0;NSM;;;;;N;;;;; E011B;VARIATION SELECTOR-44;Mn;0;NSM;;;;;N;;;;; E011C;VARIATION SELECTOR-45;Mn;0;NSM;;;;;N;;;;; E011D;VARIATION SELECTOR-46;Mn;0;NSM;;;;;N;;;;; E011E;VARIATION SELECTOR-47;Mn;0;NSM;;;;;N;;;;; E011F;VARIATION SELECTOR-48;Mn;0;NSM;;;;;N;;;;; E0120;VARIATION SELECTOR-49;Mn;0;NSM;;;;;N;;;;; E0121;VARIATION SELECTOR-50;Mn;0;NSM;;;;;N;;;;; E0122;VARIATION SELECTOR-51;Mn;0;NSM;;;;;N;;;;; E0123;VARIATION SELECTOR-52;Mn;0;NSM;;;;;N;;;;; E0124;VARIATION SELECTOR-53;Mn;0;NSM;;;;;N;;;;; E0125;VARIATION SELECTOR-54;Mn;0;NSM;;;;;N;;;;; E0126;VARIATION SELECTOR-55;Mn;0;NSM;;;;;N;;;;; E0127;VARIATION SELECTOR-56;Mn;0;NSM;;;;;N;;;;; E0128;VARIATION SELECTOR-57;Mn;0;NSM;;;;;N;;;;; E0129;VARIATION SELECTOR-58;Mn;0;NSM;;;;;N;;;;; E012A;VARIATION SELECTOR-59;Mn;0;NSM;;;;;N;;;;; E012B;VARIATION SELECTOR-60;Mn;0;NSM;;;;;N;;;;; E012C;VARIATION SELECTOR-61;Mn;0;NSM;;;;;N;;;;; E012D;VARIATION SELECTOR-62;Mn;0;NSM;;;;;N;;;;; E012E;VARIATION SELECTOR-63;Mn;0;NSM;;;;;N;;;;; E012F;VARIATION SELECTOR-64;Mn;0;NSM;;;;;N;;;;; E0130;VARIATION SELECTOR-65;Mn;0;NSM;;;;;N;;;;; E0131;VARIATION SELECTOR-66;Mn;0;NSM;;;;;N;;;;; E0132;VARIATION SELECTOR-67;Mn;0;NSM;;;;;N;;;;; E0133;VARIATION SELECTOR-68;Mn;0;NSM;;;;;N;;;;; E0134;VARIATION SELECTOR-69;Mn;0;NSM;;;;;N;;;;; E0135;VARIATION SELECTOR-70;Mn;0;NSM;;;;;N;;;;; E0136;VARIATION SELECTOR-71;Mn;0;NSM;;;;;N;;;;; E0137;VARIATION SELECTOR-72;Mn;0;NSM;;;;;N;;;;; E0138;VARIATION SELECTOR-73;Mn;0;NSM;;;;;N;;;;; E0139;VARIATION SELECTOR-74;Mn;0;NSM;;;;;N;;;;; E013A;VARIATION SELECTOR-75;Mn;0;NSM;;;;;N;;;;; E013B;VARIATION SELECTOR-76;Mn;0;NSM;;;;;N;;;;; E013C;VARIATION SELECTOR-77;Mn;0;NSM;;;;;N;;;;; E013D;VARIATION SELECTOR-78;Mn;0;NSM;;;;;N;;;;; E013E;VARIATION SELECTOR-79;Mn;0;NSM;;;;;N;;;;; E013F;VARIATION SELECTOR-80;Mn;0;NSM;;;;;N;;;;; E0140;VARIATION SELECTOR-81;Mn;0;NSM;;;;;N;;;;; E0141;VARIATION SELECTOR-82;Mn;0;NSM;;;;;N;;;;; E0142;VARIATION SELECTOR-83;Mn;0;NSM;;;;;N;;;;; E0143;VARIATION SELECTOR-84;Mn;0;NSM;;;;;N;;;;; E0144;VARIATION SELECTOR-85;Mn;0;NSM;;;;;N;;;;; E0145;VARIATION SELECTOR-86;Mn;0;NSM;;;;;N;;;;; E0146;VARIATION SELECTOR-87;Mn;0;NSM;;;;;N;;;;; E0147;VARIATION SELECTOR-88;Mn;0;NSM;;;;;N;;;;; E0148;VARIATION SELECTOR-89;Mn;0;NSM;;;;;N;;;;; E0149;VARIATION SELECTOR-90;Mn;0;NSM;;;;;N;;;;; E014A;VARIATION SELECTOR-91;Mn;0;NSM;;;;;N;;;;; E014B;VARIATION SELECTOR-92;Mn;0;NSM;;;;;N;;;;; E014C;VARIATION SELECTOR-93;Mn;0;NSM;;;;;N;;;;; E014D;VARIATION SELECTOR-94;Mn;0;NSM;;;;;N;;;;; E014E;VARIATION SELECTOR-95;Mn;0;NSM;;;;;N;;;;; E014F;VARIATION SELECTOR-96;Mn;0;NSM;;;;;N;;;;; E0150;VARIATION SELECTOR-97;Mn;0;NSM;;;;;N;;;;; E0151;VARIATION SELECTOR-98;Mn;0;NSM;;;;;N;;;;; E0152;VARIATION SELECTOR-99;Mn;0;NSM;;;;;N;;;;; E0153;VARIATION SELECTOR-100;Mn;0;NSM;;;;;N;;;;; E0154;VARIATION SELECTOR-101;Mn;0;NSM;;;;;N;;;;; E0155;VARIATION SELECTOR-102;Mn;0;NSM;;;;;N;;;;; E0156;VARIATION SELECTOR-103;Mn;0;NSM;;;;;N;;;;; E0157;VARIATION SELECTOR-104;Mn;0;NSM;;;;;N;;;;; E0158;VARIATION SELECTOR-105;Mn;0;NSM;;;;;N;;;;; E0159;VARIATION SELECTOR-106;Mn;0;NSM;;;;;N;;;;; E015A;VARIATION SELECTOR-107;Mn;0;NSM;;;;;N;;;;; E015B;VARIATION SELECTOR-108;Mn;0;NSM;;;;;N;;;;; E015C;VARIATION SELECTOR-109;Mn;0;NSM;;;;;N;;;;; E015D;VARIATION SELECTOR-110;Mn;0;NSM;;;;;N;;;;; E015E;VARIATION SELECTOR-111;Mn;0;NSM;;;;;N;;;;; E015F;VARIATION SELECTOR-112;Mn;0;NSM;;;;;N;;;;; E0160;VARIATION SELECTOR-113;Mn;0;NSM;;;;;N;;;;; E0161;VARIATION SELECTOR-114;Mn;0;NSM;;;;;N;;;;; E0162;VARIATION SELECTOR-115;Mn;0;NSM;;;;;N;;;;; E0163;VARIATION SELECTOR-116;Mn;0;NSM;;;;;N;;;;; E0164;VARIATION SELECTOR-117;Mn;0;NSM;;;;;N;;;;; E0165;VARIATION SELECTOR-118;Mn;0;NSM;;;;;N;;;;; E0166;VARIATION SELECTOR-119;Mn;0;NSM;;;;;N;;;;; E0167;VARIATION SELECTOR-120;Mn;0;NSM;;;;;N;;;;; E0168;VARIATION SELECTOR-121;Mn;0;NSM;;;;;N;;;;; E0169;VARIATION SELECTOR-122;Mn;0;NSM;;;;;N;;;;; E016A;VARIATION SELECTOR-123;Mn;0;NSM;;;;;N;;;;; E016B;VARIATION SELECTOR-124;Mn;0;NSM;;;;;N;;;;; E016C;VARIATION SELECTOR-125;Mn;0;NSM;;;;;N;;;;; E016D;VARIATION SELECTOR-126;Mn;0;NSM;;;;;N;;;;; E016E;VARIATION SELECTOR-127;Mn;0;NSM;;;;;N;;;;; E016F;VARIATION SELECTOR-128;Mn;0;NSM;;;;;N;;;;; E0170;VARIATION SELECTOR-129;Mn;0;NSM;;;;;N;;;;; E0171;VARIATION SELECTOR-130;Mn;0;NSM;;;;;N;;;;; E0172;VARIATION SELECTOR-131;Mn;0;NSM;;;;;N;;;;; E0173;VARIATION SELECTOR-132;Mn;0;NSM;;;;;N;;;;; E0174;VARIATION SELECTOR-133;Mn;0;NSM;;;;;N;;;;; E0175;VARIATION SELECTOR-134;Mn;0;NSM;;;;;N;;;;; E0176;VARIATION SELECTOR-135;Mn;0;NSM;;;;;N;;;;; E0177;VARIATION SELECTOR-136;Mn;0;NSM;;;;;N;;;;; E0178;VARIATION SELECTOR-137;Mn;0;NSM;;;;;N;;;;; E0179;VARIATION SELECTOR-138;Mn;0;NSM;;;;;N;;;;; E017A;VARIATION SELECTOR-139;Mn;0;NSM;;;;;N;;;;; E017B;VARIATION SELECTOR-140;Mn;0;NSM;;;;;N;;;;; E017C;VARIATION SELECTOR-141;Mn;0;NSM;;;;;N;;;;; E017D;VARIATION SELECTOR-142;Mn;0;NSM;;;;;N;;;;; E017E;VARIATION SELECTOR-143;Mn;0;NSM;;;;;N;;;;; E017F;VARIATION SELECTOR-144;Mn;0;NSM;;;;;N;;;;; E0180;VARIATION SELECTOR-145;Mn;0;NSM;;;;;N;;;;; E0181;VARIATION SELECTOR-146;Mn;0;NSM;;;;;N;;;;; E0182;VARIATION SELECTOR-147;Mn;0;NSM;;;;;N;;;;; E0183;VARIATION SELECTOR-148;Mn;0;NSM;;;;;N;;;;; E0184;VARIATION SELECTOR-149;Mn;0;NSM;;;;;N;;;;; E0185;VARIATION SELECTOR-150;Mn;0;NSM;;;;;N;;;;; E0186;VARIATION SELECTOR-151;Mn;0;NSM;;;;;N;;;;; E0187;VARIATION SELECTOR-152;Mn;0;NSM;;;;;N;;;;; E0188;VARIATION SELECTOR-153;Mn;0;NSM;;;;;N;;;;; E0189;VARIATION SELECTOR-154;Mn;0;NSM;;;;;N;;;;; E018A;VARIATION SELECTOR-155;Mn;0;NSM;;;;;N;;;;; E018B;VARIATION SELECTOR-156;Mn;0;NSM;;;;;N;;;;; E018C;VARIATION SELECTOR-157;Mn;0;NSM;;;;;N;;;;; E018D;VARIATION SELECTOR-158;Mn;0;NSM;;;;;N;;;;; E018E;VARIATION SELECTOR-159;Mn;0;NSM;;;;;N;;;;; E018F;VARIATION SELECTOR-160;Mn;0;NSM;;;;;N;;;;; E0190;VARIATION SELECTOR-161;Mn;0;NSM;;;;;N;;;;; E0191;VARIATION SELECTOR-162;Mn;0;NSM;;;;;N;;;;; E0192;VARIATION SELECTOR-163;Mn;0;NSM;;;;;N;;;;; E0193;VARIATION SELECTOR-164;Mn;0;NSM;;;;;N;;;;; E0194;VARIATION SELECTOR-165;Mn;0;NSM;;;;;N;;;;; E0195;VARIATION SELECTOR-166;Mn;0;NSM;;;;;N;;;;; E0196;VARIATION SELECTOR-167;Mn;0;NSM;;;;;N;;;;; E0197;VARIATION SELECTOR-168;Mn;0;NSM;;;;;N;;;;; E0198;VARIATION SELECTOR-169;Mn;0;NSM;;;;;N;;;;; E0199;VARIATION SELECTOR-170;Mn;0;NSM;;;;;N;;;;; E019A;VARIATION SELECTOR-171;Mn;0;NSM;;;;;N;;;;; E019B;VARIATION SELECTOR-172;Mn;0;NSM;;;;;N;;;;; E019C;VARIATION SELECTOR-173;Mn;0;NSM;;;;;N;;;;; E019D;VARIATION SELECTOR-174;Mn;0;NSM;;;;;N;;;;; E019E;VARIATION SELECTOR-175;Mn;0;NSM;;;;;N;;;;; E019F;VARIATION SELECTOR-176;Mn;0;NSM;;;;;N;;;;; E01A0;VARIATION SELECTOR-177;Mn;0;NSM;;;;;N;;;;; E01A1;VARIATION SELECTOR-178;Mn;0;NSM;;;;;N;;;;; E01A2;VARIATION SELECTOR-179;Mn;0;NSM;;;;;N;;;;; E01A3;VARIATION SELECTOR-180;Mn;0;NSM;;;;;N;;;;; E01A4;VARIATION SELECTOR-181;Mn;0;NSM;;;;;N;;;;; E01A5;VARIATION SELECTOR-182;Mn;0;NSM;;;;;N;;;;; E01A6;VARIATION SELECTOR-183;Mn;0;NSM;;;;;N;;;;; E01A7;VARIATION SELECTOR-184;Mn;0;NSM;;;;;N;;;;; E01A8;VARIATION SELECTOR-185;Mn;0;NSM;;;;;N;;;;; E01A9;VARIATION SELECTOR-186;Mn;0;NSM;;;;;N;;;;; E01AA;VARIATION SELECTOR-187;Mn;0;NSM;;;;;N;;;;; E01AB;VARIATION SELECTOR-188;Mn;0;NSM;;;;;N;;;;; E01AC;VARIATION SELECTOR-189;Mn;0;NSM;;;;;N;;;;; E01AD;VARIATION SELECTOR-190;Mn;0;NSM;;;;;N;;;;; E01AE;VARIATION SELECTOR-191;Mn;0;NSM;;;;;N;;;;; E01AF;VARIATION SELECTOR-192;Mn;0;NSM;;;;;N;;;;; E01B0;VARIATION SELECTOR-193;Mn;0;NSM;;;;;N;;;;; E01B1;VARIATION SELECTOR-194;Mn;0;NSM;;;;;N;;;;; E01B2;VARIATION SELECTOR-195;Mn;0;NSM;;;;;N;;;;; E01B3;VARIATION SELECTOR-196;Mn;0;NSM;;;;;N;;;;; E01B4;VARIATION SELECTOR-197;Mn;0;NSM;;;;;N;;;;; E01B5;VARIATION SELECTOR-198;Mn;0;NSM;;;;;N;;;;; E01B6;VARIATION SELECTOR-199;Mn;0;NSM;;;;;N;;;;; E01B7;VARIATION SELECTOR-200;Mn;0;NSM;;;;;N;;;;; E01B8;VARIATION SELECTOR-201;Mn;0;NSM;;;;;N;;;;; E01B9;VARIATION SELECTOR-202;Mn;0;NSM;;;;;N;;;;; E01BA;VARIATION SELECTOR-203;Mn;0;NSM;;;;;N;;;;; E01BB;VARIATION SELECTOR-204;Mn;0;NSM;;;;;N;;;;; E01BC;VARIATION SELECTOR-205;Mn;0;NSM;;;;;N;;;;; E01BD;VARIATION SELECTOR-206;Mn;0;NSM;;;;;N;;;;; E01BE;VARIATION SELECTOR-207;Mn;0;NSM;;;;;N;;;;; E01BF;VARIATION SELECTOR-208;Mn;0;NSM;;;;;N;;;;; E01C0;VARIATION SELECTOR-209;Mn;0;NSM;;;;;N;;;;; E01C1;VARIATION SELECTOR-210;Mn;0;NSM;;;;;N;;;;; E01C2;VARIATION SELECTOR-211;Mn;0;NSM;;;;;N;;;;; E01C3;VARIATION SELECTOR-212;Mn;0;NSM;;;;;N;;;;; E01C4;VARIATION SELECTOR-213;Mn;0;NSM;;;;;N;;;;; E01C5;VARIATION SELECTOR-214;Mn;0;NSM;;;;;N;;;;; E01C6;VARIATION SELECTOR-215;Mn;0;NSM;;;;;N;;;;; E01C7;VARIATION SELECTOR-216;Mn;0;NSM;;;;;N;;;;; E01C8;VARIATION SELECTOR-217;Mn;0;NSM;;;;;N;;;;; E01C9;VARIATION SELECTOR-218;Mn;0;NSM;;;;;N;;;;; E01CA;VARIATION SELECTOR-219;Mn;0;NSM;;;;;N;;;;; E01CB;VARIATION SELECTOR-220;Mn;0;NSM;;;;;N;;;;; E01CC;VARIATION SELECTOR-221;Mn;0;NSM;;;;;N;;;;; E01CD;VARIATION SELECTOR-222;Mn;0;NSM;;;;;N;;;;; E01CE;VARIATION SELECTOR-223;Mn;0;NSM;;;;;N;;;;; E01CF;VARIATION SELECTOR-224;Mn;0;NSM;;;;;N;;;;; E01D0;VARIATION SELECTOR-225;Mn;0;NSM;;;;;N;;;;; E01D1;VARIATION SELECTOR-226;Mn;0;NSM;;;;;N;;;;; E01D2;VARIATION SELECTOR-227;Mn;0;NSM;;;;;N;;;;; E01D3;VARIATION SELECTOR-228;Mn;0;NSM;;;;;N;;;;; E01D4;VARIATION SELECTOR-229;Mn;0;NSM;;;;;N;;;;; E01D5;VARIATION SELECTOR-230;Mn;0;NSM;;;;;N;;;;; E01D6;VARIATION SELECTOR-231;Mn;0;NSM;;;;;N;;;;; E01D7;VARIATION SELECTOR-232;Mn;0;NSM;;;;;N;;;;; E01D8;VARIATION SELECTOR-233;Mn;0;NSM;;;;;N;;;;; E01D9;VARIATION SELECTOR-234;Mn;0;NSM;;;;;N;;;;; E01DA;VARIATION SELECTOR-235;Mn;0;NSM;;;;;N;;;;; E01DB;VARIATION SELECTOR-236;Mn;0;NSM;;;;;N;;;;; E01DC;VARIATION SELECTOR-237;Mn;0;NSM;;;;;N;;;;; E01DD;VARIATION SELECTOR-238;Mn;0;NSM;;;;;N;;;;; E01DE;VARIATION SELECTOR-239;Mn;0;NSM;;;;;N;;;;; E01DF;VARIATION SELECTOR-240;Mn;0;NSM;;;;;N;;;;; E01E0;VARIATION SELECTOR-241;Mn;0;NSM;;;;;N;;;;; E01E1;VARIATION SELECTOR-242;Mn;0;NSM;;;;;N;;;;; E01E2;VARIATION SELECTOR-243;Mn;0;NSM;;;;;N;;;;; E01E3;VARIATION SELECTOR-244;Mn;0;NSM;;;;;N;;;;; E01E4;VARIATION SELECTOR-245;Mn;0;NSM;;;;;N;;;;; E01E5;VARIATION SELECTOR-246;Mn;0;NSM;;;;;N;;;;; E01E6;VARIATION SELECTOR-247;Mn;0;NSM;;;;;N;;;;; E01E7;VARIATION SELECTOR-248;Mn;0;NSM;;;;;N;;;;; E01E8;VARIATION SELECTOR-249;Mn;0;NSM;;;;;N;;;;; E01E9;VARIATION SELECTOR-250;Mn;0;NSM;;;;;N;;;;; E01EA;VARIATION SELECTOR-251;Mn;0;NSM;;;;;N;;;;; E01EB;VARIATION SELECTOR-252;Mn;0;NSM;;;;;N;;;;; E01EC;VARIATION SELECTOR-253;Mn;0;NSM;;;;;N;;;;; E01ED;VARIATION SELECTOR-254;Mn;0;NSM;;;;;N;;;;; E01EE;VARIATION SELECTOR-255;Mn;0;NSM;;;;;N;;;;; E01EF;VARIATION SELECTOR-256;Mn;0;NSM;;;;;N;;;;; F0000;;Co;0;L;;;;;N;;;;; FFFFD;;Co;0;L;;;;;N;;;;; 100000;;Co;0;L;;;;;N;;;;; 10FFFD;;Co;0;L;;;;;N;;;;; jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/moDictionary.xml0000644000175000017500000010206711335260530033325 0ustar sylvestresylvestre ( ) [ ] { } , | ; ; := // & & *= -= += /= -> : .. ... || && & ! ⊏̸ ⊐̸ ⊂⃒ ⊃⃒ = < > != == <= >= ≂̸ ≦̸ ≫̸ ⩾̸ ≎̸ ≏̸ ⧏̸ ≪̸ ⩽̸ ⪢̸ ⪡̸ ⪯̸ ⧐̸ ⪰̸ ≿̸ - + ± lim max min * · / - + ± . ** ^ <> ' ! !! ~ @ - ++ ++ ? _ ˘ ¸ ` ˙ ˝ ´ ˜ ¨ ̑ ˇ ^ ¯ ̲ jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/0000755000175000017500000000000011335260530031247 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_16x16.pngjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_16x16.png0000644000175000017500000000120511335260530034237 0ustar sylvestresylvestrePNG  IHDRabKGDC pHYsHHFk>%IDAT8œOKTQshZALH EFZB_]ڴhD Ȩm)J3:3w{0 >?pШvy˛y+6Vcš b*!ĘM|$M<(x[r$JD'O_u};n06AD=$cHҠѩ67*O+;?͕٫t:% lyRD/ \p@{ (H2}qbFC"EkCr:AG ` QCV4)$1 8ۣQG;w= Mz<_XĘw%4J9h1b"0~CchRL/"&`n6LzVt[fmC& lDd}`VHOIWiZ$IENDB`././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_16x16_bw.pngjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_16x16_bw.0000644000175000017500000000020711335260530034223 0ustar sylvestresylvestrePNG  IHDR7bKGD#2 pHYsHHFk>+IDATcoз ߮2|{ Fg GIqEIENDB`././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_32x32.pngjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_32x32.png0000644000175000017500000000311711335260530034237 0ustar sylvestresylvestrePNG  IHDR szzbKGDC pHYsHHFk>IDATXߏ]U?ks30%H[MkCX2LS0j361h1&HB|iEF)DMjC}q0 ܹs^ˇ?НsZ¥V_HUUO=駷6* fgC0ST={LT=LoPc)~(oi뉩ɝӛn/UUm}Sk۝7cr p ~ |cg`ĴPBaM7} +@Ls/7^fSvp#/^pF6Zkq׿͛x9r)}q2q 0 ` u[ֲpq^u;{SS7AA Y\ϟ}^<9{n_{fDԍgVaHɁTCSߟ_W;Z Z e.ͳ' 7 A?Sz_KrEzn!G i!@"m$E"heHEH1smo$C8ut\ Y H Yڊ|rd&K@HA]6$37 o[!QZ60\p2LH IJvD/b2q17/<,\+x$29Ãz08,DTWw~ AF 0 g|\ӧMf>Ù#EP󣙋$ߊ h@8'BZV1PcV.70gOM"+1{Qu@ܚԧ% >j|s5xaܿY711a*UNv5 bC5Z, 4Dv7;Gr̍8cyU!$OJ=̯@(ݔ!I,6Vgط{v Zci2*%1_bx.e=W2f& Ϟ<w}x{?ŴA,$j0:P#pb_R` a %Vex7Pspfo.s4fI2Sw qU<\I l\9|tk%yƴbEv|ܖ@ɫ5 uh(:X:햰a].q&v%׾/])ZʂBok\5{M5\$`5<|G/u k: 4{bhq:6)&I_@ժP 尐}dewqzWd`L Oeo<23{W` P4 4`8[ǁ%G/.|/n[ڱuB#)(sii6m úk@*/~ԋV.?ZR8:9IENDB`././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_32x32_bw.pngjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/icons/jeuclid_32x32_bw.0000644000175000017500000000026011335260530034216 0ustar sylvestresylvestrePNG  IHDR [GYbKGD#2 pHYsHHFk>TIDATc 3x "{`HBG%wD^ Q"kD cU%悔E2|=xroB ndIENDB`jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/content/0000755000175000017500000000000011335260530031606 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/content/mathmlc2p.xsl0000644000175000017500000036435411335260530034244 0ustar sylvestresylvestre γ > λ < ¬ ⊂⃒ π σ × - + Polar e / - + Polar e / - + Polar / -1 -1 ( , ) ( , ) id domain codomain image if otherwise integer part of / ! min , { | } min { | } min , min { | } max , { | } max { | } max , max { | } - - + + + + mod gcd xor xor xor , , : : , , : : | | arg lcm = = = | d d d d d d d d ' d d D div grad curl 2 { | } [ | ] | | = = = = lim lim sin sin sin cos cos tan tan sec sec csc csc cot cot sinh sinh cosh cosh tanh tanh sech sech csch csch coth coth arcsin arcsin arccos arccos arctan arctan arcsec arcsec arccsc arccsc arccot arccot arcsinh arcsinh arccosh arccosh arctanh arctanh arcsech arcsech arccsch arccsch arccoth arccoth ln ln log log 10 log log 10 , 2 median mode , det T . . NaN true false jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/0000755000175000017500000000000011335260530032052 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isodia.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isodia.ent0000644000175000017500000000316311335260530034035 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsb.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsb.en0000644000175000017500000002235511335260530034042 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isocyr2.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isocyr2.en0000644000175000017500000000507711335260530034001 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isonum.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isonum.ent0000644000175000017500000001345611335260530034105 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/mathml.dtdjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/mathml.dtd0000644000175000017500000010134511335260530034035 0ustar sylvestresylvestre %ent-isoamsa; %ent-isoamsb; %ent-isoamsc; %ent-isoamsn; %ent-isoamso; %ent-isoamsr; %ent-isogrk3; %ent-isogrk4; %ent-isomfrk; %ent-isomopf; %ent-isomscr; %ent-isotech; %ent-isobox; %ent-isocyr1; %ent-isocyr2; %ent-isodia; %ent-isogrk1; %ent-isogrk2; %ent-isolat1; %ent-isolat2; %ent-isonum; %ent-isopub; %ent-mmlalias; %ent-mmlextra; ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk2.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk2.en0000644000175000017500000000452611335260530033765 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk1.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk1.en0000644000175000017500000001000711335260530033753 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isotech.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isotech.en0000644000175000017500000003011711335260530034036 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsr.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsr.en0000644000175000017500000003275611335260530034070 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/mmlalias.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/mmlalias.e0000644000175000017500000010401711335260530034022 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isolat1.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isolat1.en0000644000175000017500000001232111335260530033751 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isolat2.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isolat2.en0000644000175000017500000002135011335260530033754 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isobox.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isobox.ent0000644000175000017500000000711311335260530034067 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isomfrk.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isomfrk.en0000644000175000017500000001045011335260530034050 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsc.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsc.en0000644000175000017500000000457011335260530034042 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isomopf.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isomopf.en0000644000175000017500000000501611335260530034054 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk4.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk4.en0000644000175000017500000000700711335260530033764 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk3.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isogrk3.en0000644000175000017500000000741011335260530033761 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isomscr.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isomscr.en0000644000175000017500000001061711335260530034062 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsn.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsn.en0000644000175000017500000001667711335260530034070 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsa.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamsa.en0000644000175000017500000002654111335260530034042 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isopub.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isopub.ent0000644000175000017500000001515711335260530034074 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamso.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isoamso.en0000644000175000017500000001072311335260530034053 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isocyr1.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/isocyr1.en0000644000175000017500000001240611335260530033772 0ustar sylvestresylvestre ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/mmlextra.entjeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/mathml.1.0.1/mmlextra.e0000644000175000017500000002123711335260530034056 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/addMathMLNamespace.xsl0000644000175000017500000000127011335260530034274 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core/src/main/resources/net/sourceforge/jeuclid/NOTICE0000644000175000017500000000451311335260530031043 0ustar sylvestresylvestre************* * JEuclid * ************* /* * JEuclid. Apache-Style Software License * * * Copyright (c) 2002 JEuclid. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by * JEulid (http://www.sourceforge.net/projects/jeuclid/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "JEuclid" must not be used to endorse * or promote products derived from this software without prior written * permission. For written permission, please contact * stephan@vern.chem.tu-berlin.de. * * 5. Products derived from this software may not be called "JEuclid", * nor may "JEuclid" appear in their name, without prior written * permission of stephan@vern.chem.tu-berlin.de. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL TOUCHGRAPH OR ITS CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * */ jeuclid-parent-3.1.9/jeuclid-core/src/main/java/0000755000175000017500000000000011335260530022313 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/0000755000175000017500000000000011335260530023102 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/0000755000175000017500000000000011335260530023576 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/0000755000175000017500000000000011335260530024355 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/0000755000175000017500000000000011335260530025637 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLTableRowElement.java0000644000175000017500000001417711335260530032610 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML table or matrix row element mtr. * * */ public interface MathMLTableRowElement extends MathMLPresentationElement { /** * A string representing an override of the row alignment specified in the * containing mtable. Allowed values are top, bottom, center, baseline, * and axis. * * @return value of the rowalign attribute. */ String getRowalign(); /** * setter for the rowalign attribute. * * @param rowalign * new value for rowalign. * @see #getRowalign() */ void setRowalign(String rowalign); /** * A string representing an override of the column alignment specified in * the containing mtable. Allowed values are left, center, and right. * * @return value of the columnalign attribute. */ String getColumnalign(); /** * setter for the columnalign attribute. * * @param columnalign * new value for columnalign. * @see #getColumnalign() */ void setColumnalign(String columnalign); /** * A string specifying how the alignment groups within the cells of each * row are to be aligned with the corresponding items above or below them * in the same column. The string consists of a sequence of braced group * alignment lists. Each group alignment list is a space-separated * sequence, each of which can have the following values: left, right, * center, or decimalpoint. * * @return value of the groupalign attribute. */ String getGroupalign(); /** * setter for the groupalign attribute. * * @param groupalign * new value for groupalign. * @see #getGroupalign() */ void setGroupalign(String groupalign); /** * A MathMLNodeList consisting of the cells of the row. Note that this * does not include the label if this is a MathMLLabeledRowElement! * * @return value of the cells attribute. */ MathMLNodeList getCells(); /** * A convenience method to insert a new (empty) cell in the row. * * @param index * Index of the cell before which the new cell is to be * inserted, where the first cell is numbered 0. If index is * equal to the current number of cells, the new cell is * appended as the last cell of the row. Note that the index * will differ from the index of the corresponding Node in the * collection returned by Node::childNodes if this is a * MathMLLabeledRowElement! * @return Returns the MathMLTableCellElement representing the mtd element * being inserted. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the current * number of cells of this mtr element. */ MathMLTableCellElement insertEmptyCell(int index) throws DOMException; /** * A convenience method to insert a new cell in the row. * * @param newCell * A MathMLTableCellElement representing the new cell (mtd * element) to be inserted. * @param index * Index of the cell before which the new cell is to be * inserted, where the first cell is numbered 0. If index * equals the current number of cells, the new cell is appended * as the last cell of the row. Note that the index will differ * from the index of the corresponding Node in Node::childNodes * if this is a MathMLLabeledRowElement! * @return The MathMLTableCellElement representing the mtd element being * inserted. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the current * number of cells of this mtr element. */ MathMLTableCellElement insertCell(MathMLTableCellElement newCell, int index) throws DOMException; /** * A convenience method to set the value of a cell in the row to newCell. * If index is equal to the current number of cells, newCell is appended * as the last cell in the row. * * @param newCell * A MathMLTableCellElement representing the cell (mtd element) * that is to be inserted. * @param index * Index of the cell that is to be replaced by the new cell, * where the first cell is numbered 0. Note that the index will * differ from the index of the corresponding Node in the * collection returned by Node::childNodes if this is a * MathMLLabeledRowElement! * @return The MathMLTableCellElement child of this MathMLTableRowElement * representing the new mtd element. */ MathMLTableCellElement setCell(MathMLTableCellElement newCell, int index); /** * A convenience method to delete a cell in the row. * * @param index * Index of cell to be deleted. Note that the count will differ * from the index-th child node if this is a * MathMLLabeledRowElement! */ void deleteCell(int index); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLContentToken.java0000644000175000017500000001345311335260530032166 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.Node; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This is the interface from which the interfaces representing the MathML * Content token elements (ci, cn and csymbol) are derived. These elements may * contain MathML Presentation elements, Text nodes, or a combination of both. * Thus the getArgument and insertArgument methods have been provided to deal * with this distinction between these elements and other MathML Content * elements. * * */ public interface MathMLContentToken extends MathMLContentElement { /** * The arguments of this element, returned as a MathMLNodeList. Note that * this is not necessarily the same as Node::childNodes, particularly in * the case of the cn element. The reason is that the sep elements that * are used to separate the arguments of a cn are not returned. * * @return value of the arguments attribute. */ MathMLNodeList getArguments(); /** * A URI pointing to a semantic definition for this content element. Note * that there is no stipulation about the form this definition may take! * * @return value of the definitionURL attribute. */ String getDefinitionURL(); /** * setter for the definitionURL attribute. * * @param definitionURL * new value for definitionURL. * @see #getDefinitionURL() */ void setDefinitionURL(String definitionURL); /** * A string describing the syntax in which the definition located at * definitionURL is given. * * @return value of the encoding attribute. */ String getEncoding(); /** * setter for the encoding attribute. * * @param encoding * new value for encoding. * @see #getEncoding() */ void setEncoding(String encoding); /** * A convenience method to retrieve the child argument at the position * referenced by index. Note that this is not necessarily the same as the * index-th child Node of this Element; in particular, sep elements will * not be counted. * * @param index * Position of desired argument in the list of arguments. The * first argument is numbered 1. * @return The Node retrieved. */ Node getArgument(int index); /** * A convenience method to insert newArgument before the current index-th * argument child of this element. If index is 0, newArgument is appended * as the last argument. * * @param newArgument * Node to be inserted as the index-th argument. This will * either be a MathMLElement or a Text node. * @param index * Position before which newArgument is to be inserted. The * first argument is numbered 1.Note that this is not * necessarily the index of the Node in the list of child * nodes, as nodes representing such elements as sep are not * counted as arguments. * @param newArgument * Node to be inserted as the index-th argument. This will * either be a MathMLElement or a Text node. * @return The Node inserted. This is the element within the DOM. */ Node insertArgument(Node newArgument, int index); /** * A convenience method to set an argument child at the position * referenced by index. If there is currently an argument at this * position, it is replaced by newArgument. * * @param newArgument * Node to be inserted as the argument. This will either be a * MathMLElement or a Text node. * @param index * Position of the argument that is to be set to newArgument in * the list of arguments. The first argument is numbered 1. * Note that this is not necessarily the index of the Node in * the list of child nodes, as nodes representing such elements * as sep are not counted as arguments. * @param newArgument * Node to be inserted as the argument. This will either be a * MathMLElement or a Text node. * @return The Node inserted. This is the element within the DOM. */ Node setArgument(Node newArgument, int index); /** * A convenience method to delete the argument child located at the * position referenced by index. * * @param index * Position of the argument to be deleted from the list of * arguments. The first argument is numbered 1. */ void deleteArgument(int index); /** * A convenience method to delete the argument child located at the * position referenced by index, and to return it to the caller. * * @param index * Position of the argument to be deleted from the list of * arguments. The first argument is numbered 1. * @return A Node representing the deleted argument. */ Node removeArgument(int index); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLScriptElement.java0000644000175000017500000000745111335260530032332 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML subscript, superscript and subscript-superscript pair elements msub, * msup, and msubsup. * * */ public interface MathMLScriptElement extends MathMLPresentationElement { /** * A string representing the minimum amount to shift the baseline of the * subscript down, if specified; this is the element's subscriptshift * attribute. This must return null for an msup. * * @return value of the subscriptshift attribute. */ String getSubscriptshift(); /** * setter for the subscriptshift attribute. * * @param subscriptshift * new value for subscriptshift. * @see #getSubscriptshift() */ void setSubscriptshift(String subscriptshift); /** * A string representing the minimum amount to shift the baseline of the * superscript up, if specified; this is the element's superscriptshift * attribute. This must return null for a msub. * * @return value of the superscriptshift attribute. */ String getSuperscriptshift(); /** * setter for the superscriptshift attribute. * * @param superscriptshift * new value for superscriptshift. * @see #getSuperscriptshift() */ void setSuperscriptshift(String superscriptshift); /** * A MathMLElement representing the base of the script. This is the first * child of the element. * * @return value of the base attribute. */ MathMLElement getBase(); /** * setter for the base attribute. * * @param base * new value for base. * @see #getBase() */ void setBase(MathMLElement base); /** * A MathMLElement representing the subscript of the script. This is the * second child of a msub or msubsup; retrieval must return null for an * msup. * * @return value of the subscript attribute. */ MathMLElement getSubscript(); /** * setter for the subscript attribute. * * @param subscript * new value for subscript. * @see #getSubscript() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised when the element is a msup. */ void setSubscript(MathMLElement subscript); /** * A MathMLElement representing the superscript of the script. This is the * second child of a msup or the third child of a msubsup; retrieval must * return null for an msub. * * @return value of the superscript attribute. */ MathMLElement getSuperscript(); /** * setter for the superscript attribute. * * @param superscript * new value for superscript. * @see #getSuperscript() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised when the element is a msub. */ void setSuperscript(MathMLElement superscript); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLIntervalElement.java0000644000175000017500000000501211335260530032641 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The interval element is used to represent simple mathematical intervals on * the real number line. It contains either two child elements that evaluate * to real numbers or one child element that is a condition for defining * membership in the interval. * * */ public interface MathMLIntervalElement extends MathMLContentElement { /** * A string with value open, closed, open-closed or closed-open. The * default value is closed. * * @return value of the closure attribute. */ String getClosure(); /** * setter for the closure attribute. * * @param closure * new value for closure. * @see #getClosure() */ void setClosure(String closure); /** * A MathMLContentElement representing the real number defining the start * of the interval. If end has not already been set, it becomes the same * as start until set otherwise. * * @return value of the start attribute. */ MathMLContentElement getStart(); /** * setter for the start attribute. * * @param start * new value for start. * @see #getStart() */ void setStart(MathMLContentElement start); /** * A MathMLContentElement representing the real number defining the end of * the interval. If start has not already been set, it becomes the same as * end until set otherwise. * * @return value of the end attribute. */ MathMLContentElement getEnd(); /** * setter for the end attribute. * * @param end * new value for end. * @see #getEnd() */ void setEnd(MathMLContentElement end); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLVectorElement.java0000644000175000017500000001125511335260530032325 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * vector is the container element for a vector. * * */ public interface MathMLVectorElement extends MathMLContentElement { /** * The number of components in the vector. * * @return value of the ncomponents attribute. */ int getNcomponents(); /** * A convenience method to retrieve a component. * * @param index * Position of the component in the list of components. The * first element is numbered 1. * @return The MathMLContentElement component at the position specified by * index. If index is not a valid index (i.e. is greater than the * number of components of the vector or less than 1), a null * MathMLContentElement is returned. */ MathMLContentElement getComponent(int index); /** * A convenience method to insert a new component in the vector before the * current index-th component. If index is 0 or is one more than the * number of components currently in the vector, newComponent is appended * as the last component of the vector. * * @param newComponent * A MathMLContentElement representing the component that is to * be added. * @param index * Position of the component in the list of components. The * first component is numbered 1. * @return The MathMLContentElement child of this MathMLVectorElement * representing the new component in the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than one more * than the current number of components of this vector * element. */ MathMLContentElement insertComponent(MathMLContentElement newComponent, int index) throws DOMException; /** * A convenience method to set the index-th component of the vector to * newComponent. If index is one more than the current number of * components, newComponent is appended as the last component. * * @param newComponent * A MathMLContentElement representing the element that is to * be the index-th component of the vector. * @param index * Position of the component in the list of components. The * first element is numbered 1. * @return The MathMLContentElement child of this MathMLVectorElement that * represents the new component in the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than one more * than the current number of components of this vector * element. */ MathMLContentElement setComponent(MathMLContentElement newComponent, int index) throws DOMException; /** * A convenience method to delete an element. The deletion changes the * indices of the following components. * * @param index * Position of the component in the vector. The position of the * first component is 1 * @return None * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the current * number of components of this vector element. */ void deleteComponent(int index) throws DOMException; /** * A convenience method to remove a component from a vector and return it * to the caller. If index is greater than the number of components or is * 0, a null MathMLContentElement is returned. * * @param index * Position of the component in the list of components. The * first element is numbered 1. * @return The MathMLContentElement component being removed. */ MathMLContentElement removeComponent(int index); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLAlignMarkElement.java0000644000175000017500000000274711335260530032736 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML alignment mark element malignmark. * * */ public interface MathMLAlignMarkElement extends MathMLPresentationElement { /** * A string specifying alignment on the right edge of the preceding * element or the left edge of the following element. Allowed values are * left and right. * * @return value of the edge attribute. */ String getEdge(); /** * setter for the edge attribute. * * @param edge * new value for edge. * @see #getEdge() */ void setEdge(String edge); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLMatrixElement.java0000644000175000017500000001200411335260530032320 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The matrix element is the container element for matrixrow elements. * * */ public interface MathMLMatrixElement extends MathMLContentElement { /** * The number of rows in the represented matrix. * * @return value of the nrows attribute. */ int getNrows(); /** * The number of columns in the represented matrix. * * @return value of the ncols attribute. */ int getNcols(); /** * The rows of the matrix, returned as a MathMLNodeList consisting of * MathMLMatrixrowElements. * * @return value of the rows attribute. */ MathMLNodeList getRows(); /** * A convenience method to retrieve a specified row. * * @param index * Position of the row in the list of rows. The first row is * numbered 1. * @return The MathMLMatrixrowElement representing the index-th row. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of rows in the matrix. */ MathMLMatrixrowElement getRow(int index) throws DOMException; /** * A convenience method to insert a row before the row that is currently * the index-th row of this matrix. If index is 0, newRow is appended as * the last row of the matrix. * * @param newRow * MathMLMatrixrowElement to be inserted into the matrix. * @param index * Unsigned integer giving the row position before which newRow * is to be inserted. The first row is numbered 1. * @return The MathMLMatrixrowElement added. This is the new element * within the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than one more * than the number of rows in the matrix. * HIERARCHY_REQUEST_ERR: Raised if the number of cells in * newRow doesn't match the number of columns in the matrix. */ MathMLMatrixrowElement insertRow(MathMLMatrixrowElement newRow, int index) throws DOMException; /** * A convenience method to set the value of the index-th child matrixrow * element of this element. If there is already a row at the specified * index, it is replaced by newRow. * * @param newRow * MathMLMatrixrowElement representing the matrixrow which is * to become the index-th row of the matrix. * @param index * Unsigned integer giving the row which is to be set to * newRow. The first row is numbered 1. * @return The MathMLMatrixrowElement child of this MathMLMatrixrowElement * representing newRow within the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of rows in the matrix. HIERARCHY_REQUEST_ERR: Raised if the * number of cells in newRow doesn't match the number of * columns in the matrix. */ MathMLMatrixrowElement setRow(MathMLMatrixrowElement newRow, int index) throws DOMException; /** * A convenience method to delete a row. The deletion changes the indices * of the following rows. * * @param index * Position of the row to be deleted in the list of rows * @return None * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of rows in the matrix. */ void deleteRow(int index) throws DOMException; /** * A convenience method to remove a row and return it to the caller. The * deletion changes the indices of the following rows. * * @param index * Position of the row to be removed in the list of rows. The * first row is numbered 1. * @return The MathMLMatrixrowElement being removed. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of rows in the matrix. */ MathMLMatrixrowElement removeRow(int index) throws DOMException; }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLUnderOverElement.java0000644000175000017500000000742211335260530032775 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML underscript, overscript and overscript-underscript pair elements * munder, mover and munderover. * * */ public interface MathMLUnderOverElement extends MathMLPresentationElement { /** * Either true or false if present; a string controlling whether * underscript is drawn as an accent or as a limit, if specified; this is * the element's accentunder attribute. This must return null for an * mover. * * @return value of the accentunder attribute. */ String getAccentunder(); /** * setter for the accentunder attribute. * * @param accentunder * new value for accentunder. * @see #getAccentunder() */ void setAccentunder(String accentunder); /** * Either true or false if present; a string controlling whether * overscript is drawn as an accent or as a limit, if specified; this is * the element's accent attribute. This must return null for an munder. * * @return value of the accent attribute. */ String getAccent(); /** * setter for the accent attribute. * * @param accent * new value for accent. * @see #getAccent() */ void setAccent(String accent); /** * A MathMLElement representing the base of the script. This is the first * child of the element. * * @return value of the base attribute. */ MathMLElement getBase(); /** * setter for the base attribute. * * @param base * new value for base. * @see #getBase() */ void setBase(MathMLElement base); /** * A MathMLElement representing the underscript of the script. This is the * second child of a munder or munderover; retrieval must return null for * an mover. * * @return value of the underscript attribute. */ MathMLElement getUnderscript(); /** * setter for the underscript attribute. * * @param underscript * new value for underscript. * @see #getUnderscript() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised when the element is a mover. */ void setUnderscript(MathMLElement underscript); /** * A MathMLElement representing the overscript of the script. This is the * second child of a mover or the third child of a munderover; retrieval * must return null for an munder. * * @return value of the overscript attribute. */ MathMLElement getOverscript(); /** * setter for the overscript attribute. * * @param overscript * new value for overscript. * @see #getOverscript() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised when the element is a munder. */ void setOverscript(MathMLElement overscript); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLPresentationContainer.java0000644000175000017500000000241611335260530034066 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface represents MathML Presentation elements that may contain * arbitrarily many child elements. Elements directly supported by this * interface include mrow, mphantom and merror. All attributes and methods are * derived from the base MathMLPresentationElement and MathMLContainer * interfaces. * */ public interface MathMLPresentationContainer extends MathMLPresentationElement, MathMLContainer { }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLSetElement.java0000644000175000017500000000331111335260530031610 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The set element is the container element that represents a set of elements. * The elements of a set can be defined either by explicitly listing the * elements, or by using the bvar and condition elements. * * */ public interface MathMLSetElement extends MathMLContentContainer { /** * This is true if the set is specified by giving the list of its elements * explicitly. * * @return value of the isExplicit attribute. */ boolean getIsExplicit(); /** * The type attribute of the represented element. Predefined values are * normal and multiset. See and . * * @return value of the type attribute. */ String getType(); /** * setter for the type attribute. * * @param type * new value for type. * @see #getType() */ void setType(String type); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLNodeList.java0000644000175000017500000000263211335260530031271 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.NodeList; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface is provided as a specialization of the NodeList interface. * The child Nodes of this NodeList must be MathMLElements or Text nodes. Note * that MathMLNodeLists are frequently used in the DOM as values of readonly * attributes, encapsulating, for instance, various collections of child * elements. When used in this way, these objects are always understood to be * live, in the sense that changes to the document are immediately reflected * in them. * * */ public interface MathMLNodeList extends NodeList { }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLPresentationElement.java0000644000175000017500000000256511335260530033542 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface is provided to serve as a base interface for various MathML * Presentation interfaces. It contains no new attributes or methods at this * time; however, it is felt that the distinction between Presentation and * Content MathML entities should be indicated in the MathMLElement hierarchy. * In particular, future versions of the MathML DOM may add functionality on * this interface; it may also serve as an aid to implementors. * * */ public interface MathMLPresentationElement extends MathMLElement { }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLPiecewiseElement.java0000644000175000017500000002255611335260530033006 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The piecewise element represents the piecewise definition of a function. It * contains child piece elements, each represented by a MathMLCaseElement, * giving the various conditions and associated function value specifications * in the function definition, and an optional otherwise child element, * represented by a MathMLContentElement, giving the default value of the * function - that is, the value to be assigned when none of the conditions * specified in the piece child elements hold. * */ public interface MathMLPiecewiseElement extends MathMLContentElement { /** * A MathMLNodeList containing one MathMLCaseElement representing each of * the piece element children of this MathMLPiecewiseElement. The * otherwise child (if present) is not contained in this MathMLNodeList. * * @return value of the pieces attribute. */ MathMLNodeList getPieces(); /** * Returns a MathMLContentElement representing the value to be taken by * the piecewise function when none of the conditions described in the * piece children is true. * * @return value of the otherwise attribute. */ MathMLContentElement getOtherwise(); /** * setter for the otherwise attribute. * * @param otherwise * new value for otherwise. * @see #getOtherwise() */ void setOtherwise(MathMLContentElement otherwise); /** * A convenience method to retrieve the child piece at the position * referenced by index. * * @param index * Position of desired case in the list of cases. The first * piece is numbered 1; the otherwise child (if present) is not * counted, regardless of its position. If index is greater * than the number of pieces, a null MathMLCaseElement is * returned; no error is generated. * @return The MathMLCaseElement retrieved. */ MathMLCaseElement getCase(int index); /** * A convenience method to set the value of the child piece at the * position referenced by index to the value of case. * * @param index * Position of the piece to be set to case. The first piece is * numbered 1; the otherwise child (if present) is not counted, * regardless of its position. If there is currently a piece at * this position, it will be replaced by case. If index is one * more than the number of piece child elements, a new one will * be appended. * @param case * A MathMLCaseElement representing the new value of the * indexth piece child. * @return The new MathMLCaseElement created. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than one more * than the number of pieces in this element. */ MathMLCaseElement setCase(int index, MathMLCaseElement caseElement) throws DOMException; /** * A convenience method to delete the child piece at the position * referenced by index. The deletion changes the indices of the following * pieces. * * @param index * Position of the piece to be deleted. The first piece is * numbered 1; the otherwise child (if present) is not counted, * regardless of its position. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of pieces in this element. */ void deleteCase(int index) throws DOMException; /** * A convenience method to remove the child piece at the position * referenced by index and return it to the caller. The removal changes * the indices of the following pieces. * * @param index * Position of the piece to be removed. The first piece is * numbered 1; the otherwise child (if present) is not counted, * regardless of its position. * @return The MathMLCaseElement removed. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of pieces in this element. */ MathMLCaseElement removeCase(int index) throws DOMException; /** * A convenience method to insert a new piece child into this element. * * @param index * Position before which case is to be inserted. If index is 0, * newCase is appended as the last piece child of this element. * The otherwise child (if present) is not counted, regardless * of its position. * @param newCase * A MathMLCaseElement representing the piece to be inserted. * @return The new MathMLCaseElement inserted. This is the actual Element * in the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater one more than * the number of pieces in this element. */ MathMLCaseElement insertCase(int index, MathMLCaseElement newCase) throws DOMException; /** * A convenience method to retrieve the child of the indexth piece in this * element which specifies the function value for that case. * * @param index * Position of the piece whose value is being requested in the * list of pieces. The first piece is numbered 1; the otherwise * child (if present) is not counted, regardless of its * position. * @return The MathMLContentElement representing the value to be taken by * the function in the indexth case. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of pieces in this element. */ MathMLContentElement getCaseValue(int index) throws DOMException; /** * A convenience method to set the function value for the indexth piece in * this element. * * @param index * Position of the piece whose value is being set in the list * of pieces. The first piece is numbered 1; the otherwise * child (if present) is not counted, regardless of its * position. * @param value * A MathMLContentElement representing the function value to be * assigned in the indexth case. * @return The MathMLContentElement representing the value to be taken by * the function in the indexth case. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of pieces in this element. */ MathMLContentElement setCaseValue(int index, MathMLContentElement value) throws DOMException; /** * A convenience method to retrieve the child of the piece at the position * referenced by index which gives the condition for this case. * * @param index * Position of the piece whose condition is being requested in * the list of pieces. The first piece is numbered 1; the * otherwise child (if present) is not counted, regardless of * its position. * @return The MathMLContentElement representing the condition to be * satisfied for the indexth case. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of pieces in this element. */ MathMLContentElement getCaseCondition(int index) throws DOMException; /** * A convenience method to set the condition for the indexth piece in this * element. * * @param index * Position of the piece whose condition is being set in the * list of pieces. The first piece is numbered 1; the otherwise * child (if present) is not counted, regardless of its * position. * @param condition * A MathMLContentElement representing the condition to be * associated to the indexth case. * @return The MathMLContentElement which is inserted as the condition * child of the indexth piece. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of pieces in this element. */ MathMLContentElement setCaseCondition(int index, MathMLContentElement condition) throws DOMException; }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLContentElement.java0000644000175000017500000000255311335260530032476 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface is provided to serve as a base interface for various MathML * Content interfaces. It contains no new attributes or methods at this time; * however, it is felt that the distinction between Presentation and Content * MathML entities should be indicated in the MathMLElement hierarchy. In * particular, future versions of the MathML DOM may add functionality on this * interface; it may also serve as an aid to implementors. * * */ public interface MathMLContentElement extends MathMLElement { }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLPredefinedSymbol.java0000644000175000017500000000674311335260530033012 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface supports all of the empty built-in operator, relation, * function, and constant and symbol elements that have the definitionURL and * encoding attributes in addition to the standard set of attributes. The * elements supported in order of their appearance in are: inverse, compose, * ident, domain, codomain, image, quotient, exp, factorial, divide, max, min, * minus, plus, power, rem, times, root, gcd, and, or, xor, not, implies, * forall, exists, abs, conjugate, arg, real, imaginary, lcm, floor, ceiling, * eq, neq, gt, lt, geq, leq, equivalent, approx, factorof, ln, log, int, * diff, partialdiff, divergence, grad, curl, laplacian, union, intersect, in, * notin, subset, prsubset, notsubset, notprsubset, setdiff, card, * cartesianproduct, sum, product, limit, sin, cos, tan, sec, csc, cot, sinh, * cosh, tanh, sech, csch, coth, arcsin, arccos, arctan, arcsec, arccsc, * arccot, arcsinh, arccosh, arctanh, arcsech, arccsch, arccoth, mean, sdev, * variance, median, mode, moment, determinant, transpose, selector, * vectorproduct, scalarproduct, outerproduct, integers, reals, rationals, * naturalnumbers, complexes, primes, exponentiale, imaginaryi, notanumber, * true, false, emptyset, pi, eulergamma, and infinity. * * */ public interface MathMLPredefinedSymbol extends MathMLContentElement { /** * A string that provides an override to the default semantics, or * provides a more specific definition * * @return value of the definitionURL attribute. */ String getDefinitionURL(); /** * setter for the definitionURL attribute. * * @param definitionURL * new value for definitionURL. * @see #getDefinitionURL() */ void setDefinitionURL(String definitionURL); /** * A string describing the syntax in which the definition located at * definitionURL is given. * * @return value of the encoding attribute. */ String getEncoding(); /** * setter for the encoding attribute. * * @param encoding * new value for encoding. * @see #getEncoding() */ void setEncoding(String encoding); /** * A string representing the number of arguments. Values include 0, 1, ... * and variable. * * @return value of the arity attribute. */ String getArity(); /** * A string giving the name of the MathML element represented. This is a * convenience attribute only; accessing it should be synonymous with * accessing the Element::tagName attribute. * * @return value of the symbolName attribute. */ String getSymbolName(); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/package-info.java0000644000175000017500000000236211335260530031031 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Standard MathML DOM Model.

Standard MathML DOM model as specified in Appendix D Document Object Model for MathML.

Please note that the interfaces here differ from the Java interfaces downloadedable at the above site:

  • The model here reflects the DOM standard as given by the MathML 2.0 2nd edition, the online version is for the 1st edition.
  • The classes here have JavaDoc comments generated from the MathML spec source file.
*/ package org.w3c.dom.mathml; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLCiElement.java0000644000175000017500000000271211335260530031414 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The ci element is used to specify a symbolic name. * * */ public interface MathMLCiElement extends MathMLContentToken { /** * Values include integer, rational, real, float, complex, complex-polar, * complex-cartesian, constant, function, any of the MathML content * container types (vector, matrix, set, list etc.) or their types. * * @return value of the type attribute. */ String getType(); /** * setter for the type attribute. * * @param type * new value for type. * @see #getType() */ void setType(String type); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLDeclareElement.java0000644000175000017500000001000611335260530032413 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The declare construct has two primary roles. The first is to change or set * the default attribute values for a specific mathematical object. The second * is to establish an association between a name and an object. * * */ public interface MathMLDeclareElement extends MathMLContentElement { /** * A string indicating the type of the identifier. It must be compatible * with the type of the constructor, if a constructor is present. The type * is inferred from the constructor if present, otherwise it must be * specified. * * @return value of the type attribute. */ String getType(); /** * setter for the type attribute. * * @param type * new value for type. * @see #getType() */ void setType(String type); /** * If the identifier is a function, this attribute specifies the number of * arguments the function takes. This represents the declare element's * nargs attribute; see . * * @return value of the nargs attribute. */ int getNargs(); /** * setter for the nargs attribute. * * @param nargs * new value for nargs. * @see #getNargs() */ void setNargs(int nargs); /** * A string with the values prefix, infix, postfix, or function-model. * * @return value of the occurrence attribute. */ String getOccurrence(); /** * setter for the occurrence attribute. * * @param occurrence * new value for occurrence. * @see #getOccurrence() */ void setOccurrence(String occurrence); /** * A URI specifying the detailed semantics of the element. * * @return value of the definitionURL attribute. */ String getDefinitionURL(); /** * setter for the definitionURL attribute. * * @param definitionURL * new value for definitionURL. * @see #getDefinitionURL() */ void setDefinitionURL(String definitionURL); /** * A description of the syntax used in definitionURL. * * @return value of the encoding attribute. */ String getEncoding(); /** * setter for the encoding attribute. * * @param encoding * new value for encoding. * @see #getEncoding() */ void setEncoding(String encoding); /** * A MathMLCiElement representing the name being declared. * * @return value of the identifier attribute. */ MathMLCiElement getIdentifier(); /** * setter for the identifier attribute. * * @param identifier * new value for identifier. * @see #getIdentifier() */ void setIdentifier(MathMLCiElement identifier); /** * An optional MathMLElement providing an initial value for the object * being declared. * * @return value of the constructor attribute. */ MathMLElement getConstructor(); /** * setter for the constructor attribute. * * @param constructor * new value for constructor. * @see #getConstructor() */ void setConstructor(MathMLElement constructor); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLCsymbolElement.java0000644000175000017500000000224611335260530032473 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface represents the csymbol element. Although it currently has no * attributes or methods distinct from those of MathMLContentToken, a separate * interface is provided to emphasize the conceptual role of the csymbol * element. * * */ public interface MathMLCsymbolElement extends MathMLContentToken { }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLContainer.java0000644000175000017500000002644711335260530031504 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This is an abstract interface containing functionality required by MathML * elements that may contain arbitrarily many child elements. No elements are * directly supported by this interface; all instances are instances of either * MathMLPresentationContainer, MathMLContentContainer, or MathMLMathElement. * * */ public interface MathMLContainer { /** * The number of child elements of this element which represent arguments * of the element, as opposed to qualifiers or declare elements. Thus for * a MathMLContentContainer it does not contain elements representing * bound variables, conditions, separators, degrees, or upper or lower * limits (bvar, condition, sep, degree, lowlimit, or uplimit). * * @return value of the nArguments attribute. */ int getNArguments(); /** * This attribute accesses the child MathMLElements of this element which * are arguments of it, as a MathMLNodeList. Note that this list does not * contain any MathMLElements representing qualifier elements or declare * elements. * * @return value of the arguments attribute. */ MathMLNodeList getArguments(); /** * Provides access to the declare elements which are children of this * element, in a MathMLNodeList. All Nodes in this list must be * MathMLDeclareElements. * * @return value of the declarations attribute. */ MathMLNodeList getDeclarations(); /** * This method returns the indexth child argument element of this element. * This frequently differs from the value of * Node::childNodes().item(index), as qualifier elements and declare * elements are not counted. * * @param index * The one-based index of the argument to be retrieved. * @return A MathMLElement representing the index-th argument of this * element. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of child elements. */ MathMLElement getArgument(int index) throws DOMException; /** * This method sets newArgument as the index-th argument of this element. * If there is currently an index-th argument, it is replaced by * newArgument. This frequently differs from setting the node at * Node::childNodes().item(index), as qualifier elements and declare * elements are not counted. * * @param newArgument * A MathMLElement representing the element that is to be set * as the index-th argument of this element. * @param index * The index of the argument that is to be set to newArgument. * The first argument is numbered 1. If index is one more than * the current number of arguments, a new argument is appended. * @return The MathMLElement child of this element that represents the new * argument in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child element of the type of newArgument, if this * is a MathMLContentContainer and newArgument is a qualifier * element, or if newElement is a MathMLDeclareElement. * INDEX_SIZE_ERR: Raised if index is greater than one more * than the number of child elements. */ MathMLElement setArgument(MathMLElement newArgument, int index) throws DOMException; /** * This method inserts newArgument before the current index-th argument of * this element. If index is 0, or if index is one more than the current * number of arguments, newArgument is appended as the last argument. This * frequently differs from setting the node at * Node::childNodes().item(index), as qualifier elements and declare * elements are not counted. * * @param newArgument * A MathMLElement representing the element that is to be * inserted as a child argument of this element. * @param index * The one-based index of the position before which newArgument * is to be inserted. The first argument is numbered 1. * @return The MathMLElement child of this element that represents the new * argument in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child argument of the type of newArgument, or, for * MathMLContentContainers, if newArgument represents a * qualifier element. INDEX_SIZE_ERR: Raised if index is * greater than one more than the number of child arguments. */ MathMLElement insertArgument(MathMLElement newArgument, int index) throws DOMException; /** * This method deletes the index-th child element that is an argument of * this element. Note that child elements which are qualifier elements or * declare elements are not counted in determining the index-th argument. * * @param index * The one-based index of the argument to be deleted. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of child elements. */ void deleteArgument(int index) throws DOMException; /** * This method deletes the index-th child element that is an argument of * this element, and returns it to the caller. Note that child elements * that are qualifier elements or declare elements are not counted in * determining the index-th argument. * * @param index * The one-based index of the argument to be removed. * @return A MathMLElement representing the argument being removed. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of child elements. */ MathMLElement removeArgument(int index) throws DOMException; /** * This method retrieves the index-th child declare element of this * element. * * @param index * A one-based index into the list of child declare elements of * this element giving the position of the declare element to * be retrieved. * @return The MathMLDeclareElement representing the index-th child * declare. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of child declare elements. */ MathMLDeclareElement getDeclaration(int index) throws DOMException; /** * This method inserts newDeclaration as the index-th child declaration of * this element. If there is already an index-th declare child element, it * is replaced by newDeclaration. * * @param newDeclaration * A MathMLDeclareElement to be inserted as the index-th child * declare element. * @param index * A one-based index into the list of child declare elements of * this element giving the position into which newDeclaration * is to be inserted. If index is one more than the number of * declare children of this element, newDeclaration is appended * as the last declare child. * @return The MathMLDeclareElement being inserted. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than one more * than the number of child declare elements. * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit child declare elements. */ MathMLDeclareElement setDeclaration(MathMLDeclareElement newDeclaration, int index) throws DOMException; /** * This method inserts newDeclaration before the current index-th child * declare element of this element. If index is 0, newDeclaration is * appended as the last child declare element. * * @param newDeclaration * A MathMLDeclareElement to be inserted as the index-th child * declare element. * @param index * A one-based index into the list of child declare elements of * this element giving the position before which newDeclaration * is to be inserted. If index is 0 or if it is one more than * the number of child declare children, newDeclaration is * appended as the last child declare element. * @return The MathMLDeclareElement child of this element representing * newDeclaration in the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than one more * than the number of child declare elements. * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit child declare elements. */ MathMLDeclareElement insertDeclaration( MathMLDeclareElement newDeclaration, int index) throws DOMException; /** * This method removes the MathMLDeclareElement representing the index-th * declare child element of this element, and returns it to the caller. * Note that index is the position in the list of declare element * children, as opposed to the position in the list of all child Nodes. * * @param index * The one-based index of the declare element to be removed. * @return The MathMLDeclareElement being removed as a child Node of this * element. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of child declare elements. */ MathMLDeclareElement removeDeclaration(int index) throws DOMException; /** * This method deletes the MathMLDeclareElement representing the index-th * declare child element of this element. Note that index is the position * in the list of declare element children, as opposed to the position in * the list of all child Nodes. * * @param index * The one-based index of the declare element to be removed. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of child declare elements. */ void deleteDeclaration(int index) throws DOMException; }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLElement.java0000644000175000017500000000666011335260530031146 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.Element; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * All MathML element interfaces derive from this object, which derives from * the basic DOM interface Element. * */ public interface MathMLElement extends Element { /** * The class attribute of the element. See the discussion elsewhere in * this document of the class attribute; see also the HTML definition of * this attribute. * * @return value of the className attribute. */ String getClassName(); /** * setter for the className attribute. * * @param className * new value for className. * @see #getClassName() */ void setClassName(String className); /** * A string identifying the element's style attribute. * * @return value of the mathElementStyle attribute. */ String getMathElementStyle(); /** * setter for the mathElementStyle attribute. * * @param mathElementStyle * new value for mathElementStyle. * @see #getMathElementStyle() */ void setMathElementStyle(String mathElementStyle); /** * The element's identifier. See the discussion elsewhere in this document * of the id attribute; see also the HTML definition. * * @return value of the id attribute. */ String getId(); /** * setter for the id attribute. * * @param id * new value for id. * @see #getId() */ void setId(String id); /** * The xref attribute of the element. See the discussion elsewhere in this * document of the xref attribute. * * @return value of the xref attribute. */ String getXref(); /** * setter for the xref attribute. * * @param xref * new value for xref. * @see #getXref() */ void setXref(String xref); /** * The xlink:href attribute of the element. See the discussion elsewhere * in this document of the xlink:href attribute; see also the definition * of this attribute in the XLink specification. * * @return value of the href attribute. */ String getHref(); /** * setter for the href attribute. * * @param href * new value for href. * @see #getHref() */ void setHref(String href); /** * The MathMLMathElement corresponding to the nearest math element * ancestor of this element. Should be null if this element is a top-level * math element. * * @return value of the ownerMathElement attribute. */ MathMLMathElement getOwnerMathElement(); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLMathElement.java0000644000175000017500000000425011335260530031751 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface represents the top-level MathML math element. It may become * useful for interfacing between the Document Object Model objects encoding * an enclosing document and the MathML DOM elements that are its children. It * could also be used for some purposes as a MathML DOM surrogate for a * Document object. For instance, MathML-specific factory methods could be * placed here, as could methods for creating MathML-specific Iterators or * TreeWalkers. However, this functionality is as yet undefined. */ public interface MathMLMathElement extends MathMLElement, MathMLContainer { /** * Represents the macros attribute of the math element. See . * * @return value of the macros attribute. */ String getMacros(); /** * setter for the macros attribute. * * @param macros * new value for macros. * @see #getMacros() */ void setMacros(String macros); /** * Represents the display attribute of the math element. This value is * either block or inline. See . * * @return value of the display attribute. */ String getDisplay(); /** * setter for the display attribute. * * @param display * new value for display. * @see #getDisplay() */ void setDisplay(String display); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLApplyElement.java0000644000175000017500000000607511335260530032154 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The apply element allows a function or operator to be applied to its * arguments. * * */ public interface MathMLApplyElement extends MathMLContentContainer { /** * The MathML element representing the function or operator that is * applied to the list of arguments. * * @return value of the operator attribute. */ MathMLElement getOperator(); /** * setter for the operator attribute. * * @param operator * new value for operator. * @see #getOperator() */ void setOperator(MathMLElement operator); /** * This attribute represents the lowlimit child element of this node (if * any). This expresses, for instance, the lower limit of integration if * this is an apply element whose first child is a int. See . * * @return value of the lowLimit attribute. */ MathMLElement getLowLimit(); /** * setter for the lowLimit attribute. * * @param lowLimit * new value for lowLimit. * @see #getLowLimit() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child lowlimit element. In particular, raised if * this element is not an apply element whose first child is * an int, sum, product, or limit element. */ void setLowLimit(MathMLElement lowLimit); /** * This attribute represents the uplimit child element of this node (if * any). This expresses, for instance, the upper limit of integration if * this is an apply element whose first child is a int. See . * * @return value of the upLimit attribute. */ MathMLElement getUpLimit(); /** * setter for the upLimit attribute. * * @param upLimit * new value for upLimit. * @see #getUpLimit() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child uplimit element. In particular, raised if * this element is not an apply element whose first child is * an int, sum, or product element. */ void setUpLimit(MathMLElement upLimit); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLTendsToElement.java0000644000175000017500000000310611335260530032437 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The tendsto element expresses that a quantity is tending to a specified * value. An interface derived from the MathMLPredefinedSymbol is used to * allow for the inclusion of the type attribute. * * */ public interface MathMLTendsToElement extends MathMLPredefinedSymbol { /** * A string describing how the quantity approaches the specified value. * Predefined values of the string include above, below, and two-sided. * The default value is two-sided. * * @return value of the type attribute. */ String getType(); /** * setter for the type attribute. * * @param type * new value for type. * @see #getType() */ void setType(String type); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLTableCellElement.java0000644000175000017500000000765711335260530032725 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationContainer interface for the * MathML table or matrix cell element mtd. * * */ public interface MathMLTableCellElement extends MathMLPresentationContainer { /** * A string representing a positive integer that specifies the number of * rows spanned by this cell. The default is 1. * * @return value of the rowspan attribute. */ String getRowspan(); /** * setter for the rowspan attribute. * * @param rowspan * new value for rowspan. * @see #getRowspan() */ void setRowspan(String rowspan); /** * A string representing a positive integer that specifies the number of * columns spanned by this cell. The default is 1. * * @return value of the columnspan attribute. */ String getColumnspan(); /** * setter for the columnspan attribute. * * @param columnspan * new value for columnspan. * @see #getColumnspan() */ void setColumnspan(String columnspan); /** * A string specifying an override of the inherited vertical alignment of * this cell within the table row. Allowed values are top, bottom, center, * baseline, and axis. * * @return value of the rowalign attribute. */ String getRowalign(); /** * setter for the rowalign attribute. * * @param rowalign * new value for rowalign. * @see #getRowalign() */ void setRowalign(String rowalign); /** * A string specifying an override of the inherited horizontal alignment * of this cell within the table column. Allowed values are left, center, * and right. * * @return value of the columnalign attribute. */ String getColumnalign(); /** * setter for the columnalign attribute. * * @param columnalign * new value for columnalign. * @see #getColumnalign() */ void setColumnalign(String columnalign); /** * A string specifying how the alignment groups within the cell are to be * aligned with those in cells above or below this cell. The string * consists of a space-separated sequence of specifiers, each of which can * have the following values: left, right, center, or decimalpoint. * * @return value of the groupalign attribute. */ String getGroupalign(); /** * setter for the groupalign attribute. * * @param groupalign * new value for groupalign. * @see #getGroupalign() */ void setGroupalign(String groupalign); /** * A string with the values true or false indicating whether the cell * contains align groups. * * @return value of the hasaligngroups attribute. */ boolean getHasaligngroups(); /** * A string representing the integer index (1-based?) of the cell in its * containing row. [What about spanning cells? How do these affect this * value?] * * @return value of the cellindex attribute. */ String getCellindex(); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLTableElement.java0000644000175000017500000004200611335260530032110 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML table or matrix element mtable. * * */ public interface MathMLTableElement extends MathMLPresentationElement { /** * A string representing the vertical alignment of the table with the * adjacent text. Allowed values are (top | bottom | center | baseline | * axis)[rownumber], where rownumber is between 1 and n (for a table with * n rows) or -1 and -n. * * @return value of the align attribute. */ String getAlign(); /** * setter for the align attribute. * * @param align * new value for align. * @see #getAlign() */ void setAlign(String align); /** * A string representing the alignment of entries in each row, consisting * of a space-separated sequence of alignment specifiers, each of which * can have the following values: top, bottom, center, baseline, or axis. * * @return value of the rowalign attribute. */ String getRowalign(); /** * setter for the rowalign attribute. * * @param rowalign * new value for rowalign. * @see #getRowalign() */ void setRowalign(String rowalign); /** * A string representing the alignment of entries in each column, * consisting of a space-separated sequence of alignment specifiers, each * of which can have the following values: left, center, or right. * * @return value of the columnalign attribute. */ String getColumnalign(); /** * setter for the columnalign attribute. * * @param columnalign * new value for columnalign. * @see #getColumnalign() */ void setColumnalign(String columnalign); /** * A string specifying how the alignment groups within the cells of each * row are to be aligned with the corresponding items above or below them * in the same column. The string consists of a sequence of braced group * alignment lists. Each group alignment list is a space-separated * sequence, each of which can have the following values: left, right, * center, or decimalpoint. * * @return value of the groupalign attribute. */ String getGroupalign(); /** * setter for the groupalign attribute. * * @param groupalign * new value for groupalign. * @see #getGroupalign() */ void setGroupalign(String groupalign); /** * A string consisting of the values true or false indicating, for each * column, whether it can be used as an alignment scope. * * @return value of the alignmentscope attribute. */ String getAlignmentscope(); /** * setter for the alignmentscope attribute. * * @param alignmentscope * new value for alignmentscope. * @see #getAlignmentscope() */ void setAlignmentscope(String alignmentscope); /** * A string consisting of a space-separated sequence of specifiers, each * of which can have one of the following forms: auto, number h-unit, * namedspace, or fit. (A value of the form namedspace is one of * veryverythinmathspace, verythinmathspace, thinmathspace, * mediummathspace, thickmathspace, verythickmathspace, or * veryverythickmathspace.) This represents the element's columnwidth * attribute. * * @return value of the columnwidth attribute. */ String getColumnwidth(); /** * setter for the columnwidth attribute. * * @param columnwidth * new value for columnwidth. * @see #getColumnwidth() */ void setColumnwidth(String columnwidth); /** * A string that is either of the form number h-unit or is the string * auto. This represents the element's width attribute. * * @return value of the width attribute. */ String getWidth(); /** * setter for the width attribute. * * @param width * new value for width. * @see #getWidth() */ void setWidth(String width); /** * A string consisting of a space-separated sequence of specifiers of the * form number v-unit representing the space to be added between rows. * * @return value of the rowspacing attribute. */ String getRowspacing(); /** * setter for the rowspacing attribute. * * @param rowspacing * new value for rowspacing. * @see #getRowspacing() */ void setRowspacing(String rowspacing); /** * A string consisting of a space-separated sequence of specifiers of the * form number h-unit representing the space to be added between columns. * * @return value of the columnspacing attribute. */ String getColumnspacing(); /** * setter for the columnspacing attribute. * * @param columnspacing * new value for columnspacing. * @see #getColumnspacing() */ void setColumnspacing(String columnspacing); /** * A string specifying whether and what kind of lines should be added * between each row. The string consists of a space-separated sequence of * specifiers, each of which can have the following values: none, solid, * or dashed. * * @return value of the rowlines attribute. */ String getRowlines(); /** * setter for the rowlines attribute. * * @param rowlines * new value for rowlines. * @see #getRowlines() */ void setRowlines(String rowlines); /** * A string specifying whether and what kind of lines should be added * between each column. The string consists of a space-separated sequence * of specifiers, each of which can have the following values: none, * solid, or dashed. * * @return value of the columnlines attribute. */ String getColumnlines(); /** * setter for the columnlines attribute. * * @param columnlines * new value for columnlines. * @see #getColumnlines() */ void setColumnlines(String columnlines); /** * A string specifying a frame around the table. Allowed values are (none | * solid | dashed). * * @return value of the frame attribute. */ String getFrame(); /** * setter for the frame attribute. * * @param frame * new value for frame. * @see #getFrame() */ void setFrame(String frame); /** * A string of the form number h-unit number v-unit specifying the spacing * between table and its frame. * * @return value of the framespacing attribute. */ String getFramespacing(); /** * setter for the framespacing attribute. * * @param framespacing * new value for framespacing. * @see #getFramespacing() */ void setFramespacing(String framespacing); /** * A string with the values true or false. * * @return value of the equalrows attribute. */ String getEqualrows(); /** * setter for the equalrows attribute. * * @param equalrows * new value for equalrows. * @see #getEqualrows() */ void setEqualrows(String equalrows); /** * A string with the values true or false. * * @return value of the equalcolumns attribute. */ String getEqualcolumns(); /** * setter for the equalcolumns attribute. * * @param equalcolumns * new value for equalcolumns. * @see #getEqualcolumns() */ void setEqualcolumns(String equalcolumns); /** * A string with the values true or false. * * @return value of the displaystyle attribute. */ String getDisplaystyle(); /** * setter for the displaystyle attribute. * * @param displaystyle * new value for displaystyle. * @see #getDisplaystyle() */ void setDisplaystyle(String displaystyle); /** * A string with the values left, right, leftoverlap, or rightoverlap. * * @return value of the side attribute. */ String getSide(); /** * setter for the side attribute. * * @param side * new value for side. * @see #getSide() */ void setSide(String side); /** * A string of the form number h-unit, specifying the minimum space * between a label and the adjacent entry in the labeled row. * * @return value of the minlabelspacing attribute. */ String getMinlabelspacing(); /** * setter for the minlabelspacing attribute. * * @param minlabelspacing * new value for minlabelspacing. * @see #getMinlabelspacing() */ void setMinlabelspacing(String minlabelspacing); /** * A MathMLNodeList consisting of MathMLTableRowElements and * MathMLLabeledRowElements representing the rows of the table. This is a * live object. * * @return value of the rows attribute. */ MathMLNodeList getRows(); /** * A convenience method to insert a new (empty) row (mtr) in the table * before the current index-th row. If index is less than 0, the new row * is inserted before the -index-th row counting up from the current last * row; if index is equal to the current number of rows, the new row is * appended as the last row. * * @param index * Position before which to insert the new row, where 0 * represents the first row. Negative numbers are used to count * backwards from the last row. * @return Returns the MathMLTableRowElement child of this * MathMLTableElement that represents the new mtr element being * inserted. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the current * number of rows of this mtable element or less than minus * this number. */ MathMLTableRowElement insertEmptyRow(long index) throws DOMException; /** * A convenience method to insert a new (empty) labeled row (mlabeledtr) * in the table before the current index-th row. If index is less than 0, * the new row is inserted before the -index-th row counting up from the * current last row; if index is equal to the current number of rows, the * new row is appended as the last row. * * @param index * Position before which to insert the new row, where 0 * represents the first row. Negative numbers are used to count * backwards from the last row. * @return Returns the MathMLLabeledRowElement child of this * MathMLTableElement representing the mtr element being inserted. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the current * number of rows of this mtable element or less than minus * this number. */ MathMLLabeledRowElement insertEmptyLabeledRow(long index) throws DOMException; /** * A convenience method to retrieve the index-th row from the table. If * index is less than 0, the -index-th row from the bottom of the table is * retrieved. (So, for instance, if index is -2, the next-to-last row is * retrieved.) If index is not a valid value (i.e. is greater than or * equal to the number of rows, or is less than minus the number of rows), * a null MathMLTableRowElement is returned. * * @param index * Index of the row to be returned, where 0 represents the * first row. Negative numbers are used to count backwards from * the last row. * @return Returns the MathMLTableRowElement representing the index-th row * of the table. */ MathMLTableRowElement getRow(long index); /** * A convenience method to insert the new row or labeled row (mtr or * mlabeledtr) represented by newRow in the table before the current * index-th row. If index is equal to the current number of rows, newRow * is appended as the last row in the table. If index is less than 0, the * new row is inserted before the -index-th row from the bottom of the * table. (So, for instance, if index is -2, the new row is inserted * before the next-to-last current row.) * * @param index * Index before which to insert newRow, where 0 represents the * first row. Negative numbers are used to count backwards from * the current last row. * @param newRow * A MathMLTableRowElement or MathMLLabeledRowElement * representing the row to be inserted. * @return The MathMLTableRowElement or MathMLLabeledRowElement child of * this MathMLTableElement representing the mtr element being * inserted. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newRow is not a * MathMLTableRowElement or MathMLLabeledRowElement. * INDEX_SIZE_ERR: Raised if index is greater than the current * number of rows or less than minus the current number of * rows of this mtable element. */ MathMLTableRowElement insertRow(long index, MathMLTableRowElement newRow) throws DOMException; /** * A method to set the value of the row in the table at the specified * index to the mtr or mlabeledtr represented by newRow. If index is less * than 0, the -index-th row counting up from the last is replaced by * newRow; if index is one more than the current number of rows, the new * row is appended as the last row in the table. * * @param index * Index of the row to be set to newRow, where 0 represents the * first row. Negative numbers are used to count backwards from * the last row. * @param newRow * A MathMLTableRowElement representing the row that is to be * the new index-th row. * @return Returns the MathMLTableRowElement or MathMLLabeledRowElement * child of this element that represents the new row in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newRow is not a * MathMLTableRowElement or MathMLLabeledRowElement. * INDEX_SIZE_ERR: Raised if index is greater than the current * number of rows of this mtable element or less than minus * this number. */ MathMLTableRowElement setRow(long index, MathMLTableRowElement newRow) throws DOMException; /** * A convenience method to delete the row of the table at the specified * index. If index is less than 0, the -index-th row from the bottom of * the table is deleted. (So, for instance, if index is -2, the * next-to-last row is deleted.) * * @param index * Index of row to be deleted, where 0 represents the first * row. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than or equal to * the current number of rows of this mtable element or less * than minus this number. */ void deleteRow(long index) throws DOMException; /** * A convenience method to delete the row of the table at the specified * index and return it to the caller. If index is less than 0, the * -index-th row from the bottom of the table is deleted. (So, for * instance, if index is -2, the next-to-last row is deleted.) * * @param index * Index of row to be removed, where 0 represents the first * row. * @return A MathMLTableRowElement representing the row being deleted. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than or equal to * the number of rows of this mtable element or less than * minus this number. */ MathMLTableRowElement removeRow(long index) throws DOMException; }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLConditionElement.java0000644000175000017500000000264111335260530033010 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The condition element is used to place a condition on one or more free * variables or identifiers. * * */ public interface MathMLConditionElement extends MathMLContentElement { /** * A MathMLApplyElement that represents the condition. * * @return value of the condition attribute. */ MathMLApplyElement getCondition(); /** * setter for the condition attribute. * * @param condition * new value for condition. * @see #getCondition() */ void setCondition(MathMLApplyElement condition); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLCaseElement.java0000644000175000017500000000447511335260530031744 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The piece element represents one of a sequence of cases used in the * piecewise definition of a function. It contains two child elements, each * represented by a MathMLContentElement. The first child determines the * subset of the domain affected, normally by giving a condition to be * satisfied. The second gives the value of the function over the indicated * subset of its domain. * */ public interface MathMLCaseElement extends MathMLContentElement { /** * Accesses the MathMLContentElement representing the condition to be * satisfied in order for this branch of the piecewise definition to be * used. * * @return value of the caseCondition attribute. */ MathMLContentElement getCaseCondition(); /** * setter for the caseCondition attribute. * * @param caseCondition * new value for caseCondition. * @see #getCaseCondition() */ void setCaseCondition(MathMLContentElement caseCondition); /** * Accesses the MathMLContentElement representing the value to be taken by * the piecewise function when the condition described by caseCondition is * true. * * @return value of the caseValue attribute. */ MathMLContentElement getCaseValue(); /** * setter for the caseValue attribute. * * @param caseValue * new value for caseValue. * @see #getCaseValue() */ void setCaseValue(MathMLContentElement caseValue); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLEncloseElement.java0000644000175000017500000000332211335260530032447 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface supports the menclose element . * * */ public interface MathMLEncloseElement extends MathMLPresentationContainer { /** * A string giving a name for the notation enclosing the element's * contents. Represents the notation attribute of the menclose. Any string * is allowed as a value; predefined values include longdiv, actuarial, * radical, box, roundedbox, circle, left, right, top, bottom, * updiagonalstrike, downdiagonalstrike, verticalstrike, horizontalstrike, * or combinations of these strings separated by whitespace (see ). * * @return value of the notation attribute. */ String getNotation(); /** * setter for the notation attribute. * * @param notation * new value for notation. * @see #getNotation() */ void setNotation(String notation); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLFractionElement.java0000644000175000017500000000711611335260530032631 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML fraction element mfrac. * * */ public interface MathMLFractionElement extends MathMLPresentationElement { /** * A string representing the linethickness attribute of the mfrac, if * specified. * * @return value of the linethickness attribute. */ String getLinethickness(); /** * setter for the linethickness attribute. * * @param linethickness * new value for linethickness. * @see #getLinethickness() */ void setLinethickness(String linethickness); /** * One of the strings left, center and right. Represents the numalign * attribute of the mfrac, if specified. * * @return value of the numalign attribute. */ String getNumalign(); /** * setter for the numalign attribute. * * @param numalign * new value for numalign. * @see #getNumalign() */ void setNumalign(String numalign); /** * One of the strings left, center and right. Represents the denomalign * attribute of the mfrac, if specified. * * @return value of the denomalign attribute. */ String getDenomalign(); /** * setter for the denomalign attribute. * * @param denomalign * new value for denomalign. * @see #getDenomalign() */ void setDenomalign(String denomalign); /** * One of the strings true and false. Represents the bevelled attribute of * the mfrac, if specified. * * @return value of the bevelled attribute. */ String getBevelled(); /** * setter for the bevelled attribute. * * @param bevelled * new value for bevelled. * @see #getBevelled() */ void setBevelled(String bevelled); /** * The first child MathMLElement of the MathMLFractionElement; represents * the numerator of the represented fraction. * * @return value of the numerator attribute. */ MathMLElement getNumerator(); /** * setter for the numerator attribute. * * @param numerator * new value for numerator. * @see #getNumerator() */ void setNumerator(MathMLElement numerator); /** * The second child MathMLElement of the MathMLFractionElement; represents * the denominator of the represented fraction. * * @return value of the denominator attribute. */ MathMLElement getDenominator(); /** * setter for the denominator attribute. * * @param denominator * new value for denominator. * @see #getDenominator() */ void setDenominator(MathMLElement denominator); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLBvarElement.java0000644000175000017500000000224311335260530031752 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface represents the MathML bound variable element bvar. The * interface currently provides no functionality beyond that of * MathMLContentContainer, but is useful for defining the type of bound * variable access functions. * * */ public interface MathMLBvarElement extends MathMLContentContainer { }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLSpaceElement.java0000644000175000017500000000554111335260530032117 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML space element mspace. Note that this is not derived from * MathMLPresentationToken, despite the fact that mspace is classified as a * token element, since it does not carry the attributes declared for * MathMLPresentationToken. * * */ public interface MathMLSpaceElement extends MathMLPresentationElement { /** * A string of the form number h-unit; represents the width attribute for * the mspace element, if specified. * * @return value of the width attribute. */ String getWidth(); /** * setter for the width attribute. * * @param width * new value for width. * @see #getWidth() */ void setWidth(String width); /** * A string of the form number v-unit; represents the height attribute for * the mspace element, if specified. * * @return value of the height attribute. */ String getHeight(); /** * setter for the height attribute. * * @param height * new value for height. * @see #getHeight() */ void setHeight(String height); /** * A string of the form number v-unit; represents the depth attribute for * the mspace element, if specified. * * @return value of the depth attribute. */ String getDepth(); /** * setter for the depth attribute. * * @param depth * new value for depth. * @see #getDepth() */ void setDepth(String depth); /** * One of the strings auto, newline, indentingnewline, nobreak, goodbreak * and badbreak. This attribute gives a linebreaking hint to the renderer. * * @return value of the linebreak attribute. */ String getLinebreak(); /** * setter for the linebreak attribute. * * @param linebreak * new value for linebreak. * @see #getLinebreak() */ void setLinebreak(String linebreak); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLAlignGroupElement.java0000644000175000017500000000305111335260530033125 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML group -alignment element maligngroup. * * */ public interface MathMLAlignGroupElement extends MathMLPresentationElement { /** * A string specifying how the alignment group is to be aligned with other * alignment groups above or below it. Allowed values are left, right, * center, or decimalpoint. * * @return value of the groupalign attribute. */ String getGroupalign(); /** * setter for the groupalign attribute. * * @param groupalign * new value for groupalign. * @see #getGroupalign() */ void setGroupalign(String groupalign); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLActionElement.java0000644000175000017500000000357211335260530032303 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationContainer interface for the * MathML enlivening expression element maction. * * */ public interface MathMLActionElement extends MathMLPresentationContainer { /** * A string specifying the action. Possible values include toggle, * statusline, tooltip, and highlight, and menu. * * @return value of the actiontype attribute. */ String getActiontype(); /** * setter for the actiontype attribute. * * @param actiontype * new value for actiontype. * @see #getActiontype() */ void setActiontype(String actiontype); /** * A string specifying an integer that selects the current subject of the * action. * * @return value of the selection attribute. */ String getSelection(); /** * setter for the selection attribute. * * @param selection * new value for selection. * @see #getSelection() */ void setSelection(String selection); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLDocument.java0000644000175000017500000000430611335260530031326 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.Document; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the Document interface to add access to document * properties relating to navigation. The documentElement attribute for a * MathMLDocument should be the MathMLMathElement representing the top-level * math element which is the root of the document. * */ public interface MathMLDocument extends Document { /** * The URI of the page that linked to this document, if available. This is * null if the user navigated directly to the page. If this is not a * stand-alone MathML document (e.g. is embedded in an XHTML document), * this may be retrieved from the parent Document if available. * * @return value of the referrer attribute. */ String getReferrer(); /** * The domain name of the server that served the document, or null if the * server cannot be identified by a domain name, or if it is not * available. If this is not a stand-alone MathML document (e.g. is * embedded in an XHTML document), this may be retrieved from the parent * Document if available. * * @return value of the domain attribute. */ String getDomain(); /** * The complete URI of this document. This is null if this is not a * stand-alone MathML document. * * @return value of the URI attribute. */ String getURI(); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLGlyphElement.java0000644000175000017500000000401411335260530032141 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface supports the mglyph element . * * */ public interface MathMLGlyphElement extends MathMLPresentationElement { /** * A string giving an alternate name for the character. Represents the * mglyph's alt attribute. * * @return value of the alt attribute. */ String getAlt(); /** * setter for the alt attribute. * * @param alt * new value for alt. * @see #getAlt() */ void setAlt(String alt); /** * A string representing the font family. * * @return value of the fontfamily attribute. */ String getFontfamily(); /** * setter for the fontfamily attribute. * * @param fontfamily * new value for fontfamily. * @see #getFontfamily() */ void setFontfamily(String fontfamily); /** * An unsigned integer giving the glyph's position within the font. * * @return value of the index attribute. */ int getIndex(); /** * setter for the index attribute. * * @param index * new value for index. * @see #getIndex() */ void setIndex(int index); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLContentContainer.java0000644000175000017500000002131711335260530033026 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface supports the MathML Content elements that may contain child * Content elements. The elements directly supported by MathMLContentContainer * include: reln (deprecated), lambda, lowlimit, uplimit, degree, * domainofapplication, and momentabout. Interfaces derived from * MathMLContentContainer support the elements apply, fn, interval, condition, * declare, bvar, set, list, vector, matrix, and matrixrow. * * */ public interface MathMLContentContainer extends MathMLContentElement, MathMLContainer { /** * The number of bvar child elements of this element. * * @return value of the nBoundVariables attribute. */ int getNBoundVariables(); /** * This attribute represents the condition child element of this node. See . * * @return value of the condition attribute. */ MathMLConditionElement getCondition(); /** * setter for the condition attribute. * * @param condition * new value for condition. * @see #getCondition() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child condition element. In particular, raised if * this element is not a apply, set, or list. */ void setCondition(MathMLConditionElement condition); /** * This attribute represents the degree child element of this node. This * expresses, for instance, the degree of differentiation if this element * is a bvar child of an apply element whose first child is a diff or * partialdiff. If this is an apply element whose first child is a * partialdiff, the opDegree attribute, if present, represents the total * degree of differentiation. See . * * @return value of the opDegree attribute. */ MathMLElement getOpDegree(); /** * setter for the opDegree attribute. * * @param opDegree * new value for opDegree. * @see #getOpDegree() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child degree element. In particular, raised if * this element is not a bvar or apply. */ void setOpDegree(MathMLElement opDegree); /** * This attribute represents the domainofapplication child element of this * node, if present. This may express, for instance, the domain of * integration if this element is an apply element whose first child is an * integral operator (int). See . * * @return value of the domainOfApplication attribute. */ MathMLElement getDomainOfApplication(); /** * setter for the domainOfApplication attribute. * * @param domainOfApplication * new value for domainOfApplication. * @see #getDomainOfApplication() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child domainofapplication element. */ void setDomainOfApplication(MathMLElement domainOfApplication); /** * This attribute represents the momentabout child element of this node, * if present. This typically expresses the point about which a * statistical moment is to be calculated, if this element is an apply * element whose first child is a moment. See . * * @return value of the momentAbout attribute. */ MathMLElement getMomentAbout(); /** * setter for the momentAbout attribute. * * @param momentAbout * new value for momentAbout. * @see #getMomentAbout() * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit a child momentabout element. In particular, raised * if this element is not an apply whose first child is a * moment. */ void setMomentAbout(MathMLElement momentAbout); /** * This method retrieves the index-th MathMLBvarElement child of the * MathMLElement. Note that only bvar child elements are counted in * determining the index-th bound variable. * * @param index * The one-based index into the bound variable children of this * element of the MathMLBvarElement to be retrieved. * @return The MathMLBvarElement representing the index-th bvar child of * this element. */ MathMLBvarElement getBoundVariable(int index); /** * This method inserts a MathMLBvarElement as a child node before the * current index-th bound variable child of this MathMLElement. If index * is 0, newBVar is appended as the last bound variable child. This has * the effect of adding a bound variable to the expression this element * represents. Note that the new bound variable is inserted as the * index-th bvar child node, not necessarily as the index-th child node. * The point of the method is to allow insertion of bound variables * without requiring the caller to calculate the exact order of child * qualifier elements. * * @param newBVar * A MathMLBvarElement representing the bvar element being * added. * @param index * The one-based index into the bound variable children of this * element before which newBVar is to be inserted. * @return The MathMLBvarElement being added. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit child bvar elements. */ MathMLBvarElement insertBoundVariable(MathMLBvarElement newBVar, int index) throws DOMException; /** * This method sets the index-th bound variable child of this * MathMLElement to newBVar. This has the effect of setting a bound * variable in the expression this element represents. Note that the new * bound variable is inserted as the index-th bvar child node, not * necessarily as the index-th child node. The point of the method is to * allow insertion of bound variables without requiring the caller to * calculate the exact order of child qualifier elements. If there is * already a bvar at the index-th position, it is replaced by newBVar. * * @param newBVar * The new MathMLBvarElement child of this element being set. * @param index * The one-based index into the bound variable children of this * element at which newBVar is to be inserted. * @return The MathMLBvarElement being set. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if this element does not * permit child bvar elements. */ MathMLBvarElement setBoundVariable(MathMLBvarElement newBVar, int index) throws DOMException; /** * This method deletes the index-th MathMLBvarElement child of the * MathMLElement. This has the effect of removing this bound variable from * the list of qualifiers affecting the element this represents. * * @param index * The one-based index into the bound variable children of this * element of the MathMLBvarElement to be removed. */ void deleteBoundVariable(int index); /** * This method removes the index-th MathMLBvarElement child of the * MathMLElement and returns it to the caller. This has the effect of * removing this bound variable from the list of qualifiers affecting the * element this represents. * * @param index * The one-based index into the bound variable children of this * element of the MathMLBvarElement to be removed. * @return The MathMLBvarElement being removed. */ MathMLBvarElement removeBoundVariable(int index); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLLambdaElement.java0000644000175000017500000000306311335260530032241 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The lambda element is used to construct a user-defined function from an * expression and one or more free variables. * * */ public interface MathMLLambdaElement extends MathMLContentContainer { /** * The MathMLElement representing the expression. This is included only as * a convenience; getting it should give the same result as * MathMLContentContainer::getArgument(1). * * @return value of the expression attribute. */ MathMLElement getExpression(); /** * setter for the expression attribute. * * @param expression * new value for expression. * @see #getExpression() */ void setExpression(MathMLElement expression); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLStyleElement.java0000644000175000017500000003031011335260530032154 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLElement interface for the MathML style * element mstyle. While the mstyle element may contain any attributes * allowable on any MathML presentation element, only attributes specific to * the mstyle element are included in the interface below. Other attributes * should be accessed using the methods on the base Element class, * particularly the Element::getAttribute and Element::setAttribute methods, * or even the Node::attributes attribute to access all of them at once. Not * only does this obviate a lengthy list below, but it seems likely that most * implementations will find this a considerably more useful interface to a * MathMLStyleElement. * * */ public interface MathMLStyleElement extends MathMLPresentationContainer { /** * A string of the form +/- unsigned integer; represents the scriptlevel * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the scriptlevel attribute. */ String getScriptlevel(); /** * setter for the scriptlevel attribute. * * @param scriptlevel * new value for scriptlevel. * @see #getScriptlevel() */ void setScriptlevel(String scriptlevel); /** * Either true or false; a string representing the displaystyle attribute * for the mstyle element, if specified. See also the discussion of this * attribute. * * @return value of the displaystyle attribute. */ String getDisplaystyle(); /** * setter for the displaystyle attribute. * * @param displaystyle * new value for displaystyle. * @see #getDisplaystyle() */ void setDisplaystyle(String displaystyle); /** * A string of the form number; represents the scriptsizemultiplier * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the scriptsizemultiplier attribute. */ String getScriptsizemultiplier(); /** * setter for the scriptsizemultiplier attribute. * * @param scriptsizemultiplier * new value for scriptsizemultiplier. * @see #getScriptsizemultiplier() */ void setScriptsizemultiplier(String scriptsizemultiplier); /** * A string of the form number v-unit; represents the scriptminsize * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the scriptminsize attribute. */ String getScriptminsize(); /** * setter for the scriptminsize attribute. * * @param scriptminsize * new value for scriptminsize. * @see #getScriptminsize() */ void setScriptminsize(String scriptminsize); /** * A string representation of a color or the string transparent; * represents the background attribute for the mstyle element, if * specified. See also the discussion of this attribute. * * @return value of the background attribute. */ String getBackground(); /** * setter for the background attribute. * * @param background * new value for background. * @see #getBackground() */ void setBackground(String background); /** * A string of the form number h-unit; represents the * veryverythinmathspace attribute for the mstyle element, if specified. * See also the discussion of this attribute. * * @return value of the veryverythinmathspace attribute. */ String getVeryverythinmathspace(); /** * setter for the veryverythinmathspace attribute. * * @param veryverythinmathspace * new value for veryverythinmathspace. * @see #getVeryverythinmathspace() */ void setVeryverythinmathspace(String veryverythinmathspace); /** * A string of the form number h-unit; represents the verythinmathspace * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the verythinmathspace attribute. */ String getVerythinmathspace(); /** * setter for the verythinmathspace attribute. * * @param verythinmathspace * new value for verythinmathspace. * @see #getVerythinmathspace() */ void setVerythinmathspace(String verythinmathspace); /** * A string of the form number h-unit; represents the thinmathspace * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the thinmathspace attribute. */ String getThinmathspace(); /** * setter for the thinmathspace attribute. * * @param thinmathspace * new value for thinmathspace. * @see #getThinmathspace() */ void setThinmathspace(String thinmathspace); /** * A string of the form number h-unit; represents the mediummathspace * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the mediummathspace attribute. */ String getMediummathspace(); /** * setter for the mediummathspace attribute. * * @param mediummathspace * new value for mediummathspace. * @see #getMediummathspace() */ void setMediummathspace(String mediummathspace); /** * A string of the form number h-unit; represents the thickmathspace * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the thickmathspace attribute. */ String getThickmathspace(); /** * setter for the thickmathspace attribute. * * @param thickmathspace * new value for thickmathspace. * @see #getThickmathspace() */ void setThickmathspace(String thickmathspace); /** * A string of the form number h-unit; represents the verythickmathspace * attribute for the mstyle element, if specified. See also the discussion * of this attribute. * * @return value of the verythickmathspace attribute. */ String getVerythickmathspace(); /** * setter for the verythickmathspace attribute. * * @param verythickmathspace * new value for verythickmathspace. * @see #getVerythickmathspace() */ void setVerythickmathspace(String verythickmathspace); /** * A string of the form number h-unit; represents the * veryverythickmathspace attribute for the mstyle element, if specified. * See also the discussion of this attribute. * * @return value of the veryverythickmathspace attribute. */ String getVeryverythickmathspace(); /** * setter for the veryverythickmathspace attribute. * * @param veryverythickmathspace * new value for veryverythickmathspace. * @see #getVeryverythickmathspace() */ void setVeryverythickmathspace(String veryverythickmathspace); /** * A string of the form number h-unit; represents the * negativeveryverythinmathspace attribute for the mstyle element, if * specified. See also the discussion of this attribute. * * @return value of the negativeveryverythinmathspace attribute. */ String getNegativeveryverythinmathspace(); /** * setter for the negativeveryverythinmathspace attribute. * * @param negativeveryverythinmathspace * new value for negativeveryverythinmathspace. * @see #getNegativeveryverythinmathspace() */ void setNegativeveryverythinmathspace(String negativeveryverythinmathspace); /** * A string of the form number h-unit; represents the * negativeverythinmathspace attribute for the mstyle element, if * specified. See also the discussion of this attribute. * * @return value of the negativeverythinmathspace attribute. */ String getNegativeverythinmathspace(); /** * setter for the negativeverythinmathspace attribute. * * @param negativeverythinmathspace * new value for negativeverythinmathspace. * @see #getNegativeverythinmathspace() */ void setNegativeverythinmathspace(String negativeverythinmathspace); /** * A string of the form number h-unit; represents the * negativethinmathspace attribute for the mstyle element, if specified. * See also the discussion of this attribute. * * @return value of the negativethinmathspace attribute. */ String getNegativethinmathspace(); /** * setter for the negativethinmathspace attribute. * * @param negativethinmathspace * new value for negativethinmathspace. * @see #getNegativethinmathspace() */ void setNegativethinmathspace(String negativethinmathspace); /** * A string of the form number h-unit; represents the * negativemediummathspace attribute for the mstyle element, if specified. * See also the discussion of this attribute. * * @return value of the negativemediummathspace attribute. */ String getNegativemediummathspace(); /** * setter for the negativemediummathspace attribute. * * @param negativemediummathspace * new value for negativemediummathspace. * @see #getNegativemediummathspace() */ void setNegativemediummathspace(String negativemediummathspace); /** * A string of the form number h-unit; represents the * negativethickmathspace attribute for the mstyle element, if specified. * See also the discussion of this attribute. * * @return value of the negativethickmathspace attribute. */ String getNegativethickmathspace(); /** * setter for the negativethickmathspace attribute. * * @param negativethickmathspace * new value for negativethickmathspace. * @see #getNegativethickmathspace() */ void setNegativethickmathspace(String negativethickmathspace); /** * A string of the form number h-unit; represents the * negativeverythickmathspace attribute for the mstyle element, if * specified. See also the discussion of this attribute. * * @return value of the negativeverythickmathspace attribute. */ String getNegativeverythickmathspace(); /** * setter for the negativeverythickmathspace attribute. * * @param negativeverythickmathspace * new value for negativeverythickmathspace. * @see #getNegativeverythickmathspace() */ void setNegativeverythickmathspace(String negativeverythickmathspace); /** * A string of the form number h-unit; represents the * negativeveryverythickmathspace attribute for the mstyle element, if * specified. See also the discussion of this attribute. * * @return value of the negativeveryverythickmathspace attribute. */ String getNegativeveryverythickmathspace(); /** * setter for the negativeveryverythickmathspace attribute. * * @param negativeveryverythickmathspace * new value for negativeveryverythickmathspace. * @see #getNegativeveryverythickmathspace() */ void setNegativeveryverythickmathspace( String negativeveryverythickmathspace); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLListElement.java0000644000175000017500000000333411335260530031775 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The list element is the container element which represents a list of * elements. Elements can be defined either by explicitly listing the * elements, or by using the bvar and condition elements. * * */ public interface MathMLListElement extends MathMLContentContainer { /** * This is true if the list is specified by giving its elements * explicitly. * * @return value of the isExplicit attribute. */ boolean getIsExplicit(); /** * The order attribute of the represented element. Predefined values are * numeric and lexicographic. See and . * * @return value of the ordering attribute. */ String getOrdering(); /** * setter for the ordering attribute. * * @param ordering * new value for ordering. * @see #getOrdering() */ void setOrdering(String ordering); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLPaddedElement.java0000644000175000017500000000533411335260530032245 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLElement interface for the MathML spacing * adjustment element mpadded. * * */ public interface MathMLPaddedElement extends MathMLPresentationContainer { /** * A string representing the total width of the mpadded element, if * specified. See also the discussion of this attribute. * * @return value of the width attribute. */ String getWidth(); /** * setter for the width attribute. * * @param width * new value for width. * @see #getWidth() */ void setWidth(String width); /** * A string representing the lspace attribute - the additional space to * the left - of the mpadded element, if specified. See also the * discussion of this attribute. * * @return value of the lspace attribute. */ String getLspace(); /** * setter for the lspace attribute. * * @param lspace * new value for lspace. * @see #getLspace() */ void setLspace(String lspace); /** * A string representing the height above the baseline of the mpadded * element, if specified. See also the discussion of this attribute. * * @return value of the height attribute. */ String getHeight(); /** * setter for the height attribute. * * @param height * new value for height. * @see #getHeight() */ void setHeight(String height); /** * A string representing the depth beneath the baseline of the mpadded * element, if specified. See also the discussion of this attribute. * * @return value of the depth attribute. */ String getDepth(); /** * setter for the depth attribute. * * @param depth * new value for depth. * @see #getDepth() */ void setDepth(String depth); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLRadicalElement.java0000644000175000017500000000366611335260530032431 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML radical and square root elements mroot and msqrt. * * */ public interface MathMLRadicalElement extends MathMLPresentationElement { /** * The first child MathMLElement of the MathMLRadicalElement; represents * the base of the represented radical. * * @return value of the radicand attribute. */ MathMLElement getRadicand(); /** * setter for the radicand attribute. * * @param radicand * new value for radicand. * @see #getRadicand() */ void setRadicand(MathMLElement radicand); /** * The second child MathMLElement of the MathMLRadicalElement; represents * the index of the represented radical. This must be null for msqrt * elements. * * @return value of the index attribute. */ MathMLElement getIndex(); /** * setter for the index attribute. * * @param index * new value for index. * @see #getIndex() */ void setIndex(MathMLElement index); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLFnElement.java0000644000175000017500000000374111335260530031427 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The fn element makes explicit the fact that a more general MathML object is * intended to be used in the same manner as if it were a pre-defined function * such as sin or plus. * * */ public interface MathMLFnElement extends MathMLContentContainer { /** * A URI pointing to a definition for this function-type element. Note * that there is no stipulation about the form this definition may take! * * @return value of the definitionURL attribute. */ String getDefinitionURL(); /** * setter for the definitionURL attribute. * * @param definitionURL * new value for definitionURL. * @see #getDefinitionURL() */ void setDefinitionURL(String definitionURL); /** * A string describing the syntax in which the definition located at * definitionURL is given. * * @return value of the encoding attribute. */ String getEncoding(); /** * setter for the encoding attribute. * * @param encoding * new value for encoding. * @see #getEncoding() */ void setEncoding(String encoding); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLOperatorElement.java0000644000175000017500000001260211335260530032653 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationToken interface for the MathML * operator element mo. * * */ public interface MathMLOperatorElement extends MathMLPresentationToken { /** * The form attribute (prefix, infix or postfix) for the mo element, if * specified. * * @return value of the form attribute. */ String getForm(); /** * setter for the form attribute. * * @param form * new value for form. * @see #getForm() */ void setForm(String form); /** * The fence attribute (true or false) for the mo element, if specified. * * @return value of the fence attribute. */ String getFence(); /** * setter for the fence attribute. * * @param fence * new value for fence. * @see #getFence() */ void setFence(String fence); /** * The separator attribute (true or false) for the mo element, if * specified. * * @return value of the separator attribute. */ String getSeparator(); /** * setter for the separator attribute. * * @param separator * new value for separator. * @see #getSeparator() */ void setSeparator(String separator); /** * The lspace attribute (spacing to left) of the mo element, if specified. * * @return value of the lspace attribute. */ String getLspace(); /** * setter for the lspace attribute. * * @param lspace * new value for lspace. * @see #getLspace() */ void setLspace(String lspace); /** * The rspace attribute (spacing to right) of the mo element, if * specified. * * @return value of the rspace attribute. */ String getRspace(); /** * setter for the rspace attribute. * * @param rspace * new value for rspace. * @see #getRspace() */ void setRspace(String rspace); /** * The stretchy attribute (true or false) for the mo element, if * specified. * * @return value of the stretchy attribute. */ String getStretchy(); /** * setter for the stretchy attribute. * * @param stretchy * new value for stretchy. * @see #getStretchy() */ void setStretchy(String stretchy); /** * The symmetric attribute (true or false) for the mo element, if * specified. * * @return value of the symmetric attribute. */ String getSymmetric(); /** * setter for the symmetric attribute. * * @param symmetric * new value for symmetric. * @see #getSymmetric() */ void setSymmetric(String symmetric); /** * The maxsize attribute for the mo element, if specified. * * @return value of the maxsize attribute. */ String getMaxsize(); /** * setter for the maxsize attribute. * * @param maxsize * new value for maxsize. * @see #getMaxsize() */ void setMaxsize(String maxsize); /** * The minsize attribute for the mo element, if specified. * * @return value of the minsize attribute. */ String getMinsize(); /** * setter for the minsize attribute. * * @param minsize * new value for minsize. * @see #getMinsize() */ void setMinsize(String minsize); /** * The largeop attribute for the mo element, if specified. * * @return value of the largeop attribute. */ String getLargeop(); /** * setter for the largeop attribute. * * @param largeop * new value for largeop. * @see #getLargeop() */ void setLargeop(String largeop); /** * The movablelimits (true or false) attribute for the mo element, if * specified. * * @return value of the movablelimits attribute. */ String getMovablelimits(); /** * setter for the movablelimits attribute. * * @param movablelimits * new value for movablelimits. * @see #getMovablelimits() */ void setMovablelimits(String movablelimits); /** * The accent attribute (true or false) for the mo element, if specified. * * @return value of the accent attribute. */ String getAccent(); /** * setter for the accent attribute. * * @param accent * new value for accent. * @see #getAccent() */ void setAccent(String accent); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLSemanticsElement.java0000644000175000017500000001322611335260530033011 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface represents the semantics element in MathML. * */ public interface MathMLSemanticsElement extends MathMLElement { /** * This attribute represents the first child of the semantics element, * i.e. the child giving the primary content represented by the element. * * @return value of the body attribute. */ MathMLElement getBody(); /** * setter for the body attribute. * * @param body * new value for body. * @see #getBody() */ void setBody(MathMLElement body); /** * Represents the number of annotation or annotation-xml children of the * semantics element, i.e. the number of alternate content forms for this * element. * * @return value of the nAnnotations attribute. */ int getNAnnotations(); /** * This method gives access to the index-th alternate content associated * with a semantics element. * * @param index * The one-based index of the annotation being retrieved. * @return The MathMLAnnotationElement or MathMLXMLAnnotationElement * representing the index-th annotation or annotation-xml child of * the semantics element. Note that all child elements of a * semantics element other than the first are required to be of * one of these types. */ MathMLElement getAnnotation(int index); /** * This method inserts newAnnotation before the current index-th alternate * content associated with a semantics element. If index is 0, * newAnnotation is appended as the last annotation or annotation-xml * child of this element. * * @param newAnnotation * A MathMLAnnotationElement or MathMLXMLAnnotationElement * representing the new annotation or annotation-xml to be * inserted. * @param index * The position in the list of annotation or annotation-xml * children before which newAnnotation is to be inserted. The * first annotation is numbered 1. * @return The MathMLAnnotationElement or MathMLXMLAnnotationElement child * of this element that represents the new annotation in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newAnnotation is not a * MathMLAnnotationElement or MathMLXMLAnnotationElement. * INDEX_SIZE_ERR: Raised if index is greater than the current * number of annotation or annotation-xml children of this * semantics element. */ MathMLElement insertAnnotation(MathMLElement newAnnotation, int index) throws DOMException; /** * This method allows setting or replacement of the index-th alternate * content associated with a semantics element. If there is already an * annotation or annotation-xml element with this index, it is replaced by * newAnnotation. * * @param newAnnotation * A MathMLAnnotationElement or MathMLXMLAnnotationElement * representing the new value of the index-th annotation or * annotation-xml child of this semantics element. * @param index * The position in the list of annotation or annotation-xml * children of this semantics element that is to be occupied by * newAnnotation. The first annotation element is numbered 1. * @return The MathMLAnnotationElement or MathMLXMLAnnotationElement child * of this element that represents the new annotation in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newAnnotation is not a * MathMLAnnotationElement or MathMLXMLAnnotationElement. * INDEX_SIZE_ERR: Raised if index is greater than one more * than the current number of annotation or annotation-xml * children of this semantics element. */ MathMLElement setAnnotation(MathMLElement newAnnotation, int index) throws DOMException; /** * A convenience method to delete the index-th alternate content * associated with this semantics element. * * @param index * The one-based index of the annotation being deleted. */ void deleteAnnotation(int index); /** * A convenience method to delete the index-th alternate content * associated with this semantics element, and to return it to the caller. * * @param index * The one-based index of the annotation being deleted. * @return The MathMLAnnotationElement or MathMLXMLAnnotationElement being * deleted. */ MathMLElement removeAnnotation(int index); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLStringLitElement.java0000644000175000017500000000356511335260530033007 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationToken interface for the MathML * string literal element ms. * * */ public interface MathMLStringLitElement extends MathMLPresentationToken { /** * A string giving the opening delimiter for the string literal; * represents the lquote attribute for the ms element, if specified. * * @return value of the lquote attribute. */ String getLquote(); /** * setter for the lquote attribute. * * @param lquote * new value for lquote. * @see #getLquote() */ void setLquote(String lquote); /** * A string giving the closing delimiter for the string literal; * represents the rquote attribute for the ms element, if specified. * * @return value of the rquote attribute. */ String getRquote(); /** * setter for the rquote attribute. * * @param rquote * new value for rquote. * @see #getRquote() */ void setRquote(String rquote); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLFencedElement.java0000644000175000017500000000443611335260530032252 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationContainer interface for the * MathML fenced content element mfenced. * * */ public interface MathMLFencedElement extends MathMLPresentationContainer { /** * A string representing the opening-fence for the mfenced element, if * specified; this is the element's open attribute. * * @return value of the open attribute. */ String getOpen(); /** * setter for the open attribute. * * @param open * new value for open. * @see #getOpen() */ void setOpen(String open); /** * A string representing the closing-fence for the mfenced element, if * specified; this is the element's close attribute. * * @return value of the close attribute. */ String getClose(); /** * setter for the close attribute. * * @param close * new value for close. * @see #getClose() */ void setClose(String close); /** * A string representing any separating characters inside the mfenced * element, if specified; this is the element's separators attribute. * * @return value of the separators attribute. */ String getSeparators(); /** * setter for the separators attribute. * * @param separators * new value for separators. * @see #getSeparators() */ void setSeparators(String separators); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLLabeledRowElement.java0000644000175000017500000000351311335260530033101 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLTableRowElement interface to represent the * mlabeledtr element . Note that the presence of a label causes the indexth * child node to differ from the index-th cell! * * */ public interface MathMLLabeledRowElement extends MathMLTableRowElement { /** * A MathMLElement representing the label of this row. Note that * retrieving this should have the same effect as a call to * Node::getfirstChild(), while setting it should have the same effect as * Node::replaceChild(Node::getfirstChild()). * * @return value of the label attribute. */ MathMLElement getLabel(); /** * setter for the label attribute. * * @param label * new value for label. * @see #getLabel() * @throws DOMException * NO_MODIFICATION_ALLOWED_ERR: Raised if this MathMLElement * or the new MathMLElement is read-only. */ void setLabel(MathMLElement label); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLCnElement.java0000644000175000017500000000362611335260530031426 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The cn element is used to specify actual numeric constants. * * */ public interface MathMLCnElement extends MathMLContentToken { /** * Values include, but are not restricted to, e-notation, integer, * rational, real, float, complex, complex-polar, complex-cartesian, and * constant. * * @return value of the type attribute. */ String getType(); /** * setter for the type attribute. * * @param type * new value for type. * @see #getType() */ void setType(String type); /** * A string representing an integer between 2 and 36; the base of the * numerical representation. * * @return value of the base attribute. */ String getBase(); /** * setter for the base attribute. * * @param base * new value for base. * @see #getBase() */ void setBase(String base); /** * The number of sep-separated arguments. * * @return value of the nargs attribute. */ int getNargs(); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLMultiScriptsElement.java0000644000175000017500000004007411335260530033526 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLPresentationElement interface for the * MathML multiscripts (including prescripts or tensors) element * mmultiscripts. * * */ public interface MathMLMultiScriptsElement extends MathMLPresentationElement { /** * A string representing the minimum amount to shift the baseline of the * subscripts down, if specified; this is the element's subscriptshift * attribute. * * @return value of the subscriptshift attribute. */ String getSubscriptshift(); /** * setter for the subscriptshift attribute. * * @param subscriptshift * new value for subscriptshift. * @see #getSubscriptshift() */ void setSubscriptshift(String subscriptshift); /** * A string representing the minimum amount to shift the baseline of the * superscripts up, if specified; this is the element's superscriptshift * attribute. * * @return value of the superscriptshift attribute. */ String getSuperscriptshift(); /** * setter for the superscriptshift attribute. * * @param superscriptshift * new value for superscriptshift. * @see #getSuperscriptshift() */ void setSuperscriptshift(String superscriptshift); /** * A MathMLElement representing the base of the script. This is the first * child of the element. * * @return value of the base attribute. */ MathMLElement getBase(); /** * setter for the base attribute. * * @param base * new value for base. * @see #getBase() */ void setBase(MathMLElement base); /** * A NodeList representing the prescripts of the script, which appear in * the order described by the expression (prescript presuperscript)*. This * is the same as traversing the contents of the NodeList returned by * Node::childNodes() from the Node following the mprescripts (if present) * to the end of the list. * * @return value of the prescripts attribute. */ MathMLNodeList getPrescripts(); /** * A MathMLNodeList representing the scripts of the script, which appear * in the order described by the expression (script superscript)*. This is * the same as traversing the contents of the NodeList returned by * Node::childNodes() from the first Node up to and including the Node * preceding the mprescripts (if present). * * @return value of the scripts attribute. */ MathMLNodeList getScripts(); /** * The number of script/subscript columns preceding (to the left of) the * base. Should always be half of getprescripts().length() * * @return value of the numprescriptcolumns attribute. */ int getNumprescriptcolumns(); /** * The number of script/subscript columns following (to the right of) the * base. Should always be half of getscripts().length() * * @return value of the numscriptcolumns attribute. */ int getNumscriptcolumns(); /** * A convenience method to retrieve pre-subscript children of the element, * referenced by column index . * * @param colIndex * Column index of prescript (where 1 represents the leftmost * prescript column). * @return Returns the MathMLElement representing the colIndex-th * presubscript (to the left of the base, counting from 1 at the * far left). Note that this may be the MathMLElement * corresponding to the special element none in the case of a * missing presubscript (see the discussion of mmultiscripts), or * it may be null if colIndex is out of range for the element. */ MathMLElement getPreSubScript(int colIndex); /** * A convenience method to retrieve subscript children of the element, * referenced by column index. * * @param colIndex * Column index of script (where 1 represents the leftmost * script column, the first to the right of the base). * @return Returns the MathMLElement representing the colIndex-th * subscript to the right of the base. Note that this may be the * MathMLElement corresponding to the special element none in the * case of a missing subscript (see the discussion of * mmultiscripts), or it may be null if colIndex is out of range * for the element. */ MathMLElement getSubScript(int colIndex); /** * A convenience method to retrieve pre-superscript children of the * element, referenced by column index . * * @param colIndex * Column index of pre-superscript (where 1 represents the * leftmost prescript column). * @return Returns the MathMLElement representing the colIndex-th * presuperscript (to the left of the base, counting from 1 at the * far left). Note that this may be the MathMLElement * corresponding to the special element none in the case of a * missing presuperscript (see the discussion of mmultiscripts), * or it may be null if colIndex is out of range for the element. */ MathMLElement getPreSuperScript(int colIndex); /** * A convenience method to retrieve superscript children of the element, * referenced by column index . * * @param colIndex * Column index of script (where 1 represents the leftmost * script column, the first to the right of the base) * @return Returns the MathMLElement representing the colIndex-th * superscript to the right of the base. Note that this may be the * MathMLElement corresponding to the special element none in the * case of a missing superscript (see the discussion of * mmultiscripts), or it may be null if colIndex is out of range * for the element. */ MathMLElement getSuperScript(int colIndex); /** * A convenience method to insert a pre-subscript before the position * referenced by column index. If colIndex is 0, the new pre-subscript is * appended as the last pre-subscript of the mmultiscripts element; if * colIndex is 1, a new pre-subscript is prepended at the far left. Note * that inserting a new pre-subscript will cause the insertion of an empty * pre-superscript in the same column. * * @param colIndex * Column index of pre-subscript (where 1 represents the * leftmost prescript column). * @param newScript * A MathMLElement representing the element to be inserted as a * pre-subscript. * @return The MathMLElement child of this MathMLMultiScriptsElement * representing the new script in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a pre-subscript. INDEX_SIZE_ERR: * Raised if colIndex is greater than the number of * pre-scripts of the element. */ MathMLElement insertPreSubScriptBefore(int colIndex, MathMLElement newScript) throws DOMException; /** * A convenience method to set the pre-subscript child at the position * referenced by colIndex. If there is currently a pre-subscript at this * position, it is replaced by newScript. * * @param colIndex * Column index of pre-subscript (where 1 represents the * leftmost prescript column). * @param newScript * MathMLElement representing the element that is to be set as * the colIndex-th pre-subscript child of this element. * @return The MathMLElement child of this MathMLMultiScriptsElement * representing the new pre-subscript in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a pre-subscript. INDEX_SIZE_ERR: * Raised if colIndex is greater than one more than the number * of pre-scripts of the element. */ MathMLElement setPreSubScriptAt(int colIndex, MathMLElement newScript) throws DOMException; /** * A convenience method to insert a subscript before the position * referenced by column index. If colIndex is 0, the new subscript is * appended as the last subscript of the mmultiscripts element; if * colIndex is 1, a new subscript is prepended at the far left. Note that * inserting a new subscript will cause the insertion of an empty * superscript in the same column. * * @param colIndex * Column index of subscript, where 1 represents the leftmost * script column (the first to the right of the base). * @param newScript * A MathMLElement representing the element to be inserted as a * subscript. * @return The MathMLElement child of this MathMLMultiScriptsElement that * represents the new subscript in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a subscript. INDEX_SIZE_ERR: Raised * if colIndex is greater than the number of scripts of the * element. */ MathMLElement insertSubScriptBefore(int colIndex, MathMLElement newScript) throws DOMException; /** * A convenience method to set the subscript child at the position * referenced by colIndex. If there is currently a subscript at this * position, it is replaced by newScript. * * @param colIndex * Column index of subscript, where 1 represents the leftmost * script column (the first to the right of the base). * @param newScript * MathMLElement representing the element that is to be set as * the colIndex-th subscript child of this element. * @return The MathMLElement child of this element representing the new * subscript in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a subscript. INDEX_SIZE_ERR: Raised * if colIndex is greater than one more than the number of * scripts of the element. */ MathMLElement setSubScriptAt(int colIndex, MathMLElement newScript) throws DOMException; /** * A convenience method to insert a pre-superscript before the position * referenced by column index. If colIndex is 0, the new pre-superscript * is appended as the last pre-superscript of the mmultiscripts element; * if colIndex is 1, a new pre-superscript is prepended at the far left. * Note that inserting a new pre-superscript will cause the insertion of * an empty pre-subscript in the same column. * * @param colIndex * Column index of pre-superscript (where 1 represents the * leftmost prescript column). * @param newScript * A MathMLElement representing the element to be inserted as a * pre-superscript. * @return The MathMLElement child of this element that represents the new * pre-superscript in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a pre-superscript. INDEX_SIZE_ERR: * Raised if colIndex is greater than the number of * pre-scripts of the element. */ MathMLElement insertPreSuperScriptBefore(int colIndex, MathMLElement newScript) throws DOMException; /** * A convenience method to set the pre-superscript child at the position * referenced by colIndex. If there is currently a pre-superscript at this * position, it is replaced by newScript. * * @param colIndex * Column index of pre-superscript (where 1 represents the * leftmost prescript column). * @param newScript * MathMLElement representing the element that is to be set as * the colIndex-th pre-superscript child of this element. * @return The MathMLElement child of this element that represents the new * pre-superscript in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a pre-superscript. INDEX_SIZE_ERR: * Raised if colIndex is greater than one more than the number * of pre-scripts of the element. */ MathMLElement setPreSuperScriptAt(int colIndex, MathMLElement newScript) throws DOMException; /** * A convenience method to insert a superscript before the position * referenced by column index. If colIndex is 0, the new superscript is * appended as the last superscript of the mmultiscripts element; if * colIndex is 1, a new superscript is prepended at the far left. Note * that inserting a new superscript will cause the insertion of an empty * subscript in the same column. * * @param colIndex * Column index of superscript, where 1 represents the leftmost * script column (the first to the right of the base). * @param newScript * A MathMLElement representing the element to be inserted as a * superscript. * @return The MathMLElement child of this element that represents the new * superscript in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a superscript. INDEX_SIZE_ERR: * Raised if colIndex is greater than the number of scripts of * the element. */ MathMLElement insertSuperScriptBefore(int colIndex, MathMLElement newScript) throws DOMException; /** * A convenience method to set the superscript child at the position * referenced by colIndex. If there is currently a superscript at this * position, it is replaced by newScript. * * @param colIndex * Column index of superscript, where 1 represents the leftmost * script column (the first to the right of the base). * @param newScript * MathMLElement representing the element that is to be set as * the colIndex-th superscript child of this element. * @return The MathMLElement child of this element that represents the new * superscript in the DOM. * @throws DOMException * HIERARCHY_REQUEST_ERR: Raised if newScript represents an * element that cannot be a superscript. INDEX_SIZE_ERR: * Raised if colIndex is greater than one more than the number * of scripts of the element. */ MathMLElement setSuperScriptAt(int colIndex, MathMLElement newScript) throws DOMException; }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLAnnotationElement.java0000644000175000017500000000325411335260530033175 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface represents the annotation element of MathML. * * */ public interface MathMLAnnotationElement extends MathMLElement { /** * Provides access to the content of an annotation element. * * @return value of the body attribute. */ String getBody(); /** * setter for the body attribute. * * @param body * new value for body. * @see #getBody() */ void setBody(String body); /** * Provides access to the encoding attribute of an annotation element. * * @return value of the encoding attribute. */ String getEncoding(); /** * setter for the encoding attribute. * * @param encoding * new value for encoding. * @see #getEncoding() */ void setEncoding(String encoding); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLPresentationToken.java0000644000175000017500000000750411335260530033227 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the MathMLElement interface to include access for * attributes specific to text presentation. It serves as the base class for * all MathML presentation token elements. Access to the body of the element * is via the nodeValue attribute inherited from Node. Elements that expose * only the core presentation token attributes are directly supported by this * object. These elements are: * * mi * * * mn * * * mtext * * * * * */ public interface MathMLPresentationToken extends MathMLPresentationElement { /** * The mathvariant attribute for the element, if specified. One of the * values normal, bold, italic, bold-italic, double-struck, bold-fraktur, * script, bold-script, fraktur, sans-serif, bold-sans-serif, * sans-serif-italic, sans-serif-bold-italic, or monospace. * * @return value of the mathvariant attribute. */ String getMathvariant(); /** * setter for the mathvariant attribute. * * @param mathvariant * new value for mathvariant. * @see #getMathvariant() */ void setMathvariant(String mathvariant); /** * The mathsize attribute for the element, if specified. Either small, * normal or big, or of the form number v-unit. * * @return value of the mathsize attribute. */ String getMathsize(); /** * setter for the mathsize attribute. * * @param mathsize * new value for mathsize. * @see #getMathsize() */ void setMathsize(String mathsize); /** * The mathcolor attribute for the element, if specified. The DOMString * returned should be in one of the forms "#rgb" or "#rrggbb", or should * be an html-color-name, as specified in . * * @return value of the mathcolor attribute. */ String getMathcolor(); /** * setter for the mathcolor attribute. * * @param mathcolor * new value for mathcolor. * @see #getMathcolor() */ void setMathcolor(String mathcolor); /** * The mathbackground attribute for the element, if specified. The * DOMString returned should be in one of the forms "#rgb" or "#rrggbb", * or an html-color-name, as specified in , or the keyword "transparent". * * @return value of the mathbackground attribute. */ String getMathbackground(); /** * setter for the mathbackground attribute. * * @param mathbackground * new value for mathbackground. * @see #getMathbackground() */ void setMathbackground(String mathbackground); /** * Returns the child Nodes of the element. These should consist only of * Text nodes, MathMLGlyphElements, and MathMLAlignMarkElements. Should * behave the same as the base class's Node::childNodes attribute; * however, it is provided here for clarity. * * @return value of the contents attribute. */ MathMLNodeList getContents(); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLMatrixrowElement.java0000644000175000017500000001104111335260530033050 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMException; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * The matrixrow element is the container element for the elements of a * matrix. * * */ public interface MathMLMatrixrowElement extends MathMLContentElement { /** * The number of entries in the row. * * @return value of the nEntries attribute. */ int getNEntries(); /** * A convenience method to retrieve the contents of an entry by index. * * @param index * Position of the entry in the row. The first entry is * numbered 1. * @return The MathMLContentElement element representing the index-th * entry in the row. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of entries in the row. */ MathMLContentElement getEntry(int index) throws DOMException; /** * A convenience method to insert an entry before the current index-th * entry of the row. If index is 0, newEntry is appended as the last * entry. Note that this method increases the size of the matrixrow. * * @param newEntry * The MathMLContentElement to be representing the new entry to * be inserted into the row. * @param index * The index before which newEntry is to be inserted in the * row. The first entry is numbered 1. * @return The MathMLContentElement child of this MathMLMatrixrowElement * representing newEntry in the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of entries in the row. */ MathMLContentElement insertEntry(MathMLContentElement newEntry, int index) throws DOMException; /** * A convenience method to set the contents of the entry at position index * in the row to newEntry. If there is already a entry at the specified * index, it is replaced by the new entry. * * @param newEntry * The MathMLContentElement representing the element that is to * be the index-th entry. * @param index * The index of the entry that is to be set equal to newEntry. * The first entry is numbered 1. * @return The MathMLContentElement child of this MathMLMatrixRowElement * representing newEntry in the DOM. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than one more * than the number of elements in the row. */ MathMLContentElement setEntry(MathMLContentElement newEntry, int index) throws DOMException; /** * A convenience method to delete an entry. The deletion changes the * indices of the following entries. * * @param index * Position of the entry to be deleted in the row. The first * entry is numbered 1. * @return None * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of entries in the row. */ void deleteEntry(int index) throws DOMException; /** * A convenience method to remove an entry from the row and return the * removed entry to the caller. * * @param index * Position of the entry to be removed from the row. The first * entry is numbered 1. * @return The MathMLContentElement being removed from the row. * @throws DOMException * INDEX_SIZE_ERR: Raised if index is greater than the number * of entries in the row. */ MathMLContentElement removeEntry(int index) throws DOMException; }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLXMLAnnotationElement.java0000644000175000017500000000255311335260530033557 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface represents the annotation-xml element of MathML. * */ public interface MathMLXMLAnnotationElement extends MathMLElement { /** * Provides access to the encoding attribute of an annotation-xml element. * * @return value of the encoding attribute. */ String getEncoding(); /** * setter for the encoding attribute. * * @param encoding * new value for encoding. * @see #getEncoding() */ void setEncoding(String encoding); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/org/w3c/dom/mathml/MathMLDOMImplementation.java0000644000175000017500000000321511335260530033073 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ package org.w3c.dom.mathml; import org.w3c.dom.DOMImplementation; /* * Please note: This file was automatically generated from the source of the * MathML specification. Do not edit it. If there are errors or missing * elements, please correct the stylesheet instead. */ /** * This interface extends the DOMImplementation interface by adding a method * to create a MathMLDocument. * * */ public interface MathMLDOMImplementation extends DOMImplementation { /** * Creates a MathMLDocument with a minimal tree containing only a * MathMLMathElement corresponding to a MathML math element. The * MathMLMathElement is empty, having no child elements or non-default * attributes; it is the root element of the document, and is the element * accessed via the documentElement attribute of the MathMLDocument. Note * that a MathMLDocument object should only be created for a stand-alone * MathML document. * * @return The MathMLDocument created. */ MathMLDocument createMathMLDocument(); }; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/0000755000175000017500000000000011335260526023106 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/0000755000175000017500000000000011335260526025431 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530027043 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/0000755000175000017500000000000011335260530030657 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/AbstractJEuclidElement.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/AbstractJEuclidElem0000644000175000017500000006726611335260530034431 0ustar sylvestresylvestre/* * Copyright 2002 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractJEuclidElement.java,v 62d8defc665e 2009/09/25 16:22:59 max $ */ package net.sourceforge.jeuclid.elements; import java.awt.Color; import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.StyleAttributeLayoutContext; import net.sourceforge.jeuclid.elements.presentation.token.Mo; import net.sourceforge.jeuclid.elements.presentation.token.Mtext; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; import net.sourceforge.jeuclid.elements.support.text.TextContent; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; import org.apache.batik.dom.GenericElementNS; import org.apache.batik.dom.events.DOMMutationEvent; import org.w3c.dom.Attr; import org.w3c.dom.Node; import org.w3c.dom.events.Event; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLMathElement; import org.w3c.dom.mathml.MathMLNodeList; /** * The basic class for all math elements. Every element class inherits from this * class. It provides basic functionality for drawing. * * @version $Revision: 62d8defc665e $ */ // CHECKSTYLE:OFF public abstract class AbstractJEuclidElement extends // CHECKSTYLE:ON GenericElementNS implements JEuclidElement { /** Constant for mathvariant attribute. */ public static final String ATTR_MATHVARIANT = "mathvariant"; /** Constant for mathcolor attribute. */ public static final String ATTR_MATHCOLOR = "mathcolor"; /** Constant for mathsize attribute. */ public static final String ATTR_MATHSIZE = "mathsize"; /** Constant for fontfamily attribute. */ public static final String ATTR_DEPRECATED_FONTFAMILY = "fontfamily"; /** Constant for fontstyle attribute. */ public static final String ATTR_DEPRECATED_FONTSTYLE = "fontstyle"; /** Constant for fontweight attribute. */ public static final String ATTR_DEPRECATED_FONTWEIGHT = "fontweight"; /** Constant for fontsize attribute. */ public static final String ATTR_DEPRECATED_FONTSIZE = "fontsize"; /** Constant for color attribute. */ public static final String ATTR_DEPRECATED_COLOR = "color"; /** Constant for background attribute. */ public static final String ATTR_DEPRECATED_BACKGROUND = "background"; /** Constant for class attribute. */ public static final String ATTR_CLASS = "class"; /** Constant for style attribute. */ public static final String ATTR_STYLE = "style"; /** Constant for id attribute. */ public static final String ATTR_ID = "id"; /** Constant for href attribute. */ public static final String ATTR_HREF = "xlink:href"; /** Constant for xref attribute. */ public static final String ATTR_XREF = "xref"; /** The mathbackground attribute. */ public static final String ATTR_MATHBACKGROUND = "mathbackground"; /** * largest value for all trivial spaces (= spaces that can be ignored / * shortened). */ public static final int TRIVIAL_SPACE_MAX = 0x20; /** * The URI from MathML. */ public static final String URI = "http://www.w3.org/1998/Math/MathML"; private static final float MIDDLE_SHIFT = 0.38f; // /** // * Logger for this class // */ // private static final Log LOGGER = LogFactory // .getLog(AbstractJEuclidElement.class); private static final Set DEPRECATED_ATTRIBUTES = new HashSet(); /** * Reference to the element acting as parent if there is no parent. */ private JEuclidElement fakeParent; private final Map defaultMathAttributes = new HashMap(); /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractJEuclidElement(final String qname, final AbstractDocument odoc) { super(AbstractJEuclidElement.URI, qname, odoc); } /** * Constructor to explicitly set the namespace. * * @param nsUri * Namespace URI. * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractJEuclidElement(final String nsUri, final String qname, final AbstractDocument odoc) { super(nsUri, qname, odoc); } /** * Gets the used font. Everything regardes font, processed by MathBase * object. * * @param context * LayoutContext to use. * @return Font Font object. */ public Font getFont(final LayoutContext context) { final String content = this.getText(); final char aChar; if (content.length() > 0) { aChar = content.charAt(0); } else { aChar = 'A'; } return this.getMathvariantAsVariant().createFont( GraphicsSupport.getFontsizeInPoint(context), aChar, this.applyLocalAttributesToContext(context), true); } /** {@inheritDoc} */ public MathVariant getMathvariantAsVariant() { // TODO: Support deprecated variant names String setMv = this.getMathAttribute( AbstractJEuclidElement.ATTR_MATHVARIANT, false); JEuclidElement parent = this.getParent(); while ((setMv == null) && (parent != null)) { // element is not set, try to inherit if (parent instanceof AbstractJEuclidElement) { setMv = ((AbstractJEuclidElement) parent).getMathAttribute( AbstractJEuclidElement.ATTR_MATHVARIANT, false); } parent = parent.getParent(); } if (setMv == null) { setMv = this.defaultMathAttributes .get(AbstractJEuclidElement.ATTR_MATHVARIANT); } MathVariant variant; if (setMv == null) { variant = MathVariant.NORMAL; } else { variant = MathVariant.stringToMathVariant(setMv); if (variant == null) { variant = MathVariant.NORMAL; } } return variant; } // /** // * Setting size of child of the element. // * // * @param child // * Child element // * @param childpos // * Position of the child element // */ // // private void setChildSize(AbstractMathElement child, int childpos) { // // float childSize = (float) Math.pow(getScriptSizeMultiplier(), child // .getAbsoluteScriptLevel()); // // child.multipleFont(m_font, (float) Math.pow(getScriptSizeMultiplier(), // child.getAbsoluteScriptLevel())); // System.out.println(child.toString() + " " // + child.getAbsoluteScriptLevel() + " " // + getScriptSizeMultiplier() + " " + childSize); // // child.setScriptSizeMultiplier(getScriptSizeMultiplier()); // // if (this instanceof MathMultiScripts) { // if (childpos > 0) { // child.multipleFont(m_font, getScriptSizeMultiplier()); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } else if (this instanceof MathOver) { // if (childpos == 1) { // if (((getMathElement(0) instanceof MathOperator) && ((MathOperator) // getMathElement(0)) // .getMoveableLimits()) // || (!((MathOver) this).getAccent())) { // child.multipleFont(m_font, getScriptSizeMultiplier()); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } // } else if (this instanceof MathUnder) { // if (childpos == 1) { // if (((getMathElement(0) instanceof MathOperator) && ((MathOperator) // getMathElement(0)) // .getMoveableLimits()) // || (!((MathUnder) this).getAccentUnder())) { // child.multipleFont(m_font, getScriptSizeMultiplier()); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } // } else if (this instanceof MathUnderOver) { // if (childpos > 0) { // if (((getMathElement(0) instanceof MathOperator) && ((MathOperator) // getMathElement(0)) // .getMoveableLimits()) // || ((childpos == 1) && (!((MathUnderOver) this) // .getAccentUnder())) // || ((childpos == 2) && (!((MathUnderOver) this) // .getAccent()))) { // child.multipleFont(m_font, getScriptSizeMultiplier()); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } // } else if (this instanceof MathRoot) { // if (childpos == 1) { // child.multipleFont(m_font, (float) Math.pow( // getScriptSizeMultiplier(), 2)); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } else if (this instanceof MathSub) { // if (childpos == 1) { // child.multipleFont(m_font, getScriptSizeMultiplier()); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } else if (this instanceof MathSup) { // if (childpos == 1) { // child.multipleFont(m_font, getScriptSizeMultiplier()); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } else if (this instanceof MathSubSup) { // if (childpos > 0) { // child.multipleFont(m_font, getScriptSizeMultiplier()); // child.setDisplayStyle(false); // child.setInheritSisplayStyle(false); // } // } else if (this instanceof MathStyle) { // // child.multipleFont(m_font, (float) Math.pow( // // getScriptSizeMultiplier(), ((MathStyle) this) // // .getScriptlevel())); // } else { // child.setFont(m_font); // } // } /** * Add a math element as a child. * * @param child * Math element object. */ public final void addMathElement(final MathMLElement child) { if (child != null) { this.appendChild(child); } } /** * Gets a child from this element. *

* Please note, that unlike the MathML DOM model functions this function * uses a 0-based index. * * @param index * Index of the child (0-based). * @return The child MathElement object. */ protected JEuclidElement getMathElement(final int index) { final List childList = ElementListSupport .createListOfChildren(this); int count = 0; for (final Node n : childList) { if (n instanceof JEuclidElement) { if (count == index) { return (JEuclidElement) n; } count++; } } for (; count < index; count++) { this.appendChild(this.ownerDocument.createElement(Mtext.ELEMENT)); } final JEuclidElement last = (JEuclidElement) this.ownerDocument .createElement(Mtext.ELEMENT); this.appendChild(last); return last; } /** * Sets a specific child to the newElement, creating other subelements as * necessary. * * @param index * the index to set (0=the first child) * @param newElement * new element to be set as child. */ protected void setMathElement(final int index, final MathMLElement newElement) { final org.w3c.dom.NodeList childList = this.getChildNodes(); while (childList.getLength() < index) { this.appendChild(this.getOwnerDocument().createTextNode("")); } if (childList.getLength() == index) { this.addMathElement(newElement); } else { this.replaceChild(newElement, childList.item(index)); } } /** {@inheritDoc} */ public int getIndexOfMathElement(final JEuclidElement element) { final org.w3c.dom.NodeList childList = this.getChildNodes(); for (int i = 0; i < childList.getLength(); i++) { if (childList.item(i).equals(element)) { return i; } } return -1; } /** {@inheritDoc} */ public int getMathElementCount() { final List childList = ElementListSupport .createListOfChildren(this); int count = 0; for (final Node n : childList) { if (n instanceof JEuclidElement) { count++; } } return count; } /** * Returns the text content of this element. * * @return Text content. */ public String getText() { return TextContent.getText(this); } /** {@inheritDoc} */ public void setFakeParent(final JEuclidElement parent) { this.fakeParent = parent; } private JEuclidNode getParentAsJEuclidNode() { final Node parentNode = this.getParentNode(); final JEuclidNode theParent; if (parentNode instanceof JEuclidNode) { theParent = (JEuclidNode) parentNode; } else { theParent = null; } if (theParent == null) { return this.fakeParent; } else { return theParent; } } /** {@inheritDoc} */ public JEuclidElement getParent() { final JEuclidNode parentNode = this.getParentAsJEuclidNode(); if (parentNode instanceof JEuclidElement) { return (JEuclidElement) parentNode; } else { return null; } } /** * Sets value of mathvariant attribute (style of the element). * * @param mathvariant * Value of mathvariant. */ public void setMathvariant(final String mathvariant) { this.setAttribute(AbstractJEuclidElement.ATTR_MATHVARIANT, mathvariant); } /** * Returns value of mathvariant attribute (style of the element). * * @return Value of mathvariant. */ public String getMathvariant() { return this.getMathAttribute(AbstractJEuclidElement.ATTR_MATHVARIANT); } /** * Gets the font metrics of the used font. * * @return Font metrics. * @param context * LayoutContext to use. * @param g * Graphics2D context to use. */ public FontMetrics getFontMetrics(final Graphics2D g, final LayoutContext context) { return g.getFontMetrics(this.getFont(context)); } /** * Sets value of math color attribute. * * @param mathcolor * Color object. */ public void setMathcolor(final String mathcolor) { this.setAttribute(AbstractJEuclidElement.ATTR_MATHCOLOR, mathcolor); } /** * Returns value of mathcolor attribute. * * @return Color as string. */ public String getMathcolor() { String color; color = this.getMathAttribute(AbstractJEuclidElement.ATTR_MATHCOLOR); if (color == null) { color = this .getMathAttribute(AbstractJEuclidElement.ATTR_DEPRECATED_COLOR); } return color; } /** * Retrieve the mathsize attribute. * * @return the mathsize attribute. */ public String getMathsize() { String size; size = this.getMathAttribute(AbstractJEuclidElement.ATTR_MATHSIZE); if (size == null) { size = this .getMathAttribute(AbstractJEuclidElement.ATTR_DEPRECATED_FONTSIZE); } return size; } /** * Sets mathsize to a new value. * * @param mathsize * value of mathsize. */ public void setMathsize(final String mathsize) { this.setAttribute(AbstractJEuclidElement.ATTR_MATHSIZE, mathsize); } /** * Sets default values for math attributes. Default values are returned * through getMathAttribute, but not stored in the actual DOM tree. This is * necessary to support proper serialization. * * @param key * the attribute to set. * @param value * value of the attribute. */ protected void setDefaultMathAttribute(final String key, final String value) { this.defaultMathAttributes.put(key, value); } /** * retrieve an attribute from the MathML or default name space, returning * the default value if the attribute is not set. * * @param attrName * the name of the attribute * @return attribute value or null if not set. * @see #getMathAttribute(String, boolean) */ protected String getMathAttribute(final String attrName) { return this.getMathAttribute(attrName, true); } /** * retrieve an attribute from the MathML or default name space. * * @param attrName * the name of the attribute * @param useDefault * is true, the default value is used if the attribute is not * set. * @return attribute value or null if not set. * @see #getMathAttribute(String) */ protected String getMathAttribute(final String attrName, final boolean useDefault) { final String attrValue; Attr attr = this.getAttributeNodeNS(AbstractJEuclidElement.URI, attrName); if (attr == null) { attr = this.getAttributeNode(attrName); } if (attr == null) { if (useDefault) { attrValue = this.getDefaultMathAttribute(attrName); } else { attrValue = null; } } else { attrValue = attr.getValue().trim(); } return attrValue; } /** * Retrieves the previously stored default value for this attribute. * * @param attrName * name of the Attribute * @return value set by {@link #setDefaultMathAttribute(String, String)} or * null if not set. */ private String getDefaultMathAttribute(final String attrName) { return this.defaultMathAttributes.get(attrName); } /** * Returns value of mathbackground attribute. * * @return Color as string. */ public String getMathbackground() { String color; color = this .getMathAttribute(AbstractJEuclidElement.ATTR_MATHBACKGROUND); if (color == null) { color = this .getMathAttribute(AbstractJEuclidElement.ATTR_DEPRECATED_BACKGROUND); } return color; } /** * Sets the value of the machbackground attribute. * * @param mathbackground * a string to be used as background color. */ public void setMathbackground(final String mathbackground) { this.setAttribute(AbstractJEuclidElement.ATTR_MATHBACKGROUND, mathbackground); } /** * Returns the distance of the baseline and the middleline. * * @return Distance baseline - middleline. * @param context * Layout Context to use * @param g * Graphics2D context to use. */ public float getMiddleShift(final Graphics2D g, final LayoutContext context) { return this.getFontMetrics(g, context).getAscent() * AbstractJEuclidElement.MIDDLE_SHIFT; } /** {@inheritDoc} */ public String getClassName() { return this.getAttribute(AbstractJEuclidElement.ATTR_CLASS); } /** {@inheritDoc} */ public void setClassName(final String className) { this.setAttribute(AbstractJEuclidElement.ATTR_CLASS, className); } /** {@inheritDoc} */ public String getMathElementStyle() { return this.getAttribute(AbstractJEuclidElement.ATTR_STYLE); } /** {@inheritDoc} */ public void setMathElementStyle(final String mathElementStyle) { this.setAttribute(AbstractJEuclidElement.ATTR_STYLE, mathElementStyle); } /** {@inheritDoc} */ @Override public String getId() { return this.getAttribute(AbstractJEuclidElement.ATTR_ID); } /** {@inheritDoc} */ public void setId(final String id) { this.setAttribute(AbstractJEuclidElement.ATTR_ID, id); } /** {@inheritDoc} */ public String getXref() { return this.getAttribute(AbstractJEuclidElement.ATTR_XREF); } /** {@inheritDoc} */ public void setXref(final String xref) { this.setAttribute(AbstractJEuclidElement.ATTR_XREF, xref); } /** {@inheritDoc} */ public String getHref() { return this.getAttribute(AbstractJEuclidElement.ATTR_HREF); } /** {@inheritDoc} */ public void setHref(final String href) { this.setAttribute(AbstractJEuclidElement.ATTR_HREF, href); } /** {@inheritDoc} */ public MathMLMathElement getOwnerMathElement() { JEuclidElement node = this.getParent(); while (node != null) { if (node instanceof MathMLMathElement) { return (MathMLMathElement) node; } node = node.getParent(); } return null; } /** {@inheritDoc} */ public boolean hasChildPrescripts(final JEuclidElement child) { return false; } /** {@inheritDoc} */ public boolean hasChildPostscripts(final JEuclidElement child, final LayoutContext context) { return false; } /** * Returns the children as a MathML NodeList. * * @return a list of children */ public MathMLNodeList getContents() { return (MathMLNodeList) this.getChildNodes(); } /** {@inheritDoc} */ public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { return this.applyLocalAttributesToContext(context); } /** * Retrieve the LayoutContext valid for the current node. * * @param context * external context. * @return the current layout context. */ public LayoutContext applyLocalAttributesToContext( final LayoutContext context) { // TODO: Theoretically this only applies all to presentation token // elements except mspace and mglyph, and on no other elements except // mstyle 3.2.2 return this.applyStyleAttributes(context); } /** * Apply Style attributed specified in 3.2.2 to a layout context. * * @param applyTo * the context to apply to * @return a context which has the style attributes changed accordingly. May * be the original context if nothing has changed. */ private LayoutContext applyStyleAttributes(final LayoutContext applyTo) { LayoutContext retVal = applyTo; // Variant is not inherited and therefore not part of the context. final String msize = this.getMathsize(); final Color foreground; final String colorString = this.getMathcolor(); if (colorString == null) { foreground = null; } else { foreground = AttributesHelper.stringToColor(colorString, Color.BLACK); } // Background is handled differently and does not need to go into // context. if ((msize != null) || (foreground != null)) { retVal = new StyleAttributeLayoutContext(applyTo, msize, foreground); } return retVal; } /** {@inheritDoc} */ public List getChildrenToLayout() { final List l = ElementListSupport .createListOfLayoutChildren(this); return l; } /** {@inheritDoc} */ public List getChildrenToDraw() { final List l = ElementListSupport .createListOfLayoutChildren(this); return l; } /** * Layout for elements which are stage independent. *

* This function will layout an element which is layed out the same no * matter what stage it is in. This is the case for most elements. *

* Notable exceptions are mo and tables. * * @param view * View Object for this layout. * @param info * An info object which will be filled during layout. * @param stage * current layout stage. * @param context * current LayoutContext. */ protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { ElementListSupport.layoutSequential(view, info, this .getChildrenToLayout(), stage); } /** {@inheritDoc} */ public void layoutStage1(final LayoutView view, final LayoutInfo info, final LayoutStage childMinStage, final LayoutContext context) { this.layoutStageInvariant(view, info, LayoutStage.STAGE1, context); // TODO: This should be done in a better way. if (this.getMathbackground() == null) { info.setLayoutStage(childMinStage); } else { info.setLayoutStage(LayoutStage.STAGE1); } } /** {@inheritDoc} */ public void layoutStage2(final LayoutView view, final LayoutInfo info, final LayoutContext context) { this.layoutStageInvariant(view, info, LayoutStage.STAGE2, context); // TODO: put in own function, ensure this is also called from // subclasses. final String background = this.getMathbackground(); final Color backgroundColor = AttributesHelper.stringToColor( background, null); ElementListSupport.addBackground(backgroundColor, info, false); info.setLayoutStage(LayoutStage.STAGE2); } static { AbstractJEuclidElement.DEPRECATED_ATTRIBUTES .add(AbstractJEuclidElement.ATTR_DEPRECATED_COLOR); AbstractJEuclidElement.DEPRECATED_ATTRIBUTES .add(AbstractJEuclidElement.ATTR_DEPRECATED_BACKGROUND); AbstractJEuclidElement.DEPRECATED_ATTRIBUTES .add(AbstractJEuclidElement.ATTR_DEPRECATED_FONTSIZE); AbstractJEuclidElement.DEPRECATED_ATTRIBUTES .add(AbstractJEuclidElement.ATTR_DEPRECATED_FONTWEIGHT); AbstractJEuclidElement.DEPRECATED_ATTRIBUTES .add(AbstractJEuclidElement.ATTR_DEPRECATED_FONTSTYLE); AbstractJEuclidElement.DEPRECATED_ATTRIBUTES .add(AbstractJEuclidElement.ATTR_DEPRECATED_FONTFAMILY); AbstractJEuclidElement.DEPRECATED_ATTRIBUTES.add(Mo.ATTR_MOVEABLEWRONG); } /** * Override this function to get notified whenever the contents of this * element have changed. */ protected void changeHook() { // Override me! } /** {@inheritDoc} */ @Override public boolean dispatchEvent(final Event evt) { if (evt instanceof DOMMutationEvent) { this.changeHook(); } return super.dispatchEvent(evt); } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/JEuclidElement.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/JEuclidElement.java0000644000175000017500000000525011335260530034355 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidElement.java,v 5c224b0fad38 2008/05/23 10:30:28 maxberger $ */ package net.sourceforge.jeuclid.elements; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.w3c.dom.mathml.MathMLElement; /** * Interface for all MathElements within JEuclid. * * @version $Revision: 5c224b0fad38 $ */ public interface JEuclidElement extends MathMLElement, JEuclidNode, LayoutableNode { /** * Sets the parent of this element. * * @param parent * Parent element */ void setFakeParent(final JEuclidElement parent); /** * Gets index of child element. * * @param element * Child element. * @return Index of the element, -1 if element was not found */ int getIndexOfMathElement(final JEuclidElement element); /** * Gets the current mathvariant. * * @return the current MathVariant */ MathVariant getMathvariantAsVariant(); /** * Returns parent of this element. * * @return Parent element. */ JEuclidElement getParent(); /** * returns true is the child has prescripts attached to it. In this case, * there should be no extra space on the left. * * @param child * child to test * @return true if there are attached prescripts */ boolean hasChildPrescripts(final JEuclidElement child); /** * returns true is the child has postscripts attached to it. In this case, * there should be no extra space on the left. * * @param child * child to test * @param context * current layout context. * @return true if there are attached postscripts */ boolean hasChildPostscripts(final JEuclidElement child, LayoutContext context); /** * Returns the count of children for this element. * * @return number of children. */ int getMathElementCount(); } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/AbstractInvisibleJEuclidElement.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/AbstractInvisibleJE0000644000175000017500000000330511335260530034432 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractInvisibleJEuclidElement.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements; import java.util.ArrayList; import java.util.List; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; /** * Represents a MathElement with no content. * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractInvisibleJEuclidElement extends AbstractJEuclidElement { /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractInvisibleJEuclidElement(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override public List getChildrenToLayout() { return new ArrayList(0); } /** {@inheritDoc} */ @Override public List getChildrenToDraw() { return new ArrayList(0); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/0000755000175000017500000000000011335260530032273 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/package-inf0000644000175000017500000000163411335260530034367 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Provides support for MathML elements.

This package contains support for a DOM based tree of MathML elements. Each element is represented by a matching class.

*/ package net.sourceforge.jeuclid.elements.generic; ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/ForeignElement.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/ForeignElem0000644000175000017500000000322111335260530034410 0ustar sylvestresylvestre/* * Copyright 2002 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ForeignElement.java,v 92569cce5dd6 2009/07/27 14:50:38 maxberger $ */ package net.sourceforge.jeuclid.elements.generic; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class represents a foreign element. It is rendered like a row. * * @version $Revision: 92569cce5dd6 $ */ public final class ForeignElement extends AbstractJEuclidElement { private static final long serialVersionUID = 1L; /** * Default constructor. * * @param nsUri * Namespace URI. * @param qname * Qualified name. * @param odoc * Owner Document. */ public ForeignElement(final String nsUri, final String qname, final AbstractDocument odoc) { super(nsUri, qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new ForeignElement(this.namespaceURI, this.nodeName, this.ownerDocument); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/MathImpl.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/MathImpl.ja0000644000175000017500000001377711335260530034341 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathImpl.java,v c169040ef426 2009/10/28 09:55:31 max $ */ package net.sourceforge.jeuclid.elements.generic; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Display; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLMathElement; /** * The root element for creating a MathElement tree. * * @version $Revision: c169040ef426 $ */ public final class MathImpl extends AbstractContainer implements MathMLMathElement { private final class ChildContext implements LayoutContext { private final LayoutContext context; private ChildContext(final LayoutContext myContext) { this.context = myContext; } public Object getParameter(final Parameter which) { Object retVal; if (Parameter.DISPLAY.equals(which)) { if (MathImpl.DISPLAY_BLOCK.equals(MathImpl.this.getDisplay())) { retVal = Display.BLOCK; } else { retVal = Display.INLINE; } } else { retVal = MathImpl.this.applyLocalAttributesToContext( this.context).getParameter(which); } retVal = this.getParamValueFromJEuclidExt(which, retVal); return retVal; } private Object getParamValueFromJEuclidExt(final Parameter which, final Object currentValue) { Object retVal = currentValue; final String s0 = MathImpl.this.getAttributeNS( Constants.NS_JEUCLID_EXT, which.getOptionName()); if ((s0 != null) && (s0.length() > 0)) { retVal = which.fromString(s0); } else { retVal = this.getDeprecatedParamValuesFromJEuclidExt(which, retVal); } return retVal; } private Object getDeprecatedParamValuesFromJEuclidExt( final Parameter which, final Object currentValue) { // old namespace Object retVal = currentValue; final String s = MathImpl.this.getAttributeNS( Constants.NS_OLD_JEUCLID_EXT, which.getOptionName()); if ((s != null) && (s.length() > 0)) { retVal = which.fromString(s); } else { // Support deprecated attributes final String s2 = MathImpl.this.getAttributeNS( Constants.NS_OLD_JEUCLID_EXT, which.toString()); if ((s2 != null) && (s2.length() > 0)) { retVal = which.fromString(s2); } } return retVal; } } /** attribute for display. */ public static final String ATTR_DISPLAY = "display"; /** attribute for macros. */ public static final String ATTR_MACROS = "macros"; /** * The XML element from this class. */ public static final String ELEMENT = "math"; private static final long serialVersionUID = 1L; /** attribute for mode. */ private static final String ATTR_MODE = "mode"; private static final String DISPLAY_INLINE = "inline"; private static final String DISPLAY_BLOCK = "block"; // Happens to be display as well. private static final String DEPRECATED_BLOCK_VALUE_FOR_MODE = MathImpl.ATTR_DISPLAY; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public MathImpl(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new MathImpl(this.nodeName, this.ownerDocument); } /** * Set the type of equation. * * @param display * INLINE|BLOCK */ public void setDisplay(final String display) { this.setAttribute(MathImpl.ATTR_DISPLAY, display); } /** * Returns the display. * * @return Display display */ public String getDisplay() { final String retVal; final String attrDisplay = this.getMathAttribute(MathImpl.ATTR_DISPLAY); if (attrDisplay == null) { if (MathImpl.DEPRECATED_BLOCK_VALUE_FOR_MODE.equalsIgnoreCase(this .getMathAttribute(MathImpl.ATTR_MODE))) { retVal = MathImpl.DISPLAY_BLOCK; } else { retVal = MathImpl.DISPLAY_INLINE; } } else { if (MathImpl.DISPLAY_BLOCK.equalsIgnoreCase(attrDisplay)) { retVal = MathImpl.DISPLAY_BLOCK; } else { retVal = MathImpl.DISPLAY_INLINE; } } return retVal; } /** {@inheritDoc} */ @Override public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { return new ChildContext(context); } /** {@inheritDoc} */ public String getMacros() { return this.getMathAttribute(MathImpl.ATTR_MACROS); } /** {@inheritDoc} */ public void setMacros(final String macros) { this.setAttribute(MathImpl.ATTR_MACROS, macros); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/JEuclidDOMImplementation.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/JEuclidDOMI0000644000175000017500000000430711335260530034212 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidDOMImplementation.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ package net.sourceforge.jeuclid.elements.generic; import org.apache.batik.dom.AbstractDOMImplementation; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.DocumentType; /** * @version $Revision: 88b901bf20fb $ */ public final class JEuclidDOMImplementation extends AbstractDOMImplementation { private static final long serialVersionUID = 1L; private static final class SingletonHolder { private static final JEuclidDOMImplementation INSTANCE = new JEuclidDOMImplementation(); private SingletonHolder() { } } /** * Default Constructor. */ protected JEuclidDOMImplementation() { super(); } /** {@inheritDoc} */ public Document createDocument(final String namespaceURI, final String qualifiedName, final DocumentType doctype) { final Document result = new DocumentElement(doctype); result.appendChild(result.createElementNS(namespaceURI, qualifiedName)); return result; } /** {@inheritDoc} */ public DocumentType createDocumentType(final String qualifiedName, final String publicId, final String systemId) { throw new UnsupportedOperationException(); } /** * Retrieve the singleton instance of this {@link DOMImplementation}. * * @return a {@link DOMImplementation} implementing MathML DOM. */ public static DOMImplementation getInstance() { return JEuclidDOMImplementation.SingletonHolder.INSTANCE; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/DocumentElement.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/generic/DocumentEle0000644000175000017500000001257711335260530034436 0ustar sylvestresylvestre/* * Copyright 2002 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: DocumentElement.java,v 92569cce5dd6 2009/07/27 14:50:38 maxberger $ */ package net.sourceforge.jeuclid.elements.generic; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.util.List; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.JEuclidElementFactory; import net.sourceforge.jeuclid.elements.JEuclidNode; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.layout.JEuclidView; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableDocument; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.GenericDocument; import org.w3c.dom.DocumentType; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLDocument; import org.w3c.dom.views.DocumentView; /** * Class for MathML Document Nodes. * * @version $Revision: 92569cce5dd6 $ */ public final class DocumentElement extends GenericDocument implements MathMLDocument, JEuclidNode, DocumentView, LayoutableDocument { private static final long serialVersionUID = 1L; /** * Creates a math element. * */ public DocumentElement() { this(null); } /** * Creates a MathML compatible document with the given DocumentType. * * @param doctype * DocumentType to use. This is currently ignored. */ public DocumentElement(final DocumentType doctype) { super(doctype, JEuclidDOMImplementation.getInstance()); super.setEventsEnabled(true); this.ownerDocument = this; } /** {@inheritDoc} */ public String getDomain() { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public String getReferrer() { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public String getURI() { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { return context; } /** {@inheritDoc} */ // CHECKSTYLE:OFF public JEuclidView getDefaultView() { // CHECKSTYLE:ON final Image tempimage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); final Graphics2D tempg = (Graphics2D) tempimage.getGraphics(); return new JEuclidView(this, LayoutContextImpl .getDefaultLayoutContext(), tempg); } /** {@inheritDoc} */ public List getChildrenToLayout() { return ElementListSupport.createListOfLayoutChildren(this); } /** {@inheritDoc} */ public List getChildrenToDraw() { return ElementListSupport.createListOfLayoutChildren(this); } /** {@inheritDoc} */ public void layoutStage1(final LayoutView view, final LayoutInfo info, final LayoutStage childMinStage, final LayoutContext context) { ElementListSupport.layoutSequential(view, info, this .getChildrenToLayout(), LayoutStage.STAGE1); info.setLayoutStage(childMinStage); // TODO: This should be done in a better way. if (context.getParameter(Parameter.MATHBACKGROUND) == null) { info.setLayoutStage(childMinStage); } else { info.setLayoutStage(LayoutStage.STAGE1); } } /** {@inheritDoc} */ public void layoutStage2(final LayoutView view, final LayoutInfo info, final LayoutContext context) { ElementListSupport.layoutSequential(view, info, this .getChildrenToLayout(), LayoutStage.STAGE2); ElementListSupport.addBackground((Color) context .getParameter(Parameter.MATHBACKGROUND), info, true); info.setLayoutStage(LayoutStage.STAGE2); } /** {@inheritDoc} */ @Override protected Node newNode() { return new DocumentElement(); } /** {@inheritDoc} */ @Override public Element createElement(final String tagName) { return JEuclidElementFactory.elementFromName(null, tagName, this); } /** {@inheritDoc} */ @Override public Element createElementNS(final String namespaceURI, final String qualifiedName) { final String ns; if (namespaceURI != null && namespaceURI.length() == 0) { ns = null; } else { ns = namespaceURI; } return JEuclidElementFactory.elementFromName(ns, qualifiedName, this); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/package-info.java0000644000175000017500000000161311335260530034047 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Provides support for generic MathML elements.

This package contains support for MathML elements that are neither presentation nor content elements.

*/ package net.sourceforge.jeuclid.elements; ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/AbstractElementWithDelegates.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/AbstractElementWith0000644000175000017500000000505611335260530034521 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractElementWithDelegates.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements; import java.util.List; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; /** * Generic class for all mathobjects that can be represented using other Math * objects. These math objects use a delegates for the actual display and * calculations. *

* To use this class, overwrite {@link #createDelegates()} to create the * delegate objects. * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractElementWithDelegates extends AbstractContainer { // TODO: Re-Enable resetting delegates on changeHook! private List delegates; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractElementWithDelegates(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** * Overwrite this function in your implementation. * * @return a MathObject representing the real contents. */ protected abstract List createDelegates(); private void prepareDelegates() { if (this.delegates == null) { this.delegates = this.createDelegates(); for (final LayoutableNode element : this.delegates) { ((JEuclidElement) element).setFakeParent(this); } } } /** {@inheritDoc} */ @Override public List getChildrenToLayout() { this.prepareDelegates(); return this.delegates; } /** {@inheritDoc} */ @Override public List getChildrenToDraw() { this.prepareDelegates(); return this.delegates; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/0000755000175000017500000000000011335260530032331 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/semantic/0000755000175000017500000000000011335260530034134 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/semantic/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/semantic/pa0000644000175000017500000000175711335260530034471 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v bc7cf412b6da 2008/04/11 14:18:51 maxberger $ */ /** Semantic Mapping Elements (4.11).

This package contains support for semantic mapping elements, as defined in http://www.w3.org/TR/MathML/chapter4.html#id.4.4.11

*/ package net.sourceforge.jeuclid.elements.content.semantic; ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/semantic/Semantics.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/semantic/Se0000644000175000017500000000702611335260530034433 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Semantics.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.content.semantic; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLSemanticsElement; /** * This class represents a semantics element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Semantics extends AbstractContainer implements MathMLSemanticsElement { /** * The XML element from this class. */ public static final String ELEMENT = "semantics"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Semantics(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Semantics(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public void deleteAnnotation(final int index) { this.removeAnnotation(index); } /** {@inheritDoc} */ public MathMLElement getAnnotation(final int index) { // Index is 1-based! return (MathMLElement) this.getChildNodes().item(index); } /** {@inheritDoc} */ public MathMLElement getBody() { return (MathMLElement) this.getFirstChild(); } /** {@inheritDoc} */ public int getNAnnotations() { return Math.max(0, this.getChildNodes().getLength() - 1); } /** {@inheritDoc} */ public MathMLElement insertAnnotation(final MathMLElement newAnnotation, final int index) { if (index == 0) { if (this.getNAnnotations() == 0) { this.setAnnotation(newAnnotation, 1); } else { this.addMathElement(newAnnotation); } } else { final MathMLElement oldChild = this.getAnnotation(index); if (oldChild == null) { this.setAnnotation(newAnnotation, index); } else { this.insertBefore(newAnnotation, oldChild); } } return newAnnotation; } /** {@inheritDoc} */ public MathMLElement removeAnnotation(final int index) { final MathMLElement oldChild = this.getAnnotation(index); return (MathMLElement) this.removeChild(oldChild); } /** {@inheritDoc} */ public MathMLElement setAnnotation(final MathMLElement newAnnotation, final int index) { // Index is 1-based! this.setMathElement(index, newAnnotation); return newAnnotation; } /** {@inheritDoc} */ public void setBody(final MathMLElement body) { this.setMathElement(0, body); } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/semantic/Annotation.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/content/semantic/An0000644000175000017500000000445411335260530034424 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Annotation.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.content.semantic; import net.sourceforge.jeuclid.elements.AbstractInvisibleJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLAnnotationElement; /** * This class represents a annotation element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Annotation extends AbstractInvisibleJEuclidElement implements MathMLAnnotationElement { /** * The XML element from this class. */ public static final String ELEMENT = "annotation"; /** The encoding attribute. */ public static final String ATTR_ENCODING = "encoding"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Annotation(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Annotation(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public String getBody() { return this.getText(); } /** {@inheritDoc} */ public String getEncoding() { return this.getMathAttribute(Annotation.ATTR_ENCODING); } /** {@inheritDoc} */ public void setBody(final String body) { this.setTextContent(body); } /** {@inheritDoc} */ public void setEncoding(final String encoding) { this.setAttribute(Annotation.ATTR_ENCODING, encoding); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/0000755000175000017500000000000011335260530033372 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000755000175000017500000000000011335260530034512 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/AbstractTokenWithTextLayout.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000000771011335260530034521 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractTokenWithTextLayout.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import java.awt.Color; import java.awt.Graphics2D; import java.awt.font.TextLayout; import java.text.AttributedCharacterIterator; import java.text.AttributedString; import java.util.Collections; import java.util.List; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.support.text.StringUtil; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableNode; import net.sourceforge.jeuclid.layout.TextObject; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.mathml.MathMLPresentationToken; /** * Common functionality for all tokens based on a text layout. * * @version $Revision: 923658a2b249 $ */ public abstract class AbstractTokenWithTextLayout extends AbstractJEuclidElement implements MathMLPresentationToken { private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractTokenWithTextLayout(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override public void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { final Graphics2D g = view.getGraphics(); final TextLayout t = this.produceTextLayout(g, context); if (t != null) { final StringUtil.TextLayoutInfo tli = StringUtil.getTextLayoutInfo( t, false); info.setAscentHeight(tli.getAscent(), stage); info.setDescentHeight(tli.getDescent(), stage); final float width = tli.getWidth(); info.setHorizontalCenterOffset(width / 2.0f, stage); info.setWidth(width, stage); info.setGraphicsObject(new TextObject(t, tli.getOffset(), (Color) this.applyLocalAttributesToContext(context) .getParameter(Parameter.MATHCOLOR))); } } private TextLayout produceTextLayout(final Graphics2D g2d, final LayoutContext context) { TextLayout layout; final LayoutContext now = this.applyLocalAttributesToContext(context); final AttributedCharacterIterator aci = StringUtil .textContentAsAttributedCharacterIterator(now, this, this, 1.0f); if (aci.getBeginIndex() == aci.getEndIndex()) { return null; } else { layout = StringUtil.createTextLayoutFromAttributedString(g2d, new AttributedString(aci), now); return layout; } } /** {@inheritDoc} */ @Override public List getChildrenToLayout() { return Collections.emptyList(); } /** {@inheritDoc} */ @Override public List getChildrenToDraw() { return Collections.emptyList(); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/Mo.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000006323111335260530034521 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mo.java,v e2b3e25686bf 2009/09/29 21:14:25 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import java.awt.Color; import java.awt.Graphics2D; import java.awt.font.TextLayout; import java.awt.geom.AffineTransform; import java.text.AttributedString; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Display; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.elements.presentation.general.Mrow; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary2; import net.sourceforge.jeuclid.elements.support.operatordict.UnknownAttributeException; import net.sourceforge.jeuclid.elements.support.text.StringUtil; import net.sourceforge.jeuclid.elements.support.text.StringUtil.TextLayoutInfo; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.TextObject; import org.apache.batik.dom.AbstractDocument; import org.apache.batik.dom.events.DOMCustomEvent; import org.w3c.dom.Attr; import org.w3c.dom.Node; import org.w3c.dom.events.CustomEvent; import org.w3c.dom.events.Event; import org.w3c.dom.events.EventListener; import org.w3c.dom.events.EventTarget; import org.w3c.dom.mathml.MathMLOperatorElement; import org.w3c.dom.mathml.MathMLScriptElement; import org.w3c.dom.mathml.MathMLUnderOverElement; /** * This class presents a math operator, like "(" or "*". * * @version $Revision: e2b3e25686bf $ */ // CHECKSTYLE:OFF // Class Fan-out is to high. However, this is required due to complexity of // mo. public final class Mo extends AbstractJEuclidElement implements MathMLOperatorElement, EventListener { // CHECKSTYLE:ON /** Attribute for form. */ public static final String ATTR_FORM = "form"; /** Attribute for separator. */ public static final String ATTR_SEPARATOR = "separator"; /** Attribute for lspace. */ public static final String ATTR_LSPACE = "lspace"; /** Attribute for rspace. */ public static final String ATTR_RSPACE = "rspace"; /** Attribute for min size. */ public static final String ATTR_MINSIZE = "minsize"; /** Attribute for max size. */ public static final String ATTR_MAXSIZE = "maxsize"; /** Wrong attribute name for movable limits. */ public static final String ATTR_MOVEABLEWRONG = "moveablelimits"; /** Attribute for movable limits. */ public static final String ATTR_MOVABLELIMITS = "movablelimits"; /** Attribute for accent. */ public static final String ATTR_ACCENT = "accent"; /** * The XML element from this class. */ public static final String ELEMENT = "mo"; /** * Multiplier for increasing size of mo with attribute largop = true. */ public static final float LARGEOP_CORRECTOR_INLINE = (float) 1.2; /** * Multiplier for increasing size of mo with attribute largop = true. */ public static final float LARGEOP_CORRECTOR_BLOCK = (float) 1.5; /** * Attribute name of the stretchy property. */ public static final String ATTR_STRETCHY = "stretchy"; /** JEuclid extension to stretchy: stretch horizontal only. */ public static final String VALUE_STRETCHY_HORIZONTAL = "horizontal"; /** JEuclid extension to stretchy: stretch vertical only. */ public static final String VALUE_STRETCHY_VERTICAL = "vertical"; /** * Attribute name of the largeop property. */ public static final String ATTR_LARGEOP = "largeop"; /** * Attribute name of the symmetric property. */ public static final String ATTR_SYMMETRIC = "symmetric"; /** * Attribute name of the fence property. */ public static final String ATTR_FENCE = "fence"; /** * Event name for operator events. */ public static final String MOEVENT = "MOEvent"; private static final long serialVersionUID = 1L; private final OperatorDictionary opDict; private boolean inChangeHook; /** * Logger for this class */ // unused // private static final Log LOGGER = // LogFactory.getLog(MathOperator.class); /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mo(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mo.ATTR_FORM, OperatorDictionary.FORM_INFIX); this.setDefaultMathAttribute(Mo.ATTR_FENCE, Constants.FALSE); this.setDefaultMathAttribute(Mo.ATTR_SEPARATOR, Constants.FALSE); this.setDefaultMathAttribute(Mo.ATTR_LSPACE, AttributesHelper.THICKMATHSPACE); this.setDefaultMathAttribute(Mo.ATTR_RSPACE, AttributesHelper.THICKMATHSPACE); this.setDefaultMathAttribute(Mo.ATTR_STRETCHY, Constants.FALSE); this.setDefaultMathAttribute(Mo.ATTR_SYMMETRIC, Constants.TRUE); this .setDefaultMathAttribute(Mo.ATTR_MAXSIZE, AttributesHelper.INFINITY); this.setDefaultMathAttribute(Mo.ATTR_MINSIZE, "1"); this.setDefaultMathAttribute(Mo.ATTR_LARGEOP, Constants.FALSE); this.setDefaultMathAttribute(Mo.ATTR_MOVABLELIMITS, Constants.FALSE); this.setDefaultMathAttribute(Mo.ATTR_ACCENT, Constants.FALSE); this.opDict = OperatorDictionary2.getInstance(); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mo(this.nodeName, this.ownerDocument); } /** * Gets value of lspace property of the operator. * * @return Flag of lspace property. */ private float getLspaceAsFloat(final LayoutContext now) { if (((Integer) now.getParameter(Parameter.SCRIPTLEVEL)) > 0) { return 0.0f; } else { return AttributesHelper.convertSizeToPt(this.getLspace(), now, AttributesHelper.PT); } } /** * @param now * applied layout context. * @return Multiplier for increasing size of mo whith attribute largop = * true */ public float getLargeOpCorrector(final LayoutContext now) { if (Display.BLOCK.equals(now.getParameter(Parameter.DISPLAY))) { return Mo.LARGEOP_CORRECTOR_BLOCK; } else { return Mo.LARGEOP_CORRECTOR_INLINE; } } /** * Gets value of rspace property of the operator. * * @return Flag of rspace property. */ private float getRspaceAsFloat(final LayoutContext now) { if (((Integer) now.getParameter(Parameter.SCRIPTLEVEL)) > 0) { return 0.0f; } else { return AttributesHelper.convertSizeToPt(this.getRspace(), now, AttributesHelper.PT); } } private boolean isFence() { return Boolean.parseBoolean(this.getFence()); } /** * Sets value of maxsize property. * * @param maxsize * Maxsize value. */ public void setMaxsize(final String maxsize) { this.setAttribute(Mo.ATTR_MAXSIZE, maxsize); } /** * Gets value of maxsize property. * * @return Maxsize value. */ public String getMaxsize() { return this.getMathAttribute(Mo.ATTR_MAXSIZE); } /** * Sets value of minsize property. * * @param minsize * Minsize value. */ public void setMinsize(final String minsize) { this.setAttribute(Mo.ATTR_MINSIZE, minsize); } /** * Gets value of minsize property. * * @return Minsize value. */ public String getMinsize() { return this.getMathAttribute(Mo.ATTR_MINSIZE); } private TextLayout produceUnstrechtedLayout(final Graphics2D g, final LayoutContext now) { assert g != null : "Graphics2d is null in produceUnstrechtedLayout"; float fontSizeInPoint = GraphicsSupport.getFontsizeInPoint(now); if (Boolean.parseBoolean(this.getLargeop())) { fontSizeInPoint *= this.getLargeOpCorrector(now); } final String theText = this.getText(); final AttributedString aString = StringUtil .convertStringtoAttributedString(theText, this .getMathvariantAsVariant(), fontSizeInPoint, now); final TextLayout theLayout = StringUtil .createTextLayoutFromAttributedString(g, aString, now); return theLayout; } /** {@inheritDoc} */ @Override public void changeHook() { super.changeHook(); if (!this.inChangeHook) { this.inChangeHook = true; this.detectFormParameter(); this.loadAttributeFromDictionary(Mo.ATTR_LARGEOP, Constants.FALSE); this.loadAttributeFromDictionary(Mo.ATTR_SYMMETRIC, Constants.TRUE); this.loadAttributeFromDictionary(Mo.ATTR_STRETCHY, Constants.FALSE); this.loadAttributeFromDictionary(Mo.ATTR_FENCE, Constants.FALSE); this.loadAttributeFromDictionary(Mo.ATTR_LSPACE, AttributesHelper.THICKMATHSPACE); this.loadAttributeFromDictionary(Mo.ATTR_RSPACE, AttributesHelper.THICKMATHSPACE); this.loadAttributeFromDictionary(Mo.ATTR_MOVABLELIMITS, Constants.FALSE); // TODO: Load all. this.registerWithParentsForEvents(); if (this.isFence()) { this.setDefaultMathAttribute(Mo.ATTR_STRETCHY, Mo.VALUE_STRETCHY_VERTICAL); } final CustomEvent evt = new DOMCustomEvent(); evt.initCustomEventNS(null, Mo.MOEVENT, true, false, null); this.dispatchEvent(evt); this.inChangeHook = false; } } private void registerWithParentsForEvents() { JEuclidElement parent = this.getParent(); while (parent != null) { if (parent instanceof EventTarget) { ((EventTarget) parent).addEventListener("DOMSubtreeModified", this, false); } if ((parent instanceof Mrow) && (parent.getMathElementCount() > 1)) { parent = null; } else { parent = parent.getParent(); } } } private void loadAttributeFromDictionary(final String attrname, final String defvalue) { String attr; try { attr = this.opDict.getDefaultAttributeValue(this.getText(), this .getForm(), attrname); } catch (final UnknownAttributeException e) { attr = defvalue; } if (attr.equals(OperatorDictionary.VALUE_UNKNOWN)) { attr = defvalue; } this.setDefaultMathAttribute(attrname, attr); } private void detectFormParameter() { final String form; final JEuclidElement parent = this.getParent(); if ((parent != null) && (parent instanceof Mrow)) { final int index = parent.getIndexOfMathElement(this); if ((index == 0) && (parent.getMathElementCount() > 0)) { form = OperatorDictionary.FORM_PREFIX; } else { if ((index == (parent.getMathElementCount() - 1)) && (parent.getMathElementCount() > 0)) { form = OperatorDictionary.FORM_POSTFIX; } else { form = OperatorDictionary.FORM_INFIX; } } } else { form = OperatorDictionary.FORM_INFIX; } this.setDefaultMathAttribute(Mo.ATTR_FORM, form); // TODO: Exception for embellished operators } /** {@inheritDoc} */ public String getLargeop() { return this.getMathAttribute(Mo.ATTR_LARGEOP); } /** {@inheritDoc} */ public String getLspace() { return this.getMathAttribute(Mo.ATTR_LSPACE); } /** {@inheritDoc} */ public String getMovablelimits() { final String wrongAttr = this.getMathAttribute(Mo.ATTR_MOVEABLEWRONG, false); if (wrongAttr == null) { return this.getMathAttribute(Mo.ATTR_MOVABLELIMITS); } else { return wrongAttr; } } /** {@inheritDoc} */ public String getRspace() { return this.getMathAttribute(Mo.ATTR_RSPACE); } /** {@inheritDoc} */ public void setAccent(final String accent) { this.setAttribute(Mo.ATTR_ACCENT, accent); } /** {@inheritDoc} */ public void setFence(final String fence) { this.setAttribute(Mo.ATTR_FENCE, fence); } /** {@inheritDoc} */ public void setForm(final String form) { this.setAttribute(Mo.ATTR_FORM, form); } /** {@inheritDoc} */ public void setLargeop(final String largeop) { this.setAttribute(Mo.ATTR_LARGEOP, largeop); } /** {@inheritDoc} */ public void setLspace(final String lspace) { this.setAttribute(Mo.ATTR_LSPACE, lspace); } /** {@inheritDoc} */ public void setMovablelimits(final String movablelimits) { this.setAttribute(Mo.ATTR_MOVABLELIMITS, movablelimits); } /** {@inheritDoc} */ public void setRspace(final String rspace) { this.setAttribute(Mo.ATTR_RSPACE, rspace); } /** {@inheritDoc} */ public void setSeparator(final String separator) { this.setAttribute(Mo.ATTR_SEPARATOR, separator); } /** {@inheritDoc} */ public void setStretchy(final String stretchy) { this.setAttribute(Mo.ATTR_STRETCHY, stretchy); } /** {@inheritDoc} */ public void setSymmetric(final String symmetric) { this.setAttribute(Mo.ATTR_SYMMETRIC, symmetric); } /** {@inheritDoc} */ public String getFence() { return this.getMathAttribute(Mo.ATTR_FENCE); } /** {@inheritDoc} */ public String getForm() { return this.getMathAttribute(Mo.ATTR_FORM); } /** {@inheritDoc} */ public String getSeparator() { return this.getMathAttribute(Mo.ATTR_SEPARATOR); } /** * Retrieves the JEuclid specific extension of the stretch attribute. This * method may return {@link Constants#TRUE}, {@link Constants#FALSE}, * {@link #VALUE_STRETCHY_HORIZONTAL}, {@link #VALUE_STRETCHY_VERTICAL}, or * null if no stretchy attribute is set. * * @return an JEuclid stretchy attribute. */ public String getExtendedStretchy() { final String retVal; final Attr attr = this.getAttributeNodeNS(Constants.NS_JEUCLID_EXT, Mo.ATTR_STRETCHY); if (attr == null) { retVal = this.getMathAttribute(Mo.ATTR_STRETCHY); } else { retVal = attr.getValue().trim(); } return retVal; } /** {@inheritDoc} */ public String getStretchy() { final String stretchVal = this.getExtendedStretchy(); if ((Mo.VALUE_STRETCHY_HORIZONTAL.equalsIgnoreCase(stretchVal)) || (Mo.VALUE_STRETCHY_VERTICAL.equalsIgnoreCase(stretchVal))) { return Constants.TRUE; } else { return stretchVal; } } private boolean isStretchyHorizontal(final String stretchValue) { return Mo.VALUE_STRETCHY_HORIZONTAL.equalsIgnoreCase(stretchValue) || Boolean.parseBoolean(stretchValue); } private boolean isStretchyVertical(final String stretchValue) { return Mo.VALUE_STRETCHY_VERTICAL.equalsIgnoreCase(stretchValue) || Boolean.parseBoolean(stretchValue); } private boolean isStretchy() { final String stretchValue = this.getExtendedStretchy(); return this.isStretchyHorizontal(stretchValue) || this.isStretchyVertical(stretchValue); } /** {@inheritDoc} */ public String getAccent() { return this.getMathAttribute(Mo.ATTR_ACCENT); } /** {@inheritDoc} */ public String getSymmetric() { return this.getMathAttribute(Mo.ATTR_SYMMETRIC); } private boolean isSymmetric() { return Boolean.parseBoolean(this.getSymmetric()); } /** {@inheritDoc} */ @Override public void layoutStage1(final LayoutView view, final LayoutInfo info, final LayoutStage childMinStage, final LayoutContext context) { final LayoutContext now = this.applyLocalAttributesToContext(context); final Graphics2D g = view.getGraphics(); final TextLayout t = this.produceUnstrechtedLayout(g, now); final StringUtil.TextLayoutInfo tli = StringUtil.getTextLayoutInfo(t, true); final float ascent = tli.getAscent(); final float descent = tli.getDescent(); final float xOffset = tli.getOffset(); final float contentWidth = tli.getWidth() + xOffset; final JEuclidElement parent = this.getParent(); float lspace = this.getLspaceAsFloat(now); float rspace = this.getRspaceAsFloat(now); if ((parent != null) && (parent.hasChildPostscripts(this, context))) { rspace = 0.0f; } else { rspace = this.getRspaceAsFloat(now); } if ((parent != null) && (parent.hasChildPrescripts(this))) { lspace = 0.0f; } else { lspace = this.getLspaceAsFloat(now); } info.setAscentHeight(ascent, LayoutStage.STAGE1); info.setDescentHeight(descent, LayoutStage.STAGE1); info.setHorizontalCenterOffset(lspace + contentWidth / 2.0f, LayoutStage.STAGE1); info.setWidth(lspace + contentWidth + rspace, LayoutStage.STAGE1); if (this.isStretchy()) { info.setLayoutStage(LayoutStage.STAGE1); info.setStretchAscent(0.0f); info.setStretchDescent(0.0f); } else { info.setGraphicsObject(new TextObject(t, lspace + tli.getOffset(), 0, null, (Color) now.getParameter(Parameter.MATHCOLOR))); info.setLayoutStage(LayoutStage.STAGE2); } } /** {@inheritDoc} */ @Override public void layoutStage2(final LayoutView view, final LayoutInfo info, final LayoutContext context) { final LayoutContext now = this.applyLocalAttributesToContext(context); final Graphics2D g = view.getGraphics(); final TextLayout t = this.produceUnstrechtedLayout(g, now); final float calcScaleY; final float calcScaleX; final float calcBaselineShift; final String stretchValue = this.getExtendedStretchy(); boolean stretchVertically = this.isStretchyVertical(stretchValue); final boolean stretchHorizontally = this .isStretchyHorizontal(stretchValue); JEuclidElement horizParent = null; JEuclidElement parent = this; JEuclidElement last; boolean cont; do { last = parent; parent = parent.getParent(); cont = false; if ((parent instanceof Mrow) && (parent.getMathElementCount() == 1)) { // Ignore single element Mrows. cont = true; } else if ((parent instanceof MathMLUnderOverElement) || (parent instanceof MathMLScriptElement)) { // Special Treatment for UnderOverElements to match stretchVert1 // test. final boolean isBase; if (parent instanceof MathMLUnderOverElement) { final MathMLUnderOverElement munderover = (MathMLUnderOverElement) parent; isBase = munderover.getBase() == last; } else { final MathMLScriptElement munderover = (MathMLScriptElement) parent; isBase = munderover.getBase() == last; } if (!isBase) { stretchVertically = false; } horizParent = parent; cont = true; } } while (cont); if (horizParent == null) { horizParent = parent; } final LayoutInfo parentInfo = view.getInfo(parent); final TextLayoutInfo textLayoutInfo = StringUtil.getTextLayoutInfo(t, true); if (parentInfo == null) { calcScaleX = 1.0f; calcScaleY = 1.0f; calcBaselineShift = 0.0f; } else { if (stretchVertically) { final float[] yf = this.calcYScaleFactorAndBaselineShift(info, parentInfo, textLayoutInfo, now, g); calcScaleY = yf[0]; calcBaselineShift = yf[1]; } else { calcScaleY = 1.0f; calcBaselineShift = 0.0f; } if (stretchHorizontally) { calcScaleX = this.calcXScaleFactor(info, view .getInfo(horizParent), textLayoutInfo); } else { calcScaleX = 1.0f; } } info.setGraphicsObject(new TextObject(t, this.getLspaceAsFloat(now) + textLayoutInfo.getOffset() * calcScaleX, calcBaselineShift, AffineTransform.getScaleInstance(calcScaleX, calcScaleY), (Color) now.getParameter(Parameter.MATHCOLOR))); info.setLayoutStage(LayoutStage.STAGE2); } private float calcXScaleFactor(final LayoutInfo info, final LayoutInfo parentInfo, final TextLayoutInfo textLayoutInfo) { final float calcScaleX; final float rstretchWidth = parentInfo.getStretchWidth(); if (rstretchWidth > 0.0f) { final float realwidth = textLayoutInfo.getWidth(); if (realwidth > 0) { final float stretchWidth = Math.max(realwidth, rstretchWidth); calcScaleX = stretchWidth / realwidth; info.setWidth(stretchWidth, LayoutStage.STAGE2); info.setHorizontalCenterOffset(stretchWidth / 2.0f, LayoutStage.STAGE2); } else { calcScaleX = 1.0f; } } else { calcScaleX = 1.0f; } return calcScaleX; } private float[] calcYScaleFactorAndBaselineShift(final LayoutInfo info, final LayoutInfo parentInfo, final TextLayoutInfo textLayoutInfo, final LayoutContext now, final Graphics2D g2d) { final float calcScaleY; final float calcBaselineShift; final float realDescent = textLayoutInfo.getDescent(); final float realAscent = textLayoutInfo.getAscent(); float targetNAscent; float targetNDescent; if (this.isFence()) { targetNAscent = Math.max(parentInfo .getAscentHeight(LayoutStage.STAGE1), realAscent); targetNDescent = Math.max(parentInfo .getDescentHeight(LayoutStage.STAGE1), realDescent); } else { targetNAscent = Math.max(parentInfo.getStretchAscent(), realAscent); targetNDescent = Math.max(parentInfo.getStretchDescent(), realDescent); } if (this.isSymmetric()) { final float middle = this.getMiddleShift(g2d, now); final float ascentAboveMiddle = targetNAscent - middle; final float descentBelowMiddle = targetNDescent + middle; final float halfHeight = Math.max(ascentAboveMiddle, descentBelowMiddle); targetNAscent = halfHeight + middle; targetNDescent = halfHeight - middle; } final float targetNHeight = targetNAscent + targetNDescent; final float realHeight = realAscent + realDescent; // TODO: MaxSize / MinSize could also be inherited from MStyle. final float maxSize = AttributesHelper.parseRelativeSize(this .getMaxsize(), now, realHeight); final float minSize = AttributesHelper.parseRelativeSize(this .getMinsize(), now, realHeight); final float targetHeight = Math.max(Math.min(targetNHeight, maxSize), minSize); final float targetDescent = targetHeight / targetNHeight * (targetNHeight / 2.0f) - (targetNHeight / 2.0f - targetNDescent); if (realHeight > 0.0f) { calcScaleY = targetHeight / realHeight; } else { calcScaleY = 1.0f; } final float realDescentScaled = realDescent * calcScaleY; calcBaselineShift = targetDescent - realDescentScaled; info.setDescentHeight(targetDescent, LayoutStage.STAGE2); info.setAscentHeight(targetHeight - targetDescent, LayoutStage.STAGE2); return new float[] { calcScaleY, calcBaselineShift }; } /** {@inheritDoc} */ public void handleEvent(final Event evt) { this.changeHook(); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000000202211335260530034510 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v ba4563de481e 2007/07/01 10:45:52 maxberger $ */ /** Token Elements presentation element support (3.2).

This package contains support for token elements presentation elements, as defined in http://www.w3.org/TR/MathML/chapter3.html#presm.tokel

*/ package net.sourceforge.jeuclid.elements.presentation.token; ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/Mn.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000000302111335260530034510 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mn.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class presents numbers in a equation. * * @version $Revision: 923658a2b249 $ */ public final class Mn extends AbstractTokenWithTextLayout { /** * The XML element from this class. */ public static final String ELEMENT = "mn"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mn(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mn(this.nodeName, this.ownerDocument); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/Mglyph.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000001114611335260530034517 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mglyph.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import java.awt.Font; import java.awt.font.TextAttribute; import java.text.AttributedCharacterIterator; import java.text.AttributedString; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.text.StringUtil; import net.sourceforge.jeuclid.elements.support.text.TextContentModifier; import net.sourceforge.jeuclid.font.FontFactory; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLGlyphElement; /** * Implements the mglyph element. * *

* TODO: FontFamliy gives a "deprecated attribute" warning due to the current * design. *

* TODO: other attributes (such as italic, bold, etc.) may be inherited from the * context. * * @version $Revision: 923658a2b249 $ */ public final class Mglyph extends AbstractTokenWithTextLayout implements MathMLGlyphElement, TextContentModifier { /** * The XML element from this class. */ public static final String ELEMENT = "mglyph"; private static final String ATTR_ALT = "alt"; private static final String ATTR_FONTFAMILY = "fontfamily"; private static final String ATTR_INDEX = "index"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mglyph(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mglyph(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public AttributedCharacterIterator modifyTextContent( final AttributedCharacterIterator aci, final LayoutContext now) { final AttributedString retVal; final String ffamily = this.getFontfamily(); final String fontFamily; if (ffamily == null) { fontFamily = "serif"; } else { fontFamily = ffamily.trim(); } final Font font = FontFactory.getInstance().getFont(fontFamily, Font.PLAIN, GraphicsSupport.getFontsizeInPoint(now)); final int codePoint = this.getIndex(); if ((codePoint > 0) && (font.getFamily().equalsIgnoreCase(fontFamily)) && (font.canDisplay(codePoint))) { retVal = new AttributedString(new String(new int[] { codePoint }, 0, 1)); retVal.addAttribute(TextAttribute.FONT, font); } else { retVal = StringUtil.convertStringtoAttributedString(this.getAlt(), this.getMathvariantAsVariant(), GraphicsSupport .getFontsizeInPoint(now), now); } return retVal.getIterator(); } /** {@inheritDoc} */ public String getAlt() { return this.getMathAttribute(Mglyph.ATTR_ALT); } /** {@inheritDoc} */ public String getFontfamily() { return this.getMathAttribute(Mglyph.ATTR_FONTFAMILY); } /** {@inheritDoc} */ public int getIndex() { int retVal = 0; final String indexStr = this.getMathAttribute(Mglyph.ATTR_INDEX); try { if (indexStr != null) { retVal = Integer.parseInt(indexStr); } } catch (final NumberFormatException e) { retVal = 0; } return retVal; } /** {@inheritDoc} */ public void setAlt(final String alt) { this.setAttribute(Mglyph.ATTR_ALT, alt); } /** {@inheritDoc} */ public void setFontfamily(final String fontfamily) { this.setAttribute(Mglyph.ATTR_FONTFAMILY, fontfamily); } /** {@inheritDoc} */ public void setIndex(final int index) { this.setAttribute(Mglyph.ATTR_INDEX, Integer.toString(index)); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/Mspace.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000001100111335260530034505 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mspace.java,v b2e8c71e4a50 2009/09/10 16:00:50 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLSpaceElement; /** * This class presents a mspace. * *

* TODO: linebreak is unimplemented * * @version $Revision: b2e8c71e4a50 $ */ public final class Mspace extends AbstractJEuclidElement implements MathMLSpaceElement { /** * The XML element from this class. */ public static final String ELEMENT = "mspace"; /** Attribute for width. */ public static final String ATTR_WIDTH = "width"; /** Attribute for height. */ public static final String ATTR_HEIGHT = "height"; /** Attribute for depth. */ public static final String ATTR_DEPTH = "depth"; /** Attribute for linebreak. */ public static final String ATTR_LINEBREAK = "linebreak"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mspace(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mspace.ATTR_DEPTH, Constants.ZERO); this.setDefaultMathAttribute(Mspace.ATTR_HEIGHT, Constants.ZERO); this.setDefaultMathAttribute(Mspace.ATTR_WIDTH, Constants.ZERO); this.setDefaultMathAttribute(Mspace.ATTR_LINEBREAK, "auto"); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mspace(this.nodeName, this.ownerDocument); } /** * @return Space width */ public String getWidth() { return this.getMathAttribute(Mspace.ATTR_WIDTH); } /** * @param width * Space width */ public void setWidth(final String width) { this.setAttribute(Mspace.ATTR_WIDTH, width); } /** * @return Space height */ public String getHeight() { return this.getMathAttribute(Mspace.ATTR_HEIGHT); } /** * @param height * Space height */ public void setHeight(final String height) { this.setAttribute(Mspace.ATTR_HEIGHT, height); } /** * @return Space depth */ public String getDepth() { return this.getMathAttribute(Mspace.ATTR_DEPTH); } /** * @param depth * Space depth */ public void setDepth(final String depth) { this.setAttribute(Mspace.ATTR_DEPTH, depth); } /** {@inheritDoc} */ @Override protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { final LayoutContext now = this.applyLocalAttributesToContext(context); info.setAscentHeight(AttributesHelper.convertSizeToPt(this.getHeight(), now, AttributesHelper.PT), stage); info.setDescentHeight(AttributesHelper.convertSizeToPt(this.getDepth(), now, AttributesHelper.PT), stage); info.setWidth(AttributesHelper.convertSizeToPt(this.getWidth(), now, AttributesHelper.PT), stage); } /** {@inheritDoc} */ public String getLinebreak() { return this.getMathAttribute(Mspace.ATTR_LINEBREAK); } /** {@inheritDoc} */ public void setLinebreak(final String linebreak) { this.setAttribute(Mspace.ATTR_LINEBREAK, linebreak); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/Mi.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000000376311335260530034525 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mi.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class presents a mathematical identifier, like "x". * * @version $Revision: 923658a2b249 $ */ public final class Mi extends AbstractTokenWithTextLayout { /** * The XML element from this class. */ public static final String ELEMENT = "mi"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mi(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mi(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public void changeHook() { super.changeHook(); if (this.getText().length() == 1) { this.setDefaultMathAttribute( AbstractJEuclidElement.ATTR_MATHVARIANT, "italic"); } else { this.setDefaultMathAttribute( AbstractJEuclidElement.ATTR_MATHVARIANT, "normal"); } } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/Mtext.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000000307611335260530034522 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mtext.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class presents text in a equation and contains some utility methods. * * @version $Revision: 923658a2b249 $ */ public final class Mtext extends AbstractTokenWithTextLayout { /** * The XML element from this class. */ public static final String ELEMENT = "mtext"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mtext(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mtext(this.nodeName, this.ownerDocument); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/Ms.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/token/0000644000175000017500000000775511335260530034532 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Ms.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.elements.presentation.token; import java.text.AttributedCharacterIterator; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; import net.sourceforge.jeuclid.elements.support.text.MultiAttributedCharacterIterator; import net.sourceforge.jeuclid.elements.support.text.StringUtil; import net.sourceforge.jeuclid.elements.support.text.TextContentModifier; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLStringLitElement; /** * This class represents string in a equation. * * @version $Revision: 923658a2b249 $ */ public final class Ms extends AbstractTokenWithTextLayout implements MathMLStringLitElement, TextContentModifier { /** * The XML element from this class. */ public static final String ELEMENT = "ms"; /** Attribute for lquote. */ public static final String ATTR_LQUOTE = "lquote"; /** Attribute for rquote. */ public static final String ATTR_RQUOTE = "rquote"; private static final String VALUE_DOUBLEQUOTE = "\""; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Ms(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Ms.ATTR_LQUOTE, Ms.VALUE_DOUBLEQUOTE); this.setDefaultMathAttribute(Ms.ATTR_RQUOTE, Ms.VALUE_DOUBLEQUOTE); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Ms(this.nodeName, this.ownerDocument); } /** * @param lquote * Left quote */ public void setLquote(final String lquote) { this.setAttribute(Ms.ATTR_LQUOTE, lquote); } /** * @return Left quote */ public String getLquote() { return this.getMathAttribute(Ms.ATTR_LQUOTE); } /** * @param rquote * Right quota */ public void setRquote(final String rquote) { this.setAttribute(Ms.ATTR_RQUOTE, rquote); } /** * @return Right quote */ public String getRquote() { return this.getMathAttribute(Ms.ATTR_RQUOTE); } /** {@inheritDoc} */ public AttributedCharacterIterator modifyTextContent( final AttributedCharacterIterator aci, final LayoutContext layoutContext) { final float fontSizeInPoint = GraphicsSupport .getFontsizeInPoint(layoutContext); final MathVariant variant = this.getMathvariantAsVariant(); final MultiAttributedCharacterIterator maci = new MultiAttributedCharacterIterator(); maci.appendAttributedCharacterIterator(StringUtil .convertStringtoAttributedString(this.getLquote(), variant, fontSizeInPoint, layoutContext).getIterator()); maci.appendAttributedCharacterIterator(aci); maci.appendAttributedCharacterIterator(StringUtil .convertStringtoAttributedString(this.getRquote(), variant, fontSizeInPoint, layoutContext).getIterator()); return maci; } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000755000175000017500000000000011335260530034554 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Merror.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000000402211335260530034554 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Merror.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.awt.Color; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.StyleAttributeLayoutContext; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * Represents an merror element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Merror extends AbstractContainer { /** * The XML element from this class. */ public static final String ELEMENT = "merror"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Merror(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Merror(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public LayoutContext applyLocalAttributesToContext( final LayoutContext context) { return super .applyLocalAttributesToContext(new StyleAttributeLayoutContext( context, null, Color.RED)); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Mfrac.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000002761111335260530034565 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mfrac.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.Dimension2D; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.InlineLayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.support.Dimension2DImpl; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.elements.support.attributes.HAlign; import net.sourceforge.jeuclid.layout.GraphicsObject; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableNode; import net.sourceforge.jeuclid.layout.LineObject; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLFractionElement; /** * This math element presents a mathematical fraction. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mfrac extends AbstractJEuclidElement implements MathMLFractionElement { /** * The XML element from this class. */ public static final String ELEMENT = "mfrac"; /** * Tilt angle for frac. */ public static final float FRAC_TILT_ANGLE = 0.577f; /** * Attribute name of the linethickness property. */ public static final String ATTR_LINETHICKNESS = "linethickness"; /** The wrong beveled attribute. */ public static final String ATTR_BEVELED_WRONG = "beveled"; /** The real beveled attribute. */ public static final String ATTR_BEVELLED = "bevelled"; /** The numalign attribute. */ public static final String ATTR_NUMALIGN = "numalign"; /** The denomalign attribute. */ public static final String ATTR_DENOMALIGN = "denomalign"; private static final String EXTRA_SPACE_AROUND = "0.1em"; private static final long serialVersionUID = 1L; /** * Lines thinner than this are ignored. */ private static final float NOLINE_THRESHHOLD = 0.001f; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mfrac(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mfrac.ATTR_LINETHICKNESS, "1"); this.setDefaultMathAttribute(Mfrac.ATTR_BEVELLED, Boolean.FALSE .toString()); this.setDefaultMathAttribute(Mfrac.ATTR_NUMALIGN, HAlign.ALIGN_CENTER); this .setDefaultMathAttribute(Mfrac.ATTR_DENOMALIGN, HAlign.ALIGN_CENTER); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mfrac(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { return new InlineLayoutContext(this .applyLocalAttributesToContext(context), !((Boolean) context .getParameter(Parameter.MFRAC_KEEP_SCRIPTLEVEL)).booleanValue()); } /** * Sets the thickness of the fraction line. * * @param newLinethickness * Thickness */ public void setLinethickness(final String newLinethickness) { this.setAttribute(Mfrac.ATTR_LINETHICKNESS, newLinethickness); } /** * @return thickness of the fraction line * @param context * LayoutContext to use * @param g * Graphics2D context to use. */ public float getLinethickness(final Graphics2D g, final LayoutContext context) { final String sThickness = this.getLinethickness(); float thickness; try { thickness = Float.parseFloat(sThickness); thickness *= GraphicsSupport.lineWidth(context); } catch (final NumberFormatException nfe) { thickness = AttributesHelper.convertSizeToPt(sThickness, this .applyLocalAttributesToContext(context), AttributesHelper.PT); if ((thickness < GraphicsSupport.MIN_LINEWIDTH) && (thickness >= Mfrac.NOLINE_THRESHHOLD)) { thickness = GraphicsSupport.MIN_LINEWIDTH; } } return thickness; } /** * Set value of the beveled attribute. * * @param bevelled * Value */ public void setBevelled(final String bevelled) { this.setAttribute(Mfrac.ATTR_BEVELLED, bevelled); } /** * @return Value of beveled attribute */ public String getBevelled() { final String wrongAttr = this.getMathAttribute( Mfrac.ATTR_BEVELED_WRONG, false); if (wrongAttr == null) { return this.getMathAttribute(Mfrac.ATTR_BEVELLED); } else { return wrongAttr; } } /** {@inheritDoc} */ public MathMLElement getDenominator() { return this.getMathElement(1); } /** {@inheritDoc} */ public String getLinethickness() { return this.getMathAttribute(Mfrac.ATTR_LINETHICKNESS); } /** {@inheritDoc} */ public MathMLElement getNumerator() { return this.getMathElement(0); } /** {@inheritDoc} */ public void setDenominator(final MathMLElement denominator) { this.setMathElement(1, denominator); } /** {@inheritDoc} */ public void setNumerator(final MathMLElement numerator) { this.setMathElement(0, numerator); } /** {@inheritDoc} */ public String getDenomalign() { return this.getMathAttribute(Mfrac.ATTR_DENOMALIGN); } /** {@inheritDoc} */ public String getNumalign() { return this.getMathAttribute(Mfrac.ATTR_NUMALIGN); } /** {@inheritDoc} */ public void setDenomalign(final String denomalign) { this.setAttribute(Mfrac.ATTR_DENOMALIGN, denomalign); } /** {@inheritDoc} */ public void setNumalign(final String numalign) { this.setAttribute(Mfrac.ATTR_NUMALIGN, numalign); } /** {@inheritDoc} */ @Override protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { final Graphics2D g = view.getGraphics(); final float middleShift = this.getMiddleShift(g, context); final boolean beveled = Boolean.parseBoolean(this.getBevelled()); final float linethickness = this.getLinethickness(g, context); final float extraSpace = AttributesHelper.convertSizeToPt( Mfrac.EXTRA_SPACE_AROUND, this .applyLocalAttributesToContext(context), ""); final LayoutInfo numerator = view.getInfo((LayoutableNode) this .getNumerator()); final LayoutInfo denominator = view.getInfo((LayoutableNode) this .getDenominator()); if (beveled) { this.layoutBeveled(info, stage, middleShift, linethickness, extraSpace, numerator, denominator, context); } else { this.layoutStacked(info, stage, middleShift, linethickness, extraSpace, numerator, denominator, context); } final Dimension2D borderLeftTop = new Dimension2DImpl(extraSpace + linethickness, 0.0f); final Dimension2D borderRightBottom = new Dimension2DImpl(extraSpace + linethickness, 0.0f); ElementListSupport.fillInfoFromChildren(view, info, this, stage, borderLeftTop, borderRightBottom); } // CHECKSTYLE:OFF // More than 7 parameters - but only used here, so this is ok. private void layoutStacked(final LayoutInfo info, final LayoutStage stage, final float middleShift, final float linethickness, final float extraSpace, final LayoutInfo numerator, final LayoutInfo denominator, final LayoutContext context) { // CHECKSTLYE:ON final float numWidth = numerator.getWidth(stage); final float denumWidth = denominator.getWidth(stage); final float width = Math.max(denumWidth, numWidth); final float numOffset = HAlign.parseString(this.getNumalign(), HAlign.CENTER).getHAlignOffset(stage, numerator, width); final float denumOffset = HAlign.parseString(this.getDenomalign(), HAlign.CENTER).getHAlignOffset(stage, denominator, width); numerator .moveTo( numOffset + extraSpace, -(middleShift + linethickness / 2.0f + extraSpace + numerator .getDescentHeight(stage)), stage); denominator.moveTo(denumOffset + extraSpace, -middleShift + linethickness / 2.0f + extraSpace + denominator.getAscentHeight(stage), stage); if (linethickness > Mfrac.NOLINE_THRESHHOLD) { final GraphicsObject line = new LineObject(extraSpace, -middleShift, extraSpace + width, -middleShift, linethickness, (Color) this.applyLocalAttributesToContext( context).getParameter(Parameter.MATHCOLOR)); info.setGraphicsObject(line); } } // CHECKSTYLE:OFF // More than 7 parameters - but only used here, so this is ok. private void layoutBeveled(final LayoutInfo info, final LayoutStage stage, final float middleShift, final float linethickness, final float extraSpace, final LayoutInfo numerator, final LayoutInfo denominator, final LayoutContext context) { // CHECKSTYLE:ON final float numPosY = -middleShift / 2.0f + numerator.getDescentHeight(stage); final float denPosY = middleShift / 2.0f + denominator.getDescentHeight(stage); final float totalAscent = Math.max(-numPosY + numerator.getAscentHeight(stage), -denPosY + denominator.getAscentHeight(stage)); final float totalDescent = Math.max(numPosY + numerator.getDescentHeight(stage), denPosY + denominator.getDescentHeight(stage)); final float totalHeight = totalAscent + totalDescent; final float lineWidth = totalHeight * Mfrac.FRAC_TILT_ANGLE; numerator.moveTo(extraSpace, numPosY, stage); float posX = numerator.getWidth(stage) + extraSpace; if (linethickness > Mfrac.NOLINE_THRESHHOLD) { final GraphicsObject line = new LineObject(posX, totalDescent, lineWidth + posX, totalDescent - totalHeight, linethickness, (Color) this.applyLocalAttributesToContext( context).getParameter(Parameter.MATHCOLOR)); info.setGraphicsObject(line); } posX += lineWidth; denominator.moveTo(posX, denPosY, stage); } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000000205611335260530034561 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v ba4563de481e 2007/07/01 10:45:52 maxberger $ */ /** General Layout Schemata presentation element support (3.3).

This package contains support for general layout schemata presentation elements, as defined in http://www.w3.org/TR/MathML/chapter3.html#presm.genlayout

*/ package net.sourceforge.jeuclid.elements.presentation.general; ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Mstyle.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000003125511335260530034564 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mstyle.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Display; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import org.apache.batik.dom.AbstractDocument; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLStyleElement; /** * This class arrange an element lower to an other element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mstyle extends AbstractContainer implements MathMLStyleElement { /** Attribute for scriptminsize. */ public static final String ATTR_SCRIPTMINSIZE = "scriptminsize"; /** Attribute for scriptlevel. */ public static final String ATTR_SCRIPTLEVEL = "scriptlevel"; /** Attribute for scriptsizemultiplier. */ public static final String ATTR_SCRIPTSIZEMULTIPLIER = "scriptsizemultiplier"; /** Attribute for displaystyle. */ public static final String ATTR_DISPLAYSTYLE = "displaystyle"; /** * The XML element from this class. */ public static final String ELEMENT = "mstyle"; /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(Mstyle.class); private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mstyle(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mstyle.ATTR_DISPLAYSTYLE, ""); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mstyle(this.nodeName, this.ownerDocument); } /** * @return Script level */ public String getScriptlevel() { return this.getMathAttribute(Mstyle.ATTR_SCRIPTLEVEL); } /** * @param scriptlevel * script level */ public void setScriptlevel(final String scriptlevel) { this.setAttribute(Mstyle.ATTR_SCRIPTLEVEL, scriptlevel); } /** * @return Minimum of script size */ public String getScriptminsize() { return this.getMathAttribute(Mstyle.ATTR_SCRIPTMINSIZE); } /** * @param scriptminsize * Minimum of script size */ public void setScriptminsize(final String scriptminsize) { this.setAttribute(Mstyle.ATTR_SCRIPTMINSIZE, scriptminsize); } private class StyleLayoutContext implements LayoutContext { private final LayoutContext context; protected StyleLayoutContext(final LayoutContext parentContext) { this.context = parentContext; } public Object getParameter(final Parameter which) { Object retVal = Mstyle.this.applyLocalAttributesToContext( this.context).getParameter(which); if (Parameter.DISPLAY.equals(which)) { retVal = this.applyDisplay(retVal); } else if (Parameter.SCRIPTLEVEL.equals(which)) { retVal = this.applyScriptlevel(retVal); } else if (Parameter.SCRIPTMINSIZE.equals(which)) { retVal = this.applyScriptMinsize(retVal); } return retVal; } private Object applyScriptMinsize(final Object parentLevel) { final String newMinsize = Mstyle.this.getScriptminsize(); if ((newMinsize != null) && (newMinsize.length() > 0)) { return AttributesHelper.convertSizeToPt(newMinsize, this.context, AttributesHelper.PT); } else { return parentLevel; } } private Object applyScriptlevel(final Object parentLevel) { Object retVal = parentLevel; String attr = Mstyle.this.getScriptlevel(); if (attr == null) { attr = ""; } attr = attr.trim(); if (attr.length() > 0) { final char firstchar = attr.charAt(0); boolean relative = false; if (firstchar == '+') { relative = true; attr = attr.substring(1); } else if (firstchar == '-') { relative = true; } try { final int iValue = Integer.parseInt(attr); if (relative) { retVal = (Integer) retVal + iValue; } else { retVal = iValue; } } catch (final NumberFormatException e) { Mstyle.LOGGER .warn("Error in scriptlevel attribute for mstyle: " + attr); } } return retVal; } private Object applyDisplay(final Object parentDisplay) { Object retVal = parentDisplay; final String displayStyle = Mstyle.this.getDisplaystyle(); if ("true".equalsIgnoreCase(displayStyle)) { retVal = Display.BLOCK; } if ("false".equalsIgnoreCase(displayStyle)) { retVal = Display.INLINE; } return retVal; } } /** {@inheritDoc} */ @Override public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { return new Mstyle.StyleLayoutContext(context); } /** {@inheritDoc} */ public String getBackground() { return this.getMathbackground(); } /** {@inheritDoc} */ public String getColor() { return this.getMathcolor(); } /** {@inheritDoc} */ public String getDisplaystyle() { return this.getMathAttribute(Mstyle.ATTR_DISPLAYSTYLE); } /** {@inheritDoc} */ public String getScriptsizemultiplier() { return this.getMathAttribute(Mstyle.ATTR_SCRIPTSIZEMULTIPLIER); } /** {@inheritDoc} */ public void setBackground(final String background) { this.setMathbackground(background); } /** {@inheritDoc} */ public void setColor(final String color) { this.setMathcolor(color); } /** {@inheritDoc} */ public void setDisplaystyle(final String displaystyle) { this.setAttribute(Mstyle.ATTR_DISPLAYSTYLE, displaystyle); } /** {@inheritDoc} */ public void setScriptsizemultiplier(final String scriptsizemultiplier) { this.setAttribute(Mstyle.ATTR_SCRIPTSIZEMULTIPLIER, scriptsizemultiplier); } /** {@inheritDoc} */ public String getMediummathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getNegativemediummathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getNegativethickmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getNegativethinmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getNegativeverythickmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getNegativeverythinmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getNegativeveryverythickmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getNegativeveryverythinmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getThickmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getThinmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getVerythickmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getVerythinmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getVeryverythickmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public String getVeryverythinmathspace() { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setMediummathspace(final String mediummathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setNegativemediummathspace(final String negativemediummathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setNegativethickmathspace(final String negativethickmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setNegativethinmathspace(final String negativethinmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setNegativeverythickmathspace( final String negativeverythickmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setNegativeverythinmathspace( final String negativeverythinmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setNegativeveryverythickmathspace( final String negativeveryverythickmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setNegativeveryverythinmathspace( final String negativeveryverythinmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setThickmathspace(final String thickmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setThinmathspace(final String thinmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setVerythickmathspace(final String verythickmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setVerythinmathspace(final String verythinmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setVeryverythickmathspace(final String veryverythickmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } /** {@inheritDoc} */ public void setVeryverythinmathspace(final String veryverythinmathspace) { throw new UnsupportedOperationException(); // TODO Auto-generated method stub } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Mrow.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000000312211335260530034554 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mrow.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class presents a row. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mrow extends AbstractContainer { /** * The XML element from this class. */ public static final String ELEMENT = "mrow"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mrow(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mrow(this.nodeName, this.ownerDocument); } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Mpadded.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000000622311335260530034561 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mpadded.java,v 2986a8eeaebc 2009/09/24 14:53:08 max $ */ package net.sourceforge.jeuclid.elements.presentation.general; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLPaddedElement; /** * This class implements the mpadded element. *

* TODO: none of the attributes are actually implemented yet. * * @version $Revision: 2986a8eeaebc $ */ public final class Mpadded extends AbstractContainer implements MathMLPaddedElement { /** constant for depth attribute. */ public static final String ATTR_DEPTH = "depth"; /** constant for height attribute. */ public static final String ATTR_HEIGHT = "height"; /** constant for lspace attribute. */ public static final String ATTR_LSPACE = "lspace"; /** constant for width attribute. */ public static final String ATTR_WIDTH = "width"; /** * The MathML element name for this class. */ public static final String ELEMENT = "mpadded"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mpadded(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mpadded(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public String getDepth() { return this.getMathAttribute(Mpadded.ATTR_DEPTH); } /** {@inheritDoc} */ public String getHeight() { return this.getMathAttribute(Mpadded.ATTR_HEIGHT); } /** {@inheritDoc} */ public String getLspace() { return this.getMathAttribute(Mpadded.ATTR_LSPACE); } /** {@inheritDoc} */ public String getWidth() { return this.getMathAttribute(Mpadded.ATTR_WIDTH); } /** {@inheritDoc} */ public void setDepth(final String depth) { this.setAttribute(Mpadded.ATTR_DEPTH, depth); } /** {@inheritDoc} */ public void setHeight(final String height) { this.setAttribute(Mpadded.ATTR_HEIGHT, height); } /** {@inheritDoc} */ public void setLspace(final String lspace) { this.setAttribute(Mpadded.ATTR_LSPACE, lspace); } /** {@inheritDoc} */ public void setWidth(final String width) { this.setAttribute(Mpadded.ATTR_WIDTH, width); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Mphantom.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000000361511335260530034563 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mphantom.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.util.Collections; import java.util.List; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class represents a phantom of a math element. This is used as spacer. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mphantom extends AbstractContainer { /** * The XML element from this class. */ public static final String ELEMENT = "mphantom"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mphantom(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mphantom(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public List getChildrenToDraw() { return Collections.emptyList(); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Menclose.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000004031311335260530034557 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Menclose.java,v 353eda94b8dd 2009/10/14 12:04:09 max $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.awt.Color; import java.awt.geom.Dimension2D; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Stack; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.AbstractElementWithDelegates; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import net.sourceforge.jeuclid.elements.support.Dimension2DImpl; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.layout.GraphicsObject; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableNode; import net.sourceforge.jeuclid.layout.LineObject; import org.apache.batik.dom.AbstractDocument; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLEncloseElement; /** * Class for supporting "menclose" elements. * * @version $Revision: 353eda94b8dd $ */ public final class Menclose extends AbstractElementWithDelegates implements MathMLEncloseElement { /** * The XML element from this class. */ public static final String ELEMENT = "menclose"; /** The notation attribute. */ public static final String ATTR_NOTATION = "notation"; private static final String LONGDIV = "longdiv"; /** * base class for all row-like notations. * */ private abstract static class AbstractRowLikeNotation extends AbstractContainer { /** * No data, so SUID is does not matter. */ private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractRowLikeNotation(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { final LayoutContext now = this .applyLocalAttributesToContext(context); final Dimension2D borderLeftTop = this.getBorderLeftTop(now); final float borderLeft = (float) borderLeftTop.getWidth(); if (borderLeft > 0.0f) { view.getInfo((LayoutableNode) this.getFirstChild()).moveTo( borderLeft, 0, stage); } ElementListSupport.fillInfoFromChildren(view, info, this, stage, borderLeftTop, this.getBorderRightBottom(now)); this.enclHook(info, stage, this.applyLocalAttributesToContext(now)); } /** * Add left / top border to enclosed object. * * @param now * current Layout Context * @return Left and Top border */ protected Dimension2D getBorderLeftTop(final LayoutContext now) { return new Dimension2DImpl(0.0f, 0.0f); } /** * Add right / bottom border to enclosed object. * * @param now * current Layout Context * @return Right and Bottom border */ protected Dimension2D getBorderRightBottom(final LayoutContext now) { return new Dimension2DImpl(0.0f, 0.0f); } /** * Add Graphic objects to enclosed object. * * @param info * Layout Info * @param stage * current Layout Stage * @param now * current Layout Context */ protected abstract void enclHook(final LayoutInfo info, final LayoutStage stage, final LayoutContext now); } /** * Represents the US long-division notation, to support the notation * "longdiv". * */ private static final class Longdiv extends Menclose.AbstractRowLikeNotation { private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Longdiv(final String qname, final AbstractDocument odoc) { super(qname, odoc); } @Override protected Node newNode() { return new Longdiv(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override protected Dimension2D getBorderLeftTop(final LayoutContext now) { final float lineSpace = GraphicsSupport.lineWidth(now) * 2; return new Dimension2DImpl(AttributesHelper.convertSizeToPt( "0.25em", now, null) + lineSpace, lineSpace); } /** {@inheritDoc} */ @Override protected void enclHook(final LayoutInfo info, final LayoutStage stage, final LayoutContext now) { final List graphicObjects = info .getGraphicObjects(); graphicObjects.clear(); final float lineWidth = GraphicsSupport.lineWidth(now); final float top = info.getAscentHeight(stage) + lineWidth; final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); graphicObjects.add(new LineObject(lineWidth, -top, lineWidth, info .getDescentHeight(stage), lineWidth, color)); graphicObjects.add(new LineObject(lineWidth, -top, info .getWidth(stage), -top, lineWidth, color)); } } /** * Up-Diagonal Strike. * */ private static final class Updiagonalstrike extends Menclose.AbstractRowLikeNotation { private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Updiagonalstrike(final String qname, final AbstractDocument odoc) { super(qname, odoc); } @Override protected Node newNode() { return new Updiagonalstrike(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override protected void enclHook(final LayoutInfo info, final LayoutStage stage, final LayoutContext now) { final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); final float lineWidth = GraphicsSupport.lineWidth(now); info.setGraphicsObject(new LineObject(0, info .getDescentHeight(stage), info.getWidth(stage), -info .getAscentHeight(stage), lineWidth, color)); } } /** * Down-Diagonal Strike. * */ private static final class Downdiagonalstrike extends Menclose.AbstractRowLikeNotation { private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Downdiagonalstrike(final String qname, final AbstractDocument odoc) { super(qname, odoc); } @Override protected Node newNode() { return new Downdiagonalstrike(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override protected void enclHook(final LayoutInfo info, final LayoutStage stage, final LayoutContext now) { final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); final float lineWidth = GraphicsSupport.lineWidth(now); info.setGraphicsObject(new LineObject(0, -info .getAscentHeight(stage), info.getWidth(stage), info .getDescentHeight(stage), lineWidth, color)); } } private static final class Actuarial extends Menclose.AbstractRowLikeNotation { private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Actuarial(final String qname, final AbstractDocument odoc) { super(qname, odoc); } @Override protected Node newNode() { return new Actuarial(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override protected Dimension2D getBorderLeftTop(final LayoutContext now) { final float lineSpace = GraphicsSupport.lineWidth(now) * 2; return new Dimension2DImpl(0.0f, lineSpace); } /** {@inheritDoc} */ @Override protected Dimension2D getBorderRightBottom(final LayoutContext now) { final float lineSpace = GraphicsSupport.lineWidth(now) * 2; return new Dimension2DImpl(lineSpace, 0.0f); } /** {@inheritDoc} */ @Override protected void enclHook(final LayoutInfo info, final LayoutStage stage, final LayoutContext now) { final List graphicObjects = info .getGraphicObjects(); graphicObjects.clear(); final float lineWidth = GraphicsSupport.lineWidth(now); final float top = info.getAscentHeight(stage) + lineWidth; final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); graphicObjects.add(new LineObject(0, -top, info.getWidth(stage) - lineWidth, -top, lineWidth, color)); graphicObjects.add(new LineObject(info.getWidth(stage) - lineWidth, -top, info.getWidth(stage) - lineWidth, info .getDescentHeight(stage), lineWidth, color)); } } /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(Menclose.class); private static final Map> IMPL_CLASSES = new HashMap>();; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Menclose(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Menclose.ATTR_NOTATION, Menclose.LONGDIV); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Menclose(this.nodeName, this.ownerDocument); } /** * @return notation of menclose element */ public String getNotation() { return this.getMathAttribute(Menclose.ATTR_NOTATION); } /** * Sets notation for menclose element. * * @param notation * Notation */ public void setNotation(final String notation) { this.setAttribute(Menclose.ATTR_NOTATION, notation); } /** {@inheritDoc} */ @Override protected List createDelegates() { final Stack> notationImpls = this.parseNotations(); JEuclidElement lastChild = this.ensureSingleChild(); lastChild = this.createStackOfDelegates(notationImpls, lastChild); return Collections.singletonList((LayoutableNode) lastChild); } private JEuclidElement createStackOfDelegates( final Stack> notationImpls, final JEuclidElement oldChild) { JEuclidElement lastChild = oldChild; while (!notationImpls.isEmpty()) { final Constructor con = notationImpls.pop(); try { final JEuclidElement element = (JEuclidElement) con .newInstance("saklsdiwet:menclosechild", this.ownerDocument); element.appendChild(lastChild); lastChild = element; } catch (final InstantiationException e) { Menclose.LOGGER.warn(e); } catch (final IllegalAccessException e) { Menclose.LOGGER.warn(e); } catch (final InvocationTargetException e) { Menclose.LOGGER.warn(e); } } return lastChild; } /** * This is just to make sure that there is at least one delegate, and that * each of the standard delegates has exactly one child. * * @return a single JEuclidElement. */ private JEuclidElement ensureSingleChild() { final JEuclidElement lastChild; if (this.getMathElementCount() == 1) { lastChild = this.getMathElement(0); } else { lastChild = (JEuclidElement) this.ownerDocument .createElement(Mrow.ELEMENT); for (final Node child : ElementListSupport .createListOfChildren(this)) { lastChild.appendChild(child); } } return lastChild; } private Stack> parseNotations() { final String[] notations = this.getNotation().split(" "); final Stack> notationImpls = new Stack>(); for (final String curNotation : notations) { final Constructor con = Menclose.IMPL_CLASSES.get(curNotation .toLowerCase(Locale.ENGLISH)); if (con == null) { if (curNotation.length() > 0) { Menclose.LOGGER.info("Unsupported notation for menclose: " + curNotation); } } else { notationImpls.push(con); } } return notationImpls; } static { try { Menclose.IMPL_CLASSES.put("radical", Msqrt.class.getConstructor( String.class, AbstractDocument.class)); Menclose.IMPL_CLASSES.put(Menclose.LONGDIV, Menclose.Longdiv.class .getConstructor(String.class, AbstractDocument.class)); Menclose.IMPL_CLASSES.put("updiagonalstrike", Menclose.Updiagonalstrike.class.getConstructor( String.class, AbstractDocument.class)); Menclose.IMPL_CLASSES.put("downdiagonalstrike", Menclose.Downdiagonalstrike.class.getConstructor( String.class, AbstractDocument.class)); Menclose.IMPL_CLASSES.put("actuarial", Menclose.Actuarial.class .getConstructor(String.class, AbstractDocument.class)); } catch (final NoSuchMethodException e) { Menclose.LOGGER.fatal(e); } } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Msqrt.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000000545011335260530034562 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Msqrt.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.util.List; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class presents a mathematical square root. * * @version $Revision: bc1d5fde7b73 $ */ public final class Msqrt extends AbstractRoot { /** * The XML element from this class. */ public static final String ELEMENT = "msqrt"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Msqrt(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Msqrt(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override protected List getContent() { return this.getChildrenToLayout(); } /** {@inheritDoc} */ public MathMLElement getIndex() { return null; } /** {@inheritDoc} */ public MathMLElement getRadicand() { JEuclidElement retVal; if (this.getMathElementCount() == 1) { retVal = this.getMathElement(0); } else { retVal = new Mrow(Mrow.ELEMENT, this.ownerDocument); retVal.setFakeParent(this); for (int i = 0; i < this.getMathElementCount(); i++) { retVal.appendChild(this.getMathElement(i)); } } return retVal; } /** {@inheritDoc} */ public void setIndex(final MathMLElement index) { // Do nothing. There is no index for sqrt elements. } /** {@inheritDoc} */ public void setRadicand(final MathMLElement radicand) { while (this.getMathElementCount() > 0) { this.removeChild(this.getMathElement(0)); } this.setMathElement(0, radicand); } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Mfenced.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000001356611335260530034571 0ustar sylvestresylvestre/* * Copyright 2002 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mfenced.java,v 34009469c57a 2009/08/07 15:21:37 max $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.util.ArrayList; import java.util.List; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.elements.AbstractElementWithDelegates; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.presentation.token.Mo; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLFencedElement; /** * The class represents the mfenced element. * * @version $Revision: 34009469c57a $ */ public final class Mfenced extends AbstractElementWithDelegates implements MathMLFencedElement { /** The separators attribute. */ public static final String ATTR_SEPARATORS = "separators"; /** The close attribute. */ public static final String ATTR_CLOSE = "close"; /** The open attribute. */ public static final String ATTR_OPEN = "open"; /** * The XML element from this class. */ public static final String ELEMENT = "mfenced"; private static final String FENCE_SPACE = "0.2em"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mfenced(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mfenced.ATTR_OPEN, "("); this.setDefaultMathAttribute(Mfenced.ATTR_CLOSE, ")"); this.setDefaultMathAttribute(Mfenced.ATTR_SEPARATORS, ","); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mfenced(this.nodeName, this.ownerDocument); } /** * @return opening delimiter */ public String getOpen() { return this.getMathAttribute(Mfenced.ATTR_OPEN); } /** * Set the opening delimiter. * * @param open * Delimiter */ public void setOpen(final String open) { this.setAttribute(Mfenced.ATTR_OPEN, open); } /** * @return Return the closing delimiter */ public String getClose() { return this.getMathAttribute(Mfenced.ATTR_CLOSE); } /** * Set the closing delimiter. * * @param close * New close delimeter */ public void setClose(final String close) { this.setAttribute(Mfenced.ATTR_CLOSE, close); } /** * Return the separators. * * @return separators */ public String getSeparators() { final StringBuilder retVal = new StringBuilder(); final String attValue = this.getMathAttribute(Mfenced.ATTR_SEPARATORS); if (attValue != null) { for (int i = 0; i < attValue.length(); i++) { final char c = attValue.charAt(i); if (c > AbstractJEuclidElement.TRIVIAL_SPACE_MAX) { retVal.append(c); } } } return retVal.toString(); } /** * Set the separators. * * @param separators * New separators */ public void setSeparators(final String separators) { this.setAttribute(Mfenced.ATTR_SEPARATORS, separators); } /** {@inheritDoc} */ @Override protected List createDelegates() { final int contentCount = this.getMathElementCount(); final List retVal = new ArrayList( 2 * contentCount + 1); final Mo opOpen = this.createFenceOperator(); opOpen.setForm(OperatorDictionary.FORM_PREFIX); opOpen.setTextContent(this.getOpen()); retVal.add(opOpen); final String sep = this.getSeparators(); final boolean haveSep = (sep != null) && (sep.length() > 0); for (int i = 0; i < contentCount; i++) { retVal.add(this.getMathElement(i)); if (haveSep && (i < (contentCount - 1))) { final Mo opSep = (Mo) this.getOwnerDocument().createElement( Mo.ELEMENT); opSep.setSeparator(Constants.TRUE); if (i < sep.length()) { opSep.setTextContent(String.valueOf(sep.charAt(i))); } else { opSep.setTextContent(String.valueOf(sep .charAt(sep.length() - 1))); } retVal.add(opSep); } } final Mo opClose = this.createFenceOperator(); opClose.setForm(OperatorDictionary.FORM_POSTFIX); opClose.setTextContent(this.getClose()); retVal.add(opClose); return retVal; } private Mo createFenceOperator() { final Mo opOpen = (Mo) this.getOwnerDocument() .createElement(Mo.ELEMENT); opOpen.setFence(Constants.TRUE); opOpen.setStretchy(Constants.TRUE); opOpen.setRspace(Mfenced.FENCE_SPACE); opOpen.setLspace(Mfenced.FENCE_SPACE); opOpen.setSymmetric(Constants.FALSE); return opOpen; } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/Mroot.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000000601511335260530034560 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mroot.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.util.ArrayList; import java.util.List; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.InlineLayoutContext; import net.sourceforge.jeuclid.context.RelativeScriptlevelLayoutContext; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class presents a mathematical root. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mroot extends AbstractRoot { /** * The XML element from this class. */ public static final String ELEMENT = "mroot"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mroot(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mroot(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override protected List getContent() { final List mList = new ArrayList(1); mList.add((LayoutableNode) this.getRadicand()); return mList; } /** {@inheritDoc} */ public MathMLElement getIndex() { return this.getMathElement(1); } /** {@inheritDoc} */ public MathMLElement getRadicand() { return this.getMathElement(0); } /** {@inheritDoc} */ public void setIndex(final MathMLElement index) { this.setMathElement(1, index); } /** {@inheritDoc} */ public void setRadicand(final MathMLElement radicand) { this.setMathElement(0, radicand); } /** {@inheritDoc} */ @Override public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { final LayoutContext now = this.applyLocalAttributesToContext(context); if (childNum == 0) { return now; } else { // As specified in M2 3.3.3.2 return new RelativeScriptlevelLayoutContext( new InlineLayoutContext(now), 2); } } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/general/AbstractRoot.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/genera0000644000175000017500000001355111335260530034563 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractRoot.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.general; import java.awt.Color; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.util.List; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.layout.GraphicsObject; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableNode; import net.sourceforge.jeuclid.layout.LineObject; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.mathml.MathMLRadicalElement; /** * common superclass for root like elements (root, sqrt). * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractRoot extends AbstractJEuclidElement implements MathMLRadicalElement { private static final String EXTRA_SPACE = "0.1ex"; private static final String ROOT_WIDTH = "0.5em"; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractRoot(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** * retrieve the content of this radical element. * * @return A List<MathElement> with the contents for this element. */ protected abstract List getContent(); /** {@inheritDoc} */ // CHECKSTYLE:OFF // This function is too long, but it depends on too many parameters. @Override protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { // CHECKSTYLE:ON // Basic Calculations final Graphics2D g = view.getGraphics(); final LayoutContext now = this.applyLocalAttributesToContext(context); final float middleShift = this.getMiddleShift(g, context); final float linethickness = GraphicsSupport.lineWidth(now); final float extraSpace = AttributesHelper.convertSizeToPt( AbstractRoot.EXTRA_SPACE, now, ""); final float rootwidth = AttributesHelper.convertSizeToPt( AbstractRoot.ROOT_WIDTH, context, ""); final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); float xPos = linethickness; final LayoutableNode index = (LayoutableNode) this.getIndex(); final List graphicObjects = info.getGraphicObjects(); graphicObjects.clear(); // Draw Index float indexAscent; if (index == null) { indexAscent = 0.0f; } else { final LayoutInfo indexInfo = view.getInfo(index); final float indexPos = middleShift + linethickness / 2.0f + extraSpace + indexInfo.getDescentHeight(stage); indexInfo.moveTo(xPos, -indexPos, stage); xPos += indexInfo.getWidth(stage); graphicObjects.add(new LineObject(linethickness, -middleShift, xPos, -middleShift, linethickness, color)); indexAscent = indexPos + indexInfo.getAscentHeight(stage); } // Skip Root Space xPos += rootwidth; // Draw Content below Root final float contentStartX = xPos; final FontMetrics metrics = this .getFontMetrics(view.getGraphics(), now); float maxAscent = metrics.getAscent(); float maxDescent = metrics.getDescent(); for (final LayoutableNode child : this.getContent()) { final LayoutInfo childInfo = view.getInfo(child); childInfo.moveTo(xPos, 0, stage); maxAscent = Math.max(maxAscent, childInfo.getAscentHeight(stage)); maxDescent = Math .max(maxDescent, childInfo.getDescentHeight(stage)); xPos += childInfo.getWidth(stage); } xPos += 2 * extraSpace; final float topLinePos = maxAscent + 2 * extraSpace + linethickness / 2.0f; // Fill in Info info.setAscentHeight(Math.max(topLinePos + linethickness / 2.0f, indexAscent), stage); info.setDescentHeight(maxDescent + linethickness / 2.0f, stage); info.setHorizontalCenterOffset(xPos / 2.0f, stage); info.setWidth(xPos + linethickness, stage); info.setStretchAscent(maxAscent); info.setStretchDescent(maxDescent); // Add Root Glyph graphicObjects.add(new LineObject(contentStartX - rootwidth, -middleShift, contentStartX - rootwidth / 2.0f, maxDescent, linethickness, color)); graphicObjects.add(new LineObject(contentStartX - rootwidth / 2.0f, maxDescent, contentStartX, -topLinePos, linethickness, color)); graphicObjects.add(new LineObject(contentStartX, -topLinePos, xPos, -topLinePos, linethickness, color)); } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000755000175000017500000000000011335260530034461 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/Mtd.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000560511335260530034471 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mtd.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.table; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLTableCellElement; /** * This class presents a cell of a table. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mtd extends AbstractTableElement implements MathMLTableCellElement { /** * The XML element from this class. */ public static final String ELEMENT = "mtd"; /** attribute for rowspan. */ private static final String ATTR_ROWSPAN = "rowspan"; /** attribute for columnspan. */ private static final String ATTR_COLUMNSPAN = "columnspan"; private static final String VALUE_ONE = "1"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mtd(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mtd.ATTR_ROWSPAN, Mtd.VALUE_ONE); this.setDefaultMathAttribute(Mtd.ATTR_COLUMNSPAN, Mtd.VALUE_ONE); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mtd(this.nodeName, this.ownerDocument); } /** * @return Rowspan */ public String getRowspan() { return this.getMathAttribute(Mtd.ATTR_ROWSPAN); } /** * @param rowspan * Rowspan */ public void setRowspan(final String rowspan) { this.setAttribute(Mtd.ATTR_ROWSPAN, rowspan); } /** * @return Columnspan */ public String getColumnspan() { return this.getMathAttribute(Mtd.ATTR_COLUMNSPAN); } /** * @param columnspan * Columnspan */ public void setColumnspan(final String columnspan) { this.setAttribute(Mtd.ATTR_COLUMNSPAN, columnspan); } /** {@inheritDoc} */ public String getCellindex() { return Integer.toString(this.getParent().getIndexOfMathElement(this)); } /** {@inheritDoc} */ public boolean getHasaligngroups() { return this.getGroupalign() != null; } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/Mlabeledtr.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000376511335260530034476 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mlabeledtr.java,v 2986a8eeaebc 2009/09/24 14:53:08 max $ */ package net.sourceforge.jeuclid.elements.presentation.table; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLLabeledRowElement; /** * This class represents the mlabeledtr tag. * *

* TODO: add proper support for labels. They are currently silently ignored. * * @version $Revision: 2986a8eeaebc $ */ public final class Mlabeledtr extends AbstractTableRow implements MathMLLabeledRowElement { /** * The XML element from this class. */ public static final String ELEMENT = "mlabeledtr"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mlabeledtr(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mlabeledtr(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public MathMLElement getLabel() { return this.getMathElement(0); } /** {@inheritDoc} */ public void setLabel(final MathMLElement label) { this.setMathElement(0, label); } } ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/AbstractTableElement.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000554211335260530034471 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractTableElement.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.table; import net.sourceforge.jeuclid.elements.presentation.AbstractContainer; import org.apache.batik.dom.AbstractDocument; /** * Common functionality for all Table elements. This class contains support for * setting and getting alignment attributes. * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractTableElement extends AbstractContainer { /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractTableElement(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** * Gets row alignment. * * @return Alignment of the row. */ public String getRowalign() { return this.getMathAttribute(Mtable.ATTR_ROWALIGN); } /** * Sets row alignment. * * @param rowalign * Value of row alignment. */ public void setRowalign(final String rowalign) { this.setAttribute(Mtable.ATTR_ROWALIGN, rowalign); } /** * Gets alignment for group in column. (not implemented yet). * * @return Alignment for group in column. */ public String getColumnalign() { return this.getMathAttribute(Mtable.ATTR_COLUMNALIGN); } /** * Sets alignment for group in column. (not implemented yet). * * @param columnalign * Alignment for group in column. */ public void setColumnalign(final String columnalign) { this.setAttribute(Mtable.ATTR_COLUMNALIGN, columnalign); } /** * Gets alignment of the group for the row. (not implemented yet). * * @return Alignment of the row. */ public String getGroupalign() { return this.getMathAttribute(Mtable.ATTR_GROUPALIGN); } /** * Sets alignment of the group for the row. (not implemented yet). * * @param groupalign * Alignment. */ public void setGroupalign(final String groupalign) { this.setAttribute(Mtable.ATTR_GROUPALIGN, groupalign); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/Malignmark.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000407111335260530034465 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Malignmark.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.table; import net.sourceforge.jeuclid.elements.AbstractInvisibleJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLAlignMarkElement; /** * This class represents the malignmark tag. * * @version $Revision: bc1d5fde7b73 $ */ public final class Malignmark extends AbstractInvisibleJEuclidElement implements MathMLAlignMarkElement { /** * The XML element from this class. */ public static final String ELEMENT = "malignmark"; /** The edge attribute. */ public static final String ATTR_EDGE = "edge"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Malignmark(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Malignmark(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public String getEdge() { return this.getMathAttribute(Malignmark.ATTR_EDGE); } /** {@inheritDoc} */ public void setEdge(final String edge) { this.setAttribute(Malignmark.ATTR_EDGE, edge); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000203611335260530034464 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v ba4563de481e 2007/07/01 10:45:52 maxberger $ */ /** Tables and Matrices presentation element support (3.5).

This package contains support for tables and matrices presentation elements, as defined in http://www.w3.org/TR/MathML/chapter3.html#presm.tabmat

*/ package net.sourceforge.jeuclid.elements.presentation.table; ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/Maligngroup.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000417011335260530034465 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Maligngroup.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.table; import net.sourceforge.jeuclid.elements.AbstractInvisibleJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLAlignGroupElement; /** * This class represents the maligngroup tag. * * @version $Revision: bc1d5fde7b73 $ */ public final class Maligngroup extends AbstractInvisibleJEuclidElement implements MathMLAlignGroupElement { /** * The XML element from this class. */ public static final String ELEMENT = "maligngroup"; /** The groupalign attribute. */ public static final String ATTR_GROUPALIGN = "groupalign"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Maligngroup(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Maligngroup(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public String getGroupalign() { return this.getMathAttribute(Maligngroup.ATTR_GROUPALIGN); } /** {@inheritDoc} */ public void setGroupalign(final String groupalign) { this.setAttribute(Maligngroup.ATTR_GROUPALIGN, groupalign); } } ././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/AbstractTableRow.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000443411335260530034470 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractTableRow.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.table; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.mathml.MathMLNodeList; import org.w3c.dom.mathml.MathMLTableCellElement; import org.w3c.dom.mathml.MathMLTableRowElement; /** * Abstract class for table rows with and without label. * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractTableRow extends AbstractTableElement implements MathMLTableRowElement { /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractTableRow(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mtable.ATTR_GROUPALIGN, ""); } /** {@inheritDoc} */ public void deleteCell(final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLNodeList getCells() { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLTableCellElement insertCell( final MathMLTableCellElement newCell, final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLTableCellElement insertEmptyCell(final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLTableCellElement setCell(final MathMLTableCellElement newCell, final int index) { throw new UnsupportedOperationException(); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/Mtable.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000010754511335260530034477 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mtable.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.table; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.Dimension2D; import java.util.ArrayList; import java.util.List; import java.util.Locale; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.InlineLayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.elements.support.Dimension2DImpl; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.elements.support.attributes.HAlign; import net.sourceforge.jeuclid.layout.GraphicsObject; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableNode; import net.sourceforge.jeuclid.layout.LineObject; import org.apache.batik.dom.AbstractDocument; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLLabeledRowElement; import org.w3c.dom.mathml.MathMLNodeList; import org.w3c.dom.mathml.MathMLTableCellElement; import org.w3c.dom.mathml.MathMLTableElement; import org.w3c.dom.mathml.MathMLTableRowElement; /** * This class presents a table. * * @version $Revision: bc1d5fde7b73 $ */ // CHECKSTYLE:OFF // Data abstraction coupling is "to high". but this is necessary for proper // layout. public final class Mtable extends AbstractTableElement implements MathMLTableElement { // CHECKSTYLE:ON /** * The XML element from this class. */ public static final String ELEMENT = "mtable"; /** Attribute for columnalign. */ static final String ATTR_COLUMNALIGN = "columnalign"; /** Attribute for rowalign. */ static final String ATTR_ROWALIGN = "rowalign"; /** Attribute for groupalign. */ static final String ATTR_GROUPALIGN = "groupalign"; /** attribute for rowlines. */ private static final String ATTR_ROWLINES = "rowlines"; /** attribute for columnlines. */ private static final String ATTR_COLUMNLINES = "columnlines"; /** attribute for align. */ private static final String ATTR_ALIGN = "align"; /** attribute for alignmentscope. */ private static final String ATTR_ALIGNMENTSCOPE = "alignmentscope"; /** attribute for columnwidth. */ private static final String ATTR_COLUMNWIDTH = "columnwidth"; /** attribute for width. */ private static final String ATTR_WIDTH = "width"; /** attribute for rowspacing. */ private static final String ATTR_ROWSPACING = "rowspacing"; /** attribute for columnspacing. */ private static final String ATTR_COLUMNSPACING = "columnspacing"; /** attribute for frame. */ private static final String ATTR_FRAME = "frame"; /** attribute for framespacing. */ private static final String ATTR_FRAMESPACING = "framespacing"; /** attribute for equalrows. */ private static final String ATTR_EQUALROWS = "equalrows"; /** attribute for equalcolumns. */ private static final String ATTR_EQUALCOLUMNS = "equalcolumns"; /** attribute for displaystyle. */ private static final String ATTR_DISPLAYSTYLE = "displaystyle"; /** attribute for side. */ private static final String ATTR_SIDE = "side"; /** attribute for minlabelspacing. */ private static final String ATTR_MINLABELSPACING = "minlabelspacing"; /** value for no lines. */ private static final String VALUE_NONE = "none"; /** value for dashed lines. */ private static final String VALUE_DASHED = "dashed"; /** value for solid lines. */ private static final String VALUE_SOLID = "solid"; private static final long serialVersionUID = 1L; /** * Default column spacing. */ private static final String DEFAULT_COLUMNSPACING = "0.8em"; /** * Default row spacing. */ private static final String DEFAULT_ROWSPACING = "1.0ex"; /** * Default frame spacing. */ private static final String DEFAULT_FRAMESPACING = "0.4em 0.5ex"; private static final String VALUE_AUTO = "auto"; /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(Mtable.class); /** * Class for line types. */ public enum LineType { /** No lines. */ NONE, /** Solid line. */ SOLID, /** Dashed line. */ DASHED; /** * Parse a string and return a linetype. * * @param s * the string to parse * @return a line type for this string type */ public static LineType parseLineType(final String s) { final LineType retVal; if (s.equalsIgnoreCase(Mtable.VALUE_SOLID)) { retVal = SOLID; } else if (s.equalsIgnoreCase(Mtable.VALUE_DASHED)) { retVal = DASHED; } else { retVal = NONE; } return retVal; } }; /** * Class for alignment types. */ private static final class VAlign { /** Align to top. */ static final int TOP = 0; /** Align to bottom. */ static final int BOTTOM = 1; /** Align to center. */ static final int CENTER = 2; /** Align to baseline. */ static final int BASELINE = 3; /** Align to axis. */ static final int AXIS = 4; static final String VALUE_TOP = "top"; static final String VALUE_BOTTOM = "bottom"; static final String VALUE_CENTER = "center"; static final String VALUE_BASELINE = "baseline"; static final String VALUE_AXIS = "axis"; static final VAlign BASELINE_ALIGN = new VAlign(Mtable.VAlign.BASELINE, 0); private static final String INVALID_VERTICAL_ALIGNMENT_VALUE = "Invalid vertical alignment value: "; private final int valign; private final int alignTo; private VAlign(final int align, final int relativeTo) { this.valign = align; this.alignTo = relativeTo; } /** * Parse a string and return a alignment. * * @param s * the string to parse * @return an alignment for this string type */ public static VAlign parseString(final String s) { if ((s == null) || (s.length() == 0)) { return null; } final int align; int relativeTo = 0; final String s2 = s.trim().toLowerCase(Locale.ENGLISH); final String s3; if (s2.startsWith(Mtable.VAlign.VALUE_TOP)) { align = Mtable.VAlign.TOP; s3 = s2.substring(Mtable.VAlign.VALUE_TOP.length()).trim(); } else if (s2.startsWith(Mtable.VAlign.VALUE_BOTTOM)) { align = Mtable.VAlign.BOTTOM; s3 = s2.substring(Mtable.VAlign.VALUE_BOTTOM.length()).trim(); } else if (s2.startsWith(Mtable.VAlign.VALUE_CENTER)) { align = Mtable.VAlign.CENTER; s3 = s2.substring(Mtable.VAlign.VALUE_CENTER.length()).trim(); } else if (s2.startsWith(Mtable.VAlign.VALUE_BASELINE)) { align = Mtable.VAlign.BASELINE; s3 = s2.substring(Mtable.VAlign.VALUE_BASELINE.length()).trim(); } else if (s2.startsWith(Mtable.VAlign.VALUE_AXIS)) { align = Mtable.VAlign.AXIS; s3 = s2.substring(Mtable.VAlign.VALUE_AXIS.length()).trim(); } else { Mtable.LOGGER .warn(Mtable.VAlign.INVALID_VERTICAL_ALIGNMENT_VALUE + s); align = Mtable.VAlign.BASELINE; s3 = "0"; } if (s3.length() > 0) { try { relativeTo = Integer.parseInt(s3); } catch (final NumberFormatException nfe) { Mtable.LOGGER .warn(Mtable.VAlign.INVALID_VERTICAL_ALIGNMENT_VALUE + s); } } return new VAlign(align, relativeTo); } public int getAlign() { return this.valign; } public int getRelative() { return this.alignTo; } } /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mtable(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Mtable.ATTR_ALIGN, Mtable.VAlign.VALUE_AXIS); this.setDefaultMathAttribute(Mtable.ATTR_ROWALIGN, Mtable.VAlign.VALUE_BASELINE); this.setDefaultMathAttribute(Mtable.ATTR_COLUMNALIGN, HAlign.ALIGN_CENTER); this.setDefaultMathAttribute(Mtable.ATTR_GROUPALIGN, "{left}"); this .setDefaultMathAttribute(Mtable.ATTR_ALIGNMENTSCOPE, Constants.TRUE); this .setDefaultMathAttribute(Mtable.ATTR_COLUMNWIDTH, Mtable.VALUE_AUTO); this.setDefaultMathAttribute(Mtable.ATTR_WIDTH, Mtable.VALUE_AUTO); this.setDefaultMathAttribute(Mtable.ATTR_ROWSPACING, Mtable.DEFAULT_ROWSPACING); this.setDefaultMathAttribute(Mtable.ATTR_COLUMNSPACING, Mtable.DEFAULT_COLUMNSPACING); this.setDefaultMathAttribute(Mtable.ATTR_ROWLINES, Mtable.VALUE_NONE); this .setDefaultMathAttribute(Mtable.ATTR_COLUMNLINES, Mtable.VALUE_NONE); this.setDefaultMathAttribute(Mtable.ATTR_FRAME, Mtable.VALUE_NONE); this.setDefaultMathAttribute(Mtable.ATTR_FRAMESPACING, Mtable.DEFAULT_FRAMESPACING); this.setDefaultMathAttribute(Mtable.ATTR_EQUALROWS, Constants.FALSE); this.setDefaultMathAttribute(Mtable.ATTR_EQUALCOLUMNS, Constants.FALSE); this.setDefaultMathAttribute(Mtable.ATTR_DISPLAYSTYLE, Constants.FALSE); this.setDefaultMathAttribute(Mtable.ATTR_SIDE, HAlign.ALIGN_RIGHT); this.setDefaultMathAttribute(Mtable.ATTR_MINLABELSPACING, Mtable.DEFAULT_COLUMNSPACING); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mtable(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { return new InlineLayoutContext(this .applyLocalAttributesToContext(context)); } private float getFramespacingh(final LayoutContext now) { if (Mtable.LineType.NONE.equals(this.getFrameAsLineType())) { return 0; } final String spacing = this.getSpaceArrayEntry(this.getFramespacing(), 0); return AttributesHelper.convertSizeToPt(spacing, now, AttributesHelper.PT); } private float getFramespacingv(final LayoutContext now) { if (Mtable.LineType.NONE.equals(this.getFrameAsLineType())) { return 0; } final String spacing = this.getSpaceArrayEntry(this.getFramespacing(), 1); return AttributesHelper.convertSizeToPt(spacing, now, AttributesHelper.PT); } /** {@inheritDoc} */ public String getRowlines() { return this.getMathAttribute(Mtable.ATTR_ROWLINES); } /** {@inheritDoc} */ public void setRowlines(final String rowlines) { this.setAttribute(Mtable.ATTR_ROWLINES, rowlines); } /** {@inheritDoc} */ public String getColumnlines() { return this.getMathAttribute(Mtable.ATTR_COLUMNLINES); } /** {@inheritDoc} */ public void setColumnlines(final String columnlines) { this.setAttribute(Mtable.ATTR_COLUMNLINES, columnlines); } private LineType getRowLine(final int row) { return Mtable.LineType.parseLineType(this.getSpaceArrayEntry(this .getRowlines(), row)); } private LineType getColumnLine(final int col) { return Mtable.LineType.parseLineType(this.getSpaceArrayEntry(this .getColumnlines(), col)); } private LineType getFrameAsLineType() { return Mtable.LineType.parseLineType(this.getFrame()); } /** * Gets an entry in a white-space separated string. *

* If the entry requested is beyond the index, the last entry is returned. * * @todo This method is probably useful for other attribute values. Examine, * and move to a more common place. (like AttrHelper) * @param string * the string in which to look. * @param index * index of the element (0-based) * @return the element at that index */ private String getSpaceArrayEntry(final String string, final int index) { final String[] array; if (string == null) { array = new String[0]; } else { array = string.split("\\s"); } int cur = -1; String last = ""; for (final String s : array) { if (s.length() > 0) { cur++; if (cur == index) { return s; } last = s; } } return last; } /** {@inheritDoc} */ public String getColumnwidth() { return this.getMathAttribute(Mtable.ATTR_COLUMNWIDTH); } /** {@inheritDoc} */ public void setColumnwidth(final String columnwidth) { this.setAttribute(Mtable.ATTR_COLUMNWIDTH, columnwidth); } /** {@inheritDoc} */ public String getWidth() { return this.getMathAttribute(Mtable.ATTR_WIDTH); } /** {@inheritDoc} */ public void setWidth(final String width) { this.setAttribute(Mtable.ATTR_WIDTH, width); } /** {@inheritDoc} */ public String getAlign() { return this.getMathAttribute(Mtable.ATTR_ALIGN); } /** {@inheritDoc} */ public void setAlign(final String align) { this.setAttribute(Mtable.ATTR_ALIGN, align); } /** {@inheritDoc} */ public String getAlignmentscope() { return this.getMathAttribute(Mtable.ATTR_ALIGNMENTSCOPE); } /** {@inheritDoc} */ public void setAlignmentscope(final String alignmentscope) { this.setAttribute(Mtable.ATTR_ALIGNMENTSCOPE, alignmentscope); } /** {@inheritDoc} */ public String getRowspacing() { return this.getMathAttribute(Mtable.ATTR_ROWSPACING); } /** {@inheritDoc} */ public void setRowspacing(final String rowspacing) { this.setAttribute(Mtable.ATTR_ROWSPACING, rowspacing); } /** {@inheritDoc} */ public String getColumnspacing() { return this.getMathAttribute(Mtable.ATTR_COLUMNSPACING); } /** {@inheritDoc} */ public void setColumnspacing(final String columnspacing) { this.setAttribute(Mtable.ATTR_COLUMNSPACING, columnspacing); } /** {@inheritDoc} */ public String getFrame() { return this.getMathAttribute(Mtable.ATTR_FRAME); } /** {@inheritDoc} */ public void setFrame(final String frame) { this.setAttribute(Mtable.ATTR_FRAME, frame); } /** {@inheritDoc} */ public String getFramespacing() { return this.getMathAttribute(Mtable.ATTR_FRAMESPACING); } /** {@inheritDoc} */ public void setFramespacing(final String framespacing) { this.setAttribute(Mtable.ATTR_FRAMESPACING, framespacing); } /** {@inheritDoc} */ public String getEqualrows() { return this.getMathAttribute(Mtable.ATTR_EQUALROWS); } /** {@inheritDoc} */ public void setEqualrows(final String equalrows) { this.setAttribute(Mtable.ATTR_EQUALROWS, equalrows); } /** {@inheritDoc} */ public String getEqualcolumns() { return this.getMathAttribute(Mtable.ATTR_EQUALCOLUMNS); } /** {@inheritDoc} */ public void setEqualcolumns(final String equalcolumns) { this.setAttribute(Mtable.ATTR_EQUALCOLUMNS, equalcolumns); } /** {@inheritDoc} */ public String getDisplaystyle() { return this.getMathAttribute(Mtable.ATTR_DISPLAYSTYLE); } /** {@inheritDoc} */ public void setDisplaystyle(final String displaystyle) { this.setAttribute(Mtable.ATTR_DISPLAYSTYLE, displaystyle); } /** {@inheritDoc} */ public String getSide() { return this.getMathAttribute(Mtable.ATTR_SIDE); } /** {@inheritDoc} */ public void setSide(final String side) { this.setAttribute(Mtable.ATTR_SIDE, side); } /** {@inheritDoc} */ public String getMinlabelspacing() { return this.getMathAttribute(Mtable.ATTR_MINLABELSPACING); } /** {@inheritDoc} */ public void setMinlabelspacing(final String minlabelspacing) { this.setAttribute(Mtable.ATTR_MINLABELSPACING, minlabelspacing); } /** {@inheritDoc} */ public MathMLNodeList getRows() { // TODO: Implement return null; } /** {@inheritDoc} */ public MathMLTableRowElement insertEmptyRow(final int index) { // TODO: Implement return null; } /** {@inheritDoc} */ public MathMLLabeledRowElement insertEmptyLabeledRow(final int index) { // TODO: Implement return null; } /** {@inheritDoc} */ public MathMLTableRowElement getRow(final int index) { // TODO: Implement return null; } /** {@inheritDoc} */ public MathMLTableRowElement insertRow(final int index, final MathMLTableRowElement newRow) { // TODO: Implement return null; } /** {@inheritDoc} */ public MathMLTableRowElement setRow(final int index, final MathMLTableRowElement newRow) { // TODO: Implement return null; } /** {@inheritDoc} */ public void deleteRow(final int index) { // TODO: Implement } /** {@inheritDoc} */ public MathMLTableRowElement removeRow(final int index) { // TODO: Implement return null; } /** {@inheritDoc} */ public void deleteRow(final long index) { // TODO Auto-generated method stub } /** {@inheritDoc} */ public MathMLTableRowElement getRow(final long index) { // TODO Auto-generated method stub return null; } /** {@inheritDoc} */ public MathMLLabeledRowElement insertEmptyLabeledRow(final long index) { // TODO Auto-generated method stub return null; } /** {@inheritDoc} */ public MathMLTableRowElement insertEmptyRow(final long index) { // TODO Auto-generated method stub return null; } /** {@inheritDoc} */ public MathMLTableRowElement insertRow(final long index, final MathMLTableRowElement newRow) { // TODO Auto-generated method stub return null; } /** {@inheritDoc} */ public MathMLTableRowElement removeRow(final long index) { // TODO Auto-generated method stub return null; } /** {@inheritDoc} */ public MathMLTableRowElement setRow(final long index, final MathMLTableRowElement newRow) { // TODO Auto-generated method stub return null; } /** {@inheritDoc} */ // CHECKSTYLE:OFF // Function is too long. Unfortunately it has to be for proper layout @Override public void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { // CHECKSTYLE:ON final Graphics2D g = view.getGraphics(); final LayoutContext now = this.applyLocalAttributesToContext(context); final List children = this.getChildrenToLayout(); final LayoutInfo[] rowInfos = new LayoutInfo[children.size()]; final LayoutableNode[] rowChild = new LayoutableNode[children.size()]; float y = 0; int rows = 0; // Layout Rows vertically, calculate height of the table. final float vFrameSpacing = this.getFramespacingv(now); float height = vFrameSpacing; for (final LayoutableNode child : children) { rowChild[rows] = child; final LayoutInfo mtrInfo = view.getInfo(child); y += mtrInfo.getAscentHeight(stage); rowInfos[rows] = mtrInfo; rows++; mtrInfo.moveTo(0, y, stage); y += mtrInfo.getDescentHeight(stage); height = y; y += AttributesHelper.convertSizeToPt(this.getSpaceArrayEntry(this .getRowspacing(), rows), now, AttributesHelper.PT); } height += vFrameSpacing; final float verticalShift = this.shiftTableVertically(stage, context, g, rowInfos, rows, height); final List[] mtdChildren = this .createListOfMtdChildren(rowChild, rows); this.stretchAndAlignMtds(view, mtdChildren, rowInfos, rows, stage); final List columnwidth = this.calculateBasicColumnWidth(view, stage, rows, mtdChildren); // TODO This is where Alignment-Groups should be calculated final float totalWidth = this.layoutColumnsHorizontally(view, stage, now, rows, mtdChildren, columnwidth); this.setRowWidth(stage, rowInfos, rows, totalWidth); this.addRowLines(info, rowInfos, rows, totalWidth, stage, now); this.addColumnLines(info, columnwidth, verticalShift, height, now); this.addFrame(info, totalWidth, verticalShift, height, now); final float hFrameSpacing = this.getFramespacingh(now); final Dimension2D borderLeftTop = new Dimension2DImpl(hFrameSpacing, vFrameSpacing); final Dimension2D borderRightBottom = new Dimension2DImpl( hFrameSpacing, vFrameSpacing); ElementListSupport.fillInfoFromChildren(view, info, this, stage, borderLeftTop, borderRightBottom); } private void addFrame(final LayoutInfo info, final float width, final float verticalShift, final float height, final LayoutContext now) { final LineType lineType = this.getFrameAsLineType(); final boolean solid = Mtable.LineType.SOLID.equals(lineType); final boolean dashed = Mtable.LineType.DASHED.equals(lineType); if (dashed || solid) { final float lineWidth = GraphicsSupport.lineWidth(now); final float lineInset = lineWidth / 2.0f; final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); final List go = info.getGraphicObjects(); final float vFrameSpacing = this.getFramespacingv(now); final float left = lineInset; final float right = width - lineInset; final float top = verticalShift + lineInset - vFrameSpacing; final float bottom = height + verticalShift - lineInset; go.add(new LineObject(left, top, right, top, lineWidth, color, dashed)); go.add(new LineObject(left, bottom, right, bottom, lineWidth, color, dashed)); go.add(new LineObject(left, top, left, bottom, lineWidth, color, dashed)); go.add(new LineObject(right, top, right, bottom, lineWidth, color, dashed)); } } private void addRowLines(final LayoutInfo info, final LayoutInfo[] rowInfos, final int rows, final float width, final LayoutStage stage, final LayoutContext now) { final float lineWidth = GraphicsSupport.lineWidth(now); final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); final float inFrameStart = this.getFramespacingh(now); for (int row = 0; row < rows - 1; row++) { final LineType lineType = this.getRowLine(row); final boolean solid = Mtable.LineType.SOLID.equals(lineType); final boolean dashed = Mtable.LineType.DASHED.equals(lineType); if (dashed || solid) { final float y = (rowInfos[row].getPosY(stage) + rowInfos[row].getDescentHeight(stage) + rowInfos[row + 1].getPosY(stage) - rowInfos[row + 1] .getAscentHeight(stage)) / 2.0f; info.getGraphicObjects().add( new LineObject(inFrameStart, y, width - inFrameStart, y, lineWidth, color, dashed)); } } } private void addColumnLines(final LayoutInfo info, final List columnwidth, final float verticalShift, final float height, final LayoutContext now) { final float lineWidth = GraphicsSupport.lineWidth(now); final Color color = (Color) now.getParameter(Parameter.MATHCOLOR); float x = this.getFramespacingh(now); final float inFrameStart = this.getFramespacingv(now); final float colsm1 = columnwidth.size() - 1; for (int col = 0; col < colsm1; col++) { final LineType lineType = this.getColumnLine(col); final boolean solid = Mtable.LineType.SOLID.equals(lineType); final boolean dashed = Mtable.LineType.DASHED.equals(lineType); if (dashed || solid) { final float halfSpace = this.getSpaceAfterColumn(now, col) / 2.0f; x += columnwidth.get(col) + halfSpace; info.getGraphicObjects().add( new LineObject(x, verticalShift, x, height + verticalShift - inFrameStart, lineWidth, color, dashed)); x += halfSpace; } } } private void stretchAndAlignMtds(final LayoutView view, final List[] mtdChildren, final LayoutInfo[] rowInfos, final int rows, final LayoutStage stage) { for (int i = 0; i < rows; i++) { final float rowAscent = rowInfos[i].getAscentHeight(stage); final float rowDescent = rowInfos[i].getDescentHeight(stage); for (final LayoutableNode n : mtdChildren[i]) { final LayoutInfo mtdInfo = view.getInfo(n); final VAlign valign = this.getVAlign((JEuclidElement) n, i); final float verticalShift; if (valign.getAlign() == Mtable.VAlign.TOP) { verticalShift = -rowAscent + mtdInfo.getAscentHeight(stage); } else if (valign.getAlign() == Mtable.VAlign.BOTTOM) { verticalShift = rowDescent - mtdInfo.getDescentHeight(stage); } else if (valign.getAlign() == Mtable.VAlign.CENTER) { verticalShift = (-rowAscent + rowDescent + mtdInfo.getAscentHeight(stage) - mtdInfo .getDescentHeight(stage)) / 2.0f; } else if (valign.getAlign() == Mtable.VAlign.AXIS) { // TODO: This uses center instead of axis. verticalShift = (-rowAscent + rowDescent + mtdInfo.getAscentHeight(stage) - mtdInfo .getDescentHeight(stage)) / 2.0f; } else { // BASELINE verticalShift = 0.0f; } mtdInfo.shiftVertically(verticalShift, stage); mtdInfo.setStretchAscent(rowAscent + verticalShift); mtdInfo.setStretchDescent(rowDescent - verticalShift); } } } private float shiftTableVertically(final LayoutStage stage, final LayoutContext context, final Graphics2D g, final LayoutInfo[] rowInfos, final int rows, final float height) { // Shift table by given vertical alignment // final String alignStr = this.getAlign(); // AlignmentType align = // Mtable.AlignmentType.parseAlignmentType(alignStr); // TODO: Proper vertical alignment; // This is "axis" alignment. final float verticalShift = -this.getMiddleShift(g, context) - height / 2.0f; for (int i = 0; i < rows; i++) { rowInfos[i].shiftVertically(verticalShift, stage); } return verticalShift; } @SuppressWarnings("unchecked") private List[] createListOfMtdChildren( final LayoutableNode[] rowChild, final int rows) { final List[] mtdChildren = new List[rows]; for (int i = 0; i < rows; i++) { if (rowChild[i] instanceof MathMLTableRowElement) { mtdChildren[i] = rowChild[i].getChildrenToLayout(); } else { mtdChildren[i] = new ArrayList(1); mtdChildren[i].add(rowChild[i]); } } return mtdChildren; } private List calculateBasicColumnWidth(final LayoutView view, final LayoutStage stage, final int rows, final List[] mtdChildren) { final List columnwidth = new ArrayList(); for (int i = 0; i < rows; i++) { int missing = mtdChildren[i].size() - columnwidth.size(); while (missing > 0) { columnwidth.add(0.0f); missing--; } int col = 0; for (final LayoutableNode n : mtdChildren[i]) { final float width = Math.max(columnwidth.get(col), view .getInfo(n).getWidth(stage)); columnwidth.set(col, width); col++; } } if (Boolean.parseBoolean(this.getEqualcolumns())) { this.makeEqual(columnwidth); } return columnwidth; } private void makeEqual(final List columnwidth) { float maxWidth = 0.0f; for (final Float width : columnwidth) { maxWidth = Math.max(width, maxWidth); } final int cols = columnwidth.size(); for (int i = 0; i < cols; i++) { columnwidth.set(i, maxWidth); } } private void setRowWidth(final LayoutStage stage, final LayoutInfo[] rowInfos, final int rows, final float totalWidth) { for (int i = 0; i < rows; i++) { rowInfos[i].setWidth(totalWidth, stage); } } private float layoutColumnsHorizontally(final LayoutView view, final LayoutStage stage, final LayoutContext now, final int rows, final List[] mtdChildren, final List columnwidth) { final float hFrameSpacing = this.getFramespacingh(now); float totalWidth = hFrameSpacing; for (int i = 0; i < rows; i++) { float x = hFrameSpacing; int col = 0; for (final LayoutableNode n : mtdChildren[i]) { final LayoutInfo mtdInfo = view.getInfo(n); final HAlign halign = this.getHAlign((JEuclidElement) n, col); final float colwi = columnwidth.get(col); final float xo = halign.getHAlignOffset(stage, mtdInfo, colwi); mtdInfo.moveTo(x + xo, mtdInfo.getPosY(stage), stage); // mtdInfo.setWidth(colwi, stage); mtdInfo.setStretchWidth(colwi); x += colwi; totalWidth = Math.max(totalWidth, x); x += this.getSpaceAfterColumn(now, col); col++; } } return totalWidth + hFrameSpacing; } private float getSpaceAfterColumn(final LayoutContext now, final int col) { final float columnSpace = AttributesHelper.convertSizeToPt(this .getSpaceArrayEntry(this.getColumnspacing(), col), now, AttributesHelper.PT); return columnSpace; } private HAlign getHAlign(final JEuclidElement n, final int col) { assert n != null; final HAlign retVal; if (n instanceof MathMLTableCellElement) { final MathMLTableCellElement cell = (MathMLTableCellElement) n; final String alignString = cell.getColumnalign(); final HAlign halign = HAlign.parseString(alignString, null); if (halign == null) { retVal = this.getHAlign(n.getParent(), col); } else { retVal = halign; } } else if (n instanceof MathMLTableRowElement) { final MathMLTableRowElement rowE = (MathMLTableRowElement) n; final String alignArray = rowE.getColumnalign(); if ((alignArray != null) && (alignArray.length() > 0)) { retVal = HAlign.parseString(this.getSpaceArrayEntry(alignArray, col), HAlign.CENTER); } else { retVal = this.getHAlign(n.getParent(), col); } } else if (n instanceof MathMLTableElement) { final MathMLTableElement table = (MathMLTableElement) n; final String alignArray = table.getColumnalign(); if ((alignArray != null) && (alignArray.length() > 0)) { retVal = HAlign.parseString(this.getSpaceArrayEntry(alignArray, col), HAlign.CENTER); } else { retVal = HAlign.CENTER; } } else { retVal = this.getHAlign(n.getParent(), col); } return retVal; } private VAlign getVAlign(final JEuclidElement n, final int row) { assert n != null; final VAlign retVal; if (n instanceof MathMLTableCellElement) { final MathMLTableCellElement cell = (MathMLTableCellElement) n; final String alignString = cell.getRowalign(); final Mtable.VAlign valign = Mtable.VAlign.parseString(alignString); if (valign == null) { retVal = this.getVAlign(n.getParent(), row); } else { retVal = valign; } } else if (n instanceof MathMLTableRowElement) { final MathMLTableRowElement rowE = (MathMLTableRowElement) n; final String alignString = rowE.getRowalign(); final Mtable.VAlign valign = Mtable.VAlign.parseString(alignString); if (valign == null) { retVal = this.getVAlign(n.getParent(), row); } else { retVal = valign; } } else if (n instanceof MathMLTableElement) { final MathMLTableElement table = (MathMLTableElement) n; final String alignArray = table.getRowalign(); if ((alignArray != null) && (alignArray.length() > 0)) { retVal = Mtable.VAlign.parseString(this.getSpaceArrayEntry( alignArray, row)); } else { retVal = Mtable.VAlign.BASELINE_ALIGN; } } else { retVal = this.getVAlign(n.getParent(), row); } return retVal; } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/Mtr.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/table/0000644000175000017500000000301611335260530034463 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mtr.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.table; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class presents a row in MathTable. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mtr extends AbstractTableRow { /** * The XML element from this class. */ public static final String ELEMENT = "mtr"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mtr(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mtr(this.nodeName, this.ownerDocument); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/packag0000644000175000017500000000175011335260530034546 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v ba4563de481e 2007/07/01 10:45:52 maxberger $ */ /** Provides support for presentation markup (3).

This package contains support for presentation markup elements, as defined in http://www.w3.org/TR/MathML/chapter3.html

*/ package net.sourceforge.jeuclid.elements.presentation; ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000755000175000017500000000000011335260530034617 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/ScriptSupport.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000001347211335260530034630 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ScriptSupport.java,v d02878fc1d01 2009/09/08 14:35:02 max $ */ package net.sourceforge.jeuclid.elements.presentation.script; import java.awt.geom.Dimension2D; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.elements.support.Dimension2DImpl; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; /** * Support class for script elements. * * @see AbstractSubSuper * @see AbstractUnderOver * @version $Revision: d02878fc1d01 $ */ public final class ScriptSupport { /** Default Constructor. */ private ScriptSupport() { // Empty on purpose. } /** * Info for baseline shifts. * * @version $Revision: d02878fc1d01 $ */ static class ShiftInfo { private float superShift; private float subShift; /** * Creates a new ShiftInfo object. * * @param sub * subShift. * @param sup * superShift. */ protected ShiftInfo(final float sub, final float sup) { this.superShift = sup; this.subShift = sub; } /** * Getter method for superShift. * * @return the superShift */ public float getSuperShift() { return this.superShift; } /** * Getter method for subShift. * * @return the subShift */ public float getSubShift() { return this.subShift; } /** * Adjust this shift to contain the max shift from current shit and * other info. * * @param otherInfo * other info to use. */ public void max(final ShiftInfo otherInfo) { this.subShift = Math.max(this.subShift, otherInfo.subShift); this.superShift = Math.max(this.superShift, otherInfo.superShift); } } // CHECKSTYLE:OFF // More than 7 parameters. But only used internally, so that's ok. static void layout(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext now, final JEuclidElement parent, final JEuclidElement base, final JEuclidElement sub, final JEuclidElement sup, final String subScriptShift, final String superScriptShift) { // CHECKSTYLE:ON final LayoutInfo baseInfo = view.getInfo(base); final float width = baseInfo.getWidth(stage); final LayoutInfo subInfo = view.getInfo(sub); final LayoutInfo superInfo = view.getInfo(sup); final ShiftInfo shiftInfo = ScriptSupport.calculateScriptShfits(stage, now, subScriptShift, superScriptShift, baseInfo, subInfo, superInfo); if (subInfo != null) { subInfo.moveTo(width, shiftInfo.getSubShift(), stage); } if (superInfo != null) { superInfo.moveTo(width, -shiftInfo.getSuperShift(), stage); } final Dimension2D borderLeftTop = new Dimension2DImpl(0.0f, 0.0f); final Dimension2D borderRightBottom = new Dimension2DImpl(0.0f, 0.0f); ElementListSupport.fillInfoFromChildren(view, info, parent, stage, borderLeftTop, borderRightBottom); info.setStretchAscent(baseInfo.getStretchAscent()); info.setStretchDescent(baseInfo.getStretchDescent()); } static ShiftInfo calculateScriptShfits(final LayoutStage stage, final LayoutContext now, final String subScriptShift, final String superScriptShift, final LayoutInfo baseInfo, final LayoutInfo subInfo, final LayoutInfo superInfo) { float subShift = 0.0f; float superShift = 0.0f; if (subInfo != null) { subShift = Math.max(baseInfo.getDescentHeight(stage) + (subInfo.getAscentHeight(stage) - subInfo .getDescentHeight(stage)) / 2.0f, AttributesHelper .convertSizeToPt(subScriptShift, now, AttributesHelper.PT)); } if (superInfo != null) { superShift = Math.max(baseInfo.getAscentHeight(stage) - (superInfo.getAscentHeight(stage) - superInfo .getDescentHeight(stage)) / 2.0f, AttributesHelper.convertSizeToPt(superScriptShift, now, AttributesHelper.PT)); } if ((subInfo != null) && (superInfo != null)) { final float topSub = -subShift + subInfo.getAscentHeight(stage) + 1.0f; final float bottomSuper = superShift - superInfo.getDescentHeight(stage) - 1.0f; final float overlap = Math.max(0.0f, topSub - bottomSuper); final float overlapShift = overlap / 2.0f; superShift += overlapShift; subShift += overlapShift; } return new ShiftInfo(subShift, superShift); } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Mprescripts.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000323411335260530034623 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mprescripts.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.AbstractInvisibleJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class represent the empty elements mprescripts. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mprescripts extends AbstractInvisibleJEuclidElement { /** * The XML element from this class. */ public static final String ELEMENT = "mprescripts"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mprescripts(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mprescripts(this.nodeName, this.ownerDocument); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Mover.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000440011335260530034617 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mover.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.JEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.DOMException; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class arranges a element over an other element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Mover extends AbstractUnderOver { /** * The XML element from this class. */ public static final String ELEMENT = "mover"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mover(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mover(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public JEuclidElement getOverscript() { return this.getMathElement(1); } /** {@inheritDoc} */ @Override public JEuclidElement getUnderscript() { return null; } /** {@inheritDoc} */ public void setOverscript(final MathMLElement overscript) { this.setMathElement(1, overscript); } /** {@inheritDoc} */ public void setUnderscript(final MathMLElement underscript) { throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, "mover does not have underscript"); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/None.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000316211335260530034623 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: None.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.AbstractInvisibleJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; /** * This class represent the empty elements none. * * @version $Revision: bc1d5fde7b73 $ */ public final class None extends AbstractInvisibleJEuclidElement { /** * The XML element from this class. */ public static final String ELEMENT = "none"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public None(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new None(this.nodeName, this.ownerDocument); } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/AbstractUnderOver.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000002234111335260530034623 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractUnderOver.java,v 2986a8eeaebc 2009/09/24 14:53:08 max $ */ package net.sourceforge.jeuclid.elements.presentation.script; import java.awt.geom.Dimension2D; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Display; import net.sourceforge.jeuclid.context.InlineLayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.context.RelativeScriptlevelLayoutContext; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.elements.support.Dimension2DImpl; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLOperatorElement; import org.w3c.dom.mathml.MathMLUnderOverElement; /** * Implementation and helper methods for munder, mover, and munderover. *

* TODO: some operators should "default" to being an accent, but currently they * don't * * @version $Revision: 2986a8eeaebc $ */ public abstract class AbstractUnderOver extends AbstractJEuclidElement implements MathMLUnderOverElement { /** * Space between base and under/over for accents. */ public static final String UNDER_OVER_SPACE = "0.1ex"; /** Space for non-accents multiplied by this value. */ public static final float NON_ACCENT_MULTIPLIER = 2.5f; /** attribute for accent property. */ public static final String ATTR_ACCENT = "accent"; /** attribute for accentunder property. */ public static final String ATTR_ACCENTUNDER = "accentunder"; /** No attributes, so just use 1. */ private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractUnderOver(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ public String getAccent() { // TODO: Accent also depends on the content. See spec 3.4.4 - 3.4.6 return this.getMathAttribute(AbstractUnderOver.ATTR_ACCENT); } /** * returns the accent property as boolean. * * @return accent */ protected boolean getAccentAsBoolean() { return Boolean.parseBoolean(this.getAccent()); } /** * @param context * LayoutContext * @return true if limits are moved (behave like under/over). */ private boolean limitsAreMoved(final LayoutContext now) { return (!this.getAccentAsBoolean()) && (this.getBase() instanceof MathMLOperatorElement) && Boolean .parseBoolean(((MathMLOperatorElement) this.getBase()) .getMovablelimits()) && (Display.INLINE.equals(now.getParameter(Parameter.DISPLAY))); } /** {@inheritDoc} */ public String getAccentunder() { // TODO: Accent also depends on the content. See spec 3.4.4 - 3.4.6 return this.getMathAttribute(AbstractUnderOver.ATTR_ACCENTUNDER); } /** {@inheritDoc} */ @Override public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { final LayoutContext now = this.applyLocalAttributesToContext(context); if (childNum == 0) { return now; } else { // TODO: Should depend on type and accent return new RelativeScriptlevelLayoutContext( new InlineLayoutContext(now), 1); } } /** * returns the accentunder property as boolean. * * @return accentunder */ protected boolean getAccentunderAsBoolean() { return Boolean.parseBoolean(this.getAccentunder()); } /** {@inheritDoc} */ public JEuclidElement getBase() { return this.getMathElement(0); } /** {@inheritDoc} */ public abstract JEuclidElement getOverscript(); /** {@inheritDoc} */ public abstract JEuclidElement getUnderscript(); /** {@inheritDoc} */ public void setAccent(final String accent) { this.setAttribute(AbstractUnderOver.ATTR_ACCENT, accent); } /** {@inheritDoc} */ public void setAccentunder(final String accentunder) { this.setAttribute(AbstractUnderOver.ATTR_ACCENTUNDER, accentunder); } /** {@inheritDoc} */ public void setBase(final MathMLElement base) { this.setMathElement(0, base); } /** {@inheritDoc} */ @Override public boolean hasChildPostscripts(final JEuclidElement child, final LayoutContext context) { return this.limitsAreMoved(context) && child.isSameNode(this.getBase()); } /** {@inheritDoc} */ @Override protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { final LayoutContext now = this.applyLocalAttributesToContext(context); if (this.limitsAreMoved(now)) { ScriptSupport.layout(view, info, stage, now, this, this.getBase(), this.getUnderscript(), this.getOverscript(), null, null); } else { this.layoutUnderOver(view, info, stage, now); } } private void layoutUnderOver(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext now) { final JEuclidElement base = this.getBase(); final JEuclidElement under = this.getUnderscript(); final JEuclidElement over = this.getOverscript(); final LayoutInfo baseInfo = view.getInfo(base); final LayoutInfo underInfo; final LayoutInfo overInfo; float width = baseInfo.getWidth(stage); final float extraShift = AttributesHelper.convertSizeToPt( AbstractUnderOver.UNDER_OVER_SPACE, now, AttributesHelper.PT); if (under == null) { underInfo = null; } else { underInfo = view.getInfo(under); width = Math.max(width, underInfo.getWidth(stage)); } if (over == null) { overInfo = null; } else { overInfo = view.getInfo(over); width = Math.max(width, overInfo.getWidth(stage)); } final float middle = width / 2.0f; baseInfo.moveTo(middle - baseInfo.getHorizontalCenterOffset(stage), 0, stage); if (under != null) { this.positionUnder(stage, baseInfo, underInfo, extraShift, middle); } if (over != null) { this.positionOver(stage, baseInfo, overInfo, extraShift, middle); } final Dimension2D borderLeftTop = new Dimension2DImpl(0.0f, 0.0f); final Dimension2D borderRightBottom = new Dimension2DImpl(0.0f, 0.0f); ElementListSupport.fillInfoFromChildren(view, info, this, stage, borderLeftTop, borderRightBottom); info.setStretchWidth(width); info.setStretchAscent(baseInfo.getStretchAscent()); info.setStretchDescent(baseInfo.getStretchDescent()); } private void positionUnder(final LayoutStage stage, final LayoutInfo baseInfo, final LayoutInfo underInfo, final float extraShift, final float middle) { final float underextra; if (this.getAccentunderAsBoolean()) { underextra = extraShift; } else { underextra = extraShift * AbstractUnderOver.NON_ACCENT_MULTIPLIER; } final float y = baseInfo.getDescentHeight(stage) + underInfo.getAscentHeight(stage) + underextra; underInfo.moveTo(middle - underInfo.getHorizontalCenterOffset(stage), y, stage); } private void positionOver(final LayoutStage stage, final LayoutInfo baseInfo, final LayoutInfo overInfo, final float extraShift, final float middle) { final float overextra; if (this.getAccentAsBoolean()) { overextra = extraShift; } else { overextra = extraShift * AbstractUnderOver.NON_ACCENT_MULTIPLIER; } final float y = baseInfo.getAscentHeight(stage) + overInfo.getDescentHeight(stage) + overextra; overInfo.moveTo(middle - overInfo.getHorizontalCenterOffset(stage), -y, stage); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000205311335260530034621 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v ba4563de481e 2007/07/01 10:45:52 maxberger $ */ /** Script and Limit Schemata presentation element support (3.4).

This package contains support for script and limit schemata presentation elements, as defined in http://www.w3.org/TR/MathML/chapter3.html#presm.scrlim

*/ package net.sourceforge.jeuclid.elements.presentation.script; ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/AbstractSubSuper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000510711335260530034624 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractSubSuper.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.mathml.MathMLScriptElement; /** * Generic support for all elements that have a subscript or a superscript * attribute. *

* Supported elements: msub, msup, msubsup. * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractSubSuper extends AbstractScriptElement implements MathMLScriptElement { /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractSubSuper(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ public abstract JEuclidElement getBase(); /** {@inheritDoc} */ public abstract JEuclidElement getSuperscript(); /** {@inheritDoc} */ public abstract JEuclidElement getSubscript(); /** {@inheritDoc} */ @Override public boolean hasChildPostscripts(final JEuclidElement child, final LayoutContext context) { return child.isSameNode(this.getBase()); } /** {@inheritDoc} */ @Override protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { ScriptSupport.layout(view, info, stage, this .applyLocalAttributesToContext(context), this, this.getBase(), this.getSubscript(), this.getSuperscript(), this .getSubscriptshift(), this.getSuperscriptshift()); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Msup.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000475711335260530034636 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Msup.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.JEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.DOMException; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class arranges an element lower to an other element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Msup extends AbstractSubSuper { /** * The XML element from this class. */ public static final String ELEMENT = "msup"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Msup(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Msup(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public JEuclidElement getBase() { return this.getMathElement(0); } /** {@inheritDoc} */ @Override public JEuclidElement getSubscript() { return null; } /** {@inheritDoc} */ @Override public JEuclidElement getSuperscript() { return this.getMathElement(1); } /** {@inheritDoc} */ public void setBase(final MathMLElement base) { this.setMathElement(0, base); } /** {@inheritDoc} */ public void setSubscript(final MathMLElement subscript) { throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, "msup does not have subscript"); } /** {@inheritDoc} */ public void setSuperscript(final MathMLElement superscript) { this.setMathElement(1, superscript); } } ././@LongLink0000000000000000000000000000020000000000000011555 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/AbstractScriptElement.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000653311335260530034630 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractScriptElement.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.InlineLayoutContext; import net.sourceforge.jeuclid.context.RelativeScriptlevelLayoutContext; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.apache.batik.dom.AbstractDocument; /** * Base class for msub, msup, msubsup, and mmultiscripts. * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractScriptElement extends AbstractJEuclidElement { /** attribute for subscriptshift. */ public static final String ATTR_SUBSCRIPTSHIFT = "subscriptshift"; /** attribute for superscriptshift. */ public static final String ATTR_SUPERSCRIPTSHIFT = "superscriptshift"; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractScriptElement(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(AbstractScriptElement.ATTR_SUBSCRIPTSHIFT, Constants.ZERO); this.setDefaultMathAttribute( AbstractScriptElement.ATTR_SUPERSCRIPTSHIFT, Constants.ZERO); } /** * @return attribute subscriptshift. */ public String getSubscriptshift() { return this.getMathAttribute(AbstractScriptElement.ATTR_SUBSCRIPTSHIFT); } /** * @param subscriptshift * new value for subscriptshift */ public void setSubscriptshift(final String subscriptshift) { this.setAttribute(AbstractScriptElement.ATTR_SUBSCRIPTSHIFT, subscriptshift); } /** * @return attribtue superscriptshift */ public String getSuperscriptshift() { return this .getMathAttribute(AbstractScriptElement.ATTR_SUPERSCRIPTSHIFT); } /** * @param superscriptshift * new value for superscriptshift */ public void setSuperscriptshift(final String superscriptshift) { this.setAttribute(AbstractScriptElement.ATTR_SUPERSCRIPTSHIFT, superscriptshift); } /** {@inheritDoc} */ @Override public LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context) { final LayoutContext now = this.applyLocalAttributesToContext(context); if (childNum == 0) { return now; } else { return new RelativeScriptlevelLayoutContext( new InlineLayoutContext(now), 1); } } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Mmultiscripts.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000004052311335260530034625 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mmultiscripts.java,v 9af8f7182adc 2009/09/04 16:21:09 max $ */ package net.sourceforge.jeuclid.elements.presentation.script; import java.awt.geom.Dimension2D; import java.util.ArrayList; import java.util.List; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.elements.support.Dimension2DImpl; import net.sourceforge.jeuclid.elements.support.ElementListSupport; import net.sourceforge.jeuclid.elements.support.MathMLNodeListImpl; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLMultiScriptsElement; import org.w3c.dom.mathml.MathMLNodeList; /** * Prescripts and Tensor Indices. * * @version $Revision: 9af8f7182adc $ */ public final class Mmultiscripts extends AbstractScriptElement implements MathMLMultiScriptsElement { /** * The XML element from this class. */ public static final String ELEMENT = "mmultiscripts"; private static final long serialVersionUID = 1L; // /** // * Logger for this class // */ // currently unused // private static final Log LOGGER = LogFactory // .getLog(MathMultiScripts.class); private static final int STATE_POSTSUB = 0; private static final int STATE_POSTSUPER = 1; private static final int STATE_PRESUB = 2; private static final int STATE_PRESUPER = 3; private final List postsubscripts = new ArrayList(); private final List postsuperscripts = new ArrayList(); private final List presubscripts = new ArrayList(); private final List presuperscripts = new ArrayList(); private boolean inRewriteChildren; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Mmultiscripts(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.inRewriteChildren = false; } /** {@inheritDoc} */ @Override protected Node newNode() { return new Mmultiscripts(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public void changeHook() { super.changeHook(); if (!this.inRewriteChildren) { this.parseChildren(); } } private void parseChildren() { this.presubscripts.clear(); this.presuperscripts.clear(); this.postsubscripts.clear(); this.postsuperscripts.clear(); final int count = this.getMathElementCount(); int state = Mmultiscripts.STATE_POSTSUB; for (int i = 1; i < count; i++) { final JEuclidElement child = this.getMathElement(i); if (child instanceof Mprescripts) { state = Mmultiscripts.STATE_PRESUB; } else { if (state == Mmultiscripts.STATE_POSTSUB) { this.postsubscripts.add(child); state = Mmultiscripts.STATE_POSTSUPER; } else if (state == Mmultiscripts.STATE_POSTSUPER) { this.postsuperscripts.add(child); state = Mmultiscripts.STATE_POSTSUB; } else if (state == Mmultiscripts.STATE_PRESUB) { this.presubscripts.add(child); state = Mmultiscripts.STATE_PRESUPER; } else { this.presuperscripts.add(child); state = Mmultiscripts.STATE_PRESUB; } } } if (this.postsuperscripts.size() < this.postsubscripts.size()) { this.postsuperscripts.add((JEuclidElement) this.getOwnerDocument() .createElement(None.ELEMENT)); } if (this.presuperscripts.size() < this.presubscripts.size()) { this.presuperscripts.add((JEuclidElement) this.getOwnerDocument() .createElement(None.ELEMENT)); } } /** {@inheritDoc} */ @Override protected void layoutStageInvariant(final LayoutView view, final LayoutInfo info, final LayoutStage stage, final LayoutContext context) { final JEuclidElement base = this.getBase(); final LayoutInfo baseInfo = view.getInfo(base); final LayoutContext now = this.applyLocalAttributesToContext(context); final String subScriptshift = this.getSubscriptshift(); final String superScriptshift = this.getSuperscriptshift(); final ScriptSupport.ShiftInfo totalShiftInfo = this .calculateTotalShift(view, stage, baseInfo, now, subScriptshift, superScriptshift); float posX = 0.0f; final float subBaselineShift = totalShiftInfo.getSubShift(); final float superBaselineShift = totalShiftInfo.getSuperShift(); for (int i = 0; i < this.presubscripts.size(); i++) { final LayoutInfo subInfo = view.getInfo(this.presubscripts.get(i)); final LayoutInfo superInfo = view.getInfo(this.presuperscripts .get(i)); subInfo.moveTo(posX, subBaselineShift, stage); superInfo.moveTo(posX, -superBaselineShift, stage); posX += Math .max(subInfo.getWidth(stage), superInfo.getWidth(stage)); } baseInfo.moveTo(posX, 0.0f, stage); posX += baseInfo.getWidth(stage); for (int i = 0; i < this.postsubscripts.size(); i++) { final LayoutInfo subInfo = view.getInfo(this.postsubscripts.get(i)); final LayoutInfo superInfo = view.getInfo(this.postsuperscripts .get(i)); subInfo.moveTo(posX, subBaselineShift, stage); superInfo.moveTo(posX, -superBaselineShift, stage); posX += Math .max(subInfo.getWidth(stage), superInfo.getWidth(stage)); } final Dimension2D noborder = new Dimension2DImpl(0.0f, 0.0f); ElementListSupport.fillInfoFromChildren(view, info, this, stage, noborder, noborder); } private ScriptSupport.ShiftInfo calculateTotalShift(final LayoutView view, final LayoutStage stage, final LayoutInfo baseInfo, final LayoutContext now, final String subScriptshift, final String superScriptshift) { final ScriptSupport.ShiftInfo totalShiftInfo = new ScriptSupport.ShiftInfo( 0.0f, 0.0f); for (int i = 0; i < this.presubscripts.size(); i++) { final LayoutInfo subInfo = view.getInfo(this.presubscripts.get(i)); final LayoutInfo superInfo = view.getInfo(this.presuperscripts .get(i)); final ScriptSupport.ShiftInfo shiftInfo = ScriptSupport .calculateScriptShfits(stage, now, subScriptshift, superScriptshift, baseInfo, subInfo, superInfo); totalShiftInfo.max(shiftInfo); } for (int i = 0; i < this.postsubscripts.size(); i++) { final LayoutInfo subInfo = view.getInfo(this.postsubscripts.get(i)); final LayoutInfo superInfo = view.getInfo(this.postsuperscripts .get(i)); final ScriptSupport.ShiftInfo shiftInfo = ScriptSupport .calculateScriptShfits(stage, now, subScriptshift, superScriptshift, baseInfo, subInfo, superInfo); totalShiftInfo.max(shiftInfo); } return totalShiftInfo; } /** {@inheritDoc} */ @Override public boolean hasChildPrescripts(final JEuclidElement child) { return child.isSameNode(this.getBase()) && (this.getNumprescriptcolumns() > 0); } /** {@inheritDoc} */ @Override public boolean hasChildPostscripts(final JEuclidElement child, final LayoutContext context) { return child.isSameNode(this.getBase()) && (this.getNumscriptcolumns() > 0); } /** {@inheritDoc} */ public JEuclidElement getBase() { final JEuclidElement base = this.getMathElement(0); if (base == null) { return (JEuclidElement) this.getOwnerDocument().createElement( None.ELEMENT); } else { return base; } } /** {@inheritDoc} */ public void setBase(final MathMLElement base) { this.setMathElement(0, base); } /** {@inheritDoc} */ public int getNumprescriptcolumns() { return this.presubscripts.size(); } /** {@inheritDoc} */ public int getNumscriptcolumns() { return this.postsubscripts.size(); } /** {@inheritDoc} */ public MathMLElement getPreSubScript(final int colIndex) { return this.presubscripts.get(colIndex - 1); } /** {@inheritDoc} */ public MathMLElement getPreSuperScript(final int colIndex) { return this.presuperscripts.get(colIndex - 1); } /** {@inheritDoc} */ public MathMLNodeList getPrescripts() { final int presubsize = this.presubscripts.size(); final List list = new ArrayList(2 * presubsize); for (int i = 0; i < presubsize; i++) { list.add(this.presubscripts.get(i)); list.add(this.presuperscripts.get(i)); } return new MathMLNodeListImpl(list); } /** {@inheritDoc} */ public MathMLNodeList getScripts() { final int postsubsize = this.postsubscripts.size(); final List list = new ArrayList(2 * postsubsize); for (int i = 0; i < postsubsize; i++) { list.add(this.postsubscripts.get(i)); list.add(this.postsuperscripts.get(i)); } return new MathMLNodeListImpl(list); } /** {@inheritDoc} */ public MathMLElement getSubScript(final int colIndex) { if ((colIndex < 1) || (colIndex > this.postsubscripts.size())) { return null; } return this.postsubscripts.get(colIndex - 1); } /** {@inheritDoc} */ public MathMLElement getSuperScript(final int colIndex) { if ((colIndex < 1) || (colIndex > this.postsuperscripts.size())) { return null; } return this.postsuperscripts.get(colIndex - 1); } private void rewriteChildren() { this.inRewriteChildren = true; final org.w3c.dom.NodeList childList = this.getChildNodes(); final int len = childList.getLength(); // start at 1 since 0 is the base! for (int i = 1; i < len; i++) { this.removeChild(childList.item(1)); } if (len == 0) { this.addMathElement((JEuclidElement) this.getOwnerDocument() .createElement(None.ELEMENT)); } for (int i = 0; i < this.postsubscripts.size(); i++) { this.addMathElement(this.postsubscripts.get(i)); this.addMathElement(this.postsuperscripts.get(i)); } final int numprescripts = this.presubscripts.size(); if (numprescripts > 0) { this.addMathElement((Mprescripts) this.getOwnerDocument() .createElement(Mprescripts.ELEMENT)); for (int i = 0; i < numprescripts; i++) { this.addMathElement(this.presubscripts.get(i)); this.addMathElement(this.presuperscripts.get(i)); } } this.inRewriteChildren = false; } /** {@inheritDoc} */ public MathMLElement insertPreSubScriptBefore(final int colIndex, final MathMLElement newScript) { final int targetIndex; if (colIndex == 0) { targetIndex = this.presubscripts.size(); } else { targetIndex = colIndex - 1; } this.presubscripts.add(targetIndex, (JEuclidElement) newScript); this.presuperscripts.add(targetIndex, (JEuclidElement) this .getOwnerDocument().createElement(None.ELEMENT)); this.rewriteChildren(); return newScript; } /** {@inheritDoc} */ public MathMLElement insertPreSuperScriptBefore(final int colIndex, final MathMLElement newScript) { final int targetIndex; if (colIndex == 0) { targetIndex = this.presubscripts.size(); } else { targetIndex = colIndex - 1; } this.presubscripts.add(targetIndex, (JEuclidElement) this .getOwnerDocument().createElement(None.ELEMENT)); this.presuperscripts.add(targetIndex, (JEuclidElement) newScript); this.rewriteChildren(); return newScript; } /** {@inheritDoc} */ public MathMLElement insertSubScriptBefore(final int colIndex, final MathMLElement newScript) { final int targetIndex; if (colIndex == 0) { targetIndex = this.postsubscripts.size(); } else { targetIndex = colIndex - 1; } this.postsubscripts.add(targetIndex, (JEuclidElement) newScript); this.postsuperscripts.add(targetIndex, (JEuclidElement) this .getOwnerDocument().createElement(None.ELEMENT)); this.rewriteChildren(); return newScript; } /** {@inheritDoc} */ public MathMLElement insertSuperScriptBefore(final int colIndex, final MathMLElement newScript) { final int targetIndex; if (colIndex == 0) { targetIndex = this.postsubscripts.size(); } else { targetIndex = colIndex - 1; } this.postsubscripts.add(targetIndex, (JEuclidElement) this .getOwnerDocument().createElement(None.ELEMENT)); this.postsuperscripts.add(targetIndex, (JEuclidElement) newScript); this.rewriteChildren(); return newScript; } /** {@inheritDoc} */ public MathMLElement setPreSubScriptAt(final int colIndex, final MathMLElement newScript) { final int targetCol = colIndex - 1; if (targetCol == this.presubscripts.size()) { return this.insertPreSubScriptBefore(0, newScript); } else { this.presubscripts.set(targetCol, (JEuclidElement) newScript); this.rewriteChildren(); return newScript; } } /** {@inheritDoc} */ public MathMLElement setPreSuperScriptAt(final int colIndex, final MathMLElement newScript) { final int targetCol = colIndex - 1; if (targetCol == this.presuperscripts.size()) { return this.insertPreSuperScriptBefore(0, newScript); } else { this.presuperscripts.set(targetCol, (JEuclidElement) newScript); this.rewriteChildren(); return newScript; } } /** {@inheritDoc} */ public MathMLElement setSubScriptAt(final int colIndex, final MathMLElement newScript) { final int targetCol = colIndex - 1; if (targetCol == this.postsubscripts.size()) { return this.insertSubScriptBefore(0, newScript); } else { this.postsubscripts.set(targetCol, (JEuclidElement) newScript); this.rewriteChildren(); return newScript; } } /** {@inheritDoc} */ public MathMLElement setSuperScriptAt(final int colIndex, final MathMLElement newScript) { final int targetCol = colIndex - 1; if (targetCol == this.postsuperscripts.size()) { return this.insertSuperScriptBefore(0, newScript); } else { this.postsuperscripts.set(targetCol, (JEuclidElement) newScript); this.rewriteChildren(); return newScript; } } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Munderover.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000432711335260530034627 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Munderover.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.JEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class arranges an element under, and an other element over an element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Munderover extends AbstractUnderOver { /** * The XML element from this class. */ public static final String ELEMENT = "munderover"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Munderover(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Munderover(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public JEuclidElement getOverscript() { return this.getMathElement(2); } /** {@inheritDoc} */ @Override public JEuclidElement getUnderscript() { return this.getMathElement(1); } /** {@inheritDoc} */ public void setOverscript(final MathMLElement overscript) { this.setMathElement(2, overscript); } /** {@inheritDoc} */ public void setUnderscript(final MathMLElement underscript) { this.setMathElement(1, underscript); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Msub.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000475711335260530034636 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Msub.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.JEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.DOMException; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class arranges an element lower to an other element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Msub extends AbstractSubSuper { /** * The XML element from this class. */ public static final String ELEMENT = "msub"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Msub(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Msub(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public JEuclidElement getBase() { return this.getMathElement(0); } /** {@inheritDoc} */ @Override public JEuclidElement getSubscript() { return this.getMathElement(1); } /** {@inheritDoc} */ @Override public JEuclidElement getSuperscript() { return null; } /** {@inheritDoc} */ public void setBase(final MathMLElement base) { this.setMathElement(0, base); } /** {@inheritDoc} */ public void setSubscript(final MathMLElement subscript) { this.setMathElement(1, subscript); } /** {@inheritDoc} */ public void setSuperscript(final MathMLElement superscript) { throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, "msub does not have superscript"); } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Msubsup.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000467611335260530034636 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Msubsup.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.JEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class arranges a element lower, and a other elements upper to an * element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Msubsup extends AbstractSubSuper { /** * The XML element from this class. */ public static final String ELEMENT = "msubsup"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Msubsup(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Msubsup(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public JEuclidElement getBase() { return this.getMathElement(0); } /** {@inheritDoc} */ @Override public JEuclidElement getSubscript() { return this.getMathElement(1); } /** {@inheritDoc} */ @Override public JEuclidElement getSuperscript() { return this.getMathElement(2); } /** {@inheritDoc} */ public void setBase(final MathMLElement base) { this.setMathElement(0, base); } /** {@inheritDoc} */ public void setSubscript(final MathMLElement subscript) { this.setMathElement(1, subscript); } /** {@inheritDoc} */ public void setSuperscript(final MathMLElement superscript) { this.setMathElement(2, superscript); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script/Munder.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/script0000644000175000017500000000441011335260530034620 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Munder.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation.script; import net.sourceforge.jeuclid.elements.JEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.DOMException; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLElement; /** * This class arranges an element under an other element. * * @version $Revision: bc1d5fde7b73 $ */ public final class Munder extends AbstractUnderOver { /** * The XML element from this class. */ public static final String ELEMENT = "munder"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Munder(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Munder(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ @Override public JEuclidElement getOverscript() { return null; } /** {@inheritDoc} */ @Override public JEuclidElement getUnderscript() { return this.getMathElement(1); } /** {@inheritDoc} */ public void setOverscript(final MathMLElement overscript) { throw new DOMException(DOMException.HIERARCHY_REQUEST_ERR, "munder does not have overscript"); } /** {@inheritDoc} */ public void setUnderscript(final MathMLElement underscript) { this.setMathElement(1, underscript); } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/AbstractContainer.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/Abstra0000644000175000017500000000707111335260530034536 0ustar sylvestresylvestre/* * Copyright 2002 - 2006 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractContainer.java,v bc1d5fde7b73 2009/06/01 14:40:54 maxberger $ */ package net.sourceforge.jeuclid.elements.presentation; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.mathml.MathMLDeclareElement; import org.w3c.dom.mathml.MathMLElement; import org.w3c.dom.mathml.MathMLNodeList; import org.w3c.dom.mathml.MathMLPresentationContainer; /** * Abstract implementation for all classes that provide support for the DOM * MathMLContainer interface. * * @version $Revision: bc1d5fde7b73 $ */ public abstract class AbstractContainer extends AbstractJEuclidElement implements MathMLPresentationContainer { /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public AbstractContainer(final String qname, final AbstractDocument odoc) { super(qname, odoc); } /** {@inheritDoc} */ public int getNArguments() { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLNodeList getArguments() { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLNodeList getDeclarations() { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLElement getArgument(final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLElement setArgument(final MathMLElement newArgument, final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLElement insertArgument(final MathMLElement newArgument, final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public void deleteArgument(final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLElement removeArgument(final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLDeclareElement getDeclaration(final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLDeclareElement setDeclaration( final MathMLDeclareElement newDeclaration, final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLDeclareElement insertDeclaration( final MathMLDeclareElement newDeclaration, final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public MathMLDeclareElement removeDeclaration(final int index) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ public void deleteDeclaration(final int index) { throw new UnsupportedOperationException(); } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/enlivening/jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/enlive0000755000175000017500000000000011335260530034575 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/enlivening/Maction.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/enlive0000644000175000017500000000623311335260530034603 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Maction.java,v 2986a8eeaebc 2009/09/24 14:53:08 max $ */ package net.sourceforge.jeuclid.elements.presentation.enlivening; import java.util.Collections; import java.util.List; import net.sourceforge.jeuclid.elements.AbstractElementWithDelegates; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.apache.batik.dom.AbstractDocument; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLActionElement; /** * Represents an maction element. *

* TODO: This element does not actually implement any action. * * @version $Revision: 2986a8eeaebc $ */ public final class Maction extends AbstractElementWithDelegates implements MathMLActionElement { /** * The XML element from this class. */ public static final String ELEMENT = "maction"; private static final String ATTR_ACTIONTYPE = "actiontype"; private static final String ATTR_SELECTION = "selection"; private static final long serialVersionUID = 1L; /** * Default constructor. Sets MathML Namespace. * * @param qname * Qualified name. * @param odoc * Owner Document. */ public Maction(final String qname, final AbstractDocument odoc) { super(qname, odoc); this.setDefaultMathAttribute(Maction.ATTR_SELECTION, "1"); } /** {@inheritDoc} */ @Override protected Node newNode() { return new Maction(this.nodeName, this.ownerDocument); } /** {@inheritDoc} */ public String getActiontype() { return this.getMathAttribute(Maction.ATTR_ACTIONTYPE); } /** {@inheritDoc} */ public String getSelection() { return this.getMathAttribute(Maction.ATTR_SELECTION); } /** {@inheritDoc} */ public void setActiontype(final String actiontype) { this.setAttribute(Maction.ATTR_ACTIONTYPE, actiontype); } /** {@inheritDoc} */ public void setSelection(final String selection) { this.setAttribute(Maction.ATTR_SELECTION, selection); } /** {@inheritDoc} */ @Override protected List createDelegates() { LayoutableNode selectedElement; try { final int selected = Integer.parseInt(this.getSelection()); selectedElement = this.getMathElement(selected - 1); } catch (final NumberFormatException nfe) { selectedElement = null; } if (selectedElement == null) { return Collections.emptyList(); } else { return Collections.singletonList(selectedElement); } } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/enlivening/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/presentation/enlive0000644000175000017500000000205311335260530034577 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v ba4563de481e 2007/07/01 10:45:52 maxberger $ */ /** Enlivening Expressions presentation element support (3.6).

This package contains support for enlivening expressions presentation elements, as defined in http://www.w3.org/TR/MathML/chapter3.html#presm.enliven

*/ package net.sourceforge.jeuclid.elements.presentation.enlivening; ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/JEuclidElementFactory.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/JEuclidElementFacto0000644000175000017500000002103511335260530034411 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidElementFactory.java,v 92569cce5dd6 2009/07/27 14:50:38 maxberger $ */ package net.sourceforge.jeuclid.elements; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import net.sourceforge.jeuclid.elements.content.semantic.Annotation; import net.sourceforge.jeuclid.elements.content.semantic.Semantics; import net.sourceforge.jeuclid.elements.generic.ForeignElement; import net.sourceforge.jeuclid.elements.generic.MathImpl; import net.sourceforge.jeuclid.elements.presentation.enlivening.Maction; import net.sourceforge.jeuclid.elements.presentation.general.Menclose; import net.sourceforge.jeuclid.elements.presentation.general.Merror; import net.sourceforge.jeuclid.elements.presentation.general.Mfenced; import net.sourceforge.jeuclid.elements.presentation.general.Mfrac; import net.sourceforge.jeuclid.elements.presentation.general.Mpadded; import net.sourceforge.jeuclid.elements.presentation.general.Mphantom; import net.sourceforge.jeuclid.elements.presentation.general.Mroot; import net.sourceforge.jeuclid.elements.presentation.general.Mrow; import net.sourceforge.jeuclid.elements.presentation.general.Msqrt; import net.sourceforge.jeuclid.elements.presentation.general.Mstyle; import net.sourceforge.jeuclid.elements.presentation.script.Mmultiscripts; import net.sourceforge.jeuclid.elements.presentation.script.Mover; import net.sourceforge.jeuclid.elements.presentation.script.Mprescripts; import net.sourceforge.jeuclid.elements.presentation.script.Msub; import net.sourceforge.jeuclid.elements.presentation.script.Msubsup; import net.sourceforge.jeuclid.elements.presentation.script.Msup; import net.sourceforge.jeuclid.elements.presentation.script.Munder; import net.sourceforge.jeuclid.elements.presentation.script.Munderover; import net.sourceforge.jeuclid.elements.presentation.script.None; import net.sourceforge.jeuclid.elements.presentation.table.Maligngroup; import net.sourceforge.jeuclid.elements.presentation.table.Malignmark; import net.sourceforge.jeuclid.elements.presentation.table.Mlabeledtr; import net.sourceforge.jeuclid.elements.presentation.table.Mtable; import net.sourceforge.jeuclid.elements.presentation.table.Mtd; import net.sourceforge.jeuclid.elements.presentation.table.Mtr; import net.sourceforge.jeuclid.elements.presentation.token.Mglyph; import net.sourceforge.jeuclid.elements.presentation.token.Mi; import net.sourceforge.jeuclid.elements.presentation.token.Mn; import net.sourceforge.jeuclid.elements.presentation.token.Mo; import net.sourceforge.jeuclid.elements.presentation.token.Ms; import net.sourceforge.jeuclid.elements.presentation.token.Mspace; import net.sourceforge.jeuclid.elements.presentation.token.Mtext; import org.apache.batik.dom.AbstractDocument; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; /** * Creates MathElements from given element strings. * * @version $Revision: 92569cce5dd6 $ */ public final class JEuclidElementFactory { /** * Logger for this class */ private static final Log LOGGER = LogFactory .getLog(JEuclidElementFactory.class); private static final Map> IMPL_CLASSES = new HashMap>();; private JEuclidElementFactory() { // Empty on purpose } private static String removeNSPrefix(final String qualifiedName) { final int posSeparator = qualifiedName.indexOf(':'); if (posSeparator >= 0) { return qualifiedName.substring(posSeparator + 1); } return qualifiedName; } /** * Factory for MathML Elements. * * @param nsUri * namespace URI. May be null. May be ignored in the case of * MathML. * @param qualifiedName * name of the element with optional namespace prefix. * @param ownerDocument * Document this element belongs to. * @return A new MathElement for this tag name. */ public static Element elementFromName(final String nsUri, final String qualifiedName, final Document ownerDocument) { final String localName = JEuclidElementFactory .removeNSPrefix(qualifiedName); JEuclidElement element = null; if ((nsUri == null) || (AbstractJEuclidElement.URI.equals(nsUri))) { final Constructor con = JEuclidElementFactory.IMPL_CLASSES .get(localName); if (con != null) { try { element = (JEuclidElement) con.newInstance(qualifiedName, ownerDocument); } catch (final InstantiationException e) { element = null; } catch (final IllegalAccessException e) { element = null; } catch (final InvocationTargetException e) { element = null; } } } if (element == null) { // JEuclidElementFactory.LOGGER.info("Unsupported element: " // + localName); element = new ForeignElement(nsUri, qualifiedName, (AbstractDocument) ownerDocument); } return element; } private static void addClass(final Class c) { try { final Field f = c.getField("ELEMENT"); final String tag = (String) f.get(null); JEuclidElementFactory.IMPL_CLASSES.put(tag, c.getConstructor( String.class, AbstractDocument.class)); } catch (final NoSuchFieldException e) { JEuclidElementFactory.LOGGER.warn(c.toString(), e); } catch (final NoSuchMethodException e) { JEuclidElementFactory.LOGGER.warn(c.toString(), e); } catch (final IllegalAccessException e) { JEuclidElementFactory.LOGGER.warn(c.toString(), e); } } // CHECKSTYLE:OFF static { // CHECKSTYLE:ON JEuclidElementFactory.addClass(MathImpl.class); JEuclidElementFactory.addClass(Mfenced.class); JEuclidElementFactory.addClass(Mfrac.class); JEuclidElementFactory.addClass(Menclose.class); JEuclidElementFactory.addClass(Mphantom.class); JEuclidElementFactory.addClass(Msup.class); JEuclidElementFactory.addClass(Msub.class); JEuclidElementFactory.addClass(Mmultiscripts.class); JEuclidElementFactory.addClass(Mprescripts.class); JEuclidElementFactory.addClass(None.class); JEuclidElementFactory.addClass(Msubsup.class); JEuclidElementFactory.addClass(Munder.class); JEuclidElementFactory.addClass(Mover.class); JEuclidElementFactory.addClass(Munderover.class); JEuclidElementFactory.addClass(Mspace.class); JEuclidElementFactory.addClass(Ms.class); JEuclidElementFactory.addClass(Mstyle.class); JEuclidElementFactory.addClass(Msqrt.class); JEuclidElementFactory.addClass(Mroot.class); JEuclidElementFactory.addClass(Mtable.class); JEuclidElementFactory.addClass(Mtr.class); JEuclidElementFactory.addClass(Mlabeledtr.class); JEuclidElementFactory.addClass(Mtd.class); JEuclidElementFactory.addClass(Mo.class); JEuclidElementFactory.addClass(Mi.class); JEuclidElementFactory.addClass(Mn.class); JEuclidElementFactory.addClass(Mtext.class); JEuclidElementFactory.addClass(Mrow.class); JEuclidElementFactory.addClass(Maligngroup.class); JEuclidElementFactory.addClass(Malignmark.class); JEuclidElementFactory.addClass(Semantics.class); JEuclidElementFactory.addClass(Annotation.class); JEuclidElementFactory.addClass(Mpadded.class); JEuclidElementFactory.addClass(Merror.class); JEuclidElementFactory.addClass(Maction.class); JEuclidElementFactory.addClass(Mglyph.class); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/0000755000175000017500000000000011335260530032373 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000755000175000017500000000000011335260530034627 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/OperatorAttribute.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000000463211335260530034636 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: OperatorAttribute.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ package net.sourceforge.jeuclid.elements.support.operatordict; import java.util.Locale; import net.sourceforge.jeuclid.Constants; /** * @version $Revision: 88b901bf20fb $ */ /** * @version $Revision: 88b901bf20fb $ */ public enum OperatorAttribute { /** */ FORM(OperatorDictionary.FORM_INFIX), /** */ FENCE(Constants.FALSE), /** */ SEPARATOR(Constants.FALSE), /** */ LSPACE(OperatorDictionary.NAME_THICKMATHSPACE), /** */ RSPACE(OperatorDictionary.NAME_THICKMATHSPACE), /** */ STRETCHY(Constants.FALSE), /** */ SYMMETRIC(Constants.TRUE), /** */ MAXSIZE(OperatorDictionary.NAME_INFINITY), /** */ MINSIZE("1"), /** */ LARGEOP(Constants.FALSE), /** */ MOVABLELIMITS(Constants.FALSE), /** */ ACCENT(Constants.FALSE); private final String defaultValue; private OperatorAttribute(final String defValue) { this.defaultValue = defValue; } /** * @return the default value for this operator attribute. */ public String getDefaultValue() { return this.defaultValue; } /** * Parses a String into an OperatorAttribute. * * @param attr * the String to parse * @return an operatorAttibute if possible * @throws UnknownAttributeException * if the string does not represent a valid attribute. */ public static OperatorAttribute parseOperatorAttribute(final String attr) throws UnknownAttributeException { try { return OperatorAttribute.valueOf(attr.toUpperCase(Locale.US)); } catch (final IllegalArgumentException iae) { throw new UnknownAttributeException(attr, iae); } } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/OperatorDictionary2.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000002177711335260530034647 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: OperatorDictionary2.java,v 241d8c4d0dc1 2009/09/04 16:15:03 max $ */ package net.sourceforge.jeuclid.elements.support.operatordict; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.util.EnumMap; import java.util.Map; import java.util.TreeMap; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParserFactory; import net.sourceforge.jeuclid.elements.presentation.token.Mo; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.xml.sax.Attributes; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.helpers.DefaultHandler; /** * Read default values of operators from xml file. * * @version $Revision: 241d8c4d0dc1 $ */ public final class OperatorDictionary2 extends AbstractOperatorDictionary implements Serializable { /** * Logger for this class. */ private static final Log LOGGER = LogFactory .getLog(OperatorDictionary2.class); /** * */ private static final long serialVersionUID = 1L; /** * MathML dictionary resource. */ private static final String DICTIONARY_FILE = "/net/sourceforge/jeuclid/moDictionary.xml"; /** * MathML dictionary serialized resource. */ private static final String DICTIONARY_SERIALIZED = "/net/sourceforge/jeuclid/moDictionary.ser"; /** * The instance of the Dictionary */ private static OperatorDictionary instance; private OperatorDictionary2() { // everything is done in superclass. } /** * Get the for singleton instance. * * @return an instance of OperatorDictionary. */ public static OperatorDictionary getInstance() { synchronized (OperatorDictionary2.class) { if (OperatorDictionary2.instance == null) { final OperatorDictionary newDict = AbstractOperatorDictionary .deserialize(OperatorDictionary2.DICTIONARY_SERIALIZED); if (newDict == null) { OperatorDictionary2.instance = new OperatorDictionary2(); } else { OperatorDictionary2.instance = newDict; } } } return OperatorDictionary2.instance; } /** {@inheritDoc} */ @Override protected void initializeFromXML( final Map>> dict) { InputStream dictInput = null; try { dictInput = OperatorDictionary2.class .getResourceAsStream(OperatorDictionary2.DICTIONARY_FILE); final SAXParserFactory factory = SAXParserFactory.newInstance(); final XMLReader reader = factory.newSAXParser().getXMLReader(); reader.setContentHandler(new DictionaryReader(dict)); reader.parse(new InputSource(dictInput)); } catch (final ParserConfigurationException e) { OperatorDictionary2.LOGGER.warn("Cannot get SAXParser:" + e.getMessage()); } catch (final SAXException e) { OperatorDictionary2.LOGGER .warn("SAXException while parsing dictionary:" + e.getMessage()); } catch (final IOException e) { OperatorDictionary2.LOGGER.warn( "Read error while accessing XML dictionary", e); } finally { if (dictInput != null) { try { dictInput.close(); } catch (final IOException io) { OperatorDictionary2.LOGGER.warn( "Error closing XML dictionary", io); } } } } /** * The DictionaryReader reads dictionary XML file and initializes Dictionary * fields. */ private class DictionaryReader extends DefaultHandler { private static final String ELEMENT_ELEMENT = "element"; private String currentOperator; private OperatorForm currentFormIndex; private Map currentEntry; private final Map>> dict; public DictionaryReader( final Map>> d) { // makes findbugs happy this.dict = d; this.currentEntry = null; } @Override public void startDocument() throws SAXException { // nothing to do. } @Override public void endDocument() throws SAXException { // nothing to do. } @Override public void startElement(final String uri, final String localName, final String rawName, final Attributes attlist) throws SAXException { if (rawName .equals(OperatorDictionary2.DictionaryReader.ELEMENT_ELEMENT)) { this.currentEntry = new TreeMap(); final String form = attlist.getValue(Mo.ATTR_FORM); if (form == null) { // it is impossible because "form" is required attribute // for the dictionary. OperatorDictionary2.LOGGER .fatal("Error in dictionary, attribute 'form' is required attribute for the dictionary"); this.currentFormIndex = OperatorForm.INFIX; } else { this.currentFormIndex = OperatorForm .parseOperatorForm(form); } for (int i = 0; i < attlist.getLength(); i++) { final String attName = attlist.getQName(i); final String attValue = attlist.getValue(i); if (!attName.equals(Mo.ATTR_FORM)) { try { this.currentEntry.put(OperatorAttribute .parseOperatorAttribute(attName), attValue); } catch (final UnknownAttributeException e) { OperatorDictionary2.LOGGER.fatal(e.getMessage()); } } } } } @Override public void endElement(final String uri, final String localName, final String rawName) throws SAXException { if (rawName .equals(OperatorDictionary2.DictionaryReader.ELEMENT_ELEMENT)) { for (final Map.Entry attributeValues : this.currentEntry .entrySet()) { final OperatorAttribute attribute = attributeValues .getKey(); final String value = attributeValues.getValue(); Map> mapForAttr = this.dict .get(attribute); if (mapForAttr == null) { mapForAttr = new TreeMap>(); this.dict.put(attribute, mapForAttr); } Map valueForForm = mapForAttr .get(this.currentOperator); if (valueForForm == null) { valueForForm = new EnumMap( OperatorForm.class); mapForAttr.put(this.currentOperator, valueForForm); } valueForForm.put(this.currentFormIndex, value); } } this.currentEntry = null; this.currentOperator = null; } @Override public void characters(final char[] data, final int start, final int length) throws SAXException { if (this.currentEntry != null) { final char[] temp = new char[length]; System.arraycopy(data, start, temp, 0, length); if (this.currentOperator == null) { this.currentOperator = new String(temp); } else { this.currentOperator += new String(temp); } this.currentOperator = this.currentOperator.trim(); } } } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/OperatorForm.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000000271711335260530034640 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: OperatorForm.java,v cae99f384592 2009/06/03 12:42:28 maxberger $ */ package net.sourceforge.jeuclid.elements.support.operatordict; import java.util.Locale; /** * @version $Revision: cae99f384592 $ */ public enum OperatorForm { /** Prefix form, e.g. +a. */ PREFIX, /** Infix form, e.g. a+a. */ INFIX, /** Postfix form, e.g. a+. */ POSTFIX; private OperatorForm() { // Empty on purpose. } /** * Parse a String into an OperatorForm. * * @param form * the string to parse * @return an OperatorForm */ public static OperatorForm parseOperatorForm(final String form) { try { return OperatorForm.valueOf(form.toUpperCase(Locale.US)); } catch (final IllegalArgumentException iae) { return OperatorForm.INFIX; } } } ././@LongLink0000000000000000000000000000017000000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000000162411335260530034634 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Operator Dictionary support.

Supports an external dictionary with default values for mathematical operators as used by the Mo element.

*/ package net.sourceforge.jeuclid.elements.support.operatordict; ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/OperatorDictionary.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000000543011335260530034633 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: OperatorDictionary.java,v 241d8c4d0dc1 2009/09/04 16:15:03 max $ */ package net.sourceforge.jeuclid.elements.support.operatordict; /** * Interface for operator dictionaries. * * @version $Revision: 241d8c4d0dc1 $ */ public interface OperatorDictionary { /** * name for VERYVERYTHINMATHSPACE size of math space. */ String NAME_VERYVERYTHINMATHSPACE = "veryverythinmathspace"; /** * name for VERYTHINMATHSPACE size of math space. */ String NAME_VERYTHINMATHSPACE = "verythinmathspace"; /** * name for THINMATHSPACE size of math space. */ String NAME_THINMATHSPACE = "thinmathspace"; /** * name for MEDIUMMATHSPACE size of math space. */ String NAME_MEDIUMMATHSPACE = "mediummathspace"; /** * name for THICKMATHSPACE size of math space. */ String NAME_THICKMATHSPACE = "thickmathspace"; /** * name for VERYTHICKMATHSPACE size of math space. */ String NAME_VERYTHICKMATHSPACE = "verythickmathspace"; /** * name for VERYVERYTHICKMATHSPACE size of math space. */ String NAME_VERYVERYTHICKMATHSPACE = "veryverythickmathspace"; /** * name for INFINITY size of math space. */ String NAME_INFINITY = "infinity"; /** Form value for prefix. */ String FORM_PREFIX = "prefix"; /** form value for infix. */ String FORM_INFIX = "infix"; /** form value for postfix. */ String FORM_POSTFIX = "postfix"; /** * This value is returned, when default value of operator attribute doesn't * exist in this dictionary so far. */ String VALUE_UNKNOWN = "NULL"; /** * Determines default value of the operator attribute. * * @param operator * operator character * @param form * form string * @param attributeName * name of attribute * @return VALUE_UNKOWN or value from dict. * @throws UnknownAttributeException * Raised, if wrong attributeName was provided. */ String getDefaultAttributeValue(final String operator, final String form, final String attributeName) throws UnknownAttributeException; } ././@LongLink0000000000000000000000000000020600000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/AbstractOperatorDictionary.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000001336311335260530034637 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractOperatorDictionary.java,v c75d8b379394 2009/09/25 22:03:08 max $ */ package net.sourceforge.jeuclid.elements.support.operatordict; import java.io.IOException; import java.io.InputStream; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.Serializable; import java.util.EnumMap; import java.util.Map; /** * Read default values of operators from xml file. * * @version $Revision: c75d8b379394 $ */ public abstract class AbstractOperatorDictionary implements OperatorDictionary, Serializable { /** * */ private static final long serialVersionUID = 1L; private final Map>> dict; /** * Default constructor. */ protected AbstractOperatorDictionary() { this.dict = new EnumMap>>( OperatorAttribute.class); this.initializeFromXML(this.dict); this.overrideStretchy(); } private void overrideStretchy() { final Map> opmap = this.dict .get(OperatorAttribute.STRETCHY); for (final Map.Entry> e : opmap .entrySet()) { final String override = StretchOverride.getStretchOverride(e .getKey()); if (override != null) { for (final Map.Entry e2 : e.getValue() .entrySet()) { if (Boolean.parseBoolean(e2.getValue())) { e2.setValue(override); } } } } } /** * Get the for singleton instance. * * @param path * path for the serialized object. * @return an instance of OperatorDictionary. */ protected static OperatorDictionary deserialize(final String path) { OperatorDictionary newDict = null; try { final InputStream is = AbstractOperatorDictionary.class .getResourceAsStream(path); final ObjectInput oi = new ObjectInputStream(is); newDict = (AbstractOperatorDictionary) oi.readObject(); oi.close(); } catch (final ClassNotFoundException cnfe) { newDict = null; } catch (final IllegalArgumentException e) { newDict = null; } catch (final IOException e) { newDict = null; } catch (final NullPointerException e) { newDict = null; } return newDict; } /** * Initializes Dictionary. * * @param d * the dictionary to initialize. */ protected abstract void initializeFromXML( Map>> d); /** * Determines default value of the operator attribute. * * @param operator * operator character * @param form * form string * @param attributeName * name of attribute * @return VALUE_UNKOWN or value from dict. * @throws UnknownAttributeException * Raised, if wrong attributeName was provided. */ public String getDefaultAttributeValue(final String operator, final String form, final String attributeName) throws UnknownAttributeException { final OperatorForm intForm = OperatorForm.parseOperatorForm(form); return this.getDefaultAttributeValue(operator, intForm, OperatorAttribute.parseOperatorAttribute(attributeName)); } /** * Determines default value of the operator attribute. * * @param operator * Operator character. * @param form * Form value * @param attributeName * Name of the attribute. * @return Default value (VALUE_UNKNOWN, if default value has not been * provided yet). * @throws UnknownAttributeException * Raised, if wrong attributeName was provided. */ private String getDefaultAttributeValue(final String operator, final OperatorForm form, final OperatorAttribute attribute) { final Map> opForAttr = this.dict .get(attribute); if (opForAttr == null) { return attribute.getDefaultValue(); } final Map valuesPerForm = opForAttr.get(operator); String retVal; if (valuesPerForm == null) { retVal = attribute.getDefaultValue(); } else { retVal = valuesPerForm.get(form); if (retVal == null) { retVal = valuesPerForm.get(OperatorForm.INFIX); } if (retVal == null) { retVal = valuesPerForm.get(OperatorForm.POSTFIX); } if (retVal == null) { retVal = valuesPerForm.get(OperatorForm.PREFIX); } if (retVal == null) { retVal = attribute.getDefaultValue(); } } return retVal; } } ././@LongLink0000000000000000000000000000020500000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/UnknownAttributeException.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000000254411335260530034636 0ustar sylvestresylvestre/* * Copyright 2002 - 2006 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: UnknownAttributeException.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ package net.sourceforge.jeuclid.elements.support.operatordict; /** * This is just a marker class. * * @version $Revision: 88b901bf20fb $ */ public class UnknownAttributeException extends Exception { /** * */ private static final long serialVersionUID = 9010017153628193810L; /** * Default constructor. * * @param wrongAttributeName * name of attribute * @param cause * original Exception */ public UnknownAttributeException(final String wrongAttributeName, final Exception cause) { super("Unknown attribute name: " + wrongAttributeName, cause); } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/StretchOverride.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000002267711335260530034647 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: StretchOverride.java,v c75d8b379394 2009/09/25 22:03:08 max $ */ package net.sourceforge.jeuclid.elements.support.operatordict; import java.util.HashMap; import java.util.Map; import net.sourceforge.jeuclid.elements.presentation.token.Mo; /** * Contains information on characters which stretch vertical / horizontal only. * * @version $Revision: c75d8b379394 $ */ public final class StretchOverride { private static final Map STRETCHATTR = new HashMap(); private StretchOverride() { // nothing to do. } /** * Returns {@link Mo#VALUE_STRETCHY_HORIZONTAL} or * {@link Mo#VALUE_STRETCHY_VERTICAL} if the character is to be stretch only * in that direction. * * @param operator * operator to check * @return a String or null if not known. */ public static String getStretchOverride(final String operator) { return StretchOverride.STRETCHATTR.get(operator); } // CHECKSTYLE:OFF // Method is too long... I know. static { // CHECKSTYLE:ON StretchOverride.STRETCHATTR.put("\ufe36", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\ufe37", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\ufe35", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u0029", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\ufe38", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u0028", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u222c", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u222d", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u222e", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u222f", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u222b", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2230", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2233", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2232", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u005e", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u005d", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u005b", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u007d", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u007c", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u007b", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u00af", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u02c7", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u02dc", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u0332", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2500", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2502", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u232a", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2329", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2758", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u007c\u007c", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u301a", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u301b", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2308", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u230b", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u230a", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2309", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u294e", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21d5", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21d4", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u294f", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21d1", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21d0", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21d3", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21d2", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2954", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21cc", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2955", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2956", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2957", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2950", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2951", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2952", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2953", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21cb", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u295c", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21c4", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21c5", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u295d", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21c6", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u295e", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u295f", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2958", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21c0", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2959", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21c1", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21c2", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u295a", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21c3", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u295b", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2961", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2960", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u296f", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u296e", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21f5", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21e4", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21e5", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u27f7", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u27f6", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u27f5", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u23b4", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2192", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u23b5", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u27fa", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2190", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2193", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u27f9", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u27f8", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2195", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2194", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u2912", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u2913", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21bc", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21bf", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21be", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21bd", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21a6", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21a7", Mo.VALUE_STRETCHY_VERTICAL); StretchOverride.STRETCHATTR.put("\u21a4", Mo.VALUE_STRETCHY_HORIZONTAL); StretchOverride.STRETCHATTR.put("\u21a5", Mo.VALUE_STRETCHY_VERTICAL); } } ././@LongLink0000000000000000000000000000017700000000000011572 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordict/OperatorDictionary3.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/operatordic0000644000175000017500000002626311335260530034642 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: OperatorDictionary3.java,v 51c390b5de9a 2009/09/07 16:34:58 max $ */ package net.sourceforge.jeuclid.elements.support.operatordict; import java.io.IOException; import java.io.InputStream; import java.io.Serializable; import java.util.EnumMap; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import javax.xml.XMLConstants; import javax.xml.namespace.NamespaceContext; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathExpression; import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.parser.Parser; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; /** * Implements an operator dictionary based on the MathML 3 spec. * * @version $Revision: 51c390b5de9a $ */ public final class OperatorDictionary3 extends AbstractOperatorDictionary implements Serializable { /** * Logger for this class. */ private static final Log LOGGER = LogFactory .getLog(OperatorDictionary3.class); private static final String NO_SPACE = "0em"; /** * */ private static final long serialVersionUID = 1L; /** * MathML dictionary resource. */ private static final String DICTIONARY_FILE = "/net/sourceforge/jeuclid/appendixc.xml"; /** * MathML dictionary serialized resource. */ private static final String DICTIONARY_SERIALIZED = "/net/sourceforge/jeuclid/appendixc.ser"; /** * The instance of the Dictionary */ private static OperatorDictionary instance; private class PersonalNamespaceContext implements NamespaceContext { public PersonalNamespaceContext() { } /** {@inheritDoc} */ public String getNamespaceURI(final String prefix) { final String retVal; if ("html".equals(prefix)) { retVal = "http://www.w3.org/1999/xhtml"; } else if ("xml".equals(prefix)) { retVal = XMLConstants.XML_NS_URI; } else { retVal = XMLConstants.NULL_NS_URI; } return retVal; } /** {@inheritDoc} */ // This method isn't necessary for XPath processing. public String getPrefix(final String uri) { throw new UnsupportedOperationException(); } /** {@inheritDoc} */ // This method isn't necessary for XPath processing either. public Iterator getPrefixes(final String uri) { throw new UnsupportedOperationException(); } } private OperatorDictionary3() { // nothing to do. } /** * Get the for singleton instance. * * @return an instance of OperatorDictionary. */ public static OperatorDictionary getInstance() { synchronized (OperatorDictionary3.class) { if (OperatorDictionary3.instance == null) { final OperatorDictionary newDict = AbstractOperatorDictionary .deserialize(OperatorDictionary3.DICTIONARY_SERIALIZED); if (newDict == null) { OperatorDictionary3.instance = new OperatorDictionary3(); } else { OperatorDictionary3.instance = newDict; } } } return OperatorDictionary3.instance; } /** {@inheritDoc} */ @Override protected void initializeFromXML( final Map>> dict) { try { final Document doc = this.loadDocument(); final XPath xpath = this.createXPath(); this.extractValuesFromDocument(doc, xpath, dict); } catch (final SAXException e) { OperatorDictionary3.LOGGER.warn( "XML Could not be parsed in operator dictionary", e); } catch (final IOException e) { OperatorDictionary3.LOGGER.warn( "IO error reading operator dictionary", e); } catch (final XPathExpressionException e) { OperatorDictionary3.LOGGER.warn( "XPath error in operator dictionary", e); } } /** * @param doc * @param xpath * @throws XPathExpressionException */ private void extractValuesFromDocument( final Document doc, final XPath xpath, final Map>> dict) throws XPathExpressionException { final XPathExpression expr = xpath .compile("//html:table[@class='sortable']/html:tbody/html:tr"); final XPathExpression operatorExpr = xpath.compile("html:th[2]/text()"); final XPathExpression formExpr = xpath.compile("html:th[4]/text()"); final XPathExpression lspaceExpr = xpath.compile("html:td[2]/text()"); final XPathExpression rspaceExpr = xpath.compile("html:td[3]/text()"); final XPathExpression minsizeExpr = xpath.compile("html:td[4]/text()"); final XPathExpression propertiesExpr = xpath .compile("html:td[5]/text()"); final NodeList result = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); for (int i = 0; i < result.getLength(); i++) { final Node trNode = result.item(i); final String operator = (String) operatorExpr.evaluate(trNode, XPathConstants.STRING); final String formStr = (String) formExpr.evaluate(trNode, XPathConstants.STRING); final OperatorForm form = OperatorForm.parseOperatorForm(formStr); final String lspace = (String) lspaceExpr.evaluate(trNode, XPathConstants.STRING); final String rspace = (String) rspaceExpr.evaluate(trNode, XPathConstants.STRING); final String minsize = (String) minsizeExpr.evaluate(trNode, XPathConstants.STRING); final String propertiesString = (String) propertiesExpr.evaluate( trNode, XPathConstants.STRING); this.addAttr(operator, form, OperatorAttribute.LSPACE, this .intToSpace(lspace), dict); this.addAttr(operator, form, OperatorAttribute.RSPACE, this .intToSpace(rspace), dict); if (minsize.length() > 0) { this.addAttr(operator, form, OperatorAttribute.MINSIZE, minsize, dict); } this.addProperties(operator, form, propertiesString, dict); } } /** * @return * @throws SAXException * @throws IOException */ private Document loadDocument() throws SAXException, IOException { final InputStream is = OperatorDictionary3.class .getResourceAsStream(OperatorDictionary3.DICTIONARY_FILE); final Document doc = Parser.getInstance().getDocumentBuilder() .parse(is); return doc; } /** * @return */ private XPath createXPath() { final XPathFactory factory = XPathFactory.newInstance(); final XPath xpath = factory.newXPath(); xpath.setNamespaceContext(new PersonalNamespaceContext()); return xpath; } /** * @param operator * @param form * @param propertiesString */ private void addProperties( final String operator, final OperatorForm form, final String propertiesString, final Map>> dict) { final String[] properties = propertiesString.split(" "); for (final String property : properties) { if (property.length() > 0) { try { final OperatorAttribute oa = OperatorAttribute .parseOperatorAttribute(property); this.addAttr(operator, form, oa, Constants.TRUE, dict); } catch (final UnknownAttributeException uae) { OperatorDictionary3.LOGGER.warn( "Unkown Attribute when reading operator dictionary: " + property, uae); } } } } /** * @param operator * @param form * @param lspace * @param intToSpace */ private void addAttr( final String operator, final OperatorForm form, final OperatorAttribute attribute, final String value, final Map>> dict) { Map> innerMap1 = dict.get(attribute); if (innerMap1 == null) { innerMap1 = new HashMap>(); dict.put(attribute, innerMap1); } Map innerMap2 = innerMap1.get(operator); if (innerMap2 == null) { innerMap2 = new EnumMap(OperatorForm.class); innerMap1.put(operator, innerMap2); } innerMap2.put(form, value); } /** * @param lspace * @return */ private String intToSpace(final String spaceInt) { String retVal; try { final int i = Integer.parseInt(spaceInt); switch (i) { case 0: retVal = OperatorDictionary3.NO_SPACE; break; case 1: retVal = OperatorDictionary.NAME_VERYVERYTHINMATHSPACE; break; case 2: retVal = OperatorDictionary.NAME_VERYTHINMATHSPACE; break; case 3: retVal = OperatorDictionary.NAME_THINMATHSPACE; break; case 4: retVal = OperatorDictionary.NAME_MEDIUMMATHSPACE; break; case 5: retVal = OperatorDictionary.NAME_THICKMATHSPACE; break; case 6: retVal = OperatorDictionary.NAME_VERYTHICKMATHSPACE; break; case 7: retVal = OperatorDictionary.NAME_VERYVERYTHICKMATHSPACE; break; default: retVal = OperatorDictionary3.NO_SPACE; } } catch (final NumberFormatException e) { retVal = OperatorDictionary3.NO_SPACE; } return retVal; } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/ElementListSupport.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/ElementList0000644000175000017500000001661611335260530034555 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ElementListSupport.java,v d02878fc1d01 2009/09/08 14:35:02 max $ */ package net.sourceforge.jeuclid.elements.support; import java.awt.Color; import java.awt.geom.Dimension2D; import java.util.ArrayList; import java.util.List; import net.sourceforge.jeuclid.layout.FillRectObject; import net.sourceforge.jeuclid.layout.GraphicsObject; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; import net.sourceforge.jeuclid.layout.LayoutView; import net.sourceforge.jeuclid.layout.LayoutableNode; import org.w3c.dom.Node; /** * Class to support Lists of MathElements. *

* This class can be used by all elements that have some kind of a list of * children that they need to handle in a row-like manner. * * @version $Revision: d02878fc1d01 $ */ public final class ElementListSupport { private ElementListSupport() { // Utility class. } /** * Creates a list of children for the given Element. * * @param parent * the parent element. * @return list of Children. */ public static List createListOfChildren(final Node parent) { final org.w3c.dom.NodeList childList = parent.getChildNodes(); final int len = childList.getLength(); final List children = new ArrayList(len); for (int i = 0; i < len; i++) { final Node child = childList.item(i); children.add(child); } return children; } /** * Creates a list of layoutable children for the given Element. * * @param parent * the parent element. * @return list of Children. */ public static List createListOfLayoutChildren( final Node parent) { final org.w3c.dom.NodeList childList = parent.getChildNodes(); final int len = childList.getLength(); final List children = new ArrayList(len); for (int i = 0; i < len; i++) { final Node child = childList.item(i); if (child instanceof LayoutableNode) { children.add((LayoutableNode) child); } } return children; } /** * @param view * View Object * @param info * Info to fill * @param parent * Current Node * @param stage * Stage to load Info From * @param borderLeftTop * border around element. * @param borderRightBottom * border around element. */ public static void fillInfoFromChildren(final LayoutView view, final LayoutInfo info, final Node parent, final LayoutStage stage, final Dimension2D borderLeftTop, final Dimension2D borderRightBottom) { float ascentHeight = (float) borderLeftTop.getHeight(); float descentHeight = (float) borderRightBottom.getHeight(); final float startX = (float) borderLeftTop.getWidth(); float width = startX; for (final LayoutableNode child : ElementListSupport .createListOfLayoutChildren(parent)) { final LayoutInfo childInfo = view.getInfo(child); ascentHeight = Math.max(ascentHeight, -childInfo.getPosY(stage) + childInfo.getAscentHeight(stage)); descentHeight = Math.max(descentHeight, childInfo.getPosY(stage) + childInfo.getDescentHeight(stage)); width = Math.max(width, childInfo.getPosX(stage) + childInfo.getWidth(stage)); } info.setAscentHeight(ascentHeight + (float) borderLeftTop.getHeight(), stage); info.setDescentHeight(descentHeight + (float) borderRightBottom.getHeight(), stage); info.setHorizontalCenterOffset((width + startX) / 2.0f, stage); info.setWidth(width + (float) borderRightBottom.getWidth(), stage); } /** * @param view * View Object * @param info * Info to fill * @param children * Children to layout * @param stage * Stage to load Info From */ public static void layoutSequential(final LayoutView view, final LayoutInfo info, final List children, final LayoutStage stage) { float ascentHeight = 0.0f; float descentHeight = 0.0f; float posX = 0.0f; float stretchAscent = 0.0f; float stretchDescent = 0.0f; for (final LayoutableNode child : children) { final LayoutInfo childInfo = view.getInfo(child); ascentHeight = Math.max(ascentHeight, childInfo .getAscentHeight(stage)); descentHeight = Math.max(descentHeight, childInfo .getDescentHeight(stage)); stretchAscent = Math.max(stretchAscent, childInfo .getStretchAscent()); stretchDescent = Math.max(stretchDescent, childInfo .getStretchDescent()); childInfo.moveTo(posX, 0.0f, stage); posX += childInfo.getWidth(stage); } info.setAscentHeight(ascentHeight, stage); info.setDescentHeight(descentHeight, stage); info.setStretchAscent(stretchAscent); info.setStretchDescent(stretchDescent); info.setHorizontalCenterOffset(posX / 2.0f, stage); info.setWidth(posX, stage); } /** * Add a background Rectangle for the given background color. * * @param backgroundColor * background color (may be null) * @param info * LayoutInfo object to add to. Must already be completely * rendered (stage 2) * @param useCeil * if true, the {@link Math#ceil(double)} will be used to avoid * anti-aliasing artifacts. */ public static void addBackground(final Color backgroundColor, final LayoutInfo info, final boolean useCeil) { if (backgroundColor != null) { final GraphicsObject fillObject; if (useCeil) { fillObject = new FillRectObject(backgroundColor, (float) Math .ceil(info.getAscentHeight(LayoutStage.STAGE2)), (float) Math.ceil(info .getDescentHeight(LayoutStage.STAGE2)), (float) Math.ceil(info.getWidth(LayoutStage.STAGE2))); } else { fillObject = new FillRectObject(backgroundColor, info .getAscentHeight(LayoutStage.STAGE2), info .getDescentHeight(LayoutStage.STAGE2), info .getWidth(LayoutStage.STAGE2)); } info.getGraphicObjects().add(0, fillObject); } } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/0000755000175000017500000000000011335260530033357 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/TextContent.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/TextCo0000644000175000017500000000410111335260530034504 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: TextContent.java,v 8d5443ff84fe 2009/09/01 13:21:57 max $ */ package net.sourceforge.jeuclid.elements.support.text; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.w3c.dom.Node; /** * Helper class for handling Text Content. * * @version $Revision: 8d5443ff84fe $ */ public final class TextContent { private TextContent() { // do not instantiate. } /** * Retrieve the text content for a given node according to MathML standards. * * @param node * Node * @return Text content. Always a valid String, never null. */ public static String getText(final Node node) { final String theText = node.getTextContent(); if (theText == null) { return ""; } else { final StringBuilder newText = new StringBuilder(); // As seen in 2.4.6 newText.append(theText.trim()); for (int i = 0; i < newText.length() - 1; i++) { if ((newText.charAt(i) <= AbstractJEuclidElement.TRIVIAL_SPACE_MAX) && (newText.charAt(i + 1) <= AbstractJEuclidElement.TRIVIAL_SPACE_MAX)) { newText.deleteCharAt(i); // CHECKSTYLE:OFF // This is intentional i--; // CHECKSTYLE:ON } } return CharConverter.convertEarly(newText.toString()); } } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/packag0000644000175000017500000000164411335260530034535 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Internal Utilities for text and string handling.

This package contains internal utilities concerned with the handling of Strings, Characters, and TextLayouts.

*/ package net.sourceforge.jeuclid.elements.support.text; ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/CharConverter.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/CharCo0000644000175000017500000003575111335260530034454 0ustar sylvestresylvestre/* * Copyright 2002 - 2006 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: CharConverter.java,v c507eb905870 2008/05/15 16:59:47 maxberger $ */ package net.sourceforge.jeuclid.elements.support.text; import java.util.HashMap; import java.util.Map; /** * class for char converting. * * @version $Revision: c507eb905870 $ */ public final class CharConverter { /** * Char equivalents to be mapped immediately before display. */ private static final Map LATE_MAP_MAP = new HashMap(); /** * Char equivalents to be mapped when parsing. */ private static final Map EARLY_MAP_MAP = new HashMap( 200); private CharConverter() { // Empty on purpose. } /** * @param string * String for char replacing * @return result string */ private static String actualConvert(final String string, final Map map) { final StringBuffer buffer = new StringBuffer(); for (int i = 0; i < string.length(); i++) { final char orig = string.charAt(i); final String mapsTo = map.get(orig); if (mapsTo == null) { buffer.append(orig); } else { buffer.append(mapsTo); } } return buffer.toString(); } /** * @param string * String for char replacing * @return result string */ public static String convertEarly(final String string) { return CharConverter.actualConvert(string, CharConverter.EARLY_MAP_MAP); } /** * @param string * String for char replacing * @return result string */ public static String convertLate(final String string) { return CharConverter .actualConvert(string, CharConverter.LATE_MAP_MAP); } // CHECKSTYLE:OFF // Too many statements, but this is initialization! static { CharConverter.LATE_MAP_MAP.put('\u2061', ""); CharConverter.LATE_MAP_MAP.put('\u200b', ""); CharConverter.LATE_MAP_MAP.put('\u2062', ""); CharConverter.LATE_MAP_MAP.put('\u2148', ""); /* * This maps UnderBar -> Overbar. The regular mapping of underbars * (0332) is a combining character, which produces incorrect text * metrics. * * Underscore (_) should be used, but then the information about * strechting is lost. * * OverBars are higher in the layout. However, UnderBars are usually * only used in underscripts, where this produces no problem. * * TODO: Check if there are other combining characters among the * default entities and map them accordingly. */ CharConverter.LATE_MAP_MAP.put('\u0332', "\u00AF"); /* * These are created by OpenOffice formula < 2.2. See * http://www.openoffice.org/servlets/ReadMsg?list=dev&msgNo=543 * * These are mapping from the private area of the "starSymbol" (now * 'openSymbol') font. */ CharConverter.EARLY_MAP_MAP.put('\uE080', "\u2031"); CharConverter.EARLY_MAP_MAP.put('\uE081', "\uF613"); CharConverter.EARLY_MAP_MAP.put('\uE083', "\u002B"); CharConverter.EARLY_MAP_MAP.put('\uE084', "\u003C"); CharConverter.EARLY_MAP_MAP.put('\uE085', "\u003E"); CharConverter.EARLY_MAP_MAP.put('\uE086', "\ue425"); CharConverter.EARLY_MAP_MAP.put('\uE087', "\ue421"); CharConverter.EARLY_MAP_MAP.put('\uE089', "\u2208"); CharConverter.EARLY_MAP_MAP.put('\uE08A', "\u0192"); CharConverter.EARLY_MAP_MAP.put('\uE08B', "\u2026"); CharConverter.EARLY_MAP_MAP.put('\uE08C', "\u2192"); CharConverter.EARLY_MAP_MAP.put('\uE091', "\u0302"); CharConverter.EARLY_MAP_MAP.put('\uE092', "\u030C"); CharConverter.EARLY_MAP_MAP.put('\uE093', "\u0306"); CharConverter.EARLY_MAP_MAP.put('\uE094', "\u0301"); CharConverter.EARLY_MAP_MAP.put('\uE095', "\u0300"); CharConverter.EARLY_MAP_MAP.put('\uE096', "\u0303"); CharConverter.EARLY_MAP_MAP.put('\uE097', "\u0304"); // Was: 20D7, but 2192 is more widely supported CharConverter.EARLY_MAP_MAP.put('\uE098', "\u2192"); CharConverter.EARLY_MAP_MAP.put('\uE099', "\u02d9"); CharConverter.EARLY_MAP_MAP.put('\uE09A', "\u0308"); CharConverter.EARLY_MAP_MAP.put('\uE09B', "\u20DB"); CharConverter.EARLY_MAP_MAP.put('\uE09C', "\u030A"); CharConverter.EARLY_MAP_MAP.put('\uE09E', "\u0028"); CharConverter.EARLY_MAP_MAP.put('\uE09F', "\u0029"); CharConverter.EARLY_MAP_MAP.put('\uE0A2', "\u301A"); CharConverter.EARLY_MAP_MAP.put('\uE0A3', "\u301B"); CharConverter.EARLY_MAP_MAP.put('\uE0A4', "\u2373"); CharConverter.EARLY_MAP_MAP.put('\uE0A8', "\u002F"); CharConverter.EARLY_MAP_MAP.put('\uE0A9', "\\"); CharConverter.EARLY_MAP_MAP.put('\uE0AA', "\u274F"); CharConverter.EARLY_MAP_MAP.put('\uE0AC', "\u0393"); CharConverter.EARLY_MAP_MAP.put('\uE0AD', "\u0394"); CharConverter.EARLY_MAP_MAP.put('\uE0AE', "\u0398"); CharConverter.EARLY_MAP_MAP.put('\uE0AF', "\u039b"); CharConverter.EARLY_MAP_MAP.put('\uE0B0', "\u039e"); CharConverter.EARLY_MAP_MAP.put('\uE0B1', "\u03A0"); CharConverter.EARLY_MAP_MAP.put('\uE0B2', "\u03a3"); CharConverter.EARLY_MAP_MAP.put('\uE0B3', "\u03a5"); CharConverter.EARLY_MAP_MAP.put('\uE0B4', "\u03a6"); CharConverter.EARLY_MAP_MAP.put('\uE0B5', "\u03a8"); CharConverter.EARLY_MAP_MAP.put('\uE0B6', "\u03a9"); CharConverter.EARLY_MAP_MAP.put('\uE0B7', "\u03b1"); CharConverter.EARLY_MAP_MAP.put('\uE0B8', "\u03b2"); CharConverter.EARLY_MAP_MAP.put('\uE0B9', "\u03b3"); CharConverter.EARLY_MAP_MAP.put('\uE0BA', "\u03b4"); CharConverter.EARLY_MAP_MAP.put('\uE0BB', "\u03b5"); CharConverter.EARLY_MAP_MAP.put('\uE0BC', "\u03b6"); CharConverter.EARLY_MAP_MAP.put('\uE0BD', "\u03b7"); CharConverter.EARLY_MAP_MAP.put('\uE0BE', "\u03b8"); CharConverter.EARLY_MAP_MAP.put('\uE0BF', "\u03b9"); CharConverter.EARLY_MAP_MAP.put('\uE0C0', "\u03ba"); CharConverter.EARLY_MAP_MAP.put('\uE0C1', "\u03bb"); CharConverter.EARLY_MAP_MAP.put('\uE0C2', "\u03bc"); CharConverter.EARLY_MAP_MAP.put('\uE0C3', "\u03bd"); CharConverter.EARLY_MAP_MAP.put('\uE0C4', "\u03be"); CharConverter.EARLY_MAP_MAP.put('\uE0C5', "\u03bf"); CharConverter.EARLY_MAP_MAP.put('\uE0C6', "\u03c0"); CharConverter.EARLY_MAP_MAP.put('\uE0C7', "\u03c1"); CharConverter.EARLY_MAP_MAP.put('\uE0C8', "\u03c3"); CharConverter.EARLY_MAP_MAP.put('\uE0C9', "\u03c4"); CharConverter.EARLY_MAP_MAP.put('\uE0CA', "\u03c5"); CharConverter.EARLY_MAP_MAP.put('\uE0CB', "\u03c6"); CharConverter.EARLY_MAP_MAP.put('\uE0CC', "\u03c7"); CharConverter.EARLY_MAP_MAP.put('\uE0CD', "\u03c8"); CharConverter.EARLY_MAP_MAP.put('\uE0CE', "\u03c9"); CharConverter.EARLY_MAP_MAP.put('\uE0CF', "\u03b5"); CharConverter.EARLY_MAP_MAP.put('\uE0D0', "\u03d1"); CharConverter.EARLY_MAP_MAP.put('\uE0D1', "\u03d6"); CharConverter.EARLY_MAP_MAP.put('\uE0D2', "\u03f1"); CharConverter.EARLY_MAP_MAP.put('\uE0D3', "\u03db"); CharConverter.EARLY_MAP_MAP.put('\uE0D4', "\u2118"); CharConverter.EARLY_MAP_MAP.put('\uE0D5', "\u2202"); CharConverter.EARLY_MAP_MAP.put('\uE0D6', "\u2129"); CharConverter.EARLY_MAP_MAP.put('\uE0D7', "\u2107"); CharConverter.EARLY_MAP_MAP.put('\uE0D8', "\u2127"); CharConverter.EARLY_MAP_MAP.put('\uE0D9', "\u22A4"); CharConverter.EARLY_MAP_MAP.put('\uE0DA', "\u019B"); CharConverter.EARLY_MAP_MAP.put('\uE0DB', "\u2190"); CharConverter.EARLY_MAP_MAP.put('\uE0DC', "\u2191"); CharConverter.EARLY_MAP_MAP.put('\uE0DD', "\u2193"); // This set is generated by LaTeXMathML, and seems to be the set // supported via Mathematica 4.1 fonts in Firefox 2.0 // SCRIPT CAPITALS CharConverter.EARLY_MAP_MAP.put('\uEF35', new String( new int[] { 0x1D49C }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF36', new String( new int[] { 0x1D49E }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF37', new String( new int[] { 0x1D49F }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF38', new String( new int[] { 0x1D4A2 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF39', new String( new int[] { 0x1D4A5 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF3A', new String( new int[] { 0x1D4A6 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF3B', new String( new int[] { 0x1D4A9 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF3C', new String( new int[] { 0x1D4AA }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF3D', new String( new int[] { 0x1D4AB }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF3E', new String( new int[] { 0x1D4AC }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF3F', new String( new int[] { 0x1D4AE }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF40', new String( new int[] { 0x1D4AF }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF41', new String( new int[] { 0x1D4B0 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF42', new String( new int[] { 0x1D4B1 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF43', new String( new int[] { 0x1D4B2 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF44', new String( new int[] { 0x1D4B3 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF45', new String( new int[] { 0x1D4B4 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF46', new String( new int[] { 0x1D4B5 }, 0, 1)); // FRAKTUR CharConverter.EARLY_MAP_MAP.put('\uEF5D', new String( new int[] { 0x1D504 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF5E', new String( new int[] { 0x1D505 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF5F', new String( new int[] { 0x1D507 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF60', new String( new int[] { 0x1D508 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF61', new String( new int[] { 0x1D509 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF62', new String( new int[] { 0x1D50A }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF63', new String( new int[] { 0x1D50D }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF64', new String( new int[] { 0x1D50E }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF65', new String( new int[] { 0x1D50F }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF66', new String( new int[] { 0x1D510 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF67', new String( new int[] { 0x1D511 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF68', new String( new int[] { 0x1D512 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF69', new String( new int[] { 0x1D513 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF6A', new String( new int[] { 0x1D514 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF6B', new String( new int[] { 0x1D516 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF6C', new String( new int[] { 0x1D517 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF6D', new String( new int[] { 0x1D518 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF6E', new String( new int[] { 0x1D519 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF6F', new String( new int[] { 0x1D51A }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF70', new String( new int[] { 0x1D51B }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF71', new String( new int[] { 0x1D51C }, 0, 1)); // DOUBLE_STRUCK CAPITALS CharConverter.EARLY_MAP_MAP.put('\uEF8C', new String( new int[] { 0x1D538 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF8D', new String( new int[] { 0x1D539 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF8E', new String( new int[] { 0x1D53B }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF8F', new String( new int[] { 0x1D53C }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF90', new String( new int[] { 0x1D53D }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF91', new String( new int[] { 0x1D53E }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF92', new String( new int[] { 0x1D540 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF93', new String( new int[] { 0x1D541 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF94', new String( new int[] { 0x1D542 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF95', new String( new int[] { 0x1D543 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF96', new String( new int[] { 0x1D544 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF97', new String( new int[] { 0x1D546 }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF98', new String( new int[] { 0x1D54A }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF99', new String( new int[] { 0x1D54B }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF9A', new String( new int[] { 0x1D54C }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF9B', new String( new int[] { 0x1D54D }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF9C', new String( new int[] { 0x1D54E }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF9D', new String( new int[] { 0x1D54F }, 0, 1)); CharConverter.EARLY_MAP_MAP.put('\uEF9E', new String( new int[] { 0x1D550 }, 0, 1)); // CHECKSTYLE:ON } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/StringUtil.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/String0000644000175000017500000003264211335260530034557 0ustar sylvestresylvestre/* * Copyright 2002 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: StringUtil.java,v 480d7f8c8b4e 2010/02/12 14:18:45 max $ */ package net.sourceforge.jeuclid.elements.support.text; import java.awt.Font; import java.awt.Graphics2D; import java.awt.font.FontRenderContext; import java.awt.font.TextAttribute; import java.awt.font.TextLayout; import java.awt.geom.Rectangle2D; import java.text.AttributedCharacterIterator; import java.text.AttributedString; import java.text.CharacterIterator; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.JEuclidElement; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * Utilities for String handling. * * @version $Revision: 480d7f8c8b4e $ */ // CHECKSTYLE:OFF // Data Abstraction Coupling is too high. Hover, String handling is not // simple. public final class StringUtil { // CHECKSTYLE:ON /** * Set to true if we're running under Mac OS X. */ public static final boolean OSX = System.getProperty("mrj.version") != null; //$NON-NLS-1$ static final CharacterMapping CMAP = CharacterMapping.getInstance(); private StringUtil() { // do nothing } /** * Converts a given String to an attributed string with the proper variants * set. * * @param inputString * the string to convert. * @param baseVariant * variant to base on for regular characters * @param fontSize * size of Font to use. * @param context * Layout Context to use. * @return an attributed string that has Textattribute.FONT set for all * characters. */ public static AttributedString convertStringtoAttributedString( final String inputString, final MathVariant baseVariant, final float fontSize, final LayoutContext context) { if (inputString == null) { return new AttributedString(""); } final StringBuilder builder = new StringBuilder(); final List fonts = new ArrayList(); final String plainString = CharConverter.convertLate(inputString); for (int i = 0; i < plainString.length(); i++) { if (!Character.isLowSurrogate(plainString.charAt(i))) { final CodePointAndVariant cpav1 = new CodePointAndVariant( plainString.codePointAt(i), baseVariant); final Object[] codeAndFont = StringUtil.mapCpavToCpaf(cpav1, fontSize, context); final int codePoint = (Integer) codeAndFont[0]; final Font font = (Font) codeAndFont[1]; builder.appendCodePoint(codePoint); fonts.add(font); if (Character.isSupplementaryCodePoint(codePoint)) { fonts.add(font); } } } final AttributedString aString = new AttributedString(builder .toString()); final int len = builder.length(); for (int i = 0; i < len; i++) { final char currentChar = builder.charAt(i); if (!Character.isLowSurrogate(currentChar)) { final Font font = fonts.get(i); final int count; if (Character.isHighSurrogate(currentChar)) { count = 2; } else { count = 1; } aString.addAttribute(TextAttribute.FONT, font, i, i + count); } } return aString; } /** * Provide the text content of the current element as * AttributedCharacterIterator. * * @param contextNow * LayoutContext of the parent element. * @param contextElement * Parent Element. * @param node * Current node. * @param corrector * Font-size corrector. * @return An {@link AttributedCharacterIterator} over the text contents. */ public static AttributedCharacterIterator textContentAsAttributedCharacterIterator( final LayoutContext contextNow, final JEuclidElement contextElement, final Node node, final float corrector) { AttributedCharacterIterator retVal; if (node instanceof Element) { final MultiAttributedCharacterIterator maci = new MultiAttributedCharacterIterator(); final NodeList children = node.getChildNodes(); AttributedCharacterIterator aci = null; final int childCount = children.getLength(); for (int i = 0; i < childCount; i++) { final LayoutContext subContext; final Node child = children.item(i); final JEuclidElement subContextElement; if (child instanceof AbstractJEuclidElement) { subContext = ((AbstractJEuclidElement) child) .applyLocalAttributesToContext(contextNow); subContextElement = (JEuclidElement) child; } else { subContext = contextNow; subContextElement = contextElement; } aci = StringUtil.textContentAsAttributedCharacterIterator( subContext, subContextElement, child, corrector); maci.appendAttributedCharacterIterator(aci); } if (childCount != 1) { aci = maci; } if (node instanceof TextContentModifier) { final TextContentModifier t = (TextContentModifier) node; retVal = t.modifyTextContent(aci, contextNow); } else { retVal = aci; } } else { final String theText = TextContent.getText(node); final float fontSizeInPoint = GraphicsSupport .getFontsizeInPoint(contextNow) * corrector; retVal = StringUtil.convertStringtoAttributedString(theText, contextElement.getMathvariantAsVariant(), fontSizeInPoint, contextNow).getIterator(); } return retVal; } private static Object[] mapCpavToCpaf(final CodePointAndVariant cpav1, final float fontSize, final LayoutContext context) { final List alternatives = StringUtil.CMAP .getAllAlternatives(cpav1); Font font = null; int codePoint = 0; final Iterator it = alternatives.iterator(); boolean cont = true; while (cont) { final CodePointAndVariant cpav = it.next(); if (it.hasNext()) { codePoint = cpav.getCodePoint(); font = cpav.getVariant().createFont(fontSize, codePoint, context, false); if (font != null) { cont = false; } } else { codePoint = cpav.getCodePoint(); font = cpav.getVariant().createFont(fontSize, codePoint, context, true); cont = false; } } return new Object[] { codePoint, font }; } /** * Safely creates a Text Layout from an attributed string. Unlike the * TextLayout constructor, the String here may actually be empty. * * @param g * Graphics context. * @param aString * an Attributed String * @param context * Layout Context to use. * @return a TextLayout */ public static TextLayout createTextLayoutFromAttributedString( final Graphics2D g, final AttributedString aString, final LayoutContext context) { final AttributedCharacterIterator charIter = aString.getIterator(); final boolean empty = charIter.first() == CharacterIterator.DONE; final FontRenderContext suggestedFontRenderContext = g .getFontRenderContext(); boolean antialiasing = (Boolean) context .getParameter(Parameter.ANTIALIAS); if (!empty) { final Font font = (Font) aString.getIterator().getAttribute( TextAttribute.FONT); if (font != null) { final float fontsize = font.getSize2D(); final float minantialias = (Float) context .getParameter(Parameter.ANTIALIAS_MINSIZE); antialiasing &= fontsize >= minantialias; } } final FontRenderContext realFontRenderContext = new FontRenderContext( suggestedFontRenderContext.getTransform(), antialiasing, false); final TextLayout theLayout; if (empty) { theLayout = new TextLayout(" ", new Font("", 0, 0), realFontRenderContext); } else { synchronized (TextLayout.class) { // Catches a rare NullPointerException in // sun.font.FileFontStrike.getCachedGlyphPtr(FileFontStrike.java:448) theLayout = new TextLayout(aString.getIterator(), realFontRenderContext); } } return theLayout; } /** * Retrieves the real width from a given text layout. * * @param layout * the textlayout * @return width */ public static float getWidthForTextLayout(final TextLayout layout) { final Rectangle2D r2d = layout.getBounds(); float realWidth = (float) r2d.getWidth(); final float xo = (float) r2d.getX(); if (xo > 0) { realWidth += xo; } // Unfortunately this is necessary, although it does not look like it // makes a lot of sense. final float invisibleAdvance = layout.getAdvance() - layout.getVisibleAdvance(); return realWidth + invisibleAdvance; } /** * Contains layout information retrieved from a TextLayout. */ public static class TextLayoutInfo { private final float ascent; private final float descent; private final float offset; private final float width; /** * Default Constructor. * * @param newAscent * text ascent. * @param newDescent * text descent. * @param newOffset * text start offset. * @param newWidth * text width. */ protected TextLayoutInfo(final float newAscent, final float newDescent, final float newOffset, final float newWidth) { this.ascent = newAscent; this.descent = newDescent; this.offset = newOffset; this.width = newWidth; } /** * Getter method for ascent. * * @return the ascent */ public float getAscent() { return this.ascent; } /** * Getter method for descent. * * @return the descent */ public float getDescent() { return this.descent; } /** * Getter method for offset. * * @return the offset */ public float getOffset() { return this.offset; } /** * Getter method for width. * * @return the width */ public float getWidth() { return this.width; } }; /** * Retrieve the actual layout information from a textLayout. This is * different than the values given when calling the functions directly. * * @param textLayout * TextLayout to look at. * @param trim * Trim to actual content * @return a TextLayoutInfo. */ public static TextLayoutInfo getTextLayoutInfo(final TextLayout textLayout, final boolean trim) { final Rectangle2D textBounds = textLayout.getBounds(); final float ascent = (float) (-textBounds.getY()); final float descent = (float) (textBounds.getY() + textBounds .getHeight()); final float xo = (float) textBounds.getX(); final float xOffset; if (xo < 0) { xOffset = -xo; } else { if (trim) { xOffset = -xo; } else { xOffset = 0.0f; } } final float width = StringUtil.getWidthForTextLayout(textLayout); return new TextLayoutInfo(ascent, descent, xOffset, width); } } ././@LongLink0000000000000000000000000000020400000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/MultiAttributedCharacterIterator.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/MultiA0000644000175000017500000001462211335260530034502 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MultiAttributedCharacterIterator.java,v 344ccd357471 2009/09/10 16:15:11 max $ */ package net.sourceforge.jeuclid.elements.support.text; import java.text.AttributedCharacterIterator; import java.text.CharacterIterator; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; /** * Joins multiple {@link AttributedCharacterIterator}s into one. * * @version $Revision: 344ccd357471 $ */ public class MultiAttributedCharacterIterator implements AttributedCharacterIterator { private final List realIterators = new ArrayList(); private int currentList; /** * Default constructor. */ public MultiAttributedCharacterIterator() { // nothing to do; } // CHECKSTYLE:OFF Clone is disabled. @Override public Object clone() { throw new UnsupportedOperationException(); } // CHECKSTYLE: ON /** * Adds a new CharacterIterator * * @param aci * the new CharacterIterator to add to the list. */ public void appendAttributedCharacterIterator( final AttributedCharacterIterator aci) { this.realIterators.add(aci); this.first(); } private int sumUpToNotIncluding(final int limit) { int offset = 0; for (int i = 0; i < limit; i++) { final AttributedCharacterIterator ci = this.realIterators.get(i); offset += ci.getEndIndex() - ci.getBeginIndex(); } return offset; } private int currentOffset() { int offset = this.sumUpToNotIncluding(this.currentList); offset -= this.realIterators.get(this.currentList).getBeginIndex(); return offset; } /** {@inheritDoc} */ public Set getAllAttributeKeys() { final Set retVal = new HashSet(); for (final AttributedCharacterIterator ri : this.realIterators) { retVal.addAll(ri.getAllAttributeKeys()); } return retVal; } /** {@inheritDoc} */ public Object getAttribute(final Attribute attribute) { return this.realIterators.get(this.currentList).getAttribute(attribute); } /** {@inheritDoc} */ public Map getAttributes() { return this.realIterators.get(this.currentList).getAttributes(); } /** {@inheritDoc} */ public int getRunLimit() { return this.realIterators.get(this.currentList).getRunLimit() + this.currentOffset(); } /** {@inheritDoc} */ public int getRunLimit(final Attribute attribute) { return this.realIterators.get(this.currentList).getRunLimit(attribute) + this.currentOffset(); } /** {@inheritDoc} */ public int getRunLimit(final Set attributes) { return this.realIterators.get(this.currentList).getRunLimit(attributes) + this.currentOffset(); } /** {@inheritDoc} */ public int getRunStart() { return this.realIterators.get(this.currentList).getRunStart() + this.currentOffset(); } /** {@inheritDoc} */ public int getRunStart(final Attribute attribute) { return this.realIterators.get(this.currentList).getRunStart(attribute) + this.currentOffset(); } /** {@inheritDoc} */ public int getRunStart(final Set attributes) { return this.realIterators.get(this.currentList).getRunStart(attributes) + this.currentOffset(); } /** {@inheritDoc} */ public char current() { return this.realIterators.get(this.currentList).current(); } /** {@inheritDoc} */ public char first() { this.currentList = 0; return this.realIterators.get(this.currentList).first(); } /** {@inheritDoc} */ public int getBeginIndex() { return 0; } /** {@inheritDoc} */ public int getEndIndex() { return this.sumUpToNotIncluding(this.realIterators.size()); } /** {@inheritDoc} */ public int getIndex() { return this.currentOffset() + this.realIterators.get(this.currentList).getIndex(); } /** {@inheritDoc} */ public char last() { this.currentList = this.realIterators.size() - 1; return this.realIterators.get(this.currentList).last(); } /** {@inheritDoc} */ public char next() { char c = this.realIterators.get(this.currentList).next(); while ((c == CharacterIterator.DONE) && (this.currentList < this.realIterators.size() - 1)) { this.currentList++; c = this.realIterators.get(this.currentList).first(); } return c; } /** {@inheritDoc} */ public char previous() { char c = this.realIterators.get(this.currentList).previous(); while ((c == CharacterIterator.DONE) && (this.currentList > 0)) { this.currentList--; c = this.realIterators.get(this.currentList).previous(); } return c; } /** {@inheritDoc} */ public char setIndex(final int position) { int prev = 0; int offset = 0; for (int i = 0; i < this.realIterators.size(); i++) { final AttributedCharacterIterator ci = this.realIterators.get(i); prev = offset; final int beginIndex = ci.getBeginIndex(); offset += ci.getEndIndex() - beginIndex; if (((prev <= position) && (offset > position)) || ((offset == position) && (i == this.realIterators.size() - 1))) { this.currentList = i; return ci.setIndex(beginIndex + position - prev); } } throw new IllegalArgumentException(); } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/CodePointAndVariant.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/CodePo0000644000175000017500000000600711335260530034456 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: CodePointAndVariant.java,v 21bfa7b63ab2 2008/09/11 14:08:48 maxberger $ */ package net.sourceforge.jeuclid.elements.support.text; import java.io.Serializable; import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; /** * @version $Revision: 21bfa7b63ab2 $ */ public class CodePointAndVariant implements Serializable { /** * */ private static final long serialVersionUID = 1L; private final int codePoint; private final MathVariant variant; /** * Create a new CodePointAndVariant. * * @param icodePoint * the codepoint to use * @param ivariant * the MathVariant of the character. */ public CodePointAndVariant(final int icodePoint, final MathVariant ivariant) { assert ivariant != null; this.codePoint = icodePoint; this.variant = ivariant; } /** * @return the codePoint */ public final int getCodePoint() { return this.codePoint; } /** * @return the variant */ public final MathVariant getVariant() { return this.variant; } /** {@inheritDoc} */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + this.codePoint; result = prime * result + this.variant.hashCode(); return result; } /** {@inheritDoc} */ @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (this.getClass() != obj.getClass()) { return false; } final CodePointAndVariant other = (CodePointAndVariant) obj; if (this.codePoint != other.codePoint) { return false; } if (this.variant == null) { if (other.variant != null) { return false; } } else if (!this.variant.equals(other.variant)) { return false; } return true; } /** {@inheritDoc} */ @Override public String toString() { final StringBuilder b = new StringBuilder(); b.append('['); b.append("0x"); b.append(Integer.toHexString(this.codePoint)); b.append(' '); b.append(this.variant.toString()); b.append(']'); return b.toString(); } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/CharacterMapping.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/Charac0000644000175000017500000003411711335260530034471 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: CharacterMapping.java,v a96da3a7efbd 2009/07/13 13:34:06 maxberger $ */ package net.sourceforge.jeuclid.elements.support.text; import java.awt.Font; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInput; import java.io.ObjectInputStream; import java.io.Serializable; import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.util.ArrayList; import java.util.EnumMap; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.TreeSet; import net.sourceforge.jeuclid.elements.support.attributes.FontFamily; import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.xmlgraphics.fonts.Glyphs; /** * @version $Revision: a96da3a7efbd $ */ public final class CharacterMapping implements Serializable { private static final String LOAD_ERROR = "Error loading character mappings"; private static final int POS_MAPS = 5; private static final int POS_DESCRIPTION = 1; private static final int POS_CODESTR = 0; private static final int HIGHPLANE_MATH_CHARS_START = 0x1D400; private static final int HIGHPLANE_START = 0x10000; /** * */ private static final long serialVersionUID = 1L; private static CharacterMapping instance; /** * Logger for this class. */ private static final Log LOGGER = LogFactory .getLog(CharacterMapping.class); private final Map extractAttrs; private final Set forceSet; private final Map> composeAttrs; private transient Map>> alternatives; /** * Default Constructor. */ private CharacterMapping() { this.extractAttrs = new TreeMap(); this.forceSet = new TreeSet(); this.composeAttrs = new EnumMap>( FontFamily.class); this.readResolve(); this.loadUnicodeData(); } private Object readResolve() { this.alternatives = new HashMap>>(); return this; } private void loadUnicodeData() { final InputStream is = CharacterMapping.class .getResourceAsStream("/net/sourceforge/jeuclid/UnicodeData.txt"); try { final BufferedReader r = new BufferedReader( new InputStreamReader(is)); try { String s; while ((s = r.readLine()) != null) { final String[] c = s.split(";"); if (c.length > CharacterMapping.POS_MAPS) { this.process(c[CharacterMapping.POS_CODESTR], c[CharacterMapping.POS_DESCRIPTION], c[CharacterMapping.POS_MAPS]); } } } catch (final IOException e) { CharacterMapping.LOGGER.warn(CharacterMapping.LOAD_ERROR, e); } finally { try { r.close(); } catch (final IOException e) { CharacterMapping.LOGGER.warn(CharacterMapping.LOAD_ERROR, e); } } } catch (final NullPointerException e) { CharacterMapping.LOGGER.warn(CharacterMapping.LOAD_ERROR, e); } } private void process(final String codestr, final String descr, final String mapsStr) { try { final int codepoint = Integer.parseInt(codestr, 16); if (!mapsStr.startsWith(" ")) { return; } final int mapsTo = Integer.parseInt(mapsStr.substring(7), 16); final int awtStyle = this.parseAwtStyle(descr); final FontFamily fam = this.parseFontFamily(descr); if (fam == null) { return; } final boolean force = (codepoint >= CharacterMapping.HIGHPLANE_MATH_CHARS_START) && ((FontFamily.SANSSERIF.equals(fam)) || (FontFamily.SERIF .equals(fam))); if (force) { this.forceSet.add(codepoint); } final CodePointAndVariant cpav = new CodePointAndVariant(mapsTo, new MathVariant(awtStyle, fam)); this.extractAttrs.put(codepoint, cpav); final Map ffmap = this.getFFMap(fam); final Integer[] ia = this.getMapsTo(mapsTo, ffmap); ia[awtStyle] = codepoint; } catch (final NumberFormatException nfe) { CharacterMapping.LOGGER.debug("Parse Error", nfe); } } private Integer[] getMapsTo(final int mapsTo, final Map ffmap) { Integer[] ia = ffmap.get(mapsTo); if (ia == null) { ia = new Integer[Font.BOLD + Font.ITALIC + 1]; ffmap.put(mapsTo, ia); } return ia; } private Map getFFMap(final FontFamily fam) { Map ffmap = this.composeAttrs.get(fam); if (ffmap == null) { ffmap = new TreeMap(); this.composeAttrs.put(fam, ffmap); } return ffmap; } private int parseAwtStyle(final String descr) { int awtStyle = Font.PLAIN; if (descr.contains("BOLD")) { awtStyle += Font.BOLD; } if (descr.contains("ITALIC")) { awtStyle += Font.ITALIC; } return awtStyle; } private FontFamily parseFontFamily(final String descr) { final FontFamily fam; if (descr.contains("DOUBLE-STRUCK")) { fam = FontFamily.DOUBLE_STRUCK; } else if (descr.contains("SCRIPT")) { fam = FontFamily.SCRIPT; } else if (descr.contains("BLACK-LETTER") || descr.contains("FRAKTUR")) { fam = FontFamily.FRAKTUR; } else if (descr.contains("SANS-SERIF")) { fam = FontFamily.SANSSERIF; } else if (descr.contains("MONOSPACE")) { fam = FontFamily.MONOSPACED; } else if (descr.contains("MATHEMATICAL")) { fam = FontFamily.SERIF; } else { fam = null; } return fam; } /** * Get the singleton instance of this class. * * @return an instance of CharacterMapping. */ public static synchronized CharacterMapping getInstance() { if (CharacterMapping.instance == null) { CharacterMapping m; try { final InputStream is = CharacterMapping.class .getResourceAsStream("/net/sourceforge/jeuclid/charmap.ser"); final ObjectInput oi = new ObjectInputStream(is); m = (CharacterMapping) oi.readObject(); oi.close(); } catch (final ClassNotFoundException cnfe) { m = null; } catch (final IllegalArgumentException e) { m = null; } catch (final IOException e) { m = null; } catch (final NullPointerException e) { m = null; } if (m == null) { CharacterMapping.instance = new CharacterMapping(); } else { CharacterMapping.instance = m; } } return CharacterMapping.instance; } /** * Compose a new SERIF Unicode char. This function tries to compose the * given char into a SERIF char which shows the same characteristics at a * particular Unicode codepoint. * * @param split * the char which contains a coidepoint and variant. * @param forbidHighplane * if the high plane is broken (e.g. on OS X). * @return a CodePointAndVariant representing the same char. */ public CodePointAndVariant composeUnicodeChar( final CodePointAndVariant split, final boolean forbidHighplane) { final MathVariant splitVariant = split.getVariant(); final Map famList = this.composeAttrs .get(splitVariant.getFontFamily()); if (famList == null) { return split; } final Integer[] aList = famList.get(split.getCodePoint()); if (aList == null) { return split; } final int splitStyle = splitVariant.getAwtStyle(); Integer to = aList[splitStyle]; if (to != null) { if (forbidHighplane && to >= CharacterMapping.HIGHPLANE_START) { return split; } return new CodePointAndVariant(to, MathVariant.NORMAL); } if (splitStyle != 0) { to = aList[0]; } if (to != null) { if (forbidHighplane && to >= CharacterMapping.HIGHPLANE_START) { return split; } return new CodePointAndVariant(to, new MathVariant(splitStyle, FontFamily.SERIF)); } return split; } /** * Extract the given char into variant and codepoint. * * @param test * the Unicode char to split up. * @return A {@link CodePointAndVariant} representing the same character * with explicit variant. */ public CodePointAndVariant extractUnicodeAttr( final CodePointAndVariant test) { final CodePointAndVariant mapsTo = this.extractAttrs.get(test .getCodePoint()); if (mapsTo == null) { return test; } final MathVariant testVariant = test.getVariant(); final int testStyle = testVariant.getAwtStyle(); final int mapsToCodepoint = mapsTo.getCodePoint(); final CodePointAndVariant retVal; if ((testStyle == Font.PLAIN) || (this.forceSet.contains(mapsToCodepoint))) { retVal = mapsTo; } else { final MathVariant mapsToVariant = mapsTo.getVariant(); retVal = new CodePointAndVariant(mapsToCodepoint, new MathVariant(testStyle | mapsToVariant.getAwtStyle(), mapsToVariant.getFontFamily())); } return retVal; } /** * Get all alternatives codePoints for this codePoint. They can be used if * the original code point and variant is not available. * * @param cpav * original CodePointAndVariant * @return A List of alternative code points to check. */ public List getAllAlternatives( final CodePointAndVariant cpav) { final Reference> ref = this.alternatives .get(cpav); List result = null; if (ref != null) { result = ref.get(); } if (result == null) { result = this.reallyGetAllAternatives(cpav, true); this.alternatives.put(cpav, new SoftReference>(result)); } return result; } private List reallyGetAllAternatives( final CodePointAndVariant cpav, final boolean useGlyphMapping) { final List list = new ArrayList( 3); final CodePointAndVariant cpav2 = this.extractUnicodeAttr(cpav); // High Plane is broken on OS X! final CodePointAndVariant cpav3 = this.composeUnicodeChar(cpav2, StringUtil.OSX); this.addGlyphsAndTheirAlternatives(list, cpav2, useGlyphMapping); this.addGlyphsAndTheirAlternatives(list, cpav3, useGlyphMapping); this.addGlyphsAndTheirAlternatives(list, cpav, useGlyphMapping); return list; } private void addGlyphsAndTheirAlternatives( final List list, final CodePointAndVariant cpav, final boolean useGlyphMapping) { if (!list.contains(cpav)) { list.add(cpav); if (useGlyphMapping) { this.addAlternateGlyph(list, cpav); } } } private void addAlternateGlyph(final List list, final CodePointAndVariant cpav) { final int codePoint = cpav.getCodePoint(); final String charAsString = new String(new int[] { codePoint }, 0, 1); final String glyphName = Glyphs.stringToGlyph(charAsString); final String[] alternateGlyphNames = Glyphs .getCharNameAlternativesFor(glyphName); if (alternateGlyphNames != null) { for (final String altGlyph : alternateGlyphNames) { final int altcp = Glyphs.getUnicodeSequenceForGlyphName( altGlyph).codePointAt(0); final List alternateList = this .reallyGetAllAternatives(new CodePointAndVariant( altcp, cpav.getVariant()), false); for (final CodePointAndVariant alternateCpav : alternateList) { if (!list.contains(alternateCpav)) { list.add(alternateCpav); } } } } } } ././@LongLink0000000000000000000000000000016700000000000011571 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/TextContentModifier.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/text/TextCo0000644000175000017500000000267111335260530034516 0ustar sylvestresylvestre/* * Copyright 2009 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: TextContentModifier.java,v 923658a2b249 2009/09/11 11:57:31 max $ */ package net.sourceforge.jeuclid.elements.support.text; import java.text.AttributedCharacterIterator; import net.sourceforge.jeuclid.LayoutContext; /** * * @version $Revision: 923658a2b249 $ */ public interface TextContentModifier { /** * modified the given Characters to match what is required for this element. * * @param aci * {@link AttributedCharacterIterator} based on the text * contents. * @param layoutContext * current layout context. * @return a new {@link AttributedCharacterIterator} which is to be used * instead. */ AttributedCharacterIterator modifyTextContent( AttributedCharacterIterator aci, LayoutContext layoutContext); } ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/package-inf0000644000175000017500000000155111335260530034465 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Element handling support.

Contains internal classes used for supporting the handling of MathML elements.

*/ package net.sourceforge.jeuclid.elements.support; ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/ClassLoaderSupport.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/ClassLoader0000644000175000017500000000424511335260530034517 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ClassLoaderSupport.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ package net.sourceforge.jeuclid.elements.support; /** * Support utilities for classloading. * * @version $Revision: 88b901bf20fb $ */ public final class ClassLoaderSupport { private static final class SingletonHolder { private static final ClassLoaderSupport INSTANCE = new ClassLoaderSupport(); private SingletonHolder() { } } /** * Default Constructor. */ protected ClassLoaderSupport() { // Empty on purporse. } /** * accessor for singleton instance. * * @return an instance of this class. */ public static ClassLoaderSupport getInstance() { return ClassLoaderSupport.SingletonHolder.INSTANCE; } /** * Try to load the given lass from the current context. * * @param className * name of the class to load * @return a Class object for the given class if possible. * @throws ClassNotFoundException * if the class could not be found. * @see ClassLoader#loadClass(String) */ public Class loadClass(final String className) throws ClassNotFoundException { Class retVal; try { retVal = Thread.currentThread().getContextClassLoader().loadClass( className); } catch (final ClassNotFoundException e) { retVal = ClassLoaderSupport.class.getClassLoader().loadClass( className); } return retVal; } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/Dimension2DImpl.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/Dimension2D0000644000175000017500000000305211335260530034431 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Dimension2DImpl.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.elements.support; import java.awt.geom.Dimension2D; /** * @version $Revision: 8afef6dd0d58 $ */ public class Dimension2DImpl extends Dimension2D { private float width; private float height; /** * Default Constructor. * * @param w * new width. * @param h * new height. */ public Dimension2DImpl(final float w, final float h) { this.width = w; this.height = h; } /** {@inheritDoc} */ @Override public double getHeight() { return this.height; } /** {@inheritDoc} */ @Override public double getWidth() { return this.width; } /** {@inheritDoc} */ @Override public void setSize(final double w, final double h) { this.width = (float) w; this.height = (float) h; } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/MathMLNodeListImpl.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/MathMLNodeL0000644000175000017500000000275211335260530034370 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathMLNodeListImpl.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.elements.support; import java.util.List; import org.w3c.dom.Node; import org.w3c.dom.mathml.MathMLNodeList; /** * Implements a MathMLNodeList based on a java.util.List. * * @version $Revision: 8afef6dd0d58 $ */ public class MathMLNodeListImpl implements MathMLNodeList { private final List nodeList; /** * create a new MathMLNodeList based on a given java list of nodes. * * @param list * the list of nodes. */ public MathMLNodeListImpl(final List list) { this.nodeList = list; } /** {@inheritDoc} */ public int getLength() { return this.nodeList.size(); } /** {@inheritDoc} */ public Node item(final int arg0) { return this.nodeList.get(arg0); } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/GraphicsSupport.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/GraphicsSup0000644000175000017500000000504311335260530034550 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: GraphicsSupport.java,v 86b5e673f9b8 2008/06/24 08:01:00 maxberger $ */ package net.sourceforge.jeuclid.elements.support; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Parameter; /** * This class contains helper functions for graphical calculations. * * @version $Revision: 86b5e673f9b8 $ */ public final class GraphicsSupport { /** Minimum line width. */ public static final float MIN_LINEWIDTH = 1.0f; private GraphicsSupport() { // Empty on purpose. } /** * Gets the size of the actual font used (including scriptsizemultiplier). * * @param context * Layout context to use. * @return size of the current font. */ public static float getFontsizeInPoint(final LayoutContext context) { final float scriptMultiplier = (float) Math.pow((Float) context .getParameter(Parameter.SCRIPTSIZEMULTIPLIER), (Integer) context.getParameter(Parameter.SCRIPTLEVEL)); final float mathsize = (Float) context .getParameter(Parameter.MATHSIZE); final float scriptminsize = (Float) context .getParameter(Parameter.SCRIPTMINSIZE); final float scriptsize = mathsize * scriptMultiplier; return Math.max(Math.min(scriptminsize, mathsize), scriptsize); } /** * Retrieve the width of a line that would be 1pt if unscaled. * * @param context * Layout context to use. * @return line width as float, at least {@link #MIN_LINEWIDTH} */ public static float lineWidth(final LayoutContext context) { float lineSize = GraphicsSupport.getFontsizeInPoint(context) / Constants.DEFAULT_FONTSIZE; if (lineSize < GraphicsSupport.MIN_LINEWIDTH) { lineSize = GraphicsSupport.MIN_LINEWIDTH; } return lineSize; } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/0000755000175000017500000000000011335260530034561 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000017200000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/AttributesHelper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/0000644000175000017500000005464011335260530034574 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AttributesHelper.java,v 1e57f05a780b 2009/10/28 10:06:45 max $ */ package net.sourceforge.jeuclid.elements.support.attributes; import java.awt.Color; import java.util.HashMap; import java.util.Locale; import java.util.Map; import java.util.StringTokenizer; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.support.GraphicsSupport; import net.sourceforge.jeuclid.elements.support.operatordict.OperatorDictionary; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Class contains utility methods for working with elements attributes. * * @version $Revision: 1e57f05a780b $ */ public final class AttributesHelper { /** * Constant for "Transparent" color. */ public static final String COLOR_TRANSPARENT = "transparent"; /** * Width of veryverythinmath space according to 3.3.4.2. */ public static final String VERYVERYTHINMATHSPACE = "0.0555556em"; /** * Width of verythinmath space according to 3.3.4.2. */ public static final String VERYTHINMATHSPACE = "0.111111em"; /** * Width of thinmath space according to 3.3.4.2. */ public static final String THINMATHSPACE = "0.166667em"; /** * Width of mediummath space according to 3.3.4.2. */ public static final String MEDIUMMATHSPACE = "0.222222em"; /** * Width of tickmath space according to 3.3.4.2. */ public static final String THICKMATHSPACE = "0.277778em"; /** * Width of verytickmath space according to 3.3.4.2. */ public static final String VERYTHICKMATHSPACE = "0.333333em"; /** * Width of veryverytickmath space according to 3.3.4.2. */ public static final String VERYVERYTHICKMATHSPACE = "0.388889em"; /** * Unit for pt. */ public static final String PT = "pt"; /** * Infinity. Should be reasonably large. */ public static final String INFINITY = "9999999pt"; private static final String ERROR_PARSING_NUMBER = "Error Parsing number: "; private static final int HASHSHORT_ALPHA = 5; private static final int HASHSHORT_NO_ALPHA = 4; private static final int SHORT_INDEX_RED = 1; private static final int SHORT_INDEX_GREEN = 2; private static final int SHORT_INDEX_BLUE = 3; private static final int HASHLEN_ALPHA = 9; private static final int HASHLEN_NO_ALPHA = 7; private static final int HEXBASE = 16; private static final float MAX_HEXCHAR_AS_FLOAT = 15f; private static final int MAX_BYTE = 255; private static final float MAX_PERCENT_AS_FLOAT = 100.0f; private static final float MAX_BYTE_AS_FLOAT = 255f; private static final String PERCENT_SIGN = "%"; private static final String COMMA = ","; /** * Value of EM (horizontal size). *

* Please note: This is a typical value, according to * http://kb.mozillazine.org/Em_vs._ex It is not dependent on the actual * font used, as it should be. */ private static final float EM = 0.83888888888888888888f; /** * Value of EX (vertical size). *

* Please note: This is a typical value, according to * http://kb.mozillazine.org/Em_vs._ex It is not dependent on the actual * font used, as it should be. */ private static final float EX = 0.5f; /** * Default DPI value for all Java apps. */ private static final float DPI = 72.0f; private static final float PERCENT = 0.01f; private static final float CM_PER_INCH = 2.54f; private static final float MM_PER_INCH = AttributesHelper.CM_PER_INCH * 10.0f; private static final float PT_PER_PC = 12.0f; private static final Map SIZETRANSLATIONS = new HashMap(); private static final Map RELATIVE_UNITS = new HashMap(); private static final Map ABSOLUTE_UNITS = new HashMap(); private static final Map COLOR_MAPPINGS = new HashMap(); /** * Logger for this class. */ private static final Log LOGGER = LogFactory .getLog(AbstractJEuclidElement.class); /** * Private constructor: it's forbidden to create instance of this utility * class. */ private AttributesHelper() { } /** * Parse a size that is relative to a given size. * * @param sizeString * sizeString to parse * @param context * Context to use to calculate for absolute sizes. * @param relativeTo * This size is relative to the given size (must be in pt). * @return a size in pt. */ public static float parseRelativeSize(final String sizeString, final LayoutContext context, final float relativeTo) { if (sizeString == null) { return relativeTo; } final String tSize = AttributesHelper.prepareSizeString(sizeString); float retVal; try { if (tSize.length() >= 2) { final int valueLen = tSize.length() - 2; final String unit = tSize.substring(valueLen); final float value = Float.parseFloat(tSize.substring(0, valueLen)); if (AttributesHelper.ABSOLUTE_UNITS.containsKey(unit)) { retVal = AttributesHelper.convertSizeToPt(sizeString, context, AttributesHelper.PT); } else if (AttributesHelper.RELATIVE_UNITS.containsKey(unit)) { retVal = value * relativeTo * AttributesHelper.RELATIVE_UNITS.get(unit); } else { retVal = Float.parseFloat(tSize) * relativeTo; } } else { retVal = Float.parseFloat(tSize) * relativeTo; } } catch (final NumberFormatException nfe) { retVal = relativeTo; AttributesHelper.LOGGER.warn(AttributesHelper.ERROR_PARSING_NUMBER + sizeString); } return retVal; } /** * Translates size into pt. * * @param sizeString * string to convert * @param context * LayoutContext this size is relative to. This is usually the * context of the parent or the element itself. * @param defaultUnit * default Unit to use in this context. May be px, pt, em, etc. * @return Translated value of the size attribute into Point (=Java Pixels). */ public static float convertSizeToPt(final String sizeString, final LayoutContext context, final String defaultUnit) { final String tSize = AttributesHelper.prepareSizeString(sizeString); if (tSize.length() == 0) { return 0; } float retVal; try { final String unit; final float value; if (tSize.length() <= 2) { unit = defaultUnit; value = Float.parseFloat(tSize); } else { final int valueLen = tSize.length() - 2; unit = tSize.substring(valueLen); value = Float.parseFloat(tSize.substring(0, valueLen)); } if (value == 0) { retVal = 0.0f; } else if (AttributesHelper.RELATIVE_UNITS.containsKey(unit)) { retVal = value * GraphicsSupport.getFontsizeInPoint(context) * AttributesHelper.RELATIVE_UNITS.get(unit); } else if (AttributesHelper.ABSOLUTE_UNITS.containsKey(unit)) { retVal = value * AttributesHelper.ABSOLUTE_UNITS.get(unit); } else if (defaultUnit.length() > 0) { retVal = AttributesHelper.convertSizeToPt(sizeString + defaultUnit, context, ""); } else { retVal = Float.parseFloat(tSize); AttributesHelper.LOGGER.warn("Error Parsing attribute: " + sizeString + " assuming " + retVal + AttributesHelper.PT); } } catch (final NumberFormatException nfe) { retVal = 1.0f; AttributesHelper.LOGGER.warn(AttributesHelper.ERROR_PARSING_NUMBER + sizeString + " falling back to " + retVal + AttributesHelper.PT); } return retVal; } private static String prepareSizeString(final String sizeString) { if (sizeString == null) { return ""; } String tSize = sizeString.trim().toLowerCase(Locale.ENGLISH); final String translatesTo = AttributesHelper.SIZETRANSLATIONS .get(tSize); if (translatesTo != null) { tSize = translatesTo; } if (tSize.endsWith(AttributesHelper.PERCENT_SIGN)) { // A nice trick because all other units are exactly 2 chars long. tSize = new StringBuilder(tSize).append(' ').toString(); } return tSize; } /** * Creates a color from a given string. *

* This function supports a wide variety of inputs. *

    *
  • #RGB (hex 0..f)
  • *
  • #RGBA (hex 0..f)
  • *
  • #RRGGBB (hex 00..ff)
  • *
  • #RRGGBBAA (hex 00..ff)
  • *
  • rgb(r,g,b) (0..255 or 0%..100%)
  • *
  • java.awt.Color[r=r,g=g,b=b] (0..255)
  • *
  • system-color(colorname)
  • *
  • transparent
  • *
  • colorname
  • *
* * @param value * the string to parse. * @return a Color representing the string if possible * @param defaultValue * a default color to use in case of failure. */ public static Color stringToColor(final String value, final Color defaultValue) { if (value == null) { return null; } final String lowVal = value.toLowerCase(Locale.ENGLISH); Color parsedColor = null; if (AttributesHelper.COLOR_MAPPINGS.containsKey(lowVal)) { parsedColor = AttributesHelper.COLOR_MAPPINGS.get(lowVal); } else { if (value.charAt(0) == '#') { parsedColor = AttributesHelper.parseWithHash(value); } else if (value.startsWith("rgb(")) { parsedColor = AttributesHelper.parseAsRGB(value); } else if (value.startsWith("java.awt.Color")) { parsedColor = AttributesHelper.parseAsJavaAWTColor(value); } if (parsedColor == null) { parsedColor = defaultValue; } if (parsedColor != null) { AttributesHelper.COLOR_MAPPINGS.put(value, parsedColor); } } return parsedColor; } /** * Tries to parse the standard java.awt.Color toString output. * * @param value * the complete line * @return a color if possible * @see java.awt.Color#toString() */ private static Color parseAsJavaAWTColor(final String value) { final Color parsedColor; final int poss = value.indexOf('['); final int pose = value.indexOf(']'); if ((poss == -1) || (pose == -1)) { parsedColor = null; } else { parsedColor = AttributesHelper.parseCommaSeparatedString(value .substring(poss + 1, pose)); } return parsedColor; } /** * Parse a color given with the rgb() function. * * @param value * the complete line * @return a color if possible */ private static Color parseAsRGB(final String value) { final Color parsedColor; final int poss = value.indexOf('('); final int pose = value.indexOf(')'); if ((poss == -1) || (pose == -1)) { parsedColor = null; } else { parsedColor = AttributesHelper.parseCommaSeparatedString(value .substring(poss + 1, pose)); } return parsedColor; } private static Color parseCommaSeparatedString(final String value) { Color parsedColor; final StringTokenizer st = new StringTokenizer(value, AttributesHelper.COMMA); try { float red = 0.0f; float green = 0.0f; float blue = 0.0f; if (st.hasMoreTokens()) { final String str = st.nextToken().trim(); red = AttributesHelper.parseFloatOrPercent(str); } if (st.hasMoreTokens()) { final String str = st.nextToken().trim(); green = AttributesHelper.parseFloatOrPercent(str); } if (st.hasMoreTokens()) { final String str = st.nextToken().trim(); blue = AttributesHelper.parseFloatOrPercent(str); } parsedColor = new Color(red, green, blue); } catch (final NumberFormatException e) { AttributesHelper.LOGGER.warn(e); parsedColor = null; } return parsedColor; } private static float parseFloatOrPercent(final String str) { final float value; if (str.endsWith(AttributesHelper.PERCENT_SIGN)) { value = Float.parseFloat(str.substring(0, str.length() - 1)) / AttributesHelper.MAX_PERCENT_AS_FLOAT; } else { value = Float.parseFloat(str) / AttributesHelper.MAX_BYTE_AS_FLOAT; } if ((value < 0.0f) || (value > 1.0f)) { throw new NumberFormatException(str + " is out of Range"); } return value; } /** * parse a color given in the #.... format. * * @param value * the complete line * @return a color if possible */ private static Color parseWithHash(final String value) { Color parsedColor = null; try { final int len = value.length(); if ((len >= AttributesHelper.HASHSHORT_NO_ALPHA) && (len <= AttributesHelper.HASHSHORT_ALPHA)) { // note: divide by 15 so F = FF = 1 and so on final float red = Integer.parseInt(value.substring( AttributesHelper.SHORT_INDEX_RED, AttributesHelper.SHORT_INDEX_RED + 1), AttributesHelper.HEXBASE) / AttributesHelper.MAX_HEXCHAR_AS_FLOAT; final float green = Integer.parseInt(value.substring( AttributesHelper.SHORT_INDEX_GREEN, AttributesHelper.SHORT_INDEX_GREEN + 1), AttributesHelper.HEXBASE) / AttributesHelper.MAX_HEXCHAR_AS_FLOAT; final float blue = Integer.parseInt(value.substring( AttributesHelper.SHORT_INDEX_BLUE, AttributesHelper.SHORT_INDEX_BLUE + 1), AttributesHelper.HEXBASE) / AttributesHelper.MAX_HEXCHAR_AS_FLOAT; float alpha = 1.0f; if (len == AttributesHelper.HASHSHORT_ALPHA) { alpha = Integer.parseInt(value .substring(AttributesHelper.HASHSHORT_NO_ALPHA), AttributesHelper.HEXBASE) / AttributesHelper.MAX_HEXCHAR_AS_FLOAT; } parsedColor = new Color(red, green, blue, alpha); } else if ((len == AttributesHelper.HASHLEN_NO_ALPHA) || (len == AttributesHelper.HASHLEN_ALPHA)) { final int red = Integer.parseInt(value.substring(1, 3), AttributesHelper.HEXBASE); final int green = Integer.parseInt(value.substring(3, 5), AttributesHelper.HEXBASE); final int blue = Integer.parseInt(value.substring(5, AttributesHelper.HASHLEN_NO_ALPHA), AttributesHelper.HEXBASE); int alpha = AttributesHelper.MAX_BYTE; if (len == AttributesHelper.HASHLEN_ALPHA) { alpha = Integer.parseInt(value .substring(AttributesHelper.HASHLEN_NO_ALPHA), AttributesHelper.HEXBASE); } parsedColor = new Color(red, green, blue, alpha); } else { throw new NumberFormatException(); } } catch (final NumberFormatException e) { return null; } return parsedColor; } /** * Creates a re-parsable string representation of the given color. *

* First, the color will be converted into the sRGB colorspace. It will then * be printed as #rrggbb, or as #rrrggbbaa if an alpha value is present. * * @param color * the color to represent. * @return a re-parsable string representadion. */ public static String colorTOsRGBString(final Color color) { if (color == null) { return AttributesHelper.COLOR_TRANSPARENT; } final StringBuffer sbuf = new StringBuffer(10); sbuf.append('#'); String s = Integer.toHexString(color.getRed()); if (s.length() == 1) { sbuf.append('0'); } sbuf.append(s); s = Integer.toHexString(color.getGreen()); if (s.length() == 1) { sbuf.append('0'); } sbuf.append(s); s = Integer.toHexString(color.getBlue()); if (s.length() == 1) { sbuf.append('0'); } sbuf.append(s); if (color.getAlpha() != AttributesHelper.MAX_BYTE) { s = Integer.toHexString(color.getAlpha()); if (s.length() == 1) { sbuf.append('0'); } sbuf.append(s); } return sbuf.toString(); } // CHECKSTYLE:OFF static { // Mostly taken from 2.4.4.2 AttributesHelper.SIZETRANSLATIONS.put( OperatorDictionary.NAME_VERYVERYTHINMATHSPACE, AttributesHelper.VERYVERYTHINMATHSPACE); AttributesHelper.SIZETRANSLATIONS.put( OperatorDictionary.NAME_VERYTHINMATHSPACE, AttributesHelper.VERYTHINMATHSPACE); AttributesHelper.SIZETRANSLATIONS.put( OperatorDictionary.NAME_THINMATHSPACE, AttributesHelper.THINMATHSPACE); AttributesHelper.SIZETRANSLATIONS.put( OperatorDictionary.NAME_MEDIUMMATHSPACE, AttributesHelper.MEDIUMMATHSPACE); AttributesHelper.SIZETRANSLATIONS.put( OperatorDictionary.NAME_THICKMATHSPACE, AttributesHelper.THICKMATHSPACE); AttributesHelper.SIZETRANSLATIONS.put( OperatorDictionary.NAME_VERYTHICKMATHSPACE, AttributesHelper.VERYTHICKMATHSPACE); AttributesHelper.SIZETRANSLATIONS.put( OperatorDictionary.NAME_VERYVERYTHICKMATHSPACE, AttributesHelper.VERYVERYTHICKMATHSPACE); AttributesHelper.SIZETRANSLATIONS.put(OperatorDictionary.NAME_INFINITY, AttributesHelper.INFINITY); AttributesHelper.SIZETRANSLATIONS.put("small", "68%"); AttributesHelper.SIZETRANSLATIONS.put("normal", "100%"); AttributesHelper.SIZETRANSLATIONS.put("big", "147%"); // For mfrac, as of 3.3.2.2 AttributesHelper.SIZETRANSLATIONS.put("thin", "0.5"); AttributesHelper.SIZETRANSLATIONS.put("medium", "1"); AttributesHelper.SIZETRANSLATIONS.put("thick", "2"); AttributesHelper.SIZETRANSLATIONS.put("null", Constants.ZERO); AttributesHelper.RELATIVE_UNITS.put("em", AttributesHelper.EM); AttributesHelper.RELATIVE_UNITS.put("ex", AttributesHelper.EX); AttributesHelper.RELATIVE_UNITS.put("% ", AttributesHelper.PERCENT); AttributesHelper.ABSOLUTE_UNITS.put("px", 1.0f); AttributesHelper.ABSOLUTE_UNITS.put("in", AttributesHelper.DPI); AttributesHelper.ABSOLUTE_UNITS.put("cm", AttributesHelper.DPI / AttributesHelper.CM_PER_INCH); AttributesHelper.ABSOLUTE_UNITS.put("mm", AttributesHelper.DPI / AttributesHelper.MM_PER_INCH); AttributesHelper.ABSOLUTE_UNITS.put(AttributesHelper.PT, 1.0f); AttributesHelper.ABSOLUTE_UNITS.put("pc", AttributesHelper.PT_PER_PC); // Defined in 3.2.2.2 AttributesHelper.COLOR_MAPPINGS.put("aqua", new Color(0, 255, 255)); AttributesHelper.COLOR_MAPPINGS.put("black", Color.BLACK); AttributesHelper.COLOR_MAPPINGS.put("blue", Color.BLUE); AttributesHelper.COLOR_MAPPINGS.put("fuchsia", new Color(255, 0, 255)); AttributesHelper.COLOR_MAPPINGS.put("gray", Color.GRAY); AttributesHelper.COLOR_MAPPINGS.put("green", Color.GREEN); AttributesHelper.COLOR_MAPPINGS.put("lime", new Color(0, 255, 0)); AttributesHelper.COLOR_MAPPINGS.put("maroon", new Color(128, 0, 0)); AttributesHelper.COLOR_MAPPINGS.put("navy", new Color(0, 0, 128)); AttributesHelper.COLOR_MAPPINGS.put("olive", new Color(128, 128, 0)); AttributesHelper.COLOR_MAPPINGS.put("purple", new Color(128, 0, 128)); AttributesHelper.COLOR_MAPPINGS.put("red", Color.RED); AttributesHelper.COLOR_MAPPINGS.put("silver", new Color(192, 192, 192)); AttributesHelper.COLOR_MAPPINGS.put("teal", new Color(0, 128, 128)); AttributesHelper.COLOR_MAPPINGS.put("white", Color.WHITE); AttributesHelper.COLOR_MAPPINGS.put("yellow", Color.YELLOW); // Additional colors AttributesHelper.COLOR_MAPPINGS.put(AttributesHelper.COLOR_TRANSPARENT, null); AttributesHelper.COLOR_MAPPINGS.put("null", null); AttributesHelper.COLOR_MAPPINGS.put("", null); } // CHECKSTYLE:ON } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/HAlign.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/0000644000175000017500000000526411335260530034572 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: HAlign.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.elements.support.attributes; import net.sourceforge.jeuclid.layout.LayoutInfo; import net.sourceforge.jeuclid.layout.LayoutStage; /** * @version $Revision: 8afef6dd0d58 $ */ public enum HAlign { /** Left align. */ LEFT, /** Center align. */ CENTER, /** Right align. */ RIGHT; /** constant for center align. */ public static final String ALIGN_CENTER = "center"; /** constant for right align. */ public static final String ALIGN_RIGHT = "right"; /** * Parse an Alignment String. * * @param alignString * String to parse. * @param defaultt * default value. * @return a HAlign value. */ public static HAlign parseString(final String alignString, final HAlign defaultt) { final HAlign retVal; if (HAlign.ALIGN_CENTER.equalsIgnoreCase(alignString)) { retVal = CENTER; } else if ("left".equalsIgnoreCase(alignString)) { retVal = LEFT; } else if (HAlign.ALIGN_RIGHT.equalsIgnoreCase(alignString)) { retVal = RIGHT; } else { retVal = defaultt; } return retVal; } /** * Retrieve H-Align offset. * * @param stage * current Layout Stage * @param info * Info object to examine * @param width * Total width * @return Alignment offset to add to left. */ public float getHAlignOffset(final LayoutStage stage, final LayoutInfo info, final float width) { final float offset; switch (this) { case LEFT: offset = 0.0f; break; case RIGHT: offset = width - info.getWidth(stage); break; case CENTER: offset = width / 2.0f - info.getHorizontalCenterOffset(stage); break; default: assert false; offset = 0.0f; } return offset; } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/package-info.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/0000644000175000017500000000156211335260530034567 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Attribute handling support.

Contains internal classes used for handling attributes of MathML elements.

*/ package net.sourceforge.jeuclid.elements.support.attributes; ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/FontFamily.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/0000644000175000017500000000224511335260530034566 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FontFamily.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.elements.support.attributes; /** * Enumeration for font families. * * @version $Revision: 8afef6dd0d58 $ */ public enum FontFamily { /** * Monospaced font. */ MONOSPACED, /** * Sans-Serif font. */ SANSSERIF, /** * Script font. */ SCRIPT, /** * Fraktur Font. */ FRAKTUR, /** * Serif font. */ SERIF, /** * Double Struck font. */ DOUBLE_STRUCK, } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/MathVariant.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/support/attributes/0000644000175000017500000002526711335260530034577 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathVariant.java,v e6bd6c2d9bf4 2008/11/28 15:02:26 maxberger $ */ package net.sourceforge.jeuclid.elements.support.attributes; import java.awt.Font; import java.io.Serializable; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.support.text.CharacterMapping; import net.sourceforge.jeuclid.font.FontFactory; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Class to represent and use MathVariants. * * @version $Revision: e6bd6c2d9bf4 $ */ public final class MathVariant implements Serializable { /** * Mathvariant constant. Bold style. */ public static final MathVariant BOLD = new MathVariant(Font.BOLD, FontFamily.SERIF); /** * Mathvariant constant. Bold fraktur style. */ public static final MathVariant BOLD_FRAKTUR = new MathVariant(Font.BOLD, FontFamily.FRAKTUR); /** * Mathvariant constant. Bold-italic style. */ public static final MathVariant BOLD_ITALIC = new MathVariant(Font.BOLD | Font.ITALIC, FontFamily.SERIF); /** * Mathvariant constant. Bold sans-serif style. */ public static final MathVariant BOLD_SANS_SERIF = new MathVariant( Font.BOLD, FontFamily.SANSSERIF); /** * Mathvariant constant. Bold script style. */ public static final MathVariant BOLD_SCRIPT = new MathVariant(Font.BOLD, FontFamily.SCRIPT); /** * Mathvariant constant. Double struck style. */ public static final MathVariant DOUBLE_STRUCK = new MathVariant( Font.PLAIN, FontFamily.DOUBLE_STRUCK); /** * Mathvariant constant. Fraktur style. */ public static final MathVariant FRAKTUR = new MathVariant(Font.PLAIN, FontFamily.FRAKTUR); /** * Mathvariant constant. Italic style. */ public static final MathVariant ITALIC = new MathVariant(Font.ITALIC, FontFamily.SERIF); /** * Mathvariant constant. Monospace style. */ public static final MathVariant MONOSPACE = new MathVariant(Font.PLAIN, FontFamily.MONOSPACED); /** * Mathvariant constant. Normal style. */ public static final MathVariant NORMAL = new MathVariant(Font.PLAIN, FontFamily.SERIF); /** * Mathvariant constant. Sans-serif style. */ public static final MathVariant SANS_SERIF = new MathVariant(Font.PLAIN, FontFamily.SANSSERIF); /** * Mathvariant constant. Bold italic sans-serif style. */ public static final MathVariant SANS_SERIF_BOLD_ITALIC = new MathVariant( Font.BOLD | Font.ITALIC, FontFamily.SANSSERIF); /** * Mathvariant constant. Italic sans-serif style. */ public static final MathVariant SANS_SERIF_ITALIC = new MathVariant( Font.ITALIC, FontFamily.SANSSERIF); /** * Mathvariant constant. Script style. */ public static final MathVariant SCRIPT = new MathVariant(Font.PLAIN, FontFamily.SCRIPT); private static final Map ATTRIBUTEMAP = new HashMap(); private static final Map PARAMFORFONT = new HashMap(); /** * */ private static final long serialVersionUID = 1L; /** * Logger for this class. */ private static final Log LOGGER = LogFactory .getLog(CharacterMapping.class); private static final Set WARNED = new HashSet(); private final int awtStyle; private final FontFamily fontFamily; /** * Creates a Mathvariant with the given AWT-Style and font-family. * * @param awtstyle * the awt Style * @param family * the font family */ public MathVariant(final int awtstyle, final FontFamily family) { this.awtStyle = awtstyle; this.fontFamily = family; }; /** * Creates a Mathvariant object from an attribute value. * * @param variant * the string representation of the attribute value * @return a mathVariant object or null if none is found. */ public static MathVariant stringToMathVariant(final String variant) { synchronized (MathVariant.ATTRIBUTEMAP) { // Needs to be initialized late due to chicken-egg problem. if (MathVariant.ATTRIBUTEMAP.isEmpty()) { MathVariant.ATTRIBUTEMAP.put("normal", MathVariant.NORMAL); MathVariant.ATTRIBUTEMAP.put("bold", MathVariant.BOLD); MathVariant.ATTRIBUTEMAP.put("italic", MathVariant.ITALIC); MathVariant.ATTRIBUTEMAP.put("bold-italic", MathVariant.BOLD_ITALIC); MathVariant.ATTRIBUTEMAP.put("double-struck", MathVariant.DOUBLE_STRUCK); MathVariant.ATTRIBUTEMAP.put("bold-fraktur", MathVariant.BOLD_FRAKTUR); MathVariant.ATTRIBUTEMAP.put("script", MathVariant.SCRIPT); MathVariant.ATTRIBUTEMAP.put("bold-script", MathVariant.BOLD_SCRIPT); MathVariant.ATTRIBUTEMAP.put("fraktur", MathVariant.FRAKTUR); MathVariant.ATTRIBUTEMAP.put("sans-serif", MathVariant.SANS_SERIF); MathVariant.ATTRIBUTEMAP.put("bold-sans-serif", MathVariant.BOLD_SANS_SERIF); MathVariant.ATTRIBUTEMAP.put("sans-serif-italic", MathVariant.SANS_SERIF_ITALIC); MathVariant.ATTRIBUTEMAP.put("sans-serif-bold-italic", MathVariant.SANS_SERIF_BOLD_ITALIC); MathVariant.ATTRIBUTEMAP.put("monospace", MathVariant.MONOSPACE); } return MathVariant.ATTRIBUTEMAP.get(variant .toLowerCase(Locale.ENGLISH)); } } /** * Create a font for the given attributes. * * @param size * size of the font to create * @param codepoint * a character that must exist in this font * @param context * LayoutContext to use. * @param force * if true will always return a font, otherwise will return * null. * @return a font object. */ @SuppressWarnings("unchecked") public Font createFont(final float size, final int codepoint, final LayoutContext context, final boolean force) { final Parameter theParam = MathVariant.PARAMFORFONT .get(this.fontFamily); final Font font = FontFactory.getInstance().getFont( (List) context.getParameter(theParam), codepoint, this.awtStyle, size); if (force && font == null) { if (!MathVariant.WARNED.contains(codepoint)) { MathVariant.WARNED.add(codepoint); final String hexString = Integer.toHexString(codepoint); MathVariant.LOGGER .warn("No font available to display character " + hexString); MathVariant.LOGGER .info("Find a font at http://www.fileformat.info/info/unicode/char/" + hexString + "/fontsupport.htm or " + "http://www.alanwood.net/unicode/search.html"); } return FontFactory.getInstance().getFont(FontFactory.SANSSERIF, this.awtStyle, size); } return font; } /** * @return the awtStyle */ public int getAwtStyle() { return this.awtStyle; } /** * @return the fontFamily */ public FontFamily getFontFamily() { return this.fontFamily; } static { MathVariant.PARAMFORFONT.put(FontFamily.SERIF, Parameter.FONTS_SERIF); MathVariant.PARAMFORFONT.put(FontFamily.SANSSERIF, Parameter.FONTS_SANSSERIF); MathVariant.PARAMFORFONT.put(FontFamily.MONOSPACED, Parameter.FONTS_MONOSPACED); MathVariant.PARAMFORFONT.put(FontFamily.SCRIPT, Parameter.FONTS_SCRIPT); MathVariant.PARAMFORFONT.put(FontFamily.FRAKTUR, Parameter.FONTS_FRAKTUR); MathVariant.PARAMFORFONT.put(FontFamily.DOUBLE_STRUCK, Parameter.FONTS_DOUBLESTRUCK); } /** {@inheritDoc} */ @Override public int hashCode() { final int prime = 31; int result; if (this.fontFamily == null) { result = 0; } else { result = this.fontFamily.hashCode(); } result = prime * result + this.awtStyle; return result; } /** {@inheritDoc} */ @Override public boolean equals(final Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (this.getClass() != obj.getClass()) { return false; } final MathVariant other = (MathVariant) obj; if (this.awtStyle != other.awtStyle) { return false; } if (this.fontFamily == null) { if (other.fontFamily != null) { return false; } } else if (!this.fontFamily.equals(other.fontFamily)) { return false; } return true; } /** {@inheritDoc} */ @Override public String toString() { final StringBuilder b = new StringBuilder(); b.append('['); b.append(this.fontFamily); if (this.awtStyle > 0) { b.append(' '); } if ((this.awtStyle & Font.BOLD) > 0) { b.append('B'); } if ((this.awtStyle & Font.ITALIC) > 0) { b.append('I'); } b.append(']'); return b.toString(); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/elements/JEuclidNode.java0000644000175000017500000000241611335260530033652 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidNode.java,v e257bedacb55 2008/04/20 13:32:02 maxberger $ */ package net.sourceforge.jeuclid.elements; import net.sourceforge.jeuclid.LayoutContext; /** * Generic interface for all MathNodes, including document Element. * * @version $Revision: e257bedacb55 $ */ public interface JEuclidNode { /** * get the layout context for the given child. * * @param childNum * 0-based number of the child to check. * @param context * external context. * @return layout context to use. */ LayoutContext getChildLayoutContext(final int childNum, final LayoutContext context); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/swing/0000755000175000017500000000000011335260530030172 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/swing/MathComponentUI.java0000644000175000017500000002301411335260530034047 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathComponentUI.java,v cae99f384592 2009/06/03 12:42:28 maxberger $ */ package net.sourceforge.jeuclid.swing; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Insets; import java.awt.Point; import java.awt.geom.Point2D; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; import javax.swing.JComponent; import javax.swing.LookAndFeel; import javax.swing.SwingConstants; import javax.swing.border.Border; import javax.swing.plaf.ComponentUI; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.layout.JEuclidView; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Node; /** * See http://today.java.net/pub/a/today/2007/02/22/how-to-write-custom-swing- * component.html for details. * * @version $Revision: cae99f384592 $ * */ public class MathComponentUI extends ComponentUI implements PropertyChangeListener { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(MathComponentUI.class); private JMathComponent mathComponent; /** * Reference to layout tree. */ private JEuclidView jEuclidView; /** Reference to document. */ private Node document; private Dimension preferredSize; /** * Default constructor. */ public MathComponentUI() { super(); // nothing to do. } /** {@inheritDoc} */ @Override public void paint(final Graphics g, final JComponent c) { this.preferredSize = null; // using the size seems to cause flickering is some cases final Dimension dim = this.mathComponent.getSize(); final Point start = this .getStartPointWithBordersAndAdjustDimension(dim); this.paintBackground(g, dim, start); if (this.jEuclidView != null) { final Point2D alignOffset = this.calculateAlignmentOffset(dim); this.jEuclidView.draw((Graphics2D) g, (float) alignOffset.getX() + start.x, (float) alignOffset.getY() + start.y); } } /** {@inheritDoc} */ @Override public void update(final Graphics g, final JComponent c) { if (c.isOpaque()) { g.setColor(c.getBackground()); g.fillRect(0, 0, c.getWidth(), c.getHeight()); } this.paint(g, c); } private Point2D calculateAlignmentOffset(final Dimension dim) { final float xo; if ((this.mathComponent.getHorizontalAlignment() == SwingConstants.LEADING) || (this.mathComponent.getHorizontalAlignment() == SwingConstants.LEFT)) { xo = 0.0f; } else if ((this.mathComponent.getHorizontalAlignment() == SwingConstants.TRAILING) || (this.mathComponent.getHorizontalAlignment() == SwingConstants.RIGHT)) { xo = dim.width - this.jEuclidView.getWidth(); } else { xo = (dim.width - this.jEuclidView.getWidth()) / 2.0f; } final float yo; if (this.mathComponent.getVerticalAlignment() == SwingConstants.TOP) { yo = this.jEuclidView.getAscentHeight(); } else if (this.mathComponent.getVerticalAlignment() == SwingConstants.BOTTOM) { yo = dim.height - this.jEuclidView.getDescentHeight(); } else { yo = (dim.height + this.jEuclidView.getAscentHeight() - this.jEuclidView .getDescentHeight()) / 2.0f; } return new Point2D.Float(xo, yo); } private void paintBackground(final Graphics g, final Dimension dim, final Point start) { final Color back = this.getRealBackgroundColor(); if (back != null) { g.setColor(back); g.fillRect(start.x, start.y, dim.width, dim.height); } } private Point getStartPointWithBordersAndAdjustDimension(final Dimension dim) { Point start = new Point(0, 0); final Border border = this.mathComponent.getBorder(); if (border != null) { final Insets insets = border.getBorderInsets(this.mathComponent); if (insets != null) { dim.width -= insets.left + insets.right; dim.height -= insets.top + insets.bottom; start = new Point(insets.left, insets.top); } } return start; } private Color getRealBackgroundColor() { Color back = this.mathComponent.getBackground(); if (this.mathComponent.isOpaque()) { if (back == null) { back = Color.WHITE; } // Remove Alpha back = new Color(back.getRGB()); } return back; } /** {@inheritDoc} */ @Override public void installUI(final JComponent c) { if (c instanceof JMathComponent) { this.mathComponent = (JMathComponent) c; c.addPropertyChangeListener(this); this.installDefaults(this.mathComponent); } else { throw new IllegalArgumentException( "This UI can only be installed on a JMathComponent"); } } /** * Configures the default properties from L&F. * * @param c * the component */ protected void installDefaults(final JMathComponent c) { // LookAndFeel.installColorsAndFont(c, "Label.background", // "Label.foreground", "Label.font"); LookAndFeel.installProperty(c, "opaque", Boolean.FALSE); } /** {@inheritDoc} */ @Override public void uninstallUI(final JComponent c) { c.removePropertyChangeListener(this); this.mathComponent = null; } /** {@inheritDoc} */ public void propertyChange(final PropertyChangeEvent evt) { final String name = evt.getPropertyName(); if ("document".equals(name) || "property".equals(name)) { final JMathComponent jc = (JMathComponent) evt.getSource(); this.document = (Node) evt.getNewValue(); this.redo(jc.getParameters(), (Graphics2D) jc.getGraphics()); // jc.repaint(); } else { try { final JMathComponent jc = (JMathComponent) evt.getSource(); this.redo(jc.getParameters(), (Graphics2D) jc.getGraphics()); } catch (final ClassCastException ia) { MathComponentUI.LOGGER.debug(ia); } } } private void redo(final MutableLayoutContext parameters, final Graphics2D g2d) { if ((this.document == null) || (g2d == null)) { this.jEuclidView = null; } else { this.jEuclidView = new JEuclidView(this.document, parameters, g2d); } } /** {@inheritDoc} */ @Override public Dimension getPreferredSize(final JComponent c) { return this.getMathComponentSize(c); } /** * Retrieve the preferred size of the math component. This function caches * its result for faster operation. * * @param c * the math component to measure * @return the preferred size. */ private Dimension getMathComponentSize(final JComponent c) { if (this.preferredSize == null) { if (this.jEuclidView == null || c.getGraphics() == null) { return super.getPreferredSize(c); } this.calculatePreferredSize(c); } return this.preferredSize; } private void calculatePreferredSize(final JComponent c) { this.preferredSize = new Dimension((int) Math.ceil(this.jEuclidView .getWidth()), (int) Math.ceil(this.jEuclidView .getAscentHeight() + this.jEuclidView.getDescentHeight())); final Border border = c.getBorder(); if (border != null) { final Insets insets = border.getBorderInsets(c); if (insets != null) { this.preferredSize.width += insets.left + insets.right; this.preferredSize.height += insets.top + insets.bottom; } } } /** {@inheritDoc} */ @Override public Dimension getMaximumSize(final JComponent c) { return this.getMathComponentSize(c); } /** {@inheritDoc} */ @Override public Dimension getMinimumSize(final JComponent c) { return this.getMathComponentSize(c); } /** * Get vector of {@link JEuclidView.NodeRect} at a particular mouse * position. * * @param x * x-coord * @param y * y-coord * @return list of nodes with rendering information */ public List getNodesAt(final float x, final float y) { final Point2D point = this.calculateAlignmentOffset(this.mathComponent .getSize()); return this.jEuclidView.getNodesAt(x, y, (float) point.getX(), (float) point.getY()); } } ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/swing/JMathComponentBeanInfo.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/swing/JMathComponentBeanInfo0000644000175000017500000001730211335260530034410 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JMathComponentBeanInfo.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.swing; import java.awt.Image; import java.beans.BeanDescriptor; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; import java.beans.SimpleBeanInfo; import javax.swing.ImageIcon; /** * This is the class providing bean information about the swing component * {@link JMathComponent}. This class might be useful for applications using * JEuclid in their application. With help of this class they can query useful * information about JMathComponent when the application uses it as a bean. * * @version $Revision: 8afef6dd0d58 $ */ public class JMathComponentBeanInfo extends SimpleBeanInfo { private static final Class BEANCLASS = JMathComponent.class; private final Image icoColor16 = new ImageIcon( JMathComponentBeanInfo.BEANCLASS .getResource("/icons/jeuclid_16x16.png")).getImage(); private final Image icoColor32 = new ImageIcon( JMathComponentBeanInfo.BEANCLASS .getResource("/icons/jeuclid_32x32.png")).getImage(); private final Image icoBw16 = new ImageIcon( JMathComponentBeanInfo.BEANCLASS .getResource("/icons/jeuclid_16x16_bw.png")).getImage(); private final Image icoBw32 = new ImageIcon( JMathComponentBeanInfo.BEANCLASS .getResource("/icons/jeuclid_32x32_bw.png")).getImage(); /** * Default Constructor. */ public JMathComponentBeanInfo() { // Empty on purpose. } /** {@inheritDoc} */ @Override public Image getIcon(final int iconKind) { final Image retVal; switch (iconKind) { case BeanInfo.ICON_COLOR_16x16: retVal = this.icoColor16; break; case BeanInfo.ICON_COLOR_32x32: retVal = this.icoColor32; break; case BeanInfo.ICON_MONO_16x16: retVal = this.icoBw16; break; case BeanInfo.ICON_MONO_32x32: retVal = this.icoBw32; break; default: return this.icoColor32; } return retVal; } /** {@inheritDoc} */ @Override public BeanDescriptor getBeanDescriptor() { final BeanDescriptor beanDescriptor = new BeanDescriptor( JMathComponentBeanInfo.BEANCLASS); beanDescriptor.setName("JEuclid"); beanDescriptor.setDisplayName("JEuclid Bean"); beanDescriptor .setShortDescription("The JEuclid project creates the possibility to " + "display MathML content. " + "This Bean supports rendering MathML content as a Swing component."); return beanDescriptor; } /** {@inheritDoc} */ @Override public PropertyDescriptor[] getPropertyDescriptors() { try { final PropertyDescriptor propertyFontSize = this .createPropertyDescriptor("fontSize", "Font size", "This will modify the font size of the displayed MathML elements"); final PropertyDescriptor propertyContent = this .createPropertyDescriptor("content", "Content", "The XML content for the JEuclid Bean"); final PropertyDescriptor fgContent = this .createPropertyDescriptor("foreground", "Foreground Color", "Foreground color if not specified within the document"); final PropertyDescriptor bgContent = this .createPropertyDescriptor("background", "Background Color", "Background color for this component"); final PropertyDescriptor opaqueContent = this .createPropertyDescriptor("opaque", "Opaque", "If true, will always overpaint the background"); final PropertyDescriptor fontsContent1 = this .createPropertyDescriptor("fontsSerif", "Serif Fonts", "Fonts to use for Serif characters (the default font)"); final PropertyDescriptor fontsContent2 = this .createPropertyDescriptor("fontsSanserif", "Sans-Serif Fonts", "Fonts to use for Sans-Serif characters"); final PropertyDescriptor fontsContent3 = this .createPropertyDescriptor("fontsMonospaced", "Monospaced Fonts", "Fonts to use for Monospaced characters"); final PropertyDescriptor fontsContent4 = this .createPropertyDescriptor("fontsScript", "Script Fonts", "Fonts to use for Script characters"); final PropertyDescriptor fontsContent5 = this .createPropertyDescriptor("fontsFraktur", "Fraktur Fonts", "Fonts to use for Fraktur characters"); final PropertyDescriptor fontsContent6 = this .createPropertyDescriptor("fontsDoublestruck", "Double-Struck Fonts", "Fonts to use for Double-Struck characters"); final PropertyDescriptor vAlign = this .createPropertyDescriptor("verticalAlignment", "Vertical Alignment", "Vertical alignment, as defined by javax.swing.JLabel#getHorizontalAlignment"); final PropertyDescriptor hAlign = this .createPropertyDescriptor( "horizontalAlignment", "Horizontal Alignment", "Horizontal alignment, as defined by javax.swing.JLabel#getHorizontalAlignment"); final PropertyDescriptor border = this.createPropertyDescriptor( "border", "Border", "Swing Border Property"); return new PropertyDescriptor[] { propertyContent, propertyFontSize, fgContent, bgContent, opaqueContent, fontsContent1, fontsContent2, fontsContent3, fontsContent4, fontsContent5, fontsContent6, vAlign, hAlign, border, }; } catch (final IntrospectionException ex) { // should never occur as we know which classes/methods can be used // in this BeanInfo class return super.getPropertyDescriptors(); } } private PropertyDescriptor createPropertyDescriptor( final String attribute, final String displayName, final String description) throws IntrospectionException { final PropertyDescriptor propertyFontSize = new PropertyDescriptor( attribute, JMathComponentBeanInfo.BEANCLASS); propertyFontSize.setDisplayName(displayName); propertyFontSize.setShortDescription(description); return propertyFontSize; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/swing/JMathComponent.java0000644000175000017500000004313711335260530033733 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JMathComponent.java,v 5a7becda9147 2009/10/23 12:57:54 max $ */ package net.sourceforge.jeuclid.swing; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.io.IOException; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Map; import javax.swing.JComponent; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.xml.parsers.ParserConfigurationException; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.MathMLSerializer; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.generic.DocumentElement; import net.sourceforge.jeuclid.elements.support.ClassLoaderSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Node; import org.xml.sax.SAXException; /** * Displays MathML content in a Swing Component. *

* There are two properties which expose the actual content, accessible though * {@link #getDocument()} / {@link #setDocument(org.w3c.dom.Node)} for content * already available as a DOM model, and {@link #getContent()} and * {@link #setContent(String)} for content available as a String. *

* This class exposes most of the rendering parameters as standard bean * attributes. If you need to set additional attributes, you may use the * {@link #setParameter(Parameter, Object)} function. *

* Please use only the attributes exposed through the attached * {@link JMathComponentBeanInfo} class. Additional attributes, such as * {@link #getFont()} and {@link #setFont(Font)} are provided for Swing * compatibility, but they may not work exactly as expected. * * @see net.sourceforge.jeuclid.awt.MathComponent * @version $Revision: 5a7becda9147 $ */ public final class JMathComponent extends JComponent implements SwingConstants { private static final String FONT_SEPARATOR = ","; /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(JMathComponent.class); /** */ private static final long serialVersionUID = 1L; private static String uiClassId; private static Class mathComponentUIClass; private Node document; private int horizontalAlignment = SwingConstants.CENTER; private final MutableLayoutContext parameters = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); private int verticalAlignment = SwingConstants.CENTER; /** * Default constructor. */ public JMathComponent() { this.updateUI(); this.fontCompat(); this.setDocument(new DocumentElement()); } /** * Provide compatibility for standard get/setFont() operations. */ private void fontCompat() { final String fontName = this.getFontsSerif().split( JMathComponent.FONT_SEPARATOR)[0]; final float fontSize = this.getFontSize(); super.setFont(new Font(fontName, 0, (int) fontSize)); } /** * Tries to return the content as a String. *

* This transforms the internal DOM tree back into a string, which may is * not guaranteed to be the literally same as the original content. However, * it will represent the same XML document. * * @return the content string. */ public String getContent() { return MathMLSerializer.serializeDocument(this.getDocument(), false, false); } /** * @return the document */ public Node getDocument() { return this.document; } private static String join(final List list) { boolean first = true; final StringBuilder b = new StringBuilder(); for (final String s : list) { if (first) { first = false; } else { b.append(JMathComponent.FONT_SEPARATOR); } b.append(s); } return b.toString(); } /** * Font list for Doublestruck. Please see * {@link Parameter#FontsDoublestruck} for an explanation of this parameter. * * @return The list for Doublestruck. * @see Parameter#FontsDoublestruck */ @SuppressWarnings("unchecked") public String getFontsDoublestruck() { return JMathComponent.join((List) this.parameters .getParameter(Parameter.FONTS_DOUBLESTRUCK)); } /** * Font list for Fraktur. Please see {@link Parameter#FontsFraktur} for an * explanation of this parameter. * * @return The list for Fraktur. * @see Parameter#FontsFraktur */ @SuppressWarnings("unchecked") public String getFontsFraktur() { return JMathComponent.join((List) this.parameters .getParameter(Parameter.FONTS_FRAKTUR)); } /** * @return the fontSize */ public float getFontSize() { return (Float) this.parameters.getParameter(Parameter.MATHSIZE); } /** * Font list for Monospaced. Please see {@link Parameter#FontsMonospaced} * for an explanation of this parameter. * * @return The list for monospaced. * @see Parameter#FontsMonospaced */ @SuppressWarnings("unchecked") public String getFontsMonospaced() { return JMathComponent.join((List) this.parameters .getParameter(Parameter.FONTS_MONOSPACED)); } /** * Font list for Sans-Serif. Please see {@link Parameter#FontsSanserif} for * an explanation of this parameter. * * @return The list for sansserif. * @see Parameter#FontsSanserif */ @SuppressWarnings("unchecked") public String getFontsSanserif() { return JMathComponent.join((List) this.parameters .getParameter(Parameter.FONTS_SANSSERIF)); } /** * Font list for Script. Please see {@link Parameter#FontsScript} for an * explanation of this parameter. * * @return The list for Script. * @see Parameter#FontsScript */ @SuppressWarnings("unchecked") public String getFontsScript() { return JMathComponent.join((List) this.parameters .getParameter(Parameter.FONTS_SCRIPT)); } /** * Font list for Serif (the default MathML font). Please see * {@link Parameter#FontsSerif} for an explanation of this parameter. * * @return The list for serif. * @see Parameter#FontsSerif */ @SuppressWarnings("unchecked") public String getFontsSerif() { return JMathComponent.join((List) this.parameters .getParameter(Parameter.FONTS_SERIF)); } /** {@inheritDoc} */ @Override public Color getForeground() { return (Color) this.parameters.getParameter(Parameter.MATHCOLOR); } /** * Horizontal alignment, as defined by * {@link javax.swing.JLabel#getHorizontalAlignment()}. *

* Supported are: {@link SwingConstants#LEADING}, * {@link SwingConstants#LEFT}, {@link SwingConstants#CENTER}, * {@link SwingConstants#TRAILING}, {@link SwingConstants#RIGHT}. * * @return the horizontalAlignment * @see javax.swing.JLabel#getHorizontalAlignment() */ public int getHorizontalAlignment() { return this.horizontalAlignment; } /** * Gets the preferred size of this component. * * @return A dimension object indicating this component's preferred size. */ @Override public Dimension getPreferredSize() { return this.getMinimumSize(); } /** * @return the UI implementation. */ public MathComponentUI getUI() { return (MathComponentUI) this.ui; } /** * @return The default UI class */ @Override public String getUIClassID() { return JMathComponent.uiClassId; } /** * Vertical alignment, as defined by * {@link javax.swing.JLabel#getVerticalAlignment()}. *

* Supported are: {@link SwingConstants#TOP}, {@link SwingConstants#CENTER}, * {@link SwingConstants#BOTTOM}. * * @return the verticalAlignment * @see javax.swing.JLabel#getVerticalAlignment() */ public int getVerticalAlignment() { return this.verticalAlignment; } private void reval() { this.repaint(); this.revalidate(); } /** {@inheritDoc} */ @Override public void setBackground(final Color c) { super.setBackground(c); this.reval(); } /** * Set the content from a String containing the MathML content. * * @param contentString * the content to set. */ public void setContent(final String contentString) { try { this.setDocument(MathMLParserSupport.parseString(contentString)); } catch (final SAXException e) { throw new RuntimeException(e); } catch (final ParserConfigurationException e) { throw new RuntimeException(e); } catch (final IOException e) { throw new RuntimeException(e); } } /** * Enables, or disables the debug mode. * * @param dbg * Debug mode. */ public void setDebug(final boolean dbg) { this.setParameter(Parameter.DEBUG, dbg); } /** * @param doc * the document to set */ public void setDocument(final Node doc) { final Node oldValue = this.document; this.firePropertyChange("document", oldValue, doc); this.document = doc; if (doc != oldValue) { this.revalidate(); this.repaint(); } } /** * Font emulator for standard component behavior. *

* Emulates the standard setFont function by setting the font Size and * adding the font to the front of the serif font list. *

* Please use the separate setters if possible. * * @param f * font to set. * @see #setFontSize(float) * @see #setFontsSerif(String) * @deprecated use separate setters. */ @Deprecated @Override public void setFont(final Font f) { super.setFont(f); this.setFontSize(f.getSize2D()); this.setFontsSerif(f.getFamily() + JMathComponent.FONT_SEPARATOR + this.getFontsSerif()); } private List splitFonts(final String list) { return Arrays.asList(list.split(JMathComponent.FONT_SEPARATOR)); } /** * Font list for Doublestruck. Please see * {@link Parameter#FONTS_DOUBLESTRUCK} for an explanation of this * parameter. * * @param newFonts * new list for Doublestruck (comma seraparated). * @see Parameter#FONTS_DOUBLESTRUCK */ public void setFontsDoublestruck(final String newFonts) { this.setParameter(Parameter.FONTS_DOUBLESTRUCK, this .splitFonts(newFonts)); } /** * Font list for Fraktur. Please see {@link Parameter#FONTS_FRAKTUR} for an * explanation of this parameter. * * @param newFonts * new list for Fraktur (comma seraparated). * @see Parameter#FONTS_FRAKTUR */ public void setFontsFraktur(final String newFonts) { this.setParameter(Parameter.FONTS_FRAKTUR, this.splitFonts(newFonts)); } /** * Sets a generic rendering parameter. * * @param key * Key for the parameter * @param newValue * newValue */ public void setParameter(final Parameter key, final Object newValue) { this.setParameters(Collections.singletonMap(key, newValue)); } /** * Sets generic rendering parameters. * * @param newValues * map of parameter keys to new values */ public void setParameters(final Map newValues) { for (final Map.Entry entry : newValues.entrySet()) { final Parameter key = entry.getKey(); final Object oldValue = this.parameters.getParameter(key); this.parameters.setParameter(key, entry.getValue()); this.firePropertyChange(key.name(), oldValue, this.parameters .getParameter(key)); } this.revalidate(); this.repaint(); } /** * sets the font size used. * * @param fontSize * the font size. */ public void setFontSize(final float fontSize) { this.setParameter(Parameter.MATHSIZE, fontSize); } /** * Font list for Monospaced. Please see {@link Parameter#FONTS_MONOSPACED} * for an explanation of this parameter. * * @param newFonts * new list for Monospaced (comma seraparated). * @see Parameter#FONTS_MONOSPACED */ public void setFontsMonospaced(final String newFonts) { this .setParameter(Parameter.FONTS_MONOSPACED, this .splitFonts(newFonts)); } /** * Font list for Sans-Serif. Please see {@link Parameter#FONTS_SANSSERIF} * for an explanation of this parameter. * * @param newFonts * new list for sansserif (comma seraparated). * @see Parameter#FONTS_SANSSERIF */ public void setFontsSanserif(final String newFonts) { this.setParameter(Parameter.FONTS_SANSSERIF, this.splitFonts(newFonts)); } /** * Font list for Script. Please see {@link Parameter#FONTS_SCRIPT} for an * explanation of this parameter. * * @param newFonts * new list for Script (comma seraparated). * @see Parameter#FONTS_SCRIPT */ public void setFontsScript(final String newFonts) { this.setParameter(Parameter.FONTS_SCRIPT, this.splitFonts(newFonts)); } /** * Font list for Serif (the default MathML font). Please see * {@link Parameter#FONTS_SERIF} for an explanation of this parameter. * * @param newFonts * new list for serif (comma seraparated). * @see Parameter#FONTS_SERIF */ public void setFontsSerif(final String newFonts) { this.setParameter(Parameter.FONTS_SERIF, this.splitFonts(newFonts)); this.fontCompat(); } /** {@inheritDoc} */ @Override public void setForeground(final Color fg) { super.setForeground(fg); this.setParameter(Parameter.MATHCOLOR, fg); } /** * Horizontal alignment, as defined by * {@link javax.swing.JLabel#setHorizontalAlignment(int)}. *

* Supported are: {@link SwingConstants#LEADING}, * {@link SwingConstants#LEFT}, {@link SwingConstants#CENTER}, * {@link SwingConstants#TRAILING}, {@link SwingConstants#RIGHT}. * * @param hAlignment * the horizontalAlignment to set * @see javax.swing.JLabel#setHorizontalAlignment(int) */ public void setHorizontalAlignment(final int hAlignment) { this.horizontalAlignment = hAlignment; } /** {@inheritDoc} */ @Override public void setOpaque(final boolean opaque) { super.setOpaque(opaque); this.reval(); } /** * Vertical alignment, as defined by * {@link javax.swing.JLabel#setVerticalAlignment(int)}. *

* Supported are: {@link SwingConstants#TOP}, {@link SwingConstants#CENTER}, * {@link SwingConstants#BOTTOM}. * * @param vAlignment * the verticalAlignment to set * @see javax.swing.JLabel#setVerticalAlignment(int) */ public void setVerticalAlignment(final int vAlignment) { this.verticalAlignment = vAlignment; } /** {@inheritDoc} */ @Override public void updateUI() { if (UIManager.get(this.getUIClassID()) == null) { try { this .setUI((MathComponentUI) JMathComponent.mathComponentUIClass .newInstance()); } catch (final InstantiationException e) { JMathComponent.LOGGER.warn(e.getMessage()); } catch (final IllegalAccessException e) { JMathComponent.LOGGER.warn(e.getMessage()); } } else { this.setUI(UIManager.getUI(this)); } } /** * @return the parameters */ public MutableLayoutContext getParameters() { return this.parameters; } /** {@inheritDoc} */ @Override public void setSize(final int width, final int height) { // TODO Auto-generated method stub super.setSize(width, height); } static { Class uiClass; String id; try { uiClass = ClassLoaderSupport.getInstance().loadClass( "net.sourceforge.jeuclid.swing.MathComponentUI16"); id = "MathComponentUI16"; } catch (final ClassNotFoundException t) { uiClass = MathComponentUI.class; id = "MathComponentUI"; } JMathComponent.uiClassId = id; JMathComponent.mathComponentUIClass = uiClass; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/swing/package-info.java0000644000175000017500000000164011335260530033362 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Provides a Java Swing Component for MathML Rendering.

This component is available as a Bean, for integration into visual builders such as NetBeans or Visual Editor for Eclipse. */ package net.sourceforge.jeuclid.swing; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/0000755000175000017500000000000011335260526030534 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/Parameter.java0000644000175000017500000001613711335260526033327 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Parameter.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context; import net.sourceforge.jeuclid.context.typewrapper.BooleanTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.ColorTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.EnumTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.NumberTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.TLIListTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.TypeWrapper; /** * Possible parameters for the LayoutContext. * * @version $Revision: 03dc0884e86f $ */ public enum Parameter { /** * Display style (Display). */ DISPLAY(EnumTypeWrapper.getInstance(Display.class), false, "display", "display style"), /** * Font size (Float) used for the output. Defaults to 12.0pt. Please Note: * You may also want to set SCRIPTMINZISE. */ MATHSIZE(NumberTypeWrapper.getInstance(Float.class), false, "fontSize", "font size used for the output (mathsize)"), /** * Font size (Float) for smallest script used. Defaults to 8.0pt. */ SCRIPTMINSIZE(NumberTypeWrapper.getInstance(Float.class), false, "scriptMinSize", "font size to be used for smallest script"), /** Script size multiplier (Float), defaults to 0.71. */ SCRIPTSIZEMULTIPLIER(NumberTypeWrapper.getInstance(Float.class), false, "scriptSizeMult", "script size multiplier"), /** Script level (Integer), defaults to 0. */ SCRIPTLEVEL(NumberTypeWrapper.getInstance(Integer.class), false, "scriptLevel", "script level"), /** * Minimum font size for which anti-alias is turned on. Defaults to 10.0pt */ ANTIALIAS_MINSIZE(NumberTypeWrapper.getInstance(Float.class), false, "antiAliasMinSize", "minimum font size for which anti-alias is turned on"), /** * Debug mode (Boolean). If true, elements will have borders drawn around * them. */ DEBUG(BooleanTypeWrapper.getInstance(), false, "debug", "debug mode - if on, elements will have borders drawn around them"), /** * Anti-Alias mode (Boolean) for rendering. */ ANTIALIAS(BooleanTypeWrapper.getInstance(), false, "antiAlias", "anti-alias mode"), /** * Default foreground color (Color). See 3.2.2.2 */ MATHCOLOR(ColorTypeWrapper.getInstance(), false, "foregroundColor", "default foreground color (mathcolor)"), /** * Default background color (Color), may be null. See 3.2.2.2 */ MATHBACKGROUND(ColorTypeWrapper.getInstance(), true, "backgroundColor", "default background color (mathbackground)"), /** * List<String> of font families for sans-serif. * * @see Parameter */ FONTS_SANSSERIF(TLIListTypeWrapper.getInstance(), false, "fontsSansSerif", "list of font families for Sans-Serif"), /** * List<String> of font families for serif. * * @see Parameter */ FONTS_SERIF(TLIListTypeWrapper.getInstance(), false, "fontsSerif", "list of font families for Serif"), /** * List<String> of font families for monospaced. * * @see Parameter */ FONTS_MONOSPACED(TLIListTypeWrapper.getInstance(), false, "fontsMonospaced", "list of font families for Monospaced"), /** * CList<String> of font families for script. * * @see Parameter */ FONTS_SCRIPT(TLIListTypeWrapper.getInstance(), false, "fontsScript", "list of font families for Script"), /** * List<String> of font families for fraktur. * * @see Parameter */ FONTS_FRAKTUR(TLIListTypeWrapper.getInstance(), false, "fontsFraktur", "list of font families for Fraktur"), /** * List<String> of font families for double-struck. * * @see Parameter */ FONTS_DOUBLESTRUCK(TLIListTypeWrapper.getInstance(), false, "fontsDoublestruck", "list of font families for Double-Struck"), /** * If true, <mfrac> element will NEVER increase children's * scriptlevel (in violation of the spec); otherwise it will behave with * accordance to the spec. */ MFRAC_KEEP_SCRIPTLEVEL( BooleanTypeWrapper.getInstance(), false, "mfracKeepScriptLevel", "if true, element will NEVER increase children's scriptlevel (in violation of the spec)"); private final TypeWrapper typeWrapper; private final boolean nullAllowed; private final String optionName; private final String optionDesc; private Parameter(final TypeWrapper aTypeWrapper, final boolean nullIsAllowed, final String oName, final String oDesc) { this.typeWrapper = aTypeWrapper; this.nullAllowed = nullIsAllowed; this.optionName = oName; this.optionDesc = oDesc; } /** * @return TypeWrapper instance used for this parameter */ public TypeWrapper getTypeWrapper() { return this.typeWrapper; } /** * @return user-friendly option name associated with this parameter */ public String getOptionName() { return this.optionName; } /** * @return user-friendly option name associated with this parameter */ public String getOptionDesc() { return this.optionDesc; } /** * Checks if the object is of a valid type for this parameter. * * @param o * the object to check * @return true if the parameter can be set. */ public boolean valid(final Object o) { return o == null && this.nullAllowed || this.typeWrapper.valid(o); } /** * Attempts to convert a parameter value expressed as string into an * instance of the appropriate (for this parameter) type. * * @param value * parameter value as string * @return parameter value as an instance of the proper type */ public Object fromString(final String value) { return this.typeWrapper.fromString(value); } /** * Attempts to convert a parameter value expressed as an object of the * appropriate (for this parameter) type into a string representation. * * @param value * parameter value as object * @return parameter value as string */ public String toString(final Object value) { return this.typeWrapper.toString(value); } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/LayoutContextImpl.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/LayoutContextImpl.ja0000644000175000017500000001717011335260526034522 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutContextImpl.java,v 896e3a9ebb36 2008/11/28 13:39:06 maxberger $ */ package net.sourceforge.jeuclid.context; import java.awt.Color; import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.TreeMap; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.MutableLayoutContext; /** * @version $Revision: 896e3a9ebb36 $ */ public class LayoutContextImpl implements MutableLayoutContext, Serializable { /** * */ private static final long serialVersionUID = 1L; private static final class SingletonHolder { private static final LayoutContextImpl INSTANCE = new LayoutContextImpl(); private SingletonHolder() { } } private final Map context; // CHECKSTYLE:OFF /** * Default constructor. */ protected LayoutContextImpl() { this.context = new TreeMap(); this.context.put(Parameter.MATHSIZE, Constants.DEFAULT_FONTSIZE); this.context.put(Parameter.SCRIPTMINSIZE, 8f); this.context.put(Parameter.ANTIALIAS_MINSIZE, 10f); this.context.put(Parameter.SCRIPTSIZEMULTIPLIER, Constants.DEFAULT_SCIPTSIZEMULTIPLIER); this.context.put(Parameter.SCRIPTLEVEL, 0); this.context.put(Parameter.DISPLAY, Display.BLOCK); this.context.put(Parameter.DEBUG, false); this.context.put(Parameter.ANTIALIAS, true); this.context.put(Parameter.MATHCOLOR, Color.BLACK); this.context.put(Parameter.MATHBACKGROUND, null); final List fontsSanserif = new ArrayList(12); fontsSanserif.add("Verdana"); fontsSanserif.add("Helvetica"); fontsSanserif.add("Arial"); fontsSanserif.add("Arial Unicode MS"); fontsSanserif.add("Lucida Sans Unicode"); fontsSanserif.add("Lucida Sans"); fontsSanserif.add("Lucida Grande"); fontsSanserif.add("DejaVu Sans"); fontsSanserif.add("DejaVuSans"); fontsSanserif.add("Bitstream Vera Sans"); fontsSanserif.add("Luxi Sans"); fontsSanserif.add("FreeSans"); fontsSanserif.add("sansserif"); this.context.put(Parameter.FONTS_SANSSERIF, Collections .unmodifiableList(fontsSanserif)); final List fontsSerif = new ArrayList(10); fontsSerif.add("Constantina"); fontsSerif.add("Cambria"); fontsSerif.add("Times"); fontsSerif.add("Times New Roman"); fontsSerif.add("Lucida Bright"); fontsSerif.add("DejaVu Serif"); fontsSerif.add("DejaVuSerif"); fontsSerif.add("Bitstream Vera Serif"); fontsSerif.add("Luxi Serif"); fontsSerif.add("FreeSerif"); fontsSerif.add("serif"); this.context.put(Parameter.FONTS_SERIF, Collections .unmodifiableList(fontsSerif)); final List fontsMonospaced = new ArrayList(10); fontsMonospaced.add("Andale Mono"); fontsMonospaced.add("Courier"); fontsMonospaced.add("Courier Mono"); fontsMonospaced.add("Courier New"); fontsMonospaced.add("Lucida Sans Typewriter"); fontsMonospaced.add("DejaVu Sans Mono"); fontsMonospaced.add("DejaVuSansMono"); fontsMonospaced.add("Bitstream Vera Sans Mono"); fontsMonospaced.add("Luxi Mono"); fontsMonospaced.add("FreeMono"); fontsMonospaced.add("monospaced"); this.context.put(Parameter.FONTS_MONOSPACED, Collections .unmodifiableList(fontsMonospaced)); final List fontsScript = new ArrayList(12); fontsScript.add("EUSM10"); fontsScript.add("cmsy10"); fontsScript.add("Math5"); fontsScript.add("Mathematica5"); fontsScript.add("Savoye LET"); fontsScript.add("Brush Script MT"); fontsScript.add("Zapfino"); fontsScript.add("Apple Chancery"); fontsScript.add("Edwardian Script ITC"); fontsScript.add("Lucida Handwriting"); fontsScript.add("Monotype Corsiva"); fontsScript.add("Santa Fe LET"); this.context.put(Parameter.FONTS_SCRIPT, Collections .unmodifiableList(fontsScript)); final List fontsFraktur = new ArrayList(7); fontsFraktur.add("EUFM10"); fontsFraktur.add("Mathematica6"); fontsFraktur.add("FetteFraktur"); fontsFraktur.add("Fette Fraktur"); fontsFraktur.add("Euclid Fraktur"); fontsFraktur.add("Lucida Blackletter"); fontsFraktur.add("Blackmoor LET"); this.context.put(Parameter.FONTS_FRAKTUR, Collections .unmodifiableList(fontsFraktur)); final List fontsDoublestruck = new ArrayList(8); fontsDoublestruck.add("MSBM10"); fontsDoublestruck.add("Mathematica7"); fontsDoublestruck.add("Caslon Open Face"); fontsDoublestruck.add("Caslon Openface"); fontsDoublestruck.add("Cloister Open Face"); fontsDoublestruck.add("Academy Engraved LET"); fontsDoublestruck.add("Colonna MT"); fontsDoublestruck.add("Imprint MT Shadow"); this.context.put(Parameter.FONTS_DOUBLESTRUCK, Collections .unmodifiableList(fontsDoublestruck)); this.context.put(Parameter.MFRAC_KEEP_SCRIPTLEVEL, Boolean.FALSE); // CHECKSTYLE:ON } /** * Default Constructor. * * @param copyFromContext * LayoutContext to use for initialization of values */ public LayoutContextImpl(final LayoutContext copyFromContext) { if (copyFromContext instanceof LayoutContextImpl) { this.context = new TreeMap( ((LayoutContextImpl) copyFromContext).getParameters()); } else { throw new UnsupportedOperationException("LayoutContextImpl(" + copyFromContext.getClass() + ") not supported."); } } /** * Retrieve the default layout context. * * @return the default layout context. */ public static LayoutContext getDefaultLayoutContext() { return LayoutContextImpl.SingletonHolder.INSTANCE; } /** {@inheritDoc} */ public LayoutContext setParameter(final Parameter which, final Object newValue) { if (which.valid(newValue)) { this.context.put(which, newValue); } else { this.context.put(which, which.fromString(newValue.toString())); } return this; } /** {@inheritDoc} */ public Object getParameter(final Parameter which) { return this.context.get(which); } /** * Retrieve all parameters set for this LayoutContext. Please note: The * returned map should be treated as read-only. * * @return all Parameters in this context. */ private Map getParameters() { return Collections.unmodifiableMap(this.context); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/0000755000175000017500000000000011335260530033111 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/EnumTypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/EnumType0000644000175000017500000000552711335260530034613 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: EnumTypeWrapper.java,v aa78526a6b7b 2009/06/03 10:50:27 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; import java.lang.reflect.InvocationTargetException; /** * Converting String to Enum and vice versa is easy with help of Enum class. * * @version $Revision: aa78526a6b7b $ */ public final class EnumTypeWrapper extends AbstractSimpleTypeWrapper { private static final String FAILED_TO_RETRIEVE_VALUES_OF_ENUM_CLASS = "Failed to retrieve values of enum class "; /** * */ private static final long serialVersionUID = 1L; /** * Simple constructor. * * @param valueType * an enum class */ private EnumTypeWrapper(final Class> valueType) { super(valueType); } /** * @return the singleton instance. * @param valueType * an enum class */ public static TypeWrapper getInstance( final Class> valueType) { return new EnumTypeWrapper(valueType); } /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override public Object fromString(final String value) { if (value == null) { return null; } return Enum.valueOf((Class) this.getValueType(), value); } /** * Retrieves values of the enum type being wrapped. * * @return array of possible enum values */ public Object[] values() { try { return (Object[]) this.getValueType().getMethod("values").invoke( null); } catch (final InvocationTargetException e) { throw new RuntimeException( EnumTypeWrapper.FAILED_TO_RETRIEVE_VALUES_OF_ENUM_CLASS + this.getValueType(), e); } catch (final IllegalAccessException e) { throw new RuntimeException( EnumTypeWrapper.FAILED_TO_RETRIEVE_VALUES_OF_ENUM_CLASS + this.getValueType(), e); } catch (final NoSuchMethodException e) { throw new RuntimeException( EnumTypeWrapper.FAILED_TO_RETRIEVE_VALUES_OF_ENUM_CLASS + this.getValueType(), e); } } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/NumberTypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/NumberTy0000644000175000017500000000524711335260530034611 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: NumberTypeWrapper.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; import java.lang.reflect.InvocationTargetException; /** * Converting String to Numbers and vice versa is also straightforward. * * @version $Revision: 03dc0884e86f $ */ public final class NumberTypeWrapper extends AbstractSimpleTypeWrapper { /** * */ private static final long serialVersionUID = 1L; /** * Simple constructor. * * @param valueType * a subclass of Number */ public NumberTypeWrapper(final Class valueType) { super(valueType); } /** * @param valueType * a subclass of Number * @return the singleton instance. */ public static TypeWrapper getInstance( final Class valueType) { return new NumberTypeWrapper(valueType); } /** {@inheritDoc} */ @Override public Object fromString(final String value) { if (value == null) { return null; } try { return this.getValueType().getConstructor( new Class[] { String.class }).newInstance( new Object[] { value }); } catch (final NoSuchMethodException e) { throw new IllegalArgumentException(TypeWrapper.FAILED_TO_CONVERT + value + TypeWrapper.TO + this.getValueType(), e); } catch (final IllegalAccessException e) { throw new IllegalArgumentException(TypeWrapper.FAILED_TO_CONVERT + value + TypeWrapper.TO + this.getValueType(), e); } catch (final InstantiationException e) { throw new IllegalArgumentException(TypeWrapper.FAILED_TO_CONVERT + value + TypeWrapper.TO + this.getValueType(), e); } catch (final InvocationTargetException e) { throw new IllegalArgumentException(TypeWrapper.FAILED_TO_CONVERT + value + TypeWrapper.TO + this.getValueType(), e); } } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/ColorTypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/ColorTyp0000644000175000017500000000527611335260530034621 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ColorTypeWrapper.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; import java.awt.Color; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Locale; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; /** * Color is converted to String and back by using existing APIs in * {@link AttributesHelper}. * * @version $Revision: 03dc0884e86f $ */ public final class ColorTypeWrapper extends AbstractSimpleTypeWrapper { /** * */ private static final long serialVersionUID = 1L; private static final TypeWrapper INSTANCE = new ColorTypeWrapper(); /** Simple constructor. */ private ColorTypeWrapper() { super(Color.class); } /** * @return the singleton instance. */ public static TypeWrapper getInstance() { return ColorTypeWrapper.INSTANCE; } /** {@inheritDoc} */ @Override public Object fromString(final String value) { final Color color = AttributesHelper.stringToColor(value, null); if (color == null) { throw new IllegalArgumentException('<' + value + "> is not a valid color representation"); } else { return color; } } /** {@inheritDoc} */ @Override public String toString(final Object value) { if (value == null) { return null; } String retVal = null; // Do some reflection magic to find standard color names try { for (final Field field : Color.class.getFields()) { if (Modifier.isStatic(field.getModifiers()) && field.get(null) == value) { retVal = field.getName().toLowerCase(Locale.ENGLISH); break; } } } catch (final IllegalAccessException e) { retVal = null; } if (retVal == null) { retVal = AttributesHelper.colorTOsRGBString((Color) value); } return retVal; } } ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/TypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/TypeWrap0000644000175000017500000000433311335260530034612 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: TypeWrapper.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; import java.io.Serializable; /** * Encapsulates information about a parameter's value type and how values * should be converted between strings and the appropriate object instances. *

* This allows elimination of an additional "evil" if-elseif...else" pattern. * * @version $Revision: 03dc0884e86f $ */ public interface TypeWrapper extends Serializable { /** Error message for failed to convert 1/2. */ String FAILED_TO_CONVERT = "Failed to convert <"; /** Error message for failed to convert 2/2. */ String TO = "> to "; /** * @return the class instance being wrapped */ Class getValueType(); /** * Checks if the object is of a valid type for this type info. * * @param o * the object to check * @return true if the parameter can be set. */ boolean valid(Object o); /** * Attempts to convert a parameter value expressed as string into an * instance of the appropriate (for this parameter) type. * * @param value * parameter value as string * @return parameter value as an instance of the proper type */ Object fromString(String value); /** * Attempts to convert a parameter value expressed as an object of the * appropriate (for this parameter) type into a string representation. * * @param value * parameter value as object * @return parameter value as string */ String toString(Object value); } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/TLIListTypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/TLIListT0000644000175000017500000000543011335260530034446 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: TLIListTypeWrapper.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; import java.util.ArrayList; import java.util.List; import java.util.Locale; /** * List is converted to String and back by using comma-separated * representation. * * Strings are Stored Trimmed, Lower-cased, Interned. * * @version $Revision: 03dc0884e86f $ */ public final class TLIListTypeWrapper extends AbstractSimpleTypeWrapper { /** * separator to be used when converting to string or parsing string. */ public static final String SEPARATOR = ","; /** * */ private static final long serialVersionUID = 1L; private static final TypeWrapper INSTANCE = new TLIListTypeWrapper(); /** Simple constructor. */ private TLIListTypeWrapper() { super(List.class); } /** * @return the singleton instance. */ public static TypeWrapper getInstance() { return TLIListTypeWrapper.INSTANCE; } /** {@inheritDoc} */ @Override public Object fromString(final String value) { if (value == null) { return null; } else { final String whitespace = "\\s*"; final String[] strList = value.split(whitespace + TLIListTypeWrapper.SEPARATOR + whitespace); final List retVal = new ArrayList(strList.length); for (final String str : strList) { retVal.add(str.trim().toLowerCase(Locale.ENGLISH).intern()); } return retVal; } } /** {@inheritDoc} */ @Override public String toString(final Object value) { if (value == null) { return null; } else { final StringBuilder b = new StringBuilder(); boolean first = true; for (final Object o : (List) value) { if (first) { first = false; } else { b.append(TLIListTypeWrapper.SEPARATOR); b.append(' '); } b.append(o); } return b.toString(); } } } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/StringTypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/StringTy0000644000175000017500000000304411335260530034620 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: StringTypeWrapper.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; /** * Converting String to String is trivial... * * @version $Revision: 03dc0884e86f $ */ public final class StringTypeWrapper extends AbstractSimpleTypeWrapper { /** * */ private static final long serialVersionUID = 1L; private static final TypeWrapper INSTANCE = new StringTypeWrapper(); /** Simple c'tor. */ private StringTypeWrapper() { super(String.class); } /** * @return the singleton instance. */ public static TypeWrapper getInstance() { return StringTypeWrapper.INSTANCE; } /** {@inheritDoc} */ @Override public Object fromString(final String value) { return value; } /** {@inheritDoc} */ @Override public String toString(final Object value) { return (String) value; } } ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/BooleanTypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/BooleanT0000644000175000017500000000306211335260526034545 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: BooleanTypeWrapper.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; /** * Converting String to Boolean and vice versa is also straightforward. * * @version $Revision: 03dc0884e86f $ */ public final class BooleanTypeWrapper extends AbstractSimpleTypeWrapper { /** * */ private static final long serialVersionUID = 1L; private static final TypeWrapper INSTANCE = new BooleanTypeWrapper(); /** Simple constructor. */ private BooleanTypeWrapper() { super(Boolean.class); } /** * @return the singleton instance. */ public static TypeWrapper getInstance() { return BooleanTypeWrapper.INSTANCE; } /** {@inheritDoc} */ @Override public Object fromString(final String value) { if (value == null) { return null; } else { return Boolean.valueOf(value); } } } ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/AbstractSimpleTypeWrapper.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/typewrapper/Abstract0000644000175000017500000000407711335260526034614 0ustar sylvestresylvestre/* * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: AbstractSimpleTypeWrapper.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.context.typewrapper; /** * Basic (and simple) implementation of TypeWrapper. Maintains an instance of * type being wrapped as well as provides reasonable default implementations * for all the operations. * * @version $Revision: 03dc0884e86f $ */ public abstract class AbstractSimpleTypeWrapper implements TypeWrapper { /** * */ private static final long serialVersionUID = 1L; /** the class instance being wrapped */ private final Class valueType; /** * @param valType * a Class object */ protected AbstractSimpleTypeWrapper(final Class valType) { this.valueType = valType; } /** {@inheritDoc} */ public Class getValueType() { return this.valueType; } /** {@inheritDoc} */ public boolean valid(final Object o) { return this.valueType.isInstance(o); } /** {@inheritDoc} */ public Object fromString(final String value) { if (value == null) { return null; } throw new IllegalArgumentException(TypeWrapper.FAILED_TO_CONVERT + value + TypeWrapper.TO + this.valueType); } /** {@inheritDoc} */ public String toString(final Object value) { if (value == null) { return null; } else { return value.toString(); } } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/StyleAttributeLayoutContext.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/StyleAttributeLayout0000644000175000017500000000434311335260526034645 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: StyleAttributeLayoutContext.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.context; import java.awt.Color; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.support.attributes.AttributesHelper; /** * @version $Revision: 8afef6dd0d58 $ */ public class StyleAttributeLayoutContext implements LayoutContext { private final LayoutContext parentLayoutContext; private final String sizeString; private final Color foregroundColor; /** * Default Constructor. * * @param parent * LayoutContext of parent. * @param msize * msize String to apply to parent context. * @param foreground * Foreground color for new context. */ public StyleAttributeLayoutContext(final LayoutContext parent, final String msize, final Color foreground) { this.parentLayoutContext = parent; this.sizeString = msize; this.foregroundColor = foreground; } /** {@inheritDoc} */ public Object getParameter(final Parameter which) { final Object retVal; if (Parameter.MATHSIZE.equals(which) && (this.sizeString != null)) { retVal = AttributesHelper.convertSizeToPt(this.sizeString, this.parentLayoutContext, AttributesHelper.PT); } else if (Parameter.MATHCOLOR.equals(which) && this.foregroundColor != null) { retVal = this.foregroundColor; } else { retVal = this.parentLayoutContext.getParameter(which); } return retVal; } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/InlineLayoutContext.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/InlineLayoutContext.0000644000175000017500000000444511335260526034525 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: InlineLayoutContext.java,v 601cf72e95bf 2007/09/14 13:49:37 maxberger $ */ package net.sourceforge.jeuclid.context; import net.sourceforge.jeuclid.LayoutContext; /** * @version $Revision: 601cf72e95bf $ */ public class InlineLayoutContext implements LayoutContext { private final LayoutContext parentLayoutContext; private final boolean increaseIfAlreadyInline; /** * Default Constructor. * * @param parent * LayoutContext of parent. */ public InlineLayoutContext(final LayoutContext parent) { this.parentLayoutContext = parent; this.increaseIfAlreadyInline = false; } /** * Behavior for mfrac. * * @param parent * LayoutContext of parent. * @param increase * increase scriptlevel if already inline. */ public InlineLayoutContext(final LayoutContext parent, final boolean increase) { this.parentLayoutContext = parent; this.increaseIfAlreadyInline = increase; } /** {@inheritDoc} */ public Object getParameter(final Parameter which) { Object retVal; if (Parameter.DISPLAY.equals(which)) { retVal = Display.INLINE; } else if (this.increaseIfAlreadyInline && (Parameter.SCRIPTLEVEL.equals(which)) && (Display.INLINE.equals(this.parentLayoutContext .getParameter(Parameter.DISPLAY)))) { retVal = ((Integer) this.parentLayoutContext .getParameter(Parameter.SCRIPTLEVEL)) + 1; } else { retVal = this.parentLayoutContext.getParameter(which); } return retVal; } } ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/RelativeScriptlevelLayoutContext.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/RelativeScriptlevelL0000644000175000017500000000336411335260526034571 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: RelativeScriptlevelLayoutContext.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.context; import net.sourceforge.jeuclid.LayoutContext; /** * @version $Revision: 8afef6dd0d58 $ */ public class RelativeScriptlevelLayoutContext implements LayoutContext { private final LayoutContext parentLayoutContext; private final int sizeOffset; /** * Default Constructor. * * @param parent * LayoutContext of parent. * @param offset * offset to parent. In most cases this will be 1. * */ public RelativeScriptlevelLayoutContext(final LayoutContext parent, final int offset) { this.parentLayoutContext = parent; this.sizeOffset = offset; } /** {@inheritDoc} */ public Object getParameter(final Parameter which) { if (Parameter.SCRIPTLEVEL.equals(which)) { return ((Integer) this.parentLayoutContext .getParameter(Parameter.SCRIPTLEVEL)) + this.sizeOffset; } return this.parentLayoutContext.getParameter(which); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/context/Display.java0000644000175000017500000000170011335260526033002 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Display.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.context; /** * Possible values for the display attribute. * * @version $Revision: 8afef6dd0d58 $ */ public enum Display { /** * display as block. */ BLOCK, /** * display inline. */ INLINE, } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/ResourceEntityResolver.java0000644000175000017500000002241711335260526034427 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ResourceEntityResolver.java,v f7ce187232a8 2009/09/29 20:46:59 max $ */ package net.sourceforge.jeuclid; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import net.jcip.annotations.ThreadSafe; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; /** * Entity Resolver for standard MathML entities. *

* This class contains support for resolving all entities which are in the * default MathML namespaces. It currently has support for *

    *
  • MathML 1.0.1
  • *
  • OpenOffice MathML 1.0.1
  • *
  • MathML 2.0
  • *
* * @version $Revision: f7ce187232a8 $ */ @ThreadSafe public class ResourceEntityResolver implements EntityResolver { /** * The system ID for mathML. */ public static final String MML2_SYSTEMID = "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd"; /** * The public ID for mathML. */ public static final String MML2_PUBLICID = "-//W3C//DTD MathML 2.0//EN"; private static final String MML1_SYSTEMID_PATH = "http://www.w3.org/Math/DTD/mathml1"; private static final Map PUBLIC_ID_TO_INTERNAL = new HashMap(); private static final Map PUBLIC_ID_TO_SYSYEM = new HashMap(); /** * Default constructor. */ public ResourceEntityResolver() { // Empty on purpose. } /** {@inheritDoc} */ public InputSource resolveEntity(final String publicId, final String systemId) { InputSource retval = null; String mappedPath = ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .get(publicId); if ((mappedPath == null) && (systemId .startsWith(ResourceEntityResolver.MML1_SYSTEMID_PATH))) { mappedPath = "/net/sourceforge/jeuclid/mathml.1.0.1" + systemId .substring(ResourceEntityResolver.MML1_SYSTEMID_PATH .length()); } if (mappedPath != null) { retval = this.loadMappedResource(publicId, systemId, mappedPath); } return retval; } private InputSource loadMappedResource(final String publicId, final String systemId, final String mappedPath) { InputSource retval = null; final InputStream resourceStream = ResourceEntityResolver.class .getResourceAsStream(mappedPath); if (resourceStream != null) { retval = new InputSource(resourceStream); retval.setPublicId(publicId); String mappedSystemId = ResourceEntityResolver.PUBLIC_ID_TO_SYSYEM .get(publicId); if (mappedSystemId == null) { mappedSystemId = systemId; } retval.setSystemId(mappedSystemId); } return retval; } static { // CHECKSTYLE:OFF ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//OpenOffice.org//DTD Modified W3C MathML 1.01//EN", "/net/sourceforge/jeuclid/openoffice.mathml.1.0.1/math.dtd"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( ResourceEntityResolver.MML2_PUBLICID, "/net/sourceforge/jeuclid/mathml.2.0/mathml2.dtd"); ResourceEntityResolver.PUBLIC_ID_TO_SYSYEM.put( ResourceEntityResolver.MML2_PUBLICID, ResourceEntityResolver.MML2_SYSTEMID); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/xhtml-math11-f.dtd"); ResourceEntityResolver.PUBLIC_ID_TO_SYSYEM.put( "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN", "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES MathML 2.0 Qualified Names 1.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/mathml2-qname-1.mod"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Added Math Symbols: Arrow Relations for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsa.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Added Math Symbols: Binary Operators for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsb.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Added Math Symbols: Delimiters for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsc.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Added Math Symbols: Negated Relations for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsn.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Added Math Symbols: Ordinary for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamso.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Added Math Symbols: Relations for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isoamsr.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Greek Symbols for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isogrk3.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Math Alphabets: Fraktur for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isomfrk.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Math Alphabets: Open Face for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isomopf.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Math Alphabets: Script for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isomscr.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES General Technical for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso9573-13/isotech.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Box and Line Drawing for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isobox.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Russian Cyrillic for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isocyr1.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Non-Russian Cyrillic for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isocyr2.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Diacritical Marks for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isodia.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Added Latin 1 for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isolat1.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Added Latin 2 for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isolat2.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL .put( "-//W3C//ENTITIES Numeric and Special Graphic for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isonum.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Publishing for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/iso8879/isopub.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Extra for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/mathml/mmlextra.ent"); ResourceEntityResolver.PUBLIC_ID_TO_INTERNAL.put( "-//W3C//ENTITIES Aliases for MathML 2.0//EN", "/net/sourceforge/jeuclid/mathml.2.0/mathml/mmlalias.ent"); // CHECKSTYLE:ON } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/0000755000175000017500000000000011335260530031052 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/FreeHepInternalDetector.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/FreeHepInternalDet0000644000175000017500000001157711335260530034460 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FreeHepInternalDetector.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ package net.sourceforge.jeuclid.converter; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import net.sourceforge.jeuclid.elements.support.ClassLoaderSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.freehep.util.export.ExportFileType; /** * actual detector for FreeHEP graphics formats. Depends on the presence of * FreeHEP, hence the "internal". * * @version $Revision: 88b901bf20fb $ */ public final class FreeHepInternalDetector { /** * Logger for this class */ private static final Log LOGGER = LogFactory .getLog(FreeHepInternalDetector.class); private static final Map PLUGINS_CLASSES = new HashMap(); private FreeHepInternalDetector() { // Empty on purpose } /** * Actual detection and registration routine. * * @param registry * ConverterRegistry to use */ public static void actuallyDetectConversionPlugins( final ConverterRegistry registry) { for (final Map.Entry e : FreeHepInternalDetector.PLUGINS_CLASSES .entrySet()) { try { final Class infoClass = ClassLoaderSupport.getInstance() .loadClass(e.getKey()); final ExportFileType fileType = (ExportFileType) infoClass .getConstructor().newInstance(); final Class graphicsClass = ClassLoaderSupport.getInstance() .loadClass(e.getValue()); FreeHepInternalDetector.actuallyRegister(registry, fileType, graphicsClass); } catch (final NoSuchMethodException ex) { FreeHepInternalDetector.LOGGER.debug(ex); } catch (final ClassNotFoundException ex) { FreeHepInternalDetector.LOGGER.debug(ex); } catch (final IllegalArgumentException ex) { FreeHepInternalDetector.LOGGER.debug(ex); } catch (final SecurityException ex) { FreeHepInternalDetector.LOGGER.debug(ex); } catch (final InstantiationException ex) { FreeHepInternalDetector.LOGGER.debug(ex); } catch (final IllegalAccessException ex) { FreeHepInternalDetector.LOGGER.debug(ex); } catch (final InvocationTargetException ex) { FreeHepInternalDetector.LOGGER.debug(ex); } } } private static void actuallyRegister(final ConverterRegistry registry, final ExportFileType fileType, final Class graphicsClass) throws NoSuchMethodException { final ConverterPlugin freeHepConverter = new FreeHepConverter( graphicsClass); for (final String mimeType : fileType.getMIMETypes()) { for (final String suffix : fileType.getExtensions()) { registry.registerMimeTypeAndSuffix(mimeType, suffix, false); } registry.registerConverter(mimeType, freeHepConverter, false); } } static { FreeHepInternalDetector.PLUGINS_CLASSES.put( "org.freehep.graphicsio.emf.EMFExportFileType", "org.freehep.graphicsio.emf.EMFGraphics2D"); FreeHepInternalDetector.PLUGINS_CLASSES.put( "org.freehep.graphicsio.gif.GIFExportFileType", "org.freehep.graphicsio.gif.GIFGraphics2D"); FreeHepInternalDetector.PLUGINS_CLASSES.put( "org.freehep.graphicsio.pdf.PDFExportFileType", "org.freehep.graphicsio.pdf.PDFGraphics2D"); FreeHepInternalDetector.PLUGINS_CLASSES.put( "org.freehep.graphicsio.ps.PSExportFileType", "org.freehep.graphicsio.ps.PSGraphics2D"); FreeHepInternalDetector.PLUGINS_CLASSES.put( "org.freehep.graphicsio.svg.SVGExportFileType", "org.freehep.graphicsio.svg.SVGGraphics2D"); FreeHepInternalDetector.PLUGINS_CLASSES.put( "org.freehep.graphicsio.swf.SWFExportFileType", "org.freehep.graphicsio.swf.SWFGraphics2D"); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ConverterDetector.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ConverterDetector.0000644000175000017500000000263311335260530034520 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ConverterDetector.java,v 31460f6f5a3d 2009/04/09 08:06:13 maxberger $ */ package net.sourceforge.jeuclid.converter; /** * Interface for all Image Conversion Detectors. * * @version $Revision: 31460f6f5a3d $ */ public interface ConverterDetector { /** * Detects conversions available through this plugin and registers them * with the given registry. *

* The detector should only register the conversions which can be carried * out without Exceptions. The detection process itself should not throw * an exception either. If a detector cannot find the necessary classes, * it should register nothing. * * @param registry * ConverterRegistry to use. */ void detectConversionPlugins(final ConverterRegistry registry); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/package-info.java0000644000175000017500000000146211335260530034244 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v c19959677f4f 2007/08/20 12:09:31 maxberger $ */ /** An API for conversion from MathML to different output formats. */ package net.sourceforge.jeuclid.converter; ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/FreeHepDetector.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/FreeHepDetector.ja0000644000175000017500000000355011335260530034401 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FreeHepDetector.java,v 584e9b40f728 2009/04/09 07:41:44 maxberger $ */ package net.sourceforge.jeuclid.converter; import net.sourceforge.jeuclid.elements.support.ClassLoaderSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; /** * Detects if FreeHep is in the class path and registers it if its available. * * @version $Revision: 584e9b40f728 $ */ public final class FreeHepDetector implements ConverterDetector { /** * Logger for this class */ private static final Log LOGGER = LogFactory .getLog(FreeHepDetector.class); /** * Default constructor. */ public FreeHepDetector() { // Empty on purpose } /** * Detects if FreeHep is in the classpath. * * @param registry * ConverterRegisty to register with. */ public void detectConversionPlugins(final ConverterRegistry registry) { try { ClassLoaderSupport.getInstance().loadClass( "org.freehep.util.export.ExportFileType"); FreeHepInternalDetector.actuallyDetectConversionPlugins(registry); } catch (final ClassNotFoundException e) { FreeHepDetector.LOGGER.debug(e); } } } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/BatikDetector.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/BatikDetector.java0000644000175000017500000000755511335260530034455 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: BatikDetector.java,v 584e9b40f728 2009/04/09 07:41:44 maxberger $ */ package net.sourceforge.jeuclid.converter; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import net.sourceforge.jeuclid.elements.generic.JEuclidDOMImplementation; import net.sourceforge.jeuclid.elements.support.ClassLoaderSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.DOMImplementation; /** * Detects if Batik is in the class path and registers it if its available. * * @version $Revision: 584e9b40f728 $ */ public final class BatikDetector implements ConverterDetector { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(BatikDetector.class); /** * Default constructor. */ public BatikDetector() { // Empty on purpose } private static DOMImplementation findSVGDOMImplementation() { DOMImplementation impl; try { final Class svgdomimpl = ClassLoaderSupport.getInstance() .loadClass( "org.apache.batik.dom.svg.SVGDOMImplementation"); final Method getDOMimpl = svgdomimpl.getMethod( "getDOMImplementation", new Class[] {}); impl = (DOMImplementation) getDOMimpl.invoke(null, (Object[]) null); // CHECKSTYLE:OFF // In this case, ANY runtime exception must be caught, since batik // may not be available. } catch (final RuntimeException e) { // CHECKSYTLE:ON impl = null; } catch (final LinkageError e) { impl = null; } catch (final ClassNotFoundException e) { impl = null; } catch (final NoSuchMethodException e) { impl = null; } catch (final IllegalAccessException e) { impl = null; } catch (final InvocationTargetException e) { impl = null; } if (impl == null) { impl = JEuclidDOMImplementation.getInstance(); } return impl; } /** * Detects if Batik is in the classpath. * * @param registry * ConverterRegisty to register with. */ public void detectConversionPlugins(final ConverterRegistry registry) { try { ClassLoaderSupport.getInstance().loadClass( "org.apache.batik.svggen.SVGGraphics2D"); BatikDetector.LOGGER.debug("Batik detected!"); registry .registerMimeTypeAndSuffix( net.sourceforge.jeuclid.converter.Converter.TYPE_SVG, net.sourceforge.jeuclid.converter.Converter.EXTENSION_SVG, true); final DOMImplementation impl = BatikDetector .findSVGDOMImplementation(); if (impl != null) { registry.registerConverter( net.sourceforge.jeuclid.converter.Converter.TYPE_SVG, new BatikConverter(impl), true); } } catch (final ClassNotFoundException e) { BatikDetector.LOGGER.debug("Batik is not in classpath!"); } } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ConverterRegistry.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ConverterRegistry.0000644000175000017500000001346211335260530034561 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ConverterRegistry.java,v 5a7becda9147 2009/10/23 12:57:54 max $ */ package net.sourceforge.jeuclid.converter; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.Locale; import java.util.Map; import java.util.Set; import org.apache.xmlgraphics.util.Service; /** * A registry for image converters. * * @version $Revision: 5a7becda9147 $ */ public final class ConverterRegistry { private static final class SingletonHolder { private static final ConverterRegistry INSTANCE = new ConverterRegistry(); private SingletonHolder() { } } private final Map mimetype2converter = new HashMap(); private final Map mimetype2suffix = new HashMap(); private final Map suffix2mimetype = new HashMap(); /** * Default constructor. */ @SuppressWarnings("unchecked") protected ConverterRegistry() { final Iterator it = Service .providers(ConverterDetector.class); while (it.hasNext()) { final ConverterDetector det = it.next(); det.detectConversionPlugins(this); } } /** * Retrieve the default registry instance. * * @return the ConverterRegistry. */ public static ConverterRegistry getInstance() { return ConverterRegistry.SingletonHolder.INSTANCE; } /** * use {@link #getInstance()} instead. * * @return see {@link #getInstance()} * @deprecated use {@link #getInstance()} instead. */ @Deprecated public static ConverterRegistry getRegisty() { return ConverterRegistry.getInstance(); } /** * Retrieve a list of available mime types for conversion. * * @return a Set<String> containing all valid mime-types. */ public Set getAvailableOutfileTypes() { return this.mimetype2converter.keySet(); } /** * Retrieve a list of all available extensions. * * @return a list of available extensions. */ public Set getAvailableExtensions() { final Set extensions = new HashSet(); for (final Map.Entry e : this.suffix2mimetype .entrySet()) { if (this.mimetype2converter.containsKey(e.getValue())) { extensions.add(e.getKey()); } } return extensions; } /** * Returns the file suffix suitable for the given mime type. *

* This function is not fully implemented yet * * @param mimeType * a mimetype, as returned by {@link #getAvailableOutfileTypes()} * , or null if unknown. * @return the three letter suffix common for this type. */ public String getSuffixForMimeType(final String mimeType) { return this.mimetype2suffix.get(mimeType.toLowerCase(Locale.ENGLISH)); } /** * Returns the MimeType for a given suffix. * * @param suffix * the suffix, e.g. png, or null if unknown. * @return the mime-type */ public String getMimeTypeForSuffix(final String suffix) { return this.suffix2mimetype.get(suffix.toLowerCase(Locale.ENGLISH)); } /** * Registers a new MimeType and it's suffix. * * @param mimeType * the Mime-Type * @param suffix * The Suffix * @param primary * If true, old mappings will be overwritten. If false and a * mapping already exists, it will stay the same. */ public void registerMimeTypeAndSuffix(final String mimeType, final String suffix, final boolean primary) { final String lMimeType = mimeType.toLowerCase(Locale.ENGLISH); final String lSuffix = suffix.toLowerCase(Locale.ENGLISH); if (primary || !this.suffix2mimetype.containsKey(lSuffix)) { this.suffix2mimetype.put(lSuffix, lMimeType); } if (primary || !this.mimetype2suffix.containsKey(lMimeType)) { this.mimetype2suffix.put(lMimeType, lSuffix); } } /** * Registers a converter for the given mime type. * * @param mimeType * The mime type. * @param converter * The converter to register. * @param primary * Converter for this type. If true, old mappings will be * overwritten. If false and a mapping already exists, it will * stay the same. */ public void registerConverter(final String mimeType, final ConverterPlugin converter, final boolean primary) { if (primary || !this.mimetype2converter.containsKey(mimeType)) { this.mimetype2converter.put(mimeType, converter); } } /** * Retrieve the converter for a given mime-type. * * @param mimeType * the Mime-Type. * @return a Converter instance */ public ConverterPlugin getConverter(final String mimeType) { return this.mimetype2converter .get(mimeType.toLowerCase(Locale.ENGLISH)); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/Converter.java0000644000175000017500000002512211335260530033666 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Converter.java,v fb73652dbc06 2009/08/28 09:15:20 max $ */ package net.sourceforge.jeuclid.converter; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.MathMLParserSupport; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.converter.ConverterPlugin.DocumentWithDimension; import net.sourceforge.jeuclid.layout.JEuclidView; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.SAXException; /** * Generic converter which uses the registry to do its conversions. * * @version $Revision: fb73652dbc06 $ */ public final class Converter { /** * Mime type for SVG. */ public static final String TYPE_SVG = "image/svg+xml"; /** * File extension for SVG. */ public static final String EXTENSION_SVG = "svg"; private static final String UNSUPPORTED_OUTPUT_TYPE = "Unsupported output type: "; private static final int MAX_RGB_VALUE = 255; private static final class SingletonHolder { private static final Converter INSTANCE = new Converter(); private SingletonHolder() { } } /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(Converter.class); /** * Default constructor. */ protected Converter() { // Empty on purpose. } /** * Retrieve an instance of the converter singleton class. * * @return a Converter object. */ public static Converter getInstance() { return Converter.SingletonHolder.INSTANCE; } /** * @return Converter instance * @deprecated use {@link #getInstance()} instead. */ @Deprecated public static Converter getConverter() { return Converter.getInstance(); } /** * Converts an existing file from MathML or ODF to the given type. * * @param inFile * input file. * @param outFile * output file. * @param outFileType * mimetype for the output file. * @return Dimension of converted image upon success, null otherwise * @throws IOException * if an I/O error occurred during read or write. */ public Dimension convert(final File inFile, final File outFile, final String outFileType) throws IOException { final MutableLayoutContext params = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); return this.convert(inFile, outFile, outFileType, params); } /** * Converts an existing file from MathML or ODF to the given type. * * @param inFile * input file. * @param outFile * output file. * @param outFileType * mimetype for the output file. * @param params * rendering parameters. * @return Dimension of converted image upon success, null otherwise * @throws IOException * if an I/O error occurred during read or write. */ public Dimension convert(final File inFile, final File outFile, final String outFileType, final LayoutContext params) throws IOException { Document doc; try { doc = MathMLParserSupport.parseFile(inFile); return this.convert(doc, outFile, outFileType, params); } catch (final SAXException e) { Converter.LOGGER.error("Failed to parse file:" + inFile, e); return null; } } /** * Converts an existing document from MathML to the given type and store it * in a file. * * @param doc * input document. See * {@link net.sourceforge.jeuclid.DOMBuilder#DOMBuilder(Node, MathBase)} * for the list of valid node types. * @param outFile * output file. * @param outFileType * mimetype for the output file. * @param params * parameter set to use for conversion. * @return Dimension of converted image upon success, null otherwise * @throws IOException * if an I/O error occurred during read or write. */ public Dimension convert(final Node doc, final File outFile, final String outFileType, final LayoutContext params) throws IOException { final OutputStream outStream = new BufferedOutputStream( new FileOutputStream(outFile)); final Dimension result = this.convert(doc, outStream, outFileType, params); if (result == null) { if (!outFile.delete()) { Converter.LOGGER.debug("Could not delete " + outFile); } } else { // should be closed by wrapper image streams, but just in case... try { outStream.close(); } catch (final IOException e) { Converter.LOGGER.debug(e); } } return result; } /** * Converts an existing document from MathML to the given XML based type and * store it in a DOM document. * * @param doc * input document. See * {@link net.sourceforge.jeuclid.DOMBuilder#DOMBuilder(Node, MathBase)} * for the list of valid node types. * @param outFileType * mimetype for the output file. * @param params * parameter set to use for conversion. * @return an instance of Document, or the appropriate subtype for this * format (e.g. SVGDocument). If conversion is not supported to this * type, it may return null. */ public DocumentWithDimension convert(final Node doc, final String outFileType, final LayoutContext params) { final ConverterPlugin plugin = ConverterRegistry.getInstance() .getConverter(outFileType); DocumentWithDimension result = null; if (plugin != null) { result = plugin.convert(doc, params); } if (result == null) { Converter.LOGGER.fatal(Converter.UNSUPPORTED_OUTPUT_TYPE + outFileType); } return result; } /** * Converts an existing file from MathML or ODF to the given type. * * @param doc * input document. See * {@link net.sourceforge.jeuclid.DOMBuilder#DOMBuilder(Node, MathBase)} * for the list of valid node types. * @param outStream * output stream. * @param outFileType * mimetype for the output file. * @param params * parameter set to use for conversion. * @return Dimension of converted image upon success, null otherwise * @throws IOException * if an I/O error occurred during read or write. */ public Dimension convert(final Node doc, final OutputStream outStream, final String outFileType, final LayoutContext params) throws IOException { final ConverterPlugin plugin = ConverterRegistry.getInstance() .getConverter(outFileType); Dimension result = null; if (plugin == null) { Converter.LOGGER.fatal(Converter.UNSUPPORTED_OUTPUT_TYPE + outFileType); } else { try { result = plugin.convert(doc, params, outStream); } catch (final IOException ex) { Converter.LOGGER.fatal("Failed to process: " + ex.getMessage(), ex); } } return result; } /** * Renders a document into an image. * * @param node * Document / Node to render * @param context * LayoutContext to use. * @return the rendered image * @throws IOException * if an I/O error occurred. */ public BufferedImage render(final Node node, final LayoutContext context) throws IOException { return this.render(node, context, BufferedImage.TYPE_INT_ARGB); } /** * Renders a document into an image. * * @param node * Document / Node to render * @param context * LayoutContext to use. * @param imageType * ImageType as defined by {@link BufferedImage} * @return the rendered image * @throws IOException * if an I/O error occurred. */ public BufferedImage render(final Node node, final LayoutContext context, final int imageType) throws IOException { final Image tempimage = new BufferedImage(1, 1, imageType); final Graphics2D tempg = (Graphics2D) tempimage.getGraphics(); final JEuclidView view = new JEuclidView(node, context, tempg); final int width = Math.max(1, (int) Math.ceil(view.getWidth())); final int ascent = (int) Math.ceil(view.getAscentHeight()); final int height = Math.max(1, (int) Math.ceil(view.getDescentHeight()) + ascent); final BufferedImage image = new BufferedImage(width, height, imageType); final Graphics2D g = image.createGraphics(); final Color background; if (image.getColorModel().hasAlpha()) { background = new Color(Converter.MAX_RGB_VALUE, Converter.MAX_RGB_VALUE, Converter.MAX_RGB_VALUE, 0); } else { background = Color.WHITE; } g.setColor(background); g.fillRect(0, 0, width, height); g.setColor(Color.black); view.draw(g, 0, ascent); return image; } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ImageIOConverter.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ImageIOConverter.j0000644000175000017500000000502511335260530034371 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ImageIOConverter.java,v 916bcda78280 2009/08/28 09:32:36 max $ */ package net.sourceforge.jeuclid.converter; import java.awt.Dimension; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import javax.imageio.ImageWriter; import javax.imageio.stream.ImageOutputStream; import javax.imageio.stream.MemoryCacheImageOutputStream; import net.sourceforge.jeuclid.LayoutContext; import org.w3c.dom.Node; /** * supports conversion to standard Raster formats through ImageIO. * * @version $Revision: 916bcda78280 $ */ public class ImageIOConverter implements ConverterPlugin { private final ImageWriter writer; private final int colorModel; /** * Default constructor. * * @param iw * ImageWrite instance to use for this converter. * @param noAlpha * if true, this image format does not support alpha values. */ ImageIOConverter(final ImageWriter iw, final boolean noAlpha) { this.writer = iw; if (noAlpha) { this.colorModel = BufferedImage.TYPE_INT_RGB; } else { this.colorModel = BufferedImage.TYPE_INT_ARGB; } } /** {@inheritDoc} */ public Dimension convert(final Node doc, final LayoutContext context, final OutputStream outStream) throws IOException { final ImageOutputStream ios = new MemoryCacheImageOutputStream( outStream); final BufferedImage image = Converter.getInstance().render(doc, context, this.colorModel); synchronized (this.writer) { this.writer.setOutput(ios); this.writer.write(image); } ios.close(); return new Dimension(image.getWidth(), image.getHeight()); } /** {@inheritDoc} */ public DocumentWithDimension convert(final Node doc, final LayoutContext context) { return null; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/Processor.java0000644000175000017500000002005111335260530033672 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Processor.java,v 5a7becda9147 2009/10/23 12:57:54 max $ */ package net.sourceforge.jeuclid.converter; import java.io.IOException; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.converter.ConverterPlugin.DocumentWithDimension; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.generic.MathImpl; import net.sourceforge.jeuclid.parser.Parser; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; /** * Contains the actual processing routines. *

* To use this class obtain an instance of the Processor singleton instance. * Then use the {@link #process(Source, Result)} function to process your * Document. *

* This will replace all occurrences of MathML within fo:instream tags by the * equivalent SVG code. It will also add a baseline-shift attribute so that the * formula is in line with the rest of the text. * * @version $Revision: 5a7becda9147 $ */ public final class Processor { private static final class SingletonHolder { private static final Processor INSTANCE = new Processor(); private SingletonHolder() { } } /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(Processor.class); // private static final String NAMESPACE_HTML = // "http://www.w3.org/1999/xhtml"; private final Transformer transformer; /** * Default constructor. */ protected Processor() { Transformer t; try { t = TransformerFactory.newInstance().newTransformer(); } catch (final TransformerException e) { t = null; Processor.LOGGER.warn(e.getMessage()); assert false; } this.transformer = t; } /** * Retrieve the processor singleton object. * * @return the Processor. */ public static Processor getInstance() { return Processor.SingletonHolder.INSTANCE; } /** * use {@link #getInstance()} instead. * * @return see {@link #getInstance()} * @throws TransformerException * see {@link #getInstance()} * @deprecated use {@link #getInstance()} instead. */ @Deprecated public static Processor getProcessor() throws TransformerException { return Processor.getInstance(); } /** * Pre-process a .fo file. * * @param inputSource * Input File * @param result * Output File * @param context * LayoutContext. * @throws TransformerException * an error occurred during the processing. */ public void process(final Source inputSource, final Result result, final LayoutContext context) throws TransformerException { Processor.LOGGER.info("Processing " + inputSource.getSystemId() + " to " + result.getSystemId()); try { final Node doc = Parser.getInstance().parse(inputSource); this.processSubtree(doc, context); final DOMSource source = new DOMSource(doc); this.transformer.transform(source, result); } catch (final IOException e) { throw new TransformerException("IOException", e); } catch (final SAXException e) { throw new TransformerException("SAXException", e); } } /** * Pre-process a .fo file. * * @param inputSource * Input File * @param result * Output File * @throws TransformerException * an error occurred during the processing. */ public void process(final Source inputSource, final Result result) throws TransformerException { this.process(inputSource, result, LayoutContextImpl .getDefaultLayoutContext()); } private void processSubtree(final Node node, final LayoutContext context) { if (AbstractJEuclidElement.URI.equals(node.getNamespaceURI()) && MathImpl.ELEMENT.equals(node.getLocalName())) { final DocumentWithDimension svgdocdim = Converter .getInstance() .convert( node, net.sourceforge.jeuclid.converter.Converter.TYPE_SVG, context); final float baselinePercent = -(svgdocdim.getBaseline() / (float) svgdocdim .getDimension().getHeight()) * 100f; final Node parent = node.getParentNode(); if ("http://www.w3.org/1999/XSL/Format".equals(parent .getNamespaceURI()) && "instream-foreign-object".equals(parent.getLocalName())) { final Element pElement = (Element) parent; pElement .setAttribute("alignment-adjust", baselinePercent + "%"); } this.safeReplaceChild(parent, node, svgdocdim.getDocument() .getFirstChild()); } else { this.processChildren(node, context); // TODO: This is an IE-Fix, but does not work yet. // final Node parent = node.getParentNode(); // if ((parent != null) // && (Processor.NAMESPACE_HTML.equals(parent // .getNamespaceURI())) // && ("html".equals(parent.getLocalName())) // && ("head".equals(node.getLocalName()))) { // ((Element) parent).setAttribute("xmlns:svg", // "http://www.w3.org/2000/svg"); // final Document ownerDoc = node.getOwnerDocument(); // final Element objectElement = ownerDoc // .createElement("object"); // objectElement.setAttribute("id", "AdobeSVG"); // objectElement.setAttribute("classid", // "clsid:78156a80-c6a1-4bbf-8e6a-3cd390eeb4e2"); // node.appendChild(objectElement); // final ProcessingInstruction pi = ownerDoc // .createProcessingInstruction("import", // "namespace=\"svg\" implementation=\"#AdobeSVG\""); // node.appendChild(pi); // } } } private void safeReplaceChild(final Node parent, final Node oldChild, final Node newChild) { try { final DOMSource source = new DOMSource(newChild); final DOMResult result = new DOMResult(parent); this.transformer.transform(source, result); } catch (final TransformerException e) { Processor.LOGGER.warn("TranformerException: " + e.getMessage()); } parent.removeChild(oldChild); } private void processChildren(final Node node, final LayoutContext context) { final NodeList childList = node.getChildNodes(); if (childList != null) { for (int i = 0; i < childList.getLength(); i++) { final Node child = childList.item(i); this.processSubtree(child, context); } } } } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/BatikConverter.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/BatikConverter.jav0000644000175000017500000001004011335260530034471 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: BatikConverter.java,v 70597ba9d706 2008/02/18 19:42:05 maxberger $ */ package net.sourceforge.jeuclid.converter; import java.awt.Dimension; import java.io.IOException; import java.io.OutputStream; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.layout.JEuclidView; import org.apache.batik.svggen.SVGGeneratorContext; import org.apache.batik.svggen.SVGGraphics2D; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.DOMImplementation; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * supports conversion to SVG output through Batik. * * @version $Revision: 70597ba9d706 $ */ public class BatikConverter implements ConverterPlugin { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(BatikConverter.class); private final DOMImplementation domImplementation; BatikConverter(final DOMImplementation domImpl) { this.domImplementation = domImpl; } /** {@inheritDoc} */ public Dimension convert(final Node doc, final LayoutContext context, final OutputStream outStream) throws IOException { final DocumentWithDimension svgDocDim = this.convert(doc, context); if (svgDocDim != null) { try { final Transformer transformer = TransformerFactory .newInstance().newTransformer(); final DOMSource source = new DOMSource(svgDocDim .getDocument()); final StreamResult result = new StreamResult(outStream); transformer.transform(source, result); } catch (final TransformerException e) { BatikConverter.LOGGER.warn(e); } return svgDocDim.getDimension(); } return null; } /** {@inheritDoc} */ public DocumentWithDimension convert(final Node doc, final LayoutContext context) { Document document = null; final String svgNS = "http://www.w3.org/2000/svg"; document = this.domImplementation.createDocument(svgNS, "svg", null); if (document != null) { final SVGGeneratorContext svgContext = SVGGeneratorContext .createDefault(document); svgContext.setComment("Converted from MathML using JEuclid"); final SVGGraphics2D svgGenerator = new SVGGraphics2D(svgContext, true); final JEuclidView view = new JEuclidView(doc, context, svgGenerator); final int ascent = (int) Math.ceil(view.getAscentHeight()); final int descent = (int) Math.ceil(view.getDescentHeight()); final int height = ascent + descent; final int width = (int) Math.ceil(view.getWidth()); final Dimension size = new Dimension(width, height); svgGenerator.setSVGCanvasSize(size); view.draw(svgGenerator, 0, ascent); document.replaceChild(svgGenerator.getRoot(), document .getFirstChild()); return new DocumentWithDimension(document, new Dimension(width, height), descent); } return null; } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ImageIODetector.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ImageIODetector.ja0000644000175000017500000000501311335260530034331 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ImageIODetector.java,v 584e9b40f728 2009/04/09 07:41:44 maxberger $ */ package net.sourceforge.jeuclid.converter; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; import javax.imageio.ImageIO; import javax.imageio.ImageWriter; /** * Detects and registers the Converters from ImageIO. * * @version $Revision: 584e9b40f728 $ */ public final class ImageIODetector implements ConverterDetector { /** * Default constructor. */ public ImageIODetector() { // Empty on purpose } /** * Detects and registers all converters available through ImageIO. * * @param registry * ConverterRegistry to use. */ public void detectConversionPlugins(final ConverterRegistry registry) { final String[] mimeTypes = ImageIO.getWriterMIMETypes(); final Set noAlphaMimeTypes = new TreeSet(); noAlphaMimeTypes.add("image/jpeg"); noAlphaMimeTypes.add("image/bmp"); for (final String mimeType : mimeTypes) { final Iterator iwit = ImageIO .getImageWritersByMIMEType(mimeType); if (iwit != null) { while (iwit.hasNext()) { final ImageWriter iw = iwit.next(); final String[] suffixes = iw.getOriginatingProvider() .getFileSuffixes(); if (suffixes != null) { for (final String suffix : suffixes) { registry.registerMimeTypeAndSuffix(mimeType, suffix, false); } } registry.registerConverter(mimeType, new ImageIOConverter(iw, noAlphaMimeTypes .contains(mimeType)), false); } } } } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/FreeHepConverter.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/FreeHepConverter.j0000644000175000017500000000625711335260530034445 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FreeHepConverter.java,v 1d64d806165c 2009/04/09 07:17:07 maxberger $ */ package net.sourceforge.jeuclid.converter; import java.awt.Dimension; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.layout.JEuclidView; import org.freehep.graphics2d.VectorGraphics; import org.w3c.dom.Node; /** * Converter for output formats supported by FreeHEP. * * @version $Revision: 1d64d806165c $ */ public class FreeHepConverter implements ConverterPlugin { private final Constructor streamConst; @SuppressWarnings("unchecked") FreeHepConverter(final Class converterClass) throws NoSuchMethodException { this.streamConst = ((Class) converterClass) .getConstructor(OutputStream.class, Dimension.class); } /** {@inheritDoc} */ public Dimension convert(final Node doc, final LayoutContext context, final OutputStream outStream) throws IOException { final VectorGraphics tempg = this.createGraphics( new ByteArrayOutputStream(), new Dimension(1, 1)); final JEuclidView view = new JEuclidView(doc, context, tempg); final int ascent = (int) Math.ceil(view.getAscentHeight()); final Dimension size = new Dimension( (int) Math.ceil(view.getWidth()), (int) Math.ceil(view .getDescentHeight()) + ascent); final VectorGraphics g = this.createGraphics(outStream, size); g.setCreator("JEuclid (from MathML)"); g.startExport(); view.draw(g, 0, ascent); g.endExport(); return size; } /** {@inheritDoc} */ public DocumentWithDimension convert(final Node doc, final LayoutContext context) { return null; } private VectorGraphics createGraphics(final OutputStream os, final Dimension d) throws IOException { try { return this.streamConst.newInstance(os, d); } catch (final InvocationTargetException e) { throw new IOException(e.toString()); } catch (final IllegalArgumentException e) { throw new IOException(e.toString()); } catch (final InstantiationException e) { throw new IOException(e.toString()); } catch (final IllegalAccessException e) { throw new IOException(e.toString()); } } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ConverterPlugin.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/ConverterPlugin.ja0000644000175000017500000000643611335260530034525 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ConverterPlugin.java,v 70597ba9d706 2008/02/18 19:42:05 maxberger $ */ package net.sourceforge.jeuclid.converter; import java.awt.Dimension; import java.io.IOException; import java.io.OutputStream; import net.sourceforge.jeuclid.LayoutContext; import org.w3c.dom.Document; import org.w3c.dom.Node; /** * Describes an Image converter. * * @version $Revision: 70597ba9d706 $ */ public interface ConverterPlugin { /** * Write the given MathBase object with its rendering parameters into the * given output stream. * * @param doc * A JEuclid DocumentElement * @param outStream * Target output stream. * @param context * LayoutContext to use. * @return Rendering's dimension based on the spefic plugin's Graphics2D * implementation. * @throws IOException * if an I/O error occurred during write. */ Dimension convert(Node doc, LayoutContext context, OutputStream outStream) throws IOException; /** * Internal class describing an XML document and the dimensions of its * default view. */ class DocumentWithDimension { private final Document document; private final Dimension dimension; private final float baseline; public DocumentWithDimension(final Document doc, final Dimension dim, final float bline) { super(); this.document = doc; this.dimension = dim; this.baseline = bline; } /** * @return the document resulting from this conversion, a suptype of * Document (e.g. SVGDocument) if possible. */ public Document getDocument() { return this.document; } /** * @return The dimensions from this conversion */ public Dimension getDimension() { return this.dimension; } /** * @return the position of the baseline in pixels from the bottom. */ public float getBaseline() { return this.baseline; } } /** * Convert from the given Math Object to an XML DOM Document. * * @param doc * A JEuclid DocumentElement * @param context * LayoutContext to use. * @return an instance of DocumentWithDimension, containing a Document of * the appropriate subtype for this format (e.g. SVGDocument), if * available. If conversion is not supported by this plugin, it * may return null. */ DocumentWithDimension convert(final Node doc, final LayoutContext context); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/parser/0000755000175000017500000000000011335260530030337 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/parser/package-info.java0000644000175000017500000000143011335260530033524 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 5ee7019117a0 2007/07/04 18:38:14 maxberger $ */ /** * Contains Parsers for MathML Documents. */ package net.sourceforge.jeuclid.parser; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/parser/Parser.java0000644000175000017500000003236311335260530032445 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Parser.java,v 5a7becda9147 2009/10/23 12:57:54 max $ */ package net.sourceforge.jeuclid.parser; import java.io.BufferedInputStream; import java.io.FilterInputStream; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import java.lang.ref.Reference; import java.lang.ref.SoftReference; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Source; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import net.jcip.annotations.ThreadSafe; import net.sourceforge.jeuclid.ResourceEntityResolver; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.xmlgraphics.image.loader.ImageSource; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.xml.sax.ErrorHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; /** * A JAXP compatible approach to MathML Parsing. * * @version $Revision: 5a7becda9147 $ */ // CHECKSTYLE:OFF // This class is too complex. @ThreadSafe public final class Parser { // CHECKSTYLE:ON private static final class LoggerErrorHandler implements ErrorHandler { public LoggerErrorHandler() { // Empty on purpose } public void error(final SAXParseException exception) throws SAXException { Parser.LOGGER.warn(exception); } public void fatalError(final SAXParseException exception) throws SAXException { throw exception; } public void warning(final SAXParseException exception) throws SAXException { Parser.LOGGER.debug(exception); } } private static final class UnclosableInputStream extends FilterInputStream { protected UnclosableInputStream(final InputStream in) { super(in); } @Override public void close() throws IOException { // Do Nothing. } } /** * Detection buffer size. Rationale: After the first 128 bytes a XML file * and a ZIP file should be distinguishable. */ private static final int DETECTION_BUFFER_SIZE = 128; private static final String BAD_STREAM_SOURCE = "Bad StreamSource: "; private static final String CONTENT_XML = "content.xml"; private static final String CANNOT_HANDLE_SOURCE = "Cannot handle Source: "; private static final class SingletonHolder { private static final Parser INSTANCE = new Parser(); private SingletonHolder() { } } /** * Logger for this class. */ private static final Log LOGGER = LogFactory.getLog(Parser.class); private final Map> builders; /** * Default constructor. */ protected Parser() { this.builders = new ConcurrentHashMap>(); } private DocumentBuilder createDocumentBuilder() { DocumentBuilder documentBuilder; try { try { documentBuilder = this.tryCreateDocumentBuilder(true); } catch (final UnsupportedOperationException uoe) { Parser.LOGGER.debug("Unsupported Operation: " + uoe.getMessage()); documentBuilder = this.tryCreateDocumentBuilder(false); } catch (final ParserConfigurationException pce) { Parser.LOGGER.debug("ParserConfigurationException: " + pce.getMessage()); documentBuilder = this.tryCreateDocumentBuilder(false); } documentBuilder.setEntityResolver(new ResourceEntityResolver()); documentBuilder.setErrorHandler(new LoggerErrorHandler()); } catch (final ParserConfigurationException pce2) { Parser.LOGGER.warn("Could not create Parser: " + pce2.getMessage()); assert false : "Could not create Parser"; documentBuilder = null; } return documentBuilder; } private DocumentBuilder tryCreateDocumentBuilder(final boolean xinclude) throws ParserConfigurationException { final DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory .newInstance(); documentBuilderFactory.setNamespaceAware(true); if (xinclude) { documentBuilderFactory.setXIncludeAware(true); } final DocumentBuilder documentBuilder = documentBuilderFactory .newDocumentBuilder(); return documentBuilder; } /** * Retrieve the singleton Parser instance. * * @return a Parser object. */ public static Parser getInstance() { return Parser.SingletonHolder.INSTANCE; } /** * use {@link #getInstance()} instead. * * @return see {@link #getInstance()} * @throws ParserConfigurationException * see {@link #getInstance()} * @deprecated use {@link #getInstance()} instead. */ @Deprecated public static Parser getParser() throws ParserConfigurationException { return Parser.getInstance(); } /** * Parse a StreamSource and return its Document. *

* This method will auto-detect ODF or XML format and load an appropriate * parser. * * @param streamSource * A StreamSource. * @return A DOM Document representation for this source. * @throws SAXException * if a parse error occurred. * @throws IOException * if an I/O error occurred. */ public Document parseStreamSource(final StreamSource streamSource) throws SAXException, IOException { Document retVal = null; InputStream inputStream = streamSource.getInputStream(); if (inputStream != null) { // Alternative 1: Parse as XML, and fall back to ODF if (!inputStream.markSupported()) { inputStream = new BufferedInputStream(inputStream); } final InputStream filterInput = new UnclosableInputStream( inputStream); filterInput.mark(Parser.DETECTION_BUFFER_SIZE); try { retVal = this.parseStreamSourceAsXml(new StreamSource( filterInput)); inputStream.close(); } catch (final SAXParseException se) { filterInput.reset(); try { retVal = this.parseStreamSourceAsOdf(new StreamSource( filterInput)); } catch (final IOException io) { throw se; } inputStream.close(); } // Alternative 2: peek for ZIP magic and call matching parser. // final PushbackInputStream pi = new PushbackInputStream( // inputStream, 4); // final byte[] magic = new byte[4]; // pi.read(magic); // pi.unread(magic); // if ((magic[0] == 'P') && (magic[1] == 'K') && (magic[2] == 3) // && (magic[3] == 4)) { // retVal = this.parseStreamSourceAsOdf(streamSource); // } } if (retVal == null) { retVal = this.parseStreamSourceAsXml(streamSource); } return retVal; } /** * Parse a given StreamSource which represents an ODF document. * * @param streamSource * StreamSource to parse. * @return the Document contained within. * @throws SAXException * if a parse error occurred. * @throws IOException * if an I/O error occurred. */ public Document parseStreamSourceAsOdf(final StreamSource streamSource) throws IOException, SAXException { final InputStream is = streamSource.getInputStream(); if (is == null) { throw new IllegalArgumentException(Parser.BAD_STREAM_SOURCE + streamSource); } final ZipInputStream zipStream = new ZipInputStream(is); Document document = null; ZipEntry entry = zipStream.getNextEntry(); while (entry != null) { if (Parser.CONTENT_XML.equals(entry.getName())) { document = this.getDocumentBuilder().parse(zipStream); entry = null; } else { entry = zipStream.getNextEntry(); } } return document; } /** * Parse a given StreamSource which represents an XML document. * * @param streamSource * StreamSource to parse. * @return the Document contained within. * @throws SAXException * if a parse error occurred. * @throws IOException * if an I/O error occurred. */ public Document parseStreamSourceAsXml(final StreamSource streamSource) throws SAXException, IOException { InputSource inp = null; final String systemId = streamSource.getSystemId(); if (systemId != null) { inp = new InputSource(systemId); } final InputStream is = streamSource.getInputStream(); if ((inp == null) && (is != null)) { inp = new InputSource(is); } final Reader ir = streamSource.getReader(); if ((inp == null) && (ir != null)) { inp = new InputSource(ir); } if (inp == null) { throw new IllegalArgumentException(Parser.BAD_STREAM_SOURCE + streamSource); } return this.getDocumentBuilder().parse(inp); } /** * Retrieve a DocumentBuilder suitable for MathML parsing. *

* Please note: *

    *
  • There is one instance of the builder per thread.
  • *
  • The builder instance is not thread safe, so it may not be passed * among threads.
  • *
  • Multiple Threads may call getDocumentBuilder concurrently
  • *
* * @return a DocumentBuilder */ public DocumentBuilder getDocumentBuilder() { // Note: No synchronization needed, as id will be different for every // thread! final long id = Thread.currentThread().getId(); final Reference builderRef = this.builders.get(id); if (builderRef != null) { final DocumentBuilder builder = builderRef.get(); if (builder != null) { return builder; } } final DocumentBuilder builder = this.createDocumentBuilder(); this.builders.put(id, new SoftReference(builder)); return builder; } /** * Extract the top Node from a given Source. * * @param source * the Source to use. Currently supported are {@link DOMSource} , * {@link StreamSource} * @return the top NODE. * @throws SAXException * if a parse error occurred. * @throws IOException * if an I/O error occurred. */ public Node parse(final Source source) throws SAXException, IOException { final Node retVal; if (source instanceof StreamSource) { final StreamSource streamSource = (StreamSource) source; retVal = this.parseStreamSource(streamSource); } else if (source instanceof ImageSource) { final ImageSource imageSource = (ImageSource) source; final StreamSource streamSource = new StreamSource(imageSource .getInputStream()); retVal = this.parseStreamSource(streamSource); } else if (source instanceof DOMSource) { final DOMSource domSource = (DOMSource) source; retVal = domSource.getNode(); } else { try { final Transformer t = TransformerFactory.newInstance() .newTransformer(); final DOMResult r = new DOMResult(); t.transform(source, r); retVal = r.getNode(); } catch (final TransformerException e) { Parser.LOGGER.warn(e.getMessage()); throw new IllegalArgumentException(Parser.CANNOT_HANDLE_SOURCE + source, e); } } return retVal; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/DOMBuilder.java0000644000175000017500000001722411335260526031647 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: DOMBuilder.java,v 5a7becda9147 2009/10/23 12:57:54 max $ */ package net.sourceforge.jeuclid; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import net.jcip.annotations.GuardedBy; import net.jcip.annotations.ThreadSafe; import net.sourceforge.jeuclid.elements.generic.DocumentElement; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.DOMException; import org.w3c.dom.Document; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; import org.w3c.dom.Node; /** * Builds a MathML tree from a given DOM tree. * * @version $Revision: 5a7becda9147 $ */ @ThreadSafe public final class DOMBuilder { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(DOMBuilder.class); private static final class SingletonHolder { private static final DOMBuilder INSTANCE = new DOMBuilder(); private SingletonHolder() { } } @GuardedBy("itself") private final Transformer contentTransformer; @GuardedBy("itself") private final Transformer identityTransformer; @GuardedBy("itself") private final Transformer namespaceTransformer; /** * Default constructor. */ protected DOMBuilder() { this.identityTransformer = this.createIdentityTransformer(); this.contentTransformer = this.createTransformer( "/net/sourceforge/jeuclid/content/mathmlc2p.xsl", this.identityTransformer); this.namespaceTransformer = this.createTransformer( "/net/sourceforge/jeuclid/addMathMLNamespace.xsl", this.identityTransformer); } private Transformer createIdentityTransformer() { Transformer t; try { t = TransformerFactory.newInstance().newTransformer(); } catch (final TransformerException e) { DOMBuilder.LOGGER.warn(e.getMessage()); t = null; assert false; } return t; } private Transformer createTransformer(final String sourceFile, final Transformer fallback) { Transformer t; try { t = TransformerFactory.newInstance().newTemplates( new StreamSource(DOMBuilder.class .getResourceAsStream(sourceFile))).newTransformer(); } catch (final TransformerException e) { DOMBuilder.LOGGER.warn(e.getMessage()); t = fallback; } return t; } /** * @return the singleton instance of the DOMBuilder */ public static DOMBuilder getInstance() { return DOMBuilder.SingletonHolder.INSTANCE; } /** * use {@link #getInstance()} instead. * * @return see {@link #getInstance()} * @deprecated use {@link #getInstance()} instead. */ @Deprecated public static DOMBuilder getDOMBuilder() { return DOMBuilder.getInstance(); } /** * Constructs a builder with content math support. * * @param node * The MathML document. Can be an instance of Document, Element * or DocumentFragment with Element child * @return the parsed Document * @see #createJeuclidDom(Node, boolean) */ public DocumentElement createJeuclidDom(final Node node) { return this.createJeuclidDom(node, true); } /** * Constructs a builder. *

* This constructor needs a valid DOM Tree. To obtain a DOM tree, you may * use {@link MathMLParserSupport}. * * @param node * The MathML document. Can be an instance of Document, Element * or DocumentFragment with Element child * @param supportContent * if set to true, content Math will be supported. This impacts * performance. * @return the parsed Document * @see MathMLParserSupport */ public DocumentElement createJeuclidDom(final Node node, final boolean supportContent) { return this.createJeuclidDom(node, supportContent, false); } /** * Constructs a builder. *

* This constructor needs a valid DOM Tree. To obtain a DOM tree, you may * use {@link MathMLParserSupport}. * * @param node * The MathML document. Can be an instance of Document, Element * or DocumentFragment with Element child * @param supportContent * if set to true, content Math will be supported. This impacts * performance. * @param addNamespace * if set to true, the MathML namespace will be added to all * elements. * @return the parsed Document * @see MathMLParserSupport */ public DocumentElement createJeuclidDom(final Node node, final boolean supportContent, final boolean addNamespace) { Node documentElement; if (node instanceof Document) { documentElement = ((Document) node).getDocumentElement(); } else if (node instanceof Element) { documentElement = node; } else if (node instanceof DocumentFragment) { final Node child = node.getFirstChild(); if (!(child instanceof Element)) { throw new IllegalArgumentException( "Expected DocumentFragment with Element child"); } documentElement = child; } else { throw new IllegalArgumentException("Unsupported node: " + node + ". Expected either Document, Element or DocumentFragment"); } if (addNamespace) { documentElement = this.applyTransform(documentElement, this.namespaceTransformer); } final DocumentElement d; if (supportContent) { d = this.applyTransform(documentElement, this.contentTransformer); } else { d = this.applyTransform(documentElement, this.identityTransformer); } return d; } private DocumentElement applyTransform(final Node src, final Transformer transformer) { DocumentElement d; try { final DOMSource source = new DOMSource(src); d = new DocumentElement(); final DOMResult result = new DOMResult(d); synchronized (transformer) { transformer.transform(source, result); } } catch (final TransformerException e) { d = null; DOMBuilder.LOGGER.warn(e.getMessage()); } catch (final NullPointerException e) { d = null; // Happens if the stylesheet was not loaded correctly DOMBuilder.LOGGER.warn(e.getMessage()); } catch (final DOMException e) { d = null; DOMBuilder.LOGGER.warn(e.getMessage()); } return d; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/package-info.java0000644000175000017500000000162711335260530032240 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** * Entry point for JEuclid. *

This package contains classes which will be most frequently used * by 3rd party developers to add MathML functionality to their program.

*/ package net.sourceforge.jeuclid; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/0000755000175000017500000000000011335260530030360 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/TextObject.java0000644000175000017500000000534711335260530033307 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: TextObject.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.awt.Color; import java.awt.Graphics2D; import java.awt.font.TextLayout; import java.awt.geom.AffineTransform; /** * @version $Revision: 8afef6dd0d58 $ */ public class TextObject implements GraphicsObject { private final TextLayout layout; private final Color color; private final float xoffset; private final float yoffset; private final AffineTransform trans; /** * Default Constructor. * * @param textLayout * Text Layout. * @param xo * X-Offset * @param textColor * text color. */ public TextObject(final TextLayout textLayout, final float xo, final Color textColor) { assert textLayout != null; this.layout = textLayout; this.color = textColor; this.xoffset = xo; this.yoffset = 0.0f; this.trans = null; } /** * Constructor for more complex texts (operators). * * @param textLayout * Text Layout. * @param textColor * text color. * @param xo * X-Offset for drawing. * @param yo * Y-Offset for drawing. * @param transform * Transformation to apply before drawing. */ public TextObject(final TextLayout textLayout, final float xo, final float yo, final AffineTransform transform, final Color textColor) { assert textLayout != null; this.layout = textLayout; this.color = textColor; this.xoffset = xo; this.yoffset = yo; this.trans = transform; } /** {@inheritDoc} */ public void paint(final float x, final float y, final Graphics2D g) { g.setColor(this.color); final AffineTransform oldTrans = g.getTransform(); g.translate(x + this.xoffset, y + this.yoffset); if (this.trans != null) { g.transform(this.trans); } this.layout.draw(g, 0, 0); g.setTransform(oldTrans); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/FillRectObject.java0000644000175000017500000000327111335260530034061 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FillRectObject.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; /** * @version $Revision: 8afef6dd0d58 $ */ public class FillRectObject implements GraphicsObject { private final Color c; private final float a; private final float d; private final float w; /** * Default Constructor. * * @param ascent * Ascent. * @param descent * Descent. * @param width * Width. * @param color * Color. */ public FillRectObject(final Color color, final float ascent, final float descent, final float width) { this.c = color; this.a = ascent; this.d = descent; this.w = width; } /** {@inheritDoc} */ public void paint(final float x, final float y, final Graphics2D g) { g.setColor(this.c); g.fill(new Rectangle2D.Float(x, y - this.a, this.w, this.a + this.d)); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LayoutableNode.java0000644000175000017500000000401311335260530034130 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutableNode.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.util.List; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.elements.JEuclidNode; import org.w3c.dom.Node; /** * @version $Revision: 8afef6dd0d58 $ */ public interface LayoutableNode extends Node, JEuclidNode { /** * @return List of children to Layout. Normally, all children. */ List getChildrenToLayout(); /** * @return List of children to Draw. Normally, all children. */ List getChildrenToDraw(); /** * context insensitive layout. * * @param view * LayoutView to use. * @param info * LayoutInfo to manipulate. * @param childMinStage * minimum stage of children. Either STAGE1 or STAGE2. * @param context * LayoutContext for this element. */ void layoutStage1(LayoutView view, LayoutInfo info, LayoutStage childMinStage, LayoutContext context); /** * context sensitive layout. * * @param view * LayoutView to use. * @param info * LayoutInfo to manipulate. * @param context * LayoutContext for this element. */ void layoutStage2(LayoutView view, LayoutInfo info, LayoutContext context); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/GraphicsObject.java0000644000175000017500000000220711335260530034113 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: GraphicsObject.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.awt.Graphics2D; /** * @version $Revision: 8afef6dd0d58 $ */ public interface GraphicsObject { /** * Actually draw the object. * * @param x * X-offset of surrounding element. * @param y * Y-Offset of baseline of surrounding element. * @param g * Graphics Context. */ void paint(float x, float y, Graphics2D g); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LayoutInfoImpl.java0000644000175000017500000001407411335260530034144 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutInfoImpl.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.util.ArrayList; import java.util.List; /** * @version $Revision: 88b901bf20fb $ */ public class LayoutInfoImpl implements LayoutInfo { private LayoutStage layoutStage; private float ascentHeightS1; private float ascentHeightS2; private float descentHeightS1; private float descentHeightS2; private float horizontalS1; private float horizontalS2; private float widthS1; private float widthS2; private float posXS1; private float posXS2; private float posYS1; private float posYS2; private float stretchAscent = -1.0f; private float stretchDescent = -1.0f; private float stretchWidth = -1.0f; private final List graphicObjects; /** * Default Constructor. */ public LayoutInfoImpl() { this.layoutStage = LayoutStage.NONE; this.graphicObjects = new ArrayList(); } /** {@inheritDoc} */ public LayoutStage getLayoutStage() { return this.layoutStage; } /** {@inheritDoc} */ public void setLayoutStage(final LayoutStage newStage) { this.layoutStage = newStage; } /** {@inheritDoc} */ public float getAscentHeight(final LayoutStage stage) { if (LayoutStage.STAGE1.equals(stage)) { return this.ascentHeightS1; } else { return this.ascentHeightS2; } } /** {@inheritDoc} */ public float getDescentHeight(final LayoutStage stage) { if (LayoutStage.STAGE1.equals(stage)) { return this.descentHeightS1; } else { return this.descentHeightS2; } } /** {@inheritDoc} */ public float getHorizontalCenterOffset(final LayoutStage stage) { if (LayoutStage.STAGE1.equals(stage)) { return this.horizontalS1; } else { return this.horizontalS2; } } /** {@inheritDoc} */ public float getPosX(final LayoutStage stage) { if (LayoutStage.STAGE1.equals(stage)) { return this.posXS1; } else { return this.posXS2; } } /** {@inheritDoc} */ public float getPosY(final LayoutStage stage) { if (LayoutStage.STAGE1.equals(stage)) { return this.posYS1; } else { return this.posYS2; } } /** {@inheritDoc} */ public float getWidth(final LayoutStage stage) { if (LayoutStage.STAGE1.equals(stage)) { return this.widthS1; } else { return this.widthS2; } } /** {@inheritDoc} */ public void moveTo(final float x, final float y, final LayoutStage stage) { this.posXS2 = x; this.posYS2 = y; if (LayoutStage.STAGE1.equals(stage)) { this.posXS1 = x; this.posYS1 = y; } } /** {@inheritDoc} */ public void setAscentHeight(final float ascentHeight, final LayoutStage stage) { this.ascentHeightS2 = ascentHeight; if (LayoutStage.STAGE1.equals(stage)) { this.ascentHeightS1 = ascentHeight; } } /** {@inheritDoc} */ public void setDescentHeight(final float descentHeight, final LayoutStage stage) { this.descentHeightS2 = descentHeight; if (LayoutStage.STAGE1.equals(stage)) { this.descentHeightS1 = descentHeight; } } /** {@inheritDoc} */ public void setHorizontalCenterOffset(final float newOffset, final LayoutStage stage) { this.horizontalS2 = newOffset; if (LayoutStage.STAGE1.equals(stage)) { this.horizontalS1 = newOffset; } } /** {@inheritDoc} */ public void setWidth(final float width, final LayoutStage stage) { this.widthS2 = width; if (LayoutStage.STAGE1.equals(stage)) { this.widthS1 = width; } } /** {@inheritDoc} */ public void setGraphicsObject(final GraphicsObject graphicsObject) { this.graphicObjects.clear(); this.graphicObjects.add(graphicsObject); } /** {@inheritDoc} */ public List getGraphicObjects() { return this.graphicObjects; } /** {@inheritDoc} */ public float getStretchWidth() { return this.stretchWidth; } /** {@inheritDoc} */ public void setStretchWidth(final float newStretchWidth) { this.stretchWidth = newStretchWidth; } /** {@inheritDoc} */ public float getStretchAscent() { if (this.stretchAscent < 0.0f) { return this.ascentHeightS1; } else { return this.stretchAscent; } } /** {@inheritDoc} */ public float getStretchDescent() { if (this.stretchDescent < 0.0f) { return this.descentHeightS1; } else { return this.stretchDescent; } } /** {@inheritDoc} */ public void setStretchAscent(final float newStretchAscent) { this.stretchAscent = newStretchAscent; } /** {@inheritDoc} */ public void setStretchDescent(final float newStretchDescent) { this.stretchDescent = newStretchDescent; } /** {@inheritDoc} */ public void shiftVertically(final float offsetY, final LayoutStage stage) { this.posYS2 += offsetY; if (LayoutStage.STAGE1.equals(stage)) { this.posYS1 += offsetY; } } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LayoutView.java0000644000175000017500000000217011335260530033333 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutView.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.awt.Graphics2D; /** * @version $Revision: 8afef6dd0d58 $ */ public interface LayoutView { /** * Retrieve the Info object for a given child. * * @param child * the node * @return an LayoutInfo object. */ LayoutInfo getInfo(LayoutableNode child); /** * @return the Layout Graphics Context. */ Graphics2D getGraphics(); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/package-info.java0000644000175000017500000000210011335260530033540 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 3e8420cb6a41 2009/10/27 12:58:22 max $ */ /** * Contains the layout classes. * The classes in this package provide a generic method for layouting of * displayable objects. A node to be layouted must implement the * {@link LayoutableNode} * interface. The layout functions will then generate instances of * {@link GraphicsObject}. These can be drawn when the layout is completed. */ package net.sourceforge.jeuclid.layout; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LayoutInfo.java0000644000175000017500000001721111335260530033316 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutInfo.java,v 686a662dbcbe 2009/01/28 09:11:26 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.util.List; /** * Represented Information about a layouted object. *

* * The completeness of this information depends on the objects * {@link LayoutStage}. *

* Each object is described with: *

    *
  • Origin: {@link #getPosX(LayoutStage)}, {@link #getPosY(LayoutStage)}) *
  • Horizontal Size: {@link #getWidth(LayoutStage)}) *
  • Vertical Size: {@link #getAscentHeight(LayoutStage)}, * {@link #getDescentHeight(LayoutStage)} *
*

* Coordinates are given relative to the baseline. If the object has no * descent, this means the origin of the object is the lower left corner. *

* The actual Graphical representation can be retrieved with * {@link #getGraphicObjects()}. *

* The stretch information ( {@link #getStretchAscent()}, * {@link #getStretchDescent()}, {@link #getStretchWidth()}) is set during the * parents layout and defines the size to which stretchable operators are * scaled to. * * @version $Revision: 686a662dbcbe $ */ public interface LayoutInfo { /** * The {@link LayoutStage} this element represents. The information will * not be complete until the final LayoutStage ({@link LayoutStage#STAGE2} * ) has been reached. * * @return current layout stage. */ LayoutStage getLayoutStage(); /** * @param newStage * new Layout Stage. */ void setLayoutStage(LayoutStage newStage); /** * Returns the current height of the upper part of this component from the * baseline. * * @return Height of the upper part * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ float getAscentHeight(LayoutStage stage); /** * Returns the current height of the lower part of this component from the * baseline. * * @return Height of the lower part. * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ float getDescentHeight(LayoutStage stage); /** * Returns the current width of this element. * * @return Width of this element. * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ float getWidth(LayoutStage stage); /** * Retrieve the X-position of the horizontal center of the content. In * most cases, this will be width / 2. This does not, however, take extra * borders into account. An element may have different border width on * left and right, in which case the center will be moved. * * @return X-position of the center of the content * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ float getHorizontalCenterOffset(LayoutStage stage); /** * @param newOffset * new horizontal offset. * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ void setHorizontalCenterOffset(float newOffset, LayoutStage stage); /** * Retrieve the X position of this element relative to its parent. * * @return X position * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ float getPosX(LayoutStage stage); /** * Retrieve the Y position of this element relative to its parent. * * @return Y position * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ float getPosY(LayoutStage stage); /** * Move this element to the given position relative to its parent. * * @param x * new X position * @param y * new Y position * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ void moveTo(float x, float y, LayoutStage stage); /** * Shift vertically by given offset. * * @param offsetY * offset to shift. * @param stage * Stage to manipulate. */ void shiftVertically(float offsetY, LayoutStage stage); /** * @param ascentHeight * new ascentHeight. * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ void setAscentHeight(float ascentHeight, LayoutStage stage); /** * @param descentHeight * new descentHeight. * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ void setDescentHeight(float descentHeight, LayoutStage stage); /** * @param width * new width. * @param stage * {@link LayoutStage} to get this information for (either * {@link LayoutStage#STAGE1} or {@link LayoutStage#STAGE2}) */ void setWidth(float width, LayoutStage stage); /** * Set the stretch width for children, or < 0 if children should be * horizontally unstretched. * * @param stretchWidth * new stretch width */ void setStretchWidth(float stretchWidth); /** * Retrieve the stretch width if set, or STAGE1.width if unset. * * @return stretch width. */ float getStretchWidth(); /** * Set the stretch descent for children. Defaults to STAGE1.descent * * @param stretchDescent * new stretch descent */ void setStretchDescent(float stretchDescent); /** * Retrieve the stretch descent if set, or STAGE1.descent if unset. * * @return stretch descent. */ float getStretchDescent(); /** * Set the stretch ascent for children. Defaults to STAGE1.ascent * * @param stretchAscent * new stretch ascent */ void setStretchAscent(float stretchAscent); /** * Retrieve the stretch ascent if set, or STAGE1.ascent if unset. * * @return stretch ascent. */ float getStretchAscent(); /** * @param graphicsObject * the GraphicsObject to set. */ void setGraphicsObject(GraphicsObject graphicsObject); /** * @return Graphic objects associated with this node. */ List getGraphicObjects(); } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LayoutableDocument.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LayoutableDocument.ja0000644000175000017500000000161711335260530034501 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutableDocument.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ package net.sourceforge.jeuclid.layout; import org.w3c.dom.views.DocumentView; /** * @version $Revision: 8afef6dd0d58 $ */ public interface LayoutableDocument extends DocumentView, LayoutableNode { } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LayoutStage.java0000644000175000017500000000277511335260530033477 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutStage.java,v 686a662dbcbe 2009/01/28 09:11:26 maxberger $ */ package net.sourceforge.jeuclid.layout; /** * Defines in what stage the current layout it. *

* The Stages are {@link #NONE}, {@link #STAGE1}, and {@link #STAGE2}. * * @version $Revision: 686a662dbcbe $ */ public enum LayoutStage { /** * No layout done yet. *

* The {@link LayoutInfo} will not contain any useful information. */ NONE, /** * Context-Insensitive Layout. *

* A Node in this stage has been layouted based on its own information and * on the information of its children. The {@link LayoutInfo} is useful to * do calculations such as stretching of parentheses. */ STAGE1, /** * Full layout. *

* A node in this stage has been fully layouted, the {@link LayoutInfo} is * current and final. */ STAGE2, } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/LineObject.java0000644000175000017500000000677711335260530033262 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LineObject.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */ package net.sourceforge.jeuclid.layout; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Stroke; import java.awt.geom.Line2D; /** * @version $Revision: 88b901bf20fb $ */ public class LineObject implements GraphicsObject { private final float x1; private final float y1; private final float x2; private final float y2; private final float width; private final Color col; private final boolean dash; /** * Default Constructor. * * @param color * Color of the line. * @param lineWidth * StrokeWidth of the line. * @param offsetY * Y Offset from baseline. * @param offsetX * X Offset from left. * @param offsetY2 * Y2 Offset from baseline. * @param offsetX2 * X2 Offset from left. */ public LineObject(final float offsetX, final float offsetY, final float offsetX2, final float offsetY2, final float lineWidth, final Color color) { this.x1 = offsetX; this.y1 = offsetY; this.x2 = offsetX2; this.y2 = offsetY2; this.width = lineWidth; this.col = color; this.dash = false; } /** * Default Constructor. * * @param color * Color of the line. * @param lineWidth * StrokeWidth of the line. * @param offsetY * Y Offset from baseline. * @param offsetX * X Offset from left. * @param offsetY2 * Y2 Offset from baseline. * @param offsetX2 * X2 Offset from left. * @param dashed * if true line is dashed instead of solid. */ public LineObject(final float offsetX, final float offsetY, final float offsetX2, final float offsetY2, final float lineWidth, final Color color, final boolean dashed) { this.x1 = offsetX; this.y1 = offsetY; this.x2 = offsetX2; this.y2 = offsetY2; this.width = lineWidth; this.col = color; this.dash = dashed; } /** {@inheritDoc} */ public void paint(final float x, final float y, final Graphics2D g) { g.setColor(this.col); final Stroke oldStroke = g.getStroke(); if (this.dash) { final float dashWidth = 3.0f * this.width; g.setStroke(new BasicStroke(this.width, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL, this.width, new float[] { dashWidth, dashWidth, }, 0)); } else { g.setStroke(new BasicStroke(this.width)); } g.draw(new Line2D.Float(x + this.x1, y + this.y1, x + this.x2, y + this.y2)); g.setStroke(oldStroke); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/layout/JEuclidView.java0000644000175000017500000003247411335260530033407 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidView.java,v 96bf1edada57 2009/12/11 10:37:31 max $ */ package net.sourceforge.jeuclid.layout; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import net.sourceforge.jeuclid.DOMBuilder; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.elements.presentation.token.Mo; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.w3c.dom.events.Event; import org.w3c.dom.events.EventListener; import org.w3c.dom.events.EventTarget; import org.w3c.dom.views.AbstractView; import org.w3c.dom.views.DocumentView; /** * @version $Revision: 96bf1edada57 $ */ public class JEuclidView implements AbstractView, LayoutView, EventListener { private final LayoutableDocument document; private final Map layoutMap; private final LayoutContext context; private final Graphics2D graphics; /** * Default Constructor. * * @param node * document to layout. * @param layoutGraphics * Graphics context to use for layout calculations. This should * be compatible to the context used for painting, but does not * have to be the same. * @param layoutContext * layoutContext to use. */ public JEuclidView(final Node node, final LayoutContext layoutContext, final Graphics2D layoutGraphics) { if (node instanceof LayoutableDocument) { this.document = (LayoutableDocument) node; } else { this.document = DOMBuilder.getInstance().createJeuclidDom(node, true, true); } this.graphics = layoutGraphics; this.context = layoutContext; this.layoutMap = new HashMap(); } /** {@inheritDoc} */ public DocumentView getDocument() { return this.document; } /** * Draw this view onto a Graphics context. * * @param x * x-offset for left edge * @param y * y-offset for baseline * @param g * Graphics context for painting. Should be compatible to the * context used during construction, but does not have to be the * same. */ public void draw(final Graphics2D g, final float x, final float y) { this.layout(); final RenderingHints hints = g.getRenderingHints(); if ((Boolean) (this.context.getParameter(Parameter.ANTIALIAS))) { hints.add(new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON)); } hints.add(new RenderingHints(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_NORMALIZE)); hints.add(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY)); g.setRenderingHints(hints); final boolean debug = (Boolean) (this.context .getParameter(Parameter.DEBUG)); this.drawNode(this.document, g, x, y, debug); } private void drawNode(final LayoutableNode node, final Graphics2D g, final float x, final float y, final boolean debug) { final LayoutInfo myInfo = this.getInfo(node); if (debug) { final float x1 = x; final float x2 = x + myInfo.getWidth(LayoutStage.STAGE2); final float y1 = y - myInfo.getAscentHeight(LayoutStage.STAGE2); final float y2 = y + myInfo.getDescentHeight(LayoutStage.STAGE2); g.setColor(Color.BLUE); g.draw(new Line2D.Float(x1, y1, x2, y1)); g.draw(new Line2D.Float(x1, y1, x1, y2)); g.draw(new Line2D.Float(x2, y1, x2, y2)); g.draw(new Line2D.Float(x1, y2, x2, y2)); g.setColor(Color.RED); g.draw(new Line2D.Float(x1, y, x2, y)); } for (final GraphicsObject go : myInfo.getGraphicObjects()) { go.paint(x, y, g); } for (final LayoutableNode child : node.getChildrenToDraw()) { final LayoutInfo childInfo = this.getInfo(child); this.drawNode(child, g, x + childInfo.getPosX(LayoutStage.STAGE2), y + childInfo.getPosY(LayoutStage.STAGE2), debug); } } private LayoutInfo layout() { return this.layout(this.document, LayoutStage.STAGE2, this.context); } private LayoutInfo layout(final LayoutableNode node, final LayoutStage toStage, final LayoutContext parentContext) { final LayoutInfo info = this.getInfo(node); if (node instanceof EventTarget) { final EventTarget evtNode = (EventTarget) node; evtNode.addEventListener("DOMSubtreeModified", this, false); evtNode.addEventListener(Mo.MOEVENT, this, false); } if (LayoutStage.NONE.equals(info.getLayoutStage())) { LayoutStage childMinStage = LayoutStage.STAGE2; int count = 0; for (final LayoutableNode l : node.getChildrenToLayout()) { final LayoutInfo in = this.layout(l, LayoutStage.STAGE1, node .getChildLayoutContext(count, parentContext)); count++; if (LayoutStage.STAGE1.equals(in.getLayoutStage())) { childMinStage = LayoutStage.STAGE1; } } node.layoutStage1(this, info, childMinStage, parentContext); } if (LayoutStage.STAGE1.equals(info.getLayoutStage()) && LayoutStage.STAGE2.equals(toStage)) { int count = 0; for (final LayoutableNode l : node.getChildrenToLayout()) { this.layout(l, LayoutStage.STAGE2, node.getChildLayoutContext( count, parentContext)); count++; } node.layoutStage2(this, info, parentContext); } return info; } /** {@inheritDoc} */ public LayoutInfo getInfo(final LayoutableNode node) { if (node == null) { return null; } LayoutInfo info = this.layoutMap.get(node); if (info == null) { info = new LayoutInfoImpl(); this.layoutMap.put(node, info); } return info; } /** * @return width of this view. */ public float getWidth() { final LayoutInfo info = this.layout(); return info.getWidth(LayoutStage.STAGE2); } /** * @return ascent height. */ public float getAscentHeight() { final LayoutInfo info = this.layout(); return info.getAscentHeight(LayoutStage.STAGE2); } /** * @return descent height. */ public float getDescentHeight() { final LayoutInfo info = this.layout(); return info.getDescentHeight(LayoutStage.STAGE2); } /** {@inheritDoc} */ public Graphics2D getGraphics() { return this.graphics; } /** {@inheritDoc} */ public void handleEvent(final Event evt) { final EventTarget origin = evt.getCurrentTarget(); if (origin instanceof LayoutableNode) { final LayoutableNode lorigin = (LayoutableNode) origin; final LayoutInfo info = this.getInfo(lorigin); info.setLayoutStage(LayoutStage.NONE); } } /** * Data structure for storing a {@link Node} along with its rendering * boundary ({@link Rectangle2D}). */ public static final class NodeRect { private final Node node; private final Rectangle2D rect; private NodeRect(final Node n, final Rectangle2D r) { this.node = n; this.rect = r; } /** * @return The Node this rectangle refers to. */ public Node getNode() { return this.node; } /** * @return The rendering boundary. */ public Rectangle2D getRect() { return this.rect; } /** {@inheritDoc} */ @Override public String toString() { final StringBuilder b = new StringBuilder(); b.append(this.node).append('/').append(this.rect); return b.toString(); } } /** * Get the node and rendering information from a mouse position. * * @param x * x-coord * @param y * y-coord * @param offsetX * starting x position offset * @param offsetY * starting y position offset * @return list of nodes with rendering information */ public List getNodesAt(final float x, final float y, final float offsetX, final float offsetY) { this.layout(); final List nodes = new LinkedList(); this.getNodesAtRec(x, y, offsetX, offsetY, this.document, nodes); return nodes; } /** * Check whether the given mouse position (with given offset) is in the * rendering area of the given node - if so, append it to the nodes list * * @param x * x-coord * @param y * y-coord * @param offsetX * x position offset to node * @param offsetY * y position offset to node * @param node * node to check * @param nodesSoFar * vector of nodes so far */ private void getNodesAtRec(final float x, final float y, final float offsetX, final float offsetY, final Node node, final List nodesSoFar) { if (node instanceof LayoutableNode) { final LayoutInfo info = this.layoutMap.get(node); // this will be STAGE2 final LayoutStage stage = info.getLayoutStage(); // find top-left corner of rendering area for this node final float infoX = info.getPosX(stage) + offsetX; final float infoY = info.getPosY(stage) + offsetY - info.getAscentHeight(stage); // create rectangle of rendered node area final Rectangle2D.Float rect = new Rectangle.Float(infoX, infoY, info.getWidth(stage), info.getAscentHeight(stage) + info.getDescentHeight(stage)); // record node and rectangle if it contains the mouse position if (rect.contains(x, y)) { nodesSoFar.add(new NodeRect(node, rect)); // recurse on child nodes final NodeList nodeList = node.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { this.getNodesAtRec(x, y, infoX, infoY + info.getAscentHeight(stage), nodeList.item(i), nodesSoFar); } } } } /** * Gets the absolute Bounds for a given node and offset. May return null if * the node could not be found. * * @param offsetX * x position offset to node * @param offsetY * y position offset to node * * @param node * A layoutable node which was layouted in the current view. * @return the rectangle with the absolute bounds or null if the given node * was not layouted in this view. * */ public Rectangle2D getRect(final float offsetX, final float offsetY, final LayoutableNode node) { this.layout(); final LayoutInfo info = this.layoutMap.get(node); final Rectangle2D retVal; if (info == null) { retVal = null; } else { LayoutableNode recNode = node; float recInfoX = info.getPosX(LayoutStage.STAGE2) + offsetX; float recInfoY = info.getPosY(LayoutStage.STAGE2) + offsetY - info.getAscentHeight(LayoutStage.STAGE2); while (recNode.getParentNode() instanceof LayoutableNode) { recNode = (LayoutableNode) recNode.getParentNode(); final LayoutInfo recInfo = this.layoutMap.get(recNode); recInfoX = recInfoX + recInfo.getPosX(LayoutStage.STAGE2); recInfoY = recInfoY + recInfo.getPosY(LayoutStage.STAGE2); } retVal = new Rectangle.Float(recInfoX, recInfoY, info .getWidth(LayoutStage.STAGE2), info .getAscentHeight(LayoutStage.STAGE2) + info.getDescentHeight(LayoutStage.STAGE2)); } return retVal; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/MathMLSerializer.java0000644000175000017500000001126611335260526033075 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathMLSerializer.java,v 02abc0c8a7d0 2009/10/23 12:50:44 max $ */ package net.sourceforge.jeuclid; import java.io.StringWriter; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import net.jcip.annotations.ThreadSafe; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.w3c.dom.Node; /** * Utility class to serialize DOM documents back into Strings. *

* This class can be used to generate String representations for an existing DOM * Tree. The functionality is not restricted to JEuclid, and can be used for * other DOM trees as well. In this case, you should set the addDoctype * parameter to false. * * @version $Revision: 02abc0c8a7d0 $ */ @ThreadSafe public final class MathMLSerializer { /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(MathMLSerializer.class); private MathMLSerializer() { // empty on purpose } /** * Serialize a document back into a String. * * @param doc * a DOM model of a document, or a node in a document * @param addDoctype * if true, extra attributes such as docType will be set. This * ensures maximum MathML compatibility. Use only with MathML DOM * trees. * @param format * if true, result will be nicely formatted. * @return the document serialized to a string * @see #serializeDocument(Node, boolean, boolean, boolean) */ public static String serializeDocument(final Node doc, final boolean addDoctype, final boolean format) { return MathMLSerializer.serializeDocument(doc, addDoctype, format, false); } /** * Serialize a document back into a String. * * @param doc * a DOM model of a document. * @param addDoctype * if true, extra attributes such as docType will be set. This * ensures maximum MathML compatibility. Use only with MathML DOM * trees. * @param format * if true, result will be nicely formatted. * @param omitXMLDecl * if true, there will be no XML declaration. * @return the document serialized to a string */ public static String serializeDocument(final Node doc, final boolean addDoctype, final boolean format, final boolean omitXMLDecl) { final StringWriter writer = new StringWriter(); try { final Transformer transformer = TransformerFactory.newInstance() .newTransformer(); final DOMSource source = new DOMSource(doc); final StreamResult result = new StreamResult(writer); if (addDoctype) { transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, ResourceEntityResolver.MML2_PUBLICID); transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, ResourceEntityResolver.MML2_SYSTEMID); transformer.setOutputProperty(OutputKeys.MEDIA_TYPE, Constants.MATHML_MIMETYPE); } MathMLSerializer.boolToProperty(format, OutputKeys.INDENT, transformer); MathMLSerializer.boolToProperty(omitXMLDecl, OutputKeys.OMIT_XML_DECLARATION, transformer); transformer.transform(source, result); } catch (final TransformerException e) { MathMLSerializer.LOGGER.warn(e.getMessage(), e); } return writer.toString(); } private static void boolToProperty(final boolean bool, final String key, final Transformer transformer) { if (bool) { transformer.setOutputProperty(key, "yes"); } else { transformer.setOutputProperty(key, "no"); } } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/MathMLParserSupport.java0000644000175000017500000001125011335260526033606 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathMLParserSupport.java,v 96cb88e4e122 2008/08/28 12:30:05 maxberger $ */ package net.sourceforge.jeuclid; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.stream.StreamSource; import net.jcip.annotations.ThreadSafe; import net.sourceforge.jeuclid.parser.Parser; import org.w3c.dom.Document; import org.xml.sax.SAXException; /** * Utility class for the support parsing MathML and OpenDocument Formula (ODF) * files. *

* This class supports parsing of files that are either MathML or OpenDocument * Formula (ODF) files. It also supports parsing MathML from a given text * string. * * @version $Revision: 96cb88e4e122 $ */ @ThreadSafe public final class MathMLParserSupport { /** * Logger for this class */ // private static final Log LOGGER = LogFactory // .getLog(MathMLParserSupport.class); private MathMLParserSupport() { } /** * Creates a DocumentBuilder that can be used to parse MathML documents * into a standard DOM model. * * @return a DocumentBuilder instance that is configured for MathML * @throws ParserConfigurationException * if the builder could not be configured properly. */ public static DocumentBuilder createDocumentBuilder() throws ParserConfigurationException { final DocumentBuilder builder = Parser.getInstance() .getDocumentBuilder(); return builder; } /** * Parse an input stream in MathML XML format. * * @param inStream * the stream to parse. * @return the DOM Tree * @throws SAXException * if a parse error occurs. * @throws IOException * if a read I/O error occurs. */ public static Document parseInputStreamXML(final InputStream inStream) throws SAXException, IOException { return Parser.getInstance().parseStreamSourceAsXml( new StreamSource(inStream)); } /** * Parse an input stream in ODF format. * * @param inStream * the stream to parse. * @return the DOM Tree * @throws SAXException * if a parse error occurs. * @throws IOException * if a read I/O error occurs. */ public static Document parseInputStreamODF(final InputStream inStream) throws SAXException, IOException { return Parser.getInstance().parseStreamSourceAsOdf( new StreamSource(inStream)); } /** * Parse an input file and return the DOM tree. *

* This function will auto-detect if the given input is in MathML or ODF * format. * * @param inFile * the file to parse. * @return the DOM Tree * @throws SAXException * if a parse error occurs. * @throws IOException * if a read I/O error occurs. */ public static Document parseFile(final File inFile) throws SAXException, IOException { return Parser.getInstance().parseStreamSource( new StreamSource(new FileInputStream(inFile))); } /** * Create a DOM Document from a given string containing MathML content. * This function uses a DOM Parser configured for MathML. * * @param content * A String containing MathML. * @return a DOM Document. * @throws SAXException * a parsing error occurred. * @throws ParserConfigurationException * a configuration error occurred. * @throws IOException * for any other IO exception. */ public static Document parseString(final String content) throws SAXException, ParserConfigurationException, IOException { return Parser.getInstance().parseStreamSourceAsXml( new StreamSource(new StringReader(content))); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/MutableLayoutContext.java0000644000175000017500000000226011335260526034047 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MutableLayoutContext.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid; import net.sourceforge.jeuclid.context.Parameter; /** * @version $Revision: 03dc0884e86f $ */ public interface MutableLayoutContext extends LayoutContext { /** * Set a layout Parameter. * * @param which * the parameter to set * @param newValue * the new Value for this parameter. * @return itself for convenience. */ LayoutContext setParameter(Parameter which, Object newValue); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/font/0000755000175000017500000000000011335260530030011 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/font/FontFactory.java0000644000175000017500000001141011335260530033107 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FontFactory.java,v e6bd6c2d9bf4 2008/11/28 15:02:26 maxberger $ */ package net.sourceforge.jeuclid.font; import java.awt.Font; import java.awt.FontFormatException; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Set; /** * Abstract factory to be used to create instances of java.awt.Font. The * rationale behind this approach is that out-of-the box there is no way in * java platform to load and register and internal font. In other * words, Font.createFont and Font's constructor are not aware of each other. *

* The abstract FontFactory just provides a centralized access and extension * point, delegating the actual functionality to subclasses. *

* How a concrete subclass of FontFactory is identified is subject to change * in the future versions. * * @version $Revision: e6bd6c2d9bf4 $ */ public abstract class FontFactory { /** Name for the default (sans serif) font. */ public static final String SANSSERIF = "sansserif"; private static FontFactory instance = new DefaultFontFactory(); /** * Return an instance of the currently configured concrete FontFactory. * * @return an instance of FontFactory */ public static FontFactory getInstance() { return FontFactory.instance; } /** * Create a font object with specified properties. Font name may refer to * either 'built-in' or loaded externally and 'cached' font. * * @param name * font name or font family name * @param style * font style * @param size * font size * @return Font instance * @see java.awt.Font#Font(String, int, int) */ public abstract Font getFont(final String name, final int style, final float size); /** * Create a font object which is able to display the requested code point. * Uses one of the list of preferred fonts is possible. If no matching * font is found null is returned. * * @param preferredFonts * List of preferred fonts * @param codepoint * code point which must be displayable * @param style * font style * @param size * font size * @return a valid Font instance or null if no font could be found. */ public abstract Font getFont(final List preferredFonts, final int codepoint, final int style, final float size); /** * Load an external font from a file and 'register' (aka 'cache') it for * future use. * * @param format * font format (TTF or TYPE_1 currently supported by the * platform) * @param fontFile * file which contains the font * @return The newly created Font instance * @throws FontFormatException * if font contained in the file doesn't match the specified * format * @throws IOException * in case of problem while reading the file * @see java.awt.Font#createFont(int, File) */ public abstract Font registerFont(int format, File fontFile) throws IOException, FontFormatException; /** * Load an external font from a stream and 'register' (aka 'cache') it for * future use. * * @param format * font format (TTF or TYPE_1 currently supported by the * platform) * @param fontStream * file which contains the font * @return The newly created Font instance * @throws FontFormatException * if font contained in the stream doesn't match the specified * format * @throws IOException * in case of problem while reading the stream * @see java.awt.Font#createFont(int, InputStream) */ public abstract Font registerFont(int format, InputStream fontStream) throws IOException, FontFormatException; /** * Retrieve a list of all fonts registered with this fontFactory. * * @return A set of recognized font names */ public abstract Set listFontNames(); } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/font/package-info.java0000644000175000017500000000175711335260530033212 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 31460f6f5a3d 2009/04/09 08:06:13 maxberger $ */ /** Contains defition of abstract FontFactory class and concrete subclass(es).

For a fairly detailed discussion of where the idea of FontFactory comes from, seethis posting */ package net.sourceforge.jeuclid.font; ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/font/DefaultFontFactory.javajeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/font/DefaultFontFactory.java0000644000175000017500000002141111335260530034416 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: DefaultFontFactory.java,v 2907029e5fad 2009/03/19 13:48:22 maxberger $ */ package net.sourceforge.jeuclid.font; import java.awt.Font; import java.awt.FontFormatException; import java.awt.GraphicsEnvironment; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; import net.jcip.annotations.ThreadSafe; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.xmlgraphics.util.ClasspathResource; /** * Concrete FontFactory implementation that does simple caching of Fonts * loaded via {@link Font#createFont(int, File)} APIs. * * @version $Revision: 2907029e5fad $ */ @ThreadSafe public class DefaultFontFactory extends FontFactory { private static final int CACHE_FONT_SIZE = 12; private static final int NUM_STYLES = 4; /** * Logger for this class */ private static final Log LOGGER = LogFactory .getLog(DefaultFontFactory.class); private final Map fontCache = new HashMap(); DefaultFontFactory() { this.autoloadFontsFromAWT(); this.autoloadFontsFromClasspath(); } private void autoloadFontsFromAWT() { final String[] fam = GraphicsEnvironment .getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); for (final String element : fam) { for (int i = 0; i < DefaultFontFactory.NUM_STYLES; i++) { final Font f = new Font(element, i, DefaultFontFactory.CACHE_FONT_SIZE); this.cacheFont(f); } } } @SuppressWarnings("unchecked") private void autoloadFontsFromClasspath() { final List fonts = ClasspathResource.getInstance() .listResourcesOfMimeType("application/x-font"); for (final URL u : fonts) { try { try { this.cacheFont(Font.createFont(Font.TRUETYPE_FONT, u .openStream())); } catch (final FontFormatException e) { try { this.cacheFont(Font.createFont(Font.TYPE1_FONT, u .openStream())); } catch (final FontFormatException e1) { DefaultFontFactory.LOGGER.warn(e.getMessage()); } } } catch (final IOException e) { DefaultFontFactory.LOGGER.warn(e.getMessage()); } } } /** * Create a font object with specified properties. Font name may refer to * either 'built-in' or loaded externally and 'cached' font. * * @param name * font name or font family name * @param style * font style * @param size * font size * @return Font instance * @see java.awt.Font#Font(String, int, int) */ @Override public Font getFont(final String name, final int style, final float size) { Font font; synchronized (this.fontCache) { final Font[] fonts = this.fontCache.get(name .toLowerCase(Locale.ENGLISH)); if (fonts == null) { font = this.cacheFont( new Font(name, Font.PLAIN, DefaultFontFactory.CACHE_FONT_SIZE)) .deriveFont(style, size); } else { font = fonts[style]; if (font == null) { font = fonts[0].deriveFont(style, size); fonts[style] = font; } else { font = font.deriveFont(size); } } } return font; } /** {@inheritDoc} */ @Override public Font getFont(final List preferredFonts, final int codepoint, final int style, final float size) { Font font = this.searchFontList(preferredFonts, codepoint, style, size); if (font == null) { font = this.searchFontList(this.fontCache.keySet(), codepoint, style, size); } return font; } private Font searchFontList(final Collection fontList, final int codepoint, final int style, final float size) { for (final String fontName : fontList) { final Font font = this.getFont(fontName, style, size); final String desiredFont = fontName.trim(); if (((font.getFamily().equalsIgnoreCase(desiredFont)) || (font .getFontName().equalsIgnoreCase(desiredFont))) && (font.canDisplay(codepoint))) { return font; } } return null; } /** * Load an external font from a file and 'register' (aka 'cache') it for * future use. * * @param format * font format (TTF or TYPE_1 currently supported by the * platform) * @param fontFile * file which contains the font * @return The newly created Font instance * @throws FontFormatException * if font contained in the file doesn't match the specified * format * @throws IOException * in case of problem while reading the file * @see java.awt.Font#createFont(int, File) */ @Override public Font registerFont(final int format, final File fontFile) throws IOException, FontFormatException { return this.cacheFont(Font.createFont(format, fontFile)); } /** * Load an external font from a stream and 'register' (aka 'cache') it for * future use. * * @param format * font format (TTF or TYPE_1 currently supported by the * platform) * @param fontStream * file which contains the font * @return The newly created Font instance * @throws FontFormatException * if font contained in the stream doesn't match the specified * format * @throws IOException * in case of problem while reading the stream * @see java.awt.Font#createFont(int, InputStream) */ @Override public Font registerFont(final int format, final InputStream fontStream) throws IOException, FontFormatException { return this.cacheFont(Font.createFont(format, fontStream)); } /** * Actually stores a font in the cache. Uses font name and font family as * keys. * * @param font * Font instance to cache * @return the font instance that was cached */ private Font cacheFont(final Font font) { final String family = font.getFamily().trim().toLowerCase( Locale.ENGLISH); final String fontname = font.getName().trim().toLowerCase( Locale.ENGLISH); int style = font.getStyle(); if (fontname.contains("italic")) { style |= Font.ITALIC; } if (fontname.contains("oblique")) { style |= Font.ITALIC; } if (fontname.contains("bold")) { style |= Font.BOLD; } this.cacheFontWithStyle(font, family, style); this.cacheFontWithStyle(font, fontname, style); return font; } private void cacheFontWithStyle(final Font font, final String cacheName, final int style) { synchronized (this.fontCache) { Font[] fonts = this.fontCache.get(cacheName); if (fonts == null) { fonts = new Font[DefaultFontFactory.NUM_STYLES]; this.fontCache.put(cacheName, fonts); fonts[0] = font; } fonts[style] = font; } } /** {@inheritDoc} */ @Override public Set listFontNames() { final Set retVal; synchronized (this.fontCache) { retVal = new HashSet(this.fontCache.keySet()); } return retVal; } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/ant/0000755000175000017500000000000011335260526027632 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/ant/package-info.java0000644000175000017500000000210611335260526033020 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Provides an Ant-Task for MathML conversion.

You will need to define the converter task:

------------
<taskdef name="mmlconverter" classname="net.sourceforge.jeuclid.ant.MathMLConverter">
------------

with the needed JAR files in the classpath. Please see the API documentation of the task for a more detailed usage.

*/ package net.sourceforge.jeuclid.ant; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/ant/MathMLConverter.java0000644000175000017500000003432511335260526033516 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathMLConverter.java,v ee8eb070689f 2008/06/25 14:51:09 maxberger $ */ package net.sourceforge.jeuclid.ant; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.converter.Converter; import net.sourceforge.jeuclid.converter.ConverterRegistry; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; import org.apache.tools.ant.Project; import org.apache.tools.ant.taskdefs.MatchingTask; import org.apache.tools.ant.util.FileUtils; /** * This task converts MathML files to images. * * @version $Revision: ee8eb070689f $ */ public class MathMLConverter extends MatchingTask { private static final String CURRENT_DIR = "./"; private static final char EXTENSION_SEP = '.'; /** * */ private File mdestDir; private File mbaseDir; private File minFile; private File moutFile; private String moutType = "image/png"; private boolean mforce; private final MutableLayoutContext context; private final FileUtils fileUtils; /** * Creates a new MathMLConverter Task. */ public MathMLConverter() { this.context = new LayoutContextImpl(LayoutContextImpl .getDefaultLayoutContext()); this.fileUtils = FileUtils.getFileUtils(); } /** * Executes the task. * */ @Override public void execute() { DirectoryScanner scanner; String[] list; String[] dirs; if (this.mbaseDir == null) { this.mbaseDir = this.getProject().resolveFile( MathMLConverter.CURRENT_DIR); this.log("Base is not sets, sets to " + this.mbaseDir, Project.MSG_WARN); } // if we have an in file and out then process them if ((this.minFile != null) && (this.moutFile != null)) { this.log("Transforming file: " + this.minFile + " --> " + this.moutFile, Project.MSG_VERBOSE); try { Converter.getInstance().convert(this.minFile, this.moutFile, this.moutType, this.context); } catch (final IOException io) { throw new BuildException(io); } return; } /* * if we get here, in and out have not been specified, we are in batch * processing mode. */ // -- make sure Source directory exists... if (this.mdestDir == null) { throw new BuildException("m_destDir attributes must be set!"); } scanner = this.getDirectoryScanner(this.mbaseDir); this.log("Transforming into " + this.mdestDir, Project.MSG_INFO); // Process all the files marked for styling list = scanner.getIncludedFiles(); this.log("Included files: " + Arrays.toString(list), Project.MSG_VERBOSE); this.process(this.mbaseDir, Arrays.asList(list), this.mdestDir); // Process all the directories marked for styling dirs = scanner.getIncludedDirectories(); this.log("Included directories: " + Arrays.toString(dirs), Project.MSG_VERBOSE); for (final String dir : dirs) { list = this.fileUtils.resolveFile(this.mbaseDir, dir).list(); this.process(this.mbaseDir, Arrays.asList(list), this.mdestDir); } } /** * Sets support for anti alias (default is true). * * @param antiAlias * Flag for support anti alias. */ public void setAntiAlias(final boolean antiAlias) { this.setOption(Parameter.ANTIALIAS, antiAlias); } /** * Sets minimal size for turn on anti alias (default is 10.0). * * @param antiAliasMinSize * Minimal size in float number. */ public void setAntiAliasMinSize(final float antiAliasMinSize) { this.setOption(Parameter.ANTIALIAS_MINSIZE, antiAliasMinSize); } /** * Sets background color. * * @param color * String representation of color. */ public void setBackgroundColor(final String color) { if (this.isNullOrEmpty(color)) { this.log("Attribute \"backgroundcolor\" is empty, not used", Project.MSG_WARN); } else { this.setOption(Parameter.MATHBACKGROUND, color); } } /** * Sets support for debug (default is false). * * @param debug * Flag for support debug. */ public void setDebug(final boolean debug) { this.setOption(Parameter.DEBUG, debug); } /** * Sets display style (default is BLOCK. * * @param display * String value of display style. * * @see net.sourceforge.jeuclid.context.Display */ public void setDisplay(final String display) { this.setOption(Parameter.DISPLAY, display); } /** * Sets list of supported font families for Double-Struck. * * @param fonts * List separated by comma. */ public void setFontsDoublestruck(final String fonts) { this.setOption(Parameter.FONTS_DOUBLESTRUCK, fonts); } /** * Sets list of supported font families for Fraktur. * * @param fonts * List separated by comma. */ public void setFontsFraktur(final String fonts) { this.setOption(Parameter.FONTS_FRAKTUR, fonts); } /** * Sets font size of text. * * @param fontSize * Font size as float value. */ public void setFontSize(final float fontSize) { this.setOption(Parameter.MATHSIZE, fontSize); } /** * Sets list of supported font families for Monospaced. * * @param fonts * List separated by comma. */ public void setFontsMonospaced(final String fonts) { this.setOption(Parameter.FONTS_MONOSPACED, fonts); } /** * Sets list of supported font families for Sans-Serif. * * @param fonts * List separated by comma. */ public void setFontsSansSerif(final String fonts) { this.setOption(Parameter.FONTS_SANSSERIF, fonts); } /** * Sets list of supported font families for Script. * * @param fonts * List separated by comma. */ public void setFontsScript(final String fonts) { this.setOption(Parameter.FONTS_SCRIPT, fonts); } /** * Sets list of supported font families for Serif. * * @param fonts * List separated by comma. */ public void setFontsSerif(final String fonts) { this.setOption(Parameter.FONTS_SERIF, fonts); } /** * Sets foreground color. * * @param color * String representation of color. */ public void setForegroundColor(final String color) { if (this.isNullOrEmpty(color)) { this .log( "Attribute \"foregroundcolor\" is empty, use default color", Project.MSG_WARN); } else { this.setOption(Parameter.MATHCOLOR, color); } } /** * Sets <mfrac> keep scriptlevel. * * @param keepScriptLevel * if true, element will NEVER increase children's scriptlevel * (in violation of the spec). */ public void setMfracKeepScriptLevel(final boolean keepScriptLevel) { this.setOption(Parameter.MFRAC_KEEP_SCRIPTLEVEL, keepScriptLevel); } /** * Sets scripts level (default is 0). * * @param level * Script level. */ public void setScriptLevel(final int level) { this.setOption(Parameter.SCRIPTLEVEL, level); } /** * Sets minimal size of smallest font size (default is 8.0). * * @param minSize * Size of font. */ public void setScriptMinSize(final float minSize) { this.setOption(Parameter.SCRIPTMINSIZE, minSize); } /** * Sets size of multiplier (default is 0.71). * * @param multSize * Size of multiplier. */ public void setScriptSizeMult(final float multSize) { this.setOption(Parameter.SCRIPTSIZEMULTIPLIER, multSize); } /** * Set whether to check dependencies, or always generate. * * @param force * True, if the task should always generate the images. */ public void setForce(final boolean force) { this.logProperty("force", force); this.mforce = force; } /** * Set the base directory. * * @param dir * Base directory */ public void setBasedir(final File dir) { this.logProperty("basedir", dir); this.mbaseDir = dir; } /** * Set the destination directory into which the result files should be * copied to. * * @param dir * Destination directory */ public void setDestdir(final File dir) { this.logProperty("destdir", dir); this.mdestDir = dir; } /** * Sets an out file. * * @param outFile * Output file */ public void setOut(final File outFile) { this.logProperty("out", outFile); this.moutFile = outFile; } /** * Sets an input xml file to be converted. * * @param inFile * Input file */ public void setIn(final File inFile) { this.logProperty("in", inFile); this.minFile = inFile; } /** * Sets output file mimetype. * * @param mimetype * mimetype for output file. */ public void setType(final String mimetype) { this.logProperty("type", mimetype); this.moutType = mimetype; } /** * Processes the given input XML file and stores the result in the given * resultFile. * * @param baseDir * Base directory * @param xmlFiles * Source file * @param destDir * Destination directory */ private void process(final File baseDir, final List xmlFiles, final File destDir) { for (final String xmlFile : xmlFiles) { File outFile = null; File inFile = null; final String suffix = MathMLConverter.EXTENSION_SEP + ConverterRegistry.getInstance().getSuffixForMimeType( this.moutType); this.log("Found extension: " + suffix, Project.MSG_DEBUG); try { inFile = this.fileUtils.resolveFile(baseDir, xmlFile); final int dotPos = xmlFile .lastIndexOf(MathMLConverter.EXTENSION_SEP); if (dotPos > 0) { outFile = this.fileUtils.resolveFile(destDir, xmlFile .substring(0, dotPos) + suffix); } else { outFile = this.fileUtils.resolveFile(destDir, xmlFile + suffix); } this.log("Input file: " + inFile, Project.MSG_DEBUG); this.log("Output file: " + outFile, Project.MSG_DEBUG); if (this.mforce || !this.fileUtils.isUpToDate(inFile, outFile)) { this.fileUtils.createNewFile(outFile, true); Converter.getInstance().convert(inFile, outFile, this.moutType, this.context); } } catch (final IOException ex) { // If failed to process document, must delete target document, // or it will not attempt to process it the second time this.log("Failed to process " + inFile, Project.MSG_ERR); FileUtils.delete(outFile); throw new BuildException(ex); } } } /** * Convert string value of parameter and sets to current context. * * @param param * Type of parameter. * @param value * String value of parameter. */ private void setOption(final Parameter param, final String value) { this.setOption(param, param.fromString(value)); } /** * Sets parameter for current context. * * @param param * Type of parameter. * @param value * Object with value of parameter. */ private void setOption(final Parameter param, final Object value) { this.logProperty(param.getOptionName(), value); this.context.setParameter(param, value); } /** * Tests if string is null or is empty. * * @param s * Tested string. * * @return true if string is null or empty else * false. */ private boolean isNullOrEmpty(final String s) { // TODO: use .isEmpty() when JEuclid moves to 1.6 return s == null || s.length() == 0; } /** * Logs property, which is sets. * * @param param * Parameter name. * @param value * Parameter value. */ private void logProperty(final String param, final Object value) { this.log("Sets property \"" + param + "\" with value: " + value, Project.MSG_DEBUG); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/awt/0000755000175000017500000000000011335260526027643 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/awt/MathComponent.java0000644000175000017500000001020611335260526033261 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathComponent.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid.awt; import java.awt.Component; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.layout.JEuclidView; import org.w3c.dom.Document; /** * A class for displaying MathML content in a AWT Component. * * @see net.sourceforge.jeuclid.swing.JMathComponent * @version $Revision: 03dc0884e86f $ */ public class MathComponent extends Component { /** * Logger for this class */ // currently unused // private static final Logger LOGGER = // Logger.getLogger(MathComponent.class // .getName()); /** * */ private static final long serialVersionUID = 1L; /** * Reference to the MathBase class. */ private transient JEuclidView view; private Document document; private MutableLayoutContext parameters = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); /** * Default constructor. */ public MathComponent() { // do nothing. } /** * Sets the rendering parameters. * * @param newParameters * the set of parameters. */ public final void setParameters(final MutableLayoutContext newParameters) { this.parameters = newParameters; } /** * @return the document */ public Document getDocument() { return this.document; } /** * Gets the minimum size of this component. * * @return A dimension object indicating this component's minimum size. */ @Override public Dimension getMinimumSize() { if (this.view == null) { return new Dimension(1, 1); } else { return new Dimension((int) Math.ceil(this.view.getWidth()), (int) Math.ceil(this.view.getAscentHeight() + (int) Math.ceil(this.view.getDescentHeight()))); } } /** * Gets the preferred size of this component. * * @return A dimension object indicating this component's preferred size. */ @Override public Dimension getPreferredSize() { return this.getMinimumSize(); } /** * Paints this component. * * @param g * The graphics context to use for painting. */ @Override public void paint(final Graphics g) { super.paint(g); if (this.view != null) { this.view.draw((Graphics2D) g, 0, (int) Math.ceil(this.view .getAscentHeight())); } } private void redo() { final Graphics2D g2d = (Graphics2D) this.getGraphics(); if ((this.document == null) || (g2d == null)) { this.view = null; } else { this.view = new JEuclidView(this.document, this.parameters, g2d); } this.repaint(); } /** * Enables, or disables the debug mode. * * @param debugMode * Debug mode. */ public void setDebug(final boolean debugMode) { this.parameters.setParameter(Parameter.DEBUG, debugMode); this.redo(); } /** * @param newDocument * the document to set */ public void setDocument(final Document newDocument) { this.document = newDocument; this.redo(); } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/awt/package-info.java0000644000175000017500000000143511335260526033035 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** Provides a Java AWT Component for MathML Rendering. */ package net.sourceforge.jeuclid.awt; jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/Constants.java0000644000175000017500000000357211335260526031676 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Constants.java,v 38db1a498ca5 2009/09/25 22:17:03 max $ */ package net.sourceforge.jeuclid; import net.jcip.annotations.Immutable; /** * Constants which are shared in multiple classes. * * @version $Revision: 38db1a498ca5 $ */ @Immutable public final class Constants { /** String for numeric zero. */ public static final String ZERO = "0"; /** String constant for true. */ public static final String TRUE = "true"; /** String constant for false. */ public static final String FALSE = "false"; /** Default font-size (no scaling). */ public static final float DEFAULT_FONTSIZE = 12.0f; /** Default ScriptSize multiplier. */ public static final float DEFAULT_SCIPTSIZEMULTIPLIER = 0.71f; /** Default MIME Type for MathML documents. */ public static final String MATHML_MIMETYPE = "application/mathml+xml"; /** * Name space for JEuclid specific context extension. */ public static final String NS_OLD_JEUCLID_EXT = "http://jeuclid.sf.net/ns/context"; /** * Name space for JEuclid specific extensions. */ public static final String NS_JEUCLID_EXT = "http://jeuclid.sf.net/ns/ext"; /** * Default Constructor. */ private Constants() { // Empty on purpose } } jeuclid-parent-3.1.9/jeuclid-core/src/main/java/net/sourceforge/jeuclid/LayoutContext.java0000644000175000017500000000216711335260526032543 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: LayoutContext.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ package net.sourceforge.jeuclid; import net.sourceforge.jeuclid.context.Parameter; /** * @version $Revision: 03dc0884e86f $ */ public interface LayoutContext { /** * Retrieve a layout parameter. * * @param which * the parameter to retrieve * @return current value for this parameter. Please note: Some parameters * may be null. */ Object getParameter(Parameter which); } jeuclid-parent-3.1.9/README.build-xml.txt0000644000175000017500000000370511335260526020716 0ustar sylvestresylvestreThe build.xml file is to Ant what a makefile is to make. If you can not or not want to use Maven, you can still use Ant build system. Because Ant do not fetch all the necessary dependencies automatically, you mast have them already in your system. For compilation of any module use the following instructions (example for jeuclid-core): 1) create directory jeuclid-core/lib 2) copy or link all the necessary dependencies into jeuclid-core/lib (see dependencies list bellow) 3) start the compilation from the directory jeuclid-core with command "ant" Dependencies list: * jeuclid-core - Ant (ant.jar) - Batik (batik-all.jar) - commons-logging (commons-logging.jar) - jcip-annotations (jcip-annotations.jar) - FreeHep Util [optional - see notes] - FreeHep Graphics2D [see notes] - xml-commons-external (xml-apis.jar) - xmlgraphics-commons (xmlgraphics-commons.jar) * jeuclid-cli - commons-cli (commons-cli.jar) - commons-lang (commons-lang.jar) - jeuclid-core (jeuclid-core.jar) - xmlgraphics-commons (xmlgraphics-commons.jar) * jeuclid-mathviewer - AppleJavaExtensions (AppleJavaExtensions.jar) - commons-logging (commons-logging.jar) - jeuclid-core (jeuclid-core.jar) * jeuclid-fop - Batik (batik-all.jar) - commons-logging (commons-logging.jar) - FOP (fop.jar, fop-hyph.jar ~ optional) - jeuclid-core (jeuclid-core.jar) - xml-commons-external (xml-apis.jar) - xmlgraphics-commons (xmlgraphics-commons.jar) Notes: 1) If you do not need FreeHep support, remove all files jeuclid-core/src/main/java/net/sourceforge/jeuclid/converter/FreeHep* and from the file ConverterRegistry.java remove this line: private ConverterRegistry() { ImageIODetector.detectConversionPlugins(this); BatikDetector.detectConversionPlugins(this); - FreeHepDetector.detectConversionPlugins(this); } 2) Gentoo users can use ebuilds retorted here: http://bugs.gentoo.org/show_bug.cgi?id=121822 jeuclid-parent-3.1.9/README.missing-build-dependency.txt0000644000175000017500000000020511335260526023673 0ustar sylvestresylvestreWhen you run into a missing dependency: build-tools then please go to the support subdirectory and call mvn install there first. jeuclid-parent-3.1.9/jeuclid/0000755000175000017500000000000011335263004016730 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid/pom.xml0000644000175000017500000001650011335260536020256 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid JEuclid Distribution pom net.sourceforge.jeuclid jeuclid-parent 3.1.9 This class handles the creation of the JEuclid distribution files. package org.codehaus.mojo appassembler-maven-plugin 1.0 net.sourceforge.jeuclid.app.mathviewer.MathViewer mathviewer net.sourceforge.jeuclid.app.Mml2xxx mml2xxx net.sourceforge.jeuclid.app.foprep.Main foprep net.sourceforge.jeuclid.app.ListFonts listfonts flat package create-repository assemble maven-assembly-plugin 2.2-beta-4 src/assemble/distribution.xml false package attached org.apache.maven.plugins maven-dependency-plugin 2.1 unpack-dependencies generate-resources unpack net.sourceforge.jeuclid jeuclid-core jar ${project.build.directory}/core net.sourceforge.jeuclid jeuclid-fop jar ${project.build.directory}/fop false true net.sourceforge.jeuclid jeuclid-core 3.1.9 net.sourceforge.jeuclid jeuclid-swt 3.1.9 net.sourceforge.jeuclid jeuclid-mathviewer 3.1.9 net.sourceforge.jeuclid jeuclid-cli 3.1.9 net.sourceforge.jeuclid jeuclid-fop 3.1.9 org.apache.xmlgraphics fop org.apache.xmlgraphics batik-svggen 1.7 javax.servlet servlet-api xml-apis xml-apis xml-apis xml-apis-ext xalan xalan true org.freehep freehep-graphicsio-emf 2.1.3 true junit junit org.freehep freehep-graphicsio-gif 1.2.3 true org.freehep freehep-graphicsio-pdf 2.1.3 true junit junit org.freehep freehep-graphicsio-ps 2.1.3 true junit junit org.freehep freehep-graphicsio-swf 2.1.3 true junit junit net.sourceforge.jeuclid dejavu-fonts 2.29 net.sourceforge.jeuclid stix-fonts 1.0-beta-2 net.sourceforge.jeuclid ams-fonts 1.0 jeuclid-parent-3.1.9/jeuclid/src/0000755000175000017500000000000011335260536017526 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid/src/site/0000755000175000017500000000000011335260536020472 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid/src/site/site.xml0000644000175000017500000000133211335260536022157 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid/src/assemble/0000755000175000017500000000000011335260536021321 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid/src/assemble/distribution.xml0000644000175000017500000000256011335260536024565 0ustar sylvestresylvestre distribution zip target/appassembler bin/mathviewer bin/mml2xxx bin/foprep bin/listfonts 0755 target/appassembler bin/mathviewer bin/mml2xxx bin/foprep bin/listfonts 0644 target/core/net/sourceforge/jeuclid/LICENSE.txt 0644 target/core/net/sourceforge/jeuclid/NOTICE 0644 LICENSE.FreeHEP 0644 target/fop/net/sourceforge/jeuclid/README.fop 0644 jeuclid-parent-3.1.9/jeuclid-cli/0000755000175000017500000000000011335263004017475 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/build.xml0000644000175000017500000000652511335260526021334 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-cli/pom.xml0000644000175000017500000000517511335260526021030 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid-cli JEuclid Command Line Tools net.sourceforge.jeuclid jeuclid-parent 3.1.9 This module contains a FO pre-processor application. org.apache.maven.plugins maven-jar-plugin net.sourceforge.jeuclid.app.Mml2xxx true true true net.sourceforge.jeuclid jeuclid-core 3.1.9 commons-cli commons-cli 1.2 junit junit commons-lang commons-lang 2.4 org.apache.xmlgraphics batik-svggen 1.7 javax.servlet servlet-api xml-apis xml-apis xml-apis xml-apis-ext xalan xalan true jeuclid-parent-3.1.9/jeuclid-cli/src/0000755000175000017500000000000011335260526020272 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/site/0000755000175000017500000000000011335260526021236 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/site/site.xml0000644000175000017500000000133211335260526022723 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-cli/src/main/0000755000175000017500000000000011335260526021216 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/main/java/0000755000175000017500000000000011335260526022137 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/0000755000175000017500000000000011335260526022725 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/0000755000175000017500000000000011335260526025250 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260526026667 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/app/0000755000175000017500000000000011335260526027447 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/app/Mml2xxx.java0000644000175000017500000002307611335260526031701 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Mml2xxx.java,v 06749543c58f 2008/08/22 13:26:52 maxberger $ */ package net.sourceforge.jeuclid.app; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Locale; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.context.typewrapper.EnumTypeWrapper; import net.sourceforge.jeuclid.context.typewrapper.TypeWrapper; import net.sourceforge.jeuclid.converter.Converter; import net.sourceforge.jeuclid.converter.ConverterRegistry; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.GnuParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import org.apache.commons.lang.StringUtils; /** * Utility class to be used from the command line to call the converters. * * @version $Revision: 06749543c58f $ */ // CHECKSTYLE:OFF // Data abstraction coupling is too high. But it makes no sense to split up // this class. public final class Mml2xxx { // CHECKSTYLE:ON private static final String OUT_FILE_TYPE = "outFileType"; private static final String DEFAULT_TYPE = "image/png"; private Mml2xxx() { // Empty on purpose } private static Options createOptions() { final Options options = new Options(); final Option oft = new Option(Mml2xxx.OUT_FILE_TYPE, true, "output file mime type [default: derived from the target file's extention]" + "; available values are: " + StringUtils.join(ConverterRegistry.getInstance() .getAvailableOutfileTypes().iterator(), ' ')); options.addOption(oft); final LayoutContext defaultCtx = LayoutContextImpl .getDefaultLayoutContext(); for (final Parameter param : Parameter.values()) { final TypeWrapper typeWrapper = param.getTypeWrapper(); final StringBuilder desc = new StringBuilder(param .getOptionDesc()); final String defValue = param.toString(defaultCtx .getParameter(param)); if (defValue != null) { desc.append(" [default: ").append(defValue).append("]"); } final Option o = new Option(param.getOptionName(), true, desc .toString()); String argName = param.getTypeWrapper().getValueType() .getSimpleName().toLowerCase(Locale.ENGLISH); if (typeWrapper instanceof EnumTypeWrapper) { argName = StringUtils.join(((EnumTypeWrapper) typeWrapper) .values(), '|'); } o.setArgName(argName); options.addOption(o); } return options; } /** * Main function for use from scripts. * * @param args * command line arguments. */ public static void main(final String[] args) { final Options options = Mml2xxx.createOptions(); CommandLine cmdLine = null; try { cmdLine = new GnuParser().parse(options, args); final List files = Arrays.asList(cmdLine.getArgs()); if (files.size() < 2) { throw new ParseException("Not enough arguments!"); } final int sourceCount = files.size() - 1; final File lastFile = new File(files.get(sourceCount)); final boolean multi = lastFile.isDirectory(); final List sources = Mml2xxx.createListOfSourceFiles(files, sourceCount); final MutableLayoutContext ctx = Mml2xxx .createLayoutContext(cmdLine); if (multi) { Mml2xxx.convertMultipleFiles(cmdLine, lastFile, sources, ctx); } else { if (sources.size() != 1) { throw new ParseException( "Too many file arguments. Did you want to add a target directory?"); } final String outFileType = Mml2xxx.findOutfileType(cmdLine, lastFile.getName()); Converter.getInstance().convert(sources.get(0), lastFile, outFileType, ctx); } } catch (final ParseException pe) { System.err.println(pe); Mml2xxx.showUsage(options); System.exit(1); } catch (final IOException ioe) { System.err.println("Error encountered during converion process"); ioe.printStackTrace(System.err); System.exit(2); } catch (final IllegalArgumentException iae) { System.err.println(iae); Mml2xxx.showUsage(options); System.exit(1); } } private static void convertMultipleFiles(final CommandLine cmdLine, final File lastFile, final List sources, final MutableLayoutContext layoutContext) throws ParseException, IOException { final String outFileType = Mml2xxx.findOutfileType(cmdLine, null); for (final File source : sources) { final String fileName = source.getName(); final int dotpos = fileName.lastIndexOf('.'); final String baseName; if (dotpos >= 0) { baseName = fileName.substring(0, dotpos); } else { baseName = fileName; } final File target = new File(lastFile, baseName + '.' + ConverterRegistry.getInstance().getSuffixForMimeType( outFileType)); Converter.getInstance().convert(source, target, outFileType, layoutContext); } } private static List createListOfSourceFiles( final List files, final int count) throws ParseException { final List sources = new ArrayList(count); for (int i = 0; i < count; i++) { final String current = files.get(i); final File source = new File(current); if (!source.isFile() || !source.canRead()) { throw new ParseException(current + " is not a file or not readable"); } sources.add(source); } return sources; } private static String findOutfileType(final CommandLine cmdLine, final String fileName) throws ParseException { String outFileType = cmdLine.getOptionValue(Mml2xxx.OUT_FILE_TYPE); final String isNotSupported = " is not supported"; if ((outFileType == null) && (fileName != null)) { final int dot = fileName.lastIndexOf('.'); if (dot != -1 && dot != fileName.length() - 1) { final String extension = fileName.substring(dot + 1); outFileType = ConverterRegistry.getInstance() .getMimeTypeForSuffix(extension); } } if (outFileType == null) { System.out.println("No ouput type could be detected, assuming " + Mml2xxx.DEFAULT_TYPE); outFileType = Mml2xxx.DEFAULT_TYPE; } else { if (!ConverterRegistry.getInstance().getAvailableOutfileTypes() .contains(outFileType)) { throw new IllegalArgumentException("Output type " + outFileType + isNotSupported); } } return outFileType; } private static MutableLayoutContext createLayoutContext( final CommandLine cmdLine) { final MutableLayoutContext ctx = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); for (final Parameter param : Parameter.values()) { final String value = cmdLine .getOptionValue(param.getOptionName()); if (value != null) { ctx.setParameter(param, param.fromString(value)); } } return ctx; } private static void showUsage(final Options options) { final HelpFormatter hf = new HelpFormatter(); final String lineSep = hf.getNewLine(); hf .printHelp( "mml2xxx [options]", "source is the path to the source file (MathML or ODF format)" + lineSep + "target is the path to the target file / directory" + lineSep + "If multiple source files are given, target must be a directory", options, "Example: mml2xxx a.mml a.png -backgroundColor white"); } } jeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/app/ListFonts.java0000644000175000017500000000277711335260526032254 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ListFonts.java,v 503f7e4f22db 2008/04/28 12:43:00 maxberger $ */ package net.sourceforge.jeuclid.app; import java.util.Collections; import java.util.List; import java.util.Vector; import net.sourceforge.jeuclid.font.FontFactory; /** * Lists all fonts available to JEuclid. * * @version $Revision: 503f7e4f22db $ */ public final class ListFonts { /** * Default Constructor. */ private ListFonts() { // Empty on purpose } /** * Retrieves font list and prints it to the console. * * @param args * not used. */ public static void main(final String[] args) { final FontFactory f = FontFactory.getInstance(); final List allFonts = new Vector(f.listFontNames()); Collections.sort(allFonts); for (final String s : allFonts) { System.out.println(s); } } } jeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/app/package-info.java0000644000175000017500000000201011335260526032627 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v d4f183479269 2008/04/20 11:11:12 maxberger $ */ /** Provides example applications using JEuclid

Which applications are actually available depends on which components of JEuclid you are using. The core component contains a simple mml2xxx command line converter. The mathviewer component contains a graphical MathML formula browser.

*/ package net.sourceforge.jeuclid.app; jeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/app/foprep/0000755000175000017500000000000011335260526030742 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/app/foprep/Main.java0000644000175000017500000000657011335260526032501 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Main.java,v bd2e46aac4d4 2008/05/14 15:14:55 maxberger $ */ package net.sourceforge.jeuclid.app.foprep; import java.io.PrintWriter; import javax.xml.transform.Result; import javax.xml.transform.Source; import javax.xml.transform.TransformerException; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import net.sourceforge.jeuclid.converter.Processor; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.GnuParser; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; /** * Main class for fo-preprocess application. * * @version $Revision: bd2e46aac4d4 $ */ public final class Main { private static final String STD_INOUT = "-"; private static final String OPTION_OUT = "out"; private static final String OPTION_IN = "in"; private Main() { // Empty on purpose. } /** * Application entry point. * * @param args * Command line arguments. */ public static void main(final String[] args) { final Options options = new Options(); final Option in = new Option(Main.OPTION_IN, true, "input (fo) file"); in.setRequired(true); options.addOption(in); final Option out = new Option(Main.OPTION_OUT, true, "output (fo) file"); out.setRequired(true); options.addOption(out); final CommandLineParser parser = new GnuParser(); try { final CommandLine cmd = parser.parse(options, args); final String inputFile = cmd.getOptionValue(Main.OPTION_IN); final String outputFile = cmd.getOptionValue(Main.OPTION_OUT); final Result result; if (Main.STD_INOUT.equals(outputFile)) { result = new StreamResult(new PrintWriter(System.out)); } else { result = new StreamResult(outputFile); } final Source source; if (Main.STD_INOUT.equals(inputFile)) { source = new StreamSource(System.in); } else { source = new StreamSource(inputFile); } Processor.getInstance().process(source, result); } catch (final ParseException e1) { System.out.println("Invalid command line:" + e1.getMessage()); new HelpFormatter().printHelp( "foprep -in input.fo -out output.fo", options); } catch (final TransformerException e) { System.out.println("An error occurred during processing: " + e.getMessage()); e.printStackTrace(); } } } jeuclid-parent-3.1.9/jeuclid-cli/src/main/java/net/sourceforge/jeuclid/app/foprep/package-info.java0000644000175000017500000000174111335260526034134 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 81679af7f8ce 2009/04/09 06:59:25 maxberger $ */ /** * Contains the a fo preprocessor application and code. * *

*Please look at *

    *
  • {@link Main} for command line use.
  • *
  • {@link net.sourceforge.jeuclid.converter.Processor} for use in your own apps.
  • *
*

*/ package net.sourceforge.jeuclid.app.foprep; jeuclid-parent-3.1.9/pom.xml0000644000175000017500000004061111335262354016637 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid-parent JEuclid 3.1.9 pom jeuclid-core jeuclid-core16 jeuclid-swt jeuclid-mathviewer jeuclid-fop jeuclid-cli jeuclid jeuclid-minimal jeuclid-testsuite JEuclid is a complete MathML rendering solution, consisting of a MathViewer application, Command line converters from MathML to other formats, an ant task for autmated conversion, Display components for AWT and Swing and a component for Apache Cocoon http://jeuclid.sourceforge.net SourceForge https://sourceforge.net/tracker/?group_id=44862 2002 The JEuclid project http://jeuclid.sourceforge.net/ JEuclid Users List http://lists.sourceforge.net/lists/listinfo/jeuclid-users http://lists.sourceforge.net/lists/listinfo/jeuclid-users http://sourceforge.net/mailarchive/forum.php?forum=jeuclid-users jeuclid-users@lists.sourceforge.net JEuclid Developers List http://lists.sourceforge.net/lists/listinfo/jeuclid-devel http://lists.sourceforge.net/lists/listinfo/jeuclid-devel http://sourceforge.net/mailarchive/forum.php?forum=jeuclid-devel jeuclid-devel@lists.sourceforge.net The Apache Software License, Version 2.0 http://www.apache.org/licenses/LICENSE-2.0.txt repo maxberger Max Berger max AT berger DOT name http://max.berger.name architect developer +1 eric239 Ernest Mishkin ernest_mishkin AT mcgraw-hill DOT com developer -5 eputrycz Erik Putrycz erik.putrycz AT nrc-cnrc DOT gc DOT ca delevoper management -5 epietrig Emmanuel Pietriga AT DOT DOT delevoper +1 petrprochy PetrProchy AT DOT DOT delevoper Gil Italian translation Jean-Francois Maurel French translation Jean Roland testing Matthias Hanisch Lars-Peter Fritzsche icon Tomas Studva Andreas Hoffmann previous_developer Stephan Michels previous_developer prevous_maintainer initiator D.Mironovich previous_developer gt_sf previous_developer Hugh Sparks previous_developer Leen Lambers previous_developer Siarhei Baidun previous_developer Marco Sielaff previous_developer prevous_maintainer initiator Uwe Klosa previous_developer This project has had many developers in the past, and I may miss someone. Please mail me if your name is missing. previous_developer scm:hg:http://jeuclid.hg.sourceforge.net:8000/hgroot/jeuclid/jeuclid scm:hg:ssh://jeuclid.hg.sourceforge.net/hgroot/jeuclid/jeuclid http://jeuclid.hg.sourceforge.net/hgweb/jeuclid/jeuclid/ net.sourceforge.jeuclid build-tools 1.0.4 install org.apache.maven.plugins maven-site-plugin 2.1 org.apache.maven.doxia doxia-module-docbook-simple 1.1.2 org.apache.maven.doxia doxia-module-xhtml 1.1.2 org.apache.maven.plugins maven-compiler-plugin 2.0.2 1.5 1.5 false true org.apache.maven.plugins maven-surefire-plugin 2.4.3 java.awt.headless true methods com.pyx4me proguard-maven-plugin 2.0.4 ${runtime.lib} ${common.dir}/proguard.lib.conf org.apache.maven.plugins maven-changes-plugin 2.3 validate-changes pre-site changes-validate true org.testng testng 5.8 test jdk15 codehaus-plugins codehaus-plugins http://repository.codehaus.org/ false true maxthird Max Third Party Repo http://m2.max.berger.name/content/repositories/thirdparty jeuclid-release JEuclid released dependencies http://jeuclid.sf.net/m2-release jeuclid-deps JEuclid dependencies http://jeuclid.sf.net/m2 freehep-maven Maven FreeHEP http://java.freehep.org/maven2 org.apache.maven.plugins maven-project-info-reports-plugin 2.1.2 project-team mailing-list issue-tracking license scm maven-surefire-report-plugin 2.4.3 maven-jxr-plugin 2.1 org.apache.maven.plugins maven-javadoc-plugin 2.6.1 true maven true http://java.sun.com/j2se/1.5.0/docs/api/ http://testng.org/javadocs/ http://jakarta.apache.org/commons/logging/apidocs/ http://jcip.net/annotations/doc/ aggregate org.codehaus.mojo cobertura-maven-plugin 2.3 org.apache.maven.plugins maven-changes-plugin 2.0 changes-report http://sourceforge.net/support/tracker.php?aid=%ISSUE% org.codehaus.mojo taglist-maven-plugin 2.4 org.codehaus.mojo javancss-maven-plugin 2.0 org.codehaus.mojo findbugs-maven-plugin 2.3 Low Max FindDeadLocalStores true org.apache.maven.plugins maven-checkstyle-plugin 2.4max jeuclid/checkstyle.xml jeuclid/checkstyle_filter.xml org.apache.maven.plugins maven-pmd-plugin 2.4 true 1.5 utf-8 org/**/*.java /rulesets/basic.xml /rulesets/braces.xml /rulesets/codesize.xml /rulesets/clone.xml /rulesets/design.xml /rulesets/finalizers.xml /rulesets/imports.xml /rulesets/strings.xml /rulesets/migrating_to_15.xml /rulesets/optimizations.xml /rulesets/sunsecure.xml /rulesets/unusedcode.xml org.codehaus.mojo dashboard-maven-plugin 1.0.0-beta-1 sourceforgejeuclid SourceForge Final Repository sftp://web.sourceforge.net/home/groups/j/je/jeuclid/htdocs/m2-release sourceforgejeuclid SourceForge Snapshot Repository sftp://web.sourceforge.net/home/groups/j/je/jeuclid/htdocs/m2-snap sourceforgejeuclid Website for JEuclid on SourceForge scp://shell.sourceforge.net/home/groups/j/je/jeuclid/htdocs UTF-8 ${java.home}/lib/rt.jar ${basedir}/.. osx-rtlib mac os x /System/Library/Frameworks/JavaVM.framework/Classes/classes.jar jeuclid-parent-3.1.9/jeuclid-fop/0000755000175000017500000000000011335263004017512 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/build.xml0000644000175000017500000001033311335260530021334 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-fop/README0000644000175000017500000000226411335260530020377 0ustar sylvestresylvestreBy now the fop bundles are in the Main Apache (and therefore the main maven) repository. Should this break, or need an update, these are the instructions: Please downlaod: http://people.apache.org/~jeremias/fop/maven/fop-0.93-bundle.jar http://people.apache.org/~jeremias/fop/maven/xmlgraphics-commons-1.1-bundle.jar extract to a temp dir (each separately). To deploy LOCALLY: (for fop) mvn install:install-file -Dfile=fop-0.93.jar -DartifactId=fop -DgroupId=org.apache.xmlgraphics -Dpackaging=jar -Dversion=0.93 -DpomFile=pom.xml (for xmlgraphics) mvn install:install-file -Dfile=xmlgraphics-commons-1.1.jar -DartifactId=xmlgraphics-commons -DgroupId=org.apache.xmlgraphics -Dpackaging=jar -Dversion=1.1 -DpomFile=pom.xml To deploy REMOTELY: Set the settings for sourceforgejeuclid as describe on the "source" webpage (for fop) mvn deploy:deploy-file -DpomFile=pom.xml -Dfile=fop-0.93.jar -DrepositoryId=sourceforgejeuclid -Durl=sftp://web.sourceforge.net/home/groups/j/je/jeuclid/htdocs/m2 (for xmlgraphics) mvn deploy:deploy-file -DpomFile=pom.xml -Dfile=xmlgraphics-commons-1.1.jar -DrepositoryId=sourceforgejeuclid -Durl=sftp://web.sourceforge.net/home/groups/j/je/jeuclid/htdocs/m2 jeuclid-parent-3.1.9/jeuclid-fop/pom.xml0000644000175000017500000001102211335260530021024 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid-fop JEuclid FOP Plugin net.sourceforge.jeuclid jeuclid-parent 3.1.9 This module contains the FOP plugin to support MathML in FOP through JEuclid. maven-assembly-plugin 2.2-beta-4 src/assemble/jeuclid-fop.xml false package attached org.apache.maven.plugins maven-dependency-plugin 2.1 unpack-dependencies generate-resources unpack net.sourceforge.jeuclid jeuclid-core jar ${project.build.directory}/core false true org.codehaus.groovy.maven gmaven-plugin 1.0 pre-site execute ${pom.basedir}/src/main/script/copyreadme.groovy net.sourceforge.jeuclid jeuclid-core 3.1.9 org.apache.xmlgraphics fop 0.95-1 batik batik-svg-dom batik batik-bridge batik batik-awt-util batik batik-gvt batik batik-transcoder batik batik-extension batik batik-ext commons-logging commons-logging commons-io commons-io org.apache.avalon.framework avalon-framework-api org.apache.avalon.framework avalon-framework-impl javax.servlet servlet-api jeuclid-parent-3.1.9/jeuclid-fop/src/0000755000175000017500000000000011335260530020302 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/site/0000755000175000017500000000000011335260530021246 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/site/site.xml0000644000175000017500000000133211335260530022733 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-fop/src/test/0000755000175000017500000000000011335260530021261 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/test/resources/0000755000175000017500000000000011335260530023273 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/test/resources/formula.odf0000644000175000017500000001326511335260530025441 0ustar sylvestresylvestrePK4[**mimetypeapplication/vnd.oasis.opendocument.formulaPK4Configurations2/statusbar/PK4'Configurations2/accelerator/current.xmlPKPK4Configurations2/floater/PK4Configurations2/popupmenu/PK4Configurations2/progressbar/PK4Configurations2/menubar/PK4Configurations2/toolbar/PK4Configurations2/images/Bitmaps/PK4 content.xmlK0+μ6 l+!>Il5&!MWc?^ėp^^DmV B:jKf}=; e~X%Pq[LVMd s@[x1r)2Ep 981%@ZDٌG^9JJ kwSĦift'1$p>Ո++SQn4O^J西ɵKA)aUfNMw¦ŞFF}yI?v4_ߖ+rMmsgy~\:;5O-ihgp,|nN~?PK 3PK4v+SSmeta.xml OpenOffice.org/2.0$Unix OpenOffice.org_project/680m5$Build-9011Max Berger2006-04-26T20:03:211PT0SPK4Thumbnails/thumbnail.pngU3NzXu#ۓJA4iQKFTUҪ8:.Z*dlle*qJBIl?f7}3o^ghh>Z 4h[@|h|ZVi6m.i3_fZp6SMОL@}z,˘HmtIS,}OT(*^e:ł9tXYYEW0 m 222詩dqK lLT  4Br/3 -vC[m/z:`8ix=Df{آ9H%?AÖ!@Yk5V ɵH~'bU<;&>#pA-aymWc#?_L,|髽^Ꭴ$N<$s3Cv8/!WR:$,]baXj/|n̈́%\1{Q`i*(,dUWz~9E~R~dۗu ?~,|Gwr5i읆N="+Usշ^,cn3Q?`Qrja _1^E>@ >T'=toUSa}Qg5wPK0-C}PK4 settings.xml͙[s8S0~IlH)LBdž4b.o,@,̥~% 4mI}m E3zg-#(d>;۩]}5e3+]xN4qDK pK,Ͱޥ, Na4Ec3_,U+dt碒oQ-H H&,듙$sMy㇍]aڝ!F׌C~v@ƦE,Cق0֭o| 4/&JϦ4xrp?} S-Y>dI+\# dɒ|¢6/\h &Ƙf:J̥a5gy^rvH(;XC"ksMFY\e|l&DљH2|Z##P<ԄC]B͸^%(Zլb}(P8MxKC`.0 y+㖡5UB*#ՠSU.ZE$P7jD_6ل8S$vJZ\-IHqU* >da/2_ ~$? *#̭{´w\.iB(mv[U:[ q&Â|ʱ]6-D Bs(܋d}΄q6hE2apTK8_24pw,(/3wۡ:+5xk :{ųek`z'^X 5( dBTE1]ɒ{Ĥdիvq CNvh N'2@V' #q@OʹnQ6IݛOJ5I-iCŘ8 Hip:-ꔌy `yʽ뛓V46RY۔W=xʃ$1p-2xP GR.s!ぱ1";)bpk #|l!PQL'IQׂ0Sx`9MxwE][ڐ n7 dΟ?PK^)P;PK4[**mimetypePK4PConfigurations2/statusbar/PK4'Configurations2/accelerator/current.xmlPK4Configurations2/floater/PK4Configurations2/popupmenu/PK4MConfigurations2/progressbar/PK4Configurations2/menubar/PK4Configurations2/toolbar/PK4Configurations2/images/Bitmaps/PK4 3 0content.xmlPK4v+SSmeta.xmlPK40-C}Thumbnails/thumbnail.pngPK4Y( settings.xmlPK4^)P;kMETA-INF/manifest.xmlPKjeuclid-parent-3.1.9/jeuclid-fop/src/test/resources/mathml.fo0000644000175000017500000001536011335260530025110 0ustar sylvestresylvestre MathML Extension Page The MathML Extension The mathml extension is an addition to FOP that can be used to draw mathml expressions. Examples I ( x ) = F ( x ) + C ( ( a b c d ) ( e f g h ) 0 ( i j k l ) ) An external mathml document. An inline external graphic: with text before and after. An inline internal graphic: Xa12a12 with text before and after. This is s 24pt block. An inline external graphic: with text before and after. This is a 24pt block. An inline internal graphic: Xa12a12 with text before and after. Formula in ODF format: jeuclid-parent-3.1.9/jeuclid-fop/src/test/resources/example.mml0000644000175000017500000000342611335260530025442 0ustar sylvestresylvestre { a , ... , a k   a 's , b , ... , b   b 's k +  elements } jeuclid-parent-3.1.9/jeuclid-fop/src/test/java/0000755000175000017500000000000011335260530022202 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/test/java/net/0000755000175000017500000000000011335260530022770 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/test/java/net/sourceforge/0000755000175000017500000000000011335260530025313 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/test/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530026732 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/test/java/net/sourceforge/jeuclid/fop/0000755000175000017500000000000011335260530027516 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/test/java/net/sourceforge/jeuclid/fop/test/0000755000175000017500000000000011335260530030475 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/test/java/net/sourceforge/jeuclid/fop/test/FopIntegrationTest.javajeuclid-parent-3.1.9/jeuclid-fop/src/test/java/net/sourceforge/jeuclid/fop/test/FopIntegrationTest.j0000644000175000017500000000155311335260530034444 0ustar sylvestresylvestre/* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: FopIntegrationTest.java,v 602a5ea85e1f 2007/05/16 21:39:46 maxberger $ */ package net.sourceforge.jeuclid.fop.test; /** * This class needs to be implemented. * * @version $Revision: 602a5ea85e1f $ */ public class FopIntegrationTest { } jeuclid-parent-3.1.9/jeuclid-fop/src/assemble/0000755000175000017500000000000011335260530022075 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/assemble/jeuclid-fop.xml0000644000175000017500000000236411335260530025025 0ustar sylvestresylvestre distribution zip target *.jar net.sourceforge.jeuclid:jeuclid-core target/core/net/sourceforge/jeuclid/LICENSE.txt 0644 target/core/net/sourceforge/jeuclid/NOTICE 0644 target/classes/net/sourceforge/jeuclid/README.fop 0644 src/test/resources/mathml.fo example 0644 src/test/resources/example.mml example 0644 jeuclid-parent-3.1.9/jeuclid-fop/src/main/0000755000175000017500000000000011335260530021226 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/script/0000755000175000017500000000000011335260530022532 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/script/copyreadme.groovy0000644000175000017500000000035211335260530026131 0ustar sylvestresylvestredef source = new File(project.basedir,"src/main/resources/net/sourceforge/jeuclid/README.fop") def target = new File(project.basedir,"src/site/apt/index.apt") ant.mkdir(dir: target.getParent()) ant.copy(file: source, tofile: target) jeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/0000755000175000017500000000000011335260530023240 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/0000755000175000017500000000000011335260530024400 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/0000755000175000017500000000000011335260530026223 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.fop.fo.ElementMappingjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.fop.fo.ElementMappi0000644000175000017500000000006311335260530033721 0ustar sylvestresylvestrenet.sourceforge.jeuclid.fop.JEuclidElementMapping ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloaderjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.xmlgraphics.image.l0000644000175000017500000000006411335260530034010 0ustar sylvestresylvestrenet.sourceforge.jeuclid.xmlgraphics.PreloaderMathML ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.fop.render.XMLHandlerjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.fop.render.XMLHandl0000644000175000017500000000005611335260530033625 0ustar sylvestresylvestrenet.sourceforge.jeuclid.fop.JEuclidXMLHandler ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactoryjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.xmlgraphics.image.l0000644000175000017500000000007511335260530034012 0ustar sylvestresylvestrenet.sourceforge.jeuclid.xmlgraphics.ImageLoaderFactoryMathML ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.xmlgraphics.image.loader.spi.ImageConverterjeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/META-INF/services/org.apache.xmlgraphics.image.l0000644000175000017500000000007511335260530034012 0ustar sylvestresylvestrenet.sourceforge.jeuclid.xmlgraphics.ImageConverterMathML2G2D jeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/net/0000755000175000017500000000000011335260530024026 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/net/sourceforge/0000755000175000017500000000000011335260530026351 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530027770 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/resources/net/sourceforge/jeuclid/README.fop0000644000175000017500000000470211335260530031436 0ustar sylvestresylvestre ------------------- JEuclid FOP plug-in ------------------- Installation * Pre-requesites The JEuclid FOP plug-in is tightly integrated with FOP development, it will therefore only work with specific versions of FOP. For this version you need: * FOP 0.95beta or 0.95 * Actual installation Copy the these files into your fop's lib/ directory * jeuclid-core-x.x.x.jar * jeuclid-fop-x.x.x.jar [] If you have downloaded the full JEuclid distribution, these files can be found in the repo/ sub-directory. That's it! Enjoy MathML support in FOP. ** Installation in Ubuntu If you use the prepacked version of fop from Ubuntu, the following procedure is known to work: * copy jeuclids jars to <<>> * create links from jeuclid-fop-x.x.x.jar to jeuclid-fop.jar, same for -core. * add the line <<>> to /usr/bin/fop [] This method requires modification of directories which are in the care of your distribution. If you know a better method, please let us know! ** Other Distributions Other distributions may provide the fop jars in a different fashion. If you have detailed installation instructions, please let us know. Usage * External MathML Documents External Documents may be referenced using \. Both ODF and plain MathML formulas are supported. There is (per design choice) no support for the .fo context when a MathML document is referenced as an external graphic. * Inline MathML Documents Inline MathML is supported through the \ tag. The actual math content must use the "http://www.w3.org/1998/Math/MathML" name space. MathML specified inline will take the following attributes from the surrounding .fo context: * Font size * Font color * Background color * Name of the fonts used. Please note: The names of the fonts from the context are used to display the "normal" mathvariant. In the case of FOPs default, this uses a sans-serif font, whereas the MathML specification suggests to use a serif font. If you wish to override this behavior, please specify a sans-serif font in the font-family for the instream-foreign-object. Example Document An example document is available (in the JEuclid-fop distribution) in the example/ sub-directory. jeuclid-parent-3.1.9/jeuclid-fop/src/main/java/0000755000175000017500000000000011335260530022147 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/0000755000175000017500000000000011335260530022735 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/0000755000175000017500000000000011335260530025260 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530026677 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/0000755000175000017500000000000011335260530031220 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/ImageLoaderMathML.javajeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/ImageLoaderMathML0000644000175000017500000000563211335260530034365 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ImageLoaderMathML.java,v 70597ba9d706 2008/02/18 19:42:05 maxberger $ */ package net.sourceforge.jeuclid.xmlgraphics; import java.io.IOException; import java.util.Map; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.apache.xmlgraphics.image.loader.Image; import org.apache.xmlgraphics.image.loader.ImageException; import org.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.ImageInfo; import org.apache.xmlgraphics.image.loader.ImageSessionContext; import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoader; import org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM; /** * @version $Revision: 70597ba9d706 $ */ public class ImageLoaderMathML extends AbstractImageLoader { private final ImageFlavor targetFlavor; /** * Main constructor. * * @param target * the target flavor */ public ImageLoaderMathML(final ImageFlavor target) { if (!(ImageFlavor.XML_DOM.equals(target))) { throw new IllegalArgumentException( "Unsupported target ImageFlavor: " + target); } this.targetFlavor = target; } /** {@inheritDoc} */ public ImageFlavor getTargetFlavor() { return this.targetFlavor; } /** {@inheritDoc} */ @SuppressWarnings("unchecked") public Image loadImage(final ImageInfo info, final Map hints, final ImageSessionContext session) throws ImageException, IOException { if (!Constants.MATHML_MIMETYPE.equals(info.getMimeType())) { throw new IllegalArgumentException( "ImageInfo must be from an MathML image"); } final Image img = info.getOriginalImage(); if (!(img instanceof ImageXMLDOM)) { throw new IllegalArgumentException( "ImageInfo was expected to contain the MathML document as DOM"); } final ImageXMLDOM mmlImage = (ImageXMLDOM) img; if (!AbstractJEuclidElement.URI.equals(mmlImage.getRootNamespace())) { throw new IllegalArgumentException( "The Image is not in the MathML namespace: " + mmlImage.getRootNamespace()); } return mmlImage; } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/PreloaderMathML.javajeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/PreloaderMathML.j0000644000175000017500000001354011335260530034356 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: PreloaderMathML.java,v 32023847f457 2009/03/20 14:20:15 maxberger $ */ package net.sourceforge.jeuclid.xmlgraphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.InputStream; import javax.xml.transform.Source; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamSource; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.elements.generic.MathImpl; import net.sourceforge.jeuclid.layout.JEuclidView; import net.sourceforge.jeuclid.parser.Parser; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.fop.util.UnclosableInputStream; import org.apache.xmlgraphics.image.loader.ImageContext; import org.apache.xmlgraphics.image.loader.ImageException; import org.apache.xmlgraphics.image.loader.ImageInfo; import org.apache.xmlgraphics.image.loader.ImageSize; import org.apache.xmlgraphics.image.loader.impl.AbstractImagePreloader; import org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM; import org.apache.xmlgraphics.image.loader.util.ImageUtil; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; /** * @version $Revision: 32023847f457 $ */ public class PreloaderMathML extends AbstractImagePreloader { /** * Convert from point to millipoint. */ public static final float MPT_FACTOR = 1000.0f; /** * Logger for this class */ private static final Log LOGGER = LogFactory .getLog(PreloaderMathML.class); /** * Default Constructor. */ public PreloaderMathML() { // Empty on purpose } /** {@inheritDoc} */ public ImageInfo preloadImage(final String uri, final Source src, final ImageContext context) throws ImageException, IOException { final Document n = this.parseSource(src); if (n != null) { return this.createImageInfo(uri, context, n); } return null; } @SuppressWarnings("unchecked") private ImageInfo createImageInfo(final String uri, final ImageContext context, final Document n) { final ImageInfo info = new ImageInfo(uri, Constants.MATHML_MIMETYPE); final ImageSize size = new ImageSize(); final Image tempimage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); final Graphics2D tempg = (Graphics2D) tempimage.getGraphics(); final JEuclidView view = new JEuclidView(n, LayoutContextImpl .getDefaultLayoutContext(), tempg); final int descentMpt = (int) (view.getDescentHeight() * PreloaderMathML.MPT_FACTOR); final int ascentMpt = (int) (view.getAscentHeight() * PreloaderMathML.MPT_FACTOR); size.setSizeInMillipoints( (int) (view.getWidth() * PreloaderMathML.MPT_FACTOR), ascentMpt + descentMpt); size.setBaselinePositionFromBottom(descentMpt); // Set the resolution to that of the FOUserAgent size.setResolution(context.getSourceResolution()); size.calcPixelsFromSize(); info.setSize(size); // The whole image had to be loaded for this, so keep it final ImageXMLDOM xmlImage = new ImageXMLDOM(info, n, AbstractJEuclidElement.URI); info.getCustomObjects().put(ImageInfo.ORIGINAL_IMAGE, xmlImage); return info; } private Document parseSource(final Source src) { Document n = null; InputStream in = null; try { if (src instanceof DOMSource) { final DOMSource domSrc = (DOMSource) src; n = (Document) domSrc.getNode(); } else { in = new UnclosableInputStream(ImageUtil.needInputStream(src)); final int length = in.available(); in.mark(length + 1); n = Parser.getInstance().parseStreamSource( new StreamSource(in)); } final Element rootNode = n.getDocumentElement(); if (!(AbstractJEuclidElement.URI.equals(rootNode .getNamespaceURI()) || MathImpl.ELEMENT.equals(rootNode .getNodeName()))) { n = null; } } catch (final IOException e) { n = null; } catch (final SAXException e) { n = null; } catch (final IllegalArgumentException e) { n = null; } catch (final NullPointerException e) { // Due to a bug in xmlgraphics-commons 1.3.1 which sometimes // creates wrapper around null streams if files do not exist. n = null; } try { if (in != null) { in.reset(); } } catch (final IOException ioe) { PreloaderMathML.LOGGER.warn("Should never happen: " + ioe.getMessage()); } catch (final NullPointerException e) { // Due to a bug in xmlgraphics-commons 1.3.1 which sometimes // creates wrapper around null streams if files do not exist. n = null; } return n; } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/ImageConverterMathML2G2D.javajeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/ImageConverterMat0000644000175000017500000000455111335260530034524 0ustar sylvestresylvestre/* * Copyright 2002 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ImageConverterMathML2G2D.java,v 32023847f457 2009/03/20 14:20:15 maxberger $ */ package net.sourceforge.jeuclid.xmlgraphics; import java.util.Map; import org.apache.xmlgraphics.image.loader.Image; import org.apache.xmlgraphics.image.loader.ImageException; import org.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.impl.AbstractImageConverter; import org.apache.xmlgraphics.image.loader.impl.ImageGraphics2D; import org.apache.xmlgraphics.image.loader.impl.ImageXMLDOM; import org.apache.xmlgraphics.java2d.Graphics2DImagePainter; /** * Convert a MathML Image given as DOM to a Graphics2d Painter. * * @version $Revision: 32023847f457 $ */ public class ImageConverterMathML2G2D extends AbstractImageConverter { /** * Default Constructor. */ public ImageConverterMathML2G2D() { // Empty on purpose } /** {@inheritDoc} */ public Image convert(final Image src, final Map hints) throws ImageException { // TODO: Should be checked // this.checkSourceFlavor(src); final ImageXMLDOM xmlDom = (ImageXMLDOM) src; final Graphics2DImagePainter painter = Graphics2DImagePainterMathML .createGraphics2DImagePainter(xmlDom.getDocument()); final ImageGraphics2D g2dImage = new ImageGraphics2D(src.getInfo(), painter); return g2dImage; } /** {@inheritDoc} */ public ImageFlavor getSourceFlavor() { return ImageFlavor.XML_DOM; // TODO: Use new namespace // return new ImageFlavor( // "text/xml;DOM;namespace=http://www.w3.org/1998/Math/MathML"); } /** {@inheritDoc} */ public ImageFlavor getTargetFlavor() { return ImageFlavor.GRAPHICS2D; } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/ImageLoaderFactoryMathML.javajeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/ImageLoaderFactor0000644000175000017500000000403511335260530034455 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: ImageLoaderFactoryMathML.java,v cca61eec2241 2008/05/23 09:53:47 maxberger $ */ package net.sourceforge.jeuclid.xmlgraphics; import net.sourceforge.jeuclid.Constants; import org.apache.xmlgraphics.image.loader.ImageFlavor; import org.apache.xmlgraphics.image.loader.impl.AbstractImageLoaderFactory; import org.apache.xmlgraphics.image.loader.spi.ImageLoader; /** * @version $Revision: cca61eec2241 $ */ public class ImageLoaderFactoryMathML extends AbstractImageLoaderFactory { private static final ImageFlavor[] FLAVORS = new ImageFlavor[] { ImageFlavor.XML_DOM }; private static final String[] MIMES = new String[] { Constants.MATHML_MIMETYPE }; /** * Default Constructor. */ public ImageLoaderFactoryMathML() { // Empty on purpose } /** {@inheritDoc} */ public String[] getSupportedMIMETypes() { return ImageLoaderFactoryMathML.MIMES.clone(); } /** {@inheritDoc} */ public ImageFlavor[] getSupportedFlavors(final String mime) { return ImageLoaderFactoryMathML.FLAVORS.clone(); } /** {@inheritDoc} */ public ImageLoader newImageLoader(final ImageFlavor targetFlavor) { return new ImageLoaderMathML(targetFlavor); } /** {@inheritDoc} */ public int getUsagePenalty(final String mime, final ImageFlavor flavor) { return 0; } /** {@inheritDoc} */ public boolean isAvailable() { return true; } } ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/Graphics2DImagePainterMathML.javajeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/xmlgraphics/Graphics2DImagePa0000644000175000017500000000632011335260530034316 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: Graphics2DImagePainterMathML.java,v 32023847f457 2009/03/20 14:20:15 maxberger $ */ package net.sourceforge.jeuclid.xmlgraphics; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.layout.JEuclidView; import org.apache.xmlgraphics.java2d.Graphics2DImagePainter; import org.w3c.dom.Document; /** * Actually draw an JEuclidView. * * @version $Revision: 32023847f457 $ */ public class Graphics2DImagePainterMathML implements Graphics2DImagePainter { private final Dimension dimension; private final JEuclidView view; private final float ascent; /** * Default Constructor. * * @param theView * {@link JEuclidView} to paint. * @param dim * Dimension of the view. * @param asc * Ascent of the view. */ public Graphics2DImagePainterMathML(final JEuclidView theView, final Dimension dim, final float asc) { this.view = theView; this.dimension = dim; this.ascent = asc; } /** * Create a new {@link Graphics2DImagePainter} for the given Document. * * @param document * A MathML DOM Document. * @return a {@link Graphics2DImagePainter}. */ public static Graphics2DImagePainter createGraphics2DImagePainter( final Document document) { final MutableLayoutContext layoutContext = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); final Image tempimage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); final Graphics2D tempg = (Graphics2D) tempimage.getGraphics(); final JEuclidView view = new JEuclidView(document, layoutContext, tempg); final int w = (int) Math.ceil(view.getWidth() * PreloaderMathML.MPT_FACTOR); final float ascent = view.getAscentHeight(); final int h = (int) Math.ceil((ascent + view.getDescentHeight()) * PreloaderMathML.MPT_FACTOR); return new Graphics2DImagePainterMathML(view, new Dimension(w, h), ascent); } /** {@inheritDoc} */ public Dimension getImageSize() { return this.dimension; } /** {@inheritDoc} */ public void paint(final Graphics2D graphics2d, final Rectangle2D rectangle2d) { this.view.draw(graphics2d, 0, this.ascent); } } jeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/fop/0000755000175000017500000000000011335260530027463 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/fop/JEuclidXMLHandler.java0000644000175000017500000000527111335260530033531 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidXMLHandler.java,v 32023847f457 2009/03/20 14:20:15 maxberger $ */ /* * Parts of the contents are heavily inspired by work done for Barcode4J by * Jeremias Maerki, available at http://barcode4j.sf.net/ */ package net.sourceforge.jeuclid.fop; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import net.sourceforge.jeuclid.xmlgraphics.Graphics2DImagePainterMathML; import org.apache.fop.render.Graphics2DAdapter; import org.apache.fop.render.Renderer; import org.apache.fop.render.RendererContext; import org.apache.fop.render.XMLHandler; import org.apache.xmlgraphics.java2d.Graphics2DImagePainter; import org.w3c.dom.Document; /** * XMLHandler which draws MathML through a fop G2DAdapter. * * @version $Revision: 32023847f457 $ */ public class JEuclidXMLHandler implements XMLHandler { /** Creates a new instance of JEuclidXMLHandler. */ public JEuclidXMLHandler() { } /** {@inheritDoc} */ public void handleXML(final RendererContext rendererContext, final Document document, final String ns) throws Exception { final Graphics2DAdapter g2dAdapter = rendererContext.getRenderer() .getGraphics2DAdapter(); if (g2dAdapter != null) { final Graphics2DImagePainter painter = Graphics2DImagePainterMathML .createGraphics2DImagePainter(document); g2dAdapter.paintImage(painter, rendererContext, ((Integer) rendererContext.getProperty("xpos")) .intValue(), ((Integer) rendererContext .getProperty("ypos")).intValue(), ((Integer) rendererContext.getProperty("width")) .intValue(), ((Integer) rendererContext .getProperty("height")).intValue()); } } /** {@inheritDoc} */ public boolean supportsRenderer(final Renderer renderer) { return renderer.getGraphics2DAdapter() != null; } /** {@inheritDoc} */ public String getNamespace() { return AbstractJEuclidElement.URI; } } jeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/fop/JEuclidObj.java0000644000175000017500000000342011335260530032277 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidObj.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ /* * Please note: This file was originally taken from the Apache FOP project, * available at http://xmlgraphics.apache.org/fop/ It is therefore * partially copyright (c) 1999-2007 The Apache Software Foundation. * * Parts of the contents are heavily inspired by work done for Barcode4J by * Jeremias Maerki, available at http://barcode4j.sf.net/ */ package net.sourceforge.jeuclid.fop; // FOP import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.apache.fop.fo.FONode; import org.apache.fop.fo.XMLObj; /** * Catch all MathML objects as default element. * * @version $Revision: 8afef6dd0d58 $ */ public class JEuclidObj extends XMLObj { /** * Default constructor. * * @param parent * Parent node in FO Tree */ public JEuclidObj(final FONode parent) { super(parent); } /** {@inheritDoc} */ @Override public String getNamespaceURI() { return AbstractJEuclidElement.URI; } /** {@inheritDoc} */ @Override public String getNormalNamespacePrefix() { return "mathml"; } } jeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/fop/JEuclidElement.java0000644000175000017500000001431611335260530033164 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidElement.java,v 38db1a498ca5 2009/09/25 22:17:03 max $ */ /* * Please note: This file was originally taken from the Apache FOP project, * available at http://xmlgraphics.apache.org/fop/ It is therefore * partially copyright (c) 1999-2007 The Apache Software Foundation. * * Parts of the contents are heavily inspired by work done for Barcode4J by * Jeremias Maerki, available at http://barcode4j.sf.net/ */ package net.sourceforge.jeuclid.fop; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.Point2D; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import net.sourceforge.jeuclid.Constants; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.context.Parameter; import net.sourceforge.jeuclid.layout.JEuclidView; import net.sourceforge.jeuclid.xmlgraphics.PreloaderMathML; import org.apache.fop.apps.FOPException; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.datatypes.Length; import org.apache.fop.fo.FOEventHandler; import org.apache.fop.fo.FONode; import org.apache.fop.fo.PropertyList; import org.apache.fop.fo.properties.CommonFont; import org.apache.fop.fo.properties.FixedLength; import org.apache.fop.fo.properties.Property; import org.apache.fop.fonts.FontInfo; import org.apache.fop.fonts.FontTriplet; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.Attributes; import org.xml.sax.Locator; /** * Defines the top-level element for MathML. * * @version $Revision: 38db1a498ca5 $ */ public class JEuclidElement extends JEuclidObj { private Point2D size; private Length baseline; private final MutableLayoutContext layoutContext; /** * Default constructor. * * @param parent * Parent Node in the FO tree. */ public JEuclidElement(final FONode parent) { super(parent); this.layoutContext = new LayoutContextImpl(LayoutContextImpl .getDefaultLayoutContext()); } /** {@inheritDoc} */ @Override public void processNode(final String elementName, final Locator locator, final Attributes attlist, final PropertyList propertyList) throws FOPException { super.processNode(elementName, locator, attlist, propertyList); final Document d = this.createBasicDocument(); final Element e = d.getDocumentElement(); for (final Parameter p : Parameter.values()) { final String localName = p.getOptionName(); final String attrName = "jeuclid:" + localName; final String isSet = e.getAttributeNS(Constants.NS_JEUCLID_EXT, localName); if ((isSet == null) || (isSet.length() == 0)) { e.setAttributeNS(Constants.NS_JEUCLID_EXT, attrName, p .toString(this.layoutContext.getParameter(p))); } } } private void calculate() { final Image tempimage = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB); final Graphics2D tempg = (Graphics2D) tempimage.getGraphics(); final JEuclidView view = new JEuclidView(this.doc, this.layoutContext, tempg); final float descent = view.getDescentHeight(); this.size = new Point2D.Float(view.getWidth(), view.getAscentHeight() + descent); this.baseline = FixedLength.getInstance(-descent, "pt"); } /** {@inheritDoc} */ @Override public Point2D getDimension(final Point2D view) { if (this.size == null) { this.calculate(); } return this.size; } /** {@inheritDoc} */ @Override public Length getIntrinsicAlignmentAdjust() { if (this.baseline == null) { this.calculate(); } return this.baseline; } /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override protected PropertyList createPropertyList(final PropertyList pList, final FOEventHandler foEventHandler) throws FOPException { final FOUserAgent userAgent = this.getUserAgent(); final CommonFont commonFont = pList.getFontProps(); final float msize = (float) (commonFont.fontSize.getNumericValue() / PreloaderMathML.MPT_FACTOR); final Property colorProp = pList .get(org.apache.fop.fo.Constants.PR_COLOR); if (colorProp != null) { final Color color = colorProp.getColor(userAgent); this.layoutContext.setParameter(Parameter.MATHCOLOR, color); } final Property bcolorProp = pList .get(org.apache.fop.fo.Constants.PR_BACKGROUND_COLOR); if (bcolorProp != null) { final Color bcolor = bcolorProp.getColor(userAgent); this.layoutContext.setParameter(Parameter.MATHBACKGROUND, bcolor); } final FontInfo fi = this.getFOEventHandler().getFontInfo(); final FontTriplet[] fontkeys = commonFont.getFontState(fi); this.layoutContext.setParameter(Parameter.MATHSIZE, msize); final List defaultFonts = (List) this.layoutContext .getParameter(Parameter.FONTS_SERIF); final List newFonts = new ArrayList(fontkeys.length + defaultFonts.size()); for (final FontTriplet t : fontkeys) { newFonts.add(t.getName()); } newFonts.addAll(defaultFonts); this.layoutContext.setParameter(Parameter.FONTS_SERIF, newFonts); return super.createPropertyList(pList, foEventHandler); } } jeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/fop/package-info.java0000644000175000017500000000160011335260530032647 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v e121610bebf3 2007/07/05 11:51:58 maxberger $ */ /** * Contains the fop plugin. * *

For information about fop, please see the * FOP homepage

*/ package net.sourceforge.jeuclid.fop; ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/fop/JEuclidElementMapping.javajeuclid-parent-3.1.9/jeuclid-fop/src/main/java/net/sourceforge/jeuclid/fop/JEuclidElementMapping.jav0000644000175000017500000000476611335260530034347 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: JEuclidElementMapping.java,v 1e2cc460d998 2008/09/23 09:47:56 maxberger $ */ /* * Please note: This file was originally taken from the Apache FOP project, * available at http://xmlgraphics.apache.org/fop/ It is therefore * partially copyright (c) 1999-2007 The Apache Software Foundation. * * Parts of the contents are heavily inspired by work done for Barcode4J by * Jeremias Maerki, available at http://barcode4j.sf.net/ */ package net.sourceforge.jeuclid.fop; import java.util.HashMap; import net.sourceforge.jeuclid.elements.AbstractJEuclidElement; import org.apache.fop.fo.ElementMapping; import org.apache.fop.fo.FONode; import org.w3c.dom.DOMImplementation; /** * This class provides the element mapping for FOP. * * @version $Revision: 1e2cc460d998 $ */ public class JEuclidElementMapping extends ElementMapping { /** Main constructor. */ public JEuclidElementMapping() { this.namespaceURI = AbstractJEuclidElement.URI; } /** {@inheritDoc} */ @Override public DOMImplementation getDOMImplementation() { return ElementMapping.getDefaultDOMImplementation(); } /** {@inheritDoc} */ @SuppressWarnings("unchecked") @Override protected void initialize() { if (this.foObjs == null) { this.foObjs = new HashMap(); this.foObjs.put("math", new ME()); this.foObjs.put(ElementMapping.DEFAULT, new MathMLMaker()); } } static final class MathMLMaker extends ElementMapping.Maker { private MathMLMaker() { } @Override public FONode make(final FONode parent) { return new JEuclidObj(parent); } } static final class ME extends ElementMapping.Maker { private ME() { } @Override public FONode make(final FONode parent) { return new JEuclidElement(parent); } } } jeuclid-parent-3.1.9/jeuclid-core16/0000755000175000017500000000000011335263002020023 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/pom.xml0000644000175000017500000000212411335260530021342 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid-core16 JEuclid Core Module Extensions for JRE 1.6 net.sourceforge.jeuclid jeuclid-parent 3.1.9 This module contains extensions to the JEuclid core which require JRE 1.6. maven-compiler-plugin 1.6 1.6 net.sourceforge.jeuclid jeuclid-core 3.1.9 jeuclid-parent-3.1.9/jeuclid-core16/src/0000755000175000017500000000000011335260530020615 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/site/0000755000175000017500000000000011335260530021561 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/site/site.xml0000644000175000017500000000133211335260530023246 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-core16/src/test/0000755000175000017500000000000011335260530021574 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/test/java/0000755000175000017500000000000011335260530022515 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/test/java/net/0000755000175000017500000000000011335260530023303 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/test/java/net/sourceforge/0000755000175000017500000000000011335260530025626 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/test/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530027245 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/test/java/net/sourceforge/jeuclid/test/0000755000175000017500000000000011335260530030224 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core16/src/test/java/net/sourceforge/jeuclid/test/MathComponentUI16Test.javajeuclid-parent-3.1.9/jeuclid-core16/src/test/java/net/sourceforge/jeuclid/test/MathComponentUI16Test0000644000175000017500000000312011335260530034164 0ustar sylvestresylvestre/* * Copyright 2002 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathComponentUI16Test.java,v b468e2a947ac 2008/11/27 09:30:42 maxberger $ */ package net.sourceforge.jeuclid.test; import java.awt.HeadlessException; import net.sourceforge.jeuclid.swing.JMathComponent; import net.sourceforge.jeuclid.swing.MathComponentUI; import net.sourceforge.jeuclid.swing.MathComponentUI16; import org.testng.Assert; import org.testng.annotations.Test; /** * Tests the MathComponentUI16. * * @version $Revision: b468e2a947ac $ */ public class MathComponentUI16Test { /** * Tests if MathComponentUI16 is available. * @throws Exception if the test fails. */ @Test public void testComponentUI16() throws Exception { try { final JMathComponent jm = new JMathComponent(); final MathComponentUI mcui = jm.getUI(); Assert.assertTrue(mcui instanceof MathComponentUI16); } catch (final HeadlessException he) { // Ignore to make test work on servers. } } } jeuclid-parent-3.1.9/jeuclid-core16/src/main/0000755000175000017500000000000011335260530021541 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/main/java/0000755000175000017500000000000011335260530022462 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/main/java/net/0000755000175000017500000000000011335260530023250 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/main/java/net/sourceforge/0000755000175000017500000000000011335260530025573 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/main/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530027212 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-core16/src/main/java/net/sourceforge/jeuclid/swing/0000755000175000017500000000000011335260530030341 5ustar sylvestresylvestre././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjeuclid-parent-3.1.9/jeuclid-core16/src/main/java/net/sourceforge/jeuclid/swing/MathComponentUI16.javajeuclid-parent-3.1.9/jeuclid-core16/src/main/java/net/sourceforge/jeuclid/swing/MathComponentUI16.ja0000644000175000017500000000473011335260530034042 0ustar sylvestresylvestre/* * Copyright 2007 - 2008 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathComponentUI16.java,v 439a683a20f9 2008/02/18 19:45:38 maxberger $ */ package net.sourceforge.jeuclid.swing; import java.awt.Component; import java.awt.Component.BaselineResizeBehavior; import javax.swing.JComponent; import javax.swing.SwingConstants; /* * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathComponentUI16.java,v 439a683a20f9 2008/02/18 19:45:38 maxberger $ */ /** * @version $Revision: 439a683a20f9 $ */ public class MathComponentUI16 extends MathComponentUI { /** * Default Constructor. */ public MathComponentUI16() { super(); } /** {@inheritDoc} */ @Override public BaselineResizeBehavior getBaselineResizeBehavior(final JComponent c) { final BaselineResizeBehavior retVal; switch (((JMathComponent) c).getVerticalAlignment()) { case SwingConstants.TOP: retVal = Component.BaselineResizeBehavior.CONSTANT_ASCENT; break; case SwingConstants.BOTTOM: retVal = Component.BaselineResizeBehavior.CONSTANT_DESCENT; break; case SwingConstants.CENTER: retVal = Component.BaselineResizeBehavior.CENTER_OFFSET; break; default: retVal = Component.BaselineResizeBehavior.OTHER; } return retVal; } } jeuclid-parent-3.1.9/jeuclid-swt/0000755000175000017500000000000011335263004017543 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/pom.xml0000644000175000017500000000310011335260530021053 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid-swt JEuclid SWT Module net.sourceforge.jeuclid jeuclid-parent 3.1.9 This module is currently empty. It will contain a component for SWT MathML rendering. org.apache.felix maven-bundle-plugin 2.0.1 bundle-manifest process-classes manifest net.sourceforge.jeuclid jeuclid-core 3.1.9 org.eclipse.swt.wpf.win32 x86 3.3.0-v3346 provided jeuclid-parent-3.1.9/jeuclid-swt/src/0000755000175000017500000000000011335260530020333 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/site/0000755000175000017500000000000011335260530021277 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/site/site.xml0000644000175000017500000000133211335260530022764 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-swt/src/main/0000755000175000017500000000000011335260530021257 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/main/java/0000755000175000017500000000000011335260530022200 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/main/java/net/0000755000175000017500000000000011335260530022766 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/main/java/net/sourceforge/0000755000175000017500000000000011335260530025311 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/main/java/net/sourceforge/jeuclid/0000755000175000017500000000000011335260530026730 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/main/java/net/sourceforge/jeuclid/swt/0000755000175000017500000000000011335260530027545 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-swt/src/main/java/net/sourceforge/jeuclid/swt/MathRenderer.java0000644000175000017500000000677411335260530033006 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathRenderer.java,v d5b416878097 2009/08/28 09:30:22 max $ */ package net.sourceforge.jeuclid.swt; import java.awt.image.BufferedImage; import java.awt.image.DataBuffer; import java.awt.image.DataBufferByte; import java.awt.image.Raster; import java.io.IOException; import net.sourceforge.jeuclid.LayoutContext; import net.sourceforge.jeuclid.converter.Converter; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.graphics.PaletteData; import org.w3c.dom.Node; /** * Renders MathML to SWT ImageData. * * @version $Revision: d5b416878097 $ */ public final class MathRenderer { private static final int COLOR_ENTRIES = 3; private static final int BITS_PER_PIXEL = MathRenderer.COLOR_ENTRIES * 8; private static final PaletteData PALETTE_BGR = new PaletteData(0xff, 0xff00, 0xff0000); private static final class SingletonHolder { private static final MathRenderer INSTANCE = new MathRenderer(); private SingletonHolder() { } } /** * Logger for this class */ private static final Log LOGGER = LogFactory.getLog(MathRenderer.class); private final Converter converter = Converter.getInstance(); /** * Default constructor. */ private MathRenderer() { // Empty on purpose. } /** * Retrieve an instance of the converter singleton class. * * @return a Converter object. */ public static MathRenderer getInstance() { return MathRenderer.SingletonHolder.INSTANCE; } /** * Renders MathML into ImageData. * * @param document * The MathML Document to render * @param layoutContext * LayoutContext to use * @return an ImageData instance or null if an error occurred. */ public ImageData render(final Node document, final LayoutContext layoutContext) { ImageData renderedFormula; if (document == null) { renderedFormula = null; } else { try { final BufferedImage bi = this.converter.render(document, layoutContext, BufferedImage.TYPE_3BYTE_BGR); final Raster r = bi.getRaster(); final DataBuffer b = r.getDataBuffer(); final DataBufferByte db = (DataBufferByte) b; final byte[] data = db.getData(); final int w = bi.getWidth(); renderedFormula = new ImageData(w, bi.getHeight(), MathRenderer.BITS_PER_PIXEL, MathRenderer.PALETTE_BGR, MathRenderer.COLOR_ENTRIES * w, data); } catch (IOException io) { MathRenderer.LOGGER.warn(io.getMessage(), io); renderedFormula = null; } } return renderedFormula; } } jeuclid-parent-3.1.9/jeuclid-swt/src/main/java/net/sourceforge/jeuclid/swt/MathView.java0000644000175000017500000000741511335260530032143 0ustar sylvestresylvestre/* * Copyright 2007 - 2009 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: MathView.java,v 2986a8eeaebc 2009/09/24 14:53:08 max $ */ package net.sourceforge.jeuclid.swt; import net.sourceforge.jeuclid.MutableLayoutContext; import net.sourceforge.jeuclid.context.LayoutContextImpl; import net.sourceforge.jeuclid.elements.generic.DocumentElement; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Device; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.ImageData; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.w3c.dom.Node; /** * Contains a display component for SWT. *

* TODO: This is a very basic implementation. * * @version $Revision: 2986a8eeaebc $ */ public final class MathView extends Canvas { // /** // * Logger for this class // */ // private static final Log LOGGER = LogFactory.getLog(MathView.class); private final MathRenderer mathRenderer = MathRenderer.getInstance(); private Node document; private ImageData renderedFormula; private MutableLayoutContext layoutContext = new LayoutContextImpl( LayoutContextImpl.getDefaultLayoutContext()); /** * Create a new MathView Widget. * * @param parent * Parent component * @param style * SWT style attributes. */ public MathView(final Composite parent, final int style) { super(parent, style); this.setDocument(new DocumentElement()); this.addDisposeListener(new DisposeListener() { public void widgetDisposed(final DisposeEvent e) { MathView.this.widgetDisposed(e); } }); this.addPaintListener(new PaintListener() { public void paintControl(final PaintEvent e) { MathView.this.paintControl(e); } }); } private void paintControl(final PaintEvent e) { final GC gc = e.gc; final Device device = gc.getDevice(); final Color c = new Color(device, 255, 255, 255); gc.setBackground(c); gc.fillRectangle(e.x, e.y, e.width, e.height); c.dispose(); if (this.renderedFormula != null) { final Image im = new Image(device, this.renderedFormula); gc.drawImage(im, 0, 0); im.dispose(); } } private void widgetDisposed(final DisposeEvent e) { this.document = null; this.renderedFormula = null; } private void recreate() { this.renderedFormula = this.mathRenderer.render(this.document, this.layoutContext); } /** * @param doc * the document to set */ public void setDocument(final Node doc) { final Node oldValue = this.document; this.document = doc; if (doc != oldValue) { this.recreate(); this.redraw(); } } /** * @return the document */ public Node getDocument() { return this.document; } } jeuclid-parent-3.1.9/jeuclid-swt/src/main/java/net/sourceforge/jeuclid/swt/package-info.java0000644000175000017500000000145611335260530032742 0ustar sylvestresylvestre/* * Copyright 2007 - 2007 JEuclid, http://jeuclid.sf.net * * Licensed 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. */ /* $Id: package-info.java,v 30d4029b1eb0 2007/06/28 18:02:11 maxberger $ */ /** NOT IMPLEMENTED: Provides a Java SWT Component for MathML Rendering. */ package net.sourceforge.jeuclid.swt; jeuclid-parent-3.1.9/NOTICE0000644000175000017500000000451311335260526016226 0ustar sylvestresylvestre************* * JEuclid * ************* /* * JEuclid. Apache-Style Software License * * * Copyright (c) 2002 JEuclid. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by * JEulid (http://www.sourceforge.net/projects/jeuclid/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The name "JEuclid" must not be used to endorse * or promote products derived from this software without prior written * permission. For written permission, please contact * stephan@vern.chem.tu-berlin.de. * * 5. Products derived from this software may not be called "JEuclid", * nor may "JEuclid" appear in their name, without prior written * permission of stephan@vern.chem.tu-berlin.de. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL TOUCHGRAPH OR ITS CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * */ jeuclid-parent-3.1.9/src/0000755000175000017500000000000011335260540016102 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/site/0000755000175000017500000000000011335260540017046 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/site/docbook/0000755000175000017500000000000011335260540020466 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/site/docbook/webstart.xml0000644000175000017500000000252611335260540023050 0ustar sylvestresylvestre

Webstartable application If you have a working Java Webstart (1.5 or newer) set up, you may start the JEuclid MathViewer directly from this page: Webstartable MathViewer application. Please note: This is a current snapshot. It is updated along with the deployment of the site, so please see the "Last Published" for an excact version information. The webstartable application does not include the advances export filters for most vector based formats. Please download the distribution if you need these plug-ins. Also note: The Webstart application is not trusted by a valid signature, and never will be. Webstart will complain about this fact. This application will run on your local computer and it will have access to your file system. USE AT YOUR OWN RISK! (However, the risks are the same as downloading it and running it locally).
jeuclid-parent-3.1.9/src/site/docbook/programming.xml0000644000175000017500000000777711335260540023554 0ustar sylvestresylvestre
Programming with JEuclid Most information can be found in the JEuclid API Documentation. This document gives a short overview and pointers where to start. If you program with JEuclid and you need to do more than simple displaying / converting of math, you may be interested in the following
Converting If you need to convert from MathML to any image format, SVG, SVG-DOM, or BufferedImage use the net.sourceforge.jeuclid.converter.Converter class.
Displaying AWT net.sourceforge.jeuclid.awt.MathComponent Swing net.sourceforge.jeuclid.swing.JMathComponent SWT net.sourceforge.jeuclid.swt.MathView
JEuclid rendering pipeline To parse a String or File into DOM, use net.sourceforge.jeuclid.parser.Parser To convert an arbitrary DOM tree into a JEuclid DOM tree use net.sourceforge.jeuclid.DOMBuilder You can then create a net.sourceforge.jeuclid.layout.JEuclidView which contains the layout information To actually draw the formula, call the JEuclidView#draw(Graphics2D g, float x, float y) method
JEuclid DOM Model The JEuclid DOM Tree conforms to the MathML Document Object Model Java Binding. This means you can (and should) use the methods defined there to modify the internal tree.
JEuclid View The JEuclid view registers for events with the JEuclid DOM model. Changes in the JEuclid DOM are therefore noted in the JEuclidView. This means that subsequent drawing operations will only layout the modified part of the tree, saving rendering time.
jeuclid-parent-3.1.9/src/site/docbook/openoffice.xml0000644000175000017500000000220611335260540023325 0ustar sylvestresylvestre
OpenOffice Support JEuclid has native support for reading files created with OpenOffice. All JEuclid apps can open and work with .odf files directly. OpenOffice up to 2.0.x used the "OpenSymbol" font with characters in the private Unicode range. A mapping table exists, and all characters should be mapped. If you encounter a non-working character, you may be missing a font (see file a usage). If that does not help, please file a bug report. Do not forget to attach the .odf file! OpenOffice ≥ 2.2 uses the standard Unicode character range. If you encounter a non-working character, please install a Unicode font). The OpenSymbol font should work just fine, as long as its from OO ≥ 2.2
jeuclid-parent-3.1.9/src/site/docbook/source.xml0000644000175000017500000001733311335260540022517 0ustar sylvestresylvestre
Hacking JEuclid
Prerequisites To work with the JEuclid source, you will need to download and install Subversion Maven Sun or Apple Java SDK >= 1.6 (others are untested) Eclipse (optional) or NetBeans (optional) Maven 2.x Plug-in for Eclipse (required if you use Eclipse) Maven 2.x Plug-in for NetBeans (required if you use NetBeans) If you have commit access, the following extra plug-ins for eclipse are highly recommended: Subclipse Eclipse Checkstyle Plugin Eclipse TestNG Plugin
Building the source You can access the source code as described on the JEuclid repository site. Once you have the code available, use Maven to build and package the code. Here are the most common commands: mvn install will compile, test, bundle, and install JEuclid locally. Use this command if you are not sure what else to use mvn scm:update will retrieve the newest version from the source repository mvn clean will remove the target directories, forcing a clean build mvn compile site will create the updated website, so you can check the reports mvn test will compile and run the tests First time builders may have to install the "support" package before any of the other modules can be compiled. This package contains dependencies for all builds, such as the checkstyle configuration, and some fonts. The results of these commands can be found in the target/ directory of each module. The most notable artifacts are in jeuclid/targetjeuclid-...-distribution.zip (binary distribution) and jeuclid-...-osx.zip (OS X application bundle). If you get an out of memory error during build, you need to adjust the memory available to maven. You can do this by setting the MAVEN_OPTS environment variable to -Xmx512m
Preparing a patch To create a patch, please execute mvn scm::diff. The resulting patch will be saved as jeuclid.diff. Please rename your patch before submitting it through issue tracking. When you create a patch please: Add a test if possible (in directory src/test/java/net/sourceforge/jeuclid/ for the module) Provide a short entry for the changelog in src/changes/changes.xml (main module) Try to follow the coding style Please note: By submitting a patch, you agree to publish it under the same license as the rest of JEuclid (ASLv2).
Coding Rules The coding guidelines are given as a set of Checkstyle rules. Please run checkstyle with mvn checkstyle:checkstyle and view the results in target/target/checkstyle-result.xml or target/site/checkstyle.html. The ruleset is listed on the Checkstyle results page and explained on the Checkstyle Standard Checks page. You can generate a set of reports on your coding style by calling mvn site and viewing the result in the target/site directory. You should try not to introduce any new violations.
Developers Your should login to SVN with your sourceforge username and password. It should ask you for it the first time you try to submit When you add new Java files, please set the property svn:keywords to Revision Date Id. You can do this automatically on Unix by running the svnproperties.sh script. For some features you'll need to tell maven about your sourceforge account. You can to that by adding the following to your ~/.m2/settings.xml file (if this file does not exist, create it with these contents). Replace YOUR_SF_ID with your sourceforge username, and /path/to/ssh/id_dsa with the path to your SSH id file. <settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>sourceforgejeuclid</id> <username>YOUR_SF_ID,jeuclid</username> <privateKey>/path/to/ssh/id_dsa</privateKey> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> </server> </servers> </settings>
jeuclid-parent-3.1.9/src/site/docbook/content.xml0000644000175000017500000000570411335260540022670 0ustar sylvestresylvestre
Content Math
Content Math Content Math support is based on an XSLT transformation script. Although this script is now integrated into JEuclid, it has its own homepage at: MathMLc2p Homepage MathMLc2p Tracker At this point the content math support is to be considered preliminary. Therefore feature wishes and bug fixes are greatly appreciated! Please note that content math only works if your document is in the MathML namespace. Declaring the DTD is not sufficient!
Hacking Content Math Content MathML depends on an XSL Transformation Script which transforms content MathML into presentation MathML. You can download the current version from the JEuclid Source repository. Alternatively, you may try the following link: Content Math To Presentation Math XSLT Script Once you have the script, please use it to manually transform your content MathML to presentation MathML. You can use xsltproc on Unix/Linux systems, or Apache Xalan on all Java platforms. Make your modifications, test them manually, and submit a patch to the Content Math Tracker (see link above). Please Note: In many cases, the exact representation of content MathML is subjective. If your modifications are something you "prefer", then please a parameter for it! If it is something that you are sure everyone wants (because it is missing or breaks semantics), feel free to just patch the affected area.
Passing parameters to the transformation Is still unsupported, due to the lack of a good idea on how to support it. It will likely be similar to the standard JEuclid extensions.
jeuclid-parent-3.1.9/src/site/docbook/history.xml0000644000175000017500000000261111335260540022711 0ustar sylvestresylvestre
History This project started as a subproject from BMBF project(www.vs-c.de) in Germany. One of the big problems from HTML is, that it isn't possible to display mathematical equations in the browser. Since MathML initiative started at w3 consortium, it is possible to store mathematical formulas in XML documents, but there isn't a easy and cheap way to display this formulas. So this project launched with the destination to fill this gap. The project started as a component for the Apache Cocoon project(xml.apache.org). This component converted MathML documents to GIF images or SVG. So the user could easy write documents with embedding MathML fragments, and the component create in situ the GIF images. The SVG converter was used to create documents with embedding SVG fragments for e.g. the FOP to create PDF, or what else, documents. After being dormant for some time, the project was picked up again by Max in the summer of 2006. It has since then shifted its focus, away from a cocoon component to a more generic MathML solution.
jeuclid-parent-3.1.9/src/site/docbook/usage.xml0000644000175000017500000003124411335260540022320 0ustar sylvestresylvestre
Obtaining JEuclid You may download JEuclid from the sourceforge project site for JEuclid as a binary package or from source. Please note: There are several binary packages: jeuclid-x.x.x-distribution Contains the full JEuclid distribution with all supported output formats (such as png, svg, pdf). This is what most people need. jeuclid-x.x.x-minimal Contains a minimal JEuclid distribution which supports only the standard Java output formats. Use this if you need only these formats (such as png), if you want to embed JEuclid into a non-maven2 project, or if you're interested in viewing math only. jeuclid-mathviewer-x.x.x-osx Contains the MathViewer as an application bundle for Mac OS X. jeuclid-mathviewer-x.x.x-win32 Contains the MathViewer as an application bundle for Windows. It works both on 32bit and 64bit Windows, as long as a 32 bit JRE is installed. jeuclid-fop-x.x.x-distribution Contains only the plug-in for Apache FOP. If you just want the MathViewer you may also start it from our MathViewer WebStart page.
Additional Installs For best results, we recommend installing either one of the following font sets: DejaVu Fonts Windows: Download the .zip distribution from the site mentioned above. Install these fonts into your system (instructions are available at Microsoft Typography) OS X: Download the .zip distribution from the site mentioned above. Drag the .ttf files into your /Library/Fonts (or your personal Library/Fonts) directory Debian + Ubuntu Linux: use apt-get install ttf-dejavu OpenSymbol The DejaVu fonts are not yet complete. Full support for MathML symbols is on the roadmap for the near future (as or mar 07). In the mean time, the OpenSymbol font (from OO >= 2.2) has support for many mathematical symbols Windows / OS X: This font is part of OpenOffice Debian + Ubuntu Linux: use apt-get install ttf-opensymbol Arial Unicode MS Windows: This font is part of MS Office (2000/2003) OS X: This font is part of MS Office (X,2004) Unix / Linux: Please use the DejaVu fonts. Do not copy the Arial Unicode font from a Windows system, as you may violate the license! Cambria / Cambria Math Windows: It is included in Windows Vista and Office 2007. Other Systems: Do not copy the Cambria font without a valid license! Also, please ensure you have installed Asian font support. Some characters in MathML are part of the CJK character set.
MathViewer To run the MathViewer application, you may use the mathviewer or mathviewer.bat script from the bin/ directory of the distribution. If you use the one of the OS dependent packages, the MathViewer is included as an application.
Convert MathML to other Formats You may use the included mml2xxx (unix) or mml2xx.bat (windows) script from the bin/ directory in the distribution. Example: mml2xxx a.mml a.png -backgroundColor white To get a list of possible options, just mml2xxx without any parameters. Please see the JEuclid FAQ or run mml2xx without parameters for a list of supported output formats.
Within Ant You will need to define the converter task: <taskdef name="mmlconverter" classname="net.sourceforge.jeuclid.ant.MathMLConverter"> with the needed JAR files in the classpath.
Input and output file(s) The task can work with single input file or with a fileset. If you use a single input file, you must set an output file as well. Single input file <mmlconverter in="input.odf" out="output.svg"/> For using simple filesets, there are 2 methods: as attribute of task or nested element. Nested elements are universal, because they can repeat more than one element include/exclude. Examples are below: Fileset with input files specified by attributes <mmlconverter basedir="input_dir" destdir="output_dir" includes="*.odf" excludes="test*.odf"/> Fileset with input files specified by elements <mmlconverter basedir="input_dir" destdir="output_dir"> <include name="*.odf"/> <include name="*.mml"/> <exclude name="test*.odf"/> <exclude name="test*.mml"/> </mmlconverter> If you do not set basedir, the task will use the base directory of the called build file.
Type of output file The next attribute is type, which specifies which converter class to use. Default type is image/png. <mmlconverter in="input.odf" out="output.svg" type="image/svg+xml"/>
Font size and fonts Sets basic font size and others font size as minimal for anti alias. Font size <mml converter in="input.odf" out="output.svg" type="image/svg+xml" fontsize="22.0" antialiasminsize="10.0" scriptminsize="8.0" scriptsizemult="0.71" /> Next parameters are lists of font families e.g. for Sun-Serif, Monospaced font family. List is seperated by comma. List of font family <mml converter in="input.odf" out="output.svg" type="image/svg+xml" fontsmonospaced="Courier,Courier Mono,Courier New,Lucida Sans" fontssunserif="Helvetica,Arial,Arial Unicode MS,Lucida Sans" />
Others parameters As others parameters can sets background/foreground color, enable anti alias or debugging and other. All supported parameters are same as in command line interface (see ).
As FOP plug-in Documentation is available on the JEuclid FOP plug-in site.
Embedded MathML within XSL-FO or XHTML You may use the included foprep application to convert MathML embedded in XSL-FO and XHTML files to SVG. This will allow you to render your documents with other xsl-fo renderers or on browsers with SVG support (newer versions of Opera, Firefox, Safari, ... ).
In your own App
Programming with JEuclid This information has moved to the Programming with JEuclid page.
Java 1.6 extensions JEuclid contains additional functionality available on Java ≥ 1.6. To use this functionality you need to add jeuclid-core16-xxx.jar to your project in addition to jeuclid-core-xxx.jar.
Maven based projects JEuclid is uploaded to ibiblio, and is therefore available in your project by adding <depencency> <groupId>net.sourceforge.jeuclid</groupId> <artifactId>jeuclid-core</artifactId> </depencenty> to your dependencies section.
Snapshot versions If you wish to use the latest developer version, you need to declare the following repository <repository> <id>jeuclid-snapshots</id> <url>http://jeuclid.sourceforge.net/m2-snap/</url> <releases> <enabled>false</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository>
As a cocoon component To use the Cocoon component you have to download JEuclid 2. Please see the included INSTALL instructions. The Cocoon component is currently not under active development. Volunteers are welcome!
jeuclid-parent-3.1.9/src/site/docbook/faq.xml0000644000175000017500000001162611335260540021765 0ustar sylvestresylvestre
FAQ
Supported MathML versions JEuclid has built-in support for: MathML 1.0.1 MathML 2.0 (second edition) OpenOffice MathML 1.0.1 You may load either an XML file (.xml, .mml) or an OpenDocument Formula file (.odf) directly in all JEuclid applications.
Supported Java Versions Supported and tested are: Sun JDK / JRE 1.5 / 1.6 Win+Linux Apple JDK / JRE 1.5 / 1.6 (OS X) Known not to work are: OpenJDK / IcedTea 1.6.0-b11 (and possible other versions) Stretched operators are rendered in a position which is too high This bug is fixed in some distributions of b12 (such as Fedora 10), and probably in all distributions of b13.
Font problems
Which fonts are available to JEuclid JEuclid 3.1.1 introduced a "listfonts" commands. Please run it to show a list of available fonts.
Under- or over brace not shown MathML defines these are characters from the CJK (Chinese, Japanese, Korean) set. Please install Asian font support in your OS. On Debian-based systems, the "AR PL KaitiM Big5" font (package ttf-arphic-bkai00mp) is known to work.
Script, Fraktur, or Double-Struck fonts are not working This means that no font supporting these is available to JEuclid. Please run "mml2xxx" to see a list of known fonts which are supported by JEuclid If your font is on that list, check if JEuclid knows about it (run listfonts). If not, install the font properly in your OS If your font is missing on the list, please open up an issue. If your using the FOP plugin AND your font is in the list AND listfonts shows its available, you may have a problem related to classloading. This problem is fixed in xmlgraphics-commons >= 1.3.1
Available image formats
What output image types are supported? This depends on the version of Java you are using. All image types supported by ImageIO are supported in JEuclid by default. Additional Image plugins will be picked up from the classpath. The full distribution includes FreeHEP and Batik. JPEG (always) PNG (always) BMP (always) WBMP (always) GIF ( > JDK 1.6, or with FreepHEP) SVG (with Batik) EMF (with FreeHep) PDF (with FreeHep) PS (with FreeHep) SWF (with FreeHep)
How can I add support for more image types? By adding any ImageIO compatible plugin to your classpath. An example is Jai-ImageIO
jeuclid-parent-3.1.9/src/site/docbook/roadmap.xml0000644000175000017500000000407711335260540022643 0ustar sylvestresylvestre
Roadmap Done: Support W3C DOM model for all existing elements. (done) Make sure the most important checkstlye issues are addressed, such as full JavaDoc documentation. (done) Refactor to provide a more future-compatible API (done) Modify layout code to use "float" instead of "int" coordinates (done) support content markup (done) Future ideas (currently there is no active work on these going on): use axsl-font-r for automatic font selection (delayed indefinetly) provide support for CSS, maybe through batik-css. support MathML 3. Implement a linebreaking algorithm General issues: Address the Issues from the issue tracking system. Resolve the TODO items from the code. Clean up Checkstlye issues.
jeuclid-parent-3.1.9/src/site/docbook/extensions.xml0000644000175000017500000001066311335260540023415 0ustar sylvestresylvestre
JEuclid Extensions to MathML JEuclid Provides some extensions to MathML. These extensions allow you to control the rendering in more detail than allowed by the MathML specification. The extensions use a special JEuclid namespace, and should therefore just be ignored by other MathML renderers.
Specifying rendering parameters (3.1.2+) You can add additional attributes to the <math> element to specify JEuclid layout parameters. The attribute names are the same as given in the command line tool, prefixed with the http://jeuclid.sf.net/ns/ext namespace. Example: Command line argument fontSize becomes: <math xmlns="http://www.w3.org/1998/Math/MathML" xmlns:jeuclid="http://jeuclid.sf.net/ns/ext" jeuclid:fontSize="24"> Check the command line tool for a list of possible parameters and their values. Note: Rendering attributes given for the math attribute can not be overwritten by the external context. This means that if one of these attributes is set, it will always overwrite the settings in the MathViewer. Note: Please note: In JEuclid versions 3.1.2 - 3.1.7 the namespace was called http://jeuclid.sf.net/ns/context instead of http://jeuclid.sf.net/ns/ext. The old namespace is still supported, but should not be used, as it will be removed in a future version. Note: Please note: In JEuclid versions 3.1.2 - 3.1.5 the attributes where named by the internal name, e.g. MATHSIZE instead of fontSize. The older attribute names are still supported (on the old namespace), but should not be used, as they will be removed in a future version.
Stretchy attribute (3.1.8+) The stretchy attribute of the mo element is extended to support two new values: true will stretch the operator in both directions false will not stretch the operator horizontal will stretch the operator horizontaly only vertical will stretch the operator vertically only To use the new stretchy attribute value, you must put the stretchy attribute in the JEuclid extension namespace (see above). Otherwise you will produce incorrect MathML which will not work with other renderers. If both the JEuclid and the default stretchy attribute are set, the JEuclid stretchy attribute takes precedence. Example (assuming jeuclid defined as the extension namespace as above): <mo stretchy="true" jeuclid:stretchy="horizontal">...</mo> Will stretch the operator on other MathML renderers (depending on their behavior) and horizontally in JEuclid, Example 2: <mo jeuclid:stretchy="vertical">...</mo> Will not stretch the operator on other MathML renderers (unless defined by the operator dictionary) and vertically in JEuclid,
jeuclid-parent-3.1.9/src/site/site.xml0000644000175000017500000000514511335260540020541 0ustar sylvestresylvestre JEuclid images/logo.png http://jeuclid.sourceforge.net/ jeuclid-parent-3.1.9/src/site/xhtml/0000755000175000017500000000000011335260540020202 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/site/xhtml/index.xhtml0000644000175000017500000000426011335260540022371 0ustar sylvestresylvestre

About JEuclid

JEuclid is a complete MathML rendering solution, consisting of:

  • A MathViewer application
  • Command line converters from MathML to other formats
  • An ant task for automated conversion
  • Display components for AWT, Swing, and SWT

JEuclid features:

  • Almost complete support for presentation MathML 2.0
  • Basic support for content MathML 2.0
  • Initial support for the upcoming MathML 3.0

What's new?

Please report issues on the JEuclid issue tracker.

Endorsements

JEuclid 3.1.8 - 100% Clean

launchpad

debian debian

jeuclid-parent-3.1.9/src/site/apt/0000755000175000017500000000000011335260540017632 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/site/apt/example4.apt0000644000175000017500000000306111335260540022057 0ustar sylvestresylvestre \ [images/example4.png] Screenshot --- { a , ... , a k   a 's , b , ... , b   b 's k +  elements } --- jeuclid-parent-3.1.9/src/site/apt/example7.apt0000644000175000017500000000061611335260540022065 0ustar sylvestresylvestre \ [images/example7.png] Screenshot --- x y b a z c d --- jeuclid-parent-3.1.9/src/site/apt/example6.apt0000644000175000017500000000067511335260540022071 0ustar sylvestresylvestre \ [images/example6.png] Screenshot --- I ( x ) = F ( x ) + C --- jeuclid-parent-3.1.9/src/site/apt/example1.apt0000644000175000017500000000056211335260540022057 0ustar sylvestresylvestre \ [images/example1.png] Screenshot --- 1 x dt t --- jeuclid-parent-3.1.9/src/site/apt/screenshots.apt0000644000175000017500000000012211335260540022673 0ustar sylvestresylvestreScreenshots [images/screenshot.png] MathViewer application displaying a formula jeuclid-parent-3.1.9/src/site/apt/example5.apt0000644000175000017500000001002511335260540022056 0ustar sylvestresylvestre \ [images/example5.png] Screenshot --- x = ( { x 11 x 12 x 21 x 22 y 1 y 2 } z ) = [ + ] x = 0 x = 1 = a + b + + y 123 + z a b c --- jeuclid-parent-3.1.9/src/site/apt/example2.apt0000644000175000017500000000064411335260540022061 0ustar sylvestresylvestre \ [images/example2.png] Screenshot --- ( h k / 2 ) --- jeuclid-parent-3.1.9/src/site/apt/example3.apt0000644000175000017500000000437711335260540022071 0ustar sylvestresylvestre \ [images/example3.png] Screenshot --- ( ( a b c d ) ( e f g h ) 0 ( i j k l ) ) --- jeuclid-parent-3.1.9/src/site/resources/0000755000175000017500000000000011335260540021060 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/site/resources/images/0000755000175000017500000000000011335260540022325 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/site/resources/images/example5.png0000644000175000017500000000757311335260540024567 0ustar sylvestresylvestrePNG  IHDR+r R?BIDATx==af5⃿M9shIO|bt]@\' t}*m\d7z1vX,3!_}qs:޾}ëW~zTM+_Cy<vt౬:ݻwby_~–ĕXo26Sg ]u0կ_^_\u>>>!"l Q^_VTq0;<5ks:E$3_BX"qoXdώ׎YMbUeq=A֕ Y1ꘄ3 9d'}P>7p?|Sd:łkjACb YdSob\ ܒ#8п+Kg[J+>N@-Hx-V2Z%AxUJq+`6VHlw9rme}?::ڹĊV.UʣU+l+QRbQދAUU!{}J^[bzo6?Ak*T/Vw|'cfXBH]XȎiC bb%k@%BNJ'ȴ+U8OIjaHg BrXhVdYA ,`Y݌PJ2]Z%lKЪʽJ DzXP=Ib$0X"!Vm8+*64U|$ b@Mb`}q=t!Vn_SuիӖ**VȼF_ V&nBbIJB=0tb%'"Vv,ZVj|\smeA~Gb2/b̯)1X0@RQJ#s})V(VIj\̕onHNǩy'*1p8Ie+>kY؍;EcSj,hYP?(f6̯^N+ C2_?,5?;H%cDJ.!V܀XI=yJNzXRK|r0x99I(T|X ǵqVsz(QԨLc~Ll.}QF&&^ Iiשb5 [Wy):g$ΰ2fJ`TK_]㻲ts:7/[+k$P,N\⤿*u}ߺ*_u}X]& `#|)E`:WJ e_r:jLR0RJuxe=/B;6 } 5A-&oFTAJ;]}w wtZX[+ّW J5BI|ⰪdU;d=?bފclu_E]I/ T%Vj gWg^ql)$Vm) )O-⧱X]`GoP,X ՙp/x9]lgo%V<]8 9pm`JZq [GS֓,}q.3UkUx.`-PJx62G%+)V:dlj]]ʍ^]a ϐt`lн6 pZeub%ݮ@c%f{I2R.ŪG{L3>{>X6$>S{RVb皫ܤ buaXjb  Hj!+.nى ! {H{iwY"]-;@ xJ+?2sG%-CNX %H+kkPc»W4P}N`3Z=Pv.}~YmƖ++,zlj:'Ƨ{OJ|;{Ջ~IћY VbkmqnE^j\8ǘs2F岵qꥒ> !VLobzS~(V#ڭŋL+^Bmٵ&mF3zL%2r?߻W'r\b,VضN+Ե˫e8NuCifxc )_l>cFY|,> {H@[1, b,V.~os[YYRmj/ڤX7EZv Zٷij/cʔ٨IP+ݑ%}H8KK6C,@+5#"lϲKs=K?ơړU-.VC|򽌭^Ū_~wĊbq]_f[V)I :ct +qp)V $*Ĩ:ctWb6Հ$_[gr V6U8$V)9~wDZu*1s'}_Z"X1԰lII23b2YV/O+6T2}_2sC1*t=X0MNc.#[vYR5t]R_F֊b>KR: 2VT)-fYƲRl~Ȭ1I??ЊŪG.׀Osm e̾F^F-) zq,5 Ӥb%]SIUN-|.:l{X }y8@%+mi#bJi4''~+0ԲRFlj&<Hv_ொ h]cs:!V@c|L@2ҧl+}.)rn"PօWY#VWԶjϠ+QzPe&ΠT1*G;=Iü2XPXI:dȧ"x@Of"jb@Eb!K9%ŇCSU#pi T>B>ĪZZDPXXG63cXUB= Vh@lbALdɽ! H@] IG@EPmQIճ8Mpʃy)Vy)_g2[x;hZ1~<*C +p&jW}43K&T()9znD@(urY ⍀P|*\?wCT4-8X}Dro6;hYPBFZY$73o~N&`s8IOwl6{JZ{Cj9G {2ҠNz5/8x>R4:M/}Jb4xLK\rR/h<J>䞲 X/oܷ܎&kGPc)@$Qjc4 ܵ4JQ*s_& ?țb1 2VBCA>\4=\瑒9)lR.Q"\ģL'PdPQXyDXN+ Pta&CBB3:N(V#5P=+ƚxZ CLݧ_)>6&g&m׷t*VL=*tٱe6.0r8Y"e)85(;"(TMh i1_67 &gh+#I;^IENDB`jeuclid-parent-3.1.9/src/site/resources/images/logo.png0000644000175000017500000003014411335260540023775 0ustar sylvestresylvestrePNG  IHDR>abKGDC pHYsHHFk>0IDATx}i]E[;G2$$$Qd2D (ڟ6jЭ"* !Ќ̃͠ `H 7MrZߏUvSyn9{׮]ֻƪ]ZZZZZZZZZZZZZZZZZZ%EٿryQeGs}-5oZ y^G2aWNG Q|u[[|\[nF .nJDOvpdϙq۪='CeG ]E?wЄaCvL8^p/-;`ͭÇٶu>W~;`ȱF)+7 DܨBIW^8j ɲ4]=n\Òm~;Ig혟Umiن"->ǚgvᵵ;nn4'77?g󏧜K6[?t/>F,Ɯ`ĩ(2ӄRPܜ>wjZhF斂%Qss@OGM{T}{ZvS EUyv`gί|}y|WjmrO_<{;F՞}"ҕ܎gը#}!T(tdUֳm$(d7JtOJq1M 4li8 m1P짮v *,$H0ߎ⺕ Gۗk{@5]x?u`Ϟ=J=}w?4ŧ70|S_DCSex&>  Eg* @D$$ 0fЖN߃'yNK@X&k!!Q|Y`>7\$nM:^ 4A)3ϔ'LpU?矸pgT0NEIVF) +"k1y%`FRJGyMC1A> 3W2o+ʶ\R>0 2`q@x.igsK{zSy./pigζM|I\G,~Hҽ}{\] ?d.8xlG<'62vJ:%k#۞bQ Iz$Tٛ7߿jwK ;仯uϿ&瘷0|ܿo+GJ;M.=3Q̙=g~8}_Z۶;]=$?̘jqye@a8)%+Al%.Glg7&pXNX==}Gο a/(2# GsA 7, >X|+/S8cpc{SwaɎL_{`mRaJTdDTqkAIk¡׳4VY J,J @J}Ygq7bΦ_Sظs^xv-#FIsy( 8K0[?HP%r >u0{b9SLƹ|FBsf瞸 'x#úq=?4RJeVx,EQBh*M0WjJl]%5A</.1[v9v5{powr/U@UȠ& &VT*/g̞ âEGDcS3njz"7য়}7|7^{-/HտwPC&C\c$'Re$,S^^8?dm]W{[g d G= ủ"@ 5fr+B=`lBx_D}}Oɓ&`ؐP_|k~uO0q87;.r#)@%`VJx)͈?h|!/ R=* z~5rỊ r#7Z1Tb$F"_P ?ֻS&ODcc#fΜ>]mkm/mxs,4[|R:7(U@{ 0_БM l@{039Pџ+2?"bRHGÂ`~/#ƍ@aLGBN_r".#OwcZ')80τɷPۜ3:@ ƚt ƌ-8+̺Z=\@$3s̏@Y95^;X·+xX*j7L\e2m}HJ@h>y&?y=3ZaHH%Ó>atmVkfx!#&'2RJX l_h_~e¸qc0nܘP?Dy b_Y_Y-LA,X ,\$P E@ dD~SQ`,c4"gar C@ 3 <#NQ| WJ ۞P `?r@gG1b3w( ?P9`}S^C8%A .%x/a5 m N v?[*HrU`b8ԋ%XB+h0dH'&HÈ0m$@ssfΘ@a۶a9%gշ #`R8vDkR)(bJ I#[<xPoO()- 5Hv`5 oqtx2<Ygƍq#0bİ<^BfB8zYmFdSȚǕm'G3^(df`d*ʬ/B%a* I?#$R$u׼ P m} @کo3cE\V`9/!P Cϝdę:~ʞ#-@*9Q$ w\) 8&PlJVĒB>@5^cpK&Nf܎kCW@{{;ۑeT'K>H#7+n٘rKm:oJY6ߙRZhp! @b44 t"6&2v 1wSā˽dxhAJVUt.56mv=hkkCG{GNlsc3O^i;Z0Or\IvL[i6E1^쾼ut"Yb-0wwwvw6%Xc6KV!vydx% # +pɄr)bG΃]r]ߔ< @CED򌖠+vo@JIĂdd-U<*̗0L'OT|&<6> 1>.m=a}ሑ'( &$H!~0m9ZDv޶PopX!6\$յt.3kjj "ħDxsĜ3)h 2'ȍP|_D)JJXִDsE }`o\N 0frљгk}5Y/ɥb䏓tu|kQh@F~">8F:}--hWE@27 JºTV)y ;jBMNfx˨9N̘Bpk`T1H>*%3r|?`(湞lOL81L):bvQ/*y\. 羉'3/ f:3'Lu{J"3q(H5@MYΧADJu^k$ʨJ~-S n9zHPDd \$b:ڨěG@Vѹ}oRUoؗ< _ Ifsvy%Lv1Hi!(TVN%̀wh* 4XՋbAJY/6UcUT ~zm-@cO"<׳{M/{{ ER)tLcp_+4C8Z+oF(Dq3DqkDG(&7H TA}NbPz%@|Yq;S@1/8×0lV-!)E:6=jGYiиȐBuXE;mM !}/LF4GP;ޟ1gw>P=SwlU---)fDx9j  Y'Fg3 ,XMG8ǷcĴXWhC)UtpùAIv/2P#8Nٽw/`މ;_=ޗX_G28y}(3ٮ<bZ)*0&-!%$@r)uf^`|-͢ڥ{dҫ~zz{$<~pmں P@VR4o% ~-B 7֚Q̼8U7Ƌmyfg loBܜ0C[Bnذ'x8oLM4 To 9?F|O)kHĚ49 '}"~\shnCzDhivh0׻ҝ ^SE=c  }@^-9V Q{)dD=,E<ٵp{"g LNpmO'a˶L8ct$*%R܇mD&3G˳l)I$/$=}JݟUlhN> yƎ2 [-w< E[=RDG[3ul67çG̏}R CiY$@QNC7kYX!6mdɛ:k6\uhj@`Js='VY?G1 Baf٣Xf#y;P__¢@sS]>j4֗t< ( X:ĸ 5E2PsA7-z3DK Yja\kֶ-Gכcw_s9z4ryk-91fT&YD~DLQ#Z> LAG89 "FH]>(p-"滝:c'4ۦĸ-P欄չvH[ _v _8 ZkpCEcNF=׸a8mSdbR+J[@Aظe% ٖ %U@HIUMu'w̏ODa$Abk["h4Ec{2ȶނ{o=koo}[8e@xW_ݏv8cPe; .'R-uB`)Ag>S." Y;RՐǫ7 U>}{L@HR bsgٶҠaEč ez?ccæm;q]gu/}Whmn)c0nt'7)-ͪ2( Qԛ/Pu$(ٓv@b%`)v vڴuYCΣP1O%r^f Fi/k9_y?;%, <ܫ䇏C5Nx,d*Z!Hb;G_{{%̘5C)_C I񂝪>A`vԤ:OȽVoNT(;'a}Y {o~߆E:Ϧ ]e4{n RɱpI(P͒!1%FQ& 0*fp,!1Jd-ּMLl[,C3s=*f,a0SZġ\] W뵿Req6Uڈ]Gr"H"J2Sv?f6Ę#%<6a }:v2SUPu˂@ \&)gbGXPi<;_BH ^hL[2{.OGƐ&|cۼLo U]XWr0 ] Y?GJHFXXA`/ Z)(U '_L#L|8+H-GH i~<<* چA)}'g]KJ|8۝D93aS@J 08U1)k 2|/Q"ך v> E y#f $--=pٵ;,.ң5"wb]OڷSK?v<+*bn"nA>Sb ƴVTs/mB)H3:4 J!UucE 70sP I D-(W.bߥwC@4ާ}-q5 9xC5;rANΫ,/%,: $$J,8p"fLζ&̜2Wk{!ذyqΏFc} : ؑ* 6nH\3m"!9I4XmS()M凶Ρx,L`E H+VAoي4f!=DvI0o_YN;{Es>~Ӌpqaq˅c{-@Vd㨀cA{hB;)Љ   ͙D⥋zvr4U5X&x[n5ALn}쩗qů٧-=X|fќر㷗ŗ㻗݋Zexe/"'Pv*Hp) q@DOjZzwJP۽k0dԑf"|3i!i]ۦݻq7QC0yp lܙؐW?0Zu-.$ $ ^ ;E UfHXZ`vEh1ۿ1Z{;Q$U͛RJe/o# ~%7c+pCKN8*#c2閦PNo(xt%~r.]߁M23">dt!t> &3J0$k +]i^!b,|O M5kb ,AVϮ?hiaMm93t˰-Ϟw${kdžM#KK%+e; }J\ΤhbAPyd5g$ȥ`k\:V@.SJh)-DZONBܟfiG/am8G<638xHm؁_{Nv:AXJѧttcoQSRۤd#If9vh;)?%:fU3+Us|EbX-$7&u19F|ׯ+w^Xr\^>r*apߋv?ásǢ>{gqH!S̠Oi&$ Ar`ƶ 'PgԵ*Yp1g3+ KQeb:W*g $y8,$&~v}ncNC_?N]4# P3sr]#4&m82Wܾ-LZE'H^& VxQe6 .Y0J_Dt&ԅLfݪXkne2,7nhmiX ^PbAI&'&f3x왕~q30g r!MLIpUζ ߍF>ȶAJG7D /7Thd0oTD0N-yooNr RX!T*X8o'T .?8/9G[GHT<;XZ\9)UXS3Gw.04[iQU0o4v$NW +j7%̊%7 (^*}n1C"!"# (V6_}ʻgbq31khs_!eY3"6- ew=pt7b ^6Ҿ9:lǝ#C#A 3F/B2#3"pMI_O792ә`>+]?P8&}TNɖs(hzX l!tcLsLU?#&9$[P-B8m yxgEcb=Q(r&If*Hˍ-#@/庺5ޱsW$18i*]ڶG.b%ݬ4 M^`]op0Jo b@42#5,B4OJFs9$P/J}p`HZ-`b ]a/|mypnזnhn36 (H >COy(MhgzY>+lBW.|_nAy1rX+=r'&M"V!ftB'O{Ď`z!KGHF˼pާrTN?KgS!o5w%(\G4LˠB{{`'D;T#k?9˔,S8xY1J)lһc洑cncDL< ɮ5ˇG<{rMaW{L@< OHq`SQ@q"(v߅ |!߭lk%5s{ˈCAfpgҪ-Vt4ZFL8 1͍^A=SnpH܆0X>B8w" " }w*ORw.%N\tN:᰷b=9Vz͠ʘ ҄uh"A䖓 !5NBBd? kRK$>=Kܳv5*ZF*?6A&Xuպ?ac;}Ek\")N)H N:vkom^ SǶ{.㧬&WU4CLxL"|Ԫi"tKutM[8mUCK3(-k7^t(2Vr :Q0y<bM4gde60>20OXIbG2]r6< ^+%1Z%ߜu|"B`%yK*4MM0"v蛫pQн/b-*S46f35kn:ZQC5D |8K$3A=*TM. ° >@XErs B I`~^R&9j|=C|@o, 'N@}LvΝ5%0adT3[ĝбj8'l#r/KND~`n'$Ho(43(x=8Ysi&8*h+;E;D@+oXt^eݒBU#-nKu:ϷK{:v4חQҤ:%) HED^#mme3HYm苟d<ڭw[xYkcA9Z߫'I5nJEK* vm0oVz{_\>zBôL "w&t))95%co]ڧv-x{"иbJJJJJJJJJJJJJJJJJJo-ޤzIENDB`jeuclid-parent-3.1.9/src/site/resources/images/softpedia_clean_award.png0000644000175000017500000001700311335260540027332 0ustar sylvestresylvestrePNG  IHDRt"YPLTEH쁛2T豽ҶԜא٭|ˮ䥵ѶשΫϕ:U6OZA]DaGdXMyNtRNS8Kg vpAgt3sIDATx휉[C,{mBiI "a+;Ȣ[jŭ]moIb nscHwΜsf&ƈPCȮ\~}Fק]WfL;r.1mzO_UC K6tڊtIr\WR׍3hv./X˖kPiqRh$F:h2|yC!: WԊm6o4t\(6,h4$bs 4-HecD,LvE4:EQ# Gkoo=g[7! ⹬ӱ,v1k 7dOD8c9 5ퟎ6{GK?ھt(ڈ ]u80w3 ô>8IgXa$ $T úEh 6`0a4)x4:Ĥ1+ tvz{> k >|7IzQ%$asb{? r`QD҉Z17}5ʚ 5Ũs9*&Ώ*;u{g  DT+wm/`*ڎGrQMh#ξ90kL\^^^ƇKՎ^J(*^YM jƖN'8 Z*/IE7GYu>-Ko4Hd64LMDH$(hM Ӊ%#=2F~”;;Uw6?n}Q+67ooϾA9DץŻw߼s絆*(ٳ m HQ<_ mx3):x NoUh6:O;*Gz48?Aon޺~sv#1ikJ ٻw޹su;goLm9v3B<6o0ij!4ϗm\tBLCp&v8?ÈT?=n~ |ul[-P֥%qKFF*-gQIxRHDF(Nlx!T+ŤPAUPUW#ܜ5|tF=BuvgP[ꒊZ%R6((FvvjfnOq͂aNkyÂ.&7.8ǡWp~ ^| Q,[ϕC0:xYCuK1_uQv|!d{ z֚9Us{M4Bf'橙U5=D{w}+++G$l y`@ ::%TZGne/)xZ}bӫ{yɣU~5ꪨ7W.B:pa֮ٗc[Z{'QPh ̲ nƍ30p`)Ya9Yz<,mee*ת>4GuK%4w)chP./4 _n R>Lϭe}}%xvES[#eQq]uct:{iPSŒP:& Z6N+NPGhmջY;[uL jCK_TV_ρ*HǢNOèݼu~7vʀ PvjTKK $ZB@1WJ 3i^ .>ԙ LQ/FU}CAqIPқo7wheƼYkTgTV:xDe1M" |VTRQ0I}ߟN]ֻ!`uKC})݀VWV21ID8]D e_R\$G !hRS{"*bP^xmPTP#Z++μYT*$N_FL EK U\g/y80P@4 nx*6.УUj;D]^+d{dˇjӝZ8ˇ>"T&>.r&y+@%I'T77~Ejmy -<Ĩk:a65%\1_*Jji'=!(]bzj2Zjҧ)iVjvν5d?Y\[ދ h/, Uq..ˮN;znncQE qÌ@L'Pz0j%r T--TfEb,^-aT#D>TJ?UU?T5tb(r([va5shT,Pӄ!R1~(tH_D/kz8 -@nAG%,)MAeJ9J3xI+ƨ">|M!{ T[A Q-+4ݦg[x*=tSOT%zP=OwYim<b)v3L#/|_1KSN:{dmk>>xESC}Y7s: 54EG**'T1(E .q, .\48rHuiz‡ͪ *?RDi~]F7je}mTe`d{P BŌ2NJzP:hBW% EB d}} 3pCPHMUNR!Ղ<5{SS<XA*C9|udK*m0._@m{ vζa曨 1[Ao7C;?&0FXh Ajr܅]p.p͸\9Ɠtdm&bXuatYi^ mshzT )n1,-L+I2* bܲjmhW<.T1|fQ?_Igy//I@F~u)9ϰFiߐ 2o\4pXcsaM*ݳƥ$/w TN:rI! Tä}TɆlP :miaӝ@߽<9)zx@N^W?o[Ι~ K9g ꋿ8G-T e3a 0bcЊQE/ސǚA`êŲ ݨpd:,Q=?8/#_ ^hBUaQ,V'@)pxh/ź F5n93<K}7*iQ)"T*48渞cno̩ P# L`ƹ@W;r}CŝeTG J89=~ky'_ww`JW0ԯT֑ ]w~'zCW+/Gs%Vbc s ,,8.r\xO¬ߟa1 h WÿPAR7 Hui^8BH2X78`gH2ehL=^c* 8>$MHF22Q׳MePE0(죢zހMPQPS?sj0X{]. "tRtAL >H 5j x0aPo`H!_S׳·QA]@8rI9 M^\.e0йꁪVJcz*JbT)OQUw4{^`M` !#$QCm՜J; yJQ|T=]\P(jHwÈ^<^ͩ 4-DՆIC͋0) 43R'JhI:<VZ + d܀j"+`:AjP#څU1-]q8SJfvCq?`5C0Ir/{-5Tq*)!dDE3kbPB."D"D5@,bzOka?Qz8Ol]esMN[_5֏~Tf&/dQ'}p }F|7Ⓙaܗd}'*r:UtlBVdKGGI|(`^͆~itSQOʴޔ 2wxFnPSfnw % :'I>,1Cm4bF,9yvVQ1YF-&$Y/l{@?&FfHcԕM78uyF$c)f%[lœqbl*KRݜ啽b2dd %!uR%'IDUII㱚Dd"tUH+[Z)6^ݰr {Th[X#bRM5&cR'Q)S(NВb Y!S֚M @d(O񜙂22ɜ js # k: 5T[NجVeQE&bd"䵘1*8E̜,5eI"aM)fɴ2x>)bՊ EAqKb1+&LMSJJ/ d{5Hasnd<(PXĤtN5c+&UԘQוwyEWH(Ƅt%D%$qdO'%s,i<&)`lR"N\T~D*N|QP}~]VoRR~-0AN!<1P0 &#UZ-$T_VPO >ҡr먱 Lr hA5i՗y i,1^"&>t/ k\R`%NBVv_u_ ƔPcY@kRKZVЬ?c7i%?C?TjґIENDB`jeuclid-parent-3.1.9/src/site/resources/images/example3.png0000644000175000017500000000465411335260540024562 0ustar sylvestresylvestrePNG  IHDR]^Am sIDATx]nH d WW]mwe4i:vzuz=F0''phcܼ><<ܙOOOfd{3bi,|y?~]C>|𻽮}߰?G/Cȁ3C@ 7;tp<n8/ǟ Ջ%| j6Oݙ/>ҧy9(*k{ps>>.e7ZHWC 4!j;3Ԟk?[ӽ:XL *Lp -L-S8u;GJj+Li|GKHEgv>) I7 ?P::5H:Ŕ+nTeB܄)qP "'T ׀y&j#jL6֮+ hz)j_\A-G0&'Y1PS Y0BQH0b00NT>9N{CaIE1+L#=>!4pkҸ]g5/ ;IIG~#jiđD5\7FӾRrjQRq4y 7' U(ne;^V`X8 &'n0%%F6]n1s'8r|X0n #qכ|:\q[~, _bt%˜jRqL:XK !}pC!Oy,!HiΊ[Mr^rf7΅[ʱcY`#:5V+㽨3ac|E#:KMU˕+WүJﮤ_˕\I~WHϱ7G S)HDNG}5kyO1EOVT$}J̢N;hOs~x ^4 diDoOWܮ[1)bTc #tW?/ܜN,@ |= Z?/+遲9͐"5(/VCܳ]=FŪRnYhTZ)Ǹ^2hs,>}- &wHuVIރ^cFNη\Tڬރ^C+Wͯc-۩ItҮk1f׺ d¤+ǙRklrLxbIMb %.h& BWItt!-Ԋ!Kbߠs>G?/W׎3ҥ;=|R}Q 魔9yz)6t|4zIx?xOx]^|KNgnnwvvM4to[_p\FuϜqa$y0 pX?}ElW6`FQ l gtx<~|68Y Łp Bbd141 Fo<MS|鐲 Q`6,9j:e5L%Cd5 Y; bGGJ[Jef&5X|+mLkVoWɠS,ǵVӗGMn 7 UhHǭ'e515^s(Wa$0n%LAY.Kb'ɋ') 6*L֝wAWK:ÚmP+h.&/ )`9ޢ _*畿V=um!"6ROJݥUivt(|ƌ Lp`SoBDyMgO-V;;2kq.l\co:;Di/(0§9^؇Ɲ 7jn o( |<>? CIENDB`jeuclid-parent-3.1.9/src/site/resources/images/example7.png0000644000175000017500000000075211335260540024561 0ustar sylvestresylvestrePNG  IHDR:/yKIDATxWm@=>aHș3“H:u\nh :JXJ0c7j!f )HU1MQ%a4qέHW[o0 |4޹ZZ$t+q(_8ʲ7y~'JgYvpSJ$tQȭf?ƑU虠'SDdW\=)l|O4k27!?*m"IENDB`jeuclid-parent-3.1.9/src/site/resources/images/screenshot.png0000644000175000017500000002636311335260540025222 0ustar sylvestresylvestrePNG  IHDRg]Lt IDATxyxUooY;['!2*8(+8 .8#uap/#䢼 *"b.]@b @VvNzIg}tW:TNgO88p8HIv Bs9gu Fn8-4fOЉ9Kaie@DһKtB5B4Ez߾}[L.-9~1~x 6v[By3gtYVn??eef:~=h4Z-4h?;Pv(4p8O?MUUvEQtt:EAp8-ˆK.шF haE~ƓVn[EQ>ǁߥ*h˗b {)9\v>Ƃrmqwg5;<377ݻW (J[TۣN:׺2O[jemkٲeT?v= Х%΢Cz:VGҠ@l221wFpǤ׍xyѣF!6><}SbF'sN}YZZJii)<z +QѫW/b6q(2--V+j,[Gk ۨ:zDwvkuM57Wyo9"""(+-fՠ֐)*bbbZ~P-~amܟnLyyٶu.3OНtJxX8y^  '55C髬k۰AS㭬pgY\ɜt܅.8N>E]Duu5Ǐ'$$\(8Z_W4TUUѿ;&{ml( v]f۩ٵ ? Y.5(4]8qiFc(u;F!Gddd2a1F)*,r!vQQjnEQйKzV{:j*+*:h4j`t+vQQDEE9)++ 44IXΜ9FQp2礳cGBBC;lg_[e-'sk&wsOc!sKc655-::Sj8bbcV^\\FRJK#:&Au*--%.."##)..d2՛_riV+Fx 5nd  CL&Nמ DXV>G#().nS\RP`mv/-- eee'_TTf:ޠWӖWJDdeeeDD:C++k)).!66(5PWVVb P#1h4*++ʳ}QJd A Z-h4(( fLQQ%>0c)344T 88wjۨv>B:ۯjҸ#G4jx2W@T,ޏۜwX\Tvv)ޤn.K`|ӥWe;^W%˽.5X{DzhBBCWcbbRbeuIu0 ) ZpCE:.>n]#!yg륭xbcc)/P:ަ8retvp@BbB4jԞVVZFdd$rIHHHpbs8Lq<AAeE%QQ8*ԺR^Vb?`4$O_#ZވlS^RBTM>n8Sة#)_ʣb'Gݱ7hH~^>:8L&iiO&c4'ӽgw*2:&0~xĨQx뭷ؼy3=7o; ٷofozsg1vX<%\Ҥzs#fkr"5\),,d͚5 e]Fff&o6={$::Q_velٲx.FIFF/fMY?>fbbb$ !-vmرXMG _W\>w/cǢ( _=k֬aСMHۣG~zy򒗼u>tWo煦LBMM | ˗/`ڵ~eȑ( _~z5Cӯ_?RSSfr6ʿ/.b&M$؄ӧuljM !MyhsB{9q !rd!AE"B}LLL[A!h6BlvW[A!h݂F!8x%qqqhۺ"B!DspI`B^_&"H`BT$ !*؄B lB!6!AEB"M!DP&"H`BT$ !*؄B lB!6!AEB"M!DP&"H`BTm]!D6mZ$g϶}/ljvH# v钶iaBvZCXXi% ݼ Q ъtm Kf:qqSR<e~{ۛ5ωpY6 lo<̝;7y… 9sf[W#h0rH:6&==Ç_oC >Bx,fUDF&KEOEG( $$5kB]%%%L> 4߬Yؿ SYY7|Z<nӎ;Ʒ~)** 85x"L@_~F>m24DD4o` Z'O2dȐ۾}{ 4o<>Cl6[[W%|9 V|ghQ $hUUMm͚5L0 J=˗/or֯_O߾}۷/_}Uז:Ď;u;v?E`j!Zϻעe=%:Z8z`;tZhFomr矙?~P׳X,+{A~~>6l ))zZq.U)L-+;[E5!ZCGE(rss[ӧj[ݦL&>c}-ۼDFFzM½Oݻw_~̞=޽{/P<\3Xtѫa:[9Ig_pK;Md0,{g>i~OfΌ࣏BYm슴m$'+kOZZ޵3zj *V^ͨQHHHƴm.7''o .]_;Ɖ'jׯ')){`pWҩS'6n1/Wʕ+X,1LUV-[/_]݁999@+i-[pm5Iɔ( 555$%%L_ZZʥ^3믿/LBB]t_^n޽̚5.^jіumٲE=ҷo_⦮@dddȻKAA> .ٻ^4wӫW/"##Yj\r%R'O?4>,L4e˖H9jwڽ{7YYYFc ~?yd)**"==I&5>#%%% hCUUUٳgN԰yfߗ}+]`V=Xt)|'}3j(<?N߿?^xaƦ@4#F\u|AI<s:W^^_w-)`dR%e;g|a `ĉ>矏sdepT1_oad2?"F+yyL^ɡshZ۷mn{QWso =c {1_:J٣(J@uq;w.+W$??<*:]Z=5d_FO?npK3fwĈtM~TQQ]wŲeԁ- [۰a4hGСCfez;0 8.g(WzwHLLkUߏ{ڴiȑ#hݑb 8-} !ӜL2JSjP/HqQptʅ/jۯ|kP#7k,^A *6nܨMB1 G{6a6kt seѢ0ΞuE1z3|;EQXhQFLbOp >S]62֯_wMhhkiΞ=_|<Ϟ={;-Çb  /Lyp* aauO=U6mZS;dI%7 ~Ω՝K))0q W]{ֈ#(,,dڴiZtL h4q ]wuddd4К5ka.oƍc޼y{̙3ETu[ݻkmE2m4u0p*vY-kIeGiNb{Z+g~C??\ luVC"kuz?u܌7ӧOu5i{s?L(nݐ .TR&M'|bumx Zuh~ذaCPw& ÛHm]@wCrAKޜ:%-yM.4h}4k֬OSkL&S =m]ߍ|d7?'Aptv n/k`zk-Ol6;ol+<+)o |'X$ ӧ>2NHQP 'DCI`=Lj.Ў>ɑ#:RRG]C8o>_&p ,ɶke/ owo CIeŢ ,=ßpHcE~zzKY3+?24;::>-SzuuufCI|^4ڀħ777`dh\vwvv3s{;d!bQvgP1ePVƧԑ(vZ@,q=FEL?a0:nβːHCO;Y+8>#""""_oK |t'B!idhɗ2C@%hOwWy}@HH5i>0 m[>ΕWFJCۖa&"^|wDǍx±sY{DrZ ~'[׀WE{yscMI2 6S|߶Jàh{Xpy߰0C-l:W؄!Iy[QU^LDw]ُFDѫr ˇӂVG+M<@BQE3`Vѕ6Ңȳ!xT-/Uȟ>1[[iˌrޫ @(yӦBnOT:~ύ;щ6ٚ"35MBwxZn7(* |HMݝhFYfmK[ҺJ :_l.%=6ɯD|o+mXsۦ"oՖm*HX/|%C>JZ!{&mFZwK>*?"s{{{{]]iC͇&([zOl׺~/usPOLXm9~us6/mxDDDDDlfΒAM=Q|&Ɗw!Y'I7zR:s6vjޟ(|Ϫ@RfHZbSѼtKoTR`eMʧ5+6ۢ>șy A<_D]r3+)a;]T`wltQ6]!GY. \y&eչ$ٹΔe߱-gm_TqJ[ۼ5rk3TEWgxTv~ǾFI[zۑcQRؿIENDB`jeuclid-parent-3.1.9/src/site/resources/images/renderingPipeline.svg0000644000175000017500000007442111335260540026521 0ustar sylvestresylvestre image/svg+xml String File DOMTree <math> <mn>5</mn> <mi>x</mi></math> JEuclidDOM JEuclidView Image 4 x y jeuclid-parent-3.1.9/src/site/resources/images/example1.png0000644000175000017500000000077311335260540024556 0ustar sylvestresylvestrePNG  IHDR/ ]IDATxV;n@'#"R)U J2MڴSw |\܀&Ӧsv7hcvօ4bW74MԣSZA𤞇Y3k˲ Y(dKbq$5<ԉKC ^q=JK]'CX2SQF|r֨ga侰DZK>z>@t'(rpe(VRJe-DA src zip true README* LICENSE* NOTICE* pom.xml build.xml src/** README* LICENSE* NOTICE* pom.xml build.xml src/** true jeuclid-parent-3.1.9/src/icons/0000755000175000017500000000000011335260540017215 5ustar sylvestresylvestrejeuclid-parent-3.1.9/src/icons/jeuclid.svg0000644000175000017500000006235011335260540021363 0ustar sylvestresylvestre image/svg+xml jeuclid-parent-3.1.9/src/icons/jeuclid_48x48.png0000644000175000017500000000555111335260540022227 0ustar sylvestresylvestrePNG  IHDR00WbKGDC pHYsHHFk> IDAThk]Uk{L:L(b)FPE$1@J}HyӠ"(XP@C`@^P@򲔖vL{s^~o~}=_ksa9Fc ֯_=bf{VJOQŨ|ټq{v̎ODžRK"Qcࣝwe\2|眹Vwd>Oolq WE$x=Q-h4??nnzg⬹'|8D!x"5V߾@4-~qodR PSChBț|^yF5F"&zZ$*0u־7>1v}|^X*MLdwIY׽ f К TO0 šł<,k5HOO"Z\pVb<5D,J5Tlp^բF!=1㕣4Vn>9s:B ZLD ࡔ1"ZԼK 19 @JJpذiz5(TXVW"m(-0EAUZkB* Uǘcu.s],qy /ԁ*Ve*b3;c4nƗ| Yls-TRY32&^c5:d^yeC;;Z1 $rP ͐\8wƪ 皀#1J0}͒&$s&ꔫdP$UU:keWaFԕ-AU5D $O4iR(z(YP#Z]qE>Ǟxv欏:;Ϊwri7+:c8o.x12/ $:Dí&_3~@-RRo=< +QM[vm` w!P+6"&@Qy',1k#S(Bx]wx6Vje<~cq,u) >6Pj6MH%Mm@jZj` I_+;,_ 'woBAcF7&)]G%Sc-iߌ<~k,ZE.Yr*K.V{u61c'?c )et4I">.-_0 Gn1༢EG"b;i6,Zx(3 V^N'K\~6Go c\+WPXT 4ykf73Zi9va"*#Sj 6ꚨ VE ˃BY6l=DJ\Q$uQTF_kvThkyo~xP-#zQb0s eg0c'7(8 5̪7'աRF͔J0m;@sqA% Ah̘Zntuu3 9T* ZRñlHٿH$[V̑Exoz6nƹ]9ffOۃcL%6+@D_ Ȓ|QIh2nRe~x1?K.<=oz&6kv8ܫ:̚DWm6oU<L {D}$;P-gLp1ej Bm Z,jHE J]W׾́s2t_g2'Hw#m3sXT wy-o::J@%Wj:EOyu6Y̿(|i>e>Nf՚骻XV%"I>1VnԺF=V}ZpXF.!vEk.aMM6qj6b[SU򤆔E|ZC(OڡTյ_+gM1"P,ʧsaOq/Ory0sGaa[EJ˂*vsA:C~rf^0Y3|䓎m _/ mieL({&_=HK RതS*OAe+6{Ɂ׮oݐꏞ1ah皗:t̨ȌқF?F#ع\8Cڋ"]oW~lz WX'Q*Ȱ֏mu`mx|{eþު$?)\yYUD]XZEqT߼=Qś#1r?nC'sAIENDB`jeuclid-parent-3.1.9/src/icons/jeuclid_256x256.png0000644000175000017500000010324711335260540022372 0ustar sylvestresylvestrePNG  IHDR\rfbKGDC pHYsHHFk>IDATxyVŕ7T܍Kܗ$&1c>&L&;o&Λ7LfI5&wwEdh~n}[U:ugK-NYk@TPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPATPALEZΝ{rV_զ|#SmZ35K_ۼ;_ǎ.y>KʰEڸnKk`eY-.*m\AiFy-:$gy[,@/I#2+pXra<cm1Ѭx)ei\{tr0'9ԲH>ZALmG!cFu2q̈O9eCun̬uؼysLj#.jiiyׯY䃷`ŒGQ%J;-]]B+c*; H8׈Jz]o>GfMl;f,6gN}GNՅQ}f-$ow>kv>tCbL6CJT`i}p0nNwȚ=;G O^Շ,s|kk7ܢ;[.<d}}xhk%m1s5 "Z;:: ? X`xHt a F$vmiObQ]^M˔ M(%>巂n'1KQyQzKҐ2h=GI7+ʆoc(9Nh,wM;>JSl?xʸvs?>^ [ZZ޾e?_xz{{R#G0yAtдXhQyp]7^~eS0qE9Qki&5M1}:)e}itK :3K"cVef]=u!hzZv+`%ڹ(7k[2>zY`G#}&j*(1Y׿d=s x-;Nk~BS`vY<_( 0n$#CfQ0ܛf MA/yJ(83jDj~[`LDJLq2 MZFft rÔZ?oIߊg1[,0]=1]~J҂3}'۟```"- DllFTJħi/wl*)Jj5duz\3n@}]uX+k Z#: .-xilЙ_Unkʟ.zx[$o8`;& ;.߂krdSe;`R&3ؑu43!<6*M_H%>cЌ /Z00+5` :iy¢R";+`+pᒕ>5 ᙟj?.>^Ѝ](=-k5^{<Z{KgaϷN<,ҏ71~??7 $`Adğ%*ɗ䀢~?a&0 Y͚9t"k ML}"0@c|s _I7o[wշ ⩾ oЅH bZ_x]@.x_QJX"Im ޸27>*c} ,XxcX:,] [;{&>9|(K..~´iikV/7#Bw- :>0*|ha 尩Һ!.@ݏ4]Q~KȯnOPhH"go闣-Io̯@?f М@(}?\{0c3O]Fȸ>0I!Ȳɩo^gz`~.a[ 0+%1Sݖ5Ӟު ֑W`]_{o]y+Y!^S^߆?{2~\ӗ W}ŪW5Vᬷ+p 隉{n3$c[@L-F1L6Xb P#i&Wbʩ{ *!h J?=rBk_m@={{?o:K|)gャfix$5k|#Zy˯ݧ~/-6mنfZ/[o--5rFq$1`hTxKӁ$-'C#DpKύJQwPaEO|&G2y7ĉ@/Po2%Mt-=-Z^[H X0,f~OӜy8MXyMQ3g-nE1;҇M-y1sTc/#75aјfhe4bx)6洴`aa}H#p0`o[:}7%7cK_o􄙛< oo'>>s:xezrشy= z{B63gO1}ۖ2/% vAe8-'`Mضu|ѽ#=rd'8]gwo>-u{i)6ww.ĚuஅEBYoҶ>Ca ᔁ,Yyص@+ƒ4>Լea]^58p!ma㱰5B #ײ/b/Ek R2O{/֭|>%2`<$e-(4o)㣜#1<)C%L}X:v[N= zvB֒|K.ǒ+x kHpqĭ(yX xߺHL|jkC bۄ%&`SeʤVGi1wܓ_|hĈQ8~2< |rw´*)Ə\W|CAvZ = }_y7?9|ス{p-w/7/@>ΓuM ֆmARjTK#hGW0 :^pxQ+?t%8xA;COWePbk׮O?3& E^"X-`ڥ,ǝZ"L`O Ո;U Ix^f?l&eJJ68rۗ#׬ÓO?[_>kTiF7i^;:~x[?;>!$YxC+\HxjP)CPBpXaXxZK@-> 2$n@ ZV_Ihw?5Ygp3ƿ305_3{+9>!aSaAjS#ȵ}FiE}0-.T9Hi=b{&BexhvϾZUPXl,r豘8 (2$zJj|4iJ~#9 (73;v⎻:cTZ1t&O Fk&M<@۷w05\m("4= 05P}m!8`kSaY`UH 7d}H(c;soa$ƭI`ƿ&1PYN̩syh]x 3-xG'F νe|^~5(q}aswoaeB t ~ HvލW_݌&`9]0X? Ad"FUjf<h-&KbLEx,N|q傖LxҘߟfiGGhZ۬FÔiă"! r@(_ߐM7)0!hMMU|GG>`On<\GrulqK-d,WM} <(c'['fУv1̈́6؟~kn?SZ1ɧLtW4ߕ `SG{I~kJ:slPhIY:K^qccƌ!C*>dO/E{{ԉ+V2_,05M>'*%;&:L(*3Z+xR|rB⩧9§mkkIY='[u6oӚ܈b)x)}b|5~}%sK2x ϧ (&WGB!/;O@sqద?N0Mh%J6>}瞕l, 7aWXjo3zt圼d~`!z 6m {'w Th|R!:olLWilewˉPe\@@KX)h\$o1džMSK$:e@T?AAH0pbP!^3֗'_azZ΋KGܦcFFh~l N:aʕk2pLso~e1Nx! ]+!)ؠ}"am+HʂB@g"M~a;` +0)}KϜUC8*tVg!xiҲ %(y .T$6JcY5Kߌ/%5`Wu@_3vtª@jY.IdbIx{17oAf098y0wxg V*@co﷪HLRN(eT)2A]^2dnÆMQk:t<#Ge,h"9_ig5Gk g6/p(+ :b5EKšjo^;Xz;_>AC^z!/ƣZD/:VJњ JK S4mG@ ͘%jޗ;|1C!i @a" AXV/)٣h6Ai D$#Xƙ&50'i|B1%<M9!ݲEq1b\Ն[|RKGk2`BP *8PnD`4-'i\g~-mSQ'i~ E.X 0peP/L08SK܂ !fv3-Y08t$'dq0 ! ␵__)H" 1jD,F- +zj HQ?_|)pؤ6ew%_5YenkEimitt{p.OҚb(pd r|$HIC FgNS|Ӈi4s-?/Vh~>c. S,TNOGÚɁ `Jm^UYfP BB/obF_/ ~_Oh}@] ch?[g،cIZL=TKߡ!M#}Eg$,S~zR/ĀEP( jiT>[c# ǸJn>RwV֠Yz<`o~]S\2UD׍ץ?IW䝾aNw`[AʕA?IڰnK$?* :E_tju}8V0kST+ŠMx1k0ˢePС}<اd49?N:K (aoV7cX Ii_mk12dHȣM &=33]E!+"E~?) $mމg\&`xy@ -ɜo qU4$5ӂj 0!@h.Z~>D5 Ac`n4F$IMM=+ɻqc< 81A{{;b %99€y[i^>Mphfy@@zSXYQ:$0M*oBT 5gyB-J( ̧Otfݓr󗋂&bet|r"}SG72)u!!o iM+fBEL!Tƃ ~trr}Dպ R`[Pk¼,  B<&tnTP@$qZnvfY~ a@#(cPrW%#|ij䂥xn˭:ciM'bZ ج`Q~ WO`Zii"e3?M 4$4Z! Sه]'Rf߯` ^"m玕,"fDA& #&G?@0jOi}Ø$1`NCY^-_›'xAڌЬ[Q$̿eVFuy$R<,yPF:_ % 넻Qy # hSx)ԓ~6awhx9"\Yug12H(k)O CR o-axm3nZMC&"LHw4+>D7:qș|!h9EuѺPډϏRw *;e3V#K_siHӐw^,1xʏ2<EBH O0ӒaQ[&.b SMS5/7\P||&`K6 br,h0P IAwD>pK_1kh^E}*^kG#_ksm\S\04҇iR,]>kù3Z5OA{D?G\PVa9X1!˱Y@/`=_ Ek易 `P>0Ȩ{˜'&O/Ttn*TM-LjϏRޅq PK"#?p"P=`[=QA+\.,G]ThR ,(z$+#Csus9HI׈TP SWiF}HP+%f&0 q@I>&?D}_>~C,NRE OQJKihP"lfnA%^*u@x-ʐ¿EA?P,B@~T- @~bZhQ j}Ad~W B B=Fu(y5dTiAf9(V "mkI'|f }@<DkMjf>9avR 47Ӽ5PG j~j>3VKvj 0G09!D_jFt.hJL4lBS'@@z✿Z (26f[0O@{ >,ZVxB/?5QܓQu"ꏾ:Tx*,5yf4ʗ|5^ uˁ%%P.BSڏzZzT6d~>XDC+FQoRev<'1ZfxS]09p4IGxFAoy4hU].,Fkk* `CK-T`?cH i w]G{15LUr!"|ڮ5V#f>P-(/4IβAp%P2zFՂgTi3 S!bD-3)P0\0 ]mҒ7IHqiSpj&5 {27* |BcioLEV̐-^ËV2W<5jƫqFa ğ1OǍA@Dz13fe~USQ5𕂮b@UEB1Y lFqGF&Ii^܄x4Z`qŕWaܳ g[56q|/P,1b~ƇrF'{Ē܏OV`)\+U-+ީgL1#Y= V,0]BԊDDC&{CD{6n(Dn)S:| [= 3 N|=^݄&[|M)Ќs vH=dœfKbc{1SQHp52IyȖnB|O~]rtEOWńHf6G2\l Q ^fAcZ>`,NL>w)B Nc~>c?;# XCǔ]y&dFiHk`̫V@@Z FV*Tu S'(^|B72mng3!2aGc/b~p l2 Ff=DZ5XK[9EkR,*.G52C! |*ȴ>hkk`G*#fJ)7id>? B߹.^۞N2kӳw+3JP @>U|1 ɚ[7$\gJiM l)EI C)gh⾑%"M4mW&$ڵ5:71=3Ikk/}`[О^R2´6~:}N:Yr{pu&ӈ@fcTȔ`Xo܆u^tk˯lý- 6cÕklPА#Swiʀ2ZV!gqIen@$(ʧ^ d*[~ *~ԑ ON#wQNl82! 4Ih hY A-I7Jʘ`%V0rO-Y/~V{``>.dF2w+Ĝ?)Ăou 3v'ML^SFoL4uY":75Ad1I9*mv/ss_*JH|{3Tآm@khoq})T!9!e}6@mI˂nSQUp]cZ9Q=3cr-b-21SI *xqUSCrKIlbڭxeJX$k#[oxLjFuCghխ-R8jcyFJPQ^gʬw!b,0 f 8 iARFEGG[vGV/*x`uLȢ{.|p{3Ee޹`㾥qAm>ﰎ\HXZJ9E?j}JJ4:+*(P P愕rsq".c# 4o0+\mB qO|R0jdgdm-f{ C],vyB!aQ*eE[7-xGwo_}9/ތ^ Ѐ?fhî ':H謹.6;F]rK=Σ = д5viiAp12#$4 "tyC A# x5+iX^痼s~_~S@o\ ȗl_itPO? ~,L4\ǰlFp t*A&vZK3:[Iމi>>fȢ /QMlҥxy,+ ejj)d3(xU)nB{HlJX Vwc~?ϾtaW8t:daM $W]{/Nxc=?,[ mZ0oTk8W5xrM(Rb ܣgVeVI# e!HS#h•Y&gJ=MJh4U;ATa;zF ^9 jkD=Gq?Ge,\qУe3fϚZ&Ўv,q 4Om@`:RS@Dc#a$Yo!ıyA@MOVm-0Q]P@`La~d V=nudZ PN[RgӦâ?tTb;KG i)+7OଷnjQ&|HM?ccƄYvGFIfȹz9P?V $f[jXGa~ϘwS12DyHrpOɕI2fI 8-ɖݽp6m~ =VH(TED AX9CP˥8 /2i'Q ΊeԭbAR71&T468:mK7%+uxfyFE4FIgI|N*P>MX|BS1T,@Ѣ@4jp |Z.y5B\K+0N efaRY*%hs"!> 3>3qϿ^+mm]_L#ZnVWkF㸣gw#vk L"Gu(ɧЧ"g$~/ 4s?iVY&i(B_ X]\ݠC]jskfkIT"\;5gh<=r8+w~}Blڎ_ݲ=w#} c ^k󏞍=E }y#l=)|_C*u7їKPD(d4/oo a LH&eA33SB,Wukii&}{#!0ӽӎo4i%B2᳦ؐ믈po[qLG"p-pnO/:w>vY"iͤm,@ wHۺ_-.,fjƄ"C+K+@Dok~7 4iA0FDO3) FdxvK3?ԅ"Lf,櫒їм~]Oǝ}ǎ`,Y>] YNAeIa'wcaBV|H9t2Fml%V|OʲhD9eΩ&&o` `dKdmɵdܔ+ {j8u @/ ֑hoB'zҺD*6ڊw +͝=O6y{}' +qU,qӀI??y>֮'?G&G|f4DiNJQY f_YY|W^W_֬}Vꆖ0@tW@2$:m%mwjTJ[֙% wACͯWrF D{imeՓ'ozn؊|ۺPw/|gX~`ޜi5Y1zQ1jĐ8/'ӕ@~-Vh*=COSbBxꡥSgd$FBzM`ЀycC12&V%"?RF+on+%2G'Dtĝ)XVldA֔r6yL᧿t[@=!ܜ>!شe;axq(7( x[A{.SNJZRӾ 355rj@0u-;`\Y7@Q{e t:b_tTL)ZI#ozIJQ7hWԀ .SdbyJii={56BF7$K~ck{8AkG J(ND"FVۑ*SZ !҄Sc65njˆY VY-ןx4 Ti$ie eRKW-ZZLZLXbs߽6y,ᛘJM[Uq'^ϙ"6ޅG\?f8:9"`qc1{$ކ(h)CgDN\U>%l*oJXC]hwC4tMܟY$qh9YB@XOIya23(M5@Dfp&Dӈ65/ǿΠ gq Y`13!jFvcx6/_qn`>p:e6aT#шvH[Vn@֔D<)4aII\zYw0O6*2dDJ=:_ ~uϤKD@~u"nùVo1熯1!s+/G^K+^ ֌c`Rޗ 1Y!l>ptm獊w9Jl^- Ԁd#A &ҕ)E$}dXX X̕+@G EN5Cav@`L)HX}4%^C@4"_ǐXexÍj$"O4\USuSxq:rǣXVgE y?f8?c̞91'e߻| SFCKâyFO&%+4h~%`JJSR] Dlh(xvxe̯eQ$48=Y 2c4VC1*wd$X"ADze[^[=2̩ߴUr$ӳg7>w?i߅ V38C +B+Kwu\f@PG$*n%) XH:OTry@G CA~5_%c,nf}]  ˃<@ .W(O_@^ 7c^XCOƆͯ5bN;eF\k1h@@3ZYeEZ>MXJsmP7e( ( zkN 2/#TJ+#ptP  EQD;_CHK)H Ghh!VυwɂvC_R3'w?^lc~vXv n^(>wWw V wt%s؎8p: Z6Ck WC ~+a%ЖLדLFɛme&9faQ2* ,L*fQhY r#bIJ.f1AuiX`K!b'4 eҹwE_kqɇc0{Ҋ X6C1a_UCqP'f-ic`(XN%nuC4m:alUs,~+~qaS+~$g&u|]/x=yuԊGY(H ϝߞ8_p JlЈ'si,i b]9DS}[?I9(h@ _޹ЎAIԊ_^ \l@2mOc4T2}gqVǏo.CkBȡ4(bD[zTԬ({ ¹L)V B5/WdG{rMb1,/j?7߯YMh ԄS܌Kd]__.`˶IM׻gE@Nu |K?<;H>Cf^I/CO(꥚': JfL ]z-k98զ `֦iaj kkd  X>5p7\k`36 T:O,f m.Hk桴<,M#tP|B{`3+aOK_OK2 A[k ӧ˔ e|xbiQr{woLV. Ɵ%Vn c,| o >D>dpHxL9afѲ`cV Y@ 1[c`B[i3,wO·r{JkDcSRDTkctVoq_5g<=9}zX*=-O.ǻH@R3_c)72>S%?bmD7W+WeJPeZP053 Fx/x}2Hb!9}WGݓLr0X64Onz3J#$_qC4*UʒO2?]AxFij,w_~1W%xhKaXp_aS}4= 7,X"h]=He+q&m`"[& Ři洛h{ArZ F'`R!@[PG\z*1h"c+,-!qE6tFS>"o"/apIg' DBjQƢoO.W~R/YsTϤ1ظ9 +VyN q%bx>ev SJ$!M9!@!@B4"g~ tYND̂ WoQv[#-Ee?c=x}~40Ofï6iŘ)x!ŵBjYG/9cF ׺Xwԁ>u4`a3qo㹥pObk;5(iGWޅ= 6Ƙ.-̂YÕ"/:Ĵqylh \ }䵎tܣE:.q:4έ+0(= zH[&DF4zh B$pt x ~?gȜu -5噥@Vaz,ұvT;QFׅ.9HjS-F |Fn|dكݹ 0nP!{D57>^ބ_fqy0Jq WA.h-Kt}",2H\>~1s 0k̽)M<;Sp\xLQ\ sg1Gߓ{4A Fʨp(աT3A)\x[ R/q?f8~Xr#`̈9tR<]R9p|}+zv7?7㗷=A|ud:4?Q)/Eg*_Ie 2He2`;0|20Hc286+ S-KPyp`f=-CoG^p>E꣮ @"0PGV H"Є -'gunŗk+u^x)?ޫ:oT}&8fNƇ}/k{w1F.1j kKaWQG}Ƚ,G-h'GT=A@92L 4e.i0wBD#MC;(13' ݰ~3>DRM91(BB()6CrO|\^Q}-p 31j `A`-~Kpܑ|-]wڛa͸[6j_ Q$lRJ514B 1\gFB K!MRf bèH0gbͿ_OvŢ~斀,CA -&! @ ,`ŗ|&}bPvz\Y.;]={4v3D>&--骏cѾ-$ڂ<@p%??.Rֲ:#ퟌt5#:Ӓk SbIJ%ӀB 0JB ci,R61s N:Н'\ w'@UJH vꈄ9Fu3eQ}93{:)8 bF|᫿s}fN9LFwϾ_ي_I!D>) Ϝ.:SAY0r~<ٓï5m-+J~0%D@1 tMޠNسz>Y&_"]5.vf ֊]w.mF&w׊Nˊ2kazivE [lAQ L;ܢ qy3Riг[.+v( 0wǨl` S  OD\}} ?ۯs`yxm,;̝:Oo^|:Kmgw3/~cO6t 9ę-5^h$CeF".3HJ,?WlM :`[J=PB.MD F7W@Ï1$9,#[k "a@[kM1xaپɽll@?MGeiWtOOWo P36;_c!:Ӡ|o~|,~v Zc+1C[pQ%_i*xMJ]~ޜa.m酈|v2]/K,,*>+ZAt v2dI=eD@wmaXwuk )(~wϞxYe@4FLrw;wN?P jwԁ?vXNIZp@&n̢gWF;R,]7֮"Ŧ?U\a7ui阒y.ִ`$=Q &z>,!t26q! ]l͗*t DMEdѓ@Z_2@4H,niEwԹ1ܵ/!Bg d:W^u}e@9޽ 6 &AC2yALҺn*h:qp\`__<_ǭ,A=13_Eq !XY4OJ[QUѳ򋄆4 arcuY`~M;,Q,ڑ5iͧ͘BPdA Bܽ/'.RF<hVZj[*܉0SBhAJ#ÊOO;{=Cڂ2Kp' ;A,<!ke:[,6m݁_TDLj!i0Y (OB`, ! +ODho<q +RAYd6^P8»z $x 'D,f p-s简C&峺b}hXRg (& jIƦp?y)4qxGϞCUE,4jxxn{}[,b!2#4Yvi>c ƧJZ:$X 8`srg’0:K# 1Y!L;%+TJ 2G/\/'L\1 jW*d9ܯ$: "!%&nt$:/O۶]gۤJl~ƋYo9֕[= m5@ռ"A11p=3dmdӌ9d&b㫱jkO(_< ֿh/"bQ)BX˩=)H 1 H6ckw"«&CP Yyd=ЇvsnZА ~ӄ'/G ѡ ^_kSS|HEx# ޹}~9F{{+v;zL9.ȴM&t0Q׮O񩷠{\tL,j5̛) #LJp4 CT3j+my&gF+Pʧ &!ل+ aO 9=p֑/'F_+lzH  ٚCwTֵE7-&2 ~ `Қr3b@a=u|K?/̘:yŴI0Ʉ?gh>> G*.ArKKK!$p 'H DXH.o+5JP?<8~_ Wm yFVeE= xAFRy%)2עfw5 06wE) jS4)cA҂efJƣmu+nt^T0K}_ dƛѰilπZ L653 DK? (nkHYwDThtRb> Ll]@#H滻}CAՏ(Eo _+?ǞZ}QcQ0x8Hk~gj>aA-;="dgDiISjLjJAB&iFXnci_h^Ax8g@t [@L/Pk(7+s/-Jmv-n/AwX gH0 ôsaډ͘V2:+{WO=N<*V3xs0eXK fj6deq#>NX| HKIT sY0&?8#aϽb9INܴ/* %3k @4PH|VXY`:x&!yш!CP;Q|,ܰi[D!0P/ +ɩE4mYRFS{.N;q':[qQ.l'UIvU|#|5%/%pД8uFD^UixI:4 Ne D^ z4P @]`е?M#@xS#Ͽۯol ݧj 1+Ͼ`x8fB w $Ux&uOlQmb#C#x* Y D5ä #LG?5uuXt܍~~c8iko~;vyqS1 isߴ`cea[#Hk`;3&ljGǴ CQԊY;61D7rsCҕZAj?@S2/ rirh~=010\[*Dhy%#Z|,00-0[@pc D 5рk6GT?vg~<2r܆A:F!J;zPv,̞9?kЂ ;|ll0}(炣r`#9i#r->9f{jrIٞ-Py9-}???n pԡqQ0G R_Z"\{NQAkZnDoOL{6)AAcTlSTyo4b}@]م0#iDc`XbO ŇAsP$eZ[[0zPߦQ#ܵ4mS€ $cH)Oo(Ő@gǐ_Ç-yV37g*N=1p$lؽ'35#ұ)Ƣu$2(`qj 1Qzx6w SsOrUcY|ർ'x[YE] !` &ST yfǾZ9~V,\Ï飘:q~~C,31FX1)x6\ӁKM=R[e CGŖͮ<qx9^;| NIcVs[V?j<IS^ /)Y` ]hp^3 G5ow1C@I?|؂S ᕷK!OBF{QIJ-4Pxc=ڛn :51r|e8,htD;ɻ 8RA͈±DK01?Y36e/Q0?\#*~ϖUЬh|OwQԚc a0lBMlk,tk .QlހwH#rQP.n^Q`dL7ܗ0a\'*@ X.P`(.XL擅؉ghrLH!Q4/'REpE6=X? X#)O~J}} S%Q䷢!L>TZ1SE-B (4xz0sp ZL>~ w ق^kХN8Xv#_5f0e(T-r2@ìBe"`6\+k@M0t edmP4Xo>&,R25e&_8ٙCIDK񔜞ZZ-l!pΝMeT]܊@[LİŠ̙4@`>0Ӏ}p&aͻ9Ջ$RA΅ϢccINEk @=YjN1ijLݵjF~8?P\l|M1pZVY,4<(Ӏ䷊fnO~6eiXM}QWOd+Mxٙ灸V AE4NK:mVZ\5=a{ $#Zuuˣ%.8cj̓0ofu 9aH;F o` hhH:'5omZ1*CE(2G!s?%F3L ']' wI_-+tG! cLoэݽֶW$\ A%kЗYlԍGG7ܲ$Hh;ħwxN'˔YgF8o: Ntˆ[M0A;D 4xk~,4?-j(&Saԡ[8_B3jBU j=|ac~wQV:Î]6'Wlh/oԩdM4T@Vo! YZj*9 h2%,{g}6 G̜;d8;bJN|:bH-Δ t=0#әLp7|ʢ(OGtBIfUӨ6~ĻFz( );[%Fg^z}(˭}.o5\0@fn\8+>=o^vAx(#(3<$# _!` ˿3gy,vOiЂ2 BO3`D/gJa>jYг=Ó2de2{+/YgvE *AQ ," -vV0jVd~~1?>8Qtxi/oa€>56xDP!c t GZ vYIxa&u|h6c b- *h/Iotw,~qb@F?w f y\ h O( 3 -yp_t:%`b@XZԤF@G<m-\sPvh +taJCzoN%'` #S u"gՊqPjM50,ZC{HU x/,*DFOYn6ھ'^>p۽Kb>#aaEt4Y`05m! ku\8?qc+Νwڡ>e ΢ͬfi0!B9pr8HhWxY$"ʀϤ/X]6r{-zZԐqO+{o#_>)=-Cj ͮ]qc!%3JC4<I䗭ފ`n8q:0 |& -Od`ڭx7va'V`WO/jy8f83/^cBE* qjg<\|PfIwF<>%D/59Z6+s֧% I EIAtiY/hٜ0oYY՞kd.7OŽ-v >M ؆L+tI(HAsxw~+I!=]v`ڤNw]~pě92g/s,n3XuL؉?GupUQ&¨2- #ZM&)ǘKZ CJ릭 ȋw)KLjD齘Am _K hƓ*"BZcc77o5v  50$n-[pqs"2dثp`Fq>3\Xj}Ԓ r0L7h]cWݍ/_y'N;~nØ64vISga;YASE,XGIe( ̩֯ ZM|p" 9X@W^Fr $TMixJ(xJ dP%1`ղ܏$- jh:yw+Vۼ S6$vaM"J~450xS̟4{H߽,X2?h >cpc2EX4[_Mw$xUt nq&>Σt,|e ܆O)m1&sa&U@\Uhއ"?6_C1H TZ©A>ZO{/px !ivNW^Wn$| 5<]-eך;8/_,/c-4L|sR[@zܘŗiF( ƎGa݇[v`-~Ϙg3Y'c@K ź:dIqV?χ굵^D X>Zs ou#|2Dh. z~6N,DS]KF(/3A(E` Fm^?nqʟ˻i gLmc6|Zo=s"yRJ10^-;o݇^t`!wGz7cd q 4u$C=Dϔl.N`qWG,O)*6'[/n?cru?}WmB& Օј_)͟BSYc?0U?ra4gCtl֙QYgSGokCsAнs7j5㏜w}(FuRet{IiY' \k~魂 fHWT4KN'ȅO%̬ZWk7+as:*2߿V ̯,JIs$wbfI3 XWϣxMc6q8N8jFvG N? -Ī=Pwr##VitZS4G&q{VrZ;shZK5i8Α+BR_%=4K`~g|]O5HdC2*<Xk}0h!;^|VB4bpmF ^\م| ?D55N c5Fs'cP34W[`懅Ew0wE.飆hF+dY,G+b~ˈnHx◰&n %s#e+KywO7I#g\;vX}C=("T)0LG?:n3*5iZQ$ݻ\7DtS|V)GRq!}2B0 H"OʚHM/&׸|9 NYTB>IF?̸pFph i7,eZ*_xYCZfM/9?$l^$4%\twb>Ppq[awPF7ͦkFx2 \Rߦ *Ey:sOY>EpDIIBMs)8Rˊ4kwBι%2i~P۾o]~o4fWoKM}jOGCGOBG˰֫ RXƌV̘vo~e~QqC8ϓ s!bj]R@;ԩ<ɨEa|0Ne&B4%aaNдmut$^6X-)7*  ,~Y62gXvw佢$K8_1_EDN >͜Sh$6OgL,12tibOZEt/l)mofM4#X ht$*QO <Ǭ;rj4boGF}Ezm̿G^q톡KVWlQWz-e^ 3M W[XgAcY;f҄H2 +e% K^D/&HŘ:AF+|ǀ~T RbVJW* owr0BҴbv ^L^CZY̗ևS6%ωB %=l}z`c7g08µ݉yFW o#ڶ{֌q;OW4a4&0¶ U=.z\BhS3b/w4uqK5ƈk^jA䗼q汊kbz&'I0FKHa|YOuc,lp+&,:#:mk| f[h3p o]g^ؒc-{oMj<׶l`i= #S2cx7dP΁ew{BHYO@x- ) ޳6*'v4ՙOJ˄DE 2aдl_ mS1m}FXO'SD3"!4cc l:E}_+?cZg 4p >BXMڽo`wm]T L{]X)d}E8-c>aa.uDtDS}c5)\C5ӎ\%k߆}؏mm)͚ƵvXlw]-` IDATx}w]Gqo{.۲-w7\f0=zIL&t! 8ġl \q[eKdk:{c$_cԪOE~(W|=6Le;߼f= 7n"zܸq2kY[æC:_ck h P5@|ۉh-vKZmndx~95\z6@5~NPQ?r4@zu__kK{]ۛ! [n#8j} W㢟~W\N";915~P3vjjv~o|z{&-[N6Ck/Q\~gsvӦcǝv]vÔ0i LigFSs8wLHFHkTiƱJ2gjS*ϊe;t_(m“u4JK0?^u: 6~ _xj ceD  22K^*kmz/lm!Nq3HI67OPi^\Т.X[&/MiP`Ɓsc3 ڽGw< Bǰvݖz@ϐm[F#l%3 wۣ#>+.O({0q ^&2PK%0_%_q``FC2AGF/jw-R+䁊^){ڒQ!ŷ7NEB\K],6S o-VtB CB߭X| ^]gv`Mu Q|[4116mt0o/uWј"`ƌYxi47>:9W+x(\_iJeG|:xJc򗅡|qEּmw?6==jWG3hDG4=iWA[ȫM;OG24Y$cȐ)e ʩF0O?E[?~.pl뀱@ ͛7?gܸq0__x>|k"Z>z#& L̤okZ_eGABY]0kҧjzzGG+A>""(Ygً.-{qy88OX hW/syYO\J#%pLI;)H~q湶sF% \VӺ_g<]#cx8{a<1|N|ӯUKS* 9!px(.Ak`ӧMvy:N4}q/EHVz) ?6N<0ȊXN߳Ӳa g漕t\|^A/V*$/O,C`#߷"XuGaLq^FVXN[/2QCŊis[{ Ьt 5ڮ!Q,gD cCGވK]$ 0dZxa/6FGGhZ|fb|Újzy ^7}hzY[ߓo ۓʆCBP pÅx {ŋG|5`U8+KϽFKe;pQYD#Ũɽj#D/^Sc ;ׁ3l]kii 흴.V-% {Ue G@[w }x&tA >ظ~u7?,zNQNziAUQ2O{U?maā{hX .[MÛ}}8y>mJ}nh_LC`gB7߉M^{߂M!v;P޿unh^#IxqV E)rH2! < y2?QSzKϟŦ3]S+]F2hpYr@_CO_c2_yxǯ54s;m|5022ʾsn/@{0do>{7ߟ¿V cejr"!O$_tc̓So݇ 7|gO8Ϝ9 o{ӫwx;cW_J{gnyC@q)LH`ɫ# P6|r(JBH{=uݗR7─_C Nru@e6ԍ+Ӆ%ۮ߻*[qM#nw⇨H}H/_>888xe g~߈MC)p ;oL% I^ A/CSu$LE$ MK_G7dtJ|?}Kxbђq޸qn.Eo^5k\'sddY 'M6aRG |z8,0o%=J/ZF)GݺόTۄbz8X@hIlC,ce:2ZJ U1TfWd~UI]^;f `uKi3z8$_W? gxrIO|׼-65MZȟ?&|YUχu M j~*Hu {ohF|{Gpwݮix&zǽ4i;ΞVGA(#h?% Ky:LEr4,/ -e]h^=ӉaJmV~;ƨx`/7 rړvu7!r;ndC`m޿Z#Uk6AoX爆`JJ26mt@__\~޷/?ߒtxǻ?ӒN ,aepn_<Ȟ>" { oƿ5_z57UCϬ^ko%jN;U_1HhĀ\k2 ug!G<4壽6CǝN-炑`ΘnjBa}agdeZ*@c1JSy޿nxSGƳ35%Fv"g^{VB-vuwGaz虤wy~crHH](u!>`Nls[ZƬW;فR˟U 'a=?5kx)lԩ8puKEpbdd,!:W^{70~\~ܵuxWHJXg/o`NB4l4,nsYW(sZMR:A#dβGQ!t/p?G{K/\VW?Ossvv= ,,y{/F<=?{i3L]x)m.? 6l$aY C}&gQ 'lv hcO}^f ~Z~p /sNE Qv˧nxٴ쐩9?9*h@ӑrE䲴JH=ZZIcfIޗ iD6͐Jc9?zi@LS0§cQ{xxxަ Կixw`>#>pB @\Jzw?)ܟwx!`6d|! ,{[so~ʧp E\ ʓ0Osp;УWg|pN=^ \v5hRȣ }o{nnq}?~'?X\}MhgsW{{Wny㻱b3]'<؎|Ӧ7 3gF610 }#,8i c#fh E 猧)Qv⼘ѢzeGۜ=)O*S2Rڊ, <'9AI/y N=o"ug/E\k a]vY31i3A^4i@æ:'ټkA'Nk2LXnDG%\s"~?-(n+ƍ?~[ô 0_䓎Mo~yEM_mcWP?sD]!jiUY)?v/ׁT'Z]Ns A=崜2\&qbb!3W`N&vq: iY_ph|9(ĢB.Wχb_󤔤0[zEnoW혷! !C'N~w*^XGtx@P6&"g~}E'XszkOI끁 ZUVcpdͯԩS* x_'=;I4*x2~0`MXt99x?KW_T7w3-);åƅIs8҉9j:*Oe1EBFh,Xyii;:1TCʠm쵧mEr%_ P,=3{1Z'k'[`9]?h}_yq8iǝtj"i_cޠ"(_h9}%%/{Zx)PO0쵇Sf o`pc~ݯ>ή-)Bw;rXo/Б,pP9(/Z'/#!MW+)yRӤ[o_wzwLm P;n:G.?a$-Y%fG,KLf2@IcT#Ȃħ,q=fOvc= 0x;NǷ񹄲dzr̿zƍCm|Szb=ێN6b+ >o_'M{@G0w]KA刢%3nT! ky%ɗ6a-ћnzFY2h[/~m/-b/[ {n[6G7X]\SG4(hvּ-Qıӟ޼MM38}}(3Re`?$)#y_⥺HJ|)M!oO J3~|ϧYf`y{ ug$t"}ޑʥ瓝]q=-_N{.-! yCЩ_OWXLr<#a493`tU')ܘ r& 7Z~?Oʁ`$s7Bm$zK2X!sBWL{G0;-Z#cz]hNb¨cO.?. Zւ?WB(v_yz=~≩/qq?~Q?ܿ/qߏ|̾'P,]on-=~g*OP_\iZr| >VVKVZ7ʻQZ&OQlۃ+Hkk+ߞae(-0z ?'<<2e ~؁VnV$OWɚW]s6oތlWZnӗћu m-r3( eR>s#;]rc F~9"Ebul̑Yq39/ 9a 7=0V#@6b2_'OyvnB8(ZrwC1c,;@b-e=fO Rv0e$o_} ZdE~g i ~Z}-y_H`o|{zƛż[p s1@COs6tA|zJn O<=;OyĢDa=eƍ#ˣs$Սe`f,+O/ p ,IOՔ*28Fk#5<1Qc R_l;y5x-: ;|+'ټ)j:xȑK_+K#'śylCuA>Ks%>{)ޟ4i">opp2uhddZ 'GPKx Ky[7@}rfEp9PzNWxdLve2.XSraa_)qŠ"dHr*F%sAA `FO/&{aR>-!:0d &#<_gsR^oѯL47,HN 9RV;Ϫ)S_)WhS^?O-VâKɘg=1~|01;fN<~YM:hpٕױ|Nltj>uۊ.x@-aRGIS?7$s9.eA7!O |VȔRف{OI:@#EZ}tЕ:Q#Nl^^>@Oҫ!.Z/tEG} /R ΠONvW]s#aidr<]iVLZ ʒ>O?˷{K<%ez 0syz RWm À*(\ Zb,xb߾'MXyN6I7w {\{3lCum-lQV$dyDt F H;\7y^;@ ?yNIy[~`K{d$435 <?ީ#dՁ?_@?S) h/Rh>}l~р R]&ӟ<#Z?r `owG+ vs}3udq=@ͭy#RRh%T=-<<|K@i|9i-5-(S1|!P/$j7i=:?5̋i繘:-i^X^*mmW:7Hqٓ~0)3^CapW#Fɿ{ eW l?Ǽ}֑SmwXx<$scf V Mb ':-`$u ӞDxsA.oJzX6'UNLj}GpҌ]1DYN)@5kLU'0$#o{'5mA{EZmk*WK/Q96dҪ@?Wu?E#dOk?*iy~^h=wL>fPʉ<p<4\ꣿ}ۢu衇dGYr=`9[ !=)O1R1I/, tG1hԟndFjcR~Ay|F?4|=# v-&|:@"JO1ʩ*]e_o#"ԼV˘T'NKaV`~w.#z&ʻkOJ -R E;̒u]rL1|6TG7߁ٳG̖=Wrl",Y=Џ8pp|YscIJ/0U?إ>B}9{Щ|>/xGhn9,-1NBcMPeM)?vMkQF@١-~ã $L=cs"IR_BmgA=")89ɎDVEVx#m2!!օo -3_3 fHGO_GLPY:iݓ>T69T;\Ӵ`!6G122 dl[ [C8nH渽>cѰHRgr9Mk\}c ד_ύ(<᧞Fj^3<{$hBh|@VOG~ܤgN F Hᦋz@\ >.pu_Zn[ w?;ϙ#ӫ9^X0wם7:Z_NK>%Kvxo޼ {] y .8F!( ?Ō% p+$U9Ϧ"H}](X>*Cˁ);xQMwP"+y=y$MPҽh{H㴸P^h/Tf+EX]轲BNL(/4+iVJV_nMH L?Cgyឺ0'w,_Љyw%;]v-U11Fo,r-)䓎K_I###xf:>Bֿ_"sIyr ^%ʧun^UT cAo:\p,F rC'a Y406,f!MDXz2Ky2D$Wx}YT5Rg!`>+c"B PC-0;L)ul=S#z xC0/G+'w&u2<MJl@bbR_4|:AҷgRYyp8ԄeϡeXmXl"*rk\Kv |]ycꀿ7^X e`wq6$vqZca{^PXCI rZU֖EyT& $C {?ዀ1=dwwx}Vu#j`d cMrWK2eVe_Hc}|<(ûOU@ܦyS:F=%z*5VOJ=:AoXt-')&K,WOK=˞FI?{,VF9?qxrcwDZ̗Ckߓ@ٓV9>B$=&i]Oxe7ŭ\q%23 $|{sç!qFh [=׽dd8W9>%E(,+ pˡy-Dm< !=;=p r"s[? "OӤda~vQ8:2kG]N)i(8 >( 6l(_h 7Uj\YO:Y!/2t7*ĕBؼxfMb\ l*Pޔ'GBFܾ,[1V,$+Fһ!:geU3`sբtL"/$ъD VيWChyEc k\~DixaĨ|Ӝ}w2 \#0xY aJ=Vn'$??yJ''U2iJ_V  yE3fvA5cS)W/FEvqY|^D9X6,K*?mRtYtrDKRPmd1n9` }쨔` `8bEnY:~ff6ӱe|[=8G0Zx>M"6?,sH i*Nۂ5mG_=+\[_ +rּ?y|cU ~x QbomA'πJh[XwpS;z2c75Mk|3( P CMp 0Kx4:Xy~s`k.dteeSVHF#4Klbev6FkXx/TR 90Oۥ0mV~ZHX%IlW:P8 8i=is? +,@] |zkR"Uy,*WW2xdvw#` @kŗψm x OQGv_>7/$I$ÁԡpoܼO[> %MKHs' cAiCנ| ]j-g$\&;&K#D8ЮyoN'yD%NF$19?ҦŌߨqKK}DieŊה"C(U ъ.R,Ij3^ D  S ^ܨJ0m{1 y94b3D}}}8أp ^vɘ:e,d处=O6ˀ1)Qٵ3:af$e0|(XSSǁK=f.Uր`fk͙P ,Y Q !)\;O3 o>Fw;u$2z+ڸIx0҃D@mA \V)˗0˜3D z(O{G, ͢gTw_.끮B|ETGɡ/?z?bޚ?E!DG2VG_+}ޓN7_7ZO.7uڔX]Q$o@Zd M)t,xl!q'>7$w/<'D<4)9 &M/go*yzF@~--+Ӗjn zmALB:gnx]B0tg-pXd#EnXt+ .n޾%P/[3.Y`V^Oo%RZᾩVnE?]YCi ܘyQ1k yqHZq5s^pq߽'o 2nY-QtIn:ό?J|ޗ6 mYqop' ]oe};e%ihϬ+իόO>$O)"18h:y%"j|e6uF->mHyEѐn.",nc*zJT W..+7=΋.SED>&i?E+OFsj[L~A{ ikx(zE˿{ LwN4q{4|A) z€ B5kg~7|% _z,-^z@|*# nE`y @NqX"\Zu1=Ȟ,XL&'$ȼ 'oГ]κggR**3. R}`mߋt]D  o  J $&LMRzko?E31~|w?܊ j@(0޳kЃ)'S&3Ҡm= )˖%bS!@p-,B`,;i;*1hvNAeyT[ri˼8jp(K0qx nȽZ2mV o3^>>p#1`Ep̧T6[cYXwnwIyԁFDOzPfXU?Paej:@|OdHY8mJ(iW EH! ?ٶ̋{Y^i=;.Qf,Wbz{|r[\>X:GX#lNdOǣs7&Daȴ#Tn[{'zA djH(w:3G9 RV\l/|= "XB 8ԢvTw-aBIg5'*O=k?V3dňѴ2w0?{uUrrA&DNR/LlI\:l\JTt0|u (g` V>yӇ ֿegsK> )aJ -Yo~pd3Ս̰^HZ;lH: 5n_r)>N7{ u6pq AmRIQtt[իDUX|g?hh?o˕q6-7J6y蜩y 4 CJ Ko̞YtP)RNX2x:nx%pu?׍>޶4j-p)hm/b8gB2 , Ln9l#=0t!F"S,}aQCE ߫2*uNGVy4bl 0kLiӦ:@'ϓI*b%y1ڀ ܒ08$O+/aޱZ&7)DFDG(%Tb Fc91r^k,!G Rի ؊Q~=0uogƽ-6ȻMZZEX=~gu5"' &OWǠ  4ixi?(BtMmU!'  }e@çЦ0iJyC wɟ' Ps$ppD^5X[)ʟĜ 5]IDΫ%32~O:L.N9F:g +X ӶCVGXzizQhC!19=BĨjaP9wb/wZ 3uoC|nk]5So { I\͓ dt#ef Eh2q,#I\S5)C P26HC~8vpSFE'f(SN7pr]9F@~_;)rh ?vqrjEx?;B`+J-T߭_U?)%(J888~y3ʸq!(OyDÁgAt(x,[nhHRIk$ ii!jv7S`b@pyS#|Ӊ4çV) :0>B$QN[g}ְgݧrز/ 'X=`ADɺUEj[#5,t_Jaժ mmM7z?_?1Ҷ?S}wʼad=sԂ``峑*ECzlP˧T~DgO5"R| aҺ[2G$ ' /4 oIa>ay8!'4iZi<"{cx3 S@ba\B^? _3 (qu>) 1 2e(~IѹOyœ:B;N8縉$2&(CԤNR m&3.bշG}d`pZzc 7K,~+JE,qYWifAD(>Is_tTH+'^t_>K:m*[ !Z^>zDOz+0_-[y~i#'$JҳlagX.D%xy/قԃQxI8!a Pv')7rYHa;F0OXiܢQ V/+S4(xQĒD,:l&z`l-Ƽ@[:E: 8=/]SJ r‚,!//3$[E՞uż8e_d8~\6h= %׫bt{POyh?jtTqO]0-2ٙ.,J#R?,:y|ZEg8M/W&}ѥ`6PZ5f:w$@ nHUB1:m5z>H:xKǬp`x`2耽x)I&^3nFy#E4 Ff 7yn]k g8Q~g΀ƥltJ{ǮJP)>m#,CvYV ؂AcgI4фD`kmU+_YnyDG{_dX٫׬IX_K^4i`[ %GI ҠH<:6GSƓUi@:Ր/![(Q,#ɫUTE&r*YL0C RC81ϖG fG.h9yr=]wQ3\VRzF]H14} SR?4I WOQW?5q T-@Џ]T-MM5(h!3ےXT)3U g?ǒtY{{;u|pUƢ @CVVYXaQe,!Q+O#c>:AnL&͆DxH(`j- m 4$'|-/g^z{gq#! ܶvwe:wU$]k<#E5pt%֝)<|?bGeu`zB7@{!]8r*" ïx|6Ui*ae1yJފV> <ݘm~"CziB_w  3K6/ )hy\& V<҉+!cZxN`y{1bmPqQ5< }0r@HI][E ឰq92]8Izn{9N^TJGs/5r4Udr5)-<B# s,/ec`,D`, H4Ki߫Ң@I ZGM =@;xHt$1Bq*2ZE+ Ś ~QccUt$<~VKnMj|JuF%*>ò @ Etn)|G c YLTBݚ&#Up1Q c#$|5ȳW#gAT$9Y9^(?}v33޷]D{xʏ >NJ)MGQG@ҁ0-$D.:?n*Ecǿ[kz7U7 "vKF9epP,f„ {JҌ6eyП^\% (@4{1KCOAjPy%<%QmMHh 2܃\ o (~/Vǽ^K ܀yԺ.1⼿SWԩܐPE>;%bYZ^`Ch`4%Q 5 6?i m(T|jAЭU>W͝e߀4oƹmZHп@ kլȮxNf2m%Cc0` Lo{MHFkhes BQ0Pacea'E5gqYeb^SM-LI FV\lm2&F)do{< 8 y;)@^q9gWs2CId~v(yJ ciLTО' #'eU Slu_i2=P^0KV܉zJcb8ex6@곤i;D֡@[Cԇ:y5_RZP|B?}s_?R&)г9YvെM@eg&7puƣݻרGp4ÅD9-)e @CδVO pݳ@+㣃P4i fc ппPIݢX{ŷVjhh(Q?_ۓҗ$׈{~hB,J{:pc<X "qZhG.7xt )rǼDHr8@^_G~Nc"&JD™`S%?xFʏʉ>?woX,PdټEt8x(Z1Ax o]Il0q ~2CReEgA`zJH|x?DE巁M#d P_w5Q.~m %/ýk%B1yOhc/FxD@ˤme7ձq:k(;CG <=BgKS+E,]4ĨB`$z,Yd:zc&L5J!{Z~k?w 0+|  p */6r@ LAпիWאCHrZCy2uo.'ڠFt B[Q@<Њ{%/Qs#@ҟ*F@/p0(a7*j[LAk'G*˭µ0~?2S䋞Aü~q G;Ͻ x%FoJ)iS3GR؎,m`/xGahpy ļFy %›@Z^x?+r/^ڑd0$VW6=5e%Tf8IԛпBSڮgѴA+$ !x/k1ܿV_3#ӁnU|ɻg|b|V /&5 V+bK}.Gh2޸]fzk)6ԬVT FN6 1oܮt+ČR>"b1$AeQ4Ra)@^Llou+ i4mSKfռT&Q& yq|W|5p뫓ۉ I_ꌲ9v8 V& қ :ps&hC 2K-}I]8H/r**@[]D21%_R2ŦrJT?ZQ.T/Pw.m2lT\eҤN=?6 ehGܡ7Z9CF#JFf^=c4ׁ4@p^ `E#SG7Xrnh]O14cJ]|R"^і5 ?&8Xζ@<7h>ӼK(yo@#F*G"i2 <$Ëż?)UˣI%(,Xebmÿ F)b+vBsh g#x)#o9hyy񂂰,/GLnXR.qꌭ'ذR Q@e=F@.VER?H@+<"[C`&zަQt 9 XpN*mY{9kY剤h?%I,M3Y*N-U}dML $(|(HAAn'R#Ȭ'ߍ,) ^f7TB}]F'Z6u! >x׬U*=y? SpiP)nANyɈY.:omˁ4>pA$[ýXt)6|Z&|ZtG&,+P -<lKK ׳<+I௎A4iR1MXudJd·\& g[z.ہrT@!jɈL{BH4m)iat4JD(氍`rTv`Ϲ#ϒһm7#d>$M_EDGDR Уҩwg~zSW`GMѓ4?i)($pu?ky$o }pA>tfL|jEI!Y=; R zwC: EJ}!SޟB~Yv ŽP}51~TǨ[ԀMTp5J4"[mAl|׭Xz).Z'zqC)/ pGD+ 9 {w7cyf~}!wW" >6rQtNuPoPp !R,Y&B8Ks *ET5 PywTj=$uCQ g7^BZ `Ybi""RS+@EWtpuBvEiI55R]b m `U'XdWb0(%LQW!  5By4hZN{ h:|(اv'ْRk**O ^BEE Ɇt%Z{Rbm:nmjF?OBIƑބj z ʇ?GF%$ рn Zmd u ޒת'5x|"|`jg-W;G=Z8qJy:MG 7r^+ݗ8RlZ*F(I?OAqD7A Է9:]7|3(eZB{X5("8 =1[IcI‡-Xӎ+7֏èjXGݞ]n ]ގl|ɞ:AzUů'? QUt]xz*S' H-@N4|XxЋM4(iihRۖ=P9u~4s >/bt$m1il&cqj=!YҽT"EC!e")Oo( CyeKAx@`h& NOi3MV P鶊sQ^M)D 4bEl?Ps8jƭLswLx {IZIql{iyutMHki-1OEw}W r& c"1Y5/tkw }HXG~|6~O^?#'^ҽ 1A!wG'LOi4a3^,Ʀ>C˪6I/S?xSkN׫$PSWY D@hV BQ ½1;&mʰ+U iH?9lټrоk=q`('t:pҺ b7eJymƣItB85HbRڐtݟ3ok߻2EixGs8LV0J<.?/Z .~zϘD152ToܭpkmjtF&7tNl(瀷_ݰK*Io;4FZ%֫j `.8soQੈ2KJxd%dYS@Oںwdaڡڋ:*^o}$@SCluqkFx /ǿ[ꇊ${:rMXz=mfvN[H2ѧjX/R/q0LȖ>K*WTK"1`+[2^x^ڔisHQ%֣U/AɓІMH _rFx;kעY4P+ؖ,] $1m]zכ$9`pA6]7+գ4Rci#zҋTޓd6{>Kzb6%%W|D Rթu1ii:%9Y  K5~<[LbDEF'񜦖,kl,50$3L9 x (J ZJuj ʓb40X*}L6zYh;)4XR8`W[A0:"B"F %|>q^ʤ8.&8d JP ~C볙E}g2K_x"ԉ'VAkː!Q ߃CN]a!^UQ6TK̪m>=2/SGEHVs]k.?ɓ'B(TK!o 'ތj^/*& Wco 8\V-CĐ`ӝyYJl֢L`E|[.7;A(yh2ݫ%oB۩m ר :Klticr):hӤxt9IXDBuzy,sKb@T i]<͑)E:)P# ՁVZ~3(F~-D_奞 /D~z[$Vgh -[QsqŵSr Xԡ# YD Eys'c&;}i`3 pPUrij.Dv{w/Miyu9c@$*-4rA2uWAL&Glw.%J9pW4zBzy`Xr̂AAϴYtN:LVU *ryohF NPM ('Ftk{)XT?.(YOνOb.чuE̹23rwT6qR?Vm<9V HxD%?Kqe,:Fkz2K]0{#iTa ‘T~Ϣŀj!MU/U$7z"u1^&mI ZnnٟtKy".Wž<8. ɆJ܎1yӱ0S7޾'VQ퉓+y͸'`iȲ{=fϘ(c9~|`GɮJzhjIшJyE.)o%/ 9GjkzB@&ʘdhŬ^2 OxRq` x8T-we-ż*2.~pqo?Xf_e)QXy:_iH4TZ ?xo_P?lk[o +~f"k FYPc9WŞW^ [bQKDk< ֮>hЁ 7t?Mk˟y߱*/+t&^`Sˋ??2<E͛7 'j}H3^-c}6MW;W}-qs--Z q5cKUAUd„j3.]UXDhc*Ћ_b,Ԡ4mt^<Ǘv[]{B[!kHgACd[%΋>rK:ncr>0V/%㝄Y>'v'x~̌YBD6rtduW=fɠyy^ ^ݐT^dP(_r+}>kmc~yu"uBE_#r_QDPew$ֻgz\u%hg)>y%)K-Y{ѹÔ :><\Αd@a\##%b!mqV~' @ է\H'`3p).,jxWE%H5RE /fa^2P_ #Pwآ?VQk$o>ț`{>-}80+0udr/\\g9W_xxaPkoY _v ň`,Y?Rrp_r>_㬟]%M<>zؼex6}D.r1 eJԧ)+Or-:6]t|F@B]'FK$~x W>8YXo6w@t>ЩS`06Dy'f˶im[ie,HX[zuKsJ{cch.5y6u40a[ݗmK?^G?%TsոP2M{>?^[Ƹ7{:]sf൧J\#ؼMql-TLv-Ŵ)nULY%ILhyP)X myU2F[N OlB_!XR 0b\u|uɲO/Xc=j䟬*-//s0*Ivz\_q 7mbń #M!U{ޠ\f]2|?;#paаlw~{/)Nqy¢` O(Qzua EwN=bGNA5Uΰ>aٵ 5ע Gy gWty{:5dn> :6`:lw~(]StQC̛ l F4IVI<_OT",/ժ}^ZQuN b<|ԯ[C2v}.gل^>î;)ڵ 9J:炫02Zo,YR[/>*׆F<)Y?/a1pQ`֌ALf26є}7'< 8(:ѹIyv@O Vo R)[H|zmOQ@+V;{CD/AimT&1S\CM޽%?0'!m|޸o|iW/_^ysei]S抡ICёHCeU~6mlԉ8戽?NzwuδZJxTELɂWne/jXư ^ꔅVΔXcZ$B5E"%(@^ܳ^ʭ<.ley-憃$H'X!~"ژ>wv݂Fr?929zCkt: ݺ `Ύ8'_Y`ţ'._|oX^uߺ}`G+鬟].'#ϟd/bu%dːlzƧZ<}@B9))Jmm3&I)45fhg< P>5QW$|!‡ A6zز;W2Tس:mgCkI^ciqv=h:S8[|*鼋ņ "kn˖?=#M霉Ɔogr{Gmd_o4uv6T~_%cr!1yB众"&lUtbFyldZ !- [o7_7Qn HPU9ƔUq#hY?xVvmO󷠿c~o4)- PswW]xGגj!\ #8k;E"*/ ͶȊ>evR2/lp?MipD=gPmK4&УYy_5jpO_}֒+Fg*ʫNi=4OCMPe=yjw<4;t$Д@X{^'Mӟz֮4b9i8Ii7:5a{Kp]Fcڽpk7JH5@>P€O촩,쩋ZoA?dAxFL,'GL^Qn<_8+)![oZ.CC ~7{b[@"*qzN@Hy5/Y&} äx3M ϝWR TX#_J꺕ꉆ15D1K#Y3 B{=`LwnBu>==Qo'k!(i@SA/мєb|@hO TQ?Obprc7^]qXذ#Ty+~ :d& _y{|,pvޅz#THDUJbwp' gA_LoJ*. VKҴ%rգ-=@[5rPRzhF\%NҪx]ߟ{_0{Jr_~xbҢ,w/pdppfx8M[?_+_L"EK,NKP@[Yv9HcAf ~b S;t0m;ɨȦ2WrkDFժQ.g]|AmxrD,gp=k9ߧYT֐Ǘ8ueYyd@YL Ф<cMMs!pZv*_uV>V/S=YMs] =0~wgr;WY_ͼIU_Hyu -Om@ W >J,iQͣU̓^Ta{XK6«X.aWě'~ DR{ST{mGC~'* ,jȼ`Ύu#5mZ~jsw¥|ĢqW-_+=P.x}U?)"9Z?,ӎDe_ /y xH6M֐=c*'5.}i޼JbAnHB5Q"T$@q9x%ҭ6•Oi-?/`hrx{)_:8Iyz@Nu(פ0a~}H28_oFmjEH2 S͓%jG`.{HQ=-w#O@Vkcm[ntP0tP*Q~I_0  «;)< #@? 0{qxOe6+.+V){MXnP96й&g|l3R25}.RP^Ih1eքzaUpu_+'4iDT_Au ݣCF_xn~RAHǼ:'fS6 6D ֯Ry)幣 d/(az3hϧO_|'sH7o2 uB雷W\5++e]~{gs%YC1~\_I'܏548i|BZ-"zZ_UAFhTE"ߡ^`vh'DZ1[/LЃ>P%:!_1;$xN]vL}cjӼƢ%9 i͢!c>/ǿj,ʼaX{7e鵧$`!{ѵep\ۆS +Zkc\ϡԗ!>u^bxs:3ܚ׳val[lxTC{7FMNș-\!C%g8[XS@W@B^n@9TG'Ij_KMxy2(vi +ꒃ=oB;"3>Vuk쓱vv4;ǻzZRmy)\z텬?$n!={ua: y{?ׯ#@?OpHTA&⫘jtK1YBޱdoa\7^>D+֛XI_[UZ iIdXC{F@ ^?;䷱7P? X<' |$aラ#hcuGxW~ /K7܃;~ڻd* F hFv<)~QC35eI*4yeP:9nYP~\F UYq^ն@wE,'=_VRPQz41 T] !.tXj06=;@/y#5$[LV=y;'yiA)Zu~3?ڜ7d WJ(;G⶿9;LÛ^M/_吜bC?C.Z}!E8r7y>o>*X_r<>_sWzѝA3~s㾇tc1kdv`EUuU(VyW=)Z]|8;zJjlH !ݞ ӌN'eeoGY>AV[88#,}Vg|mʌk8gdMԎͷi(WKvׂnUwń M7rd_IgN; >T#a93r ؤ]c֌[j/ 镇+Ư.Fzƌ1&@V`+Woƒ^Мhh;o6C73B:1/+#/tz!M2%0RX͟ m{g=自Niʹ3?3]ޓJGކOyzZf,zjI&y"u9` ҍT?EƆ;KF@dT'!/Ӊ'Yy9mȃ-e4.La "K˓D|~l!ʓB:On_^|N}\j)4C7 :W#чIy_|?bk2F!$U[pڰ̊WMC ѹp>dxipS<ݐrBAF@15#F淭Tߺ1FK8w_k#i 3*lظ /ޭ2::{\~|,{F\08y^Ct5 \? ε`L ƀV.jsd91T8@Qe] y{Ԗշ I+t/ 4&/@Ѐq3]//Fq%3L/sqقd.cm!= &5/P#[VP:#Ke_6-#`^_̽xC ##xG ?? ZƤq^tψd>K%B=2+tatĎŮ$k(-#}Pp>Ҧ*oA_j .\h* @gE_htghUǽ'!}@*y7yL.i[S0{V3Q)U^>ū'cֻLnyߊ>Q#ǖ7_tmxhbYLeD.\sh uwq9ҝ?B¸ԃ-AŁHKMYlW>)*鮂QPTV+ -T/@:sb2AVO# ͳu#~Û6\Ea-e?In.)28 L[›BϽg낵pYvF`qg dX_ `hF\=oᥧV0t'^^2NvOFЯ5pf7D^PhP/ÀLU4Skl{?L ^!2}-XYq!ea`C1>^~νEf.w[Y-/|sE #癅7_cwDN&LfSZAG(k nkO upgl2s5֮ 麄ν~b:]wKp@fO`h~3-`xPgOиZn'u(ʫɮPAt+ߪ5ȱB4:.5OzZMZ- >.$ Z-w7:P/'R`.C>7q`'<”If;Jdm`gd"}kV,zj%`xEz>碛pE7e|[| #~$kYSpRۋ2 t9 (E[I2h_S6:t@jkp@UWSi y*Geuy1Cҋzٸѡ3-Us'ߺ Yϥgwe H/ly١#Kvo}kW(C͝vcGYEoM: '=o?EL%]HRؽ_) UUã?myWX5Sd!CuTNEe3.U/\W[]}>@p2^fUJ?jC)qYrAH /!-`V@E4( Q3d sdpm&3o#L\$OUX4B|գ#O{&^zs?b U`qɕw⁇$ѳ=~8=qrn_ԉR/k$O%Xf Q}Fu1µ UG/ՑQïT0=)2<<1S^~lI#Eh^<7B@[[<7"7¾yb6Y6Òj3vlH^bS,Paz{@omXA8ڪcӋ<0?VeS+q[:{9݌ǟ_ =ӧN·?;Zԟ\\HIGStN.p^yP=\u1!:XMS6uF200y`zI fH^*G2=0-i1ןuo90z:xyYcP4FuF:,Y<3?uDMʴm>0ŧF]-YsMXnKƗ|1g|/] y2 LO֌]}2$VɑTZ2P5X-MhSH+/PI('k~` *NAJY `ejRV'/ VS{xAE46xox!O]K2G5qE~z^>6$e-4%-, +yJj}' Սo}~zM 1~^\\,{K^ԂgcHO- IɓO˫6p݌9Gѕ!Ys`e#"nhVn&!t jEcW*3'4U!~RXQ-|^L웷 {:omp-t ˶m'׉J8*V=M[6Y@? ^ўwh`8\ppa{{p˝ Oν6lo/οK?}$߷ߏ ÛF8Iё0nv_k+t ckR!pƑa?d4% [!MqSm iS|F\uF@.^ sv)W e8Y%Wi|Rq^գ#yI{} gYѓpnk M$Kίۖ 9@~g]8Qd@1IBi;pO>]tx䱥,V݀J|s?~aŪXt'㤁q88q`0:9 ,$J̄tF[&@p1[b=v6T,ʃ*Ҵ9}u*@ eWs=@9d p#{4rbuHE "b>Ӌ?#>HLoOrwOpd"9M: WHn+: Nʏ_]GSEL~Wqw}'[Vkw d$nVEhzu1 ^q~5 " ɫ 2ÔYa[Wm. ۮ*rEH4$d&g)db:Whi:,u7( <_|YEY IkͩaI|ەй>m8Әt1(~q 'q˝y0 ?⚛yd?(-9Ik}HO9[`~6:wfRfMʛk I_E :%`[m=Q7SER,M;Ա5cP;{υ} jXaAPfM 9XpWI/~@ Ah}Wz]lA שxёQ\:t؏ණ9MؕHm4f!9_sv&k{ ` lğzۤ'~LϋNdZ F6SK9-^ Igv _%86{w()pwu%n۳.łV˲Ϟ;>3ڗWݝ-q_p&MOʥnsJc5:mVz7< kZ- dMAEMc@>T͏e%P(PDlP٤2FEЉu=ǡ|{cdNSLqGߥXzOG9{! /tJɋ1,d5SAyhz@6p,ڻj)Ɔۢb2)U\ȷ2w/mo 촴coyiJ$ FWK: nm& G7ptHGF/o0QYI4-ּSOmRy?Ps~Y 8\fSIv~௢޼071   N=Yc ^}0/ KvO:"f܊j̴΄r j"eB jzܒV=hQJUX(:@I3ƊFiKN"(?'-v.@OteʷP,o'fhD!zH<ܨfq=|,2YjHMw0K/&sp_Ek-!ХPTUhb\?d0L?7ܶX%XnN:f?2g/?u'jSX>d/}τt;o8(f>wkFfhBb iQ%uoETU!}-#@ 0f8/ 2,D_̛r~N$%3B?H lnZC3Jx'7g֬,, cg~Cd~l4=+Z4i@ZeQNxG&f'MZYoV?ȹ4|7Fx/nqP@Պeu4hyM;tp]wEPɍ&h2+Pn-:PPGEf,-˛?X.Im˖<>_]tKB4jBLLG|=鼼bp0O֙,Hh2G jW/ŗ߅k7xă쩘T?߇3U[+X<72Lވlc;g/^BVvTN==NjOS]GHY6pX{QXjNHb#@5aџ P:Q[ S˕IуjrؔT .oB)V4"ҳ(>\+-tD $]e<9tӡ6TO|3>Onqm Ξ-\yU4pËqËzx!w..gߌ,آwu4/?yaz#(ž YGHNC_ 5H;.<"_ʐ7м"‚ѐ\N9tC^wU ujZ{< V\wa GIގlģ ez#Z_;4\{|B dWyQ >ƐF$D'E5bD>4*$(1 'QW)}b5<쫃҉U!|l;I(? @qRwx,8H+0S :@y)|iv˲NY*`(T%*fG>ۊ:KQelZJiUPc5^Du؞ݝuWpL8rY|8}Tm^?:`k-bʐ+NRl Ӫ-䤲:38<8欟]^v'쌯~M7b3C./ }螘Jy;Ⴓ>]kqo,N{;F!0_j/uq)ןq Bc}uYK+f,|G)KiQi\$@sH;#P<#MMGv9BlўeKVcu뚷^lZ Y!ۖN m AR P6 *sG)v h8'BW'oy[Η߁,x:5c2̾m%=s=8i<.>o{F}Y$@ӹjk̩2ͩ]+)@+1^+dح4_3jVZNfɽv+#ދCyawi5.kp-r9ؙXI{6qdC4CHvpx{|@/#$TO)ɂҕeh0U%}^y{턫ozЕvK+e 0}D-]?l]Wދ;[,T+3yH=g_?mR)(e< }o%徖w2&OXylx0熌B8zir`xpZ/lzD SЗʫKR361jg"g2^E^jK8 zЋ4PRtDI#+dY<p\C/%gg|/]I;͞A) @~R '?#{qOyeik?>SS؍ |BA"Se9NZ~(O0FRڭ`Xc|=!@Yv!yNGʥz@L?Rj ";h,(H~QAu^D9?AY*[Mo --|7=+ס2믳f # 2 mP?q1A{J#+=_lOLȰ/P59Ѱd듺s I7Ҙoҋ2U0E0j$E-il "/ڂ;^&shYb"Ǎy)j,|1.m޼ФdplL+`a"<t˼rO'<toujA$oҿ``,g!\FukK)25yibiA;k;0\<"#sՕ{ <@SQP=g'hU /"]vxR]2rQ /TPy-O{[4JT^:F۩l ϖuhhoyWį-? ~Ӵt"?k] ?]ݯ bn)8aBXTaBdcBuv qߓ]+ƺ Ybq? N=hMG|-%7Y nV9H5@XCů+&Kdp_0rAѠ퍟 7/\,}$'/"O?r9W g{MJ@m L\6oW8e,/yn+zH h*f?,D9J$$4Irzj|Wa<ޠמ-V.1Pc6vƎ.L67]{k\ʺSyLZ9Fb*IPH[-mm|h2&oOc|9I+.* ugsf|&k;y{g]*K-nT=<@K&KāGѵcPp?uݍ+So0fLoĵ2o{[giLVquM54?/Ϭg{ދ{Rg@|P߸y'zKIHX~(9[r*vb+iw& ^B1H68削c' GFfP6=N qnӜcA):cPɰIocp2ސDq$~+v[+/jFժ+p~#K;Mۢt#4'#475ܽGh/3ȑ?K_IrI?ý-4{/.]رS;B#?#o],Msy?ʢQꘕ;Cy߾36wVW~l~qCBHOٜ;^YX'c_q14>G.r\q;FElbPu0Y ?~ gH`:# p._@1*MT3ޜɤud\^%` 󗖙Հ93/ :FLNΗ.A@/AI g^Bg[SIFGTt@PD<^ lK7I>'1xOf̯7X^v3l2@i2Ղh=H;SpBgXߓ&U_pBi޵ƌrwB8n2ԗFn?a]LT`M Ug`ٯ ǀ3vxIVm̞ۻY/=V=G&w[u
    A6Ƙ-Q1A#J܋#dly-'MPdJ/o4\X%a\2諎GeA`_FSc@zcP3_T77JXOkexpwf(0ozj/~;Ni.y]{pR٧3'b9u)z{ Bu)S>IK+3\xM? ȍwkm+9N_MWNvvW/9>: `,+I#?2>3<^#@N|fmr>i,oV*JMx@L3 c䶡fqڴY3&e1\k/HW0j?HC߰Seٝ^,wV}U  Nyc~9v #L\p2V=VQŢfXql~6sT s v % ME~~!Ƕe!xGi*ef#+|4qy]%c'Kc?F =17e^x.`nݫWj^1_< A% ο$ ''_g# P=tNt~?.{{^ǟT9sWypX$GpfFaytL|჉]ݱ(x?/iBoɿ~6N>:tdy巌I_Ƅ [,dD)At=oUΖ y!Qmkm0&;Z_MbfM;Џ 'H'7rhGty]oWg1rԡ?97؊ynݏM[lش߹> ?O|k/(+@2B:GWRu@VIxkH Uu#@0Ӊ~^?XrF/.ceqQ4J$1"hxh a/Jh}h}AdM0#uu!48ǻO;ZZfַ/nEi ɛ1}8N 9~7?^;{= 'Z/ZTA6j(K;'Xªq {|>tK-g0.]عi _b״~h#^'/"ؾ*{SN&:W9F@)hv~IBz;sBwʲ rϑzp,΅or>,@pm3I}$~{]5 莝24B\jPJ|8@++RH3TFBL>n3u1n84ND}m;m;k#,[ grX_.(-WhSˈUL[Ol,?`زmس=Qv(pkiT}FwHw"OtdD͸ `$AtDy#Izp#l7V=I)k:$C5P<5S?CҲy #d2tr$ op1h {=UF1x"a $^eOtEe}FO^e>, tu+鄗#ңDzM@AU3+}|1FTe9p2IYYL#^[AZ3ngi%tA>1twx+Yڱ9i= $#4TmG y@I{!aӿɟ=ll>v&:%ciSiR?w[7WuzpzvȑK}}G ]ncwe:)4c'Vܸ}+oDH_ܨ0˙WEȗHэS fPƮGQ=@5|&\'_!iJ9X\wXK*:Oڒ/ӫȝNž|Xօ$h:>Sݶ*gct•V8W3japwO:ϝ:"`42WW6z}Y[7^?)_)' KWc4'0²3::0$q5|J􈠶EX!1bT9j}x]Yǹ^P8[W]~cKqrx}C?mؼ߿nEUj#-}`Kkƛ@;,|?NfeT_3Pȸk^!djv ###@#|B:fUgM)xK3)z^_#9mQC|4,/m {rl`f+HMF-!'tOBm\TGGCHbc_#]#n}ݫnE˗af6HVI,āsC-$q 7Z Ok'|K92#vBzqɃlw=)H<?)y߾?aՍ1vCø]_vrjס@oO?x}6:` dIDATvyTnd~+~OIZŌk:{׫qCpcyF`;84O EL(dljN^a;rN>#@;&8R#@ˏ RDǿL9:8[)Y\ʠ/5:]3B=zh|X%F+O?ye)+ɡMoVbx\1u#~u+pݏ?s0cW_`vYGaBVg]eK+#N'/~A_Vj~OW/^#Iϖ$! ɻN~g8g׹B>O]0Tx~#BJgh)&Ġ:k#+mj4"L|1’"CfLV "O)cvEY^ˤ|g'|#J)šJ:.d.eoi8^Uȃ<vTZ8i+Sj?F g^vkʱN6>V_$}m]w |ĔK'_%s鶬#M@aoE_  lX0k.,r4"W?JweJ.\2g4=]Q1 ؆>>`?n]Qݪ^ֳR:^/3[%KJ ܴU 1є" 1,e-wœrZxYGʐ_3c%2w/Ց>a9*- _u%V-Z 8m1Z }cq9SYj |<_},i"5c[wy'M ~QUP蔁#$L[|殭ŖP32FSgY^VYiڬIτm%3]>FPsk/HD?skvݲ!%VBmee؊B5 UUATei6nچk@OO7iCزHuv,=EP]t9%&f@ɣ}WW}CoOO>fL˳:VXL[W|Ϫ;Uq%e}-M/3c~V S ܉HǸ^1QN4Fmklıd\_|428i䰁X#Y@S cA4rfYuh$ nR헗cRy>>s(NE [ZuFf$v(37$e剀1{ZNK"z ѥsZpe4)ZWP}$Y'$DЪ~Ws_F^vI6_?^z 7궲dF8;"{K~L fq\OzpZ}3/aA iITnh Qr4ƾh/gX;N퉘>PZon48FU^[j@imv٫ds`5)f|gtxW; y Ʋ,*v77I3H_կavP_WFv9}*e?QtbE⩤*,piP|T?{Z:پ4a.x2vwASY謱m# WVe킞&6On8gfC(y[k&PgS}VEhp3jh$xW v| f C0 <~(\Id~)ڷ÷ 52X؝(~V["_VC1R(gӰmXo i{f>z{jz{zvexV$pA`qAX{Ug47 /_c;rܩWߍ_޶ 6pއxݫcı[y6$)`Y8!mHdQT|69R>ݤKybe ɸ6:޽H(,W^ݔWG6\?;M;4/hk9iٞ4m ioga3]k@!{o`6|2bkOf4a f+#-j"3FvflĎm(IA-R~_~߾V+yw _w$|xJhe_S''J2I $.g9 Ixe4 |[6QkclO!ݥKA ;MFޏ5Ղdh(+/-SEYėMw. *fg EzgM75`( V" :$XꠐPp""6{uQgXi #VNpQ%mcGf[= h(glSَFx+3K%刺x5.MI,~^uʰuբ9Evx#NNm&^|ׂ/_+guwpҲY8ddQ.K:M(L6yUd-$u V7d!\#ӆ9q  X%bU 365R ]8@V7J*߳iv#i33j TYZ&@GQ"H!m( p{tp F HLs =WI9o؅o_q Xp4r5cJ4Xt@o>6i4= l Y" khu _7{EDL?|Q8dd<&AVMf"B;4"3Ұ+ibb6.*EL1N=n9P,J7@+/1 -eGSr)Fe:ȠUR$κЇT]frSn~:M2^|&M#2[HK-m=he7ݢ׋[^n階r@~ x`yfy܍o_q;nۅ#X?Xy Ui 9\Wxy뫳㧸7}y \5|/0fygu\wW xR,̩pMr-:p"N9v6MkqԢ)Kցb*/}>s; &uQi 6^||s/`\vVW4,5M'KA4TŇ[œv1Ȭer#n(d2V_'^:HKA,#e /(! VCx韄Qf \O4Y;O()/eԚ,^rJ9l6lm p`'zpl)WL}O +-G]=5p=o8iQ#@VdlY|]\Q9Sae.~O<^040%)>}.7s^@Soyپrt N I; }8륇aϊ040WʚupGo f^GJ\f5YtcO$xdp2q'~}}Ox5~mӋauϽ-w w  o]giԥʏK3h%&2ZJ!iÐKfܛ Q BZ·z. ~D@Z=)P N_r:Dm8Y/IR7ZAy5^1m,6's5Bep|3$,WUٖef`Pzq_R#Y'c{.zKq 's09}MYTP8m?W% 2zr{ˣ>*:sQ\oea׽pDn9jTY_OkeP݌K4d/ .+|De}lᕀur/l  ²h t=sB܌\X)je 5(\di"q6iT0Hʇ C͑ 0sDL.5RFr;Wv|u_>.T1sv7~?sƏڇjlrL)/H}  Vb*m -ΕN~3?[_ndgR`xfN#]g 襰xӇ-s]%]Ebf?Hr9(f`H;MJ/tuďv"ҹ`*6D-@o{NUvh=QuM}k.:֮ߊ-v{YYWO0/ B١z0VD۠c.ç>QIrĽ ㋰_-MJ{òSz BV0iȬvqAY[=ʤT Zs@a8_-Aw,岥ybm1TÎ /'yKJOcFj jalp w͜2%Tm-s@4eGc΅7GrZ-b4Gq?L ^aP0{_`qH;௕+ Pjj;_EHNTk!w4D8T\ {4""SFCZ_@p~L, 2%CuQ5LO?.hx9Y>TN Bx*+}bw\G`1vLX (9)?\ VSOX)2`j q f#٠ftVWݓ4Y@޲CugIOx!#3`5vαKR熗*O)Σ!Oenj-l}jit|N,)x>1XwpǓ0P 鍵_:e6xY'Jٹ 71ZVjNة9y/o\8XOW~^ؙ[/+狳8ipBciB>/r^-= )/4#fV\RxGDō`ʡ};f.֨rERg/3\ĩj3N菦od>>?ҿ Kor1J<'GXS,3iϼ @IԩOɘ(Q6'*ucT3riBSu~#C(uJ+⧼) : ^ӻII`,Y4 Y{=8e4ܡJJBD&pQoC@> 6B1B _"uF#*<! $=IhxL ^ٟUgP.Qt2T@[Q@o} #v^@?j_u>6b+D \ٖQA2irˁDfM{U~AϾ7Z־?_ 24`WQ2JE6Ss Agclcߞ: c蠙VxK_Pb:ڊtfW%Vv ;*v;Tg|+"$VK5m(NeS.%^P4 ċrtdǹ')cɎLΪI[^%oy@龿8}T;q>0F@Q@mFԩr)@8X9efj^,Gonld,so`Y `+`_ȪZǀ{b@X-Ƈ8޵gWRgK߻voũ'.˄#ia妰 qJ%Fsò*Q۔“ՍW8M |vym2_:EХ<>a$X,v2R=@jHDgvY0#L%p {RZN⌴&4'*@72l k 0yB  ;%(%/w L(geC`ڥL [%ʘ(rz!kl/ _|q`u\]ʇ`ŪzKC߸1v`al,?S' ~_Pgͨ1 + 38Pwl |D뾥\wXtHevl\!Uf kCyg - 2g\mVTrJ 62Nj?ogǦ ցd0JcGzWo*")ĭm Ƭf΀2VLAB#|c`@--i`n?OAW⯴ [w~?s\z[%!ܨ.('yT#oG8|K⾭4l2*%QkJb|D Q.$-O+sbDej24Pe_*64q5Aタ57k%EoTo!mv$ 5y֮߄ԑ U%gύaF@D/e#֨X?+!JmE@Za }X%[ U Lfܽ78nl~h)_-[vA5c֫搮ۏl X)vbq3;@:n.<⠯:&4I2t@yx/o9@U3|K>_ۆ@'ȯ?x`ȓt˗_Z 9zߣ+OIluDtr?yG^5 j_33d1,08#(} ;e{#`E ~xU.5B9zL~Fl<)/.bnr"ؗ :չ`3%"m vҠw/`H<$ <*/%2|Qƈ(Pjf@E3#5a13TCH cn9S][:wuNuRGeˁwQcƒw.5z(`u+7f](@p `$h2 `XZTeғj Օ.xT/can"s""2S9Xut`<%AnrdeeߑTwm[Y ej{5#mM3%51fHzcGxo֨-u@Z\F'~&Ol@)3vy*Y:AuF@kG>w-nqyG2y:[V^@zO9(gV|& /&jB|1D~#glٶKlp!sX}6"E9`G&ϸyO^ˌʣ:?1VߩxO)8  mz#xI)ki|5 Q99{|8T`[Iڬ& =锔WO }bEģ~|c\yI{/zu: }^I`^#\e;.X.Vfg\wfN_1{orY*u+,byٹڸq OH'@ _+c Louz/7\,m;,ǂ?h䀘g^Gz_#(]]1V~c={cO) RѾr Q:] a9 t_qqN|3W s|cކP,ӗr CP-c)[vOz^܋|?t0e~jvbu6glX[0H<ŒɴrǺ+C:vhچ)/JpoQZ&lp3FΛ o{W+%Hz˼gן!=E yu(o$~ewI6=JfQv# Q >#4L5}=fv  'R?,Z@rM򚈬jpb@__@wu+L,|90<_瓿C_F ,I@j\!ਬ~$cxNƼ9Sm`P҃g׼ fR%}W .2(tE5coQ0*ˎCCjzc,L x OzƐ3Qv %}jqՋ\>?T:;,K¼m%/?vR]{ʓC2JoGRZnkՏo®ضmJnV8] ee`bX)o]D?}YX- M/?-8u4w˟L&- G'mƀv]A ?׵ҧ<3x2xK?3n o6)ҷ vN+w'i(xvU}T$!+O݆ >_gr|*#`箽gE><XK]_`884wlؼé.~>G7܏hq#8d GL#aC1*d+K_m5\O˲+_*I'C0kcdtAUO 5{b( _52T(Gh#0銃Pa온/#Tk6l`3V"[.SK/qiXW,ct_`F|.a<8qZ|Vҭ)%/O#?LeSB㖴v[|lنc *CI^ ?m1iX7*pZY1u8ݰwƢyS8^!_a{\*r;`w!Q—?s!`գqgq&M^'>2.e4pGx 6  q49~9ʓEg`ƆO6QW,{iLi}MsXVj/yf Ej w{g_{>,I`)8|A!E S(m'߄_9|‹_ ; <]]Ξuw`,7UvnrKkFq Cu`f/qW߁WuY ?};6yS~ܵ [I >"˨N+p5~MXuZ`{pԡc݆wb!Գb`Ix+o\<^кex$Cg F ),sg}a%S{UF_J8m{p\QadN5yo4 H\V`/}RxjFOƓxr8WQڬ'k'/0/?u)/.2.ع K,IDZ 񊉓q tikƔ>,?b\Opڰy'~r-&ppASDbAPf:lۅsv ~뇭\]xo¬in.n kY4o:?p)|"1|99&NFfhSYbJґ&3Vt|Xi`Snn oO6u=T7Y+gmk7BOw|IވJyԡqg?]S߸ð{j&Rs(Cń(P_k '7i;-Gt"Rm^#3BP 4ʍmٽ2Kq0x*!z344;?\ț1$d71eIzցa;xsKM˚}_ə$&P/f̡z}^F,88^h=B7Soૣ\wSO5oLWHH~B|qT F:+e1L>0sO9M@@kih7om+u2,cw g^-xhyVԠң 4jj?gx~pC5 w]+CngaFZ6nY+Kno^_Ŝ{\uqګ?iZQ1ݸ#9bEv2pPd 4W=hfZv TE!zy+%RuGNzyăHyyC'rFQh}n  噱_>+hp}Yi ^1;+0)zЯ\1(ѳ AwW 2zt=n1lT;4w2~bL8[o~Yɧ^n+|(ҡwR 2v( k70JFppԈr|:dѾ>kb!>3bR݀18P*\+7?b]Г/9_1dB+#U_X } C߱bgpr^@H4~N?uV@Ӿ;<{O?~%-:h .p^XxdDD[U=޵+p;p૟:L2gSkb箽v̓gՒQv#P#Ge3Av+!Hqo?s8:c+)Mf`>D,;w|QP|FA쟌g-^iT"?3v:02}ڿSF>gKyHTgcVwO*SJV w`Id J yԨ'7?|gl5^,;b,[: +W[2̜Ǝ/ٰy'Y+و} [&},5Gcaxh=~XyW~C1uRٸ[ g63el2=Nt^{C+pt ^`%˟~Y>N,xcHL]c/cڋ-SOo=!EPCCx^TIy?fN|oI{Th|ruxEUb5e/gdع[S?;woV#Ol0Zdr|sĜbV,VoV.Yx ,^ҹN|FD(-)gp6HTcC;RhV1yԻ=/ 𗵒5 5o27rs2\Eq~b ^4eR>1gvT0{x҃1kz?B؀4weG(1TSG]+XL-Cx dh޴ϪH{y.f멤 ^O2l[NCw8Q)h4Mw/ [|[\<NPa {pdd8Zx񱇣WS⛀[_̙9o}aXa[/4:ttap0Y|nޞ.z|?ƪ_58`j~A!^p2YאwPP/KFg7e7zWb9}|VwXu0c'rVo"Fz@|2a)ӹיIG^pe ؊kڱ+k>zhǮk;^]<|ZoΐM۳glǑ/?xu E$ '+O[_?}p=o;:q=xه桧nMɸX4ojRC2C/Ec 3evddτvH&[n1F}4rO /IC:eP9ۯA!h| %7RꬿWCt)SCыR־=I79^rDA0xO0Tk7b8`LYI$&.f$7k&՝bIxĜkFހXj2x&paFyݰ̽=8q s<I,'Km ؅W=PCQ awm,逅hkNX<U׾.x}85Pg]To"x2`@~~V^L& io!GmeV&|FMkMWL,`:G6ˑeV_"o|཯Yv+G0|F{>qkwh: Kf`҄Jvs/70S&+& Vu.rp@ٲ{;+RC Z]:NxriU$rA+",7fc[*^}Ӂ|Qxi !4Ⴖ>|m֯y **v?bCO 20l}GyE6xU hgkz0@fϚ~V;K} v,^m`]a'>_=-wc Ocŝm2~|,[: VKZ'ת8\c|6.ȶ[߉rD\+~iPߕ  612t!I#?(r`}LKЫ'ԆկԀfn伥 #~̿E~턄TGvqW^1nу?Jܞ"btpȒwFBw#OVt9MKMż'b \2}~|yf]g9~|iKsA23e?{|:cj!N|Fzw~EBt2+d|d"~?>-Gpgu&.s9 9C7$1Q ;ե~B/<\z?㳏IRyw}ye8G9nF/OW ؂nx+݄m{m{w`Lo7vcʤq1eLWو-&`ɂ8tT™St g!V?S{X.xf?gnSS9*=+I:uW&ϥFoW=H xf9 NAgc)7>:V33N3-} Vy??߮Ы-1UXv` <ݞ|i0R^ `i++`2r\[M: Ea >^}}~ȼ3M)>F#]!hV1} _xo 3DZXNt ej%Ց)1~J`Y;D/pUwKOU1086): Yf.P=k p^#[:RO-شe7V= ϬہJ}`.kO^3s.=6 K>|D k{|曱.GȥM3 %L\,߷b2_,U?}ocay ځ @Gn6%x\wFm$cEprE?7^?rUC+O}l䶭o#csc-@Mw V ~fD`xJqq3r؊@E, Xo۱czJ w\| #3tyz_sQX:YmiOy`H[h6 F VǘBϞ?1PNpfIN-]jա}FЖC$JϚcڣ4<^`; ܓ]~k9IY{4Z>!Ycp}a0s Kmqry&gva6ww$V trPf)eO"^t2@Yi瓻!# Z &/ o&Ƶ2L@Ll1V"t̓P;haFh?0m~`ppstIڎ }K\e~NQl߾KSN5%Tu'bEwf/LyYRwf%eT Y}ɛ{spʇҸ i~ȩ K]g#߉^wA 8/ю]қRh'@W}"WI<ר*3r5$Cg9/!Hx}v1x+Ñ5<BxX=햳m9+2: 1 5@=z#wܗ 70dy>{7l @{r?Gl5/:ug م '|욍xාb9WgpD4Vh"_SZlEx Xj je O_HZ0R$Sl欮:u8bvkש2'~ BBpV[ވ.)c)o̬s#BVBrֆj9~NW!Sp#Q, ;I} W=kk>Ю[ !b4dz(d٢ά7&]oq8`t;ҫs4QFE$n XQf)K̦^ܠ<ms7g DqԉW]Vmd1}J:lbh: c;|3QE&u NHFA^ 7{mH>]k>z19 _E1LWe5g SH\H]q>5 ې^=XUvʔ20Gy_Î 0!>gz}Fn _ny悏=47jCøze?xy]Yv-idK?ӧMbyNV:[]FZs돩L{U@H*S`짲Ma|2W~g6+3Bz (K7E:`].Q4HZqEEx(&V³]<)b>+ؑE3 DT'?Uu./s Fc,0|b/>ˇ{d8k^1jgqs{ptDEV٧-٧n'ehS^Bx4ҁxl, =`Zp2^dJu4QGl@}XĦt4n3cqf2V/:9NVUFz۳D)kUdRxyV@ ym~EcVLƮ'%~(~鍗\~nuO3V^{7V@St&\z**b~u2xMǦ'!`qc >*ݮ*X Z2#̂'ڰЗlC''|,U2x?.ޓz=ߍ 0Z&xi^2/J6,`.O;\&(71%JyvA6S.^#8(TwFCf%?XkWƽ# _kl@s91 (iܸ18ex cܸ1$Cu2SwbPS9ґ=ۻ|&ZI vLA#SEi@'xieKFUL+F^!(NHTO ̫-P% #4~:mfy "T1ɯP0C?rgت' @Ч1:G3:0K_Wu`x)2ƟXHzN .> Yf`RS|ۃs(]lx7/9ĜV0Oh+BՀ3!]닥5 6 >xHC1G>z33K|>Y'Ÿ,}ˀ:xҺ R`2-@hС'2l;~zۜ]c {կSzN e]C_^QDpL05-[I8 £51 Ne#KΌ0N c(wr@eH[E DWI2<AOkyT_FbЉI 1 4S"bdԞIg>c^uttQ㙓h!|:ʤ O2Zy_߸ikLwbd1ك9=@I g 9@鐃ƒfc0hOJ1;/ܹY0Qi~+ @K >bz͛@13ե=To\$D l[95Y ayt!FӁ*32QM !VUh>qDE_0ƈƓVpZZU儎e "/Yw[yk6aţfkC`|b~o$3z6x1Ocθƍ5/=|55;`io ";1(e(FU>=tw+1P@L9OVН#ґH Bz)e#񢣡2f&[POy4o8dVIJ|LьFv"V.0r ord}.٣F;v1~ţ;m1<˶w WGby5J謞Z,0xp+)}ۧO5mJc̚ juef=te&`t٨2'bfMa/W 0.VBTV@S[YZNkٲ Ϝ>VViHy-^7; K_H2Jڎi$,G8gIj93sh/ꋃM/3W5X/rǿ SYqQū>QԆ=;w{6l޸eh'vyf[򱫟3Sk0'vŗ<) 1k\Gǂ#'|k&6|nCGzU&7\wF\v`>k=Wz4=&vOC`futv3E~ptk-̿ѝuMp8H&J(QD# -np.¶[^0@I=W?#̗ ɑ d(ka``0n7;opzceq0-KH@25~064orzGhsDo9kAfxhQ+103ZͳlV̂1hd K@4W dtT)W`_Ȁ5dk Changes JEuclid Project Max Berger Workaround for NPE in TextLayout() Support Content Math without namespace Added Italian Translation Improved Documentation Operator streching now honors symmetric New extension for horizontal / vertical stretch Stretchy behaviour is reworked again Reworked Token elements to support mglyhp in all cases. Reworked Stretchy operators. Fixed an error in mmultiscript containing whitespace. MathML 3.0 Testsuite is now available on the website. MathML 3.0 Testsuite can now be run internally. Basic SWT Widget is now implemented. Restored functionality to get null value for attributes. Fixes mfence. Better support for foreign elements in JEuclid DOM Tree. JEuclidView: add method to get bounds of layouted object. Provide Win32 MathViewer executable. Moved Resources from root namespace into net/sf/jeuclid. Internal DOM Tree is now in the MathML Namespace. jeuclid-core JAR file is now OSGi compatible. MathViewer: Add simple editor. MathViewer: PropertyPage: use optionName rather than toString for consistency with command line App. Changed internal JEuclid attributes to use optionName rather than toString for consistency with command line App. FOP: Added support for ImageConverter needed by newer fop. Fixed NPE if mo has no parent. Font-Cache: repaired support for euler fonts. MathViewer: Add source view. jeuclid-core: Mouse position detection (presentation mathml). jeuclid-fop: Workaround for NPE if an image does not exist. Added Regression tests for testsuite. Removed possible NPE in MGlyph handling. Better support for font styles. Added support for float sized fonts. Font-Caching and loading is now all done using lower case. Declared current branch as stable. Compatibility fix to work with Saxon. Bug in FOP-Image loader prevented other image loaders to work correctly. jeuclid-cli: LayoutContext in file-to-dir conversion was ignored. jeuclid-cli: file to file conversion was broken jeuclid-fop: fixed null-pointer exception when color is unset Mml2xx: support multi-file conversion Now supports "beveled" and "bevelled" Mo needs 2 stages when it is a delimiter Background is now painted fully on all pixels to remove artifacts with png / ie Fraction lines are no longer drawn when linewith="0" Added extension to math element to set LayoutContext attributes FOP plugin: support for font-family from context mathvariant is now inherited Background color from context was ignored JEuclid is now thread safe! changed order of font prefernece for a more consistent output. Added character mapping for Mathematica 4.1 and firefox compatibility. All singleton instances are now accessed with getInstance(). Support for deprecated mode attribute on math element. Support Glyph alternatives provided by xmlgraphics. Whitespace trimming was lost and is now restored. Added support for Mathematica Fonts FOP plugin: support for color FOP plugin: context parameters are now supported in all targets (not just pdf) Clean-up of Element Implementations Added listfonts command-line tool XSLT transformation is now done directly into the JEuclid DOM model. more compatibility fixes for DOM implementation more compatibility fixes for own DOM model moved icons out of jeuclid-core replaced own DOM model with standard model from Batik Made event model DOM compatible Improvement for OS X integration of mathviewer Re-organized submodules Added AMSFonts and support for them Unicode mapping now searches through all possible fonts. Mapping from/to high plane is now done using UnicodeData.txt Precompile operator dictionary for more performance. Precompile Content-Math Transformer for more performance. Rewrote OperatorDictonary to make use of standard Java data types. Documentation for new ant task Removed ParameterKey. Ant task now supports many layoutcontext parameters Updated jeuclid-fop for version 0.95. Implemented new XMLGraphics interfaces; added support for fontSize (currently broken on non-pdf) Default LayoutContext is now non-mutable. Use different classloaders Fix attributes without namespaces. Fix for missing xinclude support Now supports content Math through stylesheet! Remove Alpha channel from BMP and JPG output. Now uses all available fonts as symbol catch fonts, to support new types of fonts Improved character support from high plane Moved 1.6-dependent code to jeuclid-core16 Repaired Batik SVG support, cleaned up triple use of batik better font caching; full support for STIX, use deja vu and stix in full distribution Support for autoloading fonts in jar files Added french translation to MathViewer Removed old command line parser Finished converting Mml2xxx to use commons-cli and new LayoutContext.Parameter. Also implemented copy to clipboard in MathViewer. re-enabled anti-alias rendering hints. Added ParametersDialog to MathViewer so that all available parameters can be viewed/changed. The dialog auto-generates UI for all the parameters LayoutContext Parameters now encapsulate information suitable for auto-generating cmd line options and UI input dialogs Added MFRAC_KEEP_SCRIPTLEVEL LayoutContext.Parameter Added paste-mathml-from-clipboard capability to MathViewer LayoutContext.Parameter.ColorTypeWrapper now uses existing AttributesHelper APIs; FreeHEPConverter works (again) but needs further ckeanup DOMBuilder now uses local names for attributes. osxappbundler now has a released version. Additional refactoring of LayoutContext.Parameter; also provided toString(Object) method to comlement fromString(String) LayoutContext.Parameter: refactored valid() and added fromString(String) Added Frown (U+2322) to the list of horizontal delimiters Removed author tags Moved MathViewer into own package Support Cambria Fonts (Win Vista + Office 2007) Completed Redesign Yet another Layout Redesign Removed potential memory leak from MathComponentUI updated fop-plugin for 0.94 removed EXPERIMENTAL from all docs Added support for scriptminsize to layoutcontext; added support for disabling anti-alias below threshold; set default fonts to non-fractional metrics Started to work on LayoutTree JMathComponent supports Node instead of Document; default document set to simple node for performance reasons. MathColor is now handled through context; fixed bug in event handling; SAXBuilder Deprecated MathSize is now handled through context Added conversion do DOM as suggested by Victor Mote Replaced isChildBlock with LayoutContext Removed MathBase from all Elements LayoutContext is now in RootElement Split LayoutContext into LayoutContext and MutableLayoutContext Replaced ParameterKey by LayoutContext Removed OutFileType from RenderingKey Made DOM Builder a singleton Deprecated old converter API foprep: No uses percentage alignment-adjust instead of absolute baseline-shift Better drawing of sqrt to fix font-issues in embedded environment. Fixed list of symbol catch fonts Update after release Fix attributes without namespaces. Fix for failure on xinclude feature. Backported font-search from unstable. Remove Alpha channel from BMP and JPG output. Update after release Support for Cambria Math (Windows Vista) and STIXGeneral fonts ImageIOConvert.convert now returns proper height / width. DOMBuilder now uses local names for attributes. osxappbundler now has a released version. fix for mfence with no separators Undid De-Anti-alias below 10pt Update after release MathBase now returns only full pixels height; Disabled font-antialiasing below 10pt; turned off fractional metrics Removed potential memory leak from MathComponentUI updated fop-plugin for 0.94 removed EXPERIMENTAL from all docs removed doctype in default document for JMathcomponent for performance reasons fixed setForegroundColor in JMathComponent Made sure changeHook is called after element construction JEuclid 3.0 Released! merged 408:409 (ClassCastException fix) updated for 3.0 branch CharConverter: Split into Early (parsing) and late conversion; Used this to keep information on mapped special chars, such as InvisibleTimes Created a safe "createTextLayout" function; Parser: support more Source Types through transformer; foprep now has a Source / Result interface; rewrote foprep Main to use it; Created new Parser API based on JAXP sources; xxe plugin: converter now checks target file type; xxe plugin: Implemented Vector scaling; checkstyle ImportOrder now matches Eclipse Organize imports reworked Text handling in DOM model. created fo preprocess application MathMLParserSupport: turned on namespaces, xinclude FontFactory: cosmetic fixes; Released 2.9.7; added new module: plugin for XXE createad our own m2 repository; enabled fop-plugin to build by default added ODF Reader to fop-plugin (requires fix of bug in fop) fixed a scaling bug in Mo Anti-Alias fix for sun jdk 1.5 MathMLParserSupport: Added functionality to parse InputStreams. Rewrote xml-fop to draw directly onto G2D adapter. SwingComponent: support Border property. implemented all of FreeHEP supported filetypes refactored convert methods to return rendering's dimensions; original Converter still returns boolean. Modified Converter (the new one) and MathMLParserSupport to take Node instead of Document consistent with DOMBuilder's capabilities. refactored new Converter, ConverterPlugin and its concrete implementations to accept OutputStream instead of File finished rework of mmultiscripts minor refactoring in MathViewer more cleanups on jeuclid-fop several minor changes to fix compliance with spec in Mi, Mfenced, space handling, AbstractSubSuper. minor refactoring of FontFactory better implementation for width of text elements. implemented non-overlap for sub/super elements. introduced FontFactory and changed MathVariant & Mglyph to use it repaired property setting in swing component. fixed maction to only display selected content, as per spec. re-merged most modules, added "minimal" module added first draft of SWF output through FreeHEP Re-wrote converter API again, inspired by Eric's changes. Added method to re-serialize the MathML DOM tree to a String Generated W3C DOM model from Spec; This added documentation and exposed a few inconsistencies in the DOM model as available from the webpage. DocumentElement not implements DisplayableNode complete rewrite of menclose; update of root to scale bar; StringUtil: cleaned up; better mapping for high plane chars; added mapping for most high-plane chars; JEuclidElementFactory: is now Map-based; added an implementation for MathMLNodeList; more cleanups for mmultiscripts; refactored Script element support; added new class AbstractScriptElement; started cleanup of Mmultiscripts Added support for the "none" element created class ScriptSupport; Moved Sub/Super baselineshift calculation there, reworked calucation to center sub/supers. Defense: Checkstyle fixes; added package.html for AWT, Swing Component; FindBug fixes in MathBase, SaxBuilder, AbstractPartialElementIml, AbstractPartialNodeImpl, AbstractUnderOver, Mn, AttributesHelper, MathVariant; renamed modules for compatiblity with continuum imported fop classes from fop, modified to compile with current jeuclid; started work on fop-module PartialTextImpl: JavaDoc fixes converter: checkstyle and documentation fixes. refactored converter, static calls should use net.sourceforge.jeuclid.ConverterTool instead of net.sourceforge.jeuclid.Converter. The converter detects if batik is in the classpath, if yes then it instantiates the SVG able converter otherwise fails back to the default one. implemented CommandLineParser (moved out of mml2xxx) MathViewer now accepts command line arguments AWT componet test is now a proper test; added dashboard report repaired website; contains ugly hack in menus; repeared checkstyle; added proguard configuration (disabled because it saves only approx. 0.5%) Split up the main JEuclid into many smaller components, this is work in progress; Proper support for serialization of DOM Tree (needed for swing component's content property); Improved documentation on source webpage DOMBuilder now supports building from Document, DocumentFragment, Element Improved get/setFont compatiblity in Swing Component added readme for build.xml Added mapping UnderBar to OverBar; pom: updated dependency for appassembler, updated assemble descriptors; MathBase now returns a size >= 1x1 Mo: Changed list of horizontal delimiters; added fix for potential division by zero; removed extra spacing around operators with pre / postscripts; created constant for "0"; created constants for "true" and "false" Added support function for default line thickness, to support scaling lines along with the font size; used it in mtable and mfrac; started to work on desriptor for source distribution, which also supplies ant build.xml file Changed default rendering params; Updated webstart config settings; Mml2xxx now prints more information in case of failure; Released 2.9.6; updated website; re-rendered testsuite DOMAttributeMap, Mtable, Mstyle, SAXAttributeMap, AbstractJEuclidElement: checkstyle fixes; refactored mtext into abstract classes; implemented mglyph element; All MathML 2.0 presentation tokens are now supported! implemented merror; implemented (empty) support for maction; version tag is now forced for classes; Major refactoring; almost everything has moved and been renamed; THIS BREAKS the API! reduced value for non-accent under/over elements; MathRoot: Reduced size for index; MathOperator: fixed logic for movable limits; MathStyle: implemented displaystyle property; Added logic to properly center munver/mover elements; Added support for misspelled "movablelimits" MathText: better support for text containing spaces at the end; MathText: better support for characters which extend to the left; MathOperator: now uses the same width-calculation as MathText; Mathviewer: added toggle for debug; JMathComponent: fix handling of debug flag; Internal coordinates are now all float. THIS BREAKS THE API! DOMMathBuilder: Checkstyle fixes; AbstractMathElement: changed whitespace handling, now only trivial spaces are collapsed DOMMathBuilder: small performance tuning; MathUnder/Over: Common functionality merged; cleaned up; MathUnder/Over: started to merge some common functionality; AttributesHelper: checkstyle fixes; MathOperator: restored proper support for horizontal stretching; AttributesHelper: Checkstyle fixes; added DejaVu Sans to list of symbolcatchfonts. (needed for char 20D7); changed mapping for old openoffice vector char; added notes for OpenOffice; updated FAQ pom.xml: removed dependency on particular surefire version; enabled DOM test for mpadded; Basic implementation of mpadded; MathMultiScripts: Checkstyle fixes; modified checkstyle configuration (disabled todo items); updated roadmap Released 2.9.5; updated website; mtable: now supports w3c dom model; this was the last one! munderover, munder, mover: moved to DOM interface, prepared for cleanup; enabled all DOM test cases; MathTable: preparations for move to w3c dom; removed eventElementComplete (obsolete through changeHook()); removed several PMD errors Added ChangeTrackingInterface; moperator now properly registeres with parent; removed eventAllElementsComplete (obsolete through changeHook()); mtable: implemented rowlines and columnlines attributes Rewrote change management (still needs more work); added pmd plugin to report Completely rewrote MathOperator; WARNING: Some things may now behave differently; Converter: fixed convert(File,File,String) yet another font-list change; added more symbol catch fonts; sub/super: shift values modified again (still not happy with it, but it looks better now; MathText: Better verson of getAscent / getDescent; AttributesHelper: Removed unnecessary dependency on java 1.6 various random checkstyle fixes; SAXMathBuilder: DocumentElement was not not set to MathBase. pom.xml: updated to newer version of assembly-plugin (proper file permissions) Fixed height calculation and submiddleshift in msub and msubsup usage.apt: added description for OpenSymbol Better default list of "symbol catch fonts" JMathComponent: better documentation; ParameterKey: better documentation minor JavaDoc updates; added Lucida Grande to list of sans fonts; Website Font install updates; StringUtil: Proper mappings for script and double-struck; re-arranged default font lists again; JMathComponent: added setFont() for compatibility; JMathComponent: added get/set horizontal/vertical Alignment; JMathComponent: default font is serif, documentation updated; Yet another bug in text width. I hope it's fixed now. Textbased layouts (mi, mtext) now use width instead of advance for width, to better support italic fonts JMathComponent: Background is now for the whole component, not just for the formula; BeanDescriptor: Updated Background, added Opaque; rewrote color parsing in AttributesHelper (mostly copied from fop, but I was the one who submitted the patch there in the first place :) ); made sure JMathComponent properly handles null color and colors with alpha value. JMathComponentBeanInfo: Short description for fonts; even more fonts into default lists more fonts into default lists JMathComponent: Bean access to font list parameters Paramters: Extra parameters for font lists. mml2xxx: output default values for parameters MathOperator, MathElement: Now uses first char instead of 'A' for font-test; Converter: changed convert funtion to take File,File,Map Mml2xxx: made more generic: Autodetect of target mimeType; support for all renderingparams; Re-rendered testsuite on white background, disabled all-names MathTable: fixed height calculation due to rounding errors usage.apt: instructions how to use in mvn-based projects Background color is only painted when actually set or on root element pom.xml: set explizit versions of appbundler and appassembler to make use of current bugfixes, such as directory bug in mml2xxx StringUtil: Better support for other fonts. JMathComponent: Override get/setForeground, get/setBackground to properly set rendering params. JMathComponentBeanInfo: Added properties background, foreground added rendering params for foreground, background color ColorParsing is moved to AttributesHelper, rewritten using hashmap, added addtl colors "transparent", "" added getLayout function to MathText added some more default fonts for monospaces, serif, and sans-serif, particularly support for DejaVu, Lucida, Bitstream Vera, Arial Unicode MS; DejaVu fonts are now the default (if available) Slightly changed behaviour of renderingParams MathMultiScripts: Started to implement MathMLMultiScriptsElement MathSup: Fix in position of super MathSup, MathSubSup: Now has better handling for size / position of super element. Completely rewritten AttributesHelper for unitconversion. updated FAQ for supported imageformats. added file mode for executable files for osx and distribution FileModes in packages where wrong due to http://jira.codehaus.org/browse/MASSEMBLY-173 MathVariant: checkstyle fixes, added FontFamily enum MathDocumentElement: removed createListOfChildren, merged into ElementListSupport AbstractRootElement: getAscentHeight now delivers a more realistic height; w3ctestsuite removed, as it is extracted onto the site Rewrote / Externalized AboutDialog in MathViewer MathText: replaced round(+0.5) with ceil; Checkstyle: removed indentation check (done by eclipse) AbtractMathElement: Checkstyle fixes; MathOperator: Checkstyle fixes MathOperator/getWidth behaved differently in different situations link to webstart app from website; added warning to webstart page Configuration and template for maven-webstart-plugin; Please note: requires a current SVN checkout of this plugin, but fortunately only if actually used; Deployed MathViewer as JNLP LICENSE renamed to LICENSE.txt for repository bundle compatibility renamed OS X app to "JEuclid MathViewer"; website / documentation updates added assemble descriptor for OSX package, created new OSX package (ending in -osx) Released 2.9.4 MathViewer now has Anti-Alias menu entry MathViewer now uses current rendering attributes for export MathRoot, MathSqrt now implement MathMLRadicand; MathSub, MathSubSup, MathSup now implement MathMLScriptElement Better description for source on website; pom.xml updated for proper sf servers MathSpace now implementes MathMLSpaceElement; MathString now implemente MathMLStringLitElement; Added AbstractRootElement; rewrote MathRoot and MathSqrt to implement AbstractRootElement; AbstractMathElementWithSubSuper added; MathMultiScript: extends AbstractMathElementWithSubSuper; MathSub: extends AbstractMathElementWithSubSuper; MathSubSup: extends AbstractMathElementWithSubSuper; MathSup: extends AbstractMathElementWithSubSuper; Moved DY to AbstractMathElementWithSubSuper, renamed to DEFAULT_SCRIPTSHIFT; MathSub, MathSup, MathSubSup: Modified to use generic getMiddleShift functions; MathStyle: now implements MathMLStyleElement; MathTableData implements MathMLTableCellElement; MathTableRow implement MathMLTableRowElement; MathLabeledTableRow implements MathMLLabeledRowElement; MathMathElement: removed debug; checkstyle fixes; MathMultiScripts: checkstyle fixes; AttributesHelper: default unit is now pixels; PartialTextImpl to DOM model JMathComponent: added getContent(); WARNING: Does not work completely yet! website updated: added logo, source page, fixed typos MathViewer: error message if convert failed MathViewer: export menu item; export code Converter: rewrote getSuffixForMimeType; Converter: added getMimeTypeForSuffix; ConverterTest: added test for suffix/mimeType handling MathViewer split up into MathViewer and MainFrame JEuclid OS X logo updated. Added new icons for JEuclid, activated the icons for BeanInfo; OperatorDictionary: checkstyle fixes jeuclid.mf is no longer needed added testcase for svg conversion; pom.xml: added some provided dependencies, such as XML apis; pom.xml: dependency to commons-logging-api instead of commons-logging maven checkstyle is too old, temporaily disabled trailing comment check proper translation to MathViewer, support for $$ comments, added german translation to MathViewer pom.xml: groupId set to net.sf.jeuclid pom.xml: Use maven-changes-plugin instead of mojo changes plugin because its newer MathViewer: Prepared for localization MathTableData: refactored for move to MathMLTableCellElement (still incomplete) MathTableRow: moved ATTR_ constants to MathTable MathTableRow: started to refactor to support MathMLTableRowElement, not complete yet AbstractMathElement: Alignment constants; MathFrac: use those MathPhantom, MathPreScripts, MathRow, MathSpace, MathString: Checkstyle fixes. AbstractMathElement: support for default attributes; modified MathFenced, MathIdentifier, MathFrac, MathOperator to use those. AbstractMathElement: CheckStyle fixes, attrs made into constants AbstractDOMImpl: implemented getAttributes, getLocalName, getNamespaceURI, getNodeValue, getNextSibling, getNodeType, getXmlVersion, getXmlStandalone, getXmlEncoding; XML Transformer can now produce output, however, text nodes are still missing MathViewer: About window changed, disabled on OS X distribution.xml: added LICENSE, NOTICE pom.xml: Ensure appbundler can be found MathSemantics implements MathMLSemantics; MathNumber checkstyle cleanups; MathTableRow: checkstyle cleanups; AbstractPartialNodeImpl: implemented hasChildNodes; added setMathElement function, rewrote Frac to use it; added testCase; implemented replaceChild; pom.xml: configuration to create proper manifest in jar file removed obsolete build.xml file developers in pom.xml; jvmVersion for OS X bundle StringUtil: Checkstyle Fixes; AttributesHelper: few Checkstyle fixes; ResourceEntityResolver: Checkstyle fixes; AbstractMathElementWithChildren now implements MathMLPresentationContainer MathViewer: cleanups. MathFrac now implements MathMLFractionElement; MathIdentifier, MathText now implement MathMLPresentationToken DOMModelTest: Created tests for all interfaces. MathComponentTest: formatting changes MathAlignGroup implements MathMLAlignGroupElement; MathAlignMark implements MathMLAlignMarkElement; MathAnnotation implements MathMLAnnotationElement; MathEnclose implements MathMLEncloseElement; MathFenced: Checkstyle cleanups; JMathComponentBeanInfo: jeulid.png is in / Checkstyle Config now works properly in Eclipse and Maven support for assembly plugin, added to package phase pom.xml: now calls appassembler, appbundler for package Configuration, icon, and JavaApplicationStub for OS X build refactored all externally used methods from AbstractMathElement into new Interface MathElement JMathComponentBeanInfo, MathMLParserSupport, Checkstyle fixes; Exlpicitly disabled checkstyle for tests; moved all tests into test package; enabled checkstyle for eclipse (requires eclipse to be started from project dir, bugreport in progress) JMathComponentBeanInfo JMathComponent can now set content from given MathML String. ODFSupport renamed to MathMLParserSupport; Moved methods for parsing from String there; refactored Tests to use that method MathDocumentElement: checkstyle fixes; IllegalToken removed from Checkstyle errors Moved project to Subversion jeuclid-users mailing list W3C Testsuite to site, snapshot of generated elements. AbstractMathElement: eventInitSpecificAttributes renamed to setMathAttributes() MatOperator: moved parameter calculation into eventElementComplete AbstactMathElementWithDelegate: now overrides eventElementComplete instead of eventInitSpecificAttributes DOMMathBuilder now uses MathElementFactory; MathElementFactory updated to support all elements; SAXMathBuilder attribute handling improved; SAXMathBuilder: properly send eventElementComplete ODFSupport does not throw ZIP errors anymore; Parser logs warning and errors instead of terminating DOMModelTest: moved to test package; implemented tests for mathOperator AbstractPartialNodeImpl: getLastChild implemented. Larger and smaller font to MathViewer. Anti-Alias moved to MathBase, made into parameter Replaced all occurrences of Graphics with Graphics2D: This is what is actually used/needed anyways. MathBase: removed deprecated constructor; made Debug a Parameter refactored element creation from SAXMathBuilder into MathElementFactory. More CheckStyle fixes: MathOperator, MathTable, MathViewer; MathViewer: Added accellerator for quit. Checkstyle fixes: Converter, ODFSupport, StringUtil, DictionaryException, ElementListSupport, AbstractRowLikeElement, AbstractMathElementWithChildren, AbstractMathContainer, MathAlignGroup, MathDocumentElement, DOMBuilder, MathBase, Mml2xxx, MathComponent, MathMLConverter, MathSubSup, MathSup, MathLabeledTableRow configured log4j for tests properly. checkstyle settings to better match priorities (javadoc and license is now error) developers on website roadmap to website pom.xml was missing a release information; usage.apt now has proper links to sf releases; index.apt updated DOM Tree now contains a DocumentNode AND a Math node. MathRow is now an MathMLPresentationContainer. AbstractMathElementWithChildren now uses ElementListSupport Introduced ElementListSupport and moved functions from AbstractElementWithDelegates there refactored AbstractMathElementWithChildren into AbstractRowLikeElement batik dependency to 1.6-1 MathMLConverter ANT task to use Util.Converter removed ant tasks dependent on old fop Announced Logo Contest on webpage Replaced images on website with ones generated on Mac (look better) Split webpage into several pages pom.xml: jeuclid mailing list is jeuclid-devel; added taglist plugin refactored AbstractMathElementWithDelegate to AbstractMathElementWithDelegates, changed internal workings. MathFenced: reworked to work with new AbstractMathElementWithDelegates MathBase: removed obsolete debug output pom.xml: removed depencies on SNAPSHOT versions version to 2.9.3-SNAPSHOT in pom.xml and changes.xml MathMLDocumentElement refactored PartialNodeImpl into AbstractPartialDocumentImpl, AbstractPartialElementImpl, AbstractPartialNodeImpl and ChangeTrackingElement to AbstractChangeTrackingElement fixed link to issue management in pom.xml refactored util.Converter class into util.Converter and app.Mml2xxx fixed appassembler target in pom.xml removed docs, libs, build.xml removed unnecessary checkstyle tests: empty lines, org/*, StrictDuplicate creating app-scripts in pom.xml Developers in pom.xml JEuclid menu to website Screenshots on website are now ok. added checkstyle to pom.xml created changelog.xml older changes can be found in the CHANGELOG file. jeuclid-parent-3.1.9/jeuclid-minimal/0000755000175000017500000000000011335263004020354 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-minimal/pom.xml0000644000175000017500000000756411335260530021706 0ustar sylvestresylvestre 4.0.0 net.sourceforge.jeuclid jeuclid-minimal JEuclid Minimal Distribution pom net.sourceforge.jeuclid jeuclid-parent 3.1.9 This class handles the creation of the minimal JEuclid distribution files. package org.codehaus.mojo appassembler-maven-plugin 1.0 net.sourceforge.jeuclid.app.mathviewer.MathViewer mathviewer net.sourceforge.jeuclid.app.Mml2xxx mml2xxx net.sourceforge.jeuclid.app.foprep.Main foprep net.sourceforge.jeuclid.app.ListFonts listfonts flat package create-repository assemble maven-assembly-plugin 2.2-beta-4 src/assemble/distribution.xml false package attached org.apache.maven.plugins maven-dependency-plugin 2.1 unpack-dependencies generate-resources unpack net.sourceforge.jeuclid jeuclid-core jar ${project.build.directory}/core false true net.sourceforge.jeuclid jeuclid-core 3.1.9 net.sourceforge.jeuclid jeuclid-cli 3.1.9 net.sourceforge.jeuclid jeuclid-mathviewer 3.1.9 jeuclid-parent-3.1.9/jeuclid-minimal/src/0000755000175000017500000000000011335260530021144 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-minimal/src/site/0000755000175000017500000000000011335260530022110 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-minimal/src/site/site.xml0000644000175000017500000000133211335260530023575 0ustar sylvestresylvestre jeuclid-parent-3.1.9/jeuclid-minimal/src/assemble/0000755000175000017500000000000011335260530022737 5ustar sylvestresylvestrejeuclid-parent-3.1.9/jeuclid-minimal/src/assemble/distribution.xml0000644000175000017500000000214411335260530026201 0ustar sylvestresylvestre distribution zip target/appassembler bin/mathviewer bin/mml2xxx bin/foprep bin/listfonts 0755 target/appassembler bin/mathviewer bin/mml2xxx bin/foprep bin/listfonts 0644 target/core/net/sourceforge/jeuclid/LICENSE.txt 0644 target/core/net/sourceforge/jeuclid/NOTICE 0644