]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
add pdf and mobi libraries
authortcit <tcit@tcit.fr>
Thu, 24 Jul 2014 13:49:36 +0000 (15:49 +0200)
committertcit <tcit@tcit.fr>
Thu, 24 Jul 2014 13:49:36 +0000 (15:49 +0200)
297 files changed:
inc/3rdparty/libraries/mpdf/CHANGELOG.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/CREDITS.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/FONT INFO.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/LICENSE.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/README.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/barcode.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/bmp.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/cssmgr.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/directw.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/form.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/gif.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/grad.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/indic.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/meter.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/svg.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/tocontents.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/classes/wmf.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/compress.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/config.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/config_cp.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/config_fonts.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/alpha.gif [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/alpha.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/alpha3.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/bayeux1.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/bg.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/bgbarcode.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/bgrock.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/borders2FF.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/borders4FF.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/clematis.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example01_basic.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example04_images.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example05_tables.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example08_lists.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example09_forms.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example20_justify.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example22_columns.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example23_orientation.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example26_RTL.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example30_arabic.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example32_indic.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example49_changelog.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/firefox-48.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/flowers-pattern.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/formsubmit.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/goto.gif [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/img1.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/img2.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/img3.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/img4.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/img5.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/index.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/klematis.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/loading.gif [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/quran282.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/sample_logoheader2.pdf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/show_code.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/sunset.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/sunsetv.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/test.pdf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger.bmp [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger.gif [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger.svg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger.wmf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger2.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger2.wmf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger24trns.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger300px72dpi.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger8trns.gif [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tiger8trns.png [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tigercmyk.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/tux.svg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/examples/windmill.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ccourier.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ccourierb.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ccourierbi.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ccourieri.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/chelvetica.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/chelveticab.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/chelveticabi.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/chelveticai.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/csymbol.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ctimes.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ctimesb.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ctimesbi.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/ctimesi.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/font/czapfdingbats.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/graph.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/CJKdata.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/functions.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/no_image.jpg [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/out.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/subs_core.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/includes/upperCase.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/mpdf.css [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/mpdf.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/NOTES.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/de.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/dictionary.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/en.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/es.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/fi.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/fr.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/it.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/nl.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/pl.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/ru.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/patterns/sv.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/progbar.css [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/tmp/dummy.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Bold.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Oblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Bold.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-BoldOblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Oblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Bold.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Italic.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Bold.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-BoldItalic.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Italic.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/DejaVuinfo.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/GNUFreeFontinfo.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Bold.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Garuda-BoldOblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Oblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Garuda.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Bold.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Norasi-BoldOblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Oblique.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Norasi.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/Thai Fonts License.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB Riyaz.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBd.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBdIt.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazIt.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB Zar Bd.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB Zar BdIt.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB Zar It.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XB Zar.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/XW Zar Font Info.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_bn_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_gu_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_hi_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_kn_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_ml_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_or_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_pa_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_ta_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ind_te_1_001.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ocrb10.ttf [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/ttfonts/ocrbinfo.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/utils/font_collections.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/utils/font_coverage.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/utils/font_dump.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/utils/font_names.php [new file with mode: 0644]
inc/3rdparty/libraries/mpdf/utils/index.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/downloaders/FanFictionNet.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/readability/JSLikeHTMLElement.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/api.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/images.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/io.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/readability.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/send.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/storage.php [new file with mode: 0644]
inc/3rdparty/libraries/send2kindle/utils.php [new file with mode: 0644]
inc/poche/WallabagEpub.class.php
inc/poche/global.inc.php

diff --git a/inc/3rdparty/libraries/mpdf/CHANGELOG.txt b/inc/3rdparty/libraries/mpdf/CHANGELOG.txt
new file mode 100644 (file)
index 0000000..2e6a5f8
--- /dev/null
@@ -0,0 +1,2895 @@
+===========================
+mPDF 5.7
+14/07/2013
+===========================
+
+Files changed
+-------------
+config.php
+mpdf.php
+classes/tocontents.php
+classes/cssmgr.php
+classes/svg.php
+includes/functions.php
+includes/out.php
+examples/formsubmit.php [Important - Security update]
+
+Updated Example Files in /examples/
+-----------------------------------
+All example files
+mpdfstyleA4.css
+
+
+config.php
+----------
+Removed:
+       $this->hyphenateTables
+       $this->hyphenate
+       $this->orphansAllowed
+Edited: 
+       "hyphens: manual" - Added to $this->defaultCSS
+       $this->allowedCSStags now includes '|TEXTCIRCLE|DOTTAB'
+New: 
+       $this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
+       $this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
+       $this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
+       $this->CJKforceend = false; // Forces overflowng punctuation to hang outside right margin (used with CJK script)
+
+
+Backwards compatability
+-----------------------
+Changes in mPDF 5.7 may cause some changes to the way your documents appear. There are two main differences:
+1) Hyphenation. To retain appearance compatible with earlier versions, set the CSS property "hyphens: auto" whenever 
+       you previously used $mpdf->hyphenate=true;
+2) Table of Contents - appearance can now be controlled with CSS styles. By default, in mPDF 5.7, no styling is applied so you will get:
+       - No indent (previous default of 5mm) - ($tocindent is ignored)
+       - Any font, font-size set ($tocfont or $tocfontsize) will not work
+       - HyperLinks will appear with your default appearance - usually blue and underlined
+       - line spacing will be narrower (can use line-height or margin-top in CSS)
+
+
+New features / Improvements
+---------------------------
+Layout of Table of Content ToC now controlled using CSS styles
+Text alignment on decimal mark inside tables
+Automatically generated bookmarks and/or ToC entries from H1 - H6 tags
+Support for unit of "rem" as size e.g. font-size: 1rem;
+Origin and clipping for background images and gradients controlled by CSS i.e. background-origin, background-size, background-clip
+Text-outline controlled by CSS (compatible with CSS3 spec.)
+Use of <dottab> enhanced by custom CSS "outdent" property
+Image HTML attributes <img> added: max-height, max-width, min-height and min-width 
+Spotcolor can now be defined as it is used e.g. color: spot(PANTONE 534 EC, 100%, 85, 65, 47, 9);
+Lists - added support for "start" attribute in <ol> e.g. <ol start="5">
+Hyphenation controlled using CSS, consistent with CSS3 spec.
+Line breaking improved to avoid breaks within words where HTML tags are used e.g. H<sub>2<sub>0
+Line breaking in CJK scripts improved (and ability to force hanging punctuation)
+Numerals in a CJK script are kept together
+RTL improved support for phrases containing numerals and \ and /
+Bidi override codes supported - Right-to-Left Embedding [RLE] U+202B, Left-to-Right Embedding [LRE] U+202A,
+       U+202C POP DIRECTIONAL FORMATTING (PDF)
+Support for <base href=""> in HTML - uses it to SetBasePath for relative URLs.
+HTML tag - added support for <wbr> or <wbr /> - converted to a soft-hyphen
+CSS now takes precedence over HTML attribute e.g. <table bgcolor="black" style="background-color:yellow">
+
+
+
+Added CSS support
+-----------------
+- max-height, max-width, min-height and min-width for images <img>
+- "hyphens: none|manual|auto" as per CSS3 spec.
+- Decimal mark alignment e.g. text-align: "." center;
+- "rem" accepted as a valid (font)size in CSS e.g. font-size: 1.5rem
+- text-outline, text-outline-width and text-outline-color supported everywhere except in tables (blur not supported)
+- background-origin, background-size, background-clip are now supported everywhere except in tables
+- "visibility: hidden|visible|printonly|screenonly" for inline elements e.g. <span>
+- Colors: device-cmyk(c,m,y,k) as per CSS3 spec. For consistency, device-cmyka also supported (not CSS3 spec)
+- "z-index" can be used to utilise layers in the PDF document
+- Custom CSS property added: "outdent" - opposite of indent
+
+The HTML elements <dottab> and <textcircle> can now have CSS properties applied to them.
+
+
+Bug fixes
+---------
+- SVG images - path including e.g. 1.234E-15 incorrectly parsed (not recognising capital E)
+- Tables - if a table starts when the Y position on page is below bottom margin caused endless loop
+- Float-ing DIVs - starting a float at bottom of page and it causes page break before anything output, second new page is forced
+- Tables - Warning notice now given in Table footer or header if <tfoot> placed after <tbody> and table spans page
+- Columns - block with border-width wider than the length of the border line, line overflows
+- Columns - block with no padding containing a block with borders but no backgound colour, borders not printed
+- Table in Columns - when background color set by surrounding block element - colour missing for height of half bottom border.
+- TOCpagebreakByArray() when called by function was not adding the pagebreak
+- Border around block element - dashed not showing correctly (not resetting linewidth between different edges)
+- Double border in table - when background colour set in surrounding block element - shows as black line between the 2 bits of double
+- Borders around DIVs - "double" border problem if not all 4 sides equally - fixed
+- Borders around DIVs - solid (and double) borders overlap as in tables - now fixed so mitred joins as in browser
+       [Inadvertently improves borders in Columns because of change in LineCap]
+- Page numbering - $mpdf->pagenumSuffix etc not suppressed in HTML headers/footers if number suppressed
+- Page numbering - Page number total {nbpg} incorrect  - e.g. showing decreasing numbers through document, when ToC present
+- RTL numerals - incorrectly reversing a number followed by a comma
+- Transform to uppercase/lowercase not working for chars > ASCII 128 when using core fonts
+- TOCpagebreak - Not setting TOC-FOOTER
+- TOCpagebreak - toc-even-header-name etc. not working
+- Parsing some relative URLs incorrectly
+- Textcircle - when moved to next page by "page-break-inside: avoid"
+- Bookmarks will now work if jump more than one level e.g. 0,2,1  Inserts a new blank entry at level 1
+- Paths to img or stylesheets - incorrectly reading "//www.domain.com" i.e. when starting with two /
+- data:image as background url() - incorrectly adjusting path on server if MPDF_PATH not specified (included in release mPDF 5.6.1)
+- Image problem if spaces or commas in path using http:// URL (included in release mPDF 5.6.1)
+- Image URL parsing rewritten to handle both urlencoded URLs and not urlencoded (included in release mPDF 5.6.1)
+- <dottab> fixed to allow color, font-size and font-family to be correctly used, avoid dots being moved to new page, and to work in RTL
+- Table {colsum} summed figures in table header
+- list-style-type (custom) colour not working
+- <tocpagebreak> toc-preHTML and toc-postHTML can now contain quotes
+
+
+
+===========================
+mPDF 5.6
+20/01/2013
+===========================
+
+Files changed
+-------------
+mpdf.php
+config.php
+includes/functions.php
+classes/meter.php
+classes/directw.php
+
+
+config.php changes
+------------------
+$this->allowedCSStags - added HTML5 tags + textcircle AND
+$this->outerblocktags - added HTML5 tags
+$this->defaultCSS  - added default CSS properties
+
+
+New features / Improvements
+---------------------------
+CSS support added for for min-height, min-width, max-height and max-width in <img>
+
+Images embedded in CSS
+       <img src="data:image/gif;base64,...."> improved to make it more robust, and
+       background: url(data:image... now added to work
+
+HTML5 tags supported
+- as generic block elements: <article><aside><details><figure><figcaption><footer><header><hgroup><nav><section><summary>
+- as in-line elements: <mark><time><meter><progress>
+- <mark> has a default CSS set in config.php to yellow highlight
+- <meter> and <progress> support attributes as for HTML5
+- custom appearances for <meter> and <progress> can be made by editing classes/meter.php file
+- <meter> and <progress> suppress text inside the tags
+
+Textcircle/Circular
+font: "auto" added: automatically sizes text to fill semicircle (if both set) or full circle (if only one set)
+       NB for this AND ALL CSS on <textcircle>: does not inherit CSS styles
+attribute: divider="[characters including HTML entities]" added
+<textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular"
+       divider="&nbsp;&bull;&nbsp;" style="font-size: auto" />
+
+&raquo; &rsquo; &sbquo; &bdquo; are now included in "orphan"-management at the end of lines
+
+Improved CJK line wrapping (if CJK character at end of line, breaks there rather than previous wordspace)
+
+NB mPDF 5.5 added support for <fieldset> and <legend> (omitted from ChangeLog)
+
+Bug fixes
+---------
+- embedded fonts: Panose string incorrectly output as decimals - changed to hexadecimal
+       Only a problem in limited circumstances.
+       *****Need to delete all ttfontdata/ files in order for fix to have effect. 
+- <textCircle> background white even when set to none/transparent
+- border="0" causing mPDF to add border to table CELLS as well as table
+- iteration counter in THEAD crashed in some circumstances
+- CSS color now supports spaces in the rgb() format e.g. border: 1px solid rgb(170, 170, 170);
+- CJK not working in table following changes made in v5.4
+- images fixed to work with Google Chart API (now mPDF does not urldecode the query part of the src)
+- CSS <style> within HTML page crashed if CSS is too large  (? > 32Kb)
+- SVG image nested int eht HTML failed to show if code too large (? > 32Kb)
+- cyrillic character p &#1088; at end of table cell caused cell height to be incorrectly calculated
+
+
+===========================
+mPDF 5.5
+02/03/2012
+===========================
+
+Files changed
+-------------
+mpdf.php
+classes/ttfontsuni.php
+classes/svg.php
+classes/tocontents.php
+config.php
+config_fonts.php
+utils/font_collections.php
+utils/font_coverage.php
+utils/font_dump.php
+
+Files added
+-----------
+classes/ttfontsuni_analysis.php
+
+config.php changes
+------------------
+To avoid just the border/background-color of the (empty) end of a block being moved on to next page (</div></div>)
+$this->margBuffer = 0;         // Allow an (empty) end of block to extend beyond the bottom margin by this amount (mm)
+
+config_fonts.php changes
+------------------------
+Added to (arabic) fonts to allow "use non-mapped Arabic Glyphs" e.g. for Pashto
+       'unAGlyphs' => true,
+
+Arabic text
+-----------
+Arabic text (RTL) rewritten with improved support for Pashto/Sindhi/Urdu/Kurdish
+       Presentation forms added:
+       U+0649, U+0681, U+0682, U+0685, U+069A-U+069E, U+06A0, U+06A2, U+06A3, U+06A5, U+06AB-U+06AE, 
+       U+06B0-U+06B4, U+06B5-U+06B9, U+06BB, U+06BC, U+06BE, U+06BF, U+06C0, U+06CD, U+06CE, U+06D1, U+06D3, U+0678
+       Joining improved:
+       U+0672, U+0675, U+0676, U+0677, U+0679-U+067D, U+067F, U+0680, U+0683, U+0684, U+0687, U+0687, U+0688-U+0692, 
+       U+0694, U+0695, U+0697, U+0699, U+068F, U+06A1, U+06A4, U+06A6, U+06A7, U+06A8, U+06AA, U+06BA, U+06C2-U+06CB, U+06CF
+
+Note -
+Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters.
+However, some fonts include these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).
+       'unAGlyphs' => true,
+added to the config_fonts.php file for appropriate fonts will
+
+This requires the font file to include a Format 2.0 POST table which references the glyphs as e.g. uni067C.med or uni067C.medi:
+       e.g. XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS)
+NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med"
+       - if it exists, it may work!
+Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).
+
+mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use
+       if the font already utilises these codes (unlikely).
+
+mPDF now deletes U+200C,U+200D,U+200E,U+200F zero-widthjoiner/non-joiner, LTR and RTL marks so they will not appear
+       even though some fonts contain glyphs for these characters.
+
+
+Other New features / Improvements
+---------------------------------
+Avoid just the border/background-color of the (empty) end of a block being moved on to next page (</div></div>)
+       using configurable variable: $this->margBuffer;
+
+
+The TTFontsUni class contained a long function (extractcoreinfo) which is not used routinely in mPDF
+       This has been moved to a new file: classes/ttfontsuni_analysis.php
+       The 3 utility scripts have been updated to use the new extended class:
+       - utils/font_collections.php
+       - utils/font_coverage.php
+       - utils/font_dump.php
+
+
+Bug fixes
+---------
+- Border & background when closing 2 blocks (e.g. </div></div>) incorrectly being moved to next page because incorrectly
+       calculating how much space required
+- Fixed/Absolute-positioned elements not inheriting letter-spacing style
+- Rotated cell - error if text-rotate set on a table cell, but no text content in cell
+- SVG images, text-anchor not working
+- Nested table - not resetting cell style (font, color etc) after nested table, if text follows immediately
+- Nested table - font-size 70% set in extenal style sheet; if repeated nested tables, sets 70% of 70% etc etc
+- SVG setting font-size as percent on successive <text> elements gives progressively smaller text
+- mPDF will check if magic_quotes_runtime set ON even >= PHP 5.3 (will now cause an error message)
+- not resetting after 2 nested tags of same type e.g. <b><b>bold</b></b> still bold
+- When using charset_in other than utf-8, HTML Footers using tags e.g. <htmlpageheader> do not decode correctly
+- ToC if nested > 3 levels, line spacing reduces and starts to overlap
+
+
+
+
+===========================
+mPDF 5.4
+14/02/2012
+===========================
+Files changed
+-------------
+mpdf.php
+config.php
+compress.php
+classes/ttfontsuni.php
+classes/barcode.php
+classes/indic.php
+classes/svg.php
+examples/show_code.php -----  SECURITY RISK**
+examples/example49_changelog.php
+examples/example57_new_mPDF_v5-3_active_forms_b (replace example57_new_mPDF_v5-3_active_forms)
+includes/out.php
+mpdfi/fpdi_pdf_parser.php
+
+Files added
+-----------
+classes/bmp.php
+classes/directw.php
+classes/form.php
+classes/grad.php
+classes/tocontents.php
+classes/wmf.php
+examples/example58_new_mPDF_v5-4_features
+
+config.php changes
+------------------
+Edited: $this->allowedCSStags, $this->innerblocktags, $this->defaultCSS;  (CAPTION added in each case)
+Moved: Numerous $form_.. variables are now in /classes/form.php
+
+New config variables 
+--------------------
+$this->bookmarkStyles = array();
+$this->cacheTables = true;
+       
+New methods
+-----------
+function CircularText()
+function SetVisibility()
+
+New/Extended CSS
+----------------
+box-shadow (block elements - does NOT support "inset")
+text-shadow (all text elements - does NOT support "blur")
+visibility: visible|hidden|printonly|screenonly (block-level elements and images IMG only)
+text-transform: capitalize|uppercase|lowercase (extended to support TD/TH)
+tr|td|th:nth-child(odd|even|2n+1)
+color, strikethrough, underline and background-color (extended to support rotated TD/TH)
+underline and strike-through (extended to support TD/TH)
+underline (line colour)  (extended to work correctly in watermark)
+page-break-after: left|right|always (block elements and tables)
+       NB respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
+background[-color]: extended to support rgba|cmyka|cmyk|hsla|hsl|spot
+border(extended to support inline elements)
+
+
+New HTML
+--------
+<caption>
+<textcircle />
+
+
+New features / Improvements
+---------------------------
+Tables - Zebra Stripes
+Tables: overlapping rowspans (partially) supported
+Tables - Disk caching
+Using progress bars (or $showStats) now reports 'real' memory usage i.e. get_memory_usage(true)
+Support for query string in the URLs for external stylesheets e.g. @import url("style.css?ltcyy7");
+Table caption partially supported
+CircularText
+BookMark styling
+Spread tables i.e. can split table (columns) across several pages width.
+Can use chelvetica, ctimes and ccourier to specify core fonts in a non-core font document
+Spread tables i.e. can split table (columns) across several pages width.
+{colsum} in <tfoot> cell will insert a column total per page.
+SVG embedded as island in HTML supported
+Active Forms
+       textarea and input (text types) now accept javascript as:
+       onKeystroke, onValidate, onCalculate and onFormat
+       onChange is depracated but works as onCalculate (for textarea and input)
+       (PS Select still accepts onChange cf. 5.3.37)
+Ledger and Tabloid added as page formats recognised. NB Ledger is same as tabloid but landscape. In mPDF, both give the same size (portrait)
+so need to add -L e.g. Ledger-L for landscape.
+
+
+Internal script changes
+-----------------------
+Changed this->k to _MPDFK throughout all scripts
+Changes to color (packed binary data in string rather than array) to reduce memory usage esp in tables
+Internal variables Removed
+       $usetableheader;
+       $tableheadernrows;
+       $tablefooternrows;
+vars $ChangePage, $p_bottom_border, $img_margin_top(+) $issetcolor + other similar  removed
+
+Removed a whole load of // comments
+Updates to remove some more Warning Notices (not all marked in text)
+Border set on TR - changed so set on each cell, rather than retrospectively at end of TR
+All references to table['text'] removed as not needed - uses ['textbuffer'] instead
+OpenTag(TD) changes to reduce memory usage with tables
+Includes different method to set a default timezone
+fn _smallCaps does not need (undefined) $space
+this->chrs and this->ords replaced by chr() and ord()
+Headers in out.php updated to match those used in Output()
+Change to SetFont() to improve performance time
+Change to GetStringWidth() to improve performance time
+Corrected copying of Glyphs 0,1,2, to all subset fonts (non-SMP/SIP), and only setting 32->127 in subset
+Subset fonts (non-SMP/SIP) have additionally Unicode CMap tables (0,0,4 and 0,3,4) as well as Microsoft (3,1,4)
+Subset fonts (SMP/SIP) have CMap tables (1,0,6 and 3,0,4) - rather than 1,0,6 and 3,0,6
+Subset fonts (SMP/SIP) have 'name' table changed to give 1,0 and 3,0. As it is a symbol font (not Unicode encoded) :
+       needs to have a name entry in 3,0 (e.g. symbol) - original font will have 3,1 (i.e. Unicode)
+Automatically checks for HTML code length > 100000 characters and gives error warning if
+        PHP < 5.2.0 (as not configurable) or increases pcre.backtrack_limit if PHP < 5.3.7
+
+Removed/Depracated
+------------------
+function UseTableHeader($opt=true)     fn removed / depracated
+function UsePRE($opt=true) removed
+$attr['REPEAT_HEADER'] == true         CSS removed / depracated
+$this->usepre=true; removed / depracated as never needed - always respects PRE whitespace
+
+ToC: NB Values can no longer be set directly e.g. as in example
+       $mpdf->TOCheader = array();     // array as for setting header/footer
+       $mpdf->TOCfooter = array();     // array as for setting header/footer
+       $mpdf->TOCpreHTML = '<h2>Contents - Portrait</h2>';     // HTML text to appear before table of contents
+       $mpdf->TOCpostHTML = '';        // HTML text to appear after table of contents
+       $mpdf->TOCbookmarkText = 'Content list';        // Text as it will appear in the Bookmarks (leave blank for none)
+Need to use TOCpagebreak either direct (or array version) or as HTML
+OR if absolutley necessary, could use:
+       $mpdf->tocontents->TOCheader = array(); // array as for setting header/footer
+       $mpdf->tocontents->TOCfooter = array(); // array as for setting header/footer
+       $mpdf->tocontents->TOCpreHTML = '<h2>Contents - Portrait</h2>'; // HTML text to appear before table of contents
+       $mpdf->tocontents->TOCpostHTML = '';    // HTML text to appear after table of contents
+       $mpdf->tocontents->TOCbookmarkText = 'Content list';    // Text as it will appear in the Bookmarks (leave blank for none)
+
+
+
+Further Details
+===============
+
+CSS border on inline elements
+-----------------------------
+Support for CSS border (and variants) on inline elements e.g. <span style="border-bottom: 1px dashed #000000;">
+Border styles solid|dotted|dashed|double only are supported. Border radius not supported.
+Nested inline elements will have repeat left|right borders on the nested content (unlike browsers)
+
+Tables - Zebra Stripes
+----------------------
+TABLE - striped rows cf. http://dev.opera.com/articles/view/zebra-striping-tables-with-css3/
+tr:nth-child(odd) { background-color: #99ff99; }
+thead tr:nth-child(3n+2) { background-color: #FFBBFF; }
+td:nth-child(2n+1) { background-color: #BBBBFF; }
+table.zebraTable td:nth-child(2n+1) { background-color: #BBBBFF; }
+table.zebraTable th:nth-child(2n+1) { background-color: #BBBBFF; }
+
+NB mPDF does NOT correctly apply specificity to all CSS
+table.zebra tbody tr:nth-child(2n+1) td { background-color: #FFFFBB; }
+table.zebra tbody td:nth-child(odd) { background-color: #BBBBFF; }
+
+should make every odd row yellow, and every odd coloumn blue, but with the row/yellow overriding the column/blue.
+In mPDF the td:nth-child(odd) trumps the plain td, so the column colour wins out. You can force the effect you want by using
+table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: #FFFFBB; }
+
+(The :nth-child(1n+0) selector just selects every td cell.)
+
+
+
+Tables - Disk caching
+---------------------
+TABLES: using disk caching
+// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased 
+// executon time and disk access (read and write)
+$this->cacheTables = true;
+NB             $this->packTableData will be overridden to => true;     // required for cacheTables
+               $this->simpleTables will be overridden to => false;  // Cannot co-exist with cacheTables
+
+
+Table caption
+-------------
+Must come immediately after <table...>
+CSS caption-side and HTML align attribute of top|bottom supported (not attribute left|right)
+Handled as a separate block element brought outside the table, so:
+       CSS will not cascade correctly on the table
+       width of caption block is that of page or of the block element containing the table
+       so alignment will be to the page-width not the table width
+       if table page-break-after: always, the caption will follow the pagebreak.
+This does work:
+<style>
+.tablecaption { caption-side: bottom; text-align: left; font-weight: bold; color: green; }
+</style>
+...
+<table>
+<caption class="tablecaption">Caption title here</caption>
+<tbody>
+
+CSS visibility: printonly, screenonly
+-------------------------------------
+Roughly based on CSS
+
+Works on Block elements P, DIV etc, or Image
+Cannot nest / layer.
+Inner blocks/image with set visibility are ignored if already set on enclosing block element.
+(Block element) does not work inside table (image does)
+So 'visible' does nothing but is set as default
+(NB Changes output to PDF version 1.5)
+Incompatible with PDFA / PDFX
+
+'visibility'
+    Value:     visible | hidden | (collapse | inherit)
+    Initial:   visible
+    Applies to:        all elements
+    Inherited:         yes
+
+The 'visibility' property specifies whether the boxes generated by an element are rendered.
+Invisible boxes still affect layout (set the 'display' property to 'none' to suppress box generation altogether).
+Values have the following meanings:
+
+visible
+    The generated box is visible.
+hidden
+    The generated box is invisible (fully transparent, nothing is drawn), but still affects layout.
+       Furthermore, descendants of the element will be visible if they have 'visibility: visible'.
+collapse | inherit
+    NOT supported in mPDF
+
+CUSTOM:
+printonly | screenonly
+
+
+Added VISIBILITY function
+$mpdf->SetVisibility('screenonly'); or 'printonly' 'visible' or 'hidden'
+(NB Changes output to PDF version 1.5)
+Incompatible with PDFA / PDFX
+
+CircularText
+------------
+function CircularText($x, $y, $r, $text, $align='top', $kerning=120, $fontwidth=100) {
+x: abscissa of center
+y: ordinate of center
+r: radius of circle
+text: text to be printed
+align: text alignment: top or bottom. Default value: top
+kerning: spacing between letters in percentage. Default value: 120. Zero is not allowed.
+fontwidth: width of letters in percentage. Default value: 100. Zero is not allowed
+
+- now uses Kerning between letters if useKerning == true (set manually see example)
+
+BookMark styling
+----------------
+New configurable variable to control appearance of Bookmarks e.g.
+$this->bookmarkStyles = array(
+       0 => array('color'=> array(0,64,128), 'style'=>'B'),
+       1 => array('color'=> array(128,0,0), 'style'=>''),
+       2 => array('color'=> array(0,128,0), 'style'=>'I'),
+);
+       
+Column sums
+-----------
+(Also changed some preg_replace to str_replace to improve performance)
+To use: just add {colsum} to any cells of the table footer <tfoot>
+Add a number to specify a fixed number of decimal points e.g. <td>£{colsum2}</td>  will give you £123.40
+The width of the column will be calculated using the actual string {colsum} as a placeholder.
+If you need the column to be wider, use underscores "_" to pad it e.g. {colsum2_____}
+
+
+Spread tables
+-------------
+i.e. can split table (columns) across several pages width.
+CSS <table style="overflow: visible">
+Cannot use with: 
+$this->kwt - ignored
+$this->table_rotate - ignored
+$this->table_keep_together - ignored
+$this->ColActive  - cancels spread tables
+
+Messes up with:
+$mpdf->forcePortraitHeaders = true;
+$mpdf->forcePortraitMargins = true;
+Problems with CJK, and RTL
+
+Will do no resizing of fonts at all.
+Maximum width of column = page width i.e. will not split columns across pages - NB will keep colspan>1 on one page
+If table row too high for page will die with error message.
+Will override some specs for width if this creates conflicts
+Recommended to specify absolute value of width on each column.
+
+
+
+
+Bug fixes
+=========
+Dottab - if text after dottab is hyperlinked <a></a> then dots are underlined
+
+page-break-before now respects $mpdf->restoreBlockPagebreaks = true; i.e. will make pagebreak act like formfeed
+Annotation() function called directly with colorarray(r,g,b)
+
+Added urldecode to _getImage to cope with ../name%20of%20image.jpg
+Added urldecode AND htmlspecials_decode to href in <a> link e.g. https://www.google.com/search?hl=en&amp;q=mpdf&amp;filename=name%20of%20file
+[barcode.php] Allow &nbsp; in C39 codes - will be changed to spaces
+
+<table> inside a <div position:fixed, left:300px;> not calculating table width correctly
+       - leading to either upside down table or error width less than 1 character
+
+Depracated magic_quotes_runtime() in compress.php
+
+DIRECTW included twice in compress.php
+FORMS mark up for compress.php corrected
+
+double backslashes not preserved inside <pre> or <textarea>
+
+font-weight and font-style not recognised in <pageheader>
+
+Progress bars causing corrupt PDF file (out.php) changed fopen from "r" mode to "rb" (binary)
+Target around image - <a href="#internaltarget"><img ... /></a> - not working
+
+SmallCaps in <thead> error
+
+Fonts with "name" table in format 1 not recognised correctly
+Rotated table which does not fit on remaining page, forces a new page even if already at top of page
+
+Locale causing problems - all instances of sprintf() using %.3f changed to %.3F so not locale aware
+
+CSS border radius not implemented on fixed/absolute positioned block element
+
+Background color in rotated table extending way beyond bottom of table
+
+Nested table containing <thead> or <tfoot> was confused with <thead> or <tfoot> of parent table
+
+Correct handling of spaces, < or & in textarea
+
+<option> and <input ..> attributes value/title decoded with fn lesser_entity_decode instead of htmlspecialchars_decode to include &apos;
+
+line width not restored to correct value after "line-through" text in Cell()
+
+Kannada - incorrect positioning of Reph
+
+Forms - In <input> or <option> (select) not correctly handling HTML named entities e.g. &lt; in value or title
+Active forms - &nbsp; as Value or Title incorrectly showing as Euro - PDFDocEncoding fixed
+
+Unicode data in embedded fonts not encrypted when doc encrypted 
+
+Nested block elements which are empty including innermost one, top margin of innermost block was ignored
+
+font-size: xx% inside a block was setting on block's parent font-size
+
+Active forms - radio buttons (removed name from Widget - leave on Radio group)
+       causing problems accessing field for radio buttons
+
+When using simple tables and border-collapse, if table border set, but cell borders not set, should display table border (fixed)
+position:fixed block - if neither top nor bottom nor height specified, was positioned incorrectly (y)
+Leave - if top, bottom, margin-top, margiin-bottom and height are all left unspecified (or auto), will centre vertically
+on the page (specific to mPDF - not consistent with CSS2.1)
+But if any one of them are specified (including e.g. margin-top=0), follows CSS spec, so top is the current "static" position
+
+background-image-opacity=0 not working on BODY or BLOCK
+
+Lists - if LI continues after a nested List, would add as a new LI item (should continue as part of earlier LI item)
+
+fn WriteCell() converts to 'windows-1252' when required
+if multiple calls to mPDF used, cannot redefine function cmp()
+internal link targets <a name="xx" /> in ToC not moved when using: page-break-inside:avoid
+internal link targets <a name="xx" /> not moved when using: columns, page-break-inside:avoid, keep-with-table or table rotate
+
+Active Forms - onChange not working for SELECT (cf. 5.3.25) Example 57 only worked by chance as JS was carried over from Select to Text field
+Bug is fixed, but example file needed updating to onCalculate for the display field.
+
+Table cell: if height set as %, currently sets it as % of page-width; instead this now ignores it.
+
+Bengali letter Khanda Ta (U+09CE) character not recognised; was added in Unicode v4.1 and prior to this, (U+09A4 U+09CD U+200D)
+       so mPDF converts to this string and seems to work.
+
+OCR characters wrong size in barcodes if using different ocr font - fixed
+
+===========================
+mPDF v5.3   (21/07/2011)
+===========================
+
+New Features
+------------
+- Active forms (see on-line manual for details)
+- 128-bit encryption (optional) with additional user-permissions (see on-line manual)
+
+PLEASE READ - Change in Font management
+---------------------------------------
+The font name imported from the font and included by mPDF in the PDF file was stripping any '-' in the name.
+This is the PostScript name which is utilised by some PostScript programmes.
+mPDF has been changed to leave the PostScript font name unchanged. In 99% cases no difference will be noted, but
+you MUST delete all the temporary font data files cached in the  /ttfontdata/ folder for this to be effective.
+
+
+Minor changes
+-------------
+If @page CSS is used to select a first page with settings different from the default, mPDF did create a blank page
+       then pagebreak to the new @page settings - this has been changed so it now will start with the new page settings.
+
+New function added: DeletePages($start_page, $end_page=-1)  e.g. $mpdf->DeletePages(1);
+       Can be used just before calling Output()
+
+compress.php utility extended to exclude active forms and images-svg
+
+
+Bug fixes
+---------
+- list-style-type: (custom version, user-defined bullet) colour change not working if colour is set on the list item line
+- background-image: SVG or WMF images as background-images in tables/tr/cells not working
+- font-weight: bold font not always reset after inline <b>...</b> thus miscalculating width
+- forms (inactive) in 'c' core fonts using unicode characters 127-255 incorrect display in input text and button text
+- form elements (inactive) if in-line with mixed size fonts, error in vertical positioning of text related to box
+- ToC: wrapped lines in ToC not retaining formatting e.g. bold style
+- HTMLHeaders: using setAutoTopMargin="pad"; not correctly setting top margin for first page
+- output headers changed: Content-length not used if server uses output compression
+- embedded font subsets from fonts which contain non-BMP plane 0 characters (incl. e.g. dejavusanscondensed)
+       - causing Adobe Reader to create a CJK encoded font subset internally when loading interactive Forms
+       - Changed so unsets the flag in the subset font to show no non-BMP characters.
+
+
+Configurable variables added (see config.php file):
+--------------------------------------------------
+All for Active Forms:
+$this->useActiveForms
+$this->formExportType
+$this->formSubmitNoValueFields
+$this->formSelectDefaultOption
+$this->form_border_color
+$this->form_background_color
+$this->form_border_width
+$this->form_border_style
+$this->form_button_border_color
+$this->form_button_background_color
+$this->form_button_border_width
+$this->form_button_border_style
+$this->form_radio_color
+$this->form_radio_background_color
+
+PLUS: see additional values added to $this->allowedCSStags close to bottom of file - required for Active forms
+
+
+Updated files
+-------------
+mpdf.php
+config.php  (NB as well as form stuff at top, 5.2.07 $this->allowedCSStags close to bottom of file)
+compress.php
+classes/ttfontsuni.php
+examples/example57...
+examples/formsubmit.php
+
+
+
+===========================
+mPDF v5.2   (18/06/2011)
+===========================
+
+New Features
+------------------
+Improvements in font handling resulting in clearer display of fonts on screen, and improved compatibility with PostScript drivers
+       (e.g. use with GSView/GhostScript, see below)
+
+CJK line-breaking implemented (roughly) according to rules. Configurable variables allow control of behaviour (except in tables).
+
+Viewer preferences: added options for initial 2 page display where you can specify whether
+       1st page is on left or right (cf. SetDisplayMode).
+
+Custom list-style-type for a list (ul,ol) or a list-item (li) in which you can determine the character and colour of the bullet:
+       list-style-type: U+263Argb(255,0,0); - where U+263A is the Unicode HEX value of the character you want for the bullet 
+       - character MUST be included in the font used for that list item. rgb() bit is optional
+
+
+Bug fixes
+---------
+- Fonts: embedding a BMP TTC font (e.g. Cambria) as a full font caused error
+- Table: If cell width set by CSS as %, and page-break-inside avoid requires a new page, was losing the sizing
+- Table: table borders CSS parsing error; if border-width, border-style, border-color set, not inherited correctly
+- Table: Table background image or gradient not working in HTMLHeader/Footer
+- Table: background color set on table (anywhere) will overwrite image/gradient
+- Table Background image/gradient: If left/right margin is set on table, gradient/image set on table is too wide
+- Table: rotated table - height (after first page does not correctly allow for thead i.e. too much)
+- Table: blank <tr></tr> causes error
+- Table/Letter-spacing: If letter-spacing set inside table, not calculating table width correctly, and if oversized, freezes
+- ToC: ToC at top of page (non-mirrored or already ODD) did not reset page_number if told
+- Character subsititutions: characters missed if first element in a $html code e.g. WriteHTML('Not in a tag &#10003;');
+- Kerning: kerning info: if reading font file for first time (or if not cached in ttfontdata/) did not register kerning info
+- Textarea: multiple new lines run into only one newline
+- QRCode - colors wrong because QRcode class only accepts RGB input (hardcoded now to always give black on white)
+- QRCode always producing "Your message here"
+- Columns: if transforming height of column, not always closing transform Q
+- CakePHP compatibility
+- compress.php - error due to markup comments in mpdf.php script file
+
+Backwards compatibility
+-----------------------
+Changes in mPDF 5.2 are backwards compatible with version 5.1
+Your document fonts may appear slightly different in the PDF viewer because of the changes to embedded font subsets (cf.)
+The new Indic fonts may result in a change in spacing (due to the different character width of the space character from the original font)
+
+PostScript e.g. GSView/GhostScript
+----------------------------------
+A number of errors have been reported when opening mPDF-created PDF files with a PostScript programme. Some of the errors were due to mPDF, 
+but others were due to peculiarities of GSView/GhostScript.
+- Diacritic Characters were not displayed when embedding a font subset
+- Fonts containing SIP/SMP characters (supplementary Unicode planes) caused errors
+- Error with text justification (word-spacing) when embedding a full font can occur in some fonts*
+The first 2 problems should now be fixed in v5.2
+*The error with text justification can be optionally fixed by setting the configurable variable in config.php:
+       $this->repackageTTF = true;
+       When mPDF embeds a full font, it simply embeds the whole original TTF file into the PDF document. For some fonts (containing
+       a GSUB table) this was causing problems. $this->repackageTTF forces mPDF to repackage the original TTF file excluding some of
+       the tables like GSUB.
+(See ADDITIONAL INFO FONTS.txt in downloaded files)
+
+
+Font appearance in PDF viewer
+-----------------------------
+Font subsetting has been improved to include additional information in the embedded file. Overall the effects are of greater clarity
+when viewing the document on a screen (it will not affect print output), but the changes are dependent on:
+- the original TTF font i.e. the options that the font's author has built into the file
+- the PDF viewer i.e. whether the programme chooses to use the available information
+- the resolution (zoom) of the page you are viewing
+(See ADDITIONAL INFO FONTS.txt in downloaded files)
+
+
+Indic fonts
+-----------
+A new set of Indic fonts (ind_xx_1_001) is distributed with version 5.2 containing the additional font information as described above.
+In addition, some changes have been made to the ASCII characters in the font from the files previously distributed:
+The original files (Raghu font files) do not contain the characters a-z and A-Z. When the first version indic files were created for mPDF,
+ALL of the ASCII characters (32-127) were inserted/overwritten from DejaVuSansCondensed to make the font more usable.
+In the latest version, only the missing characters are taken from DejaVuSansCondensed, leaving punctuation and numerals from the original
+fonts. This also means that the space character has a different width, and this will cause slight changes to the word spacing in documents.
+(See ADDITIONAL INFO FONTS.txt in downloaded files)
+
+
+CJK line-breaking (text wrapping)
+---------------------------------
+CJK (chinese-japanese-korean) text often contains no spaces. mPDF previously has wrapped text whenever a character reached the end of 
+the line. mPDF version 5.2 attempts to follow the line-breaking rules described for each of the languages. Configurable variables 
+allow some control over this behaviour, especially whether to squeeze a character into the space available at the end of a line, or
+whether to allow it to overflow the right margin.
+
+
+Configurable variables (see config.php file):
+----------------------
+Control wrapping of CJK text:
+       $this->allowCJKorphans = true;  // FALSE=always wrap to next line; TRUE=squeeze or overflow
+       $this->allowCJKoverflow = false; // FALSE=squeeze; TRUE=overflow (only selected)
+When Embedding full TTF font files, remakes the font file using only core tables
+May improve function with PostScript printers
+       $this->repackageTTF = false; 
+
+Updated files
+-------------
+mpdf.php
+compress.php
+utils/font_dump.php
+classes/ttfontsuni.php
+config.php (3 new variables - see above)
+
+All ttfonts/ind_*
+New set of Indic fonts for PostScript compatibilty - and clearer font display 
+
+
+
+===========================
+mPDF v5.1   (27/02/2011)
+===========================
+
+New Features
+------------
+- CSS background (images, colours or gradients) on <TR> and <TABLE>
+- CSS border on <TR> (only in border-collapsed mode)
+- support for Mozilla and CSS3 gradient syntax:
+       -moz-linear-gradient, linear-gradient
+       -moz-radial-gradient, radial-gradient
+       -moz-repeating-linear-gradient, linear-repeating-gradient
+       -moz-repeating-radial-gradient, radial-repeating-gradient
+- expanded support for gradients (including in SVG images):
+       - multiple colour 'stops'
+       - opacity (transparency)
+       - angle and/or position can be specified
+- gradient can be used as an image mask (custom mPDF styles: gradient-mask)
+- image-orientation supported for <IMG> (similar to existing custom mPDF attribute: rotate) [CSS3]
+- image-resolution supported for <IMG> [CSS3]
+- background-image-resolution (custom mPDF CSS-type style) to define resolution of background images
+- improved support for SVG images
+- SVG and WMF images supported in background-image
+- file attachments
+- numeric list-styles added e.g. arabic-indic, bengali, devanagari, persian, thai [CSS3]
+- font kerning supported (inter-character spacing between specific pairs)
+- letter-spacing and word-spacing supported [CSS3]
+- colors supported as rgb(), rgba(), hsl(), hsla(), cmyk(), cmyka(), or spot()
+- spot colors supported e.g PANTONE 310 EC
+- PDF/X compatible files
+- optionally force use of grayscale, RGB or CMYK colorspace
+- automatic colour conversion for most objects between grayscale, RGB and CMYK
+
+Backwards compatibility
+-----------------------
+Most changes in mPDF 5.1 are backwards compatible with version 5.0 i.e. your documents should 
+look the same running 5.1   However some changes may alter display from previous versions:
+- RTL (right-to-left) languages - see below
+- bleed margins when using @page CSS - see below
+- Default distance for "cross" from inner margin changed 10->5mm [hardcoded in fn. Footer()]
+- If height set on a block element, will force a new page if set-height will not fit on page
+- If table rotated, 5mm margin at bottom is now reduced to 1mm
+- If image is too big for page and automatically sixed to maximum height of page, 10mm margin at bottom reduced to 1mm
+
+Colours may appear more vibrant
+-------------------------------
+Unless specifically set, Adobe Reader uses the RGB colorSpace by default when displaying documents. However
+if an image or gradient using transparency (or alpha channel) is included in the document, Adobe Reader
+automatically sets the default colorSpace to CMYK - which makes the colours look less vibrant/bright on screen.
+mPDF 5.1 now specifies by default a colorSpace RGB for each page, and this will maintain the more
+vibrant colours. This is overridden if you use on of the options to restrict the colorSpace (cf.)
+
+RTL
+---
+**** IMPORTANT - PLEASE READ IF USING RTL SCRIPTS ****
+Handling of RTL (right-to-left) languages has been significantly rewritten, and is likely to cause 
+changes to the resulting files if you have previously been using mPDF. The changes have made mPDF
+act more like a browser, respecting the HTML/CSS rules.
+Changes include:
+- the document now has a baseline direction; this determines the 
+       - behaviour of blocks for which text-align has not been specifically set
+       - layout of mirrored page-margins, columns, ToC and Indexes, headers and footers
+       - base direction can be set by any of:
+               - $mpdf->SetDirectionality('rtl');
+               - <html dir="rtl" or style="direction: rtl;">
+               - <body dir="rtl" or style="direction: rtl;">
+       - base direction is an inherited CSS property, so will affect all content, unless...
+- direction can be set for all HTML block elements e.g. <DIV><P><TABLE><UL> etc using
+       - CSS property < style="direction: rtl;"> 
+       - direction can only be set on the top-level element of nested lists
+       - direction can only be set on <TABLE>, NOT on THEAD, TBODY, TD etc.
+       - nested tables CAN have different directions
+- NOTE that block/table margins/paddings are NOT reversed by direction
+       NB mPDF <5.1 reversed the margins/paddings for blocks when RTL set.
+- language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF('ar') ) 
+       no longer affects direction in any way.
+       NB config_cp.php has been changed as a result; any values of "dir" set here are now ineffective
+- default text-align is now as per CSS spec: "a nameless value which is dependent on direction" 
+       NB default text-align removed in default stylesheet in config.php 
+- once text-align is specified, it is respected and inherited
+       NB mPDF <5.1 reversed the text-align property for all blocks when RTL set.
+- the configurable value $rtlcss is depracated, as it is no longer required
+- improved algorithm for dtermining text direction
+       - english word blocks are handled in text reversal as one block i.e. dir="rtl"
+       [arabic text] this will not be reversed [arabic text]
+       - arabic numerals 0-9 handled correctly
+
+Although the control of direction for block elements is now more configurable, the control of 
+text direction (RTL arabic characters) remains fully automatic and unconfigurable. 
+<BDO> etc has no effect. Enclosing text in silent tags can sometimes help e.g.
+       content<span>[arabic text]</span>content
+
+Justified text
+--------------
+Text-align: justify - no longer uses configurable variable $jSpacing= C | W | ''
+The default value is for mixed letter- and word-spacing, set by jSWord and jSmaxChar
+If a line contains a cursive script (RTL or Indic [devanagari, punjabi, bengali]) then it prevents letter-spacing
+for justification on that line - effectively the same as setting letter-spacing:0
+Spacing values have been removed from the config_cp.php configuration file, so the "lang" property 
+(in config_cp) no longer determines justification behaviour (this includes the use of Autofont()).
+When using RTL or Indic [devanagari, punjabi, bengali] scripts, you should set CSS letter-spacing:0
+whenever you use text-align:justify.
+
+
+@page media
+-----------
+When using @page to create a print publication with page-size less than sheet-size
+- bleed margin is now configurable (also crop- and cross-mark margins)
+- backgrounds/gradients/images now use the bleed box as their "container box"
+- odd-header-name: supports the value "_default" - allows current non-HTML header to remain unchanged
+- marks: crop cross; i.e. both together supported
+- background-image-opacity and background-image-resize now work with @page CSS
+
+
+SVG images - extended support
+-----------------------------
+- support for spreadMethod property for gradients (repeat and reflect)
+- support for style="font-family; font-size; font-style; font-weight" i.e. inline CSS
+- when viewPort="" and width="" height="" all specified, uses width to set SVG size of a "pixel"
+- support for opacity and multiple "stops" (and colorspace) in gradients
+
+
+
+Minor Enhancements
+------------------
+- support for colors as rgb(87%, 56%, 25%) [used especially in SVG]
+- added option of "NoPrintScaling" in SetDisplayPreferences
+- compress.php - now combines BACKGROUND-IMAGES and GRADIENTS as BACKGROUNDS, and added PROGRESS-BAR
+- table with THEAD row will force a new page if no room for the THEAD AND a row from TBODY
+- Small-Caps now works properly together with text-align justify
+- embedded font subsets restructured (minor) for greater compatibility e.g. with Postscript printers
+- PDF/A will convert everything except grayscale to RGB (by default) or CMYK (optionally)
+
+
+
+
+Bug fixes
+---------
+- Display changed to CMYK colour gamut when document contained an object with transparency set.
+       Now will retain RGB colorspace (brighter colours)
+- If using dir="rtl", tables containing nested tables were not properly reversed
+- "text-rotate: 0" set in CSS stylesheet did not 'undo' any text-rotate set on the row (TR)
+- Malayalam - character re-ordering
+- If height set on a block element, was not taking account of padding top/bottom
+- embedded font subsets: error in array of Font Widths fixed
+- <style>..</style> containing /* import url() */ the comments were not ignored
+- If call mPDF class more than once, error using multiple barcodes or gif files because classes not reinstantiated
+- Floating blocks were collapsing bottom/top margins - incorrectly
+- Table: if colspan>1 contents are wider than the width of the included columns, did not increase column width(s) to accommodate
+- Resizing table - script hanging and new page forced when not required (still)
+- If a table style="page-break-inside:avoid" not fit on the page, was adding new page before resizing EVEN IF on a blank page
+- End of 2 blocks (e.g. </div></div>) at very bottom of page, forcing unwanted pagebreak
+- Corrected handling of tags inside <pre>
+- RTL left-aligned text - line ending with <br /> not correctly left-aligned
+- <input type=submit|reset etc name="xxx" e.g. Google button showed as I&039;m feeling lucky
+- Annotations all linked to Page 1 (parent object)
+- Error "division by zero" using columns
+- MultiCell() and Write() [direct writing functions] - miscalculating length of line in non-core fonts (+ other bugs)
+- error if CJK space at end or beginning of line with 0x20 spaces in as well
+
+Configurable variables (see config.php file):
+----------------------
+$this->printers_info
+$this->bleedMargin
+$this->crossMarkMargin
+$this->cropMarkMargin
+$this->cropMarkLength
+$this->nonPrintMargin
+$this->restrictColorSpace
+$this->PDFX
+$this->PDFXauto;
+$this->useKerning
+[$this->rtlcss removed]
+
+Updated files
+-------------
+mpdf.php
+config.php
+config_cp.php (removed references to dir - but not essential to update - just redundant information)
+compress.php
+includes/out.php
+includes/functions.php
+classes/svg.php
+classes/ttfontsuni.php
+classes/indic.php
+/font/helvetica*.php and /times*.php
+
+Added CSS support
+=================
+All Block elements including <BODY> <TABLE> <TR>
+------------------------------------------------
+background-image-resolution: normal | [ from-image || <dpi> ] 
+direction: [ rtl | ltr ]       (HTML attribute dir also supported)
+background: [ gradients ]
+background-image: [gradients ]
+
+For [ gradients ] syntax see:
+- Mozilla linear - https://developer.mozilla.org/en/CSS/-moz-linear-gradient
+- Mozilla radial - https://developer.mozilla.org/en/CSS/-moz-radial-gradient
+- Mozilla gradients use - https://developer.mozilla.org/en/Using_gradients
+- CSS3 linear gradients - http://dev.w3.org/csswg/css3-images/#linear-gradients
+- CSS3 radial gradients - http://dev.w3.org/csswg/css3-images/#radial-gradients
+
+
+Almost all elements - block and in-line
+---------------------------------------
+font-kerning: auto | normal | none     // need to set $mpdf->useKerning = true;
+letter-spacing: normal | <length>
+word-spacing: normal | <length>
+
+Colours
+-------
+Anywhere that color is specified (e.g. color, background-color, borders)
+- rgb(255,255,255)
+- rgba(255,255,255,1)          // last value is transparency (alpha) - between 0-1
+- rgb(100%,100%,100%)
+- hsl(360,100%,100%)           // H: 0-360; S/L: 0-100%; a:0-1
+- hsla(360,100%,100%,1)
+- cmyk(100,100,100,100)                // or 0-100%
+- spot(COLOR NAME, 100%)       // e.g PANTONE 310 EC; use AddSpotColor() to define first
+
+<TR>
+border:
+
+<TABLE> <TR>
+background:
+background-color:
+background-image:
+
+<IMG>
+gradient-mask: [can use any of the gradient syntax]
+image-orientation: <angle>                             - supports deg, rad or grad
+image-resolution: normal | [ from-image || <dpi> ] 
+
+<OL|UL>
+list-style: arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya |
+               persian | telugu | thai | urdu | tamil
+
+
+@page
+marks: [ crop || cross ]               - i.e. crop and cross can be used together
+odd-header-name: "_default"            - allows current non-HTML header to remain unchanged
+background-image-opacity: [ 0-1 ]
+background-image-resize: [ 1-6 ]       - see Manual
+
+
+===========================
+mPDF v5.0   (30/09/2010)
+===========================
+
+New Features
+------------
+- Font handling simplified, reads TrueType font files directly
+
+
+Minor Enhancements
+------------------
+- rotation of fixed-position block elements (see example 10 and manual for supported CSS)
+- support for CSS Small-Caps font-variant added
+- utility scripts in /utils/ folder to help font management
+- new simplified functions AddPageByArray() and TOCPageBreakByArray() added
+- progress bar simplified and customisable
+- improved word-wrapping for CJK langauges
+- improved recognition of CJK/Indic/Arabic characters
+- invalid UTF-8 input now outputs a meaningful error by displaying input html with errors marked
+- GIF or PNG images with transparency/interlaced/non-standard compression handled as internal data 
+       if /tmp/ folder is not present or writeable
+- support for <html dir="rtl">
+- support for "display: none" on inline elements
+- annotations supported in fixed-position block elements
+
+
+Bug fixes
+---------
+- <br /> preceded by space does not correctly text-align to right
+- zero-width character in middle of line caused line-break (e.g. diacritic or U+200C = ZWNJ)
+- HTML attributes not recognised if spaces e.g. 'src = "..."'
+- Headers changed for output - problem reported on IE8 64-bit using SSL
+- using SetAutoPageBreak(false) used caused unexpected behaviour with table rows at page break
+- (from Beta) incorrect check for temporary font data folder causing errors
+- artificial Bold/Italic not working in table cell when using rotated text
+- allow <dottab> to inherit font color correctly
+- SVG now works with Adobe 7
+- background in header overwriting text
+- vertical text in table header not correctly horizontally positioned when repeated
+- compatibility with PHP >= 4.3 (htmlspecialchars_decode, stripos)
+- updated depracated script PHP 5.3.0 ($string{1} to $string[1], $var =& new Object(), set_magic_quotes_runtime)
+- index (CreateIndex) number string incorrect if arabic(rtl) text anywhere in document
+- MultiCell incorrectly calculate string length/width when using core fonts
+- page-break-inside:avoid - used with non-HTML footer had space inserted for footer height
+- page-break-inside:avoid - error if more than 1 page height but not enough to trigger second pagebreak
+- page-break-inside:avoid - incorrectly layering page backgrounds (headers and content brought forward)
+
+
+Changes from 5.0 Beta
+---------------------
+If you are upgrading from the Beta version - you MUST delete all files in the  /ttfontdata/ temporary directory
+- config.php file has been changed (extra CJK characters to recognise CJK blocks)
+- $this->backupSubsFont (in config_fonts.php) optionally now takes an array
+- no need to define 'cjk'=>true or 'sip|smp'=>true in config_fonts.php (ignored; cf. $this->BMPonly)
+- Indic language fonts have been altered to add Latin and Latin-1 Supplement characters
+- progress bars now has an external progbar.css and configurable main heading
+- added initial parameter new mPDF('+aCJK') or '-aCJK' to override default useAdobeCJK at runtime
+- QRCode is not included in main download (but as an extra package)
+
+BACKWARD COMPATIBILITY
+----------------------
+If you have been using earlier versions of mPDF, most scripts should work as before. But note:
+- Arial, Helvetica, Times and Courier are now treated like any other font
+- the whole CSS font string is parsed e.g. style="font-family:'Lucida Grande';" will look for a font 'lucidagrande'
+and not 'lucida'
+
+Configurable variables (see config.php file):
+----------------------
+- $mpdf->useSubstitutionsMB is now depracated, but will work as an alias for $mpdf->useSubstitutions
+The initial parameters e.g. new mPDF('utf-8') have all changed. Old ones may be recognised, or will be ignored.
+- $mpdf->useOnlyCoreFonts is now depracated and is ignored. Use new mPDF('c')
+- $this->use_CJK_only is now depracated and is ignored. See $this->useAdobeCJK and new mPDF('+aCJK') or '-aCJK'
+Control SmallCaps appearance
+- $mpdf->smCapsScale = 0.75;   // Factor of 1 to scale capital letters
+- $mpdf->smCapsStretch = 115;  // % to stretch small caps horizontally
+Customisable Progress bar
+- $mpdf->progbar_heading = 'mPDF file progress';
+- $mpdf->progbar_altHTML = '';
+Control fonts/subsetting
+- $mpdf->maxTTFFilesize = 2000;
+- $mpdf->percentSubset = 30;
+- $mpdf->debugfonts                    // show font errors and warnings
+Replaceable alias
+- $mpdf->iterationCounter = false;     // Allow use of {iteration varname} in THEAD
+
+
+===========================
+mPDF v5.0Beta   (21/07/2010)
+===========================
+
+New features
+------------
+The main change in mPDF v5 is the handling of TTF and TTC fonts directly.
+See README.txt and FONT INFO.txt for more information
+
+
+QR-code (2-dimensional barcode) Added
+-------------------------------------
+type="QR"
+Size=1 is an arbitrary 25mm widthxheight. error="L|M|H|Q"
+text="" can be numeric, alphanumeric or binary(?)
+Required whitespace is always included around it
+
+
+Enhancements
+------------
+- progress-bar is simplified (no javascript class)
+- dir="rtl" supported in <html> or <body> tag
+
+Bug fixes
+---------
+- artificial Bold/Italic now working in table cells with rotated text
+- "-" is now allowed in a font name e.g. sun-exta
+- <dottab> now inherits font color correctly
+- SVG class bugs fixed (was crashing in Adobe Reader v 7)
+- background color/image in header no longer overwrites the header text
+
+Changed Config variables
+------------------------
+$this->useSubstitutionsMB is depracated
+Character substitution always occurs when using core fonts.
+Use $this->useSubstitutions for all cases.
+
+
+New Configurable variables
+--------------------------
+$this->useAdobeCJK = true;             // Uses Adobe CJK fonts for CJK languages
+                       // default TRUE; only set false if you have defined some available fonts that support CJK
+                       // If true this will not stop other CJK fonts if specified by font-family:
+                       // and vice versa i.e. only dictates behaviour when specified by lang="" incl. AutoFont()
+
+// Set maximum size of TTF font file to allow non-subsets - in kB
+// Used to avoid e.g. Arial Unicode MS (perhaps used for substituteCharsMB) to ever be fully embedded
+// NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB)
+$this->maxTTFFilesize = 2000;
+
+// If not -s (i.e. forced subset) this value determines whether to subset or not
+// 0 - 100 = percent characters
+// i.e. if ==40, mPDF will embed whole font if >40% characters in that font
+// or embed subset if <40% characters
+// 0 will force whole file to be embedded
+// 100 will force always to subset
+$this->percentSubset = 30;
+
+$this->debugfonts - show errors and warnings for font parsing
+
+Config variables removed
+------------------------
+$this->use_CJK_only
+$this->useOnlyCoreFonts
+
+================================================================================
+
+====
+4.6
+====
+
+mPDF 
+
+files changed:
+mpdf.php
+config.php
+makefonts/makefonts.php
+class/t1asm.php
+class/svg.php
+graph.php
+
+examples_04 (images)
+
+config var added:
+$this->tableMinSizePriority
+
+4.5.015
+Bug fix:
+Complex page with ToC entries ++ (example_ToC_bug4_5_015.php) caused Apache to crash
+AdjustHTML() preg_pattern for matching <hx>... </hx>  <table for keep-together - altered and fixed ? matching 
+Seemed to crash when content="Graph 12" between the <h> - 2 numbers (12) crash, 1 didn't!!!
+
+
+4.5.014
+Bug fix:
+Using TrueType fonts, unused font is not embedded in the PDF doc. This was fine except an error message appeared after printing in Adobe Reader,
+because Font reference /F1 still present in doc pointing to non-existent resource.
+Edited so that the reference is now removed from the page if font unused.
+
+
+4.5.013
+Enhancement
+TrueTypeUnicode fonts width array inserted as shortened form array (smaller file size)
+
+4.5.012
+Bug fix: Incorrect handling orphan characters in table
+(cf. http://mpdf.bpm1.com/forum/comments.php?DiscussionID=193 fixed in 4.2 - but going back to it still problems)
+If xxxxx. fits but xxxxx.. doesn't: WriteFlowingBlock wraps it to next line, TableWordWrap sqeezed it onto one line
+TableWordWrap fixed to only allow one orphan char. even if it fits with that one.
+
+
+4.5.011
+Added Windows BMP image support
+
+4.5.010
+SVG class:
+- improved recognition of lineargradients/radialgradients referenced by xlink:href
+- does not die if empty text string
+- support for many text properties as style="" as well as currently as attributes (bold, fill etc)
+- if using MB font, was respecting "Times" and "Courier" from the SVG file but using as ANSI not utf-8
+
+4.5.009
+graph.php updated to include SVG - need to define in graph.php (as well as set up TTF fonts)
+(SVG graph does not include CSIM, 3D skew.)
+
+4.5.008
+t1asm.php has an error in the error message if .dat fontfile not found (".char.dat")
+
+4.5.007
+Bug fix: Using page-break-inside:avoid, if nothing would have been printed on page 1 before next page, elements going all over the place!
+       Also problem shifting images - fixed
+       Also wasn't shifting WMF/SVG images - fixed
+
+4.5.006
+New config var
+$this->tableMinSizePriority = false;   
+If page-break-inside:avoid but cannot fit on full page without 
+exceeding autosize; setting this value to true will force respsect for
+autosize, and disable the page-break-inside:avoid
+[NB edit Manual Table>>autolayout algorithm]
+
+
+4.5.005
+Bug fix
+Table set to avoid page-break-inside: in some circumstances entered loop with recalculating size
+Fudge factor added of 0.001 in tbsqrt to calculate shrink factor 
+
+4.5.004
+Bug fix
+If table set to avoid page-break-inside and table height (resized) exactly==remaining page - was triggering page break
+Fudge factor added of 0.001 in tablewrite to query pagebreak
+
+4.5.003
+Bug fix in makefonts/makefonts.php
+Also changed the links in Step4 & 8 which move the newly created files to the font directory - will now show error message if error - 
+will NOT overwrite existing files. (Put in manual already)
+
+4.5.002
+Bug fix in class/t1asm.php
+If you have magic_quotes_runtime set On - problems using embedded subset.
+
+4.5.001
+JPG "Exif" file recognised from header, and handled much more quickly and efficiently (not using GD)
+
+
+
+===========================
+mPDF v4.5   (21/04/2010)
+===========================
+
+New Features
+------------
+The main change in 4.5 is the improved class for importing SVG images. (See details below)
+
+Font files
+----------
+Some bugs in the "makefonts" utility caused some errors in the files produced for embedding font subsets.
+Surprisingly these are not easily detectable (I have yet to find one!).
+All the font files used for embedding font subsets (the .dat and .dat.php files in /unifont/ folder)
+have been re-generated. Download them if you are having problems with any fonts - otherwise, you probably 
+don't need to bother.
+
+Minor Enhancements
+------------------
+If keepColumns = true (i.e. disable readjustment of column length), mPDF will now reproduce 
+table header/footer rows in each column [4.4.015]
+
+A number of changes to improve processing time [4.4.012]
+[Thanks to carlholmberg http://mpdf.bpm1.com/forum/comments.php?DiscussionID=274&page=1#Item_3]
+
+JPG files with header marked as "progressive DCT-based JPEG" are now supported [4.4.004]
+
+Configurable variable (config.php) $dpi can be set to vary size interpreted from "px" values in HTML/CSS
+NB Recommended that $dpi should always be set the same as $img_dpi
+
+Support added for "ex" as a size value (approximates "ex" as half of font height)
+
+Configurable variable (config.php) $watermarkImgAlphaBlend will determine how watermark images
+will blend with underlying objects. 
+
+
+Bug fixes
+---------
+- Make-fonts utility : makefonts/makefonts.php [4.4.016]
+       (All font files have been updated)
+- Table header of only one column width - not printing right border [4.4.014]
+- WMF and SVG images not rotating correctly to 90 or -90 degrees [4.4.013]
+- Using templates, error if imported doc contains templates itself [4.4.001]
+
+
+Updated Files
+-------------
+mpdf.php
+config.php
+classes/svg.php
+makefonts/makefonts.php
+ALL subset font files (/unifont/ .dat and .dat.php files), and all garuda and norasi files
+
+New files
+---------
+None
+
+New config variables
+--------------------
+$this->watermarkImgAlphaBlend
+$this->dpi
+
+BACKWARD COMPATIBILITY
+----------------------
+All but one changes in mPDF 4.5 are fully backwards compatible.
+The configurable variable $this->watermarkImgBehind was introduced in v4.4 and was unintentionally set to TRUE
+In v4.5 this is set to FALSE in the config.php file.
+
+
+SVG Images
+----------
+[svg.php CHANGED]
+- Text stroke-width default changed to 1 [4.4.011]
+- Text stroke - line-join type changed [4.4.010]
+- Default value for fill changed to "black" [4.4.008]
+- Bug fixes:
+  * to correct calculation of text-length (and therefore alignment R and C) [4.4.009]
+  * Corrected errors in path implementation esp. quadratic Bezier curves
+  * rounded corners to rectangles - error corrected
+  * Recognition of font-family improved
+  * remove \n (and other non-printable chars) from text
+  * zero length shapes are not output e.g. zero-width rectangle, zero-length line, zero-radius circle
+- Support added for:
+  * gradient stop offsets and gradientUnits="userSpaceOnUse" [4.4.007]
+       In mpdf.php enabled define inner radius for radial gradients - only used internally by SVG at present
+  * user defined <ENTITY /> cf. 'render-elems-03-t.svg' in SVG Test Suite [4.4.006]
+  * "color" attribute and "currentColor" value for fill and stroke [4.4.005]
+  * fill:url(#...) in a style as well as attribute
+  * xlink:href for gradients
+  * 1.3002e-005 in svg path
+  * text-style changes (e.g. text-anchor) set on <g> element - not just on <text>
+  * fill-rule=evenodd|nozero
+  * dashed lines / stroke-dasharray & stroke-dashoffset
+  * gradientUnits=userSpaceOnUse;
+  * units e.g. 3mm or 14pt in Rectangle, Circle, Ellipse, Line and Text position 
+  * transform on <text> element
+  * stroke as well as fill on text
+
+NB The following are still NOT supported for SVG
+- filters
+- <marker>
+- images
+- DOM
+- <pattern>
+- textlength; lengthadjust; tspan, tref, toap, textPath; 
+- <use ../>
+- gradient on stroke/text;
+- <clipPath>
+- text-underline and strikethrough
+- text opacity
+- colors as rgb(87%, 56%, 25%)
+- rect using units for dimensions
+- Only uses default spreadMethod = "pad" for gradients
+
+
+
+
+
+===========================
+mPDF v4.4   (24/03/2010)
+===========================
+
+New Features
+------------
+- Support SVG image files (partial)
+- Rotate images or graphs (by multiples of 90 degrees)
+- Set opacity (transparency) for background images
+- Control resizing of background images
+- Set whether to print watermark images behind or in front of page contents
+- Reduced memory usage when printing tables (partly configurable)
+- Option to set path to folder for temporary files
+- Improved compliance for CSS text-align justify
+- Increased support for CSS "media"
+- Improved performance when accessing local image files
+
+
+Minor Enhancements
+------------------
+- Allows space in output file name e.g. $mpdf->Output('t est.pdf','D'); [4.3.007B]
+- Header changed in Output to improve compatability with IE6 (affects 'D' and 'I') [4.3.012B]
+- background-images do not show noimage.jpg if missing [4.3.012D]
+- simpleTables (which improves performance) now also allows: background-color, -gradient and -image, padding 
+       and rotated text to be set for each cell. Only borders are not supported cell-by-cell. [4.3.006]
+
+
+Bug fixes
+---------
+- Page width not correctly reset when defining default page margins (L/R) by @page [4.3.007C]
+- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.3.005]
+       NB This should have been fixed in [4.2.028] but got left out!
+- UseSubstitutionsMB causes errors inside <textarea> and <select> so now disabled in these 2 situations [4.3.004]
+- CSS background: 'none' did not cancel background-image/background-color if it comes later [4.3.002, 4.3.011]
+- Warning message 'depracated' (as of PHP 5.3) when using Templates [4.3.007]
+- AutoFont incorrectly altering multibyte characters ending in \xa0 [4.3.012C]
+- "Initial" default value for border-width changed from 1px to 'medium' e.g. border-top: solid #000000; [4.3.010]
+- WMF image sometimes inverted [4.3.016]
+
+Updated Files
+-------------
+mpdf.php
+config.php
+changelog.txt
+
+
+New files
+---------
+classes/svg.php
+
+
+New config variables
+--------------------
+$this->justifyB4br=false;
+$this->CSSselectMedia='print';
+$this->watermarkImgBehind = false;
+
+BACKWARD COMPATIBILITY
+----------------------
+All changes are backwards compatible except the handling of some background-images - please see notes below.
+
+
+Watermark Image z-order
+-----------------------
+By default mPDF prints watermarks on top of the page contents to ensure that they are not hidden by backgrounds
+(especially table cells).
+You can specify watermark images to be printed behind page contents by setting a configurable variable:
+$this->watermarkImgBehind = true;  // default=false
+[4.3.018]
+
+
+Rotating Images and Graphs
+--------------------------
+Images or graphs can be rotated (by multiples of 90 degrees) using a custom HTML attribute e.g.
+<img rotate="90|-90|180" ... />
+<jpgraph rotate="90" ... />
+Valid options are: 90|-90|180. 
+Positive values are clockwise.
+If width is specified e.g. width="3cm" this is applied to the rotated image i.e. will be width 3cm after rotating
+[4.3.016]
+
+
+Background Image Opacity
+------------------------
+A custom CSS property "background-image-opacity": is now supported on BODY, DIV+ (block elements) and TD
+Takes values between 0 and 1.0 
+
+
+Resizing Background Images
+--------------------------
+A custom CSS property "background-image-resize": is now supported on BODY, DIV+ (block elements) and TD
+0 - No resizing (default)
+1 - Shrink-to-fit w (keep aspect ratio)
+2 - Shrink-to-fit h (keep aspect ratio)
+3 - Shrink-to-fit w and/or h (keep aspect ratio)
+4 - Resize-to-fit w (keep aspect ratio)
+5 - Resize-to-fit h (keep aspect ratio)
+6 - Resize-to-fit w and h
+
+N.B. Prior to v4.4 background-images were incorrectly constrained to maximum width of the containing block.
+The default is now to do NO resizing on background-images. Setting "background-image-resize:3" should be used
+for backwards compatibility.
+[4.3.015, 4.3.012D]
+
+
+SVG Image files
+---------------
+SVG image files are now partially supported (but as for WMF - not as background-images).
+viewBox (preserveAspectRatio is not supported)  viewBox="0 0 400 200"  width="400" height="200"
+Takes viewBox in preference to width/height if present on <svg>
+If neither present, will size to width of page (square) as the containing box.
+Units are interpreted as pixels if undefined.
+Doesn't recognise internal CSS <style> elements
+Gradients only take 2 colours which are taken as stop-offset 0% and 100%
+[4.3.013 & 4.3.017]
+
+
+Reduced Memory Usage printing Tables
+------------------------------------
+mPDF uses a lot of memory when processing large tables. Parts of the script have been rewritten to 
+reduce memory consumption when writing tables which use collapsed borders (10-25% saving).
+
+Memory usage can be reduced further by setting a configurable variable:
+$this->packTableData = true;  // default=false
+but note that this causes a significant increase in processing time.
+[4.3.008, 4.3.019, 4.3.014]
+
+
+
+User-defined path to Temporary folder
+-------------------------------------
+mPDF uses a folder to write and store temporary files when processing images. By default this is the
+[your_path_to_mpdf]/tmp/
+This is now user-definable by defining the constant _MPDF_TEMP_PATH before including mpdf.php script.
+
+
+Text Justification
+------------------
+In a justified text block, an inline image, textarea, input, or select causing a new line will now force 
+the previous line to be justified. HR and BR do NOT force justification (as in browsers).
+For optional compliance of MS Word behaviour, there is a new configurable variable:
+$this->justifyB4br = false;    // Change to true to force justification before a <BR> (as in MS Word)
+[4.3.003]
+
+
+CSS support for @media
+----------------------
+Now supports media-dependent CSS styles e.g.
+@media print { 
+       p { color: red; } 
+}
+as well as 
+<style media="...">...</style> and
+<link rel="stylesheet" media="print" href="..." />
+Proper matching of CSS media to select using configurable variable:
+$this->CSSselectMedia='print'; //  default="print" set in config.php : screen, print, or any other CSS @media type (not "all")
+N.B. $this->disablePrintCSS in now depracated
+[4.3.001]
+
+
+
+
+===========================
+mPDF v4.3   (28/02/2010)
+===========================
+
+NEW FEATURES
+------------
+- Page (sheet) size can be reset within document (http://mpdf1.com/manual/index.php?tid=436) [4.2.024, 4.2.025]
+- PDF/A1-b compliant files (http://mpdf1.com/manual/index.php?tid=420)
+- Improve performance using simpleTables (http://mpdf1.com/manual/index.php?tid=430)
+- mPDFI incorporated into main mPDF class (http://mpdf1.com/manual/index.php?tid=432)
+- <dottab> added as custom HTML tag: inserts dots to the following text, which is right-aligned [4.2.031]
+
+See Example files 38 and 39 for PDFA compliant file and <dottab>
+
+BACKWARD COMPATIBILITY
+----------------------
+All changes are backwards compatible except the use of mPDFI. You will need to make minor changes to your scripts.
+See the manual http://mpdf1.com/manual/index.php?tid=432 for details.
+
+BUG FIXES
+---------
+- When using Table of Contents and not resetting page numbers: HTML headers/footers showed incorrect page number [4.2.020]
+- Table of Contents: last page not printing page background-color [4.2.023]
+- Image file with space " " in the file name failing [4.2.016]
+- Image file path unnecessarily resolved to full URI - changed to use relative path if possible [4.2.029] ***
+- Table - not calculating height of cell correctly [4.2.015, 4.2.012, 4.2.011, 4.2.009]
+- Table row breaking after/during cell when image in cell taller than font-height [4.2.008]
+- When Table row(cell) greater height than the page-height but requiring resizing greater than allowed by autosize - not resizing [4.2.005]
+- Table cell border not resized correctly [4.2.002]
+- Table row <TR> with a background-color, paints the whole row, including the spaces between cells [4.2.028] ****
+- Background-image in HTMLFooter not correctly setting 0,0 origin [4.2.014]
+- Background-image set as an in-line style not working [4.2.013]
+- Background-image set in CSS @page or <body> was being constrained to less than page size [4.2.032]
+- Imported Templates overwriting Headers (with images or gradients) [4.2.004]
+- When using imports/templates, HTML header with background-image causing page to disappear [4.2.001]
+- block-style element breaking over more than 2 pages incorrectly adjusting L/R margins [4.2.022]
+- CSS @page property "size" set on :left :right or :first pseudo-selectors - disabled [4.2.022]
+- Annotations default colour incorrectly set in PDF as [100 100 0] corrected to [1 1 0] (seemed to work ok?) [4.2.026]
+- Overwrite() now parses input file more tolerantly recognising more source files [4.2.030]
+
+**** Bug fix 4.2.028 never got into the release of v4.3  Included in next release [4.3.005]
+**** Bug fix 4.2.029 never not fully implmented in v4.3  Included in next release [4.3.012]
+
+Changed files 
+-------------
+mpdf.php
+compress.php
+config.php
+classes/t1asm.php
+includes/functions.php
+mpdfi/fpdi_pdf_parser.php
+Added files/folder: /mpdfi/filters/*.*
+Added file/folder: /iccprofiles/sRGB_IEC61966-2-1.icc
+mpdfi/mpdfi.php (no longer required)
+
+New Configuration variables
+---------------------------
+[config.php]
+$this->enableImports
+$this->simpleTables
+$this->PDFA
+$this->ICCProfile
+$this->PDFAauto
+
+
+Minor changes
+-------------
+Increased PDF file compatibility with spec 1.4
+- PDF version changed to 1.4
+- A binary file marker (a comment line with 4 characters > 127 ASCII) is added just after the first line
+- %%EOF no longer has line break after it [4.2.010]
+- /ID object is added to trailer object when not encrypted [4.2.010]
+
+When using progress bars, one of the JS scripts is now referenced as an external file
+ to allow it to be cached by user's browser and improve performance for end-user [4.2.007]
+
+Importing external PDF files: LZW encoded PDF files are now supported
+
+When adding an annotation, the popup window can be set be either open or closed when the document is opened [4.2.027]
+- size and position of the popup can also be specified
+
+
+
+===========================
+mPDF v4.2   (27/01/2010)
+===========================
+
+NEW FEATURES
+------------
+- image handling improved
+- table layout - additional control over resizing
+- vertical-alignment of images - better support for all CSS types
+- top and bottom margins collapse between block elements
+- improved support for CSS line-height
+- display progress bar whilst generating file
+- CSS @page selector can be specified when adding a pagebreak
+- CSS @page selector allows different margins, backgrounds, headers/footers on :first :left and :right pages
+- PNG images with alpha channel fully supported
+- ability to generate italic and bold font variants from base font file
+- CJK fonts to embed as subsets
+- "double" border on block elements
+- character substitution for missing characters in UTF-8 fonts
+- direct passing of dynamically produced image data
+- background-gradient and background-image can now co-exist
+
+
+
+Bug fixes
+---------
+- empty variable (undefined var, false, null, array() etc.) sent to WriteHTML produced error message "Invalid UTF-8"
+- CJK in tables when not using CJK (utf-8-s) autosized very small as characters did not word-wrap
+- parsing stylesheets: background image not recognised if containbed uppercase characters in file name
+- "double" border on table used white between the lines instead of current background colour
+- $this->shrink_tables_to_fit = 0 or false caused fatal errors
+- background color or images not printing correctly when breaking across pages
+- background not printed for List inside a block element
+- columns starting near end of page with no room for a line triggering column change (resulting in text misplaced) not page break
+- table cell not calculating cell height correctly when "orphan" characters (;:,.?! etc.) at end of line
+- table breaking page in column 2 when col 1 is rowspan'ned
+- margin-collapse at top of page not working if bookmark/annotation/indexentry/toc
+- column break triggered by HR triggering a second column break
+- an empty 'position:fixed' element with no/auto width or height caused fatal error
+- mPDFI: template documents were overwriting HTML headers
+- mPDFI: function Overwrite (to change text in existing PDF) - fatal error if using with encrypted file
+
+Bug - not fixed
+- WriteHTML('',2) with '2' parameter not recognising 'margin-collapse:collapse' for DIVs or 'line-height' set in default CSS 'BODY'
+
+
+
+New or Updated Files
+--------------------
+mpdf.php
+compress.php
+config.php
+config_cp.php
+config_fonts.php
+mpdf.css
+classes/gif.php
+classes/indic.php
+includes/subs_core.php
+mpdfi/mpdfi.php
+unifont/ar_k_001.uni2gn.php
+All files in new folder: /progress/*.*
+
+NEW FOLDER /tmp/ required with read/write permissions - used for temporary image files or progress bars
+
+
+
+
+===========================
+mPDF v4.1.1  (21/12/2009)
+===========================
+Error corrected in /makefont/makefonts.php file (moved completed Unicode files to font folder instead of unifont)
+
+===========================
+mPDF v4.1  (20/12/2009)
+===========================
+MySQL support for embedded font subsets abandoned, and replaced with file-based.
+
+
+Files no longer required
+------------------------
+config_db.php
+/unifont/RUNME.php
+/unifont/*.ufm and /unifont/*.t1a font files
+
+MySQL Database no longer required
+
+Files Updated
+-------------
+mpdf.php
+/classes/t1asm.php
+/makefont/makefonts.php
+
+New files
+---------
+/unifont/*.dat and /unifont/*.dat.php font files
+
+
+Bug-fixes
+---------
+- Image - If automatically resizing to fit maximum page size incorrectly subtracted margin-header
+- Annotation and textarea in same HTML chunk causes mPDF to crash (preg_replace textarea with /u modifier in AdjustHTML)
+- set_magic_quotes_runtime error ($mgr not $mqr)
+- Table align did not reverse when using RTL document
+
+Alteration: Image - if writing Image in fixedpos div position:absolute - to allow Image to be resized to full page size
+
+
+===========================
+mPDF v4.0  (17/12/2009)
+===========================
+
+Major additions
+---------------
+- Ability to embed font subsets (creating much smaller files)
+- Much improved support for Arabic languages
+- Support for Indic languages including consonant conjuncts
+- Support for Fixed position block elements
+- New utility to help create your own fonts
+- PNG alpha channel transparency supported
+- New utility to create smaller mpdf script with reduced functionality (less memory)
+- Multiple Barcode types supported
+
+**********************************************************************************************
+*  For more details see the documentation manual: http://mpdf1.com/manual/index.php?tid=410  *
+**********************************************************************************************
+
+Bug fixes (parsing CSS)
+-----------------------
+- <link  href="" ... was not recognised if > 1 space between words
+- #Content p em { font-style:italic; } was applied to "#Content p"
+- @import url() embedded in a stylesheet file requires path fixed relative to stylesheet file
+- background-image url() embedded in a stylesheet file requires path fixed relative to stylesheet file
+- comment tags inside CSS <style> embedded in the HTML were removed
+    Now fixed so <style><!-- ... --></style> works; <!-- <style>...</style> --> is removed
+
+Bug fixes (other)
+-----------------
+- clear (CSS property for floating elements) caused properties for that element to reset to defaults
+- width: auto caused collapse of border and padding on L & R of ordinary block elements
+- text-indent not inherited correctly (including em and % values)
+- named colour "steelblue" corrected RRGGBB hex code
+- table cell widths in %: if width of table cells set to >=100%, and not all columns are set
+       This was fixed in 3.2 but led to problem where 2 cols: 1) 80% and 2) not set (see Table sizing test)
+       Now fixed again to work for both(?)
+- parse PNG error fixed
+- bachground-image not correctly positioned in HTMLFooter and HTMLHeader (Not fixed properly in 3.2!)
+- fonts not supported with 0-9 in the name
+- font list in GetCodepage() in htmltoolkit.php (now config_cp.php) containing space " " not recognised
+- list number positioning
+- list font size set in CSS for UL/OL not working for first level list
+- table width (real value, not %) not working in nested table
+- GIF file failed if PDF file not compressed
+- list-style-type incorrectly inherited
+- line-height inheritance in lists
+- SetColumns added a new line - not required if at start of document/page
+- footer_line_spacing did not work
+- table cellPadding="" overwrote cell padding set on cell CSS
+- could not turn off Default non-HTML foter LINE
+- border specified as "em"
+- default values set in mpdf.css overriden by inherited properties e.g. <div><h1>Here</h1></div> lost font-size for H1
+
+
+
+===========================
+mPDF v3.2  (25/10/2009)
+===========================
+Bug fixes
+---------
+- Table cell widths in %: if width of table cells set to >=100%, and not all columns are set -> froze, because tries to produce a column of no width
+- Ouput download file changed to allow compatability with IE6 (http://mpdf.bpm1.com/forum/comments.php?DiscussionID=120&page=1#Item_4)
+- Image error if relative path used on domain root (e.g. img src="image.png" and basepath is http://www.yourdomain.com) [attempted fix in 3.1 not working]
+- Table: if font changed in cell, font was not retoring properly afterwards causing errors (restoreInlineProperties())
+- Lists: list items containing <br />, font not restoring after bullet
+- Graceful support for block elements inside list items e.g. <li><p>... (not supported, but tolerated)
+- Index: Created dividing letters separately for Uppercase and lowercase
+- Incorrectly changing input character set when encountering e.g. charset=iso-8859-1 in the text of the document
+       - Changed so only detects it if within <head>...</head> 
+- If Keep-with-table (i.e. H1-6 before table and use_kwt true), if pagebreak forced anyway, borders did not print on previous page
+- Background-image used in HTML footer not appearing (correctly)
+- RTL tables: nested tables will not automatically transpose L->R
+- "Keep heading with table" - changed to allow <h1 style=".."> not just <h1>
+- "Keep heading with table" - backgrounds (bgcolor, image or gradient) incorrectly handled - now removed
+- Rotated table spread over more than 1 page caused enclosing block background colours to be be rotated along with table
+- CSS text-indent % now correctly suported (% of containing block width)
+- CSS width em on a block element e.g. DIV now correctly suported
+- calculating _tableheight, if remainingpage==0, get error (div by zero)
+- Table moved to next page with page-break-inside=avoid, produced an enlarged table (font)
+- RTL text-align override on BODY text was not working consistently
+- Arab characters: Character &#x647; (HEH) appearing in Final presentation form instead of Isolated
+- Vertical position of background-image on whole page incorrect
+- SetProtection can now be used with no permissions set (was not working unless at least one permission set)
+
+
+Developers
+----------
+Some more undefined indexes and variables declared (courtesy of DSmart http://mpdf.bpm1.com/forum/comments.php?DiscussionID=117&page=1#Item_0 )
+Comment lines removed for < v3.0 to tidy up code
+
+
+Enhancements
+------------
+CSS style height now partially supported on block elements DIV, P, H1 etc. --IF--
+       - block is all on one page
+       - will extend the block but not shorten it
+       - will not force a pagebreak (max. at bottom of page)
+       - % is interpreted as % of printable page height (inside margins)
+<TFOOT> now supported (placed at start as in HTML spec) displays at end of table, and repeats as a footer
+Background-image and background-gradient now supported in TD and TH (works in all cases except: background-image is not rotated or 
+       positioned correctly if table is rotated)
+NB Background images and background-gradients do not work if Columns are being used, or if $use_kwt is TRUE (keep-with-table),
+        or if page-break-inside:avoid is active.
+
+
+Updated files
+-------------
+mpdf.php
+htmltoolkit.php
+
+
+
+
+===========================
+mPDF v3.1  (30/08/2009)
+===========================
+
+Bug fixes
+---------
+- Image error if relative path used on domain root (e.g. img src="image.png" and basepath is http://www.yourdomain.com
+was giving http://www.yourdomain.com//image.png) [3.1]
+- Errors in parsing background CSS (background-repeat, background-position etc) [3.1]
+- Textarea did not corectly convert width or height in units relating to font e.g. em [3.0beta_01]
+- If page margin-bottom set to zero, SetHTMLfooter() crashes with "Division by zero" error [3.0beta_01]
+- Table with header row and rowspan in tbody, not calculating maxrowheightcorrectly
+- Prevent Index breaking column just after a dividing letter
+- Select or input form field when text around it is justified had text in the form field justified
+- TocBookMarkText needs to be htmlspecialchar-ed - decoded when entered inside <tocpagebreak>
+- <img src="" /> caused crash
+- DisplayPreferences used as a variable name and a function: function renamed to SetDisplayPreferences()
+- Image with src file not including a "." incorrectly parsed (e.g. http://www.domain.com/imagegenerator?params=23)
+
+New Features
+------------
+- var $debug (true|false) default false; show or hide error reporting at output stage [3.1]
+- var $autoPageBreak (true|false) default true; allows overriding of automatic page breaks [3.0beta_02]
+- <indexinsert /> HTML equivalent of CreateIndex() [was CreateReference()]
+- 2nd attribute/parameter "xref" in IndexEntry() and <indexentry> - works like IndexEntrySee() as cross-reference entry
+- function SetWatermarkText allows null parameters to be passed i.e. SetWatermarkText() - will clear the WatermarkText
+- <watermarktext content="" alpha="" /> - HTML equivalent of SetWatermarkText()
+- <watermarkimage src="" alpha="" position="" size="" /> - HTML equivalent of SetWatermarkImage()
+
+Documentation
+-------------
+See Manual at http://mpdf.bpm1.com/manual/ for more information - especially:
+- User's Guide>>What Else Can I Do?>>Backgrounds & Borders
+- User's Guide>>What Else Can I Do?>>Floating blocks
+
+Files updated:
+-------------
+mpdf.php
+htmltoolkit.php
+graph.php
+
+
+Developers only
+---------------
+mPDF<=3.1 generated a large number of warning "Notices" if run with full eror_reporting on, due to array indexes not being initiated e.g.
+$arr = array();
+...
+if ($arr['index'] == 5 ) {...}
+
+To prevent this, lines were added at the start of the mpdf.php script to turn error notices OFF.
+In a move towards making mPDF able to run with full error_reporting on, a large amount of the script has been altered 
+e.g. the line above would be changed to:
+if (isset($arr['index'] && $arr['index'] == 5 ) {...}
+
+Although I have tested this with a number of examples, it is almost certainly not complete. Therefore the error_reporting for Notices is still turned
+off in mPDF 3.1
+If you care to test it, please uncomment line 43 (//error_reporting(E_ALL);) and report any warning notices that you get.
+NB This has added about 40kB to the script size.
+
+
+
+===========================
+mPDF v3.0beta  (14/06/2009)
+===========================
+
+
+New Features
+------------
+- CSS "float" partially supported (as well as clear:left|right|both)
+- CSS "background-image" "background-position" "background-repeat" "background-color" "background" supported for block-level elements
+- CSS background-color and background-image for <body > element added: this covers the whole page i.e. not just inside the "margins"
+- CSS background-color and background-image can be defined for CSS @page{}
+- Background gradients (linear or radial) can be defined using a custom CSS style property
+- Border radius can be defined to give rounded edges to block elements (uses draft CSS3 spec.)
+- page number can be reset to any value during the document (in AddPage() <pagebreak> etc.)
+- PNG images: Interlaced and alpha-channel-set PNG images now supported
+- internal links supported in Indexes (parameter added to CreateIndex()/CreateReference(): $useLinking=true;)
+- HTML Headers and footers now support hyperlinks
+- improved handling of <br>, block elements, and text lines inside table - approximates better to browser handling
+- borders of block-level elements & table cell borders supported (partially) in columns
+- optional error reporting for problems with Images ($showImageErrors)
+- ToC will word-wrap long entries
+- internal links (Bookmarks, IndexEntry and ToCEntry) rewritten to give more accurate positioning (when used as <tag>)
+- autofont algorithm improved for CJK languages
+- define text before and after page numbers ($pagenumPrefix; $pagenumSuffix; $nbpgPrefix; $nbpgSuffix;)
+- Additional color names supported - full list from SVG1.0
+
+Bug fixes
+---------
+- Column width not resetting after an automatic pagebreak, or after setting HTMLheader
+- using AutoFont unnecssarily changed htmlspecialchars to code causing errors
+- Lists inside a table - incorrectly calculating table cell height
+- CJK - 4-byte utf-8 chars not displaying properly (includes HKCS characters)
+- mailto: links incorrectly handled
+- TOCpagebreak() - usePaging default clarified: true unless specified as '', 0, '0' or false; (null ->true)
+- <tocpagebreak> (as html tag) with no "name" defined, used at start of page, added a further blank page(s)
+- Lists - inaccurate calculation of space required for numbers in certain circumstances
+- Generated images (.php) only working if cURL enabled - (fixed, but rquires allow_url_fopen if remote file)
+- flag added to turn off error reporting when buffering used ($allow_output_buffering = false;)
+- RTL text in Bookmark, Title, Author, Creator, Keywords, and Subject was reversed - Adobe Reader 9 now correctly handles RTL text ( which Reader 8 did not)
+- TOC - if not using ODD/EVEN paging, did not add extra page and messed up
+- Rotated table which did not fit on remaining page resized to bigger than default
+- HR of width less than 100% - text continued on line after it
+- HR alignment not working (fixed so both CSS text-align and margin: 0 0 0 auto etc work)
+- HR in table did not correctly re-size when necessary
+- characters in symbols/zapfdingbats which in non-utf-8 mode are represented as chr(173) incorrectly handled as soft-hyphens
+      (bug introduced 2.5 with soft-hyphens - affects symbols &#8593; arrow-up and Zapfdingbats &#9313; encircled 2)
+- Internal links (anchors) - Annotation/Bookmarks etc. incorrectly positioned when page orientation changed
+- ToC - when using multiple ToCs, internal links were not correctly adjusted
+- anchor (a name="") used inside a table was incorrectly positioned at the end of table
+- Tables: cell height calculated incorrectly when BR used
+- Table rotated with "page-break-inside:avoid" not kept on one page
+- Table rotated and split over > 1 page - vertical alignment inaccurate
+- Headers/Footers (non_html) when no style set caused errors
+- Table: breaking page when using rowspan error (line 17142)
+- ToC: If no indent defined in HTML tag <tocpagebreak> or defined as 0 gave error
+
+Note
+----
+In mPDF 3.0 the following sections of code have been significantly rewritten:
+- painting of borders and background colours for block-elements
+- table of contents
+- Index
+- vertical justification in columns (uses scaling to stretch vertically)
+
+NB changed htmltoolkit AdjustHTML - does not now remove <br> before </div>
+       Warning - may display differently in normal text as well as tables
+
+
+Files updated:
+-------------
+mpdf.php
+htmltoolkit.php
+
+
+Developers only
+---------------
+- Background-color handling in CSS changed so only inherited/cascaded when Columns active or Keep-block-together 
+      - otherwise would overwrite background image with inherited color
+- all %.2f used in sprintf() changed to %.3f in htmltoolkit.php and mpdf.php to increase accuracy of div border lines in columns etc.
+- variable $use_embeddedfonts_1252 renamed to $useOnlyCoreFonts as more precise: depracated but still supported.
+- this version included quite abit of tidying up/future-proofing some code:
+      $var{0} changed to substr($var,0,1) etc.  (due to go in PHP6)
+      ereg_ changed to preg_   (depracated in PHP5.3) - (NB mainly in htmltoolkit.php)
+
+
+
+===========================
+mPDF v2.5  (01/05/2009)
+===========================
+
+New Features
+------------
+- Automatic Hyphenation added, and support for soft-hyphens
+- Encryption works now for CJK language documents
+- Improved text justification
+- Support for 'generated' images e.g. "../ontheflyimage.php"
+
+
+Bug fixes
+---------
+- Tables: cell height did not reduce if font-size used was smaller than table default
+- Columns: if setcolumns() to the same number already active - did not print out last bit of previous columns
+- Page-break in the middle of a block caused incorrect margin and padding on next lines until end of block ($cMargin reset to 0 in AddPage)
+- <HR> in table cell was printing in incorrect position (bug introduced in mPDF 2.4)
+- Justification
+  - if only one word on line, did not respect maximum character spacing
+  - last character of line incorrectly had character spacing applied
+  - Space at the end of last line of a Right Justify block - e.g. "end. </p>" now correctly ignored
+  - &nbsp; incorrectly treated as a character when justifying text with word/char spacing
+  - CJK punctuation (.,) added as 'orphans' to keep at end of line
+- PNG files - was still buggy reading larger PNG files (due to fread)
+
+
+Files updated:
+-------------
+mpdf.php
+htmltoolkit.php
+CJKdata.php
+/patterns/.. (new files)
+
+
+Developers only
+---------------
+Variables renamed as more accurate or appropriate:
+- var $isunicode renamed as $is_MB
+- var $usingembeddedfonts renamed as $usingCoreFont
+CJK changed to act internally as UTF-8 encoded
+- (NB CJK Half-widths not supported from 2.5+ i.e. big5-hw gb-hw)
+
+
+
+===========================
+mPDF v2.4  (23/04/2009)
+===========================
+Files updated
+-------------
+mpdf.php
+htmltoolkit.php
+mpdfi/mpdfi.php
+
+New files
+---------
+graph.php
+Graphs - Requires new folder: path_to_mpdf/graph_cache/ (must be writeable)
+
+New features
+------------
+Annotations improved so they appear as a pop-up
+Re-use Document Templates (cf. RestartDocTemplate() in manual)
+Limited support for CSS float property on an IMG element allowing text wrapping e.g. <img style="float: right;"> (cf. Images in manual)
+Utility function PreparePreText() allows output of a text file which may include <pre>
+Automatic generation of graphs from data in tables (requires integration with JPGraph) (cf. Graphs in manual)
+
+Other Changes
+-------------
+IMPORTANT - User rights removed as not working with newer version of Adobe Reader 9 (affects Active forms and ability for users to modify annotations)
+Corrects text alignment when using {nb} or {nbpg} in (non-HTML) headers/footers
+Sets default timezone if not already set (at top of mpdf.php) to prevent E_STRICT ERROR message
+Suppresses E_NOTICE error reporting (at top of mpdf.php)
+Error capture in Output() to avoid PDF header being sent when error messages generated
+A function str_ireplace added to htmltoolkit to allow PHP4 to function
+
+Bug fixes
+---------
+WMF images incorrectly positioned when in-line
+PNG images > 8kB failed to load - (fix in 2.3 didn't work - fixed properly this time)
+Annotations containing a new line (\n) causing an error
+Evaluation of <pre> text: "<code>[TAB] " evaluated incorrect number of spaces to follow to align tabs, because < was calculated as 4 chars (&lt;)
+
+
+
+===========================
+mPDF v2.3  (22/03/2009)
+===========================
+
+New Features
+------------
+- Optionally detect language and when to use special fonts i.e. RTL (arabic), CJK (chinese), Thai (see SetAutoFont() etc.)
+- Supports HTML attribute "lang" in all tags and uses special fonts when required (see $useLang)
+- Joins Arabic and Farsi/Persian text into presentation forms
+- Import another PDF file and use as templates in your document (see UseTemplate() and mPDFI in the manual.)
+- Replace specified text strings in an existing PDF file (see OverWrite() etc.)
+- More than one Table of Contents can be used in a document (see tocpagebreak etc.)
+- Restore properties of open HTML block elements after a page break (variable $restoreBlockPagebreaks or new tag <formfeed>)
+- <annotation> <bookmark> <indexentry> <tocentry> can now accept characters <>'"& as htmlentities - htmlspecialchars(..., ENT_QUOTES)
+- <annotation> can now accept "\n" for new line
+- support for opacity (CSS3 property) for images
+- specify the number of spaces to substitute for TAB when parsing <pre> tags
+- greater control over margins and display when changing page orientation during document (see $forcePortraitMargins and $displayDefaultOrientation)
+
+
+
+Bug fixes
+---------
+Fonts in CSS - Not parsing font-family: Trebuchet MS; correctly as trebuchet
+Fonts in CSS - CSS font-family: [unknown]; setting first $available_unifont rather than ignoring
+Images - not displaying on IIS platform
+Images - .wmf not displaying if (allow_url_fopen) not set
+Table borders - in defaultCSS, 'MARGIN-COLLAPSE'=> collapase not quoted therefore not working
+Line-break inside table - printing a blank background across page rather than just going down a line
+Form fields inside tables - will now resize if the table is autosized (shrunk)
+<pre> containing a '<' was changed to '&lt;'
+Tabs inside <pre> were all changed to 8 spaces, not the remainder following a string
+Header on first page was inset by 1mm left and right ($cMarginL and $cMarginR not set to zero)
+Table nested inside a cell with colspan > 1 was incorrectly handled
+PNG file crashed (?incorrectly defined PNG file) [adapted _parsepng to account for unexpected]
+Table or Cell - if font-size not recognised, mPDF set font-size to zero
+Font-sizes - [xx-small|x-small|small|medium|large|x-large|xx-large] were not recognised in tables
+
+
+===========================
+mPDF v2.2.1  (17/02/2009)
+===========================
+Bug fix - (bug introduced in 2.2)
+Table - header row did not return to top of page when repeating across pages.
+
+
+===========================
+mPDF v2.2  (15/02/2009)
+===========================
+Updated files from mPDF 2.1
+mpdf.php
+htmltoolkit.php
+mpdf.css (new)
+===========================
+New files from mPDF <2.0 (only required for EAN Barcodes)
+font/ocrb.xx (several)
+unifont/ocrb.xx (several)
+IMPORTANT - you need to make sure the ocrb font is added to the config.php file
+ - add 'ocrb' to the end of 3 arrays: $this->available_fonts  $this->available_unifonts  and  $this->mono_fonts
+===========================
+
+Summary of changes
+- external stylesheet file (mpdf.css) is used to configure default values ($useDefaultCSS2 and $defaultCSS2 are no longer used)
+- special comment tags to hide mPDF tags from browsers: <!--mpdf ...  mpdf-->
+- AddColumn() function added (equivalent to <columnbreak>)
+- annotations - pop-up messages the reader can move or delete (if you set permissions)
+- support for WMF images as well as GIF, JPG, PNG
+- watermark image can be set instead of, or as well as text
+- nested tables can include other content
+- improved control over table layout
+- margin: auto now supported for table and block elements
+
+A number of methods and variables have been renamed or reCapitalised for consistency.
+Changes should be backwards comaptible.
+All user methods start with a Capital, all user-defined variables start with lowercase.
+Affected:
+Reference() -> IndexEntry()
+CreateReference() -> CreateIndex()
+$TopicIsUnvalidated -> $showWatermark
+setUnvalidatedText() -> SetWatermarkText()
+
+PHP appears at present to be case-insensitive for function/method names
+All the following functions have been renamed in the script with a capital first letter:
+setUserRights()
+setBasePath()
+setAnchor2Bookmark()
+setHeader()
+setFooter()
+defHeaderByName()
+defFooterByName()
+setHeaderByName()
+setFooterByName()
+setHTMLHeader()
+setHTMLFooter()
+defHTMLHeaderByName()
+defHTMLFooterByName()
+setHTMLHeaderByName()
+setHTMLFooterByName()
+shaded_box()
+writeBarcode()
+
+Variable names changed to lowercase first letter:
+(Variables are case-sensitive therefore aliases have been set up)
+Anchor2Bookmark
+BiDirectional
+KeepColumns
+AliasNbPg
+AliasNbPgGp
+
+=========
+Bug fixes
+=========
+Columns - $keepColumns=true was incorrectly calculating the place to continue printing after 1 and half columns (of 3)
+Table cell height - incorrectly setting table cell height when cell contained a line of text of large size which wrapped to more than one line
+HR in Table cell - if table cell contains only HR (and column otherwise empty), HR was printed outside cell
+HR in Table cell - if table cell ended with a HR, height was one line too much
+Table page-break-inside:avoid - caused mPDF into permanent loop in some circumstances
+Paging - Total Pages/Group {nb} and {nbgp} didn't work in CJK
+CSS - Border size thin, medium and thick were only recognised in lowercase
+Table-header - rowspan not correctly output in THEAD
+Default CSS - table empty-cell:hide changed to show (CSS specification)
+
+===========================
+mPDF v2.1  (24/01/2009)
+===========================
+
+New Features in Version 2.1
+---------------------------
+- CSS support improved generally (especially for cascading CSS, lists)
+- TableHeader changed to allow multiple rows in THEAD
+
+
+CSS changes
+-----------
+- display: none (block elements only - not lists or tables, nor HR)
+- width (TD/TH)
+- list-style-type (will also recognise the list-style-type from list-style) (OL/UL)
+       recognised values: disc|circle|square|decimal|lower-roman|upper-roman|lower-latin|upper-latin|lower-alpha|upper-alpha|none
+- CSS support for <LI>: font-family, font-size, font-style, font-weight, color, background-color, text-decoration, text-transform, and list-style-type (will also recognise the list-style-type from list-style)
+- table cell borders - CSS rules have been adapted slightly - if a coloured/black line conflicts with a white line, and is the same width, coloured/black will overwrite even if Bottom or Right
+
+
+Numbered Lists
+--------------
+Variables set at the top of mpdf.php can be set to change:
+- text alignment of numbers in numbered lists (default Right) 
+       var $list_align_style = 'R';
+- content to follow a numbered list marker e.g. '.' gives 1. or IV. whereas ')' gives 1) or a)
+       var $list_number_suffix = '.';
+(These can be altered at run time, but are not changeable through stylesheets or in-line style)
+
+
+Writing broken segments of HTML
+-------------------------------
+2 new parameters have been added to WriteHTML()
+function WriteHTML($html,$sub=0,$init=true,$close=true) {
+$close - Leaves buffers/variables etc. in current state, so that it can continue to write the HTML where it leaves off
+$init - Clears and resets buffers/variables
+(N.B.  You must end with a WriteHTML that calls $close=true)
+Example:
+$mpdf->WriteHTML('<p>This is the beginning...', 2, true, false);
+$mpdf->WriteHTML('...this is the middle...', 2, false, false);
+$mpdf->WriteHTML('...and this is the end</p>', 2, false, true);
+
+
+Rotated text in table cells
+---------------------------
+NB This UPDATE will change expected output from previous versions******
+
+Prior to v2.1 any cell set to rotate text anticlockwise was forced to vertical align = bottom.
+This has been changed so that it only overrides when the rotate angle is between 45 and 89 degrees: text rotated exactly 90 degrees will respect the set value for vertical-align.
+
+
+=========
+Bug fixes
+=========
+- List - list starting after "<div>Then some text not in a block element<ol>" incorrectly output 
+- Tables - if cell font-size set smaller than default for the table, does not shrink the cell height
+- Columns (tables) - columns breaking across rows e.g. in the middle of a table cell
+- Tables - if table width set to e.g. 100% but cols are less, was not making up to set width
+- Watermark - was not printing if using HTMLFooter
+- Lists - not aligning numbering correctly if different font sizes used for bullet & text etc. 
+- Lists - indent of text did not correctly allow for Maximum number in <ol> list
+- Table does not always move correctly to a new page
+- Table cell incorrectly calculated height causing text to overflow cell when printed
+- Table borders in columns not being correctly handled (bug since 2.0 introduced a buffer to save the borders and print at the end of the table - fixed so does not use buffer if in columns - potentially does not deal with conflicting borders as well, but works in columns)
+- Table cell width if set as a percent was being downsized when autosizing table
+- Table CSS was buggy - improved
+- SetBasePath (when fetching remote website) - now handles string with query string on it e.g. http://www.domain.com/index.php?tid=42
+- Table cells with Rotated text - text not positioned correctly
+- Page number totals not working in utf-8 mode
+
+
+============================
+Code efficiency improvements
+============================
+- BIG speed improvement (compared with 2.0) with tables (especially large tables)
+- considerable increase in speed if writing long HTML segments to mPDF
+- speed improvement for tables (may be very significant if some cells have a lot of text in them causing uneven column widths)
+
+NB To speed up program more, consider setting $mpdf->useSubstitutions=false; if you do not use any characters outside the codepage selected
+
+
+===============
+Keep-with-table
+===============
+(This was introduced in v2.0 but I forgot to document it)
+If you set $this->use_kwt = true;
+All H1-H6 elements will try to keep with a table that follows immediately afterwards - (this is done in htmltoolkit, by adding an attribute KEEP-WITH-TABLE)
+See Known Issues re: Using kwt inside a div with border/background (doesn't work)
+
+
+
+
+===========================
+mPDF v2.0  (07/12/2008)
+===========================
+Main New Features in Version 2.0
+- nested tables are supported
+- supports both models of table border: separate and collapsed
+- improved parsing of CSS stylesheets, and better handling of styles throughout
+- additional recognised CSS styles
+- page orientation, size, and margins can be changed within the document, using PHP script or custom HTML
+- some limited support for @page CSS to define page-box areas, with crop/cross marks for printing
+- improved control over headers and footers (including HTML headers/footers)
+- improved presentation of Form elements including image-type input fields
+- generates an EAN barcode suitable for a book/printed publication
+- active forms can be generated - EXPERIMENTAL at present
+- change document permissions to allow the user to make annotations - EXPERIMENTAL at present
+
+NB Lines are commented in mPDF script as changes for mPDF 1.4 - this became v2.0
+
+=========
+UPGRADING
+=========
+IMPORTANT - Before Upgrading: Please note that some of the changes will cause mPDF 2.0 to render the pages differently from earlier versions i.e. it is not totally backwards comaptible. Read the notes on Backward compatibility before deleting your original set-up.
+
+To upgrade from v<=1.3 to v2.0 you only need to copy and overwrite the following 2 files:
+mpdf.php
+htmltoolkit.php
+
+Plus (optionally) if you want to use the EAN Barcode function, you will also need:
+font/ocrb.xx (several)
+unifont/ocrb.xx (several)
+IMPORTANT - you need to make sure the ocrb font is added to the config.php file
+ - add 'ocrb' to the end of 3 arrays: $this->available_fonts  $this->available_unifonts  and  $this->mono_fonts
+
+
+==========
+Bug Fixes
+==========
+<columns column-count="0"> did not turn off columns - Fixed
+
+Margins as % - e.g. margin-right: 50% set from CSS incorrectly applied 50% of the fontsize
+(Fixed - adding parameter to fn. ConvertSize in htmltoolkit.php and in calls to that function)
+
+DIV Width - e.g. div style="width: 50% was not working
+(Fixed - fn.SetCSS and OpenTag()'DIV')
+
+CSS values as Zero - p { margin: 0; } did not work in stylesheet unless 0 had a unit
+
+Multiple Non-breaking spaces collapsed - e.g. "1&nbsp; &nbsp; &nbsp;2"  - was contracted to "1 2"
+(Fixed - fn.adjustHTML in htmltoolkit.php)
+
+Table cell too narrow causing incorrect printing - If two characters are too wide to print (only likely within a table cf. example tables - Periodic table) the first character was not printed, just a new line
+(Fixed in fn.WriteFlowingBlock)
+
+Font size by inline style for form elements <input> <textarea> gave wrong size when using a relative size 0.9em
+(Fixed - fn.ConvertSize in htmltoolkit.php)
+
+Creation Date not correctly showing
+(Fixed - did not need to convert to UTF16)
+
+New block element started at end of page  - block borders not painted
+(Fixed - fn.AddPage)
+
+DL did not close block correctly
+(Fixed - mistype in fn. CloseTag)
+
+Transparent not recognised as color/background-color
+(Attempted a fix by setting to ignore it! - fn. convertcolor in htmltoolkit.php)
+
+Zero (0) not displaying if only thing in table cell or tags e.g. <td>0</td> <p>0</p> 
+(Fixed - fn.WriteHTML)
+
+Page Headers/Footers - Simple Headers or Footers defined as e.g. '|{PAGENO}|' were not split into 3 components, but output |6| in the outer margin.
+(Fixed)
+
+Could not copy from a completed PDF doc to clipboard when using a TrueTypeUnicode font
+(Fixed - fn._puttruetypeunicode - added CIDToGIDMap)
+
+Creating an Index (confusing called CreateReference in mPDF) based on only 1 column (i.e. columns off) caused it to print FAIL
+(Fixed - fn. CreateReference())
+
+Table of Contents - If a ToC entry reached other side of page a warning notice was produced
+Fixed - printing is now suppressed and it is moved down a line (but not when using rtl)
+
+"Keep Block Together" (i.e. page-break-inside: avoid for a block element)
+If this property causes some text to be moved to the next page, internal link targets (i.e. <a name="xxx">) were incremented pagenumber by +1 - as this used the calculated document page number, didn't work if using e.g. roman numerals
+(Fixed)
+NB This is now ALWAYS disabled when it meets a table - can use page-break-inside:avoid for the table
+
+@import url(style.css) without quotation marks "" was not picked up, although it is valid HTML
+(Fixed - fn.ReadCSS())
+
+Reading CSS from external style sheets included all media
+Now set by default to ignore media="aural|braille"
+Allows media="print" but can exclude by: $mpdf->disablePrintCSS = true; (default = false)
+Works on both <link... and <style media="print">@import...
+See the web page example - this stops the CSS stylesheets specifically marked for "print" to be ignored
+
+Table borders (in collapsed model) incorrectly calculated which border had dominance (mPDF <=1.3 determined the overriding border by its color)
+(Fixed to follow CSS 2.1 specifications: width >> CSS dominance (cell>table) >> T & L > B & R)
+In the border-collapse=collapse mode, the following rules determine which border style "wins" in case of a conflict:
+1. Borders with the 'border-style' of 'hidden' take precedence over all other conflicting borders. 
+2. narrow borders are discarded in favor of wider ones.
+3. styles are preferred in this order: 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and the lowest: 'inset'.
+4. If border styles differ only in color, then a style set on a cell wins over one on a table. 
+5. When two elements of the same type conflict, then the one further to the left or top wins out.
+
+Parsing CSS, a missed level would not be picked up i.e. CSS = div.refstr1 p {...} would not pick up:
+<div class="refstr1"> <div class="another"> <p>...
+(Fixed - fn. MergeCSS by carrying everything forwards)
+       Note: I removed -  && !$this->blk[$this->blklvl-1]['cascadeCSS']['CLASS>>'.$attr['CLASS']]['depth']
+       Not sure why I put it there in the first place!
+       In a later bit of function -  && $this->blk[$this->blklvl-1]['cascadeCSS'][$tag]['depth']>1
+       Haven't removed this, but is it needed???
+
+CSS inline style set in TD/TH (font-size, color, weight, font-family or italic) didn't turn off at the end of the cell (and also formatted the top left cell)
+(Fixed)
+
+CSS properties color, font-weight, and font-style set on a table were not inherited by the table cells
+(Fixed - var $base_table_properties)
+
+When rotating a table, the text following was positioned incorrectly
+(Fixed - fn. printtablebuffer)
+
+When rotating a table, links were not adjusted in position e.g. <a href="">...
+(Fixed - fn. printtablebuffer)
+
+If a larger border-thickness was set for a cell in the middle of a table, cells before that inaccurately calculated the cell wdith needed
+(Fixed)
+
+Text in a table cell which was not in a block and followed a list, there was no line break e.g. </ol>Text following</td>
+(Fixed - var $listjustfinished;)
+
+Setting the default font-family from the body tag using in-line CSS did not work e.g. <body style="font-family:mono"> (did work in external  stylesheets)
+(Fixed - fn.WriteHTML)
+
+<link href="..." rel="stylesheet"> was not recognised (because the href comes before the rel)
+(Fixed)
+
+Read linked CSS stylesheet OR @import stylesheet - now includes both.
+
+<tag class="class1 class2"> did not set either class1 or class2. Fixed so that it will now pick out class1 (better than nothing!)
+
+CSS line-height as % - interpreted 120% as 120 (x the font-size) - Fixed so it now accepts % and numbers
+
+Setting the basepath (used for relative links/external stylesheets etc) with $mpdf->setBasePath() was generally buggy!
+Now allows a domain e.g. $mpdf->setBasePath("http://www.domain.com"); (previously needed slash on end)
+(Fixed - hopefully!)
+
+If you were repeatedly calling mPDF in a loop to produce more than one PDF file, it would crash with error: "You have restricted the number of available fonts to 0". Fixed by editing line 751 require(_MPDF_PATH.'mpdf_config.php'); to require(...
+
+
+=============
+Improvements(?)
+=============
+Unsupported image files - mPDF died with an error message if image files didn't meet expected format e.g. an interlaced PNG file
+Changed so images are now replaced by the NOIMG image.
+
+Footer margin (HTML and normal footers) now determines the lowest point that is printed (rather than the place to start printing the footer)
+NB IMPORTANT CHANGE - not backwards comaptible
+
+Tabs in <pre> or <textarea> are now replaced by 8 spaces rather than 6 (consistent with http://www.w3.org/TR/1998/REC-html40-19980424/struct/text.html#edef-PRE)  [fn. AdjustHTML() in htmltoolkit.php]
+
+To insert the total number of pages in the document anywhere in the doc, just use '{nb}'
+The line:      $mpdf->AliasNbPages();
+has now been uncommented allowing {nb} to be used
+NB This will always give the total no. of pages in the whole document regardless of any changes you have made to page numbering.
+You can change the default placeholder '{nb}' to any string using:  $mpdf->AliasNbPages('[**my Chars**]');
+
+$mpdf->AliasNbPageGroups();    default="{nbpg}"
+Can be used to set the total number of pages in the current group i.e. between where page numbering is reset
+
+CSS border correctly fixes "solid 3mm #000000" i.e. (style width color) - (not a bug, but this is often incorrectly specified)
+
+Can now print div background behind a rotated table.
+
+You can keep columns as they are i.e. 1st column will finish page then start on second, by setting
+$mpdf->KeepColumns = true;
+
+Image constrain
+===============
+Image size is constrained to current margins and page position. Extra parameter added to end of fn. allows you to override this.
+$mpdf->Image('files/images/frontcover.jpg',0,0,210,297,'jpg','',true, false);  // e.g. the last "false" allows a full page picture
+Useful for e.g. a cover page for your document
+
+Cumulative CSS
+==============
+In version <=1.3, if you call:
+$mpdf->WriteHTML($stylesheet,1);
+$mpdf->WriteHTML($html);       // this one cleared the array $this->cascadeCSS; conatining cascaded CSS information from stylesheets
+You were meant to call:
+$mpdf->WriteHTML($html,2);     // which doesn't re-parse the CSS information
+v2.0 changed so that 
+$mpdf->WriteHTML($html); no longers clears the array $this->cascadeCSS and so can be used repeatedly;
+
+
+
+================================================
+Additional CSSstyles & HTML attributes supported
+================================================
+<BODY> - font-style, font-weight, color
+
+<IMG> - html attributes width="" and height=""
+
+<TABLE|TD|TH> - border: 'thin' 'medium' and 'thick' are now converted to 1px, 3px and 5px
+<TABLE|TD|TH> - border now respects all types - e.g. 'double', 'solid', 'dashed', 'dotted', 'ridge', 'outset', 'groove', and 'inset'
+(NB mPDF only supports a full declaration of border e.g. "border: thin double #000000;")
+
+<TD|TH> - CSS style="white-space: nowrap" and HTML attribute nowrap="nowrap"
+<TABLE> - page-break-inside: avoid
+<TABLE> - border-collapse: separate|collapse
+<TABLE> - border-spacing: 2px 2px;     (horizontal/vertical) or just one figure (both) NB same as cellSpacing
+<TABLE> - empty-cells: hide|show  (border-collapse:separate only)
+<TABLE> - margin-left and margin-right (previously only supported top and bottom)
+<TABLE> - padding: (this was incorrectly used for TD/TH before) (border-collapse:separate only)
+<TD|TH> - padding:
+<TABLE|TD|TH> - inline style "background" works (with a color only) the same as "background-color"
+
+NB Table page-break-inside, autosize values and rotate are only respected for that set on first level table of nested tables
+
+<TABLE> - cellSpacing and cellPadding HTML attributes:
+NB cellSpacing is the same as CSS style "border-spacing"
+NB cellPadding is a <table> attribute, but sets the cell padding - not table padding
+
+<TABLE> - align="..." now works with a rotated table - but sets the alignment ignoring the rotation i.e. align=right sets the table to the right side of the page (looking as though it is bottom-aligned)
+
+<BLOCK ELEMENTS> - page-break-before: always|left|right - NB any surrounding block tags will be closed before the new page is inserted.
+
+@page - see notes on Paged Media
+
+==========================
+Unsupported HTML attribute
+==========================
+<TD border="1"> - not valid HTML - no longer supported
+
+
+=========
+Additions
+=========
+"Keep-with-table"
+$mpdf->use_kwt = true; // default=false
+If set to true, will force any H1-H6 header immediately preceding a table to be kept together with the table
+- automatically sets the table to fit on one page (i.e. page-break-inside=avoid) if it is a rotated table
+- ignored if: Columns on, Keep-block-together active (page-break-inside=avoid for surrounding BLOCK), active Forms
+
+
+=====
+Notes
+=====
+
+NB Not a change - but note you can use this to allow you to feed html code encoded in other than utf-8:
+$mpdf->allow_charset_conversion=true;
+$mpdf->charset_in='windows-1252';      (needs suitable codes for iconv i.e. windows-1252 not win-1252)
+
+Fixing Optional tags
+====================
+php.net website has illegal nesting of <dt>.. <dd> .. </dd> .. </dt>  and <p>.. <div> .. </div> .. </p>
+The example wich parses the php.net webpage will not show correctly unless you change: $mpdf->allow_html_optional_endtags=false;
+Trying to fix incorrect (X)HTML with $mpdf->allow_html_optional_endtags==true cancels the P when it meets a DIV etc.
+
+
+
+EAN barcode
+===========
+An EAN barcode can be generated
+function writeBarcode($code, $showisbn=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2) {
+It accepts 12 or 13 digits with or without - hyphens as $code e.g.
+$mpdf->writeBarcode('978-1234-567-890', 1, $mpdf->x, $mpdf->y); 
+NB - IMPORTANT***
+A new font - OCR-B font/unifont is required, and needs to be added to the config.php file
+cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
+Barcode size must be between 0.8 and 2.0 (80% to 200%)
+
+CMYK Colors
+===========
+Functions - SetDrawColor, SetTextColor and SetFillColor all now take an optional 4th parameter.
+If defined this will interpret the input as CMYK color i.e.
+SetDrawColor(15,82,0,10)       // NB all values out of 100 - not 255 as for RGB
+
+htmltoolkit.php fn.ConvertColor() - now interprets custom color definition: cmyk(15,82,0,10)
+like rgb(r,g,b) except values out of 100
+Intended to be used for calling the functions separately - BUT works in a limited way with CSS - does not get reset or inherited correctly
+<p style="color:cmyk(215,31,15,10)"> does work
+
+
+DEFAULT CSS
+===========
+$defaultCSS has been updated to reflect better the standard HTML default e.g. using serif, table borders separate, cell vertical-align top
+To keep mPDF 1.3 (my favourites) I have introduced:
+$mpdf->useDefaultCSS2 = true;
+
+
+===================================
+Permissions - forms and Annotations - Experimental!
+===================================
+You can set the Permissions for the PDF file to allow the user to make Comments (annotations)
+$mpdf->setUserRights($enabled=true[default]|false, $annots="/Create/Delete/Modify/Copy/Import/Export",
+               $form="/Add/Delete/FillIn/Import/Export/SubmitStandalone/SpawnTemplate", $signature="/Modify") )
+
+If you encrypt the file, make sure the permissions match e.g.:
+$mpdf->setUserRights();
+$mpdf->SetProtection(array('print','annots'),'yourPassword','myPassword');
+
+To allow this, changed the PDF-file version to %PDF1.5 (NB Probably needs PDF version > 1.5 but can't test for this...)
+
+NOTE: If you output the PDF file straight to the browser, it will only allow annotations after you save the document
+
+
+===========================
+Active Forms - Experimental!
+===========================
+At present , using active forms will prevent any internal and external links - that appear before active forms(?) - from working (why?)
+May need to save form for proper use - see example, when scroll forwards and back, the form disappears??
+Need to set Userrights (see above), and $mpdf->useActiveForms=true;
+For Output options, see separate notes.
+
+
+
+============================
+Internal Programming changes
+============================
+NB fn. tablerotate in htmltoolkit no longer used; now uses a 'transform' to shift the whole block of PDF code
+
+Graphics State
+==============
+ExtGState does not need to be redefined - e.g. if a watermark added on every page, turning on and off alpha/transparency
+Unnecessary file size.
+function AddExtGState() edited to check if graphics state already exists before adding new one
+
+ASCII-proof code
+================
+"»¤¬" used as a special identifier in the program changed to "\xbb\xa4\xac" to make the mpdf.php script file immune from someone saving it as a utf-8 encoded file
+
+Images
+======
+1) When copying remote images locally - incorrectly used "unset" now changed to "unlink"
+2) When parsing image files - was using CURL for any image src="http://... - even if this was on the local server - edited so it only uses CURL if necessary/appropriate.
+NB Handling images was updated in v1.3 because my ISP changed allow_url_fopen to false
+Fixed so mPDF tests if the file is available as a local call e.g. getimage('images/test.jpg') even if it is defined as a full URI e.g. http://www.mydomain.com/images/test.jpg as this is quicker(?), and permitted even if allow_url_fopen is false.
+If not available as a local file (and allow_url_fopen is set) mPDF tries to use fopen/file_get_contents using an http wrapper;
+Else, if CURL is available and allow_url_fopen is false: then tries using CURL.
+(Clear as mud???!!)
+
+
+===========================
+mPDF v1.3  (21/09/2008)
+===========================
+--------------
+Page Numbering
+--------------
+Program changes:
+fn. startPageNums() replaced with blank function
+fn. stopPageNums() - deleted
+fn. numPageNo() - deleted  (all it did was return this->page anyway).
+var $_numbering - deleted
+var $_numberingFooter - deleted
+var $_numPageNum - deleted
+
+NEW
+New: fn. AddPages() (as for AddPage but with type=NEXT-ODD or NEXT-EVEN see below)
+Edited: fn. AddPage() - new parameters added
+AddPage(orientation(NO),type="E|O", resetpagenum="1|0", pagenumstyle="I|i|A|a|1", suppress="on|off")
+New: fn. docPageNum() - returns the document page number (or '') based on...
+New : PageNumSubstitutions(array)
+New attributes:
+<pagebreak resetpagenum="1"    // resets document page numbering to 1 from the new page onwards
+<pagebreak suppress="on"       // turns on suppression of page numbering i.e. in headers and footers, {PAGENO} is replaced by blank string
+                                       // ="0" turns suppression off
+<pagebreak pagenumstyle="I|i|A|a|1"    // (re)sets page number stle/type from the new page onwards - as for lists
+                                       // 1 - decimal; A/a - alpha (uppercase/lowercase); I/i - Roman (uppercase/lowercase)
+<pagebreak type="NEXT-ODD"     // always adds a page + another if required to make odd
+<pagebreak type="NEXT-EVEN"    // always adds a page + another if required to make even
+
+Edited: fn. TOC()      // sets the marker for a Table of Contents
+New parameters allow the page-numbering details to be set
+NB the page-numbering details set are for the page which follows on after the TOC marker is inserted. The page-numbering for the actual ToC is set later, when the ToC is generated and inserted here
+new parameters as above for pagebreak  resetpagenum="1|0", pagenumstyle="I|i|A|a|1", suppress="on|off"
+
+Can also be set by attribute in the <TOC>
+<TOC resetpagenum="1" pagenumstyle="I|i|A|a|1", suppress="on|off" />
+
+--------------------------------------------
+Changes to allow Rotated Text in table Cells
+--------------------------------------------
+Edited:
+fn. OpenTag()
+fn. _tableColumnWidth()
+fn. _tableHeight()
+fn. _tableWrite()
+fn. tableHeader()
+
+New custom style or attribute -- "text-rotate" -- can be set for either <tr> or <th|td>
+Allowed values: 45 - 90 (written as integers) - rotates text anticlockwise, and -90 (clockwise)
+Positive values less than 90 force cell to: vertical-align:bottom
+
+Limitations:
+Only allows single line of text;
+Font, font-size, and style are determined by those set fro the cell, and cannot be changed;
+No changes in font (or any other in-line changes e.g. <sup>) are supported within the text
+
+Example: <tr style="text-rotate:90">...
+
+---------
+Bug fixes
+---------
+1) HTML footer containing table was triggering page break.
+Added $this->InHTMLFooter as flag to prevent page triggering in footers containing table
+Set in fn.writeHTMLFooters() -> in fn.tableWrite() stops the pageBreak being reset
+
+2) Crashing when libcurl not installed.
+Edited OpenTag() curl_init - added if (function_exists) to exclude crash when libcurl not installed
+
+3) Single cell with borders not showing the borders.
+e.g. <table><tr><td style="border:1px solid #000000?>Hi</td></tr></table>
+Problem: mPDF overrides cell border properties with table border properties for external borders. $defaultCSS had CSS defined for table as '0px solid #000000'
+Quick fix - line 273 removed. A more complete fix will require reprogramming to distinguish between "border property not set" and border property set as "none".
+
+4) Empty textarea incorrectly handled (the following HTML code being output in the textarea)
+The html code for an empty textarea was incorrectly handled in htmltoolkit fn. AdjustHTML which has been edited
+
+
+===========================
+mPDF v1.2   (2008-05-01)
+===========================
+// Added v1.2 option to continue if invalid UTF-8 chars - used in function is_utf8()
+var $ignore_invalid_utf8 = false;
+
+Reading CSS in fn. ReadCSS() and applying in fn. MergeCSS() -
+       Edited to allow Tags, class and id with the same name to be distinct i.e. h5 {...}  .h5 {...}  #h5 {...}
+* mPDF 1.2 This version supports:  .class {...} / #id { .... }
+* ADDED p {...}  h1[-h6] {...}  a {...}  table {...}   thead {...}  th {...}  td {...}  hr {...}
+* body {...} sets default font and fontsize
+* It supports some cascaded CSS e.g. div.topic table.type1 td
+* Does not support non-block level e.g. a#hover { ... }
+
+Table: font-size, weight, style, family and color should all work
+TD/TH: font-size, weight, style, family and color should all work
+
+Added to htmltoolkit - fn.array_merge_recursive_unique()
+
+memory_opt Removed in mPDF v1.2 - not working properly
+
+fn. _begindoc() - changed to %PDF1.4 (was 1.3) as PDF version
+
+Write HTML Headers and Footers
+------------------------------
+fn. Close() - calls writeHTMLHeaders/Footers() before finishing doc
+fn. WriteHTML() - added parameter
+fn. _out - writes to outputbuffer when writing HTML footers/headers
+
+New
+fn. writeHTMLHeaders()
+fn. writeHTMLFooters()
+
+
+
+
+=======================
+mPDF v1.1  (2008-05-01)
+=======================
+
+Programming changes to increase efficiency
+------------------------------------------
+fn. WriteHTML() - added lines to combine substituted characters <tta> etc
+
+Memory Optimization added (script from FPDF site) - edited fn. _putpages() and fn. _endpage()
+
+fn. SetFont() edited to return val quicker if font already set (increase efficiency)
+
+new vars chrs and ords are used to store chr() and ord() - quicker than using functions
+
+fn.setMBencoding() - only call mb_internal_encoding if need to change
+
+Bugs
+----
+fn. SetDefaultFontSize() - edited to allow to override that set in defaultCSS
+
+fn. Output() - Added temporary(?) disablement of encryption in CJK as it doesn't work!
+
+fn. OpenTag() [LI] $this->blockjustfinished=false to prevents newline after first bullet of list within table
+
+Uses of mb_ereg_replace removed, and mb_split changed - requires regex_encoding (regex_encoding only used as UTF-8)
+
+fn. WriteHTML: attributes are trimmed with trim() to allow correct handling of e.g. class="bpmBook " 
+
+fn. printbuffer() and fn. openTag() to ensure
+ <div><div><p> outputs top margins/padding for both 1st and 2nd div
+ and </p></div></div> ...
+
+fn. SetFont() added line - bug fixing in CJK fonts
+
+CSS functionality
+-----------------
+Added special CSS 'thead-underline' (similar to topntail)
+
+var $thead_font_weight;        added (openTag) to enable setting of font-weight for <TH> cells
+
+Fixed table border inheritance: Table border inherits border="1" to cells, but not table style="border..."
+
+"page-break-inside: avoid" added (var keep_block_together) to allow a DIV or P to be kept on one page
+       - not compatible with table autosize or table rotate
+       - only works over maximum of 2 pages
+
+Enhancements
+------------
+Orphans in line justification: R. Bracket ) added to defined list of orphans
+
+allow_url_open
+--------------
+Following a change in the PHP ini config set on my website by my ISP, changes made to allow mPDF to work with allow_url_open=OFF.
+       - file_get_contents() changed to use libcurl (for CSS files)
+       - openTag('IMG') @fopen() and 3 functions _parsegif, _parseJPG, _parsePNG, edited to copy remote image files to local file to include images
+
+FlowChart
+---------
+Changes to enable mPDF work with a custom script producing Flowcharts:
+       - WriteHTML() second parameter=3 will allow HTML to be parsed but not output
+       - fn. Arrow() added
+       - TableWordWrap() added parameter to force array return
diff --git a/inc/3rdparty/libraries/mpdf/CREDITS.txt b/inc/3rdparty/libraries/mpdf/CREDITS.txt
new file mode 100644 (file)
index 0000000..3fa5584
--- /dev/null
@@ -0,0 +1,92 @@
+
+
+/*******************************************************************************
+* Software: FPDF                                                               *
+* Version:  1.53                                                               *
+* Date:     2004-12-31                                                         *
+* Author:   Olivier PLATHEY                                                    *
+* License:  Freeware                                                           *
+*                                                                              *
+* You may use and modify this software as you wish.                            *
+*******************************************************************************/
+
+/*******************************************************************************
+* HTML2FPDF is a php script to read a HTML text and generate a PDF file.       *
+* Copyright (C) 2004-2005 Renato Coelho                                        *
+*                                                                             *
+* html2fpdf.php, htmltoolkit.php                                               *
+*******************************************************************************/
+
+CREDITS From HTML2FPDF:
+
+-Olivier Plathey for the fpdf.php class [http://www.fpdf.org]
+-Damon Kohler for the Flowing Block script [mailto:damonkohler@yahoo.com]
+-Clément Lavoillotte for HTML-oriented FPDF idea
+-Yamasoft for the gif.php class [http://www.yamasoft.com/]
+-Jérôme Fenal for the _parsegif() function
+-"VIETCOM" for the PDFTable code [http://www.freepgs.com/vietcom/tool/pdftable/] [mailto:vncommando@yahoo.com]
+-Yukihiro O. for the SetDash() function [mailto:yukihiro_o@infoseek.jp]
+-Ron Korving for the WordWrap() function
+-Michel Poulain for the DisplayPreferences() function
+-Patrick Benny for the MultiCellBlt() function idea [no longer in use]
+-Seb for the _SetTextRendering() and SetTextOutline() functions [mailto:captainseb@wanadoo.fr]
+-MorphSoft for the colornames list idea
+-W3SCHOOLS for HTML-related reference info [http://www.w3schools.com/]
+
+
+
+/****************************************************************************
+* Software: FPDF_Protection                                                 *
+* Version:  1.02                                                            *
+* Date:     2005/05/08                                                      *
+* Author:   Klemen VODOPIVEC                                                *
+* License:  Freeware                                                        *
+*                                                                           *
+* You may use and modify this software as you wish as stated in original    *
+* FPDF package.                                                             *
+****************************************************************************/
+
+/****************************************************************************
+//  FPDI - Version 1.2
+//
+//    Copyright 2004-2007 Setasign - Jan Slabon
+//
+//  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.
+****************************************************************************/
+
+/****************************************************************************
+   * @copyright Khaled Al-Shamaa 2008
+   * @link http://www.ar-php.org
+   * @author Khaled Al-Shamaa <khaled@ar-php.org>
+   * @desc   Set of PHP5 / UTF-8 Classes developed to enhance Arabic web
+   *         applications by providing set of tools includes stem-based searching, 
+   *         translitiration, soundex, Hijri calendar, charset detection and
+   *         converter, spell numbers, keyboard language, Muslim prayer time, 
+   *         auto-summarization, and more...
+   * @package Arabic
+   *    
+   * @version 1.8 released in Feb 15, 2009
+   * 
+   * @license LGPL
+****************************************************************************/
+
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation;
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Lesser General Public License for more details.
+[http://www.opensource.org/licenses/lgpl-license.php]
+
diff --git a/inc/3rdparty/libraries/mpdf/FONT INFO.txt b/inc/3rdparty/libraries/mpdf/FONT INFO.txt
new file mode 100644 (file)
index 0000000..0f7057c
--- /dev/null
@@ -0,0 +1,164 @@
+
+=================
+Open Source Fonts
+=================
+mPDF should be able to read most TrueType Unicode font files with a .ttf extension
+Truetype fonts with .ttf or .otf extension and .ttc TrueType collections should also work OK.
+
+You will probably therefore have access to any number of fonts, but here are some useful sources for 
+open-source or free-use fonts. Many of these were included with earlier versions of mPDF:
+
+General collections
+-------------------
+- DejaVu font collection from: http://dejavu-fonts.org/wiki/Main_Page (included in the release)
+- GNU FreeFont from: http://www.gnu.org/software/freefont/
+- Linux Libertine from: http://www.linuxlibertine.org (use the .ttf files - not the .otf)
+- Liberation Fonts from: https://fedorahosted.org/liberation-fonts/ or directly https://fedorahosted.org/releases/l/i/liberation-fonts/
+
+Thai fonts
+----------
+- Collection of Thai fonts from: ftp://linux.thai.net/pub/thailinux/software/thai-ttf/
+
+
+OCR-B
+-----
+OCRB (ocrb10) font: http://ansuz.sooke.bc.ca/software/ocrb.php
+       Useful for barcodes (included in the release)
+
+Pan-Unicode fonts (fonts containing most characters defined in Unicode)
+-----------------------------------------------------------------------
+- BitStream Cyberbit from: http://aol-4.vo.llnwd.net/pub/communicator/extras/fonts/windows/
+       Cyberbit.ZIP (or just Google it)
+       (NB if run with $debug_fonts gives warning of invalid table checksum - just turn it off!)
+- Code2000 (NB shareware) from: http://www.code2000.net/code2000_page.htm
+- Quivira from: http://www.quivira-font.com/ (combining diacritics are not placed correctly, but has a very full set of glyphs)
+
+
+CJK (Chinese-Japanese-Korean)
+-----------------------------
+HanNomA and B from: http://vietunicode.sourceforge.net/fonts/fonts_hannom.html
+unBatang_0613 from: http://people.ktug.or.kr/~nomos/mine/UnBatang_0613.ttf
+Sun-ExtA and Sun-ExtB from: http://www.alanwood.net/unicode/fonts-east-asian.html
+       (http://www.alanwood.net/downloads/index.html)
+Fonts which contain both Unicode BMP and SIP (Supplementary Ideographic Plane) 
+       characters in one file e.g. "AR PL UMing" and "AR PL UKai" 
+       from: http://www.freedesktop.org  
+       http://www.freedesktop.org/wiki/Software/CJKUnifonts/Download
+[MS Windows fonts such as MS Mincho and MingLiU also work] 
+Japanese IPA fonts: http://ossipedia.ipa.go.jp/ipafont/index.html
+
+Arabic/Eastern fonts
+--------------------
+- XW Zar fonts can be downloaded from: http://www.redlers.com/downloadfont.html
+       (2 of these fonts are included in the release)
+       (original site in Farsi: http://wiki.irmug.org/index.php/XWZar)
+- See below for more details and font names of the fonts used in mPDF 4.x
+
+
+Other sources
+-------------
+http://www.unifont.org/fontguide/
+http://www.alanwood.net/unicode/fonts.html
+http://cooltext.com (e.g. http://cooltext.com/Fonts-Unicode+Arabic)
+ApparatusSIL, DoulosSIL, Padauk from SIL: http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&cat_id=FontDownloads
+DaiBanna (Tai Le) 
+
+Mediaeval & Ancient Scripts
+---------------------------
+Junicode: http://junicode.sourceforge.net/
+Cardo: http://scholarsfonts.net/cardofnt.html
+
+Syriac fonts
+------------
+http://www.bethmardutho.org/meltho/
+
+
+
+
+============
+ARABIC FONTS
+============
+You can use any appropriate Unicode-encoded .ttf or .ttc font file for arabic text, but
+the font file must include the Arabic Presentation Forms-B (U+FE70\96U+FEFF).
+2 of the XW Zar fonts are included in the release.
+
+
+
+===========
+INDIC FONTS
+===========
+Indic scripts e.g. Hindi, Bengali etc. use conjuct forms which have no Unicode assignment. You 
+cannot therefore use any standard .ttf font files with mPDF.
+
+A set of fonts has been adapted to use specifically with mPDF. They are based on a set of fonts from:
+
+http://www.cdacmumbai.in/projects/indix/e_introduction.shtml
+
+NB These fonts are released under GNU GPL Version 2 license
+
+You need these adapted fonts (ind_bn_1_001.ttf etc.) to work with mPDF, as the glyphs have been 
+assigned to Unicode values in the Private Use area (U+E000 ->). These are included in the 
+mPDF download.
+
+
+
+Users of mPDF v4.x
+------------------
+The original indic font files do not contain a full set of even basic ASCII
+characters. The fonts supplied have been "fixed" to include those extra
+characters. This now works whether the font is subset or not.
+
+
+
+=========
+CJK Fonts
+=========
+
+
+Supplemental Ideographic Plane
+==============================
+SIP = Supplemental Ideographic Plane ( = Plane 2) = U+20000 - U+2FFFF  (131072 - 196607)
+These characters are required for the HKSCS Hong Kong Supplementary Character Set. Fonts with 
+SIP characters are commonly divided into a second file e.g. MingLiU and MingLiU-ExtB
+
+mPDF requires 2 fonts and they should be cross-referenced in config_fonts.php e.g.
+       "sun-exta" => array(
+               'R' => "Sun-ExtA.ttf",
+               'sip-ext' => 'sun-extb',
+               ),
+       "sun-extb" => array(
+               'R' => "Sun-ExtB.ttf",
+               ),
+
+--OR--
+(NB these ones also define the font number within the TTC Collection as TTCfontID)
+       'mingliu' => array (
+               'R' => 'mingliu.ttc',
+               'TTCfontID' => array (
+                       'R' => 1,
+               ),
+               'sip-ext' => 'mingliu-extb',
+       ),
+       'mingliu-extb' => array (
+               'R' => 'mingliub.ttc',
+               'TTCfontID' => array (
+                       'R' => 1,
+               ),
+       ),
+       'mingliu_hkscs' => array (
+               'R' => 'mingliu.ttc',
+               'TTCfontID' => array (
+                       'R' => 3,
+               ),
+               'sip-ext' => 'mingliu_hkscs-extb',
+       ),
+       'mingliu_hkscs-extb' => array (
+               'R' => 'mingliub.ttc',
+               'TTCfontID' => array (
+                       'R' => 3,
+               ),
+       ),
+
+
+
+
diff --git a/inc/3rdparty/libraries/mpdf/LICENSE.txt b/inc/3rdparty/libraries/mpdf/LICENSE.txt
new file mode 100644 (file)
index 0000000..5b6e7c6
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/inc/3rdparty/libraries/mpdf/README.txt b/inc/3rdparty/libraries/mpdf/README.txt
new file mode 100644 (file)
index 0000000..e10cc57
--- /dev/null
@@ -0,0 +1,148 @@
+Installation
+============
+    * Download the .zip file and unzip it
+    * Create a folder e.g. /mpdf on your server
+    * Upload all of the files to the server, maintaining the folders as they are
+    * Ensure that you have write permissions set (CHMOD 6xx or 7xx) for the following folders:
+        /ttfontdata/ - used to cache font data; improves performance a lot
+        /tmp/ - used for some images and ProgressBar
+        /graph_cache/ - if you are using JpGraph in conjunction with mPDF
+
+To test the installation, point your browser to the basic example file : [path_to_mpdf_folder]/mpdf/examples/example_basic.php
+
+If you wish to define a different folder for temporary files rather than /tmp/ see the note on 'Folder for temporary files' in 
+ the section on Installation & Setup in the manual (http://mpdf1.com/manual/).
+
+If you have problems, please read the section on troubleshooting in the manual.
+
+
+Fonts
+=====
+I will refer to font names in 2 ways:
+"CSS font-family name" - mPDF is designed primarily to read HTML and CSS. This is the name used in CSS e.g.
+       <p style="font-family: 'Trebuchet MS';">
+
+"mPDF font-family name" - the name used internally to process fonts. This could be anything you like,
+       but by default mPDF will convert CSS font-family names by removing any spaces and changing
+       to lowercase. Reading the name above, mPDF will look for a "mPDF font-family name" of
+       'trebuchetms'.
+
+The configurable values referred to below are set in the config_fonts.php file
+
+When parsing HTML/CSS, mPDF will read the CSS font-family name (e.g. 'Trebuchet MS') and convert 
+by removing any spaces and changing to lowercase, to look for a mPDF font-family name (trebuchetms). 
+
+Next it will look for a translation (if set) e.g.:
+$this->fonttrans = array(
+       'trebuchetms' => 'trebuchet'
+)
+
+Now the mPDF font-family name to be used is 'trebuchet'
+
+If you wish to make this font available, you need to specify the Truetype .ttf font files for each variant.
+These should be defined in the array:
+$this->fontdata = array(
+       "trebuchet" => array(
+               'R' => "trebuc.ttf",
+               'B' => "trebucbd.ttf",
+               'I' => "trebucit.ttf",
+               'BI' => "trebucbi.ttf",
+               )
+)
+
+This is the array which determines whether a font is available to mPDF. Each font-family must have a
+Regular ['R'] file defined - the others (bold, italic, bold-italic) are optional.
+
+mPDF will try to load the font-file. If you have defined _MPDF_SYSTEM_TTFONTS at the top of the 
+config_fonts.php file, it will first look for the font-file there. This is useful if you are running 
+mPDF on a computer which already has a folder with TTF fonts in (e.g. on Windows)
+
+If the font-file is not there, or _MPDF_SYSTEM_TTFONTS is not defined, mPDF will look in the folder
+/[your_path_to_mpdf]/ttfonts/
+
+Note that the font-file names are case-sensitive and can contain capitals.
+
+If the folder /ttfontdata/ is writeable (CHMOD 644 or 755), mPDF will save files there which it can 
+re-use next time it accesses a particular font. This will significantly improve processing time
+and is strongly recommended. 
+
+mPDF should be able to read most TrueType Unicode font files with a .ttf extension
+Truetype fonts with .ttf extension that are OpenType also work OK.
+TrueType collections (.ttc) will also work if they contain TrueType Unicode fonts.
+
+
+Character substitution
+----------------------
+Most people will have access to a Pan-Unicode font with most Unicode characters in it such as 
+Arial Unicode MS. Set $this->backupSubsFont = array('arialunicodems'); at the top of the config_fonts.php file
+to use this font when substituting any characters not found in the specific font being used.
+
+Example:
+You can set $mpdf->useSubstitutions = true; at runtime
+or $this->useSubstitutions = true; in the config.php file
+
+<p style="font-family: 'Comic Sans MS'">This text contains a Thai character &#3617; which does not exist
+in the Comic Sans MS font file</p>
+
+When useSubstitutions is true, mPDF will try to find substitutions for any missing characters:
+1) firstly looks if the character is available in the inbuilt Symbols or ZapfDingbats fonts;
+2) [If defined] looks in each of the the font(s) set by $this->backupSubsFont array
+
+NB There is an increase in processing time when using substitutions, and even more so if
+a backupSubsFont is defined.
+
+Controlling mPDF mode
+=====================
+The first parameter of new mPDF('') works as follows:
+new mPDF('c') - forces mPDF to only use the built-in [c]ore Adobe fonts (Helvetica, Times etc)
+
+new mPDF('') - default - font subsetting behaviour is determined by the configurable variables
+       $this->maxTTFFilesize and $this->percentSubset (see below)
+       Default values are set so that: 1) very large font files are always subset
+       2) Fonts are embedded as subsets if < 30% of the characters are used
+
+new mPDF('..-x') - used together with a language or language/country code, this will cause
+       mPDF to use only in-built core fonts (Helvetica, Times) if the language specified is appropiate; 
+       otherwise it will force subsetting (equivalent to using "")
+       e.g. new mPDF('de-x') or new mPDF('pt-BR-x') will use in-built core fonts
+       and new mPDF('ru-x') will use subsets of any available TrueType fonts
+       The languages that use core fonts are defined in config_cp.php (using the value $coreSuitable).
+
+new mPDF('..+aCJK')  new mPDF('+aCJK')
+new mPDF('..-aCJK')  new mPDF('-aCJK')
+        - used optionally together with a language or language/country code, +aCJK will force mPDF
+       to use the Adobe non-embedded CJK fonts when a passage is marked with e.g. "lang: ja"
+       This can be used at runtime to override the value set for $mpdf->useAdobeCJK in config.php
+       Use in conjunction with settings in config_cp.php
+
+For backwards compatibility, new mPDF('-s') and new mPDF('s') will force subsetting by 
+       setting $this->percentSubset=100 (see below)
+       new mPDF('utf-8-s') and new mPDF('ar-s') are also recognised
+
+Language/Country (ll-cc)
+------------------------
+You can use a language code ('en') or language/country code ('en-GB') to control which 
+mode/fonts are used. The behaviour is set up in config_cp.php file.
+The default settings show some of the things you can do:
+new mPDF('de') - as German is a Western European langauge, it is suitable to use the Adobe core fonts.
+       Using 'de' alone will do nothing, but if you use ('de-x'), this will use core fonts.
+new mPDF('th') - many fonts do not contain the characters necessary for Thai script. The value $unifonts 
+       defines a restricted list of fonts available for mPDF to use.
+
+NB <html dir="rtl"> or <body dir="rtl"> are supported.
+
+
+
+Configuration variables changed
+===============================
+Configuration variables are documented in the on-line manual (http://mpdf1.com/manual/).
+
+
+Font folders
+============
+If you wish to define your own font file folders (perhaps to share),
+you can define the 2 constants in your script before including the mpdf.php script e.g.:
+
+define('_MPDF_TTFONTPATH','your_path/ttfonts/');               
+define('_MPDF_TTFONTDATAPATH','your_path/ttfontdata/');        // should be writeable
+
diff --git a/inc/3rdparty/libraries/mpdf/classes/barcode.php b/inc/3rdparty/libraries/mpdf/classes/barcode.php
new file mode 100644 (file)
index 0000000..2a00269
--- /dev/null
@@ -0,0 +1,1965 @@
+<?php
+
+// Adapted for mPDF from TCPDF barcode. Original Details left below.
+
+//============================================================+
+// File name   : barcodes.php
+// Begin       : 2008-06-09
+// Last Update : 2009-04-15
+// Version     : 1.0.008
+// License     : GNU LGPL (http://www.gnu.org/copyleft/lesser.html)
+//     ----------------------------------------------------------------------------
+//  Copyright (C) 2008-2009 Nicola Asuni - Tecnick.com S.r.l.
+//     
+//     This program is free software: you can redistribute it and/or modify
+//     it under the terms of the GNU Lesser General Public License as published by
+//     the Free Software Foundation, either version 2.1 of the License, or
+//     (at your option) any later version.
+//     
+//     This program is distributed in the hope that it will be useful,
+//     but WITHOUT ANY WARRANTY; without even the implied warranty of
+//     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//     GNU Lesser General Public License for more details.
+//     
+//     You should have received a copy of the GNU Lesser General Public License
+//     along with this program.  If not, see <http://www.gnu.org/licenses/>.
+//     
+//     See LICENSE.TXT file for more information.
+//  ----------------------------------------------------------------------------
+//
+// Description : PHP class to creates array representations for 
+//               common 1D barcodes to be used with TCPDF.
+//
+// Author: Nicola Asuni
+//
+// (c) Copyright:
+//               Nicola Asuni
+//               Tecnick.com S.r.l.
+//               Via della Pace, 11
+//               09044 Quartucciu (CA)
+//               ITALY
+//               www.tecnick.com
+//               info@tecnick.com
+//============================================================+
+
+class PDFBarcode {
+       
+       protected $barcode_array;
+       protected $gapwidth;
+       protected $print_ratio;
+       protected $daft;
+
+       public function __construct() {
+
+       }
+       
+       public function getBarcodeArray($code, $type, $pr='') {
+               $this->setBarcode($code, $type, $pr);
+               return $this->barcode_array;
+       }
+       public function getChecksum($code, $type) {
+               $this->setBarcode($code, $type);
+               if (!$this->barcode_array) { return ''; }
+               else { return $this->barcode_array['checkdigit']; }
+       }
+
+       public function setBarcode($code, $type, $pr='') {
+               $this->print_ratio = 1;
+               switch (strtoupper($type)) {
+                       case 'ISBN':
+                       case 'ISSN':
+                       case 'EAN13': { // EAN 13
+                               $arrcode = $this->barcode_eanupc($code, 13);
+                               $arrcode['lightmL'] = 11;       // LEFT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
+                               $arrcode['nom-H'] = 25.93;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                               break;
+                       }
+                       case 'UPCA': { // UPC-A
+                               $arrcode = $this->barcode_eanupc($code, 12);
+                               $arrcode['lightmL'] = 9;        // LEFT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['lightmR'] = 9;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
+                               $arrcode['nom-H'] = 25.91;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                               break;
+                       }
+                       case 'UPCE': { // UPC-E
+                               $arrcode = $this->barcode_eanupc($code, 6);
+                               $arrcode['lightmL'] = 9;        // LEFT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
+                               $arrcode['nom-H'] = 25.93;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                               break;
+                       }
+                       case 'EAN8': { // EAN 8
+                               $arrcode = $this->barcode_eanupc($code, 8);
+                               $arrcode['lightmL'] = 7;        // LEFT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (http://www.gs1uk.org)
+                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
+                               $arrcode['nom-H'] = 21.64;      // Nominal bar height in mm incl. numerals (http://www.gs1uk.org)
+                               break;
+                       }
+                       case 'EAN2': { // 2-Digits UPC-Based Extention
+                               $arrcode = $this->barcode_eanext($code, 2);
+                               $arrcode['lightmL'] = 7;        // LEFT light margin =  x X-dim (estimated)
+                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (estimated)
+                               $arrcode['sepM'] = 9;           // SEPARATION margin =  x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm)
+                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
+                               $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined
+                               break;
+                       }
+                       case 'EAN5': { // 5-Digits UPC-Based Extention
+                               $arrcode = $this->barcode_eanext($code, 5);
+                               $arrcode['lightmL'] = 7;        // LEFT light margin =  x X-dim (estimated)
+                               $arrcode['lightmR'] = 7;        // RIGHT light margin =  x X-dim (estimated)
+                               $arrcode['sepM'] = 9;           // SEPARATION margin =  x X-dim (http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm)
+                               $arrcode['nom-X'] = 0.33;       // Nominal value for X-dim in mm (http://www.gs1uk.org)
+                               $arrcode['nom-H'] = 20; // Nominal bar height in mm incl. numerals (estimated) not used when combined
+                               break;
+                       }
+
+                       case 'IMB': { // IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200
+                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
+                               $bpi = 22;                              // Bars per inch
+                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
+                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
+                               $this->daft = array('D'=>2, 'A'=>2, 'F'=>3, 'T'=>1);    // Descender; Ascender; Full; Tracker bar heights
+                               $arrcode = $this->barcode_imb($code);
+                               $arrcode['nom-X'] = $xdim ;
+                               $arrcode['nom-H'] = 3.68;       // Nominal value for Height of Full bar in mm (spec.) 
+                                                                       // USPS-B-3200 Revision C = 4.623
+                                                                       // USPS-B-3200 Revision E = 3.68
+                               $arrcode['quietL'] = 3.175;     // LEFT Quiet margin =  mm (spec.)
+                               $arrcode['quietR'] = 3.175;     // RIGHT Quiet margin =  mm (spec.)
+                               $arrcode['quietTB'] = 0.711;    // TOP/BOTTOM Quiet margin =  mm (spec.)
+                               break;
+                       }
+                       case 'RM4SCC': { // RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
+                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
+                               $bpi = 22;                              // Bars per inch
+                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
+                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
+                               $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2);    // Descender; Ascender; Full; Tracker bar heights
+                               $arrcode = $this->barcode_rm4scc($code, false);
+                               $arrcode['nom-X'] = $xdim ;
+                               $arrcode['nom-H'] = 5.0;        // Nominal value for Height of Full bar in mm (spec.)
+                               $arrcode['quietL'] = 2;         // LEFT Quiet margin =  mm (spec.)
+                               $arrcode['quietR'] = 2;         // RIGHT Quiet margin =  mm (spec.)
+                               $arrcode['quietTB'] = 2;        // TOP/BOTTOM Quiet margin =  mm (spec?)
+                               break;
+                       }
+                       case 'KIX': { // KIX (Klant index - Customer index)
+                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
+                               $bpi = 22;                              // Bars per inch
+                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
+                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
+                               $this->daft = array('D'=>5, 'A'=>5, 'F'=>8, 'T'=>2);    // Descender; Ascender; Full; Tracker bar heights
+                               $arrcode = $this->barcode_rm4scc($code, true);
+                               $arrcode['nom-X'] = $xdim ;
+                               $arrcode['nom-H'] = 5.0;        // Nominal value for Height of Full bar in mm (? spec.)
+                               $arrcode['quietL'] = 2;         // LEFT Quiet margin =  mm (spec.)
+                               $arrcode['quietR'] = 2;         // RIGHT Quiet margin =  mm (spec.)
+                               $arrcode['quietTB'] = 2;        // TOP/BOTTOM Quiet margin =  mm (spec.)
+                               break;
+                       }
+                       case 'POSTNET': { // POSTNET
+                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
+                               $bpi = 22;                              // Bars per inch
+                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
+                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
+                               $arrcode = $this->barcode_postnet($code, false);
+                               $arrcode['nom-X'] = $xdim ;
+                               $arrcode['nom-H'] = 3.175;      // Nominal value for Height of Full bar in mm (spec.)
+                               $arrcode['quietL'] = 3.175;     // LEFT Quiet margin =  mm (?spec.)
+                               $arrcode['quietR'] = 3.175;     // RIGHT Quiet margin =  mm (?spec.)
+                               $arrcode['quietTB'] = 1.016;    // TOP/BOTTOM Quiet margin =  mm (?spec.)
+                               break;
+                       }
+                       case 'PLANET': { // PLANET
+                               $xdim = 0.508;                  // Nominal value for X-dim (bar width) in mm (spec.)
+                               $bpi = 22;                              // Bars per inch
+                               // Ratio of Nominal value for width of spaces in mm / Nominal value for X-dim (bar width) in mm based on bars per inch
+                               $this->gapwidth =  ((25.4/$bpi) - $xdim)/$xdim; 
+                               $arrcode = $this->barcode_postnet($code, true);
+                               $arrcode['nom-X'] = $xdim ;
+                               $arrcode['nom-H'] = 3.175;      // Nominal value for Height of Full bar in mm (spec.)
+                               $arrcode['quietL'] = 3.175;     // LEFT Quiet margin =  mm (?spec.)
+                               $arrcode['quietR'] = 3.175;     // RIGHT Quiet margin =  mm (?spec.)
+                               $arrcode['quietTB'] = 1.016;    // TOP/BOTTOM Quiet margin =  mm (?spec.)
+                               break;
+                       }
+
+                       case 'C93':     {       // CODE 93 - USS-93
+                               $arrcode = $this->barcode_code93($code);
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'CODE11': {        // CODE 11
+                               if ($pr > 0) { $this->print_ratio = $pr; }
+                               else { $this->print_ratio = 3; }                // spec: Pr= 1:2.24 - 1:3.5
+                               $arrcode = $this->barcode_code11($code);
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'MSI':             // MSI (Variation of Plessey code)
+                       case 'MSI+': {  // MSI + CHECKSUM (modulo 11)
+                               if (strtoupper($type)=='MSI') { $arrcode = $this->barcode_msi($code, false); }
+                               if (strtoupper($type)=='MSI+') { $arrcode = $this->barcode_msi($code, true); }
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 12;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 12;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'CODABAR': {       // CODABAR
+                               if ($pr > 0) { $this->print_ratio = $pr; }
+                               else { $this->print_ratio = 2.5; }              // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
+                               if (strtoupper($type)=='CODABAR') { $arrcode = $this->barcode_codabar($code); }
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'C128A':   // CODE 128 A
+                       case 'C128B':   // CODE 128 B
+                       case 'C128C':   // CODE 128 C
+                       case 'EAN128A':         // EAN 128 A
+                       case 'EAN128B':         // EAN 128 B
+                       case 'EAN128C': {       // EAN 128 C
+                               if (strtoupper($type)=='C128A') { $arrcode = $this->barcode_c128($code, 'A'); }
+                               if (strtoupper($type)=='C128B') { $arrcode = $this->barcode_c128($code, 'B'); }
+                               if (strtoupper($type)=='C128C') { $arrcode = $this->barcode_c128($code, 'C'); }
+                               if (strtoupper($type)=='EAN128A') { $arrcode = $this->barcode_c128($code, 'A', true); }
+                               if (strtoupper($type)=='EAN128B') { $arrcode = $this->barcode_c128($code, 'B', true); }
+                               if (strtoupper($type)=='EAN128C') { $arrcode = $this->barcode_c128($code, 'C', true); }
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'C39':             // CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
+                       case 'C39+':    // CODE 39 with checksum
+                       case 'C39E':    // CODE 39 EXTENDED
+                       case 'C39E+': { // CODE 39 EXTENDED + CHECKSUM
+                               if ($pr > 0) { $this->print_ratio = $pr; }
+                               else { $this->print_ratio = 2.5; }      // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
+                               $code = str_replace(chr(194).chr(160), ' ', $code);     // mPDF 5.3.95  (for utf-8 encoded)
+                               $code = str_replace(chr(160), ' ', $code);      // mPDF 5.3.95  (for win-1252)
+                               if (strtoupper($type)=='C39') { $arrcode = $this->barcode_code39($code, false, false); }
+                               if (strtoupper($type)=='C39+') { $arrcode = $this->barcode_code39($code, false, true); }
+                               if (strtoupper($type)=='C39E') { $arrcode = $this->barcode_code39($code, true, false); }
+                               if (strtoupper($type)=='C39E+') { $arrcode = $this->barcode_code39($code, true, true); }
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'S25':             // Standard 2 of 5
+                       case 'S25+': {  // Standard 2 of 5 + CHECKSUM
+                               if ($pr > 0) { $this->print_ratio = $pr; }
+                               else { $this->print_ratio = 3; }                // spec: Pr=1:3/1:4.5
+                               if (strtoupper($type)=='S25') { $arrcode = $this->barcode_s25($code, false); }
+                               if (strtoupper($type)=='S25+') { $arrcode = $this->barcode_s25($code, true); }
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'I25':  // Interleaved 2 of 5
+                       case 'I25+': { // Interleaved 2 of 5 + CHECKSUM
+                               if ($pr > 0) { $this->print_ratio = $pr; }
+                               else { $this->print_ratio = 2.5; }      // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
+                               if (strtoupper($type)=='I25') { $arrcode = $this->barcode_i25($code, false); }
+                               if (strtoupper($type)=='I25+') { $arrcode = $this->barcode_i25($code, true); }
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 0;        // TOP/BOTTOM light margin =  x X-dim (non-spec.)
+                               break;
+                       }
+                       case 'I25B':  // Interleaved 2 of 5 + Bearer bars
+                       case 'I25B+': { // Interleaved 2 of 5 + CHECKSUM + Bearer bars
+                               if ($pr > 0) { $this->print_ratio = $pr; }
+                               else { $this->print_ratio = 2.5; }      // spec: Pr= 1:2 - 1:3 (>2.2 if X<0.50)
+                               if (strtoupper($type)=='I25B') { $arrcode = $this->barcode_i25($code, false); }
+                               if (strtoupper($type)=='I25B+') { $arrcode = $this->barcode_i25($code, true); }
+                               if ($arrcode == false) { break; }
+                               $arrcode['nom-X'] = 0.381;      // Nominal value for X-dim (bar width) in mm (2 X min. spec.)
+                               $arrcode['nom-H'] = 10;         // Nominal value for Height of Full bar in mm (non-spec.)
+                               $arrcode['lightmL'] = 10;       // LEFT light margin =  x X-dim (spec.)
+                               $arrcode['lightmR'] = 10;       // RIGHT light margin =  x X-dim (spec.)
+                               $arrcode['lightTB'] = 2;        // TOP/BOTTOM light margin =  x X-dim (non-spec.) - used for bearer bars
+                               break;
+                       }
+                       default: {
+                               $this->barcode_array = false;
+                       }
+               }
+               $this->barcode_array = $arrcode;
+       }
+       
+       /**
+        * CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
+        */
+       protected function barcode_code39($code, $extended=false, $checksum=false) {
+               $chr['0'] = '111221211';
+               $chr['1'] = '211211112';
+               $chr['2'] = '112211112';
+               $chr['3'] = '212211111';
+               $chr['4'] = '111221112';
+               $chr['5'] = '211221111';
+               $chr['6'] = '112221111';
+               $chr['7'] = '111211212';
+               $chr['8'] = '211211211';
+               $chr['9'] = '112211211';
+               $chr['A'] = '211112112';
+               $chr['B'] = '112112112';
+               $chr['C'] = '212112111';
+               $chr['D'] = '111122112';
+               $chr['E'] = '211122111';
+               $chr['F'] = '112122111';
+               $chr['G'] = '111112212';
+               $chr['H'] = '211112211';
+               $chr['I'] = '112112211';
+               $chr['J'] = '111122211';
+               $chr['K'] = '211111122';
+               $chr['L'] = '112111122';
+               $chr['M'] = '212111121';
+               $chr['N'] = '111121122';
+               $chr['O'] = '211121121';
+               $chr['P'] = '112121121';
+               $chr['Q'] = '111111222';
+               $chr['R'] = '211111221';
+               $chr['S'] = '112111221';
+               $chr['T'] = '111121221';
+               $chr['U'] = '221111112';
+               $chr['V'] = '122111112';
+               $chr['W'] = '222111111';
+               $chr['X'] = '121121112';
+               $chr['Y'] = '221121111';
+               $chr['Z'] = '122121111';
+               $chr['-'] = '121111212';
+               $chr['.'] = '221111211';
+               $chr[' '] = '122111211';
+               $chr['$'] = '121212111';
+               $chr['/'] = '121211121';
+               $chr['+'] = '121112121';
+               $chr['%'] = '111212121';
+               $chr['*'] = '121121211';
+               
+               $code = strtoupper($code);
+               if ($extended) {
+                       // extended mode
+                       $code = $this->encode_code39_ext($code);
+               }
+               if ($code === false) {
+                       return false;
+               }
+               if ($checksum) {
+                       // checksum
+                       $checkdigit = $this->checksum_code39($code);
+                       $code .= $checkdigit ;
+               }
+               // add start and stop codes
+               $code = '*'.$code.'*';
+               
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $k = 0;
+               $clen = strlen($code);
+               for ($i = 0; $i < $clen; ++$i) {
+                       $char = $code[$i];
+                       if(!isset($chr[$char])) {
+                               // invalid character
+                               return false;
+                       }
+                       for ($j = 0; $j < 9; ++$j) {
+                               if (($j % 2) == 0) {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $x = $chr[$char][$j];
+                               if ($x == 2) { $w = $this->print_ratio; }
+                               else { $w = 1; }
+
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                       }
+                       $bararray['bcode'][$k] = array('t' => false, 'w' => 1, 'h' => 1, 'p' => 0);
+                       $bararray['maxw'] += 1;
+                       ++$k;
+               }
+               $bararray['checkdigit'] = $checkdigit;
+               return $bararray;
+       }
+       
+       /**
+        * Encode a string to be used for CODE 39 Extended mode.
+        */
+       protected function encode_code39_ext($code) {
+               $encode = array(
+                       chr(0) => '%U', chr(1) => '$A', chr(2) => '$B', chr(3) => '$C',
+                       chr(4) => '$D', chr(5) => '$E', chr(6) => '$F', chr(7) => '$G',
+                       chr(8) => '$H', chr(9) => '$I', chr(10) => '$J', chr(11) => '£K',
+                       chr(12) => '$L', chr(13) => '$M', chr(14) => '$N', chr(15) => '$O',
+                       chr(16) => '$P', chr(17) => '$Q', chr(18) => '$R', chr(19) => '$S',
+                       chr(20) => '$T', chr(21) => '$U', chr(22) => '$V', chr(23) => '$W',
+                       chr(24) => '$X', chr(25) => '$Y', chr(26) => '$Z', chr(27) => '%A',
+                       chr(28) => '%B', chr(29) => '%C', chr(30) => '%D', chr(31) => '%E',
+                       chr(32) => ' ', chr(33) => '/A', chr(34) => '/B', chr(35) => '/C',
+                       chr(36) => '/D', chr(37) => '/E', chr(38) => '/F', chr(39) => '/G',
+                       chr(40) => '/H', chr(41) => '/I', chr(42) => '/J', chr(43) => '/K',
+                       chr(44) => '/L', chr(45) => '-', chr(46) => '.', chr(47) => '/O',
+                       chr(48) => '0', chr(49) => '1', chr(50) => '2', chr(51) => '3',
+                       chr(52) => '4', chr(53) => '5', chr(54) => '6', chr(55) => '7',
+                       chr(56) => '8', chr(57) => '9', chr(58) => '/Z', chr(59) => '%F',
+                       chr(60) => '%G', chr(61) => '%H', chr(62) => '%I', chr(63) => '%J',
+                       chr(64) => '%V', chr(65) => 'A', chr(66) => 'B', chr(67) => 'C',
+                       chr(68) => 'D', chr(69) => 'E', chr(70) => 'F', chr(71) => 'G',
+                       chr(72) => 'H', chr(73) => 'I', chr(74) => 'J', chr(75) => 'K',
+                       chr(76) => 'L', chr(77) => 'M', chr(78) => 'N', chr(79) => 'O',
+                       chr(80) => 'P', chr(81) => 'Q', chr(82) => 'R', chr(83) => 'S',
+                       chr(84) => 'T', chr(85) => 'U', chr(86) => 'V', chr(87) => 'W',
+                       chr(88) => 'X', chr(89) => 'Y', chr(90) => 'Z', chr(91) => '%K',
+                       chr(92) => '%L', chr(93) => '%M', chr(94) => '%N', chr(95) => '%O',
+                       chr(96) => '%W', chr(97) => '+A', chr(98) => '+B', chr(99) => '+C',
+                       chr(100) => '+D', chr(101) => '+E', chr(102) => '+F', chr(103) => '+G',
+                       chr(104) => '+H', chr(105) => '+I', chr(106) => '+J', chr(107) => '+K',
+                       chr(108) => '+L', chr(109) => '+M', chr(110) => '+N', chr(111) => '+O',
+                       chr(112) => '+P', chr(113) => '+Q', chr(114) => '+R', chr(115) => '+S',
+                       chr(116) => '+T', chr(117) => '+U', chr(118) => '+V', chr(119) => '+W',
+                       chr(120) => '+X', chr(121) => '+Y', chr(122) => '+Z', chr(123) => '%P',
+                       chr(124) => '%Q', chr(125) => '%R', chr(126) => '%S', chr(127) => '%T');
+               $code_ext = '';
+               $clen = strlen($code);
+               for ($i = 0 ; $i < $clen; ++$i) {
+                       if (ord($code[$i]) > 127) {
+                               return false;
+                       }
+                       $code_ext .= $encode[$code[$i]];
+               }
+               return $code_ext;
+       }
+       
+       /**
+        * Calculate CODE 39 checksum (modulo 43).
+        */
+       protected function checksum_code39($code) {
+               $chars = array(
+                       '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+                       'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
+                       'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
+                       'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%');
+               $sum = 0;
+               $clen = strlen($code);
+               for ($i = 0 ; $i < $clen; ++$i) {
+                       $k = array_keys($chars, $code[$i]);
+                       $sum += $k[0];
+               }
+               $j = ($sum % 43);
+               return $chars[$j];
+       }
+       
+       /**
+        * CODE 93 - USS-93
+        * Compact code similar to Code 39
+        */
+       protected function barcode_code93($code) {
+               $chr['0'] = '131112';
+               $chr['1'] = '111213';
+               $chr['2'] = '111312';
+               $chr['3'] = '111411';
+               $chr['4'] = '121113';
+               $chr['5'] = '121212';
+               $chr['6'] = '121311';
+               $chr['7'] = '111114';
+               $chr['8'] = '131211';
+               $chr['9'] = '141111';
+               $chr['A'] = '211113';
+               $chr['B'] = '211212';
+               $chr['C'] = '211311';
+               $chr['D'] = '221112';
+               $chr['E'] = '221211';
+               $chr['F'] = '231111';
+               $chr['G'] = '112113';
+               $chr['H'] = '112212';
+               $chr['I'] = '112311';
+               $chr['J'] = '122112';
+               $chr['K'] = '132111';
+               $chr['L'] = '111123';
+               $chr['M'] = '111222';
+               $chr['N'] = '111321';
+               $chr['O'] = '121122';
+               $chr['P'] = '131121';
+               $chr['Q'] = '212112';
+               $chr['R'] = '212211';
+               $chr['S'] = '211122';
+               $chr['T'] = '211221';
+               $chr['U'] = '221121';
+               $chr['V'] = '222111';
+               $chr['W'] = '112122';
+               $chr['X'] = '112221';
+               $chr['Y'] = '122121';
+               $chr['Z'] = '123111';
+               $chr['-'] = '121131';
+               $chr['.'] = '311112';
+               $chr[' '] = '311211';
+               $chr['$'] = '321111';
+               $chr['/'] = '112131';
+               $chr['+'] = '113121';
+               $chr['%'] = '211131';
+               $chr[128] = '121221'; // ($)
+               $chr[129] = '311121'; // (/)
+               $chr[130] = '122211'; // (+)
+               $chr[131] = '312111'; // (%)
+               $chr['*'] = '111141';
+               $code = strtoupper($code);
+               $encode = array(
+                       chr(0) => chr(131).'U', chr(1) => chr(128).'A', chr(2) => chr(128).'B', chr(3) => chr(128).'C',
+                       chr(4) => chr(128).'D', chr(5) => chr(128).'E', chr(6) => chr(128).'F', chr(7) => chr(128).'G',
+                       chr(8) => chr(128).'H', chr(9) => chr(128).'I', chr(10) => chr(128).'J', chr(11) => '£K',
+                       chr(12) => chr(128).'L', chr(13) => chr(128).'M', chr(14) => chr(128).'N', chr(15) => chr(128).'O',
+                       chr(16) => chr(128).'P', chr(17) => chr(128).'Q', chr(18) => chr(128).'R', chr(19) => chr(128).'S',
+                       chr(20) => chr(128).'T', chr(21) => chr(128).'U', chr(22) => chr(128).'V', chr(23) => chr(128).'W',
+                       chr(24) => chr(128).'X', chr(25) => chr(128).'Y', chr(26) => chr(128).'Z', chr(27) => chr(131).'A',
+                       chr(28) => chr(131).'B', chr(29) => chr(131).'C', chr(30) => chr(131).'D', chr(31) => chr(131).'E',
+                       chr(32) => ' ', chr(33) => chr(129).'A', chr(34) => chr(129).'B', chr(35) => chr(129).'C',
+                       chr(36) => chr(129).'D', chr(37) => chr(129).'E', chr(38) => chr(129).'F', chr(39) => chr(129).'G',
+                       chr(40) => chr(129).'H', chr(41) => chr(129).'I', chr(42) => chr(129).'J', chr(43) => chr(129).'K',
+                       chr(44) => chr(129).'L', chr(45) => '-', chr(46) => '.', chr(47) => chr(129).'O',
+                       chr(48) => '0', chr(49) => '1', chr(50) => '2', chr(51) => '3',
+                       chr(52) => '4', chr(53) => '5', chr(54) => '6', chr(55) => '7',
+                       chr(56) => '8', chr(57) => '9', chr(58) => chr(129).'Z', chr(59) => chr(131).'F',
+                       chr(60) => chr(131).'G', chr(61) => chr(131).'H', chr(62) => chr(131).'I', chr(63) => chr(131).'J',
+                       chr(64) => chr(131).'V', chr(65) => 'A', chr(66) => 'B', chr(67) => 'C',
+                       chr(68) => 'D', chr(69) => 'E', chr(70) => 'F', chr(71) => 'G',
+                       chr(72) => 'H', chr(73) => 'I', chr(74) => 'J', chr(75) => 'K',
+                       chr(76) => 'L', chr(77) => 'M', chr(78) => 'N', chr(79) => 'O',
+                       chr(80) => 'P', chr(81) => 'Q', chr(82) => 'R', chr(83) => 'S',
+                       chr(84) => 'T', chr(85) => 'U', chr(86) => 'V', chr(87) => 'W',
+                       chr(88) => 'X', chr(89) => 'Y', chr(90) => 'Z', chr(91) => chr(131).'K',
+                       chr(92) => chr(131).'L', chr(93) => chr(131).'M', chr(94) => chr(131).'N', chr(95) => chr(131).'O',
+                       chr(96) => chr(131).'W', chr(97) => chr(130).'A', chr(98) => chr(130).'B', chr(99) => chr(130).'C',
+                       chr(100) => chr(130).'D', chr(101) => chr(130).'E', chr(102) => chr(130).'F', chr(103) => chr(130).'G',
+                       chr(104) => chr(130).'H', chr(105) => chr(130).'I', chr(106) => chr(130).'J', chr(107) => chr(130).'K',
+                       chr(108) => chr(130).'L', chr(109) => chr(130).'M', chr(110) => chr(130).'N', chr(111) => chr(130).'O',
+                       chr(112) => chr(130).'P', chr(113) => chr(130).'Q', chr(114) => chr(130).'R', chr(115) => chr(130).'S',
+                       chr(116) => chr(130).'T', chr(117) => chr(130).'U', chr(118) => chr(130).'V', chr(119) => chr(130).'W',
+                       chr(120) => chr(130).'X', chr(121) => chr(130).'Y', chr(122) => chr(130).'Z', chr(123) => chr(131).'P',
+                       chr(124) => chr(131).'Q', chr(125) => chr(131).'R', chr(126) => chr(131).'S', chr(127) => chr(131).'T');
+               $code_ext = '';
+               $clen = strlen($code);
+               for ($i = 0 ; $i < $clen; ++$i) {
+                       if (ord($code[$i]) > 127) {
+                               return false;
+                       }
+                       $code_ext .= $encode[$code[$i]];
+               }
+               // checksum
+               $checkdigit = $this->checksum_code93($code);
+               $code .= $checkdigit ;
+               // add start and stop codes
+               $code = '*'.$code.'*';
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $k = 0;
+               $clen = strlen($code);
+               for ($i = 0; $i < $clen; ++$i) {
+                       $char = $code[$i];
+                       if(!isset($chr[$char])) {
+                               // invalid character
+                               return false;
+                       }
+                       for ($j = 0; $j < 6; ++$j) {
+                               if (($j % 2) == 0) {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $w = $chr[$char][$j];
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                       }
+               }
+               $bararray['bcode'][$k] = array('t' => true, 'w' => 1, 'h' => 1, 'p' => 0);
+               $bararray['maxw'] += 1;
+               ++$k;           
+               $bararray['checkdigit'] = $checkdigit;
+               return $bararray;
+       }
+       
+       /**
+        * Calculate CODE 93 checksum (modulo 47).
+        */
+       protected function checksum_code93($code) {
+               $chars = array(
+                       '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+                       'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K',
+                       'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V',
+                       'W', 'X', 'Y', 'Z', '-', '.', ' ', '$', '/', '+', '%');
+               // translate special characters
+               $code = strtr($code, chr(128).chr(129).chr(130).chr(131), '$/+%');      
+               $len = strlen($code);
+               // calculate check digit C
+               $p = 1;
+               $check = 0;
+               for ($i = ($len - 1); $i >= 0; --$i) {
+                       $k = array_keys($chars, $code[$i]);
+                       $check += ($k[0] * $p);
+                       ++$p;
+                       if ($p > 20) {
+                               $p = 1;
+                       }
+               }
+               $check %= 47;
+               $c = $chars[$check];
+               $code .= $c;
+               // calculate check digit K
+               $p = 1;
+               $check = 0;
+               for ($i = $len; $i >= 0; --$i) {
+                       $k = array_keys($chars, $code[$i]);
+                       $check += ($k[0] * $p);
+                       ++$p;
+                       if ($p > 15) {
+                               $p = 1;
+                       }
+               }
+               $check %= 47;
+               $k = $chars[$check];
+               return $c.$k;
+       }
+       
+       /**
+        * Checksum for standard 2 of 5 barcodes.
+        */
+       protected function checksum_s25($code) {
+               $len = strlen($code);
+               $sum = 0;
+               for ($i = 0; $i < $len; $i+=2) {
+                       $sum += $code[$i];
+               }
+               $sum *= 3;
+               for ($i = 1; $i < $len; $i+=2) {
+                       $sum += ($code[$i]);
+               }
+               $r = $sum % 10;
+               if($r > 0) {
+                       $r = (10 - $r);
+               }
+               return $r;
+       }
+       
+       /**
+        * MSI.
+        * Variation of Plessey code, with similar applications 
+        * Contains digits (0 to 9) and encodes the data only in the width of bars.
+        */
+       protected function barcode_msi($code, $checksum=false) {
+               $chr['0'] = '100100100100';
+               $chr['1'] = '100100100110';
+               $chr['2'] = '100100110100';
+               $chr['3'] = '100100110110';
+               $chr['4'] = '100110100100';
+               $chr['5'] = '100110100110';
+               $chr['6'] = '100110110100';
+               $chr['7'] = '100110110110';
+               $chr['8'] = '110100100100';
+               $chr['9'] = '110100100110';
+               $chr['A'] = '110100110100';
+               $chr['B'] = '110100110110';
+               $chr['C'] = '110110100100';
+               $chr['D'] = '110110100110';
+               $chr['E'] = '110110110100';
+               $chr['F'] = '110110110110';
+               if ($checksum) {
+                       // add checksum
+                       $clen = strlen($code);
+                       $p = 2;
+                       $check = 0;
+                       for ($i = ($clen - 1); $i >= 0; --$i) {
+                               $check += (hexdec($code[$i]) * $p);
+                               ++$p;
+                               if ($p > 7) {
+                                       $p = 2;
+                               }
+                       }
+                       $check %= 11;
+                       if ($check > 0) {
+                               $check = 11 - $check;
+                       }
+                       $code .= $check;
+                       $checkdigit = $check;
+               }
+               $seq = '110'; // left guard
+               $clen = strlen($code);
+               for ($i = 0; $i < $clen; ++$i) {
+                       $digit = $code[$i];
+                       if (!isset($chr[$digit])) {
+                               // invalid character
+                               return false;
+                       }
+                       $seq .= $chr[$digit];
+               }               
+               $seq .= '1001'; // right guard
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $bararray['checkdigit'] = $checkdigit;
+               return $this->binseq_to_array($seq, $bararray);
+       }
+       
+       /**
+        * Standard 2 of 5 barcodes.
+        * Used in airline ticket marking, photofinishing
+        * Contains digits (0 to 9) and encodes the data only in the width of bars.
+        */
+       protected function barcode_s25($code, $checksum=false) {
+               $chr['0'] = '10101110111010';
+               $chr['1'] = '11101010101110';
+               $chr['2'] = '10111010101110';
+               $chr['3'] = '11101110101010';
+               $chr['4'] = '10101110101110';
+               $chr['5'] = '11101011101010';
+               $chr['6'] = '10111011101010';
+               $chr['7'] = '10101011101110';
+               $chr['8'] = '10101110111010';
+               $chr['9'] = '10111010111010';
+               if ($checksum) {
+                       // add checksum
+                       $checkdigit = $this->checksum_s25($code);
+                       $code .= $checkdigit ;
+               }
+               if((strlen($code) % 2) != 0) {
+                       // add leading zero if code-length is odd
+                       $code = '0'.$code;
+               }
+               $seq = '11011010';
+               $clen = strlen($code);
+               for ($i = 0; $i < $clen; ++$i) {
+                       $digit = $code[$i];
+                       if (!isset($chr[$digit])) {
+                               // invalid character
+                               return false;
+                       }
+                       $seq .= $chr[$digit];
+               }               
+               $seq .= '1101011';
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $bararray['checkdigit'] = $checkdigit;
+               return $this->binseq_to_array($seq, $bararray);
+       }
+       
+       /**
+        * Convert binary barcode sequence to barcode array
+        */
+       protected function binseq_to_array($seq, $bararray) {
+               $len = strlen($seq);
+               $w = 0;
+               $k = 0;
+               for ($i = 0; $i < $len; ++$i) {
+                       $w += 1;
+                       if (($i == ($len - 1)) OR (($i < ($len - 1)) AND ($seq[$i] != $seq[($i+1)]))) {
+                               if ($seq[$i] == '1') {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                               $w = 0;
+                       }
+               }
+               return $bararray;
+       }
+       
+       /**
+        * Interleaved 2 of 5 barcodes.
+        * Compact numeric code, widely used in industry, air cargo
+        * Contains digits (0 to 9) and encodes the data in the width of both bars and spaces.
+        */
+       protected function barcode_i25($code, $checksum=false) {
+               $chr['0'] = '11221';
+               $chr['1'] = '21112';
+               $chr['2'] = '12112';
+               $chr['3'] = '22111';
+               $chr['4'] = '11212';
+               $chr['5'] = '21211';
+               $chr['6'] = '12211';
+               $chr['7'] = '11122';
+               $chr['8'] = '21121';
+               $chr['9'] = '12121';
+               $chr['A'] = '11';
+               $chr['Z'] = '21';
+               if ($checksum) {
+                       // add checksum
+                       $checkdigit = $this->checksum_s25($code);
+                       $code .= $checkdigit ;
+               }
+               if((strlen($code) % 2) != 0) {
+                       // add leading zero if code-length is odd
+                       $code = '0'.$code;
+               }
+               // add start and stop codes
+               $code = 'AA'.strtolower($code).'ZA';
+                       
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $k = 0;
+               $clen = strlen($code);
+               for ($i = 0; $i < $clen; $i = ($i + 2)) {
+                       $char_bar = $code[$i];
+                       $char_space = $code[$i+1];
+                       if((!isset($chr[$char_bar])) OR (!isset($chr[$char_space]))) {
+                               // invalid character
+                               return false;
+                       }
+                       // create a bar-space sequence
+                       $seq = '';
+                       $chrlen = strlen($chr[$char_bar]);
+                       for ($s = 0; $s < $chrlen; $s++){
+                               $seq .= $chr[$char_bar][$s] . $chr[$char_space][$s];
+                       }
+                       $seqlen = strlen($seq);
+                       for ($j = 0; $j < $seqlen; ++$j) {
+                               if (($j % 2) == 0) {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $x = $seq[$j];
+                               if ($x == 2) { $w = $this->print_ratio; }
+                               else { $w = 1; }
+
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                       }
+               }
+               $bararray['checkdigit'] = $checkdigit;
+               return $bararray;
+       }
+       
+       /**
+        * C128 barcodes. 
+        * Very capable code, excellent density, high reliability; in very wide use world-wide
+        */
+       protected function barcode_c128($code, $type='B', $ean=false) {
+               $chr = array(
+                       '212222', /* 00 */
+                       '222122', /* 01 */
+                       '222221', /* 02 */
+                       '121223', /* 03 */
+                       '121322', /* 04 */
+                       '131222', /* 05 */
+                       '122213', /* 06 */
+                       '122312', /* 07 */
+                       '132212', /* 08 */
+                       '221213', /* 09 */
+                       '221312', /* 10 */
+                       '231212', /* 11 */
+                       '112232', /* 12 */
+                       '122132', /* 13 */
+                       '122231', /* 14 */
+                       '113222', /* 15 */
+                       '123122', /* 16 */
+                       '123221', /* 17 */
+                       '223211', /* 18 */
+                       '221132', /* 19 */
+                       '221231', /* 20 */
+                       '213212', /* 21 */
+                       '223112', /* 22 */
+                       '312131', /* 23 */
+                       '311222', /* 24 */
+                       '321122', /* 25 */
+                       '321221', /* 26 */
+                       '312212', /* 27 */
+                       '322112', /* 28 */
+                       '322211', /* 29 */
+                       '212123', /* 30 */
+                       '212321', /* 31 */
+                       '232121', /* 32 */
+                       '111323', /* 33 */
+                       '131123', /* 34 */
+                       '131321', /* 35 */
+                       '112313', /* 36 */
+                       '132113', /* 37 */
+                       '132311', /* 38 */
+                       '211313', /* 39 */
+                       '231113', /* 40 */
+                       '231311', /* 41 */
+                       '112133', /* 42 */
+                       '112331', /* 43 */
+                       '132131', /* 44 */
+                       '113123', /* 45 */
+                       '113321', /* 46 */
+                       '133121', /* 47 */
+                       '313121', /* 48 */
+                       '211331', /* 49 */
+                       '231131', /* 50 */
+                       '213113', /* 51 */
+                       '213311', /* 52 */
+                       '213131', /* 53 */
+                       '311123', /* 54 */
+                       '311321', /* 55 */
+                       '331121', /* 56 */
+                       '312113', /* 57 */
+                       '312311', /* 58 */
+                       '332111', /* 59 */
+                       '314111', /* 60 */
+                       '221411', /* 61 */
+                       '431111', /* 62 */
+                       '111224', /* 63 */
+                       '111422', /* 64 */
+                       '121124', /* 65 */
+                       '121421', /* 66 */
+                       '141122', /* 67 */
+                       '141221', /* 68 */
+                       '112214', /* 69 */
+                       '112412', /* 70 */
+                       '122114', /* 71 */
+                       '122411', /* 72 */
+                       '142112', /* 73 */
+                       '142211', /* 74 */
+                       '241211', /* 75 */
+                       '221114', /* 76 */
+                       '413111', /* 77 */
+                       '241112', /* 78 */
+                       '134111', /* 79 */
+                       '111242', /* 80 */
+                       '121142', /* 81 */
+                       '121241', /* 82 */
+                       '114212', /* 83 */
+                       '124112', /* 84 */
+                       '124211', /* 85 */
+                       '411212', /* 86 */
+                       '421112', /* 87 */
+                       '421211', /* 88 */
+                       '212141', /* 89 */
+                       '214121', /* 90 */
+                       '412121', /* 91 */
+                       '111143', /* 92 */
+                       '111341', /* 93 */
+                       '131141', /* 94 */
+                       '114113', /* 95 */
+                       '114311', /* 96 */
+                       '411113', /* 97 */
+                       '411311', /* 98 */
+                       '113141', /* 99 */
+                       '114131', /* 100 */
+                       '311141', /* 101 */
+                       '411131', /* 102 */
+                       '211412', /* 103 START A */
+                       '211214', /* 104 START B  */
+                       '211232', /* 105 START C  */
+                       '233111', /* STOP */
+                       '200000'  /* END */
+               );
+               $keys = '';
+               switch(strtoupper($type)) {
+                       case 'A': {
+                               $startid = 103;
+                               $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_';
+                               for ($i = 0; $i < 32; ++$i) {
+                                       $keys .= chr($i);
+                               }
+                               break;
+                       }
+                       case 'B': {
+                               $startid = 104;
+                               $keys = ' !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~'.chr(127);
+                               break;
+                       }
+                       case 'C': {
+                               $startid = 105;
+                               $keys = '';
+                               if ((strlen($code) % 2) != 0) {
+                                       // The length of barcode value must be even ($code). You must pad the number with zeros
+                                       return false;
+                               }
+                               for ($i = 0; $i <= 99; ++$i) {
+                                       $keys .= chr($i);
+                               }
+                               $new_code = '';
+                               $hclen = (strlen($code) / 2);
+                               for ($i = 0; $i < $hclen; ++$i) {
+                                       $new_code .= chr(intval($code{(2 * $i)}.$code{(2 * $i + 1)}));
+                               }
+                               $code = $new_code;
+                               break;
+                       }
+                       default: {
+                               return false;
+                       }
+               }
+
+               // calculate check character
+               $sum = $startid;
+               if ($ean) { $code = chr(102) . $code; } // Add FNC 1 - which identifies it as EAN-128
+               $clen = strlen($code);
+               for ($i = 0; $i < $clen; ++$i) {
+                       if ($ean && $i==0) { $sum += 102; }
+                       else { $sum +=  (strpos($keys, $code[$i]) * ($i+1)); }
+               }
+               $check = ($sum % 103);
+               $checkdigit = $check ;
+               // add start, check and stop codes
+               $code = chr($startid).$code.chr($check).chr(106).chr(107);
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $k = 0;
+               $len = strlen($code);
+               for ($i = 0; $i < $len; ++$i) {
+                       $ck = strpos($keys, $code[$i]);
+                       if (($i == 0) || ($ean && $i==1) | ($i > ($len-4))) {
+                               $char_num = ord($code[$i]);
+                               $seq = $chr[$char_num];
+                       } elseif(($ck >= 0) AND isset($chr[$ck])) {
+                                       $seq = $chr[$ck];
+                       } else {
+                               // invalid character
+                               return false;
+                       }
+                       for ($j = 0; $j < 6; ++$j) {
+                               if (($j % 2) == 0) {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $w = $seq[$j];
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                       }
+               }
+               $bararray['checkdigit'] = $checkdigit;
+               return $bararray;               
+       }
+       
+       /**
+        * EAN13 and UPC-A barcodes.
+        * EAN13: European Article Numbering international retail product code
+        * UPC-A: Universal product code seen on almost all retail products in the USA and Canada
+        * UPC-E: Short version of UPC symbol
+        */
+       protected function barcode_eanupc($code, $len=13) {
+               $upce = false;
+               $checkdigit = false;
+               if ($len == 6) {
+                       $len = 12; // UPC-A
+                       $upce = true; // UPC-E mode
+               }
+               $data_len = $len - 1;
+               //Padding
+               $code = str_pad($code, $data_len, '0', STR_PAD_LEFT);
+               $code_len = strlen($code);
+               // calculate check digit
+               $sum_a = 0;
+               for ($i = 1; $i < $data_len; $i+=2) {
+                       $sum_a += $code[$i];
+               }
+               if ($len > 12) {
+                       $sum_a *= 3;
+               }
+               $sum_b = 0;
+               for ($i = 0; $i < $data_len; $i+=2) {
+                       $sum_b += ($code[$i]);
+               }
+               if ($len < 13) {
+                       $sum_b *= 3;
+               }
+               $r = ($sum_a + $sum_b) % 10;
+               if($r > 0) {
+                       $r = (10 - $r);
+               }
+               if ($code_len == $data_len) {
+                       // add check digit
+                       $code .= $r;
+                       $checkdigit = $r;
+               } elseif ($r !== intval($code[$data_len])) {
+                       // wrong checkdigit
+                       return false;
+               }
+               if ($len == 12) {
+                       // UPC-A
+                       $code = '0'.$code;
+                       ++$len;
+               }
+               if ($upce) {
+                       // convert UPC-A to UPC-E
+                       $tmp = substr($code, 4, 3);
+                       $prod_code = intval(substr($code,7,5)); // product code
+                       $invalid_upce = false;
+                       if (($tmp == '000') OR ($tmp == '100') OR ($tmp == '200')) {
+                               // manufacturer code ends in 000, 100, or 200
+                               $upce_code = substr($code, 2, 2).substr($code, 9, 3).substr($code, 4, 1);
+                               if ($prod_code > 999) { $invalid_upce = true; }
+                       } else {
+                               $tmp = substr($code, 5, 2);
+                               if ($tmp == '00') {
+                                       // manufacturer code ends in 00
+                                       $upce_code = substr($code, 2, 3).substr($code, 10, 2).'3';
+                                       if ($prod_code > 99) { $invalid_upce = true; }
+                               } else {
+                                       $tmp = substr($code, 6, 1);
+                                       if ($tmp == '0') {
+                                               // manufacturer code ends in 0
+                                               $upce_code = substr($code, 2, 4).substr($code, 11, 1).'4';
+                                               if ($prod_code > 9) { $invalid_upce = true; }
+                                       } else {
+                                               // manufacturer code does not end in zero
+                                               $upce_code = substr($code, 2, 5).substr($code, 11, 1);
+                                               if ($prod_code > 9) { $invalid_upce = true; }
+                                       }
+                               }
+                       }
+                       if ($invalid_upce) { die("Error - UPC-A cannot produce a valid UPC-E barcode"); }       // Error generating a UPCE code
+               }
+               //Convert digits to bars
+               $codes = array(
+                       'A'=>array( // left odd parity
+                               '0'=>'0001101',
+                               '1'=>'0011001',
+                               '2'=>'0010011',
+                               '3'=>'0111101',
+                               '4'=>'0100011',
+                               '5'=>'0110001',
+                               '6'=>'0101111',
+                               '7'=>'0111011',
+                               '8'=>'0110111',
+                               '9'=>'0001011'),
+                       'B'=>array( // left even parity
+                               '0'=>'0100111',
+                               '1'=>'0110011',
+                               '2'=>'0011011',
+                               '3'=>'0100001',
+                               '4'=>'0011101',
+                               '5'=>'0111001',
+                               '6'=>'0000101',
+                               '7'=>'0010001',
+                               '8'=>'0001001',
+                               '9'=>'0010111'),
+                       'C'=>array( // right
+                               '0'=>'1110010',
+                               '1'=>'1100110',
+                               '2'=>'1101100',
+                               '3'=>'1000010',
+                               '4'=>'1011100',
+                               '5'=>'1001110',
+                               '6'=>'1010000',
+                               '7'=>'1000100',
+                               '8'=>'1001000',
+                               '9'=>'1110100')
+               );
+               $parities = array(
+                       '0'=>array('A','A','A','A','A','A'),
+                       '1'=>array('A','A','B','A','B','B'),
+                       '2'=>array('A','A','B','B','A','B'),
+                       '3'=>array('A','A','B','B','B','A'),
+                       '4'=>array('A','B','A','A','B','B'),
+                       '5'=>array('A','B','B','A','A','B'),
+                       '6'=>array('A','B','B','B','A','A'),
+                       '7'=>array('A','B','A','B','A','B'),
+                       '8'=>array('A','B','A','B','B','A'),
+                       '9'=>array('A','B','B','A','B','A')
+               );
+               $upce_parities = array();
+               $upce_parities[0] = array(
+                       '0'=>array('B','B','B','A','A','A'),
+                       '1'=>array('B','B','A','B','A','A'),
+                       '2'=>array('B','B','A','A','B','A'),
+                       '3'=>array('B','B','A','A','A','B'),
+                       '4'=>array('B','A','B','B','A','A'),
+                       '5'=>array('B','A','A','B','B','A'),
+                       '6'=>array('B','A','A','A','B','B'),
+                       '7'=>array('B','A','B','A','B','A'),
+                       '8'=>array('B','A','B','A','A','B'),
+                       '9'=>array('B','A','A','B','A','B')
+               );
+               $upce_parities[1] = array(
+                       '0'=>array('A','A','A','B','B','B'),
+                       '1'=>array('A','A','B','A','B','B'),
+                       '2'=>array('A','A','B','B','A','B'),
+                       '3'=>array('A','A','B','B','B','A'),
+                       '4'=>array('A','B','A','A','B','B'),
+                       '5'=>array('A','B','B','A','A','B'),
+                       '6'=>array('A','B','B','B','A','A'),
+                       '7'=>array('A','B','A','B','A','B'),
+                       '8'=>array('A','B','A','B','B','A'),
+                       '9'=>array('A','B','B','A','B','A')
+               );
+               $k = 0;
+               $seq = '101'; // left guard bar
+               if ($upce) {
+                       $bararray = array('code' => $upce_code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+                       $p = $upce_parities[$code{1}][$r];
+                       for ($i = 0; $i < 6; ++$i) {
+                               $seq .= $codes[$p[$i]][$upce_code[$i]];
+                       }
+                       $seq .= '010101'; // right guard bar
+               } else {
+                       $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+                       $half_len = ceil($len / 2);
+                       if ($len == 8) {
+                               for ($i = 0; $i < $half_len; ++$i) {
+                                       $seq .= $codes['A'][$code[$i]];
+                               }
+                       } else {
+                               $p = $parities[$code{0}];
+                               for ($i = 1; $i < $half_len; ++$i) {
+                                       $seq .= $codes[$p[$i-1]][$code[$i]];
+                               }
+                       }
+                       $seq .= '01010'; // center guard bar
+                       for ($i = $half_len; $i < $len; ++$i) {
+                               $seq .= $codes['C'][$code[$i]];
+                       }
+                       $seq .= '101'; // right guard bar
+               }
+               $clen = strlen($seq);
+               $w = 0;
+               for ($i = 0; $i < $clen; ++$i) {
+                       $w += 1;
+                       if (($i == ($clen - 1)) OR (($i < ($clen - 1)) AND ($seq[$i] != $seq[($i+1)]))) {
+                               if ($seq[$i] == '1') {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                               $w = 0;
+                       }
+               }
+               $bararray['checkdigit'] = $checkdigit;
+               return $bararray;
+       }
+       
+       /**
+        * UPC-Based Extentions
+        * 2-Digit Ext.: Used to indicate magazines and newspaper issue numbers
+        * 5-Digit Ext.: Used to mark suggested retail price of books
+        */
+       protected function barcode_eanext($code, $len=5) {
+               //Padding
+               $code = str_pad($code, $len, '0', STR_PAD_LEFT);
+               // calculate check digit
+               if ($len == 2) {
+                       $r = $code % 4;
+               } elseif ($len == 5) {
+                       $r = (3 * ($code{0} + $code{2} + $code{4})) + (9 * ($code{1} + $code{3}));
+                       $r %= 10;
+               } else {
+                       return false;
+               }
+               //Convert digits to bars
+               $codes = array(
+                       'A'=>array( // left odd parity
+                               '0'=>'0001101',
+                               '1'=>'0011001',
+                               '2'=>'0010011',
+                               '3'=>'0111101',
+                               '4'=>'0100011',
+                               '5'=>'0110001',
+                               '6'=>'0101111',
+                               '7'=>'0111011',
+                               '8'=>'0110111',
+                               '9'=>'0001011'),
+                       'B'=>array( // left even parity
+                               '0'=>'0100111',
+                               '1'=>'0110011',
+                               '2'=>'0011011',
+                               '3'=>'0100001',
+                               '4'=>'0011101',
+                               '5'=>'0111001',
+                               '6'=>'0000101',
+                               '7'=>'0010001',
+                               '8'=>'0001001',
+                               '9'=>'0010111')
+               );
+               $parities = array();
+               $parities[2] = array(
+                       '0'=>array('A','A'),
+                       '1'=>array('A','B'),
+                       '2'=>array('B','A'),
+                       '3'=>array('B','B')
+               );
+               $parities[5] = array(
+                       '0'=>array('B','B','A','A','A'),
+                       '1'=>array('B','A','B','A','A'),
+                       '2'=>array('B','A','A','B','A'),
+                       '3'=>array('B','A','A','A','B'),
+                       '4'=>array('A','B','B','A','A'),
+                       '5'=>array('A','A','B','B','A'),
+                       '6'=>array('A','A','A','B','B'),
+                       '7'=>array('A','B','A','B','A'),
+                       '8'=>array('A','B','A','A','B'),
+                       '9'=>array('A','A','B','A','B')
+               );      
+               $p = $parities[$len][$r];
+               $seq = '1011'; // left guard bar
+               $seq .= $codes[$p[0]][$code{0}];
+               for ($i = 1; $i < $len; ++$i) {
+                       $seq .= '01'; // separator
+                       $seq .= $codes[$p[$i]][$code[$i]];
+               }
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               return $this->binseq_to_array($seq, $bararray);
+       }
+       
+       /**
+        * POSTNET and PLANET barcodes.
+        * Used by U.S. Postal Service for automated mail sorting
+        */
+       protected function barcode_postnet($code, $planet=false) {
+               // bar lenght
+               if ($planet) {
+                       $barlen = Array(
+                               0 => Array(1,1,2,2,2),
+                               1 => Array(2,2,2,1,1),
+                               2 => Array(2,2,1,2,1),
+                               3 => Array(2,2,1,1,2),
+                               4 => Array(2,1,2,2,1),
+                               5 => Array(2,1,2,1,2),
+                               6 => Array(2,1,1,2,2),
+                               7 => Array(1,2,2,2,1),
+                               8 => Array(1,2,2,1,2),
+                               9 => Array(1,2,1,2,2)
+                       );
+               } else {
+                       $barlen = Array(
+                               0 => Array(2,2,1,1,1),
+                               1 => Array(1,1,1,2,2),
+                               2 => Array(1,1,2,1,2),
+                               3 => Array(1,1,2,2,1),
+                               4 => Array(1,2,1,1,2),
+                               5 => Array(1,2,1,2,1),
+                               6 => Array(1,2,2,1,1),
+                               7 => Array(2,1,1,1,2),
+                               8 => Array(2,1,1,2,1),
+                               9 => Array(2,1,2,1,1)
+                       );
+               }
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 5, 'bcode' => array());
+               $k = 0;
+               $code = str_replace('-', '', $code);
+               $code = str_replace(' ', '', $code);
+               $len = strlen($code);
+               // calculate checksum
+               $sum = 0;
+               for ($i = 0; $i < $len; ++$i) {
+                       $sum += intval($code[$i]);
+               }
+               $chkd = ($sum % 10);
+               if($chkd > 0) {
+                       $chkd = (10 - $chkd);
+               }
+               $code .= $chkd;
+               $checkdigit = $chkd;
+               $len = strlen($code);
+               // start bar
+               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0);
+               $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 5, 'p' => 0);
+               $bararray['maxw'] += (1 + $this->gapwidth );
+               for ($i = 0; $i < $len; ++$i) {
+                       for ($j = 0; $j < 5; ++$j) {
+                               $bh = $barlen[$code[$i]][$j];
+                               if ($bh == 2) {
+                                       $h = 5; 
+                                       $p = 0;
+                               }
+                               else {
+                                       $h = 2; 
+                                       $p = 3;
+                               }
+                               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
+                               $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 2, 'p' => 0);
+                               $bararray['maxw'] += (1 + $this->gapwidth );
+                       }
+               }
+               // end bar
+               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => 5, 'p' => 0);
+               $bararray['maxw'] += 1;
+               $bararray['checkdigit'] = $checkdigit;
+               return $bararray;
+       }
+       
+       /**
+        * RM4SCC - CBC - KIX
+        * RM4SCC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code) - KIX (Klant index - Customer index)
+        * RM4SCC is the name of the barcode symbology used by the Royal Mail for its Cleanmail service.
+        */
+       protected function barcode_rm4scc($code, $kix=false) {
+               $notkix = !$kix;
+               // bar mode
+               // 1 = pos 1, length 2
+               // 2 = pos 1, length 3
+               // 3 = pos 2, length 1
+               // 4 = pos 2, length 2
+               $barmode = array(
+                       '0' => array(3,3,2,2),
+                       '1' => array(3,4,1,2),
+                       '2' => array(3,4,2,1),
+                       '3' => array(4,3,1,2),
+                       '4' => array(4,3,2,1),
+                       '5' => array(4,4,1,1),
+                       '6' => array(3,1,4,2),
+                       '7' => array(3,2,3,2),
+                       '8' => array(3,2,4,1),
+                       '9' => array(4,1,3,2),
+                       'A' => array(4,1,4,1),
+                       'B' => array(4,2,3,1),
+                       'C' => array(3,1,2,4),
+                       'D' => array(3,2,1,4),
+                       'E' => array(3,2,2,3),
+                       'F' => array(4,1,1,4),
+                       'G' => array(4,1,2,3),
+                       'H' => array(4,2,1,3),
+                       'I' => array(1,3,4,2),
+                       'J' => array(1,4,3,2),
+                       'K' => array(1,4,4,1),
+                       'L' => array(2,3,3,2),
+                       'M' => array(2,3,4,1),
+                       'N' => array(2,4,3,1),
+                       'O' => array(1,3,2,4),
+                       'P' => array(1,4,1,4),
+                       'Q' => array(1,4,2,3),
+                       'R' => array(2,3,1,4),
+                       'S' => array(2,3,2,3),
+                       'T' => array(2,4,1,3),
+                       'U' => array(1,1,4,4),
+                       'V' => array(1,2,3,4),
+                       'W' => array(1,2,4,3),
+                       'X' => array(2,1,3,4),
+                       'Y' => array(2,1,4,3),
+                       'Z' => array(2,2,3,3)           
+               );
+               $code = strtoupper($code);
+               $len = strlen($code);
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array());
+               if ($notkix) {
+                       // table for checksum calculation (row,col)
+                       $checktable = array(
+                               '0' => array(1,1),
+                               '1' => array(1,2),
+                               '2' => array(1,3),
+                               '3' => array(1,4),
+                               '4' => array(1,5),
+                               '5' => array(1,0),
+                               '6' => array(2,1),
+                               '7' => array(2,2),
+                               '8' => array(2,3),
+                               '9' => array(2,4),
+                               'A' => array(2,5),
+                               'B' => array(2,0),
+                               'C' => array(3,1),
+                               'D' => array(3,2),
+                               'E' => array(3,3),
+                               'F' => array(3,4),
+                               'G' => array(3,5),
+                               'H' => array(3,0),
+                               'I' => array(4,1),
+                               'J' => array(4,2),
+                               'K' => array(4,3),
+                               'L' => array(4,4),
+                               'M' => array(4,5),
+                               'N' => array(4,0),
+                               'O' => array(5,1),
+                               'P' => array(5,2),
+                               'Q' => array(5,3),
+                               'R' => array(5,4),
+                               'S' => array(5,5),
+                               'T' => array(5,0),
+                               'U' => array(0,1),
+                               'V' => array(0,2),
+                               'W' => array(0,3),
+                               'X' => array(0,4),
+                               'Y' => array(0,5),
+                               'Z' => array(0,0)
+                       );
+                       $row = 0;
+                       $col = 0;
+                       for ($i = 0; $i < $len; ++$i) {
+                               $row += $checktable[$code[$i]][0];
+                               $col += $checktable[$code[$i]][1];
+                       }
+                       $row %= 6;
+                       $col %= 6;
+                       $chk = array_keys($checktable, array($row,$col));
+                       $code .= $chk[0];
+                       $bararray['checkdigit'] = $chk[0];
+                       ++$len;
+               }
+               $k = 0;
+               if ($notkix) {
+                       // start bar
+                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['A'] , 'p' => 0);
+                       $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => $this->daft['A'] , 'p' => 0);
+                       $bararray['maxw'] += (1 + $this->gapwidth) ;
+               }
+               for ($i = 0; $i < $len; ++$i) {
+                       for ($j = 0; $j < 4; ++$j) {
+                               switch ($barmode[$code[$i]][$j]) {
+                                       case 1: {
+                                               // ascender (A)
+                                               $p = 0;
+                                               $h = $this->daft['A'];
+                                               break;
+                                       }
+                                       case 2: {
+                                               // full bar (F)
+                                               $p = 0;
+                                               $h = $this->daft['F'];
+                                               break;
+                                       }
+                                       case 3: {
+                                               // tracker (T)
+                                               $p = ($this->daft['F'] - $this->daft['T'])/2;
+                                               $h = $this->daft['T'];
+                                               break;
+                                       }
+                                       case 4: {
+                                               // descender (D)
+                                               $p = $this->daft['F'] - $this->daft['D'];
+                                               $h = $this->daft['D'];
+                                               break;
+                                       }
+                               }
+
+                               $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
+                               $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth, 'h' => 2, 'p' => 0);
+                               $bararray['maxw'] += (1 + $this->gapwidth) ;
+                       }
+               }
+               if ($notkix) {
+                       // stop bar
+                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $this->daft['F'], 'p' => 0);
+                       $bararray['maxw'] += 1;
+               }
+               return $bararray;
+       }
+       
+       /**
+        * CODABAR barcodes.
+        * Older code often used in library systems, sometimes in blood banks
+        */
+       protected function barcode_codabar($code) {
+               $chr = array(
+                       '0' => '11111221',
+                       '1' => '11112211',
+                       '2' => '11121121',
+                       '3' => '22111111',
+                       '4' => '11211211',
+                       '5' => '21111211',
+                       '6' => '12111121',
+                       '7' => '12112111',
+                       '8' => '12211111',
+                       '9' => '21121111',
+                       '-' => '11122111',
+                       '$' => '11221111',
+                       ':' => '21112121',
+                       '/' => '21211121',
+                       '.' => '21212111',
+                       '+' => '11222221',
+                       'A' => '11221211',
+                       'B' => '12121121',
+                       'C' => '11121221',
+                       'D' => '11122211'
+               );
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $k = 0;
+               $w = 0;
+               $seq = '';
+               $code = strtoupper($code);
+               $len = strlen($code);
+               for ($i = 0; $i < $len; ++$i) {
+                       if (!isset($chr[$code[$i]])) {
+                               return false;
+                       }
+                       $seq = $chr[$code[$i]];
+                       for ($j = 0; $j < 8; ++$j) {
+                               if (($j % 2) == 0) {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $x = $seq[$j];
+                               if ($x == 2) { $w = $this->print_ratio; }
+                               else { $w = 1; }
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                       }
+               }
+               return $bararray;
+       }
+       
+       /**
+        * CODE11 barcodes.
+        * Used primarily for labeling telecommunications equipment
+        */
+       protected function barcode_code11($code) {
+               $chr = array(
+                       '0' => '111121',
+                       '1' => '211121',
+                       '2' => '121121',
+                       '3' => '221111',
+                       '4' => '112121',
+                       '5' => '212111',
+                       '6' => '122111',
+                       '7' => '111221',
+                       '8' => '211211',
+                       '9' => '211111',
+                       '-' => '112111',
+                       'S' => '112211'
+               );
+               
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => 1, 'bcode' => array());
+               $k = 0;
+               $w = 0;
+               $seq = '';
+               $len = strlen($code);
+               // calculate check digit C
+               $p = 1;
+               $check = 0;
+               for ($i = ($len - 1); $i >= 0; --$i) {
+                       $digit = $code[$i];
+                       if ($digit == '-') {
+                               $dval = 10;
+                       } else {
+                               $dval = intval($digit);
+                       }
+                       $check += ($dval * $p);
+                       ++$p;
+                       if ($p > 10) {
+                               $p = 1;
+                       }
+               }
+               $check %= 11;
+               if ($check == 10) {
+                       $check = '-';
+               } 
+               $code .= $check;
+               $checkdigit = $check;
+               if ($len > 10) {
+                       // calculate check digit K
+                       $p = 1;
+                       $check = 0;
+                       for ($i = $len; $i >= 0; --$i) {
+                               $digit = $code[$i];
+                               if ($digit == '-') {
+                                       $dval = 10;
+                               } else {
+                                       $dval = intval($digit);
+                               }
+                               $check += ($dval * $p);
+                               ++$p;
+                               if ($p > 9) {
+                                       $p = 1;
+                               }
+                       }
+                       $check %= 11;
+                       $code .= $check;
+                       $checkdigit .= $check;
+                       ++$len;
+               }
+               $code = 'S'.$code.'S';
+               $len += 3;
+               for ($i = 0; $i < $len; ++$i) {
+                       if (!isset($chr[$code[$i]])) {
+                               return false;
+                       }
+                       $seq = $chr[$code[$i]];
+                       for ($j = 0; $j < 6; ++$j) {
+                               if (($j % 2) == 0) {
+                                       $t = true; // bar
+                               } else {
+                                       $t = false; // space
+                               }
+                               $x = $seq[$j];
+                               if ($x == 2) { $w = $this->print_ratio; }
+                               else { $w = 1; }
+                               $bararray['bcode'][$k] = array('t' => $t, 'w' => $w, 'h' => 1, 'p' => 0);
+                               $bararray['maxw'] += $w;
+                               ++$k;
+                       }
+               }
+               $bararray['checkdigit'] = $checkdigit;
+               return $bararray;
+       }
+       
+       
+       /**
+        * IMB - Intelligent Mail Barcode - Onecode - USPS-B-3200
+        * (requires PHP bcmath extension) 
+        * Intelligent Mail barcode is a 65-bar code for use on mail in the United States.
+        * The fields are described as follows:<ul><li>The Barcode Identifier shall be assigned by USPS to encode the presort identification that is currently printed in human readable form on the optional endorsement line (OEL) as well as for future USPS use. This shall be two digits, with the second digit in the range of 0-4. The allowable encoding ranges shall be 00-04, 10-14, 20-24, 30-34, 40-44, 50-54, 60-64, 70-74, 80-84, and 90-94.</li><li>The Service Type Identifier shall be assigned by USPS for any combination of services requested on the mailpiece. The allowable encoding range shall be 000-999. Each 3-digit value shall correspond to a particular mail class with a particular combination of service(s). Each service program, such as OneCode Confirm and OneCode ACS, shall provide the list of Service Type Identifier values.</li><li>The Mailer or Customer Identifier shall be assigned by USPS as a unique, 6 or 9 digit number that identifies a business entity. The allowable encoding range for the 6 digit Mailer ID shall be 000000- 899999, while the allowable encoding range for the 9 digit Mailer ID shall be 900000000-999999999.</li><li>The Serial or Sequence Number shall be assigned by the mailer for uniquely identifying and tracking mailpieces. The allowable encoding range shall be 000000000-999999999 when used with a 6 digit Mailer ID and 000000-999999 when used with a 9 digit Mailer ID. e. The Delivery Point ZIP Code shall be assigned by the mailer for routing the mailpiece. This shall replace POSTNET for routing the mailpiece to its final delivery point. The length may be 0, 5, 9, or 11 digits. The allowable encoding ranges shall be no ZIP Code, 00000-99999,  000000000-999999999, and 00000000000-99999999999.</li></ul>
+        */
+       protected function barcode_imb($code) {
+               $asc_chr = array(4,0,2,6,3,5,1,9,8,7,1,2,0,6,4,8,2,9,5,3,0,1,3,7,4,6,8,9,2,0,5,1,9,4,3,8,6,7,1,2,4,3,9,5,7,8,3,0,2,1,4,0,9,1,7,0,2,4,6,3,7,1,9,5,8);
+               $dsc_chr = array(7,1,9,5,8,0,2,4,6,3,5,8,9,7,3,0,6,1,7,4,6,8,9,2,5,1,7,5,4,3,8,7,6,0,2,5,4,9,3,0,1,6,8,2,0,4,5,9,6,7,5,2,6,3,8,5,1,9,8,7,4,0,2,6,3);
+               $asc_pos = array(3,0,8,11,1,12,8,11,10,6,4,12,2,7,9,6,7,9,2,8,4,0,12,7,10,9,0,7,10,5,7,9,6,8,2,12,1,4,2,0,1,5,4,6,12,1,0,9,4,7,5,10,2,6,9,11,2,12,6,7,5,11,0,3,2);
+               $dsc_pos = array(2,10,12,5,9,1,5,4,3,9,11,5,10,1,6,3,4,1,10,0,2,11,8,6,1,12,3,8,6,4,4,11,0,6,1,9,11,5,3,7,3,10,7,11,8,2,10,3,5,8,0,3,12,11,8,4,5,1,3,0,7,12,9,8,10);
+               $code_arr = explode('-', $code);
+               $tracking_number = $code_arr[0];
+               if (isset($code_arr[1])) {
+                       $routing_code = $code_arr[1];
+               } else {
+                       $routing_code = '';
+               }
+               // Conversion of Routing Code
+               switch (strlen($routing_code)) {
+                       case 0: {
+                               $binary_code = 0;
+                               break;
+                       }
+                       case 5: {
+                               $binary_code = bcadd($routing_code, '1');
+                               break;
+                       }
+                       case 9: {
+                               $binary_code = bcadd($routing_code, '100001');
+                               break;
+                       }
+                       case 11: {
+                               $binary_code = bcadd($routing_code, '1000100001');
+                               break;
+                       }
+                       default: {
+                               return false;
+                               break;
+                       }
+               }
+               $binary_code = bcmul($binary_code, 10);
+               $binary_code = bcadd($binary_code, $tracking_number{0});
+               $binary_code = bcmul($binary_code, 5);
+               $binary_code = bcadd($binary_code, $tracking_number{1});
+               $binary_code .= substr($tracking_number, 2, 18);
+               // convert to hexadecimal
+               $binary_code = $this->dec_to_hex($binary_code);
+               // pad to get 13 bytes
+               $binary_code = str_pad($binary_code, 26, '0', STR_PAD_LEFT);
+               // convert string to array of bytes
+               $binary_code_arr = chunk_split($binary_code, 2, "\r");
+               $binary_code_arr = substr($binary_code_arr, 0, -1);
+               $binary_code_arr = explode("\r", $binary_code_arr);
+               // calculate frame check sequence
+               $fcs = $this->imb_crc11fcs($binary_code_arr);
+               // exclude first 2 bits from first byte
+               $first_byte = sprintf('%2s', dechex((hexdec($binary_code_arr[0]) << 2) >> 2));
+               $binary_code_102bit = $first_byte.substr($binary_code, 2);
+               // convert binary data to codewords
+               $codewords = array();
+               $data = $this->hex_to_dec($binary_code_102bit);
+               $codewords[0] = bcmod($data, 636) * 2;
+               $data = bcdiv($data, 636);
+               for ($i = 1; $i < 9; ++$i) {
+                       $codewords[$i] = bcmod($data, 1365);
+                       $data = bcdiv($data, 1365);
+               }
+               $codewords[9] = $data;
+               if (($fcs >> 10) == 1) {
+                       $codewords[9] += 659;
+               }
+               // generate lookup tables
+               $table2of13 = $this->imb_tables(2, 78);
+               $table5of13 = $this->imb_tables(5, 1287);
+               // convert codewords to characters
+               $characters = array();
+               $bitmask = 512;
+               foreach($codewords as $k => $val) {
+                       if ($val <= 1286) {
+                               $chrcode = $table5of13[$val];
+                       } else {
+                               $chrcode = $table2of13[($val - 1287)];
+                       }
+                       if (($fcs & $bitmask) > 0) {
+                               // bitwise invert
+                               $chrcode = ((~$chrcode) & 8191);
+                       }
+                       $characters[] = $chrcode;
+                       $bitmask /= 2;
+               }
+               $characters = array_reverse($characters);
+               // build bars
+               $k = 0;
+               $bararray = array('code' => $code, 'maxw' => 0, 'maxh' => $this->daft['F'], 'bcode' => array());
+               for ($i = 0; $i < 65; ++$i) {
+                       $asc = (($characters[$asc_chr[$i]] & pow(2, $asc_pos[$i])) > 0);
+                       $dsc = (($characters[$dsc_chr[$i]] & pow(2, $dsc_pos[$i])) > 0);
+                       if ($asc AND $dsc) {
+                               // full bar (F)
+                               $p = 0;
+                               $h = $this->daft['F'];
+                       } elseif ($asc) {
+                               // ascender (A)
+                               $p = 0;
+                               $h = $this->daft['A'];
+                       } elseif ($dsc) {
+                               // descender (D)
+                               $p = $this->daft['F'] - $this->daft['D'];
+                               $h = $this->daft['D'];
+                       } else {
+                               // tracker (T)
+                               $p = ($this->daft['F'] - $this->daft['T'])/2;
+                               $h = $this->daft['T'];
+                       }
+                       $bararray['bcode'][$k++] = array('t' => 1, 'w' => 1, 'h' => $h, 'p' => $p);
+                       // Gap
+                       $bararray['bcode'][$k++] = array('t' => 0, 'w' => $this->gapwidth , 'h' => 1, 'p' => 0);
+                       $bararray['maxw'] += (1 + $this->gapwidth );
+               }
+               unset($bararray['bcode'][($k - 1)]);
+               $bararray['maxw'] -= $this->gapwidth ;
+               return $bararray;
+       }
+       
+       /**
+        * Convert large integer number to hexadecimal representation.
+        * (requires PHP bcmath extension) 
+        */
+       public function dec_to_hex($number) {
+               $i = 0;
+               $hex = array();
+               if($number == 0) {
+                       return '00';
+               }
+               while($number > 0) {
+                       if($number == 0) {
+                               array_push($hex, '0');
+                       } else {
+                               array_push($hex, strtoupper(dechex(bcmod($number, '16'))));
+                               $number = bcdiv($number, '16', 0);
+                       }
+               }
+               $hex = array_reverse($hex);
+               return implode($hex);
+       }
+       
+       /**
+        * Convert large hexadecimal number to decimal representation (string).
+        * (requires PHP bcmath extension) 
+        */
+       public function hex_to_dec($hex) {
+               $dec = 0;
+               $bitval = 1;
+               $len = strlen($hex);
+               for($pos = ($len - 1); $pos >= 0; --$pos) {
+                       $dec = bcadd($dec, bcmul(hexdec($hex[$pos]), $bitval));
+                       $bitval = bcmul($bitval, 16);
+               }
+               return $dec;
+       }       
+       
+       /**
+        * Intelligent Mail Barcode calculation of Frame Check Sequence
+        */
+       protected function imb_crc11fcs($code_arr) {
+               $genpoly = 0x0F35; // generator polynomial
+               $fcs = 0x07FF; // Frame Check Sequence
+               // do most significant byte skipping the 2 most significant bits
+               $data = hexdec($code_arr[0]) << 5;
+               for ($bit = 2; $bit < 8; ++$bit) {
+                       if (($fcs ^ $data) & 0x400) {
+                               $fcs = ($fcs << 1) ^ $genpoly;
+                       } else {
+                               $fcs = ($fcs << 1);
+                       }
+                       $fcs &= 0x7FF;
+                       $data <<= 1;
+               }
+               // do rest of bytes
+               for ($byte = 1; $byte < 13; ++$byte) {
+                       $data = hexdec($code_arr[$byte]) << 3;
+                       for ($bit = 0; $bit < 8; ++$bit) {
+                               if (($fcs ^ $data) & 0x400) {
+                                       $fcs = ($fcs << 1) ^ $genpoly;
+                               } else {
+                                       $fcs = ($fcs << 1);
+                               }
+                               $fcs &= 0x7FF;
+                               $data <<= 1;
+                       }
+               }
+               return $fcs;            
+       }
+       
+       /**
+        * Reverse unsigned short value
+        */
+       protected function imb_reverse_us($num) {
+               $rev = 0;
+               for ($i = 0; $i < 16; ++$i) {
+                       $rev <<= 1;
+                       $rev |= ($num & 1);
+                       $num >>= 1;
+               }
+               return $rev;
+       }
+       
+       /**
+        * generate Nof13 tables used for Intelligent Mail Barcode
+        */
+       protected function imb_tables($n, $size) {
+               $table = array();
+               $lli = 0; // LUT lower index
+               $lui = $size - 1; // LUT upper index
+               for ($count = 0; $count < 8192; ++$count) {
+                       $bit_count = 0;
+                       for ($bit_index = 0; $bit_index < 13; ++$bit_index) {
+                               $bit_count += intval(($count & (1 << $bit_index)) != 0);
+                       }
+                       // if we don't have the right number of bits on, go on to the next value
+                       if ($bit_count == $n) {
+                               $reverse = ($this->imb_reverse_us($count) >> 3);
+                               // if the reverse is less than count, we have already visited this pair before
+                               if ($reverse >= $count) {
+                                       // If count is symmetric, place it at the first free slot from the end of the list.
+                                       // Otherwise, place it at the first free slot from the beginning of the list AND place $reverse ath the next free slot from the beginning of the list
+                                       if ($reverse == $count) {
+                                               $table[$lui] = $count;
+                                               --$lui;
+                                       } else {
+                                               $table[$lli] = $count;
+                                               ++$lli;
+                                               $table[$lli] = $reverse;
+                                               ++$lli;
+                                       }
+                               }
+                       }
+               }
+               return $table;
+       }
+       
+} // end of class
+
+//============================================================+
+// END OF FILE                                                 
+//============================================================+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/bmp.php b/inc/3rdparty/libraries/mpdf/classes/bmp.php
new file mode 100644 (file)
index 0000000..896ced8
--- /dev/null
@@ -0,0 +1,248 @@
+<?php
+
+class bmp {
+
+var $mpdf = null;
+
+function bmp(&$mpdf) {
+       $this->mpdf = $mpdf;
+}
+
+
+function _getBMPimage($data, $file) {
+       $info = array();
+               // Adapted from script by Valentin Schmidt
+               // http://staff.dasdeck.de/valentin/fpdf/fpdf_bmp/
+               $bfOffBits=$this->_fourbytes2int_le(substr($data,10,4));
+               $width=$this->_fourbytes2int_le(substr($data,18,4));
+               $height=$this->_fourbytes2int_le(substr($data,22,4));
+               $flip = ($height<0);
+               if ($flip) $height =-$height;
+               $biBitCount=$this->_twobytes2int_le(substr($data,28,2));
+               $biCompression=$this->_fourbytes2int_le(substr($data,30,4)); 
+               $info = array('w'=>$width, 'h'=>$height);
+               if ($biBitCount<16){
+                       $info['cs'] = 'Indexed';
+                       $info['bpc'] = $biBitCount;
+                       $palStr = substr($data,54,($bfOffBits-54));
+                       $pal = '';
+                       $cnt = strlen($palStr)/4;
+                       for ($i=0;$i<$cnt;$i++){
+                               $n = 4*$i;
+                               $pal .= $palStr[$n+2].$palStr[$n+1].$palStr[$n];
+                       }
+                       $info['pal'] = $pal;
+               }
+               else{
+                       $info['cs'] = 'DeviceRGB';
+                       $info['bpc'] = 8;
+               }
+
+               if ($this->mpdf->restrictColorSpace==1 || $this->mpdf->PDFX || $this->mpdf->restrictColorSpace==3) {
+                       if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { $this->mpdf->PDFAXwarnings[] = "Image cannot be converted to suitable colour space for PDFA or PDFX file - ".$file." - (Image replaced by 'no-image'.)"; }
+                       return array('error' => "BMP Image cannot be converted to suitable colour space - ".$file." - (Image replaced by 'no-image'.)"); 
+               }
+
+               $biXPelsPerMeter=$this->_fourbytes2int_le(substr($data,38,4));  // horizontal pixels per meter, usually set to zero
+               //$biYPelsPerMeter=$this->_fourbytes2int_le(substr($data,42,4));        // vertical pixels per meter, usually set to zero
+               $biXPelsPerMeter=round($biXPelsPerMeter/1000 *25.4);
+               //$biYPelsPerMeter=round($biYPelsPerMeter/1000 *25.4);
+               $info['set-dpi'] = $biXPelsPerMeter; 
+
+               switch ($biCompression){
+                 case 0:
+                       $str = substr($data,$bfOffBits);
+                       break;
+                 case 1: # BI_RLE8
+                       $str = $this->rle8_decode(substr($data,$bfOffBits), $width);
+                       break;
+                 case 2: # BI_RLE4
+                       $str = $this->rle4_decode(substr($data,$bfOffBits), $width);
+                       break;
+               }
+               $bmpdata = '';
+               $padCnt = (4-ceil(($width/(8/$biBitCount)))%4)%4;
+               switch ($biBitCount){
+                 case 1:
+                 case 4:
+                 case 8:
+                       $w = floor($width/(8/$biBitCount)) + ($width%(8/$biBitCount)?1:0);
+                       $w_row = $w + $padCnt;
+                       if ($flip){
+                               for ($y=0;$y<$height;$y++){
+                                       $y0 = $y*$w_row;
+                                       for ($x=0;$x<$w;$x++)
+                                               $bmpdata .= $str[$y0+$x];
+                               }
+                       }else{
+                               for ($y=$height-1;$y>=0;$y--){
+                                       $y0 = $y*$w_row;
+                                       for ($x=0;$x<$w;$x++)
+                                               $bmpdata .= $str[$y0+$x];
+                               }
+                       }
+                       break;
+
+                 case 16:
+                       $w_row = $width*2 + $padCnt;
+                       if ($flip){
+                               for ($y=0;$y<$height;$y++){
+                                       $y0 = $y*$w_row;
+                                       for ($x=0;$x<$width;$x++){
+                                               $n = (ord( $str[$y0 + 2*$x + 1])*256 +    ord( $str[$y0 + 2*$x]));
+                                               $b = ($n & 31)<<3; $g = ($n & 992)>>2; $r = ($n & 31744)>>7128;
+                                               $bmpdata .= chr($r) . chr($g) . chr($b);
+                                       }
+                               }
+                       }else{
+                               for ($y=$height-1;$y>=0;$y--){
+                                       $y0 = $y*$w_row;
+                                       for ($x=0;$x<$width;$x++){
+                                               $n = (ord( $str[$y0 + 2*$x + 1])*256 +    ord( $str[$y0 + 2*$x]));
+                                               $b = ($n & 31)<<3; $g = ($n & 992)>>2; $r = ($n & 31744)>>7;
+                                               $bmpdata .= chr($r) . chr($g) . chr($b);
+                                       }
+                               }
+                       }
+                       break;
+
+                 case 24:
+                 case 32:
+                       $byteCnt = $biBitCount/8;
+                       $w_row = $width*$byteCnt + $padCnt;
+
+                       if ($flip){
+                               for ($y=0;$y<$height;$y++){
+                                       $y0 = $y*$w_row;
+                                       for ($x=0;$x<$width;$x++){
+                                               $i = $y0 + $x*$byteCnt ; # + 1
+                                               $bmpdata .= $str[$i+2].$str[$i+1].$str[$i];
+                                       }
+                               }
+                       }else{
+                               for ($y=$height-1;$y>=0;$y--){
+                                       $y0 = $y*$w_row;
+                                       for ($x=0;$x<$width;$x++){
+                                               $i = $y0 + $x*$byteCnt ; # + 1
+                                               $bmpdata .= $str[$i+2].$str[$i+1].$str[$i];
+                                       }
+                               }
+                       }
+                       break;
+
+                 default:
+                       return array('error' => 'Error parsing BMP image - Unsupported image biBitCount'); 
+               }
+               if ($this->mpdf->compress) {
+                       $bmpdata=gzcompress($bmpdata);
+                       $info['f']='FlateDecode';
+               } 
+               $info['data']=$bmpdata;
+               $info['type']='bmp';
+               return $info;
+}
+
+function _fourbytes2int_le($s) {
+       //Read a 4-byte integer from string
+       return (ord($s[3])<<24) + (ord($s[2])<<16) + (ord($s[1])<<8) + ord($s[0]);
+}
+
+function _twobytes2int_le($s) {
+       //Read a 2-byte integer from string
+       return (ord(substr($s, 1, 1))<<8) + ord(substr($s, 0, 1));
+}
+
+
+# Decoder for RLE8 compression in windows bitmaps
+# see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp
+function rle8_decode ($str, $width){
+    $lineWidth = $width + (3 - ($width-1) % 4);
+    $out = '';
+    $cnt = strlen($str);
+    for ($i=0;$i<$cnt;$i++){
+        $o = ord($str[$i]);
+        switch ($o){
+            case 0: # ESCAPE
+                $i++;
+                switch (ord($str[$i])){
+                    case 0: # NEW LINE
+                         $padCnt = $lineWidth - strlen($out)%$lineWidth;
+                        if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line
+                        break;
+                    case 1: # END OF FILE
+                        $padCnt = $lineWidth - strlen($out)%$lineWidth;
+                        if ($padCnt<$lineWidth) $out .= str_repeat(chr(0), $padCnt); # pad line
+                         break 3;
+                    case 2: # DELTA
+                        $i += 2;
+                        break;
+                    default: # ABSOLUTE MODE
+                        $num = ord($str[$i]);
+                        for ($j=0;$j<$num;$j++)
+                            $out .= $str[++$i];
+                        if ($num % 2) $i++;
+             }
+                break;
+            default:
+                $out .= str_repeat($str[++$i], $o);
+        }
+    }
+    return $out;
+}
+
+# Decoder for RLE4 compression in windows bitmaps
+# see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_6x0u.asp
+function rle4_decode ($str, $width){
+    $w = floor($width/2) + ($width % 2);
+    $lineWidth = $w + (3 - ( ($width-1) / 2) % 4);    
+    $pixels = array();
+    $cnt = strlen($str);
+    for ($i=0;$i<$cnt;$i++){
+        $o = ord($str[$i]);
+        switch ($o){
+            case 0: # ESCAPE
+                $i++;
+                switch (ord($str[$i])){
+                    case 0: # NEW LINE                        
+                        while (count($pixels)%$lineWidth!=0)
+                            $pixels[]=0;
+                        break;
+                    case 1: # END OF FILE
+                        while (count($pixels)%$lineWidth!=0)
+                            $pixels[]=0;
+                        break 3;
+                    case 2: # DELTA
+                        $i += 2;
+                        break;
+                    default: # ABSOLUTE MODE
+                        $num = ord($str[$i]);
+                        for ($j=0;$j<$num;$j++){
+                            if ($j%2==0){
+                                $c = ord($str[++$i]);
+                              $pixels[] = ($c & 240)>>4;
+                             } else
+                              $pixels[] = $c & 15;
+                        }
+                        if ($num % 2) $i++;
+             }
+                break;
+            default:
+                $c = ord($str[++$i]);
+                for ($j=0;$j<$o;$j++)
+                    $pixels[] = ($j%2==0 ? ($c & 240)>>4 : $c & 15);
+        }
+    }
+    
+    $out = '';
+    if (count($pixels)%2) $pixels[]=0;
+    $cnt = count($pixels)/2;
+    for ($i=0;$i<$cnt;$i++)
+        $out .= chr(16*$pixels[2*$i] + $pixels[2*$i+1]);
+    return $out;
+} 
+
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/cssmgr.php b/inc/3rdparty/libraries/mpdf/classes/cssmgr.php
new file mode 100644 (file)
index 0000000..9bbbed9
--- /dev/null
@@ -0,0 +1,1566 @@
+<?php
+
+class cssmgr {
+
+var $mpdf = null;
+
+var $tablecascadeCSS;
+var $listcascadeCSS;
+var $cascadeCSS;
+var $CSS;
+var $tbCSSlvl;
+var $listCSSlvl;
+
+
+function cssmgr(&$mpdf) {
+       $this->mpdf = $mpdf;
+       $this->tablecascadeCSS = array();
+       $this->listcascadeCSS = array();
+       $this->CSS=array();
+       $this->cascadeCSS = array();
+       $this->tbCSSlvl = 0;
+       $this->listCSSlvl = 0;
+}
+
+
+function ReadDefaultCSS($CSSstr) {
+       $CSS = array();
+       $CSSstr = preg_replace('|/\*.*?\*/|s',' ',$CSSstr);
+       $CSSstr = preg_replace('/[\s\n\r\t\f]/s',' ',$CSSstr);
+       $CSSstr = preg_replace('/(<\!\-\-|\-\->)/s',' ',$CSSstr);
+       if ($CSSstr ) {
+               preg_match_all('/(.*?)\{(.*?)\}/',$CSSstr,$styles);
+               for($i=0; $i < count($styles[1]) ; $i++)  {
+                       $stylestr= trim($styles[2][$i]);
+                       $stylearr = explode(';',$stylestr);
+                       foreach($stylearr AS $sta) {
+                               if (trim($sta)) {
+                                       // Changed to allow style="background: url('http://www.bpm1.com/bg.jpg')"
+                                       list($property,$value) = explode(':',$sta,2);
+                                       $property = trim($property);
+                                       $value = preg_replace('/\s*!important/i','',$value);
+                                       $value = trim($value);
+                                       if ($property && ($value || $value==='0')) {
+                                               $classproperties[strtoupper($property)] = $value;
+                                       }
+                               }
+                       }
+                       $classproperties = $this->fixCSS($classproperties);
+                       $tagstr = strtoupper(trim($styles[1][$i]));
+                       $tagarr = explode(',',$tagstr);
+                       foreach($tagarr AS $tg) {
+                               $tags = preg_split('/\s+/',trim($tg));
+                               $level = count($tags);
+                               if ($level == 1) {              // e.g. p or .class or #id or p.class or p#id
+                                       $t = trim($tags[0]);
+                                       if ($t) {
+                                               $tag = '';
+                                               if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
+                                               if ($this->CSS[$tag] && $tag) { $CSS[$tag] = $this->array_merge_recursive_unique($CSS[$tag], $classproperties); }
+                                               else if ($tag) { $CSS[$tag] = $classproperties; }
+                                       }
+                               }
+                       }
+                       $properties = array();
+                       $values = array();
+                       $classproperties = array();
+               }
+
+       } // end of if
+       return $CSS;
+}
+
+
+
+function ReadCSS($html) {
+       preg_match_all('/<style[^>]*media=["\']([^"\'>]*)["\'].*?<\/style>/is',$html,$m);
+       for($i=0; $i<count($m[0]); $i++) {
+               if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) { 
+                       $html = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$html);
+               }
+       }
+       preg_match_all('/<link[^>]*media=["\']([^"\'>]*)["\'].*?>/is',$html,$m);
+       for($i=0; $i<count($m[0]); $i++) {
+               if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) { 
+                       $html = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$html);
+               }
+       }
+
+       // mPDF 5.5.02
+       // Remove Comment tags <!-- ... --> inside CSS as <style> in HTML document
+       // Remove Comment tags /* ...  */ inside CSS as <style> in HTML document
+       // But first, we replace upper and mixed case closing style tag with lower
+       // case so we can use str_replace later.
+       preg_replace('/<\/style>/i', '</style>', $html);
+       preg_match_all('/<style.*?>(.*?)<\/style>/si',$html,$m);
+       if (count($m[1])) { 
+               for($i=0;$i<count($m[1]);$i++) {
+                       // Remove comment tags 
+                       $sub = preg_replace('/(<\!\-\-|\-\->)/s',' ',$m[1][$i]);
+                       $sub = '>'.preg_replace('|/\*.*?\*/|s',' ',$sub).'</style>';
+                       $html = str_replace('>'.$m[1][$i].'</style>', $sub, $html);
+               }
+       }
+
+
+       $html = preg_replace('/<!--mpdf/i','',$html);
+       $html = preg_replace('/mpdf-->/i','',$html);
+       $html = preg_replace('/<\!\-\-.*?\-\->/s',' ',$html);
+
+       $match = 0; // no match for instance
+       $regexp = ''; // This helps debugging: showing what is the REAL string being processed
+       $CSSext = array(); 
+
+       //CSS inside external files
+       $regexp = '/<link[^>]*rel=["\']stylesheet["\'][^>]*href=["\']([^>"\']*)["\'].*?>/si';
+       $x = preg_match_all($regexp,$html,$cxt);
+       if ($x) { 
+               $match += $x; 
+               $CSSext = $cxt[1];
+       }
+
+       $regexp = '/<link[^>]*href=["\']([^>"\']*)["\'][^>]*?rel=["\']stylesheet["\'].*?>/si';
+       $x = preg_match_all($regexp,$html,$cxt);
+       if ($x) { 
+               $match += $x; 
+               $CSSext = array_merge($CSSext,$cxt[1]);
+       }
+
+       // look for @import stylesheets
+       //$regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css)[\'\"]{0,1}\)/si';
+       $regexp = '/@import url\([\'\"]{0,1}([^\)]*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
+       $x = preg_match_all($regexp,$html,$cxt);
+       if ($x) { 
+               $match += $x; 
+               $CSSext = array_merge($CSSext,$cxt[1]);
+       }
+
+       // look for @import without the url()
+       //$regexp = '/@import [\'\"]{0,1}([^;]*?\.css)[\'\"]{0,1}/si';
+       $regexp = '/@import [\'\"]{0,1}([^;]*?\.css(\?\S+)?)[\'\"]{0,1}/si';
+       $x = preg_match_all($regexp,$html,$cxt);
+       if ($x) { 
+               $match += $x; 
+               $CSSext = array_merge($CSSext,$cxt[1]);
+       }
+
+       $ind = 0;
+       $CSSstr = '';
+
+       if (!is_array($this->cascadeCSS)) $this->cascadeCSS = array();
+
+       while($match){
+               $path = $CSSext[$ind];
+               $this->mpdf->GetFullPath($path); 
+               $CSSextblock = $this->mpdf->_get_file($path);
+               if ($CSSextblock) {
+                       // look for embedded @import stylesheets in other stylesheets
+                       // and fix url paths (including background-images) relative to stylesheet
+                       //$regexpem = '/@import url\([\'\"]{0,1}(.*?\.css)[\'\"]{0,1}\)/si';
+                       $regexpem = '/@import url\([\'\"]{0,1}(.*?\.css(\?\S+)?)[\'\"]{0,1}\)/si';
+                       $xem = preg_match_all($regexpem,$CSSextblock,$cxtem);
+                       $cssBasePath = preg_replace('/\/[^\/]*$/','',$path) . '/';
+                       if ($xem) { 
+                               foreach($cxtem[1] AS $cxtembedded) {
+                                       // path is relative to original stlyesheet!!
+                                       $this->mpdf->GetFullPath($cxtembedded, $cssBasePath );
+                                       $match++; 
+                                       $CSSext[] = $cxtembedded;
+                               }
+                       }
+                       $regexpem = '/(background[^;]*url\s*\(\s*[\'\"]{0,1})([^\)\'\"]*)([\'\"]{0,1}\s*\))/si';
+                       $xem = preg_match_all($regexpem,$CSSextblock,$cxtem);
+                       if ($xem) { 
+                               for ($i=0;$i<count($cxtem[0]);$i++) {
+                                       // path is relative to original stlyesheet!!
+                                       $embedded = $cxtem[2][$i];
+                                       if (!preg_match('/^data:image/i', $embedded)) { // mPDF 5.5.13
+                                               $this->mpdf->GetFullPath($embedded, $cssBasePath );
+                                               $CSSextblock = preg_replace('/'.preg_quote($cxtem[0][$i],'/').'/', ($cxtem[1][$i].$embedded.$cxtem[3][$i]), $CSSextblock);
+                                       }
+                               }
+                       }
+                       $CSSstr .= ' '.$CSSextblock;
+               }
+               $match--;
+               $ind++;
+       } //end of match
+
+       $match = 0; // reset value, if needed
+       // CSS as <style> in HTML document
+       $regexp = '/<style.*?>(.*?)<\/style>/si'; 
+       $match = preg_match_all($regexp,$html,$CSSblock);
+       if ($match) {
+               $tmpCSSstr = implode(' ',$CSSblock[1]);
+               $regexpem = '/(background[^;]*url\s*\(\s*[\'\"]{0,1})([^\)\'\"]*)([\'\"]{0,1}\s*\))/si';
+               $xem = preg_match_all($regexpem,$tmpCSSstr ,$cxtem);
+               if ($xem) { 
+                  for ($i=0;$i<count($cxtem[0]);$i++) {
+                       $embedded = $cxtem[2][$i];
+                       if (!preg_match('/^data:image/i', $embedded)) { // mPDF 5.5.13
+                               $this->mpdf->GetFullPath($embedded);
+                               $tmpCSSstr = preg_replace('/'.preg_quote($cxtem[0][$i],'/').'/', ($cxtem[1][$i].$embedded.$cxtem[3][$i]), $tmpCSSstr );
+                       }
+                  }
+               }
+               $CSSstr .= ' '.$tmpCSSstr;
+       }
+       // Remove comments
+       $CSSstr = preg_replace('|/\*.*?\*/|s',' ',$CSSstr);
+       $CSSstr = preg_replace('/[\s\n\r\t\f]/s',' ',$CSSstr);
+
+       if (preg_match('/@media/',$CSSstr)) { 
+               preg_match_all('/@media(.*?)\{(([^\{\}]*\{[^\{\}]*\})+)\s*\}/is',$CSSstr,$m);
+               for($i=0; $i<count($m[0]); $i++) {
+                       if ($this->mpdf->CSSselectMedia && !preg_match('/('.trim($this->mpdf->CSSselectMedia).'|all)/i',$m[1][$i])) { 
+                               $CSSstr = preg_replace('/'.preg_quote($m[0][$i],'/').'/','',$CSSstr);
+                       }
+                       else {
+                               $CSSstr = preg_replace('/'.preg_quote($m[0][$i],'/').'/',' '.$m[2][$i].' ',$CSSstr);
+                       }
+               }
+       }
+
+       // mPDF 5.5.13
+       // Replace any background: url(data:image... with temporary image file reference
+       preg_match_all("/(url\(data:image\/(jpeg|gif|png);base64,(.*)\))/si", $CSSstr, $idata);
+       if (count($idata[0])) { 
+               for($i=0;$i<count($idata[0]);$i++) {
+                       $file = _MPDF_TEMP_PATH.'_tempCSSidata'.RAND(1,10000).'_'.$i.'.'.$idata[2][$i];
+                       //Save to local file
+                       file_put_contents($file, base64_decode($idata[3][$i]));
+                       // $this->mpdf->GetFullPath($file);     // ? is this needed - NO  mPDF 5.6.03
+                       $CSSstr = str_replace($idata[0][$i], 'url("'.$file.'")', $CSSstr);      // mPDF 5.5.17
+               }
+       }
+
+       $CSSstr = preg_replace('/(<\!\-\-|\-\->)/s',' ',$CSSstr);
+       if ($CSSstr ) {
+               preg_match_all('/(.*?)\{(.*?)\}/',$CSSstr,$styles);
+               for($i=0; $i < count($styles[1]) ; $i++)  {
+                       // SET array e.g. $classproperties['COLOR'] = '#ffffff';
+                       $stylestr= trim($styles[2][$i]);
+                       $stylearr = explode(';',$stylestr);
+                       foreach($stylearr AS $sta) {
+                               if (trim($sta)) { 
+                                       // Changed to allow style="background: url('http://www.bpm1.com/bg.jpg')"
+                                       list($property,$value) = explode(':',$sta,2);
+                                       $property = trim($property);
+                                       $value = preg_replace('/\s*!important/i','',$value);
+                                       $value = trim($value);
+                                       if ($property && ($value || $value==='0')) {
+                                       // Ignores -webkit-gradient so doesn't override -moz-
+                                               if ((strtoupper($property)=='BACKGROUND-IMAGE' || strtoupper($property)=='BACKGROUND') && preg_match('/-webkit-gradient/i',$value)) { 
+                                                       continue; 
+                                               }
+                                               $classproperties[strtoupper($property)] = $value;
+                                       }
+                               }
+                       }
+                       $classproperties = $this->fixCSS($classproperties);
+                       $tagstr = strtoupper(trim($styles[1][$i]));
+                       $tagarr = explode(',',$tagstr);
+                       $pageselectors = false; // used to turn on $this->mpdf->mirrorMargins
+                       foreach($tagarr AS $tg) {
+                               $tags = preg_split('/\s+/',trim($tg));
+                               $level = count($tags);
+                               $t = '';
+                               $t2 = '';
+                               $t3 = '';
+                               if (trim($tags[0])=='@PAGE') {
+                                       if (isset($tags[0])) { $t = trim($tags[0]); }
+                                       if (isset($tags[1])) { $t2 = trim($tags[1]); }
+                                       if (isset($tags[2])) { $t3 = trim($tags[2]); }
+                                       $tag = '';
+                                       if ($level==1) { $tag = $t; }
+                                       else if ($level==2 && preg_match('/^[:](.*)$/',$t2,$m)) { 
+                                               $tag = $t.'>>PSEUDO>>'.$m[1]; 
+                                               if ($m[1]=='LEFT' || $m[1]=='RIGHT') { $pageselectors = true; } // used to turn on $this->mpdf->mirrorMargins 
+                                       }
+                                       else if ($level==2) { $tag = $t.'>>NAMED>>'.$t2; }
+                                       else if ($level==3 && preg_match('/^[:](.*)$/',$t3,$m)) { 
+                                               $tag = $t.'>>NAMED>>'.$t2.'>>PSEUDO>>'.$m[1]; 
+                                               if ($m[1]=='LEFT' || $m[1]=='RIGHT') { $pageselectors = true; } // used to turn on $this->mpdf->mirrorMargins
+                                       }
+                                       if (isset($this->CSS[$tag]) && $tag) { $this->CSS[$tag] = $this->array_merge_recursive_unique($this->CSS[$tag], $classproperties); }
+                                       else if ($tag) { $this->CSS[$tag] = $classproperties; }
+                               }
+
+                               else if ($level == 1) {         // e.g. p or .class or #id or p.class or p#id
+                               if (isset($tags[0])) { $t = trim($tags[0]); }
+                                       if ($t) {
+                                               $tag = '';
+                                               if (preg_match('/^[.](.*)$/',$t,$m)) { $tag = 'CLASS>>'.$m[1]; }
+                                               else if (preg_match('/^[#](.*)$/',$t,$m)) { $tag = 'ID>>'.$m[1]; }
+                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[.](.*)$/',$t,$m)) { $tag = $m[1].'>>CLASS>>'.$m[2]; }
+                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')\s*:NTH-CHILD\((.*)\)$/',$t,$m)) { $tag = $m[1].'>>SELECTORNTHCHILD>>'.$m[2]; }
+                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[#](.*)$/',$t,$m)) { $tag = $m[1].'>>ID>>'.$m[2]; }
+                                               else if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
+                                               if (isset($this->CSS[$tag]) && $tag) { $this->CSS[$tag] = $this->array_merge_recursive_unique($this->CSS[$tag], $classproperties); }
+                                               else if ($tag) { $this->CSS[$tag] = $classproperties; }
+                                       }
+                               }
+                               else {
+                                       $tmp = array();
+                                       for($n=0;$n<$level;$n++) {
+                                               if (isset($tags[$n])) { $t = trim($tags[$n]); }
+                                               else { $t = ''; }
+                                               if ($t) {
+                                                       $tag = '';
+                                                       if (preg_match('/^[.](.*)$/',$t,$m)) { $tag = 'CLASS>>'.$m[1]; }
+                                                       else if (preg_match('/^[#](.*)$/',$t,$m)) { $tag = 'ID>>'.$m[1]; }
+                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[.](.*)$/',$t,$m)) { $tag = $m[1].'>>CLASS>>'.$m[2]; }
+                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')\s*:NTH-CHILD\((.*)\)$/',$t,$m)) { $tag = $m[1].'>>SELECTORNTHCHILD>>'.$m[2]; }
+                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')[#](.*)$/',$t,$m)) { $tag = $m[1].'>>ID>>'.$m[2]; }
+                                                       else if (preg_match('/^('.$this->mpdf->allowedCSStags.')$/',$t)) { $tag= $t; }
+
+                                                       if ($tag) $tmp[] = $tag;
+                                                       else { break; }
+                                               }
+                                       }
+                  
+                                       if ($tag) {
+                                               $x = &$this->cascadeCSS; 
+                                               foreach($tmp AS $tp) { $x = &$x[$tp]; }
+                                               $x = $this->array_merge_recursive_unique($x, $classproperties); 
+                                               $x['depth'] = $level;
+                                       }
+                               }
+                       }
+                       if ($pageselectors) { $this->mpdf->mirrorMargins = true; }
+                       $properties = array();
+                       $values = array();
+                       $classproperties = array();
+               }
+       } // end of if
+       //Remove CSS (tags and content), if any
+       $regexp = '/<style.*?>(.*?)<\/style>/si'; // it can be <style> or <style type="txt/css"> 
+       $html = preg_replace($regexp,'',$html);
+//print_r($this->CSS); exit;
+//print_r($this->cascadeCSS); exit;
+       return $html;
+}
+
+
+
+function readInlineCSS($html) {
+       //Fix incomplete CSS code
+       $size = strlen($html)-1;
+       if (substr($html,$size,1) != ';') $html .= ';';
+       //Make CSS[Name-of-the-class] = array(key => value)
+       $regexp = '|\\s*?(\\S+?):(.+?);|i';
+       preg_match_all( $regexp, $html, $styleinfo);
+       $properties = $styleinfo[1];
+       $values = $styleinfo[2];
+       //Array-properties and Array-values must have the SAME SIZE!
+       $classproperties = array();
+       for($i = 0; $i < count($properties) ; $i++) {
+               // Ignores -webkit-gradient so doesn't override -moz-
+               if ((strtoupper($properties[$i])=='BACKGROUND-IMAGE' || strtoupper($properties[$i])=='BACKGROUND') && preg_match('/-webkit-gradient/i',$values[$i])) { 
+                       continue; 
+               }
+               $classproperties[strtoupper($properties[$i])] = trim($values[$i]);
+       }
+       return $this->fixCSS($classproperties);
+}
+
+
+
+function _fix_borderStr($bd) {
+       preg_match_all("/\((.*?)\)/", $bd, $m);
+       if (count($m[1])) { 
+               for($i=0;$i<count($m[1]);$i++) {
+                       $sub = preg_replace("/ /", "", $m[1][$i]);
+                       $bd = preg_replace('/'.preg_quote($m[1][$i], '/').'/si', $sub, $bd); 
+               }
+       }
+
+       $prop = preg_split('/\s+/',trim($bd));
+       $w = 'medium';
+       $c = '#000000';
+       $s = 'none';
+
+       if ( count($prop) == 1 ) { 
+               // solid
+               if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $s = $prop[0]; }
+               // #000000
+               else if (is_array($this->mpdf->ConvertColor($prop[0]))) { $c = $prop[0]; }
+               // 1px 
+               else { $w = $prop[0]; }
+       }
+       else if (count($prop) == 2 ) { 
+               // 1px solid 
+               if (in_array($prop[1],$this->mpdf->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden' ) { $w = $prop[0]; $s = $prop[1]; }
+               // solid #000000 
+               else if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $s = $prop[0]; $c = $prop[1]; }
+               // 1px #000000 
+               else { $w = $prop[0]; $c = $prop[1]; }
+       }
+       else if ( count($prop) == 3 ) {
+               // Change #000000 1px solid to 1px solid #000000 (proper)
+               if (substr($prop[0],0,1) == '#') { $c = $prop[0]; $w = $prop[1]; $s = $prop[2]; }
+               // Change solid #000000 1px to 1px solid #000000 (proper)
+               else if (substr($prop[0],1,1) == '#') { $s = $prop[0]; $c = $prop[1]; $w = $prop[2]; }
+               // Change solid 1px #000000 to 1px solid #000000 (proper)
+               else if (in_array($prop[0],$this->mpdf->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { 
+                       $s = $prop[0]; $w = $prop[1]; $c = $prop[2]; 
+               }
+               else { $w = $prop[0]; $s = $prop[1]; $c = $prop[2]; }
+       }
+       else { return ''; } 
+       $s = strtolower($s);
+       return $w.' '.$s.' '.$c;
+}
+
+
+
+function fixCSS($prop) {
+       if (!is_array($prop) || (count($prop)==0)) return array(); 
+       $newprop = array(); 
+       foreach($prop AS $k => $v) {
+               if ($k != 'BACKGROUND-IMAGE' && $k != 'BACKGROUND' && $k != 'ODD-HEADER-NAME' && $k != 'EVEN-HEADER-NAME' && $k != 'ODD-FOOTER-NAME' && $k != 'EVEN-FOOTER-NAME' && $k != 'HEADER' && $k != 'FOOTER') {
+                       $v = strtolower($v);
+               }
+
+               if ($k == 'FONT') {
+                       $s = trim($v);
+                       preg_match_all('/\"(.*?)\"/',$s,$ff);
+                       if (count($ff[1])) {
+                               foreach($ff[1] AS $ffp) { 
+                                       $w = preg_split('/\s+/',$ffp);
+                                       $s = preg_replace('/\"'.$ffp.'\"/',$w[0],$s); 
+                               }
+                       }
+                       preg_match_all('/\'(.*?)\'/',$s,$ff);
+                       if (count($ff[1])) {
+                               foreach($ff[1] AS $ffp) { 
+                                       $w = preg_split('/\s+/',$ffp);
+                                       $s = preg_replace('/\''.$ffp.'\'/',$w[0],$s); 
+                               }
+                       }
+                       $s = preg_replace('/\s*,\s*/',',',$s); 
+                       $bits = preg_split('/\s+/',$s);
+                       if (count($bits)>1) {
+                               $k = 'FONT-FAMILY'; $v = $bits[(count($bits)-1)];
+                               $fs = $bits[(count($bits)-2)];
+                               if (preg_match('/(.*?)\/(.*)/',$fs, $fsp)) { 
+                                       $newprop['FONT-SIZE'] = $fsp[1];
+                                       $newprop['LINE-HEIGHT'] = $fsp[2];
+                               }
+                               else { $newprop['FONT-SIZE'] = $fs; } 
+                               if (preg_match('/(italic|oblique)/i',$s)) { $newprop['FONT-STYLE'] = 'italic'; }
+                               else { $newprop['FONT-STYLE'] = 'normal'; }
+                               if (preg_match('/bold/i',$s)) { $newprop['FONT-WEIGHT'] = 'bold'; }
+                               else { $newprop['FONT-WEIGHT'] = 'normal'; }
+                               if (preg_match('/small-caps/i',$s)) { $newprop['TEXT-TRANSFORM'] = 'uppercase'; }
+                       }
+               }
+               if ($k == 'FONT-FAMILY') {
+                       $aux_fontlist = explode(",",$v);
+                       $found = 0;
+                       foreach($aux_fontlist AS $f) {
+                               $fonttype = trim($f);
+                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
+                               $fonttype = preg_replace('/ /','',$fonttype);
+                               $v = strtolower(trim($fonttype));
+                               if (isset($this->mpdf->fonttrans[$v]) && $this->mpdf->fonttrans[$v]) { $v = $this->mpdf->fonttrans[$v]; }
+                               if ((!$this->mpdf->onlyCoreFonts && in_array($v,$this->mpdf->available_unifonts)) || 
+                                       in_array($v,array('ccourier','ctimes','chelvetica')) ||
+                                       ($this->mpdf->onlyCoreFonts && in_array($v,array('courier','times','helvetica','arial'))) || 
+                                       in_array($v, array('sjis','uhc','big5','gb'))) { 
+                                       $newprop[$k] = $v; 
+                                       $found = 1;
+                                       break;
+                               }
+                       }
+                       if (!$found) {
+                          foreach($aux_fontlist AS $f) {
+                               $fonttype = trim($f);
+                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
+                               $fonttype = preg_replace('/ /','',$fonttype);
+                               $v = strtolower(trim($fonttype));
+                               if (isset($this->mpdf->fonttrans[$v]) && $this->mpdf->fonttrans[$v]) { $v = $this->mpdf->fonttrans[$v]; }
+                               if (in_array($v,$this->mpdf->sans_fonts) || in_array($v,$this->mpdf->serif_fonts) || in_array($v,$this->mpdf->mono_fonts) ) { 
+                                       $newprop[$k] = $v;
+                                       break;
+                               }
+                          }
+                       }
+               }
+               else if ($k == 'MARGIN') {
+                       $tmp =  $this->expand24($v);
+                       $newprop['MARGIN-TOP'] = $tmp['T'];
+                       $newprop['MARGIN-RIGHT'] = $tmp['R'];
+                       $newprop['MARGIN-BOTTOM'] = $tmp['B'];
+                       $newprop['MARGIN-LEFT'] = $tmp['L'];
+               }
+/*-- BORDER-RADIUS --*/
+               else if ($k == 'BORDER-RADIUS' || $k == 'BORDER-TOP-LEFT-RADIUS' || $k == 'BORDER-TOP-RIGHT-RADIUS' || $k == 'BORDER-BOTTOM-LEFT-RADIUS' || $k == 'BORDER-BOTTOM-RIGHT-RADIUS') {
+                       $tmp =  $this->border_radius_expand($v,$k);
+                       if (isset($tmp['TL-H'])) $newprop['BORDER-TOP-LEFT-RADIUS-H'] = $tmp['TL-H'];
+                       if (isset($tmp['TL-V'])) $newprop['BORDER-TOP-LEFT-RADIUS-V'] = $tmp['TL-V'];
+                       if (isset($tmp['TR-H'])) $newprop['BORDER-TOP-RIGHT-RADIUS-H'] = $tmp['TR-H'];
+                       if (isset($tmp['TR-V'])) $newprop['BORDER-TOP-RIGHT-RADIUS-V'] = $tmp['TR-V'];
+                       if (isset($tmp['BL-H'])) $newprop['BORDER-BOTTOM-LEFT-RADIUS-H'] = $tmp['BL-H'];
+                       if (isset($tmp['BL-V'])) $newprop['BORDER-BOTTOM-LEFT-RADIUS-V'] = $tmp['BL-V'];
+                       if (isset($tmp['BR-H'])) $newprop['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $tmp['BR-H'];
+                       if (isset($tmp['BR-V'])) $newprop['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $tmp['BR-V'];
+               }
+/*-- END BORDER-RADIUS --*/
+               else if ($k == 'PADDING') {
+                       $tmp =  $this->expand24($v);
+                       $newprop['PADDING-TOP'] = $tmp['T'];
+                       $newprop['PADDING-RIGHT'] = $tmp['R'];
+                       $newprop['PADDING-BOTTOM'] = $tmp['B'];
+                       $newprop['PADDING-LEFT'] = $tmp['L'];
+               }
+               else if ($k == 'BORDER') {
+                       if ($v == '1') { $v = '1px solid #000000'; }
+                       else { $v = $this->_fix_borderStr($v); }
+                       $newprop['BORDER-TOP'] = $v;
+                       $newprop['BORDER-RIGHT'] = $v;
+                       $newprop['BORDER-BOTTOM'] = $v;
+                       $newprop['BORDER-LEFT'] = $v;
+               }
+               else if ($k == 'BORDER-TOP') {
+                       $newprop['BORDER-TOP'] = $this->_fix_borderStr($v);
+               }
+               else if ($k == 'BORDER-RIGHT') {
+                       $newprop['BORDER-RIGHT'] = $this->_fix_borderStr($v);
+               }
+               else if ($k == 'BORDER-BOTTOM') {
+                       $newprop['BORDER-BOTTOM'] = $this->_fix_borderStr($v);
+               }
+               else if ($k == 'BORDER-LEFT') {
+                       $newprop['BORDER-LEFT'] = $this->_fix_borderStr($v);
+               }
+               else if ($k == 'BORDER-STYLE') {
+                       $e = $this->expand24($v);
+                       $newprop['BORDER-TOP-STYLE'] = $e['T'];
+                       $newprop['BORDER-RIGHT-STYLE'] = $e['R'];
+                       $newprop['BORDER-BOTTOM-STYLE'] = $e['B'];
+                       $newprop['BORDER-LEFT-STYLE'] = $e['L'];
+               }
+               else if ($k == 'BORDER-WIDTH') {
+                       $e = $this->expand24($v);
+                       $newprop['BORDER-TOP-WIDTH'] = $e['T'];
+                       $newprop['BORDER-RIGHT-WIDTH'] = $e['R'];
+                       $newprop['BORDER-BOTTOM-WIDTH'] = $e['B'];
+                       $newprop['BORDER-LEFT-WIDTH'] = $e['L'];
+               }
+               else if ($k == 'BORDER-COLOR') {
+                       $e = $this->expand24($v);
+                       $newprop['BORDER-TOP-COLOR'] = $e['T'];
+                       $newprop['BORDER-RIGHT-COLOR'] = $e['R'];
+                       $newprop['BORDER-BOTTOM-COLOR'] = $e['B'];
+                       $newprop['BORDER-LEFT-COLOR'] = $e['L'];
+               }
+
+               else if ($k == 'BORDER-SPACING') {
+                       $prop = preg_split('/\s+/',trim($v));
+                       if (count($prop) == 1 ) { 
+                               $newprop['BORDER-SPACING-H'] = $prop[0];
+                               $newprop['BORDER-SPACING-V'] = $prop[0];
+                       }
+                       else if (count($prop) == 2 ) { 
+                               $newprop['BORDER-SPACING-H'] = $prop[0];
+                               $newprop['BORDER-SPACING-V'] = $prop[1];
+                       }
+               }
+               else if ($k == 'TEXT-OUTLINE') {        // mPDF 5.6.07
+                       $prop = preg_split('/\s+/',trim($v));
+                       if (trim(strtolower($v)) == 'none' ) { 
+                               $newprop['TEXT-OUTLINE'] = 'none';
+                       }
+                       else if (count($prop) == 2 ) { 
+                               $newprop['TEXT-OUTLINE-WIDTH'] = $prop[0];
+                               $newprop['TEXT-OUTLINE-COLOR'] = $prop[1];
+                       }
+                       else if (count($prop) == 3 ) { 
+                               $newprop['TEXT-OUTLINE-WIDTH'] = $prop[0];
+                               $newprop['TEXT-OUTLINE-COLOR'] = $prop[2];
+                       }
+               }
+               else if ($k == 'SIZE') {
+                       $prop = preg_split('/\s+/',trim($v));
+                       if (preg_match('/(auto|portrait|landscape)/',$prop[0])) {
+                               $newprop['SIZE'] = strtoupper($prop[0]);
+                       }
+                       else if (count($prop) == 1 ) {
+                               $newprop['SIZE']['W'] = $this->mpdf->ConvertSize($prop[0]);
+                               $newprop['SIZE']['H'] = $this->mpdf->ConvertSize($prop[0]);
+                       }
+                       else if (count($prop) == 2 ) {
+                               $newprop['SIZE']['W'] = $this->mpdf->ConvertSize($prop[0]);
+                               $newprop['SIZE']['H'] = $this->mpdf->ConvertSize($prop[1]);
+                       }
+               }
+               else if ($k == 'SHEET-SIZE') {
+                       $prop = preg_split('/\s+/',trim($v));
+                       if (count($prop) == 2 ) {
+                               $newprop['SHEET-SIZE'] = array($this->mpdf->ConvertSize($prop[0]), $this->mpdf->ConvertSize($prop[1]));
+                       }
+                       else {
+                               if(preg_match('/([0-9a-zA-Z]*)-L/i',$v,$m)) {   // e.g. A4-L = A$ landscape
+                                       $ft = $this->mpdf->_getPageFormat($m[1]);
+                                       $format = array($ft[1],$ft[0]);
+                               }
+                               else { $format = $this->mpdf->_getPageFormat($v); }
+                               if ($format) { $newprop['SHEET-SIZE'] = array($format[0]/_MPDFK, $format[1]/_MPDFK); }
+                       }
+               }
+               else if ($k == 'BACKGROUND') {
+                       $bg = $this->parseCSSbackground($v);
+                       if ($bg['c']) { $newprop['BACKGROUND-COLOR'] = $bg['c']; }
+                       else { $newprop['BACKGROUND-COLOR'] = 'transparent'; }
+/*-- BACKGROUNDS --*/
+                       if ($bg['i']) { 
+                               $newprop['BACKGROUND-IMAGE'] = $bg['i']; 
+                               if ($bg['r']) { $newprop['BACKGROUND-REPEAT'] = $bg['r']; }
+                               if ($bg['p']) { $newprop['BACKGROUND-POSITION'] = $bg['p']; }
+                       }
+                       else { $newprop['BACKGROUND-IMAGE'] = ''; }
+/*-- END BACKGROUNDS --*/
+               }
+/*-- BACKGROUNDS --*/
+               else if ($k == 'BACKGROUND-IMAGE') {
+                       if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient\(.*\)/i',$v,$m)) {
+                               $newprop['BACKGROUND-IMAGE'] = $m[0];
+                               continue;
+                       }
+                       if (preg_match('/url\([\'\"]{0,1}(.*?)[\'\"]{0,1}\)/i',$v,$m)) {
+                               $newprop['BACKGROUND-IMAGE'] = $m[1];
+                       }
+                
+                       else if (strtolower($v)=='none') { $newprop['BACKGROUND-IMAGE'] = ''; }
+
+               }
+               else if ($k == 'BACKGROUND-REPEAT') {
+                       if (preg_match('/(repeat-x|repeat-y|no-repeat|repeat)/i',$v,$m)) { 
+                               $newprop['BACKGROUND-REPEAT'] = strtolower($m[1]);
+                       }
+               }
+               else if ($k == 'BACKGROUND-POSITION') {
+                       $s = $v;
+                       $bits = preg_split('/\s+/',trim($s));
+                       // These should be Position x1 or x2
+                       if (count($bits)==1) {
+                               if (preg_match('/bottom/',$bits[0])) { $bg['p'] = '50% 100%'; }
+                               else if (preg_match('/top/',$bits[0])) { $bg['p'] = '50% 0%'; }
+                               else { $bg['p'] = $bits[0] . ' 50%'; }
+                       }
+                       else if (count($bits)==2) {
+                               // Can be either right center or center right
+                               if (preg_match('/(top|bottom)/',$bits[0]) || preg_match('/(left|right)/',$bits[1])) { 
+                                       $bg['p'] = $bits[1] . ' '.$bits[0]; 
+                               }
+                               else { 
+                                       $bg['p'] = $bits[0] . ' '.$bits[1]; 
+                               }
+                       }
+                       if ($bg['p']) {
+                               $bg['p'] = preg_replace('/(left|top)/','0%',$bg['p']);
+                               $bg['p'] = preg_replace('/(right|bottom)/','100%',$bg['p']);
+                               $bg['p'] = preg_replace('/(center)/','50%',$bg['p']);
+                               if (!preg_match('/[\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)* [\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)*/',$bg['p'])) {
+                                       $bg['p'] = false;
+                               }
+                       }
+                       if ($bg['p']) { $newprop['BACKGROUND-POSITION'] = $bg['p']; }
+               }
+/*-- END BACKGROUNDS --*/
+               else if ($k == 'IMAGE-ORIENTATION') {
+                       if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$v,$m)) {
+                               $angle = $m[1] + 0;
+                               if (strtolower($m[2])=='deg') { $angle = $angle; }
+                               else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
+                               else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
+                               while($angle < 0) { $angle += 360; }
+                               $angle = ($angle % 360);
+                               $angle /= 90;
+                               $angle = round($angle) * 90;
+                               $newprop['IMAGE-ORIENTATION'] = $angle; 
+                       }
+               }
+               // mPDF 5.6.13
+               else if ($k == 'TEXT-ALIGN') {
+                       if (preg_match('/["\'](.){1}["\']/i',$v,$m)) { 
+                               $d = array_search($m[1],$this->mpdf->decimal_align);
+                               if ($d !== false) { $newprop['TEXT-ALIGN'] = $d; }
+                               if (preg_match('/(center|left|right)/i',$v,$m)) { $newprop['TEXT-ALIGN'] .= strtoupper(substr($m[1],0,1)); }
+                               else { $newprop['TEXT-ALIGN'] .= 'R'; } // default = R
+                       }
+                       else if (preg_match('/["\'](\\\[a-fA-F0-9]{1,6})["\']/i',$v,$m)) { 
+                               $utf8 = codeHex2utf(substr($m[1],1,6));
+                               $d = array_search($utf8,$this->mpdf->decimal_align);
+                               if ($d !== false) { $newprop['TEXT-ALIGN'] = $d; }
+                               if (preg_match('/(center|left|right)/i',$v,$m)) { $newprop['TEXT-ALIGN'] .= strtoupper(substr($m[1],0,1)); }
+                               else { $newprop['TEXT-ALIGN'] .= 'R'; } // default = R
+                       }
+                       else { $newprop[$k] = $v; }
+               }
+
+               else { 
+                       $newprop[$k] = $v; 
+               }
+       }
+
+       return $newprop;
+}
+
+function setCSSboxshadow($v) {
+       $sh = array();
+       $c = preg_match_all('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl)\(.*?\)/',$v,$x);  // mPDF 5.6.05
+       for($i=0; $i<$c; $i++) {
+               $col = preg_replace('/,/','*',$x[0][$i]);
+               $v = preg_replace('/'.preg_quote($x[0][$i],'/').'/',$col,$v);
+       }
+       $ss = explode(',',$v);
+       foreach ($ss AS $s) {
+               $new = array('inset'=>false, 'blur'=>0, 'spread'=>0);
+               if (preg_match('/inset/i',$s)) { $new['inset'] = true; $s = preg_replace('/\s*inset\s*/','',$s); }
+               $p = explode(' ',trim($s));
+               if (isset($p[0])) { $new['x'] = $this->mpdf->ConvertSize(trim($p[0]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
+               if (isset($p[1])) { $new['y'] = $this->mpdf->ConvertSize(trim($p[1]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
+               if (isset($p[2])) {
+                       if (preg_match('/^\s*[\.\-0-9]/',$p[2])) {
+                               $new['blur'] = $this->mpdf->ConvertSize(trim($p[2]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); 
+                       }
+                       else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[2])); }
+                       if (isset($p[3])) {
+                               if (preg_match('/^\s*[\.\-0-9]/',$p[3])) {
+                                       $new['spread'] = $this->mpdf->ConvertSize(trim($p[3]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); 
+                               }
+                               else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[3])); }
+                               if (isset($p[4])) {
+                                       $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[4]));
+                               }
+                       }
+               }
+               if (!$new['col']) { $new['col'] = $this->mpdf->ConvertColor('#888888'); }
+               if (isset($new['y'])) { array_unshift($sh, $new); }
+       }
+       return $sh;
+}
+
+function setCSStextshadow($v) {
+       $sh = array();
+       $c = preg_match_all('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl)\(.*?\)/',$v,$x);  // mPDF 5.6.05
+       for($i=0; $i<$c; $i++) {
+               $col = preg_replace('/,/','*',$x[0][$i]);
+               $v = preg_replace('/'.preg_quote($x[0][$i],'/').'/',$col,$v);
+       }
+       $ss = explode(',',$v);
+       foreach ($ss AS $s) {
+               $new = array('blur'=>0);
+               $p = explode(' ',trim($s));
+               if (isset($p[0])) { $new['x'] = $this->mpdf->ConvertSize(trim($p[0]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
+               if (isset($p[1])) { $new['y'] = $this->mpdf->ConvertSize(trim($p[1]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); }
+               if (isset($p[2])) {
+                       if (preg_match('/^\s*[\.\-0-9]/',$p[2])) {
+                               $new['blur'] = $this->mpdf->ConvertSize(trim($p[2]),$this->mpdf->blk[$this->mpdf->blklvl-1]['inner_width'],$this->mpdf->FontSize,false); 
+                       }
+                       else { $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[2])); }
+                       if (isset($p[3])) {
+                               $new['col'] = $this->mpdf->ConvertColor(preg_replace('/\*/',',',$p[3]));
+                       }
+               }
+               if (!$new['col']) { $new['col'] = $this->mpdf->ConvertColor('#888888'); }
+               if (isset($new['y'])) { array_unshift($sh, $new); }
+       }
+       return $sh;
+}
+
+function parseCSSbackground($s) {
+       $bg = array('c'=>false, 'i'=>false, 'r'=>false, 'p'=>false, );
+/*-- BACKGROUNDS --*/
+       if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient\(.*\)/i',$s,$m)) {
+               $bg['i'] = $m[0];
+       }
+       else
+/*-- END BACKGROUNDS --*/
+       if (preg_match('/url\(/i',$s)) {
+               // If color, set and strip it off
+               // mPDF 5.6.05
+               if (preg_match('/^\s*(#[0-9a-fA-F]{3,6}|(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\(.*?\)|[a-zA-Z]{3,})\s+(url\(.*)/i',$s,$m)) {
+                       $bg['c'] = strtolower($m[1]);
+                       $s = $m[3];
+               }
+/*-- BACKGROUNDS --*/
+               if (preg_match('/url\([\'\"]{0,1}(.*?)[\'\"]{0,1}\)\s*(.*)/i',$s,$m)) {
+                       $bg['i'] = $m[1];
+                       $s = strtolower($m[2]);
+                       if (preg_match('/(repeat-x|repeat-y|no-repeat|repeat)/',$s,$m)) { 
+                               $bg['r'] = $m[1];
+                       }
+                       // Remove repeat, attachment (discarded) and also any inherit
+                       $s = preg_replace('/(repeat-x|repeat-y|no-repeat|repeat|scroll|fixed|inherit)/','',$s);
+                       $bits = preg_split('/\s+/',trim($s));
+                       // These should be Position x1 or x2
+                       if (count($bits)==1) {
+                               if (preg_match('/bottom/',$bits[0])) { $bg['p'] = '50% 100%'; }
+                               else if (preg_match('/top/',$bits[0])) { $bg['p'] = '50% 0%'; }
+                               else { $bg['p'] = $bits[0] . ' 50%'; }
+                       }
+                       else if (count($bits)==2) {
+                               // Can be either right center or center right
+                               if (preg_match('/(top|bottom)/',$bits[0]) || preg_match('/(left|right)/',$bits[1])) { 
+                                       $bg['p'] = $bits[1] . ' '.$bits[0]; 
+                               }
+                               else { 
+                                       $bg['p'] = $bits[0] . ' '.$bits[1]; 
+                               }
+                       }
+                       if ($bg['p']) {
+                               $bg['p'] = preg_replace('/(left|top)/','0%',$bg['p']);
+                               $bg['p'] = preg_replace('/(right|bottom)/','100%',$bg['p']);
+                               $bg['p'] = preg_replace('/(center)/','50%',$bg['p']);
+                               if (!preg_match('/[\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)* [\-]{0,1}\d+(in|cm|mm|pt|pc|em|ex|px|%)*/',$bg['p'])) {
+                                       $bg['p'] = false;
+                               }
+                       }
+               }
+/*-- END BACKGROUNDS --*/
+       }
+       else if (preg_match('/^\s*(#[0-9a-fA-F]{3,6}|(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\(.*?\)|[a-zA-Z]{3,})/i',$s,$m)) { $bg['c'] = strtolower($m[1]); }     // mPDF 5.6.05
+       return ($bg);
+}
+
+
+function expand24($mp) {
+       $prop = preg_split('/\s+/',trim($mp));
+       if (count($prop) == 1 ) { 
+               return array('T' => $prop[0], 'R' => $prop[0], 'B' => $prop[0], 'L'=> $prop[0]);
+       }
+       if (count($prop) == 2 ) { 
+               return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[0], 'L'=> $prop[1]);
+       }
+
+       if (count($prop) == 3 ) { 
+               return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[2], 'L'=> $prop[1]);
+       }
+       if (count($prop) == 4 ) { 
+               return array('T' => $prop[0], 'R' => $prop[1], 'B' => $prop[2], 'L'=> $prop[3]);
+       }
+       return array(); 
+}
+
+/*-- BORDER-RADIUS --*/
+function border_radius_expand($val,$k) {
+       $b = array();
+       if ($k == 'BORDER-RADIUS') {
+               $hv = explode('/',trim($val));
+               $prop = preg_split('/\s+/',trim($hv[0]));
+               if (count($prop)==1) {
+                       $b['TL-H'] = $b['TR-H'] = $b['BR-H'] = $b['BL-H'] = $prop[0];
+               }
+               else if (count($prop)==2) {
+                       $b['TL-H'] = $b['BR-H'] = $prop[0];
+                       $b['TR-H'] = $b['BL-H'] = $prop[1];
+               }
+               else if (count($prop)==3) {
+                       $b['TL-H'] = $prop[0];
+                       $b['TR-H'] = $b['BL-H'] = $prop[1];
+                       $b['BR-H'] = $prop[2];
+               }
+               else if (count($prop)==4) {
+                       $b['TL-H'] = $prop[0];
+                       $b['TR-H'] = $prop[1];
+                       $b['BR-H'] = $prop[2];
+                       $b['BL-H'] = $prop[3];
+               }
+               if (count($hv)==2) {
+                       $prop = preg_split('/\s+/',trim($hv[1]));
+                       if (count($prop)==1) {
+                               $b['TL-V'] = $b['TR-V'] = $b['BR-V'] = $b['BL-V'] = $prop[0];
+                       }
+                       else if (count($prop)==2) {
+                               $b['TL-V'] = $b['BR-V'] = $prop[0];
+                               $b['TR-V'] = $b['BL-V'] = $prop[1];
+                       }
+                       else if (count($prop)==3) {
+                               $b['TL-V'] = $prop[0];
+                               $b['TR-V'] = $b['BL-V'] = $prop[1];
+                               $b['BR-V'] = $prop[2];
+                       }
+                       else if (count($prop)==4) {
+                               $b['TL-V'] = $prop[0];
+                               $b['TR-V'] = $prop[1];
+                               $b['BR-V'] = $prop[2];
+                               $b['BL-V'] = $prop[3];
+                       }
+               }
+               else {
+                       $b['TL-V'] = $b['TL-H'];
+                       $b['TR-V'] = $b['TR-H'];
+                       $b['BL-V'] = $b['BL-H'];
+                       $b['BR-V'] = $b['BR-H'];
+               }
+               return $b;
+       }
+
+       // Parse 2
+       $h = 0;
+       $v = 0;
+       $prop = preg_split('/\s+/',trim($val));
+       if (count($prop)==1) { $h = $v = $val; }
+       else { $h = $prop[0]; $v = $prop[1]; }
+       if ($h==0 || $v==0) { $h = $v = 0; }
+       if ($k == 'BORDER-TOP-LEFT-RADIUS') {
+               $b['TL-H'] = $h;
+               $b['TL-V'] = $v;
+       }
+       else if ($k == 'BORDER-TOP-RIGHT-RADIUS') {
+               $b['TR-H'] = $h;
+               $b['TR-V'] = $v;
+       }
+       else if ($k == 'BORDER-BOTTOM-LEFT-RADIUS') {
+               $b['BL-H'] = $h;
+               $b['BL-V'] = $v;
+       }
+       else if ($k == 'BORDER-BOTTOM-RIGHT-RADIUS') {
+               $b['BR-H'] = $h;
+               $b['BR-V'] = $v;
+       }
+       return $b;
+
+}
+/*-- END BORDER-RADIUS --*/
+
+function _mergeCSS($p, &$t) {
+       // Save Cascading CSS e.g. "div.topic p" at this block level
+       if (isset($p) && $p) {
+               if ($t) { 
+                       $t = $this->array_merge_recursive_unique($t, $p);
+               }
+               else { $t = $p; }
+       }
+}
+
+// for CSS handling
+function array_merge_recursive_unique($array1, $array2) {
+    $arrays = func_get_args();
+    $narrays = count($arrays);
+    $ret = $arrays[0];
+    for ($i = 1; $i < $narrays; $i ++) {
+        foreach ($arrays[$i] as $key => $value) {
+            if (((string) $key) === ((string) intval($key))) { // integer or string as integer key - append
+                $ret[] = $value;
+            }
+            else { // string key - merge
+                if (is_array($value) && isset($ret[$key])) {
+                    $ret[$key] = $this->array_merge_recursive_unique($ret[$key], $value);
+                }
+                else {
+                    $ret[$key] = $value;
+                }
+            }
+        }   
+    }
+    return $ret;
+}
+
+
+
+function _mergeFullCSS($p, &$t, $tag, $classes, $id) {
+               $this->_mergeCSS($p[$tag], $t);
+               // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
+               foreach($classes AS $class) {
+                 $this->_mergeCSS($p['CLASS>>'.$class], $t);
+               }
+               // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd)  td:nth-child(2n+1)
+               if ($tag=='TR' && isset($p) && $p)  {
+                       foreach($p AS $k=>$val) {
+                               if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
+                                       $select = false;
+                                       if ($tag=='TR')  {
+                                               $row = $this->mpdf->row;
+                                               $thnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) : 0);
+                                               $tfnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) : 0);
+                                               if ($this->mpdf->tabletfoot) { $row -= $thnr; }
+                                               else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
+                                               if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
+                                               else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
+                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
+                                                       if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
+                                               }
+                                       }
+                                       else if ($tag=='TD' || $tag=='TH')  {
+                                               if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
+                                               else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
+                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
+                                                       if ((($this->mpdf->col + 1) % $a[1]) == $a[2]) { $select = true; }
+                                               }
+                                       }
+                                       if ($select) {
+                                               $this->_mergeCSS($p[$tag.'>>SELECTORNTHCHILD>>'.$m[1]], $t);
+                                       }
+                               }
+                       }
+               }
+               // STYLESHEET CLASS e.g. #smallone{}  #redletter{}
+               if (isset($id) && $id) {
+                 $this->_mergeCSS($p['ID>>'.$id], $t);
+               }
+               // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
+               foreach($classes AS $class) {
+                 $this->_mergeCSS($p[$tag.'>>CLASS>>'.$class], $t);
+               }
+               // STYLESHEET CLASS e.g. #smallone{}  #redletter{}
+               if (isset($id)) {
+                 $this->_mergeCSS($p[$tag.'>>ID>>'.$id], $t);
+               }
+}
+
+function setBorderDominance($prop, $val) {
+       if (isset($prop['BORDER-LEFT']) && $prop['BORDER-LEFT']) { $this->cell_border_dominance_L = $val; }
+       if (isset($prop['BORDER-RIGHT']) && $prop['BORDER-RIGHT']) { $this->cell_border_dominance_R = $val; }
+       if (isset($prop['BORDER-TOP']) && $prop['BORDER-TOP']) { $this->cell_border_dominance_T = $val; }
+       if (isset($prop['BORDER-BOTTOM']) && $prop['BORDER-BOTTOM']) { $this->cell_border_dominance_B = $val; }
+}
+
+function _set_mergedCSS(&$m, &$p, $d=true, $bd=false) {
+       if (isset($m)) {
+               if ((isset($m['depth']) && $m['depth']>1) || $d==false) {       // include check for 'depth'
+                       if ($bd) { $this->setBorderDominance($m, $bd); }        // *TABLES*
+                       if (is_array($m)) { 
+                               $p = array_merge($p,$m); 
+                               $this->_mergeBorders($p,$m);
+                       }
+               }
+       }
+}
+
+
+function _mergeBorders(&$b, &$a) {     // Merges $a['BORDER-TOP-STYLE'] to $b['BORDER-TOP'] etc.
+  foreach(array('TOP','RIGHT','BOTTOM','LEFT') AS $side) {
+    foreach(array('STYLE','WIDTH','COLOR') AS $el) {
+       if (isset($a['BORDER-'.$side.'-'.$el])) {       // e.g. $b['BORDER-TOP-STYLE']
+               $s = trim($a['BORDER-'.$side.'-'.$el]);
+               if (isset($b['BORDER-'.$side])) {       // e.g. $b['BORDER-TOP']
+                       $p = trim($b['BORDER-'.$side]);
+               }
+               else { $p = ''; }
+               if ($el=='STYLE') {
+                       if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', '\\1 '.$s.' \\3', $p); }
+                       else { $b['BORDER-'.$side] = '0px '.$s.' #000000'; }
+               }
+               else if ($el=='WIDTH') {
+                       if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', $s.' \\2 \\3', $p); }
+                       else { $b['BORDER-'.$side] = $s.' none #000000'; }
+               }
+               else if ($el=='COLOR') {
+                       if ($p) { $b['BORDER-'.$side] = preg_replace('/(\S+)\s+(\S+)\s+(\S+)/', '\\1 \\2 '.$s, $p); }
+                       else { $b['BORDER-'.$side] = '0px none '.$s; }
+               }
+       }
+    }
+  }
+}
+
+
+function MergeCSS($inherit,$tag,$attr) {
+       $p = array();
+       $zp = array(); 
+
+       $classes = array();
+       if (isset($attr['CLASS'])) {
+               $classes = preg_split('/\s+/',$attr['CLASS']);
+       }
+       if (!isset($attr['ID'])) { $attr['ID']=''; }
+       //===============================================
+/*-- TABLES --*/
+       // Set Inherited properties
+       if ($inherit == 'TOPTABLE') {   // $tag = TABLE
+               //===============================================
+               // Save Cascading CSS e.g. "div.topic p" at this block level
+
+               if (isset($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'])) {
+                       $this->tablecascadeCSS[0] = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
+               }
+               else {
+                       $this->tablecascadeCSS[0] = $this->cascadeCSS;
+               }
+       }
+       //===============================================
+       // Set Inherited properties
+       if ($inherit == 'TOPTABLE' || $inherit == 'TABLE') {
+               //Cascade everything from last level that is not an actual property, or defined by current tag/attributes
+               if (isset($this->tablecascadeCSS[$this->tbCSSlvl-1]) && is_array($this->tablecascadeCSS[$this->tbCSSlvl-1])) {
+                  foreach($this->tablecascadeCSS[$this->tbCSSlvl-1] AS $k=>$v) {
+                               $this->tablecascadeCSS[$this->tbCSSlvl][$k] = $v;
+                  }
+               }
+               $this->_mergeFullCSS($this->cascadeCSS, $this->tablecascadeCSS[$this->tbCSSlvl], $tag, $classes, $attr['ID']);
+               //===============================================
+               // Cascading forward CSS e.g. "table.topic td" for this table in $this->tablecascadeCSS 
+               //===============================================
+               // STYLESHEET TAG e.g. table
+               $this->_mergeFullCSS($this->tablecascadeCSS[$this->tbCSSlvl-1], $this->tablecascadeCSS[$this->tbCSSlvl], $tag, $classes, $attr['ID']);
+               //===============================================
+       }
+/*-- END TABLES --*/
+       //===============================================
+/*-- LISTS --*/
+       // Set Inherited properties
+       if ($inherit == 'TOPLIST') {    // $tag = UL,OL
+               //===============================================
+               // Save Cascading CSS e.g. "div.topic p" at this block level
+               if (isset($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'])) {
+                       $this->listcascadeCSS[0] = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
+               }
+               else {
+                       $this->listcascadeCSS[0] = $this->cascadeCSS;
+               }
+       }
+       //===============================================
+       // Set Inherited properties
+       if ($inherit == 'TOPLIST' || $inherit == 'LIST') {
+               //Cascade everything from last level that is not an actual property, or defined by current tag/attributes
+               if (isset($this->listcascadeCSS[$this->listCSSlvl-1]) && is_array($this->listcascadeCSS[$this->listCSSlvl-1])) {
+                  foreach($this->listcascadeCSS[$this->listCSSlvl-1] AS $k=>$v) {
+                               $this->listcascadeCSS[$this->listCSSlvl][$k] = $v;
+                  }
+               }
+               $this->_mergeFullCSS($this->cascadeCSS, $this->listcascadeCSS[$this->listCSSlvl], $tag, $classes, $attr['ID']);
+               //===============================================
+               // Cascading forward CSS e.g. "table.topic td" for this list in $this->listcascadeCSS 
+               //===============================================
+               // STYLESHEET TAG e.g. table
+               $this->_mergeFullCSS($this->listcascadeCSS[$this->listCSSlvl-1], $this->listcascadeCSS[$this->listCSSlvl], $tag, $classes, $attr['ID']);
+               //===============================================
+       }
+/*-- END LISTS --*/
+       //===============================================
+       // Set Inherited properties
+       if ($inherit == 'BLOCK') {
+               if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']) && is_array($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'])) {
+                  foreach($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'] AS $k=>$v) {
+                               $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$k] = $v;
+
+                  }
+               }
+
+               //===============================================
+               // Save Cascading CSS e.g. "div.topic p" at this block level
+               $this->_mergeFullCSS($this->cascadeCSS, $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'], $tag, $classes, $attr['ID']);
+               //===============================================
+               // Cascading forward CSS
+               //===============================================
+               $this->_mergeFullCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'], $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'], $tag, $classes, $attr['ID']);
+               //===============================================
+                 // Block properties
+                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['margin_collapse']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['margin_collapse']) { $p['MARGIN-COLLAPSE'] = 'COLLAPSE'; }  // custom tag, but follows CSS principle that border-collapse is inherited
+                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['line_height']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['line_height']) { $p['LINE-HEIGHT'] = $this->mpdf->blk[$this->mpdf->blklvl-1]['line_height']; }
+
+                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['direction']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['direction']) { $p['DIRECTION'] = $this->mpdf->blk[$this->mpdf->blklvl-1]['direction']; }
+
+                 if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['align']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['align']) { 
+                       if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'L') { $p['TEXT-ALIGN'] = 'left'; } 
+                       else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'J') { $p['TEXT-ALIGN'] = 'justify'; } 
+                       else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'R') { $p['TEXT-ALIGN'] = 'right'; } 
+                       else if ($this->mpdf->blk[$this->mpdf->blklvl-1]['align'] == 'C') { $p['TEXT-ALIGN'] = 'center'; } 
+                 }
+                 if ($this->mpdf->ColActive || $this->mpdf->keep_block_together) { 
+                       if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['bgcolor']) && $this->mpdf->blk[$this->mpdf->blklvl-1]['bgcolor']) { // Doesn't officially inherit, but default value is transparent (?=inherited)
+                               $cor = $this->mpdf->blk[$this->mpdf->blklvl-1]['bgcolorarray' ];
+                               $p['BACKGROUND-COLOR'] = $this->mpdf->_colAtoString($cor);
+                       }
+                 }
+
+               if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent']) && ($this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent'] || $this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent']===0)) { $p['TEXT-INDENT'] = $this->mpdf->blk[$this->mpdf->blklvl-1]['text_indent']; }
+               if (isset($this->mpdf->blk[$this->mpdf->blklvl-1]['InlineProperties'])) {
+                       $biilp = $this->mpdf->blk[$this->mpdf->blklvl-1]['InlineProperties'];
+               }
+               else { $biilp = null; }
+               if (isset($biilp[ 'family' ]) && $biilp[ 'family' ]) { $p['FONT-FAMILY'] = $biilp[ 'family' ]; }
+               if (isset($biilp[ 'I' ]) && $biilp[ 'I' ]) { $p['FONT-STYLE'] = 'italic'; }
+               if (isset($biilp[ 'sizePt' ]) && $biilp[ 'sizePt' ]) { $p['FONT-SIZE'] = $biilp[ 'sizePt' ] . 'pt'; }
+               if (isset($biilp[ 'B' ]) && $biilp[ 'B' ]) { $p['FONT-WEIGHT'] = 'bold'; }
+               if (isset($biilp[ 'colorarray' ]) && $biilp[ 'colorarray' ]) { 
+                       $cor = $biilp[ 'colorarray' ];
+                       $p['COLOR'] = $this->mpdf->_colAtoString($cor);
+               }
+               if (isset($biilp[ 'fontkerning' ])) {
+                       if ($biilp[ 'fontkerning' ]) { $p['FONT-KERNING'] = 'normal'; }
+                       else { $p['FONT-KERNING'] = 'none'; }
+               }
+               if (isset($biilp[ 'lSpacingCSS' ]) && $biilp[ 'lSpacingCSS' ]) { $p['LETTER-SPACING'] = $biilp[ 'lSpacingCSS' ]; }
+               if (isset($biilp[ 'wSpacingCSS' ]) && $biilp[ 'wSpacingCSS' ]) { $p['WORD-SPACING'] = $biilp[ 'wSpacingCSS' ]; }        
+               if (isset($biilp[ 'toupper' ]) && $biilp[ 'toupper' ]) { $p['TEXT-TRANSFORM'] = 'uppercase'; }
+               else if (isset($biilp[ 'tolower' ]) && $biilp[ 'tolower' ]) { $p['TEXT-TRANSFORM'] = 'lowercase'; }
+               else if (isset($biilp[ 'capitalize' ]) && $biilp[ 'capitalize' ]) { $p['TEXT-TRANSFORM'] = 'capitalize'; }
+                       // CSS says text-decoration is not inherited, but IE7 does?? 
+               if (isset($biilp[ 'underline' ]) && $biilp[ 'underline' ]) { $p['TEXT-DECORATION'] = 'underline'; }
+               if (isset($biilp[ 'smCaps' ]) && $biilp[ 'smCaps' ]) { $p['FONT-VARIANT'] = 'small-caps'; }
+
+       }
+       //===============================================
+       //===============================================
+/*-- LISTS --*/
+       // Set Inherited properties
+       if ($inherit == 'TOPLIST') {
+               if ($this->listCSSlvl == 1) {
+                   $bilp = $this->mpdf->blk[$this->mpdf->blklvl]['InlineProperties'];
+                   if (isset($bilp[ 'family' ]) && $bilp[ 'family' ]) { $p['FONT-FAMILY'] = $bilp[ 'family' ]; }
+                   if (isset($bilp[ 'I' ]) && $bilp[ 'I' ]) { $p['FONT-STYLE'] = 'italic'; }
+                   if (isset($bilp[ 'sizePt' ]) && $bilp[ 'sizePt' ]) { $p['FONT-SIZE'] = $bilp[ 'sizePt' ] . 'pt'; }
+                   if (isset($bilp[ 'B' ]) && $bilp[ 'B' ]) { $p['FONT-WEIGHT'] = 'bold'; }
+                   if (isset($bilp[ 'colorarray' ]) && $bilp[ 'colorarray' ]) { 
+                       $cor = $bilp[ 'colorarray' ];
+                       $p['COLOR'] = $this->mpdf->_colAtoString($cor);
+                   }
+                   if (isset($bilp[ 'toupper' ]) && $bilp[ 'toupper' ]) { $p['TEXT-TRANSFORM'] = 'uppercase'; }
+                   else if (isset($bilp[ 'tolower' ]) && $bilp[ 'tolower' ]) { $p['TEXT-TRANSFORM'] = 'lowercase'; }
+                   else if (isset($bilp[ 'capitalize' ]) && $bilp[ 'capitalize' ]) { $p['TEXT-TRANSFORM'] = 'capitalize'; }
+                   if (isset($bilp[ 'fontkerning' ])) {
+                       if ($bilp[ 'fontkerning' ]) { $p['FONT-KERNING'] = 'normal'; }
+                       else { $p['FONT-KERNING'] = 'none'; }
+                   }
+                   if (isset($bilp[ 'lSpacingCSS' ]) && $bilp[ 'lSpacingCSS' ]) { $p['LETTER-SPACING'] = $bilp[ 'lSpacingCSS' ]; }
+                   if (isset($bilp[ 'wSpacingCSS' ]) && $bilp[ 'wSpacingCSS' ]) { $p['WORD-SPACING'] = $bilp[ 'wSpacingCSS' ]; }
+                       // CSS says text-decoration is not inherited, but IE7 does??
+                   if (isset($bilp[ 'underline' ]) && $bilp[ 'underline' ]) { $p['TEXT-DECORATION'] = 'underline'; }
+                   if (isset($bilp[ 'smCaps' ]) && $bilp[ 'smCaps' ]) { $p['FONT-VARIANT'] = 'small-caps'; }
+                   if ($tag=='LI') {
+                       // Note to self - this should never work, as TOPLIST is not called when LI (see code removed in v5.3)
+                       $this->mpdf->Error("If you see this message, please report this as a bug to the mPDF Forum.");
+                   }
+               }
+       }
+/*-- END LISTS --*/
+       //===============================================
+       //===============================================
+       // DEFAULT for this TAG set in DefaultCSS
+       if (isset($this->mpdf->defaultCSS[$tag])) { 
+                       $zp = $this->fixCSS($this->mpdf->defaultCSS[$tag]);
+                       if (is_array($zp)) {    // Default overwrites Inherited
+                               $p = array_merge($p,$zp);       // !! Note other way round !!
+                               $this->_mergeBorders($p,$zp);
+                       }
+       }
+       //===============================================
+/*-- TABLES --*/
+       // cellPadding overwrites TD/TH default but not specific CSS set on cell
+       if (($tag=='TD' || $tag=='TH') && isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding']) && ($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'] || $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding']===0)) { 
+               $p['PADDING-LEFT'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
+               $p['PADDING-RIGHT'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
+               $p['PADDING-TOP'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
+               $p['PADDING-BOTTOM'] = $this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['cell_padding'];
+       }
+/*-- END TABLES --*/
+       //===============================================
+       // STYLESHEET TAG e.g. h1  p  div  table
+       if (isset($this->CSS[$tag]) && $this->CSS[$tag]) { 
+                       $zp = $this->CSS[$tag];
+                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
+                       if (is_array($zp)) { 
+                               $p = array_merge($p,$zp); 
+                               $this->_mergeBorders($p,$zp);
+                       }
+       }
+       //===============================================
+       // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
+       foreach($classes AS $class) {
+                       $zp = array();
+                       if (isset($this->CSS['CLASS>>'.$class]) && $this->CSS['CLASS>>'.$class]) { $zp = $this->CSS['CLASS>>'.$class]; }
+                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
+                       if (is_array($zp)) { 
+                               $p = array_merge($p,$zp); 
+                               $this->_mergeBorders($p,$zp);
+                       }
+       }
+       //===============================================
+/*-- TABLES --*/
+       // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd)  td:nth-child(2n+1)
+       if ($tag=='TR' || $tag=='TD' || $tag=='TH')  {
+               foreach($this->CSS AS $k=>$val) {
+                       if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
+                               $select = false;
+                               if ($tag=='TR')  {
+                                       $row = $this->mpdf->row;
+                                       $thnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) : 0);
+                                       $tfnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) : 0);
+                                       if ($this->mpdf->tabletfoot) { $row -= $thnr; }
+                                       else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
+                                       if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
+                                       else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
+                                       else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
+                                               if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
+                                       }
+                               }
+                               else  if ($tag=='TD' || $tag=='TH')  {
+                                       if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
+                                       else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
+                                       else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
+                                               if ((($this->mpdf->col+1) % $a[1]) == $a[2]) { $select = true; }
+                                       }
+                               }
+                               if ($select) {
+                                       $zp = $this->CSS[$tag.'>>SELECTORNTHCHILD>>'.$m[1]];
+                                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }
+                                       if (is_array($zp)) { 
+                                               $p = array_merge($p,$zp); 
+                                               $this->_mergeBorders($p,$zp);
+                                       }
+                               }
+                       }
+               }
+       }
+/*-- END TABLES --*/
+       //===============================================
+       // STYLESHEET ID e.g. #smallone{}  #redletter{}
+       if (isset($attr['ID']) && isset($this->CSS['ID>>'.$attr['ID']]) && $this->CSS['ID>>'.$attr['ID']]) {
+                       $zp = $this->CSS['ID>>'.$attr['ID']];
+                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
+                       if (is_array($zp)) { 
+                               $p = array_merge($p,$zp); 
+                               $this->_mergeBorders($p,$zp);
+                       }
+       }
+       //===============================================
+       // STYLESHEET CLASS e.g. p.smallone{}  div.redletter{}
+       foreach($classes AS $class) {
+                       $zp = array();
+                       if (isset($this->CSS[$tag.'>>CLASS>>'.$class]) && $this->CSS[$tag.'>>CLASS>>'.$class]) { $zp = $this->CSS[$tag.'>>CLASS>>'.$class]; }
+                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
+                       if (is_array($zp)) { 
+                               $p = array_merge($p,$zp); 
+                               $this->_mergeBorders($p,$zp);
+                       }
+       }
+       //===============================================
+       // STYLESHEET CLASS e.g. p#smallone{}  div#redletter{}
+       if (isset($attr['ID']) && isset($this->CSS[$tag.'>>ID>>'.$attr['ID']]) && $this->CSS[$tag.'>>ID>>'.$attr['ID']]) {
+                       $zp = $this->CSS[$tag.'>>ID>>'.$attr['ID']];
+                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
+                       if (is_array($zp)) { 
+                               $p = array_merge($p,$zp); 
+                               $this->_mergeBorders($p,$zp);
+                       }
+       }
+       //===============================================
+       // Cascaded e.g. div.class p only works for block level
+       if ($inherit == 'BLOCK') {
+               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag], $p);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']['CLASS>>'.$class], $p);
+               }
+               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS']['ID>>'.$attr['ID']], $p);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag.'>>CLASS>>'.$class], $p);
+               }
+               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl-1]['cascadeCSS'][$tag.'>>ID>>'.$attr['ID']], $p);
+       }
+       else if ($inherit == 'INLINE') {
+               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag], $p);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS']['CLASS>>'.$class], $p);
+               }
+               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS']['ID>>'.$attr['ID']], $p);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag.'>>CLASS>>'.$class], $p);
+               }
+               $this->_set_mergedCSS($this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'][$tag.'>>ID>>'.$attr['ID']], $p);
+       }
+/*-- TABLES --*/
+       else if ($inherit == 'TOPTABLE' || $inherit == 'TABLE') { // NB looks at $this->tablecascadeCSS-1 for cascading CSS
+               // false, 9 = don't check for 'depth' and do set border dominance
+               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag], $p, false, 9);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1]['CLASS>>'.$class], $p, false, 9);
+               }
+               // STYLESHEET nth-child SELECTOR e.g. tr:nth-child(odd)  td:nth-child(2n+1)
+               if ($tag=='TR' || $tag=='TD' || $tag=='TH')  {
+                       foreach($this->tablecascadeCSS[$this->tbCSSlvl-1] AS $k=>$val) {
+                               if (preg_match('/'.$tag.'>>SELECTORNTHCHILD>>(.*)/',$k, $m)) {
+                                       $select = false;
+                                       if ($tag=='TR')  {
+                                               $row = $this->mpdf->row;
+                                               $thnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_thead']) : 0);
+                                               $tfnr = (isset($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) ? count($this->mpdf->table[$this->mpdf->tableLevel][$this->mpdf->tbctr[$this->mpdf->tableLevel]]['is_tfoot']) : 0);
+                                               if ($this->mpdf->tabletfoot) { $row -= $thnr; }
+                                               else if (!$this->mpdf->tablethead) { $row -= ($thnr + $tfnr); }
+                                               if ($m[1]=='ODD' && ($row % 2) == 0) { $select = true; }
+                                               else if ($m[1]=='EVEN' && ($row % 2) == 1) { $select = true; }
+                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
+                                                       if ((($row + 1) % $a[1]) == $a[2]) { $select = true; }
+                                               }
+                                       }
+                                       else if ($tag=='TD' || $tag=='TH')  {
+                                               if ($m[1]=='ODD' && ($this->mpdf->col % 2) == 0) { $select = true; }
+                                               else if ($m[1]=='EVEN' && ($this->mpdf->col % 2) == 1) { $select = true; }
+                                               else if (preg_match('/(\d+)N\+(\d+)/',$m[1],$a)) {
+                                                       if ((($this->mpdf->col + 1) % $a[1]) == $a[2]) { $select = true; }
+                                               }
+                                       }
+                                       if ($select) {
+                                               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>SELECTORNTHCHILD>>'.$m[1]], $p, false, 9);
+                                       }
+                               }
+                       }
+               }
+               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1]['ID>>'.$attr['ID']], $p, false, 9);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>CLASS>>'.$class], $p, false, 9);
+               }
+               $this->_set_mergedCSS($this->tablecascadeCSS[$this->tbCSSlvl-1][$tag.'>>ID>>'.$attr['ID']], $p, false, 9);
+       }
+/*-- END TABLES --*/
+       //===============================================
+/*-- LISTS --*/
+       else if ($inherit == 'TOPLIST' || $inherit == 'LIST') { // NB looks at $this->listcascadeCSS-1 for cascading CSS
+               // false = don't check for 'depth' 
+               $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag], $p, false);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1]['CLASS>>'.$class], $p, false);
+               }
+               $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1]['ID>>'.$attr['ID']], $p, false);
+               foreach($classes AS $class) {
+                       $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag.'>>CLASS>>'.$class], $p, false);
+               }
+               $this->_set_mergedCSS($this->listcascadeCSS[$this->listCSSlvl-1][$tag.'>>ID>>'.$attr['ID']], $p, false);
+       }
+/*-- END LISTS --*/
+       //===============================================
+       //===============================================
+       // INLINE STYLE e.g. style="CSS:property"
+       if (isset($attr['STYLE'])) {
+                       $zp = $this->readInlineCSS($attr['STYLE']);
+                       if ($tag=='TD' || $tag=='TH')  { $this->setBorderDominance($zp, 9); }   // *TABLES*     // *TABLES-ADVANCED-BORDERS*
+                       if (is_array($zp)) { 
+                               $p = array_merge($p,$zp); 
+                               $this->_mergeBorders($p,$zp);
+                       }
+       }
+       //===============================================
+       //===============================================
+       // INLINE ATTRIBUTES e.g. .. ALIGN="CENTER">
+       if (isset($attr['LANG']) and $attr['LANG']!='') {
+                       $p['LANG'] = $attr['LANG'];
+       }
+       if (isset($attr['COLOR']) and $attr['COLOR']!='') {
+                       $p['COLOR'] = $attr['COLOR'];
+       }
+       if ($tag != 'INPUT') {
+               if (isset($attr['WIDTH']) and $attr['WIDTH']!='') {
+                       $p['WIDTH'] = $attr['WIDTH'];
+               }
+               if (isset($attr['HEIGHT']) and $attr['HEIGHT']!='') {
+                       $p['HEIGHT'] = $attr['HEIGHT'];
+               }
+       }
+       if ($tag == 'FONT') {
+               if (isset($attr['FACE'])) {
+                       $p['FONT-FAMILY'] = $attr['FACE'];
+               }
+               if (isset($attr['SIZE']) and $attr['SIZE']!='') {
+                       $s = '';
+                       if ($attr['SIZE'] === '+1') { $s = '120%'; }
+                       else if ($attr['SIZE'] === '-1') { $s = '86%'; }
+                       else if ($attr['SIZE'] === '1') { $s = 'XX-SMALL'; }
+                       else if ($attr['SIZE'] == '2') { $s = 'X-SMALL'; }
+                       else if ($attr['SIZE'] == '3') { $s = 'SMALL'; }
+                       else if ($attr['SIZE'] == '4') { $s = 'MEDIUM'; }
+                       else if ($attr['SIZE'] == '5') { $s = 'LARGE'; }
+                       else if ($attr['SIZE'] == '6') { $s = 'X-LARGE'; }
+                       else if ($attr['SIZE'] == '7') { $s = 'XX-LARGE'; }
+                       if ($s) $p['FONT-SIZE'] = $s;
+               }
+       }
+       if (isset($attr['VALIGN']) and $attr['VALIGN']!='') {
+               $p['VERTICAL-ALIGN'] = $attr['VALIGN'];
+       }
+       if (isset($attr['VSPACE']) and $attr['VSPACE']!='') {
+               $p['MARGIN-TOP'] = $attr['VSPACE'];
+               $p['MARGIN-BOTTOM'] = $attr['VSPACE'];
+       }
+       if (isset($attr['HSPACE']) and $attr['HSPACE']!='') {
+               $p['MARGIN-LEFT'] = $attr['HSPACE'];
+               $p['MARGIN-RIGHT'] = $attr['HSPACE'];
+       }
+       //===============================================
+       return $p;
+}
+
+function PreviewBlockCSS($tag,$attr) {
+       // Looks ahead from current block level to a new level
+       $p = array();
+       $zp = array(); 
+       $oldcascadeCSS = $this->mpdf->blk[$this->mpdf->blklvl]['cascadeCSS'];
+       $classes = array();
+       if (isset($attr['CLASS'])) { $classes = preg_split('/\s+/',$attr['CLASS']); }
+       //===============================================
+       // DEFAULT for this TAG set in DefaultCSS
+       if (isset($this->mpdf->defaultCSS[$tag])) { 
+               $zp = $this->fixCSS($this->mpdf->defaultCSS[$tag]);
+               if (is_array($zp)) { $p = array_merge($zp,$p); }        // Inherited overwrites default
+       }
+       // STYLESHEET TAG e.g. h1  p  div  table
+       if (isset($this->CSS[$tag])) { 
+               $zp = $this->CSS[$tag];
+               if (is_array($zp)) { $p = array_merge($p,$zp); }
+       }
+       // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
+       foreach($classes AS $class) {
+               $zp = array(); 
+               if (isset($this->CSS['CLASS>>'.$class])) { $zp = $this->CSS['CLASS>>'.$class]; }
+               if (is_array($zp)) { $p = array_merge($p,$zp); }
+       }
+       // STYLESHEET ID e.g. #smallone{}  #redletter{}
+       if (isset($attr['ID']) && isset($this->CSS['ID>>'.$attr['ID']])) {
+               $zp = $this->CSS['ID>>'.$attr['ID']];
+               if (is_array($zp)) { $p = array_merge($p,$zp); }
+       }
+       // STYLESHEET CLASS e.g. p.smallone{}  div.redletter{}
+       foreach($classes AS $class) {
+               $zp = array(); 
+               if (isset($this->CSS[$tag.'>>CLASS>>'.$class])) { $zp = $this->CSS[$tag.'>>CLASS>>'.$class]; }
+               if (is_array($zp)) { $p = array_merge($p,$zp); }
+       }
+       // STYLESHEET CLASS e.g. p#smallone{}  div#redletter{}
+       if (isset($attr['ID']) && isset($this->CSS[$tag.'>>ID>>'.$attr['ID']])) {
+               $zp = $this->CSS[$tag.'>>ID>>'.$attr['ID']];
+               if (is_array($zp)) { $p = array_merge($p,$zp); }
+       }
+       //===============================================
+       // STYLESHEET TAG e.g. div h1    div p
+
+       $this->_set_mergedCSS($oldcascadeCSS[$tag], $p);
+       // STYLESHEET CLASS e.g. .smallone{}  .redletter{}
+       foreach($classes AS $class) {
+         
+         $this->_set_mergedCSS($oldcascadeCSS['CLASS>>'.$class], $p);
+       }
+       // STYLESHEET CLASS e.g. #smallone{}  #redletter{}
+       if (isset($attr['ID'])) {
+         
+         $this->_set_mergedCSS($oldcascadeCSS['ID>>'.$attr['ID']], $p);
+       }
+       // STYLESHEET CLASS e.g. div.smallone{}  p.redletter{}
+       foreach($classes AS $class) {
+         
+         $this->_set_mergedCSS($oldcascadeCSS[$tag.'>>CLASS>>'.$class], $p);
+       }
+       // STYLESHEET CLASS e.g. div#smallone{}  p#redletter{}
+       if (isset($attr['ID'])) {
+         
+         $this->_set_mergedCSS($oldcascadeCSS[$tag.'>>ID>>'.$attr['ID']], $p);
+       }
+       //===============================================
+       // INLINE STYLE e.g. style="CSS:property"
+       if (isset($attr['STYLE'])) {
+               $zp = $this->readInlineCSS($attr['STYLE']);
+               if (is_array($zp)) { $p = array_merge($p,$zp); }
+       }
+       //===============================================
+       return $p;
+}
+
+
+
+
+
+}      // end of class
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/directw.php b/inc/3rdparty/libraries/mpdf/classes/directw.php
new file mode 100644 (file)
index 0000000..dc317d2
--- /dev/null
@@ -0,0 +1,408 @@
+<?php
+
+class directw {
+
+var $mpdf = null;
+
+function directw(&$mpdf) {
+       $this->mpdf = $mpdf;
+}
+
+
+function Write($h,$txt,$currentx=0,$link='',$directionality='ltr',$align='') {
+       if (!$align) { 
+               if ($directionality=='rtl') { $align = 'R'; }
+               else { $align = 'L'; }
+       }
+       if ($h == 0) { $this->mpdf->SetLineHeight(); $h = $this->mpdf->lineheight; }
+       //Output text in flowing mode
+       $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x; 
+
+       $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
+       $s=str_replace("\r",'',$txt);
+       if ($this->mpdf->usingCoreFont)  { $nb=strlen($s); }
+       else {
+               $nb=mb_strlen($s, $this->mpdf->mb_enc );
+               // handle single space character
+               if(($nb==1) && $s == " ") {
+                       $this->mpdf->x += $this->mpdf->GetStringWidth($s);
+                       return;
+               }
+       }
+       $sep=-1;
+       $i=0;
+       $j=0;
+       $l=0;
+       $nl=1;
+       if (!$this->mpdf->usingCoreFont) {
+               if (preg_match("/([".$this->mpdf->pregRTLchars."])/u", $txt)) { $this->mpdf->biDirectional = true; }    // *RTL*
+               $checkCursive=false;
+               if ($this->mpdf->biDirectional) {  $checkCursive=true; }        // *RTL*
+               else if (isset($this->mpdf->CurrentFont['indic']) && $this->mpdf->CurrentFont['indic']) {  $checkCursive=true; }        // *INDIC*
+               while($i<$nb) {
+                       //Get next character
+                       $c = mb_substr($s,$i,1,$this->mpdf->mb_enc );
+                       if($c == "\n") {
+                               // WORD SPACING
+                               $this->mpdf->ResetSpacing();
+                               //Explicit line break
+                               $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc));
+                               if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
+                               $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
+                               $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
+                               $i++;
+                               $sep = -1;
+                               $j = $i;
+                               $l = 0;
+                               if($nl == 1) {
+                                       if ($currentx != 0) $this->mpdf->x=$currentx;
+                                       else $this->mpdf->x=$this->mpdf->lMargin;
+                                       $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x;
+                                       $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
+                               }
+                               $nl++;
+                               continue;
+                       }
+                       if($c == " ") { $sep= $i; }
+                       $l += $this->mpdf->GetCharWidthNonCore($c);     // mPDF 5.3.04
+                       if($l > $wmax) {
+                               //Automatic line break (word wrapping)
+                               if($sep == -1) {
+                                       // WORD SPACING
+                                       $this->mpdf->ResetSpacing();
+                                       if($this->mpdf->x > $this->mpdf->lMargin) {
+                                               //Move to next line
+                                               if ($currentx != 0) $this->mpdf->x=$currentx;
+                                               else $this->mpdf->x=$this->mpdf->lMargin;
+                                               $this->mpdf->y+=$h;
+                                               $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
+                                               $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
+                                               $i++;
+                                               $nl++;
+                                               continue;
+                                       }
+                                       if($i==$j) { $i++; }
+                                       $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc));
+                                       if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
+                                       $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
+                                       $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
+                               }
+                               else {
+                                       $tmp = rtrim(mb_substr($s,$j,$sep-$j,$this->mpdf->mb_enc));
+                                       if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
+                                       $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
+
+                                       if($align=='J') {
+                                               //////////////////////////////////////////
+                                               // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
+                                               // WORD SPACING
+                                               // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
+                                             $tmp = str_replace(chr(194).chr(160),chr(32),$tmp ); 
+                                               $len_ligne = $this->mpdf->GetStringWidth($tmp );
+                                               $nb_carac = mb_strlen( $tmp , $this->mpdf->mb_enc ) ;  
+                                               $nb_spaces = mb_substr_count( $tmp ,' ', $this->mpdf->mb_enc ) ;  
+                                               $inclCursive=false;
+                                               if ($checkCursive) {
+                                                       if (preg_match("/([".$this->mpdf->pregRTLchars."])/u", $tmp)) { $inclCursive = true; }  // *RTL*
+                                                       if (preg_match("/([".$this->mpdf->pregHIchars.$this->mpdf->pregBNchars.$this->mpdf->pregPAchars."])/u", $tmp)) { $inclCursive = true; } // *INDIC*
+                                               }
+                                               list($charspacing,$ws) = $this->mpdf->GetJspacing($nb_carac,$nb_spaces,((($w-2) - $len_ligne) * _MPDFK),$inclCursive);
+                                               $this->mpdf->SetSpacing($charspacing,$ws);
+                                               //////////////////////////////////////////
+                                       }
+                                       $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
+                                       $i=$sep+1;
+                               }
+                               $sep = -1;
+                               $j = $i;
+                               $l = 0;
+                               if($nl==1) {
+                                       if ($currentx != 0) $this->mpdf->x=$currentx;
+                                       else $this->mpdf->x=$this->mpdf->lMargin;
+                                       $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
+                                       $wmax = ($w - ($this->mpdf->cMarginL+$this->mpdf->cMarginR));
+                               }
+                               $nl++;
+                       }
+                       else { $i++; }
+               }
+               //Last chunk
+               // WORD SPACING
+               $this->mpdf->ResetSpacing();
+       }
+       else {
+               while($i<$nb) {
+                       //Get next character
+                       $c=$s[$i];
+                       if($c == "\n") {
+                               //Explicit line break
+                               // WORD SPACING
+                               $this->mpdf->ResetSpacing();
+                               $this->mpdf->Cell($w, $h, substr($s, $j, $i-$j), 0, 2, $align, $fill, $link);
+                               $i++;
+                               $sep = -1;
+                               $j = $i;
+                               $l = 0;
+                               if($nl == 1) {
+                                       if ($currentx != 0) $this->mpdf->x=$currentx;
+                                       else $this->mpdf->x=$this->mpdf->lMargin;
+                                       $w = $this->mpdf->w - $this->mpdf->rMargin - $this->mpdf->x;
+                                       $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
+                               }
+                               $nl++;
+                               continue;
+                       }
+                       if($c == " ") { $sep= $i; }
+                       $l += $this->mpdf->GetCharWidthCore($c);        // mPDF 5.3.04
+                       if($l > $wmax) {
+                               //Automatic line break (word wrapping)
+                               if($sep == -1) {
+                                       // WORD SPACING
+                                       $this->mpdf->ResetSpacing();
+                                       if($this->mpdf->x > $this->mpdf->lMargin) {
+                                               //Move to next line
+                                               if ($currentx != 0) $this->mpdf->x=$currentx;
+                                               else $this->mpdf->x=$this->mpdf->lMargin;
+                                               $this->mpdf->y+=$h;
+                                               $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
+                                               $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
+                                               $i++;
+                                               $nl++;
+                                               continue;
+                                       }
+                                       if($i==$j) { $i++; }
+                                       $this->mpdf->Cell($w, $h, substr($s, $j, $i-$j), 0, 2, $align, $fill, $link);
+                               }
+                               else {
+                                       $tmp = substr($s, $j, $sep-$j);
+                                       if($align=='J') {
+                                               //////////////////////////////////////////
+                                               // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
+                                               // WORD SPACING
+                                               // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
+                                             $tmp = str_replace(chr(160),chr(32),$tmp );
+                                               $len_ligne = $this->mpdf->GetStringWidth($tmp );
+                                               $nb_carac = strlen( $tmp ) ;  
+                                               $nb_spaces = substr_count( $tmp ,' ' ) ;  
+                                               list($charspacing,$ws) = $this->mpdf->GetJspacing($nb_carac,$nb_spaces,((($w-2) - $len_ligne) * _MPDFK),$false);
+                                               $this->mpdf->SetSpacing($charspacing,$ws);
+                                               //////////////////////////////////////////
+                                       }
+                                       $this->mpdf->Cell($w, $h, $tmp, 0, 2, $align, $fill, $link);
+                                       $i=$sep+1;
+                               }
+                               $sep = -1;
+                               $j = $i;
+                               $l = 0;
+                               if($nl==1) {
+                                       if ($currentx != 0) $this->mpdf->x=$currentx;
+                                       else $this->mpdf->x=$this->mpdf->lMargin;
+                                       $w=$this->mpdf->w-$this->mpdf->rMargin-$this->mpdf->x;
+                                       $wmax=$w-($this->mpdf->cMarginL+$this->mpdf->cMarginR);
+                               }
+                               $nl++;
+                       }
+                       else {
+                               $i++;
+                       }
+               }
+               // WORD SPACING
+               $this->mpdf->ResetSpacing();
+       }
+       //Last chunk
+       if($i!=$j) {
+               if ($currentx != 0) $this->mpdf->x=$currentx;
+               else $this->mpdf->x=$this->mpdf->lMargin;       
+               if ($this->mpdf->usingCoreFont) { $tmp = substr($s,$j,$i-$j); }
+               else {
+                       $tmp = mb_substr($s,$j,$i-$j,$this->mpdf->mb_enc);
+                       if ($directionality == 'rtl' && $align == 'J') { $align = 'R'; }        // *RTL*
+                       $this->mpdf->magic_reverse_dir($tmp, true, $directionality);    // *RTL*
+               }
+               $this->mpdf->Cell($w,$h,$tmp,0,0,$align,$fill,$link);
+       }
+}
+
+
+function CircularText($x, $y, $r, $text, $align='top', $fontfamily='', $fontsizePt=0, $fontstyle='', $kerning=120, $fontwidth=100, $divider='') {      // mPDF 5.5.23
+       if ($font || $fontstyle || $fontsizePt) $this->mpdf->SetFont($fontfamily,$fontstyle,$fontsizePt);
+       $kerning/=100;
+       $fontwidth/=100;        
+       if($kerning==0) $this->mpdf->Error('Please use values unequal to zero for kerning (CircularText)');
+       if($fontwidth==0) $this->mpdf->Error('Please use values unequal to zero for font width (CircularText)');
+       $text=str_replace("\r",'',$text);
+       //circumference
+       $u=($r*2)*M_PI;
+       // mPDF 5.5.23
+       $checking = true;
+       $autoset = false;
+       while($checking) {
+          $t=0;
+          $w = array();
+          if ($this->mpdf->usingCoreFont)  {
+               $nb=strlen($text); 
+               for($i=0; $i<$nb; $i++){
+                       $w[$i]=$this->mpdf->GetStringWidth($text[$i]);
+                       $w[$i]*=$kerning*$fontwidth;
+                       $t+=$w[$i];
+               }
+          }
+          else { 
+               $nb=mb_strlen($text, $this->mpdf->mb_enc ); 
+               $lastchar = '';
+               $unicode = $this->mpdf->UTF8StringToArray($text);
+               for($i=0; $i<$nb; $i++){
+                       $c = mb_substr($text,$i,1,$this->mpdf->mb_enc );
+                       $w[$i]=$this->mpdf->GetStringWidth($c);
+                       $w[$i]*=$kerning*$fontwidth;
+                       $char = $unicode[$i];
+                       if ($this->mpdf->useKerning && $lastchar) {
+                               if (isset($this->mpdf->CurrentFont['kerninfo'][$lastchar][$char])) { 
+                                       $tk = $this->mpdf->CurrentFont['kerninfo'][$lastchar][$char] * ($this->mpdf->FontSize/ 1000) * $kerning * $fontwidth; 
+                                       $w[$i] += $tk/2;
+                                       $w[$i-1] += $tk/2;
+                                       $t+=$tk;
+                               }
+                       }
+                       $lastchar = $char;
+                       $t+=$w[$i];
+               }
+          }
+          if ($fontsizePt>=0 || $autoset) { $checking = false; }
+          else {
+               $t+=$this->mpdf->GetStringWidth('  ');
+               if ($divider)
+                       $t+=$this->mpdf->GetStringWidth('  ');
+               if ($fontsizePt==-2)
+                       $fontsizePt = $this->mpdf->FontSizePt * 0.5  *  $u/$t;
+               else 
+                       $fontsizePt = $this->mpdf->FontSizePt * $u/$t;
+               $this->mpdf->SetFontSize($fontsizePt);
+               $autoset = true;
+          }
+       }
+
+       //total width of string in degrees
+       $d=($t/$u)*360;
+
+       $this->mpdf->StartTransform();
+       // rotate matrix for the first letter to center the text
+       // (half of total degrees)
+       if($align=='top'){
+               $this->mpdf->transformRotate(-$d/2, $x, $y);
+       }
+       else{
+               $this->mpdf->transformRotate($d/2, $x, $y);
+       }
+       //run through the string
+       for($i=0; $i<$nb; $i++){
+               if($align=='top'){
+                       //rotate matrix half of the width of current letter + half of the width of preceding letter
+                       if($i==0){
+                               $this->mpdf->transformRotate((($w[$i]/2)/$u)*360, $x, $y);
+                       }
+                       else{
+                               $this->mpdf->transformRotate((($w[$i]/2+$w[$i-1]/2)/$u)*360, $x, $y);
+                       }
+                       if($fontwidth!=1){
+                               $this->mpdf->StartTransform();
+                               $this->mpdf->transformScale($fontwidth*100, 100, $x, $y);
+                       }
+                       $this->mpdf->SetXY($x-$w[$i]/2, $y-$r);
+               }
+               else{
+                       //rotate matrix half of the width of current letter + half of the width of preceding letter
+                       if($i==0){
+                               $this->mpdf->transformRotate(-(($w[$i]/2)/$u)*360, $x, $y);
+                       }
+                       else{
+                               $this->mpdf->transformRotate(-(($w[$i]/2+$w[$i-1]/2)/$u)*360, $x, $y);
+                       }
+                       if($fontwidth!=1){
+                               $this->mpdf->StartTransform();
+                               $this->mpdf->transformScale($fontwidth*100, 100, $x, $y);
+                       }
+                       $this->mpdf->SetXY($x-$w[$i]/2, $y+$r-($this->mpdf->FontSize));
+               }
+               if ($this->mpdf->usingCoreFont) { $c=$text[$i]; }
+               else { $c = mb_substr($text,$i,1,$this->mpdf->mb_enc ); }
+               $this->mpdf->Cell(($w[$i]),$this->mpdf->FontSize,$c,0,0,'C');   // mPDF 5.3.53
+               if($fontwidth!=1){
+                       $this->mpdf->StopTransform();
+               }
+       }
+       $this->mpdf->StopTransform();
+
+       // mPDF 5.5.23
+       if($align=='top' && $divider!=''){
+               $wc=$this->mpdf->GetStringWidth($divider);
+               $wc*=$kerning*$fontwidth;
+
+               $this->mpdf->StartTransform();
+               $this->mpdf->transformRotate(90, $x, $y);
+               $this->mpdf->SetXY($x-$wc/2, $y-$r);
+               $this->mpdf->Cell(($wc),$this->mpdf->FontSize,$divider,0,0,'C');
+               $this->mpdf->StopTransform();
+
+               $this->mpdf->StartTransform();
+               $this->mpdf->transformRotate(-90, $x, $y);
+               $this->mpdf->SetXY($x-$wc/2, $y-$r);
+               $this->mpdf->Cell(($wc),$this->mpdf->FontSize,$divider,0,0,'C');
+               $this->mpdf->StopTransform();
+       }
+}
+
+function Shaded_box( $text,$font='',$fontstyle='B',$szfont='',$width='70%',$style='DF',$radius=2.5,$fill='#FFFFFF',$color='#000000',$pad=2 )
+{
+// F (shading - no line),S (line, no shading),DF (both)
+       if (!$font) { $font= $this->mpdf->default_font; }
+       if (!$szfont) { $szfont = ($this->mpdf->default_font_size * 1.8); }
+
+       $text = $this->mpdf->purify_utf8_text($text);
+       if ($this->mpdf->text_input_as_HTML) {
+               $text = $this->mpdf->all_entities_to_utf8($text);
+       }
+       if ($this->mpdf->usingCoreFont) { $text = mb_convert_encoding($text,$this->mpdf->mb_enc,'UTF-8'); }
+       // DIRECTIONALITY
+       $this->mpdf->magic_reverse_dir($text, true, $this->mpdf->directionality);       // *RTL*
+       // Font-specific ligature substitution for Indic fonts
+       if (isset($this->mpdf->CurrentFont['indic']) && $this->mpdf->CurrentFont['indic']) $this->mpdf->ConvertIndic($text);    // *INDIC*
+       $text = ' '.$text.' ';
+       if (!$width) { $width = $this->mpdf->pgwidth; } else { $width=$this->mpdf->ConvertSize($width,$this->mpdf->pgwidth); }
+       $midpt = $this->mpdf->lMargin+($this->mpdf->pgwidth/2);
+       $r1  = $midpt-($width/2);       //($this->mpdf->w / 2) - 40;
+       $r2  = $r1 + $width;            //$r1 + 80;
+       $y1  = $this->mpdf->y;
+
+
+       $mid = ($r1 + $r2 ) / 2;
+       $loop   = 0;
+    
+       while ( $loop == 0 )
+       {
+               $this->mpdf->SetFont( $font, $fontstyle, $szfont );
+               $sz = $this->mpdf->GetStringWidth( $text );
+               if ( ($r1+$sz) > $r2 )
+                       $szfont --;
+               else
+                       $loop ++;
+       }
+
+       $y2  = $this->mpdf->FontSize+($pad*2);
+
+       $this->mpdf->SetLineWidth(0.1);
+       $fc = $this->mpdf->ConvertColor($fill);
+       $tc = $this->mpdf->ConvertColor($color);
+       $this->mpdf->SetFColor($fc);
+       $this->mpdf->SetTColor($tc);
+       $this->mpdf->RoundedRect($r1, $y1, ($r2 - $r1), $y2, $radius, $style);
+       $this->mpdf->SetX( $r1);
+       $this->mpdf->Cell($r2-$r1, $y2, $text, 0, 1, "C" );
+       $this->mpdf->SetY($y1+$y2+2);   // +2 = mm margin below shaded box
+       $this->mpdf->Reset();
+}
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/form.php b/inc/3rdparty/libraries/mpdf/classes/form.php
new file mode 100644 (file)
index 0000000..9367e71
--- /dev/null
@@ -0,0 +1,1498 @@
+<?php
+
+class form {
+
+var $mpdf = null;
+
+var $forms;
+var $formn;
+
+//Active Forms
+var $formSubmitNoValueFields;
+var $formExportType;
+var $formSelectDefaultOption;
+var $formUseZapD;
+/* Form Styles */
+var $form_border_color; 
+var $form_background_color; 
+var $form_border_width;
+var $form_border_style;
+var $form_button_border_color; 
+var $form_button_background_color;
+var $form_button_border_width;
+var $form_button_border_style;
+var $form_radio_color;
+var $form_radio_background_color; 
+
+var $form_element_spacing;
+
+// Active forms
+var $formMethod;
+var $formAction;
+var $form_fonts;
+var $form_radio_groups;
+var $form_checkboxes;
+var $pdf_acro_array;
+
+var $pdf_array_co;
+var $array_form_button_js;
+var $array_form_choice_js;
+var $array_form_text_js;
+
+/* Button Text */
+var $form_button_text;
+var $form_button_text_over;
+var $form_button_text_click;
+var $form_button_icon;
+
+
+// FORMS
+var $textarea_lineheight;
+
+function form(&$mpdf) {
+       $this->mpdf = $mpdf;
+
+       // ACTIVE FORMS
+       $this->formExportType = 'xfdf'; // 'xfdf' or 'html'
+       $this->formSubmitNoValueFields = true;  // Whether to include blank fields when submitting data
+       $this->formSelectDefaultOption = true;  // for Select drop down box; if no option is explicitly maked as selected,
+                                                       // this determines whether to select 1st option (as per browser)
+                                                       // - affects whether "required" attribute is relevant
+       $this->formUseZapD = true;              // Determine whether to use ZapfDingbat icons for radio/checkboxes
+
+       // FORM STYLES
+       // These can alternatively use a 4 number string to represent CMYK colours
+       $this->form_border_color = '0.6 0.6 0.72';              // RGB
+       $this->form_background_color = '0.975 0.975 0.975';     // RGB
+       $this->form_border_width = '1';         // 0 doesn't seem to work as it should
+       $this->form_border_style = 'S';         // B - Bevelled; D - Double
+       $this->form_button_border_color = '0.2 0.2 0.55'; 
+       $this->form_button_background_color = '0.941 0.941 0.941';
+       $this->form_button_border_width = '1';
+       $this->form_button_border_style = 'S';
+       $this->form_radio_color = '0.0 0.0 0.4';        // radio and checkbox
+       $this->form_radio_background_color = '0.9 0.9 0.9'; 
+
+       // FORMS
+       $this->textarea_lineheight = 1.25;
+
+       // FORM ELEMENT SPACING
+       $this->form_element_spacing['select']['outer']['h'] = 0.5;      // Horizontal spacing around SELECT
+       $this->form_element_spacing['select']['outer']['v'] = 0.5;      // Vertical spacing around SELECT
+       $this->form_element_spacing['select']['inner']['h'] = 0.7;      // Horizontal padding around SELECT
+       $this->form_element_spacing['select']['inner']['v'] = 0.7;      // Vertical padding around SELECT
+       $this->form_element_spacing['input']['outer']['h'] = 0.5;
+       $this->form_element_spacing['input']['outer']['v'] = 0.5;
+       $this->form_element_spacing['input']['inner']['h'] = 0.7;
+       $this->form_element_spacing['input']['inner']['v'] = 0.7;
+       $this->form_element_spacing['textarea']['outer']['h'] = 0.5;
+       $this->form_element_spacing['textarea']['outer']['v'] = 0.5;
+       $this->form_element_spacing['textarea']['inner']['h'] = 1;
+       $this->form_element_spacing['textarea']['inner']['v'] = 0.5;
+       $this->form_element_spacing['button']['outer']['h'] = 0.5;
+       $this->form_element_spacing['button']['outer']['v'] = 0.5;
+       $this->form_element_spacing['button']['inner']['h'] = 2;
+       $this->form_element_spacing['button']['inner']['v'] = 1;
+
+       // INITIALISE non-configurable
+       $this->formMethod = 'POST';
+       $this->formAction = '';
+       $this->form_fonts = array();
+       $this->form_radio_groups = array();
+       $this->form_checkboxes = false;
+       $this->forms = array();
+       $this->pdf_array_co = '';
+
+
+}
+
+
+function print_ob_text($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
+               // TEXT/PASSWORD INPUT
+                       if ($this->mpdf->useActiveForms) {
+                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
+                               $flags = array();
+                               if ($objattr['disabled'] || $objattr['readonly']) { $flags[] = 1; }     // readonly
+                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
+                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled 
+                               if ($objattr['required']) { $flags[] = 2; }     // required
+                               if (!$objattr['spellcheck']) { $flags[] = 23; } // DoNotSpellCheck
+                               if ($objattr['subtype']=='PASSWORD') { $flags[] = 14; }
+                               $this->mpdf->SetTColor($objattr['color']);
+                               $fieldalign = $rtlalign;
+                               if ($objattr['text_align']) { $fieldalign = $objattr['text_align']; }
+                               if ($objattr['subtype']=='PASSWORD') { $val = $objattr['value']; }
+                               else { $val = $objattr['text']; }
+                               // mPDF 5.3.25
+                               $js = array();
+                               if ($objattr['onCalculate']) { $js[] = array('C', $objattr['onCalculate']); }
+                               if ($objattr['onValidate']) { $js[] = array('V', $objattr['onValidate']); }
+                               if ($objattr['onFormat']) { $js[] = array('F', $objattr['onFormat']); }
+                               if ($objattr['onKeystroke']) { $js[] = array('K', $objattr['onKeystroke']); }
+                               $this->SetFormText( $w, $h, $objattr['fieldname'], $val, $val, $objattr['title'], $flags, $fieldalign, false, $objattr['maxlength'], $js, $objattr['background-col'], $objattr['border-col']  );
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                       }
+                       else {
+                               $w -= $this->form_element_spacing['input']['outer']['h']*2  /$k;
+                               $h -= $this->form_element_spacing['input']['outer']['v']*2 /$k;
+                               $this->mpdf->x += $this->form_element_spacing['input']['outer']['h'] /$k;
+                               $this->mpdf->y += $this->form_element_spacing['input']['outer']['v'] /$k;
+                               // Chop texto to max length $w-inner-padding
+                               while ($this->mpdf->GetStringWidth($texto) > $w-($this->form_element_spacing['input']['inner']['h']*2)) {
+                                       $texto = mb_substr($texto,0,mb_strlen($texto,$this->mpdf->mb_enc)-1,$this->mpdf->mb_enc);
+                               }
+                               $save_linemaxfontsize = $this->mpdf->linemaxfontsize;
+                               $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;   
+                               $this->mpdf->SetLineWidth(0.2 /$k );
+                               $this->mpdf->magic_reverse_dir($texto, false, $blockdir);       // *RTL*
+                               if (isset($objattr['disabled']) && $objattr['disabled']) { 
+                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
+                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
+                               }
+                               else if (isset($objattr['readonly']) && $objattr['readonly']) { 
+                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
+                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                               }
+                               else {
+                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
+                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                               }
+                               $this->mpdf->Cell($w,$h,$texto,1,0,$rtlalign,1,'',0,$this->form_element_spacing['input']['inner']['h'] /$k ,$this->form_element_spacing['input']['inner']['h'] /$k , 'M');
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                               $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
+                       }
+}
+
+function print_ob_textarea($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
+                  // TEXTAREA
+                   if ($this->mpdf->useActiveForms) {
+                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
+                               $flags = array();
+                               $flags = array(13);     // textarea
+                               if ($objattr['disabled'] || $objattr['readonly']) { $flags[] = 1; }     // readonly
+                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
+                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled
+                               if ($objattr['required']) { $flags[] = 2; }     // required
+                               if (!$objattr['spellcheck']) { $flags[] = 23; } // DoNotSpellCheck
+                               if ($objattr['donotscroll']) { $flags[] = 24; } // DoNotScroll
+                               $this->mpdf->SetTColor($objattr['color']);
+                               $fieldalign = $rtlalign;
+                               if ($texto == ' ') { $texto = ''; }     // mPDF 5.3.24
+                               if ($objattr['text_align']) { $fieldalign = $objattr['text_align']; }
+                               // mPDF 5.3.25
+                               $js = array();
+                               if ($objattr['onCalculate']) { $js[] = array('C', $objattr['onCalculate']); }
+                               if ($objattr['onValidate']) { $js[] = array('V', $objattr['onValidate']); }
+                               if ($objattr['onFormat']) { $js[] = array('F', $objattr['onFormat']); }
+                               if ($objattr['onKeystroke']) { $js[] = array('K', $objattr['onKeystroke']); }
+                               $this->SetFormText( $w, $h, $objattr['fieldname'], $texto, $texto, $objattr['title'], $flags, $fieldalign , false, -1, $js, $objattr['background-col'], $objattr['border-col']  );
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                   }
+                   else {
+                       $w -= $this->form_element_spacing['textarea']['outer']['h']*2 /$k ;
+                       $h -= $this->form_element_spacing['textarea']['outer']['v']*2 /$k ;
+                       $this->mpdf->x += $this->form_element_spacing['textarea']['outer']['h'] /$k ;
+                       $this->mpdf->y += $this->form_element_spacing['textarea']['outer']['v'] /$k ;
+                       $this->mpdf->SetLineWidth(0.2 /$k );
+                       if (isset($objattr['disabled']) && $objattr['disabled']) { 
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
+                       }
+                       else if (isset($objattr['readonly']) && $objattr['readonly']) { 
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                       }
+                       else {
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                       }
+                       $this->mpdf->Rect($this->mpdf->x,$this->mpdf->y,$w,$h,'DF');
+                       $w -= $this->form_element_spacing['textarea']['inner']['h']*2 /$k ;
+                       $this->mpdf->x += $this->form_element_spacing['textarea']['inner']['h'] /$k ;
+                       $this->mpdf->y += $this->form_element_spacing['textarea']['inner']['v'] /$k ;
+                       $linesneeded = $this->mpdf->WordWrap($texto,$w);
+                       if ($linesneeded > $objattr['rows']) { //Too many words inside textarea
+                               $textoaux = explode("\n",$texto);
+                        $texto = '';
+                        for($i=0;$i<$objattr['rows'];$i++) {
+                          if ($i == ($objattr['rows']-1)) $texto .= $textoaux[$i];
+                          else $texto .= $textoaux[$i] . "\n";
+                        }
+                               $texto = mb_substr($texto,0,mb_strlen($texto,$this->mpdf->mb_enc)-4,$this->mpdf->mb_enc) . "...";
+                       }
+                       if ($texto != '') $this->mpdf->MultiCell($w,$this->mpdf->FontSize*$this->textarea_lineheight,$texto,0,'',0,'',$blockdir,true);
+                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
+                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                   }
+}
+
+function print_ob_select($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
+               // SELECT
+                       if ($this->mpdf->useActiveForms) {
+                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 19 - edit (only if combo)
+                               $flags = array();
+                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
+                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
+                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } // gray out disabled
+                               if ($objattr['required']) { $flags[] = 2; }     // required
+                               if ($objattr['multiple'] && $objattr['size']>1) { $flags[] = 22; }   //flag 22 = multiselect (listbox)
+                               if ($objattr['size']<2) { 
+                                       $flags[] = 18;    //flag 18 = combobox (else a listbox)
+                                       if ($objattr['editable']) { $flags[] = 19; }    // editable
+                               }
+                               // only spellcheck if combo and editable
+                               if (!$objattr['spellcheck'] || $objattr['size']>1 || !$objattr['editable']) { $flags[] = 23; }  // DoNotSpellCheck
+                               if ($objattr['subtype']=='PASSWORD') { $flags[] = 14; }
+                               if ($objattr['onChange']) { $js = $objattr['onChange']; }
+                               else { $js = ''; }      // mPDF 5.3.37
+                               $data = array('VAL' => array(), 'OPT' => array(), 'SEL' => array(), );
+                               for($i=0; $i<count($objattr['items']); $i++) {
+                                       $item = $objattr['items'][$i];
+                                       $data['VAL'][] = $item['exportValue'];
+                                       $data['OPT'][] = $item['content'];
+                                       if ($item['selected']) { $data['SEL'][] = $i; }
+                               }
+                               if (count($data['SEL'])==0 && $this->formSelectDefaultOption) {$data['SEL'][] = 0; }
+                               $this->mpdf->SetTColor($objattr['color']);
+                               $this->SetFormChoice( $w, $h, $objattr['fieldname'], $flags, $data, $rtlalign, $js );
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                       }
+                       else {
+                         $save_linemaxfontsize = $this->mpdf->linemaxfontsize;
+                         $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;
+                         $this->mpdf->magic_reverse_dir($texto, false, $blockdir);     // *RTL*
+                         $this->mpdf->SetLineWidth(0.2 /$k );
+                               if (isset($objattr['disabled']) && $objattr['disabled']) { 
+                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
+                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(127));
+                               }
+                               else {
+                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
+                                       $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                               }
+                               $w -= $this->form_element_spacing['select']['outer']['h']*2 /$k ;
+                               $h -= $this->form_element_spacing['select']['outer']['v']*2 /$k ;
+                               $this->mpdf->x += $this->form_element_spacing['select']['outer']['h'] /$k ;
+                               $this->mpdf->y += $this->form_element_spacing['select']['outer']['v'] /$k ;
+                         $this->mpdf->Cell($w-($this->mpdf->FontSize*1.4),$h,$texto,1,0,$rtlalign,1,'',0,$this->form_element_spacing['select']['inner']['h'] /$k,$this->form_element_spacing['select']['inner']['h'] /$k , 'M') ;
+                         $this->mpdf->SetFColor($this->mpdf->ConvertColor(190));
+                         $save_font = $this->mpdf->FontFamily;
+                         $save_currentfont = $this->mpdf->currentfontfamily;
+                         if ($this->mpdf->PDFA || $this->mpdf->PDFX) {
+                               if (($this->mpdf->PDFA && !$this->mpdf->PDFAauto) || ($this->mpdf->PDFX && !$this->mpdf->PDFXauto)) { $this->mpdf->PDFAXwarnings[] = "Core Adobe font Zapfdingbats cannot be embedded in mPDF - used in Form element: Select - which is required for PDFA1-b or PDFX/1-a. (Different character/font will be substituted.)"; }
+                               $this->mpdf->SetFont('sans');
+                               if ($this->mpdf->_charDefined($this->mpdf->CurrentFont['cw'], 9660)) { $down = "\xe2\x96\xbc"; }
+                               else { $down = '='; }
+                               $this->mpdf->Cell(($this->mpdf->FontSize*1.4),$h,$down,1,0,'C',1,'',0,0,0, 'M') ;
+                         }
+                         else {
+                               $this->mpdf->SetFont('czapfdingbats','',0);
+                               $this->mpdf->Cell(($this->mpdf->FontSize*1.4),$h,chr(116),1,0,'C',1,'',0,0,0, 'M') ;
+                         }
+                         $this->mpdf->SetFont($save_font,'',0);
+                         $this->mpdf->currentfontfamily = $save_currentfont;
+                         $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
+                         $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
+                         $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                       }
+}
+
+function print_ob_imageinput($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
+               // INPUT/BUTTON as IMAGE
+                    if ($this->mpdf->useActiveForms) {
+                               // Flags: 1 - Readonly; 3 - No export; 
+                               $flags = array();
+                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
+                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
+                               if ($objattr['onClick']) { $js = $objattr['onClick']; }
+                               else { $js = ''; }
+                               $this->SetJSButton( $w, $h, $objattr['fieldname'],  $objattr['value'], $js, $objattr['ID'], $objattr['title'], $flags, $objattr['Indexed']);
+                    }
+                    else {
+                       $this->mpdf->y = $objattr['INNER-Y'];
+                       $this->mpdf->_out( sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q",$objattr['INNER-WIDTH'] *_MPDFK,$objattr['INNER-HEIGHT'] *_MPDFK,$objattr['INNER-X'] *_MPDFK,($this->mpdf->h-($objattr['INNER-Y'] +$objattr['INNER-HEIGHT'] ))*_MPDFK,$objattr['ID'] ) );
+                       if (isset($objattr['BORDER-WIDTH']) && $objattr['BORDER-WIDTH']) { $this->mpdf->PaintImgBorder($objattr,$is_table); }
+                    }
+}
+
+function print_ob_button($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir) {
+               // BUTTON
+                    if ($this->mpdf->useActiveForms) {
+                               // Flags: 1 - Readonly; 3 - No export; 
+                               $flags = array();
+                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
+                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
+                               if ($objattr['disabled']) { $objattr['color'] = array(3,128,128,128); } 
+                               $this->mpdf->SetTColor($objattr['color']);
+                               if ($objattr['subtype'] == 'RESET') {
+                                       $this->SetFormButtonText( $objattr['value'] );
+                                       $this->SetFormReset( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $flags, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );    
+                               }
+                               else if ($objattr['subtype'] == 'SUBMIT') {
+                                       $url = $this->formAction;
+                                       $type = $this->formExportType;
+                                       $method = $this->formMethod;
+                                       $this->SetFormButtonText( $objattr['value'] );
+                                       $this->SetFormSubmit( $w, $h, $objattr['fieldname'],  $objattr['value'], $url, $objattr['title'], $type, $method, $flags, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );
+                               }
+                               else if ($objattr['subtype'] == 'BUTTON') {
+                                       $this->SetFormButtonText( $objattr['value'] );
+                                       if ($objattr['onClick']) { $js = $objattr['onClick']; }
+                                       else { $js = ''; }
+                                       $this->SetJSButton( $w, $h, $objattr['fieldname'],  $objattr['value'], $js, 0, $objattr['title'], $flags, false, $objattr['background-col'], $objattr['border-col'], $objattr['noprint'] );
+                               }
+                               $this->mpdf->SetTColor($this->mpdf->ConvertColor(0));
+                    }
+                    else {
+                          $this->mpdf->SetLineWidth(0.2 /$k );
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(190));
+                               $w -= $this->form_element_spacing['button']['outer']['h']*2 /$k ;
+                               $h -= $this->form_element_spacing['button']['outer']['v']*2 /$k ;
+                               $this->mpdf->x += $this->form_element_spacing['button']['outer']['h'] /$k ;
+                               $this->mpdf->y += $this->form_element_spacing['button']['outer']['v'] /$k ;
+                          $this->mpdf->RoundedRect($this->mpdf->x, $this->mpdf->y, $w, $h, 0.5 /$k , 'DF');
+                               $w -= $this->form_element_spacing['button']['inner']['h']*2 /$k ;
+                               $h -= $this->form_element_spacing['button']['inner']['v']*2 /$k ;
+                               $this->mpdf->x += $this->form_element_spacing['button']['inner']['h'] /$k ;
+                               $this->mpdf->y += $this->form_element_spacing['button']['inner']['v'] /$k ;
+                       $save_linemaxfontsize = $this->mpdf->linemaxfontsize;   
+                       $this->mpdf->linemaxfontsize = $this->mpdf->FontSize;   
+                          $this->mpdf->magic_reverse_dir($texto, false, $blockdir);    // *RTL*
+                          $this->mpdf->Cell($w,$h,$texto,'',0,'C',0,'',0,0,0, 'M') ;
+                          $this->mpdf->SetFColor($this->mpdf->ConvertColor(0));
+                       $this->mpdf->linemaxfontsize = $save_linemaxfontsize;
+                    }
+}
+
+function print_ob_checkbox($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y) {
+               // CHECKBOX
+                    if ($this->mpdf->useActiveForms) {
+                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 
+                               $flags = array();
+                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
+                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
+                               $checked = false;
+                               if ($objattr['checked']) { $checked = true; }
+                               if ($this->formUseZapD) {
+                                       $save_font = $this->mpdf->FontFamily;
+                                       $save_currentfont = $this->mpdf->currentfontfamily;
+                                       $this->mpdf->SetFont('czapfdingbats','',0);
+                               }
+                               $this->SetCheckBox( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $checked, $flags, $objattr['disabled'] );
+                               if ($this->formUseZapD) {
+                                       $this->mpdf->SetFont($save_font,'',0);
+                                       $this->mpdf->currentfontfamily = $save_currentfont;
+                               }
+                    }
+                    else {
+                       $iw = $w * 0.7;
+                       $ih = $h * 0.7;
+                       $lx = $x + (($w-$iw)/2); 
+                       $ty = $y + (($h-$ih)/2);
+                       $rx = $lx + $iw;
+                       $by = $ty + $ih;
+                       $this->mpdf->SetLineWidth(0.2 /$k );
+                       if (isset($objattr['disabled']) && $objattr['disabled']) { 
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(225));
+                               $this->mpdf->SetDColor($this->mpdf->ConvertColor(127));
+                       }
+                       else {
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(250));
+                               $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
+                       }
+                       $this->mpdf->Rect($lx,$ty,$iw,$ih,'DF');
+                       if (isset($objattr['checked']) && $objattr['checked']) {
+                               //Round join and cap
+                               $this->mpdf->SetLineCap(1);
+                               $this->mpdf->Line($lx,$ty,$rx,$by);
+                               $this->mpdf->Line($lx,$by,$rx,$ty);
+                               //Set line cap style back to square
+                               $this->mpdf->SetLineCap(2);
+                       }
+                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
+                       $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
+                   }
+}
+
+function print_ob_radio($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y) {
+               // RADIO
+                       if ($this->mpdf->useActiveForms) {
+                               // Flags: 1 - Readonly; 2 - Required; 3 - No export; 
+                               $flags = array();
+                               if ($objattr['disabled']) { $flags[] = 1; }     // readonly
+                               if ($objattr['disabled']) { $flags[] = 3; }     // no export
+                               $checked = false;
+                               if ($objattr['checked']) { $checked = true; }
+                               if ($this->formUseZapD) {
+                                       $save_font = $this->mpdf->FontFamily;
+                                       $save_currentfont = $this->mpdf->currentfontfamily;
+                                       $this->mpdf->SetFont('czapfdingbats','',0);
+                               }
+                               $this->SetRadio( $w, $h, $objattr['fieldname'], $objattr['value'], $objattr['title'], $checked, $flags, $objattr['disabled'] ); 
+                               if ($this->formUseZapD) {
+                                       $this->mpdf->SetFont($save_font,'',0);
+                                       $this->mpdf->currentfontfamily = $save_currentfont;
+                               }
+                       }
+                       else {
+                               $this->mpdf->SetLineWidth(0.2 /$k );
+                               $radius = $this->mpdf->FontSize *0.35;
+                               $cx = $x + ($w/2); 
+                               $cy = $y + ($h/2);
+                               if (isset($objattr['disabled']) && $objattr['disabled']) { 
+                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(127));
+                                       $this->mpdf->SetDColor($this->mpdf->ConvertColor(127));
+                               }
+                               else {
+                                       $this->mpdf->SetFColor($this->mpdf->ConvertColor(0));
+                                       $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
+                               }
+                               $this->mpdf->Circle($cx,$cy,$radius,'D');
+                               if (isset($objattr['checked']) && $objattr['checked']) {
+                                       $this->mpdf->Circle($cx,$cy,$radius*0.4,'DF');
+                               }
+                               $this->mpdf->SetFColor($this->mpdf->ConvertColor(255));
+                               $this->mpdf->SetDColor($this->mpdf->ConvertColor(0));
+
+                       }
+}
+
+
+// In _putpages
+function countPageForms($n, &$totaladdnum) {
+                       foreach( $this->forms as $form ) {
+                               if ( $form['page'] == $n ) {
+                                       $totaladdnum++;
+                                       if ( $form['typ'] == 'Tx' ) {
+                                               if ( isset($this->array_form_text_js[$form['T']]) ) {
+                                                       if ( isset($this->array_form_text_js[$form['T']]['F']) ) { $totaladdnum++; }
+                                                       if ( isset($this->array_form_text_js[$form['T']]['K']) ) { $totaladdnum++; }
+                                                       if ( isset($this->array_form_text_js[$form['T']]['V']) ) { $totaladdnum++; }
+                                                       if ( isset($this->array_form_text_js[$form['T']]['C']) ) { $totaladdnum++; }
+                                               }
+                                       }
+                                       if ( $form['typ'] == 'Bt' ) {
+                                               if ( isset($this->array_form_button_js[$form['T']]) ) { $totaladdnum++; }
+                                               if ( isset($this->form_button_icon[$form['T']]) ) { 
+                                                       $totaladdnum++; 
+                                                       if ( $this->form_button_icon[$form['T']]['Indexed'] ) { $totaladdnum++; }
+                                               }
+                                               if ( $form['subtype'] == 'radio' ) { $totaladdnum+=2; }
+                                               else if ( $form['subtype'] == 'checkbox' && $this->formUseZapD ) { $totaladdnum++; }
+                                               else if ( $form['subtype'] == 'checkbox' && !$this->formUseZapD ) { $totaladdnum+=2; }
+                                       }
+                                       if ( $form['typ'] == 'Ch' ) {
+                                               if ( isset($this->array_form_choice_js[$form['T']]) ) { $totaladdnum++; }
+                                       }
+                               }
+                       }
+}
+
+// In _putpages
+function addFormIds($n, &$s, &$annotid) {
+                               foreach( $this->forms as $form ) {
+                                       if ( $form['page'] == $n ) {
+                                               $s .= ($annotid) . ' 0 R ';
+                                               $annotid++;
+                                               if ( $form['typ'] == 'Tx' ) {
+                                                       if ( isset($this->array_form_text_js[$form['T']]) ) {
+                                                               if ( isset($this->array_form_text_js[$form['T']]['F']) ) { $annotid++; }
+                                                               if ( isset($this->array_form_text_js[$form['T']]['K']) ) { $annotid++; }
+                                                               if ( isset($this->array_form_text_js[$form['T']]['V']) ) { $annotid++; }
+                                                               if ( isset($this->array_form_text_js[$form['T']]['C']) ) { $annotid++; }
+                                                       }
+                                               }
+                                               if ( $form['typ'] == 'Bt' ) {
+                                                       if ( isset($this->array_form_button_js[$form['T']]) ) { $annotid++; }
+                                                       if ( isset($this->form_button_icon[$form['T']]) ) { 
+                                                               $annotid++; 
+                                                               if ( $this->form_button_icon[$form['T']]['Indexed'] ) { $annotid++; }
+                                                       }
+                                                       if ( $form['subtype'] == 'radio' ) { $annotid+=2; }
+                                                       else if ( $form['subtype'] == 'checkbox' && $this->formUseZapD ) { $annotid++; }
+                                                       else if ( $form['subtype'] == 'checkbox' && !$this->formUseZapD ) { $annotid+=2; }
+                                               }
+                                               if ( $form['typ'] == 'Ch' ) {
+                                                       if ( isset($this->array_form_choice_js[$form['T']]) ) { $annotid++; }
+                                               }
+                                       }
+                               }
+}
+
+// In _putannots
+function _putFormItems($n, $hPt) {
+                               foreach( $this->forms as $val) {
+                                       if ( $val['page'] == $n ) {
+                                               if ( $val['typ'] == 'Tx' ) $this->_putform_tx( $val, $hPt );
+                                               if ( $val['typ'] == 'Ch' ) $this->_putform_ch( $val, $hPt );
+                                               if ( $val['typ'] == 'Bt' ) $this->_putform_bt( $val, $hPt );
+                                       }
+                               }
+}
+
+// In _putannots
+function _putRadioItems($n) {
+               // Output Radio Groups
+               $key = 1;
+               foreach($this->form_radio_groups AS $name=>$frg) {
+                       $this->mpdf->_newobj();
+                       $this->pdf_acro_array .= $this->mpdf->n.' 0 R ';
+                       $this->mpdf->_out('<<');
+                       $this->mpdf->_out('/Type /Annot ');
+                       $this->mpdf->_out('/Subtype /Widget');
+                       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (3000 + $key++))));
+                       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
+                       $this->mpdf->_out('/Rect [0 0 0 0] ');
+                       $this->mpdf->_out('/FT /Btn ');
+                       if ($frg['disabled']) { $flags=array(1,3,15,16); }      // NoExport and readonly
+                       else { $flags=array(15,16); }   // Flags for Radiobutton, and NoToggleToOff
+                       $this->mpdf->_out('/Ff '.$this->_setflag($flags) );
+                       $kstr = '';
+                       $optstr = '';
+                       foreach($frg['kids'] AS $kid) {
+                               $kstr .= $this->forms[$kid['n']]['obj'].' 0 R ';
+               //              $optstr .= ' '.$this->mpdf->_textstring($kid['OPT']).' ';
+                       }
+                       $this->mpdf->_out('/Kids [ '.$kstr.' ] ');      // 11 0 R 12 0 R etc.
+               //      $this->mpdf->_out('/Opt [ '.$optstr.' ] ');
+
+                       //V entry holds index corresponding to the appearance state of
+                       //whichever child field is currently in the on state = or Off
+                       if (isset($frg['on'])) { $state = $frg['on']; }
+                       else { $state = 'Off'; }
+                       $this->mpdf->_out('/V /'.$state.' ');
+                       $this->mpdf->_out('/DV /'.$state.' ');
+                       $this->mpdf->_out('/T '.$this->mpdf->_textstring($name).' ');
+                       $this->mpdf->_out('>>');
+                       $this->mpdf->_out('endobj');
+               }
+}
+
+function _putFormsCatalog() {
+               if (isset($this->pdf_acro_array) ) {
+                       $this->mpdf->_out('/AcroForm << /DA (/F1 0 Tf 0 g )');
+                       $this->mpdf->_out('/Q 0');
+                       $this->mpdf->_out('/Fields ['.$this->pdf_acro_array.']');
+                       $f = '';
+                       foreach($this->form_fonts AS $fn) {
+                               if (is_array($this->mpdf->fonts[$fn]['n'])) { $this->mpdf->Error("Cannot use fonts with SMP or SIP characters for interactive Form elements"); }
+                               $f .= '/F'.$this->mpdf->fonts[$fn]['i'].' '.$this->mpdf->fonts[$fn]['n'].' 0 R ';
+                       }
+                       $this->mpdf->_out('/DR << /Font << '.$f.' >> >>');
+                       // CO Calculation Order
+                       if ( $this->pdf_array_co ) {
+                               $this->mpdf->_out('/CO ['.$this->pdf_array_co.']'); 
+                       }
+                       $this->mpdf->_out('/NeedAppearances true');
+                       $this->mpdf->_out('>>');
+               }
+}
+
+
+
+function SetFormButtonJS( $name, $js ) {
+       $js = str_replace("\t",' ', trim($js) );
+       if ( isset($name) && isset($js) ) {
+               $this->array_form_button_js[$this->mpdf->_escape($name)] = array(
+                               'js' => $js
+                               );
+       }
+}
+
+function SetFormChoiceJS( $name, $js ) {
+       $js = str_replace("\t",' ', trim($js) );
+       if ( isset($name) && isset($js) ) {
+               $this->array_form_choice_js[$this->mpdf->_escape($name)] = array(
+                               'js' => $js
+                               );
+       }
+}
+
+function SetFormTextJS( $name, $js) {
+   for ($i=0; $i<count($js); $i++) {
+       $j = str_replace("\t",' ', trim($js[$i][1]) );
+       $format = $js[$i][0];
+       if ($name) {
+               $this->array_form_text_js[$this->mpdf->_escape($name)][$format] = array('js' => $j);
+       }
+   }
+}
+
+
+function Win1252ToPDFDocEncoding($txt) {
+       $Win1252ToPDFDocEncoding = array(
+               chr(0200) => chr(0240), chr(0214) => chr(0226), chr(0212) => chr(0227), chr(0237) => chr(0230), 
+               chr(0225) => chr(0200), chr(0210) => chr(0032), chr(0206) => chr(0201), chr(0207) => chr(0202),
+               chr(0205) => chr(0203), chr(0227) => chr(0204), chr(0226) => chr(0205), chr(0203) => chr(0206),
+               chr(0213) => chr(0210), chr(0233) => chr(0211), chr(0211) => chr(0213), chr(0204) => chr(0214),
+               chr(0223) => chr(0215), chr(0224) => chr(0216), chr(0221) => chr(0217), chr(0222) => chr(0220),
+               chr(0202) => chr(0221), chr(0232) => chr(0235), chr(0230) => chr(0037), chr(0231) => chr(0222),
+               chr(0216) => chr(0231), chr(0240) => chr(0040)
+       ); // mPDF 5.3.46
+       return strtr($txt, $Win1252ToPDFDocEncoding );
+}
+
+
+function SetFormText( $w, $h, $name, $value = '', $default = '', $title = '', $flags = array(), $align='L', $hidden = false, $maxlen=-1, $js='', $background_col=false, $border_col=false ) {
+       // Flags: 1 - Readonly; 2 - Required; 3 - No export; 13 - textarea; 14 - Password
+       $this->formn++;
+       if( $align == 'C' ) { $align = '1'; }
+       else if( $align == 'R' ) { $align = '2'; }
+       else { $align = '0'; }
+       if ($maxlen < 1) { $maxlen = false; }
+       if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) {
+                       $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)"); 
+       }
+       if ($this->mpdf->onlyCoreFonts) { 
+               $value = $this->Win1252ToPDFDocEncoding($value); 
+               $default = $this->Win1252ToPDFDocEncoding($default); 
+               $title = $this->Win1252ToPDFDocEncoding($title); 
+       }
+       else { 
+               if (isset($this->mpdf->CurrentFont['subset'])) {
+                       $this->mpdf->UTF8StringToArray($value, true);   // Add characters to font subset
+                       $this->mpdf->UTF8StringToArray($default, true); // Add characters to font subset
+                       $this->mpdf->UTF8StringToArray($title, true);   // Add characters to font subset
+               }
+               if ($value) $value = $this->mpdf->UTF8ToUTF16BE($value, true);
+               if ($default ) $default = $this->mpdf->UTF8ToUTF16BE($default, true);
+               $title = $this->mpdf->UTF8ToUTF16BE($title, true); 
+       }
+       if ($background_col) { $bg_c = $this->mpdf->SetColor($background_col, 'CodeOnly'); }
+       else { $bg_c = $this->form_background_color; }
+       if ($border_col) { $bc_c = $this->mpdf->SetColor($border_col, 'CodeOnly'); }
+       else { $bc_c = $this->form_border_color; }
+       $f = array(     'n'      => $this->formn,
+                       'typ'    => 'Tx',
+                       'page'   => $this->mpdf->page,
+                       'x'      => $this->mpdf->x,
+                       'y'      => $this->mpdf->y,
+                       'w'      => $w,
+                       'h'      => $h,
+                       'T'      => $name,
+                       'FF'     => $flags,
+                       'V'      => $value,
+                       'DV'     => $default,
+                       'TU'     => $title,
+                       'hidden' => $hidden,
+                       'Q'      => $align,
+                       'maxlen'         => $maxlen,
+                       'BS_W'   => $this->form_border_width,
+                       'BS_S'   => $this->form_border_style,
+                       'BC_C'   => $bc_c,
+                       'BG_C'   => $bg_c,
+                       'style' => array(
+                               'font'  => $this->mpdf->FontFamily,
+                               'fontsize'      => $this->mpdf->FontSizePt,
+                               'fontcolor'     => $this->mpdf->TextColor,
+                       )
+       );
+       if (is_array($js) && count($js)>0) { $this->SetFormTextJS( $name, $js); }       // mPDF 5.3.25
+       if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
+       else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
+       else { 
+                       if ($this->mpdf->ColActive) { 
+                               $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
+                                       'h' => $h);
+                               $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn; 
+                       }
+               $this->forms[$this->formn] = $f; 
+       }
+       if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) { 
+               $this->form_fonts[] = $this->mpdf->FontFamily; 
+               $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
+       }
+       if ( !$hidden )         $this->mpdf->x += $w;
+
+}
+
+
+       function SetFormChoice( $w, $h, $name, $flags, $array, $align='L', $js = '' ) {
+               $this->formn++;
+               if( $this->mpdf->blk[$this->mpdf->blklvl]['direction'] == 'rtl' ) { $align = '2'; }
+               else { $align = '0'; }
+               if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) { 
+                       $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)"); 
+               }
+               if ($this->mpdf->onlyCoreFonts) { 
+                       for($i=0;$i<count($array['VAL']);$i++) {
+                               $array['VAL'][$i] = $this->Win1252ToPDFDocEncoding($array['VAL'][$i]); 
+                               $array['OPT'][$i] = $this->Win1252ToPDFDocEncoding($array['OPT'][$i]); 
+                       }
+               }
+               else { 
+                       for($i=0;$i<count($array['VAL']);$i++) {
+                               if (isset($this->mpdf->CurrentFont['subset'])) {
+                                       $this->mpdf->UTF8StringToArray($array['VAL'][$i], true);        // Add characters to font subset
+                                       $this->mpdf->UTF8StringToArray($array['OPT'][$i], true);        // Add characters to font subset
+                               }
+                               if ($array['VAL'][$i] ) $array['VAL'][$i] = $this->mpdf->UTF8ToUTF16BE($array['VAL'][$i], true);
+                               if ($array['OPT'][$i] ) $array['OPT'][$i] = $this->mpdf->UTF8ToUTF16BE($array['OPT'][$i], true);
+                       }
+               }
+               $f = array(     'n'     => $this->formn,
+                       'typ'   => 'Ch',
+                       'page'  => $this->mpdf->page,
+                       'x'     => $this->mpdf->x,
+                       'y'     => $this->mpdf->y,
+                       'w'     => $w,
+                       'h'     => $h,
+                       'T'     => $name,
+                       'OPT'   => $array,
+                       'FF'    => $flags,
+                       'Q'      => $align,
+                       'BS_W'   => $this->form_border_width,
+                       'BS_S'   => $this->form_border_style,
+                       'BC_C'   => $this->form_border_color,
+                       'BG_C'   => $this->form_background_color,
+                       'style' => array(
+                               'font'  => $this->mpdf->FontFamily,
+                               'fontsize'      => $this->mpdf->FontSizePt,
+                               'fontcolor'     => $this->mpdf->TextColor,
+                       )
+               );
+               if ($js) { $this->SetFormChoiceJS( $name, $js ); }
+               if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
+               else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
+               else { 
+                       if ($this->mpdf->ColActive) { 
+                               $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
+                                       'h' => $h);
+                               $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn; 
+                       }
+                       $this->forms[$this->formn] = $f; 
+               }
+               if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) { 
+                       $this->form_fonts[] = $this->mpdf->FontFamily; 
+                       $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
+               }
+               $this->mpdf->x += $w;
+       }
+
+       // CHECKBOX
+       function SetCheckBox( $w, $h, $name, $value, $title = '', $checked = false, $flags = array(), $disabled=false  ) {
+               $this->SetFormButton( $w, $h, $name, $value, 'checkbox', $title, $flags, $checked, $disabled );
+               $this->mpdf->x += $w;
+       }
+
+
+       // RADIO
+       function SetRadio( $w, $h, $name, $value, $title = '', $checked = false, $flags = array(), $disabled=false ) {
+               $this->SetFormButton( $w, $h, $name, $value, 'radio', $title, $flags, $checked, $disabled );
+               $this->mpdf->x += $w;
+       }
+
+
+       function SetFormReset( $w, $h, $name, $value = 'Reset', $title = '', $flags = array(), $background_col=false, $border_col=false, $noprint=false ) {
+               if (!$name) { $name = 'Reset'; }
+               $this->SetFormButton( $w, $h, $name, $value, 'reset', $title, $flags, false, false, $background_col, $border_col, $noprint);
+               $this->mpdf->x += $w;
+       }
+
+
+       function SetJSButton( $w, $h, $name, $value, $js, $image_id = 0, $title = '', $flags = array(), $indexed=false , $background_col=false, $border_col=false, $noprint=false ) {
+               $this->SetFormButton( $w, $h, $name, $value, 'js_button', $title, $flags, false, false, $background_col, $border_col, $noprint);
+               // pos => 1 = no caption, icon only; 0 = caption only 
+               if ($image_id) {
+                       $this->form_button_icon[$this->mpdf->_escape($name)] = array(
+                               'pos' => 1,     
+                               'image_id' => $image_id, 
+                               'Indexed' => $indexed,
+                               );
+               }
+               if ($js) { $this->SetFormButtonJS( $name, $js ); }
+               $this->mpdf->x += $w;
+       }
+
+
+       function SetFormSubmit( $w, $h, $name, $value = 'Submit', $url, $title = '', $typ = 'html', $method = 'POST', $flags = array(), $background_col=false, $border_col=false, $noprint=false) {
+               if (!$name) { $name = 'Submit'; }
+               $this->SetFormButton( $w, $h, $name, $value, 'submit', $title, $flags, false, false, $background_col, $border_col, $noprint);
+               $this->forms[$this->formn]['URL'] = $url;
+               $this->forms[$this->formn]['method'] = $method;
+               $this->forms[$this->formn]['exporttype'] = $typ;
+               $this->mpdf->x += $w;
+       }
+
+
+       function SetFormButtonText( $ca, $rc = '', $ac = '' ) {
+               if ($this->mpdf->onlyCoreFonts) { 
+                       $ca = $this->Win1252ToPDFDocEncoding($ca); 
+                       if ($rc) $rc = $this->Win1252ToPDFDocEncoding($rc); 
+                       if ($ac) $ac = $this->Win1252ToPDFDocEncoding($ac); 
+               }
+               else { 
+                       if (isset($this->mpdf->CurrentFont['subset'])) {
+                               $this->mpdf->UTF8StringToArray($ca, true);      // Add characters to font subset
+                       }
+                       $ca = $this->mpdf->UTF8ToUTF16BE($ca, true); 
+                       if ($rc) { 
+                               if (isset($this->mpdf->CurrentFont['subset'])) { $this->mpdf->UTF8StringToArray($rc, true); }
+                               $rc = $this->mpdf->UTF8ToUTF16BE($rc, true); 
+                       }
+                       if ($ac) { 
+                               if (isset($this->mpdf->CurrentFont['subset'])) { $this->mpdf->UTF8StringToArray($ac, true); }
+                               $ac = $this->mpdf->UTF8ToUTF16BE($ac, true); 
+                       }
+               }
+               $this->form_button_text = $ca;
+               $this->form_button_text_over = $rc ? $rc : $ca;
+               $this->form_button_text_click = $ac ? $ac : $ca;
+       }
+
+
+       function SetFormButton( $bb, $hh, $name, $value, $type, $title = '', $flags = array(), $checked=false, $disabled=false, $background_col=false, $border_col=false, $noprint=false ) {
+               $this->formn++;
+               if (!preg_match('/^[a-zA-Z0-9_:\-]+$/', $name)) {
+                       $this->mpdf->Error("Field [".$name."] must have a name attribute, which can only contain letters, numbers, colon(:), undersore(_) or hyphen(-)"); 
+               }
+               if (!$this->mpdf->onlyCoreFonts) {
+                  if (isset($this->mpdf->CurrentFont['subset'])) {
+                       $this->mpdf->UTF8StringToArray($title, true);   // Add characters to font subset
+                       $this->mpdf->UTF8StringToArray($value, true);   // Add characters to font subset
+                  }
+                  $title = $this->mpdf->UTF8ToUTF16BE($title, true); 
+                  if ($type == 'checkbox') { 
+                       $uvalue = $this->mpdf->UTF8ToUTF16BE($value, true); 
+                  }
+                  else if ($type == 'radio') { 
+                       $uvalue = $this->mpdf->UTF8ToUTF16BE($value, true); 
+                       $value = mb_convert_encoding($value, 'Windows-1252', 'UTF-8'); 
+                  }
+                  else { 
+                       $value = $this->mpdf->UTF8ToUTF16BE($value, true); 
+                       $uvalue = $value;
+                  }
+               }
+               else { 
+                       $title = $this->Win1252ToPDFDocEncoding($title); 
+                       $value = $this->Win1252ToPDFDocEncoding($value);                                //// ??? not needed
+                       $uvalue = mb_convert_encoding($value, 'UTF-8', 'Windows-1252'); 
+                       $uvalue = $this->mpdf->UTF8ToUTF16BE($uvalue, true); 
+               }
+               if ($type == 'radio' || $type == 'checkbox') {
+                       if (!preg_match('/^[a-zA-Z0-9_:\-\.]+$/', $value)) {
+                               $this->mpdf->Error("Field '".$name."' must have a value, which can only contain letters, numbers, colon(:), undersore(_), hyphen(-) or period(.)"); 
+                       }
+               }
+               if ($type == 'radio') {
+                       if (!isset($this->form_radio_groups[$name])) { 
+                               $this->form_radio_groups[$name] = array(
+                                       'page' => $this->mpdf->page,
+                                       'kids' => array(),
+                               );
+                       }
+                       $this->form_radio_groups[$name]['kids'][] = array(
+                                       'n' => $this->formn, 'V'=> $value, 'OPT'=>$uvalue, 'disabled'=>$disabled
+                       );
+                       if ( $checked ) { $this->form_radio_groups[$name]['on'] = $value; }
+                       // Disable the whole radio group if one is disabled, because of inconsistency in PDF readers
+                       if ( $disabled ) { $this->form_radio_groups[$name]['disabled'] = true; }
+               }
+               if ($type == 'checkbox') {
+                       $this->form_checkboxes = true; 
+               }
+               if ( $checked ) { $activ = 1; }
+               else { $activ = 0; }
+               if ($background_col) { $bg_c = $this->mpdf->SetColor($background_col, 'CodeOnly'); }
+               else { $bg_c = $this->form_button_background_color; }
+               if ($border_col) { $bc_c = $this->mpdf->SetColor($border_col, 'CodeOnly'); }
+               else { $bc_c = $this->form_button_border_color; }
+               $f = array(     'n'     => $this->formn,
+                       'typ'   => 'Bt',
+                       'page'  => $this->mpdf->page,
+                       'subtype'       => $type,
+                       'x'     => $this->mpdf->x,
+                       'y'     => $this->mpdf->y,
+                       'w'     => $bb,
+                       'h'     => $hh,
+                       'T'     => $name,
+                       'V'     => $value,
+                       'OPT'   => $uvalue,
+                       'TU'    => $title,
+                       'FF'    => $flags,
+                       'CA'    => $this->form_button_text,
+                       'RC'    => $this->form_button_text_over,
+                       'AC'    => $this->form_button_text_click,
+                       'BS_W'   => $this->form_button_border_width,
+                       'BS_S'   => $this->form_button_border_style,
+                       'BC_C'   => $bc_c,
+                       'BG_C'   => $bg_c,
+                       'activ'  => $activ,
+                       'disabled'  => $disabled,
+                       'noprint'  => $noprint,
+                       'style'  => array(
+                               'font'  => $this->mpdf->FontFamily,
+                               'fontsize'      => $this->mpdf->FontSizePt,
+                               'fontcolor'     => $this->mpdf->TextColor,
+                       )
+               );
+               if ($this->mpdf->keep_block_together) { $this->mpdf->ktForms[]= $f; }
+               else if ($this->mpdf->writingHTMLheader || $this->mpdf->writingHTMLfooter) { $this->mpdf->HTMLheaderPageForms[]= $f; }
+               else { 
+                       if ($this->mpdf->ColActive) { 
+                               $this->mpdf->columnbuffer[] = array('s' => 'ACROFORM', 'col' => $this->mpdf->CurrCol, 'x' => $this->mpdf->x, 'y' => $this->mpdf->y,
+                                       'h' => $hh);
+                               $this->mpdf->columnForms[$this->mpdf->CurrCol][INTVAL($this->mpdf->x)][INTVAL($this->mpdf->y)] = $this->formn; 
+                       }
+                       $this->forms[$this->formn] = $f; 
+               }
+               if (!in_array($this->mpdf->FontFamily, $this->form_fonts)) { 
+                       $this->form_fonts[] = $this->mpdf->FontFamily; 
+                       $this->mpdf->fonts[$this->mpdf->FontFamily]['used'] = true;
+               }
+
+               $this->form_button_text = NULL;
+               $this->form_button_text_over = NULL;
+               $this->form_button_text_click = NULL;
+       }
+
+
+
+function SetFormBorderWidth ( $string ) {
+       switch( $string ) {
+               case 'S': $this->form_border_width = '1'; 
+                       break;
+               case 'M': $this->form_border_width = '2'; 
+                       break;
+               case 'B': $this->form_border_width = '3'; 
+                       break;
+               case '0': $this->form_border_width = '0'; 
+                       break;
+               default: $this->form_border_width = '0'; 
+                       break;
+       }
+}
+
+
+function SetFormBorderStyle ( $string ) {
+       switch( $string ) { 
+               case 'S': $this->form_border_style = 'S'; 
+                       break;
+               case 'D': $this->form_border_style = 'D /D [3]'; 
+                       break;
+               case 'B': $this->form_border_style = 'B'; 
+                       break;
+               case 'I': $this->form_border_style = 'I'; 
+                       break;
+               case 'U': $this->form_border_style = 'U'; 
+                       break;
+               default: $this->form_border_style = 'B'; 
+                       break;
+       }
+}
+
+function SetFormBorderColor ( $r, $g=-1, $b=-1 ) {
+       if ( ($r==0 and $g==0 and $b==0) || $g==-1 )
+               $this->form_border_color = sprintf('%.3F', $r/255);
+       else
+               $this->form_border_color = sprintf('%.3F %.3F %.3F', $r/255, $g/255, $b/255);
+}
+
+function SetFormBackgroundColor ( $r, $g=-1, $b=-1 ) {
+       if ( ($r==0 and $g==0 and $b==0) || $g==-1 )
+               $this->form_background_color = sprintf('%.3F', $r/255);
+       else
+               $this->form_background_color = sprintf('%.3F %.3F %.3F', $r/255, $g/255, $b/255);
+}
+
+function SetFormD ( $W, $S, $BC, $BG ) {
+       $this->SetFormBorderWidth ( $W );
+       $this->SetFormBorderStyle ( $S );
+       $this->SetFormBorderColor ( $BC );
+       $this->SetFormBackgroundColor ( $BG );
+}
+
+function _setflag( $array ) {
+       $flag = 0;
+       foreach($array as $val) { $flag += 1 << ($val-1); }
+       return $flag;
+}
+
+function _form_rect( $x, $y, $w, $h, $hPt ) {
+       $x = $x * _MPDFK;
+       $y = $hPt - ($y  * _MPDFK);
+       $x2 = $x + ($w * _MPDFK);
+       $y2 = $y - ($h * _MPDFK);
+       $rect = sprintf('%.3F %.3F %.3F %.3F', $x, $y2, $x2, $y );
+       return $rect;
+}
+
+
+function _put_button_icon( $array , $w, $h ) {
+       if (isset($array['image_id'])) {
+               $info = false;
+               foreach($this->mpdf->images AS $iid=>$img) {
+                       if ($img['i'] == $array['image_id']) { 
+                               $info = $this->mpdf->images[$iid];
+                               break; 
+                       }
+               }
+       }
+       if (!$info) { die("Cannot find Button image"); }
+       $this->mpdf->_newobj();
+       $this->mpdf->_out('<<');
+       $this->mpdf->_out('/Type /XObject');
+       $this->mpdf->_out('/Subtype /Image');
+       $this->mpdf->_out('/BBox [0 0 1 1]');
+       $this->mpdf->_out('/Length '.strlen($info['data']));
+       $this->mpdf->_out('/BitsPerComponent '.$info['bpc']);
+       if ($info['cs']=='Indexed') {
+               $this->mpdf->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->mpdf->n+1).' 0 R]');
+       }
+       else {
+               $this->mpdf->_out('/ColorSpace /'.$info['cs']);
+               if ($info['cs']=='DeviceCMYK')
+                       if($info['type']=='jpg') { $this->mpdf->_out('/Decode [1 0 1 0 1 0 1 0]'); }
+       }
+       if ( isset($info['f']) ) 
+               $this->mpdf->_out('/Filter /'.$info['f']);
+       if ( isset($info['parms']) ) 
+               $this->mpdf->_out($info['parms']);
+       $this->mpdf->_out('/Width '.$info['w']);
+       $this->mpdf->_out('/Height '.$info['h']);
+       $this->mpdf->_out('>>');
+       $this->mpdf->_putstream($info['data']);
+       $this->mpdf->_out('endobj');
+       unset($array);
+       //Palette
+       if($info['cs']=='Indexed') {
+               $filter=($this->mpdf->compress) ? '/Filter /FlateDecode ' : '';
+               $this->mpdf->_newobj();
+               $pal=($this->mpdf->compress) ? gzcompress($info['pal']) : $info['pal'];
+               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
+               $this->mpdf->_putstream($pal);
+               $this->mpdf->_out('endobj');
+       }
+
+}
+
+
+function _putform_bt( $form, $hPt ) {
+       $cc = 0;
+       $put_xobject = 0;
+       $put_js = 0;
+       $put_icon = 0;
+       $this->mpdf->_newobj();
+       $n = $this->mpdf->n;
+       if ($form['subtype'] != 'radio') $this->pdf_acro_array .= $n.' 0 R ';   // Add to /Field element
+       $this->forms[ $form['n'] ]['obj'] = $n;
+       $this->mpdf->_out('<<');
+       $this->mpdf->_out('/Type /Annot ');
+       $this->mpdf->_out('/Subtype /Widget');
+       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (7000 + $form['n']))));
+       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis'))); 
+       $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ]');
+       $form['noprint'] ? $this->mpdf->_out('/F 0 ') : $this->mpdf->_out('/F 4 ');
+       $this->mpdf->_out('/FT /Btn ');
+       $this->mpdf->_out('/H /P ');
+       if ( $form['subtype'] != 'radio' )      // mPDF 5.3.23
+               $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
+       $this->mpdf->_out('/TU '.$this->mpdf->_textstring($form['TU']) );
+       if ( isset( $this->form_button_icon[ $form['T'] ] ) ) { $form['BS_W'] = 0; }
+       if ($form['BS_W'] == 0) { $form['BC_C'] = $form['BG_C']; }
+       $bstemp = '';
+       $bstemp .= '/W '.$form['BS_W'].' ';
+       $bstemp .= '/S /'.$form['BS_S'].' ';
+       $temp = '';
+       $temp .= '/BC [ '.$form['BC_C']." ] ";
+       $temp .= '/BG [ '.$form['BG_C']." ] ";
+       if ( $form['subtype'] == 'checkbox' ) {
+               if ($form['disabled']) { 
+                       $radio_color = '0.5 0.5 0.5'; 
+                       $radio_background_color = '0.9 0.9 0.9'; 
+               }
+               else { 
+                       $radio_color = $this->form_radio_color; 
+                       $radio_background_color = $this->form_radio_background_color;
+               }
+               $temp = '';
+               $temp .= '/BC [ '.$radio_color." ] ";
+               $temp .= '/BG [ '.$radio_background_color." ] ";
+               $this->mpdf->_out("/BS << /W 1 /S /S >>");
+               $this->mpdf->_out("/MK << $temp >>");
+               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
+               if ( $form['activ'] ) {
+                               $this->mpdf->_out('/V /'.$this->mpdf->_escape($form['V']).' ');
+                               $this->mpdf->_out('/DV /'.$this->mpdf->_escape($form['V']).' ');
+                               $this->mpdf->_out('/AS /'.$this->mpdf->_escape($form['V']).' ');
+               } else {
+                       $this->mpdf->_out('/AS /Off ');
+               }
+               if ($this->formUseZapD) {
+                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts['czapfdingbats']['i'].' 0 Tf '.$radio_color.' rg)');
+                       $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off /Off >> >>");
+               }
+               else {
+                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$this->mpdf->CurrentFont['fontkey']]['i'].' 0 Tf '.$radio_color.' rg)'); 
+                       $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
+               }
+       $this->mpdf->_out('/Opt [ '.$this->mpdf->_textstring($form['OPT']).' '.$this->mpdf->_textstring($form['OPT']).' ]');
+       }
+
+
+       if ( $form['subtype'] == 'radio' ) {
+               if ($form['disabled'] || $this->form_radio_groups[$form['T']]['disabled']) { 
+                       $radio_color = '0.5 0.5 0.5'; 
+                       $radio_background_color = '0.9 0.9 0.9'; 
+               }
+               else { 
+                       $radio_color = $this->form_radio_color; 
+                       $radio_background_color = $this->form_radio_background_color;
+               }
+               $this->mpdf->_out('/Parent '.$this->form_radio_groups[$form['T']]['obj_id'].' 0 R ');
+               $temp = '';
+               $temp .= '/BC [ '.$radio_color." ] ";
+               $temp .= '/BG [ '.$radio_background_color." ] ";
+               $this->mpdf->_out("/BS << /W 1 /S /S >>");
+               $this->mpdf->_out('/MK << '.$temp.' >> ');
+               $form['FF'][] = 16;     // Radiobutton
+               $form['FF'][] = 15;     // NoToggleOff - must be same as radio button group setting?
+               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
+               if ($this->formUseZapD)
+                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts['czapfdingbats']['i'].' 0 Tf '.$radio_color.' rg)');
+               else
+                       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$this->mpdf->CurrentFont['fontkey']]['i'].' 0 Tf '.$radio_color.' rg)');
+               $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
+               if ( $form['activ'] ) {
+                       $this->mpdf->_out('/V /'.$this->mpdf->_escape($form['V']).' ');
+                       $this->mpdf->_out('/DV /'.$this->mpdf->_escape($form['V']).' ');
+                       $this->mpdf->_out('/AS /'.$this->mpdf->_escape($form['V']).' ');
+               }
+               else {
+                       $this->mpdf->_out('/AS /Off ');
+               }
+               $this->mpdf->_out("/AP << /N << /".$this->mpdf->_escape($form['V'])." ".($this->mpdf->n+1)." 0 R /Off ".($this->mpdf->n+2)." 0 R >> >>");
+       //      $this->mpdf->_out('/Opt [ '.$this->mpdf->_textstring($form['OPT']).' '.$this->mpdf->_textstring($form['OPT']).' ]');
+       }
+
+       if ( $form['subtype'] == 'reset' ) {
+               $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
+               $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
+               $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
+               $this->mpdf->_out("/BS << $bstemp >>");
+               $this->mpdf->_out('/MK << '.$temp.' >>');
+               $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
+               $this->mpdf->_out('/AA << /D << /S /ResetForm /Flags 1 >> >>');
+               $form['FF'][] = 17;
+               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
+       }
+
+
+       if ( $form['subtype'] == 'submit' ) {
+               $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
+               $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
+               $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
+               $this->mpdf->_out("/BS << $bstemp >>");
+               $this->mpdf->_out("/MK << $temp >>");
+               $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
+               // Bit 4 (8) = useGETmethod else use POST
+               // Bit 3 (4) = HTML export format (charset chosen by Adobe)--- OR ---
+               // Bit 6 (32) = XFDF export format (form of XML in UTF-8)
+               if ($form['exporttype'] == 'xfdf') { $flag = 32; }      // 'xfdf' or 'html'
+               else {
+                       if ($form['method'] == 'GET') { $flag = 12; }
+                       else { $flag = 4; }
+               }
+               // Bit 2 (2) = IncludeNoValueFields
+               if ($this->formSubmitNoValueFields) $flag += 2;
+               // To submit a value, needs to be in /AP dictionary, AND this object must contain a /Fields entry
+               // listing all fields to output
+               $this->mpdf->_out('/AA << /D << /S /SubmitForm /F ('.$form['URL'].') /Flags '.$flag.' >> >>');
+               $form['FF'][] = 17;
+               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
+       }
+
+       if ( $form['subtype'] == 'js_button' ) {
+               // Icon / image
+               if ( isset( $this->form_button_icon[ $form['T'] ] ) ) {
+                       $cc++;
+                       $temp .= '/TP '.$this->form_button_icon[$form['T']]['pos'].' ';
+                       $temp .= '/I '.($cc + $this->mpdf->n).' 0 R ';          // Normal icon
+                       $temp .= '/RI '.($cc + $this->mpdf->n).' 0 R ';         // onMouseOver
+                       $temp .= '/IX '.($cc + $this->mpdf->n).' 0 R ';         // onClick / onMouseDown
+                       $temp .= '/IF << /SW /A /S /A /A [0.0 0.0] >> ';        // Icon fit dictionary
+                       if ($this->form_button_icon[ $form['T'] ]['Indexed']) { $cc++; }
+                       $put_icon = 1;
+               }
+               $temp .= $form['CA'] ? '/CA '.$this->mpdf->_textstring($form['CA']).' ' : '/CA '.$this->mpdf->_textstring($form['T']).' ';
+               $temp .= $form['RC'] ? '/RC '.$this->mpdf->_textstring($form['RC']).' ' : '/RC '.$this->mpdf->_textstring($form['T']).' ';
+               $temp .= $form['AC'] ? '/AC '.$this->mpdf->_textstring($form['AC']).' ' : '/AC '.$this->mpdf->_textstring($form['T']).' ';
+               $this->mpdf->_out("/BS << $bstemp >>");
+               $this->mpdf->_out("/MK << $temp >>");
+               $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
+               $form['FF'][] = 17;
+               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']) );
+               // Javascript
+               if ( isset($this->array_form_button_js[$form['T']]) ) {
+                       $cc++;
+                       $this->mpdf->_out("/AA << /D ".($cc + $this->mpdf->n)." 0 R >>"); 
+                       $put_js = 1;
+               }
+       }
+
+       $this->mpdf->_out('>>');
+       $this->mpdf->_out('endobj');
+
+       // additional objects
+       // obj icon
+       if ( $put_icon == 1 ) { 
+               $this->_put_button_icon( $this->form_button_icon[ $form['T'] ], $form['w'], $form['h'] ); 
+               $put_icon = NULL; 
+       }
+       // obj + 1
+       if ( $put_js == 1 ) {
+               $this->mpdf->_set_object_javascript( $this->array_form_button_js[$form['T']]['js'] );
+               unset( $this->array_form_button_js[$form['T']] );
+               $put_js = NULL;
+       }
+
+       // RADIO and CHECK BOX appearance streams
+       $filter=($this->mpdf->compress) ? '/Filter /FlateDecode ' : '';
+       if ( $form['subtype'] == 'radio' ) {
+               // output 2 appearance streams for radio buttons on/off
+               if ($this->formUseZapD) {
+                       $fs = sprintf('%.3F', $form['style']['fontsize']*1.25);
+                       $fi = 'czapfdingbats';
+                       $r_on = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (4) Tj ET Q';
+                       $r_off = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (8) Tj ET Q';
+               }
+               else {
+                       $matrix = sprintf('%.3F 0 0 %.3F 0 %.3F', $form['style']['fontsize']*1.33/10, $form['style']['fontsize']*1.25/10, $form['style']['fontsize']);
+                       $fill = $radio_background_color.' rg 3.778 -7.410 m 2.800 -7.410 1.947 -7.047 1.225 -6.322 c 0.500 -5.600 0.138 -4.747 0.138 -3.769 c 0.138 -2.788 0.500 -1.938 1.225 -1.213 c 1.947 -0.491 2.800 -0.128 3.778 -0.128 c 4.757 -0.128 5.610 -0.491 6.334 -1.213 c 7.056 -1.938 7.419 -2.788 7.419 -3.769 c 7.419 -4.747 7.056 -5.600 6.334 -6.322 c 5.610 -7.047 4.757 -7.410 3.778 -7.410 c h f ';
+                       $circle = '3.778 -6.963 m 4.631 -6.963 5.375 -6.641 6.013 -6.004 c 6.653 -5.366 6.972 -4.619 6.972 -3.769 c 6.972 -2.916 6.653 -2.172 6.013 -1.532 c 5.375 -0.894 4.631 -0.576 3.778 -0.576 c 2.928 -0.576 2.182 -0.894 1.544 -1.532 c 0.904 -2.172 0.585 -2.916 0.585 -3.769 c 0.585 -4.619 0.904 -5.366 1.544 -6.004 c 2.182 -6.641 2.928 -6.963 3.778 -6.963 c h 3.778 -7.410 m 2.800 -7.410 1.947 -7.047 1.225 -6.322 c 0.500 -5.600 0.138 -4.747 0.138 -3.769 c 0.138 -2.788 0.500 -1.938 1.225 -1.213 c 1.947 -0.491 2.800 -0.128 3.778 -0.128 c 4.757 -0.128 5.610 -0.491 6.334 -1.213 c 7.056 -1.938 7.419 -2.788 7.419 -3.769 c 7.419 -4.747 7.056 -5.600 6.334 -6.322 c 5.610 -7.047 4.757 -7.410 3.778 -7.410 c h f ';
+                       $r_on = 'q '.$matrix.' cm '.$fill .$radio_color.' rg '.$circle.'  '.$radio_color.' rg
+5.184 -5.110 m 4.800 -5.494 4.354 -5.685 3.841 -5.685 c 3.331 -5.685 2.885 -5.494 2.501 -5.110 c 2.119 -4.725 1.925 -4.279 1.925 -3.769 c 1.925 -3.257 2.119 -2.810 2.501 -2.429 c 2.885 -2.044 3.331 -1.853 3.841 -1.853 c 4.354 -1.853 4.800 -2.044 5.184 -2.429 c 5.566 -2.810 5.760 -3.257 5.760 -3.769 c 5.760 -4.279 5.566 -4.725 5.184 -5.110 c h 
+f Q ';
+                       $r_off = 'q '.$matrix.' cm '.$fill .$radio_color.' rg '.$circle.'  Q ';
+               }
+
+               $this->mpdf->_newobj();
+               $p=($this->mpdf->compress) ? gzcompress($r_on) : $r_on;
+               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
+               $this->mpdf->_putstream($p);
+               $this->mpdf->_out('endobj');
+
+               $this->mpdf->_newobj();
+               $p=($this->mpdf->compress) ? gzcompress($r_off) : $r_off;
+               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
+               $this->mpdf->_putstream($p);
+               $this->mpdf->_out('endobj');
+       }
+       if ( $form['subtype'] == 'checkbox' ) {
+               // First output appearance stream for check box on
+               if ($this->formUseZapD) {
+                       $fs = sprintf('%.3F', $form['style']['fontsize']*1.25);
+                       $fi = 'czapfdingbats';
+                       $cb_on = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (4) Tj ET Q';
+                       $cb_off = 'q '.$radio_color .' rg BT /F'.$this->mpdf->fonts[$fi]['i'].' '.$fs.' Tf 0 0 Td (8) Tj ET Q';
+               }
+               else {
+                       $matrix = sprintf('%.3F 0 0 %.3F 0 %.3F', $form['style']['fontsize']*1.33/10, $form['style']['fontsize']*1.25/10, $form['style']['fontsize']);
+                       $fill = $radio_background_color.' rg 7.395 -0.070 m 7.395 -7.344 l 0.121 -7.344 l 0.121 -0.070 l 7.395 -0.070 l h  f ';
+                       $square = '0.508 -6.880 m 6.969 -6.880 l 6.969 -0.534 l 0.508 -0.534 l 0.508 -6.880 l h 7.395 -0.070 m 7.395 -7.344 l 0.121 -7.344 l 0.121 -0.070 l 7.395 -0.070 l h ';
+                       $cb_on = 'q '.$matrix.' cm '.$fill. $radio_color.' rg '.$square.' f '.$radio_color.' rg
+6.321 -1.352 m 5.669 -2.075 5.070 -2.801 4.525 -3.532 c 3.979 -4.262 3.508 -4.967 3.112 -5.649 c 3.080 -5.706 3.039 -5.779 2.993 -5.868 c 2.858 -6.118 2.638 -6.243 2.334 -6.243 c 2.194 -6.243 2.100 -6.231 2.052 -6.205 c 2.003 -6.180 1.954 -6.118 1.904 -6.020 c 1.787 -5.788 1.688 -5.523 1.604 -5.226 c 1.521 -4.930 1.480 -4.721 1.480 -4.600 c 1.480 -4.535 1.491 -4.484 1.512 -4.447 c 1.535 -4.410 1.579 -4.367 1.647 -4.319 c 1.733 -4.259 1.828 -4.210 1.935 -4.172 c 2.040 -4.134 2.131 -4.115 2.205 -4.115 c 2.267 -4.115 2.341 -4.232 2.429 -4.469 c 2.437 -4.494 2.444 -4.511 2.448 -4.522 c 2.451 -4.531 2.456 -4.546 2.465 -4.568 c 2.546 -4.795 2.614 -4.910 2.668 -4.910 c 2.714 -4.910 2.898 -4.652 3.219 -4.136 c 3.539 -3.620 3.866 -3.136 4.197 -2.683 c 4.426 -2.367 4.633 -2.103 4.816 -1.889 c 4.998 -1.676 5.131 -1.544 5.211 -1.493 c 5.329 -1.426 5.483 -1.368 5.670 -1.319 c 5.856 -1.271 6.066 -1.238 6.296 -1.217 c 6.321 -1.352 l h  f  Q ';
+                       $cb_off = 'q '.$matrix.' cm '.$fill. $radio_color.' rg '.$square.' f Q ';
+
+               }
+               $this->mpdf->_newobj();
+               $p=($this->mpdf->compress) ? gzcompress($cb_on) : $cb_on;
+               $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
+               $this->mpdf->_putstream($p);
+               $this->mpdf->_out('endobj');
+
+               // output appearance stream for check box off (only if not using ZapfDingbats)
+               if (!$this->formUseZapD) {
+                       $this->mpdf->_newobj();
+                       $p=($this->mpdf->compress) ? gzcompress($cb_off) : $cb_off;
+                       $this->mpdf->_out('<<'.$filter.'/Length '.strlen($p).' /Resources 2 0 R>>');
+                       $this->mpdf->_putstream($p);
+                       $this->mpdf->_out('endobj');
+               }
+
+       }
+       return $n;
+}
+
+
+function _putform_ch( $form, $hPt ) {
+       $put_js = 0;
+       $this->mpdf->_newobj();
+       $n = $this->mpdf->n;
+       $this->pdf_acro_array .= $n.' 0 R ';
+       $this->forms[ $form['n'] ]['obj'] = $n;
+
+       $this->mpdf->_out('<<');
+       $this->mpdf->_out('/Type /Annot ');
+       $this->mpdf->_out('/Subtype /Widget');
+       $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ]');
+       $this->mpdf->_out('/F 4');
+       $this->mpdf->_out('/FT /Ch');
+       if ($form['Q']) $this->mpdf->_out('/Q '.$form['Q'].'');
+       $temp = '';
+       $temp .= '/W '.$form['BS_W'].' ';
+       $temp .= '/S /'.$form['BS_S'].' ';
+       $this->mpdf->_out("/BS << $temp >>");
+
+       $temp = '';
+       $temp .= '/BC [ '.$form['BC_C']." ] ";
+       $temp .= '/BG [ '.$form['BG_C']." ] ";
+       $this->mpdf->_out('/MK << '.$temp.' >>');
+
+       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (6000 + $form['n']))));
+       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
+
+       $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
+       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
+
+       $opt = '';
+       for( $i = 0; $i < count($form['OPT']['VAL']) ; $i++ ) {
+               $opt .= '[ '.$this->mpdf->_textstring($form['OPT']['VAL'][$i]).' '.$this->mpdf->_textstring($form['OPT']['OPT'][$i]).' ] ';
+       }
+       $this->mpdf->_out('/Opt [ '.$opt.']');
+
+       // selected
+       $selectItem = false;
+       $selectIndex = false;
+       foreach ( $form['OPT']['SEL'] as $selectKey => $selectVal ) {
+       $selectName = $this->mpdf->_textstring($form['OPT']['VAL'][$selectVal]);
+       $selectItem .= ' '.$selectName.' ';
+       $selectIndex .= ' '.$selectVal.' ';
+       }
+       if ( $selectItem ) {
+               if (count($form['OPT']['SEL']) < 2) {
+               $this->mpdf->_out('/V '.$selectItem.' ');
+               $this->mpdf->_out('/DV '.$selectItem.' ');
+               }
+               else {
+               $this->mpdf->_out('/V ['.$selectItem.'] ');
+               $this->mpdf->_out('/DV ['.$selectItem.'] ');
+               }
+             $this->mpdf->_out('/I ['.$selectIndex.'] ');
+       }
+    
+       if ( is_array($form['FF']) && count($form['FF'])>0 ) {
+               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']).' ');
+       }
+       // Javascript
+       if ( isset($this->array_form_choice_js[$form['T']]) ) {
+               $this->mpdf->_out("/AA << /V ".($this->mpdf->n+1)." 0 R >>"); 
+               $put_js = 1;
+       }
+
+       $this->mpdf->_out('>>');
+       $this->mpdf->_out('endobj');
+       // obj + 1
+       if ( $put_js == 1 ) {
+               $this->mpdf->_set_object_javascript( $this->array_form_choice_js[$form['T']]['js'] );
+               unset( $this->array_form_choice_js[$form['T']] );
+               $put_js = NULL;
+       }
+
+       return $n;
+}
+
+
+function _putform_tx( $form, $hPt ) {
+       $put_js = 0;
+       $this->mpdf->_newobj();
+       $n = $this->mpdf->n;
+       $this->pdf_acro_array .= $n.' 0 R ';
+       $this->forms[ $form['n'] ]['obj'] = $n;
+
+       $this->mpdf->_out('<<');
+       $this->mpdf->_out('/Type /Annot ');
+       $this->mpdf->_out('/Subtype /Widget ');
+
+       $this->mpdf->_out('/Rect [ '.$this->_form_rect($form['x'],$form['y'],$form['w'],$form['h'], $hPt).' ] ');
+       $form['hidden'] ? $this->mpdf->_out('/F 2 ') : $this->mpdf->_out('/F 4 ');
+       $this->mpdf->_out('/FT /Tx ');
+
+       $this->mpdf->_out('/H /N ');
+       $this->mpdf->_out('/R 0 ');
+
+       if ( is_array($form['FF']) && count($form['FF'])>0 ) {
+               $this->mpdf->_out('/Ff '.$this->_setflag($form['FF']).' ');
+       }
+       if ( isset($form['maxlen']) && $form['maxlen']>0 ) {
+               $this->mpdf->_out('/MaxLen '.$form['maxlen']);
+       }
+
+       $temp = '';
+       $temp .= '/W '.$form['BS_W'].' ';
+       $temp .= '/S /'.$form['BS_S'].' ';
+       $this->mpdf->_out("/BS << $temp >>");
+
+       $temp = '';
+       $temp .= '/BC [ '.$form['BC_C']." ] ";
+       $temp .= '/BG [ '.$form['BG_C']." ] ";
+       $this->mpdf->_out('/MK <<'.$temp.' >>');
+
+       $this->mpdf->_out('/T '.$this->mpdf->_textstring($form['T']) );
+       $this->mpdf->_out('/TU '.$this->mpdf->_textstring($form['TU']) );
+       if ($form['V'] || $form['V']==='0')
+               $this->mpdf->_out('/V '.$this->mpdf->_textstring($form['V']) );
+       $this->mpdf->_out('/DV '.$this->mpdf->_textstring($form['DV']) );
+       $this->mpdf->_out('/DA (/F'.$this->mpdf->fonts[$form['style']['font']]['i'].' '.$form['style']['fontsize'].' Tf '.$form['style']['fontcolor'].')');
+       if ( $form['Q'] ) $this->mpdf->_out('/Q '.$form['Q'].'');
+
+       $this->mpdf->_out('/NM '.$this->mpdf->_textstring(sprintf('%04u-%04u', $n, (5000 + $form['n']))));
+       $this->mpdf->_out('/M '.$this->mpdf->_textstring('D:'.date('YmdHis')));
+
+
+       if ( isset($this->array_form_text_js[$form['T']]) ) {
+               $put_js = 1;
+               $cc = 0;
+               $js_str = '';
+
+               if ( isset($this->array_form_text_js[$form['T']]['F']) ) { 
+                       $cc++; 
+                       $js_str .= '/F '.($cc + $this->mpdf->n).' 0 R '; 
+               }
+               if ( isset($this->array_form_text_js[$form['T']]['K']) ) { 
+                       $cc++; 
+                       $js_str .= '/K '.($cc + $this->mpdf->n).' 0 R '; 
+               }
+               if ( isset($this->array_form_text_js[$form['T']]['V']) ) { 
+                       $cc++; 
+                       $js_str .= '/V '.($cc + $this->mpdf->n).' 0 R '; 
+               }
+               if ( isset($this->array_form_text_js[$form['T']]['C']) ) { 
+                       $cc++; 
+                       $js_str .= '/C '.($cc + $this->mpdf->n).' 0 R '; 
+                       $this->pdf_array_co .= $this->mpdf->n.' 0 R ';
+               }
+               $this->mpdf->_out('/AA << '.$js_str.' >>');
+       }
+
+       $this->mpdf->_out('>>');
+       $this->mpdf->_out('endobj');
+
+       if ( $put_js == 1 ) {
+               if ( isset($this->array_form_text_js[$form['T']]['F']) ) { 
+                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['F']['js'] ); 
+                       unset( $this->array_form_text_js[$form['T']]['F'] );
+               }
+               if ( isset($this->array_form_text_js[$form['T']]['K']) ) { 
+                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['K']['js'] ); 
+                       unset( $this->array_form_text_js[$form['T']]['K'] );
+               }
+               if ( isset($this->array_form_text_js[$form['T']]['V']) ) { 
+                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['V']['js'] ); 
+                       unset( $this->array_form_text_js[$form['T']]['V'] );
+               }
+               if ( isset($this->array_form_text_js[$form['T']]['C']) ) { 
+                       $this->mpdf->_set_object_javascript( $this->array_form_text_js[$form['T']]['C']['js'] ); 
+                       unset( $this->array_form_text_js[$form['T']]['C'] );
+               }
+       }
+       return $n;
+}
+
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/gif.php b/inc/3rdparty/libraries/mpdf/classes/gif.php
new file mode 100644 (file)
index 0000000..263513e
--- /dev/null
@@ -0,0 +1,700 @@
+<?php
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// 2009-12-22 Adapted for mPDF 4.2
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// GIF Util - (C) 2003 Yamasoft (S/C)
+// http://www.yamasoft.com
+// All Rights Reserved
+// This file can be freely copied, distributed, modified, updated by anyone under the only
+// condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
+///////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// 2009-12-22 Adapted INB 
+// Functions calling functionname($x, $len = 0) were not working on PHP5.1.5 as pass by reference
+// All edited to $len = 0; then call function.
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFLZW
+{
+       var $MAX_LZW_BITS;
+       var $Fresh, $CodeSize, $SetCodeSize, $MaxCode, $MaxCodeSize, $FirstCode, $OldCode;
+       var $ClearCode, $EndCode, $Next, $Vals, $Stack, $sp, $Buf, $CurBit, $LastBit, $Done, $LastByte;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFLZW()
+       {
+               $this->MAX_LZW_BITS = 12;
+               unSet($this->Next);
+               unSet($this->Vals);
+               unSet($this->Stack);
+               unSet($this->Buf);
+
+               $this->Next  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
+               $this->Vals  = range(0, (1 << $this->MAX_LZW_BITS)       - 1);
+               $this->Stack = range(0, (1 << ($this->MAX_LZW_BITS + 1)) - 1);
+               $this->Buf   = range(0, 279);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function deCompress($data, &$datLen)
+       {
+               $stLen  = strlen($data);
+               $datLen = 0;
+               $ret    = "";
+               $dp = 0;        // data pointer
+
+               // INITIALIZATION
+               $this->LZWCommandInit($data, $dp);
+
+               while(($iIndex = $this->LZWCommand($data, $dp)) >= 0) {
+                       $ret .= chr($iIndex);
+               }
+
+               $datLen = $dp;
+
+               if($iIndex != -2) {
+                       return false;
+               }
+
+               return $ret;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+       function LZWCommandInit(&$data, &$dp)
+       {
+                       $this->SetCodeSize = ord($data[0]);
+                       $dp += 1;
+
+                       $this->CodeSize    = $this->SetCodeSize + 1;
+                       $this->ClearCode   = 1 << $this->SetCodeSize;
+                       $this->EndCode     = $this->ClearCode + 1;
+                       $this->MaxCode     = $this->ClearCode + 2;
+                       $this->MaxCodeSize = $this->ClearCode << 1;
+
+                       $this->GetCodeInit($data, $dp);
+
+                       $this->Fresh = 1;
+                       for($i = 0; $i < $this->ClearCode; $i++) {
+                               $this->Next[$i] = 0;
+                               $this->Vals[$i] = $i;
+                       }
+
+                       for(; $i < (1 << $this->MAX_LZW_BITS); $i++) {
+                               $this->Next[$i] = 0;
+                               $this->Vals[$i] = 0;
+                       }
+
+                       $this->sp = 0;
+                       return 1;
+       }
+
+       function LZWCommand(&$data, &$dp)
+       {
+               if($this->Fresh) {
+                       $this->Fresh = 0;
+                       do {
+                               $this->FirstCode = $this->GetCode($data, $dp);
+                               $this->OldCode   = $this->FirstCode;
+                       }
+                       while($this->FirstCode == $this->ClearCode);
+
+                       return $this->FirstCode;
+               }
+
+               if($this->sp > 0) {
+                       $this->sp--;
+                       return $this->Stack[$this->sp];
+               }
+
+               while(($Code = $this->GetCode($data, $dp)) >= 0) {
+                       if($Code == $this->ClearCode) {
+                               for($i = 0; $i < $this->ClearCode; $i++) {
+                                       $this->Next[$i] = 0;
+                                       $this->Vals[$i] = $i;
+                               }
+
+                               for(; $i < (1 << $this->MAX_LZW_BITS); $i++) {
+                                       $this->Next[$i] = 0;
+                                       $this->Vals[$i] = 0;
+                               }
+
+                               $this->CodeSize    = $this->SetCodeSize + 1;
+                               $this->MaxCodeSize = $this->ClearCode << 1;
+                               $this->MaxCode     = $this->ClearCode + 2;
+                               $this->sp          = 0;
+                               $this->FirstCode   = $this->GetCode($data, $dp);
+                               $this->OldCode     = $this->FirstCode;
+
+                               return $this->FirstCode;
+                       }
+
+                       if($Code == $this->EndCode) {
+                               return -2;
+                       }
+
+                       $InCode = $Code;
+                       if($Code >= $this->MaxCode) {
+                               $this->Stack[$this->sp++] = $this->FirstCode;
+                               $Code = $this->OldCode;
+                       }
+
+                       while($Code >= $this->ClearCode) {
+                               $this->Stack[$this->sp++] = $this->Vals[$Code];
+
+                               if($Code == $this->Next[$Code]) // Circular table entry, big GIF Error!
+                                       return -1;
+
+                               $Code = $this->Next[$Code];
+                       }
+
+                       $this->FirstCode = $this->Vals[$Code];
+                       $this->Stack[$this->sp++] = $this->FirstCode;
+
+                       if(($Code = $this->MaxCode) < (1 << $this->MAX_LZW_BITS)) {
+                               $this->Next[$Code] = $this->OldCode;
+                               $this->Vals[$Code] = $this->FirstCode;
+                               $this->MaxCode++;
+
+                               if(($this->MaxCode >= $this->MaxCodeSize) && ($this->MaxCodeSize < (1 << $this->MAX_LZW_BITS))) {
+                                       $this->MaxCodeSize *= 2;
+                                       $this->CodeSize++;
+                               }
+                       }
+
+                       $this->OldCode = $InCode;
+                       if($this->sp > 0) {
+                               $this->sp--;
+                               return $this->Stack[$this->sp];
+                       }
+               }
+
+               return $Code;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function GetCodeInit(&$data, &$dp)
+       {
+                       $this->CurBit   = 0;
+                       $this->LastBit  = 0;
+                       $this->Done     = 0;
+                       $this->LastByte = 2;
+                       return 1;
+       }
+
+       function GetCode(&$data, &$dp)
+       {
+               if(($this->CurBit + $this->CodeSize) >= $this->LastBit) {
+                       if($this->Done) {
+                               if($this->CurBit >= $this->LastBit) {
+                                       // Ran off the end of my bits
+                                       return 0;
+                               }
+                               return -1;
+                       }
+
+                       $this->Buf[0] = $this->Buf[$this->LastByte - 2];
+                       $this->Buf[1] = $this->Buf[$this->LastByte - 1];
+
+                       $Count = ord($data[$dp]);
+                       $dp += 1;
+
+                       if($Count) {
+                               for($i = 0; $i < $Count; $i++) {
+                                       $this->Buf[2 + $i] = ord($data[$dp+$i]);
+                               }
+                               $dp += $Count;
+                       }
+                       else {
+                               $this->Done = 1;
+                       }
+
+                       $this->LastByte = 2 + $Count;
+                       $this->CurBit   = ($this->CurBit - $this->LastBit) + 16;
+                       $this->LastBit  = (2 + $Count) << 3;
+               }
+
+               $iRet = 0;
+               for($i = $this->CurBit, $j = 0; $j < $this->CodeSize; $i++, $j++) {
+                       $iRet |= (($this->Buf[intval($i / 8)] & (1 << ($i % 8))) != 0) << $j;
+               }
+
+               $this->CurBit += $this->CodeSize;
+               return $iRet;
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFCOLORTABLE
+{
+       var $m_nColors;
+       var $m_arColors;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFCOLORTABLE()
+       {
+               unSet($this->m_nColors);
+               unSet($this->m_arColors);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($lpData, $num)
+       {
+               $this->m_nColors  = 0;
+               $this->m_arColors = array();
+
+               for($i = 0; $i < $num; $i++) {
+                       $rgb = substr($lpData, $i * 3, 3);
+                       if(strlen($rgb) < 3) {
+                               return false;
+                       }
+
+                       $this->m_arColors[] = (ord($rgb[2]) << 16) + (ord($rgb[1]) << 8) + ord($rgb[0]);
+                       $this->m_nColors++;
+               }
+
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function toString()
+       {
+               $ret = "";
+
+               for($i = 0; $i < $this->m_nColors; $i++) {
+                       $ret .=
+                               chr(($this->m_arColors[$i] & 0x000000FF))       . // R
+                               chr(($this->m_arColors[$i] & 0x0000FF00) >>  8) . // G
+                               chr(($this->m_arColors[$i] & 0x00FF0000) >> 16);  // B
+               }
+
+               return $ret;
+       }
+
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function colorIndex($rgb)
+       {
+               $rgb  = intval($rgb) & 0xFFFFFF;
+               $r1   = ($rgb & 0x0000FF);
+               $g1   = ($rgb & 0x00FF00) >>  8;
+               $b1   = ($rgb & 0xFF0000) >> 16;
+               $idx  = -1;
+
+               for($i = 0; $i < $this->m_nColors; $i++) {
+                       $r2 = ($this->m_arColors[$i] & 0x000000FF);
+                       $g2 = ($this->m_arColors[$i] & 0x0000FF00) >>  8;
+                       $b2 = ($this->m_arColors[$i] & 0x00FF0000) >> 16;
+                       $d  = abs($r2 - $r1) + abs($g2 - $g1) + abs($b2 - $b1);
+
+                       if(($idx == -1) || ($d < $dif)) {
+                               $idx = $i;
+                               $dif = $d;
+                       }
+               }
+
+               return $idx;
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFFILEHEADER
+{
+       var $m_lpVer;
+       var $m_nWidth;
+       var $m_nHeight;
+       var $m_bGlobalClr;
+       var $m_nColorRes;
+       var $m_bSorted;
+       var $m_nTableSize;
+       var $m_nBgColor;
+       var $m_nPixelRatio;
+       var $m_colorTable;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFFILEHEADER()
+       {
+               unSet($this->m_lpVer);
+               unSet($this->m_nWidth);
+               unSet($this->m_nHeight);
+               unSet($this->m_bGlobalClr);
+               unSet($this->m_nColorRes);
+               unSet($this->m_bSorted);
+               unSet($this->m_nTableSize);
+               unSet($this->m_nBgColor);
+               unSet($this->m_nPixelRatio);
+               unSet($this->m_colorTable);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($lpData, &$hdrLen)
+       {
+               $hdrLen = 0;
+
+               $this->m_lpVer = substr($lpData, 0, 6);
+               if(($this->m_lpVer <> "GIF87a") && ($this->m_lpVer <> "GIF89a")) {
+                       return false;
+               }
+
+               $this->m_nWidth  = $this->w2i(substr($lpData, 6, 2));
+               $this->m_nHeight = $this->w2i(substr($lpData, 8, 2));
+               if(!$this->m_nWidth || !$this->m_nHeight) {
+                       return false;
+               }
+
+               $b = ord(substr($lpData, 10, 1));
+               $this->m_bGlobalClr  = ($b & 0x80) ? true : false;
+               $this->m_nColorRes   = ($b & 0x70) >> 4;
+               $this->m_bSorted     = ($b & 0x08) ? true : false;
+               $this->m_nTableSize  = 2 << ($b & 0x07);
+               $this->m_nBgColor    = ord(substr($lpData, 11, 1));
+               $this->m_nPixelRatio = ord(substr($lpData, 12, 1));
+               $hdrLen = 13;
+
+               if($this->m_bGlobalClr) {
+                       $this->m_colorTable = new CGIFCOLORTABLE();
+                       if(!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
+                               return false;
+                       }
+                       $hdrLen += 3 * $this->m_nTableSize;
+               }
+
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function w2i($str)
+       {
+               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFIMAGEHEADER
+{
+       var $m_nLeft;
+       var $m_nTop;
+       var $m_nWidth;
+       var $m_nHeight;
+       var $m_bLocalClr;
+       var $m_bInterlace;
+       var $m_bSorted;
+       var $m_nTableSize;
+       var $m_colorTable;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIFIMAGEHEADER()
+       {
+               unSet($this->m_nLeft);
+               unSet($this->m_nTop);
+               unSet($this->m_nWidth);
+               unSet($this->m_nHeight);
+               unSet($this->m_bLocalClr);
+               unSet($this->m_bInterlace);
+               unSet($this->m_bSorted);
+               unSet($this->m_nTableSize);
+               unSet($this->m_colorTable);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($lpData, &$hdrLen)
+       {
+               $hdrLen = 0;
+
+               $this->m_nLeft   = $this->w2i(substr($lpData, 0, 2));
+               $this->m_nTop    = $this->w2i(substr($lpData, 2, 2));
+               $this->m_nWidth  = $this->w2i(substr($lpData, 4, 2));
+               $this->m_nHeight = $this->w2i(substr($lpData, 6, 2));
+
+               if(!$this->m_nWidth || !$this->m_nHeight) {
+                       return false;
+               }
+
+               $b = ord($lpData{8});
+               $this->m_bLocalClr  = ($b & 0x80) ? true : false;
+               $this->m_bInterlace = ($b & 0x40) ? true : false;
+               $this->m_bSorted    = ($b & 0x20) ? true : false;
+               $this->m_nTableSize = 2 << ($b & 0x07);
+               $hdrLen = 9;
+
+               if($this->m_bLocalClr) {
+                       $this->m_colorTable = new CGIFCOLORTABLE();
+                       if(!$this->m_colorTable->load(substr($lpData, $hdrLen), $this->m_nTableSize)) {
+                               return false;
+                       }
+                       $hdrLen += 3 * $this->m_nTableSize;
+               }
+
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function w2i($str)
+       {
+               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIFIMAGE
+{
+       var $m_disp;
+       var $m_bUser;
+       var $m_bTrans;
+       var $m_nDelay;
+       var $m_nTrans;
+       var $m_lpComm;
+       var $m_gih;
+       var $m_data;
+       var $m_lzw;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function CGIFIMAGE()
+       {
+               unSet($this->m_disp);
+               unSet($this->m_bUser);
+               unSet($this->m_bTrans);
+               unSet($this->m_nDelay);
+               unSet($this->m_nTrans);
+               unSet($this->m_lpComm);
+               unSet($this->m_data);
+               $this->m_gih = new CGIFIMAGEHEADER();
+               $this->m_lzw = new CGIFLZW();
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function load($data, &$datLen)
+       {
+               $datLen = 0;
+
+               while(true) {
+                       $b = ord($data[0]);
+                       $data = substr($data, 1);
+                       $datLen++;
+
+                       switch($b) {
+                       case 0x21: // Extension
+                               $len = 0;
+                               if(!$this->skipExt($data, $len)) {
+                                       return false;
+                               }
+                               $datLen += $len;
+                               break;
+
+                       case 0x2C: // Image
+                               // LOAD HEADER & COLOR TABLE
+                               $len = 0;
+                               if(!$this->m_gih->load($data, $len)) {
+                                       return false;
+                               }
+                               $data = substr($data, $len);
+                               $datLen += $len;
+
+                               // ALLOC BUFFER
+                               $len = 0;
+
+                               if(!($this->m_data = $this->m_lzw->deCompress($data, $len))) {
+                                       return false;
+                               }
+
+                               $data = substr($data, $len);
+                               $datLen += $len;
+
+                               if($this->m_gih->m_bInterlace) {
+                                       $this->deInterlace();
+                               }
+
+                               return true;
+
+                       case 0x3B: // EOF
+                       default:
+                               return false;
+                       }
+               }
+               return false;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function skipExt(&$data, &$extLen)
+       {
+               $extLen = 0;
+
+               $b = ord($data[0]);
+               $data = substr($data, 1);
+               $extLen++;
+
+               switch($b) {
+               case 0xF9: // Graphic Control
+                       $b = ord($data[1]);
+                       $this->m_disp   = ($b & 0x1C) >> 2;
+                       $this->m_bUser  = ($b & 0x02) ? true : false;
+                       $this->m_bTrans = ($b & 0x01) ? true : false;
+                       $this->m_nDelay = $this->w2i(substr($data, 2, 2));
+                       $this->m_nTrans = ord($data[4]);
+                       break;
+
+               case 0xFE: // Comment
+                       $this->m_lpComm = substr($data, 1, ord($data[0]));
+                       break;
+
+               case 0x01: // Plain text
+                       break;
+
+               case 0xFF: // Application
+                       break;
+               }
+
+               // SKIP DEFAULT AS DEFS MAY CHANGE
+               $b = ord($data[0]);
+               $data = substr($data, 1);
+               $extLen++;
+               while($b > 0) {
+                       $data = substr($data, $b);
+                       $extLen += $b;
+                       $b    = ord($data[0]);
+                       $data = substr($data, 1);
+                       $extLen++;
+               }
+               return true;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function w2i($str)
+       {
+               return ord(substr($str, 0, 1)) + (ord(substr($str, 1, 1)) << 8);
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       function deInterlace()
+       {
+               $data = $this->m_data;
+
+               for($i = 0; $i < 4; $i++) {
+                       switch($i) {
+                       case 0:
+                               $s = 8;
+                               $y = 0;
+                               break;
+
+                       case 1:
+                               $s = 8;
+                               $y = 4;
+                               break;
+
+                       case 2:
+                               $s = 4;
+                               $y = 2;
+                               break;
+
+                       case 3:
+                               $s = 2;
+                               $y = 1;
+                               break;
+                       }
+
+                       for(; $y < $this->m_gih->m_nHeight; $y += $s) {
+                               $lne = substr($this->m_data, 0, $this->m_gih->m_nWidth);
+                               $this->m_data = substr($this->m_data, $this->m_gih->m_nWidth);
+
+                               $data =
+                                       substr($data, 0, $y * $this->m_gih->m_nWidth) .
+                                       $lne .
+                                       substr($data, ($y + 1) * $this->m_gih->m_nWidth);
+                       }
+               }
+
+               $this->m_data = $data;
+       }
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+class CGIF
+{
+       var $m_gfh;
+       var $m_lpData;
+       var $m_img;
+       var $m_bLoaded;
+
+       ///////////////////////////////////////////////////////////////////////////
+
+       // CONSTRUCTOR
+       function CGIF()
+       {
+               $this->m_gfh     = new CGIFFILEHEADER();
+               $this->m_img     = new CGIFIMAGE();
+               $this->m_lpData  = "";
+               $this->m_bLoaded = false;
+       }
+
+       ///////////////////////////////////////////////////////////////////////////
+       function ClearData() {
+               $this->m_lpData = '';
+               unSet($this->m_img->m_data);
+               unSet($this->m_img->m_lzw->Next);
+               unSet($this->m_img->m_lzw->Vals);
+               unSet($this->m_img->m_lzw->Stack);
+               unSet($this->m_img->m_lzw->Buf);
+       }
+
+       function loadFile(&$data, $iIndex)
+       {
+               if($iIndex < 0) {
+                       return false;
+               }
+               $this->m_lpData = $data;
+
+               // GET FILE HEADER
+               $len = 0;
+               if(!$this->m_gfh->load($this->m_lpData, $len)) {
+                       return false;
+               }
+
+               $this->m_lpData = substr($this->m_lpData, $len);
+
+               do {
+                       $imgLen = 0;
+                       if(!$this->m_img->load($this->m_lpData, $imgLen)) {
+                               return false;
+                       }
+                       $this->m_lpData = substr($this->m_lpData, $imgLen);
+               }
+               while($iIndex-- > 0);
+
+               $this->m_bLoaded = true;
+               return true;
+       }
+
+}
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/grad.php b/inc/3rdparty/libraries/mpdf/classes/grad.php
new file mode 100644 (file)
index 0000000..2691bf5
--- /dev/null
@@ -0,0 +1,723 @@
+<?php
+
+class grad {
+
+var $mpdf = null;
+
+function grad(&$mpdf) {
+       $this->mpdf = $mpdf;
+}
+
+// mPDF 5.3.A1
+function CoonsPatchMesh($x, $y, $w, $h, $patch_array=array(), $x_min=0, $x_max=1, $y_min=0, $y_max=1, $colspace='RGB', $return=false){
+       $s=' q ';
+       $s.=sprintf(' %.3F %.3F %.3F %.3F re W n ', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK);
+       $s.=sprintf(' %.3F 0 0 %.3F %.3F %.3F cm ', $w*_MPDFK, $h*_MPDFK, $x*_MPDFK, ($this->mpdf->h-($y+$h))*_MPDFK);
+       $n = count($this->mpdf->gradients)+1;
+       $this->mpdf->gradients[$n]['type'] = 6; //coons patch mesh
+       $this->mpdf->gradients[$n]['colorspace'] = $colspace; //coons patch mesh
+       $bpcd=65535; //16 BitsPerCoordinate
+       $trans = false;
+       $this->mpdf->gradients[$n]['stream']='';
+       for($i=0;$i<count($patch_array);$i++){
+               $this->mpdf->gradients[$n]['stream'].=chr($patch_array[$i]['f']); //start with the edge flag as 8 bit
+               for($j=0;$j<count($patch_array[$i]['points']);$j++){
+                       //each point as 16 bit
+                       if (($j % 2) == 1) {    // Y coordinate (adjusted as input is From top left)
+                               $patch_array[$i]['points'][$j]=(($patch_array[$i]['points'][$j]-$y_min)/($y_max-$y_min))*$bpcd;
+                               $patch_array[$i]['points'][$j]=$bpcd-$patch_array[$i]['points'][$j];
+                       }
+                       else {
+                               $patch_array[$i]['points'][$j]=(($patch_array[$i]['points'][$j]-$x_min)/($x_max-$x_min))*$bpcd;
+                       }
+                       if($patch_array[$i]['points'][$j]<0) $patch_array[$i]['points'][$j]=0;
+                       if($patch_array[$i]['points'][$j]>$bpcd) $patch_array[$i]['points'][$j]=$bpcd;
+                       $this->mpdf->gradients[$n]['stream'].=chr(floor($patch_array[$i]['points'][$j]/256));
+                       $this->mpdf->gradients[$n]['stream'].=chr(floor($patch_array[$i]['points'][$j]%256));
+               }
+               for($j=0;$j<count($patch_array[$i]['colors']);$j++){
+                       //each color component as 8 bit
+                       if ($colspace=='RGB') {
+                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][1]);
+                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][2]);
+                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][3]);
+                               if (isset($patch_array[$i]['colors'][$j][4]) && ord($patch_array[$i]['colors'][$j][4])<100) { $trans = true; }
+                       }
+                       else if ($colspace=='CMYK') {
+                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][1])*2.55);
+                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][2])*2.55);
+                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][3])*2.55);
+                               $this->mpdf->gradients[$n]['stream'].=chr(ord($patch_array[$i]['colors'][$j][4])*2.55);
+                               if (isset($patch_array[$i]['colors'][$j][5]) && ord($patch_array[$i]['colors'][$j][5])<100) { $trans = true; }
+                       }
+                       else if ($colspace=='Gray') {
+                               $this->mpdf->gradients[$n]['stream'].=($patch_array[$i]['colors'][$j][1]);
+                               if ($patch_array[$i]['colors'][$j][2]==1) { $trans = true; }    // transparency converted from rgba or cmyka()
+                       }
+               }
+       }
+       // TRANSPARENCY
+       if ($trans) { 
+               $this->mpdf->gradients[$n]['stream_trans']='';
+               for($i=0;$i<count($patch_array);$i++){
+                       $this->mpdf->gradients[$n]['stream_trans'].=chr($patch_array[$i]['f']);
+                       for($j=0;$j<count($patch_array[$i]['points']);$j++){
+                               //each point as 16 bit
+                               $this->mpdf->gradients[$n]['stream_trans'].=chr(floor($patch_array[$i]['points'][$j]/256));
+                               $this->mpdf->gradients[$n]['stream_trans'].=chr(floor($patch_array[$i]['points'][$j]%256));
+                       }
+                       for($j=0;$j<count($patch_array[$i]['colors']);$j++){
+                               //each color component as 8 bit // OPACITY
+                               if ($colspace=='RGB') {
+                                       $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][4])*2.55));
+                               }
+                               else if ($colspace=='CMYK') {
+                                       $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][5])*2.55));
+                               }
+                               else if ($colspace=='Gray') {
+                                       $this->mpdf->gradients[$n]['stream_trans'].=chr(intval(ord($patch_array[$i]['colors'][$j][3])*2.55));
+                               }
+                       }
+               }
+               $this->mpdf->gradients[$n]['trans'] = true;     
+               $s .= ' /TGS'.$n.' gs ';
+       }
+       //paint the gradient
+       $s .= '/Sh'.$n.' sh'."\n";
+       //restore previous Graphic State
+       $s .= 'Q'."\n";
+       if ($return) { return $s; }
+       else { $this->mpdf->_out($s); }
+}
+
+
+// type = linear:2; radial: 3;
+// Linear: $coords - array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). 
+//    The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
+// Radial: $coords - array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, 
+//    (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). 
+//    (fx, fy) should be inside the circle, otherwise some areas will not be defined
+// $col = array(R,G,B/255); or array(G/255); or array(C,M,Y,K/100)
+// $stops = array('col'=>$col [, 'opacity'=>0-1] [, 'offset'=>0-1])
+function Gradient($x, $y, $w, $h, $type, $stops=array(), $colorspace='RGB', $coords='', $extend='', $return=false, $is_mask=false) {
+       if (strtoupper(substr($type,0,1)) == 'L') { $type = 2; }        // linear
+       else if (strtoupper(substr($type,0,1)) == 'R') { $type = 3; }   // radial
+       if ($colorspace != 'CMYK' && $colorspace != 'Gray') {
+               $colorspace = 'RGB';
+       }
+       $bboxw = $w;
+       $bboxh = $h;
+       $usex = $x;
+       $usey = $y;
+       $usew = $bboxw;
+       $useh = $bboxh;
+       if ($type < 1) { $type = 2; }
+       if ($coords[0]!==false && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$coords[0],$m)) { 
+               $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+               if ($tmp) { $coords[0] = $tmp/$w; }
+       }
+       if ($coords[1]!==false && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$coords[1],$m)) { 
+               $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+               if ($tmp) { $coords[1] = 1-($tmp/$h); }
+       }
+       // LINEAR
+       if ($type == 2) { 
+               $angle = $coords[4];
+               $repeat = $coords[5];
+               // ALL POINTS SET (default for custom mPDF linear gradient) - no -moz
+               if ($coords[0]!==false && $coords[1]!==false && $coords[2]!==false && $coords[3]!==false) {
+                       // do nothing - coords used as they are
+               }
+
+               // If both a <point> and <angle> are defined, the gradient axis starts from the point and runs along the angle. The end point is 
+               // defined as before - in this case start points may not be in corners, and axis may not correctly fall in the right quadrant.
+               // NO end points (Angle defined & Start points)
+               else if ($angle!==false && $coords[0]!==false && $coords[1]!==false && $coords[2]===false && $coords[3]===false) {
+                 if ($angle==0 || $angle==360) { $coords[3]=$coords[1]; if ($coords[0]==1) $coords[2]=2; else $coords[2]=1; }
+                 else if ($angle==90) { $coords[2]=$coords[0]; $coords[3]=1; if ($coords[1]==1) $coords[3]=2; else $coords[3]=1; }
+                 else if ($angle==180) { if ($coords[4]==0) $coords[2]=-1; else $coords[2]=0; $coords[3]=$coords[1]; }
+                 else if ($angle==270) { $coords[2]=$coords[0]; if ($coords[1]==0) $coords[3]=-1; else $coords[3]=0; }
+                 else {
+                       $endx=1; $endy=1; 
+                       if ($angle <=90) { 
+                               if ($angle <=45) { $endy=tan(deg2rad($angle)); }
+                               else { $endx=tan(deg2rad(90-$angle)); }
+                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
+                               $ny = 1 - $coords[1] - (tan($b) * (1-$coords[0]));
+                               $tx = sin($b) * cos($b) * $ny;
+                               $ty = cos($b) * cos($b) * $ny;
+                               $coords[2] = 1+$tx; $coords[3] = 1-$ty; 
+                       }
+                       else if ($angle <=180) { 
+                               if ($angle <=135) { $endx=tan(deg2rad($angle-90)); }
+                               else { $endy=tan(deg2rad(180-$angle)); }
+                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
+                               $ny = 1 - $coords[1] - (tan($b) * ($coords[0]));
+                               $tx = sin($b) * cos($b) * $ny;
+                               $ty = cos($b) * cos($b) * $ny;
+                               $coords[2] =  -$tx; $coords[3] = 1-$ty;
+                       }
+                       else if ($angle <=270) { 
+                               if ($angle <=225) { $endy=tan(deg2rad($angle-180)); }
+                               else { $endx=tan(deg2rad(270-$angle)); }
+                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
+                               $ny = $coords[1] - (tan($b) * ($coords[0]));
+                               $tx = sin($b) * cos($b) * $ny;
+                               $ty = cos($b) * cos($b) * $ny;
+                               $coords[2] = -$tx; $coords[3] = $ty; 
+                       }
+                       else { 
+                               if ($angle <=315) { $endx=tan(deg2rad($angle-270)); }
+                               else { $endy=tan(deg2rad(360-$angle));  }
+                               $b = atan2(($endy*$bboxh), ($endx*$bboxw));
+                               $ny = $coords[1] - (tan($b) * (1-$coords[0]));
+                               $tx = sin($b) * cos($b) * $ny;
+                               $ty = cos($b) * cos($b) * $ny;
+                               $coords[2] = 1+$tx; $coords[3] = $ty; 
+
+                       }
+                 }
+               }
+
+               // -moz If the first parameter is only an <angle>, the gradient axis starts from the box's corner that would ensure the 
+               // axis goes through the box. The axis runs along the specified angle. The end point of the axis is defined such that the 
+               // farthest corner of the box from the starting point is perpendicular to the gradient axis at that point.
+               // NO end points or Start points (Angle defined)
+               else if ($angle!==false && $coords[0]===false && $coords[1]===false) {
+                 if ($angle==0 || $angle==360) { $coords[0]=0; $coords[1]=0; $coords[2]=1; $coords[3]=0; }
+                 else if ($angle==90) { $coords[0]=0; $coords[1]=0; $coords[2]=0; $coords[3]=1; }
+                 else if ($angle==180) { $coords[0]=1; $coords[1]=0; $coords[2]=0; $coords[3]=0; }
+                 else if ($angle==270) { $coords[0]=0; $coords[1]=1; $coords[2]=0; $coords[3]=0; }
+                 else {
+                       if ($angle <=90) { 
+                               $coords[0]=0; $coords[1]=0; 
+                               if ($angle <=45) { $endx=1; $endy=tan(deg2rad($angle)); }
+                               else { $endx=tan(deg2rad(90-$angle)); $endy=1; }
+                       }
+                       else if ($angle <=180) { 
+                               $coords[0]=1; $coords[1]=0; 
+                               if ($angle <=135) { $endx=tan(deg2rad($angle-90)); $endy=1; }
+                               else { $endx=1; $endy=tan(deg2rad(180-$angle)); }
+                       }
+                       else if ($angle <=270) { 
+                               $coords[0]=1; $coords[1]=1; 
+                               if ($angle <=225) { $endx=1; $endy=tan(deg2rad($angle-180)); }
+                               else { $endx=tan(deg2rad(270-$angle)); $endy=1; }
+                       }
+                       else { 
+                               $coords[0]=0; $coords[1]=1; 
+                               if ($angle <=315) { $endx=tan(deg2rad($angle-270)); $endy=1; }
+                               else { $endx=1; $endy=tan(deg2rad(360-$angle));  }
+                       }
+                       $b = atan2(($endy*$bboxh), ($endx*$bboxw));
+                       $h2 = $bboxh - ($bboxh * tan($b));
+                       $px = $bboxh + ($h2 * sin($b) * cos($b));
+                       $py = ($bboxh * tan($b)) + ($h2 * sin($b) * sin($b));
+                       $x1 = $px / $bboxh;
+                       $y1 = $py / $bboxh;
+                       if ($angle <=90) { $coords[2] = $x1; $coords[3] = $y1; }
+                       else if ($angle <=180) { $coords[2] = 1-$x1; $coords[3] = $y1; }
+                       else if ($angle <=270) { $coords[2] = 1-$x1; $coords[3] = 1-$y1; }
+                       else { $coords[2] = $x1; $coords[3] = 1-$y1; }
+                 }
+               }
+               // -moz If the first parameter to the gradient function is only a <point>, the gradient axis starts from the specified point, 
+               // and ends at the point you would get if you rotated the starting point by 180 degrees about the center of the box that the 
+               // gradient is to be applied to.
+               // NO angle and NO end points (Start points defined)
+               else if ((!isset($angle) || $angle===false) && $coords[0]!==false && $coords[1]!==false) {      // should have start and end defined
+                 $coords[2] = 1-$coords[0]; $coords[3] = 1-$coords[1];
+                 $angle = rad2deg(atan2($coords[3]-$coords[1],$coords[2]-$coords[0]));
+                 if ($angle < 0) { $angle += 360; }
+                 else if ($angle > 360) { $angle -= 360; }
+                 if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) { 
+                   if ($w >= $h) {
+                       $coords[1] *= $h/$w ;
+                       $coords[3] *= $h/$w ;
+                       $usew = $useh = $bboxw;
+                       $usey -= ($w-$h);
+                   }
+                   else {
+                       $coords[0] *= $w/$h ;
+                       $coords[2] *= $w/$h ;
+                       $usew = $useh = $bboxh;
+                   }
+                 }
+               }
+
+               // -moz If neither a <point> or <angle> is specified, i.e. the entire function consists of only <stop> values, the gradient 
+               // axis starts from the top of the box and runs vertically downwards, ending at the bottom of the box.
+               else {  // default values T2B
+                       // All values are set in parseMozGradient - so won't appear here
+                       $coords = array(0,0,1,0);       // default for original linear gradient (L2R)
+               }
+               $s = ' q';
+               $s .= sprintf(' %.3F %.3F %.3F %.3F re W n', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK)."\n";
+               $s .= sprintf(' %.3F 0 0 %.3F %.3F %.3F cm', $usew*_MPDFK, $useh*_MPDFK, $usex*_MPDFK, ($this->mpdf->h-($usey+$useh))*_MPDFK)."\n";
+       }
+
+       // RADIAL
+       else if ($type == 3) { 
+               $radius = $coords[4];
+               $angle = $coords[5];    // ?? no effect
+               $shape = $coords[6];
+               $size = $coords[7];
+               $repeat = $coords[8];
+               // ALL POINTS AND RADIUS SET (default for custom mPDF radial gradient) - no -moz
+               if ($coords[0]!==false && $coords[1]!==false && $coords[2]!==false && $coords[3]!==false && $coords[4]!==false) {
+                       // do nothing - coords used as they are
+               }
+               // If a <point> is defined
+               else if ($shape!==false && $size!==false) {
+                  if ($coords[2]==false) { $coords[2] = $coords[0]; }
+                  if ($coords[3]==false) { $coords[3] = $coords[1]; }
+                  // ELLIPSE
+                  if ($shape=='ellipse') {
+                       $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
+                       $corner2 = sqrt(pow($coords[0],2) + pow((1-$coords[1]),2));
+                       $corner3 = sqrt(pow((1-$coords[0]),2) + pow($coords[1],2));
+                       $corner4 = sqrt(pow((1-$coords[0]),2) + pow((1-$coords[1]),2));
+                       if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (1-$coords[0]), (1-$coords[1])); }
+                       else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
+                       else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (1-$coords[0]), (1-$coords[1])); }
+                       else { $radius = max($corner1, $corner2, $corner3, $corner4); } // farthest corner (default)
+                  }
+                  // CIRCLE
+                  else if ($shape=='circle') {
+                   if ($w >= $h) {
+                       $coords[1] = $coords[3] = ($coords[1] * $h/$w) ;
+                       $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
+                       $corner2 = sqrt(pow($coords[0],2) + pow((($h/$w)-$coords[1]),2));
+                       $corner3 = sqrt(pow((1-$coords[0]),2) + pow($coords[1],2));
+                       $corner4 = sqrt(pow((1-$coords[0]),2) + pow((($h/$w)-$coords[1]),2));
+                       if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (1-$coords[0]), (($h/$w)-$coords[1])); }
+                       else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
+                       else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (1-$coords[0]), (($h/$w)-$coords[1])); }
+                       else if ($size=='farthest-corner') { $radius = max($corner1, $corner2, $corner3, $corner4); }   // farthest corner (default)
+                       $usew = $useh = $bboxw;
+                       $usey -= ($w-$h);
+                   }
+                   else {
+                       $coords[0] = $coords[2] = ($coords[0] * $w/$h) ;
+                       $corner1 = sqrt(pow($coords[0],2) + pow($coords[1],2));
+                       $corner2 = sqrt(pow($coords[0],2) + pow((1-$coords[1]),2));
+                       $corner3 = sqrt(pow((($w/$h)-$coords[0]),2) + pow($coords[1],2));
+                       $corner4 = sqrt(pow((($w/$h)-$coords[0]),2) + pow((1-$coords[1]),2));
+                       if ($size=='closest-side') { $radius = min($coords[0], $coords[1], (($w/$h)-$coords[0]), (1-$coords[1])); }
+                       else if ($size=='closest-corner') { $radius = min($corner1, $corner2, $corner3, $corner4); }
+                       else if ($size=='farthest-side') { $radius = max($coords[0], $coords[1], (($w/$h)-$coords[0]), (1-$coords[1])); }
+                       else if ($size=='farthest-corner') { $radius = max($corner1, $corner2, $corner3, $corner4); }   // farthest corner (default)
+                       $usew = $useh = $bboxh;
+                   }
+                  }
+                  if ($radius==0) { $radius=0.001; }   // to prevent error
+                  $coords[4] = $radius; 
+               }
+
+               // -moz If entire function consists of only <stop> values
+               else {  // default values 
+                       // All values are set in parseMozGradient - so won't appear here
+                       $coords = array(0.5,0.5,0.5,0.5);       // default for radial gradient (centred)
+               }
+               $s = ' q';
+               $s .= sprintf(' %.3F %.3F %.3F %.3F re W n', $x*_MPDFK, ($this->mpdf->h-$y)*_MPDFK, $w*_MPDFK, -$h*_MPDFK)."\n";
+               $s .= sprintf(' %.3F 0 0 %.3F %.3F %.3F cm', $usew*_MPDFK, $useh*_MPDFK, $usex*_MPDFK, ($this->mpdf->h-($usey+$useh))*_MPDFK)."\n";
+       }
+
+       $n = count($this->mpdf->gradients) + 1;
+       $this->mpdf->gradients[$n]['type'] = $type;
+       $this->mpdf->gradients[$n]['colorspace'] = $colorspace;
+       $trans = false;
+       $this->mpdf->gradients[$n]['is_mask'] = $is_mask;
+       if ($is_mask) { $trans = true; }
+       if (count($stops) == 1) { $stops[1] = $stops[0]; }
+       if (!isset($stops[0]['offset'])) { $stops[0]['offset'] = 0; }
+       if (!isset($stops[(count($stops)-1)]['offset'])) { $stops[(count($stops)-1)]['offset'] = 1; }
+
+       // Fix stop-offsets set as absolute lengths
+       if ($type==2) {
+               $axisx = ($coords[2]-$coords[0])*$usew;
+               $axisy = ($coords[3]-$coords[1])*$useh;
+               $axis_length = sqrt(pow($axisx,2) + pow($axisy,2));
+       }
+       else { $axis_length = $coords[4]*$usew; }       // Absolute lengths are meaningless for an ellipse - Firefox uses Width as reference
+
+       for($i=0;$i<count($stops);$i++) {
+         if (isset($stops[$i]['offset']) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$stops[$i]['offset'],$m)) { 
+               $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+               $stops[$i]['offset'] = $tmp/$axis_length;
+         }
+       }
+
+
+       if (isset($stops[0]['offset']) && $stops[0]['offset']>0) { 
+               $firststop = $stops[0]; 
+               $firststop['offset'] = 0;
+               array_unshift($stops, $firststop); 
+       }
+       if (!$repeat && isset($stops[(count($stops)-1)]['offset']) && $stops[(count($stops)-1)]['offset']<1) {
+               $endstop = $stops[(count($stops)-1)]; 
+               $endstop['offset'] = 1;
+               $stops[] = $endstop; 
+       }
+       if ($stops[0]['offset'] > $stops[(count($stops)-1)]['offset']) { 
+               $stops[0]['offset'] = 0;
+               $stops[(count($stops)-1)]['offset'] = 1;
+       }
+
+       for($i=0;$i<count($stops);$i++) {
+               // mPDF 5.3.74
+               if ($colorspace == 'CMYK') {
+                       $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F %.3F', (ord($stops[$i]['col']{1})/100), (ord($stops[$i]['col']{2})/100), (ord($stops[$i]['col']{3})/100), (ord($stops[$i]['col']{4})/100));
+               }
+               else if ($colorspace == 'Gray') {
+                       $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F', (ord($stops[$i]['col']{1})/255));
+               }
+               else {
+                       $this->mpdf->gradients[$n]['stops'][$i]['col'] = sprintf('%.3F %.3F %.3F', (ord($stops[$i]['col']{1})/255), (ord($stops[$i]['col']{2})/255), (ord($stops[$i]['col']{3})/255));
+               }
+               if (!isset($stops[$i]['opacity'])) { $stops[$i]['opacity'] = 1; } 
+               else if ($stops[$i]['opacity'] > 1 || $stops[$i]['opacity'] < 0) { $stops[$i]['opacity'] = 1; } 
+               else if ($stops[$i]['opacity'] < 1) { 
+                       $trans = true; 
+               }
+               $this->mpdf->gradients[$n]['stops'][$i]['opacity'] = $stops[$i]['opacity'];
+               // OFFSET
+               if ($i>0 && $i<(count($stops)-1)) {
+                 if (!isset($stops[$i]['offset']) || (isset($stops[$i+1]['offset']) && $stops[$i]['offset']>$stops[$i+1]['offset']) || $stops[$i]['offset']<$stops[$i-1]['offset']) { 
+                       if (isset($stops[$i-1]['offset']) && isset($stops[$i+1]['offset'])) { 
+                               $stops[$i]['offset'] = ($stops[$i-1]['offset']+$stops[$i+1]['offset'])/2; 
+                       }
+                       else {
+                               for($j=($i+1);$j<count($stops);$j++) {
+                                       if(isset($stops[$j]['offset'])) { break; }
+                               }
+                               $int = ($stops[$j]['offset'] - $stops[($i-1)]['offset'])/($j-$i+1);
+                               for($f=0;$f<($j-$i-1);$f++) {
+                                       $stops[($i+$f)]['offset'] = $stops[($i+$f-1)]['offset'] + ($int);
+                               }
+                       }
+                 }
+               }
+               $this->mpdf->gradients[$n]['stops'][$i]['offset'] = $stops[$i]['offset'];
+               $this->mpdf->gradients[$n]['stops'][$i]['offset'] = $stops[$i]['offset'];
+       }
+
+       if ($repeat) {
+               $ns = count($this->mpdf->gradients[$n]['stops']);
+               $offs = array();
+               for($i=0;$i<$ns;$i++) {
+                       $offs[$i] = $this->mpdf->gradients[$n]['stops'][$i]['offset'];
+               }
+               $gp = 0;
+               $inside=true;
+               while($inside) {
+                  $gp++;
+                  for($i=0;$i<$ns;$i++) {
+                       $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)] = $this->mpdf->gradients[$n]['stops'][(($ns*($gp-1))+$i)];
+                       $tmp = $this->mpdf->gradients[$n]['stops'][(($ns*($gp-1))+($ns-1))]['offset']+$offs[$i] ;
+                       if ($tmp < 1) { $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)]['offset'] = $tmp; }
+                       else {
+                               $this->mpdf->gradients[$n]['stops'][(($ns*$gp)+$i)]['offset'] = 1;
+                               $inside = false;
+                               break(2);
+                       }
+                  }
+               }
+       }
+
+       if ($trans) { 
+               $this->mpdf->gradients[$n]['trans'] = true;     
+               $s .= ' /TGS'.$n.' gs ';
+       }
+       if (!is_array($extend) || count($extend) <1) { 
+               $extend=array('true', 'true');  // These are supposed to be quoted - appear in PDF file as text
+       }
+       $this->mpdf->gradients[$n]['coords'] = $coords;
+       $this->mpdf->gradients[$n]['extend'] = $extend;
+       //paint the gradient
+       $s .= '/Sh'.$n.' sh '."\n";
+       //restore previous Graphic State
+       $s .= ' Q '."\n";
+       if ($return) { return $s; }
+       else { $this->mpdf->_out($s); }
+}
+
+
+function parseMozGradient($bg) {
+   //  background[-image]: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
+   //  background[-image]: linear-gradient(left, #c7Fdde 20%, #FF0000 ); // CSS3
+   if (preg_match('/repeating-/',$bg)) { $repeat = true; }
+   else { $repeat = false; }
+   if (preg_match('/linear-gradient\((.*)\)/',$bg,$m)) {
+       $g = array();
+       $g['type'] = 2;
+       $g['colorspace'] = 'RGB';
+       $g['extend'] = array('true','true');
+       $v = trim($m[1]);
+       // Change commas inside e.g. rgb(x,x,x)
+       while(preg_match('/(\([^\)]*?),/',$v)) { $v = preg_replace('/(\([^\)]*?),/','\\1@',$v); }
+       // Remove spaces inside e.g. rgb(x, x, x)
+       while(preg_match('/(\([^\)]*?)[ ]/',$v)) { $v = preg_replace('/(\([^\)]*?)[ ]/','\\1',$v); }
+       $bgr = preg_split('/\s*,\s*/',$v);
+       for($i=0;$i<count($bgr);$i++) { $bgr[$i] = preg_replace('/@/', ',', $bgr[$i]); }
+       // Is first part $bgr[0] a valid point/angle?
+       $first = preg_split('/\s+/',trim($bgr[0]));
+       if (preg_match('/(left|center|right|bottom|top|deg|grad|rad)/i',$bgr[0]) && !preg_match('/(<#|rgb|rgba|hsl|hsla)/i',$bgr[0])) {
+               $startStops = 1; 
+       }
+       else if (trim($first[(count($first)-1)]) === "0") {
+               $startStops = 1;
+       }
+       else {
+               $check = $this->mpdf->ConvertColor($first[0]);
+               if ($check) $startStops = 0; 
+               else $startStops = 1; 
+       }
+       // first part a valid point/angle?
+       if ($startStops == 1) { // default values
+               // [<point> || <angle>,] = [<% em px left center right bottom top> || <deg grad rad 0>,]
+               if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$bgr[0],$m)) {
+                       $angle = $m[1] + 0;
+                       if (strtolower($m[2])=='deg') { $angle = $angle; }
+                       else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
+                       else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
+                       while($angle < 0) { $angle += 360; }
+                       $angle = ($angle % 360);
+               }
+               else if (trim($first[(count($first)-1)]) === "0") { $angle = 0; }
+               if (preg_match('/left/i',$bgr[0])) { $startx = 0; }
+               else if (preg_match('/right/i',$bgr[0])) { $startx = 1; }
+               if (preg_match('/top/i',$bgr[0])) { $starty = 1; }
+               else if (preg_match('/bottom/i',$bgr[0])) { $starty = 0; }
+               // Check for %? ?% or %%
+               if (preg_match('/(\d+)[%]/i',$first[0],$m)) { $startx = $m[1]/100; }
+               else if (!isset($startx) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[0],$m)) { 
+                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+                       if ($tmp) { $startx = $m[1]; }
+               }
+               if (isset($first[1]) && preg_match('/(\d+)[%]/i',$first[1],$m)) { $starty = 1 - ($m[1]/100); }
+               else if (!isset($starty) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[1],$m)) { 
+                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+                       if ($tmp) { $starty = $m[1]; }
+               }
+               if (isset($startx) && !isset($starty)) { $starty = 0.5; }
+               if (!isset($startx) && isset($starty)) { $startx = 0.5; }
+
+       }
+       // If neither a <point> or <angle> is specified, i.e. the entire function consists of only <stop> values, the gradient axis starts from the top of the box and runs vertically downwards, ending at the bottom of the box.
+       else {  // default values T2B
+               $starty = 1; $startx = 0.5;
+               $endy = 0; $endx = 0.5;
+       }
+       $coords = array();
+       if (!isset($startx)) { $startx = false; }
+       if (!isset($starty)) { $starty = false; }
+       if (!isset($endx)) { $endx = false; }
+       if (!isset($endy)) { $endy = false; }
+       if (!isset($angle)) { $angle = false; }
+       $g['coords'] = array($startx ,$starty ,$endx ,$endy, $angle, $repeat );
+       $g['stops'] = array();
+       for($i=$startStops;$i<count($bgr);$i++) {
+               $stop = array();
+               // parse stops
+               $el = preg_split('/\s+/',trim($bgr[$i]));
+               // mPDF 5.3.74
+               $col = $this->mpdf->ConvertColor($el[0]);
+               if ($col) { $stop['col'] = $col; }
+               else { $stop['col'] = $col = $this->mpdf->ConvertColor(255); }
+               if ($col{0}==1) $g['colorspace'] = 'Gray';
+               else if ($col{0}==4 || $col{0}==6) $g['colorspace'] = 'CMYK';
+               if ($col{0}==5) { $stop['opacity'] = ord($col{4})/100; }        // transparency from rgba()
+               else if ($col{0}==6) { $stop['opacity'] = ord($col{5})/100; }   // transparency from cmyka()
+               else if ($col{0}==1 && $col{2}==1) { $stop['opacity'] = ord($col{3})/100; }     // transparency converted from rgba or cmyka()
+
+               if (isset($el[1]) && preg_match('/(\d+)[%]/',$el[1],$m)) { 
+                       $stop['offset'] = $m[1]/100;
+                       if ($stop['offset']>1) { unset($stop['offset']); }
+               }
+               else if (isset($el[1]) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$el[1],$m)) { 
+                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+                       if ($tmp) { $stop['offset'] = $m[1]; }
+               }
+               $g['stops'][] = $stop;
+       }
+       if (count($g['stops'] )) { return $g; }
+   }
+   else if (preg_match('/radial-gradient\((.*)\)/',$bg,$m)) {
+       $g = array();
+       $g['type'] = 3;
+       $g['colorspace'] = 'RGB';
+       $g['extend'] = array('true','true');
+       $v = trim($m[1]);
+       // Change commas inside e.g. rgb(x,x,x)
+       while(preg_match('/(\([^\)]*?),/',$v)) { $v = preg_replace('/(\([^\)]*?),/','\\1@',$v); }
+       // Remove spaces inside e.g. rgb(x, x, x)
+       while(preg_match('/(\([^\)]*?)[ ]/',$v)) { $v = preg_replace('/(\([^\)]*?)[ ]/','\\1',$v); }
+       $bgr = preg_split('/\s*,\s*/',$v);
+       for($i=0;$i<count($bgr);$i++) { $bgr[$i] = preg_replace('/@/', ',', $bgr[$i]); }
+
+       // Is first part $bgr[0] a valid point/angle?
+       $startStops = 0; 
+       $pos_angle = false;
+       $shape_size = false;
+       $first = preg_split('/\s+/',trim($bgr[0]));
+       $checkCol = $this->mpdf->ConvertColor($first[0]);
+       if (preg_match('/(left|center|right|bottom|top|deg|grad|rad)/i',$bgr[0]) && !preg_match('/(<#|rgb|rgba|hsl|hsla)/i',$bgr[0])) {
+               $startStops=1; 
+               $pos_angle = $bgr[0];
+       }
+       else if (trim($first[(count($first)-1)]) === "0") {
+               $startStops=1;
+               $pos_angle = $bgr[0];
+       }
+       else if (preg_match('/(circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$bgr[0])) {
+               $startStops=1; 
+               $shape_size = $bgr[0];
+       }
+       else if (!$checkCol) {
+               $startStops=1;
+               $pos_angle = $bgr[0];
+       }
+       if (preg_match('/(circle|ellipse|closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$bgr[1])) {
+               $startStops=2; 
+               $shape_size = $bgr[1];
+       }
+
+       // If valid point/angle?
+       if ($pos_angle) {       // default values
+               // [<point> || <angle>,] = [<% em px left center right bottom top> || <deg grad rad 0>,]
+               if (preg_match('/left/i',$pos_angle)) { $startx = 0; }
+               else if (preg_match('/right/i',$pos_angle)) { $startx = 1; }
+               if (preg_match('/top/i',$pos_angle)) { $starty = 1; }
+               else if (preg_match('/bottom/i',$pos_angle)) { $starty = 0; }
+               // Check for %? ?% or %%
+               if (preg_match('/(\d+)[%]/i',$first[0],$m)) { $startx = $m[1]/100; }
+               else if (!isset($startx) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[0],$m)) { 
+                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+                       if ($tmp) { $startx = $m[1]; }
+               }
+               if (isset($first[1]) && preg_match('/(\d+)[%]/i',$first[1],$m)) { $starty = 1 - ($m[1]/100); }
+               else if (!isset($starty) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$first[1],$m)) { 
+                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+                       if ($tmp) { $starty = $m[1]; }
+               }
+
+/*
+               // ?? Angle has no effect in radial gradient (does not exist in CSS3 spec.)
+               if (preg_match('/([\-]*[0-9\.]+)(deg|grad|rad)/i',$pos_angle,$m)) {
+                       $angle = $m[1] + 0;
+                       if (strtolower($m[2])=='deg') { $angle = $angle; }
+                       else if (strtolower($m[2])=='grad') { $angle *= (360/400); }
+                       else if (strtolower($m[2])=='rad') { $angle = rad2deg($angle); }
+                       while($angle < 0) { $angle += 360; }
+                       $angle = ($angle % 360);
+               }
+*/
+               if (!isset($starty)) { $starty = 0.5; }
+               if (!isset($startx)) { $startx = 0.5; }
+
+       }
+       // If neither a <point> or <angle> is specified, i.e. the entire function consists of only <stop> values, the gradient axis starts from the top of the box and runs vertically downwards, ending at the bottom of the box.
+       else {  // default values Center
+               $starty = 0.5; $startx = 0.5;
+               $endy = 0.5; $endx = 0.5;
+       }
+
+       // If valid shape/size?
+       $shape = 'ellipse';     // default
+       $size = 'farthest-corner';      // default
+       if ($shape_size) {      // default values
+               if (preg_match('/(circle|ellipse)/i',$shape_size, $m)) {
+                       $shape = $m[1];
+               }
+               if (preg_match('/(closest-side|closest-corner|farthest-side|farthest-corner|contain|cover)/i',$shape_size, $m)) {
+                       $size = $m[1];
+                       if ($size=='contain') { $size = 'closest-side'; }
+                       else if ($size=='cover') { $size = 'farthest-corner'; }
+               }
+       }
+
+       $coords = array();
+       if (!isset($startx)) { $startx = false; }
+       if (!isset($starty)) { $starty = false; }
+       if (!isset($endx)) { $endx = false; }
+       if (!isset($endy)) { $endy = false; }
+       if (!isset($radius)) { $radius = false; }
+       if (!isset($angle)) { $angle = 0; }
+       $g['coords'] = array($startx ,$starty ,$endx ,$endy, $radius, $angle, $shape, $size, $repeat );
+
+       $g['stops'] = array();
+       for($i=$startStops;$i<count($bgr);$i++) {
+               $stop = array();
+               // parse stops
+               $el = preg_split('/\s+/',trim($bgr[$i]));
+               // mPDF 5.3.74
+               $col = $this->mpdf->ConvertColor($el[0]);
+               if ($col) { $stop['col'] = $col; }
+               else { $stop['col'] = $col = $this->mpdf->ConvertColor(255); }
+               if ($col{0}==1) $g['colorspace'] = 'Gray';
+               else if ($col{0}==4 || $col{0}==6) $g['colorspace'] = 'CMYK';
+               if ($col{0}==5) { $stop['opacity'] = ord($col{4})/100; }        // transparency from rgba()
+               else if ($col{0}==6) { $stop['opacity'] = ord($col{5})/100; }   // transparency from cmyka()
+               else if ($col{0}==1 && $col{2}==1) { $stop['opacity'] = ord($col{3})/100; }     // transparency converted from rgba or cmyka()
+
+               if (isset($el[1]) && preg_match('/(\d+)[%]/',$el[1],$m)) { 
+                       $stop['offset'] = $m[1]/100;
+                       if ($stop['offset']>1) { unset($stop['offset']); }
+               }
+               else if (isset($el[1]) && preg_match('/([0-9.]+(px|em|ex|pc|pt|cm|mm|in))/i',$el[1],$m)) { 
+                       $tmp = $this->mpdf->ConvertSize($m[1],$this->mpdf->w,$this->mpdf->FontSize,false);
+                       $stop['offset'] = $el[1];
+               }
+               $g['stops'][] = $stop;
+       }
+       if (count($g['stops'] )) { return $g; }
+   }
+   return array();
+} 
+
+function parseBackgroundGradient($bg) {
+       // background-gradient: linear #00FFFF #FFFF00 0 0.5 1 0.5;  or
+       // background-gradient: radial #00FFFF #FFFF00 0.5 0.5 1 1 1.2;
+
+       $v = trim($bg);
+       $bgr = preg_split('/\s+/',$v);
+       $g = array();
+       if (count($bgr)> 6) {  
+               if (strtoupper(substr($bgr[0],0,1)) == 'L' && count($bgr)==7) {  // linear
+                       $g['type'] = 2;
+                       //$coords = array(0,0,1,1 );    // 0 0 1 0 or 0 1 1 1 is L 2 R; 1,1,0,1 is R2L; 1,1,1,0 is T2B; 1,0,1,1 is B2T
+                       // Linear: $coords - array of the form (x1, y1, x2, y2) which defines the gradient vector (see linear_gradient_coords.jpg). 
+                       //    The default value is from left to right (x1=0, y1=0, x2=1, y2=0).
+                       $g['coords'] = array($bgr[3], $bgr[4], $bgr[5], $bgr[6]);
+               }
+               else if (count($bgr)==8) {      // radial
+                       $g['type'] = 3;
+                       // Radial: $coords - array of the form (fx, fy, cx, cy, r) where (fx, fy) is the starting point of the gradient with color1, 
+                       //    (cx, cy) is the center of the circle with color2, and r is the radius of the circle (see radial_gradient_coords.jpg). 
+                       //    (fx, fy) should be inside the circle, otherwise some areas will not be defined
+                       $g['coords'] = array($bgr[3], $bgr[4], $bgr[5], $bgr[6], $bgr[7]);
+               }
+               $g['colorspace'] = 'RGB';
+               // mPDF 5.3.74
+               $cor = $this->mpdf->ConvertColor($bgr[1]);
+               if ($cor{0}==1) $g['colorspace'] = 'Gray';
+               else if ($cor{0}==4 || $cor{0}==6) $g['colorspace'] = 'CMYK';
+               if ($cor) { $g['col'] = $cor; }
+               else { $g['col'] = $this->mpdf->ConvertColor(255); }
+               $cor = $this->mpdf->ConvertColor($bgr[2]);
+               if ($cor) { $g['col2'] = $cor; }
+               else { $g['col2'] = $this->mpdf->ConvertColor(255); }
+               $g['extend'] = array('true','true');
+               $g['stops'] = array(array('col'=>$g['col'], 'opacity'=>1, 'offset'=>0), array('col'=>$g['col2'], 'opacity'=>1, 'offset'=>1));
+               return $g;
+       }
+       return false;
+}
+
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/indic.php b/inc/3rdparty/libraries/mpdf/classes/indic.php
new file mode 100644 (file)
index 0000000..0573053
--- /dev/null
@@ -0,0 +1,433 @@
+<?php
+
+class indic {
+
+function indic() {
+
+}
+
+
+function substituteIndic($earr, $lang, $font) {
+       global $voltdata;
+
+       if (!isset($voltdata[$font])) {
+               include_once(_MPDF_PATH.'includes/'.$font.'.volt.php');
+               $voltdata[$font] = $volt;
+       }
+
+       foreach($earr as $eid=>$char) {
+               $earr[$eid] = sprintf("%04s", strtoupper(dechex($char))); 
+       }
+       $vstr = "0020 ".implode(" ",$earr)." 0020";
+       //============================
+       // Common Indic Punctuation marks
+       // If NOT devanagari
+       if ($lang!='hi') {
+               $vstr = str_replace('0964','007C', $vstr);      // U+0964 replace with "|"
+               $vstr = str_replace('0965','007C 007C', $vstr); // U+0964 replace with "|"
+       }
+       //============================
+       // Tamil numeral for Zero missing Added mPDF 4.2
+       if ($lang=='ta') {
+               $vstr = str_replace('0BE6','0030', $vstr);      // U+0BEB replace with "0"
+       }
+
+       //============================
+       // Re-order vowels
+
+       // DEVANAGARI vowel sign matraI[093F] before consonant
+       if ($lang=='hi') {
+               $prebasedvowels = "(093F)";
+               $nukta = "093C";
+               $halant = "094D";
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT  ==  VIRAMA
+       }
+
+       // BENGALI vowels [09BF 09C7 09C8]
+       else if ($lang=='bn') {
+
+               // Khanda Ta 09CE not in font -> replace with 09A4|09CD
+               $vstr = preg_replace('/09CE/','09A4 09CD 200D', $vstr); // mPDF 5.3.09
+
+               // BENGALI double-part vowels [09CB 09C7 09BE][09CC 09C7 09D7]
+               $vstr = str_replace('09CB','09C7 09BE', $vstr); // convert to 2 parts
+               $vstr = str_replace('09CC','09C7 09D7', $vstr); // 09C7 pre-based is then shifted below
+               $prebasedvowels = "(09BF|09C7|09C8)";
+               $nukta = "09BC";
+               $halant = "09CD";
+               // mPDF 5.0.044
+               $bnfullcons = "0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF";
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT
+               // mPDF 5.0.044
+               // .. and shifting left-based vowel further to the left in case 3 consonants together.
+               $vstr = preg_replace('/('.$bnfullcons.') '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);
+
+               // mPDF 5.0.044
+               // If left-based vowel has now been shifted to left of RA/Halant (09B0/09CD)
+               // Convert here to above-line form (E068) as it would get missed later
+               // e.g. 09B0 09CD 09AD 09C7 would be changed above => 
+               // e.g. 09C7 09B0 09CD 09AD. The 09B0 09CD should => E068
+               // ??? need to add 09BF as well (09BF|09C7|09C8)
+               $vstr = preg_replace('/(09C7|09C8) 09B0 09CD/', '\\1 E068', $vstr);
+
+       }
+
+       // GUJARATI pre-based vowel [0ABF]
+       else if ($lang=='gu') {
+               $prebasedvowels = "(0ABF)";
+               $nukta = "0ABC";
+               $halant = "0ACD";
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT
+       }
+
+       // GURMUKHI/PUNJABI pre-based vowel [0ABF]
+       else if ($lang=='pa') {
+               $prebasedvowels = "(0A3F)";
+               $nukta = "0A3C";
+               $halant = "0A4D";
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.' '.$nukta.'/','\\2 \\1 '.$nukta, $vstr);        // before NUKTA 
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$prebasedvowels.'/','\\2 \\1 '.$halant, $vstr);      // before CHAR HALANT
+       }
+
+       // TAMIL pre-based vowel [0ABF]
+       else if ($lang=='ta') {
+               // Shrii (Shree)
+               $vstr = preg_replace('/0BB6 0BCD 0BB0 0BC0/','E04B', $vstr);
+
+               // TAMIL double-part vowels [0BCA 0BC6 0BBE][0BCB 0BC7 0BBE][0BCC 0BC6 0BD7]
+               $vstr = preg_replace('/0BCA/','0BC6 0BBE', $vstr);      // convert to 2 parts
+               $vstr = preg_replace('/0BCB/','0BC7 0BBE', $vstr);      // pre-based is then shifted below
+               $vstr = preg_replace('/0BCC/','0BC6 0BD7', $vstr);
+               $prebasedvowels = "(0BC6|0BC7|0BC8)";
+               // No nukta
+               $halant = "0BCD";       // Doesn't seem to move most in front of halanted consonants
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$prebasedvowels.'/','\\2 \\1', $vstr);   // vowel sign pre-based shift left
+               // ? Only for special case KSS (already moved to left of 0BB7)
+               $vstr = preg_replace('/0B95 '.$halant.' '.$prebasedvowels.' 0BB7/','\\1 0B95 '.$halant.' 0BB7', $vstr);
+       }
+
+       // ORIYA
+       else if ($lang=='or') {
+               // ORIYA double-part vowels []
+               $vstr = str_replace('0B48','0B47 0B56', $vstr); // 2-part Vowel
+               $vstr = str_replace('0B4B','0B47 0B3E', $vstr); // 2-part Vowel
+               $vstr = str_replace('0B4C','0B47 0B57', $vstr); // 2-part Vowel
+               $orprebasedvowels = "(0B47)";
+               // No nukta
+               $halant = "0B4D";       
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$orprebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$orprebasedvowels.'/','\\2 \\1 '.$halant, $vstr);    // before CHAR HALANT
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$orprebasedvowels.'/','\\2 \\1 '.$halant, $vstr);    // before CHAR HALANT
+       }
+
+       // MALAYALAM
+       else if ($lang=='ml') {
+               // Chillus - old forms - remove ZWNJ after
+               // This font Volt rules recognises e.g. "Na Halant(Virama)" as ChilluN 
+               $vstr = preg_replace('/(0D23 0D4D|0D28 0D4D|0D30 0D4D|0D32 0D4D|0D33 0D4D) 200D/','\\1', $vstr);
+               // See Chillus in Unicode [http://en.wikipedia.org/wiki/Malayalam_script]
+               $vstr = str_replace('0D7A','0D23 0D4D', $vstr); // [mlymChilluNn] 
+               $vstr = str_replace('0D7B','0D28 0D4D', $vstr); // [mlymChilluN] 
+               $vstr = str_replace('0D7C','0D30 0D4D', $vstr); // [mlymChilluR] 
+               $vstr = str_replace('0D7D','0D32 0D4D', $vstr); // [mlymChilluL] 
+               $vstr = str_replace('0D7E','0D33 0D4D', $vstr); // [mlymChilluLl] 
+/*
+               // Chillus - 0D7A-0D7E not in font directly, but as E005-E009
+               $vstr = preg_replace('/0D23 0D4D 200D/','0D7A', $vstr);
+               $vstr = preg_replace('/0D28 0D4D 200D/','0D7B', $vstr);
+               $vstr = preg_replace('/0D30 0D4D 200D/','0D7C', $vstr);
+               $vstr = preg_replace('/0D32 0D4D 200D/','0D7D', $vstr);
+               $vstr = preg_replace('/0D33 0D4D 200D/','0D7E', $vstr);
+
+               $vstr = preg_replace('/0D7F/','E004', $vstr);   // [mlymChilluK] 
+               $vstr = preg_replace('/0D7A/','E005', $vstr);   // [mlymChilluNn] 
+               $vstr = preg_replace('/0D7B/','E006', $vstr);   // [mlymChilluN] 
+               $vstr = preg_replace('/0D7C/','E007', $vstr);   // [mlymChilluR] 
+               $vstr = preg_replace('/0D7D/','E008', $vstr);   // [mlymChilluL] 
+               $vstr = preg_replace('/0D7E/','E009', $vstr);   // [mlymChilluLl] 
+*/
+
+               // MALAYALAM double-part vowels []
+               $vstr = str_replace('0D4A','0D46 0D3E', $vstr); // 2-part Vowel
+               $vstr = str_replace('0D4B','0D47 0D3E', $vstr); // 2-part Vowel
+               $vstr = str_replace('0D4C','0D46 0D57', $vstr); // 2-part Vowel
+               $mlprebasedvowels = "(0D46|0D47|0D48)";
+               // No nukta
+               $halant = "0D4D";       
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$mlprebasedvowels.'/','\\2 \\1', $vstr); // vowel sign pre-based shift left
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$mlprebasedvowels.'/','\\2 \\1 '.$halant, $vstr);    // before CHAR HALANT
+       }
+
+       // TELUGU 
+       else if ($lang=='te') {
+               // TELUGU double-part vowels [0C48 -> 0C46 0C56]
+               $vstr = str_replace('0C48','0C46 0C56', $vstr); // 2-part Vowel 
+               $prebasedvowels = "(0C46)";
+               $abvvowels = "(0C3E|0C3F|0C40|0C46|0C47|0C4A|0C4B|0C4C|0C55)";
+               // No nukta
+               $halant = "0C4D";       
+               $tefullforms = "0C15|0C17|0C18|0C1A|0C1B|0C1C|0C1D|0C20|0C21|0C22|0C24|0C25|0C26|0C27|0C28|0C2A|0C2B|0C2D|0C2E|0C2F|0C30|0C33|0C35|0C36|0C37|0C38|0C39|E028|E029|E02A|E02B|E078|E07A|E07B";
+               $vstr = preg_replace('/('.$tefullforms .') '.$halant.' ('.$tefullforms .') '.$abvvowels .'/','\\1 \\3 '.$halant.' \\2', $vstr); // before HALANT
+       }
+
+
+       // KANNADA
+       else if ($lang=='kn') {
+               // KANNADA double-part vowels [0CC8 -> 0CC6 0CD6]
+               $vstr = str_replace('0CC0','0CBF 0CD5', $vstr); // 2-part Vowel 
+               $vstr = str_replace('0CC7','0CC6 0CD5', $vstr); // 2-part Vowel 
+               $vstr = str_replace('0CC8','0CC6 0CD6', $vstr); // 2-part Vowel AI - no glyph for single
+               $vstr = str_replace('0CCA','0CC6 0CC2', $vstr); // 2-part Vowel 
+               $vstr = str_replace('0CCB','0CC6 0CC2 0CD5', $vstr);    // 2-part Vowel 
+               $prebasedvowels = "(0CBF|0CC6)";
+               $halant = "0CCD";       
+       }
+
+
+       //============================
+
+       // SPECIALS
+
+       // DEVANAGARI Ra Halant Ra
+       if ($lang=='hi') {
+               $vstr = str_replace('0930 094D 0930','E05D 0930', $vstr);       // Ra Halant Ra => halfRa FullRa
+       }
+
+       // GUJARATI
+       if ($lang=='gu') {
+               $vstr = str_replace('0AB0 0AC2','E02E', $vstr); // Ra VowelUu => SpecialForm RaUu
+       }
+
+       // TELUGU Ra Halant <Consonant> Halant => halfRa Halant<Consonant> Halant 
+       if ($lang=='te') {
+               $vstr = preg_replace('/0C30 0C4D ([A-F0-9]{4}) 0C4D/','E021 0C4D \\1 0C4D', $vstr);     
+       }
+
+       // KANNADA 
+       // Reph at end of word becomes E0CC instead of E00B
+       if ($lang=='kn') {
+               $vstr = str_replace('0CB0 0CCD 0020','E0CC 0020', $vstr);       // mPDF 5.3.87
+       }
+
+
+       //============================
+       // MAIN BIT FROM VOLT RULES
+       foreach($voltdata[$font] AS $rid=>$reps) {
+//echo $rid . ':  ' . $vstr.'<br />';
+               $vstr = preg_replace('/'.$reps['match'].'/',$reps['replace'], $vstr);
+       } 
+//echo $vstr.'<br />'; exit;
+
+
+       //============================
+
+       // SPECIALS
+
+       // KANNADA 
+       // <Base> <BelowBase1> [<BelowBase2> ] MatraI -> <Base/MatraI ligature> <Belowbase1> etc
+       if ($lang=='kn') {
+               $matraI = "0CBF";
+               $knbase = preg_split('/\|/', "0C95|0C96|0C97|0C98|0C9A|0C9B|0C9C|0C9D|0CA0|0CA1|0CA2|0CA3|0CA4|0CA5|0CA6|0CA7|0CA8|0CAA|0CAB|0CAC|0CAD|0CAE|0CAF|0CB0|0CB2|0CB3|0CB5|0CB6|0CB7|0CB8|0CB9|E0A3|E07D|E07E");
+               $knmatraIligature = preg_split('/\|/', "E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A4|E0A1|E0A2");
+               $belowbase1 = "E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081";
+               $belowbase2 = "E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081";
+               for ($i=0; $i<count($knbase);$i++) {
+                       $vstr = preg_replace('/'.$knbase[$i].' ('.$belowbase1.') ('.$belowbase2.') '.$matraI.'/', $knmatraIligature[$i].' \\1 \\2', $vstr);
+                       $vstr = preg_replace('/'.$knbase[$i].' ('.$belowbase1.') '.$matraI.'/', $knmatraIligature[$i].' \\1', $vstr);
+               }
+       }
+
+       // KANNADA 
+       // [KanTtaFull] [matraI] => [KanTtaPartial] [matraI] 
+       if ($lang=='kn') {
+               $vstr = preg_replace('/0C9F '.$matraI.'/', 'E015 '.$matraI, $vstr);
+       }
+
+       // ORIYA 
+       if ($lang=='or') {
+               // SpecialCase Ra[0B30] Halant still left before [oryaFullNnNna] => E00F
+               $vstr = preg_replace('/0B30 '.$halant.' E00F/','E00F E069', $vstr);     // convert to Reph
+       }
+
+       //============================
+       // SHIFT REPH
+
+       // DEVANAGARI Shift Reph [E015]
+       if ($lang=='hi') {
+               // FIRSTLY - halfRa = E05D - Change this to Reph [E015]
+               $himatchhalfforms = "E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E0D3|E0D4|E0D5|E0D6|E0D7|E0D8|E0D9|E0DA|E0DB|E0DC|E0DD|E0DE|E0DF|E0E0|E0E1|E0E2|E0E3|E0E4|E0E5|E0E6|E0E7|E0E8|E0E9|E0EA|E0EB|E0EC|E0ED|E0EE|E0EF|E0F0|E0F1|E0F2|E0F3|E0F4|E0F5|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145";
+               $himatchfullforms = "0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029|0958|0959|095A|E02A|E02B|E02C|E02D|095B|E02E|E02F|E030|E031|095C|095D|E032|E033|E034|E035|E036|0929|E037|095E|E038|E039|E03A|095F|0931|E03B|0934|E03C|E03D|E03E|E03F|E040|E041|E042|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133";
+               $vstr = preg_replace('/E05D ('.$himatchhalfforms.'|'.$himatchfullforms.')/', 'E015 \\1', $vstr);
+
+               // Reph = E015 - Shift Right to just after end of syllable
+               // FullAllForms + HalfAllForms + 093E matraA
+               while(preg_match('/E015 ('.$himatchhalfforms.')/', $vstr)) {
+                       $vstr = preg_replace('/E015 ('.$himatchhalfforms.')/', '\\1 E015', $vstr);
+               }
+               $vstr = preg_replace('/E015 ('.$himatchfullforms.')/', '\\1 E015', $vstr);
+
+               // Now shift it beyond post-based vowels  // ??? Need to add others e.g. 0949,094A,094B,094C + presentation forms like E198
+               $vstr = str_replace('E015 093E', '093E E015', $vstr);
+               $vstr = preg_replace('/E015 (0940|E194|E195|E196|E197|E198)/', '\\1 E014', $vstr);      // (Small) reph [E014] to Right of matraI
+               $vstr = str_replace('E015 0947', '0947 E014', $vstr);   // (Small) reph [E014] to Right of matraI
+       }
+
+       // BENGALI Shift Reph [E068]
+       else if ($lang=='bn') {
+               $bnfullconjuncts = "E002|E003|E004|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E0D3|E0D4|E0D5|E0D6|E0D7|E0D8|E0D9|E0DA|E0DB|E0DC|E0DD|E0DE|E0DF|E0E0|E0E1|E0E2|E0E3|E0E4|E0E5|E0E6|E0E7|E0E8|E0E9|E0EA|E0EB|E0EC|E0ED|E0EE|E0EF|E0F0|E0F1|E0F2|E0F3|E0F4|E0F5|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133|E134|E135|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E|E15F|E160|E161|E162|E163|E164|E165|E166|E167|E168|E169|E16A|E16B|E16C|E16D|E16E|E16F|E170|E171|E172|E173|E174|E175|E176|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E183|E184|E185|E186|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E18F|E190|E191|E192|E193|E194|E195|E196|E197|E198|E199|E19A";
+               // $bnfullcons - set above;
+               $vstr = preg_replace('/E068 ('.$bnfullconjuncts.'|'.$bnfullcons.')/', '\\1 E068', $vstr);
+               // ? Need to shift it beyond post-base vowels 09BE, 09C0, 09D7  haven't found so can't test??
+               $vstr = preg_replace('/E068 (09BE|09C0|09D7)/', '\\1 E068', $vstr);
+       }
+
+       // GUJARATI Shift Reph [E032]
+       else if ($lang=='gu') {
+               $gufullforms = "0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5";
+               $vstr = preg_replace('/E032 ('.$gufullforms.')/', '\\1 E032', $vstr);
+               // Now shift it beyond post-based vowels  // ??? Need to add others e.g. 0949,094A,094B,094C + presentation forms like E198
+               // ? Need to shift it beyond post-base vowels 0ABE, 0AC0 haven't found so can't test??
+               $vstr = preg_replace('/E032 (0ABE|0AC0)/', '\\1 E032', $vstr);
+       }
+
+
+       // TELUGU Shift Reph to LEFT [E046|E069|E077]    [TelRaSmallOne] => E046    [TelRaSmallTwo] => E069    [TelRaSmallThree] => E077
+       else if ($lang=='te') {
+               // tefullforms defined earlier
+               $tepartialforms = "E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E07C|E07D|E07E";
+               $matraligs = "E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF";
+               $tevowels = "0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C"
+               ."|0C41|0C42|0C43|0C44";                // post matras
+               $vstr = preg_replace('/('.$tevowels.') (E046|E069|E077)/', '\\2 \\1', $vstr);
+               while(preg_match('/('.$tepartialforms.') (E046|E069|E077)/', $vstr)) {
+                       $vstr = preg_replace('/('.$tepartialforms.') (E046|E069|E077)/', '\\2 \\1', $vstr);
+               }
+               $vstr = preg_replace('/('.$tefullforms .'|'.$matraligs.') (E046|E069|E077)/', '\\2 \\1', $vstr);
+       }
+
+
+       // KANNADA Shift Reph to  RIGHT [E00B]
+       else if ($lang=='kn') {
+               $knfullforms = "0C95|0C96|0C97|0C98|0C99|0C9A|0C9B|0C9C|0C9D|0C9E|0C9F|0CA0|0CA1|0CA2|0CA3|0CA4|0CA5|0CA6|0CA7|0CA8|0CAA|0CAB|0CAC|0CAD|0CAE|0CAF|0CB0|0CB1|0CB2|0CB3|0CB5|0CB6|0CB7|0CB8|0CB9|E07D|E07E|E0A3";
+               $knpartialforms = "E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|0C9E|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E07F";
+               while(preg_match('/E00B ('.$knpartialforms.')/', $vstr)) {
+                       $vstr = preg_replace('/E00B ('.$knpartialforms.')/', '\\1 E00B', $vstr);
+               }
+               // mPDF 5.3.47  Also move Reph to right of matraIligatures
+               $knfullforms .= "|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A4|E0A1|E0A2";
+               $vstr = preg_replace('/E00B ('.$knfullforms.')/', '\\1 E00B', $vstr);
+
+               // ? Need to shift it beyond base or below-base forms - haven't found so can't test??
+               // mPDF 5.3.87
+               // E004 added to list (which is a transformed version of 0CBE)
+               $knvowels = "0CBE|0CC0|0CC1|0CC2|0CC3|0CC4|0CC7|0CC8|0CCA|0CCB|0CD5|0CD6|E004";
+               $vstr = preg_replace('/E00B ('.$knvowels.')/', '\\1 E00B', $vstr);
+       }
+
+
+       // ORIYA Shift Reph to  RIGHT [E069|E06A|E06B|E06C]
+       else if ($lang=='or') {
+               $orrephs = "E069|E06A|E06B|E06C";
+               $orfullforms = "0B15|0B16|0B17|0B18|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B1F|0B20|0B21|0B22|0B23|0B24|0B25|0B26|0B27|0B28|0B29|0B2A|0B2B|0B2C|0B2D|0B2E|0B2F|0B30|0B31|0B32|0B33|0B34|0B35|0B36|0B37|0B38|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037";
+               // E123 - E147  FullHalant forms ? add to FullForms
+               $orpartialforms = "E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E0D3|E0D4|E0D5|E0D6|E0D7|E0D8|E0D9|E0DA|E0DB|E0DC|E0DD|E0DE|E0DF|E0E0|E0E1|E0E2|E0E3|E0E4|E0E5|E0E6|E0E7|E0E8|E0E9|E0EA|E0EB|E0EC|E0ED|E0EE|E0EF|E0F0|E0F1|E0F2|E0F3|E0F4|E0F5";
+
+               // Combined MatraIReph[E06D] split [0B3F & E069] to allow reph to be shifted forwards
+               $vstr = preg_replace('/('.$orfullforms.') E06D ('.$orfullforms.') 0B3E/', '\\1 0B3F E069 \\2 0B3E', $vstr);
+
+
+               while(preg_match('/('.$orrephs.') ('.$orpartialforms.')/', $vstr)) {
+                       $vstr = preg_replace('/('.$orrephs.') ('.$orpartialforms.')/', '\\2 \\1', $vstr);
+               }
+               $vstr = preg_replace('/('.$orrephs.') ('.$orfullforms.')/', '\\2 \\1', $vstr);
+
+
+               // Combine Reph and MatraI
+               $vstr = str_replace('E069 0B3F', 'E06D', $vstr);        // Reph and MatraI -> MatraIReph
+               $vstr = str_replace('E06A 0B3F', 'E06E', $vstr);        // Reph and MatraI -> MatraIReph
+               $vstr = str_replace('E06B 0B3F', 'E06F', $vstr);        // Reph and MatraI -> MatraIReph
+       }
+
+
+       // MALAYALAM Shift Reph to LEFT [E00E] (mlylmRaVattu)
+       else if ($lang=='ml') {
+               $halant = "0D4D";       
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' 0D30/','E00E \\1', $vstr);     // 0D30 = Ra
+               $vstr = preg_replace('/([A-F0-9]{4}) '.$halant.' '.$mlprebasedvowels .' 0D30/','\\2 E00E \\1', $vstr);  // 0D30 = Ra
+
+               $mlfullforms = "0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39"
+               ."|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D";
+               // = FullConsonants + FullConjuncts
+
+               // = Add Chillu characters      // mPDF 5.0.024
+               $mlfullforms .= "|E004|E005|E006|E007|E008|E009";
+               while(preg_match('/('.$mlfullforms.') E00E/', $vstr))
+                       $vstr = preg_replace('/('.$mlfullforms.') E00E/', 'E00E \\1', $vstr);
+       }
+
+       //============================
+
+       // SHIFT post-based vowels to Left of SmallForms (NOT to left of full forms)
+
+       // TELUGU Shift 
+       if ($lang=='te') {
+               // NB $tevowels defined above
+               // NB $tefullforms defined above
+               $tebelowbase1 = "E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E";               //'Small1KaToHa'
+               $tebelowbase2 = "E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071";       // 'Small2KaToHa'
+               $vstr = preg_replace('/('.$tebelowbase2.') ('.$tevowels.')/', '\\2 \\1', $vstr);
+               $vstr = preg_replace('/('.$tebelowbase1.') ('.$tevowels.')/', '\\2 \\1', $vstr);
+       }
+
+
+       // KANNADA Shift 
+       else if ($lang=='kn') {
+               $knvowels = "0CBE|0CC0|0CC1|0CC2|0CC3|0CC4|0CC7|0CC8|0CCA|0CCB|0CD5|0CD6"
+       // mPDF 5.3.87  Shouldn't swop E082 and E047 (belowbase1) below
+       // E082 is a matraIligature
+       //      ."|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB"
+               ."|E004|E007|E008|E009|E00A";
+
+
+               // NB $knvowels defined above
+               // NB $fullforms defined above
+               // $belowbase1/2 defined above
+               $vstr = preg_replace('/('.$belowbase2.') ('.$knvowels.')/', '\\2 \\1', $vstr);
+               // mPDF 5.3.87
+               $vstr = preg_replace('/('.$belowbase1.') ('.$knvowels.')/', '\\2 \\1', $vstr);
+
+               //$vstr = preg_replace('/('.$fullforms.') ('.$knvowels.')/', '\\2 \\1', $vstr);
+       }
+
+       //============================
+       // Clear unwanted ZWJ, ZWNJ
+       // MALAYALAM
+       if ($lang=='ml') {      
+               $vstr = preg_replace('/(200C|200D) /','', $vstr);
+       }
+
+       //============================
+       // END & PUT IT BACK TOGETHER
+       $vstr = preg_replace('/^0020 (.*) 0020$/', '\\1', $vstr);
+
+       $varr = explode(" ",$vstr);
+       $e = '';
+       foreach($varr AS $v) {
+               $e.=code2utf(hexdec($v));
+       }
+       //============================
+
+       return $e;
+}
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/meter.php b/inc/3rdparty/libraries/mpdf/classes/meter.php
new file mode 100644 (file)
index 0000000..46fa9d5
--- /dev/null
@@ -0,0 +1,224 @@
+<?php
+
+class meter {
+
+
+function __construct() {
+
+}
+
+function makeSVG($tag, $type, $value, $max, $min, $optimum, $low, $high) {
+  $svg = '';
+  if ($tag == 'meter') {
+
+    if ($type=='2') {
+       /////////////////////////////////////////////////////////////////////////////////////
+       ///////// CUSTOM <meter type="2">
+       /////////////////////////////////////////////////////////////////////////////////////
+       $h = 10;
+       $w = 160;
+       $border_radius = 0.143;         // Factor of Height
+
+       $svg = '<?xml version="1.0" encoding="UTF-8"?>
+       <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+       <svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g>
+
+
+       <defs>
+       <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(222, 222, 222)" />
+       <stop offset="20%" stop-color="rgb(232, 232, 232)" />
+       <stop offset="25%" stop-color="rgb(232, 232, 232)" />
+       <stop offset="100%" stop-color="rgb(182, 182, 182)" />
+       </linearGradient>
+
+       </defs>
+';
+       $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="#f4f4f4" stroke="none" />';
+
+       // LOW to HIGH region
+       //if ($low && $high && ($low != $min || $high != $max)) {
+       if ($low && $high) {
+         $barx = (($low-$min) / ($max-$min) ) * $w;
+         $barw = (($high-$low) / ($max-$min) ) * $w;
+         $svg .= '<rect x="'.$barx.'" y="0" width="'.$barw.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="#888888" stroke-width="0.5px" />';
+       }
+
+       // OPTIMUM Marker (? AVERAGE)
+       if ($optimum) {
+         $barx = (($optimum-$min) / ($max-$min) ) * $w;
+         $barw = $h/2;
+         $barcol = '#888888';
+         $svg .= '<rect x="'.$barx.'" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
+       }
+
+       // VALUE Marker
+       if ($value) {
+         if ($min != $low && $value < $low) { $col = 'orange'; }
+         else if ($max != $high && $value > $high) { $col = 'orange'; }
+         else { $col = '#008800'; }
+         $cx = (($value-$min) / ($max-$min) ) * $w;
+         $cy = $h/2;
+         $rx = $h/3.5;
+         $ry = $h/2.2;
+         $svg .= '<ellipse fill="'.$col.'" stroke="#000000" stroke-width="0.5px" cx="'.$cx.'" cy="'.$cy.'" rx="'.$rx.'" ry="'.$ry.'"/>';
+       }
+
+       // BoRDER
+       $svg .= '<rect x="0" y="0" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
+
+       $svg .= '</g></svg>';
+    }
+    else {
+       /////////////////////////////////////////////////////////////////////////////////////
+       ///////// DEFAULT <meter>
+       /////////////////////////////////////////////////////////////////////////////////////
+       $h = 10;
+       $w = 50;
+       $border_radius = 0.143;         // Factor of Height
+
+       $svg = '<?xml version="1.0" encoding="UTF-8"?>
+       <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+       <svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" ><g>
+
+       <defs>
+       <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(222, 222, 222)" />
+       <stop offset="20%" stop-color="rgb(232, 232, 232)" />
+       <stop offset="25%" stop-color="rgb(232, 232, 232)" />
+       <stop offset="100%" stop-color="rgb(182, 182, 182)" />
+       </linearGradient>
+
+       <linearGradient id="GrRED" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(255, 162, 162)" />
+       <stop offset="20%" stop-color="rgb(255, 218, 218)" />
+       <stop offset="25%" stop-color="rgb(255, 218, 218)" />
+       <stop offset="100%" stop-color="rgb(255, 0, 0)" />
+       </linearGradient>
+
+       <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(102, 230, 102)" />
+       <stop offset="20%" stop-color="rgb(218, 255, 218)" />
+       <stop offset="25%" stop-color="rgb(218, 255, 218)" />
+       <stop offset="100%" stop-color="rgb(0, 148, 0)" />
+       </linearGradient>
+
+       <linearGradient id="GrBLUE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(102, 102, 230)" />
+       <stop offset="20%" stop-color="rgb(238, 238, 238)" />
+       <stop offset="25%" stop-color="rgb(238, 238, 238)" />
+       <stop offset="100%" stop-color="rgb(0, 0, 128)" />
+       </linearGradient>
+
+       <linearGradient id="GrORANGE" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(255, 186, 0)" />
+       <stop offset="20%" stop-color="rgb(255, 238, 168)" />
+       <stop offset="25%" stop-color="rgb(255, 238, 168)" />
+       <stop offset="100%" stop-color="rgb(255, 155, 0)" />
+       </linearGradient>
+       </defs>
+
+       <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="url(#GrGRAY)" stroke="none" />
+';
+
+       if ($value) {
+         $barw = (($value-$min) / ($max-$min) ) * $w;
+         if ($optimum < $low) {
+               if ($value < $low) { $barcol = 'url(#GrGREEN)'; }
+               else if ($value > $high) { $barcol = 'url(#GrRED)'; }
+               else { $barcol = 'url(#GrORANGE)'; }
+         }
+         else if ($optimum > $high) {
+               if ($value < $low) { $barcol = 'url(#GrRED)'; }
+               else if ($value > $high) { $barcol = 'url(#GrGREEN)'; }
+               else { $barcol = 'url(#GrORANGE)'; }
+         }
+         else {
+               if ($value < $low) { $barcol = 'url(#GrORANGE)'; }
+               else if ($value > $high) { $barcol = 'url(#GrORANGE)'; }
+               else { $barcol = 'url(#GrGREEN)'; }
+         }
+         $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
+       }
+
+
+       // Borders
+       //$svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
+       if ($value) {
+       //  $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
+       }
+
+
+       $svg .= '</g></svg>';
+    }
+  }
+  else {       // $tag == 'progress'
+
+    if ($type=='2') {
+       /////////////////////////////////////////////////////////////////////////////////////
+       ///////// CUSTOM <progress type="2">
+       /////////////////////////////////////////////////////////////////////////////////////
+    }
+    else {
+       /////////////////////////////////////////////////////////////////////////////////////
+       ///////// DEFAULT <progress>
+       /////////////////////////////////////////////////////////////////////////////////////
+       $h = 10;
+       $w = 100;
+       $border_radius = 0.143;         // Factor of Height
+
+       if ($value or $value==='0') {
+               $fill = 'url(#GrGRAY)';
+       }
+       else {
+               $fill = '#f8f8f8';
+       }
+
+       $svg = '<svg width="'.$w.'px" height="'.$h.'px" viewBox="0 0 '.$w.' '.$h.'"><g>
+
+       <defs>
+       <linearGradient id="GrGRAY" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(222, 222, 222)" />
+       <stop offset="20%" stop-color="rgb(232, 232, 232)" />
+       <stop offset="25%" stop-color="rgb(232, 232, 232)" />
+       <stop offset="100%" stop-color="rgb(182, 182, 182)" />
+       </linearGradient>
+
+       <linearGradient id="GrGREEN" x1="0" y1="0" x2="0" y2="1" gradientUnits="boundingBox">
+       <stop offset="0%" stop-color="rgb(102, 230, 102)" />
+       <stop offset="20%" stop-color="rgb(218, 255, 218)" />
+       <stop offset="25%" stop-color="rgb(218, 255, 218)" />
+       <stop offset="100%" stop-color="rgb(0, 148, 0)" />
+       </linearGradient>
+
+       </defs>
+
+       <rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="'.$fill.'" stroke="none" />
+';
+
+       if ($value) {
+         $barw = (($value-$min) / ($max-$min) ) * $w;
+         $barcol = 'url(#GrGREEN)';
+         $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="'.$barcol.'" stroke="none" />';
+       }
+
+
+       // Borders
+       $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$w.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
+       if ($value) {
+       //  $svg .= '<rect x="0" y="0" rx="'.($h*$border_radius).'px" ry="'.($h*$border_radius).'px" width="'.$barw.'" height="'.$h.'" fill="none" stroke="#888888" stroke-width="0.5px" />';
+       }
+
+
+       $svg .= '</g></svg>';
+
+    }
+  }
+
+  return $svg;
+}
+
+
+}      // end of class
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/svg.php b/inc/3rdparty/libraries/mpdf/classes/svg.php
new file mode 100644 (file)
index 0000000..3efe50f
--- /dev/null
@@ -0,0 +1,2600 @@
+<?php
+//     svg class modified for mPDF version 4.4.003 by Ian Back: based on -
+//     svg2pdf fpdf class
+//     sylvain briand (syb@godisaduck.com), modified by rick trevino (rtrevino1@yahoo.com)
+//     http://www.godisaduck.com/svg2pdf_with_fpdf
+//     http://rhodopsin.blogspot.com
+//     
+//     cette class etendue est open source, toute modification devra cependant etre repertoriée~
+
+
+// NB UNITS - Works in pixels as main units - converting to PDF units when outputing to PDF string
+// and on returning size
+
+class SVG {
+
+       var $svg_gradient;      //      array - contient les infos sur les gradient fill du svg classé par id du svg
+       var $svg_shadinglist;   //      array - contient les ids des objet shading
+       var $svg_info;          //      array contenant les infos du svg voulue par l'utilisateur
+       var $svg_attribs;               //      array - holds all attributes of root <svg> tag
+       var $svg_style;         //      array contenant les style de groupes du svg
+       var $svg_string;                //      String contenant le tracage du svg en lui même.
+       var $txt_data;          //    array - holds string info to write txt to image
+       var $txt_style;         //      array - current text style
+       var $mpdf_ref;
+       var $xbase;             // mPDF 4.4.003
+       var $ybase;             // mPDF 4.4.003
+       var $svg_error; // mPDF 4.4.003
+       var $subPathInit;       // mPDF 4.4.003
+       var $spxstart;  // mPDF 4.4.003
+       var $spystart;  // mPDF 4.4.003
+       var $kp;                // mPDF 4.4.003  convert pixels to PDF units
+       var $pathBBox;  // mPDF 5.0.039
+
+       function SVG(&$mpdf){
+               $this->svg_gradient = array();
+               $this->svg_shadinglist = array();
+               $this->txt_data = array();
+               $this->svg_string = '';
+               $this->svg_info = array();
+               $this->svg_attribs = array();
+               $this->xbase = 0;
+               $this->ybase = 0;
+               $this->svg_error = false;
+               $this->subPathInit = false;     // mPDF 4.4.003
+               $this->dashesUsed = false;      // mPDF 5.0
+               $this->mpdf_ref =& $mpdf;
+
+               $this->kp = 72 / $mpdf->img_dpi;        // mPDF 4.4.003  constant To convert pixels to pts/PDF units
+               $this->kf = 1;                          // mPDF 5.0.039 constant To convert font size if re-mapped
+               $this->pathBBox = array(); // mPDF 5.0.039
+
+               $this->svg_style = array(
+                       array(
+                       'fill'          => 'black',                     //      mPDF 4.4.008
+                       'fill-opacity'  => 1,                           //      remplissage opaque par defaut
+                       'fill-rule'             => 'nonzero',           //      mode de remplissage par defaut
+                       'stroke'                => 'none',                      //      pas de trait par defaut
+                       'stroke-linecap'        => 'butt',                      //      style de langle par defaut
+                       'stroke-linejoin'       => 'miter',                     //
+                       'stroke-miterlimit' => 4,                       //      limite de langle par defaut
+                       'stroke-opacity'        => 1,                           //      trait opaque par defaut
+                       'stroke-width'  => 1,                           //      mPDF 4.4.011
+                       'stroke-dasharray' => 0,                        //      mPDF 4.4.003
+                       'stroke-dashoffset' => 0,                       //      mPDF 4.4.003
+                       'color' => ''                                   //      mPDF 4.4.005
+                       )
+               );
+
+               $this->txt_style = array(
+                       array(
+                       'fill'          => 'black',             //      pas de remplissage par defaut
+                       'font-family'   => $mpdf->default_font,
+                       'font-size'             => $mpdf->default_font_size,            //      ****** this is pts
+                       'font-weight'   => 'normal',    //      normal | bold
+                       'font-style'    => 'normal',    //      italic | normal
+                       'text-anchor'   => 'start',             // alignment: start, middle, end
+/* mPDF 5.0.041 */
+                       'fill-opacity'  => 1,                           //      remplissage opaque par defaut
+                       'fill-rule'             => 'nonzero',           //      mode de remplissage par defaut
+                       'stroke'                => 'none',                      //      pas de trait par defaut
+                       'stroke-opacity'        => 1,                           //      trait opaque par defaut
+                       'stroke-width'  => 1,                           //      mPDF 4.4.011
+                       'color' => ''                                   //      mPDF 4.4.005
+                       )
+               );
+
+
+
+       }
+
+       function svgGradient($gradient_info, $attribs, $element){
+               $n = count($this->mpdf_ref->gradients)+1;
+
+               // Get bounding dimensions of element
+               $w = 100;
+               $h = 100;
+               $x_offset = 0;
+               $y_offset = 0;
+               if ($element=='rect') {
+                       $w = $attribs['width'];
+                       $h = $attribs['height'];
+                       $x_offset = $attribs['x'];
+                       $y_offset = $attribs['y'];
+               }
+               else if ($element=='ellipse') {
+                       $w = $attribs['rx']*2;
+                       $h = $attribs['ry']*2;
+                       $x_offset = $attribs['cx']-$attribs['rx'];
+                       $y_offset = $attribs['cy']-$attribs['ry'];
+               }
+               else if ($element=='circle') {
+                       $w = $attribs['r']*2;
+                       $h = $attribs['r']*2;
+                       $x_offset = $attribs['cx']-$attribs['r'];
+                       $y_offset = $attribs['cy']-$attribs['r'];
+               }
+               else if ($element=='polygon') {
+                       $pts = preg_split('/[ ,]+/', trim($attribs['points']));
+                       $maxr=$maxb=0;
+                       $minl=$mint=999999;
+                       for ($i=0;$i<count($pts); $i++) {
+                               if ($i % 2 == 0) {      // x values
+                                       $minl = min($minl,$pts[$i]);
+                                       $maxr = max($maxr,$pts[$i]);
+                               }
+                               else {  // y values
+                                       $mint = min($mint,$pts[$i]);
+                                       $maxb = max($maxb,$pts[$i]);
+                               }
+                       }
+                       $w = $maxr-$minl;
+                       $h = $maxb-$mint;
+                       $x_offset = $minl;
+                       $y_offset = $mint;
+               }
+               else if ($element=='path') {
+                 // mPDF 5.0.039
+                 if (is_array($this->pathBBox) && $this->pathBBox[2]>0) {
+                       $w = $this->pathBBox[2];
+                       $h = $this->pathBBox[3];
+                       $x_offset = $this->pathBBox[0];
+                       $y_offset = $this->pathBBox[1];
+                 }
+                 else {
+                       preg_match_all('/([a-z]|[A-Z])([ ,\-.\d]+)*/', $attribs['d'], $commands, PREG_SET_ORDER);
+                       $maxr=$maxb=0;
+                       $minl=$mint=999999;
+                       foreach($commands as $c){
+                               if(count($c)==3){
+                                       list($tmp, $cmd, $arg) = $c;
+                                       if ($cmd=='M' || $cmd=='L' || $cmd=='C' || $cmd=='S' || $cmd=='Q' || $cmd=='T') {
+                                               $pts = preg_split('/[ ,]+/', trim($arg));
+                                               for ($i=0;$i<count($pts); $i++) {
+                                                       if ($i % 2 == 0) {      // x values
+                                                               $minl = min($minl,$pts[$i]);
+                                                               $maxr = max($maxr,$pts[$i]);
+                                                       }
+                                                       else {  // y values
+                                                               $mint = min($mint,$pts[$i]);
+                                                               $maxb = max($maxb,$pts[$i]);
+                                                       }
+                                               }
+                                       }
+                                       if ($cmd=='H') { // sets new x
+                                               $minl = min($minl,$arg);
+                                               $maxr = max($maxr,$arg);
+                                       }
+                                       if ($cmd=='V') { // sets new y
+                                               $mint = min($mint,$arg);
+                                               $maxb = max($maxb,$arg);
+                                       }
+                               }
+                       }
+                       $w = $maxr-$minl;
+                       $h = $maxb-$mint;
+                       $x_offset = $minl;
+                       $y_offset = $mint;
+                 }
+               }
+               if (!$w || $w==-999999) { $w = 100; }
+               if (!$h || $h==-999999) { $h = 100; }
+               if ($x_offset==999999) { $x_offset = 0; }
+               if ($y_offset==999999) { $y_offset = 0; }
+
+               // mPDF 4.5.010
+               // TRANSFORMATIONS
+               $transformations = '';
+               if (isset($gradient_info['transform'])){
+                       preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$gradient_info['transform'],$m);
+                       if (count($m[0])) {
+                               for($i=0; $i<count($m[0]); $i++) {
+                                       $c = strtolower($m[1][$i]);
+                                       $v = trim($m[2][$i]);
+                                       $vv = preg_split('/[ ,]+/',$v);
+                                       if ($c=='matrix' && count($vv)==6) {
+                                               // mPDF 5.0.039
+                                               // Note angle of rotation is reversed (from SVG to PDF), so vv[1] and vv[2] are negated
+                                               // cf svgDefineStyle()
+                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $vv[0], -$vv[1], -$vv[2], $vv[3], $vv[4]*$this->kp, -$vv[5]*$this->kp);       
+                                       }
+                                       else if ($c=='translate' && count($vv)) {
+                                               $tm[4] = $vv[0];
+                                               if (count($vv)==2) { $t_y = -$vv[1]; }
+                                               else { $t_y = 0; }
+                                               $tm[5] = $t_y;
+                                               $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
+                                       }
+                                       else if ($c=='scale' && count($vv)) {
+                                               if (count($vv)==2) { $s_y = $vv[1]; }
+                                               else { $s_y = $vv[0]; }
+                                               $tm[0] = $vv[0];
+                                               $tm[3] = $s_y;
+                                               $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
+                                       }
+                                       else if ($c=='rotate' && count($vv)) {
+                                               $tm[0] = cos(deg2rad(-$vv[0]));
+                                               $tm[1] = sin(deg2rad(-$vv[0]));
+                                               $tm[2] = -$tm[1];
+                                               $tm[3] = $tm[0];
+                                               if (count($vv)==3) {
+                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
+                                               }
+                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
+                                               if (count($vv)==3) {
+                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
+                                               }
+                                       }
+                                       else if ($c=='skewx' && count($vv)) {
+                                               $tm[2] = tan(deg2rad(-$vv[0]));
+                                               $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
+                                       }
+                                       else if ($c=='skewy' && count($vv)) {
+                                               $tm[1] = tan(deg2rad(-$vv[0]));
+                                               $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
+                                       }
+
+                               }
+                       }
+               }
+
+
+               $return = "";
+
+               // mPDF 5.0.039
+               if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
+                       if ($transformations) { $return .= $transformations; }
+               }
+               // mPDF 5.0.040
+               $spread = 'P';  // pad
+               if (isset($gradient_info['spread'])) {
+                       if (strtolower($gradient_info['spread'])=='reflect') { $spread = 'F'; } // reflect
+                       else if (strtolower($gradient_info['spread'])=='repeat') { $spread = 'R'; } // repeat
+               }       
+
+
+               for ($i=0; $i<(count($gradient_info['color'])); $i++) {
+                       if (stristr($gradient_info['color'][$i]['offset'], '%')!== false) { $gradient_info['color'][$i]['offset'] = ($gradient_info['color'][$i]['offset']+0)/100; }
+                       if (stristr($gradient_info['color'][($i+1)]['offset'], '%')!== false) { $gradient_info['color'][($i+1)]['offset'] = ($gradient_info['color'][($i+1)]['offset']+0)/100; }
+                       if ($gradient_info['color'][$i]['offset']<0) { $gradient_info['color'][$i]['offset'] = 0; }
+                       if ($gradient_info['color'][$i]['offset']>1) { $gradient_info['color'][$i]['offset'] = 1; }
+                       if ($i>0) {
+                               if ($gradient_info['color'][$i]['offset']<$gradient_info['color'][($i-1)]['offset']) { 
+                                       $gradient_info['color'][$i]['offset']=$gradient_info['color'][($i-1)]['offset']; 
+                               }
+                       }
+               }
+
+               if ($gradient_info['color'][0]['offset']>0) { 
+                       array_unshift($gradient_info['color'], $gradient_info['color'][0]);
+                       $gradient_info['color'][0]['offset'] = 0; 
+               }
+               $ns = count($gradient_info['color']);
+               if ($gradient_info['color'][($ns-1)]['offset']<1) { 
+                       $gradient_info['color'][] = $gradient_info['color'][($ns-1)];
+                       $gradient_info['color'][($ns)]['offset'] = 1; 
+               }
+               $ns = count($gradient_info['color']);
+
+
+
+
+               if ($gradient_info['type'] == 'linear'){
+                       // mPDF 4.4.003
+                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
+                               if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
+                               if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
+                               if (isset($gradient_info['info']['x2'])) { $gradient_info['info']['x2'] = ($gradient_info['info']['x2']-$x_offset) / $w; }
+                               if (isset($gradient_info['info']['y2'])) { $gradient_info['info']['y2'] = ($gradient_info['info']['y2']-$y_offset) / $h; }
+                       }
+                       if (isset($gradient_info['info']['x1'])) { $x1 = $gradient_info['info']['x1']; }
+                       else { $x1 = 0; }
+                       if (isset($gradient_info['info']['y1'])) { $y1 = $gradient_info['info']['y1']; }
+                       else { $y1 = 0; }
+                       if (isset($gradient_info['info']['x2'])) { $x2 = $gradient_info['info']['x2']; }
+                       else { $x2 = 1; }
+                       if (isset($gradient_info['info']['y2'])) { $y2 = $gradient_info['info']['y2']; }
+                       else { $y2 = 0; }
+
+                       if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
+                       if (stristr($x2, '%')!== false) { $x2 = ($x2+0)/100; }
+                       if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
+                       if (stristr($y2, '%')!== false) { $y2 = ($y2+0)/100; }
+
+                       // mPDF 5.0.042
+                       $bboxw = $w;
+                       $bboxh = $h;
+                       $usex = $x_offset;
+                       $usey = $y_offset;
+                       $usew = $bboxw;
+                       $useh = $bboxh;
+                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
+                               $angle = rad2deg(atan2(($gradient_info['info']['y2']-$gradient_info['info']['y1']), ($gradient_info['info']['x2']-$gradient_info['info']['x1'])));
+                               if ($angle < 0) { $angle += 360; }
+                               else if ($angle > 360) { $angle -= 360; }
+                               if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) { 
+                                   if ($w >= $h) {
+                                       $y1 *= $h/$w ;
+                                       $y2 *= $h/$w ;
+                                       $usew = $useh = $bboxw;
+                                   }
+                                   else {
+                                       $x1 *= $w/$h ;
+                                       $x2 *= $w/$h ;
+                                       $usew = $useh = $bboxh;
+                                   }
+                               }
+                       }
+                       $a = $usew;             // width
+                       $d = -$useh;    // height
+                       $e = $usex;             // x- offset
+                       $f = -$usey;    // -y-offset
+
+                       $return .= sprintf('%.3F 0 0 %.3F %.3F %.3F cm ', $a*$this->kp, $d*$this->kp, $e*$this->kp, $f*$this->kp);
+
+                       // mPDF 5.0.039
+                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='objectboundingbox') {
+                               if ($transformations) { $return .= $transformations; }
+                       }
+
+                       // mPDF 5.0.020
+                       $trans = false;
+
+                       // mPDF 5.0.040
+                       if ($spread=='R' || $spread=='F') {     // Repeat  /  Reflect
+                               $offs = array();
+                               for($i=0;$i<$ns;$i++) {
+                                       $offs[$i] = $gradient_info['color'][$i]['offset'];
+                               }
+                               $gp = 0;
+                               $inside=true;
+                               while($inside) {
+                                  $gp++;
+                                  for($i=0;$i<$ns;$i++) {
+                                       if ($spread=='F' && ($gp % 2) == 1) {   // Reflect
+                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][(($ns*($gp-1))+($ns-$i-1))];
+                                               $tmp = $gp+(1-$offs[($ns-$i-1)]) ;
+                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
+                                       }
+                                       else {  // Reflect
+                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][$i];
+                                               $tmp = $gp+$offs[$i] ;
+                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
+                                       }
+                                       // IF STILL INSIDE BOX OR STILL VALID 
+                                       // Point on axis to test
+                                       $px1 = $x1 + ($x2-$x1)*$tmp;
+                                       $py1 = $y1 + ($y2-$y1)*$tmp;
+                                       // Get perpendicular axis
+                                       $alpha = atan2($y2-$y1, $x2-$x1);
+                                       $alpha += M_PI/2;       // rotate 90 degrees
+                                       // Get arbitrary point to define line perpendicular to axis
+                                       $px2 = $px1+cos($alpha);
+                                       $py2 = $py1+sin($alpha);
+
+                                       $res1 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 0, 1);     // $x=0 vert axis
+                                       $res2 = _testIntersect($px1, $py1, $px2, $py2, 1, 0, 1, 1);     // $x=1 vert axis
+                                       $res3 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 1, 0);     // $y=0 horiz axis
+                                       $res4 = _testIntersect($px1, $py1, $px2, $py2, 0, 1, 1, 1);     // $y=1 horiz axis
+                                       if (!$res1 && !$res2 && !$res3 && !$res4) { $inside = false; }
+                                  }
+                               }
+
+                               $inside=true;
+                               $gp = 0;
+                               while($inside) {
+                                  $gp++;
+                                  $newarr = array();
+                                  for($i=0;$i<$ns;$i++) {
+                                       if ($spread=='F') {     // Reflect
+                                           $newarr[$i] = $gradient_info['color'][($ns-$i-1)];
+                                           if (($gp % 2) == 1) {
+                                               $tmp = -$gp+(1-$offs[($ns-$i-1)]);
+                                                       $newarr[$i]['offset'] = $tmp; 
+                                          }
+                                          else {
+                                               $tmp = -$gp+$offs[$i];
+                                               $newarr[$i]['offset'] = $tmp; 
+                                          }
+                                       }
+                                       else {  // Reflect
+                                               $newarr[$i] = $gradient_info['color'][$i];
+                                               $tmp = -$gp+$offs[$i];
+                                               $newarr[$i]['offset'] = $tmp; 
+                                       }
+
+                                       // IF STILL INSIDE BOX OR STILL VALID 
+                                       // Point on axis to test
+                                       $px1 = $x1 + ($x2-$x1)*$tmp;
+                                       $py1 = $y1 + ($y2-$y1)*$tmp;
+                                       // Get perpendicular axis
+                                       $alpha = atan2($y2-$y1, $x2-$x1);
+                                       $alpha += M_PI/2;       // rotate 90 degrees
+                                       // Get arbitrary point to define line perpendicular to axis
+                                       $px2 = $px1+cos($alpha);
+                                       $py2 = $py1+sin($alpha);
+
+                                       $res1 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 0, 1);     // $x=0 vert axis
+                                       $res2 = _testIntersect($px1, $py1, $px2, $py2, 1, 0, 1, 1);     // $x=1 vert axis
+                                       $res3 = _testIntersect($px1, $py1, $px2, $py2, 0, 0, 1, 0);     // $y=0 horiz axis
+                                       $res4 = _testIntersect($px1, $py1, $px2, $py2, 0, 1, 1, 1);     // $y=1 horiz axis
+                                       if (!$res1 && !$res2 && !$res3 && !$res4) { $inside = false; }
+                                  }
+                                  for($i=($ns-1);$i>=0;$i--) { 
+                                       if (isset($newarr[$i]['offset'])) array_unshift($gradient_info['color'], $newarr[$i]); 
+                                  }
+                               }
+                       }
+
+                       // mPDF 4.4.007   Gradient STOPs
+                       $stops = count($gradient_info['color']);
+                       if ($stops < 2) { return ''; }
+
+                       // mPDF 5.0.042
+                       $range = $gradient_info['color'][count($gradient_info['color'])-1]['offset']-$gradient_info['color'][0]['offset'];
+                       $min = $gradient_info['color'][0]['offset'];
+
+                       for ($i=0; $i<($stops); $i++) {
+                               // mPDF 5.0.051
+                               if (!$gradient_info['color'][$i]['color']) { 
+                                       if ($gradient_info['colorspace']=='RGB') $gradient_info['color'][$i]['color'] = '0 0 0'; 
+                                       else if ($gradient_info['colorspace']=='Gray') $gradient_info['color'][$i]['color'] = '0'; 
+                                       else if ($gradient_info['colorspace']=='CMYK') $gradient_info['color'][$i]['color'] = '1 1 1 1'; 
+                               }
+                               $offset = ($gradient_info['color'][$i]['offset'] - $min)/$range;
+                               $this->mpdf_ref->gradients[$n]['stops'][] = array(
+                                       'col' => $gradient_info['color'][$i]['color'],
+                                       'opacity' => $gradient_info['color'][$i]['opacity'],
+                                       'offset' => $offset);
+                               if ($gradient_info['color'][$i]['opacity']<1) { $trans = true; }
+                       }
+                       $grx1 = $x1 + ($x2-$x1)*$gradient_info['color'][0]['offset'];
+                       $gry1 = $y1 + ($y2-$y1)*$gradient_info['color'][0]['offset'];
+                       $grx2 = $x1 + ($x2-$x1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
+                       $gry2 = $y1 + ($y2-$y1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
+
+                       $this->mpdf_ref->gradients[$n]['coords']=array($grx1, $gry1, $grx2, $gry2);
+
+                       $this->mpdf_ref->gradients[$n]['colorspace'] = $gradient_info['colorspace'];    // mPDF 5.0.051
+
+                       $this->mpdf_ref->gradients[$n]['type'] = 2;
+                       $this->mpdf_ref->gradients[$n]['fo'] = true;
+
+                       $this->mpdf_ref->gradients[$n]['extend']=array('true','true');
+                       if ($trans) { 
+                               $this->mpdf_ref->gradients[$n]['trans'] = true; 
+                               $return .= ' /TGS'.($n).' gs ';
+                       }
+                       $return .= ' /Sh'.($n).' sh ';
+                       $return .= " Q\n";
+               }
+               else if ($gradient_info['type'] == 'radial'){
+                       // mPDF 4.4.003
+                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
+                               if ($w > $h) { $h = $w; }
+                               else { $w = $h; }
+                               if (isset($gradient_info['info']['x0'])) { $gradient_info['info']['x0'] = ($gradient_info['info']['x0']-$x_offset) / $w; }
+                               if (isset($gradient_info['info']['y0'])) { $gradient_info['info']['y0'] = ($gradient_info['info']['y0']-$y_offset) / $h; }
+                               if (isset($gradient_info['info']['x1'])) { $gradient_info['info']['x1'] = ($gradient_info['info']['x1']-$x_offset) / $w; }
+                               if (isset($gradient_info['info']['y1'])) { $gradient_info['info']['y1'] = ($gradient_info['info']['y1']-$y_offset) / $h; }
+                               if (isset($gradient_info['info']['r'])) { $gradient_info['info']['rx'] = $gradient_info['info']['r'] / $w; }
+                               if (isset($gradient_info['info']['r'])) { $gradient_info['info']['ry'] = $gradient_info['info']['r'] / $h; }
+                       }
+
+                       if ($gradient_info['info']['x0'] || $gradient_info['info']['x0']===0) { $x0 = $gradient_info['info']['x0']; }
+                       else { $x0 = 0.5; }
+                       if ($gradient_info['info']['y0'] || $gradient_info['info']['y0']===0) { $y0 = $gradient_info['info']['y0']; }
+                       else { $y0 = 0.5; }
+                       if ($gradient_info['info']['rx'] || $gradient_info['info']['rx']===0) { $rx = $gradient_info['info']['rx']; }
+                       else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $rx = $gradient_info['info']['r']; }
+                       else { $rx = 0.5; }
+                       if ($gradient_info['info']['ry'] || $gradient_info['info']['ry']===0) { $ry = $gradient_info['info']['ry']; }
+                       else if ($gradient_info['info']['r'] || $gradient_info['info']['r']===0) { $ry = $gradient_info['info']['r']; }
+                       else { $ry = 0.5; }
+                       if ($gradient_info['info']['x1'] || $gradient_info['info']['x1']===0) { $x1 = $gradient_info['info']['x1']; }
+                       else { $x1 = $x0; }
+                       if ($gradient_info['info']['y1'] || $gradient_info['info']['y1']===0) { $y1 = $gradient_info['info']['y1']; }
+                       else { $y1 = $y0; }
+
+                       if (stristr($x1, '%')!== false) { $x1 = ($x1+0)/100; }
+                       if (stristr($x0, '%')!== false) { $x0 = ($x0+0)/100; }
+                       if (stristr($y1, '%')!== false) { $y1 = ($y1+0)/100; }
+                       if (stristr($y0, '%')!== false) { $y0 = ($y0+0)/100; }
+                       if (stristr($rx, '%')!== false) { $rx = ($rx+0)/100; }
+                       if (stristr($ry, '%')!== false) { $ry = ($ry+0)/100; }
+
+                       // mPDF 5.0.043
+                       $bboxw = $w;
+                       $bboxh = $h;
+                       $usex = $x_offset;
+                       $usey = $y_offset;
+                       $usew = $bboxw;
+                       $useh = $bboxh;
+                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='userspaceonuse') {
+                               $angle = rad2deg(atan2(($gradient_info['info']['y0']-$gradient_info['info']['y1']), ($gradient_info['info']['x0']-$gradient_info['info']['x1'])));
+                               if ($angle < 0) { $angle += 360; }
+                               else if ($angle > 360) { $angle -= 360; }
+                               if ($angle!=0 && $angle!=360 && $angle!=90 && $angle!=180 && $angle!=270) { 
+                                   if ($w >= $h) {
+                                       $y1 *= $h/$w ;
+                                       $y0 *= $h/$w ;
+                                       $rx *= $h/$w ;
+                                       $ry *= $h/$w ;
+                                       $usew = $useh = $bboxw;
+                                   }
+                                   else {
+                                       $x1 *= $w/$h ;
+                                       $x0 *= $w/$h ;
+                                       $rx *= $w/$h ;
+                                       $ry *= $w/$h ;
+                                       $usew = $useh = $bboxh;
+                                   }
+                               }
+                       }
+                       $a = $usew;             // width
+                       $d = -$useh;    // height
+                       $e = $usex;             // x- offset
+                       $f = -$usey;    // -y-offset
+
+                       $r = $rx;
+
+
+                       $return .= sprintf('%.3F 0 0 %.3F %.3F %.3F cm ', $a*$this->kp, $d*$this->kp, $e*$this->kp, $f*$this->kp);
+
+                       // mPDF 5.0.039
+                       if (isset($gradient_info['units']) && strtolower($gradient_info['units'])=='objectboundingbox') {
+                               if ($transformations) { $return .= $transformations; }
+                       }
+
+                       // x1 and y1 (fx, fy) should be inside the circle defined by x0 y0 and r else error in mPDF
+                       while (pow(($x1-$x0),2) + pow(($y1 - $y0),2) >= pow($r,2)) { $r += 0.05; }
+
+                       // mPDF 5.0.040
+                       if ($spread=='R' || $spread=='F') {     // Repeat  /  Reflect
+                               $offs = array();
+                               for($i=0;$i<$ns;$i++) {
+                                       $offs[$i] = $gradient_info['color'][$i]['offset'];
+                               }
+                               $gp = 0;
+                               $inside=true;
+                               while($inside) {
+                                  $gp++;
+                                  for($i=0;$i<$ns;$i++) {
+                                       if ($spread=='F' && ($gp % 2) == 1) {   // Reflect
+                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][(($ns*($gp-1))+($ns-$i-1))];
+                                               $tmp = $gp+(1-$offs[($ns-$i-1)]) ;
+                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
+                                       }
+                                       else {  // Reflect
+                                               $gradient_info['color'][(($ns*$gp)+$i)] = $gradient_info['color'][$i];
+                                               $tmp = $gp+$offs[$i] ;
+                                               $gradient_info['color'][(($ns*$gp)+$i)]['offset'] = $tmp; 
+                                       }
+                                       // IF STILL INSIDE BOX OR STILL VALID 
+                                       // TEST IF circle (perimeter) intersects with 
+                                       // or is enclosed
+                                       // Point on axis to test
+                                       $px = $x1 + ($x0-$x1)*$tmp;
+                                       $py = $y1 + ($y0-$y1)*$tmp;
+                                       $pr = $r*$tmp;
+                                       $res = _testIntersectCircle($px, $py, $pr);
+                                       if (!$res) { $inside = false; }
+                                  }
+                               }
+                       }
+
+                       // mPDF 4.4.007   Gradient STOPs
+                       $stops = count($gradient_info['color']);
+                       if ($stops < 2) { return ''; }
+
+                       // mPDF 5.0.043
+                       $range = $gradient_info['color'][count($gradient_info['color'])-1]['offset']-$gradient_info['color'][0]['offset'];
+                       $min = $gradient_info['color'][0]['offset'];
+
+                       for ($i=0; $i<($stops); $i++) {
+                               // mPDF 5.0.051
+                               if (!$gradient_info['color'][$i]['color']) { 
+                                       if ($gradient_info['colorspace']=='RGB') $gradient_info['color'][$i]['color'] = '0 0 0'; 
+                                       else if ($gradient_info['colorspace']=='Gray') $gradient_info['color'][$i]['color'] = '0'; 
+                                       else if ($gradient_info['colorspace']=='CMYK') $gradient_info['color'][$i]['color'] = '1 1 1 1'; 
+                               }
+                               $offset = ($gradient_info['color'][$i]['offset'] - $min)/$range;
+                               $this->mpdf_ref->gradients[$n]['stops'][] = array(
+                                       'col' => $gradient_info['color'][$i]['color'],
+                                       'opacity' => $gradient_info['color'][$i]['opacity'],
+                                       'offset' => $offset);
+                               if ($gradient_info['color'][$i]['opacity']<1) { $trans = true; }
+                       }
+                       $grx1 = $x1 + ($x0-$x1)*$gradient_info['color'][0]['offset'];
+                       $gry1 = $y1 + ($y0-$y1)*$gradient_info['color'][0]['offset'];
+                       $grx2 = $x1 + ($x0-$x1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
+                       $gry2 = $y1 + ($y0-$y1)*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
+                       $grir = $r*$gradient_info['color'][0]['offset'];
+                       $grr = $r*$gradient_info['color'][count($gradient_info['color'])-1]['offset'];
+
+                       $this->mpdf_ref->gradients[$n]['coords']=array($grx1, $gry1, $grx2, $gry2, abs($grr), abs($grir)  );
+
+                       $grx1 = $x1 + ($x0-$x1)*$first_stop;
+                       $gry1 = $y1 + ($y0-$y1)*$first_stop;
+                       $grx2 = $x1 + ($x0-$x1)*$last_stop;
+                       $gry2 = $y1 + ($y0-$y1)*$last_stop;
+                       $grir = $r*$first_stop;
+                       $grr = $r*$last_stop;
+                       $this->mpdf_ref->gradients[$n]['colorspace'] = $gradient_info['colorspace'];    // mPDF 5.0.051
+
+                       $this->mpdf_ref->gradients[$n]['type'] = 3;
+                       $this->mpdf_ref->gradients[$n]['fo'] = true;
+
+                       $this->mpdf_ref->gradients[$n]['extend']=array('true','true');
+                       if ($trans) { 
+                               $this->mpdf_ref->gradients[$n]['trans'] = true; 
+                               $return .= ' /TGS'.($n).' gs ';
+                       }
+                       $return .= ' /Sh'.($n).' sh ';
+                       $return .= " Q\n";
+
+
+               }
+
+               return $return;
+       }
+
+
+       function svgOffset ($attribs){
+               // save all <svg> tag attributes
+               $this->svg_attribs = $attribs;
+               if(isset($this->svg_attribs['viewBox'])) {
+                       $vb = preg_split('/\s+/is', trim($this->svg_attribs['viewBox']));
+                       if (count($vb)==4) {
+                               $this->svg_info['x'] = $vb[0];
+                               $this->svg_info['y'] = $vb[1];
+                               $this->svg_info['w'] = $vb[2];
+                               $this->svg_info['h'] = $vb[3];
+//                             return;                                         // mPDF 5.0.005
+                       }
+               }
+
+               $svg_w = $this->mpdf_ref->ConvertSize($attribs['width']);       // mm (interprets numbers as pixels)
+               $svg_h = $this->mpdf_ref->ConvertSize($attribs['height']);      // mm
+
+///*
+               // mPDF 5.0.005
+               if ($this->svg_info['w']) {     // if 'w' set by viewBox
+                       if ($svg_w) {   // if width also set, use these values to determine to set size of "pixel"
+                               $this->kp *= ($svg_w/0.2645) / $this->svg_info['w'];
+                               $this->kf = ($svg_w/0.2645) / $this->svg_info['w'];     // mPDF 5.0.039
+                       }
+                       else if ($svg_h) {
+                               $this->kp *= ($svg_h/0.2645) / $this->svg_info['h'];
+                               $this->kf = ($svg_h/0.2645) / $this->svg_info['h'];     // mPDF 5.0.039
+                       }
+                       return;
+               }
+//*/
+
+               // Added to handle file without height or width specified
+               if (!$svg_w && !$svg_h) { $svg_w = $svg_h = $this->mpdf_ref->blk[$this->mpdf_ref->blklvl]['inner_width'] ; }    // DEFAULT
+               if (!$svg_w) { $svg_w = $svg_h; }
+               if (!$svg_h) { $svg_h = $svg_w; }
+
+               $this->svg_info['x'] = 0;
+               $this->svg_info['y'] = 0;
+               $this->svg_info['w'] = $svg_w/0.2645;   // mm->pixels
+               $this->svg_info['h'] = $svg_h/0.2645;   // mm->pixels
+
+       }
+
+
+       //
+       // check if points are within svg, if not, set to max
+       function svg_overflow($x,$y)
+       {
+               $x2 = $x;
+               $y2 = $y;
+               if(isset($this->svg_attribs['overflow']))
+               {
+                       if($this->svg_attribs['overflow'] == 'hidden')
+                       {
+                               // Not sure if this is supposed to strip off units, but since I dont use any I will omlt this step
+                               $svg_w = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['width']);
+                               $svg_h = preg_replace("/([0-9\.]*)(.*)/i","$1",$this->svg_attribs['height']);
+                               
+                               // $xmax = floor($this->svg_attribs['width']);
+                               $xmax = floor($svg_w);
+                               $xmin = 0;
+                               // $ymax = floor(($this->svg_attribs['height'] * -1));
+                               $ymax = floor(($svg_h * -1));
+                               $ymin = 0;
+
+                               if($x > $xmax) $x2 = $xmax; // right edge
+                               if($x < $xmin) $x2 = $xmin; // left edge
+                               if($y < $ymax) $y2 = $ymax; // bottom 
+                               if($y > $ymin) $y2 = $ymin; // top 
+
+                       }
+               }
+
+
+               return array( 'x' => $x2, 'y' => $y2);
+       }
+
+
+
+       function svgDefineStyle($critere_style){
+
+               $tmp = count($this->svg_style)-1;
+               $current_style = $this->svg_style[$tmp];
+
+               unset($current_style['transformations']);
+
+               // TRANSFORM SCALE
+               $transformations = '';
+               if (isset($critere_style['transform'])){
+                       preg_match_all('/(matrix|translate|scale|rotate|skewX|skewY)\((.*?)\)/is',$critere_style['transform'],$m);
+                       if (count($m[0])) {
+                               for($i=0; $i<count($m[0]); $i++) {
+                                       $c = strtolower($m[1][$i]);
+                                       $v = trim($m[2][$i]);
+                                       $vv = preg_split('/[ ,]+/',$v);
+                                       if ($c=='matrix' && count($vv)==6) {
+                                       // mPDF 5.0.039
+                                               // Note angle of rotation is reversed (from SVG to PDF), so vv[1] and vv[2] are negated
+                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $vv[0], -$vv[1], -$vv[2], $vv[3], $vv[4]*$this->kp, -$vv[5]*$this->kp);
+
+/*
+// The long way of doing this??
+// need to reverse angle of rotation from SVG to PDF
+$sx=sqrt(pow($vv[0],2)+pow($vv[2],2));
+if ($vv[0] < 0) { $sx *= -1; } // change sign
+$sy=sqrt(pow($vv[1],2)+pow($vv[3],2));
+if ($vv[3] < 0) { $sy *= -1; } // change sign
+
+// rotation angle is 
+$t=atan2($vv[1],$vv[3]);
+$t=atan2(-$vv[2],$vv[0]);      // Should be the same value or skew has been applied
+
+// Reverse angle
+$t *= -1;
+
+// Rebuild matrix
+$ma = $sx * cos($t);
+$mb = $sy * sin($t);
+$mc = -$sx * sin($t);
+$md = $sy * cos($t);
+
+// $transformations .= sprintf(' %.3F %.3F %.3F %.3F %.3F %.3F cm ', $ma, $mb, $mc, $md, $vv[4]*$this->kp, -$vv[5]*$this->kp);
+*/
+
+                                       }
+                                       else if ($c=='translate' && count($vv)) {
+                                               $tm[4] = $vv[0];
+                                               if (count($vv)==2) { $t_y = -$vv[1]; }
+                                               else { $t_y = 0; }
+                                               $tm[5] = $t_y;
+                                               $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $tm[4]*$this->kp, $tm[5]*$this->kp);
+                                       }
+                                       else if ($c=='scale' && count($vv)) {
+                                               if (count($vv)==2) { $s_y = $vv[1]; }
+                                               else { $s_y = $vv[0]; }
+                                               $tm[0] = $vv[0];
+                                               $tm[3] = $s_y;
+                                               $transformations .= sprintf(' %.3F 0 0 %.3F 0 0 cm ', $tm[0], $tm[3]);
+                                       }
+                                       else if ($c=='rotate' && count($vv)) {
+                                               $tm[0] = cos(deg2rad(-$vv[0]));
+                                               $tm[1] = sin(deg2rad(-$vv[0]));
+                                               $tm[2] = -$tm[1];
+                                               $tm[3] = $tm[0];
+                                               if (count($vv)==3) {
+                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', $vv[1]*$this->kp, -$vv[2]*$this->kp);
+                                               }
+                                               $transformations .= sprintf(' %.3F %.3F %.3F %.3F 0 0 cm ', $tm[0], $tm[1], $tm[2], $tm[3]);
+                                               if (count($vv)==3) {
+                                                       $transformations .= sprintf(' 1 0 0 1 %.3F %.3F cm ', -$vv[1]*$this->kp, $vv[2]*$this->kp);
+                                               }
+                                       }
+                                       else if ($c=='skewx' && count($vv)) {
+                                               $tm[2] = tan(deg2rad(-$vv[0]));
+                                               $transformations .= sprintf(' 1 0 %.3F 1 0 0 cm ', $tm[2]);
+                                       }
+                                       else if ($c=='skewy' && count($vv)) {
+                                               $tm[1] = tan(deg2rad(-$vv[0]));
+                                               $transformations .= sprintf(' 1 %.3F 0 1 0 0 cm ', $tm[1]);
+                                       }
+
+                               }
+                       }
+                       $current_style['transformations'] = $transformations;
+               }
+
+               if (isset($critere_style['style'])){
+                       if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+                               $current_style['fill'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+                       }
+                       else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']);     // mPDF 4.4.003
+                               if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
+                       }
+
+                       $tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
+
+                       if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+                               $current_style['stroke'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+                       }
+                       else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                               if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
+                       }
+                       
+                       $tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
+                       
+                       $tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
+                       
+                       $tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
+                       
+                       $tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
+
+                       // mPDF 4.4.003
+                       $tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
+
+                       // mPDF 4.4.003
+                       $tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
+
+               }
+               if(isset($critere_style['fill'])){
+                       $current_style['fill'] = $critere_style['fill'];
+               }
+
+               if(isset($critere_style['fill-opacity'])){
+                       $current_style['fill-opacity'] = $critere_style['fill-opacity'];
+               }
+
+               if(isset($critere_style['fill-rule'])){
+                       $current_style['fill-rule'] = $critere_style['fill-rule'];
+               }
+
+               if(isset($critere_style['stroke'])){
+                       $current_style['stroke'] = $critere_style['stroke'];
+               }
+
+               if(isset($critere_style['stroke-linecap'])){
+                       $current_style['stroke-linecap'] = $critere_style['stroke-linecap'];
+               }
+
+               if(isset($critere_style['stroke-linejoin'])){
+                       $current_style['stroke-linejoin'] = $critere_style['stroke-linejoin'];
+               }
+
+               if(isset($critere_style['stroke-miterlimit'])){
+                       $current_style['stroke-miterlimit'] = $critere_style['stroke-miterlimit'];
+               }
+
+               if(isset($critere_style['stroke-opacity'])){
+                       $current_style['stroke-opacity'] = $critere_style['stroke-opacity'];
+               }
+
+               if(isset($critere_style['stroke-width'])){
+                       $current_style['stroke-width'] = $critere_style['stroke-width'];
+               }
+
+               // mPDF 4.4.003
+               if(isset($critere_style['stroke-dasharray'])){
+                       $current_style['stroke-dasharray'] = $critere_style['stroke-dasharray'];
+               }
+               if(isset($critere_style['stroke-dashoffset'])){
+                       $current_style['stroke-dashoffset'] = $critere_style['stroke-dashoffset'];
+               }
+
+               // mPDF 4.4.005   Used as indirect setting for currentColor
+               if(isset($critere_style['color']) && $critere_style['color'] != 'inherit'){
+                       $current_style['color'] = $critere_style['color'];
+               }
+
+               return $current_style;
+
+       }
+
+       //
+       //      Cette fonction ecrit le style dans le stream svg.
+       function svgStyle($critere_style, $attribs, $element){
+               $path_style = '';
+               if (substr_count($critere_style['fill'],'url')>0){
+                       //
+                       // couleur degradé
+                       $id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['fill']);
+                       if ($id_gradient != $critere_style['fill']) {
+                          if (isset($this->svg_gradient[$id_gradient])) {
+                               $fill_gradient = $this->svgGradient($this->svg_gradient[$id_gradient], $attribs, $element);
+                               if ($fill_gradient) {   // mPDF 4.4.003
+                                       $path_style = "q ";
+                                       $w = "W";
+                                       $style .= 'N';
+                               }
+                          }
+                       }
+
+               }
+               // mPDF 4.4.005   Used as indirect setting for currentColor
+               else if (strtolower($critere_style['fill']) == 'currentcolor'){
+                       $col = $this->mpdf_ref->ConvertColor($critere_style['color']);
+                       if ($col) {
+                               // mPDF 5.0.051
+                               // mPDF 5.3.74
+                               if ($col{0}==5) {       $critere_style['fill-opacity'] = ord($col{4}/100); }    // RGBa
+                               if ($col{0}==6) {       $critere_style['fill-opacity'] = ord($col{5}/100); }    // CMYKa
+                               $path_style .= $this->mpdf_ref->SetFColor($col, true).' ';      // mPDF 5.0.051
+                               $style .= 'F';
+                       }
+               }
+               else if ($critere_style['fill'] != 'none'){
+                       $col = $this->mpdf_ref->ConvertColor($critere_style['fill']);
+                       if ($col) {
+                               // mPDF 5.0.051
+                               // mPDF 5.3.74
+                               if ($col{0}==5) {       $critere_style['fill-opacity'] = ord($col{4}/100); }    // RGBa
+                               if ($col{0}==6) {       $critere_style['fill-opacity'] = ord($col{5}/100); }    // CMYKa
+                               $path_style .= $this->mpdf_ref->SetFColor($col, true).' ';      // mPDF 5.0.051
+                               $style .= 'F';
+                       }
+               }
+
+               // mPDF 5.0.040
+               if (substr_count($critere_style['stroke'],'url')>0){
+/*
+                       // Cannot put a gradient on a "stroke" in PDF?
+                       $id_gradient = preg_replace("/url\(#([\w_]*)\)/i","$1",$critere_style['stroke']);
+                       if ($id_gradient != $critere_style['stroke']) {
+                          if (isset($this->svg_gradient[$id_gradient])) {
+                               $fill_gradient = $this->svgGradient($this->svg_gradient[$id_gradient], $attribs, $element);
+                               if ($fill_gradient) {
+                                       $path_style = "q ";
+                                       $w = "W";
+                                       $style .= 'D';
+                               }
+                          }
+                       }
+*/
+               }
+               // mPDF 4.4.005   Used as indirect setting for currentColor
+               else if (strtolower($critere_style['stroke']) == 'currentcolor'){
+                       $col = $this->mpdf_ref->ConvertColor($critere_style['color']);
+                       if ($col) {
+                               // mPDF 5.0.051
+                               // mPDF 5.3.74
+                               if ($col{0}==5) {       $critere_style['stroke-opacity'] = ord($col{4}/100); }  // RGBa
+                               if ($col{0}==6) {       $critere_style['stroke-opacity'] = ord($col{5}/100); }  // CMYKa
+                               $path_style .= $this->mpdf_ref->SetDColor($col, true).' ';      // mPDF 5.0.051
+                               $style .= 'D';
+                               $lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']);
+                               $path_style .= sprintf('%.3F w ',$lw*$this->kp);
+                       }
+               }
+               else if ($critere_style['stroke'] != 'none'){
+                       $col = $this->mpdf_ref->ConvertColor($critere_style['stroke']);
+                       if ($col) {
+                               // mPDF 5.0.051
+                               // mPDF 5.3.74
+                               if ($col{0}==5) {       $critere_style['stroke-opacity'] = ord($col{4}/100); }  // RGBa
+                               if ($col{0}==6) {       $critere_style['stroke-opacity'] = ord($col{5}/100); }  // CMYKa
+                               $path_style .= $this->mpdf_ref->SetDColor($col, true).' ';      // mPDF 5.0.051
+                               $style .= 'D';
+                               $lw = $this->ConvertSVGSizePixels($critere_style['stroke-width']);      // mPDF 4.4.003 
+                               $path_style .= sprintf('%.3F w ',$lw*$this->kp);
+                       }
+               }
+
+
+       if ($critere_style['stroke'] != 'none'){
+               if ($critere_style['stroke-linejoin'] == 'miter'){
+                       $path_style .= ' 0 j ';
+               }
+               else if ($critere_style['stroke-linejoin'] == 'round'){
+                       $path_style .= ' 1 j ';
+               }
+               else if ($critere_style['stroke-linejoin'] == 'bevel'){
+                       $path_style .= ' 2 j ';
+               }
+
+               if ($critere_style['stroke-linecap'] == 'butt'){
+                       $path_style .= ' 0 J ';
+               }
+               else if ($critere_style['stroke-linecap'] == 'round'){
+                       $path_style .= ' 1 J ';
+               }
+               else if ($critere_style['stroke-linecap'] == 'square'){
+                       $path_style .= ' 2 J ';
+               }
+
+               if (isset($critere_style['stroke-miterlimit'])){
+                  if ($critere_style['stroke-miterlimit'] == 'none'){
+                  }
+                  else if (preg_match('/^[\d.]+$/',$critere_style['stroke-miterlimit'])) {
+                       $path_style .= sprintf('%.2F M ',$critere_style['stroke-miterlimit']);
+                  }
+               }
+               // mPDF 4.4.003
+               if (isset($critere_style['stroke-dasharray'])){
+                       $off = 0;
+                       $d = preg_split('/[ ,]/',$critere_style['stroke-dasharray']);
+                       if (count($d) == 1 && $d[0]==0) {
+                               $path_style .= '[] 0 d '; 
+                       }
+                       else {
+                         if (count($d) % 2 == 1) { $d = array_merge($d, $d); } // 5, 3, 1 => 5,3,1,5,3,1  OR 3 => 3,3
+                         $arr = '';
+                         for($i=0; $i<count($d); $i+=2) {
+                               $arr .= sprintf('%.3F %.3F ', $d[$i]*$this->kp, $d[$i+1]*$this->kp);
+                         }
+                         if (isset($critere_style['stroke-dashoffset'])){ $off = $critere_style['stroke-dashoffset'] + 0; }
+                         $path_style .= sprintf('[%s] %.3F d ', $arr, $off*$this->kp);
+                       }
+               }
+       }
+
+               // mPDF 4.4.003
+               if ($critere_style['fill-rule']=='evenodd') { $fr = '*'; }
+               else { $fr = ''; }
+
+               // mPDF 4.4.003
+               if (isset($critere_style['fill-opacity'])) {
+                       $opacity = 1;
+                       if ($critere_style['fill-opacity'] == 0) { $opacity = 0; }
+                       else if ($critere_style['fill-opacity'] > 1) { $opacity = 1; }
+                       else if ($critere_style['fill-opacity'] > 0) { $opacity = $critere_style['fill-opacity']; }
+                       else if ($critere_style['fill-opacity'] < 0) { $opacity = 0; }
+                       $gs = $this->mpdf_ref->AddExtGState(array('ca'=>$opacity, 'BM'=>'/Normal'));
+                       $this->mpdf_ref->extgstates[$gs]['fo'] = true;  // mPDF 5.0.039
+                       $path_style .= sprintf(' /GS%d gs ', $gs);
+               }
+
+               // mPDF 4.4.003
+               if (isset($critere_style['stroke-opacity'])) {
+                       $opacity = 1;
+                       if ($critere_style['stroke-opacity'] == 0) { $opacity = 0; }
+                       else if ($critere_style['stroke-opacity'] > 1) { $opacity = 1; }
+                       else if ($critere_style['stroke-opacity'] > 0) { $opacity = $critere_style['stroke-opacity']; }
+                       else if ($critere_style['stroke-opacity'] < 0) { $opacity = 0; }
+                       $gs = $this->mpdf_ref->AddExtGState(array('CA'=>$opacity, 'BM'=>'/Normal'));
+                       $this->mpdf_ref->extgstates[$gs]['fo'] = true;  // mPDF 5.0.039
+                       $path_style .= sprintf(' /GS%d gs ', $gs);
+               }
+
+               switch ($style){
+                       case 'F':
+                               $op = 'f';
+                       break;
+                       case 'FD':
+                               $op = 'B';
+                       break;
+                       case 'ND':
+                               $op = 'S';
+                       break;
+                       case 'D':
+                               $op = 'S';
+                       break;
+                       default:
+                               $op = 'n';
+               }
+
+               // mPDF 5.0
+               $prestyle = $path_style.' ';
+               $poststyle = $w.' '. $op.$fr.' '.$fill_gradient."\n";
+               return array($prestyle,$poststyle);
+
+       }
+
+       //
+       //      fonction retracant les <path />
+       function svgPath($command, $arguments){
+               $path_cmd = '';
+               $newsubpath = false;    // mPDF 4.4.003
+               // mPDF 5.0.039
+               $minl = $this->pathBBox[0];
+               $mint = $this->pathBBox[1];
+               $maxr = $this->pathBBox[2]+$this->pathBBox[0];
+               $maxb = $this->pathBBox[3]+$this->pathBBox[1];
+               // mPDF 5.0.040
+               $start = array($this->xbase, -$this->ybase);
+
+               // mPDF 4.4.003
+               preg_match_all('/[\-^]?[\d.]+(e[\-]?[\d]+){0,1}/i', $arguments, $a, PREG_SET_ORDER);
+
+               //      if the command is a capital letter, the coords go absolute, otherwise relative
+               if(strtolower($command) == $command) $relative = true;
+               else $relative = false;
+
+
+               $ile_argumentow = count($a);
+
+               //      each command may have different needs for arguments [1 to 8]
+
+               switch(strtolower($command)){
+                       case 'm': // move
+                               for($i = 0; $i<$ile_argumentow; $i+=2){
+                                       $x = $a[$i][0]; 
+                                       $y = $a[$i+1][0]; 
+                                       if($relative){
+                                               $pdfx = ($this->xbase + $x);
+                                               $pdfy = ($this->ybase - $y);
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $pdfx = $x;
+                                               $pdfy =  -$y ;
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+                                       // mPDF 5.0.039
+                                       $minl = min($minl,$pdf_pt['x']);
+                                       $maxr = max($maxr,$pdf_pt['x']);
+                                       $mint = min($mint,-$pdf_pt['y']);
+                                       $maxb = max($maxb,-$pdf_pt['y']);
+                                       if($i == 0) $path_cmd .= sprintf('%.3F %.3F m ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                                       else $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                                       // mPDF 4.4.003  Save start points of subpath
+                                       if ($this->subPathInit) { 
+                                               $this->spxstart = $this->xbase;
+                                               $this->spystart = $this->ybase;
+                                               $this->subPathInit = false;
+                                       }
+                               }
+                       break;
+                       case 'l': // a simple line
+                               for($i = 0; $i<$ile_argumentow; $i+=2){
+                                       $x = ($a[$i][0]); 
+                                       $y = ($a[$i+1][0]); 
+                                       if($relative){
+                                               $pdfx = ($this->xbase + $x);
+                                               $pdfy = ($this->ybase - $y);
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $pdfx = $x ;
+                                               $pdfy =  -$y ;
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+                                       // mPDF 5.0.039
+                                       $minl = min($minl,$pdf_pt['x']);
+                                       $maxr = max($maxr,$pdf_pt['x']);
+                                       $mint = min($mint,-$pdf_pt['y']);
+                                       $maxb = max($maxb,-$pdf_pt['y']);
+                                       $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                               }
+                       break;
+                       case 'h': // a very simple horizontal line
+                               for($i = 0; $i<$ile_argumentow; $i++){
+                                       $x = ($a[$i][0]); 
+                                       if($relative){
+                                               $y = 0;
+                                               $pdfx = ($this->xbase + $x) ;
+                                               $pdfy = ($this->ybase - $y) ;
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $y = -$this->ybase;
+                                               $pdfx = $x;
+                                               $pdfy =  -$y;
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+                                       // mPDF 5.0.039
+                                       $minl = min($minl,$pdf_pt['x']);
+                                       $maxr = max($maxr,$pdf_pt['x']);
+                                       $mint = min($mint,-$pdf_pt['y']);
+                                       $maxb = max($maxb,-$pdf_pt['y']);
+                                       $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                               }
+                       break;
+                       case 'v': // the simplest line, vertical
+                               for($i = 0; $i<$ile_argumentow; $i++){
+                                       $y = ($a[$i][0]); 
+                                       if($relative){
+                                               $x = 0;
+                                               $pdfx = ($this->xbase + $x);
+                                               $pdfy = ($this->ybase - $y);
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $x = $this->xbase;
+                                               $pdfx = $x;
+                                               $pdfy =  -$y;
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+                                       // mPDF 5.0.039
+                                       $minl = min($minl,$pdf_pt['x']);
+                                       $maxr = max($maxr,$pdf_pt['x']);
+                                       $mint = min($mint,-$pdf_pt['y']);
+                                       $maxb = max($maxb,-$pdf_pt['y']);
+                                       $path_cmd .= sprintf('%.3F %.3F l ', $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                               }
+                       break;
+                       case 's': // bezier with first vertex equal first control
+                          // mPDF 4.4.003 
+                          if (!($this->lastcommand == 'C' || $this->lastcommand == 'c' || $this->lastcommand == 'S' || $this->lastcommand == 's')) {
+                               $this->lastcontrolpoints = array(0,0);
+                          }
+                               for($i = 0; $i<$ile_argumentow; $i += 4){
+                                       $x1 = $this->lastcontrolpoints[0];
+                                       $y1 = $this->lastcontrolpoints[1];
+                                       $x2 = ($a[$i][0]); 
+                                       $y2 = ($a[$i+1][0]); 
+                                       $x = ($a[$i+2][0]); 
+                                       $y = ($a[$i+3][0]); 
+                                       if($relative){
+                                               $pdfx1 = ($this->xbase + $x1);
+                                               $pdfy1 = ($this->ybase - $y1);
+                                               $pdfx2 = ($this->xbase + $x2);
+                                               $pdfy2 = ($this->ybase - $y2);
+                                               $pdfx = ($this->xbase + $x);
+                                               $pdfy = ($this->ybase - $y);
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $pdfx1 = $this->xbase + $x1;
+                                               $pdfy1 = $this->ybase -$y1;
+                                               $pdfx2 = $x2;
+                                               $pdfy2 = -$y2;
+                                               $pdfx = $x;
+                                               $pdfy =  -$y;
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
+
+                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+
+                                       // mPDF 5.0.040
+                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
+                                       $bx = calc_bezier_bbox($start, $curves);
+                                       $minl = min($minl,$bx[0]);
+                                       $maxr = max($maxr,$bx[2]);
+                                       $mint = min($mint,$bx[1]);
+                                       $maxb = max($maxb,$bx[3]);
+
+                                       if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
+                                       {
+                                               $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                                       }
+                                       else
+                                       {
+                                               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+                                       }
+
+                          }
+                       break;
+                       case 'c': // bezier with second vertex equal second control
+                       for($i = 0; $i<$ile_argumentow; $i += 6){
+                                       $x1 = ($a[$i][0]); 
+                                       $y1 = ($a[$i+1][0]); 
+                                       $x2 = ($a[$i+2][0]); 
+                                       $y2 = ($a[$i+3][0]); 
+                                       $x = ($a[$i+4][0]); 
+                                       $y = ($a[$i+5][0]); 
+
+
+                                       if($relative){
+                                               $pdfx1 = ($this->xbase + $x1);
+                                               $pdfy1 = ($this->ybase - $y1);
+                                               $pdfx2 = ($this->xbase + $x2);
+                                               $pdfy2 = ($this->ybase - $y2);
+                                               $pdfx = ($this->xbase + $x);
+                                               $pdfy = ($this->ybase - $y);
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $pdfx1 = $x1;
+                                               $pdfy1 = -$y1;
+                                               $pdfx2 = $x2;
+                                               $pdfy2 = -$y2;
+                                               $pdfx = $x;
+                                               $pdfy =  -$y;
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
+                                       // $pdf_pt2 = $this->svg_overflow($pdfx2,$pdfy2);
+                                       // $pdf_pt1 = $this->svg_overflow($pdfx1,$pdfy1);
+                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+
+                                       // mPDF 5.0.040
+                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
+                                       $bx = calc_bezier_bbox($start, $curves);
+                                       $minl = min($minl,$bx[0]);
+                                       $maxr = max($maxr,$bx[2]);
+                                       $mint = min($mint,$bx[1]);
+                                       $maxb = max($maxb,$bx[3]);
+
+                                       if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
+                                       {
+                                               $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                                       }
+                                       else
+                                       {
+                                               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+                                       }
+
+                               }
+                       break;
+
+                       case 'q': // bezier quadratic avec point de control
+                               for($i = 0; $i<$ile_argumentow; $i += 4){
+                                       $x1 = ($a[$i][0]); 
+                                       $y1 = ($a[$i+1][0]); 
+                                       $x = ($a[$i+2][0]); 
+                                       $y = ($a[$i+3][0]); 
+                                       if($relative){
+                                               $pdfx = ($this->xbase + $x);
+                                               $pdfy = ($this->ybase - $y);
+
+                                               $pdfx1 = ($this->xbase + ($x1*2/3));
+                                               $pdfy1 = ($this->ybase - ($y1*2/3));
+                                               // mPDF 4.4.003 
+                                               $pdfx2 = $pdfx1 + 1/3 *($x); 
+                                               $pdfy2 = $pdfy1 + 1/3 *(-$y) ;
+
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $pdfx = $x;
+                                               $pdfy =  -$y;
+
+                                               $pdfx1 = ($this->xbase+(($x1-$this->xbase)*2/3));
+                                               $pdfy1 = ($this->ybase-(($y1+$this->ybase)*2/3));
+
+                                               $pdfx2 = ($x+(($x1-$x)*2/3));
+                                               $pdfy2 = (-$y-(($y1-$y)*2/3));
+
+                                               // mPDF 4.4.003 
+                                               $pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase); 
+                                               $pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
+
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
+
+                                       $pdf_pt = $this->svg_overflow($pdfx,$pdfy);
+
+                                       // mPDF 5.0.040
+                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
+                                       $bx = calc_bezier_bbox($start, $curves);
+                                       $minl = min($minl,$bx[0]);
+                                       $maxr = max($maxr,$bx[2]);
+                                       $mint = min($mint,$bx[1]);
+                                       $maxb = max($maxb,$bx[3]);
+
+                                       if( ($pdf_pt['x'] != $pdfx) || ($pdf_pt['y'] != $pdfy) )
+                                       {
+                                               $path_cmd .= sprintf('%.3F %.3F l ',  $pdf_pt['x']*$this->kp, $pdf_pt['y']*$this->kp);
+                                       }
+                                       else
+                                       {
+                                               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+                                       }
+                               }
+                       break;
+                       case 't': // bezier quadratic avec point de control simetrique a lancien point de control
+                          // mPDF 4.4.003 
+                          if (!($this->lastcommand == 'Q' || $this->lastcommand == 'q' || $this->lastcommand == 'T' || $this->lastcommand == 't')) {
+                               $this->lastcontrolpoints = array(0,0);
+                          }
+                               for($i = 0; $i<$ile_argumentow; $i += 2){
+                                       $x = ($a[$i][0]); 
+                                       $y = ($a[$i+1][0]); 
+
+                                       $x1 = $this->lastcontrolpoints[0];
+                                       $y1 = $this->lastcontrolpoints[1];
+
+                                       if($relative){
+                                               $pdfx = ($this->xbase + $x);
+                                               $pdfy = ($this->ybase - $y);
+
+                                               $pdfx1 = ($this->xbase + ($x1));        // mPDF 4.4.003 
+                                               $pdfy1 = ($this->ybase - ($y1));        // mPDF 4.4.003 
+                                               // mPDF 4.4.003 
+                                               $pdfx2 = $pdfx1 + 1/3 *($x); 
+                                               $pdfy2 = $pdfy1 + 1/3 *(-$y) ;
+
+                                               $this->xbase += $x;
+                                               $this->ybase += -$y;
+                                       }
+                                       else{
+                                               $pdfx = $x;
+                                               $pdfy =  -$y;
+
+                                               $pdfx1 = ($this->xbase + ($x1));        // mPDF 4.4.003 
+                                               $pdfy1 = ($this->ybase - ($y1));        // mPDF 4.4.003 
+                                               // mPDF 4.4.003 
+                                               $pdfx2 = $pdfx1 + 1/3 *($x - $this->xbase); 
+                                               $pdfy2 = $pdfy1 + 1/3 *(-$y - $this->ybase) ;
+
+                                               $this->xbase = $x;
+                                               $this->ybase = -$y;
+                                       }
+
+                                       $this->lastcontrolpoints = array(($pdfx-$pdfx2),-($pdfy-$pdfy2));       // mPDF 4.4.003 always relative
+
+                                       // mPDF 5.0.040
+                                       $curves = array($pdfx1,-$pdfy1,$pdfx2,-$pdfy2,$pdfx,-$pdfy);
+                                       $bx = calc_bezier_bbox($start, $curves);
+                                       $minl = min($minl,$bx[0]);
+                                       $maxr = max($maxr,$bx[2]);
+                                       $mint = min($mint,$bx[1]);
+                                       $maxb = max($maxb,$bx[3]);
+
+                                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $pdfx1*$this->kp, $pdfy1*$this->kp, $pdfx2*$this->kp, $pdfy2*$this->kp, $pdfx*$this->kp, $pdfy*$this->kp);
+                               }
+
+                       break;
+                       case 'a':       // Elliptical arc
+                               for($i = 0; $i<$ile_argumentow; $i += 7){
+                                       $rx = ($a[$i][0]); 
+                                       $ry = ($a[$i+1][0]); 
+                                       $angle = ($a[$i+2][0]); //x-axis-rotation 
+                                       $largeArcFlag = ($a[$i+3][0]); 
+                                       $sweepFlag = ($a[$i+4][0]); 
+                                       $x2 = ($a[$i+5][0]); 
+                                       $y2 = ($a[$i+6][0]); 
+                                       $x1 = $this->xbase;
+                                       $y1 = -$this->ybase;
+                                       if($relative){
+                                               $x2 = $this->xbase + $x2;
+                                               $y2 = -$this->ybase + $y2;
+                                               $this->xbase += ($a[$i+5][0]); 
+                                               $this->ybase += -($a[$i+6][0]); 
+                                       }
+                                       else{
+                                               $this->xbase = $x2;
+                                               $this->ybase = -$y2;
+                                       }
+                                       // mPDF 5.0.039 // mPDF 5.0.040
+                                       list($pcmd, $bounds) = $this->Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag);
+                                       $minl = min($minl,$x2,min($bounds[0]));
+                                       $maxr = max($maxr,$x2,max($bounds[0]));
+                                       $mint = min($mint,$y2,min($bounds[1]));
+                                       $maxb = max($maxb,$y2,max($bounds[1]));
+                                       $path_cmd .= $pcmd;
+
+                               }
+                       break;
+                       case'z':
+                               $path_cmd .= 'h ';
+                               // mPDF 4.4.003
+                               $this->subPathInit = true;
+                               $newsubpath = true;
+                               $this->xbase = $this->spxstart;
+                               $this->ybase = $this->spystart;
+                       break;
+                       default:
+                       break;
+                       }
+
+               if (!$newsubpath) { $this->subPathInit = false; }       // mPDF 4.4.003
+               $this->lastcommand = $command;
+               // mPDF 5.0.039
+               $this->pathBBox[0] = $minl;
+               $this->pathBBox[1] = $mint;
+               $this->pathBBox[2] = $maxr - $this->pathBBox[0];
+               $this->pathBBox[3] = $maxb - $this->pathBBox[1];
+               return $path_cmd;
+
+       }
+
+function Arcto($x1, $y1, $x2, $y2, $rx, $ry, $angle, $largeArcFlag, $sweepFlag) {
+
+       // mPDF 5.0.040
+       $bounds = array(0=>array($x1,$x2),1=>array($y1,$y2));
+       // 1. Treat out-of-range parameters as described in
+       // http://www.w3.org/TR/SVG/implnote.html#ArcImplementationNotes
+       // If the endpoints (x1, y1) and (x2, y2) are identical, then this
+       // is equivalent to omitting the elliptical arc segment entirely
+       if ($x1 == $x2 && $y1 == $y2) return array('', $bounds); // mPD 5.0.040
+
+       // If rX = 0 or rY = 0 then this arc is treated as a straight line
+       // segment (a "lineto") joining the endpoints.
+       if ($rx == 0.0 || $ry == 0.0) {
+       //   return array(Lineto(x2, y2), $bounds); // mPD 5.0.040
+       }
+
+       // If rX or rY have negative signs, these are dropped; the absolute
+       // value is used instead.
+       if ($rx<0.0) $rx = -$rx;
+       if ($ry<0.0) $ry = -$ry;
+
+       // 2. convert to center parameterization as shown in
+       // http://www.w3.org/TR/SVG/implnote.html
+       $sinPhi = sin(deg2rad($angle));
+       $cosPhi = cos(deg2rad($angle));
+
+       $x1dash =  $cosPhi * ($x1-$x2)/2.0 + $sinPhi * ($y1-$y2)/2.0;
+       $y1dash = -$sinPhi * ($x1-$x2)/2.0 + $cosPhi * ($y1-$y2)/2.0;
+
+
+       $numerator = $rx*$rx*$ry*$ry - $rx*$rx*$y1dash*$y1dash - $ry*$ry*$x1dash*$x1dash;
+
+       if ($numerator < 0.0) { 
+               //  If rX , rY and are such that there is no solution (basically,
+               //  the ellipse is not big enough to reach from (x1, y1) to (x2,
+               //  y2)) then the ellipse is scaled up uniformly until there is
+               //  exactly one solution (until the ellipse is just big enough).
+
+               // -> find factor s, such that numerator' with rx'=s*rx and
+               //    ry'=s*ry becomes 0 :
+               $s = sqrt(1.0 - $numerator/($rx*$rx*$ry*$ry));
+
+               $rx *= $s;
+               $ry *= $s;
+               $root = 0.0;
+
+       }
+       else {
+               $root = ($largeArcFlag == $sweepFlag ? -1.0 : 1.0) * sqrt( $numerator/($rx*$rx*$y1dash*$y1dash+$ry*$ry*$x1dash*$x1dash) );
+       }
+
+       $cxdash = $root*$rx*$y1dash/$ry;
+       $cydash = -$root*$ry*$x1dash/$rx;
+
+       $cx = $cosPhi * $cxdash - $sinPhi * $cydash + ($x1+$x2)/2.0;
+       $cy = $sinPhi * $cxdash + $cosPhi * $cydash + ($y1+$y2)/2.0;
+
+
+       $theta1 = $this->CalcVectorAngle(1.0, 0.0, ($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry);
+       $dtheta = $this->CalcVectorAngle(($x1dash-$cxdash)/$rx, ($y1dash-$cydash)/$ry, (-$x1dash-$cxdash)/$rx, (-$y1dash-$cydash)/$ry);
+       if (!$sweepFlag && $dtheta>0)
+               $dtheta -= 2.0*M_PI;
+       else if ($sweepFlag && $dtheta<0)
+               $dtheta += 2.0*M_PI;
+
+       // 3. convert into cubic bezier segments <= 90deg
+       $segments = ceil(abs($dtheta/(M_PI/2.0)));
+       $delta = $dtheta/$segments;
+       $t = 8.0/3.0 * sin($delta/4.0) * sin($delta/4.0) / sin($delta/2.0);
+       $coords = array();
+       for ($i = 0; $i < $segments; $i++) {
+               $cosTheta1 = cos($theta1);
+               $sinTheta1 = sin($theta1);
+               $theta2 = $theta1 + $delta;
+               $cosTheta2 = cos($theta2);
+               $sinTheta2 = sin($theta2);
+
+               // a) calculate endpoint of the segment:
+               $xe = $cosPhi * $rx*$cosTheta2 - $sinPhi * $ry*$sinTheta2 + $cx;
+               $ye = $sinPhi * $rx*$cosTheta2 + $cosPhi * $ry*$sinTheta2 + $cy;
+
+               // b) calculate gradients at start/end points of segment:
+               $dx1 = $t * ( - $cosPhi * $rx*$sinTheta1 - $sinPhi * $ry*$cosTheta1);
+               $dy1 = $t * ( - $sinPhi * $rx*$sinTheta1 + $cosPhi * $ry*$cosTheta1);
+
+               $dxe = $t * ( $cosPhi * $rx*$sinTheta2 + $sinPhi * $ry*$cosTheta2);
+               $dye = $t * ( $sinPhi * $rx*$sinTheta2 - $cosPhi * $ry*$cosTheta2);
+
+               // c) draw the cubic bezier:
+               $coords[$i] = array(($x1+$dx1), ($y1+$dy1), ($xe+$dxe), ($ye+$dye), $xe, $ye);
+
+               // do next segment
+               $theta1 = $theta2;
+               $x1 = $xe;
+               $y1 = $ye;
+       }
+       $path = ' ';
+       foreach($coords AS $c) {
+               $cpx1 = $c[0];
+               $cpy1 = $c[1];
+               $cpx2 = $c[2];
+               $cpy2 = $c[3];
+               $x2 = $c[4];
+               $y2 = $c[5];
+               $path .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $cpx1*$this->kp, -$cpy1*$this->kp, $cpx2*$this->kp, -$cpy2*$this->kp, $x2*$this->kp, -$y2*$this->kp)  ."\n";
+
+               // mPDF 5.0.040
+               $bounds[0][] = $c[4];
+               $bounds[1][] = $c[5];
+       }
+       return array($path, $bounds); // mPD 5.0.040
+}
+
+
+       function CalcVectorAngle($ux, $uy, $vx, $vy) {
+               $ta = atan2($uy, $ux);
+               $tb = atan2($vy, $vx);
+               if ($tb >= $ta)
+                       return ($tb-$ta);
+               return (6.28318530718 - ($ta-$tb));
+       }
+
+
+       // mPDF 4.4.003
+       function ConvertSVGSizePixels($size=5,$maxsize='x'){
+       // maxsize in pixels (user units) or 'y' or 'x'
+       // e.g. $w = $this->ConvertSVGSizePixels($arguments['w'],$this->svg_info['w']*(25.4/$this->mpdf_ref->dpi));
+       // usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
+       // Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
+       // For text $maxsize = Fontsize
+       // Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
+
+               if ($maxsize == 'y') { $maxsize = $this->svg_info['h']; }
+               else if ($maxsize == 'x') { $maxsize = $this->svg_info['w']; }
+               $maxsize *= (25.4/$this->mpdf_ref->dpi);        // convert pixels to mm
+               $fontsize=$this->mpdf_ref->FontSize;
+               //Return as pixels
+               $size = $this->mpdf_ref->ConvertSize($size,$maxsize,$fontsize,false) * 1/(25.4/$this->mpdf_ref->dpi);
+               return $size;
+       }
+
+       // mPDF 4.4.003
+       function ConvertSVGSizePts($size=5){
+       // usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
+       // Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
+       // For text $maxsize = Fontsize
+       // Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
+               $maxsize=$this->mpdf_ref->FontSize;
+               //Return as pts
+               $size = $this->mpdf_ref->ConvertSize($size,$maxsize,false,true) * 72/25.4;
+               return $size;
+       }
+
+
+       //
+       //      fonction retracant les <rect />
+       function svgRect($arguments){
+
+               if ($arguments['h']==0 || $arguments['w']==0) { return ''; }    // mPDF 4.4.003
+
+               $x = $this->ConvertSVGSizePixels($arguments['x'],'x');  // mPDF 4.4.003 
+               $y = $this->ConvertSVGSizePixels($arguments['y'],'y');  // mPDF 4.4.003 
+               $h = $this->ConvertSVGSizePixels($arguments['h'],'y');  // mPDF 4.4.003 
+               $w = $this->ConvertSVGSizePixels($arguments['w'],'x');  // mPDF 4.4.003 
+               $rx = $this->ConvertSVGSizePixels($arguments['rx'],'x');        // mPDF 4.4.003 
+               $ry = $this->ConvertSVGSizePixels($arguments['ry'],'y');        // mPDF 4.4.003 
+
+               if ($rx > $w/2) { $rx = $w/2; } // mPDF 4.4.003
+               if ($ry > $h/2) { $ry = $h/2; } // mPDF 4.4.003
+
+               if ($rx>0 and $ry == 0){$ry = $rx;}
+               if ($ry>0 and $rx == 0){$rx = $ry;}
+
+               if ($rx == 0 and $ry == 0){
+                       //      trace un rectangle sans angle arrondit
+                       $path_cmd = sprintf('%.3F %.3F m ', ($x*$this->kp), -($y*$this->kp));
+                       $path_cmd .= sprintf('%.3F %.3F l ', (($x+$w)*$this->kp), -($y*$this->kp));
+                       $path_cmd .= sprintf('%.3F %.3F l ', (($x+$w)*$this->kp), -(($y+$h)*$this->kp));
+                       $path_cmd .= sprintf('%.3F %.3F l ', ($x)*$this->kp, -(($y+$h)*$this->kp));
+                       $path_cmd .= sprintf('%.3F %.3F l h ', ($x*$this->kp), -($y*$this->kp));
+
+                       
+               }
+               else {
+                       //      trace un rectangle avec les arrondit
+                       //      les points de controle du bezier sont deduis grace a la constante kappa
+                       $kappa = 4*(sqrt(2)-1)/3;
+
+                       $kx = $kappa*$rx;
+                       $ky = $kappa*$ry;
+
+                       $path_cmd = sprintf('%.3F %.3F m ', ($x+$rx)*$this->kp, -$y*$this->kp);
+                       $path_cmd .= sprintf('%.3F %.3F l ', ($x+($w-$rx))*$this->kp, -$y*$this->kp);
+                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x+($w-$rx+$kx))*$this->kp, -$y*$this->kp, ($x+$w)*$this->kp, (-$y+(-$ry+$ky))*$this->kp, ($x+$w)*$this->kp, (-$y+(-$ry))*$this->kp );
+                       $path_cmd .= sprintf('%.3F %.3F l ', ($x+$w)*$this->kp, (-$y+(-$h+$ry))*$this->kp);
+                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x+$w)*$this->kp, (-$y+(-$h-$ky+$ry))*$this->kp, ($x+($w-$rx+$kx))*$this->kp, (-$y+(-$h))*$this->kp, ($x+($w-$rx))*$this->kp, (-$y+(-$h))*$this->kp );
+
+                       $path_cmd .= sprintf('%.3F %.3F l ', ($x+$rx)*$this->kp, (-$y+(-$h))*$this->kp);
+                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x+($rx-$kx))*$this->kp, (-$y+(-$h))*$this->kp, $x*$this->kp, (-$y+(-$h-$ky+$ry))*$this->kp, $x*$this->kp, (-$y+(-$h+$ry))*$this->kp );
+                       $path_cmd .= sprintf('%.3F %.3F l ', $x*$this->kp, (-$y+(-$ry))*$this->kp);
+                       $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c h ', $x*$this->kp, (-$y+(-$ry+$ky))*$this->kp, ($x+($rx-$kx))*$this->kp, -$y*$this->kp, ($x+$rx)*$this->kp, -$y*$this->kp );
+
+
+               }
+               return $path_cmd;
+       }
+
+       //
+       //      fonction retracant les <ellipse /> et <circle />
+       //       le cercle est tracé grave a 4 bezier cubic, les poitn de controles
+       //      sont deduis grace a la constante kappa * rayon
+       function svgEllipse($arguments){
+               if ($arguments['rx']==0 || $arguments['ry']==0) { return ''; }  // mPDF 4.4.003
+
+               $kappa = 4*(sqrt(2)-1)/3;
+
+               $cx = $this->ConvertSVGSizePixels($arguments['cx'],'x');        // mPDF 4.4.003 
+               $cy = $this->ConvertSVGSizePixels($arguments['cy'],'y');        // mPDF 4.4.003 
+               $rx = $this->ConvertSVGSizePixels($arguments['rx'],'x');        // mPDF 4.4.003 
+               $ry = $this->ConvertSVGSizePixels($arguments['ry'],'y');        // mPDF 4.4.003 
+
+               $x1 = $cx;
+               $y1 = -$cy+$ry;
+
+               $x2 = $cx+$rx;
+               $y2 = -$cy;
+
+               $x3 = $cx;
+               $y3 = -$cy-$ry;
+
+               $x4 = $cx-$rx;
+               $y4 = -$cy;
+
+               $path_cmd = sprintf('%.3F %.3F m ', $x1*$this->kp, $y1*$this->kp);
+               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x1+($rx*$kappa))*$this->kp, $y1*$this->kp, $x2*$this->kp, ($y2+($ry*$kappa))*$this->kp, $x2*$this->kp, $y2*$this->kp);
+               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x2*$this->kp, ($y2-($ry*$kappa))*$this->kp, ($x3+($rx*$kappa))*$this->kp, $y3*$this->kp, $x3*$this->kp, $y3*$this->kp);
+               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($x3-($rx*$kappa))*$this->kp, $y3*$this->kp, $x4*$this->kp, ($y4-($ry*$kappa))*$this->kp, $x4*$this->kp, $y4*$this->kp);
+               $path_cmd .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x4*$this->kp, ($y4+($ry*$kappa))*$this->kp, ($x1-($rx*$kappa))*$this->kp, $y1*$this->kp, $x1*$this->kp, $y1*$this->kp);
+               $path_cmd .= 'h ';
+
+               return $path_cmd;
+
+       }
+
+       //
+       //      fonction retracant les <polyline /> et les <line />
+       function svgPolyline($arguments,$ispolyline=true){
+               if ($ispolyline) {
+                       $xbase = $arguments[0] ;
+                       $ybase = - $arguments[1] ;
+               }
+               else {
+                       if ($arguments[0]==$arguments[2] && $arguments[1]==$arguments[3]) { return ''; }        // mPDF 4.4.003  Zero length line
+                       $xbase = $this->ConvertSVGSizePixels($arguments[0],'x');        // mPDF 4.4.003 
+                       $ybase = - $this->ConvertSVGSizePixels($arguments[1],'y');      // mPDF 4.4.003 
+               }
+               $path_cmd = sprintf('%.3F %.3F m ', $xbase*$this->kp, $ybase*$this->kp);
+               for ($i = 2; $i<count($arguments);$i += 2) {
+                       if ($ispolyline) {
+                               $tmp_x = $arguments[$i] ;
+                               $tmp_y = - $arguments[($i+1)] ;
+                       }
+                       else {
+                               $tmp_x = $this->ConvertSVGSizePixels($arguments[$i],'x') ;      // mPDF 4.4.003 
+                               $tmp_y = - $this->ConvertSVGSizePixels($arguments[($i+1)],'y') ;        // mPDF 4.4.003 
+                       }
+                       $path_cmd .= sprintf('%.3F %.3F l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
+               }
+
+       //      $path_cmd .= 'h '; // ?? In error - don't close subpath here
+               return $path_cmd;
+
+       }
+
+       //
+       //      fonction retracant les <polygone />
+       function svgPolygon($arguments){
+               $xbase = $arguments[0] ;
+               $ybase = - $arguments[1] ;
+               $path_cmd = sprintf('%.3F %.3F m ', $xbase*$this->kp, $ybase*$this->kp);
+               for ($i = 2; $i<count($arguments);$i += 2) {
+                       $tmp_x = $arguments[$i] ;
+                       $tmp_y = - $arguments[($i+1)] ;
+
+                       $path_cmd .= sprintf('%.3F %.3F l ', $tmp_x*$this->kp, $tmp_y*$this->kp);
+
+               }
+               $path_cmd .= sprintf('%.3F %.3F l ', $xbase*$this->kp, $ybase*$this->kp);
+               $path_cmd .= 'h ';
+               return $path_cmd;
+
+       }
+
+       //
+       //      write string to image
+       function svgText() {
+               // $tmp = count($this->txt_style)-1;
+               $current_style = array_pop($this->txt_style);
+               $style = '';
+               $render = -1;
+               if(isset($this->txt_data[2]))
+               {
+                       // select font
+                       $style .= ($current_style['font-weight'] == 'bold')?'B':'';
+                       $style .= ($current_style['font-style'] == 'italic')?'I':'';
+                       $size = $current_style['font-size']*$this->kf;  // mPDF 5.0.039
+
+                       // mPDF 5.0
+                       $current_style['font-family'] = $this->mpdf_ref->SetFont($current_style['font-family'],$style,$size,false);
+                       $this->mpdf_ref->CurrentFont['fo'] = true;      // mPDF 5.0.039
+
+
+                       // mPDF 5.0.041
+                       $opacitystr = '';
+                       $opacity = 1;
+                       if (isset($current_style['fill-opacity'])) {
+                               if ($current_style['fill-opacity'] == 0) { $opacity = 0; }
+                               else if ($current_style['fill-opacity'] > 1) { $opacity = 1; }
+                               else if ($current_style['fill-opacity'] > 0) { $opacity = $current_style['fill-opacity']; }
+                               else if ($current_style['fill-opacity'] < 0) { $opacity = 0; }
+                       }
+                       $gs = $this->mpdf_ref->AddExtGState(array('ca'=>$opacity, 'BM'=>'/Normal'));
+                       $this->mpdf_ref->extgstates[$gs]['fo'] = true;  // mPDF 5.0.039
+                       $opacitystr = sprintf(' /GS%d gs ', $gs);
+
+                       // mPDF 5.0.051
+                       $fillstr = '';
+                       if (isset($current_style['fill']) && $current_style['fill']!='none') {
+                               $col = $this->mpdf_ref->ConvertColor($current_style['fill']);
+                               // mPDF 5.0.051
+                               $fillstr = $this->mpdf_ref->SetFColor($col, true);
+                               $render = "0";  // Fill (only)
+                       }
+                       $strokestr = '';
+                       if (isset($current_style['stroke-width']) && $current_style['stroke-width']>0 && $current_style['stroke']!='none') {
+                               $scol = $this->mpdf_ref->ConvertColor($current_style['stroke']);
+                               if ($scol) { 
+                                       $strokestr .= $this->mpdf_ref->SetDColor($scol, true).' ';      // mPDF 5.0.051
+                               }
+                               $linewidth = $this->ConvertSVGSizePixels($current_style['stroke-width']);
+                               if ($linewidth > 0) { 
+                                       $strokestr .= sprintf('%.3F w 1 J 1 j ',$linewidth*$this->kp); 
+                                       if ($render == -1) { $render = "1"; }   // stroke only
+                                       else { $render = "2"; }         // fill and stroke
+                               }
+                       }
+                       if ($render == -1) { return ''; }       
+
+                       $x = $this->ConvertSVGSizePixels($this->txt_data[0],'x');       // mPDF 4.4.003 
+                       $y = $this->ConvertSVGSizePixels($this->txt_data[1],'y');       // mPDF 4.4.003
+                       $txt = $this->txt_data[2];
+
+                       // mPDF 4.4.003
+                       $txt = preg_replace('/\f/','',$txt); 
+                       $txt = preg_replace('/\r/','',$txt); 
+                       $txt = preg_replace('/\n/',' ',$txt); 
+                       $txt = preg_replace('/\t/',' ',$txt); 
+                       $txt = preg_replace("/[ ]+/u",' ',$txt);
+
+                       $txt = trim($txt);
+
+                       $txt = $this->mpdf_ref->purify_utf8_text($txt);
+                       if ($this->mpdf_ref->text_input_as_HTML) {
+                               $txt = $this->mpdf_ref->all_entities_to_utf8($txt);
+                       }
+
+                       // mPDF 5.0
+                       if ($this->mpdf_ref->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mpdf_ref->mb_enc,'UTF-8'); }
+                       if (preg_match("/([".$this->mpdf_ref->pregRTLchars."])/u", $txt)) { $this->mpdf_ref->biDirectional = true; } // mPDF 4.4.003
+
+                       $this->mpdf_ref->magic_reverse_dir($txt, true, 'ltr');  // mPDF 5.0.054
+                       $this->mpdf_ref->ConvertIndic($txt);
+
+
+                       if ($current_style['text-anchor']=='middle') {
+                               $tw = $this->mpdf_ref->GetStringWidth($txt)*_MPDFK/2;   // mPDF 4.4.003 // mPDF 5.4.09
+                       }
+                       else if ($current_style['text-anchor']=='end') {
+                               $tw = $this->mpdf_ref->GetStringWidth($txt)*_MPDFK;     // mPDF 4.4.003 // mPDF 5.4.09
+                       }
+                       else $tw = 0;
+
+                       if (!$this->mpdf_ref->usingCoreFont) {
+                               $this->mpdf_ref->UTF8StringToArray($txt);       // mPDF 5.0 adds chars to subset list
+                               $txt= $this->mpdf_ref->UTF8ToUTF16BE($txt, false);
+                       }
+                       $txt='('.$this->mpdf_ref->_escape($txt).')'; 
+                       $this->mpdf_ref->CurrentFont['used']= true;
+
+                       $pdfx = $x - $tw/$this->kp;     // mPDF 4.4.009
+                       $pdfy =  -$y  ;
+                       $xbase = $x;
+                       $ybase = -$y;
+
+                       // mPDF 5.0.041
+                       // mPDF 5.0.051
+                       $path_cmd =  sprintf('q BT /F%d %s %.3F Tf %.3F %.3F Td %s Tr %s %s %s Tj ET Q ',$this->mpdf_ref->CurrentFont['i'],$opacitystr, $this->mpdf_ref->FontSizePt,$pdfx*$this->kp,$pdfy*$this->kp,$render,$fillstr,$strokestr,$txt)."\n";
+                       unset($this->txt_data[0], $this->txt_data[1],$this->txt_data[2]);
+
+                       // mPDF 5.4.12
+                       if (isset($current_style['font-size-parent'])) {
+                               $this->mpdf_ref->SetFontSize($current_style['font-size-parent']);
+                       }
+               }
+               else
+               {
+                       return ' ';
+               }
+//             $path_cmd .= 'h ';      // mPDF 5.0
+               return $path_cmd;
+       }
+
+
+function svgDefineTxtStyle($critere_style)
+{
+               // get copy of current/default txt style, and modify it with supplied attributes
+               $tmp = count($this->txt_style)-1;
+               $current_style = $this->txt_style[$tmp];
+               if (isset($critere_style['style'])){
+                       if (preg_match('/fill:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+                               $current_style['fill'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+                       }
+                       else { $tmp = preg_replace("/(.*)fill:\s*([a-z0-9#_()]*|none)(.*)/i","$2",$critere_style['style']);
+                               if ($tmp != $critere_style['style']){ $current_style['fill'] = $tmp; }
+                       }
+
+                       $tmp = preg_replace("/(.*)fill-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['fill-opacity'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)fill-rule:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['fill-rule'] = $tmp;}
+
+                       if (preg_match('/stroke:\s*rgb\((\d+),\s*(\d+),\s*(\d+)\)/',$critere_style['style'], $m)) {
+                               $current_style['stroke'] = '#'.str_pad(dechex($m[1]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[2]), 2, "0", STR_PAD_LEFT).str_pad(dechex($m[3]), 2, "0", STR_PAD_LEFT);
+                       }
+                       else { $tmp = preg_replace("/(.*)stroke:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                               if ($tmp != $critere_style['style']){ $current_style['stroke'] = $tmp; }
+                       }
+                       
+                       $tmp = preg_replace("/(.*)stroke-linecap:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-linecap'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)stroke-linejoin:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-linejoin'] = $tmp;}
+                       
+                       $tmp = preg_replace("/(.*)stroke-miterlimit:\s*([a-z0-9#]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-miterlimit'] = $tmp;}
+                       
+                       $tmp = preg_replace("/(.*)stroke-opacity:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-opacity'] = $tmp; }
+                       
+                       $tmp = preg_replace("/(.*)stroke-width:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-width'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)stroke-dasharray:\s*([a-z0-9., ]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-dasharray'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)stroke-dashoffset:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $current_style['stroke-dashoffset'] = $tmp;}
+
+                       // mPDF 5.0.039
+                       $tmp = preg_replace("/(.*)font-family:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $critere_style['font-family'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)font-size:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $critere_style['font-size'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)font-weight:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $critere_style['font-weight'] = $tmp;}
+
+                       $tmp = preg_replace("/(.*)font-style:\s*([a-z0-9.]*|none)(.*)/i","$2",$critere_style['style']);
+                       if ($tmp != $critere_style['style']){ $critere_style['font-style'] = $tmp;}
+
+               }
+
+               if (isset($critere_style['font'])){
+
+                       // [ [ <'font-style'> || <'font-variant'> || <'font-weight'> ]?<'font-size'> [ / <'line-height'> ]? <'font-family'> ]
+
+                       $tmp = preg_replace("/(.*)(italic|oblique)(.*)/i","$2",$critere_style['font']);
+                       if ($tmp != $critere_style['font']){ 
+                               if($tmp == 'oblique'){
+                                       $tmp = 'italic';
+                               }
+                               $current_style['font-style'] = $tmp;
+                       }
+                       $tmp = preg_replace("/(.*)(bold|bolder)(.*)/i","$2",$critere_style['font']);
+                       if ($tmp != $critere_style['font']){ 
+                               if($tmp == 'bolder'){
+                                       $tmp = 'bold';
+                               }
+                               $current_style['font-weight'] = $tmp;
+                       }
+                       
+                       // select digits not followed by percent sign nor preceeded by forward slash
+                       $tmp = preg_replace("/(.*)\b(\d+)[\b|\/](.*)/i","$2",$critere_style['font']);
+                       if ($tmp != $critere_style['font']){ 
+                               $current_style['font-size'] = $this->ConvertSVGSizePts($tmp); 
+                               $this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
+                       }
+                       
+               }
+
+               if(isset($critere_style['fill'])){
+                       $current_style['fill'] = $critere_style['fill'];
+               }
+               if(isset($critere_style['stroke'])){
+                       $current_style['stroke'] = $critere_style['stroke'];
+               }
+               if(isset($critere_style['stroke-width'])){
+                       $current_style['stroke-width'] = $critere_style['stroke-width'];
+               }
+               
+               if(isset($critere_style['font-style'])){
+                       if(strtolower($critere_style['font-style']) == 'oblique') 
+                       {
+                               $critere_style['font-style'] = 'italic';
+                       }
+                       $current_style['font-style'] = $critere_style['font-style'];
+               }
+               
+               if(isset($critere_style['font-weight'])){
+                       if(strtolower($critere_style['font-weight']) == 'bolder')
+                       {
+                               $critere_style['font-weight'] = 'bold';
+                       }
+                       $current_style['font-weight'] = $critere_style['font-weight'];
+               }
+               
+               if(isset($critere_style['font-size'])){
+                       // mPDF 5.4.12
+                       if (strpos($critere_style['font-size'], '%')!==false) {
+                               $current_style['font-size-parent'] = $current_style['font-size'];
+                       }
+                       $current_style['font-size'] = $this->ConvertSVGSizePts($critere_style['font-size']);
+                       $this->mpdf_ref->SetFont('','',$current_style['font-size'],false);
+               }
+
+               if(isset($critere_style['font-family'])){
+                       $v = $critere_style['font-family'];
+                       $aux_fontlist = explode(",",$v);
+                       $found = 0;
+                       foreach($aux_fontlist AS $f) {
+                               $fonttype = trim($f);
+                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
+                               $fonttype = preg_replace('/ /','',$fonttype);
+                               $v = strtolower(trim($fonttype));
+                               if (isset($this->mpdf_ref->fonttrans[$v]) && $this->mpdf_ref->fonttrans[$v]) { $v = $this->mpdf_ref->fonttrans[$v]; }
+                               if ((!$this->mpdf_ref->usingCoreFont && in_array($v,$this->mpdf_ref->available_unifonts)) || 
+                                       ($this->mpdf_ref->usingCoreFont && in_array($v,array('courier','times','helvetica','arial'))) || 
+                                       in_array($v, array('sjis','uhc','big5','gb'))) { 
+                                       $current_style['font-family'] = $v; 
+                                       $found = 1;
+                                       break;
+                               }
+                       }
+                       if (!$found) {
+                          foreach($aux_fontlist AS $f) {
+                               $fonttype = trim($f);
+                               $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
+                               $fonttype = preg_replace('/ /','',$fonttype);
+                               $v = strtolower(trim($fonttype));
+                               if (isset($this->mpdf_ref->fonttrans[$v]) && $this->mpdf_ref->fonttrans[$v]) { $v = $this->mpdf_ref->fonttrans[$v]; }
+                               if (in_array($v,$this->mpdf_ref->sans_fonts) || in_array($v,$this->mpdf_ref->serif_fonts) || in_array($v,$this->mpdf_ref->mono_fonts) ) { 
+                                       $current_style['font-family'] = $v; 
+                                       break;
+                               }
+                          }
+                       }
+               }
+       
+               if(isset($critere_style['text-anchor'])){
+                       $current_style['text-anchor'] = $critere_style['text-anchor'];
+               }
+       
+       // add current style to text style array (will remove it later after writing text to svg_string)
+       array_push($this->txt_style,$current_style);
+}
+
+
+
+       //
+       //      fonction ajoutant un gradient
+       function svgAddGradient($id,$array_gradient){
+
+               $this->svg_gradient[$id] = $array_gradient;
+
+       }
+       //
+       //      Ajoute une couleur dans le gradient correspondant
+
+       //
+       //      function ecrivant dans le svgstring
+       function svgWriteString($content){
+
+               $this->svg_string .= $content;
+
+       }
+
+
+
+       //      analise le svg et renvoie aux fonctions precedente our le traitement
+       function ImageSVG($data){
+               $this->svg_info = array();
+
+               // mPDF 4.4.006
+               if (preg_match('/<!ENTITY/si',$data)) {
+                       // Get User-defined entities
+                       preg_match_all('/<!ENTITY\s+([a-z]+)\s+\"(.*?)\">/si',$data, $ent);
+                       // Replace entities
+                       for ($i=0; $i<count($ent[0]); $i++) {
+                               $data = preg_replace('/&'.preg_quote($ent[1][$i],'/').';/is', $ent[2][$i], $data);
+                       }
+               }
+
+
+               // mPDF 4.4.003
+               if (preg_match('/xlink:href=/si',$data)) {
+                       // Get links
+                       preg_match_all('/(<(linearGradient|radialgradient)[^>]*)xlink:href=["\']#(.*?)["\'](.*?)\/>/si',$data, $links);
+                       if (count($links[0])) { $links[5] = array(); }  // mPDF 4.5.010
+                       // Delete links from data - keeping in $links
+                       for ($i=0; $i<count($links[0]); $i++) {
+                               $links[5][$i] = 'tmpLink'.RAND(100000,9999999); // mPDF 4.5.010
+                               $data = preg_replace('/'.preg_quote($links[0][$i],'/').'/is', '<MYLINKS'.$links[5][$i].'>' , $data);    // mPDF 4.5.010
+                       }
+                       // Get targets
+                       preg_match_all('/<(linearGradient|radialgradient)([^>]*)id=["\'](.*?)["\'](.*?)>(.*?)<\/(linearGradient|radialgradient)>/si',$data, $m);
+                       $targets = array();
+                       $stops = array();
+                       // keeping in $targets
+                       for ($i=0; $i<count($m[0]); $i++) {
+                               $stops[$m[3][$i]] = $m[5][$i];
+                       }
+                       // Add back links this time as targets (gradients)
+                       for ($i=0; $i<count($links[0]); $i++) {
+                               $def = $links[1][$i] .' '.$links[4][$i].'>'. $stops[$links[3][$i]].'</'.$links[2][$i] .'>' ;    // mPDF 4.5.010
+                               $data = preg_replace('/<MYLINKS'.$links[5][$i].'>/is', $def , $data);   // mPDF 4.5.010
+                       }
+               }
+               // mPDF 4.4.003 - Removes <pattern>
+               $data = preg_replace('/<pattern.*?<\/pattern>/is', '', $data);
+               // mPDF 4.4.003 - Removes <marker>
+               $data = preg_replace('/<marker.*?<\/marker>/is', '', $data);
+
+               $this->svg_info['data'] = $data;
+
+               $this->svg_string = '';
+               
+               //
+               //      chargement unique des fonctions
+               if(!function_exists("xml_svg2pdf_start")){      // mPDF 5.3.76
+
+                       function xml_svg2pdf_start($parser, $name, $attribs){
+                               //
+                               //      definition
+                               global $svg_class, $last_gradid;
+
+                               // mPDF 4.4.003
+                               $svg_class->xbase = 0;
+                               $svg_class->ybase = 0;
+                               switch (strtolower($name)){
+
+                               // mPDF 5.0.039 - Don't output stuff inside <defs>
+                               case 'defs':
+                                       $svg_class->inDefs = true;
+                                       return;
+
+                               case 'svg':
+                                       $svg_class->svgOffset($attribs);
+                                       break;
+
+                               case 'path':
+                                       $path = $attribs['d'];
+                                       // mPDF 5.6.65
+                                       preg_match_all('/([MZLHVCSQTAmzlhvcsqta])([eE ,\-.\d]+)*/', $path, $commands, PREG_SET_ORDER);
+                                       $path_cmd = '';
+                                       $svg_class->subPathInit = true;
+                                       // mPDF 5.0.039
+                                       $svg_class->pathBBox = array(999999,999999,-999999,-999999);
+                                       foreach($commands as $c){
+                                               if(count($c)==3 || $c[2]==''){
+                                                       list($tmp, $command, $arguments) = $c;
+                                               }
+                                               else{
+                                                       list($tmp, $command) = $c;
+                                                       $arguments = '';
+                                               }
+
+                                               $path_cmd .= $svg_class->svgPath($command, $arguments);
+                                       }
+                                       // mPDF 5.0.039
+                                       if ($svg_class->pathBBox[2]==-1999998) { $svg_class->pathBBox[2] = 100; }
+                                       if ($svg_class->pathBBox[3]==-1999998) { $svg_class->pathBBox[3] = 100; }
+                                       if ($svg_class->pathBBox[0]==999999) { $svg_class->pathBBox[0] = 0; }
+                                       if ($svg_class->pathBBox[1]==999999) { $svg_class->pathBBox[1] = 0; }
+                                       $critere_style = $attribs;
+                                       unset($critere_style['d']);
+                                       $path_style = $svg_class->svgDefineStyle($critere_style);
+                                       break;
+
+                               case 'rect':
+                                       if (!isset($attribs['x'])) {$attribs['x'] = 0;}
+                                       if (!isset($attribs['y'])) {$attribs['y'] = 0;}
+                                       if (!isset($attribs['rx'])) {$attribs['rx'] = 0;}
+                                       if (!isset($attribs['ry'])) {$attribs['ry'] = 0;}
+                                       $arguments = array(
+                                               'x' => $attribs['x'],
+                                               'y' => $attribs['y'],
+                                               'w' => $attribs['width'],
+                                               'h' => $attribs['height'],
+                                               'rx' => $attribs['rx'],
+                                               'ry' => $attribs['ry']
+                                       );
+                                       $path_cmd =  $svg_class->svgRect($arguments);
+                                       $critere_style = $attribs;
+                                       unset($critere_style['x'],$critere_style['y'],$critere_style['rx'],$critere_style['ry'],$critere_style['height'],$critere_style['width']);
+                                       $path_style = $svg_class->svgDefineStyle($critere_style);
+                                       break;
+
+                               case 'circle':
+                                       if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
+                                       if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
+                                       $arguments = array(
+                                               'cx' => $attribs['cx'],
+                                               'cy' => $attribs['cy'],
+                                               'rx' => $attribs['r'],
+                                               'ry' => $attribs['r']
+                                       );
+                                       $path_cmd =  $svg_class->svgEllipse($arguments);
+                                       $critere_style = $attribs;
+                                       unset($critere_style['cx'],$critere_style['cy'],$critere_style['r']);
+                                       $path_style = $svg_class->svgDefineStyle($critere_style);
+                                       break;
+
+                               case 'ellipse':
+                                       if (!isset($attribs['cx'])) {$attribs['cx'] = 0;}
+                                       if (!isset($attribs['cy'])) {$attribs['cy'] = 0;}
+                                       $arguments = array(
+                                               'cx' => $attribs['cx'],
+                                               'cy' => $attribs['cy'],
+                                               'rx' => $attribs['rx'],
+                                               'ry' => $attribs['ry']
+                                       );
+                                       $path_cmd =  $svg_class->svgEllipse($arguments);
+                                       $critere_style = $attribs;
+                                       unset($critere_style['cx'],$critere_style['cy'],$critere_style['rx'],$critere_style['ry']);
+                                       $path_style = $svg_class->svgDefineStyle($critere_style);
+                                       break;
+
+                               case 'line':
+                                       $arguments = array($attribs['x1'],$attribs['y1'],$attribs['x2'],$attribs['y2']);
+                                       $path_cmd =  $svg_class->svgPolyline($arguments,false); //  mPDF 4.4.003
+                                       $critere_style = $attribs;
+                                       unset($critere_style['x1'],$critere_style['y1'],$critere_style['x2'],$critere_style['y2']);
+                                       $path_style = $svg_class->svgDefineStyle($critere_style);
+                                       break;
+
+                               case 'polyline':
+                                       $path = $attribs['points'];
+                                       preg_match_all('/[0-9\-\.]*/',$path, $tmp, PREG_SET_ORDER);
+                                       $arguments = array();
+                                       for ($i=0;$i<count($tmp);$i++){
+                                               if ($tmp[$i][0] !=''){
+                                                       array_push($arguments, $tmp[$i][0]);
+                                               }
+                                       }
+                                       $path_cmd =  $svg_class->svgPolyline($arguments);
+                                       $critere_style = $attribs;
+                                       unset($critere_style['points']);
+                                       $path_style = $svg_class->svgDefineStyle($critere_style);
+                                       break;
+
+                               case 'polygon':
+                                       $path = $attribs['points'];
+                                       preg_match_all('/([\-]*[0-9\.]+)/',$path, $tmp);
+                                       $arguments = array();
+                                       for ($i=0;$i<count($tmp[0]);$i++){
+                                               if ($tmp[0][$i] !=''){
+                                                       array_push($arguments, $tmp[0][$i]);
+                                               }
+                                       }
+                                       $path_cmd =  $svg_class->svgPolygon($arguments);
+                                       //      definition du style de la forme:
+                                       $critere_style = $attribs;
+                                       unset($critere_style['points']);
+                                       $path_style = $svg_class->svgDefineStyle($critere_style);
+                                       break;
+
+                               case 'lineargradient':
+                                               $tmp_gradient = array(
+                                                       'type' => 'linear',
+                                                       'info' => array(
+                                                               'x1' => $attribs['x1'],
+                                                               'y1' => $attribs['y1'],
+                                                               'x2' => $attribs['x2'],
+                                                               'y2' => $attribs['y2']
+                                                       ),
+                                                       'transform' => $attribs['gradientTransform'],
+                                                       'units' => $attribs['gradientUnits'],   /* mPDF 4.4.003 */
+                                                       'spread' => $attribs['spreadMethod'],   /* mPDF 5.0.040 */
+                                                       'color' => array()
+                                               );
+
+                                               $last_gradid = $attribs['id'];
+                                               $svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
+                                       break;
+
+                               case 'radialgradient':
+                                               $tmp_gradient = array(
+                                                       'type' => 'radial',
+                                                       'info' => array(
+                                                               'x0' => $attribs['cx'],
+                                                               'y0' => $attribs['cy'],
+                                                               'x1' => $attribs['fx'],
+                                                               'y1' => $attribs['fy'],
+                                                               'r' => $attribs['r']
+                                                       ),
+                                                       'transform' => $attribs['gradientTransform'],
+                                                       'units' => $attribs['gradientUnits'],   /* mPDF 4.4.003 */
+                                                       'spread' => $attribs['spreadMethod'],   /* mPDF 5.0.040 */
+                                                       'color' => array()
+                                               );
+
+                                               $last_gradid = $attribs['id'];
+
+                                               $svg_class->svgAddGradient($attribs['id'],$tmp_gradient);
+
+                                       break;
+
+                               case 'stop':
+                                               if (!$last_gradid) break;
+                                               // mPDF 4.4.003  // mPDF 5.0.040
+                                               if (isset($attribs['style']) AND preg_match('/stop-color:\s*([^;]*)/i',$attribs['style'],$m)) {
+                                                       $color = trim($m[1]);
+                                               } else if (isset($attribs['stop-color'])) {
+                                                       $color = $attribs['stop-color'];
+                                               }
+                                               $col = $svg_class->mpdf_ref->ConvertColor($color);
+
+                                               // mPDF 5.0.051
+                                               // mPDF 5.3.74
+                                               if ($col{0}==3 || $col{0}==5) { // RGB
+                                                       $color_final = sprintf('%.3F %.3F %.3F',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255);
+                                                       $svg_class->svg_gradient[$last_gradid]['colorspace']='RGB';
+                                               }
+                                               else if ($col{0}==4 || $col{0}==6) {    // CMYK
+                                                       $color_final = sprintf('%.3F %.3F %.3F %.3F',ord($col{1})/100,ord($col{2})/100,ord($col{3})/100,ord($col{4})/100);
+                                                       $svg_class->svg_gradient[$last_gradid]['colorspace']='CMYK';
+                                               }
+                                               else if ($col{0}==1) {  // Grayscale
+                                                       $color_final = sprintf('%.3F',ord($col{1})/255);
+                                                       $svg_class->svg_gradient[$last_gradid]['colorspace']='Gray';
+                                               }
+
+
+                                               // mPDF 5.0.020
+                                               $stop_opacity = 1;
+                                               // mPDF 4.4.003
+                                               if (isset($attribs['style']) AND preg_match('/stop-opacity:\s*([0-9.]*)/i',$attribs['style'],$m)) {
+                                                       $stop_opacity = $m[1];
+                                               } else if (isset($attribs['stop-opacity'])) {
+                                                       $stop_opacity = $attribs['stop-opacity'];
+                                               }
+                                               // mPDF 5.0.051
+                                               // mPDF 5.3.74
+                                               else if ($col{0}==5) {  // RGBa
+                                                       $stop_opacity = ord($col{4}/100);
+                                               }
+                                               else if ($col{0}==6) {  // CMYKa
+                                                       $stop_opacity = ord($col{5}/100);
+                                               }
+
+                                               $tmp_color = array(
+                                                       'color' => $color_final,
+                                                       'offset' => $attribs['offset'],
+                                                       'opacity' => $stop_opacity
+                                               );
+                                               array_push($svg_class->svg_gradient[$last_gradid]['color'],$tmp_color);
+                                       break;
+
+
+                               case 'a':
+                                               if (isset($attribs['xlink:href'])) {
+                                                       unset($attribs['xlink:href']);  // this should be a hyperlink
+                                                               // not handled like a xlink:href in other elements
+                                               }               // then continue like a <g>
+                               case 'g':
+                                               $array_style = $svg_class->svgDefineStyle($attribs);
+                                               if ($array_style['transformations']) {
+                                                       $svg_class->svgWriteString(' q '.$array_style['transformations']);
+                                               }
+                                               array_push($svg_class->svg_style,$array_style);
+
+                                               $svg_class->svgDefineTxtStyle($attribs);        // mPDF 4.4.003
+
+                                       break;
+
+                               case 'text':
+                                               // mPDF 4.4.003
+                                               $array_style = $svg_class->svgDefineStyle($attribs);
+                                               if ($array_style['transformations']) {
+                                                       $svg_class->svgWriteString(' q '.$array_style['transformations']);
+                                               }
+                                               array_push($svg_class->svg_style,$array_style);
+
+                                               $svg_class->txt_data = array();
+                                               $svg_class->txt_data[0] = $attribs['x'];
+                                               $svg_class->txt_data[1] = $attribs['y'];
+                                               $critere_style = $attribs;
+                                               unset($critere_style['x'], $critere_style['y']);
+                                               $svg_class->svgDefineTxtStyle($critere_style);
+                                       break;
+                               }
+
+                               //
+                               //insertion des path et du style dans le flux de donné general.
+                               if (isset($path_cmd) && $path_cmd) {    // mPDF 4.4.003
+                                       // mPDF 5.0
+                                       list($prestyle,$poststyle) = $svg_class->svgStyle($path_style, $attribs, strtolower($name));
+                                       if ($path_style['transformations']) {   // transformation on an element
+                                               $svg_class->svgWriteString(" q ".$path_style['transformations']. " $prestyle $path_cmd $poststyle" . " Q\n");
+                                       }
+                                       else {
+                                               $svg_class->svgWriteString("$prestyle $path_cmd $poststyle\n");
+                                       }
+                               }
+                       }
+
+                       function characterData($parser, $data)
+                       {
+                               global $svg_class;
+                               if(isset($svg_class->txt_data[2])) {
+                                       $svg_class->txt_data[2] .= $data;
+                               }
+                               else {
+                                       $svg_class->txt_data[2] = $data;
+                               }
+                       }
+
+
+                       function xml_svg2pdf_end($parser, $name){
+                               global $svg_class;
+                               switch($name){
+
+                                       case "g":
+                                       case "a":
+                                               $tmp = count($svg_class->svg_style)-1;
+                                               $current_style = $svg_class->svg_style[$tmp];
+                                               if ($current_style['transformations']) {
+                                                       $svg_class->svgWriteString(" Q\n");
+                                               }
+                                               array_pop($svg_class->svg_style);
+
+                                               array_pop($svg_class->txt_style);       // mPDF 4.4.003
+
+                                               break;
+                                       case 'radialgradient':
+                                       case 'lineargradient':
+                                               $last_gradid = '';
+                                               break;
+                                       case "text":
+                                               $path_cmd = $svg_class->svgText();
+                                               // echo 'path >> '.$path_cmd."<br><br>";
+                                               // echo "style >> ".$get_style[1]."<br><br>";
+                                               $svg_class->svgWriteString($path_cmd);
+                                               // mPDF 4.4.003
+                                               $tmp = count($svg_class->svg_style)-1;
+                                               $current_style = $svg_class->svg_style[$tmp];
+                                               if ($current_style['transformations']) {
+                                                       $svg_class->svgWriteString(" Q\n");
+                                               }
+                                               array_pop($svg_class->svg_style);
+
+                                               break;
+                               }
+                               // mPDF 5.0.039 - Don't output stuff inside <defs>
+                               if ($name == 'defs') {
+                                       $svg_class->inDefs = false;
+                               }
+
+                       }
+
+               }
+
+               $svg2pdf_xml='';
+               global $svg_class;
+               $svg_class = $this;
+               // mPDF 5.0.039 - Don't output stuff inside <defs>
+               $svg_class->inDefs = false;
+               $svg2pdf_xml_parser = xml_parser_create("utf-8");
+               xml_parser_set_option($svg2pdf_xml_parser, XML_OPTION_CASE_FOLDING, false);
+               xml_set_element_handler($svg2pdf_xml_parser, "xml_svg2pdf_start", "xml_svg2pdf_end");
+               xml_set_character_data_handler($svg2pdf_xml_parser, "characterData");
+               xml_parse($svg2pdf_xml_parser, $data);
+               // mPDF 4.4.003
+               if ($this->svg_error) { return false; }
+               else {
+                       return array('x'=>$this->svg_info['x']*$this->kp,'y'=>-$this->svg_info['y']*$this->kp,'w'=>$this->svg_info['w']*$this->kp,'h'=>-$this->svg_info['h']*$this->kp,'data'=>$svg_class->svg_string);
+               }
+
+       }
+
+}
+
+// END OF CLASS
+
+
+// mPDF 5.0.040
+function calc_bezier_bbox($start, $c) {
+       $P0 = array($start[0],$start[1]);
+       $P1 = array($c[0],$c[1]);
+       $P2 = array($c[2],$c[3]);
+       $P3 = array($c[4],$c[5]);
+       $bounds = array();
+       $bounds[0][] = $P0[0];
+       $bounds[1][] = $P0[1];
+       $bounds[0][] = $P3[0];
+       $bounds[1][] = $P3[1];
+       for ($i=0;$i<=1;$i++) {
+            $b = 6 * $P0[$i] - 12 * $P1[$i] + 6 * $P2[$i];
+            $a = -3 * $P0[$i] + 9 * $P1[$i] - 9 * $P2[$i] + 3 * $P3[$i];
+            $c = 3 * $P1[$i] - 3 * $P0[$i];
+               if ($a == 0) {
+                       if ($b == 0) { continue; }
+                       $t = -$c / $b;
+                       if ($t>0 && $t<1) {
+                               $bounds[$i][] = (pow((1-$t),3) * $P0[$i] + 3 * pow((1-$t),2) * $t * $P1[$i] + 3 * (1-$t) * pow($t,2) * $P2[$i] + pow($t,3) * $P3[$i]);
+                       }
+                       continue;
+               }
+               $b2ac = pow($b, 2) - 4 * $c * $a;
+               if ($b2ac < 0) { continue; }
+               $t1 = (-$b + sqrt($b2ac))/(2 * $a);
+               if ($t1>0 && $t1<1) { 
+                       $bounds[$i][] = (pow((1-$t1),3) * $P0[$i] + 3 * pow((1-$t1),2) * $t1 * $P1[$i] + 3 * (1-$t1) * pow($t1,2) * $P2[$i] + pow($t1,3) * $P3[$i]);
+               }
+               $t2 = (-$b - sqrt($b2ac))/(2 * $a);
+               if ($t2>0 && $t2<1) { 
+                       $bounds[$i][] = (pow((1-$t2),3) * $P0[$i] + 3 * pow((1-$t2),2) * $t2 * $P1[$i] + 3 * (1-$t2) * pow($t2,2) * $P2[$i] + pow($t2,3) * $P3[$i]);
+               }
+       }
+       $x = min($bounds[0]);
+       $x2 = max($bounds[0]);
+       $y = min($bounds[1]);
+       $y2 = max($bounds[1]);
+       return array($x, $y, $x2, $y2);
+}
+
+// mPDF 5.0.040
+function _testIntersectCircle($cx, $cy, $cr) {
+       // Tests whether a circle fully encloses a rectangle 0,0,1,1
+       // to see if any further radial gradients need adding (SVG)
+       // If centre of circle is inside 0,0,1,1 square
+       if ($cx >= 0 && $cx <= 1 && $cy >= 0 && $cy <= 1) {
+               $maxd = 1.5;
+       }
+       // distance to four corners
+       else {
+               $d1 = sqrt(pow(($cy-0),2) + pow(($cx-0),2));
+               $d2 = sqrt(pow(($cy-1),2) + pow(($cx-0),2));
+               $d3 = sqrt(pow(($cy-0),2) + pow(($cx-1),2));
+               $d4 = sqrt(pow(($cy-1),2) + pow(($cx-1),2));
+               $maxd = max($d1,$d2,$d3,$d4);
+       }
+       if ($cr < $maxd) { return true; }
+       else { return false; }
+}
+
+// mPDF 5.0.040
+function _testIntersect($x1, $y1, $x2, $y2, $x3, $y3, $x4, $y4) {
+       // Tests whether line (x1, y1) and (x2, y2) [a gradient axis (perpendicular)]
+       // intersects with a specific line segment (x3, y3) and (x4, y4)
+       $a1 = $y2-$y1;
+       $b1 = $x1-$x2;
+       $c1 = $a1*$x1+$b1*$y1;
+       $a2 = $y4-$y3;
+       $b2 = $x3-$x4;
+       $c2 = $a2*$x3+$b2*$y3;
+       $det = $a1*$b2 - $a2*$b1;
+       if($det == 0){  //Lines are parallel
+               return false;
+       }
+       else{
+               $x = ($b2*$c1 - $b1*$c2)/$det;
+               $y = ($a1*$c2 - $a2*$c1)/$det;
+               if ($x >= $x3 && $x <= $x4 && $y >= $y3 && $y <= $y4) { return true; }
+       }
+       return false;
+}
+
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/tocontents.php b/inc/3rdparty/libraries/mpdf/classes/tocontents.php
new file mode 100644 (file)
index 0000000..4e0065d
--- /dev/null
@@ -0,0 +1,468 @@
+<?php
+
+class tocontents {
+
+var $mpdf = null;
+var $_toc;
+var $TOCmark;
+var $TOCoutdent;       // mPDF 5.6.31
+var $TOCpreHTML;
+var $TOCpostHTML;
+var $TOCbookmarkText;
+var $TOCusePaging;
+var $TOCuseLinking;
+var $TOCorientation;
+var $TOC_margin_left;
+var $TOC_margin_right;
+var $TOC_margin_top;
+var $TOC_margin_bottom;
+var $TOC_margin_header;
+var $TOC_margin_footer;
+var $TOC_odd_header_name;
+var $TOC_even_header_name;
+var $TOC_odd_footer_name;
+var $TOC_even_footer_name;
+var $TOC_odd_header_value;
+var $TOC_even_header_value;
+var $TOC_odd_footer_value;
+var $TOC_even_footer_value;
+var $TOC_page_selector;
+var $m_TOC; 
+
+function tocontents(&$mpdf) {
+       $this->mpdf = $mpdf;
+       $this->_toc=array();
+       $this->TOCmark = 0;
+       $this->m_TOC=array();
+}
+
+function TOCpagebreak($tocfont='', $tocfontsize='', $tocindent='', $TOCusePaging=true, $TOCuseLinking='', $toc_orientation='', $toc_mgl='',$toc_mgr='',$toc_mgt='',$toc_mgb='',$toc_mgh='',$toc_mgf='',$toc_ohname='',$toc_ehname='',$toc_ofname='',$toc_efname='',$toc_ohvalue=0,$toc_ehvalue=0,$toc_ofvalue=0, $toc_efvalue=0, $toc_preHTML='', $toc_postHTML='', $toc_bookmarkText='', $resetpagenum='', $pagenumstyle='', $suppress='', $orientation='', $mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0, $toc_id=0, $pagesel='', $toc_pagesel='', $sheetsize='', $toc_sheetsize='', $tocoutdent='') {     // mPDF 5.6.19
+               if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
+               else if (!$toc_id) { $toc_id = 0; }
+               else { $toc_id = strtolower($toc_id); }
+
+               if ($TOCusePaging === false || strtolower($TOCusePaging) == "off" || $TOCusePaging === 0 || $TOCusePaging === "0" || $TOCusePaging === "") { $TOCusePaging = false; }
+               else { $TOCusePaging = true; }
+               if (!$TOCuseLinking) { $TOCuseLinking = false; }
+               if ($toc_id) {
+                       $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; 
+                       $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent;
+                       $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation;
+                       $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking;
+                       $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging;
+
+                       if ($toc_preHTML) { $this->m_TOC[$toc_id]['TOCpreHTML'] = $toc_preHTML; }
+                       if ($toc_postHTML) { $this->m_TOC[$toc_id]['TOCpostHTML'] = $toc_postHTML; }
+                       if ($toc_bookmarkText) { $this->m_TOC[$toc_id]['TOCbookmarkText'] = $toc_bookmarkText; }
+
+                       $this->m_TOC[$toc_id]['TOC_margin_left'] = $toc_mgl;
+                       $this->m_TOC[$toc_id]['TOC_margin_right'] = $toc_mgr;
+                       $this->m_TOC[$toc_id]['TOC_margin_top'] = $toc_mgt;
+                       $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $toc_mgb;
+                       $this->m_TOC[$toc_id]['TOC_margin_header'] = $toc_mgh;
+                       $this->m_TOC[$toc_id]['TOC_margin_footer'] = $toc_mgf;
+                       $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $toc_ohname;
+                       $this->m_TOC[$toc_id]['TOC_even_header_name'] = $toc_ehname;
+                       $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $toc_ofname;
+                       $this->m_TOC[$toc_id]['TOC_even_footer_name'] = $toc_efname;
+                       $this->m_TOC[$toc_id]['TOC_odd_header_value'] = $toc_ohvalue;
+                       $this->m_TOC[$toc_id]['TOC_even_header_value'] = $toc_ehvalue;
+                       $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = $toc_ofvalue;
+                       $this->m_TOC[$toc_id]['TOC_even_footer_value'] = $toc_efvalue;
+                       $this->m_TOC[$toc_id]['TOC_page_selector'] = $toc_pagesel;
+                       $this->m_TOC[$toc_id]['TOCsheetsize'] = $toc_sheetsize;
+               }
+               else {
+                       $this->TOCmark = $this->mpdf->page; 
+                       $this->TOCoutdent = $tocoutdent;
+                       $this->TOCorientation = $toc_orientation;
+                       $this->TOCuseLinking = $TOCuseLinking;
+                       $this->TOCusePaging = $TOCusePaging;
+
+                       if ($toc_preHTML) { $this->TOCpreHTML = $toc_preHTML; }
+                       if ($toc_postHTML) { $this->TOCpostHTML = $toc_postHTML; }
+                       if ($toc_bookmarkText) { $this->TOCbookmarkText = $toc_bookmarkText; }
+
+                       $this->TOC_margin_left = $toc_mgl;
+                       $this->TOC_margin_right = $toc_mgr;
+                       $this->TOC_margin_top = $toc_mgt;
+                       $this->TOC_margin_bottom = $toc_mgb;
+                       $this->TOC_margin_header = $toc_mgh;
+                       $this->TOC_margin_footer = $toc_mgf;
+                       $this->TOC_odd_header_name = $toc_ohname;
+                       $this->TOC_even_header_name = $toc_ehname;
+                       $this->TOC_odd_footer_name = $toc_ofname;
+                       $this->TOC_even_footer_name = $toc_efname;
+                       $this->TOC_odd_header_value = $toc_ohvalue;
+                       $this->TOC_even_header_value = $toc_ehvalue;
+                       $this->TOC_odd_footer_value = $toc_ofvalue;
+                       $this->TOC_even_footer_value = $toc_efvalue;
+                       $this->TOC_page_selector = $toc_pagesel;
+                       $this->TOCsheetsize = $toc_sheetsize;
+               }
+}
+
+// Initiate, and Mark a place for the Table of Contents to be inserted
+function TOC($tocfont='', $tocfontsize=0, $tocindent=0, $resetpagenum='', $pagenumstyle='', $suppress='', $toc_orientation='', $TOCusePaging=true, $TOCuseLinking=false, $toc_id=0, $tocoutdent='') {  // mPDF 5.6.19) {
+               if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
+               else if (!$toc_id) { $toc_id = 0; }
+               else { $toc_id = strtolower($toc_id); }
+               // To use odd and even pages
+               // Cannot start table of contents on an even page
+               if (($this->mpdf->mirrorMargins) && (($this->mpdf->page)%2==0)) {       // EVEN
+                       if ($this->mpdf->ColActive) {
+                               if (count($this->mpdf->columnbuffer)) { $this->mpdf->printcolumnbuffer(); }
+                       }
+                       $this->mpdf->AddPage($this->mpdf->CurOrientation,'',$resetpagenum, $pagenumstyle, $suppress);
+               }
+               else { 
+                       $this->mpdf->PageNumSubstitutions[] = array('from'=>$this->mpdf->page, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
+               }
+               if ($toc_id) {
+                       $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; 
+                       $this->m_TOC[$toc_id]['TOCoutdent'] = $tocoutdent;
+                       $this->m_TOC[$toc_id]['TOCorientation'] = $toc_orientation;
+                       $this->m_TOC[$toc_id]['TOCuseLinking'] = $TOCuseLinking;
+                       $this->m_TOC[$toc_id]['TOCusePaging'] = $TOCusePaging;
+               }
+               else {
+                       $this->TOCmark = $this->mpdf->page; 
+                       $this->TOCoutdent = $tocoutdent;
+                       $this->TOCorientation = $toc_orientation;
+                       $this->TOCuseLinking = $TOCuseLinking;
+                       $this->TOCusePaging = $TOCusePaging;
+               }
+}
+
+
+function insertTOC() {
+       $notocs = 0;
+       if ($this->TOCmark) { $notocs = 1; }
+       $notocs += count($this->m_TOC);
+
+       if ($notocs==0) { return; }
+
+       if (count($this->m_TOC)) { reset($this->m_TOC); }
+       $added_toc_pages = 0;
+
+       if ($this->mpdf->ColActive) { $this->mpdf->SetColumns(0); }
+       if (($this->mpdf->mirrorMargins) && (($this->mpdf->page)%2==1)) {       // ODD
+               $this->mpdf->AddPage($this->mpdf->CurOrientation);
+               $extrapage = true;
+       }
+       else { $extrapage = false; }
+
+       for ($toci = 0; $toci<$notocs; $toci++) {
+               if ($toci==0 && $this->TOCmark) {
+                       $toc_id = 0;
+                       $toc_page = $this->TOCmark; 
+                       $tocoutdent = $this->TOCoutdent;
+                       $toc_orientation = $this->TOCorientation;
+                       $TOCuseLinking = $this->TOCuseLinking;
+                       $TOCusePaging = $this->TOCusePaging;
+                       $toc_preHTML = $this->TOCpreHTML;
+                       $toc_postHTML = $this->TOCpostHTML;
+                       $toc_bookmarkText = $this->TOCbookmarkText;
+                       $toc_mgl = $this->TOC_margin_left;
+                       $toc_mgr = $this->TOC_margin_right;
+                       $toc_mgt = $this->TOC_margin_top;
+                       $toc_mgb = $this->TOC_margin_bottom;
+                       $toc_mgh = $this->TOC_margin_header;
+                       $toc_mgf = $this->TOC_margin_footer;
+                       $toc_ohname = $this->TOC_odd_header_name;
+                       $toc_ehname = $this->TOC_even_header_name;
+                       $toc_ofname = $this->TOC_odd_footer_name;
+                       $toc_efname = $this->TOC_even_footer_name;
+                       $toc_ohvalue = $this->TOC_odd_header_value;
+                       $toc_ehvalue = $this->TOC_even_header_value;
+                       $toc_ofvalue = $this->TOC_odd_footer_value;
+                       $toc_efvalue = $this->TOC_even_footer_value;
+                       $toc_page_selector = $this->TOC_page_selector;
+                       $toc_sheet_size = $this->TOCsheetsize;
+               }
+               else {
+                       $arr = current($this->m_TOC);
+
+                       $toc_id = key($this->m_TOC);
+                       $toc_page = $this->m_TOC[$toc_id]['TOCmark'];
+                       $tocoutdent = $this->m_TOC[$toc_id]['TOCoutdent'];
+                       $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation'];
+                       $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking'];
+                       $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging'];
+                       if (isset($this->m_TOC[$toc_id]['TOCpreHTML'])) { $toc_preHTML = $this->m_TOC[$toc_id]['TOCpreHTML']; }
+                       else { $toc_preHTML = ''; }
+                       if (isset($this->m_TOC[$toc_id]['TOCpostHTML'])) { $toc_postHTML = $this->m_TOC[$toc_id]['TOCpostHTML']; }
+                       else { $toc_postHTML = ''; }
+                       if (isset($this->m_TOC[$toc_id]['TOCbookmarkText'])) { $toc_bookmarkText = $this->m_TOC[$toc_id]['TOCbookmarkText']; }
+                       else { $toc_bookmarkText = ''; }        // *BOOKMARKS*
+                       $toc_mgl = $this->m_TOC[$toc_id]['TOC_margin_left'];
+                       $toc_mgr = $this->m_TOC[$toc_id]['TOC_margin_right'];
+                       $toc_mgt = $this->m_TOC[$toc_id]['TOC_margin_top'];
+                       $toc_mgb = $this->m_TOC[$toc_id]['TOC_margin_bottom'];
+                       $toc_mgh = $this->m_TOC[$toc_id]['TOC_margin_header'];
+                       $toc_mgf = $this->m_TOC[$toc_id]['TOC_margin_footer'];
+                       $toc_ohname = $this->m_TOC[$toc_id]['TOC_odd_header_name'];
+                       $toc_ehname = $this->m_TOC[$toc_id]['TOC_even_header_name'];
+                       $toc_ofname = $this->m_TOC[$toc_id]['TOC_odd_footer_name'];
+                       $toc_efname = $this->m_TOC[$toc_id]['TOC_even_footer_name'];
+                       $toc_ohvalue = $this->m_TOC[$toc_id]['TOC_odd_header_value'];
+                       $toc_ehvalue = $this->m_TOC[$toc_id]['TOC_even_header_value'];
+                       $toc_ofvalue = $this->m_TOC[$toc_id]['TOC_odd_footer_value'];
+                       $toc_efvalue = $this->m_TOC[$toc_id]['TOC_even_footer_value'];
+                       $toc_page_selector = $this->m_TOC[$toc_id]['TOC_page_selector'];
+                       $toc_sheet_size = $this->m_TOC[$toc_id]['TOCsheetsize'];
+                       next($this->m_TOC);
+               }
+
+               // mPDF 5.6.31
+
+               if (!$toc_orientation) { $toc_orientation= $this->mpdf->DefOrientation; }
+               $this->mpdf->AddPage($toc_orientation, '', '', '', "on", $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_page_selector, $toc_sheet_size );
+
+               $this->mpdf->writingToC = true; // mPDF 5.6.38
+               // mPDF 5.6.31
+               $tocstart=count($this->mpdf->pages);
+               if ($toc_preHTML) { $this->mpdf->WriteHTML($toc_preHTML); }
+
+
+               // mPDF 5.6.19
+               $html ='<div class="mpdf_toc" id="mpdf_toc_'.$toc_id.'">';
+               foreach($this->_toc as $t) {
+                if ($t['toc_id']==='_mpdf_all' || $t['toc_id']===$toc_id ) {
+                       $html .= '<div class="mpdf_toc_level_'.$t['l'].'">';
+                       if ($TOCuseLinking) { $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_'.$t['link'].'">'; }
+                       $html .= '<span class="mpdf_toc_t_level_'.$t['l'].'">'.$t['t'].'</span>';
+                       if ($TOCuseLinking) { $html .= '</a>'; }
+                       if (!$tocoutdent) { $tocoutdent = '0'; }
+                       if ($TOCusePaging) { $html .= ' <dottab outdent="'.$tocoutdent.'" /> ';
+                               if ($TOCuseLinking) { $html .= '<a class="mpdf_toc_a" href="#__mpdfinternallink_'.$t['link'].'">'; }
+                               $html .= '<span class="mpdf_toc_p_level_'.$t['l'].'">'.$this->mpdf->docPageNum($t['p']).'</span>';
+                               if ($TOCuseLinking) { $html .= '</a>'; }
+                       }
+                       $html .= '</div>';
+                } 
+               }
+               $html .= '</div>';
+               $this->mpdf->WriteHTML($html);
+
+               if ($toc_postHTML) { $this->mpdf->WriteHTML($toc_postHTML); }
+               $this->mpdf->writingToC = false;        // mPDF 5.6.38
+               $this->mpdf->AddPage($toc_orientation,'E');
+
+               $n_toc = $this->mpdf->page - $tocstart + 1;
+
+               if ($toci==0 && $this->TOCmark) {
+                       $TOC_start = $tocstart ;
+                       $TOC_end = $this->mpdf->page;
+                       $TOC_npages = $n_toc;
+               }
+               else {
+                       $this->m_TOC[$toc_id]['start'] = $tocstart ;
+                       $this->m_TOC[$toc_id]['end'] = $this->mpdf->page;
+                       $this->m_TOC[$toc_id]['npages'] = $n_toc;
+               }
+       }
+
+       $s = '';
+
+       $s .= $this->mpdf->PrintBodyBackgrounds();
+
+       $s .= $this->mpdf->PrintPageBackgrounds();
+       $this->mpdf->pages[$this->mpdf->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$s."\n".'\\1', $this->mpdf->pages[$this->mpdf->page]);
+       $this->mpdf->pageBackgrounds = array();
+
+       //Page footer
+       $this->mpdf->InFooter=true;
+       $this->mpdf->Footer();
+       $this->mpdf->InFooter=false;
+
+       // 2nd time through to move pages etc.
+       $added_toc_pages = 0;
+       if (count($this->m_TOC)) { reset($this->m_TOC); }
+
+       for ($toci = 0; $toci<$notocs; $toci++) {
+               if ($toci==0 && $this->TOCmark) {
+                       $toc_id = 0;
+                       $toc_page = $this->TOCmark + $added_toc_pages; 
+                       $toc_orientation = $this->TOCorientation;
+                       $TOCuseLinking = $this->TOCuseLinking;
+                       $TOCusePaging = $this->TOCusePaging;
+                       $toc_bookmarkText = $this->TOCbookmarkText;     // *BOOKMARKS*
+
+                       $tocstart = $TOC_start ;
+                       $tocend = $n = $TOC_end;
+                       $n_toc = $TOC_npages;
+               }
+               else {
+                       $arr = current($this->m_TOC);
+
+                       $toc_id = key($this->m_TOC);
+                       $toc_page = $this->m_TOC[$toc_id]['TOCmark'] + $added_toc_pages;
+                       $toc_orientation = $this->m_TOC[$toc_id]['TOCorientation'];
+                       $TOCuseLinking = $this->m_TOC[$toc_id]['TOCuseLinking'];
+                       $TOCusePaging = $this->m_TOC[$toc_id]['TOCusePaging'];
+                       $toc_bookmarkText = $this->m_TOC[$toc_id]['TOCbookmarkText'];   // *BOOKMARKS*
+
+                       $tocstart = $this->m_TOC[$toc_id]['start'] ;
+                       $tocend = $n = $this->m_TOC[$toc_id]['end'] ;
+                       $n_toc = $this->m_TOC[$toc_id]['npages'] ;
+
+                       next($this->m_TOC);
+               }
+
+               // Now pages moved
+               $added_toc_pages += $n_toc;
+
+               $this->mpdf->MovePages($toc_page, $tocstart, $tocend) ;
+               $this->mpdf->pgsIns[$toc_page] = $tocend - $tocstart + 1;
+
+/*-- BOOKMARKS --*/
+               // Insert new Bookmark for Bookmark
+               if ($toc_bookmarkText) {
+                       $insert = -1;
+                       foreach($this->mpdf->BMoutlines as $i=>$o) {
+                               if($o['p']<$toc_page) { // i.e. before point of insertion
+                                       $insert = $i;
+                               }
+                       }
+                       $txt = $this->mpdf->purify_utf8_text($toc_bookmarkText);
+                       if ($this->mpdf->text_input_as_HTML) {
+                               $txt = $this->mpdf->all_entities_to_utf8($txt);
+                       }
+                       $newBookmark[0] = array('t'=>$txt,'l'=>0,'y'=>0,'p'=>$toc_page );
+                       array_splice($this->mpdf->BMoutlines,($insert+1),0,$newBookmark);
+               }
+/*-- END BOOKMARKS --*/
+
+       }
+
+       // Delete empty page that was inserted earlier
+       if ($extrapage) {
+               unset($this->mpdf->pages[count($this->mpdf->pages)]);
+               $this->mpdf->page--;    // Reset page pointer
+       }
+
+
+}
+
+
+function openTagTOC($attr) {
+       if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $tocoutdent = $attr['OUTDENT']; } else { $tocoutdent = ''; } // mPDF 5.6.19
+       if (isset($attr['RESETPAGENUM']) && $attr['RESETPAGENUM']) { $resetpagenum = $attr['RESETPAGENUM']; } else { $resetpagenum = ''; }
+       if (isset($attr['PAGENUMSTYLE']) && $attr['PAGENUMSTYLE']) { $pagenumstyle = $attr['PAGENUMSTYLE']; } else { $pagenumstyle= ''; }
+       if (isset($attr['SUPPRESS']) && $attr['SUPPRESS']) { $suppress = $attr['SUPPRESS']; } else { $suppress = ''; }
+       if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $toc_orientation = $attr['TOC-ORIENTATION']; } else { $toc_orientation = ''; }
+       if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $paging = false; }
+       else { $paging = true; }
+       if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $links = true; }
+       else { $links = false; }
+       if (isset($attr['NAME']) && $attr['NAME']) { $toc_id = strtolower($attr['NAME']); } else { $toc_id = 0; }
+       $this->TOC('',0,0,$resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $paging, $links, $toc_id, $tocoutdent);  // mPDF 5.6.19 5.6.31
+}
+
+
+function openTagTOCPAGEBREAK($attr) {
+       if (isset($attr['NAME']) && $attr['NAME']) { $toc_id = strtolower($attr['NAME']); } else { $toc_id = 0; }
+       if ($toc_id) {
+         if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $this->m_TOC[$toc_id]['TOCoutdent'] = $attr['OUTDENT']; } else { $this->m_TOC[$toc_id]['TOCoutdent'] = ''; }       // mPDF 5.6.19
+         if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $this->m_TOC[$toc_id]['TOCorientation'] = $attr['TOC-ORIENTATION']; } else { $this->m_TOC[$toc_id]['TOCorientation'] = ''; }
+         if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $this->m_TOC[$toc_id]['TOCusePaging'] = false; }
+         else { $this->m_TOC[$toc_id]['TOCusePaging'] = true; }
+         if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $this->m_TOC[$toc_id]['TOCuseLinking'] = true; }
+         else { $this->m_TOC[$toc_id]['TOCuseLinking'] = false; }
+
+         $this->m_TOC[$toc_id]['TOC_margin_left'] = $this->m_TOC[$toc_id]['TOC_margin_right'] = $this->m_TOC[$toc_id]['TOC_margin_top'] = $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $this->m_TOC[$toc_id]['TOC_margin_header'] = $this->m_TOC[$toc_id]['TOC_margin_footer'] = '';
+         if (isset($attr['TOC-MARGIN-RIGHT'])) { $this->m_TOC[$toc_id]['TOC_margin_right'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-RIGHT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-LEFT'])) { $this->m_TOC[$toc_id]['TOC_margin_left'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-LEFT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-TOP'])) { $this->m_TOC[$toc_id]['TOC_margin_top'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-TOP'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-BOTTOM'])) { $this->m_TOC[$toc_id]['TOC_margin_bottom'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-BOTTOM'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-HEADER'])) { $this->m_TOC[$toc_id]['TOC_margin_header'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-HEADER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-FOOTER'])) { $this->m_TOC[$toc_id]['TOC_margin_footer'] = $this->mpdf->ConvertSize($attr['TOC-MARGIN-FOOTER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $this->m_TOC[$toc_id]['TOC_even_header_name'] = $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $this->m_TOC[$toc_id]['TOC_even_footer_name'] = '';
+         if (isset($attr['TOC-ODD-HEADER-NAME']) && $attr['TOC-ODD-HEADER-NAME']) { $this->m_TOC[$toc_id]['TOC_odd_header_name'] = $attr['TOC-ODD-HEADER-NAME']; }
+         if (isset($attr['TOC-EVEN-HEADER-NAME']) && $attr['TOC-EVEN-HEADER-NAME']) { $this->m_TOC[$toc_id]['TOC_even_header_name'] = $attr['TOC-EVEN-HEADER-NAME']; }
+         if (isset($attr['TOC-ODD-FOOTER-NAME']) && $attr['TOC-ODD-FOOTER-NAME']) { $this->m_TOC[$toc_id]['TOC_odd_footer_name'] = $attr['TOC-ODD-FOOTER-NAME']; }
+         if (isset($attr['TOC-EVEN-FOOTER-NAME']) && $attr['TOC-EVEN-FOOTER-NAME']) { $this->m_TOC[$toc_id]['TOC_even_footer_name'] = $attr['TOC-EVEN-FOOTER-NAME']; }
+         $this->m_TOC[$toc_id]['TOC_odd_header_value'] = $this->m_TOC[$toc_id]['TOC_even_header_value'] = $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = $this->m_TOC[$toc_id]['TOC_even_footer_value'] = 0;
+         if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_odd_header_value'] = 1; }
+         else if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_odd_header_value'] = -1; }
+         if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_even_header_value'] = 1; }
+         else if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_even_header_value'] = -1; }
+         if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = 1; }
+         else if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_odd_footer_value'] = -1; }
+         if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='ON')) { $this->m_TOC[$toc_id]['TOC_even_footer_value'] = 1; }
+         else if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='OFF')) { $this->m_TOC[$toc_id]['TOC_even_footer_value'] = -1; }
+         if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { $this->m_TOC[$toc_id]['TOC_page_selector'] = $attr['TOC-PAGE-SELECTOR']; }
+         else { $this->m_TOC[$toc_id]['TOC_page_selector'] = ''; }
+         if (isset($attr['TOC-SHEET-SIZE']) && $attr['TOC-SHEET-SIZE']) { $this->m_TOC[$toc_id]['TOCsheetsize'] = $attr['TOC-SHEET-SIZE']; } else { $this->m_TOC[$toc_id]['TOCsheetsize'] = ''; }
+
+
+         if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { $this->m_TOC[$toc_id]['TOCpreHTML'] = htmlspecialchars_decode($attr['TOC-PREHTML'],ENT_QUOTES); }
+         if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { $this->m_TOC[$toc_id]['TOCpostHTML'] = htmlspecialchars_decode($attr['TOC-POSTHTML'],ENT_QUOTES); }
+         
+         if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { $this->m_TOC[$toc_id]['TOCbookmarkText'] = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'],ENT_QUOTES); }      // *BOOKMARKS*
+       }
+       else {
+         if (isset($attr['OUTDENT']) && $attr['OUTDENT']) { $this->TOCoutdent = $attr['OUTDENT']; } else { $this->TOCoutdent = ''; }   // mPDF 5.6.19
+         if (isset($attr['TOC-ORIENTATION']) && $attr['TOC-ORIENTATION']) { $this->TOCorientation = $attr['TOC-ORIENTATION']; } else { $this->TOCorientation = ''; }
+         if (isset($attr['PAGING']) && (strtoupper($attr['PAGING'])=='OFF' || $attr['PAGING']==='0')) { $this->TOCusePaging = false; }
+         else { $this->TOCusePaging = true; }
+         if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $this->TOCuseLinking = true; }
+         else { $this->TOCuseLinking = false; }
+
+         $this->TOC_margin_left = $this->TOC_margin_right = $this->TOC_margin_top = $this->TOC_margin_bottom = $this->TOC_margin_header = $this->TOC_margin_footer = '';
+         if (isset($attr['TOC-MARGIN-RIGHT'])) { $this->TOC_margin_right = $this->mpdf->ConvertSize($attr['TOC-MARGIN-RIGHT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-LEFT'])) { $this->TOC_margin_left = $this->mpdf->ConvertSize($attr['TOC-MARGIN-LEFT'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-TOP'])) { $this->TOC_margin_top = $this->mpdf->ConvertSize($attr['TOC-MARGIN-TOP'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-BOTTOM'])) { $this->TOC_margin_bottom = $this->mpdf->ConvertSize($attr['TOC-MARGIN-BOTTOM'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-HEADER'])) { $this->TOC_margin_header = $this->mpdf->ConvertSize($attr['TOC-MARGIN-HEADER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         if (isset($attr['TOC-MARGIN-FOOTER'])) { $this->TOC_margin_footer = $this->mpdf->ConvertSize($attr['TOC-MARGIN-FOOTER'],$this->mpdf->w,$this->mpdf->FontSize,false); }
+         $this->TOC_odd_header_name = $this->TOC_even_header_name = $this->TOC_odd_footer_name = $this->TOC_even_footer_name = '';
+         if (isset($attr['TOC-ODD-HEADER-NAME']) && $attr['TOC-ODD-HEADER-NAME']) { $this->TOC_odd_header_name = $attr['TOC-ODD-HEADER-NAME']; }
+         if (isset($attr['TOC-EVEN-HEADER-NAME']) && $attr['TOC-EVEN-HEADER-NAME']) { $this->TOC_even_header_name = $attr['TOC-EVEN-HEADER-NAME']; }
+         if (isset($attr['TOC-ODD-FOOTER-NAME']) && $attr['TOC-ODD-FOOTER-NAME']) { $this->TOC_odd_footer_name = $attr['TOC-ODD-FOOTER-NAME']; }
+         if (isset($attr['TOC-EVEN-FOOTER-NAME']) && $attr['TOC-EVEN-FOOTER-NAME']) { $this->TOC_even_footer_name = $attr['TOC-EVEN-FOOTER-NAME']; }
+         $this->TOC_odd_header_value = $this->TOC_even_header_value = $this->TOC_odd_footer_value = $this->TOC_even_footer_value = 0;
+         if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='ON')) { $this->TOC_odd_header_value = 1; }
+         else if (isset($attr['TOC-ODD-HEADER-VALUE']) && ($attr['TOC-ODD-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-HEADER-VALUE'])=='OFF')) { $this->TOC_odd_header_value = -1; }
+         if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='ON')) { $this->TOC_even_header_value = 1; }
+         else if (isset($attr['TOC-EVEN-HEADER-VALUE']) && ($attr['TOC-EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-HEADER-VALUE'])=='OFF')) { $this->TOC_even_header_value = -1; }
+
+         if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='ON')) { $this->TOC_odd_footer_value = 1; }
+         else if (isset($attr['TOC-ODD-FOOTER-VALUE']) && ($attr['TOC-ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-ODD-FOOTER-VALUE'])=='OFF')) { $this->TOC_odd_footer_value = -1; }
+         if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='ON')) { $this->TOC_even_footer_value = 1; }
+         else if (isset($attr['TOC-EVEN-FOOTER-VALUE']) && ($attr['TOC-EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['TOC-EVEN-FOOTER-VALUE'])=='OFF')) { $this->TOC_even_footer_value = -1; }
+         if (isset($attr['TOC-PAGE-SELECTOR']) && $attr['TOC-PAGE-SELECTOR']) { $this->TOC_page_selector = $attr['TOC-PAGE-SELECTOR']; }
+         else { $this->TOC_page_selector = ''; }
+         if (isset($attr['TOC-SHEET-SIZE']) && $attr['TOC-SHEET-SIZE']) { $this->TOCsheetsize = $attr['TOC-SHEET-SIZE']; } else { $this->TOCsheetsize = ''; }
+
+         if (isset($attr['TOC-PREHTML']) && $attr['TOC-PREHTML']) { $this->TOCpreHTML = htmlspecialchars_decode($attr['TOC-PREHTML'],ENT_QUOTES); }
+         if (isset($attr['TOC-POSTHTML']) && $attr['TOC-POSTHTML']) { $this->TOCpostHTML = htmlspecialchars_decode($attr['TOC-POSTHTML'],ENT_QUOTES); }
+         if (isset($attr['TOC-BOOKMARKTEXT']) && $attr['TOC-BOOKMARKTEXT']) { $this->TOCbookmarkText = htmlspecialchars_decode($attr['TOC-BOOKMARKTEXT'],ENT_QUOTES); }        
+       }
+
+       if ($this->mpdf->y == $this->mpdf->tMargin && (!$this->mpdf->mirrorMargins ||($this->mpdf->mirrorMargins && $this->mpdf->page % 2==1))) { 
+               if ($toc_id) { $this->m_TOC[$toc_id]['TOCmark'] = $this->mpdf->page; }
+               else { $this->TOCmark = $this->mpdf->page; }
+               // Don't add a page
+               if ($this->mpdf->page==1 && count($this->mpdf->PageNumSubstitutions)==0) { 
+                       $resetpagenum = '';
+                       $pagenumstyle = '';
+                       $suppress = '';
+                       if (isset($attr['RESETPAGENUM'])) { $resetpagenum = $attr['RESETPAGENUM']; }
+                       if (isset($attr['PAGENUMSTYLE'])) { $pagenumstyle = $attr['PAGENUMSTYLE']; }
+                       if (isset($attr['SUPPRESS'])) { $suppress = $attr['SUPPRESS']; }
+                       if (!$suppress) { $suppress = 'off'; }
+                       if (!$resetpagenum) { $resetpagenum= 1; }
+                       $this->mpdf->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress);
+               }
+               return array(true, $toc_id);
+       }
+       // No break - continues as PAGEBREAK...
+       return array(false, $toc_id);
+}
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php b/inc/3rdparty/libraries/mpdf/classes/ttfontsuni.php
new file mode 100644 (file)
index 0000000..1c93b60
--- /dev/null
@@ -0,0 +1,2065 @@
+<?php
+
+/*******************************************************************************
+* TTFontFile class                                                             *
+*                                                                              *
+* Version:  2.01                                                                      *
+* Date:     2012-02-25                                                         *
+* Author:   Ian Back <ianb@bpm1.com>                                           *
+* License:  LGPL                                                               *
+* Copyright (c) Ian Back, 2010                                                 *
+* This class is based on The ReportLab Open Source PDF library                 *
+* written in Python - http://www.reportlab.com/software/opensource/            *
+* together with ideas from the OpenOffice source code and others.              * 
+* This header must be retained in any redistribution or                        *
+* modification of the file.                                                    *
+*                                                                              *
+*******************************************************************************/
+
+// Define the value used in the "head" table of a created TTF file
+// 0x74727565 "true" for Mac
+// 0x00010000 for Windows
+// Either seems to work for a font embedded in a PDF file
+// when read by Adobe Reader on a Windows PC(!)
+if (!defined('_TTF_MAC_HEADER')) define("_TTF_MAC_HEADER", false);
+
+// Recalculate correct metadata/profiles when making subset fonts (not SIP/SMP)
+// e.g. xMin, xMax, maxNContours
+if (!defined('_RECALC_PROFILE')) define("_RECALC_PROFILE", false);
+
+// TrueType Font Glyph operators
+define("GF_WORDS",(1 << 0));
+define("GF_SCALE",(1 << 3));
+define("GF_MORE",(1 << 5));
+define("GF_XYSCALE",(1 << 6));
+define("GF_TWOBYTWO",(1 << 7));
+
+
+
+class TTFontFile {
+
+var $unAGlyphs;        // mPDF 5.4.05
+var $panose;
+var $maxUni;
+var $sFamilyClass;
+var $sFamilySubClass;
+var $sipset;
+var $smpset;
+var $_pos;
+var $numTables;
+var $searchRange;
+var $entrySelector;
+var $rangeShift;
+var $tables;
+var $otables;
+var $filename;
+var $fh;
+var $glyphPos;
+var $charToGlyph;
+var $ascent;
+var $descent;
+var $name;
+var $familyName;
+var $styleName;
+var $fullName;
+var $uniqueFontID;
+var $unitsPerEm;
+var $bbox;
+var $capHeight;
+var $stemV;
+var $italicAngle;
+var $flags;
+var $underlinePosition;
+var $underlineThickness;
+var $charWidths;
+var $defaultWidth;
+var $maxStrLenRead;
+var $numTTCFonts;
+var $TTCFonts;
+var $maxUniChar;
+var $kerninfo;
+
+       function TTFontFile() {
+               $this->maxStrLenRead = 200000;  // Maximum size of glyf table to read in as string (otherwise reads each glyph from file)
+       }
+
+
+       function getMetrics($file, $TTCfontID=0, $debug=false, $BMPonly=false, $kerninfo=false, $unAGlyphs=false) {     // mPDF 5.4.05
+               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
+               $this->filename = $file;
+               $this->fh = fopen($file,'rb') or die('Can\'t open file ' . $file);
+               $this->_pos = 0;
+               $this->charWidths = '';
+               $this->glyphPos = array();
+               $this->charToGlyph = array();
+               $this->tables = array();
+               $this->otables = array();
+               $this->kerninfo = array();
+               $this->ascent = 0;
+               $this->descent = 0;
+               $this->numTTCFonts = 0;
+               $this->TTCFonts = array();
+               $this->version = $version = $this->read_ulong();
+               $this->panose = array();
+               if ($version==0x4F54544F) 
+                       die("Postscript outlines are not supported");
+               if ($version==0x74746366 && !$TTCfontID) 
+                       die("ERROR - You must define the TTCfontID for a TrueType Collection in config_fonts.php (". $file.")");
+               if (!in_array($version, array(0x00010000,0x74727565)) && !$TTCfontID)
+                       die("Not a TrueType font: version=".$version);
+               if ($TTCfontID > 0) {
+                       $this->version = $version = $this->read_ulong();        // TTC Header version now
+                       if (!in_array($version, array(0x00010000,0x00020000)))
+                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
+                       $this->numTTCFonts = $this->read_ulong();
+                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
+                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
+                       }
+                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
+                       $this->version = $version = $this->read_ulong();        // TTFont version again now
+               }
+               $this->readTableDirectory($debug);
+               $this->extractInfo($debug, $BMPonly, $kerninfo); 
+               fclose($this->fh);
+       }
+
+
+       function readTableDirectory($debug=false) {
+           $this->numTables = $this->read_ushort();
+            $this->searchRange = $this->read_ushort();
+            $this->entrySelector = $this->read_ushort();
+            $this->rangeShift = $this->read_ushort();
+            $this->tables = array();   
+            for ($i=0;$i<$this->numTables;$i++) {
+                $record = array();
+                $record['tag'] = $this->read_tag();
+                $record['checksum'] = array($this->read_ushort(),$this->read_ushort());
+                $record['offset'] = $this->read_ulong();
+                $record['length'] = $this->read_ulong();
+                $this->tables[$record['tag']] = $record;
+               }
+               if ($debug) $this->checksumTables();
+       }
+
+       function checksumTables() {
+               // Check the checksums for all tables
+               foreach($this->tables AS $t) {
+                 if ($t['length'] > 0 && $t['length'] < $this->maxStrLenRead) {        // 1.02
+               $table = $this->get_chunk($t['offset'], $t['length']);
+               $checksum = $this->calcChecksum($table);
+               if ($t['tag'] == 'head') {
+                               $up = unpack('n*', substr($table,8,4));
+                               $adjustment[0] = $up[1];
+                               $adjustment[1] = $up[2];
+                       $checksum = $this->sub32($checksum, $adjustment);
+                       }
+               $xchecksum = $t['checksum'];
+               if ($xchecksum != $checksum) 
+                   die(sprintf('TTF file "%s": invalid checksum %s table: %s (expected %s)', $this->filename,dechex($checksum[0]).dechex($checksum[1]),$t['tag'],dechex($xchecksum[0]).dechex($xchecksum[1])));
+                 }
+               }
+       }
+
+       function sub32($x, $y) {
+               $xlo = $x[1];
+               $xhi = $x[0];
+               $ylo = $y[1];
+               $yhi = $y[0];
+               if ($ylo > $xlo) { $xlo += 1 << 16; $yhi += 1; }
+               $reslo = $xlo-$ylo;
+               if ($yhi > $xhi) { $xhi += 1 << 16;  }
+               $reshi = $xhi-$yhi;
+               $reshi = $reshi & 0xFFFF;
+               return array($reshi, $reslo);
+       }
+
+       function calcChecksum($data)  {
+               if (strlen($data) % 4) { $data .= str_repeat("\0",(4-(strlen($data) % 4))); }
+               $len = strlen($data);
+               $hi=0x0000;
+               $lo=0x0000;
+               for($i=0;$i<$len;$i+=4) {
+                       $hi += (ord($data[$i])<<8) + ord($data[$i+1]);
+                       $lo += (ord($data[$i+2])<<8) + ord($data[$i+3]);
+                       $hi += ($lo >> 16) & 0xFFFF;
+                       $lo = $lo & 0xFFFF;
+               }
+               return array($hi, $lo);
+       }
+
+       function get_table_pos($tag) {
+               $offset = $this->tables[$tag]['offset'];
+               $length = $this->tables[$tag]['length'];
+               return array($offset, $length);
+       }
+
+       function seek($pos) {
+               $this->_pos = $pos;
+               fseek($this->fh,$this->_pos);
+       }
+
+       function skip($delta) {
+               $this->_pos = $this->_pos + $delta;
+               fseek($this->fh,$delta,SEEK_CUR);
+       }
+
+       function seek_table($tag, $offset_in_table = 0) {
+               $tpos = $this->get_table_pos($tag);
+               $this->_pos = $tpos[0] + $offset_in_table;
+               fseek($this->fh, $this->_pos);
+               return $this->_pos;
+       }
+
+       function read_tag() {
+               $this->_pos += 4;
+               return fread($this->fh,4);
+       }
+
+       function read_short() {
+               $this->_pos += 2;
+               $s = fread($this->fh,2);
+               $a = (ord($s[0])<<8) + ord($s[1]);
+               if ($a & (1 << 15) ) { 
+                       $a = ($a - (1 << 16)); 
+               }
+               return $a;
+       }
+
+       function unpack_short($s) {
+               $a = (ord($s[0])<<8) + ord($s[1]);
+               if ($a & (1 << 15) ) { 
+                       $a = ($a - (1 << 16)); 
+               }
+               return $a;
+       }
+
+       function read_ushort() {
+               $this->_pos += 2;
+               $s = fread($this->fh,2);
+               return (ord($s[0])<<8) + ord($s[1]);
+       }
+
+       function read_ulong() {
+               $this->_pos += 4;
+               $s = fread($this->fh,4);
+               // if large uInt32 as an integer, PHP converts it to -ve
+               return (ord($s[0])*16777216) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]); //      16777216  = 1<<24
+       }
+
+       function get_ushort($pos) {
+               fseek($this->fh,$pos);
+               $s = fread($this->fh,2);
+               return (ord($s[0])<<8) + ord($s[1]);
+       }
+
+       function get_ulong($pos) {
+               fseek($this->fh,$pos);
+               $s = fread($this->fh,4);
+               // iF large uInt32 as an integer, PHP converts it to -ve
+               return (ord($s[0])*16777216) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]); //      16777216  = 1<<24
+       }
+
+       function pack_short($val) {
+               if ($val<0) { 
+                       $val = abs($val);
+                       $val = ~$val;
+                       $val += 1;
+               }
+               return pack("n",$val); 
+       }
+
+       function splice($stream, $offset, $value) {
+               return substr($stream,0,$offset) . $value . substr($stream,$offset+strlen($value));
+       }
+
+       function _set_ushort($stream, $offset, $value) {
+               $up = pack("n", $value);
+               return $this->splice($stream, $offset, $up);
+       }
+
+       function _set_short($stream, $offset, $val) {
+               if ($val<0) { 
+                       $val = abs($val);
+                       $val = ~$val;
+                       $val += 1;
+               }
+               $up = pack("n",$val); 
+               return $this->splice($stream, $offset, $up);
+       }
+
+       function get_chunk($pos, $length) {
+               fseek($this->fh,$pos);
+               if ($length <1) { return ''; }
+               return (fread($this->fh,$length));
+       }
+
+       function get_table($tag) {
+               list($pos, $length) = $this->get_table_pos($tag);
+               if ($length == 0) { return ''; }
+               fseek($this->fh,$pos);
+               return (fread($this->fh,$length));
+       }
+
+       function add($tag, $data) {
+               if ($tag == 'head') {
+                       $data = $this->splice($data, 8, "\0\0\0\0");
+               }
+               $this->otables[$tag] = $data;
+       }
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////
+       function getCTG($file, $TTCfontID=0, $debug=false, $unAGlyphs=false) {  // mPDF 5.4.05
+               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
+               $this->filename = $file;
+               $this->fh = fopen($file,'rb') or die('Can\'t open file ' . $file);
+               $this->_pos = 0;
+               $this->charWidths = '';
+               $this->glyphPos = array();
+               $this->charToGlyph = array();
+               $this->tables = array();
+               $this->numTTCFonts = 0;
+               $this->TTCFonts = array();
+               $this->skip(4);
+               if ($TTCfontID > 0) {
+                       $this->version = $version = $this->read_ulong();        // TTC Header version now
+                       if (!in_array($version, array(0x00010000,0x00020000)))
+                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
+                       $this->numTTCFonts = $this->read_ulong();
+                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
+                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
+                       }
+                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
+                       $this->version = $version = $this->read_ulong();        // TTFont version again now
+               }
+               $this->readTableDirectory($debug);
+
+
+               // cmap - Character to glyph index mapping table
+               $cmap_offset = $this->seek_table("cmap");
+               $this->skip(2);
+               $cmapTableCount = $this->read_ushort();
+               $unicode_cmap_offset = 0;
+               for ($i=0;$i<$cmapTableCount;$i++) {
+                       $platformID = $this->read_ushort();
+                       $encodingID = $this->read_ushort();
+                       $offset = $this->read_ulong();
+                       $save_pos = $this->_pos;
+                       if ($platformID == 3 && $encodingID == 1) { // Microsoft, Unicode
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 4) {
+                                       $unicode_cmap_offset = $cmap_offset + $offset;
+                                       break;
+                               }
+                       }
+                       else if ($platformID == 0) { // Unicode -- assume all encodings are compatible
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 4) {
+                                       $unicode_cmap_offset = $cmap_offset + $offset;
+                                       break;
+                               }
+                       }
+                       $this->seek($save_pos );
+               }
+
+               $glyphToChar = array();
+               $charToGlyph = array();
+               $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
+
+               fclose($this->fh);
+               return ($charToGlyph);
+       }
+
+/////////////////////////////////////////////////////////////////////////////////////////
+       function getTTCFonts($file) {
+               $this->filename = $file;
+               $this->fh = fopen($file,'rb');
+               if (!$this->fh) { return ('ERROR - Can\'t open file ' . $file); }
+               $this->numTTCFonts = 0;
+               $this->TTCFonts = array();
+               $this->version = $version = $this->read_ulong();
+               if ($version==0x74746366) {
+                       $this->version = $version = $this->read_ulong();        // TTC Header version now
+                       if (!in_array($version, array(0x00010000,0x00020000)))
+                               return("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
+               }
+               else {
+                       return("ERROR - Not a TrueType Collection: version=".$version." - " . $file);
+               }
+               $this->numTTCFonts = $this->read_ulong();
+               for ($i=1; $i<=$this->numTTCFonts; $i++) {
+                   $this->TTCFonts[$i]['offset'] = $this->read_ulong();
+               }
+       }
+
+
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+       function extractInfo($debug=false, $BMPonly=false, $kerninfo=false) {
+               $this->panose = array();
+               $this->sFamilyClass = 0;
+               $this->sFamilySubClass = 0;
+               ///////////////////////////////////
+               // name - Naming table
+               ///////////////////////////////////
+                       $name_offset = $this->seek_table("name");
+                       $format = $this->read_ushort();
+                       if ($format != 0 && $format != 1)
+                               die("Unknown name table format ".$format);
+                       $numRecords = $this->read_ushort();
+                       $string_data_offset = $name_offset + $this->read_ushort();
+                       $names = array(1=>'',2=>'',3=>'',4=>'',6=>'');
+                       $K = array_keys($names);
+                       $nameCount = count($names);
+                       for ($i=0;$i<$numRecords; $i++) {
+                               $platformId = $this->read_ushort();
+                               $encodingId = $this->read_ushort();
+                               $languageId = $this->read_ushort();
+                               $nameId = $this->read_ushort();
+                               $length = $this->read_ushort();
+                               $offset = $this->read_ushort();
+                               if (!in_array($nameId,$K)) continue;
+                               $N = '';
+                               if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name
+                                       $opos = $this->_pos;
+                                       $this->seek($string_data_offset + $offset);
+                                       if ($length % 2 != 0)
+                                               die("PostScript name is UTF-16BE string of odd length");
+                                       $length /= 2;
+                                       $N = '';
+                                       while ($length > 0) {
+                                               $char = $this->read_ushort();
+                                               $N .= (chr($char));
+                                               $length -= 1;
+                                       }
+                                       $this->_pos = $opos;
+                                       $this->seek($opos);
+                               }
+                               else if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
+                                       $opos = $this->_pos;
+                                       $N = $this->get_chunk($string_data_offset + $offset, $length);
+                                       $this->_pos = $opos;
+                                       $this->seek($opos);
+                               }
+                               if ($N && $names[$nameId]=='') {
+                                       $names[$nameId] = $N;
+                                       $nameCount -= 1;
+                                       if ($nameCount==0) break;
+                               }
+                       }
+                       if ($names[6])
+                               $psName = $names[6];
+                       else if ($names[4])
+                               $psName = preg_replace('/ /','-',$names[4]);
+                       else if ($names[1])
+                               $psName = preg_replace('/ /','-',$names[1]);
+                       else
+                               $psName = '';
+                       if (!$psName)
+                               die("Could not find PostScript font name: ".$this->filename);
+                       if ($debug) {
+                          for ($i=0;$i<count($psName);$i++) {
+                               $c = $psName[$i];
+                               $oc = ord($c);
+                               if ($oc>126 || strpos(' [](){}<>/%',$c)!==false)
+                                       die("psName=".$psName." contains invalid character ".$c." ie U+".ord(c));
+                          }
+                       }
+                       $this->name = $psName;
+                       if ($names[1]) { $this->familyName = $names[1]; } else { $this->familyName = $psName; }
+                       if ($names[2]) { $this->styleName = $names[2]; } else { $this->styleName = 'Regular'; }
+                       if ($names[4]) { $this->fullName = $names[4]; } else { $this->fullName = $psName; }
+                       if ($names[3]) { $this->uniqueFontID = $names[3]; } else { $this->uniqueFontID = $psName; }
+
+                       if ($names[6]) { $this->fullName = $names[6]; }
+
+               ///////////////////////////////////
+               // head - Font header table
+               ///////////////////////////////////
+               $this->seek_table("head");
+               if ($debug) { 
+                       $ver_maj = $this->read_ushort();
+                       $ver_min = $this->read_ushort();
+                       if ($ver_maj != 1)
+                               die('Unknown head table version '. $ver_maj .'.'. $ver_min);
+                       $this->fontRevision = $this->read_ushort() . $this->read_ushort();
+
+                       $this->skip(4);
+                       $magic = $this->read_ulong();
+                       if ($magic != 0x5F0F3CF5) 
+                               die('Invalid head table magic ' .$magic);
+                       $this->skip(2);
+               }
+               else {
+                       $this->skip(18); 
+               }
+               $this->unitsPerEm = $unitsPerEm = $this->read_ushort();
+               $scale = 1000 / $unitsPerEm;
+               $this->skip(16);
+               $xMin = $this->read_short();
+               $yMin = $this->read_short();
+               $xMax = $this->read_short();
+               $yMax = $this->read_short();
+               $this->bbox = array(($xMin*$scale), ($yMin*$scale), ($xMax*$scale), ($yMax*$scale));
+               $this->skip(3*2);
+               $indexToLocFormat = $this->read_ushort();
+               $glyphDataFormat = $this->read_ushort();
+               if ($glyphDataFormat != 0)
+                       die('Unknown glyph data format '.$glyphDataFormat);
+
+               ///////////////////////////////////
+               // hhea metrics table
+               ///////////////////////////////////
+               // ttf2t1 seems to use this value rather than the one in OS/2 - so put in for compatibility
+               if (isset($this->tables["hhea"])) {
+                       $this->seek_table("hhea");
+                       $this->skip(4);
+                       $hheaAscender = $this->read_short();
+                       $hheaDescender = $this->read_short();
+                       $this->ascent = ($hheaAscender *$scale);
+                       $this->descent = ($hheaDescender *$scale);
+               }
+
+               ///////////////////////////////////
+               // OS/2 - OS/2 and Windows metrics table
+               ///////////////////////////////////
+               if (isset($this->tables["OS/2"])) {
+                       $this->seek_table("OS/2");
+                       $version = $this->read_ushort();
+                       $this->skip(2);
+                       $usWeightClass = $this->read_ushort();
+                       $this->skip(2);
+                       $fsType = $this->read_ushort();
+                       if ($fsType == 0x0002 || ($fsType & 0x0300) != 0) {
+                               global $overrideTTFFontRestriction;
+                               if (!$overrideTTFFontRestriction) die('ERROR - Font file '.$this->filename.' cannot be embedded due to copyright restrictions.');
+                               $this->restrictedUse = true;
+                       }
+                       $this->skip(20);
+                       $sF = $this->read_short();
+                       $this->sFamilyClass = ($sF >> 8);
+                       $this->sFamilySubClass = ($sF & 0xFF);
+                       $this->_pos += 10;  //PANOSE = 10 byte length
+                       $panose = fread($this->fh,10);
+                       $this->panose = array();
+                       for ($p=0;$p<strlen($panose);$p++) { $this->panose[] = ord($panose[$p]); }
+                       $this->skip(26);
+                       $sTypoAscender = $this->read_short();
+                       $sTypoDescender = $this->read_short();
+                       if (!$this->ascent) $this->ascent = ($sTypoAscender*$scale);
+                       if (!$this->descent) $this->descent = ($sTypoDescender*$scale);
+                       if ($version > 1) {
+                               $this->skip(16);
+                               $sCapHeight = $this->read_short();
+                               $this->capHeight = ($sCapHeight*$scale);
+                       }
+                       else {
+                               $this->capHeight = $this->ascent;
+                       }
+               }
+               else {
+                       $usWeightClass = 500;
+                       if (!$this->ascent) $this->ascent = ($yMax*$scale);
+                       if (!$this->descent) $this->descent = ($yMin*$scale);
+                       $this->capHeight = $this->ascent;
+               }
+               $this->stemV = 50 + intval(pow(($usWeightClass / 65.0),2));
+
+               ///////////////////////////////////
+               // post - PostScript table
+               ///////////////////////////////////
+               $this->seek_table("post");
+               if ($debug) { 
+                       $ver_maj = $this->read_ushort();
+                       $ver_min = $this->read_ushort();
+                       if ($ver_maj <1 || $ver_maj >4) 
+                               die('Unknown post table version '.$ver_maj);
+               }
+               else {
+                       $this->skip(4); 
+               }
+               $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0;
+               $this->underlinePosition = $this->read_short() * $scale;
+               $this->underlineThickness = $this->read_short() * $scale;
+               $isFixedPitch = $this->read_ulong();
+
+               $this->flags = 4;
+
+               if ($this->italicAngle!= 0) 
+                       $this->flags = $this->flags | 64;
+               if ($usWeightClass >= 600)
+                       $this->flags = $this->flags | 262144;
+               if ($isFixedPitch)
+                       $this->flags = $this->flags | 1;
+
+               ///////////////////////////////////
+               // hhea - Horizontal header table
+               ///////////////////////////////////
+               $this->seek_table("hhea");
+               if ($debug) { 
+                       $ver_maj = $this->read_ushort();
+                       $ver_min = $this->read_ushort();
+                       if ($ver_maj != 1)
+                               die('Unknown hhea table version '.$ver_maj);
+                       $this->skip(28);
+               }
+               else {
+                       $this->skip(32); 
+               }
+               $metricDataFormat = $this->read_ushort();
+               if ($metricDataFormat != 0)
+                       die('Unknown horizontal metric data format '.$metricDataFormat);
+               $numberOfHMetrics = $this->read_ushort();
+               if ($numberOfHMetrics == 0) 
+                       die('Number of horizontal metrics is 0');
+
+               ///////////////////////////////////
+               // maxp - Maximum profile table
+               ///////////////////////////////////
+               $this->seek_table("maxp");
+               if ($debug) { 
+                       $ver_maj = $this->read_ushort();
+                       $ver_min = $this->read_ushort();
+                       if ($ver_maj != 1)
+                               die('Unknown maxp table version '.$ver_maj);
+               }
+               else {
+                       $this->skip(4); 
+               }
+               $numGlyphs = $this->read_ushort();
+
+
+               ///////////////////////////////////
+               // cmap - Character to glyph index mapping table
+               ///////////////////////////////////
+               $cmap_offset = $this->seek_table("cmap");
+               $this->skip(2);
+               $cmapTableCount = $this->read_ushort();
+               $unicode_cmap_offset = 0;
+               for ($i=0;$i<$cmapTableCount;$i++) {
+                       $platformID = $this->read_ushort();
+                       $encodingID = $this->read_ushort();
+                       $offset = $this->read_ulong();
+                       $save_pos = $this->_pos;
+                       if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 4) {
+                                       if (!$unicode_cmap_offset) $unicode_cmap_offset = $cmap_offset + $offset;
+                                       if ($BMPonly) break;
+                               }
+                       }
+                       // Microsoft, Unicode Format 12 table HKCS
+                       else if ((($platformID == 3 && $encodingID == 10) || $platformID == 0) && !$BMPonly) {
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 12) {
+                                       $unicode_cmap_offset = $cmap_offset + $offset;
+                                       break;
+                               }
+                       }
+                       $this->seek($save_pos );
+               }
+               if (!$unicode_cmap_offset)
+                       die('Font ('.$this->filename .') does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)');
+
+
+               $sipset = false;
+               $smpset = false;
+               // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
+               if ($format == 12 && !$BMPonly) {
+                       $this->maxUniChar = 0;
+                       $this->seek($unicode_cmap_offset + 4);
+                       $length = $this->read_ulong();
+                       $limit = $unicode_cmap_offset + $length;
+                       $this->skip(4);
+
+                       $nGroups = $this->read_ulong();
+
+                       $glyphToChar = array();
+                       $charToGlyph = array();
+                       for($i=0; $i<$nGroups ; $i++) { 
+                               $startCharCode = $this->read_ulong(); 
+                               $endCharCode = $this->read_ulong(); 
+                               $startGlyphCode = $this->read_ulong(); 
+                               if (($endCharCode > 0x20000 && $endCharCode < 0x2A6DF) || ($endCharCode > 0x2F800 && $endCharCode < 0x2FA1F)) {
+                                       $sipset = true; 
+                               }
+                               else if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) {
+                                       $smpset = true; 
+                               }
+                               $offset = 0;
+                               for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
+                                       $glyph = $startGlyphCode + $offset ;
+                                       $offset++;
+                                       $charToGlyph[$unichar] = $glyph;
+                                       if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
+                                       $glyphToChar[$glyph][] = $unichar;
+                               }
+                       }
+               }
+               else {
+
+                       $glyphToChar = array();
+                       $charToGlyph = array();
+                       $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
+
+               }
+               $this->sipset = $sipset ;
+               $this->smpset = $smpset ;
+
+               ///////////////////////////////////
+               // hmtx - Horizontal metrics table
+               ///////////////////////////////////
+               $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
+
+               ///////////////////////////////////
+               // kern - Kerning pair table
+               ///////////////////////////////////
+               if ($kerninfo) {
+                       // Recognises old form of Kerning table - as required by Windows - Format 0 only
+                       $kern_offset = $this->seek_table("kern");
+                       $version = $this->read_ushort();
+                       $nTables = $this->read_ushort();
+                       // subtable header
+                       $sversion = $this->read_ushort();
+                       $slength = $this->read_ushort();
+                       $scoverage = $this->read_ushort();
+                       $format = $scoverage >> 8;
+                       if ($kern_offset && $version==0 && $format==0) {
+                               // Format 0
+                               $nPairs = $this->read_ushort();
+                               $this->skip(6);
+                               for ($i=0; $i<$nPairs; $i++) {
+                                       $left = $this->read_ushort();
+                                       $right = $this->read_ushort();
+                                       $val = $this->read_short();
+                                       if (count($glyphToChar[$left])==1 && count($glyphToChar[$right])==1) {
+                                         if ($left != 32 && $right != 32) {
+                                               $this->kerninfo[$glyphToChar[$left][0]][$glyphToChar[$right][0]] = intval($val*$scale);
+                                         }
+                                       }
+                               }
+                       }
+               }
+       }
+
+
+/////////////////////////////////////////////////////////////////////////////////////////
+
+
+       function makeSubset($file, &$subset, $TTCfontID=0, $debug=false, $unAGlyphs=false) {    // mPDF 5.4.05
+               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
+               $this->filename = $file;
+               $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
+               $this->_pos = 0;
+               $this->charWidths = '';
+               $this->glyphPos = array();
+               $this->charToGlyph = array();
+               $this->tables = array();
+               $this->otables = array();
+               $this->ascent = 0;
+               $this->descent = 0;
+               $this->numTTCFonts = 0;
+               $this->TTCFonts = array();
+               $this->skip(4);
+               $this->maxUni = 0;
+               if ($TTCfontID > 0) {
+                       $this->version = $version = $this->read_ulong();        // TTC Header version now
+                       if (!in_array($version, array(0x00010000,0x00020000)))
+                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
+                       $this->numTTCFonts = $this->read_ulong();
+                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
+                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
+                       }
+                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
+                       $this->version = $version = $this->read_ulong();        // TTFont version again now
+               }
+               $this->readTableDirectory($debug);
+
+               ///////////////////////////////////
+               // head - Font header table
+               ///////////////////////////////////
+               $this->seek_table("head");
+               $this->skip(50); 
+               $indexToLocFormat = $this->read_ushort();
+               $glyphDataFormat = $this->read_ushort();
+
+               ///////////////////////////////////
+               // hhea - Horizontal header table
+               ///////////////////////////////////
+               $this->seek_table("hhea");
+               $this->skip(32); 
+               $metricDataFormat = $this->read_ushort();
+               $orignHmetrics = $numberOfHMetrics = $this->read_ushort();
+
+               ///////////////////////////////////
+               // maxp - Maximum profile table
+               ///////////////////////////////////
+               $this->seek_table("maxp");
+               $this->skip(4);
+               $numGlyphs = $this->read_ushort();
+
+
+               ///////////////////////////////////
+               // cmap - Character to glyph index mapping table
+               ///////////////////////////////////
+               $cmap_offset = $this->seek_table("cmap");
+               $this->skip(2);
+               $cmapTableCount = $this->read_ushort();
+               $unicode_cmap_offset = 0;
+               for ($i=0;$i<$cmapTableCount;$i++) {
+                       $platformID = $this->read_ushort();
+                       $encodingID = $this->read_ushort();
+                       $offset = $this->read_ulong();
+                       $save_pos = $this->_pos;
+                       if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 4) {
+                                       $unicode_cmap_offset = $cmap_offset + $offset;
+                                       break;
+                               }
+                       }
+                       $this->seek($save_pos );
+               }
+
+               if (!$unicode_cmap_offset)
+                       die('Font ('.$this->filename .') does not have Unicode cmap (platform 3, encoding 1, format 4, or platform 0 [any encoding] format 4)');
+
+
+               $glyphToChar = array();
+               $charToGlyph = array();
+               $this->getCMAP4($unicode_cmap_offset, $glyphToChar, $charToGlyph );
+
+               $this->charToGlyph = $charToGlyph;
+
+
+               ///////////////////////////////////
+               // hmtx - Horizontal metrics table
+               ///////////////////////////////////
+               $scale = 1;     // not used
+               $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
+
+               ///////////////////////////////////
+               // loca - Index to location
+               ///////////////////////////////////
+               $this->getLOCA($indexToLocFormat, $numGlyphs);
+
+               $subsetglyphs = array(0=>0, 1=>1, 2=>2);
+               $subsetCharToGlyph = array();
+               foreach($subset AS $code) {
+                       if (isset($this->charToGlyph[$code])) {
+                               $subsetglyphs[$this->charToGlyph[$code]] = $code;       // Old Glyph ID => Unicode
+                               $subsetCharToGlyph[$code] = $this->charToGlyph[$code];  // Unicode to old GlyphID
+
+                       }
+                       $this->maxUni = max($this->maxUni, $code);
+               }
+
+               list($start,$dummy) = $this->get_table_pos('glyf');
+
+               $glyphSet = array();
+               ksort($subsetglyphs);
+               $n = 0;
+               $fsLastCharIndex = 0;   // maximum Unicode index (character code) in this font, according to the cmap subtable for platform ID 3 and platform- specific encoding ID 0 or 1.
+               foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
+                       $fsLastCharIndex = max($fsLastCharIndex , $uni); 
+                       $glyphSet[$originalGlyphIdx] = $n;      // old glyphID to new glyphID
+                       $n++;
+               }
+
+               ksort($subsetCharToGlyph);
+               foreach($subsetCharToGlyph AS $uni => $originalGlyphIdx) {
+                       $codeToGlyph[$uni] = $glyphSet[$originalGlyphIdx] ;
+               }
+               $this->codeToGlyph = $codeToGlyph;
+
+               ksort($subsetglyphs);
+               foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
+                       $this->getGlyphs($originalGlyphIdx, $start, $glyphSet, $subsetglyphs);
+               }
+
+               $numGlyphs = $numberOfHMetrics = count($subsetglyphs );
+
+               ///////////////////////////////////
+               // name - table copied from the original
+               ///////////////////////////////////
+               $this->add('name', $this->get_table('name'));
+
+               ///////////////////////////////////
+               //tables copied from the original
+               ///////////////////////////////////
+               $tags = array ('cvt ', 'fpgm', 'prep', 'gasp');
+               foreach($tags AS $tag) {
+                       if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); }
+               }
+
+               ///////////////////////////////////
+               // post - PostScript
+               ///////////////////////////////////
+               if (isset($this->tables['post'])) {
+                       $opost = $this->get_table('post');
+                       $post = "\x00\x03\x00\x00" . substr($opost,4,12) . "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+                       $this->add('post', $post);
+               }
+
+               ///////////////////////////////////
+               // Sort CID2GID map into segments of contiguous codes
+               ///////////////////////////////////
+               ksort($codeToGlyph);
+               unset($codeToGlyph[0]);
+               //unset($codeToGlyph[65535]);
+               $rangeid = 0;
+               $range = array();
+               $prevcid = -2;
+               $prevglidx = -1;
+               // for each character
+               foreach ($codeToGlyph as $cid => $glidx) {
+                       if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) {
+                               $range[$rangeid][] = $glidx;
+                       } else {
+                               // new range
+                               $rangeid = $cid;
+                               $range[$rangeid] = array();
+                               $range[$rangeid][] = $glidx;
+                       }
+                       $prevcid = $cid;
+                       $prevglidx = $glidx;
+               }
+
+
+
+               ///////////////////////////////////
+               // CMap table
+               ///////////////////////////////////
+               // cmap - Character to glyph mapping 
+               $segCount = count($range) + 1;  // + 1 Last segment has missing character 0xFFFF
+               $searchRange = 1;
+               $entrySelector = 0;
+               while ($searchRange * 2 <= $segCount ) {
+                       $searchRange = $searchRange * 2;
+                       $entrySelector = $entrySelector + 1;
+               }
+               $searchRange = $searchRange * 2;
+               $rangeShift = $segCount * 2 - $searchRange;
+               $length = 16 + (8*$segCount ) + ($numGlyphs+1);
+               $cmap = array(0, 3,             // Index : version, number of encoding subtables
+                       0, 0,                           // Encoding Subtable : platform (UNI=0), encoding 0
+                       0, 28,                  // Encoding Subtable : offset (hi,lo)
+                       0, 3,                           // Encoding Subtable : platform (UNI=0), encoding 3
+                       0, 28,                  // Encoding Subtable : offset (hi,lo)
+                       3, 1,                           // Encoding Subtable : platform (MS=3), encoding 1
+                       0, 28,                  // Encoding Subtable : offset (hi,lo)
+                       4, $length, 0,          // Format 4 Mapping subtable: format, length, language
+                       $segCount*2,
+                       $searchRange,
+                       $entrySelector,
+                       $rangeShift);
+
+               // endCode(s)
+               foreach($range AS $start=>$subrange) {
+                       $endCode = $start + (count($subrange)-1);
+                       $cmap[] = $endCode;     // endCode(s)
+               }
+               $cmap[] =       0xFFFF; // endCode of last Segment
+               $cmap[] =       0;      // reservedPad
+
+               // startCode(s)
+               foreach($range AS $start=>$subrange) {
+                       $cmap[] = $start;       // startCode(s)
+               }
+               $cmap[] =       0xFFFF; // startCode of last Segment
+               // idDelta(s) 
+               foreach($range AS $start=>$subrange) {
+                       $idDelta = -($start-$subrange[0]);
+                       $n += count($subrange);
+                       $cmap[] = $idDelta;     // idDelta(s)
+               }
+               $cmap[] =       1;      // idDelta of last Segment
+               // idRangeOffset(s) 
+               foreach($range AS $subrange) {
+                       $cmap[] = 0;    // idRangeOffset[segCount]      Offset in bytes to glyph indexArray, or 0
+
+               }
+               $cmap[] =       0;      // idRangeOffset of last Segment
+               foreach($range AS $subrange) {
+                       foreach($subrange AS $glidx) {
+                               $cmap[] = $glidx;
+                       }
+               }
+               $cmap[] = 0;    // Mapping for last character
+               $cmapstr = '';
+               foreach($cmap AS $cm) { $cmapstr .= pack("n",$cm); }
+               $this->add('cmap', $cmapstr);
+
+
+               ///////////////////////////////////
+               // glyf - Glyph data
+               ///////////////////////////////////
+               list($glyfOffset,$glyfLength) = $this->get_table_pos('glyf');
+               if ($glyfLength < $this->maxStrLenRead) {
+                       $glyphData = $this->get_table('glyf');
+               }
+
+               $offsets = array();
+               $glyf = '';
+               $pos = 0;
+               $hmtxstr = '';
+               $xMinT = 0;
+               $yMinT = 0;
+               $xMaxT = 0;
+               $yMaxT = 0;
+               $advanceWidthMax = 0;
+               $minLeftSideBearing = 0;
+               $minRightSideBearing = 0;
+               $xMaxExtent = 0;
+               $maxPoints = 0;                 // points in non-compound glyph
+               $maxContours = 0;                       // contours in non-compound glyph
+               $maxComponentPoints = 0;        // points in compound glyph
+               $maxComponentContours = 0;      // contours in compound glyph
+               $maxComponentElements = 0;      // number of glyphs referenced at top level
+               $maxComponentDepth = 0;         // levels of recursion, set to 0 if font has only simple glyphs
+               $this->glyphdata = array();
+
+               foreach($subsetglyphs AS $originalGlyphIdx => $uni) {
+                       // hmtx - Horizontal Metrics
+                       $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx);
+                       $hmtxstr .= $hm;
+
+                       $offsets[] = $pos;
+                       $glyphPos = $this->glyphPos[$originalGlyphIdx];
+                       $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
+                       if ($glyfLength < $this->maxStrLenRead) {
+                               $data = substr($glyphData,$glyphPos,$glyphLen);
+                       }
+                       else {
+                               if ($glyphLen > 0) $data = $this->get_chunk($glyfOffset+$glyphPos,$glyphLen);
+                               else $data = '';
+                       }
+
+                       if ($glyphLen > 0) {
+                         if (_RECALC_PROFILE) {
+                               $xMin = $this->unpack_short(substr($data,2,2));
+                               $yMin = $this->unpack_short(substr($data,4,2));
+                               $xMax = $this->unpack_short(substr($data,6,2));
+                               $yMax = $this->unpack_short(substr($data,8,2));
+                               $xMinT = min($xMinT,$xMin);
+                               $yMinT = min($yMinT,$yMin);
+                               $xMaxT = max($xMaxT,$xMax);
+                               $yMaxT = max($yMaxT,$yMax);
+                               $aw = $this->unpack_short(substr($hm,0,2)); 
+                               $lsb = $this->unpack_short(substr($hm,2,2));
+                               $advanceWidthMax = max($advanceWidthMax,$aw);
+                               $minLeftSideBearing = min($minLeftSideBearing,$lsb);
+                               $minRightSideBearing = min($minRightSideBearing,($aw - $lsb - ($xMax - $xMin)));
+                               $xMaxExtent = max($xMaxExtent,($lsb + ($xMax - $xMin)));
+                          }
+                               $up = unpack("n", substr($data,0,2));
+                       }
+                       if ($glyphLen > 2 && ($up[1] & (1 << 15)) ) {   // If number of contours <= -1 i.e. composiste glyph
+                               $pos_in_glyph = 10;
+                               $flags = GF_MORE;
+                               $nComponentElements = 0;
+                               while ($flags & GF_MORE) {
+                                       $nComponentElements += 1;       // number of glyphs referenced at top level
+                                       $up = unpack("n", substr($data,$pos_in_glyph,2));
+                                       $flags = $up[1];
+                                       $up = unpack("n", substr($data,$pos_in_glyph+2,2));
+                                       $glyphIdx = $up[1];
+                                       $this->glyphdata[$originalGlyphIdx]['compGlyphs'][] = $glyphIdx;
+                                       $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]);
+                                       $pos_in_glyph += 4;
+                                       if ($flags & GF_WORDS) { $pos_in_glyph += 4; }
+                                       else { $pos_in_glyph += 2; }
+                                       if ($flags & GF_SCALE) { $pos_in_glyph += 2; }
+                                       else if ($flags & GF_XYSCALE) { $pos_in_glyph += 4; }
+                                       else if ($flags & GF_TWOBYTWO) { $pos_in_glyph += 8; }
+                               }
+                               $maxComponentElements = max($maxComponentElements, $nComponentElements);
+                       }
+                       // Simple Glyph
+                       else if (_RECALC_PROFILE && $glyphLen > 2 && $up[1] < (1 << 15) && $up[1] > 0) {        // Number of contours > 0 simple glyph
+                               $nContours = $up[1];
+                               $this->glyphdata[$originalGlyphIdx]['nContours'] = $nContours;
+                               $maxContours = max($maxContours, $nContours);
+
+                               // Count number of points in simple glyph
+                               $pos_in_glyph = 10 + ($nContours  * 2) - 2;     // Last endContourPoint
+                               $up = unpack("n", substr($data,$pos_in_glyph,2));
+                               $points = $up[1]+1;
+                               $this->glyphdata[$originalGlyphIdx]['nPoints'] = $points;
+                               $maxPoints = max($maxPoints, $points);
+                       }
+
+                       $glyf .= $data;
+                       $pos += $glyphLen;
+                       if ($pos % 4 != 0) {
+                               $padding = 4 - ($pos % 4);
+                               $glyf .= str_repeat("\0",$padding);
+                               $pos += $padding;
+                       }
+               }
+
+               if (_RECALC_PROFILE) {
+                  foreach($this->glyphdata AS $originalGlyphIdx => $val) {
+                       $maxdepth = $depth = -1;
+                       $points = 0;
+                       $contours = 0;
+                       $this->getGlyphData($originalGlyphIdx, $maxdepth, $depth, $points, $contours) ;
+                       $maxComponentDepth = max($maxComponentDepth , $maxdepth);
+                       $maxComponentPoints = max($maxComponentPoints , $points);
+                       $maxComponentContours = max($maxComponentContours , $contours);
+                  }
+               }
+
+
+               $offsets[] = $pos;
+               $this->add('glyf', $glyf);
+
+               ///////////////////////////////////
+               // hmtx - Horizontal Metrics
+               ///////////////////////////////////
+               $this->add('hmtx', $hmtxstr);
+
+
+               ///////////////////////////////////
+               // loca - Index to location
+               ///////////////////////////////////
+               $locastr = '';
+               if ((($pos + 1) >> 1) > 0xFFFF) {
+                       $indexToLocFormat = 1;        // long format
+                       foreach($offsets AS $offset) { $locastr .= pack("N",$offset); }
+               }
+               else {
+                       $indexToLocFormat = 0;        // short format
+                       foreach($offsets AS $offset) { $locastr .= pack("n",($offset/2)); }
+               }
+               $this->add('loca', $locastr);
+
+               ///////////////////////////////////
+               // head - Font header
+               ///////////////////////////////////
+               $head = $this->get_table('head');
+               $head = $this->_set_ushort($head, 50, $indexToLocFormat);
+               if (_RECALC_PROFILE) {
+                       $head = $this->_set_short($head, 36, $xMinT);   // for all glyph bounding boxes
+                       $head = $this->_set_short($head, 38, $yMinT);   // for all glyph bounding boxes
+                       $head = $this->_set_short($head, 40, $xMaxT);   // for all glyph bounding boxes
+                       $head = $this->_set_short($head, 42, $yMaxT);   // for all glyph bounding boxes
+                       $head[17] = chr($head[17] & ~(1 << 4));         // Unset Bit 4 (as hdmx/LTSH tables not included)
+               }
+               $this->add('head', $head);
+
+
+               ///////////////////////////////////
+               // hhea - Horizontal Header
+               ///////////////////////////////////
+               $hhea = $this->get_table('hhea');
+               $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics);
+               if (_RECALC_PROFILE) {
+                       $hhea = $this->_set_ushort($hhea, 10, $advanceWidthMax);        
+                       $hhea = $this->_set_short($hhea, 12, $minLeftSideBearing);      
+                       $hhea = $this->_set_short($hhea, 14, $minRightSideBearing);     
+                       $hhea = $this->_set_short($hhea, 16, $xMaxExtent);      
+               }
+               $this->add('hhea', $hhea);
+
+               ///////////////////////////////////
+               // maxp - Maximum Profile
+               ///////////////////////////////////
+               $maxp = $this->get_table('maxp');
+               $maxp = $this->_set_ushort($maxp, 4, $numGlyphs);
+               if (_RECALC_PROFILE) {
+                       $maxp = $this->_set_ushort($maxp, 6, $maxPoints);       // points in non-compound glyph
+                       $maxp = $this->_set_ushort($maxp, 8, $maxContours);     // contours in non-compound glyph
+                       $maxp = $this->_set_ushort($maxp, 10, $maxComponentPoints);     // points in compound glyph
+                       $maxp = $this->_set_ushort($maxp, 12, $maxComponentContours);   // contours in compound glyph
+                       $maxp = $this->_set_ushort($maxp, 28, $maxComponentElements);   // number of glyphs referenced at top level
+                       $maxp = $this->_set_ushort($maxp, 30, $maxComponentDepth);      // levels of recursion, set to 0 if font has only simple glyphs
+               }
+               $this->add('maxp', $maxp);
+
+
+               ///////////////////////////////////
+               // OS/2 - OS/2
+               ///////////////////////////////////
+               if (isset($this->tables['OS/2'])) { 
+                       $os2_offset = $this->seek_table("OS/2");
+                       if (_RECALC_PROFILE) {
+                               $fsSelection = $this->get_ushort($os2_offset+62);
+                               $fsSelection = ($fsSelection & ~(1 << 6));      // 2-byte bit field containing information concerning the nature of the font patterns
+                                       // bit#0 = Italic; bit#5=Bold
+                                       // Match name table's font subfamily string
+                                       // Clear bit#6 used for 'Regular' and optional
+                       }
+
+                       // NB Currently this method never subsets characters above BMP
+                       // Could set nonBMP bit according to $this->maxUni 
+                       $nonBMP = $this->get_ushort($os2_offset+46);
+                       $nonBMP = ($nonBMP & ~(1 << 9));        // Unset Bit 57 (indicates non-BMP) - for interactive forms
+
+                       $os2 = $this->get_table('OS/2');
+                       if (_RECALC_PROFILE) {
+                               $os2 = $this->_set_ushort($os2, 62, $fsSelection);      
+                               $os2 = $this->_set_ushort($os2, 66, $fsLastCharIndex);
+                               $os2 = $this->_set_ushort($os2, 42, 0x0000);    // ulCharRange (ulUnicodeRange) bits 24-31 | 16-23
+                               $os2 = $this->_set_ushort($os2, 44, 0x0000);    // ulCharRange (Unicode ranges) bits  8-15 |  0-7
+                               $os2 = $this->_set_ushort($os2, 46, $nonBMP);   // ulCharRange (Unicode ranges) bits 56-63 | 48-55
+                               $os2 = $this->_set_ushort($os2, 48, 0x0000);    // ulCharRange (Unicode ranges) bits 40-47 | 32-39
+                               $os2 = $this->_set_ushort($os2, 50, 0x0000);    // ulCharRange (Unicode ranges) bits  88-95 | 80-87
+                               $os2 = $this->_set_ushort($os2, 52, 0x0000);    // ulCharRange (Unicode ranges) bits  72-79 | 64-71
+                               $os2 = $this->_set_ushort($os2, 54, 0x0000);    // ulCharRange (Unicode ranges) bits  120-127 | 112-119
+                               $os2 = $this->_set_ushort($os2, 56, 0x0000);    // ulCharRange (Unicode ranges) bits  104-111 | 96-103
+                       }
+                       $os2 = $this->_set_ushort($os2, 46, $nonBMP);   // Unset Bit 57 (indicates non-BMP) - for interactive forms
+
+                       $this->add('OS/2', $os2 );
+               }
+
+               fclose($this->fh);
+               // Put the TTF file together
+               $stm = '';
+               $this->endTTFile($stm);
+               //file_put_contents('testfont.ttf', $stm); exit;
+               return $stm ;
+       }
+
+//================================================================================
+
+       // Also does SMP
+       function makeSubsetSIP($file, &$subset, $TTCfontID=0, $debug=false) {
+               $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
+               $this->filename = $file;
+               $this->_pos = 0;
+               $this->unAGlyphs = false;       // mPDF 5.4.05
+               $this->charWidths = '';
+               $this->glyphPos = array();
+               $this->charToGlyph = array();
+               $this->tables = array();
+               $this->otables = array();
+               $this->ascent = 0;
+               $this->descent = 0;
+               $this->numTTCFonts = 0;
+               $this->TTCFonts = array();
+               $this->skip(4);
+               if ($TTCfontID > 0) {
+                       $this->version = $version = $this->read_ulong();        // TTC Header version now
+                       if (!in_array($version, array(0x00010000,0x00020000)))
+                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
+                       $this->numTTCFonts = $this->read_ulong();
+                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
+                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
+                       }
+                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
+                       $this->version = $version = $this->read_ulong();        // TTFont version again now
+               }
+               $this->readTableDirectory($debug);
+
+
+
+               ///////////////////////////////////
+               // head - Font header table
+               ///////////////////////////////////
+               $this->seek_table("head");
+               $this->skip(50); 
+               $indexToLocFormat = $this->read_ushort();
+               $glyphDataFormat = $this->read_ushort();
+
+               ///////////////////////////////////
+               // hhea - Horizontal header table
+               ///////////////////////////////////
+               $this->seek_table("hhea");
+               $this->skip(32); 
+               $metricDataFormat = $this->read_ushort();
+               $orignHmetrics = $numberOfHMetrics = $this->read_ushort();
+
+               ///////////////////////////////////
+               // maxp - Maximum profile table
+               ///////////////////////////////////
+               $this->seek_table("maxp");
+               $this->skip(4);
+               $numGlyphs = $this->read_ushort();
+
+
+               ///////////////////////////////////
+               // cmap - Character to glyph index mapping table
+               ///////////////////////////////////
+
+               $cmap_offset = $this->seek_table("cmap");
+               $this->skip(2);
+               $cmapTableCount = $this->read_ushort();
+               $unicode_cmap_offset = 0;
+               for ($i=0;$i<$cmapTableCount;$i++) {
+                       $platformID = $this->read_ushort();
+                       $encodingID = $this->read_ushort();
+                       $offset = $this->read_ulong();
+                       $save_pos = $this->_pos;
+                       if (($platformID == 3 && $encodingID == 10) || $platformID == 0) { // Microsoft, Unicode Format 12 table HKCS
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 12) {
+                                       $unicode_cmap_offset = $cmap_offset + $offset;
+                                       break;
+                               }
+                       }
+                       $this->seek($save_pos );
+               }
+
+               if (!$unicode_cmap_offset)
+                       die('Font does not have cmap for Unicode (platform 3, encoding 1, format 4, or platform 0, any encoding, format 4)');
+               // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
+               if ($format == 12) {
+                       $this->maxUniChar = 0;
+                       $this->seek($unicode_cmap_offset + 4);
+                       $length = $this->read_ulong();
+                       $limit = $unicode_cmap_offset + $length;
+                       $this->skip(4);
+
+                       $nGroups = $this->read_ulong();
+
+                       $glyphToChar = array();
+                       $charToGlyph = array();
+                       for($i=0; $i<$nGroups ; $i++) { 
+                               $startCharCode = $this->read_ulong(); 
+                               $endCharCode = $this->read_ulong(); 
+                               $startGlyphCode = $this->read_ulong(); 
+                               $offset = 0;
+                               for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
+                                       $glyph = $startGlyphCode + $offset ;
+                                       $offset++;
+                                       $charToGlyph[$unichar] = $glyph;
+                                       if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
+                                       $glyphToChar[$glyph][] = $unichar;
+                               }
+                       }
+               }
+               else 
+                       die('Font does not have cmap for Unicode (format 12)');
+
+
+               ///////////////////////////////////
+               // hmtx - Horizontal metrics table
+               ///////////////////////////////////
+               $scale = 1; // not used here
+               $this->getHMTX($numberOfHMetrics, $numGlyphs, $glyphToChar, $scale);
+
+               ///////////////////////////////////
+               // loca - Index to location
+               ///////////////////////////////////
+               $this->getLOCA($indexToLocFormat, $numGlyphs);
+
+               ///////////////////////////////////////////////////////////////////
+
+               $glyphMap = array(0=>0); 
+               $glyphSet = array(0=>0);
+               $codeToGlyph = array();
+               // Set a substitute if ASCII characters do not have glyphs
+               if (isset($charToGlyph[0x3F])) { $subs = $charToGlyph[0x3F]; }  // Question mark
+               else { $subs = $charToGlyph[32]; }
+               foreach($subset AS $code) {
+                       if (isset($charToGlyph[$code]))
+                               $originalGlyphIdx = $charToGlyph[$code];
+                       else if ($code<128) {
+                               $originalGlyphIdx = $subs;
+                       }
+                       else { $originalGlyphIdx = 0; }
+                       if (!isset($glyphSet[$originalGlyphIdx])) {
+                               $glyphSet[$originalGlyphIdx] = count($glyphMap);
+                               $glyphMap[] = $originalGlyphIdx;
+                       }
+                       $codeToGlyph[$code] = $glyphSet[$originalGlyphIdx];
+               }
+
+               list($start,$dummy) = $this->get_table_pos('glyf');
+
+               $n = 0;
+               while ($n < count($glyphMap)) {
+                       $originalGlyphIdx = $glyphMap[$n];
+                       $glyphPos = $this->glyphPos[$originalGlyphIdx];
+                       $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
+                       $n += 1;
+                       if (!$glyphLen) continue;
+                       $this->seek($start + $glyphPos);
+                       $numberOfContours = $this->read_short();
+                       if ($numberOfContours < 0) {
+                               $this->skip(8);
+                               $flags = GF_MORE;
+                               while ($flags & GF_MORE) {
+                                       $flags = $this->read_ushort();
+                                       $glyphIdx = $this->read_ushort();
+                                       if (!isset($glyphSet[$glyphIdx])) {
+                                               $glyphSet[$glyphIdx] = count($glyphMap);
+                                               $glyphMap[] = $glyphIdx;
+                                       }
+                                       if ($flags & GF_WORDS)
+                                               $this->skip(4);
+                                       else
+                                               $this->skip(2);
+                                       if ($flags & GF_SCALE)
+                                               $this->skip(2);
+                                       else if ($flags & GF_XYSCALE)
+                                               $this->skip(4);
+                                       else if ($flags & GF_TWOBYTWO)
+                                               $this->skip(8);
+                               }
+                       }
+               }
+
+               $numGlyphs = $n = count($glyphMap);
+               $numberOfHMetrics = $n;
+
+               ///////////////////////////////////
+               // name
+               ///////////////////////////////////
+               // Needs to have a name entry in 3,0 (e.g. symbol) - original font will be 3,1 (i.e. Unicode)
+               $name = $this->get_table('name'); 
+               $name_offset = $this->seek_table("name");
+               $format = $this->read_ushort();
+               $numRecords = $this->read_ushort();
+               $string_data_offset = $name_offset + $this->read_ushort();
+               for ($i=0;$i<$numRecords; $i++) {
+                       $platformId = $this->read_ushort();
+                       $encodingId = $this->read_ushort();
+                       if ($platformId == 3 && $encodingId == 1) {
+                               $pos = 6 + ($i * 12) + 2;
+                               $name = $this->_set_ushort($name, $pos, 0x00);  // Change encoding to 3,0 rather than 3,1
+                       }
+                       $this->skip(8);
+               }
+               $this->add('name', $name);
+
+               ///////////////////////////////////
+               // OS/2
+               ///////////////////////////////////
+               if (isset($this->tables['OS/2'])) { 
+                       $os2 = $this->get_table('OS/2');
+                       $os2 = $this->_set_ushort($os2, 42, 0x00);      // ulCharRange (Unicode ranges)
+                       $os2 = $this->_set_ushort($os2, 44, 0x00);      // ulCharRange (Unicode ranges)
+                       $os2 = $this->_set_ushort($os2, 46, 0x00);      // ulCharRange (Unicode ranges)
+                       $os2 = $this->_set_ushort($os2, 48, 0x00);      // ulCharRange (Unicode ranges)
+
+                       $os2 = $this->_set_ushort($os2, 50, 0x00);      // ulCharRange (Unicode ranges)
+                       $os2 = $this->_set_ushort($os2, 52, 0x00);      // ulCharRange (Unicode ranges)
+                       $os2 = $this->_set_ushort($os2, 54, 0x00);      // ulCharRange (Unicode ranges)
+                       $os2 = $this->_set_ushort($os2, 56, 0x00);      // ulCharRange (Unicode ranges)
+                       // Set Symbol character only in ulCodePageRange
+                       $os2 = $this->_set_ushort($os2, 78, 0x8000);    // ulCodePageRange = Bit #31 Symbol ****  78 = Bit 16-31
+                       $os2 = $this->_set_ushort($os2, 80, 0x0000);    // ulCodePageRange = Bit #31 Symbol ****  80 = Bit 0-15
+                       $os2 = $this->_set_ushort($os2, 82, 0x0000);    // ulCodePageRange = Bit #32- Symbol **** 82 = Bits 48-63
+                       $os2 = $this->_set_ushort($os2, 84, 0x0000);    // ulCodePageRange = Bit #32- Symbol **** 84 = Bits 32-47
+       
+                       $os2 = $this->_set_ushort($os2, 64, 0x01);              // FirstCharIndex
+                       $os2 = $this->_set_ushort($os2, 66, count($subset));            // LastCharIndex
+                       // Set PANOSE first bit to 5 for Symbol
+                       $os2 = $this->splice($os2, 32, chr(5).chr(0).chr(1).chr(0).chr(1).chr(0).chr(0).chr(0).chr(0).chr(0));
+                       $this->add('OS/2', $os2 );
+               }
+
+
+               ///////////////////////////////////
+               //tables copied from the original
+               ///////////////////////////////////
+               $tags = array ('cvt ', 'fpgm', 'prep', 'gasp'); 
+               foreach($tags AS $tag) {        // 1.02
+                       if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); } 
+               }
+
+               ///////////////////////////////////
+               // post - PostScript
+               ///////////////////////////////////
+               if (isset($this->tables['post'])) { 
+                       $opost = $this->get_table('post');
+                       $post = "\x00\x03\x00\x00" . substr($opost,4,12) . "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+               }
+               $this->add('post', $post);
+
+               ///////////////////////////////////
+               // hhea - Horizontal Header
+               ///////////////////////////////////
+               $hhea = $this->get_table('hhea');
+               $hhea = $this->_set_ushort($hhea, 34, $numberOfHMetrics);
+               $this->add('hhea', $hhea);
+
+               ///////////////////////////////////
+               // maxp - Maximum Profile
+               ///////////////////////////////////
+               $maxp = $this->get_table('maxp');
+               $maxp = $this->_set_ushort($maxp, 4, $numGlyphs);
+               $this->add('maxp', $maxp);
+
+
+               ///////////////////////////////////
+               // CMap table Formats [1,0,]6 and [3,0,]4
+               ///////////////////////////////////
+               ///////////////////////////////////
+               // Sort CID2GID map into segments of contiguous codes
+               ///////////////////////////////////
+               $rangeid = 0;
+               $range = array();
+               $prevcid = -2;
+               $prevglidx = -1;
+               // for each character
+               foreach ($subset as $cid => $code) {
+                       $glidx = $codeToGlyph[$code]; 
+                       if ($cid == ($prevcid + 1) && $glidx == ($prevglidx + 1)) {
+                               $range[$rangeid][] = $glidx;
+                       } else {
+                               // new range
+                               $rangeid = $cid;
+                               $range[$rangeid] = array();
+                               $range[$rangeid][] = $glidx;
+                       }
+                       $prevcid = $cid;
+                       $prevglidx = $glidx;
+               }
+               // cmap - Character to glyph mapping 
+               $segCount = count($range) + 1;  // + 1 Last segment has missing character 0xFFFF
+               $searchRange = 1;
+               $entrySelector = 0;
+               while ($searchRange * 2 <= $segCount ) {
+                       $searchRange = $searchRange * 2;
+                       $entrySelector = $entrySelector + 1;
+               }
+               $searchRange = $searchRange * 2;
+               $rangeShift = $segCount * 2 - $searchRange;
+               $length = 16 + (8*$segCount ) + ($numGlyphs+1);
+               $cmap = array(
+                       4, $length, 0,          // Format 4 Mapping subtable: format, length, language
+                       $segCount*2,
+                       $searchRange,
+                       $entrySelector,
+                       $rangeShift);
+
+               // endCode(s)
+               foreach($range AS $start=>$subrange) {
+                       $endCode = $start + (count($subrange)-1);
+                       $cmap[] = $endCode;     // endCode(s)
+               }
+               $cmap[] =       0xFFFF; // endCode of last Segment
+               $cmap[] =       0;      // reservedPad
+
+               // startCode(s)
+               foreach($range AS $start=>$subrange) {
+                       $cmap[] = $start;       // startCode(s)
+               }
+               $cmap[] =       0xFFFF; // startCode of last Segment
+               // idDelta(s) 
+               foreach($range AS $start=>$subrange) {
+                       $idDelta = -($start-$subrange[0]);
+                       $n += count($subrange);
+                       $cmap[] = $idDelta;     // idDelta(s)
+               }
+               $cmap[] =       1;      // idDelta of last Segment
+               // idRangeOffset(s) 
+               foreach($range AS $subrange) {
+                       $cmap[] = 0;    // idRangeOffset[segCount]      Offset in bytes to glyph indexArray, or 0
+
+               }
+               $cmap[] =       0;      // idRangeOffset of last Segment
+               foreach($range AS $subrange) {
+                       foreach($subrange AS $glidx) {
+                               $cmap[] = $glidx;
+                       }
+               }
+               $cmap[] = 0;    // Mapping for last character
+               $cmapstr4 = '';
+               foreach($cmap AS $cm) { $cmapstr4 .= pack("n",$cm); }
+
+               ///////////////////////////////////
+               // cmap - Character to glyph mapping
+               ///////////////////////////////////
+               $entryCount = count($subset);
+               $length = 10 + $entryCount * 2;
+
+               $off = 20 + $length;
+               $hoff = $off >> 16;
+               $loff = $off & 0xFFFF;
+
+               $cmap = array(0, 2,     // Index : version, number of subtables
+                       1, 0,                   // Subtable : platform, encoding
+                       0, 20,          // offset (hi,lo)
+                       3, 0,                   // Subtable : platform, encoding
+                       $hoff, $loff,   // offset (hi,lo)
+                       6, $length,     // Format 6 Mapping table: format, length
+                       0, 1,                   // language, First char code
+                       $entryCount
+               );
+               $cmapstr = '';
+               foreach($subset AS $code) { $cmap[] = $codeToGlyph[$code]; }
+               foreach($cmap AS $cm) { $cmapstr .= pack("n",$cm); }
+               $cmapstr .= $cmapstr4;
+               $this->add('cmap', $cmapstr);
+
+               ///////////////////////////////////
+               // hmtx - Horizontal Metrics
+               ///////////////////////////////////
+               $hmtxstr = '';
+               for($n=0;$n<$numGlyphs;$n++) {
+                       $originalGlyphIdx = $glyphMap[$n];
+                       $hm = $this->getHMetric($orignHmetrics, $originalGlyphIdx);
+                       $hmtxstr .= $hm;
+               }
+               $this->add('hmtx', $hmtxstr);
+
+               ///////////////////////////////////
+               // glyf - Glyph data
+               ///////////////////////////////////
+               list($glyfOffset,$glyfLength) = $this->get_table_pos('glyf');
+               if ($glyfLength < $this->maxStrLenRead) {
+                       $glyphData = $this->get_table('glyf');
+               }
+
+               $offsets = array();
+               $glyf = '';
+               $pos = 0;
+               for ($n=0;$n<$numGlyphs;$n++) {
+                       $offsets[] = $pos;
+                       $originalGlyphIdx = $glyphMap[$n];
+                       $glyphPos = $this->glyphPos[$originalGlyphIdx];
+                       $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
+                       if ($glyfLength < $this->maxStrLenRead) {
+                               $data = substr($glyphData,$glyphPos,$glyphLen);
+                       }
+                       else {
+                               if ($glyphLen > 0) $data = $this->get_chunk($glyfOffset+$glyphPos,$glyphLen);
+                               else $data = '';
+                       }
+                       if ($glyphLen > 0) $up = unpack("n", substr($data,0,2));
+                       if ($glyphLen > 2 && ($up[1] & (1 << 15)) ) {
+                               $pos_in_glyph = 10;
+                               $flags = GF_MORE;
+                               while ($flags & GF_MORE) {
+                                       $up = unpack("n", substr($data,$pos_in_glyph,2));
+                                       $flags = $up[1];
+                                       $up = unpack("n", substr($data,$pos_in_glyph+2,2));
+                                       $glyphIdx = $up[1];
+                                       $data = $this->_set_ushort($data, $pos_in_glyph + 2, $glyphSet[$glyphIdx]);
+                                       $pos_in_glyph += 4;
+                                       if ($flags & GF_WORDS) { $pos_in_glyph += 4; }
+                                       else { $pos_in_glyph += 2; }
+                                       if ($flags & GF_SCALE) { $pos_in_glyph += 2; }
+                                       else if ($flags & GF_XYSCALE) { $pos_in_glyph += 4; }
+                                       else if ($flags & GF_TWOBYTWO) { $pos_in_glyph += 8; }
+                               }
+                       }
+                       $glyf .= $data;
+                       $pos += $glyphLen;
+                       if ($pos % 4 != 0) {
+                               $padding = 4 - ($pos % 4);
+                               $glyf .= str_repeat("\0",$padding);
+                               $pos += $padding;
+                       }
+               }
+               $offsets[] = $pos;
+               $this->add('glyf', $glyf);
+
+               ///////////////////////////////////
+               // loca - Index to location
+               ///////////////////////////////////
+               $locastr = '';
+               if ((($pos + 1) >> 1) > 0xFFFF) {
+                       $indexToLocFormat = 1;        // long format
+                       foreach($offsets AS $offset) { $locastr .= pack("N",$offset); }
+               }
+               else {
+                       $indexToLocFormat = 0;        // short format
+                       foreach($offsets AS $offset) { $locastr .= pack("n",($offset/2)); }
+               }
+               $this->add('loca', $locastr);
+
+               ///////////////////////////////////
+               // head - Font header
+               ///////////////////////////////////
+               $head = $this->get_table('head');
+               $head = $this->_set_ushort($head, 50, $indexToLocFormat);
+               $this->add('head', $head);
+
+               fclose($this->fh);
+
+               // Put the TTF file together
+               $stm = '';
+               $this->endTTFile($stm);
+               //file_put_contents('testfont.ttf', $stm); exit;
+               return $stm ;
+       }
+
+       //////////////////////////////////////////////////////////////////////////////////
+       // Recursively get composite glyph data
+       function getGlyphData($originalGlyphIdx, &$maxdepth, &$depth, &$points, &$contours) {
+               $depth++;
+               $maxdepth = max($maxdepth, $depth);
+               if (count($this->glyphdata[$originalGlyphIdx]['compGlyphs'])) {
+                       foreach($this->glyphdata[$originalGlyphIdx]['compGlyphs'] AS $glyphIdx) {
+                               $this->getGlyphData($glyphIdx, $maxdepth, $depth, $points, $contours);
+                       }
+               }
+               else if (($this->glyphdata[$originalGlyphIdx]['nContours'] > 0) && $depth > 0) {        // simple
+                       $contours += $this->glyphdata[$originalGlyphIdx]['nContours'];
+                       $points += $this->glyphdata[$originalGlyphIdx]['nPoints'];
+               }
+               $depth--;
+       }
+
+
+       //////////////////////////////////////////////////////////////////////////////////
+       // Recursively get composite glyphs
+       function getGlyphs($originalGlyphIdx, &$start, &$glyphSet, &$subsetglyphs) {
+               $glyphPos = $this->glyphPos[$originalGlyphIdx];
+               $glyphLen = $this->glyphPos[$originalGlyphIdx + 1] - $glyphPos;
+               if (!$glyphLen) { 
+                       return;
+               }
+               $this->seek($start + $glyphPos);
+               $numberOfContours = $this->read_short();
+               if ($numberOfContours < 0) {
+                       $this->skip(8);
+                       $flags = GF_MORE;
+                       while ($flags & GF_MORE) {
+                               $flags = $this->read_ushort();
+                               $glyphIdx = $this->read_ushort();
+                               if (!isset($glyphSet[$glyphIdx])) {
+                                       $glyphSet[$glyphIdx] = count($subsetglyphs);    // old glyphID to new glyphID
+                                       $subsetglyphs[$glyphIdx] = true;
+                               }
+                               $savepos = ftell($this->fh);
+                               $this->getGlyphs($glyphIdx, $start, $glyphSet, $subsetglyphs);
+                               $this->seek($savepos);
+                               if ($flags & GF_WORDS)
+                                       $this->skip(4);
+                               else
+                                       $this->skip(2);
+                               if ($flags & GF_SCALE)
+                                       $this->skip(2);
+                               else if ($flags & GF_XYSCALE)
+                                       $this->skip(4);
+                               else if ($flags & GF_TWOBYTWO)
+                                       $this->skip(8);
+                       }
+               }
+       }
+
+       //////////////////////////////////////////////////////////////////////////////////
+
+       function getHMTX($numberOfHMetrics, $numGlyphs, &$glyphToChar, $scale) {
+               $start = $this->seek_table("hmtx");
+               $aw = 0;
+               $this->charWidths = str_pad('', 256*256*2, "\x00");
+               if ($this->maxUniChar > 65536) { $this->charWidths .= str_pad('', 256*256*2, "\x00"); } // Plane 1 SMP
+               if ($this->maxUniChar > 131072) { $this->charWidths .= str_pad('', 256*256*2, "\x00"); }        // Plane 2 SMP
+               $nCharWidths = 0;
+               if (($numberOfHMetrics*4) < $this->maxStrLenRead) {
+                       $data = $this->get_chunk($start,($numberOfHMetrics*4));
+                       $arr = unpack("n*", $data);
+               }
+               else { $this->seek($start); }
+               for( $glyph=0; $glyph<$numberOfHMetrics; $glyph++) {
+                       if (($numberOfHMetrics*4) < $this->maxStrLenRead) {
+                               $aw = $arr[($glyph*2)+1];
+                       }
+                       else {
+                               $aw = $this->read_ushort();
+                               $lsb = $this->read_ushort();
+                       }
+                       if (isset($glyphToChar[$glyph]) || $glyph == 0) {
+
+                               if ($aw >= (1 << 15) ) { $aw = 0; }     // 1.03 Some (arabic) fonts have -ve values for width
+                                       // although should be unsigned value - comes out as e.g. 65108 (intended -50)
+                               if ($glyph == 0) {
+                                       $this->defaultWidth = $scale*$aw;
+                                       continue;
+                               }
+                               foreach($glyphToChar[$glyph] AS $char) {
+                                       //$this->charWidths[$char] = intval(round($scale*$aw));
+                                       if ($char != 0 && $char != 65535) {
+                                               $w = intval(round($scale*$aw));
+                                               if ($w == 0) { $w = 65535; }
+                                               if ($char < 196608) {
+                                                       $this->charWidths[$char*2] = chr($w >> 8);
+                                                       $this->charWidths[$char*2 + 1] = chr($w & 0xFF);
+                                                       $nCharWidths++;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               $data = $this->get_chunk(($start+$numberOfHMetrics*4),($numGlyphs*2));
+               $arr = unpack("n*", $data);
+               $diff = $numGlyphs-$numberOfHMetrics;
+               $w = intval(round($scale*$aw));
+               if ($w == 0) { $w = 65535; }
+               for( $pos=0; $pos<$diff; $pos++) {
+                       $glyph = $pos + $numberOfHMetrics;
+                       if (isset($glyphToChar[$glyph])) {
+                               foreach($glyphToChar[$glyph] AS $char) {
+                                       if ($char != 0 && $char != 65535) {
+                                               if ($char < 196608) { 
+                                                       $this->charWidths[$char*2] = chr($w >> 8);
+                                                       $this->charWidths[$char*2 + 1] = chr($w & 0xFF);
+                                                       $nCharWidths++;
+                                               }
+                                       }
+                               }
+                       }
+               }
+               // NB 65535 is a set width of 0
+               // First bytes define number of chars in font
+               $this->charWidths[0] = chr($nCharWidths >> 8);
+               $this->charWidths[1] = chr($nCharWidths & 0xFF);
+       }
+
+       function getHMetric($numberOfHMetrics, $gid) {
+               $start = $this->seek_table("hmtx");
+               if ($gid < $numberOfHMetrics) {
+                       $this->seek($start+($gid*4));
+                       $hm = fread($this->fh,4);
+               }
+               else {
+                       $this->seek($start+(($numberOfHMetrics-1)*4));
+                       $hm = fread($this->fh,2);
+                       $this->seek($start+($numberOfHMetrics*2)+($gid*2));
+                       $hm .= fread($this->fh,2);
+               }
+               return $hm;
+       }
+
+       function getLOCA($indexToLocFormat, $numGlyphs) {
+               $start = $this->seek_table('loca');
+               $this->glyphPos = array();
+               if ($indexToLocFormat == 0) {
+                       $data = $this->get_chunk($start,($numGlyphs*2)+2);
+                       $arr = unpack("n*", $data);
+                       for ($n=0; $n<=$numGlyphs; $n++) {
+                               $this->glyphPos[] = ($arr[$n+1] * 2);
+                       }
+               }
+               else if ($indexToLocFormat == 1) {
+                       $data = $this->get_chunk($start,($numGlyphs*4)+4);
+                       $arr = unpack("N*", $data);
+                       for ($n=0; $n<=$numGlyphs; $n++) {
+                               $this->glyphPos[] = ($arr[$n+1]);
+                       }
+               }
+               else 
+                       die('Unknown location table format '.$indexToLocFormat);
+       }
+
+
+       // CMAP Format 4
+       function getCMAP4($unicode_cmap_offset, &$glyphToChar, &$charToGlyph ) {
+               $this->maxUniChar = 0;  
+               $this->seek($unicode_cmap_offset + 2);
+               $length = $this->read_ushort();
+               $limit = $unicode_cmap_offset + $length;
+               $this->skip(2);
+
+               $segCount = $this->read_ushort() / 2;
+               $this->skip(6);
+               $endCount = array();
+               for($i=0; $i<$segCount; $i++) { $endCount[] = $this->read_ushort(); }
+               $this->skip(2);
+               $startCount = array();
+               for($i=0; $i<$segCount; $i++) { $startCount[] = $this->read_ushort(); }
+               $idDelta = array();
+               for($i=0; $i<$segCount; $i++) { $idDelta[] = $this->read_short(); }             // ???? was unsigned short
+               $idRangeOffset_start = $this->_pos;
+               $idRangeOffset = array();
+               for($i=0; $i<$segCount; $i++) { $idRangeOffset[] = $this->read_ushort(); }
+
+               for ($n=0;$n<$segCount;$n++) {
+                       $endpoint = ($endCount[$n] + 1);
+                       for ($unichar=$startCount[$n];$unichar<$endpoint;$unichar++) {
+                               if ($idRangeOffset[$n] == 0)
+                                       $glyph = ($unichar + $idDelta[$n]) & 0xFFFF;
+                               else {
+                                       $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n];
+                                       $offset = $idRangeOffset_start + 2 * $n + $offset;
+                                       if ($offset >= $limit)
+                                               $glyph = 0;
+                                       else {
+                                               $glyph = $this->get_ushort($offset);
+                                               if ($glyph != 0)
+                                                  $glyph = ($glyph + $idDelta[$n]) & 0xFFFF;
+                                       }
+                               }
+                               $charToGlyph[$unichar] = $glyph;
+                               if ($unichar < 196608) { $this->maxUniChar = max($unichar,$this->maxUniChar); }
+                               $glyphToChar[$glyph][] = $unichar;
+                       }
+               }
+
+               // mPDF 5.4.05
+               if ($this->unAGlyphs) {
+                 if (isset($this->tables['post'])) {
+                       $this->seek_table("post");
+                       $formata = $this->read_ushort();
+                       $formatb = $this->read_ushort();
+                       // Only works on Format 2.0
+                       if ($formata != 2 || $formatb != 0) { die("Cannot set unAGlyphs for this font (".$file."). POST table must be in Format 2."); }
+                       $this->skip(28);
+                       $nGlyfs = $this->read_ushort();
+                       $glyphNameIndex = array();
+                       for ($i=0; $i<$nGlyfs; $i++) {
+                               $glyphNameIndex[($this->read_ushort())] = $i;
+                       }
+
+                       $opost = $this->get_table('post');
+                       $ptr = 34+($nGlyfs*2);
+                       for ($i=0; $i<$nGlyfs; $i++) {
+                               $len = ord(substr($opost,$ptr,1));
+                               $ptr++;
+                               $name = substr($opost,$ptr,$len);
+                               $gid = $glyphNameIndex[$i+258];
+                               // Select uni0600.xxx(x) - uni06FF.xxx(x)
+                               if (preg_match('/^uni(06[0-9a-f]{2})\.(fina|medi|init|fin|med|ini)$/i',$name,$m)) {
+                                 if (!isset($glyphToChar[$gid]) || (isset($glyphToChar[$gid]) && is_array($glyphToChar[$gid]) && count($glyphToChar[$gid])==1 && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489)) {        // if set in PUA private use area E000-F8FF, or NOT Unicode mapped
+                                       $uni = hexdec($m[1]);
+                                       $form = strtoupper(substr($m[2],0,1));
+                                       // Assign new PUA Unicode between F500 - F7FF
+                                       $bit = $uni & 0xFF;
+                                       if ($form == 'I') { $bit += 0xF600; }
+                                       else if ($form == 'M') { $bit += 0xF700; }
+                                       else  { $bit += 0xF500; }
+                                       // ADD TO CMAP
+                                       $glyphToChar[$gid][] = $bit;
+                                       $charToGlyph[$bit] = $gid;
+                                 }
+                               }
+                               // LAM with ALEF ligatures (Mandatory ligatures)
+                               else if (preg_match('/^uni064406(22|23|25|27)(\.fina|\.fin){0,1}$/i',$name,$m)) {
+                                 if ($m[1]=='22') {
+                                       if ($m[2]) { $uni = hexdec('FEF6'); } else { $uni = hexdec('FEF5'); } 
+                                 }
+                                 else if ($m[1]=='23') {
+                                       if ($m[2]) { $uni = hexdec('FEF8'); } else { $uni = hexdec('FEF7'); } 
+                                 }
+                                 else if ($m[1]=='25') {
+                                       if ($m[2]) { $uni = hexdec('FEFA'); } else { $uni = hexdec('FEF9'); } 
+                                 }
+                                 else if ($m[1]=='27') {
+                                       if ($m[2]) { $uni = hexdec('FEFC'); } else { $uni = hexdec('FEFB'); } 
+                                 }
+                                 if (!isset($glyphToChar[$gid]) || (isset($glyphToChar[$gid]) && is_array($glyphToChar[$gid]) && count($glyphToChar[$gid])==1 && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489)) {        // if set in PUA private use area E000-F8FF, or NOT Unicode mapped
+                                       // ADD TO CMAP
+                                       $glyphToChar[$gid][] = $uni;
+                                       $charToGlyph[$uni] = $gid;
+                                 }
+                               }
+                               $ptr += $len;
+                       }
+                 }
+               }
+
+       }
+
+
+               // Put the TTF file together
+       function endTTFile(&$stm) {
+               $stm = '';
+               $numTables = count($this->otables);
+               $searchRange = 1;
+               $entrySelector = 0;
+               while ($searchRange * 2 <= $numTables) {
+                       $searchRange = $searchRange * 2;
+                       $entrySelector = $entrySelector + 1;
+               }
+               $searchRange = $searchRange * 16;
+               $rangeShift = $numTables * 16 - $searchRange;
+
+               // Header
+               if (_TTF_MAC_HEADER) {
+                       $stm .= (pack("Nnnnn", 0x74727565, $numTables, $searchRange, $entrySelector, $rangeShift));     // Mac
+               }
+               else {
+                       $stm .= (pack("Nnnnn", 0x00010000 , $numTables, $searchRange, $entrySelector, $rangeShift));    // Windows
+               }
+
+               // Table directory
+               $tables = $this->otables;
+               ksort ($tables); 
+               $offset = 12 + $numTables * 16;
+               foreach ($tables AS $tag=>$data) {
+                       if ($tag == 'head') { $head_start = $offset; }
+                       $stm .= $tag;
+                       $checksum = $this->calcChecksum($data);
+                       $stm .= pack("nn", $checksum[0],$checksum[1]);
+                       $stm .= pack("NN", $offset, strlen($data));
+                       $paddedLength = (strlen($data)+3)&~3;
+                       $offset = $offset + $paddedLength;
+               }
+
+               // Table data
+               foreach ($tables AS $tag=>$data) {
+                       $data .= "\0\0\0";
+                       $stm .= substr($data,0,(strlen($data)&~3));
+               }
+
+               $checksum = $this->calcChecksum($stm);
+               $checksum = $this->sub32(array(0xB1B0,0xAFBA), $checksum);
+               $chk = pack("nn", $checksum[0],$checksum[1]);
+               $stm = $this->splice($stm,($head_start + 8),$chk);
+               return $stm ;
+       }
+
+
+       function repackageTTF($file, $TTCfontID=0, $debug=false, $unAGlyphs=false) {    // mPDF 5.4.05
+               $this->unAGlyphs = $unAGlyphs;  // mPDF 5.4.05
+               $this->filename = $file;
+               $this->fh = fopen($file ,'rb') or die('Can\'t open file ' . $file);
+               $this->_pos = 0;
+               $this->charWidths = '';
+               $this->glyphPos = array();
+               $this->charToGlyph = array();
+               $this->tables = array();
+               $this->otables = array();
+               $this->ascent = 0;
+               $this->descent = 0;
+               $this->numTTCFonts = 0;
+               $this->TTCFonts = array();
+               $this->skip(4);
+               $this->maxUni = 0;
+               if ($TTCfontID > 0) {
+                       $this->version = $version = $this->read_ulong();        // TTC Header version now
+                       if (!in_array($version, array(0x00010000,0x00020000)))
+                               die("ERROR - Error parsing TrueType Collection: version=".$version." - " . $file);
+                       $this->numTTCFonts = $this->read_ulong();
+                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
+                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
+                       }
+                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
+                       $this->version = $version = $this->read_ulong();        // TTFont version again now
+               }
+               $this->readTableDirectory($debug);
+               $tags = array ('OS/2', 'cmap', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'name', 'post', 'cvt ', 'fpgm', 'gasp', 'prep');
+/*
+Tables which require glyphIndex
+hdmx
+kern
+LTSH
+
+Tables which do NOT require glyphIndex
+VDMX
+
+GDEF
+GPOS
+GSUB
+JSTF
+
+DSIG
+PCLT - not recommended
+*/
+
+               foreach($tags AS $tag) {
+                       if (isset($this->tables[$tag])) { $this->add($tag, $this->get_table($tag)); }
+               }
+               fclose($this->fh);
+               $stm = '';
+               $this->endTTFile($stm);
+               return $stm ;
+       }
+
+
+}
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php b/inc/3rdparty/libraries/mpdf/classes/ttfontsuni_analysis.php
new file mode 100644 (file)
index 0000000..3f2ccce
--- /dev/null
@@ -0,0 +1,463 @@
+<?php
+
+require_once(_MPDF_PATH.'classes/ttfontsuni.php');
+
+class TTFontFile_Analysis EXTENDS TTFontFile {
+
+       // Used to get font information from files in directory
+       function extractCoreInfo($file, $TTCfontID=0) {
+               $this->filename = $file;
+               $this->fh = fopen($file,'rb');
+               if (!$this->fh) { return ('ERROR - Can\'t open file ' . $file); }
+               $this->_pos = 0;
+               $this->charWidths = '';
+               $this->glyphPos = array();
+               $this->charToGlyph = array();
+               $this->tables = array();
+               $this->otables = array();
+               $this->ascent = 0;
+               $this->descent = 0;
+               $this->numTTCFonts = 0;
+               $this->TTCFonts = array();
+               $this->version = $version = $this->read_ulong();
+               $this->panose = array();        // mPDF 5.0
+               if ($version==0x4F54544F) 
+                       return("ERROR - NOT ADDED as Postscript outlines are not supported - " . $file);
+               if ($version==0x74746366) {
+                       if ($TTCfontID > 0) {
+                               $this->version = $version = $this->read_ulong();        // TTC Header version now
+                               if (!in_array($version, array(0x00010000,0x00020000)))
+                                       return("ERROR - NOT ADDED as Error parsing TrueType Collection: version=".$version." - " . $file);
+                       }
+                       else return("ERROR - Error parsing TrueType Collection - " . $file);
+                       $this->numTTCFonts = $this->read_ulong();
+                       for ($i=1; $i<=$this->numTTCFonts; $i++) {
+                     $this->TTCFonts[$i]['offset'] = $this->read_ulong();
+                       }
+                       $this->seek($this->TTCFonts[$TTCfontID]['offset']);
+                       $this->version = $version = $this->read_ulong();        // TTFont version again now
+                       $this->readTableDirectory(false);
+               }
+               else {
+                       if (!in_array($version, array(0x00010000,0x74727565)))
+                               return("ERROR - NOT ADDED as Not a TrueType font: version=".$version." - " . $file);
+                       $this->readTableDirectory(false);
+               }
+
+/* Included for testing...
+               $cmap_offset = $this->seek_table("cmap");
+               $this->skip(2);
+               $cmapTableCount = $this->read_ushort();
+               $unicode_cmap_offset = 0;
+               for ($i=0;$i<$cmapTableCount;$i++) {
+                       $x[$i]['platformId'] = $this->read_ushort();
+                       $x[$i]['encodingId'] = $this->read_ushort();
+                       $x[$i]['offset'] = $this->read_ulong();
+                       $save_pos = $this->_pos;
+                       $x[$i]['format'] = $this->get_ushort($cmap_offset + $x[$i]['offset'] );
+                       $this->seek($save_pos );
+               }
+               print_r($x); exit;
+*/
+               ///////////////////////////////////
+               // name - Naming table
+               ///////////////////////////////////
+
+/* Test purposes - displays table of names 
+                       $name_offset = $this->seek_table("name");
+                       $format = $this->read_ushort();
+                       if ($format != 0 && $format != 1)       // mPDF 5.3.73
+                               die("Unknown name table format ".$format);
+                       $numRecords = $this->read_ushort();
+                       $string_data_offset = $name_offset + $this->read_ushort();
+                       for ($i=0;$i<$numRecords; $i++) {
+                               $x[$i]['platformId'] = $this->read_ushort();
+                               $x[$i]['encodingId'] = $this->read_ushort();
+                               $x[$i]['languageId'] = $this->read_ushort();
+                               $x[$i]['nameId'] = $this->read_ushort();
+                               $x[$i]['length'] = $this->read_ushort();
+                               $x[$i]['offset'] = $this->read_ushort();
+
+                               $N = '';
+                               if ($x[$i]['platformId'] == 1 && $x[$i]['encodingId'] == 0 && $x[$i]['languageId'] == 0) { // Roman
+                                       $opos = $this->_pos;
+                                       $N = $this->get_chunk($string_data_offset + $x[$i]['offset'] , $x[$i]['length'] );
+                                       $this->_pos = $opos;
+                                       $this->seek($opos);
+                               }
+                               else {  // Unicode
+                                       $opos = $this->_pos;
+                                       $this->seek($string_data_offset + $x[$i]['offset'] );
+                                       $length = $x[$i]['length'] ;
+                                       if ($length % 2 != 0)
+                                               $length -= 1;
+                               //              die("PostScript name is UTF-16BE string of odd length");
+                                       $length /= 2;
+                                       $N = '';
+                                       while ($length > 0) {
+                                               $char = $this->read_ushort();
+                                               $N .= (chr($char));
+                                               $length -= 1;
+                                       }
+                                       $this->_pos = $opos;
+                                       $this->seek($opos);
+                               }
+                               $x[$i]['names'][$nameId] = $N;
+                       }
+                       print_r($x); exit;
+*/
+
+                       $name_offset = $this->seek_table("name");
+                       $format = $this->read_ushort();
+                       if ($format != 0 && $format != 1)       // mPDF 5.3.73
+                               return("ERROR - NOT ADDED as Unknown name table format ".$format." - " . $file);
+                       $numRecords = $this->read_ushort();
+                       $string_data_offset = $name_offset + $this->read_ushort();
+                       $names = array(1=>'',2=>'',3=>'',4=>'',6=>'');
+                       $K = array_keys($names);
+                       $nameCount = count($names);
+                       for ($i=0;$i<$numRecords; $i++) {
+                               $platformId = $this->read_ushort();
+                               $encodingId = $this->read_ushort();
+                               $languageId = $this->read_ushort();
+                               $nameId = $this->read_ushort();
+                               $length = $this->read_ushort();
+                               $offset = $this->read_ushort();
+                               if (!in_array($nameId,$K)) continue;
+                               $N = '';
+                               if ($platformId == 3 && $encodingId == 1 && $languageId == 0x409) { // Microsoft, Unicode, US English, PS Name
+                                       $opos = $this->_pos;
+                                       $this->seek($string_data_offset + $offset);
+                                       if ($length % 2 != 0)
+                                               $length += 1;
+                                       $length /= 2;
+                                       $N = '';
+                                       while ($length > 0) {
+                                               $char = $this->read_ushort();
+                                               $N .= (chr($char));
+                                               $length -= 1;
+                                       }
+                                       $this->_pos = $opos;
+                                       $this->seek($opos);
+                               }
+                               else if ($platformId == 1 && $encodingId == 0 && $languageId == 0) { // Macintosh, Roman, English, PS Name
+                                       $opos = $this->_pos;
+                                       $N = $this->get_chunk($string_data_offset + $offset, $length);
+                                       $this->_pos = $opos;
+                                       $this->seek($opos);
+                               }
+                               if ($N && $names[$nameId]=='') {
+                                       $names[$nameId] = $N;
+                                       $nameCount -= 1;
+                                       if ($nameCount==0) break;
+                               }
+                       }
+                       if ($names[6])
+                               $psName = preg_replace('/ /','-',$names[6]);
+                       else if ($names[4])
+                               $psName = preg_replace('/ /','-',$names[4]);
+                       else if ($names[1])
+                               $psName = preg_replace('/ /','-',$names[1]);
+                       else
+                               $psName = '';
+                       if (!$names[1] && !$psName)
+                               return("ERROR - NOT ADDED as Could not find valid font name - " . $file);
+                       $this->name = $psName;
+                       if ($names[1]) { $this->familyName = $names[1]; } else { $this->familyName = $psName; }
+                       if ($names[2]) { $this->styleName = $names[2]; } else { $this->styleName = 'Regular'; }
+
+               ///////////////////////////////////
+               // head - Font header table
+               ///////////////////////////////////
+               $this->seek_table("head");
+               $ver_maj = $this->read_ushort();
+               $ver_min = $this->read_ushort();
+               if ($ver_maj != 1)
+                       return('ERROR - NOT ADDED as Unknown head table version '. $ver_maj .'.'. $ver_min." - " . $file);
+               $this->fontRevision = $this->read_ushort() . $this->read_ushort();
+               $this->skip(4);
+               $magic = $this->read_ulong();
+               if ($magic != 0x5F0F3CF5) 
+                       return('ERROR - NOT ADDED as Invalid head table magic ' .$magic." - " . $file);
+               $this->skip(2);
+               $this->unitsPerEm = $unitsPerEm = $this->read_ushort();
+               $scale = 1000 / $unitsPerEm;
+               $this->skip(24);
+               $macStyle = $this->read_short();
+               $this->skip(4);
+               $indexLocFormat = $this->read_short();
+
+               ///////////////////////////////////
+               // OS/2 - OS/2 and Windows metrics table
+               ///////////////////////////////////
+               $sFamily = '';
+               $panose = '';
+               $fsSelection = '';
+               if (isset($this->tables["OS/2"])) {
+                       $this->seek_table("OS/2");
+                       $this->skip(30);
+                       $sF = $this->read_short();
+                       $sFamily = ($sF >> 8);
+                       $this->_pos += 10;  //PANOSE = 10 byte length
+                       $panose = fread($this->fh,10);
+                       $this->panose = array();
+                       for ($p=0;$p<strlen($panose);$p++) { $this->panose[] = ord($panose[$p]); }
+                       $this->skip(20); 
+                       $fsSelection = $this->read_short();
+               }
+
+               ///////////////////////////////////
+               // post - PostScript table
+               ///////////////////////////////////
+               $this->seek_table("post");
+               $this->skip(4); 
+               $this->italicAngle = $this->read_short() + $this->read_ushort() / 65536.0;
+               $this->skip(4);
+               $isFixedPitch = $this->read_ulong();
+
+
+
+               ///////////////////////////////////
+               // cmap - Character to glyph index mapping table
+               ///////////////////////////////////
+               $cmap_offset = $this->seek_table("cmap");
+               $this->skip(2);
+               $cmapTableCount = $this->read_ushort();
+               $unicode_cmap_offset = 0;
+               for ($i=0;$i<$cmapTableCount;$i++) {
+                       $platformID = $this->read_ushort();
+                       $encodingID = $this->read_ushort();
+                       $offset = $this->read_ulong();
+                       $save_pos = $this->_pos;
+                       if (($platformID == 3 && $encodingID == 1) || $platformID == 0) { // Microsoft, Unicode
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 4) {
+                                       if (!$unicode_cmap_offset) $unicode_cmap_offset = $cmap_offset + $offset;
+                               }
+                       }
+                       else if ((($platformID == 3 && $encodingID == 10) || $platformID == 0)) { // Microsoft, Unicode Format 12 table HKCS
+                               $format = $this->get_ushort($cmap_offset + $offset);
+                               if ($format == 12) {
+                                       $unicode_cmap_offset = $cmap_offset + $offset;
+                                       break;
+                               }
+                       }
+                       $this->seek($save_pos );
+               }
+
+               if (!$unicode_cmap_offset)
+                       return('ERROR - Font ('.$this->filename .') NOT ADDED as it is not Unicode encoded, and cannot be used by mPDF');
+
+               $rtl = false;
+               $indic = false;
+               $cjk = false;
+               $sip = false;
+               $smp = false;
+               $pua = false;
+               $puaag = false;
+               $glyphToChar = array();
+               $unAGlyphs = '';
+               // Format 12 CMAP does characters above Unicode BMP i.e. some HKCS characters U+20000 and above
+               if ($format == 12) {
+                       $this->seek($unicode_cmap_offset + 4);
+                       $length = $this->read_ulong();
+                       $limit = $unicode_cmap_offset + $length;
+                       $this->skip(4);
+                       $nGroups = $this->read_ulong();
+                       for($i=0; $i<$nGroups ; $i++) { 
+                               $startCharCode = $this->read_ulong(); 
+                               $endCharCode = $this->read_ulong(); 
+                               $startGlyphCode = $this->read_ulong(); 
+                               if (($endCharCode > 0x20000 && $endCharCode < 0x2A6DF) || ($endCharCode > 0x2F800 && $endCharCode < 0x2FA1F)) {
+                                       $sip = true; 
+                               }
+                               if ($endCharCode > 0x10000 && $endCharCode < 0x1FFFF) {
+                                       $smp = true; 
+                               }
+                               if (($endCharCode > 0x0590 && $endCharCode < 0x077F) || ($endCharCode > 0xFE70 && $endCharCode < 0xFEFF) || ($endCharCode > 0xFB50 && $endCharCode < 0xFDFF)) {
+                                       $rtl = true; 
+                               }
+                               if ($endCharCode > 0x0900 && $endCharCode < 0x0DFF) {
+                                       $indic = true; 
+                               }
+                               if ($endCharCode > 0xE000 && $endCharCode < 0xF8FF) {
+                                       $pua = true; 
+                                       if ($endCharCode > 0xF500 && $endCharCode < 0xF7FF) {
+                                               $puaag = true; 
+                                       }
+                               }
+                               if (($endCharCode > 0x2E80 && $endCharCode < 0x4DC0) || ($endCharCode > 0x4E00 && $endCharCode < 0xA4CF) || ($endCharCode > 0xAC00 && $endCharCode < 0xD7AF) || ($endCharCode > 0xF900 && $endCharCode < 0xFAFF) || ($endCharCode > 0xFE30 && $endCharCode < 0xFE4F)) {
+                                       $cjk = true; 
+                               }
+
+                               $offset = 0;
+                               // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs
+                               if (isset($this->tables['post'])) {
+                                 for ($unichar=$startCharCode;$unichar<=$endCharCode;$unichar++) {
+                                       $glyph = $startGlyphCode + $offset ;
+                                       $offset++;
+                                       $glyphToChar[$glyph][] = $unichar;
+                                 }
+                               }
+
+
+                       }
+               }
+
+               else {  // Format 4 CMap
+                       $this->seek($unicode_cmap_offset + 2);
+                       $length = $this->read_ushort();
+                       $limit = $unicode_cmap_offset + $length;
+                       $this->skip(2);
+
+                       $segCount = $this->read_ushort() / 2;
+                       $this->skip(6);
+                       $endCount = array();
+                       for($i=0; $i<$segCount; $i++) { $endCount[] = $this->read_ushort(); }
+                       $this->skip(2);
+                       $startCount = array();
+                       for($i=0; $i<$segCount; $i++) { $startCount[] = $this->read_ushort(); }
+                       $idDelta = array();
+                       for($i=0; $i<$segCount; $i++) { $idDelta[] = $this->read_short(); }
+                       $idRangeOffset_start = $this->_pos;
+                       $idRangeOffset = array();
+                       for($i=0; $i<$segCount; $i++) { $idRangeOffset[] = $this->read_ushort(); }
+
+                       for ($n=0;$n<$segCount;$n++) {
+                               if (($endCount[$n] > 0x0590 && $endCount[$n] < 0x077F) || ($endCount[$n] > 0xFE70 && $endCount[$n] < 0xFEFF) || ($endCount[$n] > 0xFB50 && $endCount[$n] < 0xFDFF)) {
+                                       $rtl = true; 
+                               }
+                               if ($endCount[$n] > 0x0900 && $endCount[$n] < 0x0DFF) {
+                                       $indic = true; 
+                               }
+                               if (($endCount[$n] > 0x2E80 && $endCount[$n] < 0x4DC0) || ($endCount[$n] > 0x4E00 && $endCount[$n] < 0xA4CF) || ($endCount[$n] > 0xAC00 && $endCount[$n] < 0xD7AF) || ($endCount[$n] > 0xF900 && $endCount[$n] < 0xFAFF) || ($endCount[$n] > 0xFE30 && $endCount[$n] < 0xFE4F)) {
+                                       $cjk = true; 
+                               }
+                               if ($endCount[$n] > 0xE000 && $endCount[$n] < 0xF8FF) {
+                                       $pua = true; 
+                                       if ($endCount[$n] > 0xF500 && $endCount[$n] < 0xF7FF) {
+                                               $puaag = true; 
+                                       }
+                               }
+                               // Get each glyphToChar - only point if going to analyse un-mapped Arabic Glyphs
+                               if (isset($this->tables['post'])) {
+                                       $endpoint = ($endCount[$n] + 1);
+                                       for ($unichar=$startCount[$n];$unichar<$endpoint;$unichar++) {
+                                               if ($idRangeOffset[$n] == 0)
+                                                       $glyph = ($unichar + $idDelta[$n]) & 0xFFFF;
+                                               else {
+                                                       $offset = ($unichar - $startCount[$n]) * 2 + $idRangeOffset[$n];
+                                                       $offset = $idRangeOffset_start + 2 * $n + $offset;
+                                                       if ($offset >= $limit)
+                                                               $glyph = 0;
+                                                       else {
+                                                               $glyph = $this->get_ushort($offset);
+                                                               if ($glyph != 0)
+                                                                  $glyph = ($glyph + $idDelta[$n]) & 0xFFFF;
+                                                       }
+                                               }
+                                               $glyphToChar[$glyph][] = $unichar;
+                                       }
+                               }
+
+                       }
+               }
+               // 'POST' table for un-mapped arabic glyphs
+               if (isset($this->tables['post'])) {
+                         $this->seek_table("post");
+                         // Only works on Format 2.0
+                         $formata = $this->read_ushort();
+                         $formatb = $this->read_ushort();
+                         if ($formata == 2 && $formatb == 0) {
+                               $this->skip(28);
+                               $nGlyfs = $this->read_ushort();
+                               $glyphNameIndex = array();
+                               for ($i=0; $i<$nGlyfs; $i++) {
+                                       $glyphNameIndex[($this->read_ushort())] = $i;
+                               }
+       
+                               $opost = $this->get_table('post');
+                               $ptr = 34+($nGlyfs*2);
+                               for ($i=0; $i<$nGlyfs; $i++) {
+                                       $len = ord(substr($opost,$ptr,1));
+                                       $ptr++;
+                                       $name = substr($opost,$ptr,$len);
+                                       $gid = $glyphNameIndex[$i+258];
+                                       // Select uni0600.xxx(x) - uni06FF.xxx(x)
+                                       if (preg_match('/^uni(06[0-9a-f]{2})\.(fina|medi|init|fin|med|ini)$/i',$name,$m)) {
+                                         if (!isset($glyphToChar[$gid]) || (isset($glyphToChar[$gid]) && is_array($glyphToChar[$gid]) && count($glyphToChar[$gid])==1 && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489)) {        // if set in PUA private use area E000-F8FF, or NOT Unicode mapped
+                                               $uni = hexdec($m[1]);
+                                               $form = strtoupper(substr($m[2],0,1));
+                                               // Assign new PUA Unicode between F500 - F7FF
+                                               $bit = $uni & 0xFF;
+                                               if ($form == 'I') { $bit += 0xF600; }
+                                               else if ($form == 'M') { $bit += 0xF700; }
+                                               else  { $bit += 0xF500; }
+                                               $unAGlyphs .= $gid;
+                                               $name = 'uni'.strtoupper($m[1]).'.'.strtolower($m[2]);
+                                               $unAGlyphs .= ' : '.$name;
+                                               $unihexstr = $m[1];
+                                               $unAGlyphs .= ' : '.$unihexstr;
+                                               $unAGlyphs .= ' : '.$uni;
+                                               $unAGlyphs .= ' : '.$form;
+                                               // if already set in PUA private use area E000-F8FF
+                                               if (isset($glyphToChar[$gid]) && $glyphToChar[$gid][0]>57343 && $glyphToChar[$gid][0]<63489) {
+                                                               $unAGlyphs .= ' : '.$glyphToChar[$gid][0].' {'.dechex($glyphToChar[$gid][0]).'}';
+                                               }
+                                               //else $unAGlyphs .= ':';
+                                               $unAGlyphs .= ' : '.strtoupper(dechex($bit));
+                                               $unAGlyphs .= '<br />';
+                                         }
+                                       }
+                                       $ptr += $len;
+                               }
+                               if ($unAGlyphs) { 
+                                       $unAGlyphs = 'GID:Name:Unicode base Hex:Dec:Form:PUA Unicode<br />'.$unAGlyphs ; 
+                               }
+                         }
+               }
+
+
+
+               $bold = false; 
+               $italic = false; 
+               $ftype = '';
+               if ($macStyle & (1 << 0)) { $bold = true; }     // bit 0 bold
+               else if ($fsSelection & (1 << 5)) { $bold = true; }     // 5    BOLD    Characters are emboldened
+
+               if ($macStyle & (1 << 1)) { $italic = true; }   // bit 1 italic
+               else if ($fsSelection & (1 << 0)) { $italic = true; }   // 0    ITALIC  Font contains Italic characters, otherwise they are upright
+               else if ($this->italicAngle <> 0) { $italic = true; }
+
+               if ($isFixedPitch ) { $ftype = 'mono'; }
+               else if ($sFamily >0 && $sFamily <8) { $ftype = 'serif'; }
+               else if ($sFamily ==8) { $ftype = 'sans'; }
+               else if ($sFamily ==10) { $ftype = 'cursive'; }
+               // Use PANOSE
+               if ($panose) { 
+                       $bFamilyType=ord($panose[0]); 
+                       if ($bFamilyType==2) {
+                               $bSerifStyle=ord($panose[1]); 
+                               if (!$ftype) { 
+                                       if ($bSerifStyle>1 && $bSerifStyle<11) { $ftype = 'serif'; }
+                                       else if ($bSerifStyle>10) { $ftype = 'sans'; }
+                               }
+                               $bProportion=ord($panose[3]);
+                               if ($bProportion==9 || $bProportion==1) { $ftype = 'mono'; }    // ==1 i.e. No Fit needed for OCR-a and -b
+                       }
+                       else if ($bFamilyType==3) {
+                               $ftype = 'cursive'; 
+                       }
+               }
+
+               fclose($this->fh);
+               return array($this->familyName, $bold, $italic, $ftype, $TTCfontID, $rtl, $indic, $cjk, $sip, $smp, $puaag, $pua, $unAGlyphs);
+       }
+
+
+
+
+}
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/classes/wmf.php b/inc/3rdparty/libraries/mpdf/classes/wmf.php
new file mode 100644 (file)
index 0000000..2efef00
--- /dev/null
@@ -0,0 +1,236 @@
+<?php
+
+class wmf {
+
+var $mpdf = null;
+var $gdiObjectArray;
+
+function wmf(&$mpdf) {
+       $this->mpdf = $mpdf;
+}
+
+
+function _getWMFimage($data) {
+       $k = _MPDFK;
+
+               $this->gdiObjectArray = array();
+               $a=unpack('stest',"\1\0");
+               if ($a['test']!=1)
+               return array(0, 'Error parsing WMF image - Big-endian architecture not supported'); 
+               // check for Aldus placeable metafile header
+               $key = unpack('Lmagic', substr($data, 0, 4));
+               $p = 18;  // WMF header 
+               if ($key['magic'] == (int)0x9AC6CDD7) { $p +=22; } // Aldus header
+               // define some state variables
+               $wo=null; // window origin
+               $we=null; // window extent
+               $polyFillMode = 0;
+               $nullPen = false;
+               $nullBrush = false;
+               $endRecord = false;
+               $wmfdata = '';
+               while ($p < strlen($data) && !$endRecord) {
+                       $recordInfo = unpack('Lsize/Sfunc', substr($data, $p, 6));      $p += 6;
+                       // size of record given in WORDs (= 2 bytes)
+                       $size = $recordInfo['size'];
+                       // func is number of GDI function
+                       $func = $recordInfo['func'];
+                       if ($size > 3) {
+                               $parms = substr($data, $p, 2*($size-3));        $p += 2*($size-3);
+                       }
+                       switch ($func) {
+                               case 0x020b:  // SetWindowOrg
+                                       // do not allow window origin to be changed
+                                       // after drawing has begun
+                                       if (!$wmfdata)
+                                               $wo = array_reverse(unpack('s2', $parms));
+                                       break;
+                               case 0x020c:  // SetWindowExt
+                                       // do not allow window extent to be changed
+                                       // after drawing has begun
+                                       if (!$wmfdata)
+                                               $we = array_reverse(unpack('s2', $parms));
+                                       break;
+                               case 0x02fc:  // CreateBrushIndirect
+                                       $brush = unpack('sstyle/Cr/Cg/Cb/Ca/Shatch', $parms);
+                                       $brush['type'] = 'B';
+                                       $this->_AddGDIObject($brush);
+                                       break;
+                               case 0x02fa:  // CreatePenIndirect
+                                       $pen = unpack('Sstyle/swidth/sdummy/Cr/Cg/Cb/Ca', $parms);
+                                       // convert width from twips to user unit
+                                       $pen['width'] /= (20 * $k);
+                                       $pen['type'] = 'P';
+                                       $this->_AddGDIObject($pen);
+                                       break;
+
+                               // MUST create other GDI objects even if we don't handle them
+                               case 0x06fe: // CreateBitmap
+                               case 0x02fd: // CreateBitmapIndirect
+                               case 0x00f8: // CreateBrush
+                               case 0x02fb: // CreateFontIndirect
+                               case 0x00f7: // CreatePalette
+                               case 0x01f9: // CreatePatternBrush
+                               case 0x06ff: // CreateRegion
+                               case 0x0142: // DibCreatePatternBrush
+                                       $dummyObject = array('type'=>'D');
+                                       $this->_AddGDIObject($dummyObject);
+                                       break;
+                               case 0x0106:  // SetPolyFillMode
+                                       $polyFillMode = unpack('smode', $parms);
+                                       $polyFillMode = $polyFillMode['mode'];
+                                       break;
+                               case 0x01f0:  // DeleteObject
+                                       $idx = unpack('Sidx', $parms);
+                                       $idx = $idx['idx'];
+                                       $this->_DeleteGDIObject($idx);
+                                       break;
+                               case 0x012d:  // SelectObject
+                                       $idx = unpack('Sidx', $parms);
+                                       $idx = $idx['idx'];
+                                       $obj = $this->_GetGDIObject($idx);
+                                       switch ($obj['type']) {
+                                               case 'B':
+                                                       $nullBrush = false;
+                                                       if ($obj['style'] == 1) { $nullBrush = true; }
+                                                       else {
+                                                               $wmfdata .= $this->mpdf->SetFColor($this->mpdf->ConvertColor('rgb('.$obj['r'].','.$obj['g'].','.$obj['b'].')'), true)."\n";     
+                                                       }
+                                                       break;
+                                               case 'P':
+                                                       $nullPen = false;
+                                                       $dashArray = array(); 
+                                                       // dash parameters are custom
+                                                       switch ($obj['style']) {
+                                                               case 0: // PS_SOLID
+                                                                       break;
+                                                               case 1: // PS_DASH
+                                                                       $dashArray = array(3,1);
+                                                                       break;
+                                                               case 2: // PS_DOT
+                                                                       $dashArray = array(0.5,0.5);
+                                                                       break;
+                                                               case 3: // PS_DASHDOT
+                                                                       $dashArray = array(2,1,0.5,1);
+                                                                       break;
+                                                               case 4: // PS_DASHDOTDOT
+                                                                       $dashArray = array(2,1,0.5,1,0.5,1);
+                                                                       break;
+                                                               case 5: // PS_NULL
+                                                                       $nullPen = true;
+                                                                       break;
+                                                       }
+                                                       if (!$nullPen) {
+                                                               $wmfdata .= $this->mpdf->SetDColor($this->mpdf->ConvertColor('rgb('.$obj['r'].','.$obj['g'].','.$obj['b'].')'), true)."\n";
+                                                               $wmfdata .= sprintf("%.3F w\n",$obj['width']*$k);
+                                                       }
+                                                       if (!empty($dashArray)) {
+                                                               $s = '[';
+                                                               for ($i=0; $i<count($dashArray);$i++) {
+                                                                       $s .= $dashArray[$i] * $k;
+                                                                       if ($i != count($dashArray)-1) { $s .= ' '; }
+                                                               }
+                                                               $s .= '] 0 d';
+                                                               $wmfdata .= $s."\n";
+                                                       }
+                                                       break;
+                                       }
+                                       break;
+                               case 0x0325: // Polyline
+                               case 0x0324: // Polygon
+                                       $coords = unpack('s'.($size-3), $parms);
+                                       $numpoints = $coords[1];
+                                       for ($i = $numpoints; $i > 0; $i--) {
+                                               $px = $coords[2*$i];
+                                               $py = $coords[2*$i+1];
+
+                                               if ($i < $numpoints) { $wmfdata .= $this->_LineTo($px, $py); }
+                                          else { $wmfdata .= $this->_MoveTo($px, $py); }
+                                       }
+                                       if ($func == 0x0325) { $op = 's'; }
+                                       else if ($func == 0x0324) {
+                                               if ($nullPen) {
+                                                       if ($nullBrush) { $op = 'n'; } // no op
+                                                       else { $op = 'f'; } // fill
+                                               }
+                                               else {
+                                                       if ($nullBrush) { $op = 's'; } // stroke
+                                                       else { $op = 'b'; } // stroke and fill
+                                               }
+                                               if ($polyFillMode==1 && ($op=='b' || $op=='f')) { $op .= '*'; } // use even-odd fill rule
+                                       }
+                                       $wmfdata .= $op."\n";
+                                       break;
+                               case 0x0538: // PolyPolygon
+                                       $coords = unpack('s'.($size-3), $parms);
+                                       $numpolygons = $coords[1];
+                                       $adjustment = $numpolygons;
+                                       for ($j = 1; $j <= $numpolygons; $j++) {
+                                               $numpoints = $coords[$j + 1];
+                                               for ($i = $numpoints; $i > 0; $i--) {
+                                                       $px = $coords[2*$i   + $adjustment];
+                                                       $py = $coords[2*$i+1 + $adjustment];
+                                                       if ($i == $numpoints) { $wmfdata .= $this->_MoveTo($px, $py); }
+                                                       else { $wmfdata .= $this->_LineTo($px, $py); }
+                                               }
+                                               $adjustment += $numpoints * 2;
+                                       }
+
+                                       if ($nullPen) {
+                                               if ($nullBrush) { $op = 'n'; } // no op
+                                               else { $op = 'f'; } // fill
+                                       }
+                                       else {
+                                               if ($nullBrush) { $op = 's'; } // stroke
+                                               else { $op = 'b'; } // stroke and fill
+                                       }
+                                       if ($polyFillMode==1 && ($op=='b' || $op=='f')) { $op .= '*'; } // use even-odd fill rule
+                                       $wmfdata .= $op."\n";
+                                       break;
+                               case 0x0000:
+                                       $endRecord = true;
+                                       break;
+                       }
+               }
+
+
+       return array(1,$wmfdata,$wo,$we);
+}
+
+
+function _MoveTo($x, $y) {
+       return "$x $y m\n";
+}
+
+// a line must have been started using _MoveTo() first
+function _LineTo($x, $y) {
+       return "$x $y l\n";
+}
+
+function _AddGDIObject($obj) {
+       // find next available slot
+       $idx = 0;
+       if (!empty($this->gdiObjectArray)) {
+               $empty = false;
+               $i = 0;
+               while (!$empty) {
+                       $empty = !isset($this->gdiObjectArray[$i]);
+                       $i++;
+               }
+               $idx = $i-1;
+       }
+       $this->gdiObjectArray[$idx] = $obj;
+}
+
+function _GetGDIObject($idx) {
+       return $this->gdiObjectArray[$idx];
+}
+
+function _DeleteGDIObject($idx) {
+       unset($this->gdiObjectArray[$idx]);
+}
+
+
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/compress.php b/inc/3rdparty/libraries/mpdf/compress.php
new file mode 100644 (file)
index 0000000..85897cf
--- /dev/null
@@ -0,0 +1,172 @@
+<?php
+
+$excl = array( 'HTML-CSS', 'DIRECTW', 'TABLES', 'LISTS', 'IMAGES-CORE', 
+'IMAGES-BMP', 'IMAGES-WMF', 'TABLES-ADVANCED-BORDERS', 'HTMLHEADERS-FOOTERS', 'COLUMNS', 'TOC', 'INDEX', 'BOOKMARKS', 'BARCODES', 'FORMS', 'WATERMARK', 'CJK-FONTS', 'RTL', 'INDIC', 'ANNOTATIONS', 'BACKGROUNDS', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS', 'HYPHENATION', 'ENCRYPTION', 'IMPORTS', 'PROGRESS-BAR');
+
+
+       // *DIRECTW* = Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText
+       // IMAGES-CORE = [PNG, GIF, and JPG] NB background-images and watermark images
+
+       // Excluding 'HTML-CSS' will also exclude: 'TABLES', 'LISTS', 'TABLES-ADVANCED-BORDERS', 'HTMLHEADERS-FOOTERS', 'FORMS', 'BACKGROUNDS', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS'
+
+// Text is marked in mpdf_source.php with e.g. :
+/*-- TABLES-ADVANCED-BORDERS --*/
+/*-- END TABLES-ADVANCED-BORDERS --*/
+       // *TABLES-ADVANCED-BORDERS*
+
+
+if (!isset($_POST['generate']) || $_POST['generate']!='generate') {
+
+
+if (!file_exists('mpdf_source.php')) {
+       die("ERROR - Could not find mpdf_source.php file in current directory. Please rename mpdf.php as mpdf_source.php"); 
+}
+
+
+
+
+echo '<html>
+<head>
+<script language=javascript>
+checked=false;
+function checkedAll (frm1) {
+       var aa= document.getElementById("frm1");
+        if (checked == false)
+          {
+           checked = true
+          }
+        else
+          {
+          checked = false
+          }
+       for (var i =0; i < aa.elements.length; i++) 
+       {
+        aa.elements[i].checked = checked;
+       }
+      }
+</script>
+</head>
+<body>
+<p><span style="color:red; font-weight: bold;">WARNING</span>: This utility will OVERWRITE mpdf.php file in the current directory.</p>
+<p>Select the functions you wish to INCLUDE in your mpdf.php program. When you click generate, a new mpdf.php file will be written to the current directory.</p>
+<div><b>Notes</b>
+<ul>
+<li>HTML-CSS is required for many of the other functions to work including: Tables, Lists, Backgrounds, Forms, Border-radius and all other CSS</li>
+<li>DIRECTW includes the functions to Write directly to the PDF file e.g. Write, WriteText, WriteCell, Text, Shaded_box, AutosizeText</li>
+<li>You must include either HTML-CSS or DIRECTW</li>
+<li>JPG, PNG and JPG images are supported with IMAGES-CORE</li>
+<li>For WMF Images, you must include both IMAGES-CORE and IMAGES-WMF</li>
+<li>IMAGES-CORE are required for BACKGROUNDS (IMAGES) or WATERMARKS to work</li>
+</ul>
+</div>
+<input type="checkbox" name="checkall" onclick="checkedAll(frm1);"> <i>Select/Unselect All</i><br /><br />
+
+<form id="frm1" action="compress.php" method="POST">
+';
+foreach($excl AS $k=>$ex) {
+       echo '<input type="checkbox" value="1" name="inc['.$ex.']"';
+       if ($k==0 || ($k > 1 && $k < 5)) {
+               echo ' checked="checked"';
+       }
+       echo ' /> '.$ex.'<br />';
+}
+
+echo '<br />
+<input type="submit" name="generate" value="generate" />
+</form>
+</body>
+</html>';
+exit;
+}
+
+$inc = $_POST['inc'];
+if (is_array($inc) && count($inc)>0 ) { 
+       foreach($inc AS $i=>$v) {
+               $key = array_search($i, $excl);
+               unset($excl[$key]);
+       }
+}
+
+if (!defined('PHP_VERSION_ID')) {
+    $version = explode('.', PHP_VERSION);
+    define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
+}
+if (PHP_VERSION_ID < 50300) { $mqr = @get_magic_quotes_runtime(); }
+       else { $mqr=0; }
+if ($mqr) { set_magic_quotes_runtime(0); }
+
+$l = file('mpdf_source.php');
+if (!count($l)) { die("ERROR - Could not find mpdf_source.php file in current directory"); }
+$exclflags = array();
+$x = '';
+
+       // Excluding 'HTML-CSS' will also exclude: 'TABLES', 'LISTS', 'TABLES-ADVANCED-BORDERS', 'HTMLHEADERS-FOOTERS', 'FORMS', 'BACKGROUNDS', 'CSS-FLOAT', 'CSS-IMAGE-FLOAT', 'CSS-POSITION', 'CSS-PAGE', 'BORDER-RADIUS'
+if ($excl[0]=='HTML-CSS') {
+       $excl[] = 'TABLES';
+       $excl[] = 'LISTS';
+       $excl[] = 'TABLES-ADVANCED-BORDERS';
+       $excl[] = 'HTMLHEADERS-FOOTERS';
+       $excl[] = 'FORMS';
+       $excl[] = 'BACKGROUNDS';
+       $excl[] = 'CSS-FLOAT';
+       $excl[] = 'CSS-IMAGE-FLOAT';
+       $excl[] = 'CSS-POSITION';
+       $excl[] = 'CSS-PAGE';
+       $excl[] = 'BORDER-RADIUS';
+}
+$excl = array_unique($excl);
+
+foreach($l AS $k=>$ln) {
+       $exclude = false;
+       // *XXXXX*
+       preg_match_all("/\/\/ \*([A-Za-z\-]+)\*/", $ln, $m);
+       foreach($m[1] AS $mm) {
+               if (in_array($mm, $excl)) {
+                       $exclude = true;
+               }
+       }
+       /*-- XXXXX --*/
+       preg_match_all("/\/\*-- ([A-Za-z\-]+) --\*\//", $ln, $m);
+       foreach($m[1] AS $mm) {
+               if (in_array($mm, $excl)) {
+                       $exclflags[$mm] = true;
+               }
+               $exclude = true;
+       }
+       $exclflags = array_unique($exclflags);
+       /*-- END XXXX --*/
+       preg_match_all("/\/\*-- END ([A-Za-z\-]+) --\*\//", $ln, $m);
+       foreach($m[1] AS $mm) {
+               if (in_array($mm, $excl)) {
+                       unset($exclflags[$mm]);
+               }
+               $exclude = true;
+       }
+       if (count($exclflags)==0 && !$exclude) { 
+               $x .= $ln; 
+       }
+}
+// mPDF 5.0
+if (function_exists('file_put_contents')) {
+       $check = file_put_contents('mpdf.php', $x);
+}
+else {
+       $f=fopen('mpdf.php', 'w');
+       $check = fwrite($f, $x);
+       fclose($f);
+}
+if (!$check) { die("ERROR - Could not write to mpdf.php file. Are permissions correctly set?"); }
+echo '<p><b>mPDF file generated successfully!</b></p>';
+echo '<div>mPDF file size '.number_format((strlen($x)/1024)).' kB</div>';
+
+unset($l);
+unset($x);
+
+include('mpdf.php');
+$mpdf = new mPDF();
+
+echo '<div>Memory usage on loading mPDF class '.number_format((memory_get_usage(true)/(1024*1024)),2).' MB</div>';
+
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/config.php b/inc/3rdparty/libraries/mpdf/config.php
new file mode 100644 (file)
index 0000000..2a81a6a
--- /dev/null
@@ -0,0 +1,572 @@
+<?php
+
+// mPDF 5.7
+// Specify whether to automatically generate bookmarks or ToC entries from h1 - h6 tags
+$this->h2bookmarks = array();
+$this->h2toc = array();
+/* Define arrays with e.g. the tag=>ToC-level
+Remember bookmark and ToC levels start at 0
+(does not work inside tables)
+Only the default ToC will be used if > 1 ToCs are defined for the document
+H1 - H6 must be uppercase
+$this->h2toc = array('H1'=>0, 'H2'=>1, 'H3'=>2);
+$this->h2bookmarks = array('H1'=>0, 'H2'=>1, 'H3'=>2);
+*/
+
+// mPDF 5.7
+// Text-align on decimal marks
+// Allowed characters for alignment on decimal marks. Additional codes must start with D
+// Non-ASCII characters should be in utf-8 encoding
+// DM - middot U+00B7
+// DA - arabic decimal mark U+066B
+$this->decimal_align = array('DP'=>'.', 'DC'=>',', 'DM'=>"\xc2\xb7", 'DA'=>"\xd9\xab", 'DD'=>'-');
+
+// PAGING
+$this->mirrorMargins = 0;
+$this->restoreBlockPagebreaks = false;
+$this->forcePortraitMargins = false;
+$this->displayDefaultOrientation = false;
+$this->printers_info = false;  // Adds date and page info for printer when using @page and "marks:crop;"
+$this->bleedMargin = 5;
+$this->crossMarkMargin = 5;            // Distance of cross mark from margin in mm
+$this->cropMarkMargin = 8;             // Distance of crop mark from margin in mm
+$this->cropMarkLength = 18;            // Default length in mm of crop line
+$this->nonPrintMargin = 8;             // Non-printable border at edge of paper sheet in mm
+//     mPDF 5.5
+// Avoid just the border/background-color of the end of a block being moved on to next page
+$this->margBuffer = 2;                 // Allows an (empty) end of block to extend beyond the bottom margin by this amount (mm)
+
+
+// PAGE NUMBERING
+$this->pagenumPrefix;
+$this->pagenumSuffix;
+$this->nbpgPrefix;
+$this->nbpgSuffix;
+
+
+// FONTS, LANGUAGES & CHARACTER SETS
+// Set maximum size of TTF font file to allow non-subsets - in kB
+// Used to avoid e.g. Arial Unicode MS (perhaps used for substitutions) to ever be fully embedded
+// NB Free serif is 1.5MB, most files are <= 600kB (most 200-400KB)
+$this->maxTTFFilesize = 2000;
+
+// this value determines whether to subset or not
+// 0 - 100 = percent characters
+// i.e. if ==40, mPDF will embed whole font if >40% characters in that font
+// or embed subset if <40% characters
+// 0 will force whole file to be embedded (NO subsetting)
+// 100 will force always to subset
+// This value is overridden if you set new mPDF('s)
+// and/or Can set at runtime
+$this->percentSubset = 30;
+
+$this->useAdobeCJK = false;            // Uses Adobe CJK fonts for CJK languages
+                       // default TRUE; only set false if you have defined some available fonts that support CJK
+                       // If true this will not stop use of other CJK fonts if specified by font-family:
+                       // and vice versa i.e. only dictates behaviour when specified by lang="" incl. AutoFont()
+
+// When embedding full TTF font files, remakes the font file using only core tables
+// May improve function with some PostScript printers (GhostScript/GSView)
+// Does not work with TTC font collections
+// Slightly smaller file; increased processing time
+$this->repackageTTF = false; 
+
+// Allows automatic character set conversion if "charset=xxx" detected in html header (WriteHTML() )
+$this->allow_charset_conversion = true;
+$this->biDirectional=false;                    // automatically determine BIDI text in LTR page
+$this->autoFontGroupSize = 2;                  // 1: individual words are spanned; 2: words+; 3: as big chunks as possible.
+$this->useLang = true;                         // Default changed in mPDF 4.0
+
+$this->useSubstitutions = false;               // Substitute missing characters in UTF-8(multibyte) documents - from other fonts
+$this->falseBoldWeight = 5;                    // Weight for bold text when using an artificial (outline) bold; value 0 (off) - 10 (rec. max)
+
+// CONFIGURATION
+$this->allow_output_buffering = false;
+
+$this->enableImports = false;                  // Adding mPDFI functions
+
+$this->collapseBlockMargins = true;    // Allows top and bottom margins to collapse between block elements
+$this->progressBar = 0;                                // Shows progress-bars whilst generating file 0 off, 1 simple, 2 advanced
+$this->progbar_heading = 'mPDF file progress';
+$this->progbar_altHTML = '';                   // Should include <html> and <body> but NOT end tags
+                                                       // Can incude <head> and link to stylesheet etc.
+                                                       // e.g. '<html><body><p><img src="loading.gif" /> Creating PDF file. Please wait...</p>';
+
+$this->dpi = 96;                                       // To interpret "px" pixel values in HTML/CSS (see img_dpi below)
+
+// Automatically correct for tags where HTML specifies optional end tags e.g. P,LI,DD,TD
+// If you are confident input html is valid XHTML, turning this off may make it more reliable(?)
+$this->allow_html_optional_endtags = true;
+
+$this->ignore_invalid_utf8 = false;
+$this->text_input_as_HTML = false;             // Converts all entities in Text inputs to UTF-8 before encoding
+$this->useGraphs = false;
+
+
+// When writing a block element with position:fixed and overflow:auto, mPDF scales it down to fit in the space
+// by repeatedly rewriting it and making adjustments. These values give the adjustments used, depending how far out
+// the previous guess was. The lower the number, the quicker it will finish, but the less accurate the fit may be.
+// FPR1 is for coarse adjustments, and FPR4 for fine adjustments when it is getting closer.
+$this->incrementFPR1 = 10;     // i.e. will alter by 1/[10]th of width and try again until within closer limits
+$this->incrementFPR2 = 20;
+$this->incrementFPR3 = 30;
+$this->incrementFPR4 = 50;     // i.e. will alter by 1/[50]th of width and try again when it nearly fits
+
+
+// COLORSPACE
+// 1 - allow GRAYSCALE only [convert CMYK/RGB->gray]
+// 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB]
+// 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK]
+$this->restrictColorSpace = 0;
+
+// PDFX/1-a Compliant files
+$this->PDFX = false;                           // true=Forces compliance with PDFX-1a spec
+                                                       // Cannot be used with $this->restrictColorSpace (i.e. no RGB)
+$this->PDFXauto = false;                       // Overrides warnings making changes when possible to force PDFX1-a compliance
+
+
+// PDFA1-b Compliant files
+$this->PDFA = false;                           // true=Forces compliance with PDFA-1b spec
+                                                       // Can use with $this->restrictColorSpace=3 (for a CMYK file)
+                                                       // Any other settings, uses RGB profile
+$this->PDFAauto = false;                       // Overrides warnings making changes when possible to force PDFA1-b compliance
+$this->ICCProfile = '';                                // Colour profile OutputIntent
+                                                       // sRGB_IEC61966-2-1 (=default if blank and PDFA),  or other added .icc profile
+                                                       // Must be CMYK for PDFX, or appropriate type for PDFA(RGB or CMYK)
+
+
+
+// DEBUGGING & DEVELOPERS
+$this->showStats = false;
+$this->debug = false;
+$this->debugfonts = false;     // Checks and reports on errors when parsing TTF files - adds significantly to processing time
+$this->showImageErrors = false;
+$this->table_error_report = false;             // Die and report error if table is too wide to contain whole words
+$this->table_error_report_param = '';  // Parameter which can be passed to show in error report i.e. chapter number being processed//
+
+
+// ANNOTATIONS
+$this->title2annots = false;
+$this->annotSize = 0.5;                // default mm for Adobe annotations - nominal
+$this->annotMargin;            // default position for Annotations
+$this->annotOpacity = 0.5;     // default opacity for Annotations
+
+// BOOKMARKS
+$this->anchor2Bookmark = 0;    // makes <a name=""> into a bookmark as well as internal link target; 1 = just name; 2 = name (p.34)
+// Set an optional array to specify appearance of Bookmarks (by level)
+// Default values are Black and normal style
+/*
+ Example:
+$this->bookmarkStyles = array(
+       0 => array('color'=> array(0,64,128), 'style'=>'B'),
+       1 => array('color'=> array(128,0,0), 'style'=>''),
+       2 => array('color'=> array(0,128,0), 'style'=>'I'),
+);
+*/
+$this->bookmarkStyles = array();
+
+
+// CSS & STYLES
+$this->CSSselectMedia='print';         // screen, print, or any other CSS @media type (not "all")
+
+
+// PAGE HEADERS & FOOTERS
+$this->forcePortraitHeaders = false;
+// Values used if simple FOOTER/HEADER given i.e. not array
+$this->defaultheaderfontsize = 8;      // pt
+$this->defaultheaderfontstyle = 'BI';  // '', or 'B' or 'I' or 'BI'
+$this->defaultheaderline = 1;          // 1 or 0 - line under the header
+$this->defaultfooterfontsize = 8;      // pt
+$this->defaultfooterfontstyle = 'BI';  // '', or 'B' or 'I' or 'BI'
+$this->defaultfooterline = 1;          // 1 or 0 - line over the footer
+$this->header_line_spacing = 0.25;     // spacing between bottom of header and line (if present) - function of fontsize
+$this->footer_line_spacing = 0.25;     // spacing between bottom of header and line (if present) - function of fontsize
+// If 'pad' margin-top sets fixed distance in mm (padding) between bottom of header and top of text.
+// If 'stretch' margin-top sets a minimum distance in mm between top of page and top of text, which expands if header is too large to fit.
+$this->setAutoTopMargin = false;       
+$this->setAutoBottomMargin = false;    
+$this->autoMarginPadding = 2;          // distance in mm used as padding if 'stretch' mode is used
+
+
+
+// TABLES
+$this->simpleTables = false; // Forces all cells to have same border, background etc. Improves performance
+$this->packTableData = false; // Reduce memory usage processing tables (but with increased processing time)
+// Using disk to cache table data can reduce memory usage dramatically, but at a cost of increased 
+// executon time and disk access (read and write)
+$this->cacheTables = false;
+
+$this->ignore_table_percents = false;
+$this->ignore_table_widths = false;
+$this->keep_table_proportions = false; // If table width set > page width, force resizing but keep relative sizes
+                                                       // Also forces respect of cell widths set by %
+$this->shrink_tables_to_fit = 1.4;     // automatically reduce fontsize in table if words would have to split ( not in CJK)
+                                               // 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
+
+$this->tableMinSizePriority = false;   // If page-break-inside:avoid but cannot fit on full page without 
+                                                       // exceeding autosize; setting this value to true will force respsect for
+                                                       // autosize, and disable the page-break-inside:avoid
+
+$this->use_kwt = false;                                // "Keep-with-table"
+$this->iterationCounter = false;               // Set to TRUE to use table Head iteration counter
+$this->splitTableBorderWidth = 0;              // Use table border (using this width in mm) when table breaks across pages
+                                                       // Recommended to use small value e.g. 0.01
+
+
+// IMAGES
+$this->img_dpi = 96;   // Default dpi to output images if size not defined
+                               // See also above "dpi"
+
+// TEXT SPACING & JUSTIFICATION
+$this->useKerning = false;     // true to use kerning
+$this->justifyB4br = false;    // In justified text, <BR> does not cause the preceding text to be justified in browsers
+                                       // Change to true to force justification (as in MS Word)
+
+$this->tabSpaces = 8;  // Number of spaces to replace for a TAB in <pre> sections
+                               // Notepad uses 6, HTML specification recommends 8
+$this->jSWord = 0.4;   // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
+$this->jSmaxChar = 2;  // Maximum spacing to allocate to character spacing. (0 = no maximum)
+
+$this->jSmaxCharLast = 1;      // Maximum character spacing allowed (carried over) when finishing a last line
+$this->jSmaxWordLast = 2;      // Maximum word spacing allowed (carried over) when finishing a last line
+$this->normalLineheight = 1.33;        // Value used for line-height when CSS specified as 'normal' (default)
+
+// Small Caps
+$this->smCapsScale = 0.75;     // Factor of 1 to scale capital letters
+$this->smCapsStretch = 110;    // % to stretch small caps horizontally (i.e. 100 = no stretch)
+
+// CJK Line-breaking
+$this->allowCJKorphans = true; // FALSE=always wrap to next line; TRUE=squeeze or overflow
+$this->allowCJKoverflow = false;       // FALSE=squeeze; TRUE=overflow (only some characters, and disabled in tables)
+$this->CJKforceend = false;            // Forces overflowng punctuation to hang outside right margin mPDF 5.6.40
+
+// HYPHENATION
+$this->SHYlang = "en"; // Should be one of: 'en','de','es','fi','fr','it','nl','pl','ru','sv'
+$this->SHYleftmin = 2;
+$this->SHYrightmin = 2;
+$this->SHYcharmin = 2;
+$this->SHYcharmax = 10;
+
+// COLUMNS
+$this->keepColumns = false;    // Set to go to the second column only when the first is full of text etc.
+$this->max_colH_correction = 1.15;     // Maximum ratio to adjust column height when justifying - too large a value can give ugly results
+$this->ColGap=5;
+
+
+// LISTS
+$this->list_align_style = 'R'; // Determines alignment of numbers in numbered lists
+$this->list_indent_first_level = 0;    // 1/0 yex/no to indent first level of list
+$this->list_number_suffix = '.';       // Content to follow a numbered list marker e.g. '.' gives 1. or IV.; ')' gives 1) or a)
+
+// ACTIVE FORMS
+$this->useActiveForms = false;
+
+// WATERMARKS
+$this->watermarkImgBehind = false;
+$this->showWatermarkText = 0;
+$this->showWatermarkImage = 0;
+$this->watermarkText = '';
+$this->watermarkImage = '';
+$this->watermark_font = '';
+$this->watermarkTextAlpha = 0.2;
+$this->watermarkImageAlpha = 0.2;
+$this->watermarkImgAlphaBlend = 'Normal';
+       // Accepts any PDF spec. value: Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, 
+       // HardLight, SoftLight, Difference, Exclusion
+       // "Multiply" works well for watermark image on top
+
+// BORDERS
+$this->autoPadding = false; // Automatically increases padding in block elements when border-radius set - if required
+
+
+//////////////////////////////////////////////
+
+// Default values if no style sheet offered    (cf. http://www.w3.org/TR/CSS21/sample.html)
+$this->defaultCSS = array(
+       'BODY' => array(
+               'FONT-FAMILY' => 'serif',
+               'FONT-SIZE' => '11pt',
+               'TEXT-INDENT' => '0pt',
+               'LINE-HEIGHT' => 'normal',
+               'MARGIN-COLLAPSE' => 'collapse', /* Custom property to collapse top/bottom margins at top/bottom of page - ignored in tables/lists */
+               'HYPHENS' => 'manual',  /* mPDF 5.6.08 */
+       ),
+       'P' => array(
+               'MARGIN' => '1.12em 0',
+       ),
+       'H1' => array(
+               'FONT-SIZE' => '2em',
+               'FONT-WEIGHT' => 'bold',
+               'MARGIN' => '0.67em 0',
+               'PAGE-BREAK-AFTER' => 'avoid',
+       ),
+       'H2' => array(
+               'FONT-SIZE' => '1.5em',
+               'FONT-WEIGHT' => 'bold',
+               'MARGIN' => '0.75em 0',
+               'PAGE-BREAK-AFTER' => 'avoid',
+       ),
+       'H3' => array(
+               'FONT-SIZE' => '1.17em',
+               'FONT-WEIGHT' => 'bold',
+               'MARGIN' => '0.83em 0',
+               'PAGE-BREAK-AFTER' => 'avoid',
+       ),
+       'H4' => array(
+               'FONT-WEIGHT' => 'bold',
+               'MARGIN' => '1.12em 0',
+               'PAGE-BREAK-AFTER' => 'avoid',
+       ),
+       'H5' => array(
+               'FONT-SIZE' => '0.83em',
+               'FONT-WEIGHT' => 'bold',
+               'MARGIN' => '1.5em 0',
+               'PAGE-BREAK-AFTER' => 'avoid',
+       ),
+       'H6' => array(
+               'FONT-SIZE' => '0.75em',
+               'FONT-WEIGHT' => 'bold',
+               'MARGIN' => '1.67em 0',
+               'PAGE-BREAK-AFTER' => 'avoid',
+       ),
+       'HR' => array(
+               'COLOR' => '#888888',
+               'TEXT-ALIGN' => 'center',
+               'WIDTH' => '100%',
+               'HEIGHT' => '0.2mm',
+               'MARGIN-TOP' => '0.83em',
+               'MARGIN-BOTTOM' => '0.83em',
+       ),
+       'PRE' => array(
+               'MARGIN' => '0.83em 0',
+               'FONT-FAMILY' => 'monospace',
+       ),
+       'S' => array(
+               'TEXT-DECORATION' => 'line-through',
+       ),
+       'STRIKE' => array(
+               'TEXT-DECORATION' => 'line-through',
+       ),
+       'DEL' => array(
+               'TEXT-DECORATION' => 'line-through',
+       ),
+       'SUB' => array(
+               'VERTICAL-ALIGN' => 'sub',
+               'FONT-SIZE' => '55%',   /* Recommended 0.83em */
+       ),
+       'SUP' => array(
+               'VERTICAL-ALIGN' => 'super',
+               'FONT-SIZE' => '55%',   /* Recommended 0.83em */
+       ),
+       'U' => array(
+               'TEXT-DECORATION' => 'underline',
+       ),
+       'INS' => array(
+               'TEXT-DECORATION' => 'underline',
+       ),
+       'B' => array(
+               'FONT-WEIGHT' => 'bold',
+       ),
+       'STRONG' => array(
+               'FONT-WEIGHT' => 'bold',
+       ),
+       'I' => array(
+               'FONT-STYLE' => 'italic',
+       ),
+       'CITE' => array(
+               'FONT-STYLE' => 'italic',
+       ),
+       'Q' => array(
+               'FONT-STYLE' => 'italic',
+       ),
+       'EM' => array(
+               'FONT-STYLE' => 'italic',
+       ),
+       'VAR' => array(
+               'FONT-STYLE' => 'italic',
+       ),
+       'SAMP' => array(
+               'FONT-FAMILY' => 'monospace',
+       ),
+       'CODE' => array(
+               'FONT-FAMILY' => 'monospace',
+       ),
+       'KBD' => array(
+               'FONT-FAMILY' => 'monospace',
+       ),
+       'TT' => array(
+               'FONT-FAMILY' => 'monospace',
+       ),
+       'SMALL' => array(
+               'FONT-SIZE' => '83%',
+       ),
+       'BIG' => array(
+               'FONT-SIZE' => '117%',
+       ),
+       'ACRONYM' => array(
+               'FONT-SIZE' => '77%',
+               'FONT-WEIGHT' => 'bold',
+       ),
+       'ADDRESS' => array(
+               'FONT-STYLE' => 'italic',
+       ),
+       'BLOCKQUOTE' => array(
+               'MARGIN-LEFT' => '40px',
+               'MARGIN-RIGHT' => '40px',
+               'MARGIN-TOP' => '1.12em',
+               'MARGIN-BOTTOM' => '1.12em',
+       ),
+       'A' => array(
+               'COLOR' => '#0000FF',
+               'TEXT-DECORATION' => 'underline',
+       ),
+       'UL' => array(
+               'MARGIN' => '0.83em 0',         /* only applied to top-level of nested lists */
+               'TEXT-INDENT' => '1.3em',       /* Custom effect - list indent */
+       ),
+       'OL' => array(
+               'MARGIN' => '0.83em 0',         /* only applied to top-level of nested lists */
+               'TEXT-INDENT' => '1.3em',       /* Custom effect - list indent */
+       ),
+       'DL' => array(
+               'MARGIN' => '1.67em 0',
+       ),
+       'DT' => array(
+       ),
+       'DD' => array(
+               'PADDING-LEFT' => '40px',
+       ),
+       'TABLE' => array(
+               'MARGIN' => '0',
+               'BORDER-COLLAPSE' => 'separate',
+               'BORDER-SPACING' => '2px',
+               'EMPTY-CELLS' => 'show',
+               'LINE-HEIGHT' => '1.2',
+               'VERTICAL-ALIGN' => 'middle',
+       ),
+       'THEAD' => array(
+       ),
+       'TFOOT' => array(
+       ),
+       'TH' => array(
+               'FONT-WEIGHT' => 'bold',
+               'TEXT-ALIGN' => 'center',
+               'PADDING-LEFT' => '0.1em',
+               'PADDING-RIGHT' => '0.1em',
+               'PADDING-TOP' => '0.1em',
+               'PADDING-BOTTOM' => '0.1em',
+       ),
+       'TD' => array(
+               'PADDING-LEFT' => '0.1em',
+               'PADDING-RIGHT' => '0.1em',
+               'PADDING-TOP' => '0.1em',
+               'PADDING-BOTTOM' => '0.1em',
+       ),
+       'CAPTION' => array(
+               'TEXT-ALIGN' => 'center',
+       ),
+       'IMG' => array(
+               'MARGIN' => '0',
+               'VERTICAL-ALIGN' => 'baseline',
+       ),
+       'INPUT' => array(
+               'FONT-FAMILY' => 'sans-serif',
+               'VERTICAL-ALIGN' => 'middle',
+               'FONT-SIZE' => '0.9em',
+       ),
+       'SELECT' => array(
+               'FONT-FAMILY' => 'sans-serif',
+               'FONT-SIZE' => '0.9em',
+               'VERTICAL-ALIGN' => 'middle',
+       ),
+       'TEXTAREA' => array(
+               'FONT-FAMILY' => 'monospace',
+               'FONT-SIZE' => '0.9em',
+               'VERTICAL-ALIGN' => 'text-bottom',
+       ),
+       'MARK' => array(        /* mPDF 5.5.09 */
+               'BACKGROUND-COLOR' => 'yellow',
+       ),
+);
+
+
+//////////////////////////////////////////////////
+// VALUES ONLY LIKELY TO BE CHANGED BY DEVELOPERS
+//////////////////////////////////////////////////
+$this->pdf_version = '1.4';
+
+// Hyphenation
+$this->SHYlanguages = array('en','de','es','fi','fr','it','nl','pl','ru','sv');        // existing defined patterns
+
+$this->default_lineheight_correction=1.2;      // Value 1 sets lineheight=fontsize height; 
+                                                       // Value used if line-height not set by CSS (usuallly is)
+
+$this->fontsizes = array('XX-SMALL'=>0.7, 'X-SMALL'=>0.77, 'SMALL'=>0.86, 'MEDIUM'=>1, 'LARGE'=>1.2, 'X-LARGE'=>1.5, 'XX-LARGE'=>2);
+
+// CHARACTER PATTERN MATCHES TO DETECT LANGUAGES
+       // pattern used to detect RTL characters -> force RTL
+       $this->pregRTLchars = "\x{0590}-\x{06FF}\x{0700}-\x{083E}\x{FB00}-\x{FDFD}\x{FE70}-\x{FEFF}";   
+
+       // CJK Chars which require changing and are distinctive of specific charset
+       $this->pregUHCchars = "\x{1100}-\x{11FF}\x{3130}-\x{318F}\x{AC00}-\x{D7AF}";
+       $this->pregSJISchars = "\x{3040}-\x{309F}\x{30A0}-\x{30FF}\x{3190}-\x{319F}\x{31F0}-\x{31FF}";  
+
+       // Chars which distinguish CJK but not between different
+       $this->pregCJKchars = "\x{1100}-\x{11FF}\x{2E80}-\x{A4CF}\x{A800}-\x{D7AF}\x{F900}-\x{FAFF}\x{FE30}-\x{FE6F}\x{FF00}-\x{FFEF}\x{20000}-\x{2FA1F}";
+
+       // For CJK Line-breaking
+       //Leading characters - Not allowed at end of line
+       $this->CJKleading = "\$\(\*\[\{\x{00a3}\x{00a5}\x{00ab}\x{00b7}\x{2018}\x{201c}\x{2035}\x{3005}\x{3007}\x{3008}\x{300a}\x{300c}\x{300e}\x{3010}\x{3014}\x{3016}\x{3018}\x{301d}\x{fe34}\x{fe57}\x{fe59}\x{fe5b}\x{ff04}\x{ff08}\x{ff0e}\x{ff3b}\x{ff5b}\x{ff5f}\x{ffe1}\x{ffe5}\x{ffe6}";
+       // Following characters - Not allowed at start
+       $this->CJKfollowing = "!%\),\.:;>\?\]\}\x{00a2}\x{00a8}\x{00b0}\x{00b7}\x{00bb}\x{02c7}\x{02c9}\x{2010}\x{2013}-\x{2016}\x{2019}\x{201d}-\x{201f}\x{2020}-\x{2022}\x{2025}\x{2027}\x{203a}\x{203c}\x{2047}-\x{2049}\x{2103}\x{2236}\x{2574}\x{3001}-\x{3003}\x{3005}\x{3006}\x{3009}\x{300b}\x{300d}\x{300f}\x{3011}\x{3015}\x{3017}\x{3019}\x{301c}\x{301e}\x{301f}\x{303b}\x{3041}\x{3043}\x{3045}\x{3047}\x{3049}\x{3063}\x{3083}\x{3085}\x{3087}\x{308e}\x{3095}\x{3096}\x{30a0}\x{30a1}\x{30a3}\x{30a5}\x{30a7}\x{30a9}\x{30c3}\x{30e3}\x{30e5}\x{30e7}\x{30ee}\x{30f5}\x{30f6}\x{30fb}-\x{30fe}\x{31f0}-\x{31ff}\x{fe30}-\x{fe33}\x{fe50}-\x{fe56}\x{fe58}\x{fe5a}\x{fe5c}\x{ff01}\x{ff02}\x{ff05}\x{ff07}\x{ff09}\x{ff0c}\x{ff0e}\x{ff1a}\x{ff1b}\x{ff1f}\x{ff3d}\x{ff40}\x{ff5c}-\x{ff5e}\x{ff60}\x{ff64}";
+       // Characters which are allowed to overflow the right margin
+       $this->CJKoverflow = "\.,\x{ff61}\x{ff64}\x{3001}\x{3002}\x{ff0c}\x{ff0e}";
+
+
+
+       // ASCII Chars which shouldn't break string
+       // Use for very specific words
+       $this->pregASCIIchars1 = "\x{0021}-\x{002E}\x{0030}-\x{003B}?"; // no [SPACE]
+       // Use for words+
+       $this->pregASCIIchars2 = "\x{0020}-\x{002E}\x{0030}-\x{003B}?"; // [SPACE] punctuation and 0-9
+       // Use for chunks > words
+       $this->pregASCIIchars3 = "\x{0000}-\x{002E}\x{0030}-\x{003B}\x{003F}-\x{007E}"; // all except <>
+       // Vietnamese - specific
+       $this->pregVIETchars = "\x{01A0}\x{01A1}\x{01AF}\x{01B0}\x{1EA0}-\x{1EF1}";     
+       // Vietnamese -  Chars which shouldn't break string 
+       $this->pregVIETPluschars = "\x{0000}-\x{003B}\x{003F}-\x{00FF}\x{0300}-\x{036F}\x{0102}\x{0103}\x{0110}\x{0111}\x{0128}\x{0129}\x{0168}\x{0169}\x{1EF1}-\x{1EF9}";      // omits < >
+
+       // Arabic
+       $this->pregARABICchars = "\x{0600}-\x{06FF}\x{0750}-\x{077F}\x{FB50}-\x{FDFD}\x{FE70}-\x{FEFF}";
+       // Characters of Urdu, Pashto, Sindhi (but NOT arabic or persian/farsi) [not covered by DejavuSans font]
+       $this->pregNonARABICchars = "\x{0671}-\x{067D}\x{067F}-\x{0685}\x{0687}-\x{0697}\x{0699}-\x{06A8}\x{06AA}-\x{06AE}\x{06B0}-\x{06CB}\x{06CD}-\x{06D3}";
+
+       $this->pregHEBchars = "\x{0590}-\x{05FF}\x{FB00}-\x{FB49}";     // Hebrew
+
+       // INDIC
+       $this->pregHIchars = "\x{0900}-\x{0963}\x{0966}-\x{097F}";      // Devanagari (Hindi) minus the common indic punctuation 0964,0965
+       $this->pregBNchars = "\x{0980}-\x{09FF}";       // Bengali 
+       $this->pregPAchars = "\x{0A00}-\x{0A7F}";       // Gurmukhi (Punjabi)
+       $this->pregGUchars = "\x{0A80}-\x{0AFF}";       // Gujarati
+       $this->pregORchars = "\x{0B00}-\x{0B7F}";       // Oriya 
+       $this->pregTAchars = "\x{0B80}-\x{0BFF}";       // Tamil 
+       $this->pregTEchars = "\x{0C00}-\x{0C7F}";       // Telugu 
+       $this->pregKNchars = "\x{0C80}-\x{0CFF}";       // Kannada 
+       $this->pregMLchars = "\x{0D00}-\x{0D7F}";       // Malayalam 
+       $this->pregSHchars = "\x{0D80}-\x{0DFF}";       // Sinhala 
+
+       $this->pregINDextra = "\x{200B}-\x{200D}\x{0964}\x{0965}\x{0020}-\x{0022}\x{0024}-\x{002E}\x{003A}-\x{003F}\x{005B}-\x{0060}\x{007B}-\x{007E}\x{00A0}";
+       // 200B-D=Zero-width joiners; 0964,0965=Generic Indic punctuation; NBSP & general punctuation (excludes # and / so can use in autoFont() )
+
+$this->allowedCSStags = 'DIV|P|H1|H2|H3|H4|H5|H6|FORM|IMG|A|BODY|TABLE|HR|THEAD|TFOOT|TBODY|TH|TR|TD|UL|OL|LI|PRE|BLOCKQUOTE|ADDRESS|DL|DT|DD';
+$this->allowedCSStags .= '|ARTICLE|ASIDE|FIGURE|FIGCAPTION|FOOTER|HEADER|HGROUP|NAV|SECTION|MARK|DETAILS|SUMMARY|METER|PROGRESS|TIME'; // mPDF 5.5.09
+$this->allowedCSStags .= '|SPAN|TT|I|B|BIG|SMALL|EM|STRONG|DFN|CODE|SAMP|KBD|VAR|CITE|ABBR|ACRONYM|STRIKE|S|U|DEL|INS|Q|FONT';
+$this->allowedCSStags .= '|SELECT|INPUT|TEXTAREA|CAPTION|FIELDSET|LEGEND';     // mPDF 5.4.18
+$this->allowedCSStags .= '|TEXTCIRCLE|DOTTAB'; // mPDF 5.5.23  // mPDF 5.6.33
+
+$this->outerblocktags = array('DIV','FORM','CENTER','DL','FIELDSET','ARTICLE','ASIDE','FIGURE','FIGCAPTION', 'FOOTER','HEADER','HGROUP','NAV','SECTION','DETAILS','SUMMARY');  // mPDF 5.5.09 // mPDF 5.5.22
+$this->innerblocktags = array('P','BLOCKQUOTE','ADDRESS','PRE','H1','H2','H3','H4','H5','H6','DT','DD','CAPTION');
+
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/config_cp.php b/inc/3rdparty/libraries/mpdf/config_cp.php
new file mode 100644 (file)
index 0000000..e2e21f4
--- /dev/null
@@ -0,0 +1,153 @@
+<?php
+
+
+function GetLangOpts($llcc, $adobeCJK) {
+       if (strlen($llcc) == 5) {
+               $lang = substr(strtolower($llcc),0,2);
+               $country = substr(strtoupper($llcc),3,2);
+       }
+       else { $lang = strtolower($llcc); $country = ''; }
+       $unifonts = "";
+       $coreSuitable = false;
+
+       switch($lang){
+         CASE "en":
+         CASE "ca":
+         CASE "cy":
+         CASE "da":
+         CASE "de":
+         CASE "es":
+         CASE "eu":
+         CASE "fr":
+         CASE "ga":
+         CASE "fi": 
+         CASE "is":
+         CASE "it":
+         CASE "nl":
+         CASE "no":
+         CASE "pt":
+         CASE "sv":
+               // Edit this value to define how mPDF behaves when using new mPDF('-x')
+               // If set to TRUE, mPDF will use Adobe core fonts only when it recognises the languages above
+               $coreSuitable = true;  break;
+
+
+
+         // RTL Languages
+         CASE "he":
+         CASE "yi":
+               $unifonts = "dejavusans,dejavusansB,dejavusansI,dejavusansBI";  break;
+
+         // Arabic
+         CASE "ar":  
+               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI";  break;
+         CASE "fa":  
+               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI";  break;
+         CASE "ps": 
+               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
+         CASE "ur":  
+               $unifonts = "xbriyaz,xbriyazB,xbriyazI,xbriyazBI,xbzar,xbzarB,xbzarI,xbzarBI"; break;
+
+         // Sindhi (can be Arabic or Devanagari)
+         CASE "sd":
+               if ($country == "IN") { $unifonts = "ind_hi_1_001"; }
+       //      else if ($country == "PK") { $unifonts = ""; }
+       //      else { $unifonts = ""; }
+               break;
+
+
+         // INDIC 
+         // Assamese
+         CASE "as":  $unifonts = "ind_bn_1_001"; break;
+         // Bengali
+         CASE "bn":  $unifonts = "ind_bn_1_001"; break;
+         // Gujarati
+         CASE "gu":  $unifonts = "ind_gu_1_001"; break;
+         // Hindi (Devanagari)
+         CASE "hi":  $unifonts = "ind_hi_1_001"; break;
+         // Kannada
+         CASE "kn":  $unifonts = "ind_kn_1_001"; break;
+         // Kashmiri
+         CASE "ks":  $unifonts = "ind_hi_1_001"; break;
+         // Malayalam
+         CASE "ml":  $unifonts = "ind_ml_1_001"; break;
+         // Nepali (Devanagari)
+         CASE "ne":  $unifonts = "ind_hi_1_001"; break;
+         // Oriya
+         CASE "or":  $unifonts = "ind_or_1_001"; break;
+         // Punjabi (Gurmukhi)
+         CASE "pa":  $unifonts = "ind_pa_1_001"; break;
+         // Tamil
+         CASE "ta":  $unifonts = "ind_ta_1_001"; break;
+         // Telegu
+         CASE "te":  $unifonts = "ind_te_1_001"; break;
+
+         // THAI
+         CASE "th":  $unifonts = "garuda,garudaB,garudaI,garudaBI,norasi,norasiB,norasiI,norasiBI";  break;
+
+         // VIETNAMESE
+         CASE "vi":  
+               $unifonts = "dejavusanscondensed,dejavusanscondensedB,dejavusanscondensedI,dejavusanscondensedBI,dejavusans,dejavusansB,dejavusansI,dejavusansBI"; break;
+
+         // CJK Langauges
+         CASE "ja":  
+               if ($adobeCJK) {
+                       $unifonts = "sjis,sjisB,sjisI,sjisBI";
+               }
+/* Uncomment these lines if CJK fonts available */
+//             else {
+//                     $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
+//             }
+               break;
+
+         CASE "ko":  
+               if ($adobeCJK) {
+                       $unifonts = "uhc,uhcB,uhcI,uhcBI";
+               }
+/* Uncomment these lines if CJK fonts available */
+//             else {
+//                     $unifonts = "unbatang_0613"; 
+//             }
+               break;
+
+         CASE "zh":
+               if ($country == "HK" || $country == "TW") { 
+                       if ($adobeCJK) {
+                               $unifonts = "big5,big5B,big5I,big5BI"; 
+                       }
+/* Uncomment these lines if CJK fonts available */
+//                     else {
+//                             $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
+//                     }
+               }
+               else if ($country == "CN") { 
+                       if ($adobeCJK) {
+                               $unifonts = "gb,gbB,gbI,gbBI";  
+                       }
+/* Uncomment these lines if CJK fonts available */
+//                     else {
+//                             $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
+//                     }
+               }
+               else { 
+                       if ($adobeCJK) {
+                               $unifonts = "gb,gbB,gbI,gbBI"; 
+                       }
+/* Uncomment these lines if CJK fonts available */
+//                     else {
+//                             $unifonts = "sun-exta,sun-extb,hannoma,hannomb";
+//                     }
+               }
+               break;
+
+       }
+
+
+       $unifonts_arr = array();
+       if ($unifonts) {
+               $unifonts_arr = preg_split('/\s*,\s*/',$unifonts);
+       }
+       return array($coreSuitable ,$unifonts_arr);
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/config_fonts.php b/inc/3rdparty/libraries/mpdf/config_fonts.php
new file mode 100644 (file)
index 0000000..7cb990a
--- /dev/null
@@ -0,0 +1,304 @@
+<?php
+
+
+// Optionally define a folder which contains TTF fonts
+// mPDF will look here before looking in the usual _MPDF_TTFONTPATH
+// Useful if you already have a folder for your fonts
+// e.g. on Windows: define("_MPDF_SYSTEM_TTFONTS", 'C:/Windows/Fonts/');
+// Leave undefined if not required
+
+// define("_MPDF_SYSTEM_TTFONTS", '');
+
+
+// Optionally set font(s) (names as defined below in $this->fontdata) to use for missing characters
+// when using useSubstitutions. Use a font with wide coverage - dejavusanscondensed is a good start
+// only works using subsets (otherwise would add very large file)
+// doesn't do Indic or arabic
+// More than 1 font can be specified but each will add to the processing time of the script
+
+$this->backupSubsFont = array('dejavusanscondensed');
+
+
+// Optionally set a font (name as defined below in $this->fontdata) to use for CJK characters
+// in Plane 2 Unicode (> U+20000) when using useSubstitutions. 
+// Use a font like hannomb or sun-extb if available
+// only works using subsets (otherwise would add very large file)
+// Leave undefined or blank if not not required
+
+// $this->backupSIPFont = 'sun-extb';
+
+
+/*
+This array defines translations from font-family in CSS or HTML
+to the internal font-family name used in mPDF. 
+Can include as many as want, regardless of which fonts are installed.
+By default mPDF will take a CSS/HTML font-family and remove spaces
+and change to lowercase e.g. "Arial Unicode MS" will be recognised as
+"arialunicodems"
+You only need to define additional translations.
+You can also use it to define specific substitutions e.g.
+'frutiger55roman' => 'arial'
+Generic substitutions (i.e. to a sans-serif or serif font) are set 
+by including the font-family in $this->sans_fonts below
+To aid backwards compatability some are included:
+*/
+$this->fonttrans = array(
+       'helvetica' => 'arial',
+       'times' => 'timesnewroman',
+       'courier' => 'couriernew',
+       'trebuchet' => 'trebuchetms',
+       'comic' => 'comicsansms',
+       'franklin' => 'franklingothicbook',
+       'albertus' => 'albertusmedium',
+       'arialuni' => 'arialunicodems',
+       'zn_hannom_a' => 'hannoma',
+       'ocr-b' => 'ocrb',
+       'ocr-b10bt' => 'ocrb',
+
+
+);
+
+/*
+This array lists the file names of the TrueType .ttf or .otf font files
+for each variant of the (internal mPDF) font-family name.
+['R'] = Regular (Normal), others are Bold, Italic, and Bold-Italic
+Each entry must contain an ['R'] entry, but others are optional.
+Only the font (files) entered here will be available to use in mPDF.
+Put preferred default first in order.
+This will be used if a named font cannot be found in any of 
+$this->sans_fonts, $this->serif_fonts or $this->mono_fonts
+
+['indic'] = true; for special mPDF fonts containing Indic characters
+['sip-ext'] = 'hannomb'; name a related font file containing SIP characters
+
+If a .ttc TrueType collection file is referenced, the number of the font
+within the collection is required. Fonts in the collection are numbered 
+starting at 1, as they appear in the .ttc file e.g.
+       "cambria" => array(
+               'R' => "cambria.ttc",
+               'B' => "cambriab.ttf",
+               'I' => "cambriai.ttf",
+               'BI' => "cambriaz.ttf",
+               'TTCfontID' => array(
+                       'R' => 1,       
+                       ),
+               ),
+       "cambriamath" => array(
+               'R' => "cambria.ttc",
+               'TTCfontID' => array(
+                       'R' => 2,       
+                       ),
+               ),
+*/
+
+$this->fontdata = array(
+       "dejavusanscondensed" => array(
+               'R' => "DejaVuSansCondensed.ttf",
+               'B' => "DejaVuSansCondensed-Bold.ttf",
+               'I' => "DejaVuSansCondensed-Oblique.ttf",
+               'BI' => "DejaVuSansCondensed-BoldOblique.ttf",
+               ),
+       "dejavusans" => array(
+               'R' => "DejaVuSans.ttf",
+               'B' => "DejaVuSans-Bold.ttf",
+               'I' => "DejaVuSans-Oblique.ttf",
+               'BI' => "DejaVuSans-BoldOblique.ttf",
+               ),
+       "dejavuserif" => array(
+               'R' => "DejaVuSerif.ttf",
+               'B' => "DejaVuSerif-Bold.ttf",
+               'I' => "DejaVuSerif-Italic.ttf",
+               'BI' => "DejaVuSerif-BoldItalic.ttf",
+               ),
+       "dejavuserifcondensed" => array(
+               'R' => "DejaVuSerifCondensed.ttf",
+               'B' => "DejaVuSerifCondensed-Bold.ttf",
+               'I' => "DejaVuSerifCondensed-Italic.ttf",
+               'BI' => "DejaVuSerifCondensed-BoldItalic.ttf",
+               ),
+       "dejavusansmono" => array(
+               'R' => "DejaVuSansMono.ttf",
+               'B' => "DejaVuSansMono-Bold.ttf",
+               'I' => "DejaVuSansMono-Oblique.ttf",
+               'BI' => "DejaVuSansMono-BoldOblique.ttf",
+               ),
+
+
+/* OCR-B font for Barcodes */
+       "ocrb" => array(
+               'R' => "ocrb10.ttf",
+               ),
+
+/* Thai fonts */
+       "garuda" => array(
+               'R' => "Garuda.ttf",
+               'B' => "Garuda-Bold.ttf",
+               'I' => "Garuda-Oblique.ttf",
+               'BI' => "Garuda-BoldOblique.ttf",
+               ),
+       "norasi" => array(
+               'R' => "Norasi.ttf",
+               'B' => "Norasi-Bold.ttf",
+               'I' => "Norasi-Oblique.ttf",
+               'BI' => "Norasi-BoldOblique.ttf",
+               ),
+
+
+/* Indic fonts */
+       "ind_bn_1_001" => array(
+               'R' => "ind_bn_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_hi_1_001" => array(
+               'R' => "ind_hi_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_ml_1_001" => array(
+               'R' => "ind_ml_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_kn_1_001" => array(
+               'R' => "ind_kn_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_gu_1_001" => array(
+               'R' => "ind_gu_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_or_1_001" => array(
+               'R' => "ind_or_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_ta_1_001" => array(
+               'R' => "ind_ta_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_te_1_001" => array(
+               'R' => "ind_te_1_001.ttf",
+               'indic' => true,
+               ),
+       "ind_pa_1_001" => array(
+               'R' => "ind_pa_1_001.ttf",
+               'indic' => true,
+               ),
+
+
+/* XW Zar Arabic fonts */
+       "xbriyaz" => array(
+               'R' => "XB Riyaz.ttf",
+               'B' => "XB RiyazBd.ttf",
+               'I' => "XB RiyazIt.ttf",
+               'BI' => "XB RiyazBdIt.ttf",
+               'unAGlyphs' => true,
+               ),
+       "xbzar" => array(
+               'R' => "XB Zar.ttf",
+               'B' => "XB Zar Bd.ttf",
+               'I' => "XB Zar It.ttf",
+               'BI' => "XB Zar BdIt.ttf",
+               'unAGlyphs' => true,
+               ),
+
+
+
+
+/* Examples of some CJK fonts */
+/*
+       "unbatang_0613" => array(
+               'R' => "UnBatang_0613.ttf",
+               ),
+       "sun-exta" => array(
+               'R' => "Sun-ExtA.ttf",
+               'sip-ext' => 'sun-extb',
+               ),
+       "sun-extb" => array(
+               'R' => "Sun-ExtB.ttf",
+               ),
+       "hannoma" => array(
+               'R' => "HAN NOM A.ttf",
+               'sip-ext' => 'hannomb', 
+               ),
+       "hannomb" => array(
+               'R' => "HAN NOM B.ttf",
+               ),
+
+
+       'mingliu' => array (
+               'R' => 'mingliu.ttc',
+               'TTCfontID' => array (
+                       'R' => 1,
+               ),
+               'sip-ext' => 'mingliu-extb',
+       ),
+       'pmingliu' => array (
+               'R' => 'mingliu.ttc',
+               'TTCfontID' => array (
+                       'R' => 2,
+               ),
+               'sip-ext' => 'pmingliu-extb',
+       ),
+       'mingliu_hkscs' => array (
+               'R' => 'mingliu.ttc',
+               'TTCfontID' => array (
+                       'R' => 3,
+               ),
+               'sip-ext' => 'mingliu_hkscs-extb',
+       ),
+       'mingliu-extb' => array (
+               'R' => 'mingliub.ttc',
+               'TTCfontID' => array (
+                       'R' => 1,
+               ),
+       ),
+       'pmingliu-extb' => array (
+               'R' => 'mingliub.ttc',
+               'TTCfontID' => array (
+                       'R' => 2,
+               ),
+       ),
+       'mingliu_hkscs-extb' => array (
+               'R' => 'mingliub.ttc',
+               'TTCfontID' => array (
+                       'R' => 3,
+               ),
+       ),
+*/
+
+);
+
+
+// Add fonts to this array if they contain characters in the SIP or SMP Unicode planes
+// but you do not require them. This allows a more efficient form of subsetting to be used.
+$this->BMPonly = array(
+       "dejavusanscondensed",
+       "dejavusans",
+       "dejavuserifcondensed",
+       "dejavuserif",
+       "dejavusansmono",
+       );
+
+// These next 3 arrays do two things:
+// 1. If a font referred to in HTML/CSS is not available to mPDF, these arrays will determine whether
+//    a serif/sans-serif or monospace font is substituted
+// 2. The first font in each array will be the font which is substituted in circumstances as above
+//     (Otherwise the order is irrelevant)
+// Use the mPDF font-family names i.e. lowercase and no spaces (after any translations in $fonttrans)
+// Always include "sans-serif", "serif" and "monospace" etc.
+$this->sans_fonts = array('dejavusanscondensed','dejavusans','freesans','liberationsans','sans','sans-serif','cursive','fantasy', 
+                               'arial','helvetica','verdana','geneva','lucida','arialnarrow','arialblack','arialunicodems',
+                               'franklin','franklingothicbook','tahoma','garuda','calibri','trebuchet','lucidagrande','microsoftsansserif',
+                               'trebuchetms','lucidasansunicode','franklingothicmedium','albertusmedium','xbriyaz','albasuper','quillscript'
+
+);
+
+$this->serif_fonts = array('dejavuserifcondensed','dejavuserif','freeserif','liberationserif','serif',
+                               'timesnewroman','times','centuryschoolbookl','palatinolinotype','centurygothic',
+                               'bookmanoldstyle','bookantiqua','cyberbit','cambria',
+                               'norasi','charis','palatino','constantia','georgia','albertus','xbzar','algerian','garamond',
+);
+
+$this->mono_fonts = array('dejavusansmono','freemono','liberationmono','courier', 'mono','monospace','ocrb','ocr-b','lucidaconsole',
+                               'couriernew','monotypecorsiva'
+);
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/alpha.gif b/inc/3rdparty/libraries/mpdf/examples/alpha.gif
new file mode 100644 (file)
index 0000000..1ade505
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/alpha.gif differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/alpha.png b/inc/3rdparty/libraries/mpdf/examples/alpha.png
new file mode 100644 (file)
index 0000000..a8acd15
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/alpha.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/alpha3.png b/inc/3rdparty/libraries/mpdf/examples/alpha3.png
new file mode 100644 (file)
index 0000000..e62e50a
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/alpha3.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/bayeux1.jpg b/inc/3rdparty/libraries/mpdf/examples/bayeux1.jpg
new file mode 100644 (file)
index 0000000..c67f252
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/bayeux1.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/bg.jpg b/inc/3rdparty/libraries/mpdf/examples/bg.jpg
new file mode 100644 (file)
index 0000000..896ea63
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/bg.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/bgbarcode.png b/inc/3rdparty/libraries/mpdf/examples/bgbarcode.png
new file mode 100644 (file)
index 0000000..26120a8
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/bgbarcode.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/bgrock.jpg b/inc/3rdparty/libraries/mpdf/examples/bgrock.jpg
new file mode 100644 (file)
index 0000000..2e0553a
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/bgrock.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/borders2FF.jpg b/inc/3rdparty/libraries/mpdf/examples/borders2FF.jpg
new file mode 100644 (file)
index 0000000..7c841d4
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/borders2FF.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg b/inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg
new file mode 100644 (file)
index 0000000..88ff6c5
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/borders2IE.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg b/inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg
new file mode 100644 (file)
index 0000000..9336c60
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/borders3FF.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg b/inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg
new file mode 100644 (file)
index 0000000..12a4dfc
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/borders3IE.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/borders4FF.jpg b/inc/3rdparty/libraries/mpdf/examples/borders4FF.jpg
new file mode 100644 (file)
index 0000000..a553cd6
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/borders4FF.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg b/inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg
new file mode 100644 (file)
index 0000000..bee0359
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/borders4IE.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg b/inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg
new file mode 100644 (file)
index 0000000..7da1c84
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/bordersFF.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg b/inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg
new file mode 100644 (file)
index 0000000..f02003b
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/bordersIE.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg b/inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg
new file mode 100644 (file)
index 0000000..cf161ab
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/bordersMPDF2.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/clematis.jpg b/inc/3rdparty/libraries/mpdf/examples/clematis.jpg
new file mode 100644 (file)
index 0000000..d8078f8
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/clematis.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/example01_basic.php b/inc/3rdparty/libraries/mpdf/examples/example01_basic.php
new file mode 100644 (file)
index 0000000..09ffb37
--- /dev/null
@@ -0,0 +1,187 @@
+<?php
+
+
+$html = '
+<h1><a name="top"></a>mPDF</h1>
+<h2>Basic HTML Example</h2>
+This file demonstrates most of the HTML elements.
+<h3>Heading 3</h3>
+<h4>Heading 4</h4>
+<h5>Heading 5</h5>
+<h6>Heading 6</h6>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<hr />
+
+<div><img src="tiger.wmf" style="float:right;">DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+<div><img src="klematis.jpg" style="opacity: 0.5; float: left;" />DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+
+<blockquote>Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.</blockquote>
+
+<address>Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.</address>
+
+<pre>PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
+nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
+dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
+sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
+Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
+ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.</pre>
+
+<div><a href="#top">Hyperlink (&lt;a&gt;)</a></div>
+<div><a href="http://www.pallcare.info">Hyperlink (&lt;a&gt;)</a></div>
+
+<div>Styles - <tt>tt(teletype)</tt> <i>italic</i> <b>bold</b> <big>big</big> <small>small</small> <em>emphasis</em> <strong>strong</strong> <br />new lines<br>
+<code>code</code> <samp>sample</samp> <kbd>keyboard</kbd> <var>variable</var> <cite>citation</cite> <abbr>abbr.</abbr> <acronym>ACRONYM</acronym> <sup>sup</sup> <sub>sub</sub> <strike>strike</strike> <s>strike-s</s> <u>underline</u> <del>delete</del> <ins>insert</ins> <q>To be or not to be</q> <font face="sans-serif" color="#880000" size="5">font changing face, size and color</font>
+</div>
+
+<p style="font-size:15pt; color:#440066">Paragraph using the in-line style to determine the font-size (15pt) and colour</p>
+
+
+<h3>Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT</h3>
+<p>This is <s>strikethrough</s> in <b><s>block</s></b> and <small>small <s>strikethrough</s> in <i>small span</i></small> and <big>big <s>strikethrough</s> in big span</big> and then <u>underline and <s>strikethrough and <sup>sup</sup></s></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p>This is a <font color="#008800">green reference<sup>32-47</sup></font> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p> 
+
+<p><big>Repeated in <u>BIG</u>: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p> 
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p>
+
+<p>The above repeated, but starting with a paragraph with font-size specified (7pt)</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <small>small <s>strikethrough</s> in small span</small> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <big>big <s>strikethrough</s> in big span</big> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p>
+
+<p><small>This tests <u>underline</u> and <s>strikethrough</s> when they are <s><u>used together</u></s> as they both use text-decoration</small></p>
+
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p> 
+
+<p style="font-size:7pt;"><big>Repeated in BIG but with font-size set to 7pt by in-line css: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p>
+
+<ol>
+<li>Item <b><u>1</u></b></li>
+<li>Item 2<sup>32</sup></li>
+<li><small>Item</small> 3</li>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. 
+<ul>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. </li>
+<li>Subitem 2
+<ul>
+<li>
+Level 3 subitem
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 5</li>
+</ol>
+
+<dl>
+<dt>Definition list</dt>
+<dd>List defined by DL, DD and DT tags</dd>
+</dl>
+
+<p>Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+
+<table border="1">
+<thead>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+<th>More Data</th>
+<td>More Data</td>
+<td>More Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</tbody>
+</table>
+
+<p>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis. </p>
+
+<form>
+
+<b>Textarea</b>
+<textarea name="authors" rows="5" cols="80" wrap="virtual">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+
+<b>Select</b>
+<select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select> followed by text
+<br /><br />
+
+
+
+<b>Input Radio</b>
+<input type="radio" name="pre_publication" value="0" checked="checked" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="pre_publication" value="1" > Yes 
+<br /><br />
+
+
+<b>Input Radio</b>
+<input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice 
+<br /><br />
+
+
+<b>Input Text</b>
+<input type="text" size="190" name="doi" value="10.1258/jrsm.100.5.211"> 
+<br /><br />
+
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="secret"> 
+<br /><br />
+
+
+<input type="checkbox" name="QPC" value="ON" > Checkboxes<br>
+<input type="checkbox" name="QPA" value="ON" > Not selected<br>
+<input type="checkbox" name="QLY" value="ON" checked="checked" > Selected<br>
+<input type="checkbox" name="QLY" value="ON" disabled="disabled" > Disabled
+<br /><br />
+
+<input type="submit" name="submit" value="Submit" /> 
+<input type="image" name="submit" src="goto.gif" />
+<input type="button" name="submit" value="Button" />
+<input type="reset" name="submit" value="Reset" />
+
+</form>
+
+';
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->WriteHTML($html);
+$mpdf->Output();
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php b/inc/3rdparty/libraries/mpdf/examples/example02_CSS_styles.php
new file mode 100644 (file)
index 0000000..b423e6b
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Basic Example Using CSS Styles</h2>
+<p class="breadcrumb">Chapter &raquo; Topic</p>
+<h3>Heading 3</h3>
+<h4>Heading 4</h4>
+<h5>Heading 5</h5>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+<h4>Heading using Small-Caps - supported from mPDF version 5</h4>
+<p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p>
+';
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('c'); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyleA4.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php b/inc/3rdparty/libraries/mpdf/examples/example03_backgrounds_and_borders.php
new file mode 100644 (file)
index 0000000..ca13702
--- /dev/null
@@ -0,0 +1,138 @@
+<?php
+
+$html = '
+<style>
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+}
+.radialgradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;
+       margin: auto;
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+h4 {
+       font-family: sans;
+       font-weight: bold;
+       margin-top: 1em;
+       margin-bottom: 0.5em;
+}
+div {
+       padding:1em; 
+       margin-bottom: 1em;
+       text-align:justify; 
+}
+.example pre {
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+}
+
+pre { text-align:left }
+pre.code { font-family: monospace }
+
+</style>
+
+<body style="background-gradient: linear #88FFFF #FFFF44 0 0.5 1 0.5;">
+<h1>mPDF</h1>
+<h2>Backgrounds & Borders</h2>
+
+<div style="border:0.1mm solid #220044; padding:1em 2em; background-color:#ffffcc; ">
+<h4>Page background</h4>
+<div class="gradient">
+The background colour can be set by CSS styles on the &lt;body&gt; tag. This will set the background for the whole page. In this document, the background has been set as a gradient (see below).
+</div>
+
+<h4>Background Gradients</h4>
+<div class="gradient">
+Background can be set as a linear or radial gradient between two colours. The background has been set on this &lt;div&gt; element to a linear gradient. CSS style used here is:<br />
+<span style="font-family: mono; font-size: 9pt;">background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;</span><br />
+The four numbers are coordinates in the form (x1, y1, x2, y2) which defines the gradient vector. x and y are values from 0 to 1, where  1 represents the height or width of the box as it is printed.
+<br />
+<br />
+Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY.
+</div>
+<div class="radialgradient">
+The background has been set on this &lt;div&gt; element to a radial gradient. CSS style used here is:<br />
+<span style="font-family: mono; font-size: 9pt;">background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;</span><br />
+The five numbers are coordinates in the form (x1, y1, x2, y2, r) where (x1, y1) is the starting point of the gradient with color1, 
+(x2, y2) is the center of the circle with color2, and r is the radius of the circle.
+(x1, y1) should be inside the circle, otherwise some areas will not be defined.
+<br />
+<br />
+Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. 
+</div>
+
+<h4>Background Images</h4>
+<div style="border:0.1mm solid #880000; background: transparent url(bg.jpg) repeat fixed right top; background-color:#ccffff; ">
+The CSS properties background-image, background-position, and background-repeat are supported as defined in CSS2, as well as the shorthand form "background".
+<br />
+The background has been set on this &lt;div&gt; element to:<br />
+<span style="font-family: mono; font-size: 9pt;">background: transparent url(\'bg.jpg\') repeat fixed right top;</span><br />
+Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY.
+</div>
+
+<h4>Rounded Borders</h4>
+<div class="rounded">
+Rounded corners to borders can be added using border-radius as defined in the draft spec. of <a href="http://www.w3.org/TR/2008/WD-css3-background-20080910/#layering">CSS3</a>. <br />
+
+The two length values of the border-*-radius properties define the radii of a quarter ellipse that defines the shape of the corner of the outer border edge.
+The first value is the horizontal radius. <br />
+<span style="font-family: mono; font-size: 9pt;">border-top-left-radius: 55pt 25pt;</span>  55pt is radius of curve from top end of left border starting to go round to the top.<br />
+
+If the second length is omitted it is equal to the first (and the corner is thus a quarter circle). If either length is zero, the corner is square, not rounded.<br />
+
+The border-radius shorthand sets all four border-*-radius properties. If values are given before and after a slash, then the values before the slash set the horizontal radius and the values after the slash set the vertical radius. If there is no slash, then the values set both radii equally. The four values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If bottom-left is omitted it is the same as top-right. If bottom-right is omitted it is the same as top-left. If top-right is omitted it is the same as top-left.
+</div>
+<div class="rounded">
+<span style="font-family: mono; font-size: 9pt;">border-radius: 4em;</span><br />
+
+would be equivalent to<br />
+
+<span style="font-family: mono; font-size: 9pt;">border-top-left-radius:     4em;<br />
+border-top-right-radius:    4em;<br />
+border-bottom-right-radius: 4em;<br />
+border-bottom-left-radius:  4em;</span><br />
+<br />
+and<br />
+<span style="font-family: mono; font-size: 9pt;">border-radius: 2em 1em 4em / 0.5em 3em;</span><br />
+would be equivalent to<br />
+<span style="font-family: mono; font-size: 9pt;">border-top-left-radius:     2em 0.5em;<br />
+border-top-right-radius:    1em 3em;<br />
+border-bottom-right-radius: 4em 0.5em;<br />
+border-bottom-left-radius:  1em 3em;</span>
+</div>
+
+</div>
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example04_images.php b/inc/3rdparty/libraries/mpdf/examples/example04_images.php
new file mode 100644 (file)
index 0000000..b987763
--- /dev/null
@@ -0,0 +1,207 @@
+<?php
+
+
+
+$html = '
+<style>
+table { border-collapse: collapse; margin-top: 0; text-align: center; }
+td { padding: 0.5em; }
+h1 { margin-bottom: 0; }z
+</style>
+<h1>mPDF Images</h1>
+
+<table>
+<tr>
+<td>GIF</td>
+<td>JPG</td>
+<td>JPG (CMYK)</td>
+<td>PNG</td>
+<td>BMP</td>
+<td>WMF</td>
+<td>SVG</td>
+</tr>
+<tr>
+<td><img style="vertical-align: top" src="tiger.gif" width="80" /></td>
+<td><img style="vertical-align: top" src="tiger.jpg" width="80" /></td>
+<td><img style="vertical-align: top" src="tigercmyk.jpg" width="80" /></td>
+<td><img style="vertical-align: top" src="tiger.png" width="80" /></td>
+<td><img style="vertical-align: top" src="tiger.bmp" width="80" /></td>
+<td><img style="vertical-align: top" src="tiger2.wmf" width="80" /></td>
+<td><img style="vertical-align: top" src="tiger.svg" width="80" /></td>
+</tr>
+</tr>
+<tr>
+<td colspan="7" style="text-align: left" ><h4>Opacity 50%</h4></td>
+</tr>
+<tr>
+<tr>
+<td><img style="vertical-align: top; opacity: 0.5" src="tiger.gif" width="80" /></td>
+<td><img style="vertical-align: top; opacity: 0.5" src="tiger.jpg" width="80" /></td>
+<td><img style="vertical-align: top; opacity: 0.5" src="tigercmyk.jpg" width="80" /></td>
+<td><img style="vertical-align: top; opacity: 0.5" src="tiger.png" width="80" /></td>
+<td><img style="vertical-align: top; opacity: 0.5" src="tiger.bmp" width="80" /></td>
+<td><img style="vertical-align: top; opacity: 0.5" src="tiger2.wmf" width="80" /></td>
+<td><img style="vertical-align: top; opacity: 0.5" src="tiger.svg" width="80" /></td>
+</tr>
+</table>
+
+<h4>Alpha channel</h4>
+<table>
+<tr>
+<td>PNG</td>
+<td><img style="vertical-align: top" src="alpha.png" width="85" /></td>
+<td style="background-color:#FFCCFF; "><img style="vertical-align: top" src="alpha.png" width="85" /></td>
+<td style="background-color:#FFFFCC;"><img style="vertical-align: top" src="alpha.png" width="85" /></td>
+<td style="background-color:#CCFFFF;"><img style="vertical-align: top" src="alpha.png" width="85" /></td>
+<td style="background-color:#CCFFFF; background: transparent url(\'bg.jpg\') repeat scroll right top;"><img style="vertical-align: top" src="alpha.png" width="85" /></td>
+</tr>
+</table>
+<h4>Transparency</h4>
+<table><tr>
+<td>PNG</td>
+<td style="background-color:#FFCCFF; "><img style="vertical-align: top" src="tiger24trns.png" width="85" /></td>
+<td style="background-color:#FFFFCC;"><img style="vertical-align: top" src="tiger24trns.png" width="85" /></td>
+<td style="background-color:#CCFFFF;"><img style="vertical-align: top" src="tiger24trns.png" width="85" /></td>
+<td style="background-color:#CCFFFF; background: transparent url(\'bg.jpg\') repeat scroll right top;"><img style="vertical-align: top" src="tiger24trns.png" width="85" /></td>
+</tr><tr>
+<td>GIF</td>
+<td style="background-color:#FFCCFF;"><img style="vertical-align: top" src="tiger8trns.gif" width="85" /></td>
+<td style="background-color:#FFFFCC;"><img style="vertical-align: top" src="tiger8trns.gif" width="85" /></td>
+<td style="background-color:#CCFFFF;"><img style="vertical-align: top" src="tiger8trns.gif" width="85" /></td>
+<td style="background-color:#CCFFFF; background: transparent url(\'bg.jpg\') repeat scroll right top;"><img style="vertical-align: top" src="tiger8trns.gif" width="85" /></td>
+</tr><tr>
+<td>WMF</td>
+<td style="background-color:#FFCCFF;"><img style="vertical-align: top" src="tiger2.wmf" width="85" /></td>
+<td style="background-color:#FFFFCC;"><img style="vertical-align: top" src="tiger2.wmf" width="85" /></td>
+<td style="background-color:#CCFFFF;"><img style="vertical-align: top" src="tiger2.wmf" width="85" /></td>
+<td style="background-color:#CCFFFF; background: transparent url(\'bg.jpg\') repeat scroll right top;"><img style="vertical-align: top" src="tiger2.wmf" width="85" /></td>
+</tr><tr>
+<td>SVG</td>
+<td style="background-color:#FFCCFF;"><img style="vertical-align: top" src="tiger.svg" width="85" /></td>
+<td style="background-color:#FFFFCC;"><img style="vertical-align: top" src="tiger.svg" width="85" /></td>
+<td style="background-color:#CCFFFF;"><img style="vertical-align: top" src="tiger.svg" width="85" /></td>
+<td style="background-color:#CCFFFF; background: transparent url(\'bg.jpg\') repeat scroll right top;"><img style="vertical-align: top" src="tiger.svg" width="85" /></td>
+</tr></table>
+
+
+Images returned from tiger.php
+<div>
+GIF <img style="vertical-align: top" src="tiger.php?t=gif" width="85" />
+JPG <img style="vertical-align: top" src="tiger.php?t=jpg" width="85" />
+PNG <img style="vertical-align: top" src="tiger.php?t=png" width="85" />
+WMF <img style="vertical-align: top" src="tiger.php?t=wmf" width="85" />
+SVG <img style="vertical-align: top" src="tiger.php?t=svg" width="85" />
+</div>
+
+<pagebreak />
+
+
+<h3>Image Alignment</h3>
+<div>From mPDF version 4.2 onwards, in-line images can be individually aligned (vertically). Most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom. The default value for vertical alignment has been changed to baseline, and the default padding to 0, consistent with most browsers.
+</div>
+<br />
+
+<div style="background-color:#CCFFFF;">
+These images <img src="img1.png" style="vertical-align: top;" />
+are <img src="img2.png" style="vertical-align: top;" />
+<b>top</b> <img src="img3.png" style="vertical-align: top;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+<br />
+
+<div style="background-color:#CCFFFF;">
+These images <img src="img1.png" style="vertical-align: text-top;" />
+are <img src="img2.png" style="vertical-align: text-top;" />
+<b>text-top</b> <img src="img3.png" style="vertical-align: text-top;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+<br />
+
+<div style="background-color:#CCFFFF;">
+These images <img src="img1.png" style="vertical-align: bottom;" />
+are <img src="img2.png" style="vertical-align: bottom;" />
+<b>bottom</b> <img src="img3.png" style="vertical-align: bottom;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+<br />
+
+<div style="background-color:#CCFFFF;">
+These images <img src="img1.png" style="vertical-align: text-bottom;" />
+are <img src="img2.png" style="vertical-align: text-bottom;" />
+<b>text-bottom</b> <img src="img3.png" style="vertical-align: text-bottom;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+<br />
+
+<div style="background-color:#CCFFFF;">
+These images <img src="img1.png" style="vertical-align: baseline;" />
+are <img src="img2.png" style="vertical-align: baseline;" />
+<b>baseline</b> <img src="img3.png" style="vertical-align: baseline;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+<br />
+
+<div style="background-color:#CCFFFF;">
+These images <img src="img1.png" style="vertical-align: middle;" />
+are <img src="img2.png" style="vertical-align: middle;" />
+<b>middle</b> <img src="img3.png" style="vertical-align: middle;" />
+aligned <img src="img5.png" style="vertical-align: bottom;" />
+</div>
+<br />
+
+<h4>Mixed alignment</h4>
+<div style="background-color:#CCFFFF;">
+baseline: <img src="sunset.jpg" width="50" style="vertical-align: baseline;" />
+text-bottom: <img src="sunset.jpg" width="30" style="vertical-align: text-bottom;" />
+middle: <img src="sunset.jpg" width="30" style="vertical-align: middle;" />
+bottom: <img src="sunset.jpg" width="80" style="vertical-align: bottom;" />
+text-top: <img src="sunset.jpg" width="50" style="vertical-align: text-top;" />
+top: <img src="sunset.jpg" width="100" style="vertical-align: top;" />
+</div>
+
+<h3>Image Border and padding</h3>
+From mPDF v4.2, Image padding is supported as well as border and margin.
+<img src="sunset.jpg" width="100" style="border:3px solid #44FF44; padding: 1em;" />
+
+<h3>Rotated Images</h3>
+<img src="tiger.png" width="100" /> 
+<img src="tiger.png" rotate="90" width="100" /> 
+<img src="tiger.png" rotate="180" width="100" /> 
+<img src="tiger.png" rotate="-90" width="100" /> 
+<br />
+<img src="tiger.jpg" width="100" /> 
+<img src="tiger.jpg" rotate="90" width="100" /> 
+<img src="tiger.jpg" rotate="180" width="100" /> 
+<img src="tiger.jpg" rotate="-90" width="100" /> 
+<br />
+<img src="tiger2.wmf" width="80" /> &nbsp; &nbsp; &nbsp;
+<img src="tiger2.wmf" rotate="90" width="80" /> &nbsp; &nbsp; &nbsp;
+<img src="tiger2.wmf" rotate="180" width="80" /> &nbsp; &nbsp; &nbsp;
+<img src="tiger2.wmf" rotate="-90" width="80" />
+<br />
+<img src="tiger.svg" width="100" />&nbsp;
+<img src="tiger.svg" rotate="90" width="85" />&nbsp;
+<img src="tiger.svg" rotate="180" width="100" />&nbsp;
+<img src="tiger.svg" rotate="-90" width="85" /> 
+<br />
+
+';
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c'); 
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example05_tables.php b/inc/3rdparty/libraries/mpdf/examples/example05_tables.php
new file mode 100644 (file)
index 0000000..997614a
--- /dev/null
@@ -0,0 +1,1017 @@
+<?php
+
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Tables</h2>
+<h3>CSS Styles</h3>
+<p>The CSS properties for tables and cells is increased over that in html2fpdf. It includes recognition of THEAD, TFOOT and TH.<br />See below for other facilities such as autosizing, and rotation.</p>
+<table border="1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+
+<tr><td>Row 2</td>
+
+<td style="background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;">
+<p>This is data p</p>
+This is data out of p
+<p style="font-weight:bold; font-size:20pt; background-color:#FFBBFF;">This is bold data p</p>
+<b>This is bold data out of p</b><br />
+This is normal data after br
+<h3>H3 in a table</h3>
+<div>This is data div</div>
+This is data out of div
+<div style="font-weight:bold;">This is data div (bold)</div>
+This is data out of div
+</td>
+
+
+<td><p>More data</p><p style="font-size:12pt;">This is large text</p></td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+<tr><td><p>Row 4 &lt;td&gt; cell</p></td><td>This is data</td><td><p>This is data</p></td></tr>
+<tr><td>Row 5</td><td>Also data</td><td>Also data</td></tr>
+<tr><td>Row 6</td><td>Also data</td><td>Also data</td></tr>
+<tr><td>Row 7</td><td>Also data</td><td>Also data</td></tr>
+<tr><td>Row 8</td><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+
+<p>This table has padding-left and -right set to 5mm i.e. padding within the cells. Also border colour and style, font family and size are set by <acronym>CSS</acronym>.</p>
+<table align="right" style="border: 1px solid #880000; font-family: Mono; font-size: 7pt; " class="widecells">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td><td><p>This is data p</p></td><td><p>More data</p></td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+<tr><td><p>Row 4 &lt;td&gt; cell</p></td><td>This is data</td><td><p>This is data</p></td></tr>
+<tr><td>Row 5</td><td>Also data</td><td>Also data</td></tr>
+<tr><td>Row 6</td><td>Also data</td><td>Also data</td></tr>
+<tr><td>Row 7</td><td>Also data</td><td>Also data</td></tr>
+<tr><td>Row 8</td><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+
+<p>This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line <acronym>CSS</acronym>.</p>
+<table style="border: 1px solid #880000; background-color: #BBCCDD; font-family: Mono; font-size: 7pt; " class="tallcells">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td><td><p>This is data p</p></td><td><p>More data</p></td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+</tbody></table>
+
+
+<h3 style="margin-top: 20pt; margin-collapse:collapse;">Table Styles</h3>
+<p>The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that &lt;thead&gt; will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.</p>
+<p>bpmTopic Class</p>
+<table class="bpmTopic"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>More data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopic<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopicC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopnTail Class </p>
+<table class="bpmTopnTail"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+<p>bpmTopnTail<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopnTailC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>TopnTail Class</p>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td class="pmhBottomRight"><b><i>Bottom right align</i></b></td>
+<td>
+<p>This is data. Can use</p>
+<p><b>bold</b> <i>italic </i><sub>sub</sub> or <sup>sup</sup> text</p>
+</td>
+</tr>
+<tr class="oddrow"><th class="pmhBottomRight">
+<p>Bottom right align</p>
+</th>
+<td class="pmhMiddleCenter" style="border: #000000 1px solid">
+<p>This is data. This cell</p>
+<p>uses Cell Styles to set</p>
+<p>the borders.</p>
+<p>All borders are collapsible</p>
+<p>in mPDF.</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 4</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>More data</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td colspan="2" class="pmhTopCenter">Also data merged and centered</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<h4>Lists in a Table</h4>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<ol>
+<li>Item 1</li>
+<li>Item 2
+<ol type="a">
+<li>Subitem of ordered list</li>
+<li>Subitem 2
+<ol type="i">
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Item 3</li>
+<li>Another Item</li>
+<li>Subitem
+<ol>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+<li>Another Item</li>
+</ol>
+</td>
+<td>
+Unordered list:
+<ul>
+<li>Item 1</li>
+<li>Item 2
+<ul>
+<li>Subitem of unordered list</li>
+<li>Subitem 2
+<ul>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 3</li>
+</ul>
+</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+
+<h4>Automatic Column Width</h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td>Causes</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.</td>
+</tr>
+</tbody></table>
+
+
+<h4>ColSpan & Rowspan</h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td rowspan="2">Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+</tr>
+</tbody></table>
+
+
+
+<h4>Table Header & Footer Rows</h4>
+<p>A table using a header row should repeat the header row across pages:</p>
+<p>bpmTopic<b>C</b> Class</p>
+<table class="bpmTopicC">
+<thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second column header</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead>
+<tfoot>
+<tr class="footerrow"><th>Col and Row Footer</th>
+<td>
+<p>Second column footer</p>
+</td>
+<td>Third column footer</td>
+</tr>
+</tfoot>
+<tbody>
+<tr><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 2</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 4</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 9</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<h3>Autosizing Tables</h3>
+<p>Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute &lt;table autosize="1.8"&gt;.</p>
+
+<h5>Periodic Table</h5>
+
+<table style="border:1px solid #000000;" cellPadding="9"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td>
+<td colspan="16"></td>
+<td>He </td>
+</tr>
+<tr>
+<td>Li </td>
+<td>Be </td>
+<td colspan="10"></td>
+<td>B </td>
+<td>C </td>
+<td>N </td>
+<td>O </td>
+<td>F </td>
+<td>Ne </td>
+</tr>
+<tr>
+<td>Na </td>
+<td>Mg </td>
+<td colspan="10"></td>
+<td>Al </td>
+<td>Si </td>
+<td>P </td>
+<td>S </td>
+<td>Cl </td>
+<td>Ar </td>
+</tr>
+<tr>
+<td>K </td>
+<td>Ca </td>
+<td>Sc </td>
+<td>Ti </td>
+<td>V </td>
+<td>Cr </td>
+<td>Mn </td>
+<td>Fe </td>
+<td>Co </td>
+<td>Ni </td>
+<td>Cu </td>
+<td>Zn </td>
+<td>Ga </td>
+<td>Ge </td>
+<td>As </td>
+<td>Se </td>
+<td>Br </td>
+<td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td>
+<td>Sr </td>
+<td>Y </td>
+<td>Zr </td>
+<td>Nb </td>
+<td>Mo </td>
+<td>Tc </td>
+<td>Ru </td>
+<td>Rh </td>
+<td>Pd </td>
+<td>Ag </td>
+<td>Cd </td>
+<td>In </td>
+<td>Sn </td>
+<td>Sb </td>
+<td>Te </td>
+<td>I </td>
+<td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td>
+<td>Ba </td>
+<td>La </td>
+<td>Hf </td>
+<td>Ta </td>
+<td>W </td>
+<td>Re </td>
+<td>Os </td>
+<td>Ir </td>
+<td>Pt </td>
+<td>Au </td>
+<td>Hg </td>
+<td>Tl </td>
+<td>Pb </td>
+<td>Bi </td>
+<td>Po </td>
+<td>At </td>
+<td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td>
+<td>Ra </td>
+<td>Ac </td>
+<td colspan="15"></td>
+</tr>
+<tr>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Ce </td>
+<td>Pr </td>
+<td>Nd </td>
+<td>Pm </td>
+<td>Sm </td>
+<td>Eu </td>
+<td>Gd </td>
+<td>Tb </td>
+<td>Dy </td>
+<td>Ho </td>
+<td>Er </td>
+<td>Tm </td>
+<td>Yb </td>
+<td>Lu </td>
+<td></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Th </td>
+<td>Pa </td>
+<td>U </td>
+<td>Np </td>
+<td>Pu </td>
+<td>Am </td>
+<td>Cm </td>
+<td>Bk </td>
+<td>Cf </td>
+<td>Es </td>
+<td>Fm </td>
+<td>Md </td>
+<td>No </td>
+<td>Lr </td>
+<td></td>
+</tr>
+</tbody></table>
+
+<pagebreak />
+
+<h3>Rotating Tables</h3>
+<p>This is set to rotate -90 degrees (counterclockwise).</p>
+
+<h5>Periodic Table</h5>
+<p>
+<table rotate="-90" class="bpmClearC"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td>
+<td colspan="15"></td>
+<td></td>
+<td>He </td>
+</tr>
+<tr>
+<td>Li </td>
+<td>Be </td>
+<td colspan="10"></td>
+<td>B </td>
+<td>C </td>
+<td>N </td>
+<td>O </td>
+<td>F </td>
+<td>Ne </td>
+</tr>
+<tr>
+<td>Na </td>
+<td>Mg </td>
+<td colspan="10"></td>
+<td>Al </td>
+<td>Si </td>
+<td>P </td>
+<td>S </td>
+<td>Cl </td>
+<td>Ar </td>
+</tr>
+<tr>
+<td>K </td>
+<td>Ca </td>
+<td>Sc </td>
+<td>Ti </td>
+<td>V </td>
+<td>Cr </td>
+<td>Mn </td>
+<td>Fe </td>
+<td>Co </td>
+<td>Ni </td>
+<td>Cu </td>
+<td>Zn </td>
+<td>Ga </td>
+<td>Ge </td>
+<td>As </td>
+<td>Se </td>
+<td>Br </td>
+<td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td>
+<td>Sr </td>
+<td>Y </td>
+<td>Zr </td>
+<td>Nb </td>
+<td>Mo </td>
+<td>Tc </td>
+<td>Ru </td>
+<td>Rh </td>
+<td>Pd </td>
+<td>Ag </td>
+<td>Cd </td>
+<td>In </td>
+<td>Sn </td>
+<td>Sb </td>
+<td>Te </td>
+<td>I </td>
+<td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td>
+<td>Ba </td>
+<td>La </td>
+<td>Hf </td>
+<td>Ta </td>
+<td>W </td>
+<td>Re </td>
+<td>Os </td>
+<td>Ir </td>
+<td>Pt </td>
+<td>Au </td>
+<td>Hg </td>
+<td>Tl </td>
+<td>Pb </td>
+<td>Bi </td>
+<td>Po </td>
+<td>At </td>
+<td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td>
+<td>Ra </td>
+<td>Ac </td>
+</tr>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Ce </td>
+<td>Pr </td>
+<td>Nd </td>
+<td>Pm </td>
+<td>Sm </td>
+<td>Eu </td>
+<td>Gd </td>
+<td>Tb </td>
+<td>Dy </td>
+<td>Ho </td>
+<td>Er </td>
+<td>Tm </td>
+<td>Yb </td>
+<td>Lu </td>
+<td></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Th </td>
+<td>Pa </td>
+<td>U </td>
+<td>Np </td>
+<td>Pu </td>
+<td>Am </td>
+<td>Cm </td>
+<td>Bk </td>
+<td>Cf </td>
+<td>Es </td>
+<td>Fm </td>
+<td>Md </td>
+<td>No </td>
+<td>Lr </td>
+<td></td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<pagebreak />
+<h3>Rotated text in Table Cells</h3>
+
+<h5>Periodic Table</h5>
+<table>
+<thead>
+<tr text-rotate="45">
+<th><p>Element type 1A</p><p>Second line</p><th><p>Element type longer 2A</p></th>
+<th>Element type 3B</th>
+<th>Element type 4B</th>
+<th>Element type 5B</th>
+<th>Element type 6B</th>
+<th>7B</th><th>8B</th>
+<th>Element type 8B R</th>
+<th>8B</th>
+<th>Element <span>type</span> 1B</th>
+<th>2B</th>
+<th>Element type 3A</th>
+<th>Element type 4A</th>
+<th>Element type 5A</th>
+<th>Element type 6A</th>
+<th>7A</th>
+<th>Element type 8A</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td>H</td>
+<td colspan="15"></td>
+<td></td>
+<td>He </td>
+</tr>
+<tr>
+<td>Li </td>
+<td>Be </td>
+<td colspan="10"></td>
+<td>B </td>
+<td>C </td>
+<td>N </td>
+<td>O </td>
+<td>F </td>
+<td>Ne </td>
+</tr>
+<tr>
+<td>Na </td>
+<td>Mg </td>
+<td colspan="10"></td>
+<td>Al </td>
+<td>Si </td>
+<td>P </td>
+<td>S </td>
+<td>Cl </td>
+<td>Ar </td>
+</tr>
+<tr style="text-rotate: 45">
+<td>K </td>
+<td>Ca </td>
+<td>Sc </td>
+<td>Ti</td>
+<td>Va</td>
+<td>Cr</td>
+<td>Mn</td>
+<td>Fe</td>
+<td>Co</td>
+<td>Ni </td>
+<td>Cu </td>
+<td>Zn </td>
+<td>Ga </td>
+<td>Ge </td>
+<td>As </td>
+<td>Se </td>
+<td>Br </td>
+<td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td>
+<td>Sr </td>
+<td>Y </td>
+<td>Zr </td>
+<td>Nb </td>
+<td>Mo </td>
+<td>Tc </td>
+<td>Ru </td>
+<td style="text-align:right; ">Rh</td>
+<td>Pd </td>
+<td>Ag </td>
+<td>Cd </td>
+<td>In </td>
+<td>Sn </td>
+<td>Sb </td>
+<td>Te </td>
+<td>I </td>
+<td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td>
+<td>Ba </td>
+<td>La </td>
+<td>Hf </td>
+<td>Ta </td>
+<td>W </td>
+<td>Re </td>
+<td>Os </td>
+<td>Ir </td>
+<td>Pt </td>
+<td>Au </td>
+<td>Hg </td>
+<td>Tl </td>
+<td>Pb </td>
+<td>Bi </td>
+<td>Po </td>
+<td>At </td>
+<td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td>
+<td>Ra </td>
+<td colspan="16">Ac </td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Ce </td>
+<td>Pr </td>
+<td>Nd </td>
+<td>Pm </td>
+<td>Sm </td>
+<td>Eu </td>
+<td>Gd </td>
+<td>Tb </td>
+<td>Dy </td>
+<td>Ho </td>
+<td>Er </td>
+<td>Tm </td>
+<td>Yb </td>
+<td>Lu </td>
+<td></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Th </td>
+<td>Pa </td>
+<td>U </td>
+<td>Np </td>
+<td>Pu </td>
+<td>Am </td>
+<td>Cm </td>
+<td>Bk </td>
+<td>Cf </td>
+<td>Es </td>
+<td>Fm </td>
+<td>Md </td>
+<td>No </td>
+<td>Lr </td>
+<td></td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->list_indent_first_level = 0;    // 1 or 0 - whether to indent the first level of a list
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyletables.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html,2);
+
+$mpdf->Output('mpdf.pdf','I');
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php b/inc/3rdparty/libraries/mpdf/examples/example06_tables_nested.php
new file mode 100644 (file)
index 0000000..e50764a
--- /dev/null
@@ -0,0 +1,532 @@
+<?php
+
+
+$html = '
+<head>
+<style>
+table {
+       border-collapse: separate;
+       border: 4px solid #880000;
+       padding: 3px;
+       margin: 0px 20px 0px 20px;
+       empty-cells: hide;
+       background-color:#FFFFCC;
+}
+table.outer2 {
+       border-collapse: separate;
+       border: 4px solid #088000;
+       padding: 3px;
+       margin: 10px 0px;
+       empty-cells: hide;
+       background-color: yellow;
+}
+table.outer2 td {
+       font-family: Times;
+}
+table.inner {
+       border-collapse: collapse;
+       border: 2px solid #000088;
+       padding: 3px;
+       margin: 5px;
+       empty-cells: show;
+       background-color:#FFCCFF;
+}
+td {
+       border: 1px solid #008800;
+       padding: 0px;
+       background-color:#ECFFDF;
+}
+table.inner td {
+       border: 1px solid #000088;
+       padding: 0px;
+       font-family: monospace;
+       font-style: italic;
+       font-weight: bold;
+       color: #880000;
+       background-color:#FFECDF;
+}
+table.collapsed {
+       border-collapse: collapse;
+}
+table.collapsed td {
+       background-color:#EDFCFF;
+}
+
+
+</style>
+</head>
+<body>
+<h1>mPDF</h1>
+<h2>Tables - Nested</h2>
+
+
+<div style="border: 2px solid #000088; background-color: #DDDDFF; padding: 2mm;">
+Text before table
+
+<div style="border: 2px solid #008888; background-color: #DCAFCF; padding: 2mm;">
+
+<table cellSpacing="2" rotate="-90" align="center" autosize="1.5">
+<tbody>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id <a href="http://www.dummy.com">euismod auctor</a>, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+
+
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td style="background: transparent url(\'bg.jpg\') repeat scroll right top;" >Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+
+
+</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+
+
+</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+
+
+</td>
+<td>This is data</td>
+</tr>
+
+
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>This is data</td>
+<td></td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+
+
+</tbody></table>
+
+</div>
+
+<p>Text before table</p>
+
+<table cellSpacing="2" class="outer2" autosize="3" style="page-break-inside:avoid">
+<tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td style="text-align: right;">
+Text before table
+
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+<p>Text after table</p>
+
+
+</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>Row 2</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>Row 3</td>
+<td style="text-align: center; vertical-align: middle;">
+
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+
+</td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+
+
+</td>
+<td style="vertical-align: bottom; ">
+<table cellSpacing="2" class="inner" align="right">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>Row 4</td>
+<td>This is data</td>
+<td><table cellSpacing="2" class="inner">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+
+</td>
+<td>C4</td>
+</tr>
+
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+
+</tbody></table>
+
+</td>
+<td>This is data</td>
+</tr>
+
+
+</tbody></table>
+
+
+</div>
+
+<p>&nbsp;</p>
+
+
+<div style="border: 1px solid #000088; background-color: #DDDDFF; padding: 5mm;">
+Text before table
+
+<table cellSpacing="2" class="separate">
+<tbody>
+<tr>
+<td style="background-color:#FFCCFF;">Row 1</td>
+<td>This is data</td>
+<td>
+
+NO NESTING </td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>Row 2</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>Row 3</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+
+<tr>
+<td>Row 4</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+
+</tbody></table>
+
+</div>
+
+</body>
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->list_indent_first_level = 0;    // 1 or 0 - whether to indent the first level of a list
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyletables.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php b/inc/3rdparty/libraries/mpdf/examples/example07_tables_borders.php
new file mode 100644 (file)
index 0000000..a0cf4fc
--- /dev/null
@@ -0,0 +1,500 @@
+<?php
+
+
+
+$html = '
+<html><head>
+<style>
+table {
+       font-family: sans-serif;
+       border: 7mm solid aqua;
+       border-collapse: collapse;
+}
+table.table2 {
+       border: 2mm solid aqua;
+       border-collapse: collapse;
+}
+table.layout {
+       border: 0mm solid black;
+       border-collapse: collapse;
+}
+td.layout {
+       text-align: center;
+       border: 0mm solid black;
+}
+td {
+       padding: 3mm;
+       border: 2mm solid blue;
+       vertical-align: middle;
+}
+td.redcell {
+       border: 3mm solid red;
+}
+td.redcell2 {
+       border: 2mm solid red;
+}
+</style>
+</head>
+<body>
+
+<h1>mPDF</h1>
+<h2>Tables - Borders</h2>
+<h4>mPDF</h4>
+
+Border conflict resolution in tables with border-collapse set to "collapse". mPDF follows the rules set by CSS as well as possible, but as you can see, there is some difference in interpretation of the rules:
+
+<table class="layout">
+
+<tr>
+    <td class="layout">mPDF</td>
+    <td class="layout">Internet Explorer<br />IE 7</td>
+    <td class="layout">Firefox<br />v 3.0.3</td>
+</tr>
+
+<tr>
+       <td class="layout">
+
+
+<table>
+<tr>
+    <td style="border:5mm solid green">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td rowspan="2" class="redcell" style="border:5mm solid teal">1</td>
+    <td style="border:3mm solid pink">1</td>
+    <td style="border:5mm solid purple">1</td>
+</tr>
+<tr>
+    <td style="border:2mm solid gray">1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td class="redcell">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+</table>
+
+
+
+       </td>
+
+    <td class="layout" rowspan="3"><img src="bordersIE.jpg" /></td>
+    <td class="layout" rowspan="3"><img src="bordersFF.jpg" /></td>
+
+
+</tr>
+
+<tr>
+       <td class="layout" style="text-align: left">
+
+<table style="border: 2.5mm solid aqua">
+<tr>
+    <td class="redcell">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td rowspan="2" class="redcell" style="border:5mm solid green">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td class="redcell">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+</table>
+
+
+       </td>
+</tr>
+
+<tr>
+       <td class="layout">
+
+<table>
+<tr>
+    <td class="redcell">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td rowspan="2" >1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td style="border:5mm solid yellow">1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td class="redcell">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+</table>
+
+
+       </td>
+</tr>
+</table>
+
+
+<pagebreak />
+
+
+<table class="layout">
+
+<tr>
+    <td class="layout">mPDF</td>
+    <td class="layout">mPDF &lt; v3</td>
+    <td class="layout">Internet Explorer<br />IE 7</td>
+    <td class="layout">Firefox<br />v 3.0.3</td>
+</tr>
+
+<tr>
+       <td class="layout">
+
+
+<table class="table2">
+<tr>
+    <td style="border:2mm solid green">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td rowspan="2" class="redcell2" style="border:2mm solid teal">1</td>
+    <td style="border:2mm solid pink">1</td>
+    <td style="border:2mm solid purple">1</td>
+</tr>
+<tr>
+    <td style="border:2mm solid gray">1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td class="redcell2">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+</table>
+
+
+
+       </td>
+
+    <td class="layout" rowspan="3"><img src="bordersMPDF2.jpg" /></td>
+    <td class="layout" rowspan="3"><img src="borders2IE.jpg" /></td>
+    <td class="layout" rowspan="3"><img src="borders2FF.jpg" /></td>
+
+
+</tr>
+
+<tr>
+       <td class="layout" style="text-align: left">
+
+<table style="border: 2mm solid aqua" class="table2">
+<tr>
+    <td class="redcell2">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td rowspan="2" class="redcell2" style="border:2mm solid green">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td class="redcell2">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+</table>
+
+
+       </td>
+</tr>
+
+<tr>
+       <td class="layout">
+
+<table class="table2">
+<tr>
+    <td class="redcell2">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td rowspan="2" >1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td style="border:2mm solid yellow">1</td>
+    <td>1</td>
+</tr>
+<tr>
+    <td class="redcell2">1</td>
+    <td>1</td>
+    <td>1</td>
+</tr>
+</table>
+
+
+       </td>
+</tr>
+</table>
+
+
+<pagebreak />
+<h4>mPDF</h4>
+
+<table style="border: 10px solid orange">
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px double red">double red</td>
+<td style="border: 10px dashed yellow">dashed yellow</td>
+<td style="border: 10px dotted green">dotted green</td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px hidden orange">hidden </td>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px none orange">none</td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px ridge blue">ridge blue</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px groove pink">groove pink</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px inset gray">inset gray</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px outset purple">outset purple</td>
+<td style="border: 10px none orange">none </td>
+</tr>
+</table>
+
+<h4>Firefox</h4>
+<img src="borders3FF.jpg" />
+
+<br />
+
+
+<h4>IE 7</h4>
+<img src="borders3IE.jpg" />
+
+<pagebreak />
+
+<div>mPDF</div>
+
+<table style="border: 10px solid orange; border-collapse: separate;">
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px double red">double red</td>
+<td style="border: 10px dashed yellow">dashed yellow</td>
+<td style="border: 10px dotted green">dotted green</td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px hidden orange">hidden </td>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px none orange">none</td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px ridge blue">ridge blue</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px solid orange">Data</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px groove pink">groove pink</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px solid orange">Data</td>
+</tr>
+<tr>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px inset gray">inset gray</td>
+<td style="border: 10px none orange">none </td>
+<td style="border: 10px outset purple">outset purple</td>
+<td style="border: 10px none orange">none </td>
+</tr>
+</table>
+
+<div>Firefox</div>
+<img style="margin:0;" src="borders4FF.jpg" />
+
+
+
+<div>IE 7</div>
+<img style="margin:0;" src="borders4IE.jpg" />
+
+<pagebreak />
+
+
+<table style="border: 5px inset teal">
+<tr>
+<td style="border: 5px solid orange">solid orange</td>
+
+<td style="border: 0px none black">none</td>
+
+<td style="border: 5px double red">double red</td>
+
+<td style="border: 0px none black">none</td>
+
+<td style="border: 5px inset gray">inset gray</td>
+
+<td style="border: 0px none black">none</td>
+
+<td style="border: 5px outset purple">outset purple</td>
+
+<td style="border: 0px none black">none</td>
+
+<td style="border: 5px groove pink">groove pink</td>
+
+<td style="border: 0px none black">none</td>
+
+<td style="border: 5px ridge blue">ridge blue</td>
+</tr>
+</table>
+
+
+<table style="border: 5px inset gray; border-collapse: separate;">
+<tr>
+<td style="border: 5px solid orange">solid orange</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px double red">double red</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px inset gray">inset gray</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px outset purple">outset purple</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px groove pink">groove pink</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px ridge blue">ridge blue</td>
+</tr>
+</table>
+
+
+<table style="border: 5px outset purple; border-collapse: separate;">
+<tr>
+<td style="border: 5px solid orange">solid orange</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px double red">double red</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px inset gray">inset gray</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px outset purple">outset purple</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px groove pink">groove pink</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px ridge blue">ridge blue</td>
+</tr>
+</table>
+
+
+<table style="border: 5px groove pink; border-collapse: separate;">
+<tr>
+<td style="border: 5px solid orange">solid orange</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px double red">double red</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px inset gray">inset gray</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px outset purple">outset purple</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px groove pink">groove pink</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px ridge blue">ridge blue</td>
+</tr>
+</table>
+
+
+<table style="border: 5px ridge blue; border-collapse: separate;">
+<tr>
+<td style="border: 5px solid orange">solid orange</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px double red">double red</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px inset gray">inset gray</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px outset purple">outset purple</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px groove pink">groove pink</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px ridge blue">ridge blue</td>
+</tr>
+</table>
+
+
+<table style="border: 5px double red; border-collapse: separate;">
+<tr>
+<td style="border: 5px solid orange">solid orange</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px double red">double red</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px inset gray">inset gray</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px outset purple">outset purple</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px groove pink">groove pink</td>
+<td style="border: 0px none black">none</td>
+<td style="border: 5px ridge blue">ridge blue</td>
+</tr>
+</table>
+
+</body>
+</html>
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('en-GB-x','A4','','',10,10,10,10,6,3); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->list_indent_first_level = 0;    // 1 or 0 - whether to indent the first level of a list
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyletables.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example08_lists.php b/inc/3rdparty/libraries/mpdf/examples/example08_lists.php
new file mode 100644 (file)
index 0000000..a716d88
--- /dev/null
@@ -0,0 +1,137 @@
+<?php
+
+$html = '
+<style>
+ol, ul { text-align: justify; 
+}
+
+.lista { list-style-type: upper-roman; }
+.listb{ list-style-type: decimal; font-family: sans-serif; color: blue; font-weight: bold; font-style: italic; font-size: 19pt; }
+.listc{ list-style-type: upper-alpha; text-indent: 25mm; }
+.listd{ list-style-type: lower-alpha; color: teal; line-height: 2; }
+.liste{ list-style-type: disc; }
+</style>
+
+
+<h1>mPDF</h1>
+<h2>Lists</h2>
+
+<div style="background-color:#ddccff; padding:0pt; border: 1px solid #555555;">
+<ol class="lista">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listb">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.
+</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum. 
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol>
+<li>No class specified. Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</div>
+';
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->list_align_style = 'L'; // Determines alignment of numbers in numbered lists
+$mpdf->list_number_suffix = ')';
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example09_forms.php b/inc/3rdparty/libraries/mpdf/examples/example09_forms.php
new file mode 100644 (file)
index 0000000..0117a5b
--- /dev/null
@@ -0,0 +1,204 @@
+<?php
+
+
+
+
+define('_MPDF_PATH','../');
+include("../mpdf.php");
+
+
+$html = '
+<form>
+
+<b>Textarea</b>
+<textarea name="authors" rows="5" cols="80" wrap="virtual">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+
+<b>Select</b>
+<select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select> followed by text
+<br /><br />
+
+
+
+<b>Input Radio</b>
+<input type="radio" name="pre_publication" value="0" checked="checked" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="pre_publication" value="1" > Yes 
+<br /><br />
+
+
+<b>Input Radio</b>
+<input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice 
+<br /><br />
+
+
+<b>Input Text</b>
+<input type="text" size="190" name="doi" value="10.1258/jrsm.100.5.211"> 
+<br /><br />
+
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="secret"> 
+<br /><br />
+
+
+<input type="checkbox" name="QPC" value="ON" /> Checkboxes<br>
+<input type="checkbox" name="QPA" value="ON" disabled="disabled" /> Disabled<br>
+<input type="checkbox" name="QLY" value="ON" checked="checked" /> Selected
+<br /><br />
+
+<input type="submit" name="submit" value="Submit" /><br /><br />
+
+</form>
+
+<hr style="width:80%;" />
+
+<div>
+<form>
+
+<b>Textarea</b>
+<textarea name="authors" rows="5" cols="50" wrap="virtual">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+
+
+
+<b>Select</b>
+<select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select>
+<br /><br />
+
+<b>Input Radio</b>
+<input type="radio" name="pre_publication" value="0" checked="checked" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="pre_publication" value="1" > Yes 
+<br /><br />
+
+
+<b>Input Radio</b>
+<input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice 
+<br /><br />
+
+
+<b>Input Text</b>
+<input type="text" size="40" name="doi" value="10.1258/jrsm.100.5.211" /> 
+<br />
+
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="secret"> 
+<br /><br />
+
+<input type="checkbox" name="QPC" value="ON" /> Checkboxes<br>
+<input type="checkbox" name="QPA" value="ON" disabled="disabled" /> Disabled<br>
+<input type="checkbox" name="QLY" value="ON" checked="checked" /> Selected
+<br /><br />
+
+<input type="submit" name="submit" value="Submit" /><br /><br />
+
+</form>
+
+</div>
+<hr style="width:100%;" />
+
+
+<form>
+
+<table border="1" style="padding:2px;" >
+
+<tr><td valign="top" align="right"><b>Textarea</b></td><td><textarea name="title" rows="5" cols="50" wrap="virtual">TEXTINTABLE Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea></td></tr>
+
+
+
+
+<tr><td valign="top" align="right"><b>Select</b></td><td><select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select> <input type="hidden" name="old_status" value="A" /> </td></tr>
+
+<tr><td valign="bottom" align="right"><b>Input Radio</b></td><td><input type="radio" name="pre_publication" value="0"  checked > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="pre_publication" value="1" > Yes </td></tr>
+
+
+<tr><td valign="top" align="right"><b>Input Radio</b></td><td><input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice </td></tr>
+
+<tr><td valign="top" align="right"><b>Input Text</b></td><td><input type="text" size="40" name="doi" value="10.1258/jrsm.100.5.211"> </td>
+</tr>
+</table>
+
+<br />
+<table border="1" style="padding:8px;">
+
+<tr><td valign="top" align="right"><b>Checkbox</b></td><td></td></tr>
+
+<tr><td><input type="checkbox" name="QPC" value="ON" > Checkboxes<br></td><td><input type="checkbox" name="QSC" value="ON" > Gardening</td></tr>
+
+<tr><td><input type="checkbox" name="QPA" value="ON" > Holidays<br></td><td><input type="checkbox" name="QPD" value="ON" > Motoring<br></td></tr>
+
+<tr><td><input type="checkbox" name="QLY" value="ON" checked="checked" > Books</td><td><input type="checkbox" name="QCA" value="ON" > Theatre</td></tr>
+
+<tr><td><input type="checkbox" name="QNU" value="ON" checked="checked" > Selected option</td><td><input type="checkbox" name="QET" value="ON" > Musicals</td></tr><tr><td><input type="checkbox" name="QBE" value="ON" > Eating out</td><td><input type="checkbox" name="QPY" value="ON" > Events</td></tr>
+
+
+
+<tr><td>
+<input type="submit" name="submit" value="Submit" /><br />
+</td><td></td></tr></table>
+</form>
+
+
+<form>
+
+<b>Input Radio</b>
+<input type="radio" name="pre_publication" value="0" checked="checked" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="pre_publication" value="1" > Yes  
+
+<br /><br />
+
+<input type="hidden" name="doi" value="10.1258/jrsm.100.5.211" /> 
+
+<b>Input Radio</b>
+<input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice   
+
+<br /><br />
+
+
+<b>Input Text</b><br />
+
+Input text: <input type="text" size="40" name="doi" value="10.1258/jrsm.100.5.211" /> <br />
+
+Password: <input type="password" size="40" name="doi" value="pallcare" /> 
+<br /><br />
+
+Checkboxes: <br />
+<input type="checkbox" name="QPC" value="ON" /> Checkboxes<br>
+<input type="checkbox" name="QPA" value="ON" disabled="disabled" /> Disabled<br>
+<input type="checkbox" name="QLY" value="ON" checked="checked" /> Selected
+<br /><br />
+
+<input type="image" name="submit" src="goto.gif" />
+<input type="button" name="submit" value="Button" />
+<input type="reset" name="submit" value="Reset" />
+<input type="submit" name="submit" value="Submit" /> 
+</form>
+
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+if (isset($_REQUEST['html'])) { echo '<html><head><style>'.file_get_contents('mpdfstyletables.css').'</style></head><body>'.$html.'</body></html>'; exit; }
+if (isset($_REQUEST['source'])) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+//==============================================================
+//==============================================================
+//==============================================================
+
+$mpdf=new mPDF('c'); 
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyletables.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->SetColumns(2,'J');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php b/inc/3rdparty/libraries/mpdf/examples/example10_floating_and_fixed_position_elements.php
new file mode 100644 (file)
index 0000000..8a485e3
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+
+$html = '
+<style>
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+}
+h4 {
+       font-family: sans;
+       font-weight: bold;
+       margin-top: 1em;
+       margin-bottom: 0.5em;
+}
+div {
+       padding:1em; 
+       margin-bottom: 1em;
+       text-align:justify; 
+}
+.myfixed1 { position: absolute; 
+       overflow: visible; 
+       left: 0; 
+       bottom: 0; 
+       border: 1px solid #880000; 
+       background-color: #FFEEDD; 
+       background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5;  
+       padding: 1.5em; 
+       font-family:sans; 
+       margin: 0;
+}
+.myfixed2 { position: fixed; 
+       overflow: auto; 
+       right: 0;
+       bottom: 0mm; 
+       width: 65mm; 
+       border: 1px solid #880000; 
+       background-color: #FFEEDD; 
+       background-gradient: linear #dec7cd #fff0f2 0 1 0 0.5;  
+       padding: 0.5em; 
+       font-family:sans; 
+       margin: 0;
+       rotate: 90;
+}
+</style>
+
+<body>
+<h1>mPDF</h1>
+<h2>Floating & Fixed Position elements</h2>
+
+<h4>CSS "Float"</h4>
+<div class="gradient">
+Block elements can be positioned alongside each other using the CSS property float: left or right. The clear property can also be used, set as left|right|both. Float is only supported on block elements (i.e. not SPAN etc.) and is not fully compliant with the CSS specification. 
+Float only works properly if a width is set for the float, otherwise the width is set to the maximum available (full width, or less if floats already set).
+<br />
+Margin-right can still be set for a float:right and vice-versa.
+<br />
+A block element next to a float has the padding adjusted so that content fits in the remaining width. Text next to a float should wrap correctly, but backgrounds and borders will overlap and/or lie under the floats in a mess.
+<br />
+NB The width that is set defines the width of the content-box. So if you have two floats with width=50% and either of them has padding, margin or border, they will not fit together on the page.
+</div>
+
+<div class="gradient" style="float: right; width: 28%; margin-bottom: 0pt; ">
+<img src="tiger.wmf" style="float:right" width="70" />This is text in a &lt;div&gt; element that is set to float:right and width:28%. It also has an image with float:right inside. With this exception, you cannot nest elements with the float property set inside one another.
+</div>
+<div class="gradient" style="float: left; width: 54%; margin-bottom: 0pt; ">
+This is text in a &lt;div&gt; element that is set to float:left and width:54%.
+</div>
+
+<div style="clear: both; margin: 0pt; padding: 0pt; "></div>
+This is text that follows a &lt;div&gt; element that is set to clear:both.
+
+<h4>CSS "Position"</h4>
+At the bottom of the page are two DIV elements with position:fixed and position:absolute set
+
+<div class="myfixed1">1 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.</div>
+
+<div class="myfixed2">2 Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.</div>
+
+
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php b/inc/3rdparty/libraries/mpdf/examples/example11_overflow_auto.php
new file mode 100644 (file)
index 0000000..6fd990f
--- /dev/null
@@ -0,0 +1,81 @@
+<?php
+
+$html = '
+<div style="position:fixed; left: 0; right: 0; bottom: 0; top: 0;">
+<h1>mPDF</h1>
+<h4>Fixed-position block element with Autofit</h4>
+<div>Using the CSS properties position and overflow:auto it is possible to fit text to a single page:</div>
+
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<div><img src="tiger.wmf" style="float:right;">DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+<div><img src="klematis.jpg" style="opacity: 0.5; float: left;" />DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+
+<blockquote>Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.</blockquote>
+
+<address>Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.</address>
+
+<div><a href="dummy'.time().'">Hyperlink (&lt;a&gt;)</a></div>
+<div><a href="#top">Hyperlink (&lt;a&gt;)</a></div>
+<div><a href="http://www.pallcare.info">Hyperlink (&lt;a&gt;)</a></div>
+
+<div>Styles - <tt>tt(teletype)</tt> <i>italic</i> <b>bold</b> <big>big</big> <small>small</small> <em>emphasis</em> <strong>strong</strong> <br />new lines<br>
+<code>code</code> <samp>sample</samp> <kbd>keyboard</kbd> <var>variable</var> <cite>citation</cite> <abbr>abbr.</abbr> <acronym>ACRONYM</acronym> <sup>sup</sup> <sub>sub</sub> <strike>strike</strike> <s>strike-s</s> <u>underline</u> <del>delete</del> <ins>insert</ins> <q>To be or not to be</q> <font face="sans-serif" color="#880000" size="5">font changing face, size and color</font>
+</div>
+
+<p style="font-size:15pt; color:#440066">Paragraph using the in-line style to determine the font-size (15pt) and colour</p>
+
+<h3>Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT</h3>
+<p>This is <s>strikethrough</s> in <b><s>block</s></b> and <small>small <s>strikethrough</s> in <i>small span</i></small> and <big>big <s>strikethrough</s> in big span</big> and then <u>underline and <s>strikethrough and <sup>sup</sup></s></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p>This is a <font color="#008800">green reference<sup>32-47</sup></font> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p> 
+
+<p><big>Repeated in <u>BIG</u>: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p> 
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p>
+
+<p>The above repeated, but starting with a paragraph with font-size specified (7pt)</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <small>small <s>strikethrough</s> in small span</small> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <big>big <s>strikethrough</s> in big span</big> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p>
+
+<p><small>This tests <u>underline</u> and <s>strikethrough</s> when they are <s><u>used together</u></s> as they both use text-decoration</small></p>
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p> 
+
+<p style="font-size:7pt;"><big>Repeated in BIG but with font-size set to 7pt by in-line css: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p>
+
+<p>Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+
+<p>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis. </p>
+</div>
+
+';
+
+
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c'); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php b/inc/3rdparty/libraries/mpdf/examples/example12_paging_html.php
new file mode 100644 (file)
index 0000000..44c5374
--- /dev/null
@@ -0,0 +1,92 @@
+<?php
+
+
+$html = '
+
+<pageheader name="myHeaderNoNum" content-left="My Book Title" content-center="myHeader1" content-right="" header-style="font-family:sans-serif; font-size:8pt; color:#880000;" header-style-right="font-size:12pt; font-weight:bold; font-style:italic; color:#088000;" line="on" />
+
+<pageheader name="myHeaderNoNumEven" content-left="" content-center="myHeader1Even" content-right="{DATE j-m-Y}" header-style="font-family:sans-serif; font-size:8pt; color:#000088;" header-style-left="font-weight:bold; " line="on" />
+
+<pageheader name="myHeader1" content-left="My Book Title" content-center="myHeader1" content-right="{PAGENO}" header-style="font-family:sans-serif; font-size:8pt; color:#880000;" header-style-right="font-size:12pt; font-weight:bold; font-style:italic; color:#088000;" line="on" />
+
+<pageheader name="myHeader1Even" content-left="{PAGENO}" content-center="myHeader1Even" content-right="{DATE j-m-Y}" header-style="font-family:sans-serif; font-size:8pt; color:#000088;" header-style-left="font-weight:bold; " line="on" />
+
+
+<htmlpageheader name="myHTMLHeader1" style="display:none">
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%">Left header p <span style="font-size:14pt;">{PAGENO}</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;"><span style="font-weight: bold;">Right header</span></td>
+</tr></table>
+</htmlpageheader>
+
+<htmlpageheader name="myHTMLHeader1Even" style="display:none">
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%"><span style="font-weight: bold;">Outer header</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;">Inner header p <span style="font-size:14pt;">{PAGENO}</span></td>
+</tr></table>
+</htmlpageheader>
+
+<pagefooter name="myFooter1" content-left="My Book Title" content-center="myFooter1" content-right="{PAGENO}" footer-style="font-family:sans-serif; font-size:8pt; font-weight:bold; color:#008800;" footer-style-left="" line="on" />
+
+<pagefooter name="myFooter1Even" content-left="{PAGENO}" content-center="myFooter1Even" content-right="{DATE j-m-Y}" footer-style="font-family:sans-serif; font-size:10pt; color:#000880;" footer-style-left="font-weight:bold; " line="on" />
+
+
+<setpageheader name="myHeaderNoNum" page="O" value="on" show-this-page="1" />
+<setpageheader name="myHeaderNoNumEven" page="E" value="on" />
+
+<h1 style="margin-collapse: none; margin-top: 35mm">Introduction</h1>
+<div>Introduction</div>
+<p>Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. <!--Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. -->Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.</p>
+
+<tocpagebreak toc-orientation="landscape" font="mono" font-size="12" indent="5" paging="on" links="on" resetpagenum="1" suppress="off" pagenumstyle="1" orientation="portrait" margin-top="55mm" odd-header-name="myHeader1" odd-header-value="1" even-header-name="html_myHTMLHeader1Even" even-header-value="1" odd-footer-name="myFooter1" odd-footer-value="1" even-footer-name="myFooter1Even" even-footer-value="1"  toc-odd-header-name="myHeaderNoNum" toc-odd-header-value="1" toc-even-header-name="myHeaderNoNumEven" toc-even-header-value="1" toc-odd-footer-name="" toc-odd-footer-value="-1" toc-even-footer-name="" toc-even-footer-value="-1" />
+
+<h1>Section 2<tocentry content="Section 2" /></h1>
+<div>Section 2</div>
+<p>Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.</p>
+
+<pagebreak type="NEXT-ODD" margin-left="60mm" margin-right="40mm" margin-top="55mm" margin-bottom="30mm" margin-header="12mm" margin-footer="12mm" odd-header-name="html_myHTMLHeader1" odd-header-value="1" even-header-name="myHeader1Even" even-header-value="1" odd-footer-name="myFooter1" odd-footer-value="1" even-footer-name="myFooter1Even" even-footer-value="1" />
+
+<h1>Section 3<tocentry content="Section 3" /></h1>
+<div>Section 3</div>
+<p>Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.</p>
+
+<pagebreak orientation="landscape" type="NEXT-ODD" margin-left="60mm" margin-right="40mm" margin-top="55mm" margin-bottom="30mm" margin-header="12mm" margin-footer="12mm" />
+
+<h1>Section 4<tocentry content="Section 4" /></h1>
+<div>Section 4</div>
+<p>Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.</p>
+
+
+<pagebreak orientation="portrait" type="NEXT-ODD" margin-left="40mm" margin-right="20mm" odd-header-name="myHeader1" odd-header-value="1" even-header-name="myHeader1Even" even-header-value="1" odd-footer-name="myFooter1" odd-footer-value="1" even-footer-name="myFooter1Even" even-footer-value="1" suppress="off" />
+
+
+<h1>Section 5<tocentry content="Section 5" /></h1>
+<div>Section 5</div>
+<p>Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.</p>
+
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+$mpdf=new mPDF('c'); 
+
+$mpdf->mirrorMargins = true;
+
+$mpdf->SetDisplayMode('fullpage','two');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php b/inc/3rdparty/libraries/mpdf/examples/example13_paging_css.php
new file mode 100644 (file)
index 0000000..256a8a0
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+
+
+
+$html = '
+<htmlpageheader name="myHTMLHeaderOdd" style="display:none">
+<div style="background-color:#BBEEFF" align="center"><b>{PAGENO}</b></div>
+</htmlpageheader>
+<htmlpageheader name="myHTMLHeaderEven" style="display:none">
+<div style="background-color:#EFFBBE" align="center"><b><i>{PAGENO}</i></b></div>
+</htmlpageheader>
+<htmlpagefooter name="myHTMLFooterOdd" style="display:none">
+<div style="background-color:#CFFFFC" align="center"><b>{PAGENO}</b></div>
+</htmlpagefooter>
+<htmlpagefooter name="myHTMLFooterEven" style="display:none">
+<div style="background-color:#FFCCFF" align="center"><b><i>{PAGENO}</i></b></div>
+</htmlpagefooter>
+
+
+<pageheader name="myHeader2Odd" content-left="My Book Title" content-center="myHeader2Odd" content-right="{PAGENO}" header-style="font-family:sans-serif; font-size:8pt; font-weight:bold; color:#008800;" header-style-left="" line="on" />
+
+<pagefooter name="myFooter2Even" content-left="{PAGENO}" content-center="myFooter2Even" content-right="{DATE j-m-Y}" footer-style="font-family:sans-serif; font-size:10pt; color:#000880;" footer-style-left="font-weight:bold; " line="on" />
+
+
+<h1 class="heading1">mPDF 1</h1>
+<h2>Paged Media using CSS</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+
+
+<h1 class="heading2">mPDF 2</h1>
+<h2>Paged Media using CSS</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+
+
+<h1 class="heading3">mPDF 3</h1>
+<h2>Paged Media using CSS</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+
+
+<h1 class="heading4">mPDF 4</h1>
+<h2>Paged Media using CSS</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+
+
+<h1 class="heading5">mPDF 5</h1>
+<h2>Paged Media using CSS</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+
+
+<h1 class="heading6">mPDF 6</h1>
+<h2>Paged Media using CSS</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+
+
+<h1 class="heading7">mPDF 7</h1>
+<h2>Paged Media using CSS</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+
+';
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',5,5,5,5,0,0); 
+
+$mpdf->mirrorMargins = 1;      // Use different Odd/Even headers and footers and mirror margins (1 or 0)
+
+$mpdf->SetDisplayMode('fullpage','two');
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstylePaged.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php b/inc/3rdparty/libraries/mpdf/examples/example14_page_numbers_ToC_Index_Bookmarks.php
new file mode 100644 (file)
index 0000000..5404698
--- /dev/null
@@ -0,0 +1,148 @@
+<?php
+
+
+
+//==============================================================
+$lorem = "<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p><p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin vel sem at odio varius pretium. Maecenas sed orci. Maecenas varius. Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing. </p><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>";
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+$html = '
+<!-- defines the headers/footers -->
+
+<!--mpdf
+
+<htmlpageheader name="myHTMLHeader">
+<div style="text-align: right; border-bottom: 1px solid #000000; font-family: serif; font-size: 8pt;">Odd Header</div>
+</htmlpageheader>
+
+<htmlpageheader name="myHTMLHeaderEven">
+<div style="text-align: left; border-bottom: 1px solid #000000; font-family: serif; font-size: 8pt;">Even Header</div>
+</htmlpageheader>
+
+<htmlpagefooter name="myHTMLFooter">
+<table width="100%" style="border-top: 1px solid #000000; vertical-align: top; font-family: sans; font-size: 8pt;"><tr>
+<td width="33%">{DATE Y-m-d}</td>
+<td width="33%" align="center"><span style="font-size:12pt;">{PAGENO}</span></td>
+<td width="33%" style="text-align: right;">Odd Footer</td>
+</tr></table>
+</htmlpagefooter>
+
+<htmlpagefooter name="myHTMLFooterEven">
+<table width="100%" style="border-top: 1px solid #000000; vertical-align: top; font-family: sans; font-size: 8pt;"><tr>
+<td width="33%">Even Footer</td>
+<td width="33%" align="center"><span style="font-size:12pt;">{PAGENO}</span></td>
+<td width="33%" style="text-align: right;">{DATE Y-m-d}</td>
+</tr></table>
+</htmlpagefooter>
+
+
+<htmlpageheader name="tocHTMLHeader">
+<div style="text-align: right; border-bottom: 1px solid #000000; font-family: serif; font-size: 8pt;">ToC Odd Header</div>
+</htmlpageheader>
+
+<htmlpageheader name="tocHTMLHeaderEven">
+<div style="text-align: left; border-bottom: 1px solid #000000; font-family: serif; font-size: 8pt;">ToC Even Header</div>
+</htmlpageheader>
+
+<htmlpagefooter name="tocHTMLFooter">
+<table width="100%" style="border-top: 1px solid #000000; vertical-align: top; font-family: sans; font-size: 8pt;"><tr>
+<td width="33%">{DATE Y-m-d}</td>
+<td width="33%" align="center"><span style="font-size:12pt;">{PAGENO}</span></td>
+<td width="33%" style="text-align: right;">ToC Odd Footer</td>
+</tr></table>
+</htmlpagefooter>
+
+<htmlpagefooter name="tocHTMLFooterEven">
+<table width="100%" style="border-top: 1px solid #000000; vertical-align: top; font-family: sans; font-size: 8pt;"><tr>
+<td width="33%">ToC Even Footer</td>
+<td width="33%" align="center"><span style="font-size:12pt;">{PAGENO}</span></td>
+<td width="33%" style="text-align: right;">{DATE Y-m-d}</td>
+</tr></table>
+</htmlpagefooter>
+
+mpdf-->
+
+
+<h1>mPDF</h1>
+<h2>Table of Contents & Bookmarks</h2>
+
+<!-- set the headers/footers - they will occur from here on in the document -->
+<tocpagebreak paging="on" links="on" toc-odd-header-name="html_tocHTMLHeader" toc-even-header-name="html_tocHTMLHeaderEven" toc-odd-footer-name="html_tocHTMLFooter" toc-even-footer-name="html_tocHTMLFooterEven" toc-odd-header-value="on" toc-even-header-value="on" toc-odd-footer-value="on" toc-even-footer-value="on" toc-preHTML="&lt;h2&gt;Contents&lt;/h2&gt;" toc-bookmarkText="Content list" resetpagenum="1" pagenumstyle="A" odd-header-name="html_myHTMLHeader" odd-header-value="on" even-header-name="html_myHTMLHeaderEven" even-header-value="ON" odd-footer-name="html_myHTMLFooter" odd-footer-value="on" even-footer-name="html_myHTMLFooterEven" even-footer-value="on" outdent="2em" />
+
+';
+
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
+
+$mpdf->mirrorMargins = 1;
+
+$mpdf->SetDisplayMode('fullpage','two');
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyleA4.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+
+// Alternative ways to mark ToC entries and Bookmarks
+// This will automatically generate entries from the <h4> tag
+$mpdf->h2toc = array('H4'=>0);
+$mpdf->h2bookmarks = array('H4'=>0);
+
+//==============================================================
+// CONTENT
+for ($j = 1; $j<7; $j++) { 
+   if ($j==2)  $mpdf->WriteHTML('<pagebreak resetpagenum="0" pagenumstyle="a" />',2);
+   if ($j==3)  $mpdf->WriteHTML('<pagebreak resetpagenum="1" pagenumstyle="I" />',2);
+   if ($j==4)  $mpdf->WriteHTML('<pagebreak resetpagenum="0" pagenumstyle="i" />',2);
+   if ($j==5)  $mpdf->WriteHTML('<pagebreak resetpagenum="0" pagenumstyle="1" />',2);
+   if ($j==6)  $mpdf->WriteHTML('<pagebreak resetpagenum="1" pagenumstyle="A" type="NEXT-ODD" /><div style="color:#AA0000">ODD</div>',2);
+   for ($x = 1; $x<7; $x++) {
+
+       // Alternative way to mark ToC entries and Bookmarks manually
+//     $mpdf->WriteHTML('<h4>Section '.$j.'.'.$x.'<bookmark content="Section '.$j.'.'.$x.'" level="0" /><tocentry content="Section '.$j.'.'.$x.'" level="0" /></h4>',2);
+
+       // Using Automatic generation from <h4> tag
+       $mpdf->WriteHTML('<h4>Section '.$j.'.'.$x.'</h4>',2);
+
+       $html = '';
+       // Split $lorem into words
+       $words = preg_split('/([\s,\.]+)/',$lorem,-1,PREG_SPLIT_DELIM_CAPTURE);
+       foreach($words as $i => $e) {
+          if($i%2==0) {
+               $y =  rand(1,10);       // every tenth word
+               if (preg_match('/^[a-zA-Z]{4,99}$/',$e) && ($y > 8)) {
+                       // If it is just a word use it as an index entry
+                       $content = ucfirst(trim($e));
+                       $html .= '<indexentry content="'.$content.'" />';
+                       $html .= '<i>'.$e . '</i>';
+               }
+               else { $html .= $e; }
+          }
+          else { $html .= $e; }
+       }
+       $mpdf->WriteHTML($html);
+   }
+}
+//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+// INDEX
+$html = '<pagebreak type="next-odd" />
+<h2>Index</h2>
+<indexinsert cols="2" offset="5" usedivletters="on" div-font-size="15" gap="5" font="Trebuchet" div-font="sans-serif" links="on" />
+';
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php b/inc/3rdparty/libraries/mpdf/examples/example15_headers_method_1.php
new file mode 100644 (file)
index 0000000..7943bde
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('c'); 
+
+$mpdf->mirrorMargins = 1;      // Use different Odd/Even headers and footers and mirror margins
+
+$mpdf->defaultheaderfontsize = 10;     /* in pts */
+$mpdf->defaultheaderfontstyle = B;     /* blank, B, I, or BI */
+$mpdf->defaultheaderline = 1;  /* 1 to include line below header/above footer */
+
+$mpdf->defaultfooterfontsize = 12;     /* in pts */
+$mpdf->defaultfooterfontstyle = B;     /* blank, B, I, or BI */
+$mpdf->defaultfooterline = 1;  /* 1 to include line below header/above footer */
+
+
+$mpdf->SetHeader('{DATE j-m-Y}|{PAGENO}/{nb}|My document');
+$mpdf->SetFooter('{PAGENO}');  /* defines footer for Odd and Even Pages - placed at Outer margin */
+
+$mpdf->SetFooter(array(
+       'L' => array(
+               'content' => 'Text to go on the left',
+               'font-family' => 'sans-serif',
+               'font-style' => 'B',    /* blank, B, I, or BI */
+               'font-size' => '10',    /* in pts */
+       ),
+       'C' => array(
+               'content' => '- {PAGENO} -',
+               'font-family' => 'serif',
+               'font-style' => 'BI',
+               'font-size' => '18',    /* gives default */
+       ),
+       'R' => array(
+               'content' => 'Printed @ {DATE j-m-Y H:m}',
+               'font-family' => 'monospace',
+               'font-style' => '',
+               'font-size' => '10',
+       ),
+       'line' => 1,            /* 1 to include line below header/above footer */
+), 'E' /* defines footer for Even Pages */
+);
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Headers & Footers Method 1</h2>
+<h3>Odd / Right page</h3>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+<pagebreak />
+<h3>Even / Left page</h3>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+';
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php b/inc/3rdparty/libraries/mpdf/examples/example16_headers_method_2.php
new file mode 100644 (file)
index 0000000..8ca966d
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,47,47,10,10); 
+
+$mpdf->mirrorMargins = 1;      // Use different Odd/Even headers and footers and mirror margins
+
+$header = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%">Left header p <span style="font-size:14pt;">{PAGENO}</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;"><span style="font-weight: bold;">Right header</span></td>
+</tr></table>
+';
+$headerE = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%"><span style="font-weight: bold;">Outer header</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;">Inner header p <span style="font-size:14pt;">{PAGENO}</span></td>
+</tr></table>
+';
+
+$footer = '<div align="center">See <a href="http://mpdf1.com/manual/index.php">documentation manual</a></div>';
+$footerE = '<div align="center">See <a href="http://mpdf1.com/manual/index.php">documentation manual</a></div>';
+
+
+$mpdf->SetHTMLHeader($header);
+$mpdf->SetHTMLHeader($headerE,'E');
+$mpdf->SetHTMLFooter($footer);
+$mpdf->SetHTMLFooter($footerE,'E');
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Headers & Footers Method 2</h2>
+<h3>Odd / Right page</h3>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+<pagebreak />
+<h3>Even / Left page</h3>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+';
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php b/inc/3rdparty/libraries/mpdf/examples/example17_headers_method_3.php
new file mode 100644 (file)
index 0000000..b0d39d4
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+
+
+
+$html = '
+<!-- defines the headers/footers - this must occur before the headers/footers are set -->
+
+<!--mpdf
+<pageheader name="odds" content-right="My document" header-style-right="color: #880000; font-style: italic;" line="1" />
+<pageheader name="evens" content-right="{DATE j-m-Y}" content-center="{PAGENO}/{nb}" header-style="color: #880000; font-style: italic;" />
+<pagefooter name="odds" content-right="Odd Footer" footer-style-right="color: #880000; font-style: italic;" line="1" />
+<pagefooter name="evens" content-right="{DATE j-m-Y}" content-center="{PAGENO}/{nb}" footer-style="color: #880000; font-style: italic;" />
+
+<pageheader name="display" content-center="New header called Display" header-style="color: #000088; font-weight: bold;" />
+mpdf-->
+
+<!-- set the headers/footers - they will occur from here on in the document -->
+<!--mpdf
+<setpageheader name="odds" page="odd" value="on" show-this-page="1" />
+<setpageheader name="evens" page="even" value="1" />
+<setpagefooter name="odds" page="O" value="on" />
+<setpagefooter name="evens" page="E" value="1" />
+mpdf-->
+
+<h1>mPDF</h1>
+<h2>Headers & Footers Method 3</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+<pagebreak />
+
+<h2>Headers & Footers Method 3</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<pagebreak odd-header-name="display" odd-header-value="1" even-header-name="display" even-header-value="1" />
+
+<h2>Headers & Footers</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
+
+$mpdf->mirrorMargins = 1;      // Use different Odd/Even headers and footers and mirror margins
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php b/inc/3rdparty/libraries/mpdf/examples/example18_headers_method_4.php
new file mode 100644 (file)
index 0000000..16e8bca
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+
+
+
+$html = '
+<!-- defines the headers/footers - this must occur before the headers/footers are set -->
+
+<!--mpdf
+
+<htmlpageheader name="myHTMLHeader1">
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%">Left header p <span style="font-size:14pt;">{PAGENO}</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;"><span style="font-weight: bold;">myHTMLHeader1</span></td>
+</tr></table>
+</htmlpageheader>
+
+<htmlpageheader name="myHTMLHeader1Even">
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%"><span style="font-weight: bold;">myHTMLHeader1Even</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;">Inner header p <span style="font-size:14pt;">{PAGENO}</span></td>
+</tr></table>
+</htmlpageheader>
+
+<htmlpageheader name="myHTMLHeader2">
+<table width="100%" style="border-bottom: 1px solid #880000; vertical-align: bottom; font-family: sans; font-size: 9pt; color: #880000;"><tr>
+<td width="33%">myHTMLHeader2 p.<span style="font-size:14pt;">{PAGENO}</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;"><span style="font-weight: bold;">myHTMLHeader2</span></td>
+</tr></table>
+</htmlpageheader>
+
+<htmlpageheader name="myHTMLHeader2Even">
+<table width="100%" style="border-bottom: 1px solid #880000; vertical-align: bottom; font-family: sans; font-size: 9pt; color: #880000;"><tr>
+<td width="33%"><span style="font-weight: bold;">myHTMLHeader2Even</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;">Inner header p <span style="font-size:14pt;">{PAGENO}</span></td>
+</tr></table>
+</htmlpageheader>
+
+mpdf-->
+
+<!-- set the headers/footers - they will occur from here on in the document -->
+<!--mpdf
+<sethtmlpageheader name="myHTMLHeader1" page="O" value="on" show-this-page="1" />
+<sethtmlpageheader name="myHTMLHeader1Even" page="E" value="on" />
+mpdf-->
+
+<h1>mPDF</h1>
+<h2>Headers & Footers Method 4</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+<pagebreak />
+
+<h2>Headers & Footers Method 4</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<!-- Note the html_ prefix when referencing an HTML header using one of the pagebreaks -->
+<pagebreak odd-header-name="html_myHTMLHeader2" odd-header-value="1" even-header-name="html_myHTMLHeader2Even" even-header-value="1" />
+
+<h2>Headers & Footers Method 4</h2>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,47,47,10,10); 
+
+$mpdf->mirrorMargins = 1;      // Use different Odd/Even headers and footers and mirror margins
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php b/inc/3rdparty/libraries/mpdf/examples/example19_page_sizes.php
new file mode 100644 (file)
index 0000000..6c3ca94
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+
+
+$hhtml = '
+<htmlpageheader name="myHTMLHeaderOdd" style="display:none">
+<div style="background-color:#BBEEFF" align="center"><b>&nbsp;{PAGENO}&nbsp;</b></div>
+</htmlpageheader>
+<htmlpagefooter name="myHTMLFooterOdd" style="display:none">
+<div style="background-color:#CFFFFC" align="center"><b>&nbsp;{PAGENO}&nbsp;</b></div>
+</htmlpagefooter>
+<sethtmlpageheader name="myHTMLHeaderOdd" page="O" value="on" show-this-page="1" />
+<sethtmlpagefooter name="myHTMLFooterOdd" page="O" value="on" show-this-page="1" />
+';
+
+//==============================================================
+$html = '
+<h1>mPDF Page Sizes</h1>
+<h3>Changing page (sheet) sizes within the document</h3>
+';
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4'); 
+
+$mpdf->WriteHTML($hhtml);
+
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML('<p>This should print on an A4 (portrait) sheet</p>');
+
+$mpdf->WriteHTML('<tocpagebreak sheet-size="A4-L" toc-sheet-size="A5" toc-preHTML="This ToC should print on an A5 sheet" />');
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML('<tocentry content="A4 landscape" /><p>This page appears just after the ToC and should print on an A4 (landscape) sheet</p>');
+
+$mpdf->WriteHTML('<pagebreak sheet-size="A5-L" />');
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML('<tocentry content="A5 landscape" /><p>This should print on an A5 (landscape) sheet</p>');
+
+$mpdf->WriteHTML('<pagebreak sheet-size="Letter" />');
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML('<tocentry content="Letter portrait" /><p>This should print on an Letter sheet</p>');
+
+$mpdf->WriteHTML('<pagebreak sheet-size="150mm 150mm" />');
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML('<tocentry content="150mm square" /><p>This should print on a sheet 150mm x 150mm</p>');
+
+$mpdf->WriteHTML('<pagebreak sheet-size="11.69in 8.27in" />');
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML('<tocentry content="A4 landscape (ins)" /><p>This should print on a sheet 11.69in x 8.27in = A4 landscape</p>');
+
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example20_justify.php b/inc/3rdparty/libraries/mpdf/examples/example20_justify.php
new file mode 100644 (file)
index 0000000..7e9f896
--- /dev/null
@@ -0,0 +1,130 @@
+<?php
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Justification</h2>
+
+<h4>Tables</h4>
+<p>Text can be justified in table cells using in-line or stylesheet CSS. (Note that &lt;p&gt; tags are removed within cells along with any style definition or attributes.)</p>
+<table class="bpmTopnTailC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td style="text-align:justify;"><p>Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </p></td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<h4>Testing Justification with Long Words</h4>
+<p>http://www-950.ibm.com/software/globalization/icu/demo/converters?s=ALL&amp;snd=4356&amp;dnd=4356</p>
+<h5>Should not split</h5>
+<p>Maecenas feugiat pede vel risus. Nulla et lectus eleifend <i>verylongwordthatwontsplit</i> neque sit amet erat</p>
+<p>Maecenas feugiat pede vel risus. Nulla et lectus eleifend et <i>verylongwordthatwontsplit</i> neque sit amet erat</p>
+
+<h5>Non-breaking Space &amp;nbsp;</h5><p>The next example has a non-breaking space between <i>eleifend</i> and the very long word.</p><p>Maecenas feugiat pede vel risus. Nulla et lectus eleifend&nbsp;verylongwordthatwontsplitanywhere neque sit amet erat</p><p>Nbsp will only work in fonts that have a glyph to represent the character i.e. not in the CJK languages nor some Unicode fonts.</p>
+
+
+
+<h4>Testing Justification with mixed Styles</h4>
+<p>This is <s>strikethrough</s> in <b><s>block</s></b> and <small>small <s>strikethrough</s> in <i>small span</i></small> and <big>big <s>strikethrough</s> in big span</big> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+<p>This is a <font color="#008800">green reference<sup>32-47</sup></font> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s> and then more text.
+</p> 
+<p><big>Repeated in <u>BIG</u>: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big>
+</p> 
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small> 
+</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <big>big <s>strikethrough</s> in big span</big> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+<p style="font-size:7pt;">This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s> then more text.
+</p> 
+<p></p>
+<p style="font-size:7pt;">
+<big>Repeated in BIG: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big>
+</p>
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyletables.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+// SPACING
+$mpdf->WriteHTML("<h4>Spacing</h4><p>mPDF uses both letter- and word-spacing for text justification. The default is a mixture of both, set by the configurable values jSWord and jSmaxChar. (Only word spacing is used when cursive languages such as Arabic or Indic are detected.) </p>");
+
+$mpdf->jSWord = 0;     // Proportion (/1) of space (when justifying margins) to allocate to Word vs. Character
+$mpdf->jSmaxChar = 0;  // Maximum spacing to allocate to character spacing. (0 = no maximum)
+$mpdf->WriteHTML("<h5>Character spacing</h5><p>Maecenas feugiat pede vel risus. Nulla et lectus eleifend <i>verylongwordthatwontsplitanywhere</i> neque sit amet erat</p>");
+
+// Back to default settings
+$mpdf->jSWord = 0.4;
+$mpdf->jSmaxChar = 2;
+$mpdf->WriteHTML("<h5>Word spacing</h5><p style=\"letter-spacing:0\">Maecenas feugiat pede vel risus. Nulla et lectus eleifend <i>verylongwordthatwontsplitanywhere</i> neque sit amet erat</p>");
+
+$mpdf->WriteHTML("<h5>Mixed Character and Word spacing</h5><p>Maecenas feugiat pede vel risus. Nulla et lectus eleifend <i>verylongwordthatwontsplitanywhere</i> neque sit amet erat</p>");
+
+
+
+
+$mpdf->Output();
+exit;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php b/inc/3rdparty/libraries/mpdf/examples/example21_hyphenation.php
new file mode 100644 (file)
index 0000000..e23cce8
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+
+$html = '
+<h1>Little Women</h1>
+<h2>Chapter One</h2>
+<h4>Playing Pilgrims</h4>
+
+<p> Christmas won\'t be Christmas without any presents,  grumbled Jo, lying on the rug.<p> It\'s so dreadful to be poor!  sighed Meg, looking down at her old dress.<p> I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all,  added little Amy, with an injured sniff.<p> We\'ve got Father and Mother, and each other,  said Beth contentedly from her corner.<p>The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly,  We haven\'t got Father, and shall not have him for a long time.  She didn\'t say  perhaps never,  but each silently added it, thinking of Father far away, where the fighting was.<p>Nobody spoke for a minute; then Meg said in an altered tone,  You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t  And Meg shook her head, as she thought regretfully of all the pretty things she wanted.<p> But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long,  said Jo, who was a bookworm.<p> I planned to spend mine in new music,  said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.<p> I shall get a nice box of Faber\'s drawing pencils. I really need them,  said Amy decidedly.<p> Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it,  cried Jo, examining the heels of her shoes in a gentlemanly manner.<p> I know I do&mdash;teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home,  began Meg, in the complaining tone again.<p> You don\'t have half such a hard time as I do,  said Jo.  How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry? <p> It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world.  It makes me cross, and my hands get so stiff, I can\'t practice well at all.  And Beth looked at her rough hands with a sigh that any one could hear that time.<p> I don\'t believe any of you suffer as I do,  cried Amy,  for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice. <p> If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle,  advised Jo, laughing.<p> I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary,  returned Amy, with dignity.<p> Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries!  said Meg, who could remember better times.<p> You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money. <p> So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say. <p> Jo does use such slang words!   observed Amy, with a reproving look at the long figure stretched on the rug.<p>Jo immediately sat up, put her hands in her pockets, and began to whistle.<p> Don\'t, Jo. It\'s so boyish! <p> That\'s why I do it. <p> I detest rude, unladylike girls! <p> I hate affected, niminy-piminy chits! <p> Birds in their little nests agree,  sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the  pecking  ended for that time.<p> Really, girls, you are both to be blamed,  said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady. <p> I\'m not!  And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty,  cried Jo, pulling off her net, and shaking down a chestnut mane.   I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman! <p>And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.<p> Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls,  said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.<p> As for you, Amy,  continued Meg,  you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang. <p> If Jo is a tomboy and Amy a goose, what am I, please?  asked Beth, ready to share the lecture.<p> You\'re a dear, and nothing else,  answered Meg warmly, and no one contradicted her, for the `Mouse\' was the pet of the family.<p>As young readers like to know `how people look\', we will take this moment to give them a little sketch of the four sisters, who sat knitting away in the twilight, while the December snow fell quietly without, and the fire crackled cheerfully within. It was a comfortable room, though the carpet was faded and the furniture very plain, for a good picture or two hung on the walls, books filled the recesses, chrysanthemums and Christmas roses bloomed in the windows, and a pleasant atmosphere of home peace pervaded it.<p>Margaret, the eldest of the four, was sixteen, and very pretty, being plump and fair, with large eyes, plenty of soft brown hair, a sweet mouth, and white hands, of which she was rather vain. Fifteen-year-old Jo was very tall, thin, and brown, and reminded one of a colt, for she never seemed to know what to do with her long limbs, which were very much in her way. She had a decided mouth, a comical nose, and sharp, gray eyes, which appeared to see everything, and were by turns fierce, funny, or thoughtful. Her long, thick hair was her one beauty, but it was usually bundled into a net, to be out of her way. Round shoulders had Jo, big hands and feet, a fly-away look to her clothes, and the uncomfortable appearance of a girl who was rapidly shooting up into a woman and didn\'t like it. Elizabeth, or Beth, as everyone called her, was a rosy, smooth-haired, bright-eyed girl of thirteen, with a shy manner, a timid voice, and a peaceful expression which was seldom disturbed. Her father called her `Little Miss Tranquillity\', and the name suited her excellently, for she seemed to live in a happy world of her own, only venturing out to meet the few whom she trusted and loved. Amy, though the youngest, was a most important person, in her own opinion at least. A regular snow maiden, with blue eyes, and yellow hair curling on her shoulders, pale and slender, and always carrying herself like a young lady mindful of her manners. What the characters of the four sisters were we will leave to be found out.<p>The clock struck six and, having swept up the hearth, Beth put a pair of slippers down to warm. Somehow the sight of the old shoes had a good effect upon the girls, for Mother was coming, and everyone brightened to welcome her. Meg stopped lecturing, and lighted the lamp, Amy got out of the easy chair without being asked, and Jo forgot how tired she was as she sat up to hold the slippers nearer to the blaze.<p> They are quite worn out. Marmee must have a new pair. <p> I thought I\'d get her some with my dollar,  said Beth.<p> No, I shall!  cried Amy.<p> I\'m the oldest,  began Meg, but Jo cut in with a decided,  I\'m the man of the family now Papa is away, and I shall provide the slippers, for he told me to take special care of Mother while he was gone. <p> I\'ll tell you what we\'ll do,  said Beth,  let\'s each get her something for Christmas, and not get anything for ourselves. <p> That\'s like you, dear! What will we get?  exclaimed Jo.<p>Everyone thought soberly for a minute, then Meg announced, as if the idea was suggested by the sight of her own pretty hands,  I shall give her a nice pair of gloves. <p> Army shoes, best to be had,  cried Jo.<p> Some handkerchiefs, all hemmed,  said Beth.<p> I\'ll get a little bottle of cologne. She likes it, and it won\'t cost much, so I\'ll have some left to buy my pencils,  added Amy.<p> How will we give the things?  asked Meg.<p> Put them on the table, and bring her in and see her open the bundles. Don\'t you remember how we used to do on our birthdays?  answered Jo.<p> I used to be so frightened when it was my turn to sit in the chair with the crown on, and see you all come marching round to give the presents, with a kiss. I liked the things and the kisses, but it was dreadful to have you sit looking at me while I opened the bundles,  said Beth, who was toasting her face and the bread for tea at the same time.<p> Let Marmee think we are getting things for ourselves, and then surprise her. We must go shopping tomorrow afternoon, Meg. There is so much to do about the play for Christmas night,  said Jo, marching up and down, with her hands behind her back, and her nose in the air.<p> I don\'t mean to act any more after this time. I\'m getting too old for such things,  observed Meg, who was as much a child as ever about `dressing-up\' frolics.<p> You won\'t stop, I know, as long as you can trail round in a white gown with your hair down, and wear gold-paper jewelry. You are the best actress we\'ve got, and there\'ll be an end of everything if you quit the boards,  said Jo.  We ought to rehearse tonight. Come here, Amy, and do the fainting scene, for you are as stiff as a poker in that. <p> I can\'t help it. I never saw anyone faint, and I don\'t choose to make myself all black and blue, tumbling flat as you do. If I can go down easily, I\'ll drop. If I can\'t, I shall fall into a chair and be graceful. I don\'t care if Hugo does come at me with a pistol,  returned Amy, who was not gifted with dramatic power, but was chosen because she was small enough to be borne out shrieking by the villain of the piece.<p> Do it this way. Clasp your hands so, and stagger across the room, crying frantically, `Roderigo` Save me! Save me! and away went Jo, with a melodramatic scream which was truly thrilling.<p>Amy followed, but she poked her hands out stiffly before her, and jerked herself along as if she went by machinery, and her  Ow!  was more suggestive of pins being run into her than of fear and anguish. Jo gave a despairing groan, and Meg laughed outright, while Beth let her bread burn as she watched the fun with interest.<p> It\'s no use! Do the best you can when the time comes, and if the audience laughs, don\'t blame me. Come on, Meg. <p> Then things went smoothly, for Don Pedro defied the world in a speech of two pages without a single break. Hagar, the witch, chanted an awful incantation over her kettleful of simmering toads, with weird effect. Roderigo rent his chains asunder manfully, and Hugo died in agonies of remorse and arsenic, with a wild, Ha! Ha! <p> It\'s the best we\'ve had yet,  said Meg, as the dead villain sat up and rubbed his elbows.<p> I don\'t see how you can write and act such splendid things, Jo. You\'re a regular Shakespeare!  exclaimed Beth, who firmly believed that her sisters were gifted with wonderful genius in all things.<p> Not quite,  replied Jo modestly.  I do think THE WITCHES CURSE, an Operatic Tragedy is rather a nice thing, but I\'d like to try MacBETH, if we only had a trapdoor for Banquo. I always wanted to do the killing part. `Is that a dagger that I see before me?  muttered Jo, rolling her eyes and clutching at the air, as she had seen a famous tragedian do.<p> No, it\'s the toasting fork, with Mother\'s shoe on it instead of the bread. Beth\'s stage-struck!  cried Meg, and the rehearsal ended in a general burst of laughter.<p> Glad to find you so merry, my girls,  said a cheery voice at the door, and actors and audience turned to welcome a tall, motherly lady with a `can I help you\' look about her which was truly delightful. She was not elegantly dressed, but a noble-looking woman, and the girls thought the gray cloak and unfashionable bonnet covered the most splendid mother in the world.<p> Well, dearies, how have you got on today? There was so much to do, getting the boxes ready to go tomorrow, that I didn\'t come home to dinner. Has anyone called, Beth? How is your cold, Meg? Jo, you look tired to death. Come and kiss me, baby. <p>While making these maternal inquiries Mrs. March got her wet things off, her warm slippers on, and sitting down in the easy chair, drew Amy to her lap, preparing to enjoy the happiest hour of her busy day. The girls flew about, trying to make things comfortable, each in her own way. Meg arranged the tea table, Jo brought wood and set chairs, dropping, over-turning, and clattering everything she touched. Beth trotted to and fro between parlor kitchen, quiet and busy, while Amy gave directions to everyone, as she sat with her hands folded.<p>As they gathered about the table, Mrs. March said, with a particularly happy face,  I\'ve got a treat for you after supper. <p>A quick, bright smile went round like a streak of sunshine. Beth clapped her hands, regardless of the biscuit she held, and Jo tossed up her napkin, crying,  A letter! A letter! Three cheers for Father! <p> Yes, a nice long letter. He is well, and thinks he shall get through the cold season better than we feared. He sends all sorts of loving wishes for Christmas, and an especial message to you girls,  said Mrs. March, patting her pocket as if she had got a treasure there.<p> Hurry and get done! Don\'t stop to quirk your little finger and simper over your plate, Amy,  cried Jo, choking on her tea and dropping her bread, butter side down, on the carpet in her haste to get at the treat.<p>Beth ate no more, but crept away to sit in her shadowy corner and brood over the delight to come, till the others were ready.<p> I think it was so splendid in Father to go as chaplain when he was too old to be drafted, and not strong enough for a soldier,  said Meg warmly.<p> Don\'t I wish I could go as a drummer, a vivan&mdash;what\'s its name? Or a nurse, so I could be near him and help him,  exclaimed Jo, with a groan.<p> It must be very disagreeable to sleep in a tent, and eat all sorts of bad-tasting things, and drink out of a tin mug,  sighed Amy.<p> When will he come home, Marmee? asked Beth, with a little quiver in her voice.<p> Not for many months, dear, unless he is sick. He will stay and do his work faithfully as long as he can, and we won\'t ask for him back a minute sooner than he can be spared. Now come and hear the letter. <p>They all drew to the fire, Mother in the big chair with Beth at her feet, Meg and Amy perched on either arm of the chair, and Jo leaning on the back, where no one would see any sign of emotion if the letter should happen to be touching. Very few letters were written in those hard times that were not touching, especially those which fathers sent home. In this one little was said of the hardships endured, the dangers faced, or the homesickness conquered. It was a cheerful, hopeful letter, full of lively descriptions of camp life, marches, and military news, and only at the end did the writer\'s heart over-flow with fatherly love and longing for the little girls at home.<p>  Give them all of my dear love and a kiss. Tell them I think of them by day, pray for them by night, and find my best comfort in their affection at all times. A year seems very long to wait before I see them, but remind them that while we wait we may all work, so that these hard days need not be wasted. I know they will remember all I said to them, that they will be loving children to you, will do their duty faithfully, fight their bosom enemies bravely, and conquer themselves so beautifully that when I come back to them I may be fonder and prouder than ever of my little women. <p>Everybody sniffed when they came to that part. Jo wasn\'t ashamed of the great tear that dropped off the end of her nose, and Amy never minded the rumpling of her curls as she hid her face on her mother\'s shoulder and sobbed out,  I am a selfish girl! But I\'ll truly try to be better, so he mayn\'t be disappointed in me by-and-by. <p>We all will,  cried Meg.  I think too much of my looks and hate to work, but won\'t any more, if I can help it. <p> I\'ll try and be what he loves to call me, `a little woman\' and not be rough and wild, but do my duty here instead of wanting to be somewhere else,  said Jo, thinking that keeping her temper at home was a much harder task than facing a rebel or two down South.<p>Beth said nothing, but wiped away her tears with the blue army sock and began to knit with all her might, losing no time in doing the duty that lay nearest her, while she resolved in her quiet little soul to be all that Father hoped to find her when the year brought round the happy coming home.<p>Mrs. March broke the silence that followed Jo\'s words, by saying in her cheery voice,  Do you remember how you used to play Pilgrims Progress when you were little things? Nothing delighted you more than to have me tie my piece bags on your backs for burdens, give you hats and sticks and rolls of paper, and let you travel through the house from the cellar, which was the City of Destruction, up, up, to the housetop, where you had all the lovely things you could collect to make a Celestial City. <p> What fun it was, especially going by the lions, fighting Apollyon, and passing through the valley where the hob-goblins were,  said Jo.<p> I liked the place where the bundles fell off and tumbled downstairs,  said Meg.<p> I don\'t remember much about it, except that I was afraid of the cellar and the dark entry, and always liked the cake and milk we had up at the top. If I wasn\'t too old for such things, I\'d rather like to play it over again,  said Amy, who began to talk of renouncing childish things at the mature age of twelve.<p> We never are too old for this, my dear, because it is a play we are playing all the time in one way or another. Out burdens are here, our road is before us, and the longing for goodness and happiness is the guide that leads us through many troubles and mistakes to the peace which is a true Celestial City. Now, my little pilgrims, suppose you begin again, not in play, but in earnest, and see how far on you can get before Father comes home. <p> Really, Mother? Where are our bundles?  asked Amy, who was a very literal young lady.<p> Each of you told what your burden was just now, except Beth. I rather think she hasn\'t got any,  said her mother.<p> Yes, I have. Mine is dishes and dusters, and envying girls with nice pianos, and being afraid of people. <p>Beth\'s bundle was such a funny one that everybody wanted to laugh, but nobody did, for it would have hurt her feelings very much.<p> Let us do it,  said Meg thoughtfully.  It is only another name for trying to be good, and the story may help us, for though we do want to be good, it\'s hard work and we forget, and don\'t do our best. <p> We were in the Slough of Despond tonight, and Mother came and pulled us out as Help did in the book. We ought to have our roll of directions, like Christian. What shall we do about that?  asked Jo, delighted with the fancy which lent a little romance to the very dull task of doing her duty.<p> Look under your pillows Christmas morning, and you will find your guidebook,  replied Mrs. March.<p>They talked over the new plan while old Hannah cleared the table, then out came the four little work baskets, and the needles flew as the girls made sheets for Aunt March. It was uninteresting sewing, but tonight no one grumbled. They adopted Jo\'s plan of dividing the long seams into four parts, and calling the quarters Europe, Asia, Africa, and America, and in that way got on capitally, especially when they talked about the different countries as they stitched their way through them.<p>At nine they stopped work, and sang, as usual, before they went to bed. No one but Beth could get much music out of the old piano, but she had a way of softly touching the yellow keys and making a pleasant accompaniment to the simple songs they sang. Meg had a voice like a flute, and she and her mother led the little choir. Amy chirped like a cricket, and Jo wandered through the airs at her own sweet will, always coming out at the wrong place with a croak or a quaver that spoiled the most pensive tune. They had always done this from the time they could lisp . . . <quote><i>Crinkle, crinkle, \'ittle \'tar,</i></quote> and it had become a household custom,, for the mother was a born singer. The first sound in the morning was her voice as she went about the house singing like a lark, and the last sound at night was the same cheery sound, for the girls never grew too old for that familiar lullaby.';
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('','A4','','',32,25,27,25,16,13); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->hyphenate = 2;  // removed in 5.6.07
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyleA4.css');
+$stylesheet .= '
+p { hyphens: auto; }
+';
+$mpdf->WriteHTML($stylesheet,1);
+
+$mpdf->WriteHTML('<h1>Automatic Hyphenation</h1>');
+
+$mpdf->SetColumns(4,'J');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example22_columns.php b/inc/3rdparty/libraries/mpdf/examples/example22_columns.php
new file mode 100644 (file)
index 0000000..6b9aac5
--- /dev/null
@@ -0,0 +1,80 @@
+<?php
+
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Columns</h2>
+';
+//==============================================================
+
+$loremH = "<h4>Lectus facilisis</h4>
+<p>Sed auctor viverra diam. In lacinia lectus.</p>
+<p>Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum.&nbsp;In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.</p>
+<h5>Nunc tincidunt</h5>
+<p>Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.</p>
+<p>Pede quis ante tincidunt <a href=\"http://www.stlucia.org\">blandit</a>. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante. </p><div>Suspendisse potenti. <indexentry content=\"Inline indexentry &lt;B&gt;\" />Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend.Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.</div><a href=\"http://www.stlucia.org\"><img src=\"sunset.jpg\" /></a><p>Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.<br />Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. <i>Nullam</i> ultrices leo volutpat magna. Mauris blandit purus nec turpis. <a href=\"http://www.stlucia.org\">Curabitur</a> nunc. Aliquam condimentum eleifend<sup>32</sup> lectus. Praesent vitae nibh <b>et libero ullamcorper</b> scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.</p>
+
+<div style=\"background-color:#DDDDBB; text-align:center; padding:3px; border:1px solid #880000;  \">Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede.
+<div style=\"background-color:#ADDBBF; text-align:center; padding:3px; border:1px solid #880000;  \">Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+ Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+<p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+";
+
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$stylesheet = file_get_contents('mpdfstyleA4.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+// Bullets in columns are probably best not indented
+$mpdf->list_indent_first_level = 0;    // 1 or 0 - whether to indent the first level of a list
+
+$mpdf->max_colH_correction = 1.1;
+
+
+       $mpdf->WriteHTML($html,2);
+       $mpdf->WriteHTML($loremH,2);
+
+       // consider reducing lineheight when using columns - especially if vAligned justify
+       $mpdf->SetDefaultBodyCSS('line-height', 1.2);
+
+       $mpdf->SetColumns(3,'J');
+       $mpdf->WriteHTML($loremH,2);
+
+       $mpdf->SetColumns(0);
+       $mpdf->WriteHTML('<hr />');
+
+
+       $mpdf->SetColumns(2,'J');
+       $mpdf->WriteHTML($loremH,2);
+       $mpdf->WriteHTML('<hr />');
+       $mpdf->SetColumns(0);
+       $mpdf->WriteHTML('<hr />');
+
+       $mpdf->SetColumns(3,'J');
+       $mpdf->WriteHTML($loremH,2);
+
+       $mpdf->SetColumns(0);
+       $mpdf->WriteHTML('<hr />');
+       $mpdf->SetColumns(2,'J');
+       $mpdf->WriteHTML($loremH,2);
+
+
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php b/inc/3rdparty/libraries/mpdf/examples/example23_orientation.php
new file mode 100644 (file)
index 0000000..7049d7e
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Page Orientation</h2>
+
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+<p style="color:red; font-family:serif;">Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+<p style="color:orange; font-family:serif;">Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis. </p>
+<p style="color:green; font-family:serif;">Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.</p>
+
+<hr />
+
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+
+$mpdf=new mPDF('c','A4','','',42,15,67,67,20,15); 
+
+$mpdf->SetDisplayMode('fullpage','two');
+
+$mpdf->mirrorMargins = 1;
+
+
+$header = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%">Left header p <span style="font-size:14pt;">{PAGENO}</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;"><span style="font-weight: bold;">Right header</span></td>
+</tr></table>
+';
+$headerE = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%"><span style="font-weight: bold;">Outer header</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;">Inner header p <span style="font-size:14pt;">{PAGENO}</span></td>
+</tr></table>
+';
+$longfooter = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%">Left footer p <span style="font-size:14pt;">{PAGENO}</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;"><span style="font-weight: bold;">Right footer</span></td>
+</tr></table>
+';
+$longfooterE = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%"><span style="font-weight: bold;">Outer footer</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;">Inner footer p <span style="font-size:14pt;">{PAGENO}</span></td>
+</tr></table>
+';
+
+$footer = '<div align="center" style="color:blue;font-family:mono;font-size:18pt;font-weight:bold;font-style:italic;">{DATE j-m-Y} &raquo; {PAGENO} &raquo; My document</div>';
+$footerE = '<div align="center" style="color:green;font-family:mono;font-size:18pt;font-weight:bold;font-style:italic;">Even page footer - {PAGENO} -</div>';
+
+$shortheader = '<div align="center" style="color:blue;font-family:mono;font-size:18pt;font-weight:bold;font-style:italic;">{DATE j-m-Y} &raquo; {PAGENO} &raquo; My document</div>';
+$shortheaderE = '<div align="center" style="color:green;font-family:mono;font-size:18pt;font-weight:bold;font-style:italic;">Even page header - {PAGENO} -</div>';
+
+
+$mpdf->SetHTMLHeader($header);
+$mpdf->SetHTMLHeader($headerE,'E');
+$mpdf->setFooter('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ;
+
+
+$mpdf->WriteHTML($html);
+
+
+$mpdf->setHeader();    // Clear headers before adding page
+$mpdf->AddPage('L','','','','',25,25,55,45,18,12);
+
+$mpdf->SetHTMLHeader($shortheader,'',true);    // New parameter in v1.4 to add the header to the new page
+$mpdf->SetHTMLHeader($shortheaderE,'E',true);
+$mpdf->SetHTMLFooter($longfooter);
+$mpdf->SetHTMLFooter($longfooterE,'E');
+
+
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML($html);
+
+
+
+$mpdf->setHeader('{PAGENO} of {nbpg} pages||{PAGENO} of {nbpg} pages') ;
+$mpdf->SetHTMLFooter($footer);
+$mpdf->SetHTMLFooter($footerE,'E');
+
+
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML($html);
+
+
+$mpdf->setHeader();    // Clear headers before adding page
+$mpdf->AddPage('','','','','',42,15,67,67,20,15);      // Default is Portrait (because that was the document default)
+
+
+$mpdf->SetHTMLHeader($shortheader,'',true);    // New parameter in v1.4 to add the header to the new page
+$mpdf->SetHTMLHeader($shortheaderE,'E',true);
+$mpdf->SetHTMLFooter($longfooter);
+$mpdf->SetHTMLFooter($longfooterE,'E');
+
+
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML($html);
+
+
+$mpdf->SetHTMLHeader($header);
+$mpdf->SetHTMLHeader($headerE,'E');
+$mpdf->SetHTMLFooter($footer);
+$mpdf->SetHTMLFooter($footerE,'E');
+
+
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML($html);
+
+
+$mpdf->Output('mpdf.pdf','I');
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php b/inc/3rdparty/libraries/mpdf/examples/example24_orientation_2.php
new file mode 100644 (file)
index 0000000..1cbbfda
--- /dev/null
@@ -0,0 +1,200 @@
+<?php
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Page Orientation</h2>
+
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+<p style="color:red; font-family:serif;">Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+<p style="color:orange; font-family:serif;">Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis. </p>
+<p style="color:green; font-family:serif;">Integer feugiat venenatis metus. Integer lacinia ultrices ipsum. Proin et arcu. Quisque varius libero. Nullam id arcu. Aenean justo quam, accumsan nec, luctus id, pellentesque molestie, mi. Aliquam sollicitudin feugiat eros. Nunc nisi turpis, consequat id, aliquet et, semper a, augue. Integer nisl ipsum, blandit et, lobortis a, egestas nec, odio. Nulla dolor ligula, nonummy ac, vulputate a, sollicitudin id, orci. Donec laoreet nisl id magna. Curabitur mollis, quam eget fermentum malesuada, risus tortor ullamcorper dolor, nec placerat nisi urna non pede. Aliquam pretium, leo in interdum interdum, ipsum neque accumsan lectus, ac fringilla dui ipsum sed justo. In tincidunt risus convallis odio egestas luctus. Integer volutpat. Donec ultricies, leo in congue iaculis, dolor neque imperdiet nibh, vitae feugiat mi enim nec sapien. Aenean turpis lorem, consequat quis, varius in, posuere vel, eros. Nulla facilisi.</p>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+';
+
+$htmlL = '
+<h6>Table in Landscape</h6>
+<table class="bpmTopic">
+<thead>
+<tr style="text-rotate:45;">
+<td>Type</td>
+<td>Details</td>
+<td>Notes</td>
+</thead>
+<tbody>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti. Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti. Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti. Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti. Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti. Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+</tr>
+</tbody></table>
+';
+
+//==============================================================
+
+$loremH = "<h4>Lectus facilisis</h4>
+<p>Sed auctor viverra diam. In lacinia lectus.</p>
+<p>Praesent tincidunt massa in dolor. Morbi viverra leo quis ipsum.&nbsp;In vitae velit. In aliquam nulla nec mi. Sed accumsan, justo id congue fringilla, diam mauris volutpat ligula, sed aliquet elit diam at felis. Quisque et velit sed eros convallis posuere.</p>
+<h5>Nunc tincidunt</h5>
+<p>Nunc diam ipsum, consectetuer nec, hendrerit vitae, malesuada a, ante. Nulla ornare aliquet ante. Maecenas in lectus. Morbi porttitor mauris. Praesent ut.</p>
+<p>Pede quis ante tincidunt <a href=\"http://www.stlucia.org\">blandit</a>. Maecenas bibendum erat. Curabitur sit amet ante quis velit ultricies facilisis. Ut hendrerit dolor commodo magna. In nec ligula a purus tincidunt adipiscing. Etiam non ante. </p><div>Suspendisse potenti. <indexentry content=\"Inline indexentry &lt;B&gt;\" />Suspendisse accumsan euismod lectus. Nunc commodo pede et turpis. Pellentesque porta mauris sed lorem. Ut nec augue vitae elit eleifend eleifend. Quisque ornare feugiat diam. Duis nulla metus, tempus sit amet, scelerisque a, rutrum at, nisl. Nulla facilisi. Duis metus turpis, molestie nec, laoreet tincidunt, ultrices et, purus. Nullam faucibus aliquam nisi.</div><a href=\"http://www.stlucia.org\"><img zsrc=\"sunset.jpg\" /></a><p>Ut leo. Etiam tempus interdum tortor. Donec porta, arcu vel tincidunt placerat, lacus lorem iaculis diam, id sagittis sapien metus eu nunc. Morbi vitae nunc.<br />Mauris sapien. Phasellus elementum velit sed sapien. Nullam ante diam, consectetuer commodo, dignissim vitae, tempor vel, magna. Donec dictum. <i>Nullam</i> ultrices leo volutpat magna. Mauris blandit purus nec turpis. <a href=\"http://www.stlucia.org\">Curabitur</a> nunc. Aliquam condimentum eleifend<sup>32</sup> lectus. Praesent vitae nibh <b>et libero ullamcorper</b> scelerisque. Nullam auctor. Mauris ipsum nulla, malesuada id, aliquet at, feugiat vitae, eros.</p>
+
+<div style=\"background-color:#DDDDBB; text-align:center; padding:3px; border:1px solid #880000;  \">Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div><p>Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras eu erat vel libero sodales congue. Sed erat est, interdum nec, elementum eleifend, pretium at, nibh. Praesent massa diam, adipiscing id, mollis sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui. </p>
+";
+
+//==============================================================
+$header = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%">Left header p <span style="font-size:14pt;">{PAGENO}</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;"><span style="font-weight: bold;">Right header</span></td>
+</tr></table>
+';
+$headerE = '
+<table width="100%" style="border-bottom: 1px solid #000000; vertical-align: bottom; font-family: serif; font-size: 9pt; color: #000088;"><tr>
+<td width="33%"><span style="font-weight: bold;">Outer header</span></td>
+<td width="33%" align="center"><img src="sunset.jpg" width="126px" /></td>
+<td width="33%" style="text-align: right;">Inner header p <span style="font-size:14pt;">{PAGENO}</span></td>
+</tr></table>
+';
+$header = '<div align="center" style="background-color: #f0f2ff;background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;border-radius: 4mm;font-size:18pt;font-weight:bold;font-style:italic;">{DATE j-m-Y} &raquo; {PAGENO} &raquo; My document<br />My document<br />See <a href="http://mpdf1.com/manual/index.php">documentation manual</a><br />My document</div>';
+$headerE = '<div align="center" style="background-color: #f0f2ff;background: transparent url(\'bg.jpg\') repeat scroll left top;border-radius: 4mm;font-size:18pt;font-weight:bold;font-style:italic;">Even page footer - {PAGENO} -<br />My document<br />My document<br />My document</div>';
+$footer = '<div align="center" style="background-color: #f0f2ff;background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;border-radius: 4mm;font-size:18pt;font-weight:bold;font-style:italic;">{DATE j-m-Y} &raquo; {PAGENO} &raquo; My document<br />My document<br />See <a href="http://mpdf1.com/manual/index.php">documentation manual</a><br />My document</div>';
+$footerE = '<div align="center" style="background-color: #f0f2ff;background: transparent url(\'bg.jpg\') repeat scroll right bottom;border-radius: 4mm;font-size:18pt;font-weight:bold;font-style:italic;">Even page footer - {PAGENO} -<br />My document<br />My document<br />My document</div>';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+
+$mpdf=new mPDF('c','A4','','',42,15,57,57,20,17); 
+
+$mpdf->displayDefaultOrientation = true;
+
+$mpdf->forcePortraitHeaders = true;
+$mpdf->forcePortraitMargins = true;
+
+$mpdf->SetDisplayMode('fullpage','two');
+
+$mpdf->mirrorMargins = 1;
+
+$stylesheet = file_get_contents('mpdfstyletables.css');
+$mpdf->WriteHTML($stylesheet,1);
+
+$mpdf->SetHTMLHeader($header);
+$mpdf->SetHTMLHeader($headerE,'E');
+$mpdf->SetHTMLFooter($footer);
+$mpdf->SetHTMLFooter($footerE,'E');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->AddPage('L');
+
+$mpdf->WriteHTML($htmlL);
+$mpdf->WriteHTML($htmlL);
+
+// Columns
+$mpdf->AddPage('L');
+$mpdf->SetColumns(3,'J');
+$mpdf->WriteHTML($loremH);
+
+$mpdf->SetColumns(0);
+$mpdf->WriteHTML('<hr />');
+
+
+$mpdf->SetColumns(2,'J');
+$mpdf->WriteHTML($loremH);
+$mpdf->WriteHTML('<hr />');
+$mpdf->SetColumns(0);
+
+$mpdf->AddPage('L');
+
+$mpdf->WriteHTML($htmlL);
+$mpdf->WriteHTML($htmlL);
+
+$mpdf->AddPage();
+
+$mpdf->WriteHTML($html);
+$mpdf->WriteHTML($html);
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php b/inc/3rdparty/libraries/mpdf/examples/example26_RTL.php
new file mode 100644 (file)
index 0000000..6310240
--- /dev/null
@@ -0,0 +1,316 @@
+<?php
+
+
+$html = "
+<h1>mPDF</h1>
+<h2>RTL Languages</h2>
+
+<h4>English</h4>
+<p>Please note that I do not understand any of the scripts below. The texts are borrowed from News websites, and I have used words and bits of phrases just to demonstrate the program.</p>
+
+<h4>Hebrew (pangram)</h4>
+<p lang=\"he\">\xd7\x93\xd7\x92 \xd7\xa1\xd7\xa7\xd7\xa8\xd7\x9f \xd7\xa9\xd7\x98 \xd7\x91\xd7\x99\xd7\x9d \xd7\x9e\xd7\x90\xd7\x95\xd7\x9b\xd7\x96\xd7\x91 \xd7\x95\xd7\x9c\xd7\xa4\xd7\xaa\xd7\xa2 \xd7\x9e\xd7\xa6\xd7\x90 \xd7\x97\xd7\x91\xd7\xa8\xd7\x94 </p>
+
+<p lang=\"he\">\xd7\x90\xd7\x95 \xd7\x94\xd7\xa0\xd7\xa1\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9d, \xd7\x9c\xd7\x91\xd7\x95\xd7\x90 \xd7\x9c\xd7\xa7\xd7\x97\xd7\xaa \xd7\x9c\xd7\x95 \xd7\x92\xd7\x95\xd7\x99 \xd7\x9e\xd7\xa7\xd7\xa8\xd7\x91 \xd7\x92\xd7\x95\xd7\x99, \xd7\x91\xd7\x9e\xd7\xa1\xd7\xaa \xd7\x91\xd7\x90\xd7\xaa\xd7\xaa \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa4\xd7\xaa\xd7\x99\xd7\x9d \xd7\x95\xd7\x91\xd7\x9e\xd7\x9c\xd7\x97\xd7\x9e\xd7\x94 \xd7\x95\xd7\x91\xd7\x99\xd7\x93 \xd7\x97\xd7\x96\xd7\xa7\xd7\x94 \xd7\x95\xd7\x91\xd7\x96\xd7\xa8\xd7\x95\xd7\xa2 \xd7\xa0\xd7\x98\xd7\x95\xd7\x99\xd7\x94, \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa8\xd7\x90\xd7\x99\xd7\x9d \xd7\x92\xd7\x93\xd7\x9c\xd7\x99\xd7\x9d: \xd7\x9b\xd7\x9b\xd7\x9c \xd7\x90\xd7\xa9\xd7\xa8-\xd7\xa2\xd7\xa9\xd7\x94 \xd7\x9c\xd7\x9b\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9b\xd7\x9d, \xd7\x91\xd7\x9e\xd7\xa6\xd7\xa8\xd7\x99\xd7\x9d--\xd7\x9c\xd7\xa2\xd7\x99\xd7\xa0\xd7\x99\xd7\x9a </p>
+
+<p lang=\"he\">\xd7\x9c\xd7\x9b\xd7\x9f \xd7\x97\xd7\x9b\xd7\x95 \xd7\x9c\xd7\x99 \xd7\xa0\xd7\x90\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x9c\xd7\x99\xd7\x95\xd7\x9d \xd7\xa7\xd7\x95\xd7\x9e\xd7\x99 \xd7\x9c\xd7\xa2\xd7\x93, \xd7\x9b\xd7\x99 \xd7\x9e\xd7\xa9\xd7\xa4\xd7\x98\xd7\x99 \xd7\x9c\xd7\x90\xd7\xa1\xd7\xa3 \xd7\x92\xd7\x95\xd7\x99\xd7\x9d \xd7\x9c\xd7\xa7\xd7\x91\xd7\xa6\xd7\x99 \xd7\x9e\xd7\x9e\xd7\x9c\xd7\x9b\xd7\x95\xd7\xaa, \xd7\x9c\xd7\xa9\xd7\xa4\xd7\x9a \xd7\xa2\xd7\x9c\xd7\x99\xd7\x94\xd7\x9d \xd7\x96\xd7\xa2\xd7\x9e\xd7\x99 \xd7\x9b\xd7\x9c \xd7\x97\xd7\xa8\xd7\x95\xd7\x9f \xd7\x90\xd7\xa4\xd7\x99, \xd7\x9b\xd7\x99 \xd7\x91\xd7\x90\xd7\xa9 \xd7\xa7\xd7\xa0\xd7\x90\xd7\xaa\xd7\x99 \xd7\xaa\xd7\x90\xd7\x9b\xd7\x9c \xd7\x9b\xd7\x9c \xd7\x94\xd7\x90\xd7\xa8\xd7\xa5 </p>
+
+<p lang=\"he\">\xd7\xa9\xd7\xa4\xd7\x9f \xd7\x90\xd7\x9b\xd7\x9c \xd7\xa7\xd7\xa6\xd7\xaa \xd7\x92\xd7\x96\xd7\xa8 \xd7\x91\xd7\x98\xd7\xa2\xd7\x9d \xd7\x97\xd7\xa1\xd7\x94, \xd7\x95\xd7\x93\xd7\x99. </p>
+
+
+
+
+
+<h4>Arabic</h4>
+<p>\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2<annotation content=\"\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac\" subject=\"\xd8\xac\xd9\x88\xd8\xb1\xd8\xac\" icon=\"Comment\" color=\"#FE88EF\" author=\"\xd8\xac\xd9\x88\xd8\xb1\xd8\xac\" />
+ \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.</p>
+
+<p>\xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f</p>
+
+<p>\xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 &quot;\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9&quot; \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 &quot;\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86\xd8\xaa\xd9\x87\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xaf\xd9\x8a\xd8\xaf\xd8\xa9&quot; \xd9\x84\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab&quot; \xd9\x88\xd8\xa7\xd8\xb5\xd9\x81\xd8\xa9 \xd8\xa7\xd9\x8a\xd8\xa7\xd9\x87 \xd8\xa8\xd9\x80&quot;\xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81&quot; \xd8\xa7\xd9\x84\xd8\xb0\xd9\x8a \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x87\xd8\xaf\xd9\x81 &quot;\xd9\x85\xd8\xaf\xd9\x86\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x85\xd8\xb3\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd9\x86&quot;.</p> 
+
+<p>\xd9\x88\xd8\xa7\xd8\xb6\xd8\xa7\xd9\x81\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd9\x87\xd8\xa7: &quot;\xd9\x85\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xb3\xd9\x81 \xd8\xa7\xd9\x86 \xd9\x8a\xd8\xa3\xd8\xaa\xd9\x8a \xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab \xd8\xa8\xd9\x8a\xd9\x86\xd9\x85\xd8\xa7 \xd8\xaa\xd8\xa8\xd8\xb0\xd9\x84 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd9\x84\xd8\xaa\xd8\xae\xd8\xb7\xd9\x8a \xd8\xa7\xd9\x84\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa7\xd8\xae\xd9\x84\xd9\x8a\xd8\xa9&quot;.</p> 
+
+<p>\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84 \xd8\xa7\xd8\xad\xd8\xaa\xd9\x88\xd8\xa7\xd8\xa1 \xd9\x85\xd8\xb8\xd8\xa7\xd9\x87\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd9\x85\xd8\xa8\xd8\xb1\xd8\xb1 \xd9\x84\xd9\x87\xd8\xa7 \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd8\xaa\xd9\x81\xd9\x8a\xd8\xaf \xd9\x85\xd8\xb5\xd8\xa7\xd9\x84\xd8\xad \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb9\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xb7\xd9\x88\xd9\x8a\xd9\x84&quot;.</p> 
+
+<p>\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7  \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 </p> 
+\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84</p>  
+
+
+<p>\xd9\x83\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd9\x81\xd8\xa7\xd8\xb1\xd9\x88 \xd8\xaf\xd9\x8a \xd8\xb3\xd9\x88\xd8\xaa\xd9\x88 \xd9\x85\xd8\xa8\xd8\xb9\xd9\x88\xd8\xab \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x85 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xad\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb1\xd9\x82 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd8\xb3\xd8\xb7 \xd8\xa7\xd9\x84\xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa9 \xd9\x88\xd9\x82\xd8\xa7\xd9\x84 &quot;\xd8\xa7\xd9\x86\xd9\x87 \xd9\x83\xd8\xa7\xd9\x86 \xd9\x87\xd8\xac\xd9\x88\xd9\x85\xd8\xa7 \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd8\xb4\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xb9\xd8\xa7\xd8\xaf\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x83\xd8\xa7\xd9\x86\xd9\x88\xd8\xa7 \xd9\x8a\xd9\x82\xd9\x88\xd9\x85\xd9\x88\xd9\x86 \xd8\xa8\xd9\x86\xd8\xb4\xd8\xa7\xd8\xb7\xd9\x87\xd9\x85 \xd8\xa7\xd9\x84\xd9\x8a\xd9\x88\xd9\x85\xd9\x8a \xd9\x88\xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x85\xd8\xb1 \xd9\x84\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd8\xaa\xd8\xa8\xd8\xb1\xd9\x8a\xd8\xb1\xd9\x87&quot;.</p>
+
+<h4>Farsi / Persian (fa)</h4>
+<p>\xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.</p> 
+
+<p>\xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4\xd8\x8c \xd8\xaf\xd8\xb1 \xda\x86\xd9\x87\xd8\xa7\xd8\xb1\xd9\x85\xdb\x8c\xd9\x86 \xd8\xb3\xd8\xa7\xd9\x84\xda\xaf\xd8\xb1\xd8\xaf \xd8\xa7\xd8\xb4\xd8\xba\xd8\xa7\xd9\x84 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd9\x85\xdb\x8c \xda\xaf\xd9\x88\xdb\x8c\xd8\xaf \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xb1\xd8\xa7\xd8\xaa\xda\x98\xdb\x8c \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x82\xd8\xb1\xd8\xa7\xd8\xb1 \xd9\x86\xdb\x8c\xd8\xb1\xd9\x88\xd9\x87\xd8\xa7\xdb\x8c \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7\xdb\x8c\xdb\x8c \xd8\xa8\xdb\x8c\xd8\xb4\xd8\xaa\xd8\xb1\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xa8\xd8\xba\xd8\xaf\xd8\xa7\xd8\xaf\xd8\x8c \xd9\x85\xd8\xaf\xd8\xaa\xdb\x8c \xd8\xb7\xd9\x88\xd9\x84 \xd8\xae\xd9\x88\xd8\xa7\xd9\x87\xd8\xaf \xda\xa9\xd8\xb4\xdb\x8c\xd8\xaf.</p>
+
+<p>\xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7 \xd9\x88\xdb\x8c\xd8\xb2\xd8\xa7\xdb\x8c \xd8\xb1\xd8\xa6\xdb\x8c\xd8\xb3 \xd8\xac\xd9\x85\xd9\x87\xd9\x88\xd8\xb1 \xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd9\x85\xd9\x86\xd8\xb8\xd9\x88\xd8\xb1 \xd8\xad\xd8\xb6\xd9\x88\xd8\xb1 \xd9\x88\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xac\xd9\x84\xd8\xb3\xd9\x87 \xd8\xb1\xd8\xa7\xdb\x8c \xda\xaf\xdb\x8c\xd8\xb1\xdb\x8c \xd8\xb4\xd9\x88\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xa7\xd9\x85\xd9\x86\xdb\x8c\xd8\xaa \xd8\xa8\xd8\xb1\xd8\xa7\xdb\x8c \xd9\x82\xd8\xb7\xd8\xb9\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd8\xb9\xd9\x84\xdb\x8c\xd9\x87 \xd8\xa7\xdb\x8c\xd9\x86 \xda\xa9\xd8\xb4\xd9\x88\xd8\xb1 \xd8\xb5\xd8\xa7\xd8\xaf\xd8\xb1 \xda\xa9\xd8\xb1\xd8\xaf.</p>
+
+
+<h4>Urdu</h4>
+<p lang=\"ur\">\xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94</p>
+
+<p lang=\"ur\">\xda\x86\xdb\x8c\xd9\x81 \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xda\xa9\xdb\x8c \xd8\xb3\xd8\xb1\xda\xaf\xd8\xb1\xd9\x85\xdb\x8c\xd8\xa7\xda\xba \xd9\x85\xd8\xad\xd8\xaf\xd9\x88\xd8\xaf \xda\xa9\xd8\xb1\xd9\x86\xdb\x92 \xd8\xa7\xd9\x88\xd8\xb1 \xd9\xbe\xd9\x88\xd9\x84\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb9\xdb\x8c\xd9\x86\xd8\xa7\xd8\xaa\xdb\x8c \xda\xa9\xdb\x92 \xd8\xad\xda\xa9\xd9\x85 \xd9\x86\xd8\xa7\xd9\x85\xdb\x92 \xd9\xbe\xd8\xb1 \xd8\xaf\xd8\xb3\xd8\xaa\xd8\xae\xd8\xb7 \xda\xa9\xd8\xb1\xda\xa9\xdb\x92 \xd8\xba\xd9\x84\xd8\xb7 \xda\xa9\xdb\x8c\xd8\xa7: \xd8\xac\xd9\x86\xd8\xb1\xd9\x84 \xd9\x85\xd8\xb4\xd8\xb1\xd9\x81</p>
+
+<h4>Pashto (ps)</h4>
+<p lang=\"ps\">\xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.</p>
+
+<p lang=\"ps\">\xd9\x87 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xda\xa9\xdb\x90 \xd9\x8a\xd9\x88\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd9\x86\xd8\xb8\xd8\xb1 \xd8\xb4\xd9\x85\xdb\x90\xd8\xb1\xd9\x86\xd9\x87 \xda\x9a\xd9\x8a\xd9\x8a \xda\x86\xdb\x90 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\xa7\xd9\x86 \xd9\xbe\xd9\x87 \xd8\xb2\xd9\x8a\xd8\xa7\xd8\xaa\xdb\x90\xd8\xaf\xd9\x88\xd9\x86\xda\xa9\xd9\x8a \xd8\xaa\xd9\x88\xda\xaf\xd9\x87 \xd8\xaf \xd8\xad\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\xd9\x88 \xd9\xbe\xd9\x87 \xd8\xa7\xda\x93\xd9\x87 \xd8\xa8\xd8\xaf\xd8\xa8\xd9\x8a\xd9\x86\xd9\x87 \xd8\xaf\xd9\x8a \xd8\xa7\xd9\x88 \xd8\xaf \xd8\xa8\xdb\x90 \xd8\xa8\xd8\xa7\xd9\x88\xd8\xb1\xd9\x8a \xd8\xa7\xd8\xad\xd8\xb3\xd8\xa7\xd8\xb3 \xda\xa9\xd9\x88\xd9\x8a\xd8\x8c \xd8\xae\xd9\x88 \xd8\xae\xd9\xbe\xd9\x84 \xd9\x87\xd9\x8a\xd9\x88\xd8\xa7\xd8\xaf \xd9\x8a\xd9\x88\xd9\x85\xd9\x88\xd9\xbc\xd9\x89 \xd8\xba\xd9\x88\xd8\xa7\xda\x93\xd9\x8a.</p>
+
+<h4>Symbols</h4>
+<p>\xc2\xa9\xc2\xae\xe2\x84\xa2\xc2\xb5\xe2\x80\xa2\xe2\x80\xa6\xe2\x80\xb2\xe2\x80\xb3\xc2\xa7&lt;&gt;\xe2\x89\xa4\xe2\x89\xa5\xc2\xb0\xe2\x88\x92\xc2\xb1\xc3\xb7\xe2\x81\x84\xc3\x97\xc6\x92\xe2\x88\xab\xe2\x88\x91\xe2\x88\x9e\xe2\x88\x9a\xe2\x89\x88\xe2\x89\xa0\xe2\x89\xa1\xe2\x88\x8f\xc2\xac\xe2\x88\xa9\xe2\x88\x82</p>
+<p>\xce\x92\xce\x93\xce\x94\xce\x95\xce\x96\xce\x97\xce\x98\xce\x99\xce\x9a\xce\x9b\xce\x9c\xce\x9d\xce\x9e\xce\x9f\xce\xa0\xce\xa1\xce\xa3\xce\xa4\xce\xa5\xce\xa6\xce\xa7\xce\xa8\xce\xa9</p>
+<p>\xce\xb1\xce\xb2\xce\xb3\xce\xb4\xce\xb5\xce\xb6\xce\xb7\xce\xb8\xce\xb9\xce\xba\xce\xbb\xce\xbc\xce\xbd\xce\xbe\xce\xbf\xcf\x80\xcf\x81\xcf\x82\xcf\x83\xcf\x84\xcf\x85\xcf\x86\xcf\x87\xcf\x88\xcf\x89</p>
+<p>\xe2\x86\x90\xe2\x86\x91\xe2\x86\x92\xe2\x86\x93\xe2\x86\x94\xe2\x97\x8a\xe2\x99\xa3\xe2\x99\xa5\xe2\x99\xa6</p>
+
+<h4>Dingbats</h4>
+<p>\xc2\xa7&lt;&gt;\xe2\x86\x92\xe2\x86\x94\xe2\x99\xa3\xe2\x99\xa5\xe2\x99\xa6</p>
+
+<h4>win-1252 </h4>
+<p>\xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e&lt;&gt;\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1</p>
+<p>\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8</p>
+<p>\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf</p>
+
+<h3>Bidirectional text</h3>
+<p>Text alignment, unless specified, is neutral and therefore dictated by the 'direction' of the paragraph.</p>
+
+<p>All text is analysed chunk by chunk (between tags) and at the end of every block (div, p, td). If the text contains RTL characters, those characters and words are reversed.</p>
+
+<p>\xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 &quot;\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9&quot; \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 with some english in the middle \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9</p>
+
+<p>To set the 'directionality' of the whole document e.g. to reverse default alignment, tables, lists etc. you can set the dir attribute or the direction CSS property on the HTML or BODY tag to 'rtl' e.g.</p>
+<p>&lt;body style=\"direction: rtl\"&gt;</p>
+<p>&lt;body dir=\"rtl\"&gt;</p>
+<p style=\"text-align: right\">or you can use \$mpdf->SetDirectionality('rtl');</p>
+
+<pre style=\"direction: ltr; background-color: #DDFFFF; page-break-inside: avoid;\">
+- the document now has a baseline direction; this determines the 
+       - behaviour of blocks for which text-align has not been specifically set
+       - layout of mirrored page-margins, columns, ToC and Indexes, headers and footers
+       - base direction can be set by any of:
+               - \$mpdf-&gt;SetDirectionality('rtl');
+               - &lt;html dir=\"rtl\" or style=\"direction: rtl;\"&gt;
+               - &lt;body dir=\"rtl\" or style=\"direction: rtl;\"&gt;
+       - base direction is an inherited CSS property, so will affect all content, unless...
+- direction can be set for all HTML block elements e.g. &lt;DIV&gt;&lt;P&gt;&lt;TABLE&gt;&lt;UL&gt; etc using
+       - CSS property &lt; style=\"direction: rtl;\"&gt; 
+       - direction can only be set on the top-level element of nested lists
+       - direction can only be set on &lt;TABLE&gt;, NOT on THEAD, TBODY, TD etc.
+       - nested tables CAN have different directions
+- NOTE that block/table margins/paddings are NOT reversed by direction
+       NB mPDF &lt;5.1 reversed the margins/paddings for blocks when RTL set.
+- language (either CSS \"lang\", using Autofont, or through initial set-up e.g. \$mpdf = new mPDF('ar') ) 
+       no longer affects direction in any way.
+       NB config_cp.php has been changed as a result; any values of \"dir\" set here are now ineffective
+- default text-align is now as per CSS spec: \"a nameless value which is dependent on direction\" 
+       NB default text-align removed in default stylesheet in config.php 
+- once text-align is specified, it is respected and inherited
+       NB mPDF &lt;5.1 reversed the text-align property for all blocks when RTL set.
+- the configurable value $rtlcss is depracated, as it is no longer required
+- improved algorithm for dtermining text direction
+       - english word blocks are handled in text reversal as one block i.e. dir=\"rtl\"
+       [arabic text] this will not be reversed [arabic text]
+       - arabic numerals 0-9 handled correctly
+
+Although the control of direction for block elements is now more configurable, the control of 
+text direction (RTL arabic characters) remains fully automatic and unconfigurable. 
+&lt;BDO&gt; etc has no effect. Enclosing text in silent tags can sometimes help e.g.
+       content&lt;span&gt;[arabic text]&lt;/span&gt;content
+
+</pre>
+
+<pagebreak />
+<h3>Tables</h3>
+<p>Tables are automatically transposed when the direction is rtl:</p>
+<table class=\"bpmTopicC\"><thead>
+<tr class=\"headerrow\"><th>\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a</th>
+<td>
+<p>\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a</p>
+</td>
+<td>\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a</td>
+</tr>
+</thead><tbody>
+<tr class=\"oddrow\"><th>\xd9\x82\xd8\xa7\xd9\x84</th>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+</tr>
+<tr class=\"evenrow\"><th>\xd9\x82\xd8\xa7\xd9\x84</th>
+<td>
+<p>\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2</p>
+</td>
+<td>
+<p>\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2</p>
+</td>
+</tr>
+<tr class=\"oddrow\"><th>
+<p>\xd9\x82\xd8\xa7\xd9\x84</p>
+</th>
+<td>
+<p>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</p>
+</td>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+</tr>
+<tr class=\"evenrow\"><th>
+<p>\xd9\x82\xd8\xa7\xd9\x84</p>
+<p>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</p>
+</th>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+<td>
+<p>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</p>
+</td>
+</tr>
+<tr class=\"oddrow\"><th>\xd9\x82\xd8\xa7\xd9\x84</th>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+</tr>
+<tr class=\"evenrow\"><th>\xd9\x82\xd8\xa7\xd9\x84</th>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+</tr>
+<tr class=\"oddrow\"><th>\xd9\x82\xd8\xa7\xd9\x84</th>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+</tr>
+<tr class=\"evenrow\"><th>\xd9\x82\xd8\xa7\xd9\x84</th>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+<td>\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+<h3>Lists</h3>
+<p>Lists will automatically reverse as well (note the use of list-style to set numbering):</p>
+<div style=\"background-color:#ddccff; padding:5pt;\">
+<ol style=\"list-style-type: arabic-indic;\">
+<li>\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3</li>
+<li>\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a
+       <ul><li>\xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac </li>
+       <li>\xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2
+       <ul>
+       <li>\xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9</li>
+       <li>\xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a</li>
+       </ul>
+       </li>
+</ul></li>
+<li>\xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7</li>
+<li>\xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82</li>
+</ol>
+</div>
+";
+
+//==============================================================
+       // Set Header and Footer
+       $h = array (
+  'odd' => 
+  array (
+    'R' => 
+    array (
+      'content' => '{PAGENO}',
+      'font-size' => 8,
+      'font-style' => 'B',
+    ),
+    'L' => 
+    array (
+      'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3",
+      'font-size' => 8,
+      'font-style' => 'B',
+    ),
+    'line' => 1,
+  ),
+  'even' => 
+  array (
+    'L' => 
+    array (
+      'content' => '{PAGENO}',
+      'font-size' => 8,
+      'font-style' => 'B',
+    ),
+    'R' => 
+    array (
+      'content' => "\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3",
+      'font-size' => 8,
+      'font-style' => 'B',
+    ),
+    'line' => 1,
+  ),
+);
+
+       $f = array (
+  'odd' => 
+  array (
+    'L' => 
+    array (
+      'content' => '{DATE Y-m-d}',
+      'font-size' => 8,
+      'font-style' => 'BI',
+    ),
+    'C' => 
+    array (
+      'content' => '- {PAGENO} -',
+      'font-size' => 8,
+    ),
+    'R' => 
+    array (
+      'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3",
+      'font-size' => 8,
+    ),
+    'line' => 1,
+  ),
+  'even' => 
+  array (
+    'L' => 
+    array (
+      'content' => "\xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3",
+      'font-size' => 8,
+      'font-style' => 'B',
+    ),
+    'C' => 
+    array (
+      'content' => '- {PAGENO} -',
+      'font-size' => 8,
+    ),
+    'R' => 
+    array (
+      'content' => '{DATE Y-m-d}',
+      'font-size' => 8,
+      'font-style' => 'BI',
+    ),
+    'line' => 1,
+  ),
+);
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+
+$mpdf=new mPDF('ar','A4','','',32,25,27,25,16,13); 
+
+// From mPDF 5.1 onwards you must set:
+$mpdf->SetDirectionality('rtl');
+$mpdf->mirrorMargins = true;
+$mpdf->SetDisplayMode('fullpage','two');
+
+
+$mpdf->setHeader($h);
+$mpdf->setFooter($f);
+
+
+$stylesheet = file_get_contents('mpdfstyletables.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+$mpdf->AddPage();
+
+$mpdf->SetColumns(2,'J');
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example27_CJK_using_Adobe_fonts.php
new file mode 100644 (file)
index 0000000..c46245f
--- /dev/null
@@ -0,0 +1,91 @@
+<?php
+
+ini_set("memory_limit","256M");
+
+
+$html = "
+
+<style>
+p { text-align: justify; }
+td { text-align: justify; }
+</style>
+<h1>mPDF</h1>
+<h2>CJK Languages</h2>
+
+
+<bookmark content=\"\xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1\">
+
+<h4>Japanese (pangrams)</h4>
+<h5>Iroha Uta </h5>
+
+<p style=\"font-family: SJIS\">\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99 </p>
+
+<p lang=\"ja\">\xe8\x89\xb2\xe3\x81\xaf\xe5\x8c\x82\xe3\x81\xb8\xe3\x81\xa9\xe3\x80\x80\xe6\x95\xa3\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe6\x88\x91\xe3\x81\x8c\xe4\xb8\x96\xe8\xaa\xb0\xe3\x81\x9e\xe3\x80\x80\xe5\xb8\xb8\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe6\x9c\x89\xe7\x82\xba\xe3\x81\xae\xe5\xa5\xa5\xe5\xb1\xb1\xe3\x80\x80\xe4\xbb\x8a\xe6\x97\xa5\xe8\xb6\x8a\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb5\x85\xe3\x81\x8d\xe5\xa4\xa2\xe8\xa6\x8b\xe3\x81\x98\xe3\x80\x80\xe9\x85\x94\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x9a\xef\xbc\x88\xe3\x82\x93\xef\xbc\x89 </p>
+
+<h5>Tori Naku Uta </h5>
+
+<p style=\"font-family: SJIS\">\xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1 </p>
+
+<p lang=\"ja\">\xe9\xb3\xa5\xe5\x95\xbc\xe3\x81\x8f\xe5\xa3\xb0\xe3\x81\x99\xe3\x80\x80\xe5\xa4\xa2\xe8\xa6\x9a\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe8\xa6\x8b\xe3\x82\x88\xe6\x98\x8e\xe3\x81\x91\xe6\xb8\xa1\xe3\x82\x8b\xe3\x80\x80\xe6\x9d\xb1\xe3\x82\x92\xe3\x80\x80\xe7\xa9\xba\xe8\x89\xb2\xe6\xa0\x84\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb2\x96\xe3\x81\xa4\xe8\xbe\xba\xe3\x81\xab\xe3\x80\x80\xe5\xb8\x86\xe8\x88\xb9\xe7\xbe\xa4\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe9\x9d\x84\xe3\x81\xae\xe4\xb8\xad </p>
+
+<h5>Ametsuchi No Uta </h5>
+
+<p style=\"font-family: SJIS\">\xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6 </p>
+
+<p lang=\"ja\">\xe5\xa4\xa9 \xe5\x9c\xb0 \xe6\x98\x9f \xe7\xa9\xba / \xe5\xb1\xb1 \xe5\xb7\x9d \xe5\xb3\xb0 \xe8\xb0\xb7 / \xe9\x9b\xb2 \xe9\x9c\xa7 \xe5\xae\xa4 \xe8\x8b\x94 / \xe4\xba\xba \xe7\x8a\xac \xe4\xb8\x8a \xe6\x9c\xab / \xe7\xa1\xab\xe9\xbb\x84 \xe7\x8c\xbf \xe7\x94\x9f\xe3\x81\xb5 \xe7\x82\xba\xe3\x82\x88 / \xe6\xa6\x8e\xe3\x81\xae \xe6\x9e\x9d\xe3\x82\x92 \xe9\xa6\xb4\xe3\x82\x8c \xe5\xb1\x85\xe3\x81\xa6 </p>
+
+<h5>Taini no Uta </h5>
+
+<p style=\"font-family: SJIS\">\xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac </p>
+
+<p lang=\"ja\">\xe7\x94\xb0\xe5\xb1\x85\xe3\x81\xab\xe5\x87\xba\xe3\x81\xa7\xe3\x80\x80\xe8\x8f\x9c\xe6\x91\x98\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9e\xe3\x80\x80\xe5\x90\x9b\xe5\x8f\xac\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe6\xb1\x82\xe9\xa3\x9f\xe3\x82\x8a\xe8\xbf\xbd\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe5\xb1\xb1\xe5\x9f\x8e\xe3\x81\xae\xe3\x80\x80\xe6\x89\x93\xe9\x85\x94\xe3\x81\xb8\xe3\x82\x8b\xe5\xad\x90\xe3\x82\x89\xe3\x80\x80\xe8\x97\xbb\xe8\x91\x89\xe5\xb9\xb2\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe8\x88\x9f\xe7\xb9\x8b\xe3\x81\x91\xe3\x81\xac </p>
+
+
+<bookmark content=\"\xe7\xbe\x8e\xe5\x9b\xbd\xe8\x88\xaa\xe7\xa9\xba\xe4\xb8\x9a\xe5\xb7\xa8\">
+<h4>Chinese (simplified) GB2312</h4>
+
+<p style=\"font-family: GB\">\xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82</p>
+
+
+<bookmark content=\"\xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\">
+<h4>Chinese (Traditional - Hong Kong)</h4>
+
+<p lang=\"zh-HK\">\xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82</p>
+
+
+
+<bookmark content=\"\xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98\">
+<h4>Korean</h4>
+<p style=\"font-family: UHC\">\xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4. </p>
+
+
+
+</div>
+";
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('+aCJK','A4','','',32,25,27,25,16,13); 
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->SetTitle($utxt['zh-CN']);
+$mpdf->SetAuthor($utxt['zh-CN']);
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyleA4.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example28_CJK_using_embedded_fonts.php
new file mode 100644 (file)
index 0000000..8fb5b61
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+ini_set("memory_limit","256M");
+
+
+$html = "
+
+<style>
+p { text-align: justify; }
+td { text-align: justify; }
+</style>
+<h1>mPDF</h1>
+<h2>CJK Languages</h2>
+
+
+<bookmark content=\"\xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1\">
+
+<h4>Japanese (pangrams)</h4>
+<h5>Iroha Uta </h5>
+
+<p style=\"font-family: IPAMinchoP\">\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99 </p>
+
+<p lang=\"ja\">\xe8\x89\xb2\xe3\x81\xaf\xe5\x8c\x82\xe3\x81\xb8\xe3\x81\xa9\xe3\x80\x80\xe6\x95\xa3\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe6\x88\x91\xe3\x81\x8c\xe4\xb8\x96\xe8\xaa\xb0\xe3\x81\x9e\xe3\x80\x80\xe5\xb8\xb8\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe6\x9c\x89\xe7\x82\xba\xe3\x81\xae\xe5\xa5\xa5\xe5\xb1\xb1\xe3\x80\x80\xe4\xbb\x8a\xe6\x97\xa5\xe8\xb6\x8a\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb5\x85\xe3\x81\x8d\xe5\xa4\xa2\xe8\xa6\x8b\xe3\x81\x98\xe3\x80\x80\xe9\x85\x94\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x9a\xef\xbc\x88\xe3\x82\x93\xef\xbc\x89 </p>
+
+<h5>Tori Naku Uta </h5>
+
+<p style=\"font-family: IPAGothicP\">\xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1 </p>
+
+<p lang=\"ja\">\xe9\xb3\xa5\xe5\x95\xbc\xe3\x81\x8f\xe5\xa3\xb0\xe3\x81\x99\xe3\x80\x80\xe5\xa4\xa2\xe8\xa6\x9a\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe8\xa6\x8b\xe3\x82\x88\xe6\x98\x8e\xe3\x81\x91\xe6\xb8\xa1\xe3\x82\x8b\xe3\x80\x80\xe6\x9d\xb1\xe3\x82\x92\xe3\x80\x80\xe7\xa9\xba\xe8\x89\xb2\xe6\xa0\x84\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe6\xb2\x96\xe3\x81\xa4\xe8\xbe\xba\xe3\x81\xab\xe3\x80\x80\xe5\xb8\x86\xe8\x88\xb9\xe7\xbe\xa4\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe9\x9d\x84\xe3\x81\xae\xe4\xb8\xad </p>
+
+<h5>Ametsuchi No Uta </h5>
+
+<p style=\"font-family: IPAGothicP\">\xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6 </p>
+
+<p lang=\"ja\">\xe5\xa4\xa9 \xe5\x9c\xb0 \xe6\x98\x9f \xe7\xa9\xba / \xe5\xb1\xb1 \xe5\xb7\x9d \xe5\xb3\xb0 \xe8\xb0\xb7 / \xe9\x9b\xb2 \xe9\x9c\xa7 \xe5\xae\xa4 \xe8\x8b\x94 / \xe4\xba\xba \xe7\x8a\xac \xe4\xb8\x8a \xe6\x9c\xab / \xe7\xa1\xab\xe9\xbb\x84 \xe7\x8c\xbf \xe7\x94\x9f\xe3\x81\xb5 \xe7\x82\xba\xe3\x82\x88 / \xe6\xa6\x8e\xe3\x81\xae \xe6\x9e\x9d\xe3\x82\x92 \xe9\xa6\xb4\xe3\x82\x8c \xe5\xb1\x85\xe3\x81\xa6 </p>
+
+<h5>Taini no Uta </h5>
+
+<p style=\"font-family: hannoma\">\xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac </p>
+
+<p lang=\"ja\">\xe7\x94\xb0\xe5\xb1\x85\xe3\x81\xab\xe5\x87\xba\xe3\x81\xa7\xe3\x80\x80\xe8\x8f\x9c\xe6\x91\x98\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9e\xe3\x80\x80\xe5\x90\x9b\xe5\x8f\xac\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe6\xb1\x82\xe9\xa3\x9f\xe3\x82\x8a\xe8\xbf\xbd\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe5\xb1\xb1\xe5\x9f\x8e\xe3\x81\xae\xe3\x80\x80\xe6\x89\x93\xe9\x85\x94\xe3\x81\xb8\xe3\x82\x8b\xe5\xad\x90\xe3\x82\x89\xe3\x80\x80\xe8\x97\xbb\xe8\x91\x89\xe5\xb9\xb2\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe8\x88\x9f\xe7\xb9\x8b\xe3\x81\x91\xe3\x81\xac </p>
+
+
+<bookmark content=\"\xe7\xbe\x8e\xe5\x9b\xbd\xe8\x88\xaa\xe7\xa9\xba\xe4\xb8\x9a\xe5\xb7\xa8\">
+<h4>Chinese (simplified) GB2312</h4>
+
+<p style=\"font-family: sun-exta\">\xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82</p>
+
+
+<bookmark content=\"\xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\">
+<h4>Chinese (Traditional - Hong Kong)</h4>
+
+<p lang=\"zh-HK\">\xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82</p>
+
+
+
+<bookmark content=\"\xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98\">
+<h4>Korean</h4>
+<p style=\"font-family: unbatang_0613\">\xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4. </p>
+
+</div>
+";
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('-aCJK','A4','','',32,25,27,25,16,13); 
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->SetTitle($utxt['zh-CN']);
+$mpdf->SetAuthor($utxt['zh-CN']);
+
+// LOAD a stylesheet
+$stylesheet = file_get_contents('mpdfstyleA4.css');
+$mpdf->WriteHTML($stylesheet,1);       // The parameter 1 tells that this is css/style only and no body/html/text
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php b/inc/3rdparty/libraries/mpdf/examples/example29_multilingual_autofont.php
new file mode 100644 (file)
index 0000000..1ca99f2
--- /dev/null
@@ -0,0 +1,400 @@
+<?php
+//
+$timeo_start = microtime(true);
+ini_set("memory_limit","128M");
+//
+
+$html = "
+<style>
+
+body { font-family: sans; text-align: justify; }
+p { font-family: sans; }
+div { font-family: sans; }
+
+</style>
+
+<p>This document includes many languages. Selection of appropriate fonts is done automatically by using <b>AutoFont</b>. </p>
+<h3>Pangrams - (from Wikipedia) </h3>
+<p>The quick brown fox jumps over a lazy dog</p>
+
+<h4>Bulgarian</h4>
+<p>\xd0\x96\xd1\x8a\xd0\xbb\xd1\x82\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb4\xd1\x8e\xd0\xbb\xd1\x8f \xd0\xb1\xd0\xb5\xd1\x88\xd0\xb5 \xd1\x89\xd0\xb0\xd1\x81\xd1\x82\xd0\xbb\xd0\xb8\xd0\xb2\xd0\xb0, \xd1\x87\xd0\xb5 \xd0\xbf\xd1\x83\xd1\x85\xd1\x8a\xd1\x82, \xd0\xba\xd0\xbe\xd0\xb9\xd1\x82\xd0\xbe \xd1\x86\xd1\x8a\xd1\x84\xd0\xbd\xd0\xb0, \xd0\xb7\xd0\xb0\xd0\xbc\xd1\x80\xd1\x8a\xd0\xb7\xd0\xbd\xd0\xb0 \xd0\xba\xd0\xb0\xd1\x82\xd0\xbe \xd0\xb3\xd1\x8c\xd0\xbe\xd0\xbd.</p> 
+
+<p>\xd0\x97\xd0\xb0 \xd0\xbc\xd0\xb8\xd0\xb3 \xd0\xb1\xd1\x8f\xd1\x85 \xd0\xb2 \xd1\x87\xd1\x83\xd0\xb6\xd0\xb4 \xd0\xbf\xd0\xbb\xd1\x8e\xd1\x88\xd0\xb5\xd0\xbd \xd1\x81\xd0\xba\xd1\x8a\xd1\x80\xd1\x86\xd0\xb0\xd1\x89 \xd1\x84\xd0\xbe\xd1\x82\xd1\x8c\xd0\xbe\xd0\xb9\xd0\xbb. </p>
+
+<h4>Catalan</h4>
+<p>Jove xef, porti whisky amb quinze gla\xc3\xa7ons d'hidrogen, coi! </p>
+
+<p>Aqueix betzol, Jan, comprava whisky de figa </p>
+
+<h4>Czech</h4>
+<p>P\xc5\x99\xc3\xadli\xc5\xa1 \xc5\xbelu\xc5\xa5ou\xc4\x8dk\xc3\xbd k\xc5\xaf\xc5\x88 \xc3\xbap\xc4\x9bl \xc4\x8f\xc3\xa1belsk\xc3\xa9 \xc3\xb3dy </p>
+
+<h4>Danish</h4>
+<p>H\xc3\xb8j bly gom vandt fr\xc3\xa6k sexquiz p\xc3\xa5 wc </p>
+
+<h4>Dutch</h4>
+<p>Doch Bep, flink sexy qua vorm, zwijgt </p>
+
+<p>Pa's wijze lynx bezag vroom het fikse aquaduct </p>
+
+<h4>Finnish</h4>
+<p>T\xc3\xb6rkylempij\xc3\xa4 vongahdus </p>
+
+<h4>French</h4>
+<p>Portez ce vieux whisky au juge blond qui fume </p>
+
+<p>B\xc3\xa2chez la queue du wagon-taxi avec les pyjamas du fakir </p>
+
+<p>Voyez le brick g\xc3\xa9ant que j'examine pr\xc3\xa8s du wharf </p>
+
+<h4>German</h4>
+<p>Victor jagt zw\xc3\xb6lf Boxk\xc3\xa4mpfer quer \xc3\xbcber den gro\xc3\x9fen Sylter Deich </p>
+
+<p>\"Fix, Schwyz!\" qu\xc3\xa4kt J\xc3\xbcrgen bl\xc3\xb6d vom Pa\xc3\x9f </p>
+
+<p>\"Falsches \xc3\x9cben von Xylophonmusik qu\xc3\xa4lt jeden gr\xc3\xb6\xc3\x9feren Zwerg\"</p>
+
+<h4>Hungarian</h4>
+<p>Egy h\xc5\xb1tlen vej\xc3\xa9t f\xc3\xbcl\xc3\xb6ncs\xc3\xadp\xc5\x91, d\xc3\xbch\xc3\xb6s mexik\xc3\xb3i \xc3\xbar Wessel\xc3\xa9nyin\xc3\xa9l m\xc3\xa1zol Quit\xc3\xb3ban. </p>
+
+<h4>Icelandic</h4>
+<p>K\xc3\xa6mi n\xc3\xbd \xc3\xb6xi h\xc3\xa9r ykist \xc3\xbej\xc3\xb3fum n\xc3\xba b\xc3\xa6\xc3\xb0i v\xc3\xadl og \xc3\xa1drepa </p>
+
+<h4>Irish</h4>
+<p>D'fhuascail \xc3\x8dosa \xc3\x9armhac na h\xc3\x93ighe Beannaithe p\xc3\xb3r \xc3\x89ava agus \xc3\x81dhaimh </p>
+
+<p>D'\xe1\xb8\x9fuascail \xc3\x8dosa \xc3\x9ar\xe1\xb9\x81ac na h\xc3\x93i\xc4\xa1e Beannai\xe1\xb9\xabe p\xc3\xb3r \xc3\x89a\xe1\xb8\x83a agus \xc3\x81\xe1\xb8\x8bai\xe1\xb9\x81 </p>
+
+<h4>Italian</h4>
+<p>\"Quel fez sghembo copre davanti\" </p>
+
+<p>\"Ma la volpe col suo balzo ha raggiunto il quieto Fido\" </p>
+
+<p>\"Quel vituperabile xenofobo zelante assaggia il whisky ed esclama: alleluja!\" </p>
+
+<h4>Lithuanian</h4>
+<p>\xc4\xaelinkdama fechtuotojo \xc5\xa1paga sublyk\xc4\x8diojusi pragr\xc4\x99\xc5\xbe\xc4\x97 apval\xc5\xb3 arb\xc5\xabz\xc4\x85 </p>
+
+<h4>Norwegian</h4>
+<p>V\xc3\xa5r s\xc3\xa6re Zulu fra bade\xc3\xb8ya spilte jo whist og quickstep i min taxi. </p>
+
+<p>H\xc3\xb8vdingens kj\xc3\xa6re squaw f\xc3\xa5r litt pizza i Mexico by </p>
+
+<h4>Polish</h4>
+<p>P\xc3\xb3jd\xc5\xba\xc5\xbce, ki\xc5\x84 t\xc4\x99 chmurno\xc5\x9b\xc4\x87 w g\xc5\x82\xc4\x85b flaszy! </p>
+
+<p>Pchn\xc4\x85\xc4\x87 w t\xc4\x99 \xc5\x82\xc3\xb3d\xc5\xba je\xc5\xbca lub o\xc5\x9bm skrzy\xc5\x84 fig. </p>
+
+<p>M\xc4\x99\xc5\xbcny b\xc4\x85d\xc5\xba, chro\xc5\x84 pu\xc5\x82k tw\xc3\xb3j i sze\xc5\x9b\xc4\x87 flag. </p>
+
+<h4>Portuguese</h4>
+<p>Blitz prende ex-vesgo com cheque fajuto. </p>
+
+<p>Gazeta publica hoje no jornal uma breve nota de faxina na quermesse. </p>
+
+<p>\xc3\x80 noite, vov\xc3\xb4 Kowalsky v\xc3\xaa o \xc3\xadm\xc3\xa3 cair no p\xc3\xa9 do ping\xc3\xbcim queixoso e vov\xc3\xb3 p\xc3\xb5e a\xc3\xa7\xc3\xbacar no ch\xc3\xa1 de t\xc3\xa2maras do jabuti feliz. </p>
+
+<p>Lu\xc3\xads arg\xc3\xbcia \xc3\xa0 J\xc3\xbalia que \xc2\xabbra\xc3\xa7\xc3\xb5es, f\xc3\xa9, ch\xc3\xa1, \xc3\xb3xido, p\xc3\xb4r, z\xc3\xa2ng\xc3\xa3o\xc2\xbb eram palavras do portugu\xc3\xaas. </p>
+
+<h4>Romanian</h4>
+<p>Gheorghe, obezul, a reu\xc5\x9fit s\xc4\x83 ob\xc5\xa3in\xc4\x83 juc\xc3\xa2ndu-se un flux \xc3\xaen Quebec de o mie kilowa\xc5\xa3ior\xc4\x83. </p>
+
+<h4>Russian</h4>
+<p>\xd0\x92 \xd1\x87\xd0\xb0\xd1\x89\xd0\xb0\xd1\x85 \xd1\x8e\xd0\xb3\xd0\xb0 \xd0\xb6\xd0\xb8\xd0\xbb \xd0\xb1\xd1\x8b \xd1\x86\xd0\xb8\xd1\x82\xd1\x80\xd1\x83\xd1\x81? \xd0\x94\xd0\xb0, \xd0\xbd\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb8\xd0\xb2\xd1\x8b\xd0\xb9 \xd1\x8d\xd0\xba\xd0\xb7\xd0\xb5\xd0\xbc\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x80! </p>
+
+<p>(Using quasiobsolete spelling for last word to include \xd1\x8a) \xd0\x92 \xd1\x87\xd0\xb0\xd1\x89\xd0\xb0\xd1\x85 \xd1\x8e\xd0\xb3\xd0\xb0 \xd0\xb6\xd0\xb8\xd0\xbb \xd0\xb1\xd1\x8b \xd1\x86\xd0\xb8\xd1\x82\xd1\x80\xd1\x83\xd1\x81? \xd0\x94\xd0\xb0, \xd0\xbd\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbb\xd1\x8c\xd1\x88\xd0\xb8\xd0\xb2\xd1\x8b\xd0\xb9 \xd1\x8d\xd0\xba\xd0\xb7\xd0\xb5\xd0\xbc\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x80\xd1\x8a! </p>
+
+<p>\xd0\xad\xd1\x85, \xd1\x87\xd1\x83\xd0\xb6\xd0\xb0\xd0\xba! \xd0\x9e\xd0\xb1\xd1\x89\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x8a\xd1\x91\xd0\xbc \xd1\x86\xd0\xb5\xd0\xbd \xd1\x88\xd0\xbb\xd1\x8f\xd0\xbf (\xd1\x8e\xd1\x84\xd1\x82\xd1\x8c) \xe2\x80\x94 \xd0\xb2\xd0\xb4\xd1\x80\xd1\x8b\xd0\xb7\xd0\xb3! </p>
+
+<p>\xd0\xad\xd0\xba\xd1\x81-\xd0\xb3\xd1\x80\xd0\xb0\xd1\x84? \xd0\x9f\xd0\xbb\xd1\x8e\xd1\x88 \xd0\xb8\xd0\xb7\xd1\x8a\xd1\x8f\xd1\x82. \xd0\x91\xd1\x8c\xd1\x91\xd0\xbc \xd1\x87\xd1\x83\xd0\xb6\xd0\xb4\xd1\x8b\xd0\xb9 \xd1\x86\xd0\xb5\xd0\xbd \xd1\x85\xd0\xb2\xd0\xbe\xd1\x89! </p>
+
+<p>\xd0\xa1\xd1\x8a\xd0\xb5\xd1\x88\xd1\x8c \xd0\xb5\xd1\x89\xd1\x91 \xd1\x8d\xd1\x82\xd0\xb8\xd1\x85 \xd0\xbc\xd1\x8f\xd0\xb3\xd0\xba\xd0\xb8\xd1\x85 \xd1\x84\xd1\x80\xd0\xb0\xd0\xbd\xd1\x86\xd1\x83\xd0\xb7\xd1\x81\xd0\xba\xd0\xb8\xd1\x85 \xd0\xb1\xd1\x83\xd0\xbb\xd0\xbe\xd0\xba, \xd0\xb4\xd0\xb0 \xd0\xb2\xd1\x8b\xd0\xbf\xd0\xb5\xd0\xb9 \xd0\xb6\xd0\xb5 \xd1\x87\xd0\xb0\xd1\x8e. </p>
+
+<p>\xd0\xa8\xd0\xb8\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0\xd1\x8f \xd1\x8d\xd0\xbb\xd0\xb5\xd0\xba\xd1\x82\xd1\x80\xd0\xb8\xd1\x84\xd0\xb8\xd0\xba\xd0\xb0\xd1\x86\xd0\xb8\xd1\x8f \xd1\x8e\xd0\xb6\xd0\xbd\xd1\x8b\xd1\x85 \xd0\xb3\xd1\x83\xd0\xb1\xd0\xb5\xd1\x80\xd0\xbd\xd0\xb8\xd0\xb9 \xd0\xb4\xd0\xb0\xd1\x81\xd1\x82 \xd0\xbc\xd0\xbe\xd1\x89\xd0\xbd\xd1\x8b\xd0\xb9 \xd1\x82\xd0\xbe\xd0\xbb\xd1\x87\xd0\xbe\xd0\xba \xd0\xbf\xd0\xbe\xd0\xb4\xd1\x8a\xd1\x91\xd0\xbc\xd1\x83 \xd1\x81\xd0\xb5\xd0\xbb\xd1\x8c\xd1\x81\xd0\xba\xd0\xbe\xd0\xb3\xd0\xbe \xd1\x85\xd0\xbe\xd0\xb7\xd1\x8f\xd0\xb9\xd1\x81\xd1\x82\xd0\xb2\xd0\xb0. </p>
+
+<h4>Serbian</h4>
+<p>\xd0\x89\xd1\x83\xd0\xb1\xd0\xb0\xd0\xb7\xd0\xbd\xd0\xb8 \xd1\x84\xd0\xb5\xd1\x9a\xd0\xb5\xd1\x80\xd1\x9f\xd0\xb8\xd1\x98\xd0\xb0 \xd1\x87\xd0\xb0\xd1\x92\xd0\xb0\xd0\xb2\xd0\xbe\xd0\xb3 \xd0\xbb\xd0\xb8\xd1\x86\xd0\xb0 \xd1\x85\xd0\xbe\xd1\x9b\xd0\xb5 \xd0\xb4\xd0\xb0 \xd0\xbc\xd0\xb8 \xd0\xbf\xd0\xbe\xd0\xba\xd0\xb0\xd0\xb6\xd0\xb5 \xd1\x88\xd1\x82\xd0\xbe\xd1\x81. </p>
+
+<p>Ljubazni fenjerd\xc5\xbeija \xc4\x8da\xc4\x91avog lica ho\xc4\x87e da mi poka\xc5\xbee \xc5\xa1tos. </p>
+
+<h4>Slovene</h4>
+<p>\xc5\xa0erif bo za vajo spet kuhal doma\xc4\x8de \xc5\xbegance </p>
+
+<p>Pi\xc5\xa1kur mol\xc4\x8de grabi fi\xc5\xbeol z dna cezijeve hoste </p>
+
+<h4>Spanish</h4>
+<p>El veloz murci\xc3\xa9lago hind\xc3\xba com\xc3\xada feliz cardillo y kiwi. La cig\xc3\xbce\xc3\xb1a tocaba el saxof\xc3\xb3n detr\xc3\xa1s del palenque de paja. </p>
+
+<p>El ping\xc3\xbcino Wenceslao hizo kil\xc3\xb3metros bajo exhaustiva lluvia y fr\xc3\xado, a\xc3\xb1oraba a su querido cachorro. </p>
+
+<p>Jovencillo emponzo\xc3\xb1ado de whisky: \xc2\xa1qu\xc3\xa9 figurota exhibe! </p>
+
+<p>Ese libro explica en su ep\xc3\xadgrafe las haza\xc3\xb1as y aventuras de Don Quijote de la Mancha en Kuwait. </p>
+
+<p>Queda gazpacho, fibra, l\xc3\xa1tex, jam\xc3\xb3n, kiwi y vi\xc3\xb1as. </p>
+
+<p>Whisky bueno: \xc2\xa1excitad mi fr\xc3\xa1gil peque\xc3\xb1a vejez! </p>
+
+<h4>Swedish</h4>
+<p>Flygande b\xc3\xa4ckasiner s\xc3\xb6ka hwila p\xc3\xa5 mjuka tuvor. </p>
+
+<p>Yxskaftbud, ge v\xc3\xa5r wczonm\xc3\xb6 iqhj\xc3\xa4lp. </p>
+
+<h4>Ukrainian</h4>
+<p>\xd0\xa7\xd1\x83\xd1\x94\xd1\x88 \xd1\x97\xd1\x85, \xd0\xb4\xd0\xbe\xd1\x86\xd1\x8e, \xd0\xb3\xd0\xb0? \xd0\x9a\xd1\x83\xd0\xbc\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb0 \xd0\xb6 \xd1\x82\xd0\xb8, \xd0\xbf\xd1\x80\xd0\xbe\xd1\x89\xd0\xb0\xd0\xb9\xd1\x81\xd1\x8f \xd0\xb1\xd0\xb5\xd0\xb7 \xd2\x91\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x84\xd1\x96\xd0\xb2! </p>
+
+<p>\xd0\x96\xd0\xb5\xd0\xb1\xd1\x80\xd0\xb0\xd0\xba\xd1\x83\xd1\x8e\xd1\x82\xd1\x8c \xd1\x84\xd1\x96\xd0\xbb\xd0\xbe\xd1\x81\xd0\xbe\xd1\x84\xd0\xb8 \xd0\xbf\xd1\x80\xd0\xb8 \xd2\x91\xd0\xb0\xd0\xbd\xd0\xba\xd1\x83 \xd1\x86\xd0\xb5\xd1\x80\xd0\xba\xd0\xb2\xd0\xb8 \xd0\xb2 \xd0\x93\xd0\xb0\xd0\xb4\xd1\x8f\xd1\x87\xd1\x96, \xd1\x89\xd0\xb5 \xd0\xb9 \xd1\x88\xd0\xb0\xd1\x82\xd1\x80\xd0\xbe \xd1\x97\xd1\x85\xd0\xbd\xd1\x94 \xd0\xbf'\xd1\x8f\xd0\xbd\xd0\xb5 \xd0\xb7\xd0\xbd\xd0\xb0\xd1\x94\xd0\xbc\xd0\xbe. </p>
+
+<h4>Turkish (pangram)</h4>
+<p>Pijamal\xc4\xb1 hasta ya\xc4\x9f\xc4\xb1z \xc5\x9fof\xc3\xb6re \xc3\xa7abucak g\xc3\xbcvendi. </p>
+
+<h4>Greek</h4>
+<h5>Monotonic</h5>
+<p>\xce\xa0\xce\xac\xcf\x84\xce\xb5\xcf\x81 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd \xce\xbf \xce\xb5\xce\xbd \xcf\x84\xce\xbf\xce\xb9\xcf\x82 \xce\xbf\xcf\x85\xcf\x81\xce\xb1\xce\xbd\xce\xbf\xce\xaf\xcf\x82 \xce\xb1\xce\xb3\xce\xb9\xce\xb1\xcf\x83\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xce\xbf \xcf\x8c\xce\xbd\xce\xbf\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb5\xce\xbb\xce\xb8\xce\xad\xcf\x84\xcf\x89 \xce\xb7 \xce\xb2\xce\xb1\xcf\x83\xce\xb9\xce\xbb\xce\xb5\xce\xaf\xce\xb1 \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb3\xce\xb5\xce\xbd\xce\xb7\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xce\xbf \xce\xb8\xce\xad\xce\xbb\xce\xb7\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85, \xcf\x89\xcf\x82 \xce\xb5\xce\xbd \xce\xbf\xcf\x85\xcf\x81\xce\xb1\xce\xbd\xcf\x8e \xce\xba\xce\xb1\xce\xb9 \xce\xb5\xcf\x80\xce\xaf \xcf\x84\xce\xb7\xcf\x82 \xce\xb3\xce\xb7\xcf\x82\xc2\xb7 \xcf\x84\xce\xbf\xce\xbd \xce\xac\xcf\x81\xcf\x84\xce\xbf\xce\xbd \xce\xb7\xce\xbc\xcf\x8e\xce\xbd \xcf\x84\xce\xbf\xce\xbd \xce\xb5\xcf\x80\xce\xb9\xce\xbf\xcf\x8d\xcf\x83\xce\xb9\xce\xbf\xce\xbd \xce\xb4\xce\xbf\xcf\x82 \xce\xb7\xce\xbc\xce\xaf\xce\xbd \xcf\x83\xce\xae\xce\xbc\xce\xb5\xcf\x81\xce\xbf\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xce\xb9 \xce\xac\xcf\x86\xce\xb5\xcf\x82 \xce\xb7\xce\xbc\xce\xaf\xce\xbd \xcf\x84\xce\xb1 \xce\xbf\xcf\x86\xce\xb5\xce\xbb\xce\xae\xce\xbc\xce\xb1\xcf\x84\xce\xb1 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd, \xcf\x89\xcf\x82 \xce\xba\xce\xb1\xce\xb9 \xce\xb7\xce\xbc\xce\xb5\xce\xaf\xcf\x82 \xce\xb1\xcf\x86\xce\xaf\xce\xb5\xce\xbc\xce\xb5\xce\xbd \xcf\x84\xce\xbf\xce\xb9\xcf\x82 \xce\xbf\xcf\x86\xce\xb5\xce\xb9\xce\xbb\xce\xad\xcf\x84\xce\xb1\xce\xb9\xcf\x82 \xce\xb7\xce\xbc\xcf\x8e\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xce\xb9 \xce\xbc\xce\xb7 \xce\xb5\xce\xb9\xcf\x83\xce\xb5\xce\xbd\xce\xad\xce\xb3\xce\xba\xce\xb7\xcf\x82 \xce\xb7\xce\xbc\xce\xac\xcf\x82 \xce\xb5\xce\xb9\xcf\x82 \xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xb1\xcf\x83\xce\xbc\xcf\x8c\xce\xbd, \xce\xb1\xce\xbb\xce\xbb\xce\xac \xcf\x81\xcf\x8d\xcf\x83\xce\xb1\xce\xb9 \xce\xb7\xce\xbc\xce\xac\xcf\x82 \xce\xb1\xcf\x80\xcf\x8c \xcf\x84\xce\xbf\xcf\x85 \xcf\x80\xce\xbf\xce\xbd\xce\xb7\xcf\x81\xce\xbf\xcf\x8d. \xce\xb1\xce\xbc\xce\xae\xce\xbd. </p>
+
+<h5>Polytonic</h5>
+<p>\xce\xa0\xce\xac\xcf\x84\xce\xb5\xcf\x81 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd \xe1\xbd\x81 \xe1\xbc\x90\xce\xbd \xcf\x84\xce\xbf\xe1\xbf\x96\xcf\x82 \xce\xbf\xe1\xbd\x90\xcf\x81\xce\xb1\xce\xbd\xce\xbf\xe1\xbf\x96\xcf\x82 \xe1\xbc\x81\xce\xb3\xce\xb9\xce\xb1\xcf\x83\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xe1\xbd\xb8 \xe1\xbd\x84\xce\xbd\xce\xbf\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xe1\xbc\x90\xce\xbb\xce\xb8\xce\xad\xcf\x84\xcf\x89 \xe1\xbc\xa1 \xce\xb2\xce\xb1\xcf\x83\xce\xb9\xce\xbb\xce\xb5\xce\xaf\xce\xb1 \xcf\x83\xce\xbf\xcf\x85\xc2\xb7 \xce\xb3\xce\xb5\xce\xbd\xce\xb7\xce\xb8\xce\xae\xcf\x84\xcf\x89 \xcf\x84\xe1\xbd\xb8 \xce\xb8\xce\xad\xce\xbb\xce\xb7\xce\xbc\xce\xac \xcf\x83\xce\xbf\xcf\x85, \xe1\xbd\xa1\xcf\x82 \xe1\xbc\x90\xce\xbd \xce\xbf\xe1\xbd\x90\xcf\x81\xce\xb1\xce\xbd\xe1\xbf\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\x90\xcf\x80\xe1\xbd\xb6 \xcf\x84\xe1\xbf\x86\xcf\x82 \xce\xb3\xe1\xbf\x86\xcf\x82\xc2\xb7 \xcf\x84\xe1\xbd\xb8\xce\xbd \xe1\xbc\x84\xcf\x81\xcf\x84\xce\xbf\xce\xbd \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd \xcf\x84\xe1\xbd\xb8\xce\xbd \xe1\xbc\x90\xcf\x80\xce\xb9\xce\xbf\xcf\x8d\xcf\x83\xce\xb9\xce\xbf\xce\xbd \xce\xb4\xe1\xbd\xb8\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\x96\xce\xbd \xcf\x83\xce\xae\xce\xbc\xce\xb5\xcf\x81\xce\xbf\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\x84\xcf\x86\xce\xb5\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\x96\xce\xbd \xcf\x84\xe1\xbd\xb0 \xe1\xbd\x80\xcf\x86\xce\xb5\xce\xbb\xce\xae\xce\xbc\xce\xb1\xcf\x84\xce\xb1 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd, \xe1\xbd\xa1\xcf\x82 \xce\xba\xce\xb1\xe1\xbd\xb6 \xe1\xbc\xa1\xce\xbc\xce\xb5\xe1\xbf\x96\xcf\x82 \xe1\xbc\x80\xcf\x86\xce\xaf\xce\xb5\xce\xbc\xce\xb5\xce\xbd \xcf\x84\xce\xbf\xe1\xbf\x96\xcf\x82 \xe1\xbd\x80\xcf\x86\xce\xb5\xce\xb9\xce\xbb\xce\xad\xcf\x84\xce\xb1\xce\xb9\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbf\xb6\xce\xbd\xc2\xb7 \xce\xba\xce\xb1\xe1\xbd\xb6 \xce\xbc\xe1\xbd\xb4 \xce\xb5\xe1\xbc\xb0\xcf\x83\xce\xb5\xce\xbd\xce\xad\xce\xb3\xce\xba\xe1\xbf\x83\xcf\x82 \xe1\xbc\xa1\xce\xbc\xe1\xbe\xb6\xcf\x82 \xce\xb5\xe1\xbc\xb0\xcf\x82 \xcf\x80\xce\xb5\xce\xb9\xcf\x81\xce\xb1\xcf\x83\xce\xbc\xcf\x8c\xce\xbd, \xe1\xbc\x80\xce\xbb\xce\xbb\xe1\xbd\xb0 \xcf\x81\xe1\xbf\xa6\xcf\x83\xce\xb1\xce\xb9 \xe1\xbc\xa1\xce\xbc\xe1\xbe\xb6\xcf\x82 \xe1\xbc\x80\xcf\x80\xe1\xbd\xb8 \xcf\x84\xce\xbf\xe1\xbf\xa6 \xcf\x80\xce\xbf\xce\xbd\xce\xb7\xcf\x81\xce\xbf\xe1\xbf\xa6. \xe1\xbc\x80\xce\xbc\xce\xae\xce\xbd. </p>
+
+
+<h3>Languages</h3>
+<p>(The following are used for demonstration purposes only. Some of the following excerpts are taken from web pages from the BBC Foreign News just to show the script - I have no idea what they actually say!!)</p>
+
+<h4>Latvian</h4>
+<p>Latvijas instit\xc5\xabts veic konsultat\xc4\xabvi koordin\xc4\x93jo\xc5\xa1as funkcijas Latvijas starptautisk\xc4\x81s atpaz\xc4\xabstam\xc4\xabbas jom\xc4\x81; 
+gatavo un izplata pla\xc5\xa1ai sabiedr\xc4\xabbai pieejamu, svar\xc4\xabgu pamatinform\xc4\x81ciju saturo\xc5\xa1u, viegli izprotamu un iegaum\xc4\x93jamu, k\xc4\x81 ar\xc4\xab pozit\xc4\xabvu iespaidu izraiso\xc5\xa1u visp\xc4\x81r\xc4\x93ju pamatinform\xc4\x81ciju par Latviju, Latvijas dabu, sabiedr\xc4\xabbu, kult\xc5\xabru un v\xc4\x93sturi;</p> 
+
+<h4>Azeri (az)</h4>
+<p>Qaz k\xc9\x99m\xc9\x99rinin a\xc3\xa7\xc4\xb1l\xc4\xb1\xc5\x9f\xc4\xb1nda \xc4\xb0ran v\xc9\x99 Erm\xc9\x99nistan\xc4\xb1n prezidentl\xc9\x99ri i\xc5\x9ftirak edibl\xc9\x99r.</p>
+
+<p>\xc4\xb0ran qaz\xc4\xb1n\xc4\xb1 Erm\xc9\x99nistana n\xc9\x99ql ed\xc9\x99c\xc9\x99k bu k\xc9\x99m\xc9\x99r Yerevan \xc3\xbc\xc3\xa7\xc3\xbcn x\xc3\xbcsusi \xc3\xb6n\xc9\x99m da\xc5\x9f\xc4\xb1y\xc4\xb1r, bel\xc9\x99 ki, b\xc3\xb6y\xc3\xbck etnik az\xc9\x99rbaycanl\xc4\xb1 toplumuna malik \xc4\xb0ran t\xc9\x99lat\xc3\xbcml\xc3\xbc regionda \xc3\xb6z maraqlar\xc4\xb1n\xc4\xb1 qorumaq \xc3\xbc\xc3\xa7\xc3\xbcn \xc3\xa7ox vaxt Erm\xc9\x99nistan\xc4\xb1n m\xc3\xbctt\xc9\x99fiqi kimi g\xc3\xb6r\xc3\xbcn\xc3\xbcb.</p>
+
+<h4>Bulgarian</h4>
+<p>\xd0\x9f\xd0\xbe\xd1\x81\xd0\xbb\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb4\xd0\xbe\xd0\xbd\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x80\xd0\xbd\xd0\xb8\xd1\x86\xd0\xb8 \xd0\xb2 \xd0\xb1\xd1\x8a\xd0\xbb\xd0\xb3\xd0\xb0\xd1\x80\xd1\x81\xd0\xba\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb0\xd1\x80\xd0\xbc\xd0\xb8\xd1\x8f \xd1\x89\xd0\xb5 \xd1\x81\xd0\xbb\xd1\x83\xd0\xb6\xd0\xb0\xd1\x82 9 \xd0\xbc\xd0\xb5\xd1\x81\xd0\xb5\xd1\x86\xd0\xb0, \xd0\xba\xd0\xb0\xd0\xba\xd1\x82\xd0\xbe \xd0\xbf\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xbe\xd0\xb2\xd1\x8f\xd0\xb2\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xba\xd0\xbe\xd0\xbd\xd0\xb0 6 \xd0\xbc\xd0\xb5\xd1\x81\xd0\xb5\xd1\x86\xd0\xb0 \xd0\xb5 \xd1\x81\xd1\x8a\xd0\xba\xd1\x80\xd0\xb0\xd1\x82\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f\xd1\x82 \xd1\x81\xd1\x80\xd0\xbe\xd0\xba \xd1\x81\xd0\xb0\xd0\xbc\xd0\xbe \xd0\xb7\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xb2\xd1\x8a\xd1\x80\xd1\x88\xd0\xb8\xd0\xbb\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb2\xd0\xb8\xd1\x81\xd1\x88\xd0\xb5 \xd0\xbe\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb7\xd0\xbe\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xb8\xd0\xb5 - \xd1\x82\xd0\xb0\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x81\xd1\x82\xd1\x8a\xd1\x80 \xd0\x92\xd0\xb5\xd1\x81\xd0\xb5\xd0\xbb\xd0\xb8\xd0\xbd \xd0\x91\xd0\xbb\xd0\xb8\xd0\xb7\xd0\xbd\xd0\xb0\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xbe\xd1\x82\xd1\x85\xd0\xb2\xd1\x8a\xd1\x80\xd0\xbb\xd0\xb8 \xd1\x80\xd0\xb0\xd0\xb7\xd0\xbb\xd0\xb8\xd1\x87\xd0\xbd\xd0\xb8\xd1\x82\xd0\xb5 \xd0\xb8\xd0\xbd\xd1\x82\xd0\xb5\xd1\x80\xd0\xbf\xd1\x80\xd0\xb5\xd1\x82\xd0\xb0\xd1\x86\xd0\xb8\xd0\xb8 \xd0\xb2 \xd0\xbf\xd1\x83\xd0\xb1\xd0\xbb\xd0\xb8\xd1\x87\xd0\xbd\xd0\xbe\xd1\x82\xd0\xbe \xd0\xbf\xd1\x80\xd0\xbe\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd0\xbd\xd1\x81\xd1\x82\xd0\xb2\xd0\xbe \xd0\xbf\xd0\xbe \xd1\x82\xd0\xb5\xd0\xbc\xd0\xb0\xd1\x82\xd0\xb0. \xd0\x9c\xd0\xb8\xd0\xbd\xd0\xb8\xd1\x81\xd1\x82\xd1\x8a\xd1\x80\xd1\x8a\xd1\x82 \xd0\xbd\xd0\xb0 \xd0\xbe\xd1\x82\xd0\xb1\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb0\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb0\xd0\xb7\xd1\x84\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb0 \xd0\xb2 \xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xbd\xd0\xbb\xd1\x8a\xd0\xba \xd0\x92\xd1\x82\xd0\xbe\xd1\x80\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xbd\xd0\xb8 \xd1\x80\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xbe\xd1\x82 \xd0\x90\xd1\x88\xd1\x80\xd0\xb0\xd1\x84 \xd0\xb8 \xd0\x92\xd1\x82\xd0\xbe\xd1\x80\xd0\xb8 \xd0\xbf\xd0\xb5\xd1\x85\xd0\xbe\xd1\x82\xd0\xb5\xd0\xbd \xd0\xb2\xd0\xb7\xd0\xb2\xd0\xbe\xd0\xb4, \xd0\xb7\xd0\xb0\xd0\xb2\xd1\x8a\xd1\x80\xd0\xbd\xd0\xb0\xd0\xbb \xd1\x81\xd0\xb5 \xd0\xbe\xd1\x82 \xd0\xbc\xd0\xb8\xd1\x80\xd0\xbe\xd1\x82\xd0\xb2\xd0\xbe\xd1\x80\xd1\x87\xd0\xb5\xd1\x81\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xb8\xd1\x81\xd0\xb8\xd1\x8f \xd0\xbe\xd1\x82 \xd0\x91\xd0\xb0\xd0\xbd\xd1\x8f \xd0\x9b\xd1\x83\xd0\xba\xd0\xb0 \xd0\xb2 \xd0\x91\xd0\xbe\xd1\x81\xd0\xbd\xd0\xb0 \xd0\xb8 \xd0\xa5\xd0\xb5\xd1\x80\xd1\x86\xd0\xb5\xd0\xb3\xd0\xbe\xd0\xb2\xd0\xb8\xd0\xbd\xd0\xb0.</p> 
+
+<h4>Macedonian (mk)</h4>
+<p>\xd0\x91\xd1\x83\xd1\x88 \xd1\x80\xd0\xb5\xd1\x87\xd0\xb5 \xd0\xbe\xd1\x82\xd0\xb8 \xd0\xb5 \xd1\x81\xd1\x83\xd1\x88\xd1\x82\xd0\xb8\xd0\xbd\xd1\x81\xd0\xba\xd0\xb8 \xd0\xb4\xd0\xb0 \xd1\x81\xd0\xb5 \xd0\xbe\xd1\x81\xd0\xb8\xd0\xb3\xd1\x83\xd1\x80\xd0\xb8 \xd0\xb1\xd0\xb5\xd0\xb7\xd0\xb1\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x81\xd1\x82\xd0\xb0 \xd0\xbd\xd0\xb0 \xd0\x91\xd0\xb0\xd0\xb3\xd0\xb4\xd0\xb0\xd0\xb4 \xd0\xb8 \xd0\xb4\xd0\xb0 \xd1\x81\xd0\xb5 \xd0\xbe\xd0\xb1\xd0\xbd\xd0\xbe\xd0\xb2\xd0\xb8 \xd0\xbd\xd0\xbe\xd1\x80\xd0\xbc\xd0\xb0\xd0\xbb\xd0\xbd\xd0\xb8\xd0\xbe\xd1\x82 \xd0\xb6\xd0\xb8\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb2\xd0\xbe \xd0\xbe\xd1\x81\xd1\x82\xd0\xb0\xd1\x82\xd0\xbe\xd0\xba\xd0\xbe\xd1\x82 \xd0\xbe\xd0\xb4 \xd0\xb7\xd0\xb5\xd0\xbc\xd1\x98\xd0\xb0\xd1\x82\xd0\xb0.</p>
+
+<p>\xd0\x9c\xd0\xb8\xd1\x82\xd1\x80\xd0\xb5\xd0\xb2\xd0\xb0 \xd1\x98\xd0\xb0 \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb7\xd0\xb2\xd0\xb0 \xd0\xb2\xd0\xbb\xd0\xb0\xd0\xb4\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xb8\xd0\xbd\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb5\xd0\xbd\xd1\x82\xd0\xb5\xd0\xbd \xd0\xbe\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x81 \xd0\xba\xd0\xbe\xd0\xbd \xd0\xbe\xd0\xb2\xd0\xb0 \xd0\xb1\xd0\xb8\xd1\x82\xd0\xba\xd0\xb0\xd1\x82\xd0\xb0 \xd0\xb7\xd0\xb0 \xd0\xb7\xd0\xb0\xd1\x87\xd1\x83\xd0\xb2\xd0\xb8\xd0\xb2\xd0\xb0\xd1\x9a\xd0\xb5 \xd0\xbd\xd0\xb0 \xd1\x83\xd1\x81\xd1\x82\xd0\xb0\xd0\xb2\xd0\xbd\xd0\xbe\xd1\x82\xd0\xbe \xd0\xb8\xd0\xbc\xd0\xb5 \xd0\xbd\xd0\xb0 \xd0\xb7\xd0\xb5\xd0\xbc\xd1\x98\xd0\xb0\xd1\x82\xd0\xb0.</p>
+
+<h4>Uzbek (uz)</h4>
+<p>\xd0\x98\xd1\x80\xd0\xbe\xd2\x9b\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbb\xd0\xb0\xd1\x80 \xd0\xbe\xd1\x80\xd0\xb0\xd1\x81\xd0\xb8\xd0\xb4\xd0\xb0 \xd1\x82\xd1\x83\xd1\x88\xd0\xba\xd1\x83\xd0\xbd\xd0\xbb\xd0\xb8\xd0\xba \xd0\xbe\xd1\x80\xd1\x82\xd0\xb8\xd0\xb1 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0\xd1\x8f\xd0\xbf\xd1\x82\xd0\xb8</p>
+
+<p>\xd0\x98\xd1\x80\xd0\xbe\xd2\x9b\xd0\xb4\xd0\xb0 \xd1\x9e\xd1\x82\xd0\xba\xd0\xb0\xd0\xb7\xd0\xb8\xd0\xbb\xd0\xb3\xd0\xb0\xd0\xbd \xd1\x81\xd1\x9e\xd0\xbd\xd0\xb3\xd0\xb3\xd0\xb8 \xd0\xb6\xd0\xb0\xd0\xbc\xd0\xbe\xd0\xb0\xd1\x82\xd1\x87\xd0\xb8\xd0\xbb\xd0\xb8\xd0\xba \xd1\x84\xd0\xb8\xd0\xba\xd1\x80\xd0\xb8\xd0\xbd\xd0\xb8 \xd1\x9e\xd1\x80\xd0\xb3\xd0\xb0\xd0\xbd\xd0\xb8\xd1\x88 \xd0\xbd\xd0\xb0\xd1\x82\xd0\xb8\xd0\xb6\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x80\xd0\xb8\xd0\xb3\xd0\xb0 \xd0\xba\xd1\x9e\xd1\x80\xd0\xb0, \xd0\xbc\xd0\xb0\xd0\xbc\xd0\xbb\xd0\xb0\xd0\xba\xd0\xb0\xd1\x82 \xd0\xba\xd0\xb5\xd0\xbb\xd0\xb0\xd0\xb6\xd0\xb0\xd0\xb3\xd0\xb8 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0\xd1\x81\xd0\xb8\xd0\xb4\xd0\xb0 \xd1\x82\xd1\x83\xd1\x88\xd0\xba\xd1\x83\xd0\xbd \xd0\xba\xd0\xb0\xd0\xb9\xd1\x84\xd0\xb8\xd1\x8f\xd1\x82\xd0\xb4\xd0\xb0 \xd0\xb1\xd1\x9e\xd0\xbb\xd0\xb3\xd0\xb0\xd0\xbd \xd0\xb8\xd1\x80\xd0\xbe\xd2\x9b\xd0\xbb\xd0\xb8\xd0\xba\xd0\xbb\xd0\xb0\xd1\x80 \xd1\x81\xd0\xbe\xd0\xbd\xd0\xb8 \xd1\x82\xd0\xbe\xd0\xb1\xd0\xbe\xd1\x80\xd0\xb0 \xd0\xbe\xd1\x80\xd1\x82\xd0\xb8\xd0\xb1 \xd0\xb1\xd0\xbe\xd1\x80\xd0\xbc\xd0\xbe\xd2\x9b\xd0\xb4\xd0\xb0.</p>
+
+<h4>Kyrgyz (ky)</h4>
+<p>\xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xba\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xb4\xd0\xb0 \xd0\xb0\xd0\xb9\xd1\x8b\xd0\xbb \xd1\x82\xd1\x83\xd1\x80\xd0\xb3\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd1\x80\xd1\x8b \xd1\x83\xd1\x80\xd1\x83\xd1\x88\xd0\xb0 \xd0\xba\xd0\xb5\xd1\x82\xd0\xb8\xd0\xbf 3 \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xba\xd0\xb0\xd0\xb7\xd0\xb0 \xd1\x82\xd0\xb0\xd0\xbf\xd1\x82\xd1\x8b
+\xd0\x9a\xd0\xb0\xd0\xb7\xd0\xb0\xd0\xba\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd\xd0\xb4\xd1\x8b\xd0\xbd \xd0\x90\xd0\xbb\xd0\xbc\xd0\xb0\xd1\x82\xd1\x8b \xd1\x88\xd0\xb0\xd0\xb0\xd1\x80\xd1\x8b\xd0\xbd\xd1\x8b\xd0\xbd \xd1\x82\xd1\x83\xd1\x88\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb3\xd1\x8b \xd0\xb0\xd0\xb9\xd1\x8b\xd0\xbb\xd0\xb4\xd0\xb0 \xd1\x8d\xd0\xba\xd0\xb8 \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xbe\xd1\x80\xd1\x82\xd0\xbe\xd1\x81\xd1\x83\xd0\xbd\xd0\xb4\xd0\xb0\xd0\xb3\xd1\x8b \xd1\x87\xd0\xb0\xd1\x82\xd0\xb0\xd0\xba \xd1\x87\xd0\xbe\xd2\xa3 \xd1\x83\xd1\x80\xd1\x83\xd1\x88\xd0\xba\xd0\xb0 \xd0\xb0\xd0\xb9\xd0\xbb\xd0\xb0\xd0\xbd\xd1\x8b\xd0\xbf, \xd0\xb0\xd0\xb3\xd0\xb0 \xd1\x8d\xd0\xbb\xd2\xaf\xd2\xaf \xd1\x87\xd0\xb0\xd0\xba\xd1\x82\xd1\x8b \xd0\xba\xd0\xb8\xd1\x88\xd0\xb8 \xd0\xb0\xd1\x80\xd0\xb0\xd0\xbb\xd0\xb0\xd1\x88\xd0\xba\xd0\xb0\xd0\xbd.</p>
+
+
+<h4>Albanian (sq)</h4>
+<p>Nj\xc3\xab anket\xc3\xab sugjeron se irakian\xc3\xabt kan\xc3\xab nj\xc3\xab pesimiz\xc3\xabm n\xc3\xab rritje p\xc3\xabr t\xc3\xab ardhmen e vendit t\xc3\xab tyre.</p>
+
+<p>Presidenti shqiptar Alfred Moisiu dekretoi t\xc3\xab h\xc3\xabn\xc3\xabn ndryshimet e propozuara nga kryeministri Sali Berisha n\xc3\xab kabinetin e tij, pas zgjedhjeve lokale.</p>
+
+
+<h4>Vietnamese (vi)</h4>
+<p>M\xc3\xb4\xcc\xa3t kha\xcc\x89o sa\xcc\x81t m\xc6\xa1\xcc\x81i cho bi\xc3\xaa\xcc\x81t ng\xc6\xb0\xc6\xa1\xcc\x80i d\xc3\xa2n Iraq nga\xcc\x80y ca\xcc\x80ng ca\xcc\x89m th\xc3\xa2\xcc\x81y bi quan va\xcc\x80 kh\xc3\xb4ng tin t\xc6\xb0\xc6\xa1\xcc\x89ng va\xcc\x80o chi\xcc\x81nh phu\xcc\x89 cu\xcc\x83ng nh\xc6\xb0 li\xc3\xaan qu\xc3\xa2n</p>
+
+<p>Nga \xc4\x91ang th\xc6\xb0\xcc\xa3c hi\xc3\xaa\xcc\xa3n chi\xc3\xaa\xcc\x81n di\xcc\xa3ch c\xc6\xb0\xcc\x81u h\xc3\xb4\xcc\xa3 sau khi co\xcc\x81 vu\xcc\xa3 n\xc3\xb4\xcc\x89 khi\xcc\x81 methane ta\xcc\xa3i m\xc3\xb4\xcc\xa3t mo\xcc\x89 than \xc6\xa1\xcc\x89 Siberia la\xcc\x80m i\xcc\x81t nh\xc3\xa2\xcc\x81t 61 ng\xc6\xb0\xc6\xa1\xcc\x80i thi\xc3\xaa\xcc\xa3t ma\xcc\xa3ng</p>
+
+<h4>Thai (pangram)</h4>
+<p>\xe0\xb9\x80\xe0\xb8\x9b\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa1\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa9\xe0\xb8\xa2\xe0\xb9\x8c\xe0\xb8\xaa\xe0\xb8\xb8\xe0\xb8\x94\xe0\xb8\x9b\xe0\xb8\xa3\xe0\xb8\xb0\xe0\xb9\x80\xe0\xb8\xaa\xe0\xb8\xa3\xe0\xb8\xb4\xe0\xb8\x90\xe0\xb9\x80\xe0\xb8\xa5\xe0\xb8\xb4\xe0\xb8\xa8\xe0\xb8\x84\xe0\xb8\xb8\xe0\xb8\x93\xe0\xb8\x84\xe0\xb9\x88\xe0\xb8\xb2 \xe0\xb8\x81\xe0\xb8\xa7\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9a\xe0\xb8\xa3\xe0\xb8\xa3\xe0\xb8\x94\xe0\xb8\xb2\xe0\xb8\x9d\xe0\xb8\xb9\xe0\xb8\x87\xe0\xb8\xaa\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xa7\xe0\xb9\x8c\xe0\xb9\x80\xe0\xb8\x94\xe0\xb8\xa3\xe0\xb8\xb1\xe0\xb8\x88\xe0\xb8\x89\xe0\xb8\xb2\xe0\xb8\x99 \xe0\xb8\x88\xe0\xb8\x87\xe0\xb8\x9d\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9f\xe0\xb8\xb1\xe0\xb8\x99\xe0\xb8\x9e\xe0\xb8\xb1\xe0\xb8\x92\xe0\xb8\x99\xe0\xb8\xb2\xe0\xb8\xa7\xe0\xb8\xb4\xe0\xb8\x8a\xe0\xb8\xb2\xe0\xb8\x81\xe0\xb8\xb2\xe0\xb8\xa3 \xe0\xb8\xad\xe0\xb8\xa2\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\xa5\xe0\xb9\x89\xe0\xb8\xb2\xe0\xb8\x87\xe0\xb8\x9c\xe0\xb8\xa5\xe0\xb8\xb2\xe0\xb8\x8d\xe0\xb8\xa4\xe0\xb9\x85\xe0\xb9\x80\xe0\xb8\x82\xe0\xb9\x88\xe0\xb8\x99\xe0\xb8\x86\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9a\xe0\xb8\xb5\xe0\xb8\x91\xe0\xb8\xb2\xe0\xb9\x83\xe0\xb8\x84\xe0\xb8\xa3 \xe0\xb9\x84\xe0\xb8\xa1\xe0\xb9\x88\xe0\xb8\x96\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb9\x82\xe0\xb8\x97\xe0\xb8\xa9\xe0\xb9\x82\xe0\xb8\x81\xe0\xb8\xa3\xe0\xb8\x98\xe0\xb9\x81\xe0\xb8\x8a\xe0\xb9\x88\xe0\xb8\x87\xe0\xb8\x8b\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\xae\xe0\xb8\xb6\xe0\xb8\x94\xe0\xb8\xae\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\x94\xe0\xb9\x88\xe0\xb8\xb2 \xe0\xb8\xab\xe0\xb8\xb1\xe0\xb8\x94\xe0\xb8\xad\xe0\xb8\xa0\xe0\xb8\xb1\xe0\xb8\xa2\xe0\xb9\x80\xe0\xb8\xab\xe0\xb8\xa1\xe0\xb8\xb7\xe0\xb8\xad\xe0\xb8\x99\xe0\xb8\x81\xe0\xb8\xb5\xe0\xb8\xac\xe0\xb8\xb2\xe0\xb8\xad\xe0\xb8\xb1\xe0\xb8\x8a\xe0\xb8\x8c\xe0\xb8\xb2\xe0\xb8\xaa\xe0\xb8\xb1\xe0\xb8\xa2 \xe0\xb8\x9b\xe0\xb8\x8f\xe0\xb8\xb4\xe0\xb8\x9a\xe0\xb8\xb1\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x9b\xe0\xb8\xa3\xe0\xb8\xb0\xe0\xb8\x9e\xe0\xb8\xa4\xe0\xb8\x95\xe0\xb8\xb4\xe0\xb8\x81\xe0\xb8\x8e\xe0\xb8\x81\xe0\xb8\xb3\xe0\xb8\xab\xe0\xb8\x99\xe0\xb8\x94\xe0\xb9\x83\xe0\xb8\x88 \xe0\xb8\x9e\xe0\xb8\xb9\xe0\xb8\x94\xe0\xb8\x88\xe0\xb8\xb2\xe0\xb9\x83\xe0\xb8\xab\xe0\xb9\x89\xe0\xb8\x88\xe0\xb9\x8a\xe0\xb8\xb0\xe0\xb9\x86 \xe0\xb8\x88\xe0\xb9\x8b\xe0\xb8\xb2 \xe0\xb8\x99\xe0\xb9\x88\xe0\xb8\xb2\xe0\xb8\x9f\xe0\xb8\xb1\xe0\xb8\x87\xe0\xb9\x80\xe0\xb8\xad\xe0\xb8\xa2\xe0\xb8\xaf </p>
+
+
+<!-- RTL LANGUAGES -->
+<div style=\"text-align: right;\">
+
+<h4>Hebrew (pangram)</h4>
+<p>\xd7\x93\xd7\x92 \xd7\xa1\xd7\xa7\xd7\xa8\xd7\x9f \xd7\xa9\xd7\x98 \xd7\x91\xd7\x99\xd7\x9d \xd7\x9e\xd7\x90\xd7\x95\xd7\x9b\xd7\x96\xd7\x91 \xd7\x95\xd7\x9c\xd7\xa4\xd7\xaa\xd7\xa2 \xd7\x9e\xd7\xa6\xd7\x90 \xd7\x97\xd7\x91\xd7\xa8\xd7\x94 </p>
+
+<p>\xd7\x90\xd7\x95 \xd7\x94\xd7\xa0\xd7\xa1\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9d, \xd7\x9c\xd7\x91\xd7\x95\xd7\x90 \xd7\x9c\xd7\xa7\xd7\x97\xd7\xaa \xd7\x9c\xd7\x95 \xd7\x92\xd7\x95\xd7\x99 \xd7\x9e\xd7\xa7\xd7\xa8\xd7\x91 \xd7\x92\xd7\x95\xd7\x99, \xd7\x91\xd7\x9e\xd7\xa1\xd7\xaa \xd7\x91\xd7\x90\xd7\xaa\xd7\xaa \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa4\xd7\xaa\xd7\x99\xd7\x9d \xd7\x95\xd7\x91\xd7\x9e\xd7\x9c\xd7\x97\xd7\x9e\xd7\x94 \xd7\x95\xd7\x91\xd7\x99\xd7\x93 \xd7\x97\xd7\x96\xd7\xa7\xd7\x94 \xd7\x95\xd7\x91\xd7\x96\xd7\xa8\xd7\x95\xd7\xa2 \xd7\xa0\xd7\x98\xd7\x95\xd7\x99\xd7\x94, \xd7\x95\xd7\x91\xd7\x9e\xd7\x95\xd7\xa8\xd7\x90\xd7\x99\xd7\x9d \xd7\x92\xd7\x93\xd7\x9c\xd7\x99\xd7\x9d: \xd7\x9b\xd7\x9b\xd7\x9c \xd7\x90\xd7\xa9\xd7\xa8-\xd7\xa2\xd7\xa9\xd7\x94 \xd7\x9c\xd7\x9b\xd7\x9d \xd7\x99\xd7\x94\xd7\x95\xd7\x94 \xd7\x90\xd7\x9c\xd7\x94\xd7\x99\xd7\x9b\xd7\x9d, \xd7\x91\xd7\x9e\xd7\xa6\xd7\xa8\xd7\x99\xd7\x9d--\xd7\x9c\xd7\xa2\xd7\x99\xd7\xa0\xd7\x99\xd7\x9a </p>
+
+
+
+
+<h4>Arabic</h4>
+<p>\xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.</p>
+
+<p>\xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f</p>
+
+
+<h4>Persian / Farsi</h4>
+<p>\xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.</p> 
+
+
+
+<h4>Urdu</h4>
+<p>&#x62a;&#x645;&#x627;&#x645; &#x627;&#x646;&#x633;&#x627;&#x646; &#x622;&#x632;&#x627;&#x62f; &#x627;&#x648;&#x631; &#x62d;&#x642;&#x648;&#x642; &#x648; &#x639;&#x632;&#x62a; &#x6a9;&#x6d2; &#x627;&#x639;&#x62a;&#x628;&#x627;&#x631; &#x633;&#x6d2; &#x628;&#x631;&#x627;&#x628;&#x631; &#x67e;&#x6cc;&#x62f;&#x627; &#x6c1;&#x648;&#x6d3; &#x6c1;&#x6cc;&#x6ba;&#x6d4; &#x627;&#x646;&#x6c1;&#x6cc;&#x6ba; &#x636;&#x645;&#x6cc;&#x631; &#x627;&#x648;&#x631; &#x639;&#x642;&#x644; &#x648;&#x62f;&#x6cc;&#x639;&#x62a; &#x6c1;&#x648;&#x626;&#x6cc; &#x6c1;&#x6cc;&#x6d4; &#x627;&#x633;&#x644;&#x6d3; &#x627;&#x646;&#x6c1;&#x6cc;&#x6ba; &#x627;&#x6cc;&#x6a9; &#x62f;&#x648;&#x633;&#x631;&#x6d2; &#x6a9;&#x6d2; &#x633;&#x627;&#x62a;&#x6be; &#x628;&#x6be;&#x627;&#x626;&#x6cc; &#x686;&#x627;&#x631;&#x6d2; &#x6a9;&#x627; &#x633;&#x644;&#x648;&#x6a9; &#x6a9;&#x631;&#x646;&#x627; &#x686;&#x627;&#x6c1;&#x6cc;&#x6d3;&#x6d4;
+</p>
+
+<h4>Pashto (ps)</h4>
+<p>\xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.
+</p>
+
+<h4>Sindhi (sd)</h4>
+<p>
+&#x648;&#x627;&#x634;&#x646;&#x6af;&#x67d;&#x646; (&#x645; &#x68a;) &#x622;&#x645;&#x631;&#x64a;&#x6aa;&#x627; &#x686;&#x64a;&#x648; &#x622;&#x647;&#x64a; &#x62a;&#x647; &#x6aa;&#x64a;&#x631;&#x64a; &#x644;&#x648;&#x6af;&#x631;&#x628;&#x644; &#x62a;&#x64a; &#x67e;&#x627;&#x6aa; &#x641;&#x648;&#x62c; &#x62c;&#x64a; &#x62a;&#x62d;&#x641;&#x638;&#x627;&#x62a; &#x633;&#x627;&#x646; &#x67e;&#x627;&#x6aa;&#x633;&#x62a;&#x627;&#x646; &#x6fe; &#x62c;&#x645;&#x647;&#x648;&#x631;&#x64a; &#x637;&#x648;&#x631; &#x622;&#x64a;&#x644; &#x632;&#x631;&#x62f;&#x627;&#x631;&#x64a; &#x62c;&#x64a; &#x62d;&#x6aa;&#x648;&#x645;&#x62a; &#x6a9;&#x64a; &#x6aa;&#x648;&#x628;&#x647; &#x62e;&#x637;&#x631;&#x648; &#x646;&#x627;&#x647;&#x64a;&#x60c; &#x627;&#x646; &#x633;&#x648;&#x627;&#x644; &#x62a;&#x64a; &#x62a;&#x64a; &#x6aa;&#x64a;&#x631;&#x64a; &#x644;&#x648;&#x6af;&#x631;&#x628;&#x644; &#x6fe; &#x67e;&#x627;&#x6aa;&#x633;&#x62a;&#x627;&#x646; &#x6a9;&#x64a; &#x63a;&#x64a;&#x631; &#x645;&#x634;&#x631;&#x648;&#x637; &#x627;&#x645;&#x62f;&#x627;&#x62f; &#x68f;&#x64a;&#x6bb; &#x62c;&#x64a; &#x6b3;&#x627;&#x644;&#x647;&#x647; &#x6aa;&#x626;&#x64a; &#x648;&#x626;&#x64a; &#x622;&#x647;&#x64a;&#x60c; &#x62c;&#x68f;&#x647;&#x646; &#x62a;&#x647; &#x641;&#x648;&#x62c;&#x64a; &#x627;&#x645;&#x62f;&#x627;&#x62f; &#x62a;&#x64a; &#x634;&#x631;&#x637; &#x644;&#x627;&#x6b3;&#x648; &#x6aa;&#x64a;&#x627; 
+</p>
+
+</div>
+<!-- END RTL LANGUAGES -->
+
+<h3>Indic Scripts</h3>
+
+<h4>
+Malayalam
+</h4>
+<p>&#xd38;&#xd02;&#xd38;&#xd4d;&#xd25;&#xd3e;&#xd28;&#xd24;&#xd4d;&#xd24;&#xd4d; &#xd30;&#xd3e;&#xd37;&#xd4d;&#xd1f;&#xd4d;&#xd30;&#xd40;&#xd2f; &#xd2a;&#xd41;&#xd15;&#xd2e;&#xd31; &#xd38;&#xd43;&#xd37;&#xd4d;&#xd1f;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd3e;&#xd28;&#xd3e;&#xd23;&#xd4d; &#xd35;&#xd4b;&#xd1f;&#xd4d;&#xd1f;&#xd30;&#xd4d;&#x200d;&#xd2a;&#xd1f;&#xd4d;&#xd1f;&#xd3f;&#xd15; &#xd35;&#xd3f;&#xd35;&#xd3e;&#xd26;&#xd24;&#xd4d;&#xd24;&#xd3f;&#xd32;&#xd42;&#xd1f;&#xd46; &#xd15;&#xd4b;&#xd23;&#xd4d;&#x200d;&#xd17;&#xd4d;&#xd30;&#xd38;&#xd4d; &#xd36;&#xd4d;&#xd30;&#xd2e;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd46;&#xd28;&#xd4d;&#xd28;&#xd4d; &#xd38;&#xd3f;&#xd2a;&#xd3f;&#x200c;&#xd0e;&#xd02; &#xd38;&#xd02;&#xd38;&#xd4d;&#xd25;&#xd3e;&#xd28; &#xd38;&#xd46;&#xd15;&#xd4d;&#xd30;&#xd1f;&#xd4d;&#xd1f;&#xd31;&#xd3f; &#xd2a;&#xd3f;&#xd23;&#xd31;&#xd3e;&#xd2f;&#xd3f; &#xd35;&#xd3f;&#xd1c;&#xd2f;&#xd28;&#xd4d;&#x200d; &#xd15;&#xd41;&#xd31;&#xd4d;&#xd31;&#xd2a;&#xd4d;&#xd2a;&#xd46;&#xd1f;&#xd41;&#xd24;&#xd4d;&#xd24;&#xd3f;. &#xd09;&#xd26;&#xd4d;&#xd2f;&#xd4b;&#xd17;&#xd38;&#xd4d;&#xd25;&#xd30;&#xd46; &#xd2d;&#xd40;&#xd37;&#xd23;&#xd3f;&#xd2a;&#xd4d;&#xd2a;&#xd46;&#xd1f;&#xd41;&#xd24;&#xd4d;&#xd24;&#xd3f; &#xd35;&#xd30;&#xd41;&#xd24;&#xd3f;&#xd2f;&#xd3f;&#xd32;&#xd4d;&#x200d; &#xd28;&#xd3f;&#xd30;&#xd4d;&#x200d;&#xd24;&#xd4d;&#xd24;&#xd3e;&#xd28;&#xd3e;&#xd23;&#xd4d; &#xd35;&#xd2f;&#xd32;&#xd3e;&#xd30;&#xd4d;&#x200d; &#xd30;&#xd35;&#xd3f; &#xd09;&#xd33;&#xd4d;&#x200d;&#xd2a;&#xd4d;&#xd2a;&#xd46;&#xd1f;&#xd46;&#xd2f;&#xd41;&#xd33;&#xd4d;&#xd33;&#xd35;&#xd30;&#xd4d;&#x200d; &#xd36;&#xd4d;&#xd30;&#xd2e;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd46;&#xd28;&#xd4d;&#xd28;&#xd41;&#xd02; &#xd2a;&#xd3f;&#xd23;&#xd31;&#xd3e;&#x200d;&#xd2f;&#xd3f; &#xd2a;&#xd4d;&#xd30;&#xd38;&#xd4d;&#xd24;&#xd3e;&#xd35;&#xd28;&#xd2f;&#xd3f;&#xd32;&#xd4d;&#x200d; &#xd06;&#xd30;&#xd4b;&#xd2a;&#xd3f;&#xd1a;&#xd4d;&#xd1a;&#xd41;.
+</p>
+
+<h4>Kannada</h4>
+<p>
+&#xca4;&#xcae;&#xccd;&#xcae;&#xca6;&#xcc7; &#xc95;&#xcc1;&#xc9f;&#xcc1;&#xc82;&#xcac;&#xca6; &#xcaf;&#xcc1;&#xcb5;&#xca4;&#xcbf;&#xcaf;&#xcca;&#xcac;&#xccd;&#xcac;&#xcb3;&#xca8;&#xccd;&#xca8;&#xcc1; &#xcb8;&#xca4;&#xca4; &#xcb9;&#xcb2;&#xcb5;&#xcbe;&#xcb0;&#xcc1; &#xcb5;&#xcb0;&#xccd;&#xcb7; &#xcad;&#xccb;&#xc97;&#xcbf;&#xcb8;&#xcbf;&#xca6; &#xcad;&#xcbe;&#xcb0;&#xca4;&#xcc0;&#xcaf; &#xcae;&#xcc2;&#xcb2;&#xca6; &#xcae;&#xcc2;&#xcb5;&#xcb0;&#xcc1; &#xca6;&#xcc1;&#xcb0;&#xcc1;&#xcb3; &#xcb8;&#xc82;&#xcac;&#xc82;&#xca7;&#xcbf;&#xc95;&#xcb0;&#xcc1; &#xc85;&#xcaa;&#xcb0;&#xcbe;&#xca7;&#xcbf;&#xc97;&#xcb3;&#xcc6;&#xc82;&#xca6;&#xcc1; &#xcb8;&#xcbe;&#xcac;&#xcc0;&#xca4;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1;, &#xc87;&#xc82;&#xc97;&#xccd;&#xcb2;&#xcc6;&#xc82;&#xca1;&#xccd; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf;&#xcb5;&#xcc1; &#xca6;&#xcc0;&#xcb0;&#xccd;&#xc98;&#xcbe;&#xcb5;&#xca7;&#xcbf; &#xc95;&#xca0;&#xcbf;&#xca3; &#xcb6;&#xcbf;&#xc95;&#xccd;&#xcb7;&#xcc6; &#xcb5;&#xcbf;&#xca7;&#xcbf;&#xcb8;&#xcbf;&#xca6;&#xcc6;.
+</p>
+
+<h4>Telegu</h4>
+<p>&#xc06;&#xc17;&#xc4d;&#xc28;&#xc47;&#xc2f; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b; &#xc06;&#xc26;&#xc3f;&#xc35;&#xc3e;&#xc30;&#xc02; &#xc28;&#xc3e;&#xc21;&#xc41; &#xc13; &#xc06;&#xc24;&#xc4d;&#xc2e;&#xc3e;&#xc39;&#xc41;&#xc24;&#xc3f; &#xc26;&#xc3e;&#xc21;&#xc3f; &#xc1c;&#xc30;&#xc17;&#xc21;&#xc02;&#xc24;&#xc4b; &#xc07;&#xc30;&#xc35;&#xc48; &#xc2e;&#xc02;&#xc26;&#xc3f; &#xc2e;&#xc43;&#xc24;&#xc3f; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3e;&#xc30;&#xc41;.
+<br />
+
+&#xc06;&#xc17;&#xc4d;&#xc28;&#xc47;&#xc2f; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b; &#xc06;&#xc24;&#xc4d;&#xc2e;&#xc3e;&#xc39;&#xc41;&#xc24;&#xc3f; &#xc26;&#xc3e;&#xc21;&#xc3f; &#xc1c;&#xc30;&#xc17;&#xc21;&#xc02;&#xc24;&#xc4b; &#xc10;&#xc26;&#xc41;&#xc17;&#xc41;&#xc30;&#xc41; &#xc0e;&#xc32;&#xc3f;&#xc1f;&#xc4d; &#xc30;&#xc46;&#xc35;&#xc32;&#xc4d;&#xc2f;&#xc42;&#xc37;&#xc28;&#xc30;&#xc40; &#xc17;&#xc3e;&#xc30;&#xc4d;&#xc21;&#xc4d;&#x200c;&#xc32;&#xc24;&#xc4b; &#xc38;&#xc39;&#xc3e; &#xc2a;&#xc4d;&#xc30;&#xc2e;&#xc41;&#xc16; &#xc15;&#xc2e;&#xc3e;&#xc02;&#xc21;&#xc30;&#xc4d;&#x200c;&#xc32;&#xc24;&#xc4b;&#xc38;&#xc39;&#xc3e; &#xc2e;&#xc4a;&#xc24;&#xc4d;&#xc24;&#xc02; &#xc07;&#xc30;&#xc35;&#xc48; &#xc2e;&#xc02;&#xc26;&#xc3f; &#xc2e;&#xc43;&#xc24;&#xc3f; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3f;&#xc28;&#xc1f;&#xc4d;&#xc32;&#xc41; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d; &#xc32;&#xc4b;&#xc15;&#xc4d;&#x200c;&#xc38;&#xc2d; &#xc38;&#xc4d;&#xc2a;&#xc40;&#xc15;&#xc30;&#xc4d; &#xc05;&#xc32;&#xc40; &#xc32;&#xc3e;&#xc30;&#xc3f;&#xc1c;&#xc3e;&#xc28;&#xc40; &#xc24;&#xc46;&#xc32;&#xc3f;&#xc2a;&#xc3e;&#xc30;&#xc41;.
+</p>
+
+
+
+<h4>Tamil (ta)</h4>
+<p>\xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xae\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xa8\xe0\xae\xae\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d, \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\xb0\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xa3\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81 \xe0\xae\x92\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81.</p>
+
+
+<h4>Oriya</h4>
+<p>&#xb13;&#xb21;&#xb3c;&#xb3f;&#xb06; &#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06; &#xb06;&#xb2a;&#xb23;&#xb19;&#xb4d;&#xb15;&#xb41; &#xb38;&#xb4d;&#xb2c;&#xb3e;&#xb17;&#xb24; &#xb15;&#xb30;&#xb41;&#xb1b;&#xb3f;&#x964; &#xb0f;&#xb39;&#xb3f; &#xb09;&#xb28;&#xb4d;&#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb1c;&#xb4d;&#xb1e;&#xb3e;&#xb28;&#xb15;&#xb4b;&#xb37;&#xb1f;&#xb3f; &#xb07;&#xb23;&#xb4d;&#xb1f;&#xb30;&#xb28;&#xb47;&#xb1f; &#xb09;&#xb2a;&#xb30;&#xb47; &#xb06;&#xb27;&#xb3e;&#xb30;&#xb3f;&#xb24; &#xb0f;&#xb2c;&#xb02; &#xb0f;&#xb39;&#xb3e; &#xb2c;&#xb3f;&#xb36;&#xb4d;&#xb2c;&#xb30; &#xb6b;&#xb66;&#xb1f;&#xb3f; &#xb2d;&#xb3e;&#xb37;&#xb3e;&#xb30;&#xb47; &#xb09;&#xb2a;&#xb32;&#xb2c;&#xb4d;&#xb27; &#x964; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb06;&#xb2a;&#xb23; &#xb2e;&#xb27;&#xb4d;&#xb5f; &#xb2c;&#xb30;&#xb4d;&#xb26;&#xb4d;&#xb27;&#xb3f;&#xb24; &#xb13; &#xb2a;&#xb30;&#xb3f;&#xb2c;&#xb30;&#xb4d;&#xb24;&#xb3f;&#xb24; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#xb0f;&#xb2c;&#xb02; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb09;&#xb28;&#xb4d;&#xb28;&#xb24; &#xb15;&#xb30;&#xb3f;&#xb2c;&#xb3e; &#xb2a;&#xb3e;&#xb07;&#xb01; &#xb28;&#xb3f;&#xb1c;&#xb30; &#xb05;&#xb2c;&#xb26;&#xb3e;&#xb28; &#xb26;&#xb47;&#xb07; &#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#x964; &#xb06;&#xb2a;&#xb23;&#xb19;&#xb4d;&#xb15; &#xb2a;&#xb38;&#xb28;&#xb4d;&#xb26;&#xb30; &#xb2c;&#xb3f;&#xb37;&#xb5f; &#xb17;&#xb41;&#xb21;&#xb3f;&#xb15;&#xb41; &#xb06;&#xb2a;&#xb23; &#xb28;&#xb42;&#xb24;&#xb28; &#xb2d;&#xb3e;&#xb2c;&#xb47;&#xb30;&#xb47; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#xb15;&#xb3f;&#xb2e;&#xb4d;&#xb2c;&#xb3e; &#xb0f;&#xb39;&#xb3f; &#xb2a;&#xb43;&#xb37;&#xb4d;&#xb20;&#xb3e;&#xb15;&#xb41; &#xb38;&#xb2e;&#xb4d;&#xb2a;&#xb3e;&#xb26;&#xb28; &#xb15;&#xb30;&#xb3f; &#xb0f;&#xb39;&#xb3e; &#xb38;&#xb39;&#xb3f;&#xb24; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c; &#x964; &#xb38;&#xb2e;&#xb38;&#xb4d;&#xb24; &#xb2a;&#xb3e;&#xb20; &#xb17;&#xb41;&#xb21;&#xb3f;&#xb15; GNU &#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb26;&#xb32;&#xb3f;&#xb32;&#xb15;&#xb30;&#xb23; &#xb32;&#xb3e;&#xb07;&#xb38;&#xb47;&#xb28;&#xb4d;&#xb38;&#xb30; &#xb38;&#xb30;&#xb4d;&#xb24;&#xb4d;&#xb24; &#xb05;&#xb27;&#xb40;&#xb28;&#xb30;&#xb47; &#xb09;&#xb2a;&#xb32;&#xb2c;&#xb4d;&#xb27; &#x964; &#xb24;&#xb25;&#xb3e;&#xb2a;&#xb3f;, &#xb06;&#xb2a;&#xb23; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb2d;&#xb3e;&#xb2c;&#xb47;&#xb30; &#xb07;&#xb32;&#xb47;&#xb15;&#xb4d;&#xb1f;&#xb4d;&#xb30;&#xb4b;&#xb28;&#xb3f;&#xb15;&#xb4d;&#xb38; &#xb2a;&#xb4d;&#xb30;&#xb3f;&#xb23;&#xb4d;&#xb1f;&#xb4d; &#xb15;&#xb3f;&#xb2e;&#xb4d;&#xb2c;&#xb3e; &#xb05;&#xb28;&#xb4d;&#xb5f;&#xb3e;&#xb28;&#xb4d;&#xb5f; &#xb2a;&#xb4d;&#xb30;&#xb3f;&#xb23;&#xb4d;&#xb1f;&#xb30; &#xb2e;&#xb3e;&#xb27;&#xb4d;&#xb5f;&#xb2e;&#xb30;&#xb47; &#xb2c;&#xb4d;&#xb5f;&#xb2c;&#xb39;&#xb3e;&#xb30; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c; &#x964;
+</p>
+
+<h4>Punjabi</h4>
+<p>&#xa15;&#xa47;&#xa02;&#xa26;&#xa30;&#xa40; &#xa17;&#xa4d;&#xa30;&#xa39;&#xa3f;&#xa2e;&#xa70;&#xa24;&#xa30;&#xa40; &#xa2a;&#xa40;.&#xa1a;&#xa3f;&#xa26;&#xa70;&#xa2c;&#xa30;&#xa2e; &#xa28;&#xa47; &#xa10;&#xa24;&#xa35;&#xa3e;&#xa30; &#xa28;&#xa42;&#xa70; &#xa24;&#xa2e;&#xa3f;&#xa32;&#xa28;&#xa3e;&#xa22;&#xa42; &#xa26;&#xa47; &#xa2e;&#xa41;&#xa71;&#xa16;&#xa2e;&#xa70;&#xa24;&#xa30;&#xa40; &#xa10;&#xa2e;.&#xa15;&#xa30;&#xa41;&#xa23;&#xa3e;&#xa28;&#xa3f;&#xa27;&#xa40; &#xa28;&#xa3e;&#xa32; &#xa2e;&#xa41;&#xa32;&#xa3e;&#xa15;&#xa3e;&#xa24; &#xa15;&#xa40;&#xa24;&#xa40;&#x964;&#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa28;&#xa47; &#xa36;&#xa4d;&#xa30;&#xa40;&#xa32;&#xa70;&#xa15;&#xa3e; '&#xa1a; &#xa32;&#xa3f;&#xa71;&#xa1f;&#xa47; &#xa26;&#xa47; &#xa16;&#xa3f;&#xa32;&#xa3e;&#xa5e; &#xa2f;&#xa41;&#xa71;&#xa27; &#xa26;&#xa4c;&#xa30;&#xa3e;&#xa28; &#xa09;&#xa71;&#xa1d;&#xa5c;&#xa47; &#xa39;&#xa4b;&#xa0f; &#xa32;&#xa71;&#xa17;&#xa2d;&#xa17; &#xa22;&#xa3e;&#xa08; &#xa32;&#xa71;&#xa16; &#xa24;&#xa2e;&#xa3f;&#xa32;&#xa3e;&#xa02; &#xa26;&#xa40; &#xa2e;&#xa41;&#xa5c; &#xa30;&#xa3f;&#xa39;&#xa3e;&#xa07;&#xa36; '&#xa24;&#xa47; &#xa1a;&#xa30;&#xa1a;&#xa3e; &#xa15;&#xa40;&#xa24;&#xa40;&#x964;
+</p>
+
+<h4>Gujarati (gu)</h4>
+<p>
+&#xa86; &#xab5;&#xabe;&#xaa4; &#xab9;&#xa9c;&#xabe;&#xab0; &#xab5;&#xabe;&#xab0; &#xa95;&#xab9;&#xac7;&#xab5;&#xabe;&#xaae;&#xabe;&#xa82; &#xa86;&#xab5;&#xac0; &#xa9b;&#xac7; &#xa95;&#xac7; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae; &#xaac;&#xaa8;&#xabe;&#xab5;&#xaa4;&#xac0; &#xab5;&#xa96;&#xac7;&#xaa4; &#xab9;&#xa82;&#xaae;&#xac7;&#xab6;&#xabe; &#xab8;&#xacc;&#xaa5;&#xac0; &#xab5;&#xaa7;&#xac1; &#xaa7;&#xacd;&#xaaf;&#xabe;&#xaa8; &#xab5;&#xabe;&#xab0;&#xacd;&#xaa4;&#xabe; &#xa85;&#xaa8;&#xac7; &#xab8;&#xacd;&#xa95;&#xacd;&#xab0;&#xac0;&#xaa8;&#xaaa;&#xacd;&#xab2;&#xac7; &#xaaa;&#xab0; &#xa86;&#xaaa;&#xab5;&#xac1; &#xa9c;&#xacb;&#xa88;&#xa8f;. &#xa95;&#xabe;&#xab0;&#xaa3; &#xa95;&#xac7; &#xa86; &#xa95;&#xacb;&#xa88; &#xaaa;&#xaa3; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae;&#xaa8;&#xac0; &#xab8;&#xaab;&#xab3;&#xaa4;&#xabe;&#xaa8;&#xacb; &#xaae;&#xac1;&#xa96;&#xacd;&#xaaf; &#xa86;&#xaa7;&#xabe;&#xab0; &#xab9;&#xacb;&#xaaf; &#xa9b;&#xac7;.
+<br />
+&#xaae;&#xacb;&#xa9f;&#xabe; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae; &#xab8;&#xacd;&#xa9f;&#xabe;&#xab0;&#xacd;&#xab8; &#xab8;&#xabe;&#xa88;&#xaa8; &#xa95;&#xab0;&#xab5;&#xabe;&#xaa5;&#xac0;, &#xab8;&#xacd;&#xa9f;&#xa82;&#xa9f; &#xa85;&#xaa8;&#xac7; &#xa97;&#xac0;&#xaa4;&#xacb;&#xaa5;&#xac0; &#xaaa;&#xabe;&#xaa3;&#xac0;&#xaa8;&#xac0; &#xa85;&#xa82;&#xaa6;&#xab0; &#xa95;&#xac7; &#xa86;&#xa95;&#xabe;&#xab6;&#xaae;&#xabe;&#xa82; &#xa95;&#xab0;&#xacb;&#xaa1;&#xacb; &#xab0;&#xac2;&#xaaa;&#xabf;&#xaaf;&#xabe; &#xa96;&#xab0;&#xacd;&#xa9a; &#xa95;&#xab0;&#xac0; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae;&#xabe;&#xab5;&#xac7;&#xab2;&#xabe; &#xaa6;&#xacd;&#xab0;&#xab6;&#xacd;&#xaaf;&#xacb;&#xaa5;&#xac0; &#xa95;&#xab6;&#xac1; &#xa9c; &#xaa8;&#xaa5;&#xac0; &#xaa5;&#xaa4;&#xac1;. &#xaaa;&#xab0;&#xa82;&#xaa4;&#xac1; &#xa86; &#xaac;&#xac1;&#xaa8;&#xabf;&#xaaf;&#xabe;&#xaa6;&#xac0; &#xab5;&#xabe;&#xaa4; &#xa85;&#xaa4;&#xacd;&#xaaf;&#xabe;&#xab0; &#xab8;&#xac1;&#xaa7;&#xac0; &#xa95;&#xacb;&#xa88; &#xab2;&#xacb;&#xa95;&#xacb;&#xaa8;&#xac7; &#xab8;&#xaae;&#xa9c;&#xabe;&#xaa4;&#xac0; &#xaa8;&#xaa5;&#xac0;.
+</p>
+
+
+<h4>Hindi (hi)</h4>
+<p>\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa5\x80\xe0\xa4\x9a \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa3 \xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa5\x88\xe0\xa4\x9a \xe0\xa4\xa6\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa1 414 \xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xb0\xe0\xa4\x96\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x87\xe0\xa4\x9f \xe0\xa4\x96\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\xb9\xe0\xa5\x88\xe0\xa4\x82.</p>
+
+
+<h4>Nepali (ne) - Devanagari</h4>
+<p>\xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa2\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa5\x88 \xe0\xa4\x86\xe0\xa4\x89\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa5\x87\xe0\xa4\xa0 \xe0\xa4\xae\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xad\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb9\xe0\xa4\xb8 \xe0\xa4\x9a\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x95\xe0\xa5\x80\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5\xe0\xa4\x95\xe0\xa5\x88 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb7\xe0\xa4\xaf\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8 \xe0\xa4\x86\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x97 \xe0\xa4\xb0 \xe0\xa4\x86\xe0\xa4\xa0 \xe0\xa4\xa6\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa4\xbe, \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa5\x88 \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9b\xe0\xa5\xa4</p>
+
+
+<h4>Bengali (bn)</h4>
+<p>
+&#x9a6;&#x995;&#x9cd;&#x9b7;&#x9bf;&#x9a3; &#x993;&#x9df;&#x9be;&#x99c;&#x9bf;&#x9b0;&#x9bf;&#x9b8;&#x9cd;&#x9a5;&#x9be;&#x9a8;&#x9c7; &#x995;&#x9b0;&#x9cd;&#x9ae;&#x9b0;&#x9a4; &#x9b8;&#x9cd;&#x9ac;&#x9c7;&#x99a;&#x9cd;&#x99b;&#x9be;&#x9b8;&#x9c7;&#x9ac;&#x9c0; &#x993; &#x9a4;&#x9cd;&#x9b0;&#x9be;&#x9a3; &#x9b8;&#x982;&#x9b8;&#x9cd;&#x9a5;&#x9be;&#x997;&#x9c1;&#x9b2;&#x9cb; &#x9a7;&#x9be;&#x9b0;&#x9a3;&#x9be; &#x995;&#x9b0;&#x99b;&#x9c7; &#x9b8;&#x9c7;&#x9a8;&#x9be; &#x985;&#x9ad;&#x9bf;&#x9af;&#x9be;&#x9a8;&#x9c7;&#x9b0; &#x9a4;&#x9c0;&#x9ac;&#x9cd;&#x9b0;&#x9a4;&#x9be; &#x9ac;&#x9be;&#x9dc;&#x9b2;&#x9c7; &#x98f;&#x987; &#x9b8;&#x982;&#x996;&#x9cd;&#x9af;&#x9be;&#x99f;&#x9be; &#x986;&#x9b0;&#x993; &#x985;&#x9a8;&#x9c7;&#x995; &#x9ac;&#x9c7;&#x9dc;&#x9c7; &#x9af;&#x9be;&#x9ac;&#x9c7;
+<br />
+&#x9b6;&#x9b0;&#x9a3;&#x9be;&#x9b0;&#x9cd;&#x9a5;&#x9c0;&#x9a6;&#x9c7;&#x9b0; &#x9b8;&#x9cd;&#x9b0;&#x9cb;&#x9a4; &#x9b8;&#x9be;&#x9ae;&#x9b2;&#x9be;&#x9a4;&#x9c7; &#x9a4;&#x9be;&#x9b0;&#x9be; &#x987;&#x9a4;&#x9bf;&#x9ae;&#x9a7;&#x9cd;&#x9af;&#x9c7;&#x987; &#x9b9;&#x9bf;&#x9ae;&#x9b6;&#x9bf;&#x9ae; &#x996;&#x9be;&#x99a;&#x9cd;&#x99b;&#x9c7;&#x9a8;, &#x9ab;&#x9b2;&#x9c7; &#x9b2;&#x9dc;&#x9be;&#x987; &#x9a5;&#x9c7;&#x995;&#x9c7; &#x9aa;&#x9be;&#x9b2;&#x9bf;&#x9df;&#x9c7; &#x986;&#x9b8;&#x9be; &#x9ac;&#x9c7;&#x9b8;&#x9be;&#x9ae;&#x9b0;&#x9bf;&#x995; &#x9ae;&#x9be;&#x9a8;&#x9c1;&#x9b7;&#x99c;&#x9a8;&#x9c7;&#x9b0; &#x9b8;&#x982;&#x996;&#x9cd;&#x9af;&#x9be; &#x986;&#x9b0;&#x993; &#x9ac;&#x9be;&#x9dc;&#x9b2;&#x9c7; &#x9b8;&#x9cd;&#x9ac;&#x9ad;&#x9be;&#x9ac;&#x9a4;&#x987; &#x9b8;&#x999;&#x9cd;&#x995;&#x99f; &#x986;&#x9b0;&#x993; &#x99c;&#x99f;&#x9bf;&#x9b2; &#x9b9;&#x9df;&#x9c7; &#x989;&#x9a0;&#x9ac;&#x9c7;
+</p>
+
+
+<h4>Assamese</h4>
+<p>&#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9f1;&#x9bf;&#x995;&#x9bf;&#x9aa;&#x9bf;&#x9a1;&#x9bf;&#x9af;&#x9bc;&#x9be;&#x9f0; &#x989;&#x9a6;&#x9cd;&#x9a6;&#x9c7;&#x9b6;&#x9cd;&#x9af; &#x9b9;'&#x9b2; &#x9b8;&#x9ae;&#x9cd;&#x9aa;&#x9c2;&#x9f0;&#x9cd;&#x9a3; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9a4; &#x98f;&#x996;&#x9a8;&#x9bf; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7; &#x9aa;&#x9cd;&#x9f0;&#x9a3;&#x9af;&#x9bc;&#x9a8; &#x995;&#x9f0;&#x9be;&#x964; &#x985;&#x9a8;&#x9cd;&#x9af; &#x995;&#x9cb;&#x9a8;&#x9cb; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9f0; &#x9aa;&#x9cd;&#x9f0;&#x9ac;&#x9a8;&#x9cd;&#x9a7; &#x98f;&#x987; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7;&#x9f0; &#x9ac;&#x9be;&#x9ac;&#x9c7; &#x997;&#x9cd;&#x9f0;&#x9b9;&#x9a8; &#x995;&#x9f0;&#x9be; &#x9a8;&#x9b9;'&#x9ac;&#x964; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7;&#x9f0; &#x985;&#x9f1;&#x9a6;&#x9be;&#x9a8;&#x995;&#x9be;&#x9f0;&#x9c0;&#x9b8;&#x995;&#x9b2;&#x9b2;&#x9c8; &#x9b8;&#x9be;&#x9a6;&#x9f0;&#x9c7;&#x9f0;&#x9c7; &#x985;&#x9a8;&#x9c1;&#x9f0;&#x9cb;&#x9a7; &#x99c;&#x9a8;&#x9cb;&#x9f1;&#x9be; &#x9b9;'&#x9b2; &#x9af;&#x9be;&#x9a4;&#x9c7; &#x9a4;&#x9c7;&#x996;&#x9c7;&#x9a4;&#x9b8;&#x995;&#x9b2;&#x9c7; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9f0; &#x9aa;&#x9cd;&#x9f0;&#x99a;&#x9b2;&#x9bf;&#x9a4; &#x9ac;&#x9be;&#x9a8;&#x9be;&#x9a8; &#x9aa;&#x9a6;&#x9cd;&#x9a7;&#x9a4;&#x9bf; &#x9ae;&#x9be;&#x9a8;&#x9bf; &#x99a;&#x9b2;&#x9c7;&#x964; &#x9ac;&#x9bf;&#x9a6;&#x9c7;&#x9b6;&#x9c0; &#x9b6;&#x9ac;&#x9cd;&#x9a6;&#x9f0; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9aa;&#x9cd;&#x9f0;&#x9a4;&#x9bf;&#x9f0;&#x9c2;&#x9aa;&#x9f0; &#x995;&#x9cd;&#x9b7;&#x9c7;&#x9a4;&#x9cd;&#x9f0;&#x9a4; &#x9af;&#x9bf;&#x9b9;&#x9c7;&#x9a4;&#x9c1; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9b8;&#x9be;&#x9b9;&#x9bf;&#x9a4;&#x9cd;&#x9af;&#x9bf;&#x995;&#x9b8;&#x995;&#x9b2; &#x98f;&#x9a4;&#x9bf;&#x9af;&#x9bc;&#x9be;&#x993; &#x990;&#x995;&#x9cd;&#x9af;&#x9ae;&#x9a4;&#x9a4; &#x989;&#x9aa;&#x9a8;&#x9c0;&#x9a4; &#x9b9;'&#x9ac; &#x9aa;&#x9f0;&#x9be; &#x9a8;&#x9be;&#x987;, &#x9f1;&#x9bf;&#x995;&#x9bf;&#x9aa;&#x9bf;&#x9a1;&#x9bf;&#x9af;&#x9bc;&#x9be;&#x9a4; &#x9ac;&#x9bf;&#x9a6;&#x9c7;&#x9b6;&#x9c0; &#x9b6;&#x9ac;&#x9cd;&#x9a6;&#x9f0; &#x9af;&#x9bf;&#x995;&#x9cb;&#x9a8;&#x9cb; &#x9a7;&#x9f0;&#x9a8;&#x9f0; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9f0;&#x9c2;&#x9aa; &#x997;&#x9cd;&#x9f0;&#x9be;&#x9b9;&#x9cd;&#x9af; &#x995;&#x9f0;&#x9be; &#x9b9;'&#x9ac;&#x964;
+</p>
+
+
+
+
+<h4>Japanese (pangrams)</h4>
+<h5>Iroha Uta SJIS</h5>
+
+<p>\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80\xe3\x81\xa1\xe3\x82\x8a\xe3\x81\xac\xe3\x82\x8b\xe3\x82\x92\xe3\x80\x80\xe3\x82\x8f\xe3\x81\x8b\xe3\x82\x88\xe3\x81\x9f\xe3\x82\x8c\xe3\x81\x9d\xe3\x80\x80\xe3\x81\xa4\xe3\x81\xad\xe3\x81\xaa\xe3\x82\x89\xe3\x82\x80\xe3\x80\x80\xe3\x81\x86\xe3\x82\x90\xe3\x81\xae\xe3\x81\x8a\xe3\x81\x8f\xe3\x82\x84\xe3\x81\xbe\xe3\x80\x80\xe3\x81\x91\xe3\x81\xb5\xe3\x81\x93\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x81\x8d\xe3\x82\x86\xe3\x82\x81\xe3\x81\xbf\xe3\x81\x97\xe3\x80\x80\xe3\x82\x91\xe3\x81\xb2\xe3\x82\x82\xe3\x81\x9b\xe3\x81\x99 </p>
+
+<h5>Tori Naku Uta </h5>
+
+<p>\xe3\x81\xa8\xe3\x82\x8a\xe3\x81\xaa\xe3\x81\x8f\xe3\x81\x93\xe3\x82\x91\xe3\x81\x99\xe3\x80\x80\xe3\x82\x86\xe3\x82\x81\xe3\x81\x95\xe3\x81\xbe\xe3\x81\x9b\xe3\x80\x80\xe3\x81\xbf\xe3\x82\x88\xe3\x81\x82\xe3\x81\x91\xe3\x82\x8f\xe3\x81\x9f\xe3\x82\x8b\xe3\x80\x80\xe3\x81\xb2\xe3\x82\x93\xe3\x81\x8b\xe3\x81\x97\xe3\x82\x92\xe3\x80\x80\xe3\x81\x9d\xe3\x82\x89\xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\x88\xe3\x81\xa6\xe3\x80\x80\xe3\x81\x8a\xe3\x81\x8d\xe3\x81\xa4\xe3\x81\xb8\xe3\x81\xab\xe3\x80\x80\xe3\x81\xbb\xe3\x81\xb5\xe3\x81\xad\xe3\x82\x80\xe3\x82\x8c\xe3\x82\x90\xe3\x81\xac\xe3\x80\x80\xe3\x82\x82\xe3\x82\x84\xe3\x81\xae\xe3\x81\x86\xe3\x81\xa1 </p>
+
+<h5>Ametsuchi No Uta </h5>
+
+<p>\xe3\x81\x82\xe3\x82\x81 \xe3\x81\xa4\xe3\x81\xa1 \xe3\x81\xbb\xe3\x81\x97 \xe3\x81\x9d\xe3\x82\x89 / \xe3\x82\x84\xe3\x81\xbe \xe3\x81\x8b\xe3\x81\xaf \xe3\x81\xbf\xe3\x81\xad \xe3\x81\x9f\xe3\x81\xab / \xe3\x81\x8f\xe3\x82\x82 \xe3\x81\x8d\xe3\x82\x8a \xe3\x82\x80\xe3\x82\x8d \xe3\x81\x93\xe3\x81\x91 / \xe3\x81\xb2\xe3\x81\xa8 \xe3\x81\x84\xe3\x81\xac \xe3\x81\x86\xe3\x81\xb8 \xe3\x81\x99\xe3\x82\x91 / \xe3\x82\x86\xe3\x82\x8f \xe3\x81\x95\xe3\x82\x8b \xe3\x81\x8a\xe3\x81\xb5 \xe3\x81\x9b\xe3\x82\x88 / \xe3\x81\x88\xe3\x81\xae\xe3\x81\x88*\xe3\x82\x92 \xe3\x81\xaa\xe3\x82\x8c \xe3\x82\x90\xe3\x81\xa6 </p>
+
+<h5>Taini no Uta </h5>
+
+<p>\xe3\x81\x9f\xe3\x82\x90\xe3\x81\xab\xe3\x81\x84\xe3\x81\xa6\xe3\x80\x80\xe3\x81\xaa\xe3\x81\xa4\xe3\x82\x80\xe3\x82\x8f\xe3\x82\x8c\xe3\x82\x92\xe3\x81\x9d\xe3\x80\x80\xe3\x81\x8d\xe3\x81\xbf\xe3\x82\x81\xe3\x81\x99\xe3\x81\xa8\xe3\x80\x80\xe3\x81\x82\xe3\x81\x95\xe3\x82\x8a\xe3\x81\x8a\xe3\x81\xb2\xe3\x82\x86\xe3\x81\x8f\xe3\x80\x80\xe3\x82\x84\xe3\x81\xbe\xe3\x81\x97\xe3\x82\x8d\xe3\x81\xae\xe3\x80\x80\xe3\x81\x86\xe3\x81\xa1\xe3\x82\x91\xe3\x81\xb8\xe3\x82\x8b\xe3\x81\x93\xe3\x82\x89\xe3\x80\x80\xe3\x82\x82\xe3\x81\xaf\xe3\x81\xbb\xe3\x81\x9b\xe3\x82\x88\xe3\x80\x80\xe3\x81\x88\xe3\x81\xb5\xe3\x81\xad\xe3\x81\x8b\xe3\x81\x91\xe3\x81\xac </p>
+
+<h4>Chinese (simplified) GB2312 GB</h4>
+
+<p>\xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac\xe5\xae\xa4\xe7\x9a\x84\xe6\xb6\x88\xe6\x81\xaf\xe7\xa7\xb0\xef\xbc\x8c\xe4\xb8\xad\xe6\x96\xb9\xe5\x85\x8d\xe9\x99\xa4\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x84\xe6\x89\x80\xe6\x9c\x89\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x8f\x8a\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x94\xbf\xe5\xba\x9c\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x9c\x89\xe5\x85\xb3\xe9\x83\xa8\xe9\x97\xa8\xe5\xb7\xb2\xe5\xaf\xb9\xe7\x9b\xb8\xe5\x85\xb3\xe5\x80\xba\xe5\x8a\xa1\xe8\xbf\x9b\xe8\xa1\x8c\xe5\x85\xa8\xe9\x9d\xa2\xe6\xb8\x85\xe7\x90\x86\xe6\xa0\xb8\xe5\xaf\xb9\xef\xbc\x8c\xe5\xaf\xb9\xe4\xb8\x8e\xe4\xb8\xad\xe5\x9b\xbd\xe6\x9c\x89\xe5\xa4\x96\xe4\xba\xa4\xe5\x85\xb3\xe7\xb3\xbb\xe7\x9a\x8433\xe4\xb8\xaa\xe9\x9d\x9e\xe6\xb4\xb2\xe9\x87\x8d\xe5\x80\xba\xe7\xa9\xb7\xe5\x9b\xbd\xe5\x92\x8c\xe6\x9c\x80\xe4\xb8\x8d\xe5\x8f\x91\xe8\xbe\xbe\xe5\x9b\xbd\xe5\xae\xb6\xef\xbc\x8c\xe5\x85\x8d\xe9\x99\xa4\xe5\x85\xb6\xe6\x88\xaa\xe8\x87\xb32005\xe5\xb9\xb4\xe5\xba\x95168\xe7\xac\x94\xe5\xaf\xb9\xe5\x8d\x8e\xe5\x88\xb0\xe6\x9c\x9f\xe6\x97\xa0\xe6\x81\xaf\xe8\xb4\xb7\xe6\xac\xbe\xe5\x80\xba\xe5\x8a\xa1\xe3\x80\x82\xe6\x8b\x9f\xe4\xba\x8e2007\xe5\xb9\xb4\xe5\xba\x95\xe5\x89\x8d\xe4\xb8\x8e\xe5\x8f\x97\xe6\x8f\xb4\xe5\x9b\xbd\xe5\x8a\x9e\xe7\x90\x86\xe5\xae\x8c\xe5\x85\x8d\xe5\x80\xba\xe5\x8d\x8f\xe8\xae\xae\xe3\x80\x82</p>
+
+
+<h4>Chinese (Traditional - Hong Kong) Big5</h4>
+
+<p>\xe3\x80\x8c\xe6\x86\x82\xe9\xac\xb1\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90\xe3\x80\x8d\xe6\x98\xaf\xe4\xb8\x80\xe5\x80\x8b\xe6\x95\x99\xe8\x82\xb2\xe7\xb6\xb2\xe7\xab\x99\xef\xbc\x8c\xe5\xae\x83\xe6\x88\x90\xe5\x8a\x9f\xe7\xb5\x90\xe5\x90\x88\xe4\xba\x86\xe9\xa6\x99\xe6\xb8\xaf\xe8\xb3\xbd\xe9\xa6\xac\xe6\x9c\x83\xe9\x98\xb2\xe6\xad\xa2\xe8\x87\xaa\xe6\xae\xba\xe7\xa0\x94\xe7\xa9\xb6\xe4\xb8\xad\xe5\xbf\x83\xe5\x90\x84\xe6\x96\xb9\xe9\x9d\xa2\xe7\x9a\x84\xe5\xb0\x88\xe6\x89\x8d\xef\xbc\x8c\xe7\x82\xba\xe9\x9d\x92\xe5\xb0\x91\xe5\xb9\xb4\xe4\xba\xba\xe6\x8f\x90\xe4\xbe\x9b\xe7\xb2\xbe\xe7\xa5\x9e\xe5\x81\xa5\xe5\xba\xb7\xe7\x9a\x84\xe8\xa8\x8a\xe6\x81\xaf\xef\xbc\x8c\xe5\xb0\x8d\xe6\x99\xae\xe5\x8f\x8a\xe6\x8a\x91\xe9\xac\xb1\xe7\x97\x87\xe7\x9f\xa5\xe8\xad\x98\xe7\x9a\x84\xe8\xb2\xa2\xe7\x8d\xbb\xe8\x89\xaf\xe5\xa4\x9a\xe3\x80\x82\xe5\x9c\xa8\xe9\xa6\x99\xe6\xb8\xaf\xef\xbc\x8c\xe5\xae\x83\xe6\x9b\xbe\xe7\x8d\xb2\xe9\x81\xb8\xe7\x82\xba\xe3\x80\x8c2004\xe5\xb9\xb4\xe5\x8d\x81\xe5\xa4\xa7\xe5\x81\xa5\xe5\xba\xb7\xe7\xb6\xb2\xe7\xab\x99\xe3\x80\x8d\xe4\xb9\x8b\xe4\xb8\x80\xef\xbc\x8c\xe8\xa9\xb2\xe9\xa0\x85\xe9\x81\xb8\xe8\x88\x89\xe8\x87\xaa2005\xe5\xb9\xb4\xe8\xb5\xb7\xe6\x94\xb9\xe5\x90\x8d\xe7\x8f\xbe\xe6\x99\x82\xe7\x9a\x84\xe3\x80\x8c\xe5\x84\xaa\xe7\xa7\x80\xe7\xb6\xb2\xe7\xab\x99\xe9\x81\xb8\xe8\x88\x89\xe3\x80\x8d\xe3\x80\x82\xe5\x85\xb6\xe8\xb2\xa2\xe7\x8d\xbb\xe5\x9c\xa8\xe5\x9c\x8b\xe9\x9a\x9b\xe9\x96\x93\xe4\xba\xa6\xe5\x82\x99\xe5\x8f\x97\xe8\x82\xaf\xe5\xae\x9a\xef\xbc\x8c2005\xe5\xb9\xb4\xef\xbc\x8c\xe8\xa9\xb2\xe7\xb6\xb2\xe7\xab\x99\xe6\xa6\xae\xe7\x8d\xb2\xe7\xac\xac\xe5\x85\xab\xe5\xb1\x86\xe3\x80\x8c\xe4\xba\x9e\xe6\xb4\xb2\xe5\x89\xb5\xe6\x96\xb0\xe5\xa4\xa7\xe7\x8d\x8e\xe3\x80\x8d\xe9\x8a\x80\xe7\x8d\x8e\xe3\x80\x82</p>
+
+
+
+<h4>Korean UHC</h4>
+
+<p>\xed\x82\xa4\xec\x8a\xa4\xec\x9d\x98 \xea\xb3\xa0\xec\x9c\xa0\xec\xa1\xb0\xea\xb1\xb4\xec\x9d\x80 \xec\x9e\x85\xec\x88\xa0\xeb\x81\xbc\xeb\xa6\xac \xeb\xa7\x8c\xeb\x82\x98\xec\x95\xbc \xed\x95\x98\xea\xb3\xa0 \xed\x8a\xb9\xeb\xb3\x84\xed\x95\x9c \xea\xb8\xb0\xec\x88\xa0\xec\x9d\x80 \xed\x95\x84\xec\x9a\x94\xec\xb9\x98 \xec\x95\x8a\xeb\x8b\xa4. </p>
+
+
+<h4>Mixed</h4>
+<p style=\"font-family: 'trebuchet ms';\">Distinguishes multiple languages enclosed in same element (tags): Arabic \xd9\x82\xd8\xa7\xd9\x84 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 
+English Cat sat on the large mat 
+Tamil \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe 
+Hindi \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 
+Japanese \xe3\x81\x84\xe3\x82\x8d\xe3\x81\xaf\xe3\x81\xab\xe3\x81\xbb\xe3\x81\xb8\xe3\x81\xa8\xe3\x80\x80 
+Chinese \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac
+Thai \xe0\xb9\x80\xe0\xb8\x9b\xe0\xb9\x87\xe0\xb8\x99\xe0\xb8\xa1\xe0\xb8\x99\xe0\xb8\xb8\xe0\xb8\xa9\xe0\xb8\xa2
+Viet M\xc3\xb4\xcc\xa3t kha\xcc\x89o sa\xcc\x81t m\xc6\xa1\xcc\x81i cho bi\xc3\xaa\xcc\x81t ng\xc6\xb0\xc6\xa1\xcc\x80i d\xc3\xa2n 
+Tamil \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe 
+Chinese \xe6\x9d\xa5\xe8\x87\xaa\xe5\x95\x86\xe5\x8a\xa1\xe9\x83\xa8\xe6\x96\xb0\xe9\x97\xbb\xe5\x8a\x9e\xe5\x85\xac
+English Cat sat on the large mat 
+</p>
+
+
+<h4>Unicode Plane 2</h4>
+<div>
+Unicode Plane 0 (BMP U+0000 - U+FFFF): 
+\xe9\xbc\x82 \xe9\xbc\x88 \xe9\xbc\x97 \xe9\xbc\xa6 \xe9\xbc\xa7 \xe9\xbc\xb9 \xe9\xbd\x84 \xe9\xbd\x85 \xe9\xbd\x90 \xe9\xbd\x93 \xe9\xbd\x9a \xe9\xbd\xa2 \xe9\xbd\xa9 \xe9\xbd\xbf \xe9\xbe\x8e \xe9\xbe\x99 \xe9\xbe\x9f \xe9\xbe\xa5 
+-------
+Unicode Plane 2 (SIP characters > U+20000):
+\xf0\xa0\x80\xa1 \xf0\xa0\x80\xbe \xf0\xa0\x81\x86 \xf0\xa0\x81\x8e \xf0\xa0\x81\xa8 \xf0\xa0\x82\x86 \xf0\xa0\x82\x87 \xf0\xa0\x82\x8a \xf0\xa0\x82\x94 \xf0\xa0\x83\x8a \xf0\xa0\x83\x8b \xf0\xa0\x83\x8c \xf0\xa0\x83\x8d \xf0\xa0\x83\x91 \xf0\xa0\x83\xae \xf0\xa0\x84\x8c \xf0\xa0\x84\x8e \xf0\xa0\x84\x98 \xf0\xa0\x86\xa4 \xf0\xa0\x86\xa9 \xf0\xa0\x86\xab \xf0\xa0\x87\x81 \xf0\xa0\x87\x94 \xf0\xa0\x87\xb2 \xf0\xa0\x88\x84 \xf0\xa0\x88\x8c \xf0\xa0\x88\x94 \xf0\xa0\x88\xb9 \xf0\xa0\x89\x9b \xf0\xa0\x89\xb4 \xf0\xa0\x89\xb5 \xf0\xa0\x8a\x99 \xf0\xa0\x8a\x9e \xf0\xa0\x8a\xa0 \xf0\xa0\x8a\xb7 \xf0\xa0\x8a\xbf \xf0\xa0\x8b\x80 \xf0\xa0\x8b\xa5 \xf0\xa0\x8c\x8a 
+-------
+Unicode Plane 0 (BMPU+0000 - U+FFFF): 
+\xe9\xbc\x82 \xe9\xbc\x88 \xe9\xbc\x97 \xe9\xbc\xa6 \xe9\xbc\xa7 \xe9\xbc\xb9 \xe9\xbd\x84 \xe9\xbd\x85 \xe9\xbd\x90 \xe9\xbd\x93 \xe9\xbd\x9a \xe9\xbd\xa2 \xe9\xbd\xa9 \xe9\xbd\xbf \xe9\xbe\x8e \xe9\xbe\x99 \xe9\xbe\x9f \xe9\xbe\xa5 <br />
+</div>
+
+
+";
+
+
+
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->useAdobeCJK = true;             // Default setting in config.php
+                                               // You can set this to false if you have defined other CJK fonts
+
+$mpdf->SetAutoFont(AUTOFONT_ALL);      //      AUTOFONT_CJK | AUTOFONT_THAIVIET | AUTOFONT_RTL | AUTOFONT_INDIC        // AUTOFONT_ALL
+                                               // () = default ALL, 0 turns OFF (default initially)
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php b/inc/3rdparty/libraries/mpdf/examples/example30_arabic.php
new file mode 100644 (file)
index 0000000..0793ac1
--- /dev/null
@@ -0,0 +1,384 @@
+<?php
+
+$html = "
+<style>
+body, p { direction: rtl; font-family: 'XB Zar'; font-size: 15pt; }
+</style>
+
+<h1>Arabic Languages and Fonts</h1>
+
+<!-- Koranic 
+
+<p style=\"font-family: sans;\">Koranic<br />
+&#x627;&#x644;&#x62d;&#x645;&#x62f; &#x644;&#x644;&#x647; &#x631;&#x628; &#x627;&#x644;&#x639;&#x627;&#x644;&#x645;&#x64a;&#x646; &#x648;&#x627;&#x644;&#x635;&#x644;&#x627;&#x629; &#x648;&#x627;&#x644;&#x633;&#x644;&#x627;&#x645; &#x639;&#x644;&#x649; &#x633;&#x64a;&#x62f; &#x627;&#x644;&#x645;&#x631;&#x633;&#x644;&#x64a;&#x646; &#x633;&#x64a;&#x62f;&#x646;&#x627; &#x648;&#x645;&#x648;&#x644;&#x627;&#x646;&#x627; &#x645;&#x62d;&#x645;&#x62f; &#x648;&#x639;&#x644;&#x649; &#x622;&#x644;&#x647; &#x648;&#x635;&#x62d;&#x628;&#x647; &#x635;&#x644;&#x627;&#x629; &#x648;&#x633;&#x644;&#x627;&#x645;&#x627;&#x64b; &#x62f;&#x627;&#x626;&#x645;&#x64a;&#x646; &#x625;&#x644;&#x649; &#x64a;&#x648;&#x645; &#x627;&#x644;&#x62f;&#x64a;&#x646;.
+<br />
+&#x660;.&#x661;.&#x662;.&#x663;.&#x664;.&#x665;.&#x666;.&#x667;.&#x668;.&#x669;
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+</p>
+
+-->
+
+
+<p style=\"font-family: 'XB Zar';\">Arabic<br />
+&#x660;.&#x661;.&#x662;.&#x663;.&#x664;.&#x665;.&#x666;.&#x667;.&#x668;.&#x669;
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+\xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e&lt;&gt;\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c
+\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1
+<br />
+\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8
+<br />
+\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf
+<br />
+&#x627;&#x644;&#x62d;&#x645;&#x62f; &#x644;&#x644;&#x647; &#x631;&#x628; &#x627;&#x644;&#x639;&#x627;&#x644;&#x645;&#x64a;&#x646; &#x648;&#x627;&#x644;&#x635;&#x644;&#x627;&#x629; &#x648;&#x627;&#x644;&#x633;&#x644;&#x627;&#x645; &#x639;&#x644;&#x649; &#x633;&#x64a;&#x62f; &#x627;&#x644;&#x645;&#x631;&#x633;&#x644;&#x64a;&#x646; &#x633;&#x64a;&#x62f;&#x646;&#x627; &#x648;&#x645;&#x648;&#x644;&#x627;&#x646;&#x627; &#x645;&#x62d;&#x645;&#x62f; &#x648;&#x639;&#x644;&#x649; &#x622;&#x644;&#x647; &#x648;&#x635;&#x62d;&#x628;&#x647; &#x635;&#x644;&#x627;&#x629; &#x648;&#x633;&#x644;&#x627;&#x645;&#x627;&#x64b; &#x62f;&#x627;&#x626;&#x645;&#x64a;&#x646; &#x625;&#x644;&#x649; &#x64a;&#x648;&#x645; &#x627;&#x644;&#x62f;&#x64a;&#x646;.
+<br />
+&#x660;.&#x661;.&#x662;.&#x663;.&#x664;.&#x665;.&#x666;.&#x667;.&#x668;.&#x669;
+</p>
+
+
+
+<p style=\"font-family: 'XB Riyaz';\">Arabic<br />
+&#x660;.&#x661;.&#x662;.&#x663;.&#x664;.&#x665;.&#x666;.&#x667;.&#x668;.&#x669;
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+\xc2\xa2\xe2\x82\xac\xc2\xa9\xc2\xae\xe2\x84\xa2\xe2\x80\xb0\xc2\xb5\xc2\xb7\xe2\x80\xa2\xe2\x80\xa6\xc2\xa7\xc3\x9f\xe2\x80\xb9\xe2\x80\xba\xc2\xab\xc2\xbb\xe2\x80\x98\xe2\x80\x99\xe2\x80\x9c\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x9e&lt;&gt;\xe2\x80\x93\xe2\x80\x94\xcb\x86\xcb\x9c
+\xc2\xb0\xc2\xb1\xc3\xb7\xc3\x97\xc2\xbc\xc2\xbd\xc2\xbe\xc6\x92\xc2\xac\xe2\x80\xa0\xe2\x80\xa1
+<br />
+\xc3\x80\xc3\x81\xc3\x82\xc3\x83\xc3\x84\xc3\x85\xc3\x86\xc3\x87\xc3\x88\xc3\x89\xc3\x8a\xc3\x8b\xc3\x8c\xc3\x8d\xc3\x8e\xc3\x8f\xc3\x90\xc3\x91\xc3\x92\xc3\x93\xc3\x94\xc3\x95\xc3\x96\xc3\x98\xc5\x92\xc5\xa0\xc3\x99\xc3\x9a\xc3\x9b\xc3\x9c\xc3\x9d\xc5\xb8
+<br />
+\xc3\xa0\xc3\xa1\xc3\xa2\xc3\xa3\xc3\xa4\xc3\xa5\xc3\xa6\xc3\xa7\xc3\xa8\xc3\xa9\xc3\xaa\xc3\xab\xc3\xac\xc3\xad\xc3\xae\xc3\xaf\xc3\xb0\xc3\xb1\xc3\xb2\xc3\xb4\xc3\xb5\xc3\xb6\xc3\xb8\xc5\x93\xc5\xa1\xc3\xb9\xc3\xba\xc3\xbb\xc3\xbc\xc3\xbd\xc3\xbe\xc3\xbf
+<br />
+&#x627;&#x644;&#x62d;&#x645;&#x62f; &#x644;&#x644;&#x647; &#x631;&#x628; &#x627;&#x644;&#x639;&#x627;&#x644;&#x645;&#x64a;&#x646; &#x648;&#x627;&#x644;&#x635;&#x644;&#x627;&#x629; &#x648;&#x627;&#x644;&#x633;&#x644;&#x627;&#x645; &#x639;&#x644;&#x649; &#x633;&#x64a;&#x62f; &#x627;&#x644;&#x645;&#x631;&#x633;&#x644;&#x64a;&#x646; &#x633;&#x64a;&#x62f;&#x646;&#x627; &#x648;&#x645;&#x648;&#x644;&#x627;&#x646;&#x627; &#x645;&#x62d;&#x645;&#x62f; &#x648;&#x639;&#x644;&#x649; &#x622;&#x644;&#x647; &#x648;&#x635;&#x62d;&#x628;&#x647; &#x635;&#x644;&#x627;&#x629; &#x648;&#x633;&#x644;&#x627;&#x645;&#x627;&#x64b; &#x62f;&#x627;&#x626;&#x645;&#x64a;&#x646; &#x625;&#x644;&#x649; &#x64a;&#x648;&#x645; &#x627;&#x644;&#x62f;&#x64a;&#x646;.
+<br />
+&#x660;.&#x661;.&#x662;.&#x663;.&#x664;.&#x665;.&#x666;.&#x667;.&#x668;.&#x669;
+</p>
+
+
+
+
+
+
+<p style=\"font-family: 'XB Zar';\">Farsi<br />
+&#x647;&#x645;&#x647;&#x654; &#x627;&#x641;&#x631;&#x627;&#x62f; &#x628;&#x634;&#x631; &#x622;&#x632;&#x627;&#x62f; &#x628;&#x647; &#x62f;&#x646;&#x6cc;&#x627; &#x645;&#x6cc;&#x200c;&#x622;&#x6cc;&#x646;&#x62f; &#x648; &#x627;&#x632; &#x62f;&#x6cc;&#x62f; &#x62d;&#x6cc;&#x62b;&#x6cc;&#x62a; &#x648; &#x62d;&#x642;&#x648;&#x642; &#x628;&#x627; &#x647;&#x645; &#x628;&#x631;&#x627;&#x628;&#x631;&#x646;&#x62f;&#x60c; &#x647;&#x645;&#x647; &#x62f;&#x627;&#x631;&#x627;&#x6cc; &#x627;&#x646;&#x62f;&#x6cc;&#x634;&#x647; &#x648; &#x648;&#x62c;&#x62f;&#x627;&#x646; &#x647;&#x633;&#x62a;&#x646;&#x62f; &#x648; &#x628;&#x627;&#x6cc;&#x62f; &#x62f;&#x631; &#x628;&#x631;&#x627;&#x628;&#x631; &#x6cc;&#x6a9;&#x62f;&#x6cc;&#x6af;&#x631; &#x628;&#x627; &#x631;&#x648;&#x62d; &#x628;&#x631;&#x627;&#x62f;&#x631;&#x6cc; &#x631;&#x641;&#x62a;&#x627;&#x631; &#x6a9;&#x646;&#x646;&#x62f;.
+<br />
+&#x660;.&#x661;.&#x662;.&#x663;.&#x664;.&#x665;.&#x666;.&#x667;.&#x668;.&#x669;
+</p>
+
+
+
+
+
+<p style=\"font-family: 'XB Zar';\">Urdu<br />
+\xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94
+<br />
+\xda\x86\xdb\x8c\xd9\x81 \xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xda\xa9\xdb\x8c \xd8\xb3\xd8\xb1\xda\xaf\xd8\xb1\xd9\x85\xdb\x8c\xd8\xa7\xda\xba \xd9\x85\xd8\xad\xd8\xaf\xd9\x88\xd8\xaf \xda\xa9\xd8\xb1\xd9\x86\xdb\x92 \xd8\xa7\xd9\x88\xd8\xb1 \xd9\xbe\xd9\x88\xd9\x84\xdb\x8c\xd8\xb3 \xd8\xaa\xd8\xb9\xdb\x8c\xd9\x86\xd8\xa7\xd8\xaa\xdb\x8c \xda\xa9\xdb\x92 \xd8\xad\xda\xa9\xd9\x85 \xd9\x86\xd8\xa7\xd9\x85\xdb\x92 \xd9\xbe\xd8\xb1 \xd8\xaf\xd8\xb3\xd8\xaa\xd8\xae\xd8\xb7 \xda\xa9\xd8\xb1\xda\xa9\xdb\x92 \xd8\xba\xd9\x84\xd8\xb7 \xda\xa9\xdb\x8c\xd8\xa7: \xd8\xac\xd9\x86\xd8\xb1\xd9\x84 \xd9\x85\xd8\xb4\xd8\xb1\xd9\x81
+</p>
+
+
+
+<p style=\"font-family: 'XB Zar';\">Pashto<br />
+\xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.
+<br />
+\xd9\x87 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xda\xa9\xdb\x90 \xd9\x8a\xd9\x88\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd9\x86\xd8\xb8\xd8\xb1 \xd8\xb4\xd9\x85\xdb\x90\xd8\xb1\xd9\x86\xd9\x87 \xda\x9a\xd9\x8a\xd9\x8a \xda\x86\xdb\x90 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\xa7\xd9\x86 \xd9\xbe\xd9\x87 \xd8\xb2\xd9\x8a\xd8\xa7\xd8\xaa\xdb\x90\xd8\xaf\xd9\x88\xd9\x86\xda\xa9\xd9\x8a \xd8\xaa\xd9\x88\xda\xaf\xd9\x87 \xd8\xaf \xd8\xad\xd8\xa7\xd9\x84\xd8\xa7\xd8\xaa\xd9\x88 \xd9\xbe\xd9\x87 \xd8\xa7\xda\x93\xd9\x87 \xd8\xa8\xd8\xaf\xd8\xa8\xd9\x8a\xd9\x86\xd9\x87 \xd8\xaf\xd9\x8a \xd8\xa7\xd9\x88 \xd8\xaf \xd8\xa8\xdb\x90 \xd8\xa8\xd8\xa7\xd9\x88\xd8\xb1\xd9\x8a \xd8\xa7\xd8\xad\xd8\xb3\xd8\xa7\xd8\xb3 \xda\xa9\xd9\x88\xd9\x8a\xd8\x8c \xd8\xae\xd9\x88 \xd8\xae\xd9\xbe\xd9\x84 \xd9\x87\xd9\x8a\xd9\x88\xd8\xa7\xd8\xaf \xd9\x8a\xd9\x88\xd9\x85\xd9\x88\xd9\xbc\xd9\x89 \xd8\xba\xd9\x88\xd8\xa7\xda\x93\xd9\x8a.
+</p>
+
+
+
+
+<p style=\"font-family: Arial;\">Sindhi<br />
+&#x641;&#x648;&#x62c; &#x637;&#x631;&#x641;&#x627;&#x646; &#x6aa;&#x64a;&#x631;&#x64a; &#x644;&#x648;&#x6af;&#x631;&#x628;&#x644; &#x62c;&#x64a; &#x645;&#x62e;&#x627;&#x644;&#x641;&#x62a; &#x633;&#x628;&#x628; &#x632;&#x631;&#x62f;&#x627;&#x631;&#x64a; &#x62d;&#x6aa;&#x648;&#x645;&#x62a; &#x6a9;&#x64a; &#x62e;&#x637;&#x631;&#x648; &#x646;&#x627;&#x647;&#x64a;:&#x622;&#x645;&#x631;&#x64a;&#x6aa;&#x627;
+<br />
+&#x648;&#x627;&#x634;&#x646;&#x6af;&#x67d;&#x646; (&#x645; &#x68a;) &#x622;&#x645;&#x631;&#x64a;&#x6aa;&#x627; &#x686;&#x64a;&#x648; &#x622;&#x647;&#x64a; &#x62a;&#x647; &#x6aa;&#x64a;&#x631;&#x64a; &#x644;&#x648;&#x6af;&#x631;&#x628;&#x644; &#x62a;&#x64a; &#x67e;&#x627;&#x6aa; &#x641;&#x648;&#x62c; &#x62c;&#x64a; &#x62a;&#x62d;&#x641;&#x638;&#x627;&#x62a; &#x633;&#x627;&#x646; &#x67e;&#x627;&#x6aa;&#x633;&#x62a;&#x627;&#x646; &#x6fe; &#x62c;&#x645;&#x647;&#x648;&#x631;&#x64a; &#x637;&#x648;&#x631; &#x622;&#x64a;&#x644; &#x632;&#x631;&#x62f;&#x627;&#x631;&#x64a; &#x62c;&#x64a; &#x62d;&#x6aa;&#x648;&#x645;&#x62a; &#x6a9;&#x64a; &#x6aa;&#x648;&#x628;&#x647; &#x62e;&#x637;&#x631;&#x648; &#x646;&#x627;&#x647;&#x64a;&#x60c; &#x627;&#x646; &#x633;&#x648;&#x627;&#x644; &#x62a;&#x64a; &#x62a;&#x64a; &#x6aa;&#x64a;&#x631;&#x64a; &#x644;&#x648;&#x6af;&#x631;&#x628;&#x644; &#x6fe; &#x67e;&#x627;&#x6aa;&#x633;&#x62a;&#x627;&#x646; &#x6a9;&#x64a; &#x63a;&#x64a;&#x631; &#x645;&#x634;&#x631;&#x648;&#x637; &#x627;&#x645;&#x62f;&#x627;&#x62f; &#x68f;&#x64a;&#x6bb; &#x62c;&#x64a; &#x6b3;&#x627;&#x644;&#x647;&#x647; &#x6aa;&#x626;&#x64a; &#x648;&#x626;&#x64a; &#x622;&#x647;&#x64a;&#x60c; &#x62c;&#x68f;&#x647;&#x646; &#x62a;&#x647; &#x641;&#x648;&#x62c;&#x64a; &#x627;&#x645;&#x62f;&#x627;&#x62f; &#x62a;&#x64a; &#x634;&#x631;&#x637; &#x644;&#x627;&#x6b3;&#x648; &#x6aa;&#x64a;&#x627; 
+<br />
+&#x660;.&#x661;.&#x662;.&#x663;.&#x664;.&#x665;.&#x666;.&#x667;.&#x668;.&#x669;
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+</p>
+
+
+
+
+From http://titus.uni-frankfurt.de/unicode/alphabet/arabtest.htm
+<br />
+
+1. Arabic:
+<br />
+&#x627; &#x640;&#x627; &#x640;&#x627;&#x640; &#x627;&#x640; 
+<br />
+&#x628; &#x640;&#x628; &#x640;&#x628;&#x640; &#x628;&#x640; 
+<br />
+&#x62a; &#x640;&#x62a; &#x640;&#x62a;&#x640; &#x62a;&#x640; 
+<br />
+&#x62c; &#x640;&#x62c; &#x640;&#x62c;&#x640; &#x62c;&#x640; 
+<br />
+&#x62d; &#x640;&#x62d; &#x640;&#x62d;&#x640; &#x62d;&#x640; 
+<br />
+&#x62e; &#x640;&#x62e; &#x640;&#x62e;&#x640; &#x62e;&#x640; 
+<br />
+&#x62f; &#x640;&#x62f; &#x640;&#x62f; &#x62f; 
+<br />
+&#x630; &#x640;&#x630; &#x640;&#x630; &#x630; 
+<br />
+&#x631; &#x640;&#x631; &#x640;&#x631; &#x631; 
+<br />
+&#x632; &#x640;&#x632; &#x640;&#x632; &#x632; 
+<br />
+&#x633; &#x640;&#x633; &#x640;&#x633;&#x640; &#x633;&#x640; 
+<br />
+&#x634; &#x640;&#x634; &#x640;&#x634;&#x640; &#x634;&#x640; 
+<br />
+&#x635; &#x640;&#x635; &#x640;&#x635;&#x640; &#x635;&#x640; 
+<br />
+&#x636; &#x640;&#x636; &#x640;&#x636;&#x640; &#x636;&#x640; 
+<br />
+&#x637; &#x640;&#x637; &#x640;&#x637;&#x640; &#x637;&#x640; 
+<br />
+&#x638; &#x640;&#x638; &#x640;&#x638;&#x640; &#x638;&#x640; 
+<br />
+&#x639; &#x640;&#x639; &#x640;&#x639;&#x640; &#x639;&#x640; 
+<br />
+&#x63a; &#x640;&#x63a; &#x640;&#x63a;&#x640; &#x63a;&#x640; 
+<br />
+&#x641; &#x640;&#x641; &#x640;&#x641;&#x640; &#x641;&#x640; 
+<br />
+&#x642; &#x640;&#x642; &#x640;&#x642;&#x640; &#x642;&#x640; 
+<br />
+&#x643; &#x640;&#x643; &#x640;&#x643;&#x640; &#x643;&#x640; 
+<br />
+&#x644; &#x640;&#x644; &#x640;&#x644;&#x640; &#x644;&#x640; 
+<br />
+&#x645; &#x640;&#x645; &#x640;&#x645;&#x640; &#x645;&#x640; 
+<br />
+&#x646; &#x640;&#x646; &#x640;&#x646;&#x640; &#x646;&#x640; 
+<br />
+&#x647; &#x640;&#x647; &#x640;&#x647;&#x640; &#x647;&#x640; 
+<br />
+&#x648; &#x640;&#x648; &#x640;&#x648;&#x640; &#x648;&#x640;
+<br />
+&#x64a; &#x640;&#x64a; &#x640;&#x64a;&#x640; &#x64a;&#x640;
+<br />
+<br />
+
+2. Persian:
+<br />
+Four extra letters: &#x67e;  &#x686;  &#x698;  &#x6af; 
+<br />
+&#x640;&#x67e; &#x640;&#x67e;&#x640; &#x67e;&#x640; 
+<br />
+&#x640;&#x686; &#x640;&#x686;&#x640; &#x67e;&#x686; 
+<br />
+&#x640;&#x698; &#x640;&#x698;&#x640; &#x698;&#x640; 
+<br />
+&#x640;&#x6af; &#x640;&#x6af;&#x640; &#x6af;&#x640; 
+<br />
+Original Arabic letter         &#x643;
+modified Persian letter  &#x6a9;
+<br />
+Original Arabic letter         &#x64a;
+modified Persian letter  &#x649;<br />
+<br />
+&#x647;&#x645;&#x647;&#x654; &#x627;&#x641;&#x631;&#x627;&#x62f; &#x628;&#x634;&#x631; &#x622;&#x632;&#x627;&#x62f; &#x628;&#x647; &#x62f;&#x646;&#x6cc;&#x627; &#x645;&#x6cc;&#x200c;&#x622;&#x6cc;&#x646;&#x62f; &#x648; &#x627;&#x632; &#x62f;&#x6cc;&#x62f; &#x62d;&#x6cc;&#x62b;&#x6cc;&#x62a; &#x648; &#x62d;&#x642;&#x648;&#x642; &#x628;&#x627; &#x647;&#x645; &#x628;&#x631;&#x627;&#x628;&#x631;&#x646;&#x62f;&#x60c; &#x647;&#x645;&#x647; &#x62f;&#x627;&#x631;&#x627;&#x6cc; &#x627;&#x646;&#x62f;&#x6cc;&#x634;&#x647; &#x648; &#x648;&#x62c;&#x62f;&#x627;&#x646; &#x647;&#x633;&#x62a;&#x646;&#x62f; &#x648; &#x628;&#x627;&#x6cc;&#x62f; &#x62f;&#x631; &#x628;&#x631;&#x627;&#x628;&#x631; &#x6cc;&#x6a9;&#x62f;&#x6cc;&#x6af;&#x631; &#x628;&#x627; &#x631;&#x648;&#x62d; &#x628;&#x631;&#x627;&#x62f;&#x631;&#x6cc; &#x631;&#x641;&#x62a;&#x627;&#x631; &#x6a9;&#x646;&#x646;&#x62f;.
+<br />
+<br />
+
+3. Pashto:
+<br />
+<div style=\"font-family: 'XB Zar';\">
+&#x627; &#x640;&#x627; &#x640;&#x627;&#x640; &#x627;&#x640; 
+&#x628; &#x640;&#x628; &#x640;&#x628;&#x640; &#x628;&#x640;
+&#x67e; &#x640;&#x67e; &#x640;&#x67e;&#x640; &#x67e;&#x640;
+&#x62a; &#x640;&#x62a; &#x640;&#x62a;&#x640; &#x62a;&#x640;
+&#x67c; &#x640;&#x67c; &#x640;&#x67c;&#x640; &#x67c;&#x640;
+&#x62b; &#x640;&#x62b; &#x640;&#x62b;&#x640; &#x62b;&#x640;
+&#x62c; &#x640;&#x62c; &#x640;&#x62c;&#x640; &#x62c;&#x640;
+&#x681; &#x640;&#x681; &#x640;&#x681;&#x640; &#x681;&#x640;
+&#x686; &#x640;&#x686; &#x640;&#x686;&#x640; &#x686;&#x640;
+&#x685; &#x640;&#x685; &#x640;&#x685;&#x640; &#x685;&#x640;
+&#x62d; &#x640;&#x62d; &#x640;&#x62d;&#x640; &#x62d;&#x640;
+&#x62e; &#x640;&#x62e; &#x640;&#x62e;&#x640; &#x62e;&#x640;
+
+&#x62f; &#x640;&#x62f; &#x640;&#x62f;&#x640; &#x62f;&#x640;
+&#x689; &#x640;&#x689; &#x640;&#x689;&#x640; &#x689;&#x640;
+&#x630; &#x640;&#x630; &#x640;&#x630;&#x640; &#x630;&#x640;
+&#x631; &#x640;&#x631; &#x640;&#x631;&#x640; &#x631;&#x640;
+&#x693; &#x640;&#x693; &#x640;&#x693;&#x640; &#x693;&#x640;
+&#x632; &#x640;&#x632; &#x640;&#x632;&#x640; &#x632;&#x640;
+&#x698; &#x640;&#x698; &#x640;&#x698;&#x640; &#x698;&#x640;
+&#x696; &#x640;&#x696; &#x640;&#x696;&#x640; &#x696;&#x640;
+&#x633; &#x640;&#x633; &#x640;&#x633;&#x640; &#x633;&#x640;
+&#x634; &#x640;&#x634; &#x640;&#x634;&#x640; &#x634;&#x640;
+&#x69a; &#x640;&#x69a; &#x640;&#x69a;&#x640; &#x69a;&#x640;
+
+&#x635; &#x640;&#x635; &#x640;&#x635;&#x640; &#x635;&#x640;
+&#x636; &#x640;&#x636; &#x640;&#x636;&#x640; &#x636;&#x640;
+&#x637; &#x640;&#x637; &#x640;&#x637;&#x640; &#x637;&#x640;
+&#x638; &#x640;&#x638; &#x640;&#x638;&#x640; &#x638;&#x640;
+&#x639; &#x640;&#x639; &#x640;&#x639;&#x640; &#x639;&#x640;
+&#x63a; &#x640;&#x63a; &#x640;&#x63a;&#x640; &#x63a;&#x640;
+&#x641; &#x640;&#x641; &#x640;&#x641;&#x640; &#x641;&#x640;
+&#x642; &#x640;&#x642; &#x640;&#x642;&#x640; &#x642;&#x640;
+&#x6a9; &#x640;&#x6a9; &#x640;&#x6a9;&#x640; &#x6a9;&#x640;
+&#x6ab; &#x640;&#x6ab; &#x640;&#x6ab;&#x640; &#x6ab;&#x640;
+&#x644; &#x640;&#x644; &#x640;&#x644;&#x640; &#x644;&#x640;
+&#x645; &#x640;&#x645; &#x640;&#x645;&#x640; &#x645;&#x640;
+
+&#x646; &#x640;&#x646; &#x640;&#x646;&#x640; &#x646;&#x640;
+&#x6bc; &#x640;&#x6bc; &#x640;&#x6bc;&#x640; &#x6bc;&#x640;
+&#x6bc; &#x640;&#x6bc; &#x640;&#x6bc;&#x640; &#x6bc;&#x640;
+&#x624; &#x640;&#x624; &#x640;&#x624;&#x640; &#x624;&#x640;
+&#x647; &#x640;&#x647; &#x640;&#x647;&#x640; &#x647;&#x640;
+&#x6c0; &#x640;&#x6c0; &#x640;&#x6c0;&#x640; &#x6c0;&#x640;
+&#x6cc; &#x640;&#x6cc; &#x640;&#x6cc;&#x640; &#x6cc;&#x640;
+&#x64a; &#x640;&#x64a; &#x640;&#x64a;&#x640; &#x64a;&#x640;
+&#x6d0; &#x640;&#x6d0; &#x640;&#x6d0;&#x640; &#x6d0;&#x640;
+&#x6cd; &#x640;&#x6cd; &#x640;&#x6cd;&#x640; &#x6cd;&#x640;
+&#x626; &#x640;&#x626; &#x640;&#x626;&#x640; &#x626;&#x640;
+<br />
+<br />
+</div>
+
+
+4. Urdu:
+<br />
+<div style=\"font-family: 'XB Zar';\">
+&#x627;  &#x640;&#x627; &#x640;&#x627;&#x640; &#x627;&#x640;
+&#x628;  &#x640;&#x628; &#x640;&#x628;&#x640; &#x628;&#x640;
+&#x67e;  &#x640;&#x67e; &#x640;&#x67e;&#x640; &#x67e;&#x640;
+&#x62a;  &#x640;&#x62a; &#x640;&#x62a;&#x640; &#x62a;&#x640;
+&#x679;  &#x640;&#x679; &#x640;&#x679;&#x640; &#x679;&#x640;
+&#x62b;  &#x640;&#x62b; &#x640;&#x62b;&#x640; &#x62b;&#x640;
+&#x62c;  &#x640;&#x62c; &#x640;&#x62c;&#x640; &#x62c;&#x640;
+&#x62d;  &#x640;&#x62d; &#x640;&#x62d;&#x640; &#x62d;&#x640;
+&#x62e;  &#x640;&#x62e; &#x640;&#x62e;&#x640; &#x62e;&#x640;
+&#x62f;  &#x640;&#x62f; &#x640;&#x62f;&#x640; &#x62f;&#x640;
+&#x688;  &#x640;&#x688; &#x640;&#x688;&#x640; &#x688;&#x640;
+&#x630;  &#x640;&#x630; &#x640;&#x630;&#x640; &#x630;&#x640;
+&#x631;  &#x640;&#x631; &#x640;&#x631;&#x640; &#x631;&#x640;
+&#x691;  &#x640;&#x691; &#x640;&#x691;&#x640; &#x691;&#x640;
+&#x698;  &#x640;&#x698; &#x640;&#x698;&#x640; &#x698;&#x640;
+&#x633;  &#x640;&#x633; &#x640;&#x633;&#x640; &#x633;&#x640;
+&#x634;  &#x640;&#x634; &#x640;&#x634;&#x640; &#x634;&#x640;
+&#x635;  &#x640;&#x635; &#x640;&#x635;&#x640; &#x635;&#x640;
+&#x636;  &#x640;&#x636; &#x640;&#x636;&#x640; &#x636;&#x640;
+&#x637;  &#x640;&#x637; &#x640;&#x637;&#x640; &#x637;&#x640;
+&#x638;  &#x640;&#x638; &#x640;&#x638;&#x640; &#x638;&#x640;
+&#x639;  &#x640;&#x639; &#x640;&#x639;&#x640; &#x639;&#x640;
+&#x63a;  &#x640;&#x63a; &#x640;&#x63a;&#x640; &#x63a;&#x640;
+&#x641;  &#x640;&#x641; &#x640;&#x641;&#x640; &#x641;&#x640;
+&#x642;  &#x640;&#x642; &#x640;&#x642;&#x640; &#x642;&#x640;
+&#x6a9;  &#x640;&#x6a9; &#x640;&#x6a9;&#x640; &#x6a9;&#x640;
+&#x6af;  &#x640;&#x6af; &#x640;&#x6af;&#x640; &#x6af;&#x640;
+&#x644;  &#x640;&#x644; &#x640;&#x644;&#x640; &#x644;&#x640;
+&#x645;  &#x640;&#x645; &#x640;&#x645;&#x640; &#x645;&#x640;
+&#x646;  &#x640;&#x646; &#x640;&#x646;&#x640; &#x646;&#x640;
+&#x648;  &#x640;&#x648; &#x640;&#x648;&#x640; &#x648;&#x640;
+&#x6c1;  &#xfba9; &#xfba8; 
+&#x6be;  &#x640;&#x6be; &#x640;&#x6be;&#x640; &#x6be;&#x640;
+&#x621;  &#x640;&#x621; &#x640;&#x621;&#x640; &#x621;&#x640;
+&#x6cc;  &#x640;&#x6cc; &#x640;&#x6cc;&#x640; &#x6cc;&#x640;
+&#x6d2;  &#x640;&#x6d2; &#x640;&#x6d2;&#x640; &#x6d2;&#x640;
+<br />
+&#x62a;&#x645;&#x627;&#x645; &#x627;&#x646;&#x633;&#x627;&#x646; &#x622;&#x632;&#x627;&#x62f; &#x627;&#x648;&#x631; &#x62d;&#x642;&#x648;&#x642; &#x648; &#x639;&#x632;&#x62a; &#x6a9;&#x6d2; &#x627;&#x639;&#x62a;&#x628;&#x627;&#x631; &#x633;&#x6d2; &#x628;&#x631;&#x627;&#x628;&#x631; &#x67e;&#x6cc;&#x62f;&#x627; &#x6c1;&#x648;&#x6d3; &#x6c1;&#x6cc;&#x6ba;&#x6d4; &#x627;&#x646;&#x6c1;&#x6cc;&#x6ba; &#x636;&#x645;&#x6cc;&#x631; &#x627;&#x648;&#x631; &#x639;&#x642;&#x644; &#x648;&#x62f;&#x6cc;&#x639;&#x62a; &#x6c1;&#x648;&#x626;&#x6cc; &#x6c1;&#x6cc;&#x6d4; &#x627;&#x633;&#x644;&#x6d3; &#x627;&#x646;&#x6c1;&#x6cc;&#x6ba; &#x627;&#x6cc;&#x6a9; &#x62f;&#x648;&#x633;&#x631;&#x6d2; &#x6a9;&#x6d2; &#x633;&#x627;&#x62a;&#x6be; &#x628;&#x6be;&#x627;&#x626;&#x6cc; &#x686;&#x627;&#x631;&#x6d2; &#x6a9;&#x627; &#x633;&#x644;&#x648;&#x6a9; &#x6a9;&#x631;&#x646;&#x627; &#x686;&#x627;&#x6c1;&#x6cc;&#x6d3;&#x6d4;
+<br />
+<br />
+</div>
+
+
+5. Sindhi:
+<br />
+<div style=\"font-family: Arial;\">
+ &#x684; &#x640;&#x684; &#x640;&#x684;&#x640; &#x684;&#x640;
+ &#x67a; &#x640;&#x67a; &#x640;&#x67a;&#x640; &#x67a;&#x640;
+ &#x67d; &#x640;&#x67d; &#x640;&#x67d;&#x640; &#x67d;&#x640;
+ &#x67f; &#x640;&#x67f; &#x640;&#x67f;&#x640; &#x67f;&#x640;
+ &#x680; &#x640;&#x680; &#x640;&#x680;&#x640; &#x680;&#x640;
+ &#x67b; &#x640;&#x67b; &#x640;&#x67b;&#x640; &#x67b;&#x640;
+ &#x699; &#x640;&#x699; &#x640;&#x699;&#x640; &#x699;&#x640;
+ &#x68d; &#x640;&#x68d; &#x640;&#x68d;&#x640; &#x68d;&#x640;
+ &#x68a; &#x640;&#x68a; &#x640;&#x68a;&#x640; &#x68a;&#x640;
+ &#x68f; &#x640;&#x68f; &#x640;&#x68f;&#x640; &#x68f;&#x640;
+ &#x68c; &#x640;&#x68c; &#x640;&#x68c;&#x640; &#x68c;&#x640;
+ &#x687; &#x640;&#x687; &#x640;&#x687;&#x640; &#x687;&#x640;
+ &#x683; &#x640;&#x683; &#x640;&#x683;&#x640; &#x683;&#x640;
+ &#x6a6; &#x640;&#x6a6; &#x640;&#x6a6;&#x640; &#x6a6;&#x640;
+ &#x6bb; &#x640;&#x6bb; &#x640;&#x6bb;&#x640; &#x6bb;&#x640;
+ &#x6b1; &#x640;&#x6b1; &#x640;&#x6b1;&#x640; &#x6b1;&#x640;
+ &#x6b3; &#x640;&#x6b3; &#x640;&#x6b3;&#x640; &#x6b3;&#x640;
+ &#x6aa; &#x640;&#x6aa; &#x640;&#x6aa;&#x640; &#x6aa;&#x640;
+<br />
+
+&#x62c; &#x6be; &#x684; &#x62c; &#x67e; &#x62b; &#x67a;        &#x67d;         &#x67f;         &#x62a;         &#x680;         &#x67b;         &#x628;         &#x627;
+&#x699; &#x631; &#x630; &#x68d; &#x68a;        &#x68f; &#x68c;         &#x62f;         &#x62e;         &#x62d;         &#x687;         &#x686;         &#x683;
+&#x642; &#x6a6; &#x641; &#x63a;        &#x639; &#x638;         &#x637;         &#x636;         &#x635;         &#x634;         &#x633;         &#x632;         &#x699;&#x6be;
+&#x64a; &#x647; &#x648;        &#x6bb;         &#x646;         &#x645;         &#x644;         &#x6b1;         &#x6af;&#x6be;  &#x6b3;         &#x6af;         &#x6a9;         &#x6aa;
+<br />
+<br />
+</div>
+
+
+
+<h4>Arabic</h4>
+<p>\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4 \xd9\x81\xd9\x8a \xd8\xad\xd8\xaf\xd9\x8a\xd8\xab \xd9\x85\xd8\xaa\xd9\x84\xd9\x81\xd8\xb2<annotation content=\"\xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd8\xac\xd9\x88\xd8\xb1\xd8\xac\" subject=\"\xd8\xac\xd9\x88\xd8\xb1\xd8\xac\" icon=\"Comment\" color=\"#FE88EF\" author=\"\xd8\xac\xd9\x88\xd8\xb1\xd8\xac\" />
+ \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb0\xd9\x83\xd8\xb1\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb1\xd8\xa7\xd8\xa8\xd8\xb9\xd8\xa9 \xd9\x84\xd9\x84\xd8\xba\xd8\xb2\xd9\x88 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xb1\xd9\x8a\xd9\x83\xd9\x8a \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd9\x84\xd9\x88\xd9\x8a\xd8\xa9 \xd8\xad\xd8\xa7\xd9\x84\xd9\x8a\xd8\xa7 \xd9\x84\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x86 \xd9\x84\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82.</p>
+
+<p>\xd9\x87\xd9\x84 \xd8\xb3\xd8\xaa\xd8\xb3\xd9\x81\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa8\xd9\x84\xd9\x88\xd9\x85\xd8\xa7\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xac\xd8\xa7\xd8\xb1\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 \xd8\xad\xd9\x84\xd9\x88\xd9\x84\xd8\x9f \xd9\x88\xd9\x83\xd9\x8a\xd9\x81 \xd8\xaa\xd9\x86\xd8\xb8\xd8\xb1 \xd9\x84\xd9\x84\xd8\xa7\xd8\xaa\xd9\x87\xd8\xa7\xd9\x85\xd8\xa7\xd8\xaa \xd9\x84\xd8\xa8\xd8\xb9\xd8\xb6 \xd9\x87\xd8\xb0\xd9\x87 \xd8\xa7\xd9\x84\xd8\xaf\xd9\x88\xd9\x84 \xd8\xa8\xd8\xa7\xd9\x84\xd8\xaa\xd8\xaf\xd8\xae\xd9\x84 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb4\xd8\xa3\xd9\x86 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82\xd9\x8a\xd8\x8c \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x88\xd8\xb1\xd8\xb7 \xd9\x81\xd9\x8a \xd8\xaf\xd8\xb9\xd9\x85 \xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xb9\xd9\x86\xd9\x81\xd8\x9f \xd9\x88\xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x8a \xd9\x85\xd8\xaf\xd9\x89 \xd9\x8a\xd8\xa8\xd8\xaf\xd9\x88 \xd8\xa7\xd9\x84\xd9\x88\xd8\xb6\xd8\xb9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd8\xa7\xd9\x86\xd8\xb9\xd9\x83\xd8\xa7\xd8\xb3\xd8\xa7 \xd9\x84\xd9\x84\xd8\xb5\xd8\xb1\xd8\xa7\xd8\xb9\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa5\xd9\x82\xd9\x84\xd9\x8a\xd9\x85\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa7\xd9\x84\xd9\x85\xd9\x86\xd8\xb7\xd9\x82\xd8\xa9\xd8\x9f</p>
+
+<p>\xd9\x88\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd9\x8a\xd8\xaa \xd8\xa7\xd9\x84\xd8\xa7\xd8\xa8\xd9\x8a\xd8\xb6 &quot;\xd8\xa8\xd8\xb4\xd8\xaf\xd8\xa9&quot; \xd8\xaa\xd9\x81\xd8\xac\xd9\x8a\xd8\xb1 \xd8\xa7\xd9\x8a\xd9\x84\xd8\xa7\xd8\xaa \xd9\x81\xd9\x8a\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xb9\xd8\xb1\xd8\xa8\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd8\xb9\xd9\x86 &quot;\xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86\xd8\xaa\xd9\x87\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xaf\xd9\x8a\xd8\xaf\xd8\xa9&quot; \xd9\x84\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab&quot; \xd9\x88\xd8\xa7\xd8\xb5\xd9\x81\xd8\xa9 \xd8\xa7\xd9\x8a\xd8\xa7\xd9\x87 \xd8\xa8\xd9\x80&quot;\xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81&quot; \xd8\xa7\xd9\x84\xd8\xb0\xd9\x8a \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x87\xd8\xaf\xd9\x81 &quot;\xd9\x85\xd8\xaf\xd9\x86\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x85\xd8\xb3\xd8\xa7\xd9\x84\xd9\x85\xd9\x8a\xd9\x86&quot;.</p> 
+
+<p>\xd9\x88\xd8\xa7\xd8\xb6\xd8\xa7\xd9\x81\xd8\xaa \xd9\x88\xd8\xb2\xd8\xa7\xd8\xb1\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb1\xd8\xac\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb1\xd9\x88\xd8\xb3\xd9\x8a\xd8\xa9 \xd9\x81\xd9\x8a \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd9\x87\xd8\xa7: &quot;\xd9\x85\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd8\xa4\xd8\xb3\xd9\x81 \xd8\xa7\xd9\x86 \xd9\x8a\xd8\xa3\xd8\xaa\xd9\x8a \xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x84\xd8\xad\xd8\xa7\xd8\xaf\xd8\xab \xd8\xa8\xd9\x8a\xd9\x86\xd9\x85\xd8\xa7 \xd8\xaa\xd8\xa8\xd8\xb0\xd9\x84 \xd8\xa7\xd9\x84\xd8\xac\xd9\x87\xd9\x88\xd8\xaf \xd9\x84\xd8\xaa\xd8\xae\xd8\xb7\xd9\x8a \xd8\xa7\xd9\x84\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xaf\xd8\xa7\xd8\xae\xd9\x84\xd9\x8a\xd8\xa9&quot;.</p> 
+
+<p>\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84 \xd8\xa7\xd8\xad\xd8\xaa\xd9\x88\xd8\xa7\xd8\xa1 \xd9\x85\xd8\xb8\xd8\xa7\xd9\x87\xd8\xb1 \xd8\xa7\xd9\x84\xd8\xaa\xd8\xb7\xd8\xb1\xd9\x81 \xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd9\x85\xd8\xa8\xd8\xb1\xd8\xb1 \xd9\x84\xd9\x87\xd8\xa7 \xd9\x88\xd8\xa7\xd9\x84\xd8\xaa\xd9\x8a \xd9\x84\xd8\xa7 \xd8\xaa\xd9\x81\xd9\x8a\xd8\xaf \xd9\x85\xd8\xb5\xd8\xa7\xd9\x84\xd8\xad \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb9\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xb7\xd9\x88\xd9\x8a\xd9\x84&quot;.</p> 
+
+<p>\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7  \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 </p> 
+
+<p>\xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 \xd9\x88\xd8\xaf\xd8\xb9\xd8\xaa \xd9\x85\xd9\x88\xd8\xb3\xd9\x83\xd9\x88 \xd8\xa7\xd9\x84\xd8\xb3\xd9\x84\xd8\xb7\xd8\xa7\xd8\xaa \xd8\xa7\xd9\x84\xd9\x81\xd9\x84\xd8\xb3\xd8\xb7\xd9\x8a\xd9\x86\xd9\x8a\xd8\xa9 \xd8\xa7\xd9\x84\xd9\x89 &quot;\xd8\xa8\xd8\xb0\xd9\x84 \xd9\x83\xd9\x84 \xd9\x85\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd9\x85\xd9\x86 \xd8\xa7\xd8\xac\xd9\x84</p>  
+
+
+<p>\xd9\x83\xd9\x85\xd8\xa7 \xd8\xa7\xd8\xaf\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd9\x81\xd8\xa7\xd8\xb1\xd9\x88 \xd8\xaf\xd9\x8a \xd8\xb3\xd9\x88\xd8\xaa\xd9\x88 \xd9\x85\xd8\xa8\xd8\xb9\xd9\x88\xd8\xab \xd8\xa7\xd9\x84\xd8\xa7\xd9\x85\xd9\x85 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaa\xd8\xad\xd8\xaf\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd8\xb4\xd8\xb1\xd9\x82 \xd8\xa7\xd9\x84\xd8\xa7\xd9\x88\xd8\xb3\xd8\xb7 \xd8\xa7\xd9\x84\xd8\xb9\xd9\x85\xd9\x84\xd9\x8a\xd8\xa9 \xd9\x88\xd9\x82\xd8\xa7\xd9\x84 &quot;\xd8\xa7\xd9\x86\xd9\x87 \xd9\x83\xd8\xa7\xd9\x86 \xd9\x87\xd8\xac\xd9\x88\xd9\x85\xd8\xa7 \xd8\xb9\xd9\x84\xd9\x89 \xd8\xa7\xd8\xb4\xd8\xae\xd8\xa7\xd8\xb5 \xd8\xb9\xd8\xa7\xd8\xaf\xd9\x8a\xd9\x8a\xd9\x86 \xd9\x83\xd8\xa7\xd9\x86\xd9\x88\xd8\xa7 \xd9\x8a\xd9\x82\xd9\x88\xd9\x85\xd9\x88\xd9\x86 \xd8\xa8\xd9\x86\xd8\xb4\xd8\xa7\xd8\xb7\xd9\x87\xd9\x85 \xd8\xa7\xd9\x84\xd9\x8a\xd9\x88\xd9\x85\xd9\x8a \xd9\x88\xd9\x87\xd8\xb0\xd8\xa7 \xd8\xa7\xd9\x85\xd8\xb1 \xd9\x84\xd8\xa7 \xd9\x8a\xd9\x85\xd9\x83\xd9\x86 \xd8\xaa\xd8\xa8\xd8\xb1\xd9\x8a\xd8\xb1\xd9\x87&quot;.</p>
+
+<h4>Farsi / Persian (fa)</h4>
+<p>\xd9\x85\xd8\xad\xd9\x85\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd8\xa7\xd8\xaf\xd8\xb9\xdb\x8c \xd8\xb1\xd8\xa6\xd9\x8a\xd8\xb3 \xd8\xa2\xda\x98\xd8\xa7\xd9\x86\xd8\xb3 \xd8\xa8\xd9\x8a\xd9\x86 \xd8\xa7\xd9\x84\xd9\x85\xd9\x84\xd9\x84\xdb\x8c \xd8\xa7\xd9\x86\xd8\xb1\xda\x98\xdb\x8c \xd8\xa7\xd8\xaa\xd9\x85\xdb\x8c \xd9\xbe\xd9\x8a\xd8\xb4\xd9\x86\xd9\x87\xd8\xa7\xd8\xaf \xda\xa9\xd8\xb1\xd8\xaf\xd9\x87 \xd8\xa7\xd8\xb3\xd8\xaa \xd8\xaa\xd9\x87\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xa8\xd8\xb1\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xac\xd9\x86\xd8\xac\xd8\xa7\xd9\x84\xdb\x8c \xd8\xba\xd9\x86\xdb\x8c \xd8\xb3\xd8\xa7\xd8\xb2\xdb\x8c \xd8\xa7\xd9\x88\xd8\xb1\xd8\xa7\xd9\x86\xd9\x8a\xd9\x88\xd9\x85 \xd8\xb1\xd8\xa7 \xd9\x85\xd8\xaa\xd9\x88\xd9\x82\xd9\x81 \xda\xa9\xd9\x86\xd8\xaf \xd9\x88 \xd8\xba\xd8\xb1\xd8\xa8 \xd9\x86\xd9\x8a\xd8\xb2 \xd8\xa7\xd8\xac\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xaa\xd8\xad\xd8\xb1\xd9\x8a\xd9\x85 \xd9\x87\xd8\xa7\xdb\x8c \xd8\xaa\xd9\x86\xd8\xa8\xd9\x8a\xd9\x87\xdb\x8c \xd9\x85\xd9\x88\xd8\xb1\xd8\xaf \xd8\xaa\xd8\xa7\xd8\xa6\xd9\x8a\xd8\xaf \xd8\xb3\xd8\xa7\xd8\xb2\xd9\x85\xd8\xa7\xd9\x86 \xd9\x85\xd9\x84\xd9\x84 \xd9\x85\xd8\xaa\xd8\xad\xd8\xaf \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd8\xaa\xd8\xb9\xd9\x88\xd9\x8a\xd9\x82 \xd8\xa8\xd9\x8a\xd8\xa7\xd9\x86\xd8\xaf\xd8\xa7\xd8\xb2\xd8\xaf.</p> 
+
+<p>\xd8\xac\xd9\x88\xd8\xb1\xd8\xac \xd8\xa8\xd9\x88\xd8\xb4\xd8\x8c \xd8\xaf\xd8\xb1 \xda\x86\xd9\x87\xd8\xa7\xd8\xb1\xd9\x85\xdb\x8c\xd9\x86 \xd8\xb3\xd8\xa7\xd9\x84\xda\xaf\xd8\xb1\xd8\xaf \xd8\xa7\xd8\xb4\xd8\xba\xd8\xa7\xd9\x84 \xd8\xb9\xd8\xb1\xd8\xa7\xd9\x82 \xd9\x85\xdb\x8c \xda\xaf\xd9\x88\xdb\x8c\xd8\xaf \xd8\xa7\xd8\xb3\xd8\xaa\xd8\xb1\xd8\xa7\xd8\xaa\xda\x98\xdb\x8c \xd8\xa7\xd8\xb3\xd8\xaa\xd9\x82\xd8\xb1\xd8\xa7\xd8\xb1 \xd9\x86\xdb\x8c\xd8\xb1\xd9\x88\xd9\x87\xd8\xa7\xdb\x8c \xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7\xdb\x8c\xdb\x8c \xd8\xa8\xdb\x8c\xd8\xb4\xd8\xaa\xd8\xb1\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xa8\xd8\xba\xd8\xaf\xd8\xa7\xd8\xaf\xd8\x8c \xd9\x85\xd8\xaf\xd8\xaa\xdb\x8c \xd8\xb7\xd9\x88\xd9\x84 \xd8\xae\xd9\x88\xd8\xa7\xd9\x87\xd8\xaf \xda\xa9\xd8\xb4\xdb\x8c\xd8\xaf.</p>
+
+<p>\xd8\xa2\xd9\x85\xd8\xb1\xdb\x8c\xda\xa9\xd8\xa7 \xd9\x88\xdb\x8c\xd8\xb2\xd8\xa7\xdb\x8c \xd8\xb1\xd8\xa6\xdb\x8c\xd8\xb3 \xd8\xac\xd9\x85\xd9\x87\xd9\x88\xd8\xb1 \xd8\xa7\xdb\x8c\xd8\xb1\xd8\xa7\xd9\x86 \xd8\xb1\xd8\xa7 \xd8\xa8\xd9\x87 \xd9\x85\xd9\x86\xd8\xb8\xd9\x88\xd8\xb1 \xd8\xad\xd8\xb6\xd9\x88\xd8\xb1 \xd9\x88\xdb\x8c \xd8\xaf\xd8\xb1 \xd8\xac\xd9\x84\xd8\xb3\xd9\x87 \xd8\xb1\xd8\xa7\xdb\x8c \xda\xaf\xdb\x8c\xd8\xb1\xdb\x8c \xd8\xb4\xd9\x88\xd8\xb1\xd8\xa7\xdb\x8c \xd8\xa7\xd9\x85\xd9\x86\xdb\x8c\xd8\xaa \xd8\xa8\xd8\xb1\xd8\xa7\xdb\x8c \xd9\x82\xd8\xb7\xd8\xb9\xd9\x86\xd8\xa7\xd9\x85\xd9\x87 \xd8\xaa\xd8\xa7\xd8\xb2\xd9\x87 \xd8\xb9\xd9\x84\xdb\x8c\xd9\x87 \xd8\xa7\xdb\x8c\xd9\x86 \xda\xa9\xd8\xb4\xd9\x88\xd8\xb1 \xd8\xb5\xd8\xa7\xd8\xaf\xd8\xb1 \xda\xa9\xd8\xb1\xd8\xaf.</p>
+
+
+<h4>Urdu</h4>
+<p style=\"font-family: 'XB Zar';\">\xd8\xac\xd8\xb3\xd9\xb9\xd8\xb3 \xd8\xa7\xd9\x81\xd8\xaa\xd8\xae\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x8c \xd8\xac\xd8\xa8\xd8\xb1\xdb\x8c \xd8\xb1\xd8\xae\xd8\xb5\xd8\xaa \xd9\xbe\xd8\xb1 \xd9\x84\xd8\xa7\xdb\x81\xd9\x88\xd8\xb1\xdb\x81\xd8\xa7\xd8\xa6\xdb\x8c \xda\xa9\xd9\x88\xd8\xb1\xd9\xb9 \xda\xa9\xdb\x92 \xd8\xa7\xdb\x8c\xda\xa9 \xd8\xa7\xd9\x88\xd8\xb1 \xd8\xb3\xd9\x86\xd8\xaf\xda\xbe \xd9\x85\xdb\x8c\xda\xba \xda\xa9\xd8\xa6\xdb\x8c \xd8\xb3\xd9\x88\xd9\x84 \xd8\xac\xd8\xac \xd9\x85\xd8\xb3\xd8\xaa\xd8\xb9\xd9\x81\xdb\x8c \xdb\x81\xd9\x88\xda\xaf\xd8\xa6\xdb\x92 \xdb\x81\xdb\x8c\xda\xba\xdb\x94</p>
+
+
+<h4>Pashto (ps)</h4>
+<p style=\"font-family: 'XB Zar';\">\xd9\xbe\xd9\x87 \xda\xa9\xd8\xa7\xd8\xa8\xd9\x84 \xd8\xa7\xd9\x88 \xda\xa9\xd9\x86\xd8\xaf\xd9\x87\xd8\xa7\xd8\xb1 \xda\xa9\xdb\x90 \xd8\xaf\xd9\x88\xd9\x88 \xda\x81\xd8\xa7\xd9\x86\xd9\x85\xd8\xb1\xda\xaf\xd9\x88 \xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf\xd9\x88\xd9\x86\xd9\x88 \xd9\x84\xda\x96 \xd8\xaa\xd8\xb1 \xd9\x84\xda\x96\xd9\x87 \xd9\x8a\xd9\x88 \xd9\x85\xd8\xa7\xd8\xb4\xd9\x88\xd9\x85 \xd9\x88\xda\x98\xd9\x84\xd9\x89 \xd8\xa7\xd9\x88 \xd8\xa7\xd8\xaa\xd9\x87 \xd8\xaa\xd9\x86\xd9\x87 \xd9\x86\xd9\x88\xd8\xb1 \xd9\x89\xdb\x90 \xd9\xbc\xd9\xbe\xd9\x8a\xd8\xa7\xd9\x86 \xda\xa9\xda\x93\xd9\x8a.</p>
+
+";
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example32_indic.php b/inc/3rdparty/libraries/mpdf/examples/example32_indic.php
new file mode 100644 (file)
index 0000000..9bfdee7
--- /dev/null
@@ -0,0 +1,219 @@
+<?php
+
+
+$html = "
+<style>
+body, p { font-size: 15pt;}
+h3 { font-size: 15pt; margin-bottom:0; }
+</style>
+
+<h1> Indic Fonts and Languages</h1>
+
+<h3 style=\"font-family: sans;\">
+Malayalam
+</h3>
+<p style=\"font-family:ind_ml_1_001\">&#xd38;&#xd02;&#xd38;&#xd4d;&#xd25;&#xd3e;&#xd28;&#xd24;&#xd4d;&#xd24;&#xd4d; &#xd30;&#xd3e;&#xd37;&#xd4d;&#xd1f;&#xd4d;&#xd30;&#xd40;&#xd2f; &#xd2a;&#xd41;&#xd15;&#xd2e;&#xd31; &#xd38;&#xd43;&#xd37;&#xd4d;&#xd1f;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd3e;&#xd28;&#xd3e;&#xd23;&#xd4d; &#xd35;&#xd4b;&#xd1f;&#xd4d;&#xd1f;&#xd30;&#xd4d;&#x200d;&#xd2a;&#xd1f;&#xd4d;&#xd1f;&#xd3f;&#xd15; &#xd35;&#xd3f;&#xd35;&#xd3e;&#xd26;&#xd24;&#xd4d;&#xd24;&#xd3f;&#xd32;&#xd42;&#xd1f;&#xd46; &#xd15;&#xd4b;&#xd23;&#xd4d;&#x200d;&#xd17;&#xd4d;&#xd30;&#xd38;&#xd4d; &#xd36;&#xd4d;&#xd30;&#xd2e;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd46;&#xd28;&#xd4d;&#xd28;&#xd4d; &#xd38;&#xd3f;&#xd2a;&#xd3f;&#x200c;&#xd0e;&#xd02; &#xd38;&#xd02;&#xd38;&#xd4d;&#xd25;&#xd3e;&#xd28; &#xd38;&#xd46;&#xd15;&#xd4d;&#xd30;&#xd1f;&#xd4d;&#xd1f;&#xd31;&#xd3f; &#xd2a;&#xd3f;&#xd23;&#xd31;&#xd3e;&#xd2f;&#xd3f; &#xd35;&#xd3f;&#xd1c;&#xd2f;&#xd28;&#xd4d;&#x200d; &#xd15;&#xd41;&#xd31;&#xd4d;&#xd31;&#xd2a;&#xd4d;&#xd2a;&#xd46;&#xd1f;&#xd41;&#xd24;&#xd4d;&#xd24;&#xd3f;. &#xd09;&#xd26;&#xd4d;&#xd2f;&#xd4b;&#xd17;&#xd38;&#xd4d;&#xd25;&#xd30;&#xd46; &#xd2d;&#xd40;&#xd37;&#xd23;&#xd3f;&#xd2a;&#xd4d;&#xd2a;&#xd46;&#xd1f;&#xd41;&#xd24;&#xd4d;&#xd24;&#xd3f; &#xd35;&#xd30;&#xd41;&#xd24;&#xd3f;&#xd2f;&#xd3f;&#xd32;&#xd4d;&#x200d; &#xd28;&#xd3f;&#xd30;&#xd4d;&#x200d;&#xd24;&#xd4d;&#xd24;&#xd3e;&#xd28;&#xd3e;&#xd23;&#xd4d; &#xd35;&#xd2f;&#xd32;&#xd3e;&#xd30;&#xd4d;&#x200d; &#xd30;&#xd35;&#xd3f; &#xd09;&#xd33;&#xd4d;&#x200d;&#xd2a;&#xd4d;&#xd2a;&#xd46;&#xd1f;&#xd46;&#xd2f;&#xd41;&#xd33;&#xd4d;&#xd33;&#xd35;&#xd30;&#xd4d;&#x200d; &#xd36;&#xd4d;&#xd30;&#xd2e;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd46;&#xd28;&#xd4d;&#xd28;&#xd41;&#xd02; &#xd2a;&#xd3f;&#xd23;&#xd31;&#xd3e;&#x200d;&#xd2f;&#xd3f; &#xd2a;&#xd4d;&#xd30;&#xd38;&#xd4d;&#xd24;&#xd3e;&#xd35;&#xd28;&#xd2f;&#xd3f;&#xd32;&#xd4d;&#x200d; &#xd06;&#xd30;&#xd4b;&#xd2a;&#xd3f;&#xd1a;&#xd4d;&#xd1a;&#xd41;.
+<br />
+
+&#xd35;&#xd2f;&#xd32;&#xd3e;&#xd30;&#xd4d;&#x200d; &#xd30;&#xd35;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd46;&#xd24;&#xd3f;&#xd30;&#xd46; &#xd07;&#xd24;&#xd3f;&#xd28;&#xd4d; &#xd28;&#xd1f;&#xd2a;&#xd1f;&#xd3f; &#xd38;&#xd4d;&#xd35;&#xd40;&#xd15;&#xd30;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd23;&#xd2e;&#xd46;&#xd28;&#xd4d;&#xd28;&#xd41;&#xd02; &#xd2a;&#xd3f;&#xd23;&#xd31;&#xd3e;&#xd2f;&#xd3f; &#xd06;&#xd35;&#xd36;&#xd4d;&#xd2f;&#xd2a;&#xd4d;&#xd2a;&#xd46;&#xd1f;&#xd4d;&#xd1f;&#xd41;. &#xd05;&#xd15;&#xd4d;&#xd30;&#xd2e;&#xd2a;&#xd4d;&#xd30;&#xd35;&#xd30;&#xd4d;&#x200d;&#xd24;&#xd4d;&#xd24;&#xd28;&#xd19;&#xd4d;&#xd19;&#xd33;&#xd46; &#xd2a;&#xd4d;&#xd30;&#xd4b;&#xd24;&#xd4d;&#xd38;&#xd3e;&#xd39;&#xd3f;&#xd2a;&#xd4d;&#xd2a;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd3e;&#xd23;&#xd4d; &#xd30;&#xd35;&#xd3f;&#xd2f;&#xd41;&#xd1f;&#xd46; &#xd35;&#xd3e;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd15;&#xd33;&#xd4d;&#x200d;. &#xd05;&#xd27;&#xd3f;&#xd15;&#xd3e;&#xd30;&#xd24;&#xd4d;&#xd24;&#xd3f;&#xd28;&#xd4d;&#x200d;&#xd31;&#xd46; &#xd2e;&#xd24;&#xd4d;&#xd24;&#xd4d; &#xd24;&#xd32;&#xd2f;&#xd4d;&#xd15;&#xd4d;&#xd15;&#xd4d; &#xd2a;&#xd3f;&#xd1f;&#xd3f;&#xd1a;&#xd4d;&#xd1a;&#xd3f;&#xd30;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd4d; &#xd15;&#xd4a;&#xd23;&#xd4d;&#xd1f;&#xd3e;&#xd23;&#xd4d; &#xd15;&#xd4b;&#xd23;&#xd4d;&#x200d;&#xd17;&#xd4d;&#xd30;&#xd38;&#xd41;&#xd15;&#xd3e;&#xd30;&#xd4d;&#x200d; &#xd07;&#xd19;&#xd4d;&#xd19;&#xd28;&#xd46; &#xd2a;&#xd46;&#xd30;&#xd41;&#xd2e;&#xd3e;&#xd31;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd46;&#xd28;&#xd4d;&#xd28;&#xd41;&#xd02; &#xd2a;&#xd3f;&#xd23;&#xd31;&#xd3e;&#xd2f;&#xd3f; &#xd1a;&#xd42;&#xd23;&#xd4d;&#xd1f;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd3e;&#xd1f;&#xd4d;&#xd1f;&#xd3f;.
+<br />
+
+&#xd38;&#xd4d;&#xd35;&#xd24;&#xd28;&#xd4d;&#xd24;&#xd4d;&#xd30;&#xd2e;&#xd3e;&#xd2f;&#xd3f; &#xd28;&#xd1f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28; &#xd15;&#xd23;&#xd4d;&#xd23;&#xd42;&#xd30;&#xd3f;&#xd32;&#xd46; &#xd24;&#xd46;&#xd30;&#xd1e;&#xd4d;&#xd1e;&#xd46;&#xd1f;&#xd41;&#xd2a;&#xd4d;&#xd2a;&#xd3f;&#xd28;&#xd46; &#xd05;&#xd1f;&#xd4d;&#xd1f;&#xd3f;&#xd2e;&#xd31;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd3e;&#xd28;&#xd3e;&#xd23;&#xd4d; &#xd2f;&#xd41;&#x200c;&#xd21;&#xd3f;&#x200c;&#xd0e;&#xd2b;&#xd4d; &#xd36;&#xd4d;&#xd30;&#xd2e;&#xd3f;&#xd15;&#xd4d;&#xd15;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd24;&#xd46;&#xd28;&#xd4d;&#xd28;&#xd41;&#xd02; &#xd2a;&#xd3f;&#xd23;&#xd31;&#xd3e;&#xd2f;&#xd3f; &#xd06;&#xd30;&#xd4b;&#xd2a;&#xd3f;&#xd1a;&#xd4d;&#xd1a;&#xd41;. 
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0D66;&#x0D67;&#x0D68;&#x0D69;&#x0D6A;&#x0D6B;&#x0D6C;&#x0D6D;&#x0D6E;&#x0D6F;
+</p>
+
+<h3 style=\"font-family:sans\">Kannada</h3>
+<p style=\"font-family:ind_kn_1_001\">
+&#xca4;&#xcae;&#xccd;&#xcae;&#xca6;&#xcc7; &#xc95;&#xcc1;&#xc9f;&#xcc1;&#xc82;&#xcac;&#xca6; &#xcaf;&#xcc1;&#xcb5;&#xca4;&#xcbf;&#xcaf;&#xcca;&#xcac;&#xccd;&#xcac;&#xcb3;&#xca8;&#xccd;&#xca8;&#xcc1; &#xcb8;&#xca4;&#xca4; &#xcb9;&#xcb2;&#xcb5;&#xcbe;&#xcb0;&#xcc1; &#xcb5;&#xcb0;&#xccd;&#xcb7; &#xcad;&#xccb;&#xc97;&#xcbf;&#xcb8;&#xcbf;&#xca6; &#xcad;&#xcbe;&#xcb0;&#xca4;&#xcc0;&#xcaf; &#xcae;&#xcc2;&#xcb2;&#xca6; &#xcae;&#xcc2;&#xcb5;&#xcb0;&#xcc1; &#xca6;&#xcc1;&#xcb0;&#xcc1;&#xcb3; &#xcb8;&#xc82;&#xcac;&#xc82;&#xca7;&#xcbf;&#xc95;&#xcb0;&#xcc1; &#xc85;&#xcaa;&#xcb0;&#xcbe;&#xca7;&#xcbf;&#xc97;&#xcb3;&#xcc6;&#xc82;&#xca6;&#xcc1; &#xcb8;&#xcbe;&#xcac;&#xcc0;&#xca4;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1;, &#xc87;&#xc82;&#xc97;&#xccd;&#xcb2;&#xcc6;&#xc82;&#xca1;&#xccd; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf;&#xcb5;&#xcc1; &#xca6;&#xcc0;&#xcb0;&#xccd;&#xc98;&#xcbe;&#xcb5;&#xca7;&#xcbf; &#xc95;&#xca0;&#xcbf;&#xca3; &#xcb6;&#xcbf;&#xc95;&#xccd;&#xcb7;&#xcc6; &#xcb5;&#xcbf;&#xca7;&#xcbf;&#xcb8;&#xcbf;&#xca6;&#xcc6;.
+<br />
+
+27&#xcb0; &#xcb9;&#xcb0;&#xcc6;&#xcaf;&#xca6; &#xcaf;&#xcc1;&#xcb5;&#xca4;&#xcbf;&#xcaf;&#xca8;&#xccd;&#xca8;&#xcc1; &#xc86;&#xc95;&#xcc6;&#xcaf; &#xcae;&#xcb2;&#xca4;&#xc82;&#xca6;&#xcc6;, &#xcae;&#xcb2;&#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1; &#xcad;&#xcbe;&#xcb5; &#xc85;&#xca4;&#xccd;&#xcaf;&#xcbe;&#xc9a;&#xcbe;&#xcb0; &#xca8;&#xca1;&#xcc6;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1; &#xc95;&#xcbe;&#xcb0;&#xccd;&#xca1;&#xcbf;&#xcab;&#xccd; &#xc95;&#xccd;&#xcb0;&#xccc;&#xca8;&#xccd; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf;&#xca6;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xcb0;&#xcc1;&#xc9c;&#xcc1;&#xcb5;&#xcbe;&#xca4;&#xcbe;&#xca6; &#xc95;&#xcbe;&#xcb0;&#xca3; &#xcb6;&#xcbf;&#xc95;&#xccd;&#xcb7;&#xcc6; &#xc98;&#xccb;&#xcb7;&#xcbf;&#xcb8;&#xcb2;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xcc6;. &#xc85;&#xcaa;&#xcb0;&#xcbe;&#xca7;&#xcbf;&#xc97;&#xcb3;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xcae;&#xcb2;&#xca4;&#xc82;&#xca6;&#xcc6; &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1; &#xcae;&#xcb2;&#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xc85;&#xc95;&#xccd;&#xcb0;&#xcae; &#xcb5;&#xcb2;&#xcb8;&#xcbf;&#xc97;&#xcb0;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1;, &#xcb6;&#xcbf;&#xc95;&#xccd;&#xcb7;&#xcc6;&#xcaf; &#xc85;&#xcb5;&#xca7;&#xcbf; &#xcae;&#xcc1;&#xc97;&#xcbf;&#xca6; &#xca8;&#xc82;&#xca4;&#xcb0; &#xc85;&#xcb5;&#xcb0;&#xca8;&#xccd;&#xca8;&#xcc1; &#xcad;&#xcbe;&#xcb0;&#xca4;&#xc95;&#xccd;&#xc95;&#xcc6; &#xc97;&#xca1;&#xcbf;&#xcaa;&#xcbe;&#xcb0;&#xcc1; &#xcae;&#xcbe;&#xca1;&#xcb2;&#xcbe;&#xc97;&#xcc1;&#xca4;&#xccd;&#xca4;&#xca6;&#xcc6;.
+<br />
+
+55&#xcb0; &#xcb9;&#xcb0;&#xcc6;&#xcaf;&#xca6; &#xcae;&#xcb2;&#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1; 50&#xcb0; &#xcb9;&#xcb0;&#xcc6;&#xcaf;&#xca6; &#xcae;&#xcb2;&#xca4;&#xc82;&#xca6;&#xcc6;&#xc97;&#xcc6; &#xc95;&#xccd;&#xcb0;&#xcae;&#xcb5;&#xcbe;&#xc97;&#xcbf; 20 &#xcae;&#xca4;&#xccd;&#xca4;&#xcc1; 15 &#xcb5;&#xcb0;&#xccd;&#xcb7;&#xc97;&#xcb3; &#xc95;&#xcbe;&#xcb2; &#xc9c;&#xcc8;&#xcb2;&#xcc1; &#xcb6;&#xcbf;&#xc95;&#xccd;&#xcb7;&#xcc6; &#xcb5;&#xcbf;&#xca7;&#xcbf;&#xcb8;&#xcb2;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xcc6;. 27&#xcb0; &#xcb9;&#xcb0;&#xcc6;&#xcaf;&#xca6; &#xc86;&#xc95;&#xcc6;&#xcaf; &#xcad;&#xcbe;&#xcb5;&#xca8;&#xcbf;&#xc97;&#xcc6; 12 &#xcb5;&#xcb0;&#xccd;&#xcb7;&#xc97;&#xcb3; &#xca6;&#xc82;&#xca1;&#xca8;&#xcc6; &#xca8;&#xcc0;&#xca1;&#xcb2;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xcc6;.
+<br />
+
+&#xcac;&#xcbe;&#xcb2;&#xc95;&#xcbf;&#xcaf;&#xca8;&#xccd;&#xca8;&#xcc7; &#xc85;&#xca4;&#xccd;&#xcaf;&#xcbe;&#xc9a;&#xcbe;&#xcb0; &#xcae;&#xcbe;&#xca1;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcb0;&#xcc1;..
+&#xcaf;&#xcc1;&#xcb5;&#xca4;&#xcbf;&#xc97;&#xcc6; 14 &#xcb5;&#xcb0;&#xccd;&#xcb7;&#xcb5;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xc97; &#xc86;&#xc95;&#xcc6;&#xcaf; &#xc97;&#xcb0;&#xccd;&#xcad;&#xc95;&#xccd;&#xc95;&#xcc6; &#xca4;&#xcbe;&#xca8;&#xcc7; &#xc95;&#xcbe;&#xcb0;&#xca3;&#xcb5;&#xcbe;&#xc97;&#xcbf;&#xcb0;&#xcc1;&#xcb5;&#xcc1;&#xca6;&#xca8;&#xccd;&#xca8;&#xcc2; &#xcae;&#xcb2; &#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xcb5;&#xcbf;&#xc9a;&#xcbe;&#xcb0;&#xca3;&#xcc6; &#xc85;&#xcb5;&#xca7;&#xcbf;&#xcaf;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xc92;&#xcaa;&#xccd;&#xcaa;&#xcbf;&#xc95;&#xcca;&#xc82;&#xca1;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xca8;&#xcc6;. &#xc86;&#xca4; &#xc8f;&#xcb3;&#xcc1; &#xcac;&#xcbe;&#xcb0;&#xcbf; &#xc86;&#xc95;&#xcc6;&#xcaf;&#xca8;&#xccd;&#xca8;&#xcc1; &#xc85;&#xca4;&#xccd;&#xcaf;&#xcbe;&#xc9a;&#xcbe;&#xcb0; &#xcae;&#xcbe;&#xca1;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcc1;, &#xcae;&#xcc2;&#xcb0;&#xcc1; &#xcac;&#xcbe;&#xcb0;&#xcbf; &#xcae;&#xc97;&#xcc1;&#xcb5;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xc97; &#xc85;&#xca8;&#xcc1;&#xc9a;&#xcbf;&#xca4; &#xcb5;&#xcb0;&#xccd;&#xca4;&#xca8;&#xcc6; &#xca4;&#xccb;&#xcb0;&#xcbf;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6;. &#xc85;&#xcb2;&#xccd;&#xcb2;&#xca6;&#xcc6; &#xcb9;&#xcb2;&#xccd;&#xcb2;&#xcc6; &#xc95;&#xcc2;&#xca1; &#xca8;&#xca1;&#xcc6;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6; &#xc8e;&#xc82;&#xca6;&#xcc1; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf; &#xcb5;&#xcbf;&#xcb5;&#xcb0;&#xca3;&#xcc6; &#xca8;&#xcc0;&#xca1;&#xcbf;&#xca6;&#xcc6;.
+<br />
+
+&#xcaf;&#xcc1;&#xcb5;&#xca4;&#xcbf;&#xc97;&#xcc6; &#xc86;&#xc95;&#xcc6; &#xcac;&#xcbe;&#xcb2;&#xc95;&#xcbf;&#xcaf;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xc97;&#xcb2;&#xcc7; &#xc87;&#xcb5;&#xcb0;&#xcc1; &#xcb2;&#xcc8;&#xc82;&#xc97;&#xcbf;&#xc95; &#xcb9;&#xcbf;&#xc82;&#xcb8;&#xcc6; &#xca8;&#xcc0;&#xca1;&#xcb2;&#xcc1; &#xc86;&#xcb0;&#xc82;&#xcad;&#xcbf;&#xcb8;&#xcbf;&#xca6;&#xccd;&#xca6;&#xca8;&#xccd;&#xca8;&#xcc1; &#xca8;&#xccd;&#xcaf;&#xcbe;&#xcaf;&#xcbe;&#xcb2;&#xcaf; &#xcb9;&#xcca;&#xcb0;&#xc97;&#xcc6;&#xcb3;&#xcc6;&#xca6;&#xcbf;&#xca4;&#xccd;&#xca4;&#xcc1;. &#xc86;&#xc95;&#xcc6; &#xc90;&#xca6;&#xcb0; &#xcb9;&#xcb0;&#xcc6;&#xcaf;&#xca6; &#xcac;&#xcbe;&#xcb2;&#xc95;&#xcbf;&#xcaf;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcbe;&#xc97; &#xcae;&#xcb2;&#xca6;&#xcca;&#xca1;&#xccd;&#xca1;&#xcaa;&#xccd;&#xcaa; &#xc85;&#xca4;&#xccd;&#xcaf;&#xcbe;&#xc9a;&#xcbe;&#xcb0; &#xcae;&#xcbe;&#xca1;&#xcbf;&#xca6;&#xccd;&#xca6;. 14&#xca8;&#xcc7; &#xcb5;&#xcb0;&#xccd;&#xcb7;&#xca6;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xc86;&#xc95;&#xcc6; &#xc97;&#xcb0;&#xccd;&#xcad;&#xcbf;&#xca3;&#xcbf;&#xcaf;&#xcbe;&#xc97;&#xcbf;&#xca6;&#xccd;&#xca6;&#xcb3;&#xcc1;. &#xc86; &#xcb8;&#xc82;&#xca6;&#xcb0;&#xccd;&#xcad;&#xca6;&#xcb2;&#xccd;&#xcb2;&#xcbf; &#xc86;&#xc95;&#xcc6;&#xcaf;&#xca8;&#xccd;&#xca8;&#xcc1; &#xc95;&#xcc2;&#xca1;&#xcbf; &#xcb9;&#xcbe;&#xc95;&#xcbf;&#xca6;&#xccd;&#xca6; &#xc95;&#xcbe;&#xcb0;&#xca3; &#xcae;&#xca8;&#xcc6;&#xc97;&#xcc6; &#xcad;&#xcc7;&#xc9f;&#xcbf; &#xca8;&#xcc0;&#xca1;&#xcc1;&#xcb5;&#xcb5;&#xcb0;&#xcbf;&#xc97;&#xcc6; &#xcaf;&#xcbe;&#xcb5;&#xcc1;&#xca6;&#xcc7; &#xcb5;&#xcbf;&#xc9a;&#xcbe;&#xcb0;&#xc97;&#xcb3;&#xcc1; &#xca4;&#xcbf;&#xcb3;&#xcbf;&#xcaf;&#xcc1;&#xca4;&#xccd;&#xca4;&#xcbf;&#xcb0;&#xcb2;&#xcbf;&#xcb2;&#xccd;&#xcb2;.
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0CE6;&#x0CE7;&#x0CE8;&#x0CE9;&#x0CEA;&#x0CEB;&#x0CEC;&#x0CED;&#x0CEE;&#x0CEF;
+</p>
+
+<h3 style=\"font-family:ind_te_1_001\">Telegu</h3>
+<p style=\"font-family:ind_te_1_001\">&#xc06;&#xc17;&#xc4d;&#xc28;&#xc47;&#xc2f; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b; &#xc06;&#xc26;&#xc3f;&#xc35;&#xc3e;&#xc30;&#xc02; &#xc28;&#xc3e;&#xc21;&#xc41; &#xc13; &#xc06;&#xc24;&#xc4d;&#xc2e;&#xc3e;&#xc39;&#xc41;&#xc24;&#xc3f; &#xc26;&#xc3e;&#xc21;&#xc3f; &#xc1c;&#xc30;&#xc17;&#xc21;&#xc02;&#xc24;&#xc4b; &#xc07;&#xc30;&#xc35;&#xc48; &#xc2e;&#xc02;&#xc26;&#xc3f; &#xc2e;&#xc43;&#xc24;&#xc3f; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3e;&#xc30;&#xc41;.
+<br />
+
+&#xc06;&#xc17;&#xc4d;&#xc28;&#xc47;&#xc2f; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b; &#xc06;&#xc24;&#xc4d;&#xc2e;&#xc3e;&#xc39;&#xc41;&#xc24;&#xc3f; &#xc26;&#xc3e;&#xc21;&#xc3f; &#xc1c;&#xc30;&#xc17;&#xc21;&#xc02;&#xc24;&#xc4b; &#xc10;&#xc26;&#xc41;&#xc17;&#xc41;&#xc30;&#xc41; &#xc0e;&#xc32;&#xc3f;&#xc1f;&#xc4d; &#xc30;&#xc46;&#xc35;&#xc32;&#xc4d;&#xc2f;&#xc42;&#xc37;&#xc28;&#xc30;&#xc40; &#xc17;&#xc3e;&#xc30;&#xc4d;&#xc21;&#xc4d;&#x200c;&#xc32;&#xc24;&#xc4b; &#xc38;&#xc39;&#xc3e; &#xc2a;&#xc4d;&#xc30;&#xc2e;&#xc41;&#xc16; &#xc15;&#xc2e;&#xc3e;&#xc02;&#xc21;&#xc30;&#xc4d;&#x200c;&#xc32;&#xc24;&#xc4b;&#xc38;&#xc39;&#xc3e; &#xc2e;&#xc4a;&#xc24;&#xc4d;&#xc24;&#xc02; &#xc07;&#xc30;&#xc35;&#xc48; &#xc2e;&#xc02;&#xc26;&#xc3f; &#xc2e;&#xc43;&#xc24;&#xc3f; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3f;&#xc28;&#xc1f;&#xc4d;&#xc32;&#xc41; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d; &#xc32;&#xc4b;&#xc15;&#xc4d;&#x200c;&#xc38;&#xc2d; &#xc38;&#xc4d;&#xc2a;&#xc40;&#xc15;&#xc30;&#xc4d; &#xc05;&#xc32;&#xc40; &#xc32;&#xc3e;&#xc30;&#xc3f;&#xc1c;&#xc3e;&#xc28;&#xc40; &#xc24;&#xc46;&#xc32;&#xc3f;&#xc2a;&#xc3e;&#xc30;&#xc41;.
+<br />
+
+&#xc06;&#xc26;&#xc3f;&#xc35;&#xc3e;&#xc30;&#xc02; &#xc1c;&#xc30;&#xc3f;&#xc17;&#xc3f;&#xc28; &#xc26;&#xc3e;&#xc21;&#xc41;&#xc32;&#xc4d;&#xc32;&#xc4b; &#xc2d;&#xc26;&#xc4d;&#xc30;&#xc24;&#xc3e;&#xc26;&#xc33;&#xc3e;&#xc32;&#xc15;&#xc41; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3f;&#xc28; &#xc15;&#xc2e;&#xc3e;&#xc02;&#xc21;&#xc30;&#xc4d; &#xc1c;&#xc28;&#xc30;&#xc32;&#xc4d; &#xc28;&#xc42;&#xc30;&#xc4d; &#xc05;&#xc32;&#xc40; &#xc36;&#xc41;&#xc36;&#xc3e;&#xc24;&#xc4d;&#xc30;&#xc40;, &#xc2e;&#xc30;&#xc4b; &#xc15;&#xc2e;&#xc3e;&#xc02;&#xc21;&#xc30;&#xc4d; &#xc30;&#xc1c;&#xc2c;&#xc4d; &#xc05;&#xc32;&#xc40; &#xc2e;&#xc4a;&#xc39;&#xc2e;&#xc4d;&#xc2e;&#xc26;&#xc4d;&#x200c; &#xc1c;&#xc3e;&#xc26;&#xc47;&#xc39;&#xc4d; &#xc24;&#xc26;&#xc3f;&#xc24;&#xc30;&#xc41;&#xc32;&#xc41;&#xc28;&#xc4d;&#xc28;&#xc3e;&#xc30;&#xc28;&#xc3f;, &#xc35;&#xc40;&#xc30;&#xc3f;&#xc24;&#xc4b;&#xc2a;&#xc3e;&#xc1f;&#xc41; &#xc2a;&#xc32;&#xc41;&#xc35;&#xc41;&#xc30;&#xc41; &#xc24;&#xc40;&#xc35;&#xc4d;&#xc30;&#xc17;&#xc3e;&#xc2f;&#xc3e;&#xc32;&#xc2a;&#xc3e;&#xc32;&#xc48;&#xc28;&#xc3e;&#xc30;&#xc28;&#xc3f; &#xc06;&#xc2f;&#xc28; &#xc1a;&#xc46;&#xc2a;&#xc4d;&#xc2a;&#xc3e;&#xc30;&#xc41;.
+<br />
+
+&#xc2e;&#xc43;&#xc24;&#xc3f; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3f;&#xc28; &#xc15;&#xc2e;&#xc3e;&#xc02;&#xc21;&#xc30;&#xc4d;&#xc32;&#xc41; &#xc2a;&#xc3e;&#xc15;&#xc3f;&#xc38;&#xc4d;&#xc25;&#xc3e;&#xc28;&#xc4d;&#x200c; &#xc38;&#xc30;&#xc3f;&#xc39;&#xc26;&#xc4d;&#xc26;&#xc41;&#xc32;&#xc4d;&#xc32;&#xc4b;&#xc28;&#xc41;&#xc28;&#xc4d;&#xc28; &#xc2a;&#xc3f;&#xc36;&#xc3f;&#xc28;&#xc4d; &#xc2a;&#xc4d;&#xc30;&#xc3e;&#xc02;&#xc24;&#xc02;&#xc32;&#xc4b; &#xc13; &#xc38;&#xc2e;&#xc3e;&#xc35;&#xc47;&#xc36;&#xc02;&#xc32;&#xc4b; &#xc2a;&#xc3e;&#xc32;&#xc4d;&#xc17;&#xc4a;&#xc28;&#xc47;&#xc02;&#xc26;&#xc41;&#xc15;&#xc41; &#xc15;&#xc3e;&#xc30;&#xc41;&#xc32;&#xc4b; &#xc2c;&#xc2f;&#xc32;&#xc41; &#xc26;&#xc47;&#xc30;&#xc3f; &#xc35;&#xc46;&#xc33;&#xc4d;&#xc33;&#xc3e;&#xc30;&#xc28;&#xc3f;, &#xc06; &#xc38;&#xc2e;&#xc2f;&#xc02;&#xc32;&#xc4b; &#xc06;&#xc24;&#xc4d;&#xc2e;&#xc3e;&#xc39;&#xc41;&#xc24;&#xc3f; &#xc26;&#xc33;&#xc3e;&#xc28;&#xc3f;&#xc15;&#xc3f; &#xc1a;&#xc46;&#xc02;&#xc26;&#xc3f;&#xc28; &#xc38;&#xc2d;&#xc4d;&#xc2f;&#xc41;&#xc21;&#xc41; &#xc24;&#xc28;&#xc28;&#xc41; &#xc24;&#xc3e;&#xc28;&#xc41; &#xc2a;&#xc47;&#xc32;&#xc4d;&#xc1a;&#xc47;&#xc38;&#xc41;&#xc15;&#xc4b;&#xc35;&#xc21;&#xc02;&#xc24;&#xc4b; &#xc08; &#xc26;&#xc41;&#xc30;&#xc4d;&#xc18;&#xc1f;&#xc28; &#xc1c;&#xc30;&#xc3f;&#xc17;&#xc3f;&#xc02;&#xc26;&#xc28;&#xc3f; &#xc06;&#xc2f;&#xc28; &#xc35;&#xc3f;&#xc35;&#xc30;&#xc3f;&#xc02;&#xc1a;&#xc3e;&#xc30;&#xc41;.
+<br />
+
+&#xc07;&#xc26;&#xc3f;&#xc32;&#xc3e;&#xc35;&#xc41;&#xc02;&#xc21;&#xc17;&#xc3e; &#xc07;&#xc2a;&#xc4d;&#xc2a;&#xc1f;&#xc3f;&#xc35;&#xc30;&#xc15;&#xc41; &#xc08; &#xc26;&#xc3e;&#xc21;&#xc41;&#xc32;&#xc15;&#xc41; &#xc2c;&#xc3e;&#xc27;&#xc4d;&#xc2f;&#xc24; &#xc35;&#xc39;&#xc3f;&#xc38;&#xc4d;&#xc24;&#xc42; &#xc0f; &#xc38;&#xc02;&#xc38;&#xc4d;&#xc25; &#xc2a;&#xc4d;&#xc30;&#xc15;&#xc1f;&#xc3f;&#xc02;&#xc1a;&#xc32;&#xc47;&#xc26;&#xc41;. &#xc15;&#xc3e;&#xc28;&#xc3f; &#xc08; &#xc26;&#xc41;&#xc30;&#xc4d;&#xc18;&#xc1f;&#xc28; &#xc35;&#xc46;&#xc28;&#xc41;&#xc15; &#xc38;&#xc41;&#xc28;&#xc4d;&#xc28;&#xc40; &#xc09;&#xc17;&#xc4d;&#xc30;&#xc35;&#xc3e;&#xc26; &#xc38;&#xc02;&#xc38;&#xc4d;&#xc25; &#xc1c;&#xc41;&#xc02;&#xc26;&#xc32;&#xc4d;&#xc32;&#xc3e; &#xc39;&#xc38;&#xc4d;&#xc24;&#xc02; &#xc09;&#xc02;&#xc21;&#xc4a;&#xc1a;&#xc4d;&#xc1a;&#xc28;&#xc3f;, &#xc08; &#xc38;&#xc02;&#xc38;&#xc4d;&#xc25; &#xc06;&#xc17;&#xc4d;&#xc28;&#xc47;&#xc2f; &#xc07;&#xc30;&#xc3e;&#xc28;&#xc4d;&#x200c;&#xc32;&#xc4b; &#xc30;&#xc46;&#xc35;&#xc32;&#xc4d;&#xc2f;&#xc42;&#xc37;&#xc28;&#xc30;&#xc40; &#xc17;&#xc3e;&#xc30;&#xc4d;&#xc21;&#xc4d;, &#xc37;&#xc3f;&#xc2f;&#xc3e;&#xc32;&#xc2a;&#xc48; &#xc26;&#xc3e;&#xc21;&#xc41;&#xc32;&#xc41; &#xc1a;&#xc47;&#xc38;&#xc47;&#xc02;&#xc26;&#xc41;&#xc15;&#xc41; &#xc2a;&#xc42;&#xc28;&#xc41;&#xc15;&#xc41;&#xc28;&#xc41;&#xc02;&#xc1f;&#xc41;&#xc02;&#xc26;&#xc28;&#xc3f; &#xc2d;&#xc26;&#xc4d;&#xc30;&#xc24;&#xc3e; &#xc26;&#xc33;&#xc3e;&#xc32;&#xc41; &#xc05;&#xc28;&#xc41;&#xc2e;&#xc3e;&#xc28;&#xc02; &#xc35;&#xc4d;&#xc2f;&#xc15;&#xc4d;&#xc24;&#xc02; &#xc1a;&#xc47;&#xc38;&#xc3e;&#xc2f;&#xc3f;. 
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0C66;&#x0C67;&#x0C68;&#x0C69;&#x0C6A;&#x0C6B;&#x0C6C;&#x0C6D;&#x0C6E;&#x0C6F;
+</p>
+
+
+
+<h3 style=\"font-family:ind_ta_1_001\">Tamil (ta)</h3>
+<p lang=\"ta\">\xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xae\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xa8\xe0\xae\xae\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d, \xe0\xae\xb7\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbe \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\xb0\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xae\xa3\xe0\xae\xbf\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81 \xe0\xae\x92\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81.</p>
+
+<p style=\"font-family:ind_ta_1_001\">\xe0\xae\x87\xe0\xae\xb2\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x88 \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb1\xe0\xae\xb5\xe0\xaf\x81 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xb0\xe0\xaf\x8b\xe0\xae\xb9\xe0\xae\xbf\xe0\xae\xa4 \xe0\xae\xaa\xe0\xaf\x8b\xe0\xae\x95\xe0\xaf\x8a\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb2\xe0\xae\xbe\xe0\xae\x95\xe0\xae\xae \xe0\xae\x85\xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d, \xe0\xae\x87\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\xaa\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb2\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x87\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\xb3\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb1\xe0\xae\xb5\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb1\xe0\xaf\x88 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xa3\xe0\xae\xbe\xe0\xae\xaa\xe0\xaf\x8d \xe0\xae\xae\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x9c\xe0\xae\xbf \xe0\xae\x89\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f \xe0\xae\xae\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xae\xb2\xe0\xaf\x88\xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d \xe0\xae\x9a\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d \xe0\xae\xaa\xe0\xaf\x87\xe0\xae\x9a\xe0\xaf\x8d\xe0\xae\x9a\xe0\xaf\x81 \xe0\xae\xa8\xe0\xae\x9f\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\xaf\xe0\xaf\x81\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3\xe0\xae\xbe\xe0\xae\xb0\xe0\xaf\x8d.</p>
+
+<p style=\"font-family:ind_ta_1_001\">\xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95 \xe0\xae\xae\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\xaa\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xb7\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xaa\xe0\xaf\x8d\xe0\xae\xaa\xe0\xaf\x81\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88\xe0\xae\x95\xe0\xaf\x8d \xe0\xae\x95\xe0\xaf\x8a\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1 \xe0\xae\xb5\xe0\xaf\x86\xe0\xae\x9f\xe0\xae\xbf\xe0\xae\xae\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xa8\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x8a\xe0\xae\xb4\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\xa8\xe0\xaf\x81\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\xae\xe0\xaf\x8d \xe0\xae\x89\xe0\xae\x9f\xe0\xaf\x8d\xe0\xae\xaa\xe0\xae\x9f \xe0\xae\xaa\xe0\xae\xb2\xe0\xaf\x8d\xe0\xae\xb5\xe0\xaf\x87\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x89\xe0\xae\xa4\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x88 \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb2\xe0\xaf\x8d \xe0\xae\x89\xe0\xae\xb3\xe0\xaf\x8d\xe0\xae\xb3 \xe0\xae\xa4\xe0\xaf\x80\xe0\xae\xb5\xe0\xae\xbf\xe0\xae\xb0\xe0\xae\xb5\xe0\xae\xbe\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xaf\x81 \xe0\xae\x87\xe0\xae\xb0\xe0\xae\xbe\xe0\xae\xa9\xe0\xaf\x8d \xe0\xae\xb5\xe0\xae\xb4\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xa4\xe0\xae\xb1\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbe\xe0\xae\xa9 \xe0\xae\x86\xe0\xae\xa4\xe0\xae\xbe\xe0\xae\xb0\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb3\xe0\xaf\x8d \xe0\xae\x85\xe0\xae\xa4\xe0\xae\xbf\xe0\xae\x95\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\xa4\xe0\xaf\x8d\xe0\xae\xa4\xe0\xaf\x81 \xe0\xae\xb5\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb5\xe0\xae\xa4\xe0\xaf\x88 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbe \xe0\xae\x95\xe0\xae\xb5\xe0\xae\xa9\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xa4\xe0\xaf\x81 \xe0\xae\x8e\xe0\xae\xa9\xe0\xaf\x8d\xe0\xae\xb1\xe0\xaf\x81 \xe0\xae\x85\xe0\xae\xae\xe0\xaf\x86\xe0\xae\xb0\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95 \xe0\xae\x85\xe0\xae\xb0\xe0\xae\x9a\xe0\xaf\x81\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xb1\xe0\xaf\x88\xe0\xae\xa4\xe0\xaf\x8d \xe0\xae\xa4\xe0\xaf\x81\xe0\xae\xa3\xe0\xaf\x88\xe0\xae\x9a\xe0\xaf\x8d \xe0\xae\x9a\xe0\xaf\x86\xe0\xae\xaf\xe0\xae\xb2\xe0\xae\xb0\xe0\xaf\x8d \xe0\xae\xa8\xe0\xae\xbf\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xb2\xe0\xae\xb8\xe0\xaf\x8d \xe0\xae\xaa\xe0\xaf\x87\xe0\xae\xb0\xe0\xaf\x8d\xe0\xae\xa3\xe0\xaf\x8d\xe0\xae\xb8\xe0\xaf\x8d \xe0\xae\x95\xe0\xaf\x82\xe0\xae\xb1\xe0\xae\xbf\xe0\xae\xaf\xe0\xae\xbf\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\x95\xe0\xaf\x8d\xe0\xae\x95\xe0\xae\xbf\xe0\xae\xb1\xe0\xae\xbe\xe0\xae\xb0\xe0\xaf\x8d.
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0BE6;&#x0BE7;&#x0BE8;&#x0BE9;&#x0BEA;&#x0BEB;&#x0BEC;&#x0BED;&#x0BEE;&#x0BEF;
+</p>  
+
+
+<h3 style=\"font-family:ind_or_1_001\">Oriya</h3>
+<p style=\"font-family:ind_or_1_001\">&#xb13;&#xb21;&#xb3c;&#xb3f;&#xb06; &#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06; &#xb06;&#xb2a;&#xb23;&#xb19;&#xb4d;&#xb15;&#xb41; &#xb38;&#xb4d;&#xb2c;&#xb3e;&#xb17;&#xb24; &#xb15;&#xb30;&#xb41;&#xb1b;&#xb3f;&#x964; &#xb0f;&#xb39;&#xb3f; &#xb09;&#xb28;&#xb4d;&#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb1c;&#xb4d;&#xb1e;&#xb3e;&#xb28;&#xb15;&#xb4b;&#xb37;&#xb1f;&#xb3f; &#xb07;&#xb23;&#xb4d;&#xb1f;&#xb30;&#xb28;&#xb47;&#xb1f; &#xb09;&#xb2a;&#xb30;&#xb47; &#xb06;&#xb27;&#xb3e;&#xb30;&#xb3f;&#xb24; &#xb0f;&#xb2c;&#xb02; &#xb0f;&#xb39;&#xb3e; &#xb2c;&#xb3f;&#xb36;&#xb4d;&#xb2c;&#xb30; &#xb6b;&#xb66;&#xb1f;&#xb3f; &#xb2d;&#xb3e;&#xb37;&#xb3e;&#xb30;&#xb47; &#xb09;&#xb2a;&#xb32;&#xb2c;&#xb4d;&#xb27; &#x964; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb06;&#xb2a;&#xb23; &#xb2e;&#xb27;&#xb4d;&#xb5f; &#xb2c;&#xb30;&#xb4d;&#xb26;&#xb4d;&#xb27;&#xb3f;&#xb24; &#xb13; &#xb2a;&#xb30;&#xb3f;&#xb2c;&#xb30;&#xb4d;&#xb24;&#xb3f;&#xb24; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#xb0f;&#xb2c;&#xb02; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb09;&#xb28;&#xb4d;&#xb28;&#xb24; &#xb15;&#xb30;&#xb3f;&#xb2c;&#xb3e; &#xb2a;&#xb3e;&#xb07;&#xb01; &#xb28;&#xb3f;&#xb1c;&#xb30; &#xb05;&#xb2c;&#xb26;&#xb3e;&#xb28; &#xb26;&#xb47;&#xb07; &#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#x964; &#xb06;&#xb2a;&#xb23;&#xb19;&#xb4d;&#xb15; &#xb2a;&#xb38;&#xb28;&#xb4d;&#xb26;&#xb30; &#xb2c;&#xb3f;&#xb37;&#xb5f; &#xb17;&#xb41;&#xb21;&#xb3f;&#xb15;&#xb41; &#xb06;&#xb2a;&#xb23; &#xb28;&#xb42;&#xb24;&#xb28; &#xb2d;&#xb3e;&#xb2c;&#xb47;&#xb30;&#xb47; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#xb15;&#xb3f;&#xb2e;&#xb4d;&#xb2c;&#xb3e; &#xb0f;&#xb39;&#xb3f; &#xb2a;&#xb43;&#xb37;&#xb4d;&#xb20;&#xb3e;&#xb15;&#xb41; &#xb38;&#xb2e;&#xb4d;&#xb2a;&#xb3e;&#xb26;&#xb28; &#xb15;&#xb30;&#xb3f; &#xb0f;&#xb39;&#xb3e; &#xb38;&#xb39;&#xb3f;&#xb24; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c; &#x964; &#xb38;&#xb2e;&#xb38;&#xb4d;&#xb24; &#xb2a;&#xb3e;&#xb20; &#xb17;&#xb41;&#xb21;&#xb3f;&#xb15; GNU &#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb26;&#xb32;&#xb3f;&#xb32;&#xb15;&#xb30;&#xb23; &#xb32;&#xb3e;&#xb07;&#xb38;&#xb47;&#xb28;&#xb4d;&#xb38;&#xb30; &#xb38;&#xb30;&#xb4d;&#xb24;&#xb4d;&#xb24; &#xb05;&#xb27;&#xb40;&#xb28;&#xb30;&#xb47; &#xb09;&#xb2a;&#xb32;&#xb2c;&#xb4d;&#xb27; &#x964; &#xb24;&#xb25;&#xb3e;&#xb2a;&#xb3f;, &#xb06;&#xb2a;&#xb23; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb2d;&#xb3e;&#xb2c;&#xb47;&#xb30; &#xb07;&#xb32;&#xb47;&#xb15;&#xb4d;&#xb1f;&#xb4d;&#xb30;&#xb4b;&#xb28;&#xb3f;&#xb15;&#xb4d;&#xb38; &#xb2a;&#xb4d;&#xb30;&#xb3f;&#xb23;&#xb4d;&#xb1f;&#xb4d; &#xb15;&#xb3f;&#xb2e;&#xb4d;&#xb2c;&#xb3e; &#xb05;&#xb28;&#xb4d;&#xb5f;&#xb3e;&#xb28;&#xb4d;&#xb5f; &#xb2a;&#xb4d;&#xb30;&#xb3f;&#xb23;&#xb4d;&#xb1f;&#xb30; &#xb2e;&#xb3e;&#xb27;&#xb4d;&#xb5f;&#xb2e;&#xb30;&#xb47; &#xb2c;&#xb4d;&#xb5f;&#xb2c;&#xb39;&#xb3e;&#xb30; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c; &#x964;
+<br />
+
+&#xb13;&#xb21;&#xb3c;&#xb3f;&#xb06; &#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06;&#xb30;&#xb47; &#xb0f; &#xb2a;&#xb30;&#xb4d;&#xb2f;&#xb4d;&#xb5f;&#xb28;&#xb4d;&#xb24; &#xb6b;&#xb6b;&#xb69;&#xb1f;&#xb3f; &#xb2a;&#xb4d;&#xb30;&#xb38;&#xb19;&#xb4d;&#xb17; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb30;&#xb3e;&#xb2f;&#xb3e;&#xb07;&#xb1b;&#xb3f;&#x964;
+<br />
+
+&#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06;&#xb30; &#xb13;&#xb21;&#xb3c;&#xb3f;&#xb06; &#xb38;&#xb02;&#xb38;&#xb4d;&#xb15;&#xb30;&#xb23;&#xb30; &#xb15;&#xb3e;&#xb30;&#xb4d;&#xb2f;&#xb4d;&#xb5f; &#xb2a;&#xb4d;&#xb30;&#xb25;&#xb2e; &#xb25;&#xb30; &#xb2a;&#xb3e;&#xb07;&#xb01; &#xb68;&#xb66;&#xb66;&#xb6a; &#xb2e;&#xb38;&#xb3f;&#xb39;&#xb3e;&#xb30;&#xb47; &#xb2a;&#xb4d;&#xb30;&#xb3e;&#xb30;&#xb2e;&#xb4d;&#xb2d; &#xb39;&#xb4b;&#xb07;&#xb25;&#xb3f;&#xb32;&#xb3e; &#xb0f;&#xb39;&#xb3e; &#xb0f;&#xb2c;&#xb47; &#xb2e;&#xb27;&#xb4d;&#xb5f; &#xb28;&#xb3f;&#xb30;&#xb4d;&#xb2e;&#xb3e;&#xb23;&#xb27;&#xb40;&#xb28; &#x964; &#xb06;&#xb2e;&#xb47; &#xb0f;&#xb39;&#xb3e; &#xb06;&#xb36;&#xb3e; &#xb15;&#xb30;&#xb41;&#xb1b;&#xb41; &#xb2f;&#xb47; &#xb2c;&#xb4d;&#xb5f;&#xb2c;&#xb3e;&#xb39;&#xb3e;&#xb30;&#xb15;&#xb3e;&#xb30;&#xb40; &#xb2e;&#xb3e;&#xb28;&#xb47; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb38;&#xb2e;&#xb43;&#xb26;&#xb4d;&#xb27; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#x964; &#xb13;&#xb21;&#xb3c;&#xb3f;&#xb06; &#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06;&#xb30;&#xb47; &#xb06;&#xb2a;&#xb23; &#xb15;&#xb3f;&#xb1b;&#xb3f; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb3f;&#xb2e;&#xb4d;&#xb2c;&#xb3e; &#xb38;&#xb2e;&#xb4d;&#xb2a;&#xb3e;&#xb26;&#xb28;&#xb3e; &#xb15;&#xb30;&#xb3f;&#xb2c;&#xb3e; &#xb2a;&#xb3e;&#xb07;&#xb01; &#xb1a;&#xb3e;&#xb39;&#xb3f;&#xb01;&#xb32;&#xb47;, &#xb38;&#xb30;&#xb4d;&#xb2c; &#xb2a;&#xb4d;&#xb30;&#xb25;&#xb2e;&#xb47; &#xb06;&#xb2a;&#xb23;&#xb19;&#xb4d;&#xb15; &#xb28;&#xb3f;&#xb15;&#xb1f;&#xb30;&#xb47; &#xb17;&#xb4b;&#xb1f;&#xb3f;&#xb0f; &#xb5f;&#xb41;&#xb28;&#xb3f;&#xb15;&#xb4b;&#xb21;&#xb4d; &#xb2d;&#xb3f;&#xb24;&#xb4d;&#xb24;&#xb3f;&#xb15; &#xb13;&#xb21;&#xb3c;&#xb3f;&#xb06; &#xb05;&#xb28;&#xb4d;&#xb24;&#xb30;&#xb3e; &#xb2a;&#xb43;&#xb37;&#xb4d;&#xb20; &#xb25;&#xb3f;&#xb2c;&#xb3e; &#xb09;&#xb1a;&#xb3f;&#xb24;&#xb4d; &#x964; &#xb0f;&#xb39;&#xb3e; &#xb2e;&#xb41;&#xb15;&#xb4d;&#xb24; &#xb38;&#xb19;&#xb4d;&#xb15;&#xb47;&#xb24; &#xb39;&#xb4b;&#xb07;&#xb25;&#xb3f;&#xb2c;&#xb3e;&#xb30;&#xb41; &#xb0f;&#xb39;&#xb3e;&#xb15;&#xb41; &#xb06;&#xb2a;&#xb23; &#xb07;&#xb23;&#xb4d;&#xb1f;&#xb30;&#xb28;&#xb47;&#xb1f;&#xb30;&#xb41; &#xb2e;&#xb3e;&#xb17;&#xb23;&#xb3e;&#xb30;&#xb47; &#xb2a;&#xb3e;&#xb07;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#x964; &#xb06;&#xb2a;&#xb23; &#xb07;&#xb02;&#xb30;&#xb3e;&#xb1c;&#xb40; &#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06;&#xb15;&#xb41; &#xb05;&#xb28;&#xb41;&#xb2c;&#xb3e;&#xb26; &#xb15;&#xb30;&#xb3f; &#xb15;&#xb3f;&#xb2e;&#xb4d;&#xb2c;&#xb3e; &#xb28;&#xb3f;&#xb15;&#xb1f; &#xb05;&#xb24;&#xb40;&#xb24;&#xb30;&#xb47; &#xb39;&#xb4b;&#xb07;&#xb25;&#xb3f;&#xb2c;&#xb3e; &#xb17;&#xb41;&#xb30;&#xb41;&#xb24;&#xb4d;&#xb35;&#xb2a;&#xb42;&#xb30;&#xb4d;&#xb23;&#xb4d;&#xb23; &#xb18;&#xb1f;&#xb23;&#xb3e; &#xb2e;&#xb3e;&#xb28;&#xb19;&#xb4d;&#xb15;&#xb41; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb30;&#xb3f;, &#xb13;&#xb21;&#xb3c;&#xb3f;&#xb06; &#xb71;&#xb3f;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06;&#xb15;&#xb41; &#xb38;&#xb2e;&#xb43;&#xb26;&#xb4d;&#xb27; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c; &#x964; &#xb15;&#xb4c;&#xb23;&#xb38;&#xb3f; &#xb28;&#xb42;&#xb24;&#xb28; &#xb2a;&#xb3e;&#xb20;&#xb4d;&#xb5f; &#xb2f;&#xb4b;&#xb17; &#xb15;&#xb30;&#xb3f;&#xb2c;&#xb3e; &#xb2a;&#xb42;&#xb30;&#xb4d;&#xb2c;&#xb30;&#xb41; &#xb06;&#xb2a;&#xb23;&#xb19;&#xb4d;&#xb15;&#xb41; &#xb0f;&#xb39;&#xb3e; &#xb27;&#xb4d;&#xb5f;&#xb3e;&#xb28; &#xb30;&#xb16;&#xb3f;&#xb2c;&#xb3e; &#xb2a;&#xb3e;&#xb07;&#xb01; &#xb39;&#xb47;&#xb2c; &#xb2f;&#xb47;, &#xb0f;&#xb39;&#xb3f; &#xb2a;&#xb43;&#xb37;&#xb4d;&#xb20;&#xb3e;&#xb30;&#xb47; &#xb05;&#xb28;&#xb4d;&#xb5f; &#xb2c;&#xb4d;&#xb5f;&#xb2c;&#xb3e;&#xb39;&#xb3e;&#xb30;&#xb15;&#xb3e;&#xb30;&#xb40; &#xb2e;&#xb3e;&#xb28;&#xb19;&#xb4d;&#xb15; &#xb2a;&#xb3e;&#xb07;&#xb01; &#xb38;&#xb2e;&#xb4d;&#xb2a;&#xb3e;&#xb26;&#xb28;&#xb30; &#xb38;&#xb41;&#xb2f;&#xb4b;&#xb17; &#xb30;&#xb39;&#xb3f;&#xb2c;&#xb3e; &#xb09;&#xb1a;&#xb3f;&#xb24; &#x964; &#xb15;&#xb4c;&#xb23;&#xb38;&#xb3f; &#xb2c;&#xb3f;&#xb37;&#xb5f;&#xb2c;&#xb38;&#xb4d;&#xb24;&#xb41;&#xb30; &#xb38;&#xb4d;&#xb2c;&#xb24;&#xb03; &#xb38;&#xb02;&#xb30;&#xb15;&#xb4d;&#xb37;&#xb23; &#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06;&#xb30; &#xb28;&#xb3f;&#xb5f;&#xb2e;&#xb15;&#xb41; &#xb05;&#xb2c;&#xb2e;&#xb3e;&#xb28;&#xb28;&#xb3e; &#xb15;&#xb30;&#xb3f;&#xb25;&#xb3e;&#xb0f; &#x964; &#xb2c;&#xb4d;&#xb5f;&#xb2c;&#xb3e;&#xb39;&#xb3e;&#xb30;&#xb15;&#xb3e;&#xb30;&#xb40; &#xb2e;&#xb3e;&#xb28;&#xb47; &#xb15;&#xb47;&#xb2c;&#xb33; &#xb24;&#xb3e;&#xb19;&#xb4d;&#xb15;&#xb30; &#xb28;&#xb3f;&#xb1c; &#xb32;&#xb47;&#xb16;&#xb3e;&#xb15;&#xb41; &#xb38;&#xb2e;&#xb4d;&#xb2a;&#xb3e;&#xb26;&#xb28; &#xb15;&#xb30;&#xb3f;&#xb2a;&#xb3e;&#xb30;&#xb3f;&#xb2c;&#xb47; &#x964; &#xb09;&#xb07;&#xb15;&#xb3f;&#xb2a;&#xb47;&#xb21;&#xb3f;&#xb06;&#xb30; &#xb28;&#xb3f;&#xb5f;&#xb2e;, &#xb15;&#xb30;&#xb4d;&#xb2e; &#xb2a;&#xb26;&#xb4d;&#xb27;&#xb24;&#xb3f; &#xb0f;&#xb2c;&#xb02; &#xb05;&#xb28;&#xb4d;&#xb5f;&#xb3e;&#xb28;&#xb4d;&#xb5f; &#xb38;&#xb42;&#xb1a;&#xb28;&#xb3e; &#xb2a;&#xb3e;&#xb07;&#xb01; Wikipedia:&#xb06;&#xb32;&#xb4b;&#xb1a;&#xb28;&#xb3e; &#xb38;&#xb2d;&#xb3e;-- &#xb15;&#xb41; &#xb2f;&#xb3e;&#xb07; &#xb06;&#xb32;&#xb4b;&#xb1a;&#xb28;&#xb3e; &#xb15;&#xb30;&#xb28;&#xb4d;&#xb24;&#xb41;&#x964;
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0B66;&#x0B67;&#x0B68;&#x0B69;&#x0B6A;&#x0B6B;&#x0B6C;&#x0B6D;&#x0B6E;&#x0B6F;
+</p>
+
+<h3 style=\"font-family:ind_pa_1_001\">Punjabi</h3>
+<p style=\"font-family:ind_pa_1_001\">&#xa15;&#xa47;&#xa02;&#xa26;&#xa30;&#xa40; &#xa17;&#xa4d;&#xa30;&#xa39;&#xa3f;&#xa2e;&#xa70;&#xa24;&#xa30;&#xa40; &#xa2a;&#xa40;.&#xa1a;&#xa3f;&#xa26;&#xa70;&#xa2c;&#xa30;&#xa2e; &#xa28;&#xa47; &#xa10;&#xa24;&#xa35;&#xa3e;&#xa30; &#xa28;&#xa42;&#xa70; &#xa24;&#xa2e;&#xa3f;&#xa32;&#xa28;&#xa3e;&#xa22;&#xa42; &#xa26;&#xa47; &#xa2e;&#xa41;&#xa71;&#xa16;&#xa2e;&#xa70;&#xa24;&#xa30;&#xa40; &#xa10;&#xa2e;.&#xa15;&#xa30;&#xa41;&#xa23;&#xa3e;&#xa28;&#xa3f;&#xa27;&#xa40; &#xa28;&#xa3e;&#xa32; &#xa2e;&#xa41;&#xa32;&#xa3e;&#xa15;&#xa3e;&#xa24; &#xa15;&#xa40;&#xa24;&#xa40;&#x964;&#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa28;&#xa47; &#xa36;&#xa4d;&#xa30;&#xa40;&#xa32;&#xa70;&#xa15;&#xa3e; '&#xa1a; &#xa32;&#xa3f;&#xa71;&#xa1f;&#xa47; &#xa26;&#xa47; &#xa16;&#xa3f;&#xa32;&#xa3e;&#xa5e; &#xa2f;&#xa41;&#xa71;&#xa27; &#xa26;&#xa4c;&#xa30;&#xa3e;&#xa28; &#xa09;&#xa71;&#xa1d;&#xa5c;&#xa47; &#xa39;&#xa4b;&#xa0f; &#xa32;&#xa71;&#xa17;&#xa2d;&#xa17; &#xa22;&#xa3e;&#xa08; &#xa32;&#xa71;&#xa16; &#xa24;&#xa2e;&#xa3f;&#xa32;&#xa3e;&#xa02; &#xa26;&#xa40; &#xa2e;&#xa41;&#xa5c; &#xa30;&#xa3f;&#xa39;&#xa3e;&#xa07;&#xa36; '&#xa24;&#xa47; &#xa1a;&#xa30;&#xa1a;&#xa3e; &#xa15;&#xa40;&#xa24;&#xa40;&#x964;
+<br />
+
+&#xa26;&#xa4d;&#xa30;&#xa2e;&#xa41;&#xa15; &#xa28;&#xa47;&#xa24;&#xa3e; &#xa26;&#xa47; &#xa28;&#xa3e;&#xa32; &#xa38;&#xa70;&#xa16;&#xa47;&#xa2a; &#xa2e;&#xa41;&#xa32;&#xa3e;&#xa15;&#xa3e;&#xa24; &#xa2c;&#xa3e;&#xa05;&#xa26; &#xa1a;&#xa3f;&#xa26;&#xa70;&#xa2c;&#xa30;&#xa2e; &#xa28;&#xa47; &#xa15;&#xa3f;&#xa39;&#xa3e; &#xa39;&#xa48; &#xa15;&#xa3f; &#xa15;&#xa47;&#xa02;&#xa26;&#xa30; &#xa24;&#xa2e;&#xa3f;&#xa32;&#xa3e;&#xa02; &#xa26;&#xa40; &#xa2e;&#xa41;&#xa5c; &#xa30;&#xa3f;&#xa39;&#xa3e;&#xa07;&#xa36; &#xa32;&#xa08; &#xa1c;&#xa30;&#xa42;&#xa30;&#xa24; &#xa2a;&#xa48;&#xa23; '&#xa24;&#xa47; &#xa36;&#xa4d;&#xa30;&#xa40;&#xa32;&#xa70;&#xa15;&#xa3e; &#xa28;&#xa42;&#xa70; &#xa39;&#xa4b;&#xa30; &#xa5b;&#xa3f;&#xa06;&#xa26;&#xa3e; &#xa27;&#xa28; &#xa26;&#xa47;&#xa35;&#xa47;&#xa17;&#xa3e;&#x964;&#xa05;&#xa38;&#xa40;&#xa02; &#xa2a;&#xa39;&#xa3f;&#xa32;&#xa3e; &#xa39;&#xa40; 500 &#xa15;&#xa30;&#xa4b;&#xa5c; &#xa30;&#xa41;&#xa71;&#xa2a;&#xa0f; &#xa26;&#xa47; &#xa1a;&#xa41;&#xa71;&#xa15;&#xa47; &#xa39;&#xa3e;&#xa02;&#x964;
+<br />
+
+&#xa1a;&#xa3f;&#xa26;&#xa70;&#xa2c;&#xa30;&#xa2e; &#xa28;&#xa47; &#xa15;&#xa3f;&#xa39;&#xa3e; &#xa39;&#xa48; &#xa15;&#xa3f; &#xa15;&#xa30;&#xa41;&#xa23;&#xa3e;&#xa28;&#xa3f;&#xa27;&#xa40; &#xa26;&#xa47; &#xa28;&#xa3e;&#xa32; &#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa26;&#xa40; &#xa1a;&#xa30;&#xa1a;&#xa3e; &#xa2a;&#xa3f;&#xa71;&#xa1b;&#xa32;&#xa47; &#xa39;&#xa5e;&#xa24;&#xa47; &#xa26;&#xa38; &#xa38;&#xa3e;&#xa02;&#xa38;&#xa26;&#xa3e;&#xa02; &#xa26;&#xa47; &#xa2a;&#xa4d;&#xa30;&#xa24;&#xa3f;&#xa28;&#xa3f;&#xa27;&#xa40;&#xa2e;&#xa70;&#xa21;&#xa32; &#xa26;&#xa47; &#xa36;&#xa4d;&#xa30;&#xa40;&#xa32;&#xa70;&#xa15;&#xa3e; &#xa26;&#xa4c;&#xa30;&#xa47; '&#xa24;&#xa47; &#xa15;&#xa47;&#xa02;&#xa26;&#xa30;&#xa24; &#xa38;&#xa40;,&#xa1c;&#xa4b; &#xa1c;&#xa3e;&#xa24;&#xa40; &#xa24;&#xa2e;&#xa3f;&#xa32;&#xa3e; &#xa28;&#xa42;&#xa70; &#xa2e;&#xa3f;&#xa32;&#xa40; &#xa05;&#xa24;&#xa47; &#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa26;&#xa40; &#xa26;&#xa36;&#xa3e; &#xa2c;&#xa3e;&#xa30;&#xa47; &#xa1c;&#xa3e;&#xa23;&#xa3f;&#xa06;&#x964;
+<br />
+
+&#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa28;&#xa47; &#xa15;&#xa3f;&#xa39;&#xa3e; &#xa15;&#xa3f; &#xa36;&#xa4d;&#xa30;&#xa40;&#xa32;&#xa15;&#xa3e; &#xa26;&#xa47; &#xa24;&#xa2e;&#xa3f;&#xa32;&#xa3e;&#xa02; &#xa28;&#xa42;&#xa70; &#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa26;&#xa47; &#xa2e;&#xa42;&#xa32; &#xa38;&#xa25;&#xa3e;&#xa28;&#xa3e;&#xa02; '&#xa24;&#xa47; &#xa2c;&#xa38;&#xa3e;&#xa09;&#xa23; &#xa26;&#xa47; &#xa24;&#xa4c;&#xa30; &#xa24;&#xa30;&#xa40;&#xa15;&#xa3f;&#xa06;&#xa02; '&#xa24;&#xa47; &#xa1a;&#xa30;&#xa1a;&#xa3e; &#xa39;&#xa4b;&#xa08; &#xa05;&#xa24;&#xa47; &#xa38;&#xa3e;&#xa02;&#xa38;&#xa26;&#xa3e; &#xa26;&#xa40; &#xa1f;&#xa40;&#xa2e; &#xa28;&#xa42;&#xa70; &#xa26;&#xa3f;&#xa71;&#xa24;&#xa47; &#xa2d;&#xa30;&#xa4b;&#xa38;&#xa47; &#xa2c;&#xa3e;&#xa05;&#xa26; &#xa15;&#xa4b;&#xa32;&#xa70;&#xa2c;&#xa4b; &#xa26;&#xa41;&#xa06;&#xa30;&#xa3e; &#xa2a;&#xa3f;&#xa71;&#xa1b;&#xa32;&#xa47; &#xa39;&#xa5e;&#xa24;&#xa47; &#xa2e;&#xa41;&#xa5c; &#xa30;&#xa3f;&#xa39;&#xa3e;&#xa07;&#xa36; &#xa2a;&#xa4d;&#xa30;&#xa15;&#xa4d;&#xa30;&#xa3f;&#xa06; &#xa36;&#xa41;&#xa30;&#xa42; &#xa15;&#xa40;&#xa24;&#xa47; &#xa1c;&#xa3e;&#xa23; &#xa2c;&#xa3e;&#xa05;&#xa26; &#xa24;&#xa4b;&#xa02; &#xa32;&#xa71;&#xa17;&#xa2d;&#xa17; &#xa2a;&#xa70;&#xa1c; &#xa39;&#xa5b;&#xa3e;&#xa30; &#xa32;&#xa4b;&#xa15;&#xa3e;&#xa02; &#xa28;&#xa42;&#xa70; &#xa09;&#xa28;&#xa4d;&#xa39;&#xa3e; &#xa26;&#xa47; &#xa18;&#xa30;&#xa3e;&#xa02; &#xa28;&#xa42;&#xa70; &#xa35;&#xa3e;&#xa2a;&#xa38; &#xa2d;&#xa47;&#xa1c;&#xa3f;&#xa06; &#xa1c;&#xa3e; &#xa1a;&#xa41;&#xa71;&#xa15;&#xa3f;&#xa06; &#xa39;&#xa48;&#x964;&#xa1a;&#xa3f;&#xa26;&#xa70;&#xa2c;&#xa30;&#xa2e; &#xa28;&#xa47; &#xa15;&#xa3f;&#xa39;&#xa3e; &#xa39;&#xa48; &#xa15;&#xa3f; &#xa39;&#xa3e;&#xa32;&#xa3e;&#xa02;&#xa15;&#xa3f; &#xa2a;&#xa4d;&#xa30;&#xa15;&#xa4d;&#xa30;&#xa3f;&#xa06; &#xa27;&#xa40;&#xa2e;&#xa40; &#xa39;&#xa48;,&#xa32;&#xa47;&#xa15;&#xa3f;&#xa28; &#xa17;&#xa24;&#xa40; &#xa2a;&#xa15;&#xa5c; &#xa32;&#xa35;&#xa47;&#xa17;&#xa40;&#x964;
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0A66;&#x0A67;&#x0A68;&#x0A69;&#x0A6A;&#x0A6B;&#x0A6C;&#x0A6D;&#x0A6E;&#x0A6F;
+
+</p>
+
+<h3 style=\"font-family:ind_gu_1_001\">Gujarati (gu)</h3>
+<p style=\"font-family:ind_gu_1_001\">Examples at: http://in.gujarati.yahoo.com/</p>
+<p style=\"font-family:ind_gu_1_001\">http://gujarati.webdunia.com/entertainment/bollywood/filmreview/0910/17/1091017017_1.htm</p>
+<p style=\"font-family:ind_gu_1_001\">
+&#xa86; &#xab5;&#xabe;&#xaa4; &#xab9;&#xa9c;&#xabe;&#xab0; &#xab5;&#xabe;&#xab0; &#xa95;&#xab9;&#xac7;&#xab5;&#xabe;&#xaae;&#xabe;&#xa82; &#xa86;&#xab5;&#xac0; &#xa9b;&#xac7; &#xa95;&#xac7; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae; &#xaac;&#xaa8;&#xabe;&#xab5;&#xaa4;&#xac0; &#xab5;&#xa96;&#xac7;&#xaa4; &#xab9;&#xa82;&#xaae;&#xac7;&#xab6;&#xabe; &#xab8;&#xacc;&#xaa5;&#xac0; &#xab5;&#xaa7;&#xac1; &#xaa7;&#xacd;&#xaaf;&#xabe;&#xaa8; &#xab5;&#xabe;&#xab0;&#xacd;&#xaa4;&#xabe; &#xa85;&#xaa8;&#xac7; &#xab8;&#xacd;&#xa95;&#xacd;&#xab0;&#xac0;&#xaa8;&#xaaa;&#xacd;&#xab2;&#xac7; &#xaaa;&#xab0; &#xa86;&#xaaa;&#xab5;&#xac1; &#xa9c;&#xacb;&#xa88;&#xa8f;. &#xa95;&#xabe;&#xab0;&#xaa3; &#xa95;&#xac7; &#xa86; &#xa95;&#xacb;&#xa88; &#xaaa;&#xaa3; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae;&#xaa8;&#xac0; &#xab8;&#xaab;&#xab3;&#xaa4;&#xabe;&#xaa8;&#xacb; &#xaae;&#xac1;&#xa96;&#xacd;&#xaaf; &#xa86;&#xaa7;&#xabe;&#xab0; &#xab9;&#xacb;&#xaaf; &#xa9b;&#xac7;.
+<br />
+&#xaae;&#xacb;&#xa9f;&#xabe; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae; &#xab8;&#xacd;&#xa9f;&#xabe;&#xab0;&#xacd;&#xab8; &#xab8;&#xabe;&#xa88;&#xaa8; &#xa95;&#xab0;&#xab5;&#xabe;&#xaa5;&#xac0;, &#xab8;&#xacd;&#xa9f;&#xa82;&#xa9f; &#xa85;&#xaa8;&#xac7; &#xa97;&#xac0;&#xaa4;&#xacb;&#xaa5;&#xac0; &#xaaa;&#xabe;&#xaa3;&#xac0;&#xaa8;&#xac0; &#xa85;&#xa82;&#xaa6;&#xab0; &#xa95;&#xac7; &#xa86;&#xa95;&#xabe;&#xab6;&#xaae;&#xabe;&#xa82; &#xa95;&#xab0;&#xacb;&#xaa1;&#xacb; &#xab0;&#xac2;&#xaaa;&#xabf;&#xaaf;&#xabe; &#xa96;&#xab0;&#xacd;&#xa9a; &#xa95;&#xab0;&#xac0; &#xaab;&#xabf;&#xab2;&#xacd;&#xaae;&#xabe;&#xab5;&#xac7;&#xab2;&#xabe; &#xaa6;&#xacd;&#xab0;&#xab6;&#xacd;&#xaaf;&#xacb;&#xaa5;&#xac0; &#xa95;&#xab6;&#xac1; &#xa9c; &#xaa8;&#xaa5;&#xac0; &#xaa5;&#xaa4;&#xac1;. &#xaaa;&#xab0;&#xa82;&#xaa4;&#xac1; &#xa86; &#xaac;&#xac1;&#xaa8;&#xabf;&#xaaf;&#xabe;&#xaa6;&#xac0; &#xab5;&#xabe;&#xaa4; &#xa85;&#xaa4;&#xacd;&#xaaf;&#xabe;&#xab0; &#xab8;&#xac1;&#xaa7;&#xac0; &#xa95;&#xacb;&#xa88; &#xab2;&#xacb;&#xa95;&#xacb;&#xaa8;&#xac7; &#xab8;&#xaae;&#xa9c;&#xabe;&#xaa4;&#xac0; &#xaa8;&#xaa5;&#xac0;.
+<br />
+
+&#xa95;&#xab0;&#xacb;&#xaa1;&#xacb; &#xab0;&#xac2;&#xaaa;&#xabf;&#xaaf;&#xabe;&#xaa8;&#xabe; &#xa96;&#xab0;&#xacd;&#xa9a; &#xaaa;&#xab0; &#xaac;&#xaa8;&#xabe;&#xab5;&#xac7;&#xab2; '&#xaac;&#xacd;&#xab2;&#xac2;' &#xa86;&#xaa8;&#xac1; &#xaa4;&#xabe;&#xa9c;&#xac1; &#xa89;&#xaa6;&#xabe;&#xab9;&#xab0;&#xaa3; &#xa9b;&#xac7;. &#xaaa;&#xac8;&#xab8;&#xabe; &#xa8f;&#xaa8;&#xabe; &#xaaa;&#xab0; &#xa96;&#xab0;&#xacd;&#xa9a; &#xa95;&#xab0;&#xab5;&#xabe;&#xaae;&#xabe;&#xa82; &#xa86;&#xab5;&#xac7; &#xa9c;&#xacd;&#xaaf;&#xabe; &#xaac;&#xa9a;&#xabe;&#xab5;&#xac0; &#xab6;&#xa95;&#xabe;&#xaa4;&#xacb; &#xab9;&#xaa4;&#xacb; &#xa85;&#xaa8;&#xac7; &#xaa4;&#xacd;&#xaaf;&#xabe;&#xa82; &#xaac;&#xa9a;&#xabe;&#xab5;&#xacd;&#xaaf;&#xacb; &#xa9c;&#xacd;&#xaaf;&#xabe; &#xa96;&#xab0;&#xacd;&#xa9a; &#xa95;&#xab0;&#xab5;&#xacb; &#xa9c;&#xacb;&#xa88;&#xaa4;&#xacb; &#xab9;&#xaa4;&#xacb;. &#xa8f;&#xa95; &#xab8;&#xabe;&#xab0;&#xac0; &#xab5;&#xabe;&#xab0;&#xacd;&#xaa4;&#xabe; &#xaa4;&#xac7;&#xaa8;&#xac0; &#xab8;&#xabe;&#xaa5;&#xac7; &#xab8;&#xa82;&#xa95;&#xab3;&#xabe;&#xaaf;&#xac7;&#xab2;&#xabe; &#xaa8;&#xabf;&#xab0;&#xacd;&#xaae;&#xabe;&#xaa4;&#xabe;-&#xaa8;&#xabf;&#xab0;&#xacd;&#xaa6;&#xac7;&#xab6;&#xa95; &#xaa8; &#xab6;&#xacb;&#xaa7;&#xac0; &#xab6;&#xa95;&#xacd;&#xaaf;&#xabe;.
+<br />
+
+&#xab5;&#xab0;&#xacd;&#xab7;&#xacb; &#xaaa;&#xab9;&#xac7;&#xab2;&#xabe; &#xa96;&#xa9c;&#xabe;&#xaa8;&#xabe;&#xaa5;&#xac0; &#xab2;&#xaa6;&#xabe;&#xaaf;&#xac7;&#xab2;&#xac1; &#xa8f;&#xa95; &#xa9c;&#xab9;&#xabe;&#xa9c; &#xaa1;&#xac2;&#xaac;&#xac0; &#xa97;&#xaaf;&#xac1; &#xab9;&#xaa4;&#xac1;. &#xa86;&#xab0;&#xab5; (&#xa85;&#xa95;&#xacd;&#xab7;&#xaaf; &#xa95;&#xac1;&#xaae;&#xabe;&#xab0;)&#xaa4;&#xac7;&#xaa8;&#xac7; &#xab6;&#xacb;&#xaa7;&#xac0;&#xaa8;&#xac7; &#xab6;&#xacd;&#xab0;&#xac0;&#xaae;&#xa82;&#xaa4; &#xaac;&#xaa8;&#xab5;&#xabe; &#xaae;&#xabe;&#xa82;&#xa97;&#xac7; &#xa9b;&#xac7;. &#xa86; &#xa95;&#xabe;&#xaae;&#xaae;&#xabe;&#xa82; &#xaa4;&#xac7;&#xaa8;&#xac7; &#xab8;&#xabe;&#xa97;&#xab0; (&#xab8;&#xa82;&#xa9c;&#xaaf; &#xaa6;&#xaa4;&#xacd;&#xaa4;)&#xaa8;&#xac0; &#xaae;&#xaa6;&#xaa6; &#xa9c;&#xacb;&#xa88;&#xa8f;, &#xa9c;&#xac7; &#xaa4;&#xac7;&#xaa8;&#xac7; &#xaae;&#xabe;&#xaa4;&#xac7; &#xa95;&#xabe;&#xaae; &#xa95;&#xab0;&#xac7; &#xa9b;&#xac7;. &#xab8;&#xabe;&#xa97;&#xab0; &#xa8f; &#xaae;&#xabe;&#xa9f;&#xac7; &#xaa4;&#xac8;&#xaaf;&#xabe;&#xab0; &#xaa8;&#xaa5;&#xac0;. &#xaac;&#xabe;&#xab3;&#xaaa;&#xaa3;&#xaae;&#xabe;&#xa82; &#xab8;&#xabe;&#xa97;&#xab0; &#xa85;&#xaa8;&#xac7; &#xaa4;&#xac7;&#xaa8;&#xabe; &#xaaa;&#xabf;&#xaa4;&#xabe;&#xa8f; &#xa8f; &#xaa1;&#xac2;&#xaac;&#xac7;&#xab2;&#xabe; &#xa9c;&#xab9;&#xabe;&#xa9c;&#xaa8;&#xac7; &#xab6;&#xacb;&#xaa7;&#xac0; &#xab2;&#xac0;&#xaa7;&#xac1; &#xab9;&#xaa4;&#xac1;, &#xaaa;&#xab0;&#xa82;&#xaa4;&#xac1; &#xab8;&#xabe;&#xa97;&#xab0;&#xaa8;&#xac0; &#xaad;&#xac2;&#xab2;&#xaa5;&#xac0; &#xaa4;&#xac7;&#xaa8;&#xabe; &#xaaa;&#xabf;&#xaa4;&#xabe;&#xaa8;&#xac1; &#xaae;&#xac3;&#xaa4;&#xacd;&#xaaf;&#xac1; &#xaa5;&#xa88; &#xa97;&#xaaf;&#xac1; &#xab9;&#xaa4;&#xac1;. &#xab8;&#xabe;&#xa97;&#xab0; &#xa8f; &#xa86;&#xaa7;&#xabe;&#xaa4;&#xaa5;&#xac0; &#xaac;&#xab9;&#xabe;&#xab0; &#xaa8; &#xa86;&#xab5;&#xac0; &#xab6;&#xa95;&#xacd;&#xaaf;&#xacb;. &#xab8;&#xabe;&#xa97;&#xab0;&#xaa8;&#xacb; &#xa8f;&#xa95; &#xaad;&#xabe;&#xa88; &#xab8;&#xac8;&#xaae;(&#xa9c;&#xabe;&#xaaf;&#xaa6; &#xa96;&#xabe;&#xaa8;) &#xa9b;&#xac7;, &#xa9c;&#xac7;&#xaa8;&#xac7; &#xab0;&#xabf;&#xab8;&#xacd;&#xa95; &#xab2;&#xac7;&#xab5;&#xabe;&#xaa8;&#xacb; &#xaa8;&#xab6;&#xacb; &#xa9b;&#xac7;. &#xa97;&#xac7;&#xab0;&#xa95;&#xabe;&#xaaf;&#xaa6;&#xac7;&#xab8;&#xab0; &#xa95;&#xabe;&#xaae; &#xaa6;&#xab0;&#xaae;&#xabf;&#xaaf;&#xabe;&#xaa8; &#xa8f; &#xaab;&#xa82;&#xab8;&#xabe;&#xaaf; &#xa9c;&#xabe;&#xaaf; &#xa9b;&#xac7; &#xa85;&#xaa8;&#xac7; &#xa95;&#xac7;&#xa9f;&#xab2;&#xabe;&#xa95; &#xab2;&#xacb;&#xa95;&#xacb; &#xaa4;&#xac7;&#xaa8;&#xabe; &#xa9c;&#xac0;&#xab5;&#xaa8;&#xabe; &#xaa6;&#xac1;&#xab6;&#xacd;&#xaae;&#xaa8; &#xaac;&#xaa8;&#xac0; &#xa9c;&#xabe;&#xaaf; &#xa9b;&#xac7;. &#xaa4;&#xac7;&#xa93; &#xaa4;&#xac7;&#xaa8;&#xac0; &#xaaa;&#xabe;&#xab8;&#xac7; &#xaaa;&#xac8;&#xab8;&#xabe; &#xaae;&#xabe;&#xa82;&#xa97;&#xac7; &#xa9b;&#xac7;. &#xaaa;&#xacb;&#xaa4;&#xabe;&#xaa8;&#xabe; &#xaad;&#xabe;&#xa88;&#xaa8;&#xac7; &#xaae;&#xac1;&#xab8;&#xac0;&#xaac;&#xaa4;&#xaae;&#xabe;&#xa82; &#xa9c;&#xacb;&#xa88;&#xa8f; &#xa86;&#xab0;&#xab5;&#xaa8;&#xac0; &#xab5;&#xabe;&#xaa4; &#xab8;&#xabe;&#xa97;&#xab0; &#xaae;&#xabe;&#xaa8;&#xac0; &#xab2;&#xac7; &#xa9b;&#xac7; &#xa85;&#xaa8;&#xac7; &#xaa4;&#xac7; &#xa8f; &#xa9b;&#xac1;&#xaaa;&#xabe; &#xa96;&#xa9c;&#xabe;&#xaa8;&#xabe;&#xaa8;&#xac7; &#xab6;&#xacb;&#xaa7;&#xab5;&#xabe; &#xaa8;&#xac0;&#xa95;&#xab3;&#xac7; &#xa9b;&#xac7;. &#xa9b;&#xac7;&#xab5;&#xa9f;&#xac7; &#xa8f; &#xab0;&#xab9;&#xab8;&#xacd;&#xaaf; &#xaac;&#xab9;&#xabe;&#xab0; &#xaaa;&#xaa1;&#xac7; &#xa9b;&#xac7; &#xa95;&#xac7; &#xab8;&#xac8;&#xaae;&#xaa8;&#xac7; &#xaab;&#xab8;&#xabe;&#xab5;&#xab5;&#xabe; &#xaaa;&#xabe;&#xa9b;&#xab3; &#xa86;&#xab0;&#xab5;&#xaa8;&#xacb; &#xa9c; &#xab9;&#xabe;&#xaa5; &#xab9;&#xaa4;&#xacb;, &#xa9c;&#xac7;&#xaa5;&#xac0; &#xab8;&#xabe;&#xa97;&#xab0; &#xa96;&#xa9c;&#xabe;&#xaa8;&#xabe;&#xaa8;&#xac0; &#xab6;&#xacb;&#xaa7; &#xa95;&#xabe;&#xaa2;&#xab5;&#xabe;&#xaae;&#xabe;&#xa82; &#xaa4;&#xac7;&#xaa8;&#xac0; &#xaae;&#xaa6;&#xaa6; &#xa95;&#xab0;&#xac7;. 
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0AE6;&#x0AE7;&#x0AE8;&#x0AE9;&#x0AEA;&#x0AEB;&#x0AEC;&#x0AED;&#x0AEE;&#x0AEF;
+</p>
+
+
+<h3 style=\"font-family:ind_hi_1_001\">Hindi (hi)</h3>
+<p style=\"font-family:ind_hi_1_001\">\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa5\x80\xe0\xa4\x9a \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa3 \xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa5\x88\xe0\xa4\x9a \xe0\xa4\xa6\xe0\xa5\x8b\xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb6\xe0\xa5\x81\xe0\xa4\xb0\xe0\xa5\x81 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xa4 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x89\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa1 414 \xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xb0\xe0\xa4\x96\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88. \xe0\xa4\xac\xe0\xa4\xb0\xe0\xa4\xae\xe0\xa5\x82\xe0\xa4\xa1\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa5\x87\xe0\xa4\x9f \xe0\xa4\x96\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\xb9\xe0\xa5\x88\xe0\xa4\x82.</p>
+
+<p style=\"font-family:ind_hi_1_001\">\xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\xb8\xe0\xa5\x81\xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa5\x80\xe0\xa4\xae \xe0\xa4\x95\xe0\xa5\x8b\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x9f \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xae\xe0\xa5\x81\xe0\xa4\x96\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xa7\xe0\xa5\x80\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\x82\xe0\xa4\xac\xe0\xa4\xbf\xe0\xa4\xa4 \xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\x8f \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa7 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\x88 \xe0\xa4\x9c\xe0\xa4\x9c\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x85\xe0\xa4\xaa\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xaa\xe0\xa4\xa6 \xe0\xa4\xb8\xe0\xa5\x87 \xe0\xa4\x87\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa5\x80\xe0\xa4\xab\xe0\xa4\xbc\xe0\xa4\xbe \xe0\xa4\xa6\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xaf\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x88.</p>
+
+<p style=\"font-family:ind_hi_1_001\">\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\x98\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xb2 \xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xa4 \xe0\xa4\xae\xe0\xa4\xa7\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb0\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\xbf \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa1\xe0\xa4\xbc \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa7\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb2 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x82\xe0\xa4\xa4\xe0\xa4\xbf \xe0\xa4\x96\xe0\xa4\xa1\xe0\xa4\xbc\xe0\xa4\xbe \xe0\xa4\xa5\xe0\xa4\xbe\xe0\xa5\xa4 \xe0\xa4\x89\xe0\xa4\xb8 \xe0\xa4\xaa\xe0\xa4\xb0 \xe0\xa4\x89\xe0\xa4\x97\xe0\xa5\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\x8f \xe0\xa4\x9b\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa5\x87-\xe0\xa4\x9b\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa5\x87 \xe0\xa4\xb5\xe0\xa5\x83\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7 \xe0\xa4\x87\xe0\xa4\xb8 \xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\xa6\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa4\xbf\xe0\xa4\x97\xe0\xa5\x8b\xe0\xa4\x9a\xe0\xa4\xb0 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xa4\xe0\xa5\x87 \xe0\xa4\xa5\xe0\xa5\x87, \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa5\x8b \xe0\xa4\xaf\xe0\xa5\x87 \xe0\xa4\x89\xe0\xa4\xb8\xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\x9c\xe0\xa4\x9f\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82 \xe0\xa4\xb9\xe0\xa5\x88 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\x85\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\x9f\xe0\xa4\xad\xe0\xa5\x81\xe0\xa4\x9c\xe0\xa4\xbe \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb0 \xe0\xa4\x9c\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xb2\xe0\xa4\xb6 \xe0\xa4\xaa\xe0\xa4\xb0 \xe0\xa4\xb6\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa5\x87\xe0\xa4\xa4 \xe0\xa4\xaa\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82 \xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xaf\xe0\xa5\x81 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6-\xe0\xa4\xae\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa6 \xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\x82\xe0\xa4\x97\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\xb2\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x80 \xe0\xa4\xa5\xe0\xa5\x80\xe0\xa4\x82, \xe0\xa4\x89\xe0\xa4\xb8 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\xb5 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xb8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\x95 \xe0\xa4\xb9\xe0\xa5\x88 \xe0\xa4\xae\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa4\xbf\xe0\xa4\xb0 \xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x8f\xe0\xa4\x95 \xe0\xa4\x9d\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\xae\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\x86 \xe0\xa4\xa6\xe0\xa5\x80\xe0\xa4\xaa\xe0\xa4\x95 \xe0\xa4\xa5\xe0\xa4\xbe, \xe0\xa4\x9c\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x87 \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\x95\xe0\xa4\xb0 \xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x80 \xe0\xa4\xa7\xe0\xa5\x81\xe0\xa4\x82\xe0\xa4\xa7\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xb9\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa4\xbe \xe0\xa4\xa5\xe0\xa4\xbe\xe0\xa5\xa4
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />
+&#x0966;&#x0967;&#x0968;&#x0969;&#x096A;&#x096B;&#x096C;&#x096D;&#x096E;&#x096F;
+</p>
+
+<h3 style=\"font-family:ind_hi_1_001\">Nepali (ne) - Devanagari</h3>
+<p style=\"font-family:ind_hi_1_001\">\xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa2\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb9\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa5\x81\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa5\x88 \xe0\xa4\x86\xe0\xa4\x89\xe0\xa4\x82\xe0\xa4\xa6\xe0\xa5\x8b \xe0\xa4\x9c\xe0\xa5\x87\xe0\xa4\xa0 \xe0\xa4\xae\xe0\xa4\xb9\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xad\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5 \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x95\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xb9\xe0\xa4\xb8 \xe0\xa4\x9a\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\x95\xe0\xa5\x80\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\xb2\xe0\xa4\xbe \xe0\xa4\x9a\xe0\xa5\x81\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\xb5\xe0\xa4\x95\xe0\xa5\x88 \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb7\xe0\xa4\xaf\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8 \xe0\xa4\x86\xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x97 \xe0\xa4\xb0 \xe0\xa4\x86\xe0\xa4\xa0 \xe0\xa4\xa6\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa4\xbe, \xe0\xa4\xac\xe0\xa5\x87\xe0\xa4\x97\xe0\xa5\x8d\xe0\xa4\xb2\xe0\xa5\x88 \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x87 \xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa5\x87\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa5\x87\xe0\xa4\x96\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x9b\xe0\xa5\xa4</p>
+
+<p style=\"font-family:ind_hi_1_001\">\xe0\xa4\xb8\xe0\xa4\x82\xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xa7\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\xb8\xe0\xa4\xad\xe0\xa4\xbe\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\x9a\xe0\xa4\xa8\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x97\xe0\xa4\xbf \xe0\xa4\xa8\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xaa\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\x93\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa6\xe0\xa5\x80\xe0\xa4\xb2\xe0\xa4\xbe\xe0\xa4\x88 \xe0\xa4\xb8\xe0\xa4\xae\xe0\xa5\x87\xe0\xa4\x9f\xe0\xa5\x87\xe0\xa4\xb0 \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xae \xe0\xa4\xb8\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0 \xe0\xa4\x97\xe0\xa4\xa0\xe0\xa4\xa8\xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xa4\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x80 \xe0\xa4\xad\xe0\xa5\x88\xe0\xa4\xb0\xe0\xa4\xb9\xe0\xa4\x81\xe0\xa4\xa6\xe0\xa4\xbe \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\x93\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa6\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\x95\xe0\xa4\xb0\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa5\x82\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\x8f\xe0\xa4\x95\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xbe \xe0\xa4\xb9\xe0\xa5\x8b\xe0\xa4\x9f\xe0\xa4\xb2 \xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xb2\xe0\xa4\xbf\xe0\xa4\x95\xe0\xa4\xae\xe0\xa4\xbe\xe0\xa4\xa5\xe0\xa4\xbf \xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\xad\xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\x8f\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\x85\xe0\xa4\xad\xe0\xa4\xa6\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xb5\xe0\xa4\xb9\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xb5\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\xa7\xe0\xa4\xae\xe0\xa4\xbe \xe0\xa4\xb5\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa4\xbe\xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa5\x80\xe0\xa4\xb9\xe0\xa4\xb0\xe0\xa5\x81\xe0\xa4\xb2\xe0\xa5\x87 \xe0\xa4\x85\xe0\xa4\xa8\xe0\xa4\xbf\xe0\xa4\xb6\xe0\xa5\x8d\xe0\xa4\x9a\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa4\x95\xe0\xa4\xbe\xe0\xa4\xb2\xe0\xa4\xbf\xe0\xa4\xa8 \xe0\xa4\xb9\xe0\xa4\xa1\xe0\xa5\x8d\xe0\xa4\xa4\xe0\xa4\xbe\xe0\xa4\xb2 \xe0\xa4\x86\xe0\xa4\xb9\xe0\xa5\x8d\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xa8 \xe0\xa4\x97\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x95\xe0\xa4\xbe \xe0\xa4\x9b\xe0\xa4\xa8\xe0\xa5\x8d\xe0\xa5\xa4</p>
+
+<h3 style=\"font-family:ind_bn_1_001\">Bengali (bn)</h3>
+<p style=\"font-family:ind_bn_1_001\">
+&#x9a6;&#x995;&#x9cd;&#x9b7;&#x9bf;&#x9a3; &#x993;&#x9df;&#x9be;&#x99c;&#x9bf;&#x9b0;&#x9bf;&#x9b8;&#x9cd;&#x9a5;&#x9be;&#x9a8;&#x9c7; &#x995;&#x9b0;&#x9cd;&#x9ae;&#x9b0;&#x9a4; &#x9b8;&#x9cd;&#x9ac;&#x9c7;&#x99a;&#x9cd;&#x99b;&#x9be;&#x9b8;&#x9c7;&#x9ac;&#x9c0; &#x993; &#x9a4;&#x9cd;&#x9b0;&#x9be;&#x9a3; &#x9b8;&#x982;&#x9b8;&#x9cd;&#x9a5;&#x9be;&#x997;&#x9c1;&#x9b2;&#x9cb; &#x9a7;&#x9be;&#x9b0;&#x9a3;&#x9be; &#x995;&#x9b0;&#x99b;&#x9c7; &#x9b8;&#x9c7;&#x9a8;&#x9be; &#x985;&#x9ad;&#x9bf;&#x9af;&#x9be;&#x9a8;&#x9c7;&#x9b0; &#x9a4;&#x9c0;&#x9ac;&#x9cd;&#x9b0;&#x9a4;&#x9be; &#x9ac;&#x9be;&#x9dc;&#x9b2;&#x9c7; &#x98f;&#x987; &#x9b8;&#x982;&#x996;&#x9cd;&#x9af;&#x9be;&#x99f;&#x9be; &#x986;&#x9b0;&#x993; &#x985;&#x9a8;&#x9c7;&#x995; &#x9ac;&#x9c7;&#x9dc;&#x9c7; &#x9af;&#x9be;&#x9ac;&#x9c7;
+<br />
+&#x9b6;&#x9b0;&#x9a3;&#x9be;&#x9b0;&#x9cd;&#x9a5;&#x9c0;&#x9a6;&#x9c7;&#x9b0; &#x9b8;&#x9cd;&#x9b0;&#x9cb;&#x9a4; &#x9b8;&#x9be;&#x9ae;&#x9b2;&#x9be;&#x9a4;&#x9c7; &#x9a4;&#x9be;&#x9b0;&#x9be; &#x987;&#x9a4;&#x9bf;&#x9ae;&#x9a7;&#x9cd;&#x9af;&#x9c7;&#x987; &#x9b9;&#x9bf;&#x9ae;&#x9b6;&#x9bf;&#x9ae; &#x996;&#x9be;&#x99a;&#x9cd;&#x99b;&#x9c7;&#x9a8;, &#x9ab;&#x9b2;&#x9c7; &#x9b2;&#x9dc;&#x9be;&#x987; &#x9a5;&#x9c7;&#x995;&#x9c7; &#x9aa;&#x9be;&#x9b2;&#x9bf;&#x9df;&#x9c7; &#x986;&#x9b8;&#x9be; &#x9ac;&#x9c7;&#x9b8;&#x9be;&#x9ae;&#x9b0;&#x9bf;&#x995; &#x9ae;&#x9be;&#x9a8;&#x9c1;&#x9b7;&#x99c;&#x9a8;&#x9c7;&#x9b0; &#x9b8;&#x982;&#x996;&#x9cd;&#x9af;&#x9be; &#x986;&#x9b0;&#x993; &#x9ac;&#x9be;&#x9dc;&#x9b2;&#x9c7; &#x9b8;&#x9cd;&#x9ac;&#x9ad;&#x9be;&#x9ac;&#x9a4;&#x987; &#x9b8;&#x999;&#x9cd;&#x995;&#x99f; &#x986;&#x9b0;&#x993; &#x99c;&#x99f;&#x9bf;&#x9b2; &#x9b9;&#x9df;&#x9c7; &#x989;&#x9a0;&#x9ac;&#x9c7;
+<br />
+&#x9a6;&#x995;&#x9cd;&#x9b7;&#x9bf;&#x9a3; &#x993;&#x9df;&#x9be;&#x99c;&#x9bf;&#x9b0;&#x9bf;&#x9b8;&#x9cd;&#x9a4;&#x9be;&#x9a8; &#x9a5;&#x9c7;&#x995;&#x9c7; &#x9aa;&#x9be;&#x993;&#x9df;&#x9be; &#x996;&#x9ac;&#x9b0;&#x9c7; &#x9ac;&#x9b2;&#x9be; &#x9b9;&#x99a;&#x9cd;&#x99b;&#x9c7; &#x9b8;&#x9c7;&#x9a8;&#x9be;&#x9ac;&#x9be;&#x9b9;&#x9bf;&#x9a8;&#x9c0; &#x9b8;&#x9c7;&#x996;&#x9be;&#x9a8;&#x9c7; &#x9a4;&#x9bf;&#x9a8;&#x9a6;&#x9bf;&#x995; &#x9a5;&#x9c7;&#x995;&#x9c7; &#x986;&#x995;&#x9cd;&#x9b0;&#x9ae;&#x9a3; &#x99a;&#x9be;&#x9b2;&#x9be;&#x99a;&#x9cd;&#x99b;&#x9c7; &#x98f;&#x9ac;&#x982; &#x993;&#x987; &#x985;&#x99e;&#x9cd;&#x99a;&#x9b2;&#x9c7; &#x9aa;&#x9cd;&#x9b0;&#x9ac;&#x9c7;&#x9b6; &#x995;&#x9b0;&#x9be; &#x986;&#x9b0; &#x9ac;&#x9c7;&#x9b0;&#x9cb;&#x9a8;&#x9cb;&#x9b0; &#x9aa;&#x9a5; &#x9a4;&#x9be;&#x9b0;&#x9be;&#x987; &#x9a8;&#x9bf;&#x9df;&#x9a8;&#x9cd;&#x9a4;&#x9cd;&#x9b0;&#x9a3; &#x995;&#x9b0;&#x99b;&#x9c7; - &#x986;&#x9b0; &#x9a4;&#x9be;&#x9b2;&#x9c7;&#x9ac;&#x9be;&#x9a8;&#x9c7;&#x9b0; &#x998;&#x9be;&#x981;&#x99f;&#x9bf;&#x997;&#x9c1;&#x9b2;&#x9cb;&#x9b0; &#x993;&#x9aa;&#x9b0; &#x9b9;&#x9be;&#x9ae;&#x9b2;&#x9be; &#x99a;&#x9be;&#x9b2;&#x9be;&#x9a8;&#x9c7;&#x9be; &#x9b9;&#x99a;&#x9cd;&#x99b;&#x9c7; &#x986;&#x995;&#x9be;&#x9b6;&#x9aa;&#x9a5;&#x9c7; &#x98f;&#x9ac;&#x982; &#x985;&#x9b0;&#x9cd;&#x99f;&#x9bf;&#x9b2;&#x9be;&#x9b0;&#x9bf; &#x9ac;&#x9be;&#x9b9;&#x9bf;&#x9a8;&#x9c0;&#x9b0; &#x9b8;&#x9be;&#x9b9;&#x9be;&#x9af;&#x9cd;&#x9af;&#x9c7;
+<br />
+&#x9a4;&#x9be;&#x9b2;&#x9c7;&#x9ac;&#x9be;&#x9a8; &#x99c;&#x999;&#x9cd;&#x997;&#x9c0;&#x9b0;&#x9be; &#x987;&#x9a4;&#x9bf;&#x9ae;&#x9a7;&#x9cd;&#x9af;&#x9c7;&#x987; &#x9b9;&#x9c1;&#x981;&#x9b6;&#x9bf;&#x9df;&#x9be;&#x9b0;&#x9bf; &#x9a6;&#x9bf;&#x9df;&#x9c7;&#x99b;&#x9c7; &#x98f;&#x995; &#x987;&#x99e;&#x9cd;&#x99a;&#x9bf; &#x99c;&#x9ae;&#x9bf;&#x993; &#x9a4;&#x9be;&#x9b0;&#x9be; &#x9ac;&#x9bf;&#x9a8;&#x9be; &#x9af;&#x9c1;&#x9a6;&#x9cd;&#x9a7;&#x9c7; &#x99b;&#x9c7;&#x9dc;&#x9c7; &#x9a6;&#x9c7;&#x9ac;&#x9c7; &#x9a8;&#x9be; - &#x986;&#x9b0; &#x987;&#x9b8;&#x9b2;&#x9be;&#x9ae;&#x9be;&#x9ac;&#x9be;&#x9a6; &#x9a5;&#x9c7;&#x995;&#x9c7; &#x9ac;&#x9bf;&#x9ac;&#x9bf;&#x9b8;&#x9bf;&#x9b0; &#x993;&#x9b0;&#x9b2;&#x9be; &#x997;&#x9c1;&#x9df;&#x9c7;&#x9b0;&#x9bf;&#x9a8; &#x9ac;&#x9b2;&#x99b;&#x9c7;&#x9a8; &#x9a4;&#x9be;&#x9b0;&#x9be; &#x9b8;&#x9c7;-&#x995;&#x9a5;&#x9be; &#x985;&#x995;&#x9cd;&#x9b7;&#x9b0;&#x9c7; &#x985;&#x995;&#x9cd;&#x9b7;&#x9b0;&#x9c7; &#x9aa;&#x9be;&#x9b2;&#x9a8; &#x995;&#x9b0;&#x99b;&#x9c7; 
+<br />
+!\"#$%&'()*+,-./0123456789:;<=>?<br />
+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<br />
+`abcdefghijklmnopqrstuvwxyz{|}~
+<br />&#x09E6;&#x09E7;&#x09E8;&#x09E9;&#x09EA;&#x09EB;&#x09EC;&#x09ED;&#x09EE;&#x09EF;
+</p>
+
+
+<h3 style=\"font-family:ind_bn_1_001\">Assamese</h3>
+<p style=\"font-family:ind_bn_1_001\">&#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9f1;&#x9bf;&#x995;&#x9bf;&#x9aa;&#x9bf;&#x9a1;&#x9bf;&#x9af;&#x9bc;&#x9be;&#x9f0; &#x989;&#x9a6;&#x9cd;&#x9a6;&#x9c7;&#x9b6;&#x9cd;&#x9af; &#x9b9;'&#x9b2; &#x9b8;&#x9ae;&#x9cd;&#x9aa;&#x9c2;&#x9f0;&#x9cd;&#x9a3; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9a4; &#x98f;&#x996;&#x9a8;&#x9bf; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7; &#x9aa;&#x9cd;&#x9f0;&#x9a3;&#x9af;&#x9bc;&#x9a8; &#x995;&#x9f0;&#x9be;&#x964; &#x985;&#x9a8;&#x9cd;&#x9af; &#x995;&#x9cb;&#x9a8;&#x9cb; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9f0; &#x9aa;&#x9cd;&#x9f0;&#x9ac;&#x9a8;&#x9cd;&#x9a7; &#x98f;&#x987; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7;&#x9f0; &#x9ac;&#x9be;&#x9ac;&#x9c7; &#x997;&#x9cd;&#x9f0;&#x9b9;&#x9a8; &#x995;&#x9f0;&#x9be; &#x9a8;&#x9b9;'&#x9ac;&#x964; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7;&#x9f0; &#x985;&#x9f1;&#x9a6;&#x9be;&#x9a8;&#x995;&#x9be;&#x9f0;&#x9c0;&#x9b8;&#x995;&#x9b2;&#x9b2;&#x9c8; &#x9b8;&#x9be;&#x9a6;&#x9f0;&#x9c7;&#x9f0;&#x9c7; &#x985;&#x9a8;&#x9c1;&#x9f0;&#x9cb;&#x9a7; &#x99c;&#x9a8;&#x9cb;&#x9f1;&#x9be; &#x9b9;'&#x9b2; &#x9af;&#x9be;&#x9a4;&#x9c7; &#x9a4;&#x9c7;&#x996;&#x9c7;&#x9a4;&#x9b8;&#x995;&#x9b2;&#x9c7; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9f0; &#x9aa;&#x9cd;&#x9f0;&#x99a;&#x9b2;&#x9bf;&#x9a4; &#x9ac;&#x9be;&#x9a8;&#x9be;&#x9a8; &#x9aa;&#x9a6;&#x9cd;&#x9a7;&#x9a4;&#x9bf; &#x9ae;&#x9be;&#x9a8;&#x9bf; &#x99a;&#x9b2;&#x9c7;&#x964; &#x9ac;&#x9bf;&#x9a6;&#x9c7;&#x9b6;&#x9c0; &#x9b6;&#x9ac;&#x9cd;&#x9a6;&#x9f0; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9aa;&#x9cd;&#x9f0;&#x9a4;&#x9bf;&#x9f0;&#x9c2;&#x9aa;&#x9f0; &#x995;&#x9cd;&#x9b7;&#x9c7;&#x9a4;&#x9cd;&#x9f0;&#x9a4; &#x9af;&#x9bf;&#x9b9;&#x9c7;&#x9a4;&#x9c1; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9b8;&#x9be;&#x9b9;&#x9bf;&#x9a4;&#x9cd;&#x9af;&#x9bf;&#x995;&#x9b8;&#x995;&#x9b2; &#x98f;&#x9a4;&#x9bf;&#x9af;&#x9bc;&#x9be;&#x993; &#x990;&#x995;&#x9cd;&#x9af;&#x9ae;&#x9a4;&#x9a4; &#x989;&#x9aa;&#x9a8;&#x9c0;&#x9a4; &#x9b9;'&#x9ac; &#x9aa;&#x9f0;&#x9be; &#x9a8;&#x9be;&#x987;, &#x9f1;&#x9bf;&#x995;&#x9bf;&#x9aa;&#x9bf;&#x9a1;&#x9bf;&#x9af;&#x9bc;&#x9be;&#x9a4; &#x9ac;&#x9bf;&#x9a6;&#x9c7;&#x9b6;&#x9c0; &#x9b6;&#x9ac;&#x9cd;&#x9a6;&#x9f0; &#x9af;&#x9bf;&#x995;&#x9cb;&#x9a8;&#x9cb; &#x9a7;&#x9f0;&#x9a8;&#x9f0; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9f0;&#x9c2;&#x9aa; &#x997;&#x9cd;&#x9f0;&#x9be;&#x9b9;&#x9cd;&#x9af; &#x995;&#x9f0;&#x9be; &#x9b9;'&#x9ac;&#x964;
+<br />
+
+&#x997;&#x9a3;&#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7;&#x9f0; &#x9b8;&#x9ab;&#x9b2;&#x9a4;&#x9be;&#x9f0; &#x9a8;&#x9c7;&#x9aa;&#x9a5;&#x9cd;&#x9af;&#x9f0; &#x986;&#x99f;&#x9be;&#x987;&#x9a4;&#x995;&#x9c8; &#x9b6;&#x995;&#x9cd;&#x9a4;&#x9bf;&#x9b6;&#x9be;&#x9b2;&#x9c0; &#x9a7;&#x9be;&#x9f0;&#x9a3;&#x9be;&#x99f;&#x9cb; &#x9b9;&#x9c8;&#x99b;&#x9c7; &#x9b8;&#x9b9;&#x9af;&#x9cb;&#x997;&#x9bf;&#x9a4;&#x9be;&#x9ae;&#x9c2;&#x9b2;&#x995; &#x9b8;&#x982;&#x995;&#x9b2;&#x9a8;, &#x9af;&#x9bf; &#x9ae;&#x9be;&#x9a8;&#x9f1; &#x99c;&#x9be;&#x9a4;&#x9bf;&#x9f0; &#x9b8;&#x9be;&#x9ab;&#x9b2;&#x9cd;&#x9af;&#x9f0; &#x9ae;&#x9c2;&#x9b2; &#x99a;&#x9be;&#x9ac;&#x9bf;&#x995;&#x9be;&#x9a0;&#x9bf; &#x9aa;&#x9be;&#x9f0;&#x9b8;&#x9cd;&#x9aa;&#x9f0;&#x9bf;&#x995; &#x9b8;&#x9b9;&#x9af;&#x9cb;&#x997;&#x9bf;&#x9a4;&#x9be;&#x995; &#x986;&#x9f0;&#x9c1; &#x98f;&#x996;&#x9cb;&#x9aa; &#x993;&#x9aa;&#x9f0;&#x9b2;&#x9c8; &#x989;&#x9a0;&#x9be;&#x987; &#x9a8;&#x9bf;&#x99b;&#x9c7;| &#x98f;&#x987; &#x997;&#x9a3;&#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7;&#x9ac;&#x9bf;&#x9b2;&#x9be;&#x995;&#x9f0; &#x9ac;&#x9bf;&#x9ad;&#x9bf;&#x9a8;&#x9cd;&#x9a8; &#x9a8;&#x9bf;&#x9ac;&#x9a8;&#x9cd;&#x9a7;&#x9f0; &#x9b2;&#x9c7;&#x996;&#x995;&#x9b8;&#x995;&#x9b2; &#x9b8;&#x9ae;&#x9cd;&#x9aa;&#x9c2;&#x9f0;&#x9cd;&#x9a3; &#x985;&#x9aa;&#x9c7;&#x99a;&#x9be;&#x9a6;&#x9be;&#x9f0;&#x9c0; &#x987;&#x9a8;&#x9cd;&#x99f;&#x9be;&#x9f0;&#x9a8;&#x9c7;&#x99f; &#x9ac;&#x9cd;&#x9af;&#x9f1;&#x9b9;&#x9be;&#x9f0;&#x995;&#x9f0;&#x9cb;&#x981;&#x9a4;&#x9be;&#x964; &#x98f;&#x987; &#x9b2;&#x9c7;&#x996;&#x995;&#x9b8;&#x995;&#x9b2;&#x9c7; &#x9a8;&#x9bf;&#x99c;&#x9f0; &#x9a8;&#x9bf;&#x99c;&#x9f0; &#x9f0;&#x9be;&#x9aa; &#x9ac;&#x9be; &#x9aa;&#x9be;&#x9f0;&#x9a6;&#x9f0;&#x9cd;&#x9b6;&#x9c0;&#x9a4;&#x9be; &#x9a5;&#x995;&#x9be; &#x9ac;&#x9bf;&#x9b7;&#x9af;&#x9bc; &#x9b8;&#x9ae;&#x9cd;&#x9aa;&#x9f0;&#x9cd;&#x995;&#x9c7; &#x9ac;&#x9bf;&#x9ad;&#x9bf;&#x9a8;&#x9cd;&#x9a8; &#x9a8;&#x9bf;&#x9ac;&#x9a8;&#x9cd;&#x9a7; &#x9b2;&#x9bf;&#x996;&#x9bf; &#x986;&#x9a8; &#x9aa;&#x9be;&#x9a0;&#x995;&#x995; &#x989;&#x9aa;&#x995;&#x9c3;&#x9a4; &#x995;&#x9f0;&#x9c7; &#x986;&#x9f0;&#x9c1; &#x9a8;&#x9bf;&#x99c;&#x9c7;&#x993; &#x989;&#x9aa;&#x995;&#x9c3;&#x9a4; &#x9b9;&#x9af;&#x9bc;&#x964;
+<br />
+
+&#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x997;&#x9a3;&#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7; (&#x9af;&#x9be;&#x9f0; &#x9ae;&#x9c1;&#x996;&#x9cd;&#x9af; &#x9aa;&#x9c3;&#x9b7;&#x9cd;&#x9a0;&#x9be;&#x99f;&#x9cb; &#x9ac;&#x9f0;&#x9cd;&#x9a4;&#x9ae;&#x9be;&#x9a8; &#x986;&#x9aa;&#x9c1;&#x9a8;&#x9bf; &#x9aa;&#x9a2;&#x9bc;&#x9bf; &#x986;&#x99b;&#x9c7;) &#x9b9;&#x9c8;&#x99b;&#x9c7; &#x98f;&#x996;&#x9a8; &#x985;&#x9b8;&#x9ae;&#x9c0;&#x9af;&#x9bc;&#x9be; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7; &#x9aa;&#x9cd;&#x9f0;&#x9b8;&#x9cd;&#x9a4;&#x9c1;&#x9a4; &#x995;&#x9f0;&#x9be;&#x9f0; &#x98f;&#x995; &#x985;&#x9ad;&#x9c2;&#x9a4;&#x9aa;&#x9c2;&#x9f0;&#x9cd;&#x9ac; &#x9a4;&#x9a5;&#x9be; &#x985;&#x9ad;&#x9bf;&#x9a8;&#x9f1; &#x9aa;&#x9cd;&#x9f0;&#x9af;&#x9bc;&#x9be;&#x9b8;, &#x9af;&#x9be;&#x995; &#x9af;&#x9bf;&#x995;&#x9cb;&#x9a8;&#x9cb; &#x9aa;&#x9be;&#x9a0;&#x995;&#x9c7; &#x9aa;&#x9c3;&#x9a5;&#x9bf;&#x9f1;&#x9c0;&#x9f0; &#x9af;&#x9bf;&#x995;&#x9cb;&#x9a8;&#x9cb; &#x9a0;&#x9be;&#x987;&#x9f0; &#x9aa;&#x9f0;&#x9be; &#x987;&#x9a8;&#x9cd;&#x99f;&#x9be;&#x9f0;&#x9a8;&#x9c7;&#x99f;&#x9f0; &#x99c;&#x9f0;&#x9bf;&#x9af;&#x9bc;&#x9a4;&#x9c7; &#x9ac;&#x9bf;&#x9a8;&#x9be;&#x9ae;&#x9c2;&#x9b2;&#x9cd;&#x9af;&#x9c7; &#x9ac;&#x9cd;&#x9af;&#x9f1;&#x9b9;&#x9be;&#x9f0; &#x995;&#x9f0;&#x9bf;&#x9ac; &#x9aa;&#x9be;&#x9f0;&#x9bf;&#x9ac;&#x964; &#x98f;&#x987; &#x9aa;&#x9cd;&#x9f0;&#x995;&#x9b2;&#x9cd;&#x9aa; &#x986;&#x99a;&#x9b2;&#x9a4;&#x9c7; \"&#x9f1;&#x9bf;&#x995;&#x9bf;&#x9aa;&#x9c7;&#x9a1;&#x9bf;&#x9af;&#x9bc;&#x9be;\" &#x9a8;&#x9be;&#x9ae;&#x9f0; &#x98f;&#x995; &#x9ac;&#x9c3;&#x9b9;&#x9a4;&#x9cd;&#x9a4;&#x9f0; &#x9aa;&#x9cd;&#x9f0;&#x995;&#x9b2;&#x9cd;&#x9aa;&#x9f0; &#x985;&#x982;&#x9b6;| &#x9aa;&#x9c3;&#x9a5;&#x9bf;&#x9ac;&#x9c0;&#x9f0; &#x9ac;&#x9bf;&#x9ad;&#x9bf;&#x9a8;&#x9cd;&#x9a8; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9a4; &#x9b8;&#x995;&#x9b2;&#x9cb;&#x9f1;&#x9c7; &#x9ac;&#x9bf;&#x9a8;&#x9be;&#x9ae;&#x9c2;&#x9b2;&#x9cd;&#x9af;&#x9c7; &#x9ac;&#x9cd;&#x9af;&#x9f1;&#x9b9;&#x9be;&#x9f0; &#x9a4;&#x9a5;&#x9be; &#x9b8;&#x9ae;&#x9cd;&#x9aa;&#x9be;&#x9a6;&#x9a8;&#x9be; &#x995;&#x9f0;&#x9bf;&#x9ac; &#x9aa;&#x9f0;&#x9be; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7; &#x9aa;&#x9cd;&#x9f0;&#x9b8;&#x9cd;&#x9a4;&#x9c1;&#x9a4; &#x995;&#x9f0;&#x9be;&#x9f0; &#x989;&#x9a6;&#x9cd;&#x9a6;&#x9c7;&#x9b6;&#x9cd;&#x9af;&#x9c7;&#x9f0;&#x9c7; &#x9f1;&#x9bf;&#x995;&#x9bf;&#x9aa;&#x9bf;&#x9a1;&#x9bf;&#x9af;&#x9bc;&#x9be; &#x9a8;&#x9be;&#x9ae;&#x9f0; &#x987;&#x9a8;&#x9cd;&#x99f;&#x9be;&#x9f0;&#x9a8;&#x9c7;&#x99f;-&#x9aa;&#x9c3;&#x9b7;&#x9cd;&#x9a0;&#x9be;&#x9a4; &#x9e8;&#x9e6;&#x9e6;&#x9e7; &#x99a;&#x9a8;&#x9a4; &#x986;&#x9f0;&#x9ae;&#x9cd;&#x9ad; &#x995;&#x9f0;&#x9be; &#x9ae;&#x9c1;&#x996;&#x9cd;&#x9af; &#x9aa;&#x9cd;&#x9f0;&#x995;&#x9b2;&#x9cd;&#x9aa;&#x9f0; &#x985;&#x9a7;&#x9c0;&#x9a8;&#x9a4; &#x9ac;&#x9f0;&#x9cd;&#x9a4;&#x9cd;&#x9a4;&#x9ae;&#x9be;&#x9a8; &#x9aa;&#x9cd;&#x9f0;&#x9be;&#x9af;&#x9bc; &#x9b6;&#x9a4;&#x9be;&#x9a7;&#x9bf;&#x995; &#x9ad;&#x9be;&#x9b7;&#x9be;&#x9f0; &#x9af;&#x9cb;&#x997;&#x9a6;&#x9be;&#x9a8;&#x9c7;&#x9f0;&#x9c7; &#x9b8;&#x9ae;&#x9cd;&#x9ac;&#x9c3;&#x9a6;&#x9cd;&#x9a7; &#x9b9;&#x9cb;&#x9f1;&#x9be; &#x98f;&#x987;&#x9b2;&#x9be;&#x9a8;&#x9bf; &#x997;&#x9a3;&#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7;&#x9c7; &#x986;&#x99c;&#x9bf; &#x9aa;&#x9cd;&#x9f0;&#x9be;&#x9af;&#x9bc; &#x9aa;&#x9be;&#x981;&#x99a;&#x9b2;&#x9be;&#x996;&#x9a4;&#x995;&#x9c8;&#x993; &#x985;&#x9a7;&#x9bf;&#x995; &#x9aa;&#x9cd;&#x9f0;&#x9ac;&#x9a8;&#x9cd;&#x9a7;&#x9f0;&#x9c7; &#x9aa;&#x9c3;&#x9a5;&#x9bf;&#x9f1;&#x9c0;&#x9f0; &#x9ac;&#x9bf;&#x9ad;&#x9bf;&#x9a8;&#x9cd;&#x9a8; &#x9aa;&#x9cd;&#x9f0;&#x9be;&#x9a8;&#x9cd;&#x9a4;&#x9f0; &#x9aa;&#x9be;&#x9a0;&#x995;&#x995; &#x987;&#x9a8;&#x9cd;&#x99f;&#x9be;&#x9f0;&#x9a8;&#x9c7;&#x99f;&#x9f0; &#x99c;&#x9f0;&#x9bf;&#x9af;&#x9bc;&#x9a4;&#x9c7; &#x9ac;&#x9bf;&#x9b6;&#x9cd;&#x9ac;&#x995;&#x9cb;&#x9b7; &#x9b8;&#x9c7;&#x9f1;&#x9be; &#x986;&#x997;&#x9ac;&#x9a2;&#x9bc;&#x9be;&#x987;&#x99b;&#x9c7;&#x964;
+</p>
+
+
+";
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('-s','A4','','',32,25,27,25,16,13); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+//$mpdf->useSubstitutionsMB = true;
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php b/inc/3rdparty/libraries/mpdf/examples/example35_watermarks.php
new file mode 100644 (file)
index 0000000..02337f8
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+$html = '
+<h1>mPDF</h1>
+<h2>Watermarks</h2>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<hr />
+
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+
+<blockquote>Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.</blockquote>
+
+<address>Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.</address>
+
+';
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('c'); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->SetWatermarkText('DRAFT');
+$mpdf->watermark_font = 'DejaVuSansCondensed';
+$mpdf->showWatermarkText = true;
+
+
+$mpdf->WriteHTML($html);
+$mpdf->AddPage();
+
+$mpdf->SetWatermarkImage('tiger.wmf', 1, '', array(160,10));
+$mpdf->showWatermarkImage = true;
+
+$mpdf->WriteHTML('<h2>Using a Watermark as a Header</h2>');
+$mpdf->WriteHTML($html);
+$mpdf->AddPage();
+
+$mpdf->SetWatermarkImage('tiger.wmf', 0.15, 'F');
+
+$mpdf->WriteHTML('<h2>Using a Watermark Image as Background</h2>');
+$mpdf->WriteHTML($html);
+
+
+$mpdf->Output();
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php b/inc/3rdparty/libraries/mpdf/examples/example36_annotations_and_Attached_files.php
new file mode 100644 (file)
index 0000000..63e8c5d
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>Annotations</h2>
+<h5>Heading 5<annotation content="This is an annotation'."\n".'in the middle of the text" subject="My Subject" icon="Comment" color="#FE88EF" author="Ian Back" /></h5>
+<h6>Heading 6</h6>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. <i>Fusce</i><annotation content="Fusce is a funny word!" subject="Idle Comments" icon="Note" author="Ian Back" pos-x="195" /> eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at <span title="This annotation was automatically defined from the title attribute of a span element">eleifend</span> lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada<annotation file="tiger.jpg" content="This is a file attachment (embedded file)
+Double-click to open attached file
+Right-click to save file on your computer" icon="Graph" title="Attached File: tiger.jpg" pos-x="195" />  sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+';
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('c'); 
+
+$mpdf->title2annots = true;
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php b/inc/3rdparty/libraries/mpdf/examples/example37_barcodes.php
new file mode 100644 (file)
index 0000000..34ec882
--- /dev/null
@@ -0,0 +1,437 @@
+<?php
+
+
+$html = '
+<html>
+<head>
+<style>
+body {font-family: sans-serif;
+       font-size: 9pt;
+       background: transparent url(\'bgbarcode.png\') repeat-y scroll left top;
+}
+h5, p {        margin: 0pt;
+}
+table.items {
+       font-size: 9pt; 
+       border-collapse: collapse;
+       border: 3px solid #880000; 
+}
+td { vertical-align: top; 
+}
+table thead td { background-color: #EEEEEE;
+       text-align: center;
+}
+table tfoot td { background-color: #AAFFEE;
+       text-align: center;
+}
+.barcode {
+       padding: 1.5mm;
+       margin: 0;
+       vertical-align: top;
+       color: #000000;
+}
+.barcodecell {
+       text-align: center;
+       vertical-align: middle;
+       padding: 0;
+}
+</style>
+</head>
+<body>
+
+<!--mpdf
+<htmlpagefooter name="myfooter">
+<div style="border-top: 1px solid #000000; font-size: 9pt; text-align: center; padding-top: 3mm; ">
+Page {PAGENO} of {nb}
+</div>
+</htmlpagefooter>
+
+<sethtmlpagefooter name="myfooter" value="on" />
+mpdf-->
+
+<h1>mPDF</h1>
+<h2>Barcodes</h2>
+<p>NB <b>Quiet zones</b> - The barcode object includes space to the right/left or top/bottom only when the specification states a \'quiet zone\' or \'light margin\'. All the examples below also have CSS property set on the barcode object i.e. padding: 1.5mm; </p>
+
+<h3>EAN-13 Barcodes (EAN-2 and EAN-5)</h3>
+<p>NB EAN-13, UPC-A, UPC-E, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).</p>
+<p>A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">EAN13</td>
+<td>Standard EAN-13 barcode. Accepts 12 or 13 characters (creating checksum digit if required). [0-9] numeric only.</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0" text="1" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">ISBN</td>
+<td>Standard EAN-13 barcode with \'ISBN\' number shown above [shown at height="0.66"]</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0" type="ISBN" class="barcode" height="0.66" text="1" /></td>
+</tr>
+<tr>
+<td align="center">ISSN</td>
+<td>Standard EAN-13 barcode with \'ISSN\' number shown above [shown at size="0.8"]</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8" type="ISSN" size="0.8" class="barcode" text="1" /></td>
+</tr>
+</tbody>
+</table>
+
+<h3>EAN-8, UPC-A and UPC-E Barcodes</h3>
+<p>UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).</p>
+<p>A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">UPCA</td>
+<td>UPC-A barcode. This is a subset of the EAN-13. (098277211236) Accepts 11 or 12 characters (creating checksum digit if required). [0-9] numeric only</td>
+<td class="barcodecell"><barcode code="09827721123" type="UPCA" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">UPCE</td>
+<td>UPC-E barcode. Requires the UPC-A code to be entered as above (e.g. 042100005264 to give 425261). NB mPDF will die with an error message if the code is not valid, as only some UPC-A codes can be converted into valid UPC-E codes. UPC-E doesn\'t have a check digit encoded explicity, rather the check digit is encoded in the parity of the other six characters. The check digit that is encoded is the check digit from the original UPC-A barcode.</td>
+<td class="barcodecell"><barcode code="04210000526" type="UPCE" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN8</td>
+<td>EAN-8. Accepts 7 or 8 characters (creating checksum digit if required). [0-9] numeric only</td>
+<td class="barcodecell"><barcode code="2468123" type="EAN8" class="barcode" /></td>
+</tr>
+</tbody>
+</table>
+
+<h3>EAN-2 and EAN-5 supplements, and combined forms</h3>
+<p>UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">EAN2</td>
+<td colspan="2">EAN-2 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Used to denote an issue of a periodical. EAN-2 supplement accepts 2 digits [0-9] only, EAN-5 five.</td>
+</tr>
+<tr>
+<td align="center">EAN5</td>
+<td colspan="2">EAN-5 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Usually used in conjunction with EAN-13 for the price of books. 90000 is the code for no price. </td>
+</tr>
+<tr>
+<td align="center">EAN13P2</td>
+<td>Standard EAN-13 barcode with 2-digit UPC supplement (07)</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0 07" type="EAN13P2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">ISBNP2</td>
+<td>Standard EAN-13 barcode with \'ISBN\' number shown above, and 2-digit EAN-2 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 07" type="ISBNP2" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">ISSNP2</td>
+<td>Standard EAN-13 barcode with \'ISSN\' number shown above, and 2-digit EAN-2 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 07" type="ISSNP2" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">UPCAP2</td>
+<td>UPC-A barcode with 2-digit EAN-2 supplement. This is a subset of the EAN-13. </td>
+<td class="barcodecell"><barcode code="00633895260 24" type="UPCAP2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">UPCEP2</td>
+<td>UPC-E barcode with 2-digit EAN-2 supplement. </td>
+<td class="barcodecell"><barcode code="042100005264 07" type="UPCEP2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN8P2</td>
+<td>EAN-8 barcode with 2-digit EAN-2 supplement</td>
+<td class="barcodecell"><barcode code="5512345 07" type="EAN8P2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN13P5</td>
+<td>Standard EAN-13 barcode with 5-digit UPC supplement (90000)</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0 90000" type="EAN13P5" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">ISBNP5</td>
+<td>Standard EAN-13 barcode with \'ISBN\' number shown above, and 5-digit EAN-5 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 90000" type="ISBNP5" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">ISSNP5</td>
+<td>Standard EAN-13 barcode with \'ISSN\' number shown above, and 5-digit EAN-5 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 90000" type="ISSNP5" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">UPCAP5</td>
+<td>UPC-A barcode with 5-digit EAN-5 supplement. This is a subset of the EAN-13</td>
+<td class="barcodecell"><barcode code="07567816412 90000" type="UPCAP5" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">UPCEP5</td>
+<td>UPC-E barcode with 5-digit EAN-5 supplement. (042100005264 90000)</td>
+<td class="barcodecell"><barcode code="042100005264 90000" type="UPCEP5" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN8P5</td>
+<td>EAN-8 barcode with 5-digit EAN-5 supplement (55123457 90000)</td>
+<td class="barcodecell"><barcode code="55123457 90000" type="EAN8P5" class="barcode" /></td>
+</tr>
+</tbody>
+</table>
+
+<h3>Postcode Barcodes</h3>
+<p>These all have sizes fixed by their specification. Although they can be altered using \'size\' it is not recommended. \'height\' is ignored.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">IMB</td>
+<td>Intelligent Mail Barcode - also known as: USPS OneCode 4-State Customer Barcode, OneCode 4CB, USPS 4CB, 4-CB, 4-State Customer Barcode, USPS OneCode Solution Barcode. (01234567094987654321-01234567891) Accepts: Up to 31 digits (required 20-digit Tracking Code, and up to 11-digit Routing Code; this may be 0, 5, 9, or 11 digits). If the Routing code is included, it should be spearated by a hyphen - like this example.</td>
+<td class="barcodecell"><barcode code="01234567094987654321-01234567891" type="IMB" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">RM4SCC</td>
+<td>Royal Mail 4-state Customer barcode (SN34RD1A). Accepts: max. 9 characters. Valid characters: [A-Z,0-9] Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="SN34RD1A" type="RM4SCC" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">KIX</td>
+<td>Dutch KIX version of Royal Mail 4-state Customer barcode (SN34RD1A). Valid characters: [A-Z,0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="SN34RD1A" type="KIX" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">POSTNET</td>
+<td>POSTNET barcode. Accepts 5, 9 or 11 digits. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="123456789" type="POSTNET" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">PLANET</td>
+<td>PLANET barcode. Accepts 11 or 13 digits. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="00123456789" type="PLANET" class="barcode" /></td>
+</tr>
+</tbody>
+</table>
+
+
+<h3>Variable width Barcodes</h3>
+<p>These barcodes are all of variable length depending on the code entered. There is no recommended maximum size for any of these specs, but all recommend a minimum X-dimension (width of narrowest bar) as 7.5mil (=0.19mm). The default used here is twice the minimum i.e. X-dim = 0.38mm.</p>
+<p>The specifications give a minimum height of 15% of the barcode length (which can be variable). The bar height in mPDF is set to a default value of 10mm. </p>
+<p>\'size\' will scale the barcode in both dimensions. mPDF will accept any number, but bear in mind that size="0.5" will set the bar width to the minimum. The \'height\' attribute further allows scaling - this factor is applied to already scaled barcode. Thus size="2" height="0.5" will give a barcode twice the default width (X-dim=0.76mm) and at the default height set in mPDF i.e. 10mm.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">C128A</td>
+<td>CODE 128 A. Valid characters: [A-Z uppercase and control chars ASCII 0-31]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="CODE 128 A" type="C128A" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C128B</td>
+<td>CODE 128 B. Valid characters: [Upper / Lower Case + All ASCII Printable Characters]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="ABC123abc@456" type="C128B" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C128C</td>
+<td>CODE 128 C. Valid characters: [0-9]. Must be an even number of digits. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="0123456789" type="C128C" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">EAN128C [A/B/C]</td>
+<td>EAN128 (A, B, and C). Specified variant of Code 128, utilising an FNC1 start code. Also known as UCC/EAN-128 or GS1-128. Valid characters: [cf. Code 128]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="0112345678912343" type="EAN128C" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">C39</td>
+<td>CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. Valid characters: [0-9 A-Z \'-\' . Space $/+%]</td>
+<td class="barcodecell"><barcode code="TEC-IT" type="C39" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C39+</td>
+<td>CODE 39 + CHECKSUM. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="39OR93" type="C39+" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C39E</td>
+<td>CODE 39 EXTENDED. Valid characters: [ASCII-characters between 0..127]</td>
+<td class="barcodecell"><barcode code="CODE 39 E" type="C39E" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C39E+</td>
+<td>CODE 39 EXTENDED + CHECKSUM. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="CODE 39 E+" type="C39E+" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">S25</td>
+<td>Standard 2 of 5. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="54321068" type="S25" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">S25+</td>
+<td>Standard 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="54321068" type="S25+" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25</td>
+<td>Interleaved 2 of 5. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="54321068" type="I25" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25+</td>
+<td>Interleaved 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="54321068" type="I25+" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25B</td>
+<td>Interleaved 2 of 5 with bearer bars. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="1234567" type="I25B" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25B+</td>
+<td>Interleaved 2 of 5 + CHECKSUM with bearer bars. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="1234567" type="I25B+" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">C93</td>
+<td>CODE 93 - USS-93 (extended). Valid characters: [ASCII-characters between 0..127]. Checksum digits: automatic.</td>
+<td class="barcodecell"><barcode code="39OR93" type="C93" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">MSI</td>
+<td>MSI. Modified Plessey. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="01234567897" type="MSI" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">MSI+</td>
+<td>MSI + CHECKSUM (module 11). Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="0123456789" type="MSI+" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">CODABAR</td>
+<td>CODABAR. Valid characters: [0-9 \'-\' $:/.+ ABCD] ABCD are used as stop and start characters e.g. A34698735B</td>
+<td class="barcodecell"><barcode code="A34698735B" type="CODABAR" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">CODE11</td>
+<td>CODE 11. Valid characters: [0-9 and \'-\']. Checksum digits: 1 (or 2 if length of code is > 10 characters) - automatic.</td>
+<td class="barcodecell"><barcode code="123-456-789" type="CODE11" class="barcode" /></td>
+</tr>
+
+
+</tbody>
+</table>
+
+<!-- QR-CODE 
+<h3>2D Code (QR-code)</h3>
+<p>A nominal height and width for these barcodes is set as 25mm. \'size\' will scale both the height and width.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">QR-code</td>
+<td>QR-code. Accepts numeric, alphanumeric or binary input, with specified error level: L, M, Q, H.</td>
+<td class="barcodecell"><barcode code="Your message here" type="QR" class="barcode" size="0.8" error="M" /></td>
+</tr>
+</tbody>
+</table>
+-->
+
+
+<br />
+
+<div>
+<h5>Useful links</h5>
+<p><a href="http://www.adams1.com">http://www.adams1.com</a></p>
+<p><a href="http://www.tec-it.com/Download/PDF/Barcode_Reference_EN.pdf">http://www.tec-it.com/Download/PDF/Barcode_Reference_EN.pdf</a></p>
+<p><a href="http://www.tec-it.com/en/support/knowbase/symbologies/barcode-overview/linear/Default.aspx">http://www.tec-it.com/en/support/knowbase/symbologies/barcode-overview/linear/Default.aspx</a></p>
+<p><a href="http://www.gs1uk.org/downloads/bar_code/Bar%20coding%20getting%20it%20right.pdf">http://www.gs1uk.org/downloads/bar_code/Bar%20coding%20getting%20it%20right.pdf</a></p>
+<p><a href="http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm">http://web.archive.org/web/19990501035133/http://www.uc-council.org/d36-d.htm (EAN2 and EAN5)</a></p>
+<p><a href="http://www.barcodeisland.com/ean13.phtml">http://www.barcodeisland.com/ean13.phtml (UPC-A)</a></p>
+<p><a href="http://www.idautomation.com/fonts/postnet/#Specifications">http://www.idautomation.com/fonts/postnet/#Specifications</a></p>
+<p><a href="http://www.outputlinks.com/sites/AFP/ibm_bcocafaq.pdf">http://www.outputlinks.com/sites/AFP/ibm_bcocafaq.pdf</a></p>
+<p><a href="https://ribbs.usps.gov/intelligentmail_mailpieces/documents/tech_guides/USPSIMB_Tech_Resource_Guide.pdf">https://ribbs.usps.gov/intelligentmail_mailpieces/documents/tech_guides/USPSIMB_Tech_Resource_Guide.pdf (Intelligent Mail)</a></p>
+<p><a href="http://www.mailsorttechnical.com/downloads_mailsort_user_guide.cfm">http://www.mailsorttechnical.com/downloads_mailsort_user_guide.cfm</a></p>
+
+<p><a href="http://www.mailsorttechnical.com/docs/mug_jun_2009/MUG_10_2008_Mailsort_700.pdf">http://www.mailsorttechnical.com/docs/mug_jun_2009/MUG_10_2008_Mailsort_700.pdf</a>  page 20</p>
+
+</div>
+
+<pagebreak />
+<div>
+<h3>Human-readable text</h3>
+Human-readable text is only produced as part of the barcode object in EAN-13, ISBN, ISSN, EAN-8, UPC-A and UPC-E. Here is an example to add text to a barcode:
+</div>
+
+<div style="border:1px solid #555555; background-color: #DDDDDD; padding: 1em; font-size:8pt; font-family: lucidaconsole, mono;">
+
+&lt;div style="position:fixed; right: 50mm; top: 60mm; border: 0.2mm solid #000000; text-align: center; padding: 0.5mm; padding-top: 2mm;"&gt;<br />
+&lt;barcode code="00034698735346987355" type="EAN128C" /&gt;&lt;br /&gt;<br />
+&lt;div style="font-family: ocrb;"&gt;(00) 0346987 35346987 355&lt;/div&gt;<br />
+&lt;/div&gt;
+
+</div>
+
+<div style="position:fixed; right: 50mm; top: 60mm; border: 0.2mm solid #000000; text-align: center; padding: 0.5mm; padding-top: 2mm;">
+<barcode code="00034698735346987355" type="EAN128C" /><br />
+<div style="font-family: ocrb;">(00) 0346987 35346987 355</div>
+</div>
+
+</body>
+</html>
+';
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('','','','',20,15,25,25,10,10); 
+$mpdf->WriteHTML($html);
+$mpdf->Output(); 
+
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php b/inc/3rdparty/libraries/mpdf/examples/example38_dot_tab.php
new file mode 100644 (file)
index 0000000..7342cc8
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+
+
+$html = '
+<style>
+dottab.menu {
+       outdent: 4em;
+}
+p.menu {
+       text-align: left;
+       padding-right: 4em;
+}
+</style>
+
+<h3>Menu</h3>
+
+<div style="border: 0.2mm solid #000088; padding: 1em;">
+<p class="menu">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus <dottab class="menu" />&nbsp;&pound;37.00</p>
+
+<p class="menu">Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat <dottab class="menu" />&nbsp;&pound;3700.00</p>
+
+<p class="menu">Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus <dottab class="menu" />&nbsp;&pound;27.00</p>
+
+<p class="menu">Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod <dottab class="menu" />&nbsp;&pound;7.00</p>
+
+<p class="menu">Donec et nulla. Sed quis orci <dottab class="menu" />&nbsp;&pound;1137.00</p>
+</div>
+';
+
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+
+exit;
+
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php b/inc/3rdparty/libraries/mpdf/examples/example39_PDFA_compliance.php
new file mode 100644 (file)
index 0000000..f43b023
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+
+
+
+$html = '
+<h1>mPDF</h1>
+<h2>PDFA Compliance</h2>
+<p>PDF/A1-b is a file format for the long-term archiving of electronic documents. This is an example of a PDF/A1-b compliant files.</p>
+';
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->PDFA = true;
+$mpdf->PDFAauto = true;
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php b/inc/3rdparty/libraries/mpdf/examples/example40_MPDFI_thumbnails.php
new file mode 100644 (file)
index 0000000..709ea8d
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+$mpdf->SetImportUse(); 
+
+$mpdf->Thumbnail('sample_orientation2.pdf', 4, 5);     // number per row       // spacing in mm
+
+$mpdf->WriteHTML('<pagebreak /><div>Now with rotated pages</div>');
+
+$mpdf->Thumbnail('sample_orientation3.pdf', 4);        // number per row       // spacing in mm
+
+
+$mpdf->Output();
+
+exit;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php b/inc/3rdparty/libraries/mpdf/examples/example41_MPDFI_template.php
new file mode 100644 (file)
index 0000000..12f592d
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('','','','',15,15,57,16,9,9); 
+$mpdf->SetImportUse(); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->SetCompression(false);
+
+// Add First page
+$pagecount = $mpdf->SetSourceFile('sample_basic.pdf');
+
+$crop_x = 50;
+$crop_y = 50;
+$crop_w = 100;
+$crop_h = 100;
+
+$tplIdx = $mpdf->ImportPage(2, $crop_x, $crop_y, $crop_w, $crop_h);
+
+$x = 50;
+$y = 50;
+$w = 100;
+$h = 100;
+
+$mpdf->UseTemplate($tplIdx, $x, $y, $w, $h);
+
+$mpdf->Rect($x, $y, $w, $h);
+
+$mpdf->Output('newpdf.pdf', 'I');
+
+exit;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php b/inc/3rdparty/libraries/mpdf/examples/example42_MPDFI_templatedoc.php
new file mode 100644 (file)
index 0000000..2b670ca
--- /dev/null
@@ -0,0 +1,35 @@
+<?php
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('','','','',15,15,47,16,9,9); 
+$mpdf->SetImportUse(); 
+
+$mpdf->SetDocTemplate('sample_logoheader2.pdf',1);     // 1|0 to continue after end of document or not - used on matching page numbers
+
+//===================================================
+$mpdf->AddPage();
+$mpdf->WriteHTML('Hallo World');
+$mpdf->AddPage();
+$mpdf->WriteHTML('Hallo World');
+$mpdf->AddPage();
+$mpdf->WriteHTML('Hallo World');
+//===================================================
+
+$mpdf->RestartDocTemplate();
+
+//===================================================
+$mpdf->AddPage();
+$mpdf->WriteHTML('Hallo World');
+$mpdf->AddPage();
+$mpdf->WriteHTML('Hallo World');
+$mpdf->AddPage();
+$mpdf->WriteHTML('Hallo World');
+//===================================================
+
+
+$mpdf->Output();
+
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php b/inc/3rdparty/libraries/mpdf/examples/example43_MPDFI_booklet.php
new file mode 100644 (file)
index 0000000..8144a3a
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+
+$html = '
+<html><head>
+       <meta http-equiv="Content-Language" content="en-GB">
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+       <style>
+               body { font-family:"Times New Roman"; font-size:14pt; }
+               p { margin: 0; }
+       </style>
+</head><body>
+
+<!-- SECTION 1 -->
+<h1>mPDF Example Booklet</h1>
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+<p>Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+
+<h4>Little Women - Chapter One - Playing Pilgrims</h4>
+
+<p> Christmas won\'t be Christmas without any presents,  grumbled Jo, lying on the rug.</p><p> It\'s so dreadful to be poor!  sighed Meg, looking down at her old dress.</p><p> I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all,  added little Amy, with an injured sniff.</p><p> We\'ve got Father and Mother, and each other,  said Beth contentedly from her corner.</p><p>The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly,  We haven\'t got Father, and shall not have him for a long time.  She didn\'t say  perhaps never,  but each silently added it, thinking of Father far away, where the fighting was.</p><p>Nobody spoke for a minute; then Meg said in an altered tone,  You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t  And Meg shook her head, as she thought regretfully of all the pretty things she wanted.</p><p> But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long,  said Jo, who was a bookworm.</p><p> I planned to spend mine in new music,  said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.</p><p> I shall get a nice box of Faber\'s drawing pencils. I really need them,  said Amy decidedly.</p><p> Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it,  cried Jo, examining the heels of her shoes in a gentlemanly manner.</p><p> I know I do&mdash;teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home,  began Meg, in the complaining tone again.</p><p> You don\'t have half such a hard time as I do,  said Jo.  How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry? </p><p> It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world.  It makes me cross, and my hands get so stiff, I can\'t practice well at all.  And Beth looked at her rough hands with a sigh that any one could hear that time.</p><p> I don\'t believe any of you suffer as I do,  cried Amy,  for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice. </p><p> If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle,  advised Jo, laughing.</p><p> I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary,  returned Amy, with dignity.</p><p> Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries!  said Meg, who could remember better times.</p><p> You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money. </p><p> So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say. </p><p> Jo does use such slang words!   observed Amy, with a reproving look at the long figure stretched on the rug.</p><p>Jo immediately sat up, put her hands in her pockets, and began to whistle.</p><p> Don\'t, Jo. It\'s so boyish! </p><p> That\'s why I do it. </p><p> I detest rude, unladylike girls! </p><p> I hate affected, niminy-piminy chits! </p><p> Birds in their little nests agree,  sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the  pecking  ended for that time.</p><p> Really, girls, you are both to be blamed,  said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady. </p><p> I\'m not!  And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty,  cried Jo, pulling off her net, and shaking down a chestnut mane.   I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman! </p><p>And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.</p><p> Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls,  said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.</p><p> As for you, Amy,  continued Meg,  you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang. </p><p> If Jo is a tomboy and Amy a goose, what am I, please?  asked Beth, ready to share the lecture.</p><p> You\'re a dear, and nothing else,  answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.</p>
+
+<h4>Little Women - Chapter One - Playing Pilgrims</h4>
+
+<p> Christmas won\'t be Christmas without any presents,  grumbled Jo, lying on the rug.</p><p> It\'s so dreadful to be poor!  sighed Meg, looking down at her old dress.</p><p> I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all,  added little Amy, with an injured sniff.</p><p> We\'ve got Father and Mother, and each other,  said Beth contentedly from her corner.</p><p>The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly,  We haven\'t got Father, and shall not have him for a long time.  She didn\'t say  perhaps never,  but each silently added it, thinking of Father far away, where the fighting was.</p><p>Nobody spoke for a minute; then Meg said in an altered tone,  You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t  And Meg shook her head, as she thought regretfully of all the pretty things she wanted.</p><p> But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long,  said Jo, who was a bookworm.</p><p> I planned to spend mine in new music,  said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.</p><p> I shall get a nice box of Faber\'s drawing pencils. I really need them,  said Amy decidedly.</p><p> Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it,  cried Jo, examining the heels of her shoes in a gentlemanly manner.</p><p> I know I do&mdash;teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home,  began Meg, in the complaining tone again.</p><p> You don\'t have half such a hard time as I do,  said Jo.  How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry? </p><p> It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world.  It makes me cross, and my hands get so stiff, I can\'t practice well at all.  And Beth looked at her rough hands with a sigh that any one could hear that time.</p><p> I don\'t believe any of you suffer as I do,  cried Amy,  for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice. </p><p> If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle,  advised Jo, laughing.</p><p> I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary,  returned Amy, with dignity.</p><p> Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries!  said Meg, who could remember better times.</p><p> You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money. </p><p> So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say. </p><p> Jo does use such slang words!   observed Amy, with a reproving look at the long figure stretched on the rug.</p><p>Jo immediately sat up, put her hands in her pockets, and began to whistle.</p><p> Don\'t, Jo. It\'s so boyish! </p><p> That\'s why I do it. </p><p> I detest rude, unladylike girls! </p><p> I hate affected, niminy-piminy chits! </p><p> Birds in their little nests agree,  sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the  pecking  ended for that time.</p><p> Really, girls, you are both to be blamed,  said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady. </p><p> I\'m not!  And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty,  cried Jo, pulling off her net, and shaking down a chestnut mane.   I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman! </p><p>And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.</p><p> Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls,  said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.</p><p> As for you, Amy,  continued Meg,  you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang. </p><p> If Jo is a tomboy and Amy a goose, what am I, please?  asked Beth, ready to share the lecture.</p><p> You\'re a dear, and nothing else,  answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.</p>
+
+</body></html>';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
+
+$mpdf->mirrorMargins = 1;
+$mpdf->SetDisplayMode('fullpage','two');
+$mpdf->useOnlyCoreFonts = true;
+$mpdf->defaultfooterfontsize = 13;
+$mpdf->AddPage();
+$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture
+$mpdf->y = 70;
+$mpdf->Shaded_box('mPDF Example File', 'Arial', '', 28, '70%', 'DF', 3, '#FFFFFF', '#000044', 10);
+
+$mpdf->AddPage();
+$mpdf->SetFooter('{PAGENO}');
+$mpdf->WriteHTML($html);
+
+
+$mpdf->AddPage('','NEXT-EVEN');        
+$mpdf->SetFooter();
+$mpdf->SetAlpha(0.5); 
+$mpdf->Image('clematis.jpg',0,0,210,297,'jpg','',true, false); // e.g. the last "false" allows a full page picture
+$mpdf->SetAlpha(1);
+$mpdf->writeBarcode('978-0-9542246-0-8', 1, 130, 230, 1,0, 3,3,4,4);   
+
+// Save the pages to a file
+$mpdf->Output('test.pdf','F');
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+function GetBookletPages($np, $backcover=true) {
+       $lastpage = $np;
+       $np = 4*ceil($np/4);
+       $pp = array();
+       for ($i=1; $i<=$np/2; $i++) {
+               $p1 = $np - $i + 1;
+               if ($backcover) {       
+                       if ($i == 1) { $p1 = $lastpage; }
+                       else if ($p1 >= $lastpage) { $p1 = 0; }
+               }
+               if ($i % 2 == 1) { 
+                       $pp[] = array( $p1,  $i ); 
+               }
+               else { 
+                       $pp[] = array( $i, $p1 ); 
+               }
+       }
+       return $pp;
+}
+
+
+
+$mpdf=new mPDF('','A4-L','','',0,0,0,0,0,0); 
+$mpdf->SetImportUse(); 
+$ow = $mpdf->h;
+$oh = $mpdf->w;
+$pw = $mpdf->w / 2;
+$ph = $mpdf->h;
+
+$mpdf->SetDisplayMode('fullpage');
+
+$pagecount = $mpdf->SetSourceFile('test.pdf');
+$pp = GetBookletPages($pagecount);
+
+foreach($pp AS $v) {
+       $mpdf->AddPage(); 
+       if ($v[0]>0 && $v[0]<=$pagecount) {
+               $tplIdx = $mpdf->ImportPage($v[0], 0,0,$ow,$oh);
+               $mpdf->UseTemplate($tplIdx, 0, 0, $pw, $ph);
+       }
+       if ($v[1]>0 && $v[1]<=$pagecount) {
+               $tplIdx = $mpdf->ImportPage($v[1], 0,0,$ow,$oh);
+               $mpdf->UseTemplate($tplIdx, $pw, 0, $pw, $ph);
+       }
+}
+
+$mpdf->Output();
+
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php b/inc/3rdparty/libraries/mpdf/examples/example44_MPDFI_yearbook.php
new file mode 100644 (file)
index 0000000..2420b9f
--- /dev/null
@@ -0,0 +1,150 @@
+<?php
+
+// First write all your entries to a PDF file, forcing each entry to fit on one page
+include("../mpdf.php");
+
+// Define the maximum containing box width & height for each text box as it will appear on the final page (no padding or margin here)
+$pw = 80;
+$ph = 110;
+$minK = 0.7;   // Maximum scaling factor 0.7 = 70%
+$inc = 0.01;   // Increment to change scaling factor 0.05 = 5%
+$spacing = 10; // millimetres (vertically and horizonatlly between boxes in output) shrinks if boxes too big
+$border = 3;   // millimetres round final boxes (-1 for no border)
+$align = 'T';  // T(op) or M(iddle) for content of final output boxes
+
+// Only change the first parameter of the next line e.g. utf-8
+$mpdf = new mPDF('', array(($pw*(1/$minK)),($ph*(1/$minK))), '','', 0,($pw*(1/$minK))-$pw,0,($ph*(1/$minK))-$ph,0,0);
+
+$pph = array();
+
+
+// FOR EACH ENTRY FOR YOUR YEARBOOK saving the page height in $pph (where $html is the HTML code for the entry):
+//     $pph[$i] = SinglePage($html, $pw, $ph, $minK);
+
+//==============================================================
+// .. but we will use this for an example
+
+$html1 = '
+<style>
+div { text-align: justify; }
+</style>
+<h2>Joanne Smith 2002-2007</h2><div>This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, <img src="tiger.wmf" width="100" style="float: right; margin: 4px; " /> risus at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed,<img src="tiger.jpg" width="100" style="float: left; margin: 4px; " /> nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </div>
+';
+
+$html2 = '
+<style>
+div { text-align: justify; }
+</style>
+<h2>Tim Another 2001-2007</h2><div>This is the normal text in the div: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque, <img src="tiger.jpg" width="100" style="float: right; margin: 4px; " /> risus at eleifend lacus sapien et risus. Phasellus metus, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci.  <br />
+Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </div>
+';
+
+for($i=1; $i<=10; $i++) {
+       // $html = $html;
+       if ($i % 3 == 1) { $html = $html2; }
+       else { $html = $html1; }
+       $pph[$i] = SinglePage($html, $pw, $ph, $minK) ; // $pph saves the actual height of each page
+}
+//==============================================================
+// Save the pages to a file
+$mpdf->Output('test.pdf','F');
+
+// Now collate those pages using IMPORT - 4 pages to one page
+
+$mpdf=new mPDF(); 
+$mpdf->SetImportUse(); 
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->SetHeader('{DATE j-m-Y}|My Yearbook 2005|{PAGENO}');
+$mpdf->SetFooter('|Printed using mPDF|');
+
+$pagecount = $mpdf->SetSourceFile('test.pdf');
+for($i=1; $i<=$pagecount; $i++) {
+       if ($i % 4 == 1) { $mpdf->AddPage(); }
+       $pgheight = $mpdf->h - $mpdf->tMargin - $mpdf->bMargin;
+       $hspacing = min($spacing,($mpdf->pgwidth - $pw*2) );
+       $vspacing = min($spacing,($pgheight - $ph*2) );
+       $x1 = $mpdf->lMargin + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2;
+       $x2 = $mpdf->lMargin + $mpdf->pgwidth/2 + $hspacing/2 + ($mpdf->pgwidth/2 - $hspacing/2 - $pw)/2;
+       $y1 = $mpdf->tMargin + ($pgheight /2 - $vspacing/2 - $ph)/2;
+       $y2 = $mpdf->tMargin + $pgheight /2 + $vspacing/2 + ($pgheight /2 - $vspacing/2 - $ph)/2;
+       if ($i % 4 == 1) { $x = $x1; $y = $y1; }
+       else if ($i % 4 == 2) { $x = $x2; $y = $y1; }
+       else if ($i % 4 == 3) { $x = $x1; $y = $y2; }
+       else if ($i % 4 == 0) { $x = $x2; $y = $y2; }
+       $tplIdx = $mpdf->ImportPage($i, 0,0,$pw,$pph[$i]);
+
+       if ($align=='T') { $mpdf->UseTemplate($tplIdx, $x, $y, $pw, $pph[$i]); }
+       else { $mpdf->UseTemplate($tplIdx, $x, ($y + (($ph - $pph[$i])/2)), $pw, $pph[$i]); }
+
+       if ($border >= 0) { $mpdf->Rect($x-$border, $y-$border, $pw+2*$border, $ph+2*$border); }
+}
+
+$mpdf->Output();
+
+exit;
+
+//==============================================================
+function SinglePage($html, $pw, $ph, $minK=1, $inc=0.1) {
+// returns height of page
+global $mpdf;
+       $mpdf->AddPage('','','','','','',($mpdf->w - $pw),'',($mpdf->h - $ph),0,0);
+       $k = 1;
+
+       $currpage = $mpdf->page;
+       $mpdf->WriteHTML($html);
+
+       $newpage = $mpdf->page;
+       while($currpage != $newpage) {
+               for($u=0;$u<=($newpage-$currpage);$u++) {
+                       // DELETE PAGE - the added page
+                       unset($mpdf->pages[$mpdf->page]);
+                       if (isset($mpdf->ktAnnots[$mpdf->page])) { unset( $mpdf->ktAnnots[$mpdf->page] ); }
+                       if (isset($mpdf->tbrot_Annots[$mpdf->page])) { unset( $mpdf->tbrot_Annots[$mpdf->page] ); }
+                       if (isset($mpdf->kwt_Annots[$mpdf->page])) { unset( $mpdf->kwt_Annots[$mpdf->page] ); }
+                       if (isset($mpdf->PageAnnots[$mpdf->page])) { unset( $mpdf->PageAnnots[$mpdf->page] ); }
+                       if (isset($mpdf->ktBlock[$mpdf->page])) { unset( $mpdf->ktBlock[$mpdf->page] ); }
+                       if (isset($mpdf->PageLinks[$mpdf->page])) { unset( $mpdf->PageLinks[$mpdf->page] ); }
+                       if (isset($mpdf->pageoutput[$mpdf->page])) { unset( $mpdf->pageoutput[$mpdf->page] ); }
+                       // Go to page before  - so can addpage
+                       $mpdf->page--;
+               }
+               // mPDF 2.4 Float Images
+               if (count($mpdf->floatbuffer)) {
+                       $mpdf->objectbuffer[] = $mpdf->floatbuffer['objattr'];
+                       $mpdf->printobjectbuffer(false);
+                       $mpdf->objectbuffer = array();
+                       $mpdf->floatbuffer = array();
+                       $mpdf->float = false;
+               }
+
+
+               $k += $inc;
+               if ((1/$k) < $minK) { die("Page no. ".$mpdf->page." is too large to fit"); }
+               $w = $pw * $k;
+               $h = $ph * $k;
+               $mpdf->_beginpage('','',($mpdf->w - $w),'',($mpdf->h - $h));
+               $currpage = $mpdf->page;
+
+               $mpdf->_out('2 J');
+               $mpdf->_out(sprintf('%.2f w',0.1*$mpdf->k));
+               $mpdf->SetFont($mpdf->default_font,'',$mpdf->default_font_size ,true,true);     // forces write
+               $mpdf->SetDrawColor(0);
+               $mpdf->SetFillColor(255);
+               $mpdf->SetTextColor(0);
+               $mpdf->ColorFlag=false;
+
+               // Start Transformation
+               $mpdf->StartTransform();
+               $mpdf->transformScale((100/$k), (100/$k), 0, 0);
+
+               $mpdf->WriteHTML($html);
+
+               $newpage = $mpdf->page;
+
+               //Stop Transformation
+               $mpdf->StopTransform();
+       }
+       return ($mpdf->y / $k);
+}
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php b/inc/3rdparty/libraries/mpdf/examples/example46_progress_bars_simple.php
new file mode 100644 (file)
index 0000000..a0bddac
--- /dev/null
@@ -0,0 +1,1595 @@
+<?php
+
+//==============================================================
+//==============================================================
+define("_JPGRAPH_PATH", '../../jpgraph_5/jpgraph/'); // must define this before including mpdf.php file
+$JpgUseSVGFormat = true;
+
+define('_MPDF_URI','../');     // must be  a relative or absolute URI - not a file system path
+//==============================================================
+//==============================================================
+
+
+ini_set("memory_limit","64M");
+
+$html = '
+<html><head>
+       <meta http-equiv="Content-Language" content="en-GB">
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+       <style>
+               body { font-family:"Times New Roman"; font-size:10pt; }
+               p.littlewomen { margin: 0; font-family: sans-serif; text-align: justify; }
+
+               h1, h2, h3, h4, h5, h6 { font-family: DejaVuSansCondensed; }
+               table {font-family: DejaVuSansCondensed; font-size: 9pt; line-height: 1.2;
+                       vertical-align: top; 
+                       margin-top: 2pt; margin-bottom: 5pt;
+                       border-collapse: collapse;  }
+
+               thead { font-weight: bold; vertical-align: bottom; }
+
+               th {    font-weight: bold; 
+                       text-align:left; 
+                       padding-left: 2mm; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm; 
+                }
+
+               td {    padding-left: 2mm; 
+                       text-align:left; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm;
+                }
+
+               th p { text-align: left; margin:0pt;  }
+               td p { text-align: left; margin:0pt;  }
+
+               table.widecells td {
+                       padding-left: 5mm;
+                       padding-right: 5mm;
+               }
+               table.tallcells td {
+                       padding-top: 3mm;
+                       padding-bottom: 3mm;
+               }       .sub td { vertical-align:top; border-top:0px; border-bottom:0px; padding:2px; padding-right:8px; 
+                       margin:0; font-size:9pt; }
+               .sub { align:center; border:#888888 1px solid; }
+               thead td { font-weight: bold; }
+
+               table.nested {
+                       border-collapse: separate;
+                       border: 4px solid #880000;
+                       padding: 3px;
+                       margin: 0px 20px 0px 20px;
+                       empty-cells: hide;
+                       background-color:#FFFFCC;
+               }
+               table.nested td {
+                       border: 1px solid #008800;
+                       padding: 0px;
+                       background-color:#ECFFDF;
+               }
+               table.outer2 {
+                       border-collapse: separate;
+                       border: 4px solid #088000;
+                       padding: 3px;
+                       margin: 10px 0px;
+                       empty-cells: hide;
+                       background-color: yellow;
+               }
+               table.outer2 td {
+                       font-family: Times;
+                       border: 1px solid #008800;
+                       padding: 0px;
+                       background-color:#ECFFDF;
+               }
+               table.inner {
+                       border-collapse: collapse;
+                       border: 2px solid #000088;
+                       padding: 3px;
+                       margin: 5px;
+                       empty-cells: show;
+                       background-color:#FFCCFF;
+               }
+               table.inner td {
+                       border: 1px solid #000088;
+                       padding: 0px;
+                       font-family: monospace;
+                       font-style: italic;
+                       font-weight: bold;
+                       color: #880000;
+                       background-color:#FFECDF;
+               }
+               table.collapsed {
+                       border-collapse: collapse;
+               }
+               table.collapsed td {
+                       background-color:#EDFCFF;
+               }
+               .headerrow td, .headerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+               .footerrow td, .footerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+
+               .evenrow td, .evenrow th { background-color: #f5f8f5; } 
+               .oddrow td, .oddrow th { background-color: #e3ece4; } 
+
+               .bpmTopic {     background-color: #e3ece4; }
+               .bpmTopicC { background-color: #e3ece4; }
+               .bpmNoLines { background-color: #e3ece4; }
+               .bpmNoLinesC { background-color: #e3ece4; }
+               .bpmClear {             }
+               .bpmClearC { text-align: center; }
+               .bpmTopnTail { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailC { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailClear { topntail: 0.02cm solid #495b4a; }
+               .bpmTopnTailClearC { topntail: 0.02cm solid #495b4a; }
+
+               .bpmTopicC td, .bpmTopicC td p { text-align: center; }
+               .bpmNoLinesC td, .bpmNoLinesC td p { text-align: center; }
+               .bpmClearC td, .bpmClearC td p { text-align: center; }
+               .bpmTopnTailC td, .bpmTopnTailC td p { text-align: center;  }
+               .bpmTopnTailClearC td, .bpmTopnTailClearC td p {  text-align: center;  }
+
+               .pmhMiddleCenter { text-align:center; vertical-align:middle; }
+               .pmhMiddleRight {       text-align:right; vertical-align:middle; }
+               .pmhBottomCenter { text-align:center; vertical-align:bottom; }
+               .pmhBottomRight {       text-align:right; vertical-align:bottom; }
+               .pmhTopCenter { text-align:center; vertical-align:top; }
+               .pmhTopRight {  text-align:right; vertical-align:top; }
+               .pmhTopLeft {   text-align:left; vertical-align:top; }
+               .pmhBottomLeft {        text-align:left; vertical-align:bottom; }
+               .pmhMiddleLeft {        text-align:left; vertical-align:middle; }
+
+               .bpmTopic td, .bpmTopic th  {   border-top: 1px solid #FFFFFF; }
+               .bpmTopicC td, .bpmTopicC th  { border-top: 1px solid #FFFFFF; }
+               .bpmTopnTail td, .bpmTopnTail th  {     border-top: 1px solid #FFFFFF; }
+               .bpmTopnTailC td, .bpmTopnTailC th  {   border-top: 1px solid #FFFFFF; }
+               .lista { list-style-type: upper-roman; }
+               .listb{ list-style-type: decimal; font-family: sans-serif; color: blue; font-weight: bold; font-style: italic; font-size: 19pt; }
+               .listc{ list-style-type: upper-alpha; text-indent: 25mm; }
+               .listd{ list-style-type: lower-alpha; color: teal; line-height: 2; }
+               .liste{ list-style-type: disc; }
+
+               .roundgradient {
+                       border:0.05mm solid #220044; 
+                       background-color: #f0f2ff;
+                       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+                       border-radius: 10mm / 10mm;
+                       background-clip: border-box;
+                       padding: 3.3mm;
+               }
+               .phpcode {
+                       border:1px solid #555555; 
+                       background-color: #DDDDDD; 
+                       padding: 1em; 
+                       font-size:8pt; 
+                       font-family: lucidaconsole, mono;
+               }
+       </style>
+</head><body>
+
+<!-- DEFINE HEADERS & FOOTERS -->
+<htmlpageheader name="myHTMLHeaderOdd">
+<div style="font-family:sans-serif; background-color:#BBEEFF" align="center"><b>mPDF Example File</b></div>
+</htmlpageheader>
+<htmlpageheader name="myHTMLHeaderEven">
+<div style="font-family:sans-serif; background-color:#EFFBBE" align="center"><b><i>mPDF Example File</i></b></div>
+</htmlpageheader>
+<htmlpagefooter name="myHTMLFooterOdd" style="display:none">
+<div style="font-family:sans-serif; background-color:#CFFFFC" align="center"><b>{PAGENO}/{nbpg}</b></div>
+</htmlpagefooter>
+<htmlpagefooter name="myHTMLFooterEven" style="display:none">
+<div style="font-family:sans-serif; background-color:#FFCCFF" align="center"><b><i>{PAGENO}/{nbpg}</i></b></div>
+</htmlpagefooter>
+
+<pagefooter name="myFooter2Odd" content-left="" content-center="mPDF Example File" content-right="{PAGENO}/{nbpg}" footer-style="font-family:sans-serif; font-size:9pt; font-weight:bold; color:#000088;" footer-style-right="font-weight: bold;" line="on" />
+
+<pagefooter name="myFooter2Even" content-left="{PAGENO}/{nbpg}" content-center="mPDF Example File" content-right="{DATE j-m-Y}" footer-style="font-family:sans-serif; font-size:10pt; color:#880000;" footer-style-left="font-weight:bold;" line="on" />
+
+
+<!-- FRONT COVER -->
+<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;">
+<img src="clematis.jpg" style="width: 210mm; height: 297mm; margin: 0;" />
+</div>
+
+<div style="position: absolute; left:32mm; right: 25mm; top: 70mm; width: 58%; margin-right: auto; margin-left:auto; ">
+<div style="padding: 1em; font-family: Arial; font-weight: bold; font-size: 28pt; border: 3px solid #000044; border-radius: 5mm; background-clip: border-box; color: #000044; background-color: #FFFFFF;">
+mPDF Example File
+</div>
+</div>
+
+<pagebreak />
+
+<p>The front cover can also be produced like this:</p>
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false);
+// the last "false" allows a full page picture
+
+$mpdf->y = 70;
+$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10);
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+
+<!-- TABLES OF CONTENTS -->
+<tocpagebreak toc-preHTML="&lt;h2&gt;CONTENTS&lt;/h2&gt;" links="1" toc-bookmarkText="Contents" resetpagenum="1" pagenumstyle="1" 
+odd-header-name="html_myHTMLHeaderOdd" odd-header-value="1" even-header-name="html_myHTMLHeaderEven" even-header-value="1" odd-footer-name="myFooter2Odd" odd-footer-value="1" even-footer-name="myFooter2Even" even-footer-value="1" />
+
+<tocpagebreak name="Figures" toc-preHTML="&lt;h2&gt;FIGURES&lt;/h2&gt;" links="1" toc-bookmarkText="Figures" />
+
+<tocpagebreak name="Tables" toc-preHTML="&lt;h2&gt;TABLES&lt;/h2&gt;" links="1"  toc-bookmarkText="Tables" />
+
+
+
+<!-- SECTION 1 -->
+<h1>(H1) mPDF</h1>
+<h2>(H2) Section 1<bookmark content="Section 1" level="0" /></h2>
+<h3>(H3) HTML Markup<bookmark content="HTML Markup" level="1" /><tocentry name="" content="HTML Markup" level="0" /><indexentry content="HTML Markup"  /></h3>
+
+<tocentry name="" content="HTML Markup" level="1" />
+<tocentry name="" content="HTML Markup" level="2" />
+
+<h4>Heading 4</h4>
+<h5>Heading 5</h5>
+<h6>Heading 6</h6>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<hr />
+
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+
+<blockquote>Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.</blockquote>
+
+<address>Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.</address>
+
+<pre>PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
+nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
+dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
+sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
+Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
+ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.</pre>
+
+<div><a href="http://mpdf.bpm1.com/manual/">Hyperlink (&lt;a&gt;)</a></div>
+
+<div>Styles - <tt>tt(teletype)</tt> <i>italic</i> <b>bold</b> <big>big</big> <small>small</small> <em>emphasis</em> <strong>strong</strong> <br />new lines<br>
+<code>code</code> <samp>sample</samp> <kbd>keyboard</kbd> <var>variable</var> <cite>citation</cite> <abbr>abbr.</abbr> <acronym>ACRONYM</acronym> <sup>sup</sup> <sub>sub</sub> <strike>strike</strike> <s>strike-s</s> <u>underline</u> <del>delete</del> <ins>insert</ins> <q>To be or not to be</q> <font face="sans-serif" color="#880000" size="5">font changing face, size and color</font>
+</div>
+
+<p style="font-size:15pt; color:#440066">Paragraph using the in-line style to determine the font-size (15pt) and colour</p>
+
+
+<h3>Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT</h3>
+<p>This is <s>strikethrough</s> in <b><s>block</s></b> and <small>small <s>strikethrough</s> in <i>small span</i></small> and <big>big <s>strikethrough</s> in big span</big> and then <u>underline and <s>strikethrough and <sup>sup</sup></s></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p>This is a <font color="#008800">green reference<sup>32-47</sup></font> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p> 
+
+<p><big>Repeated in <u>BIG</u>: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p> 
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p>
+
+<p>The above repeated, but starting with a paragraph with font-size specified (7pt)</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <small>small <s>strikethrough</s> in small span</small> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <big>big <s>strikethrough</s> in big span</big> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p>
+
+<p><small>This tests <u>underline</u> and <s>strikethrough</s> when they are <s><u>used together</u></s> as they both use text-decoration</small></p>
+
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p> 
+
+<p style="font-size:7pt;"><big>Repeated in BIG but with font-size set to 7pt by in-line css: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p>
+
+<ol>
+<li>Item <b><u>1</u></b></li>
+<li>Item 2<sup>32</sup></li>
+<li><small>Item</small> 3</li>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. 
+<ul>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. </li>
+<li>Subitem 2
+<ul>
+<li>
+Level 3 subitem
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 5</li>
+</ol>
+
+<p>Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+<tocentry name="Tables" content="Basic table" level="0" />
+<table border="1" cellpadding="5">
+<thead>
+<tr>
+<th>Data</th>
+<th>Data</th>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+<th>More Data</th>
+<td>More Data</td>
+<td>More Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</tbody>
+</table>
+
+This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding.
+<p class="roundgradient">Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+
+
+
+<!-- HYPHENATION -->
+<pagebreak />
+<h3>Hyphenation<bookmark content="Hyphenation" level="1" /><tocentry name="" content="Hyphenation" level="0" /><indexentry content="Hyphenation"  /></h3>
+
+<h4>Little Women - Chapter One - Playing Pilgrims</h4>
+<columns column-count="4" vAlign="J" column-gap="7" />
+
+<p class="littlewomen"> Christmas won\'t be Christmas without any presents,  grumbled Jo, lying on the rug.</p><p class="littlewomen"> It\'s so dreadful to be poor!  sighed Meg, looking down at her old dress.</p><p class="littlewomen"> I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all,  added little Amy, with an injured sniff.</p><p class="littlewomen"> We\'ve got Father and Mother, and each other,  said Beth contentedly from her corner.</p><p class="littlewomen">The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly,  We haven\'t got Father, and shall not have him for a long time.  She didn\'t say  perhaps never,  but each silently added it, thinking of Father far away, where the fighting was.</p><p class="littlewomen">Nobody spoke for a minute; then Meg said in an altered tone,  You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t  And Meg shook her head, as she thought regretfully of all the pretty things she wanted.</p><p class="littlewomen"> But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long,  said Jo, who was a bookworm.</p><p class="littlewomen"> I planned to spend mine in new music,  said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.</p><p class="littlewomen"> I shall get a nice box of Faber\'s drawing pencils. I really need them,  said Amy decidedly.</p><p class="littlewomen"> Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it,  cried Jo, examining the heels of her shoes in a gentlemanly manner.</p><p class="littlewomen"> I know I do&mdash;teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home,  began Meg, in the complaining tone again.</p><p class="littlewomen"> You don\'t have half such a hard time as I do,  said Jo.  How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry? </p><p class="littlewomen"> It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world.  It makes me cross, and my hands get so stiff, I can\'t practice well at all.  And Beth looked at her rough hands with a sigh that any one could hear that time.</p><p class="littlewomen"> I don\'t believe any of you suffer as I do,  cried Amy,  for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice. </p><p class="littlewomen"> If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle,  advised Jo, laughing.</p><p class="littlewomen"> I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary,  returned Amy, with dignity.</p><p class="littlewomen"> Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries!  said Meg, who could remember better times.</p><p class="littlewomen"> You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money. </p><p class="littlewomen"> So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say. </p><p class="littlewomen"> Jo does use such slang words!   observed Amy, with a reproving look at the long figure stretched on the rug.</p><p class="littlewomen">Jo immediately sat up, put her hands in her pockets, and began to whistle.</p><p class="littlewomen"> Don\'t, Jo. It\'s so boyish! </p><p class="littlewomen"> That\'s why I do it. </p><p class="littlewomen"> I detest rude, unladylike girls! </p><p class="littlewomen"> I hate affected, niminy-piminy chits! </p><p class="littlewomen"> Birds in their little nests agree,  sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the  pecking  ended for that time.</p><p class="littlewomen"> Really, girls, you are both to be blamed,  said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady. </p><p class="littlewomen"> I\'m not!  And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty,  cried Jo, pulling off her net, and shaking down a chestnut mane.   I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman! </p><p class="littlewomen">And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.</p><p class="littlewomen"> Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls,  said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.</p><p class="littlewomen"> As for you, Amy,  continued Meg,  you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang. </p><p class="littlewomen"> If Jo is a tomboy and Amy a goose, what am I, please?  asked Beth, ready to share the lecture.</p><p class="littlewomen"> You\'re a dear, and nothing else,  answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.</p>
+
+<columns column-count="1" />
+
+
+
+
+
+
+<!-- LISTS -->
+<pagebreak />
+<h3>Lists<bookmark content="Lists" level="1" /><tocentry name="" content="Lists" level="0" /><indexentry content="Lists"  /></h3>
+<div style="background-color:#ddccff; padding:0pt; border: 1px solid #555555;">
+<ol class="lista">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listb">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.
+</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol>
+<li>No class specified. Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</div>
+
+<!-- TABLES -->
+<pagebreak />
+<h3>Tables<bookmark content="Tables" level="1" /><tocentry name="" content="Tables" level="0" /><tocentry name="Tables" content="Tables - general" level="0" /><indexentry content="Tables"  /></h3>
+<p>mPDF supports all in-line properties inside tables.</p>
+<table border="1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td>
+<td>
+<p>This is data p</p>
+This is data out of p
+<p style="font-weight:bold; font-size:20pt; background-color:#FFBBFF;">This is bold data p</p>
+<b>This is bold data out of p</b><br />
+This is normal data after br
+<h3>Heading 3 inside a table</h3>
+Text here lorem <i>ipsum</i> ibisque totum.<sup>32</sup>
+<div>This is data div</div>
+This is data out of div
+<div style="font-weight:bold;">This is data div (bold)</div>
+This is data out of div
+</td>
+
+<td>Also data</td></tr>
+</tbody></table>
+
+<p>This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line <acronym>CSS</acronym>.</p>
+<table style="border: 1px solid #880000; background-color: #BBCCDD; font-family: Mono; font-size: 7pt; " class="tallcells">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td><td><p>This is data p</p></td><td><p>More data</p></td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+</tbody></table>
+
+
+<h4>Tables<bookmark content="Table styles" level="2" /><tocentry name="Tables" content="Table styles" level="0" /><indexentry content="Table:styles"  /></h4>
+<p>The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that &lt;thead&gt; will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.</p>
+<p>bpmTopic Class</p>
+<table class="bpmTopic"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>More data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopic<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopicC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopnTail Class </p>
+<table class="bpmTopnTail"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+<p>bpmTopnTail<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopnTailC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>TopnTail Class</p>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td class="pmhBottomRight"><b><i>Bottom right align</i></b></td>
+<td>
+<p>This is data. Can use</p>
+<p><b>bold</b> <i>italic </i><sub>sub</sub> or <sup>sup</sup> text</p>
+</td>
+</tr>
+<tr class="oddrow"><th class="pmhBottomRight">
+<p>Bottom right align</p>
+</th>
+<td class="pmhMiddleCenter" style="border: #000000 1px solid">
+<p>This is data. This cell</p>
+<p>uses Cell Styles to set</p>
+<p>the borders.</p>
+<p>All borders are collapsible</p>
+<p>in mPDF.</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 4</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>More data</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td colspan="2" class="pmhTopCenter">Also data merged and centered</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<h4>Lists in a Table<bookmark content="Lists in a table" level="2" /><tocentry name="Tables" content="Lists in a table" level="0" /><indexentry content="Table:lists inside"  /></h4>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<ol>
+<li>Item 1</li>
+<li>Item 2
+<ol type="a">
+<li>Subitem of ordered list</li>
+<li>Subitem 2
+<ol type="i">
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Item 3</li>
+<li>Another Item</li>
+<li>Subitem
+<ol>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+<li>Another Item</li>
+</ol>
+</td>
+<td>
+Unordered list:
+<ul>
+<li>Item 1</li>
+<li>Item 2
+<ul>
+<li>Subitem of unordered list</li>
+<li>Subitem 2
+<ul>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 3</li>
+</ul>
+</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+
+<h4>Automatic Column Width<bookmark content="Automatic Column Width" level="2" /><tocentry name="Tables" content="Automatic column width" level="0" /><indexentry content="Table:automatic column width"  /></h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td>Causes</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.</td>
+</tr>
+</tbody></table>
+
+
+<h4>Column span<bookmark content="Column span" level="2" /><tocentry name="Tables" content="Column span" level="0" /><indexentry content="Table:column span"  /></h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+</tr>
+</tbody></table>
+
+
+
+<h4>Header & Footer Rows<bookmark content="Header Rows" level="2" /><tocentry name="Tables" content="Header rows" level="0" /><indexentry content="Table:header rows"  /></h4>
+<p>A table using a header or footer row should repeat the header/footer row across pages:</p>
+<p>bpmTopic<b>C</b> Class</p>
+<table class="bpmTopicC">
+<thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second column header</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead>
+<tfoot>
+<tr class="headerrow"><th>Col and Row Footer</th>
+<td>
+<p>Second column footer</p>
+</td>
+<td>Third column footer</td>
+</tr>
+</tfoot>
+<tbody>
+<tr><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 2</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 4</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 9</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<h4>Autosizing Tables<bookmark content="Autosizing Tables" level="2" /><tocentry name="Tables" content="Autosizing tables" level="0" /><indexentry content="Table:autosizing"  /></h4>
+<p>Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute &lt;table autosize="1.8"&gt;.</p>
+
+<h5>Periodic Table</h5>
+
+<table style="border:1px solid #000000;" cellPadding="14"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td><td colspan="16"></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr>
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti </td><td>V </td><td>Cr </td><td>Mn </td><td>Fe </td><td>Co </td><td>Ni </td>
+<td>Cu </td><td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td><td>Rh </td><td>Pd </td><td>Ag </td><td>Cd </td>
+<td>In </td><td>Sn </td><td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td><td>Pt </td><td>Au </td>
+<td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td>Ac </td><td colspan="15"></td>
+</tr>
+<tr>
+<td colspan="18"></td></tr>
+<tr>
+<td colspan="3"></td><td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td>
+<td>Dy </td><td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td><td>Cf </td>
+<td>Es </td><td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+
+<pagebreak />
+
+<h4>Rotated Tables<bookmark content="Rotated Tables" level="2" /><tocentry name="Tables" content="Rotated table" level="0" /><indexentry content="Table:rotated"  /></h4>
+<p>This is set to rotate -90 degrees (counterclockwise).</p>
+
+<h5>Periodic Table</h5>
+<p>
+<table rotate="-90" class="bpmClearC"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td><td colspan="15"></td><td></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr>
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti </td><td>V </td><td>Cr </td><td>Mn </td><td>Fe </td><td>Co </td><td>Ni </td><td>Cu </td>
+<td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td><td>Rh </td><td>Pd </td>
+<td>Ag </td><td>Cd </td><td>In </td><td>Sn </td><td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td><td>Pt </td><td>Au </td>
+<td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td>Ac </td>
+</tr>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td><td>Dy </td>
+<td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td>
+<td>Cf </td><td>Es </td><td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<pagebreak />
+<h4>Rotated text in Tables<bookmark content="Rotated text in Tables" level="2" /><tocentry name="Tables" content="Rotated text in table" level="0" /><indexentry content="Table:rotated text"  /></h4>
+
+<h5>Periodic Table</h5>
+<table>
+<thead>
+<tr text-rotate="45">
+<th><p>Element type 1A</p><p>Second line</p><th><p>Element type longer 2A</p></th>
+<th>Element type 3B</th><th>Element type 4B</th><th>Element type 5B</th><th>Element type 6B</th><th>7B</th><th>8B</th>
+<th>Element type 8B R</th><th>8B</th><th>Element <span>type</span> 1B</th><th>2B</th>
+<th>Element type 3A</th><th>Element type 4A</th><th>Element type 5A</th><th>Element type 6A</th><th>7A</th><th>Element type 8A</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td>H</td><td colspan="15"></td><td></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr style="text-rotate: 45">
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti</td><td>Va</td><td>Cr</td><td>Mn</td><td>Fe</td><td>Co</td><td>Ni </td>
+<td>Cu </td><td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td>
+<td style="text-align:right; ">Rh</td><td>Pd </td><td>Ag </td><td>Cd </td><td>In </td><td>Sn </td>
+<td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td>
+<td>Pt </td><td>Au </td><td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td colspan="16">Ac </td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td><td>Dy </td>
+<td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td><td>Cf </td><td>Es </td>
+<td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+
+
+<pagebreak />
+
+
+
+<h4>Nested Tables<bookmark content="Nested Tables" level="2" /><tocentry name="Tables" content="Nested tables" level="0" /><indexentry content="Table:nested"  /></h4>
+
+<div style="border: 2px solid #000088; background-color: #DDDDFF; padding: 2mm;">
+Text before table
+
+<div style="border: 2px solid #008888; background-color: #DCAFCF; padding: 2mm;">
+
+<table cellSpacing="2" rotate="-90" align="center" autosize="1.5" class="nested" style="page-break-inside: avoid; ">
+<tbody>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id <a href="http://www.dummy.com">euismod auctor</a>, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td></td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+</tbody></table>
+
+</div>
+
+
+
+<p>Text before table</p>
+
+<table cellSpacing="2" class="outer2" autosize="3" style="page-break-inside:avoid">
+<tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td style="text-align: right;">
+Text before table
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+<p>Text after table</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 3</td>
+<td style="text-align: center; vertical-align: middle;">
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td style="vertical-align: bottom; ">
+<table cellSpacing="2" class="inner" align="right">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 4</td>
+<td>This is data</td>
+<td><table cellSpacing="2" class="inner">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+</tbody></table>
+
+
+</div>
+
+
+<!-- FORMS -->
+<pagebreak />
+<h3>Forms<bookmark content="Forms" level="1" /><tocentry name="" content="Forms" level="0" /><indexentry content="Forms" /></h3>
+<form>
+<b>Textarea</b>
+<textarea name="authors" rows="5" cols="80" wrap="virtual">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra.
+Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+<b>Select</b>
+<select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select> followed by text
+<br /><br />
+<b>Input Radio</b>
+<input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice 
+<br /><br />
+<b>Input Text</b>
+<input type="text" size="190" name="doi" value="10.1258/jrsm.100.5.211"> 
+<br /><br />
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="secret"> 
+<br /><br />
+<input type="checkbox" name="QPC" value="ON" > Checkboxes<br>
+<input type="checkbox" name="QPA" value="ON" > Not selected<br>
+<input type="checkbox" name="QPA" value="ON" disabled="disabled"> Disabled<br>
+<input type="checkbox" name="QLY" value="ON" checked="checked" > Selected
+<br /><br />
+<input type="submit" name="submit" value="Submit" /> 
+<input type="image" name="submit" src="goto.gif" /> 
+<input type="button" name="submit" value="Button" />
+<input type="reset" name="submit" value="Reset" />
+<br /><br />
+</form>
+
+
+<!-- ANNOTATIONS -->
+<pagebreak />
+<h3>Annotations<bookmark content="Annotations" level="1" /><tocentry name="" content="Annotations" level="0" /><indexentry content="Annotations"  /></h3>
+<p>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate.<annotation content="This is an annotation'."\n".'in the middle of the text" subject="My Subject" icon="Comment" color="#FE88EF" author="Ian Back" /> Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis. </p>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. <i>Fusce</i><annotation content="Fusce is a funny word!" subject="Idle Comments" icon="Note" author="Ian Back" pos-x="198" /> eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+<!-- FULL IMAGES & BARCODE -->
+<pagebreak />
+<h3>Full Images & Barcode<bookmark content="Full Images &amp; Barcode" level="1" /><tocentry name="Figures" content="Full size image & Barcode" level="0" /><indexentry content="Image:full-size"  /><tocentry name="" content="Barcode" level="0" /><indexentry content="Barcode"  /></h3>
+<p>On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".</p>
+
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->SetAlpha(0.5); 
+$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false);
+// the last "false" allows a full page picture
+$mpdf->SetAlpha(1);
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+<p>The back cover also has an ISBN barcode</p>
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); 
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+<p>But next is inserted the Index, which can also be done like this:</p>
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1);        
+$mpdf->WriteHTML(\'<h2>Index<bookmark content="Index" /></h2>\');
+$mpdf->WriteHTML(\'<indexinsert cols="2" font="serif" div-font="sans-serif" links="on" />\');
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+
+
+<!-- INDEX -->
+<pagebreak type="NEXT-ODD" odd-header-value="-1" even-header-value="-1" odd-footer-value="-1" even-footer-value="-1"  />
+<h2>Index<bookmark content="Index" /></h2>
+<indexinsert cols="2" font="serif" div-font="sans-serif" links="on" />
+
+
+
+<!-- BACK COVER & BARCODE -->
+<pagebreak type="NEXT-EVEN" />
+<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;">
+<img src="clematis.jpg" style="width: 210mm; height: 297mm; margin: 0; opacity: 0.5;" />
+</div>
+
+<div style="position: absolute; right: 35mm; bottom: 35mm; ">
+<barcode code="978-0-9542246-0" type="ISBN" style="padding: 2.5mm; border: 0.1mm solid #000000;" height="0.66" text="1" />
+</div>
+
+
+
+</body></html>';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); 
+
+$mpdf->StartProgressBarOutput();
+
+$mpdf->mirrorMargins = 1;
+$mpdf->SetDisplayMode('fullpage','two');
+$mpdf->list_number_suffix = ')';
+$mpdf->hyphenate = true;
+
+$mpdf->debug  = true;
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php b/inc/3rdparty/libraries/mpdf/examples/example47_progress_bars_simple_custom.php
new file mode 100644 (file)
index 0000000..69f11e8
--- /dev/null
@@ -0,0 +1,1609 @@
+<?php
+
+//==============================================================
+//==============================================================
+define("_JPGRAPH_PATH", '../../jpgraph_5/jpgraph/'); // must define this before including mpdf.php file
+$JpgUseSVGFormat = true;
+
+define('_MPDF_URI','../');     // must be  a relative or absolute URI - not a file system path
+//==============================================================
+//==============================================================
+
+
+ini_set("memory_limit","64M");
+
+$html = '
+<html><head>
+       <meta http-equiv="Content-Language" content="en-GB">
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+       <style>
+               body { font-family:"Times New Roman"; font-size:10pt; }
+               p.littlewomen { margin: 0; font-family: sans-serif; text-align: justify; }
+
+               h1, h2, h3, h4, h5, h6 { font-family: DejaVuSansCondensed; }
+               table {font-family: DejaVuSansCondensed; font-size: 9pt; line-height: 1.2;
+                       vertical-align: top; 
+                       margin-top: 2pt; margin-bottom: 5pt;
+                       border-collapse: collapse;  }
+
+               thead { font-weight: bold; vertical-align: bottom; }
+
+               th {    font-weight: bold; 
+                       text-align:left; 
+                       padding-left: 2mm; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm; 
+                }
+
+               td {    padding-left: 2mm; 
+                       text-align:left; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm;
+                }
+
+               th p { text-align: left; margin:0pt;  }
+               td p { text-align: left; margin:0pt;  }
+
+               table.widecells td {
+                       padding-left: 5mm;
+                       padding-right: 5mm;
+               }
+               table.tallcells td {
+                       padding-top: 3mm;
+                       padding-bottom: 3mm;
+               }       .sub td { vertical-align:top; border-top:0px; border-bottom:0px; padding:2px; padding-right:8px; 
+                       margin:0; font-size:9pt; }
+               .sub { align:center; border:#888888 1px solid; }
+               thead td { font-weight: bold; }
+
+               table.nested {
+                       border-collapse: separate;
+                       border: 4px solid #880000;
+                       padding: 3px;
+                       margin: 0px 20px 0px 20px;
+                       empty-cells: hide;
+                       background-color:#FFFFCC;
+               }
+               table.nested td {
+                       border: 1px solid #008800;
+                       padding: 0px;
+                       background-color:#ECFFDF;
+               }
+               table.outer2 {
+                       border-collapse: separate;
+                       border: 4px solid #088000;
+                       padding: 3px;
+                       margin: 10px 0px;
+                       empty-cells: hide;
+                       background-color: yellow;
+               }
+               table.outer2 td {
+                       font-family: Times;
+                       border: 1px solid #008800;
+                       padding: 0px;
+                       background-color:#ECFFDF;
+               }
+               table.inner {
+                       border-collapse: collapse;
+                       border: 2px solid #000088;
+                       padding: 3px;
+                       margin: 5px;
+                       empty-cells: show;
+                       background-color:#FFCCFF;
+               }
+               table.inner td {
+                       border: 1px solid #000088;
+                       padding: 0px;
+                       font-family: monospace;
+                       font-style: italic;
+                       font-weight: bold;
+                       color: #880000;
+                       background-color:#FFECDF;
+               }
+               table.collapsed {
+                       border-collapse: collapse;
+               }
+               table.collapsed td {
+                       background-color:#EDFCFF;
+               }
+               .headerrow td, .headerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+               .footerrow td, .footerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+
+               .evenrow td, .evenrow th { background-color: #f5f8f5; } 
+               .oddrow td, .oddrow th { background-color: #e3ece4; } 
+
+               .bpmTopic {     background-color: #e3ece4; }
+               .bpmTopicC { background-color: #e3ece4; }
+               .bpmNoLines { background-color: #e3ece4; }
+               .bpmNoLinesC { background-color: #e3ece4; }
+               .bpmClear {             }
+               .bpmClearC { text-align: center; }
+               .bpmTopnTail { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailC { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailClear { topntail: 0.02cm solid #495b4a; }
+               .bpmTopnTailClearC { topntail: 0.02cm solid #495b4a; }
+
+               .bpmTopicC td, .bpmTopicC td p { text-align: center; }
+               .bpmNoLinesC td, .bpmNoLinesC td p { text-align: center; }
+               .bpmClearC td, .bpmClearC td p { text-align: center; }
+               .bpmTopnTailC td, .bpmTopnTailC td p { text-align: center;  }
+               .bpmTopnTailClearC td, .bpmTopnTailClearC td p {  text-align: center;  }
+
+               .pmhMiddleCenter { text-align:center; vertical-align:middle; }
+               .pmhMiddleRight {       text-align:right; vertical-align:middle; }
+               .pmhBottomCenter { text-align:center; vertical-align:bottom; }
+               .pmhBottomRight {       text-align:right; vertical-align:bottom; }
+               .pmhTopCenter { text-align:center; vertical-align:top; }
+               .pmhTopRight {  text-align:right; vertical-align:top; }
+               .pmhTopLeft {   text-align:left; vertical-align:top; }
+               .pmhBottomLeft {        text-align:left; vertical-align:bottom; }
+               .pmhMiddleLeft {        text-align:left; vertical-align:middle; }
+
+               .bpmTopic td, .bpmTopic th  {   border-top: 1px solid #FFFFFF; }
+               .bpmTopicC td, .bpmTopicC th  { border-top: 1px solid #FFFFFF; }
+               .bpmTopnTail td, .bpmTopnTail th  {     border-top: 1px solid #FFFFFF; }
+               .bpmTopnTailC td, .bpmTopnTailC th  {   border-top: 1px solid #FFFFFF; }
+               .lista { list-style-type: upper-roman; }
+               .listb{ list-style-type: decimal; font-family: sans-serif; color: blue; font-weight: bold; font-style: italic; font-size: 19pt; }
+               .listc{ list-style-type: upper-alpha; text-indent: 25mm; }
+               .listd{ list-style-type: lower-alpha; color: teal; line-height: 2; }
+               .liste{ list-style-type: disc; }
+
+               .roundgradient {
+                       border:0.05mm solid #220044; 
+                       background-color: #f0f2ff;
+                       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+                       border-radius: 10mm / 10mm;
+                       background-clip: border-box;
+                       padding: 3.3mm;
+               }
+               .phpcode {
+                       border:1px solid #555555; 
+                       background-color: #DDDDDD; 
+                       padding: 1em; 
+                       font-size:8pt; 
+                       font-family: lucidaconsole, mono;
+               }
+       </style>
+</head><body>
+
+<!-- DEFINE HEADERS & FOOTERS -->
+<htmlpageheader name="myHTMLHeaderOdd">
+<div style="font-family:sans-serif; background-color:#BBEEFF" align="center"><b>mPDF Example File</b></div>
+</htmlpageheader>
+<htmlpageheader name="myHTMLHeaderEven">
+<div style="font-family:sans-serif; background-color:#EFFBBE" align="center"><b><i>mPDF Example File</i></b></div>
+</htmlpageheader>
+<htmlpagefooter name="myHTMLFooterOdd" style="display:none">
+<div style="font-family:sans-serif; background-color:#CFFFFC" align="center"><b>{PAGENO}/{nbpg}</b></div>
+</htmlpagefooter>
+<htmlpagefooter name="myHTMLFooterEven" style="display:none">
+<div style="font-family:sans-serif; background-color:#FFCCFF" align="center"><b><i>{PAGENO}/{nbpg}</i></b></div>
+</htmlpagefooter>
+
+<pagefooter name="myFooter2Odd" content-left="" content-center="mPDF Example File" content-right="{PAGENO}/{nbpg}" footer-style="font-family:sans-serif; font-size:9pt; font-weight:bold; color:#000088;" footer-style-right="font-weight: bold;" line="on" />
+
+<pagefooter name="myFooter2Even" content-left="{PAGENO}/{nbpg}" content-center="mPDF Example File" content-right="{DATE j-m-Y}" footer-style="font-family:sans-serif; font-size:10pt; color:#880000;" footer-style-left="font-weight:bold;" line="on" />
+
+
+<!-- FRONT COVER -->
+<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;">
+<img src="clematis.jpg" style="width: 210mm; height: 297mm; margin: 0;" />
+</div>
+
+<div style="position: absolute; left:32mm; right: 25mm; top: 70mm; width: 58%; margin-right: auto; margin-left:auto; ">
+<div style="padding: 1em; font-family: Arial; font-weight: bold; font-size: 28pt; border: 3px solid #000044; border-radius: 5mm; background-clip: border-box; color: #000044; background-color: #FFFFFF;">
+mPDF Example File
+</div>
+</div>
+
+<pagebreak />
+
+<p>The front cover can also be produced like this:</p>
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false);
+// the last "false" allows a full page picture
+
+$mpdf->y = 70;
+$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10);
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+
+<!-- TABLES OF CONTENTS -->
+<tocpagebreak toc-preHTML="&lt;h2&gt;CONTENTS&lt;/h2&gt;" links="1" toc-bookmarkText="Contents" resetpagenum="1" pagenumstyle="1" 
+odd-header-name="html_myHTMLHeaderOdd" odd-header-value="1" even-header-name="html_myHTMLHeaderEven" even-header-value="1" odd-footer-name="myFooter2Odd" odd-footer-value="1" even-footer-name="myFooter2Even" even-footer-value="1" />
+
+<tocpagebreak name="Figures" toc-preHTML="&lt;h2&gt;FIGURES&lt;/h2&gt;" links="1" toc-bookmarkText="Figures" />
+
+<tocpagebreak name="Tables" toc-preHTML="&lt;h2&gt;TABLES&lt;/h2&gt;" links="1"  toc-bookmarkText="Tables" />
+
+
+
+<!-- SECTION 1 -->
+<h1>(H1) mPDF</h1>
+<h2>(H2) Section 1<bookmark content="Section 1" level="0" /></h2>
+<h3>(H3) HTML Markup<bookmark content="HTML Markup" level="1" /><tocentry name="" content="HTML Markup" level="0" /><indexentry content="HTML Markup"  /></h3>
+
+<tocentry name="" content="HTML Markup" level="1" />
+<tocentry name="" content="HTML Markup" level="2" />
+
+<h4>Heading 4</h4>
+<h5>Heading 5</h5>
+<h6>Heading 6</h6>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<hr />
+
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+
+<blockquote>Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.</blockquote>
+
+<address>Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.</address>
+
+<pre>PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
+nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
+dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
+sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
+Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
+ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.</pre>
+
+<div><a href="http://mpdf.bpm1.com/manual/">Hyperlink (&lt;a&gt;)</a></div>
+
+<div>Styles - <tt>tt(teletype)</tt> <i>italic</i> <b>bold</b> <big>big</big> <small>small</small> <em>emphasis</em> <strong>strong</strong> <br />new lines<br>
+<code>code</code> <samp>sample</samp> <kbd>keyboard</kbd> <var>variable</var> <cite>citation</cite> <abbr>abbr.</abbr> <acronym>ACRONYM</acronym> <sup>sup</sup> <sub>sub</sub> <strike>strike</strike> <s>strike-s</s> <u>underline</u> <del>delete</del> <ins>insert</ins> <q>To be or not to be</q> <font face="sans-serif" color="#880000" size="5">font changing face, size and color</font>
+</div>
+
+<p style="font-size:15pt; color:#440066">Paragraph using the in-line style to determine the font-size (15pt) and colour</p>
+
+
+<h3>Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT</h3>
+<p>This is <s>strikethrough</s> in <b><s>block</s></b> and <small>small <s>strikethrough</s> in <i>small span</i></small> and <big>big <s>strikethrough</s> in big span</big> and then <u>underline and <s>strikethrough and <sup>sup</sup></s></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p>This is a <font color="#008800">green reference<sup>32-47</sup></font> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p> 
+
+<p><big>Repeated in <u>BIG</u>: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p> 
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p>
+
+<p>The above repeated, but starting with a paragraph with font-size specified (7pt)</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <small>small <s>strikethrough</s> in small span</small> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <big>big <s>strikethrough</s> in big span</big> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p>
+
+<p><small>This tests <u>underline</u> and <s>strikethrough</s> when they are <s><u>used together</u></s> as they both use text-decoration</small></p>
+
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p> 
+
+<p style="font-size:7pt;"><big>Repeated in BIG but with font-size set to 7pt by in-line css: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p>
+
+<ol>
+<li>Item <b><u>1</u></b></li>
+<li>Item 2<sup>32</sup></li>
+<li><small>Item</small> 3</li>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. 
+<ul>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. </li>
+<li>Subitem 2
+<ul>
+<li>
+Level 3 subitem
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 5</li>
+</ol>
+
+<p>Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+<tocentry name="Tables" content="Basic table" level="0" />
+<table border="1" cellpadding="5">
+<thead>
+<tr>
+<th>Data</th>
+<th>Data</th>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+<th>More Data</th>
+<td>More Data</td>
+<td>More Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</tbody>
+</table>
+
+This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding.
+<p class="roundgradient">Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+
+
+
+<!-- HYPHENATION -->
+<pagebreak />
+<h3>Hyphenation<bookmark content="Hyphenation" level="1" /><tocentry name="" content="Hyphenation" level="0" /><indexentry content="Hyphenation"  /></h3>
+
+<h4>Little Women - Chapter One - Playing Pilgrims</h4>
+<columns column-count="4" vAlign="J" column-gap="7" />
+
+<p class="littlewomen"> Christmas won\'t be Christmas without any presents,  grumbled Jo, lying on the rug.</p><p class="littlewomen"> It\'s so dreadful to be poor!  sighed Meg, looking down at her old dress.</p><p class="littlewomen"> I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all,  added little Amy, with an injured sniff.</p><p class="littlewomen"> We\'ve got Father and Mother, and each other,  said Beth contentedly from her corner.</p><p class="littlewomen">The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly,  We haven\'t got Father, and shall not have him for a long time.  She didn\'t say  perhaps never,  but each silently added it, thinking of Father far away, where the fighting was.</p><p class="littlewomen">Nobody spoke for a minute; then Meg said in an altered tone,  You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t  And Meg shook her head, as she thought regretfully of all the pretty things she wanted.</p><p class="littlewomen"> But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long,  said Jo, who was a bookworm.</p><p class="littlewomen"> I planned to spend mine in new music,  said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.</p><p class="littlewomen"> I shall get a nice box of Faber\'s drawing pencils. I really need them,  said Amy decidedly.</p><p class="littlewomen"> Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it,  cried Jo, examining the heels of her shoes in a gentlemanly manner.</p><p class="littlewomen"> I know I do&mdash;teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home,  began Meg, in the complaining tone again.</p><p class="littlewomen"> You don\'t have half such a hard time as I do,  said Jo.  How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry? </p><p class="littlewomen"> It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world.  It makes me cross, and my hands get so stiff, I can\'t practice well at all.  And Beth looked at her rough hands with a sigh that any one could hear that time.</p><p class="littlewomen"> I don\'t believe any of you suffer as I do,  cried Amy,  for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice. </p><p class="littlewomen"> If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle,  advised Jo, laughing.</p><p class="littlewomen"> I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary,  returned Amy, with dignity.</p><p class="littlewomen"> Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries!  said Meg, who could remember better times.</p><p class="littlewomen"> You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money. </p><p class="littlewomen"> So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say. </p><p class="littlewomen"> Jo does use such slang words!   observed Amy, with a reproving look at the long figure stretched on the rug.</p><p class="littlewomen">Jo immediately sat up, put her hands in her pockets, and began to whistle.</p><p class="littlewomen"> Don\'t, Jo. It\'s so boyish! </p><p class="littlewomen"> That\'s why I do it. </p><p class="littlewomen"> I detest rude, unladylike girls! </p><p class="littlewomen"> I hate affected, niminy-piminy chits! </p><p class="littlewomen"> Birds in their little nests agree,  sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the  pecking  ended for that time.</p><p class="littlewomen"> Really, girls, you are both to be blamed,  said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady. </p><p class="littlewomen"> I\'m not!  And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty,  cried Jo, pulling off her net, and shaking down a chestnut mane.   I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman! </p><p class="littlewomen">And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.</p><p class="littlewomen"> Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls,  said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.</p><p class="littlewomen"> As for you, Amy,  continued Meg,  you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang. </p><p class="littlewomen"> If Jo is a tomboy and Amy a goose, what am I, please?  asked Beth, ready to share the lecture.</p><p class="littlewomen"> You\'re a dear, and nothing else,  answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.</p>
+
+<columns column-count="1" />
+
+
+
+
+
+
+<!-- LISTS -->
+<pagebreak />
+<h3>Lists<bookmark content="Lists" level="1" /><tocentry name="" content="Lists" level="0" /><indexentry content="Lists"  /></h3>
+<div style="background-color:#ddccff; padding:0pt; border: 1px solid #555555;">
+<ol class="lista">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listb">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.
+</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol>
+<li>No class specified. Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</div>
+
+<!-- TABLES -->
+<pagebreak />
+<h3>Tables<bookmark content="Tables" level="1" /><tocentry name="" content="Tables" level="0" /><tocentry name="Tables" content="Tables - general" level="0" /><indexentry content="Tables"  /></h3>
+<p>mPDF supports all in-line properties inside tables.</p>
+<table border="1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td>
+<td>
+<p>This is data p</p>
+This is data out of p
+<p style="font-weight:bold; font-size:20pt; background-color:#FFBBFF;">This is bold data p</p>
+<b>This is bold data out of p</b><br />
+This is normal data after br
+<h3>Heading 3 inside a table</h3>
+Text here lorem <i>ipsum</i> ibisque totum.<sup>32</sup>
+<div>This is data div</div>
+This is data out of div
+<div style="font-weight:bold;">This is data div (bold)</div>
+This is data out of div
+</td>
+
+<td>Also data</td></tr>
+</tbody></table>
+
+<p>This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line <acronym>CSS</acronym>.</p>
+<table style="border: 1px solid #880000; background-color: #BBCCDD; font-family: Mono; font-size: 7pt; " class="tallcells">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td><td><p>This is data p</p></td><td><p>More data</p></td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+</tbody></table>
+
+
+<h4>Tables<bookmark content="Table styles" level="2" /><tocentry name="Tables" content="Table styles" level="0" /><indexentry content="Table:styles"  /></h4>
+<p>The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that &lt;thead&gt; will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.</p>
+<p>bpmTopic Class</p>
+<table class="bpmTopic"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>More data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopic<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopicC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopnTail Class </p>
+<table class="bpmTopnTail"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+<p>bpmTopnTail<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopnTailC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>TopnTail Class</p>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td class="pmhBottomRight"><b><i>Bottom right align</i></b></td>
+<td>
+<p>This is data. Can use</p>
+<p><b>bold</b> <i>italic </i><sub>sub</sub> or <sup>sup</sup> text</p>
+</td>
+</tr>
+<tr class="oddrow"><th class="pmhBottomRight">
+<p>Bottom right align</p>
+</th>
+<td class="pmhMiddleCenter" style="border: #000000 1px solid">
+<p>This is data. This cell</p>
+<p>uses Cell Styles to set</p>
+<p>the borders.</p>
+<p>All borders are collapsible</p>
+<p>in mPDF.</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 4</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>More data</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td colspan="2" class="pmhTopCenter">Also data merged and centered</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<h4>Lists in a Table<bookmark content="Lists in a table" level="2" /><tocentry name="Tables" content="Lists in a table" level="0" /><indexentry content="Table:lists inside"  /></h4>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<ol>
+<li>Item 1</li>
+<li>Item 2
+<ol type="a">
+<li>Subitem of ordered list</li>
+<li>Subitem 2
+<ol type="i">
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Item 3</li>
+<li>Another Item</li>
+<li>Subitem
+<ol>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+<li>Another Item</li>
+</ol>
+</td>
+<td>
+Unordered list:
+<ul>
+<li>Item 1</li>
+<li>Item 2
+<ul>
+<li>Subitem of unordered list</li>
+<li>Subitem 2
+<ul>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 3</li>
+</ul>
+</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+
+<h4>Automatic Column Width<bookmark content="Automatic Column Width" level="2" /><tocentry name="Tables" content="Automatic column width" level="0" /><indexentry content="Table:automatic column width"  /></h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td>Causes</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.</td>
+</tr>
+</tbody></table>
+
+
+<h4>Column span<bookmark content="Column span" level="2" /><tocentry name="Tables" content="Column span" level="0" /><indexentry content="Table:column span"  /></h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+</tr>
+</tbody></table>
+
+
+
+<h4>Header & Footer Rows<bookmark content="Header Rows" level="2" /><tocentry name="Tables" content="Header rows" level="0" /><indexentry content="Table:header rows"  /></h4>
+<p>A table using a header or footer row should repeat the header/footer row across pages:</p>
+<p>bpmTopic<b>C</b> Class</p>
+<table class="bpmTopicC">
+<thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second column header</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead>
+<tfoot>
+<tr class="headerrow"><th>Col and Row Footer</th>
+<td>
+<p>Second column footer</p>
+</td>
+<td>Third column footer</td>
+</tr>
+</tfoot>
+<tbody>
+<tr><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 2</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 4</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 9</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<h4>Autosizing Tables<bookmark content="Autosizing Tables" level="2" /><tocentry name="Tables" content="Autosizing tables" level="0" /><indexentry content="Table:autosizing"  /></h4>
+<p>Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute &lt;table autosize="1.8"&gt;.</p>
+
+<h5>Periodic Table</h5>
+
+<table style="border:1px solid #000000;" cellPadding="14"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td><td colspan="16"></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr>
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti </td><td>V </td><td>Cr </td><td>Mn </td><td>Fe </td><td>Co </td><td>Ni </td>
+<td>Cu </td><td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td><td>Rh </td><td>Pd </td><td>Ag </td><td>Cd </td>
+<td>In </td><td>Sn </td><td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td><td>Pt </td><td>Au </td>
+<td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td>Ac </td><td colspan="15"></td>
+</tr>
+<tr>
+<td colspan="18"></td></tr>
+<tr>
+<td colspan="3"></td><td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td>
+<td>Dy </td><td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td><td>Cf </td>
+<td>Es </td><td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+
+<pagebreak />
+
+<h4>Rotated Tables<bookmark content="Rotated Tables" level="2" /><tocentry name="Tables" content="Rotated table" level="0" /><indexentry content="Table:rotated"  /></h4>
+<p>This is set to rotate -90 degrees (counterclockwise).</p>
+
+<h5>Periodic Table</h5>
+<p>
+<table rotate="-90" class="bpmClearC"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td><td colspan="15"></td><td></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr>
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti </td><td>V </td><td>Cr </td><td>Mn </td><td>Fe </td><td>Co </td><td>Ni </td><td>Cu </td>
+<td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td><td>Rh </td><td>Pd </td>
+<td>Ag </td><td>Cd </td><td>In </td><td>Sn </td><td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td><td>Pt </td><td>Au </td>
+<td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td>Ac </td>
+</tr>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td><td>Dy </td>
+<td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td>
+<td>Cf </td><td>Es </td><td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<pagebreak />
+<h4>Rotated text in Tables<bookmark content="Rotated text in Tables" level="2" /><tocentry name="Tables" content="Rotated text in table" level="0" /><indexentry content="Table:rotated text"  /></h4>
+
+<h5>Periodic Table</h5>
+<table>
+<thead>
+<tr text-rotate="45">
+<th><p>Element type 1A</p><p>Second line</p><th><p>Element type longer 2A</p></th>
+<th>Element type 3B</th><th>Element type 4B</th><th>Element type 5B</th><th>Element type 6B</th><th>7B</th><th>8B</th>
+<th>Element type 8B R</th><th>8B</th><th>Element <span>type</span> 1B</th><th>2B</th>
+<th>Element type 3A</th><th>Element type 4A</th><th>Element type 5A</th><th>Element type 6A</th><th>7A</th><th>Element type 8A</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td>H</td><td colspan="15"></td><td></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr style="text-rotate: 45">
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti</td><td>Va</td><td>Cr</td><td>Mn</td><td>Fe</td><td>Co</td><td>Ni </td>
+<td>Cu </td><td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td>
+<td style="text-align:right; ">Rh</td><td>Pd </td><td>Ag </td><td>Cd </td><td>In </td><td>Sn </td>
+<td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td>
+<td>Pt </td><td>Au </td><td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td colspan="16">Ac </td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td><td>Dy </td>
+<td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td><td>Cf </td><td>Es </td>
+<td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+
+
+<pagebreak />
+
+
+
+<h4>Nested Tables<bookmark content="Nested Tables" level="2" /><tocentry name="Tables" content="Nested tables" level="0" /><indexentry content="Table:nested"  /></h4>
+
+<div style="border: 2px solid #000088; background-color: #DDDDFF; padding: 2mm;">
+Text before table
+
+<div style="border: 2px solid #008888; background-color: #DCAFCF; padding: 2mm;">
+
+<table cellSpacing="2" rotate="-90" align="center" autosize="1.5" class="nested" style="page-break-inside: avoid; ">
+<tbody>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id <a href="http://www.dummy.com">euismod auctor</a>, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td></td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+</tbody></table>
+
+</div>
+
+
+
+<p>Text before table</p>
+
+<table cellSpacing="2" class="outer2" autosize="3" style="page-break-inside:avoid">
+<tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td style="text-align: right;">
+Text before table
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+<p>Text after table</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 3</td>
+<td style="text-align: center; vertical-align: middle;">
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td style="vertical-align: bottom; ">
+<table cellSpacing="2" class="inner" align="right">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 4</td>
+<td>This is data</td>
+<td><table cellSpacing="2" class="inner">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+</tbody></table>
+
+
+</div>
+
+
+<!-- FORMS -->
+<pagebreak />
+<h3>Forms<bookmark content="Forms" level="1" /><tocentry name="" content="Forms" level="0" /><indexentry content="Forms" /></h3>
+<form>
+<b>Textarea</b>
+<textarea name="authors" rows="5" cols="80" wrap="virtual">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra.
+Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+<b>Select</b>
+<select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select> followed by text
+<br /><br />
+<b>Input Radio</b>
+<input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice 
+<br /><br />
+<b>Input Text</b>
+<input type="text" size="190" name="doi" value="10.1258/jrsm.100.5.211"> 
+<br /><br />
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="secret"> 
+<br /><br />
+<input type="checkbox" name="QPC" value="ON" > Checkboxes<br>
+<input type="checkbox" name="QPA" value="ON" > Not selected<br>
+<input type="checkbox" name="QPA" value="ON" disabled="disabled"> Disabled<br>
+<input type="checkbox" name="QLY" value="ON" checked="checked" > Selected
+<br /><br />
+<input type="submit" name="submit" value="Submit" /> 
+<input type="image" name="submit" src="goto.gif" /> 
+<input type="button" name="submit" value="Button" />
+<input type="reset" name="submit" value="Reset" />
+<br /><br />
+</form>
+
+
+<!-- ANNOTATIONS -->
+<pagebreak />
+<h3>Annotations<bookmark content="Annotations" level="1" /><tocentry name="" content="Annotations" level="0" /><indexentry content="Annotations"  /></h3>
+<p>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate.<annotation content="This is an annotation'."\n".'in the middle of the text" subject="My Subject" icon="Comment" color="#FE88EF" author="Ian Back" /> Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis. </p>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. <i>Fusce</i><annotation content="Fusce is a funny word!" subject="Idle Comments" icon="Note" author="Ian Back" pos-x="198" /> eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+<!-- GRAPH -->
+<pagebreak />
+<h3>Graphs<bookmark content="Graphs" level="1" /><tocentry name="" content="Graphs" level="0" /><indexentry content="Graphs"  /></h3>
+<table id="tbl_1" class="sub"><tbody><tr><td></td><td align="right"><b>Female</b></td><td align="right"><b>Male</b></td></tr><tr><td>35 - 44</td><td align="right"><b>4</b></td><td align="right"><b>2</b></td></tr><tr><td>45 - 54</td><td align="right"><b>5</b></td><td align="right"><b>7</b></td></tr><tr><td>55 - 64</td><td align="right"><b>21</b></td><td align="right"><b>18</b></td></tr><tr><td>65 - 74</td><td align="right"><b>11</b></td><td align="right"><b>14</b></td></tr><tr><td>75 - 84</td><td align="right"><b>10</b></td><td align="right"><b>10</b></td></tr><tr><td>85 - 94</td><td align="right"><b>2</b></td><td align="right"><b>1</b></td></tr><tr><td>95 - 104</td><td align="right"><b>1</b></td><td align="right"><b></b></td></tr>
+<tr><td>TOTAL</td><td align="right">54</td><td align="right">52</td></tr>
+</tbody></table>
+
+<h5>Subscriptions for 2008-09<tocentry name="Figures" content="Graph: Subscriptions for 2008-09" /></h5>
+<jpgraph table="tbl_1" type="bar" stacked="0" dpi="300" title="New subscriptions" splines="1" bandw="0" antialias="1" label-y="% patients" label-x="Age group" axis-x="text" axis-y="lin" percent="0"  series="cols" data-col-begin="2" data-row-begin="2" data-col-end="0" data-row-end="-1" show-values="1" width="600" legend-overlap="1" hide-grid="1" hide-y-axis="1" />
+
+
+
+<!-- FULL IMAGES & BARCODE -->
+<pagebreak />
+<h3>Full Images & Barcode<bookmark content="Full Images &amp; Barcode" level="1" /><tocentry name="Figures" content="Full size image & Barcode" level="0" /><indexentry content="Image:full-size"  /><tocentry name="" content="Barcode" level="0" /><indexentry content="Barcode"  /></h3>
+<p>On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".</p>
+
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->SetAlpha(0.5); 
+$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false);
+// the last "false" allows a full page picture
+$mpdf->SetAlpha(1);
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+<p>The back cover also has an ISBN barcode</p>
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); 
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+<p>But next is inserted the Index, which can also be done like this:</p>
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1);        
+$mpdf->WriteHTML(\'<h2>Index<bookmark content="Index" /></h2>\');
+$mpdf->WriteHTML(\'<indexinsert cols="2" font="serif" div-font="sans-serif" links="on" />\');
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+
+
+<!-- INDEX -->
+<pagebreak type="NEXT-ODD" odd-header-value="-1" even-header-value="-1" odd-footer-value="-1" even-footer-value="-1"  />
+<h2>Index<bookmark content="Index" /></h2>
+<indexinsert cols="2" font="serif" div-font="sans-serif" links="on" />
+
+
+
+<!-- BACK COVER & BARCODE -->
+<pagebreak type="NEXT-EVEN" />
+<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;">
+<img src="clematis.jpg" style="width: 210mm; height: 297mm; margin: 0; opacity: 0.5;" />
+</div>
+
+<div style="position: absolute; right: 35mm; bottom: 35mm; ">
+<barcode code="978-0-9542246-0" type="ISBN" style="padding: 2.5mm; border: 0.1mm solid #000000;" height="0.66" text="1" />
+</div>
+
+
+
+</body></html>';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); 
+$mpdf->progbar_altHTML = '<html><body>
+       <div style="margin-top: 5em; text-align: center; font-family: Verdana; font-size: 12px;"><img style="vertical-align: middle" src="loading.gif" /> Creating PDF file. Please wait...</div>';
+$mpdf->StartProgressBarOutput();
+
+$mpdf->mirrorMargins = 1;
+$mpdf->SetDisplayMode('fullpage','two');
+$mpdf->useGraphs = true;
+$mpdf->list_number_suffix = ')';
+$mpdf->hyphenate = true;
+
+$mpdf->debug  = true;
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php b/inc/3rdparty/libraries/mpdf/examples/example48_progress_bars_advanced.php
new file mode 100644 (file)
index 0000000..898fa6b
--- /dev/null
@@ -0,0 +1,1609 @@
+<?php
+
+//==============================================================
+//==============================================================
+define("_JPGRAPH_PATH", '../../jpgraph_5/jpgraph/'); // must define this before including mpdf.php file
+$JpgUseSVGFormat = true;
+
+define('_MPDF_URI','../');     // must be  a relative or absolute URI - not a file system path
+//==============================================================
+//==============================================================
+
+
+ini_set("memory_limit","64M");
+
+$html = '
+<html><head>
+       <meta http-equiv="Content-Language" content="en-GB">
+       <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+       <style>
+               body { font-family:"Times New Roman"; font-size:10pt; }
+               p.littlewomen { margin: 0; font-family: sans-serif; text-align: justify; }
+
+               h1, h2, h3, h4, h5, h6 { font-family: DejaVuSansCondensed; }
+               table {font-family: DejaVuSansCondensed; font-size: 9pt; line-height: 1.2;
+                       vertical-align: top; 
+                       margin-top: 2pt; margin-bottom: 5pt;
+                       border-collapse: collapse;  }
+
+               thead { font-weight: bold; vertical-align: bottom; }
+
+               th {    font-weight: bold; 
+                       text-align:left; 
+                       padding-left: 2mm; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm; 
+                }
+
+               td {    padding-left: 2mm; 
+                       text-align:left; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm;
+                }
+
+               th p { text-align: left; margin:0pt;  }
+               td p { text-align: left; margin:0pt;  }
+
+               table.widecells td {
+                       padding-left: 5mm;
+                       padding-right: 5mm;
+               }
+               table.tallcells td {
+                       padding-top: 3mm;
+                       padding-bottom: 3mm;
+               }       .sub td { vertical-align:top; border-top:0px; border-bottom:0px; padding:2px; padding-right:8px; 
+                       margin:0; font-size:9pt; }
+               .sub { align:center; border:#888888 1px solid; }
+               thead td { font-weight: bold; }
+
+               table.nested {
+                       border-collapse: separate;
+                       border: 4px solid #880000;
+                       padding: 3px;
+                       margin: 0px 20px 0px 20px;
+                       empty-cells: hide;
+                       background-color:#FFFFCC;
+               }
+               table.nested td {
+                       border: 1px solid #008800;
+                       padding: 0px;
+                       background-color:#ECFFDF;
+               }
+               table.outer2 {
+                       border-collapse: separate;
+                       border: 4px solid #088000;
+                       padding: 3px;
+                       margin: 10px 0px;
+                       empty-cells: hide;
+                       background-color: yellow;
+               }
+               table.outer2 td {
+                       font-family: Times;
+                       border: 1px solid #008800;
+                       padding: 0px;
+                       background-color:#ECFFDF;
+               }
+               table.inner {
+                       border-collapse: collapse;
+                       border: 2px solid #000088;
+                       padding: 3px;
+                       margin: 5px;
+                       empty-cells: show;
+                       background-color:#FFCCFF;
+               }
+               table.inner td {
+                       border: 1px solid #000088;
+                       padding: 0px;
+                       font-family: monospace;
+                       font-style: italic;
+                       font-weight: bold;
+                       color: #880000;
+                       background-color:#FFECDF;
+               }
+               table.collapsed {
+                       border-collapse: collapse;
+               }
+               table.collapsed td {
+                       background-color:#EDFCFF;
+               }
+               .headerrow td, .headerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+               .footerrow td, .footerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+
+               .evenrow td, .evenrow th { background-color: #f5f8f5; } 
+               .oddrow td, .oddrow th { background-color: #e3ece4; } 
+
+               .bpmTopic {     background-color: #e3ece4; }
+               .bpmTopicC { background-color: #e3ece4; }
+               .bpmNoLines { background-color: #e3ece4; }
+               .bpmNoLinesC { background-color: #e3ece4; }
+               .bpmClear {             }
+               .bpmClearC { text-align: center; }
+               .bpmTopnTail { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailC { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailClear { topntail: 0.02cm solid #495b4a; }
+               .bpmTopnTailClearC { topntail: 0.02cm solid #495b4a; }
+
+               .bpmTopicC td, .bpmTopicC td p { text-align: center; }
+               .bpmNoLinesC td, .bpmNoLinesC td p { text-align: center; }
+               .bpmClearC td, .bpmClearC td p { text-align: center; }
+               .bpmTopnTailC td, .bpmTopnTailC td p { text-align: center;  }
+               .bpmTopnTailClearC td, .bpmTopnTailClearC td p {  text-align: center;  }
+
+               .pmhMiddleCenter { text-align:center; vertical-align:middle; }
+               .pmhMiddleRight {       text-align:right; vertical-align:middle; }
+               .pmhBottomCenter { text-align:center; vertical-align:bottom; }
+               .pmhBottomRight {       text-align:right; vertical-align:bottom; }
+               .pmhTopCenter { text-align:center; vertical-align:top; }
+               .pmhTopRight {  text-align:right; vertical-align:top; }
+               .pmhTopLeft {   text-align:left; vertical-align:top; }
+               .pmhBottomLeft {        text-align:left; vertical-align:bottom; }
+               .pmhMiddleLeft {        text-align:left; vertical-align:middle; }
+
+               .bpmTopic td, .bpmTopic th  {   border-top: 1px solid #FFFFFF; }
+               .bpmTopicC td, .bpmTopicC th  { border-top: 1px solid #FFFFFF; }
+               .bpmTopnTail td, .bpmTopnTail th  {     border-top: 1px solid #FFFFFF; }
+               .bpmTopnTailC td, .bpmTopnTailC th  {   border-top: 1px solid #FFFFFF; }
+               .lista { list-style-type: upper-roman; }
+               .listb{ list-style-type: decimal; font-family: sans-serif; color: blue; font-weight: bold; font-style: italic; font-size: 19pt; }
+               .listc{ list-style-type: upper-alpha; text-indent: 25mm; }
+               .listd{ list-style-type: lower-alpha; color: teal; line-height: 2; }
+               .liste{ list-style-type: disc; }
+
+               .roundgradient {
+                       border:0.05mm solid #220044; 
+                       background-color: #f0f2ff;
+                       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+                       border-radius: 10mm / 10mm;
+                       background-clip: border-box;
+                       padding: 3.3mm;
+               }
+               .phpcode {
+                       border:1px solid #555555; 
+                       background-color: #DDDDDD; 
+                       padding: 1em; 
+                       font-size:8pt; 
+                       font-family: lucidaconsole, mono;
+               }
+       </style>
+</head><body>
+
+<!-- DEFINE HEADERS & FOOTERS -->
+<htmlpageheader name="myHTMLHeaderOdd">
+<div style="font-family:sans-serif; background-color:#BBEEFF" align="center"><b>mPDF Example File</b></div>
+</htmlpageheader>
+<htmlpageheader name="myHTMLHeaderEven">
+<div style="font-family:sans-serif; background-color:#EFFBBE" align="center"><b><i>mPDF Example File</i></b></div>
+</htmlpageheader>
+<htmlpagefooter name="myHTMLFooterOdd" style="display:none">
+<div style="font-family:sans-serif; background-color:#CFFFFC" align="center"><b>{PAGENO}/{nbpg}</b></div>
+</htmlpagefooter>
+<htmlpagefooter name="myHTMLFooterEven" style="display:none">
+<div style="font-family:sans-serif; background-color:#FFCCFF" align="center"><b><i>{PAGENO}/{nbpg}</i></b></div>
+</htmlpagefooter>
+
+<pagefooter name="myFooter2Odd" content-left="" content-center="mPDF Example File" content-right="{PAGENO}/{nbpg}" footer-style="font-family:sans-serif; font-size:9pt; font-weight:bold; color:#000088;" footer-style-right="font-weight: bold;" line="on" />
+
+<pagefooter name="myFooter2Even" content-left="{PAGENO}/{nbpg}" content-center="mPDF Example File" content-right="{DATE j-m-Y}" footer-style="font-family:sans-serif; font-size:10pt; color:#880000;" footer-style-left="font-weight:bold;" line="on" />
+
+
+<!-- FRONT COVER -->
+<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;">
+<img src="clematis.jpg" style="width: 210mm; height: 297mm; margin: 0;" />
+</div>
+
+<div style="position: absolute; left:32mm; right: 25mm; top: 70mm; width: 58%; margin-right: auto; margin-left:auto; ">
+<div style="padding: 1em; font-family: Arial; font-weight: bold; font-size: 28pt; border: 3px solid #000044; border-radius: 5mm; background-clip: border-box; color: #000044; background-color: #FFFFFF;">
+mPDF Example File
+</div>
+</div>
+
+<pagebreak />
+
+<p>The front cover can also be produced like this:</p>
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false);
+// the last "false" allows a full page picture
+
+$mpdf->y = 70;
+$mpdf->Shaded_box(\'mPDF Example File\', \'Trebuchet\', \'\', 28, \'70%\', \'DF\', 3, \'#FFFFFF\', \'#000044\', 10);
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+
+<!-- TABLES OF CONTENTS -->
+<tocpagebreak toc-preHTML="&lt;h2&gt;CONTENTS&lt;/h2&gt;" links="1" toc-bookmarkText="Contents" resetpagenum="1" pagenumstyle="1" 
+odd-header-name="html_myHTMLHeaderOdd" odd-header-value="1" even-header-name="html_myHTMLHeaderEven" even-header-value="1" odd-footer-name="myFooter2Odd" odd-footer-value="1" even-footer-name="myFooter2Even" even-footer-value="1" />
+
+<tocpagebreak name="Figures" toc-preHTML="&lt;h2&gt;FIGURES&lt;/h2&gt;" links="1" toc-bookmarkText="Figures" />
+
+<tocpagebreak name="Tables" toc-preHTML="&lt;h2&gt;TABLES&lt;/h2&gt;" links="1"  toc-bookmarkText="Tables" />
+
+
+
+<!-- SECTION 1 -->
+<h1>(H1) mPDF</h1>
+<h2>(H2) Section 1<bookmark content="Section 1" level="0" /></h2>
+<h3>(H3) HTML Markup<bookmark content="HTML Markup" level="1" /><tocentry name="" content="HTML Markup" level="0" /><indexentry content="HTML Markup"  /></h3>
+
+<tocentry name="" content="HTML Markup" level="1" />
+<tocentry name="" content="HTML Markup" level="2" />
+
+<h4>Heading 4</h4>
+<h5>Heading 5</h5>
+<h6>Heading 6</h6>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+<hr />
+
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+<div>DIV: Proin aliquet lorem id felis. Curabitur vel libero at mauris nonummy tincidunt. Donec imperdiet. Vestibulum sem sem, lacinia vel, molestie et, laoreet eget, urna. Curabitur viverra faucibus pede. Morbi lobortis. Donec dapibus. Donec tempus. Ut arcu enim, rhoncus ac, venenatis eu, porttitor mollis, dui. Sed vitae risus. In elementum sem placerat dui. Nam tristique eros in nisl. Nulla cursus sapien non quam porta porttitor. Quisque dictum ipsum ornare tortor. Fusce ornare tempus enim. </div>
+
+<blockquote>Blockquote: Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus. Maecenas arcu justo, malesuada eu, dapibus ac, adipiscing vitae, turpis. Fusce mollis. Aliquam egestas. In purus dolor, facilisis at, fermentum nec, molestie et, metus.</blockquote>
+
+<address>Address: Vestibulum feugiat, orci at imperdiet tincidunt, mauris erat facilisis urna, sagittis ultricies dui nisl et lectus. Sed lacinia, lectus vitae dictum sodales, elit ipsum ultrices orci, non euismod arcu diam non metus.</address>
+
+<pre>PRE: Cum sociis natoque penatibus et magnis dis parturient montes, 
+nascetur ridiculus mus. In suscipit turpis vitae odio. Integer convallis 
+dui at metus. Fusce magna. Sed sed lectus vitae enim tempor cursus. Cras 
+sed, posuere et, urna. Quisque ut leo. Aliquam interdum hendrerit tortor. 
+Vestibulum elit. Vestibulum et arcu at diam mattis commodo. Nam ipsum sem, 
+ultricies at, rutrum sit amet, posuere nec, velit. Sed molestie mollis dui.</pre>
+
+<div><a href="http://mpdf.bpm1.com/manual/">Hyperlink (&lt;a&gt;)</a></div>
+
+<div>Styles - <tt>tt(teletype)</tt> <i>italic</i> <b>bold</b> <big>big</big> <small>small</small> <em>emphasis</em> <strong>strong</strong> <br />new lines<br>
+<code>code</code> <samp>sample</samp> <kbd>keyboard</kbd> <var>variable</var> <cite>citation</cite> <abbr>abbr.</abbr> <acronym>ACRONYM</acronym> <sup>sup</sup> <sub>sub</sub> <strike>strike</strike> <s>strike-s</s> <u>underline</u> <del>delete</del> <ins>insert</ins> <q>To be or not to be</q> <font face="sans-serif" color="#880000" size="5">font changing face, size and color</font>
+</div>
+
+<p style="font-size:15pt; color:#440066">Paragraph using the in-line style to determine the font-size (15pt) and colour</p>
+
+
+<h3>Testing BIG, SMALL, UNDERLINE, STRIKETHROUGH, FONT color, ACRONYM, SUPERSCRIPT and SUBSCRIPT</h3>
+<p>This is <s>strikethrough</s> in <b><s>block</s></b> and <small>small <s>strikethrough</s> in <i>small span</i></small> and <big>big <s>strikethrough</s> in big span</big> and then <u>underline and <s>strikethrough and <sup>sup</sup></s></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p>This is a <font color="#008800">green reference<sup>32-47</sup></font> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p> 
+
+<p><big>Repeated in <u>BIG</u>: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p> 
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p>
+
+<p>The above repeated, but starting with a paragraph with font-size specified (7pt)</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <small>small <s>strikethrough</s> in small span</small> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is <s>strikethrough</s> in block and <big>big <s>strikethrough</s> in big span</big> and then <u>underline</u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</p>
+
+<p style="font-size:7pt;">This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> then <s>Strikethrough reference<sup>32-47</sup></s> and <s>strikethrough reference<sub>32-47</sub></s></p>
+
+<p><small>This tests <u>underline</u> and <s>strikethrough</s> when they are <s><u>used together</u></s> as they both use text-decoration</small></p>
+
+
+<p><small>Repeated in small: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</small></p> 
+
+<p style="font-size:7pt;"><big>Repeated in BIG but with font-size set to 7pt by in-line css: This is reference<sup>32-47</sup> and <u>underlined reference<sup>32-47</sup></u> then reference<sub>32-47</sub> and <u>underlined reference<sub>32-47</sub></u> but out of span again but <font color="#000088">blue</font> font and <acronym>ACRONYM</acronym> text</big></p>
+
+<ol>
+<li>Item <b><u>1</u></b></li>
+<li>Item 2<sup>32</sup></li>
+<li><small>Item</small> 3</li>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. 
+<ul>
+<li>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo. </li>
+<li>Subitem 2
+<ul>
+<li>
+Level 3 subitem
+</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 5</li>
+</ol>
+
+<p>Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+<tocentry name="Tables" content="Basic table" level="0" />
+<table border="1" cellpadding="5">
+<thead>
+<tr>
+<th>Data</th>
+<th>Data</th>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+<th>More Data</th>
+<td>More Data</td>
+<td>More Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+<tr>
+<th>Data</th>
+<td>Data</td>
+<td>Data</td>
+<td>Data<br />2nd line</td>
+</tr>
+</tbody>
+</table>
+
+This paragraph has border-radius and background-gradient set. Minimum padding is recommended as 1/3rd of the border-radius. Or can use $mpdf->autoPadding.
+<p class="roundgradient">Sed bibendum. Nunc eleifend ornare velit. Sed consectetuer urna in erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Mauris sodales semper metus. Maecenas justo libero, pretium at, malesuada eu, mollis et, arcu. Ut suscipit pede in nulla. Praesent elementum, dolor ac fringilla posuere, elit libero rutrum massa, vel tincidunt dui tellus a ante. Sed aliquet euismod dolor. Vestibulum sed dui. Duis lobortis hendrerit quam. Donec tempus orci ut libero. Pellentesque suscipit malesuada nisi. </p>
+
+
+
+<!-- HYPHENATION -->
+<pagebreak />
+<h3>Hyphenation<bookmark content="Hyphenation" level="1" /><tocentry name="" content="Hyphenation" level="0" /><indexentry content="Hyphenation"  /></h3>
+
+<h4>Little Women - Chapter One - Playing Pilgrims</h4>
+<columns column-count="4" vAlign="J" column-gap="7" />
+
+<p class="littlewomen"> Christmas won\'t be Christmas without any presents,  grumbled Jo, lying on the rug.</p><p class="littlewomen"> It\'s so dreadful to be poor!  sighed Meg, looking down at her old dress.</p><p class="littlewomen"> I don\'t think it\'s fair for some girls to have plenty of pretty things, and other girls nothing at all,  added little Amy, with an injured sniff.</p><p class="littlewomen"> We\'ve got Father and Mother, and each other,  said Beth contentedly from her corner.</p><p class="littlewomen">The four young faces on which the firelight shone brightened at the cheerful words, but darkened again as Jo said sadly,  We haven\'t got Father, and shall not have him for a long time.  She didn\'t say  perhaps never,  but each silently added it, thinking of Father far away, where the fighting was.</p><p class="littlewomen">Nobody spoke for a minute; then Meg said in an altered tone,  You know the reason Mother proposed not having any presents this Christmas was because it is going to be a hard winter for everyone; and she thinks we ought not to spend money for pleasure, when our men are suffering so in the army. We can\'t do much, but we can make our little sacrifices, and ought to do it gladly. But I am afraid I don\'t  And Meg shook her head, as she thought regretfully of all the pretty things she wanted.</p><p class="littlewomen"> But I don\'t think the little we should spend would do any good. We\'ve each got a dollar, and the army wouldn\'t be much helped by our giving that. I agree not to expect anything from Mother or you, but I do want to buy UNDINE AND SINTRAM for myself. I\'ve wanted it so long,  said Jo, who was a bookworm.</p><p class="littlewomen"> I planned to spend mine in new music,  said Beth, with a little sigh, which no one heard but the hearth brush and kettle holder.</p><p class="littlewomen"> I shall get a nice box of Faber\'s drawing pencils. I really need them,  said Amy decidedly.</p><p class="littlewomen"> Mother didn\'t say anything about our money, and she won\'t wish us to give up everything. Let\'s each buy what we want, and have a little fun. I\'m sure we work hard enough to earn it,  cried Jo, examining the heels of her shoes in a gentlemanly manner.</p><p class="littlewomen"> I know I do&mdash;teaching those tiresome children nearly all day, when I\'m longing to enjoy myself at home,  began Meg, in the complaining tone again.</p><p class="littlewomen"> You don\'t have half such a hard time as I do,  said Jo.  How would you like to be shut up for hours with a nervous, fussy old lady, who keeps you trotting, is never satisfied, and worries you till you you\'re ready to fly out the window or cry? </p><p class="littlewomen"> It\'s naughty to fret, but I do think washing dishes and keeping things tidy is the worst work in the world.  It makes me cross, and my hands get so stiff, I can\'t practice well at all.  And Beth looked at her rough hands with a sigh that any one could hear that time.</p><p class="littlewomen"> I don\'t believe any of you suffer as I do,  cried Amy,  for you don\'t have to go to school with impertinent girls, who plague you if you don\'t know your lessons, and laugh at your dresses, and label your father if he isn\'t rich, and insult you when your nose isn\'t nice. </p><p class="littlewomen"> If you mean libel, I\'d say so, and not talk about labels, as if Papa was a pickle bottle,  advised Jo, laughing.</p><p class="littlewomen"> I know what I mean, and you needn\'t be satirical about it. It\'s proper to use good words, and improve your vocabulary,  returned Amy, with dignity.</p><p class="littlewomen"> Don\'t peck at one another, children. Don\'t you wish we had the money Papa lost when we were little, Jo? Dear me! How happy and good we\'d be, if we had no worries!  said Meg, who could remember better times.</p><p class="littlewomen"> You said the other day you thought we were a deal happier than the King children, for they were fighting and fretting all the time, in spite of their money. </p><p class="littlewomen"> So I did, Beth. Well, I think we are. For though we do have to work, we make fun of ourselves, and are a pretty jolly set, as Jo would say. </p><p class="littlewomen"> Jo does use such slang words!   observed Amy, with a reproving look at the long figure stretched on the rug.</p><p class="littlewomen">Jo immediately sat up, put her hands in her pockets, and began to whistle.</p><p class="littlewomen"> Don\'t, Jo. It\'s so boyish! </p><p class="littlewomen"> That\'s why I do it. </p><p class="littlewomen"> I detest rude, unladylike girls! </p><p class="littlewomen"> I hate affected, niminy-piminy chits! </p><p class="littlewomen"> Birds in their little nests agree,  sang Beth, the peacemaker, with such a funny face that both sharp voices softened to a laugh, and the  pecking  ended for that time.</p><p class="littlewomen"> Really, girls, you are both to be blamed,  said Meg, beginning to lecture in her elder-sisterly fashion. You are old enough to leave off boyish tricks, and to behave better, Josephine. It didn\'t matter so much when you were a little girl, but now you are so tall, and turn up your hair, you should remember that you are a young lady. </p><p class="littlewomen"> I\'m not!  And if turning up my hair makes me one, I\'ll wear it in two tails till I\'m twenty,  cried Jo, pulling off her net, and shaking down a chestnut mane.   I hate to think I\'ve got to grow up, and be Miss March, and wear long gowns, and look as prim as a China Aster! It\'s bad enough to be a girl, anyway, when I like boy\'s games and work and manners! I can\'t get over my disappointment in not being a boy. And it\'s worse than ever now, for I\'m dying to go and fight with Papa. And I can only stay home and knit, like a poky old woman! </p><p class="littlewomen">And Jo shook the blue army sock till the needles rattled like castanets, and her ball bounded across the room.</p><p class="littlewomen"> Poor Jo! It\'s too bad, but it can\'t be helped. So you must try to be contented with making your name boyish, and playing brother to us girls,  said Beth, stroking the rough head with a hand that all the dish washing and dusting in the world could not make ungentle in its touch.</p><p class="littlewomen"> As for you, Amy,  continued Meg,  you are altogether to particular and prim. Your airs are funny now, but you\'ll grow up an affected little goose, if you don\'t take care. I I like your nice manners and refined ways of speaking, when you don\'t try to be elegant. But your absurd words are as bad as Jo\'s slang. </p><p class="littlewomen"> If Jo is a tomboy and Amy a goose, what am I, please?  asked Beth, ready to share the lecture.</p><p class="littlewomen"> You\'re a dear, and nothing else,  answered Meg warmly, and no one contradicted her, for the \'Mouse\' was the pet of the family.</p>
+
+<columns column-count="1" />
+
+
+
+
+
+
+<!-- LISTS -->
+<pagebreak />
+<h3>Lists<bookmark content="Lists" level="1" /><tocentry name="" content="Lists" level="0" /><indexentry content="Lists"  /></h3>
+<div style="background-color:#ddccff; padding:0pt; border: 1px solid #555555;">
+<ol class="lista">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum. Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listb">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li><span style="color:green; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</span></li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.
+</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listc">
+<li>Big text indent 25mm: Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol class="listd">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.
+<ol class="liste">
+<li>Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.
+<ol>
+<li>No class specified. Text here lorem ipsum ibisque totum.</li>
+<li style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem <span style="color:red; font-size:9pt; font-family:courier; font-weight: normal; font-style: normal;">ipsum</span> ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+<li>Text here lorem ipsum ibisque totum.</li>
+</ol>
+</div>
+
+<!-- TABLES -->
+<pagebreak />
+<h3>Tables<bookmark content="Tables" level="1" /><tocentry name="" content="Tables" level="0" /><tocentry name="Tables" content="Tables - general" level="0" /><indexentry content="Tables"  /></h3>
+<p>mPDF supports all in-line properties inside tables.</p>
+<table border="1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td>
+<td>
+<p>This is data p</p>
+This is data out of p
+<p style="font-weight:bold; font-size:20pt; background-color:#FFBBFF;">This is bold data p</p>
+<b>This is bold data out of p</b><br />
+This is normal data after br
+<h3>Heading 3 inside a table</h3>
+Text here lorem <i>ipsum</i> ibisque totum.<sup>32</sup>
+<div>This is data div</div>
+This is data out of div
+<div style="font-weight:bold;">This is data div (bold)</div>
+This is data out of div
+</td>
+
+<td>Also data</td></tr>
+</tbody></table>
+
+<p>This table has padding-top and -bottom set to 3mm i.e. padding within the cells. Also background-, border colour and style, font family and size are set by in-line <acronym>CSS</acronym>.</p>
+<table style="border: 1px solid #880000; background-color: #BBCCDD; font-family: Mono; font-size: 7pt; " class="tallcells">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr><td>Row 2</td><td><p>This is data p</p></td><td><p>More data</p></td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+</tbody></table>
+
+
+<h4>Tables<bookmark content="Table styles" level="2" /><tocentry name="Tables" content="Table styles" level="0" /><indexentry content="Table:styles"  /></h4>
+<p>The style sheet used for these examples shows some of the table styles I use on my website. The property \'topntail\' defined by a border-type definition e.g. "1px solid #880000" puts a border at the top and bottom of the table, and also below a header row (thead) if defined. Note also that &lt;thead&gt; will automatically turn on the header-repeat i.e. reproduce the header row at the top of each page.</p>
+<p>bpmTopic Class</p>
+<table class="bpmTopic"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>More data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopic<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopicC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>bpmTopnTail Class </p>
+<table class="bpmTopnTail"><thead></thead><tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>
+<p>Row 3</p>
+</td>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>
+<p>Row 4 &lt;td&gt; cell</p>
+</td>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+<p>bpmTopnTail<b>C</b> Class (centered) Odd and Even rows</p>
+<table class="bpmTopnTailC"><thead>
+<tr class="headerrow"><th>Col/Row Header</th>
+<td>
+<p>Second column header p</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>
+<p>Row header 4</p>
+<p>&lt;th&gt; cell acting as header</p>
+</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="oddrow"><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr class="evenrow"><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<p>TopnTail Class</p>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td class="pmhBottomRight"><b><i>Bottom right align</i></b></td>
+<td>
+<p>This is data. Can use</p>
+<p><b>bold</b> <i>italic </i><sub>sub</sub> or <sup>sup</sup> text</p>
+</td>
+</tr>
+<tr class="oddrow"><th class="pmhBottomRight">
+<p>Bottom right align</p>
+</th>
+<td class="pmhMiddleCenter" style="border: #000000 1px solid">
+<p>This is data. This cell</p>
+<p>uses Cell Styles to set</p>
+<p>the borders.</p>
+<p>All borders are collapsible</p>
+<p>in mPDF.</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 4</th>
+<td>
+<p>This is data p</p>
+</td>
+<td>More data</td>
+</tr>
+<tr class="oddrow"><th>Row header 5</th>
+<td colspan="2" class="pmhTopCenter">Also data merged and centered</td>
+</tr>
+</tbody></table>
+
+<p>&nbsp;</p>
+
+<h4>Lists in a Table<bookmark content="Lists in a table" level="2" /><tocentry name="Tables" content="Lists in a table" level="0" /><indexentry content="Table:lists inside"  /></h4>
+<table class="bpmTopnTail"><thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second</p>
+<p>column</p>
+</td>
+<td class="pmhTopRight">Top right align</td>
+</tr>
+</thead><tbody>
+<tr class="oddrow"><th>
+<p>Row header 1 p</p>
+</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr class="evenrow"><th>Row header 2</th>
+<td>
+<ol>
+<li>Item 1</li>
+<li>Item 2
+<ol type="a">
+<li>Subitem of ordered list</li>
+<li>Subitem 2
+<ol type="i">
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+</ol>
+</li>
+<li>Item 3</li>
+<li>Another Item</li>
+<li>Subitem
+<ol>
+<li>Level 3 subitem</li>
+</ol>
+</li>
+<li>Another Item</li>
+</ol>
+</td>
+<td>
+Unordered list:
+<ul>
+<li>Item 1</li>
+<li>Item 2
+<ul>
+<li>Subitem of unordered list</li>
+<li>Subitem 2
+<ul>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+<li>Level 3 subitem</li>
+</ul>
+</li>
+</ul>
+</li>
+<li>Item 3</li>
+</ul>
+</td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+
+<h4>Automatic Column Width<bookmark content="Automatic Column Width" level="2" /><tocentry name="Tables" content="Automatic column width" level="0" /><indexentry content="Table:automatic column width"  /></h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td>Causes</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Ut magna ipsum, tempus in, condimentum at, rutrum et, nisl. Vestibulum interdum luctus sapien. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Maecenas consectetuer eros quis massa. Mauris semper velit vehicula purus. Duis lacus. Aenean pretium consectetuer mauris. Ut purus sem, consequat ut, fermentum sit amet, ornare sit amet, ipsum. Donec non nunc. Maecenas fringilla. Curabitur libero. In dui massa, malesuada sit amet, hendrerit vitae, viverra nec, tortor. Donec varius. Ut ut dolor et tellus adipiscing adipiscing.</td>
+</tr>
+</tbody></table>
+
+
+<h4>Column span<bookmark content="Column span" level="2" /><tocentry name="Tables" content="Column span" level="0" /><indexentry content="Table:column span"  /></h4>
+<table class="bpmTopnTail"><tbody>
+<tr>
+<td>Causes</td>
+<td colspan="2">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. <br />
+Ut a eros at ligula vehicula pretium; maecenas feugiat pede vel risus.<br />
+Suspendisse potenti</td>
+</tr>
+<tr>
+<td>Mechanisms</td>
+<td>Fusce eleifend neque sit amet erat.<br />
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus.</td>
+<td>Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla.<br />
+Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</td>
+</tr>
+</tbody></table>
+
+
+
+<h4>Header & Footer Rows<bookmark content="Header Rows" level="2" /><tocentry name="Tables" content="Header rows" level="0" /><indexentry content="Table:header rows"  /></h4>
+<p>A table using a header or footer row should repeat the header/footer row across pages:</p>
+<p>bpmTopic<b>C</b> Class</p>
+<table class="bpmTopicC">
+<thead>
+<tr class="headerrow"><th>Col and Row Header</th>
+<td>
+<p>Second column header</p>
+</td>
+<td>Third column header</td>
+</tr>
+</thead>
+<tfoot>
+<tr class="headerrow"><th>Col and Row Footer</th>
+<td>
+<p>Second column footer</p>
+</td>
+<td>Third column footer</td>
+</tr>
+</tfoot>
+<tbody>
+<tr><th>Row header 1</th>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 2</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>
+<p>Row header 3</p>
+</th>
+<td>
+<p>This is data</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr><th>Row header 4</th>
+<td>This is data</td>
+<td>
+<p>This is data</p>
+</td>
+</tr>
+<tr><th>Row header 5</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 6</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 7</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 8</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Row header 9</th>
+<td>Also data</td>
+<td>Also data</td>
+</tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+<tr><th>Another Row header</th><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<h4>Autosizing Tables<bookmark content="Autosizing Tables" level="2" /><tocentry name="Tables" content="Autosizing tables" level="0" /><indexentry content="Table:autosizing"  /></h4>
+<p>Periodic Table of elements. Tables are set by default to reduce font size if complete words will not fit inside each cell, to a maximum of 1/1.4 * the set font-size. This value can be changed by setting $mpdf->shrink_tables_to_fit=1.8 or using html attribute &lt;table autosize="1.8"&gt;.</p>
+
+<h5>Periodic Table</h5>
+
+<table style="border:1px solid #000000;" cellPadding="14"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td><td colspan="16"></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr>
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti </td><td>V </td><td>Cr </td><td>Mn </td><td>Fe </td><td>Co </td><td>Ni </td>
+<td>Cu </td><td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td><td>Rh </td><td>Pd </td><td>Ag </td><td>Cd </td>
+<td>In </td><td>Sn </td><td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td><td>Pt </td><td>Au </td>
+<td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td>Ac </td><td colspan="15"></td>
+</tr>
+<tr>
+<td colspan="18"></td></tr>
+<tr>
+<td colspan="3"></td><td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td>
+<td>Dy </td><td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td><td>Cf </td>
+<td>Es </td><td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+
+<pagebreak />
+
+<h4>Rotated Tables<bookmark content="Rotated Tables" level="2" /><tocentry name="Tables" content="Rotated table" level="0" /><indexentry content="Table:rotated"  /></h4>
+<p>This is set to rotate -90 degrees (counterclockwise).</p>
+
+<h5>Periodic Table</h5>
+<p>
+<table rotate="-90" class="bpmClearC"><thead>
+<tr><th>1A</th><th>2A</th><th>3B</th><th>4B</th><th>5B</th><th>6B</th><th>7B</th><th>8B</th><th>8B</th><th>8B</th><th>1B</th><th>2B</th><th>3A</th><th>4A</th><th>5A</th><th>6A</th><th>7A</th><th>8A</th></tr></thead><tbody>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td>H </td><td colspan="15"></td><td></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr>
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti </td><td>V </td><td>Cr </td><td>Mn </td><td>Fe </td><td>Co </td><td>Ni </td><td>Cu </td>
+<td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td><td>Rh </td><td>Pd </td>
+<td>Ag </td><td>Cd </td><td>In </td><td>Sn </td><td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td><td>Pt </td><td>Au </td>
+<td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td>Ac </td>
+</tr>
+<tr>
+<td></td>
+<td colspan="18"></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td><td>Dy </td>
+<td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td><td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td>
+<td>Cf </td><td>Es </td><td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+<p>&nbsp;</p>
+
+<pagebreak />
+<h4>Rotated text in Tables<bookmark content="Rotated text in Tables" level="2" /><tocentry name="Tables" content="Rotated text in table" level="0" /><indexentry content="Table:rotated text"  /></h4>
+
+<h5>Periodic Table</h5>
+<table>
+<thead>
+<tr text-rotate="45">
+<th><p>Element type 1A</p><p>Second line</p><th><p>Element type longer 2A</p></th>
+<th>Element type 3B</th><th>Element type 4B</th><th>Element type 5B</th><th>Element type 6B</th><th>7B</th><th>8B</th>
+<th>Element type 8B R</th><th>8B</th><th>Element <span>type</span> 1B</th><th>2B</th>
+<th>Element type 3A</th><th>Element type 4A</th><th>Element type 5A</th><th>Element type 6A</th><th>7A</th><th>Element type 8A</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td>H</td><td colspan="15"></td><td></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td colspan="10"></td><td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td colspan="10"></td><td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr style="text-rotate: 45">
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti</td><td>Va</td><td>Cr</td><td>Mn</td><td>Fe</td><td>Co</td><td>Ni </td>
+<td>Cu </td><td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td>Ru </td>
+<td style="text-align:right; ">Rh</td><td>Pd </td><td>Ag </td><td>Cd </td><td>In </td><td>Sn </td>
+<td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td>La </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td>
+<td>Pt </td><td>Au </td><td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td colspan="16">Ac </td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Ce </td><td>Pr </td><td>Nd </td><td>Pm </td><td>Sm </td><td>Eu </td><td>Gd </td><td>Tb </td><td>Dy </td>
+<td>Ho </td><td>Er </td><td>Tm </td><td>Yb </td><td>Lu </td><td></td>
+</tr>
+<tr>
+<td colspan="3"></td>
+<td>Th </td><td>Pa </td><td>U </td><td>Np </td><td>Pu </td><td>Am </td><td>Cm </td><td>Bk </td><td>Cf </td><td>Es </td>
+<td>Fm </td><td>Md </td><td>No </td><td>Lr </td><td></td>
+</tr>
+</tbody></table>
+
+
+<pagebreak />
+
+
+
+<h4>Nested Tables<bookmark content="Nested Tables" level="2" /><tocentry name="Tables" content="Nested tables" level="0" /><indexentry content="Table:nested"  /></h4>
+
+<div style="border: 2px solid #000088; background-color: #DDDDFF; padding: 2mm;">
+Text before table
+
+<div style="border: 2px solid #008888; background-color: #DCAFCF; padding: 2mm;">
+
+<table cellSpacing="2" rotate="-90" align="center" autosize="1.5" class="nested" style="page-break-inside: avoid; ">
+<tbody>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id <a href="http://www.dummy.com">euismod auctor</a>, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>
+<table cellSpacing="2" class="nested">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td></td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+</tbody></table>
+
+</div>
+
+
+
+<p>Text before table</p>
+
+<table cellSpacing="2" class="outer2" autosize="3" style="page-break-inside:avoid">
+<tbody>
+<tr>
+<td>Row 1</td>
+<td>This is data</td>
+<td style="text-align: right;">
+Text before table
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+<p>Text after table</p>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 2</td>
+<td>This is data</td>
+<td>This is data</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 3</td>
+<td style="text-align: center; vertical-align: middle;">
+<table cellSpacing="2" class="inner" width="80%">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td style="vertical-align: bottom; ">
+<table cellSpacing="2" class="inner" align="right">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td>B3</td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>C3</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+<tr>
+<td>Row 4</td>
+<td>This is data</td>
+<td><table cellSpacing="2" class="inner">
+<tbody>
+<tr>
+<td>Row A</td>
+<td>A2</td>
+<td>A3</td>
+<td>A4</td>
+</tr>
+<tr>
+<td>Row B</td>
+<td>B2</td>
+<td style="text-align:center;"><img src="sunset.jpg" width="84" style="border:3px solid #44FF44; vertical-align:top; " /></td>
+<td>B4</td>
+</tr>
+<tr>
+<td>Row C</td>
+<td>C2</td>
+<td>
+<table cellSpacing="2">
+<tbody>
+<tr>
+<td>F1</td>
+<td>F2</td>
+</tr>
+<tr>
+<td>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec et nulla. Sed quis orci.</td>
+<td>G2</td>
+</tr>
+</tbody></table>
+</td>
+<td>C4</td>
+</tr>
+<tr>
+<td>Row D</td>
+<td>D2</td>
+<td>D3</td>
+<td>D4</td>
+</tr>
+</tbody></table>
+</td>
+<td>This is data</td>
+</tr>
+</tbody></table>
+
+
+</div>
+
+
+<!-- FORMS -->
+<pagebreak />
+<h3>Forms<bookmark content="Forms" level="1" /><tocentry name="" content="Forms" level="0" /><indexentry content="Forms" /></h3>
+<form>
+<b>Textarea</b>
+<textarea name="authors" rows="5" cols="80" wrap="virtual">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra.
+Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+<b>Select</b>
+<select size="1" name="status"><option value="A">Active</option><option value="W" >New item from auto_manager: pending validation</option><option value="I" selected="selected">Incomplete record - pending</option><option value="X" >Flagged for Deletion</option> </select> followed by text
+<br /><br />
+<b>Input Radio</b>
+<input type="radio" name="recommended" value="0" > No &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="1" > Keep &nbsp;&nbsp;&nbsp;&nbsp; <input type="radio" name="recommended" value="2"  checked="checked" > Choice 
+<br /><br />
+<b>Input Text</b>
+<input type="text" size="190" name="doi" value="10.1258/jrsm.100.5.211"> 
+<br /><br />
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="secret"> 
+<br /><br />
+<input type="checkbox" name="QPC" value="ON" > Checkboxes<br>
+<input type="checkbox" name="QPA" value="ON" > Not selected<br>
+<input type="checkbox" name="QPA" value="ON" disabled="disabled"> Disabled<br>
+<input type="checkbox" name="QLY" value="ON" checked="checked" > Selected
+<br /><br />
+<input type="submit" name="submit" value="Submit" /> 
+<input type="image" name="submit" src="goto.gif" /> 
+<input type="button" name="submit" value="Button" />
+<input type="reset" name="submit" value="Reset" />
+<br /><br />
+</form>
+
+
+<!-- ANNOTATIONS -->
+<pagebreak />
+<h3>Annotations<bookmark content="Annotations" level="1" /><tocentry name="" content="Annotations" level="0" /><indexentry content="Annotations"  /></h3>
+<p>Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate.<annotation content="This is an annotation'."\n".'in the middle of the text" subject="My Subject" icon="Comment" color="#FE88EF" author="Ian Back" /> Donec luctus. Cras euismod tellus vel leo. Cras tellus. Fusce aliquet. Curabitur tincidunt viverra ligula. Fusce eget erat. Donec pede. Vestibulum id felis. Phasellus tincidunt ligula non pede. Morbi turpis. In vitae dui non erat placerat malesuada. Mauris adipiscing congue ante. Proin at erat. Aliquam mattis. </p>
+<p>P: Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. <i>Fusce</i><annotation content="Fusce is a funny word!" subject="Idle Comments" icon="Note" author="Ian Back" pos-x="198" /> eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+<!-- GRAPH -->
+<pagebreak />
+<h3>Graphs<bookmark content="Graphs" level="1" /><tocentry name="" content="Graphs" level="0" /><indexentry content="Graphs"  /></h3>
+<table id="tbl_1" class="sub"><tbody><tr><td></td><td align="right"><b>Female</b></td><td align="right"><b>Male</b></td></tr><tr><td>35 - 44</td><td align="right"><b>4</b></td><td align="right"><b>2</b></td></tr><tr><td>45 - 54</td><td align="right"><b>5</b></td><td align="right"><b>7</b></td></tr><tr><td>55 - 64</td><td align="right"><b>21</b></td><td align="right"><b>18</b></td></tr><tr><td>65 - 74</td><td align="right"><b>11</b></td><td align="right"><b>14</b></td></tr><tr><td>75 - 84</td><td align="right"><b>10</b></td><td align="right"><b>10</b></td></tr><tr><td>85 - 94</td><td align="right"><b>2</b></td><td align="right"><b>1</b></td></tr><tr><td>95 - 104</td><td align="right"><b>1</b></td><td align="right"><b></b></td></tr>
+<tr><td>TOTAL</td><td align="right">54</td><td align="right">52</td></tr>
+</tbody></table>
+
+<h5>Subscriptions for 2008-09<tocentry name="Figures" content="Graph: Subscriptions for 2008-09" /></h5>
+<jpgraph table="tbl_1" type="bar" stacked="0" dpi="300" title="New subscriptions" splines="1" bandw="0" antialias="1" label-y="% patients" label-x="Age group" axis-x="text" axis-y="lin" percent="0"  series="cols" data-col-begin="2" data-row-begin="2" data-col-end="0" data-row-end="-1" show-values="1" width="600" legend-overlap="1" hide-grid="1" hide-y-axis="1" />
+
+
+
+<!-- FULL IMAGES & BARCODE -->
+<pagebreak />
+<h3>Full Images & Barcode<bookmark content="Full Images &amp; Barcode" level="1" /><tocentry name="Figures" content="Full size image & Barcode" level="0" /><indexentry content="Image:full-size"  /><tocentry name="" content="Barcode" level="0" /><indexentry content="Barcode"  /></h3>
+<p>On the first and last page of this document, an image is reproduced full page size by placing it inside a DIV element with CSS "position:absolute". In all other situations, images are constrained to the width and height of the printable page (i.e. inside the margins). The image on the back page has CSS "opacity:0.5".</p>
+
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->SetAlpha(0.5); 
+$mpdf->Image(\'clematis.jpg\',0,0,210,297,\'jpg\',\'\',true, false);
+// the last "false" allows a full page picture
+$mpdf->SetAlpha(1);
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+<p>The back cover also has an ISBN barcode</p>
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->writeBarcode(\'978-0-9542246-0-8\', 1, 130, 230, 1,0, 3,3,4,4); 
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+<p>But next is inserted the Index, which can also be done like this:</p>
+
+<!-- EXAMPLE PHP CODE -->
+<div class="phpcode">'. nl2br(htmlspecialchars('/* ALTERNATIVE PHP METHOD */
+$mpdf->AddPage(\'\',NEXT-ODD\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',\'\',-1,-1,-1,-1);        
+$mpdf->WriteHTML(\'<h2>Index<bookmark content="Index" /></h2>\');
+$mpdf->WriteHTML(\'<indexinsert cols="2" font="serif" div-font="sans-serif" links="on" />\');
+')) .'</div>
+<!-- END EXAMPLE PHP CODE -->
+
+
+
+<!-- INDEX -->
+<pagebreak type="NEXT-ODD" odd-header-value="-1" even-header-value="-1" odd-footer-value="-1" even-footer-value="-1"  />
+<h2>Index<bookmark content="Index" /></h2>
+<indexinsert cols="2" font="serif" div-font="sans-serif" links="on" />
+
+
+
+<!-- BACK COVER & BARCODE -->
+<pagebreak type="NEXT-EVEN" />
+<div style="position: absolute; left:0; right: 0; top: 0; bottom: 0;">
+<img src="clematis.jpg" style="width: 210mm; height: 297mm; margin: 0; opacity: 0.5;" />
+</div>
+
+<div style="position: absolute; right: 35mm; bottom: 35mm; ">
+<barcode code="978-0-9542246-0" type="ISBN" style="padding: 2.5mm; border: 0.1mm solid #000000;" height="0.66" text="1" />
+</div>
+
+
+
+</body></html>';
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('s','A4','','',25,15,21,22,10,10); 
+
+$mpdf->progbar_heading = 'mPDF file progress (Advanced)';
+$mpdf->StartProgressBarOutput(2);
+
+$mpdf->mirrorMargins = 1;
+$mpdf->SetDisplayMode('fullpage','two');
+$mpdf->useGraphs = true;
+$mpdf->list_number_suffix = ')';
+$mpdf->hyphenate = true;
+
+$mpdf->debug  = true;
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php b/inc/3rdparty/libraries/mpdf/examples/example49_changelog.php
new file mode 100644 (file)
index 0000000..279979d
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+ini_set("memory_limit","384M");
+
+// This is because changelog.txt contains over 100000 characters, and preg_* functions in mPDF won't work.
+ini_set("pcre.backtrack_limit","200000");
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->tabSpaces = 6;
+
+$mpdf->allow_charset_conversion=true;
+$mpdf->charset_in='windows-1252';
+
+
+//==============================================================
+
+$html = '
+<h1>mPDF</h1>
+<h2>ChangeLog</h2>
+<div style="border:1px solid #555555; background-color: #DDDDDD; padding: 1em; font-size:8pt; font-family: lucidaconsole, mono;">
+';
+$lines = file('../CHANGELOG.txt');
+
+$html .= '<pre>';
+foreach($lines AS $line) {
+       $html .= htmlspecialchars($line);
+}
+$html .= '</pre>';
+$html .= '</div>';
+
+//==============================================================
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php b/inc/3rdparty/libraries/mpdf/examples/example50_new_mPDF_3_features.php
new file mode 100644 (file)
index 0000000..903d349
--- /dev/null
@@ -0,0 +1,1905 @@
+<?php
+
+$html = '
+<style>
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+}
+.radialgradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;
+       margin: auto;
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+h4 {
+       font-family: sans;
+       font-weight: bold;
+       margin-top: 1em;
+       margin-bottom: 0.5em;
+}
+div {
+       padding:1em; 
+       margin-bottom: 1em;
+       text-align:justify; 
+}
+.example pre {
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+}
+
+pre { text-align:left }
+pre.code { font-family: monospace }
+
+table.html4colortable {margin:auto; width:80%; border:none }
+table.html4colortable TD {border:none; padding:0}
+td .colorsquare { display:block;width:16px;height:16px;border:2px solid black }
+
+table.x11colortable td {text-align:center; background: white; }
+table.x11colortable td.c { text-transform:uppercase }
+table.x11colortable td:first-child, table.x11colortable td:first-child+td { border:1px solid black }
+table.x11colortable th {text-align:center; background:black; color:white }
+
+table.tprofile th.title {background:gray; color:white}
+table.tprofile th { width:29%;padding:2px }
+table.tprofile td { width:71%;padding:2px }
+
+table.hslexample { background: #808080; padding:1em; margin:0; float:left; }
+table.hslexample td,table.hslexample th { font-size:smaller;width:3em }
+</style>
+<!-- TEST FLOAT -->
+<body style="background-gradient: linear #88FFFF #FFFF44 0 0.5 1 0.5;">
+<h2>mPDF Version 3.0</h2>
+<h1>New Features</h1>
+
+<div style="border:0.1mm solid #220044; padding:1em 2em; background-color:#ffffcc; ">
+<h4>Page background</h4>
+<div class="gradient">
+The background colour can now be set by CSS styles on the &lt;body&gt; tag. This will set the background for the whole page. In this document, the background has been set as a gradient (see below).
+</div>
+
+<h4>Background Gradients</h4>
+<div class="gradient">
+Background can be set as a linear or radial gradient between two colours. The background has been set on this &lt;div&gt; element to a linear gradient. CSS style used here is:<br />
+<span style="font-family: mono; font-size: 9pt;">background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;</span><br />
+The four numbers are coordinates in the form (x1, y1, x2, y2) which defines the gradient vector. x and y are values from 0 to 1, where  1 represents the height or width of the box as it is printed.
+<br />
+<br />
+Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY.
+</div>
+<div class="radialgradient">
+The background has been set on this &lt;div&gt; element to a radial gradient. CSS style used here is:<br />
+<span style="font-family: mono; font-size: 9pt;">background-gradient: radial #00FFFF #FFFF00 0.5 0.5 0.5 0.5 0.65;</span><br />
+The five numbers are coordinates in the form (x1, y1, x2, y2, r) where (x1, y1) is the starting point of the gradient with color1, 
+(x2, y2) is the center of the circle with color2, and r is the radius of the circle.
+(x1, y1) should be inside the circle, otherwise some areas will not be defined.
+<br />
+<br />
+Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec mattis lacus ac purus feugiat semper. Donec aliquet nunc odio, vitae pellentesque diam. Pellentesque sed velit lacus. Duis quis dui quis sem consectetur sollicitudin. Cras dolor quam, dapibus et pretium sit amet, elementum vel arcu. Duis rhoncus facilisis erat nec mattis. In hac habitasse platea dictumst. Vivamus hendrerit sem in justo aliquet a pellentesque lorem scelerisque. Suspendisse a augue sed urna rhoncus elementum. Aliquam erat volutpat. 
+</div>
+
+<h4>Background Images</h4>
+<div style="border:0.1mm solid #880000; background: transparent url(bg.jpg) repeat fixed right top; background-color:#ccffff; ">
+The CSS properties background-image, background-position, and background-repeat are supported as defined in CSS2, as well as the shorthand form "background".
+<br />
+The background has been set on this &lt;div&gt; element to:<br />
+<span style="font-family: mono; font-size: 9pt;">background: transparent url(\'bg.jpg\') repeat fixed right top;</span><br />
+Background gradients can be set on all block elements e.g. P, DIV, H1-H6, as well as on BODY.
+</div>
+
+<h4>Rounded Borders</h4>
+<div class="rounded">
+Rounded corners to borders can be added using border-radius as defined in the draft spec. of <a href="http://www.w3.org/TR/2008/WD-css3-background-20080910/#layering">CSS3</a>. <br />
+
+The two length values of the border-*-radius properties define the radii of a quarter ellipse that defines the shape of the corner of the outer border edge.
+The first value is the horizontal radius. <br />
+<span style="font-family: mono; font-size: 9pt;">border-top-left-radius: 55pt 25pt;</span>  55pt is radius of curve from top end of left border starting to go round to the top.<br />
+
+If the second length is omitted it is equal to the first (and the corner is thus a quarter circle). If either length is zero, the corner is square, not rounded.<br />
+
+The border-radius shorthand sets all four border-*-radius properties. If values are given before and after a slash, then the values before the slash set the horizontal radius and the values after the slash set the vertical radius. If there is no slash, then the values set both radii equally. The four values for each radii are given in the order top-left, top-right, bottom-right, bottom-left. If bottom-left is omitted it is the same as top-right. If bottom-right is omitted it is the same as top-left. If top-right is omitted it is the same as top-left.
+</div>
+<div class="rounded">
+<span style="font-family: mono; font-size: 9pt;">border-radius: 4em;</span><br />
+
+would be equivalent to<br />
+
+<span style="font-family: mono; font-size: 9pt;">border-top-left-radius:     4em;<br />
+border-top-right-radius:    4em;<br />
+border-bottom-right-radius: 4em;<br />
+border-bottom-left-radius:  4em;</span><br />
+<br />
+and<br />
+<span style="font-family: mono; font-size: 9pt;">border-radius: 2em 1em 4em / 0.5em 3em;</span><br />
+would be equivalent to<br />
+<span style="font-family: mono; font-size: 9pt;">border-top-left-radius:     2em 0.5em;<br />
+border-top-right-radius:    1em 3em;<br />
+border-bottom-right-radius: 4em 0.5em;<br />
+border-bottom-left-radius:  1em 3em;</span>
+</div>
+
+<h4>Interlaced and alpha-channel-set PNG images supported</h4>
+<div class="rounded">
+Prior to version 3.0, mPDF has not supported PNG images which are interlaced, or images with transparency - now it does.
+<div style="float: left; width: 45%; background-color: #CCFFFF; margin-bottom: 0pt; ">With a blue background-color set, this PNG image with transparency appears like this:
+<br /><img src="alpha.png" width="70" />
+</div>
+<div style="float: right; width: 45%; background-color: #FFFFCC; margin-bottom: 0pt; ">With a different background-color set, the same image appears like this:
+<br /><img src="alpha.png" width="70" />
+</div>
+<div style="clear: both; margin-bottom: 0pt; ">This will not work with background-gradient or background-image (the background-color is used to paint the transparent parts of the image).</div>
+</div>
+
+
+</div>
+
+
+<h4>CSS "Float"</h4>
+<div>
+Block elements can be positioned alongside each other using the CSS property float: left or right. The clear property can also be used, set as left|right|both. Float is only supported on block elements (i.e. not SPAN etc.) and is not fully compliant with the CSS specification. 
+Float only works properly if a width is set for the float, otherwise the width is set to the maximum available (full width, or less if floats already set).
+<br />
+Margin-right can still be set for a float:right and vice-versa.
+<br />
+A block element next to a float has the padding adjusted so that content fits in the remaining width. Text next to a float should wrap correctly, but backgrounds and borders will overlap and/or lie under the floats in a mess.
+<br />
+NB The width that is set defines the width of the content-box. So if you have two floats with width=50% and either of them has padding, margin or border, they will not fit together on the page.
+</div>
+<div class="gradient" style="float: right; width: 28%; margin-bottom: 0pt; ">
+This is text in a &lt;div&gt; element that is set to float:right and width:28%.
+</div>
+<div class="gradient" style="float: left; width: 54%; margin-bottom: 0pt; ">
+This is text in a &lt;div&gt; element that is set to float:left and width:54%.
+</div>
+
+<div style="clear: both; margin: 0pt; padding: 0pt; "></div>
+This is text that follows a &lt;div&gt; element that is set to clear:both.
+
+
+
+<h4>HTML Headers now support hyperlinks</h4>
+<div class="gradient">
+Hyperlinks can now be included in HTML headers and footers. See the link to the documentation manual in the footer of this document.
+</div>
+
+
+contd...
+
+<pagebreak resetpagenum="20" />
+<h4>Resetting Page Numbering</h4>
+<div class="gradient">
+Page numbers can now be reset to any value (rather than just 1) during the document i.e. in any function/tag that supports resetting the numbering: AddPage(), &lt;pagebreak&gt; etc.
+<br />
+Note that the page number has been reset to 20 from this page.
+</div>
+
+<h4>Page Numbering - additional text</h4>
+<div class="gradient">
+Text can be defined to appear before and after page numbers ($pagenumPrefix; $pagenumSuffix; $nbpgPrefix; $nbpgSuffix;)
+<br />
+This document has a non-HTML header defined with the right content as \'{PAGENO}{<span>nbpg</span>}\'.<br />
+The following values have been set:<br />
+<span style="font-family: mono; font-size: 9pt;">$mpdf->pagenumPrefix = \'Page \';<br />
+$mpdf->pagenumSuffix = \'\';<br />
+$mpdf->nbpgPrefix = \' of \';<br />
+$mpdf->nbpgSuffix = \' pages.\';</span>
+<br />
+<br />
+
+This is only recommended in non-HTML headers and footers. Although the text is added correctly in HTML headers & footers, the text alignment is not readjusted after substitution e.g. if it used in the right margin.
+</div>
+
+<h4>Other New features</h4>
+<div style="border:0.1mm solid #555555; background-color: #DDDDDD; padding: 1em; font-size:8pt; font-family: mono;">
+- internal links supported in Indexes (parameter added to CreateIndex() and CreateReference()<br />&nbsp; &nbsp; $useLinking=true;)<br />
+- improved handling of &lt;br>, block elements, and text lines inside tables<br />
+- borders of block-level elements & table cell borders supported (partially) in columns<br />
+- optional error reporting for problems with Images ($showImageErrors=true;)<br />
+- ToC will word-wrap long entries<br />
+- internal links (Bookmarks, IndexEntry and ToCEntry) rewritten to give more accurate positioning<br />&nbsp; &nbsp; (when used as &lt;tag>)<br />
+- autofont algorithm improved for CJK languages<br />
+</div>
+
+
+  <h4>All SVG color keywords supported</h4>
+  <p style="margin: 0pt;">This table provides a list of all the named colors supported by mPDF. The
+   list is precisely the same as the <a href="http://www.w3.org/TR/SVG/types.html#ColorKeywords">SVG 1.0 color
+   keyword names</a>. 
+   The two color swatches on the left illustrate setting the background color
+   of a table cell in two ways: The first column uses the named color value,
+   and the second column uses the respective numeric color value.
+  </p>
+<table align="center" class="x11colortable" style="background-color: white" >
+   <tbody>
+    <tr>
+     <th style="background: black ">Named
+     </th><th>Numeric
+     </th><th>Color&nbsp;name
+
+     </th><th>Hex&nbsp;rgb
+
+     </th><th>Decimal
+
+    </th></tr><tr>
+     <td class="c" style="background: aliceblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(240, 248, 255) ">&nbsp;
+
+     </td><td>aliceblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f0f8ff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">240,248,255
+
+    </td></tr><tr>
+     <td class="c" style="background: antiquewhite ">&nbsp;
+
+     </td><td class="c" style="background: rgb(250, 235, 215) ">&nbsp;
+
+     </td><td>antiquewhite
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#faebd7
+
+     </td><td class="c" style="background-color: #FFFFFF; ">250,235,215
+
+    </td></tr><tr>
+     <td class="c" style="background: aqua ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 255, 255) ">&nbsp;
+
+     </td><td>aqua
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00ffff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,255,255
+
+    </td></tr><tr>
+     <td class="c" style="background: aquamarine ">&nbsp;
+
+     </td><td class="c" style="background: rgb(127, 255, 212) ">&nbsp;
+
+     </td><td>aquamarine
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#7fffd4
+
+     </td><td class="c" style="background-color: #FFFFFF; ">127,255,212
+
+    </td></tr><tr>
+     <td class="c" style="background: azure ">&nbsp;
+
+     </td><td class="c" style="background: rgb(240, 255, 255) ">&nbsp;
+
+     </td><td>azure
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f0ffff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">240,255,255
+
+    </td></tr><tr>
+     <td class="c" style="background: beige ">&nbsp;
+
+     </td><td class="c" style="background: rgb(245, 245, 220) ">&nbsp;
+
+     </td><td>beige
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f5f5dc
+
+     </td><td class="c" style="background-color: #FFFFFF; ">245,245,220
+
+    </td></tr><tr>
+     <td class="c" style="background: bisque ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 228, 196) ">&nbsp;
+
+     </td><td>bisque
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffe4c4
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,228,196
+
+    </td></tr><tr>
+     <td class="c" style="background: black ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 0, 0) ">&nbsp;
+
+     </td><td>black
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#000000
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,0,0
+
+    </td></tr><tr>
+     <td class="c" style="background: blanchedalmond ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 235, 205) ">&nbsp;
+
+     </td><td>blanchedalmond
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffebcd
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,235,205
+
+    </td></tr><tr>
+     <td class="c" style="background: blue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 0, 255) ">&nbsp;
+
+     </td><td>blue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#0000ff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,0,255
+
+    </td></tr><tr>
+     <td class="c" style="background: blueviolet ">&nbsp;
+
+     </td><td class="c" style="background: rgb(138, 43, 226) ">&nbsp;
+
+     </td><td>blueviolet
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#8a2be2
+
+     </td><td class="c" style="background-color: #FFFFFF; ">138,43,226
+
+    </td></tr><tr>
+     <td class="c" style="background: brown ">&nbsp;
+
+     </td><td class="c" style="background: rgb(165, 42, 42) ">&nbsp;
+
+     </td><td>brown
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#a52a2a
+
+     </td><td class="c" style="background-color: #FFFFFF; ">165,42,42
+
+    </td></tr><tr>
+     <td class="c" style="background: burlywood ">&nbsp;
+
+     </td><td class="c" style="background: rgb(222, 184, 135) ">&nbsp;
+
+     </td><td>burlywood
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#deb887
+
+     </td><td class="c" style="background-color: #FFFFFF; ">222,184,135
+
+    </td></tr><tr>
+     <td class="c" style="background: cadetblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(95, 158, 160) ">&nbsp;
+
+     </td><td>cadetblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#5f9ea0
+
+     </td><td class="c" style="background-color: #FFFFFF; ">95,158,160
+
+    </td></tr><tr>
+     <td class="c" style="background: chartreuse ">&nbsp;
+
+     </td><td class="c" style="background: rgb(127, 255, 0) ">&nbsp;
+
+     </td><td>chartreuse
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#7fff00
+
+     </td><td class="c" style="background-color: #FFFFFF; ">127,255,0
+
+    </td></tr><tr>
+     <td class="c" style="background: chocolate ">&nbsp;
+
+     </td><td class="c" style="background: rgb(210, 105, 30) ">&nbsp;
+
+     </td><td>chocolate
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#d2691e
+
+     </td><td class="c" style="background-color: #FFFFFF; ">210,105,30
+
+    </td></tr><tr>
+     <td class="c" style="background: coral ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 127, 80) ">&nbsp;
+
+     </td><td>coral
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff7f50
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,127,80
+
+    </td></tr><tr>
+     <td class="c" style="background: cornflowerblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(100, 149, 237) ">&nbsp;
+
+     </td><td>cornflowerblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#6495ed
+
+     </td><td class="c" style="background-color: #FFFFFF; ">100,149,237
+
+    </td></tr><tr>
+     <td class="c" style="background: cornsilk ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 248, 220) ">&nbsp;
+
+     </td><td>cornsilk
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fff8dc
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,248,220
+
+    </td></tr><tr>
+     <td class="c" style="background: crimson ">&nbsp;
+
+     </td><td class="c" style="background: rgb(220, 20, 60) ">&nbsp;
+
+     </td><td>crimson
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#dc143c
+
+     </td><td class="c" style="background-color: #FFFFFF; ">220,20,60
+
+    </td></tr><tr>
+     <td class="c" style="background: cyan ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 255, 255) ">&nbsp;
+
+     </td><td>cyan
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00ffff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,255,255
+
+    </td></tr><tr>
+     <td class="c" style="background: darkblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 0, 139) ">&nbsp;
+
+     </td><td>darkblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00008b
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,0,139
+
+    </td></tr><tr>
+     <td class="c" style="background: darkcyan ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 139, 139) ">&nbsp;
+
+     </td><td>darkcyan
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#008b8b
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,139,139
+
+    </td></tr><tr>
+     <td class="c" style="background: darkgoldenrod ">&nbsp;
+
+     </td><td class="c" style="background: rgb(184, 134, 11) ">&nbsp;
+
+     </td><td>darkgoldenrod
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#b8860b
+
+     </td><td class="c" style="background-color: #FFFFFF; ">184,134,11
+
+    </td></tr><tr>
+     <td class="c" style="background: darkgray ">&nbsp;
+
+     </td><td class="c" style="background: rgb(169, 169, 169) ">&nbsp;
+
+     </td><td>darkgray
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#a9a9a9
+
+     </td><td class="c" style="background-color: #FFFFFF; ">169,169,169
+
+    </td></tr><tr>
+     <td class="c" style="background: darkgreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 100, 0) ">&nbsp;
+
+     </td><td>darkgreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#006400
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,100,0
+
+    </td></tr><tr>
+     <td class="c" style="background: darkgrey ">&nbsp;
+
+     </td><td class="c" style="background: rgb(169, 169, 169) ">&nbsp;
+
+     </td><td>darkgrey
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#a9a9a9
+
+     </td><td class="c" style="background-color: #FFFFFF; ">169,169,169
+
+    </td></tr><tr>
+     <td class="c" style="background: darkkhaki ">&nbsp;
+
+     </td><td class="c" style="background: rgb(189, 183, 107) ">&nbsp;
+
+     </td><td>darkkhaki
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#bdb76b
+
+     </td><td class="c" style="background-color: #FFFFFF; ">189,183,107
+
+    </td></tr><tr>
+     <td class="c" style="background: darkmagenta ">&nbsp;
+
+     </td><td class="c" style="background: rgb(139, 0, 139) ">&nbsp;
+
+     </td><td>darkmagenta
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#8b008b
+
+     </td><td class="c" style="background-color: #FFFFFF; ">139,0,139
+
+    </td></tr><tr>
+     <td class="c" style="background: darkolivegreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(85, 107, 47) ">&nbsp;
+
+     </td><td>darkolivegreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#556b2f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">85,107,47
+
+    </td></tr><tr>
+     <td class="c" style="background: darkorange ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 140, 0) ">&nbsp;
+
+     </td><td>darkorange
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff8c00
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,140,0
+
+    </td></tr><tr>
+     <td class="c" style="background: darkorchid ">&nbsp;
+
+     </td><td class="c" style="background: rgb(153, 50, 204) ">&nbsp;
+
+     </td><td>darkorchid
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#9932cc
+
+     </td><td class="c" style="background-color: #FFFFFF; ">153,50,204
+
+    </td></tr><tr>
+     <td class="c" style="background: darkred ">&nbsp;
+
+     </td><td class="c" style="background: rgb(139, 0, 0) ">&nbsp;
+
+     </td><td>darkred
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#8b0000
+
+     </td><td class="c" style="background-color: #FFFFFF; ">139,0,0
+
+    </td></tr><tr>
+     <td class="c" style="background: darksalmon ">&nbsp;
+
+     </td><td class="c" style="background: rgb(233, 150, 122) ">&nbsp;
+
+     </td><td>darksalmon
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#e9967a
+
+     </td><td class="c" style="background-color: #FFFFFF; ">233,150,122
+
+    </td></tr><tr>
+     <td class="c" style="background: darkseagreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(143, 188, 143) ">&nbsp;
+
+     </td><td>darkseagreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#8fbc8f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">143,188,143
+
+    </td></tr><tr>
+     <td class="c" style="background: darkslateblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(72, 61, 139) ">&nbsp;
+
+     </td><td>darkslateblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#483d8b
+
+     </td><td class="c" style="background-color: #FFFFFF; ">72,61,139
+
+    </td></tr><tr>
+     <td class="c" style="background: darkslategray ">&nbsp;
+
+     </td><td class="c" style="background: rgb(47, 79, 79) ">&nbsp;
+
+     </td><td>darkslategray
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#2f4f4f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">47,79,79
+
+    </td></tr><tr>
+     <td class="c" style="background: darkslategrey ">&nbsp;
+
+     </td><td class="c" style="background: rgb(47, 79, 79) ">&nbsp;
+
+     </td><td>darkslategrey
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#2f4f4f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">47,79,79
+
+    </td></tr><tr>
+     <td class="c" style="background: darkturquoise ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 206, 209) ">&nbsp;
+
+     </td><td>darkturquoise
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00ced1
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,206,209
+
+    </td></tr><tr>
+     <td class="c" style="background: darkviolet ">&nbsp;
+
+     </td><td class="c" style="background: rgb(148, 0, 211) ">&nbsp;
+
+     </td><td>darkviolet
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#9400d3
+
+     </td><td class="c" style="background-color: #FFFFFF; ">148,0,211
+
+    </td></tr><tr>
+     <td class="c" style="background: deeppink ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 20, 147) ">&nbsp;
+
+     </td><td>deeppink
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff1493
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,20,147
+
+    </td></tr><tr>
+     <td class="c" style="background: deepskyblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 191, 255) ">&nbsp;
+
+     </td><td>deepskyblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00bfff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,191,255
+
+    </td></tr><tr>
+     <td class="c" style="background: dimgray ">&nbsp;
+
+     </td><td class="c" style="background: rgb(105, 105, 105) ">&nbsp;
+
+     </td><td>dimgray
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#696969
+
+     </td><td class="c" style="background-color: #FFFFFF; ">105,105,105
+
+    </td></tr><tr>
+     <td class="c" style="background: dimgrey ">&nbsp;
+
+     </td><td class="c" style="background: rgb(105, 105, 105) ">&nbsp;
+
+     </td><td>dimgrey
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#696969
+
+     </td><td class="c" style="background-color: #FFFFFF; ">105,105,105
+
+    </td></tr><tr>
+     <td class="c" style="background: dodgerblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(30, 144, 255) ">&nbsp;
+
+     </td><td>dodgerblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#1e90ff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">30,144,255
+
+    </td></tr><tr>
+     <td class="c" style="background: firebrick ">&nbsp;
+
+     </td><td class="c" style="background: rgb(178, 34, 34) ">&nbsp;
+
+     </td><td>firebrick
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#b22222
+
+     </td><td class="c" style="background-color: #FFFFFF; ">178,34,34
+
+    </td></tr><tr>
+     <td class="c" style="background: floralwhite ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 250, 240) ">&nbsp;
+
+     </td><td>floralwhite
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fffaf0
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,250,240
+
+    </td></tr><tr>
+     <td class="c" style="background: forestgreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(34, 139, 34) ">&nbsp;
+
+     </td><td>forestgreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#228b22
+
+     </td><td class="c" style="background-color: #FFFFFF; ">34,139,34
+
+    </td></tr><tr>
+     <td class="c" style="background: fuchsia ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 0, 255) ">&nbsp;
+
+     </td><td>fuchsia
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff00ff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,0,255
+
+    </td></tr><tr>
+     <td class="c" style="background: gainsboro ">&nbsp;
+
+     </td><td class="c" style="background: rgb(220, 220, 220) ">&nbsp;
+
+     </td><td>gainsboro
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#dcdcdc
+
+     </td><td class="c" style="background-color: #FFFFFF; ">220,220,220
+
+    </td></tr><tr>
+     <td class="c" style="background: ghostwhite ">&nbsp;
+
+     </td><td class="c" style="background: rgb(248, 248, 255) ">&nbsp;
+
+     </td><td>ghostwhite
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f8f8ff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">248,248,255
+
+    </td></tr><tr>
+     <td class="c" style="background: gold ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 215, 0) ">&nbsp;
+
+     </td><td>gold
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffd700
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,215,0
+
+    </td></tr><tr>
+     <td class="c" style="background: goldenrod ">&nbsp;
+
+     </td><td class="c" style="background: rgb(218, 165, 32) ">&nbsp;
+
+     </td><td>goldenrod
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#daa520
+
+     </td><td class="c" style="background-color: #FFFFFF; ">218,165,32
+
+    </td></tr><tr>
+     <td class="c" style="background: gray ">&nbsp;
+
+     </td><td class="c" style="background: rgb(128, 128, 128) ">&nbsp;
+
+     </td><td>gray
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#808080
+
+     </td><td class="c" style="background-color: #FFFFFF; ">128,128,128
+
+    </td></tr><tr>
+     <td class="c" style="background: green ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 128, 0) ">&nbsp;
+
+     </td><td>green
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#008000
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,128,0
+
+    </td></tr><tr>
+     <td class="c" style="background: greenyellow ">&nbsp;
+
+     </td><td class="c" style="background: rgb(173, 255, 47) ">&nbsp;
+
+     </td><td>greenyellow
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#adff2f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">173,255,47
+
+    </td></tr><tr>
+     <td class="c" style="background: grey ">&nbsp;
+
+     </td><td class="c" style="background: rgb(128, 128, 128) ">&nbsp;
+
+     </td><td>grey
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#808080
+
+     </td><td class="c" style="background-color: #FFFFFF; ">128,128,128
+
+    </td></tr><tr>
+     <td class="c" style="background: honeydew ">&nbsp;
+
+     </td><td class="c" style="background: rgb(240, 255, 240) ">&nbsp;
+
+     </td><td>honeydew
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f0fff0
+
+     </td><td class="c" style="background-color: #FFFFFF; ">240,255,240
+
+    </td></tr><tr>
+     <td class="c" style="background: hotpink ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 105, 180) ">&nbsp;
+
+     </td><td>hotpink
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff69b4
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,105,180
+
+    </td></tr><tr>
+     <td class="c" style="background: indianred ">&nbsp;
+
+     </td><td class="c" style="background: rgb(205, 92, 92) ">&nbsp;
+
+     </td><td>indianred
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#cd5c5c
+
+     </td><td class="c" style="background-color: #FFFFFF; ">205,92,92
+
+    </td></tr><tr>
+     <td class="c" style="background: indigo ">&nbsp;
+
+     </td><td class="c" style="background: rgb(75, 0, 130) ">&nbsp;
+
+     </td><td>indigo
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#4b0082
+
+     </td><td class="c" style="background-color: #FFFFFF; ">75,0,130
+
+    </td></tr><tr>
+     <td class="c" style="background: ivory ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 255, 240) ">&nbsp;
+
+     </td><td>ivory
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fffff0
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,255,240
+
+    </td></tr><tr>
+     <td class="c" style="background: khaki ">&nbsp;
+
+     </td><td class="c" style="background: rgb(240, 230, 140) ">&nbsp;
+
+     </td><td>khaki
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f0e68c
+
+     </td><td class="c" style="background-color: #FFFFFF; ">240,230,140
+
+    </td></tr><tr>
+     <td class="c" style="background: lavender ">&nbsp;
+
+     </td><td class="c" style="background: rgb(230, 230, 250) ">&nbsp;
+
+     </td><td>lavender
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#e6e6fa
+
+     </td><td class="c" style="background-color: #FFFFFF; ">230,230,250
+
+    </td></tr><tr>
+     <td class="c" style="background: lavenderblush ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 240, 245) ">&nbsp;
+
+     </td><td>lavenderblush
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fff0f5
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,240,245
+
+    </td></tr><tr>
+     <td class="c" style="background: lawngreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(124, 252, 0) ">&nbsp;
+
+     </td><td>lawngreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#7cfc00
+
+     </td><td class="c" style="background-color: #FFFFFF; ">124,252,0
+
+    </td></tr><tr>
+     <td class="c" style="background: lemonchiffon ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 250, 205) ">&nbsp;
+
+     </td><td>lemonchiffon
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fffacd
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,250,205
+
+    </td></tr><tr>
+     <td class="c" style="background: lightblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(173, 216, 230) ">&nbsp;
+
+     </td><td>lightblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#add8e6
+
+     </td><td class="c" style="background-color: #FFFFFF; ">173,216,230
+
+    </td></tr><tr>
+     <td class="c" style="background: lightcoral ">&nbsp;
+
+     </td><td class="c" style="background: rgb(240, 128, 128) ">&nbsp;
+
+     </td><td>lightcoral
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f08080
+
+     </td><td class="c" style="background-color: #FFFFFF; ">240,128,128
+
+    </td></tr><tr>
+     <td class="c" style="background: lightcyan ">&nbsp;
+
+     </td><td class="c" style="background: rgb(224, 255, 255) ">&nbsp;
+
+     </td><td>lightcyan
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#e0ffff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">224,255,255
+
+    </td></tr><tr>
+     <td class="c" style="background: lightgoldenrodyellow ">&nbsp;
+
+     </td><td class="c" style="background: rgb(250, 250, 210) ">&nbsp;
+
+     </td><td>lightgoldenrodyellow
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fafad2
+
+     </td><td class="c" style="background-color: #FFFFFF; ">250,250,210
+
+    </td></tr><tr>
+     <td class="c" style="background: lightgray ">&nbsp;
+
+     </td><td class="c" style="background: rgb(211, 211, 211) ">&nbsp;
+
+     </td><td>lightgray
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#d3d3d3
+
+     </td><td class="c" style="background-color: #FFFFFF; ">211,211,211
+
+    </td></tr><tr>
+     <td class="c" style="background: lightgreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(144, 238, 144) ">&nbsp;
+
+     </td><td>lightgreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#90ee90
+
+     </td><td class="c" style="background-color: #FFFFFF; ">144,238,144
+
+    </td></tr><tr>
+     <td class="c" style="background: lightgrey ">&nbsp;
+
+     </td><td class="c" style="background: rgb(211, 211, 211) ">&nbsp;
+
+     </td><td>lightgrey
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#d3d3d3
+
+     </td><td class="c" style="background-color: #FFFFFF; ">211,211,211
+
+    </td></tr><tr>
+     <td class="c" style="background: lightpink ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 182, 193) ">&nbsp;
+
+     </td><td>lightpink
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffb6c1
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,182,193
+
+    </td></tr><tr>
+     <td class="c" style="background: lightsalmon ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 160, 122) ">&nbsp;
+
+     </td><td>lightsalmon
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffa07a
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,160,122
+
+    </td></tr><tr>
+     <td class="c" style="background: lightseagreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(32, 178, 170) ">&nbsp;
+
+     </td><td>lightseagreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#20b2aa
+
+     </td><td class="c" style="background-color: #FFFFFF; ">32,178,170
+
+    </td></tr><tr>
+     <td class="c" style="background: lightskyblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(135, 206, 250) ">&nbsp;
+
+     </td><td>lightskyblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#87cefa
+
+     </td><td class="c" style="background-color: #FFFFFF; ">135,206,250
+
+    </td></tr><tr>
+     <td class="c" style="background: lightslategray ">&nbsp;
+
+     </td><td class="c" style="background: rgb(119, 136, 153) ">&nbsp;
+
+     </td><td>lightslategray
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#778899
+
+     </td><td class="c" style="background-color: #FFFFFF; ">119,136,153
+
+    </td></tr><tr>
+     <td class="c" style="background: lightslategrey ">&nbsp;
+
+     </td><td class="c" style="background: rgb(119, 136, 153) ">&nbsp;
+
+     </td><td>lightslategrey
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#778899
+
+     </td><td class="c" style="background-color: #FFFFFF; ">119,136,153
+
+    </td></tr><tr>
+     <td class="c" style="background: lightsteelblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(176, 196, 222) ">&nbsp;
+
+     </td><td>lightsteelblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#b0c4de
+
+     </td><td class="c" style="background-color: #FFFFFF; ">176,196,222
+
+    </td></tr><tr>
+     <td class="c" style="background: lightyellow ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 255, 224) ">&nbsp;
+
+     </td><td>lightyellow
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffffe0
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,255,224
+
+    </td></tr><tr>
+     <td class="c" style="background: lime ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 255, 0) ">&nbsp;
+
+     </td><td>lime
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00ff00
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,255,0
+
+    </td></tr><tr>
+     <td class="c" style="background: limegreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(50, 205, 50) ">&nbsp;
+
+     </td><td>limegreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#32cd32
+
+     </td><td class="c" style="background-color: #FFFFFF; ">50,205,50
+
+    </td></tr><tr>
+     <td class="c" style="background: linen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(250, 240, 230) ">&nbsp;
+
+     </td><td>linen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#faf0e6
+
+     </td><td class="c" style="background-color: #FFFFFF; ">250,240,230
+
+    </td></tr><tr>
+     <td class="c" style="background: magenta ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 0, 255) ">&nbsp;
+
+     </td><td>magenta
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff00ff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,0,255
+
+    </td></tr><tr>
+     <td class="c" style="background: maroon ">&nbsp;
+
+     </td><td class="c" style="background: rgb(128, 0, 0) ">&nbsp;
+
+     </td><td>maroon
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#800000
+
+     </td><td class="c" style="background-color: #FFFFFF; ">128,0,0
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumaquamarine ">&nbsp;
+
+     </td><td class="c" style="background: rgb(102, 205, 170) ">&nbsp;
+
+     </td><td>mediumaquamarine
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#66cdaa
+
+     </td><td class="c" style="background-color: #FFFFFF; ">102,205,170
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 0, 205) ">&nbsp;
+
+     </td><td>mediumblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#0000cd
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,0,205
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumorchid ">&nbsp;
+
+     </td><td class="c" style="background: rgb(186, 85, 211) ">&nbsp;
+
+     </td><td>mediumorchid
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ba55d3
+
+     </td><td class="c" style="background-color: #FFFFFF; ">186,85,211
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumpurple ">&nbsp;
+
+     </td><td class="c" style="background: rgb(147, 112, 219) ">&nbsp;
+
+     </td><td>mediumpurple
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#9370db
+
+     </td><td class="c" style="background-color: #FFFFFF; ">147,112,219
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumseagreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(60, 179, 113) ">&nbsp;
+
+     </td><td>mediumseagreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#3cb371
+
+     </td><td class="c" style="background-color: #FFFFFF; ">60,179,113
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumslateblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(123, 104, 238) ">&nbsp;
+
+     </td><td>mediumslateblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#7b68ee
+
+     </td><td class="c" style="background-color: #FFFFFF; ">123,104,238
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumspringgreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 250, 154) ">&nbsp;
+
+     </td><td>mediumspringgreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00fa9a
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,250,154
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumturquoise ">&nbsp;
+
+     </td><td class="c" style="background: rgb(72, 209, 204) ">&nbsp;
+
+     </td><td>mediumturquoise
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#48d1cc
+
+     </td><td class="c" style="background-color: #FFFFFF; ">72,209,204
+
+    </td></tr><tr>
+     <td class="c" style="background: mediumvioletred ">&nbsp;
+
+     </td><td class="c" style="background: rgb(199, 21, 133) ">&nbsp;
+
+     </td><td>mediumvioletred
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#c71585
+
+     </td><td class="c" style="background-color: #FFFFFF; ">199,21,133
+
+    </td></tr><tr>
+     <td class="c" style="background: midnightblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(25, 25, 112) ">&nbsp;
+
+     </td><td>midnightblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#191970
+
+     </td><td class="c" style="background-color: #FFFFFF; ">25,25,112
+
+    </td></tr><tr>
+     <td class="c" style="background: mintcream ">&nbsp;
+
+     </td><td class="c" style="background: rgb(245, 255, 250) ">&nbsp;
+
+     </td><td>mintcream
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f5fffa
+
+     </td><td class="c" style="background-color: #FFFFFF; ">245,255,250
+
+    </td></tr><tr>
+     <td class="c" style="background: mistyrose ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 228, 225) ">&nbsp;
+
+     </td><td>mistyrose
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffe4e1
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,228,225
+
+    </td></tr><tr>
+     <td class="c" style="background: moccasin ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 228, 181) ">&nbsp;
+
+     </td><td>moccasin
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffe4b5
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,228,181
+
+    </td></tr><tr>
+     <td class="c" style="background: navajowhite ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 222, 173) ">&nbsp;
+
+     </td><td>navajowhite
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffdead
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,222,173
+
+    </td></tr><tr>
+     <td class="c" style="background: navy ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 0, 128) ">&nbsp;
+
+     </td><td>navy
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#000080
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,0,128
+
+    </td></tr><tr>
+     <td class="c" style="background: oldlace ">&nbsp;
+
+     </td><td class="c" style="background: rgb(253, 245, 230) ">&nbsp;
+
+     </td><td>oldlace
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fdf5e6
+
+     </td><td class="c" style="background-color: #FFFFFF; ">253,245,230
+
+    </td></tr><tr>
+     <td class="c" style="background: olive ">&nbsp;
+
+     </td><td class="c" style="background: rgb(128, 128, 0) ">&nbsp;
+
+     </td><td>olive
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#808000
+
+     </td><td class="c" style="background-color: #FFFFFF; ">128,128,0
+
+    </td></tr><tr>
+     <td class="c" style="background: olivedrab ">&nbsp;
+
+     </td><td class="c" style="background: rgb(107, 142, 35) ">&nbsp;
+
+     </td><td>olivedrab
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#6b8e23
+
+     </td><td class="c" style="background-color: #FFFFFF; ">107,142,35
+
+    </td></tr><tr>
+     <td class="c" style="background: orange ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 165, 0) ">&nbsp;
+
+     </td><td>orange
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffa500
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,165,0
+
+    </td></tr><tr>
+     <td class="c" style="background: orangered ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 69, 0) ">&nbsp;
+
+     </td><td>orangered
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff4500
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,69,0
+
+    </td></tr><tr>
+     <td class="c" style="background: orchid ">&nbsp;
+
+     </td><td class="c" style="background: rgb(218, 112, 214) ">&nbsp;
+
+     </td><td>orchid
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#da70d6
+
+     </td><td class="c" style="background-color: #FFFFFF; ">218,112,214
+
+    </td></tr><tr>
+     <td class="c" style="background: palegoldenrod ">&nbsp;
+
+     </td><td class="c" style="background: rgb(238, 232, 170) ">&nbsp;
+
+     </td><td>palegoldenrod
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#eee8aa
+
+     </td><td class="c" style="background-color: #FFFFFF; ">238,232,170
+
+    </td></tr><tr>
+     <td class="c" style="background: palegreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(152, 251, 152) ">&nbsp;
+
+     </td><td>palegreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#98fb98
+
+     </td><td class="c" style="background-color: #FFFFFF; ">152,251,152
+
+    </td></tr><tr>
+     <td class="c" style="background: paleturquoise ">&nbsp;
+
+     </td><td class="c" style="background: rgb(175, 238, 238) ">&nbsp;
+
+     </td><td>paleturquoise
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#afeeee
+
+     </td><td class="c" style="background-color: #FFFFFF; ">175,238,238
+
+    </td></tr><tr>
+     <td class="c" style="background: palevioletred ">&nbsp;
+
+     </td><td class="c" style="background: rgb(219, 112, 147) ">&nbsp;
+
+     </td><td>palevioletred
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#db7093
+
+     </td><td class="c" style="background-color: #FFFFFF; ">219,112,147
+
+    </td></tr><tr>
+     <td class="c" style="background: papayawhip ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 239, 213) ">&nbsp;
+
+     </td><td>papayawhip
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffefd5
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,239,213
+
+    </td></tr><tr>
+     <td class="c" style="background: peachpuff ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 218, 185) ">&nbsp;
+
+     </td><td>peachpuff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffdab9
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,218,185
+
+    </td></tr><tr>
+     <td class="c" style="background: peru ">&nbsp;
+
+     </td><td class="c" style="background: rgb(205, 133, 63) ">&nbsp;
+
+     </td><td>peru
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#cd853f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">205,133,63
+
+    </td></tr><tr>
+     <td class="c" style="background: pink ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 192, 203) ">&nbsp;
+
+     </td><td>pink
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffc0cb
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,192,203
+
+    </td></tr><tr>
+     <td class="c" style="background: plum ">&nbsp;
+
+     </td><td class="c" style="background: rgb(221, 160, 221) ">&nbsp;
+
+     </td><td>plum
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#dda0dd
+
+     </td><td class="c" style="background-color: #FFFFFF; ">221,160,221
+
+    </td></tr><tr>
+     <td class="c" style="background: powderblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(176, 224, 230) ">&nbsp;
+
+     </td><td>powderblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#b0e0e6
+
+     </td><td class="c" style="background-color: #FFFFFF; ">176,224,230
+
+    </td></tr><tr>
+     <td class="c" style="background: purple ">&nbsp;
+
+     </td><td class="c" style="background: rgb(128, 0, 128) ">&nbsp;
+
+     </td><td>purple
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#800080
+
+     </td><td class="c" style="background-color: #FFFFFF; ">128,0,128
+
+    </td></tr><tr>
+     <td class="c" style="background: red ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 0, 0) ">&nbsp;
+
+     </td><td>red
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff0000
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,0,0
+
+    </td></tr><tr>
+     <td class="c" style="background: rosybrown ">&nbsp;
+
+     </td><td class="c" style="background: rgb(188, 143, 143) ">&nbsp;
+
+     </td><td>rosybrown
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#bc8f8f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">188,143,143
+
+    </td></tr><tr>
+     <td class="c" style="background: royalblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(65, 105, 225) ">&nbsp;
+
+     </td><td>royalblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#4169e1
+
+     </td><td class="c" style="background-color: #FFFFFF; ">65,105,225
+
+    </td></tr><tr>
+     <td class="c" style="background: saddlebrown ">&nbsp;
+
+     </td><td class="c" style="background: rgb(139, 69, 19) ">&nbsp;
+
+     </td><td>saddlebrown
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#8b4513
+
+     </td><td class="c" style="background-color: #FFFFFF; ">139,69,19
+
+    </td></tr><tr>
+     <td class="c" style="background: salmon ">&nbsp;
+
+     </td><td class="c" style="background: rgb(250, 128, 114) ">&nbsp;
+
+     </td><td>salmon
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fa8072
+
+     </td><td class="c" style="background-color: #FFFFFF; ">250,128,114
+
+    </td></tr><tr>
+     <td class="c" style="background: sandybrown ">&nbsp;
+
+     </td><td class="c" style="background: rgb(244, 164, 96) ">&nbsp;
+
+     </td><td>sandybrown
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f4a460
+
+     </td><td class="c" style="background-color: #FFFFFF; ">244,164,96
+
+    </td></tr><tr>
+     <td class="c" style="background: seagreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(46, 139, 87) ">&nbsp;
+
+     </td><td>seagreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#2e8b57
+
+     </td><td class="c" style="background-color: #FFFFFF; ">46,139,87
+
+    </td></tr><tr>
+     <td class="c" style="background: seashell ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 245, 238) ">&nbsp;
+
+     </td><td>seashell
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fff5ee
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,245,238
+
+    </td></tr><tr>
+     <td class="c" style="background: sienna ">&nbsp;
+
+     </td><td class="c" style="background: rgb(160, 82, 45) ">&nbsp;
+
+     </td><td>sienna
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#a0522d
+
+     </td><td class="c" style="background-color: #FFFFFF; ">160,82,45
+
+    </td></tr><tr>
+     <td class="c" style="background: silver; ">&nbsp;
+
+     </td><td class="c" style="background: rgb(192, 192, 192) ">&nbsp;
+
+     </td><td>silver
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#c0c0c0
+
+     </td><td class="c" style="background-color: #FFFFFF; ">192,192,192
+
+    </td></tr><tr>
+     <td class="c" style="background: skyblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(135, 206, 235) ">&nbsp;
+
+     </td><td>skyblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#87ceeb
+
+     </td><td class="c" style="background-color: #FFFFFF; ">135,206,235
+
+    </td></tr><tr>
+     <td class="c" style="background: slateblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(106, 90, 205) ">&nbsp;
+
+     </td><td>slateblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#6a5acd
+
+     </td><td class="c" style="background-color: #FFFFFF; ">106,90,205
+
+    </td></tr><tr>
+     <td class="c" style="background: slategray ">&nbsp;
+
+     </td><td class="c" style="background: rgb(112, 128, 144) ">&nbsp;
+
+     </td><td>slategray
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#708090
+
+     </td><td class="c" style="background-color: #FFFFFF; ">112,128,144
+
+    </td></tr><tr>
+     <td class="c" style="background: slategrey ">&nbsp;
+
+     </td><td class="c" style="background: rgb(112, 128, 144) ">&nbsp;
+
+     </td><td>slategrey
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#708090
+
+     </td><td class="c" style="background-color: #FFFFFF; ">112,128,144
+
+    </td></tr><tr>
+     <td class="c" style="background: snow ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 250, 250) ">&nbsp;
+
+     </td><td>snow
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#fffafa
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,250,250
+
+    </td></tr><tr>
+     <td class="c" style="background: springgreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 255, 127) ">&nbsp;
+
+     </td><td>springgreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#00ff7f
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,255,127
+
+    </td></tr><tr>
+     <td class="c" style="background: steelblue ">&nbsp;
+
+     </td><td class="c" style="background: rgb(70, 130, 180) ">&nbsp;
+
+     </td><td>steelblue
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#4682b4
+
+     </td><td class="c" style="background-color: #FFFFFF; ">70,130,180
+
+    </td></tr><tr>
+     <td class="c" style="background: tan ">&nbsp;
+
+     </td><td class="c" style="background: rgb(210, 180, 140) ">&nbsp;
+
+     </td><td>tan
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#d2b48c
+
+     </td><td class="c" style="background-color: #FFFFFF; ">210,180,140
+
+    </td></tr><tr>
+     <td class="c" style="background: teal ">&nbsp;
+
+     </td><td class="c" style="background: rgb(0, 128, 128) ">&nbsp;
+
+     </td><td>teal
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#008080
+
+     </td><td class="c" style="background-color: #FFFFFF; ">0,128,128
+
+    </td></tr><tr>
+     <td class="c" style="background: thistle ">&nbsp;
+
+     </td><td class="c" style="background: rgb(216, 191, 216) ">&nbsp;
+
+     </td><td>thistle
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#d8bfd8
+
+     </td><td class="c" style="background-color: #FFFFFF; ">216,191,216
+
+    </td></tr><tr>
+     <td class="c" style="background: tomato ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 99, 71) ">&nbsp;
+
+     </td><td>tomato
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ff6347
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,99,71
+
+    </td></tr><tr>
+     <td class="c" style="background: turquoise ">&nbsp;
+
+     </td><td class="c" style="background: rgb(64, 224, 208) ">&nbsp;
+
+     </td><td>turquoise
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#40e0d0
+
+     </td><td class="c" style="background-color: #FFFFFF; ">64,224,208
+
+    </td></tr><tr>
+     <td class="c" style="background: violet ">&nbsp;
+
+     </td><td class="c" style="background: rgb(238, 130, 238) ">&nbsp;
+
+     </td><td>violet
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ee82ee
+
+     </td><td class="c" style="background-color: #FFFFFF; ">238,130,238
+
+    </td></tr><tr>
+     <td class="c" style="background: wheat ">&nbsp;
+
+     </td><td class="c" style="background: rgb(245, 222, 179) ">&nbsp;
+
+     </td><td>wheat
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f5deb3
+
+     </td><td class="c" style="background-color: #FFFFFF; ">245,222,179
+
+    </td></tr><tr>
+     <td class="c" style="background: white ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 255, 255) ">&nbsp;
+
+     </td><td>white
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffffff
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,255,255
+
+    </td></tr><tr>
+     <td class="c" style="background: whitesmoke ">&nbsp;
+
+     </td><td class="c" style="background: rgb(245, 245, 245) ">&nbsp;
+
+     </td><td>whitesmoke
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#f5f5f5
+
+     </td><td class="c" style="background-color: #FFFFFF; ">245,245,245
+
+    </td></tr><tr>
+     <td class="c" style="background: yellow ">&nbsp;
+
+     </td><td class="c" style="background: rgb(255, 255, 0) ">&nbsp;
+
+     </td><td>yellow
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#ffff00
+
+     </td><td class="c" style="background-color: #FFFFFF; ">255,255,0
+
+    </td></tr><tr>
+     <td class="c" style="background: yellowgreen ">&nbsp;
+
+     </td><td class="c" style="background: rgb(154, 205, 50) ">&nbsp;
+
+     </td><td>yellowgreen
+
+     </td><td class="c" style="background-color: #FFFFFF; ">#9acd32
+
+     </td><td class="c" style="background-color: #FFFFFF; ">154,205,50
+  </td></tr></tbody></table>
+
+
+';
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+
+$mpdf=new mPDF('c','A4','','',15,15,20,20,5,5); 
+
+//==============================================================
+
+$mpdf->pagenumPrefix = 'Page ';
+$mpdf->pagenumSuffix = '';
+$mpdf->nbpgPrefix = ' of ';
+$mpdf->nbpgSuffix = ' pages.';
+$header = array(
+       'L' => array(
+       ),
+       'C' => array(
+       ),
+       'R' => array(
+               'content' => '{PAGENO}{nbpg}',
+               'font-family' => 'sans',
+               'font-style' => '',
+               'font-size' => '9',     /* gives default */
+       ),
+       'line' => 1,
+);
+$footer = '
+<table width="100%" style="border-top: 0.1mm solid #000000; vertical-align: top; font-family: sans; font-size: 9pt; color: #000055;"><tr>
+<td width="50%"></td>
+<td width="50%" align="right">See <a href="http://mpdf1.com/manual/index.php">documentation manual</a> for further details</td>
+</tr></table>
+';
+
+$mpdf->SetHeader($header,'O');
+$mpdf->SetHTMLFooter($footer);
+//==============================================================
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php b/inc/3rdparty/libraries/mpdf/examples/example51_new_mPDF_4_features.php
new file mode 100644 (file)
index 0000000..8882ad2
--- /dev/null
@@ -0,0 +1,615 @@
+<?php
+
+$html = '
+<style>
+body {         font-family: sans; }
+h4, p {        margin: 0pt;
+}
+h5 { margin-bottom: 0; }
+table.items {
+       font-size: 9pt; 
+       border-collapse: collapse;
+       border: 3px solid #880000; 
+       background-color: #FFFFFF;
+}
+td { vertical-align: top; 
+}
+table thead td { background-color: #EEEEEE;
+       text-align: center;
+}
+table tfoot td { background-color: #AAFFEE;
+       text-align: center;
+}
+.barcode {
+       padding: 1.5mm;
+       margin: 0;
+       vertical-align: top;
+       color: #000000;
+}
+.barcodecell {
+       text-align: center;
+       vertical-align: middle;
+       padding: 0;
+}
+
+@page {
+       background-gradient: linear #00FFFF #FFFF00 0 0.5 1 0.5;
+       odd-header-name: html_myHTMLHeaderOdd;
+       even-header-name: html_myHTMLHeaderEven;
+       odd-footer-name: html_myHTMLFooterOdd;
+       even-footer-name: html_myHTMLFooterEven;
+}
+#myfixed { 
+       position: fixed; 
+       overflow: auto; 
+       height: 60mm;
+       margin-left: auto; 
+       right: 30mm; 
+       top: 150mm; 
+       border: 1px solid #880000; 
+       background-color: #EEDDFF; 
+       padding: 3em; 
+       text-align: justify; 
+       text-indent: 3em; 
+       font-size: 10pt; 
+       font-family:sans; 
+       font-style: italic; 
+       line-height: 1.8; 
+       color: red;
+}
+.myfixed2 { position: absolute; 
+       overflow: visible; 
+       left: 0;
+       right: 0;
+       width: 100mm; 
+       top: 40mm; 
+       margin-left: auto; 
+       margin-right: auto; 
+       border: 1px solid #000088; 
+       background-color: #EEDDFF; 
+       background: transparent url(\'bg.jpg\') repeat scroll right top; 
+       padding: 1.5em; 
+       font-family:sans; 
+}
+.myfixed3 { position: absolute; 
+       overflow: visible; 
+       right: 0; 
+       bottom: 0; 
+       border: 1px solid #000088; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 1.5em; 
+       font-family:sans; 
+}
+.myfixed4 { position: absolute; 
+       overflow: auto; 
+       left: 150mm;
+       right: 0;
+       top: 100mm; 
+       height: 10mm; 
+       border: 1px solid #000088; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.5em; 
+       font-family:sans; 
+}
+.myfixed5 { position: absolute; 
+       overflow: visible; 
+       left: 150mm;
+       right: 0;
+       top: 125mm; 
+       height: 10mm; 
+       border: 1px solid #000088; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.5em; 
+       font-family:sans; 
+}
+.myfixed6 { position: absolute; 
+       overflow: hidden; 
+       right: 150mm;
+       left: 0;
+       top: 110mm; 
+       height: 10mm; 
+       border: 1px solid #000088; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.5em; 
+       font-family:sans; 
+}
+.myfixed7 { position: absolute; 
+       right: 140mm;
+       top: 130mm; 
+       width: auto;
+       border: 1px solid #000088; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.5em; 
+       font-family:sans; 
+}
+div.indic, div.arabic {
+       font-size: 14pt;
+}
+div.indic h5, div.arabic h5  {
+       margin: 0;
+}
+div.indic p, div.arabic p, div.arabic li {
+       margin: 0;
+       margin-botom: 1em;
+       line-height: 1.8;
+}
+div.arabic p, div.arabic h5, div.arabic h4, div.arabic td   {
+       text-align: right;
+}
+div.arabic td   {
+       text-align: right;
+       font-size: 14pt;
+       padding: 1em;
+}
+h2 { color: #880000; margin-bottom: 0.2em; }
+h4 { margin-bottom: 0.2em; }
+</style>
+<htmlpageheader name="myHTMLHeaderOdd" style="display:none">
+<div style="background-color:#BBEEFF" align="center"><b>Page {PAGENO} of {nb}</b></div>
+</htmlpageheader>
+<htmlpageheader name="myHTMLHeaderEven" style="display:none">
+<div style="background-color:#EFFBBE" align="center"><b><i>{PAGENO}</i></b></div>
+</htmlpageheader>
+<htmlpagefooter name="myHTMLFooterOdd" style="display:none">
+<div style="background-color:#CFFFFC" align="center"><b>{PAGENO}</b></div>
+</htmlpagefooter>
+<htmlpagefooter name="myHTMLFooterEven" style="display:none">
+<div style="background-color:#FFCCFF" align="center"><b><i>{PAGENO}</i></b></div>
+</htmlpagefooter>
+
+
+<h1>mPDF Version 4.0 New features</h1>
+<ul><li>Ability to embed font subsets (much smaller files)</li>
+<li>Support for Fixed position block elements</li>
+<li>Support for Indic languages including consonant conjuncts</li>
+<li>Much improved support for Arabic languages</li>
+<li>New utility to help create your own fonts</li>
+<li>Increased support for barcodes</li>
+</ul>
+
+<h2>Indic Fonts/Languages</h2>
+<h5>From BBC World Service Hindi News (http://www.bbc.co.uk/hindi/)</h5>
+<div class="indic">
+<h4 lang="hi">&#x915;&#x941;&#x91b; &#x914;&#x930; &#x924;&#x925;&#x94d;&#x92f; &#x92a;&#x949;&#x92a;</h4>
+<p lang="hi">&#x91c;&#x948;&#x915;&#x94d;&#x938;&#x928; &#x92e;&#x93e;&#x92e;&#x932;&#x947; &#x938;&#x947; &#x91c;&#x941;&#x921;&#x93c;&#x947; &#x928;&#x90f; &#x924;&#x925;&#x94d;&#x92f; &#x938;&#x93e;&#x92e;&#x928;&#x947; &#x906;&#x90f;.</p>
+</div>
+
+
+<h5>From BBC World Service Tamil News (http://www.bbc.co.uk/tamil/)</h5>
+<div class="indic">
+<h4 lang="ta">&#xb9a;&#xbc6;&#xbaf;&#xbcd;&#xba4;&#xbbf;&#xbaf;&#xbb0;&#xb99;&#xbcd;&#xb95;&#xbae;&#xbcd;</h4>
+<p lang="ta">&#xb87;&#xbb2;&#xb99;&#xbcd;&#xb95;&#xbc8;&#xbaf;&#xbbf;&#xbb2;&#xbcd; &#xb9a;&#xbbf;&#xbb1;&#xbc1;&#xbaa;&#xbbe;&#xba9;&#xbcd;&#xbae;&#xbc8;&#xb95;&#xbcd; &#xb95;&#xb9f;&#xbcd;&#xb9a;&#xbbf;&#xb95;&#xbb3;&#xbc1;&#xb95;&#xbcd;&#xb95;&#xbbf;&#xb9f;&#xbc8;&#xbaf;&#xbbf;&#xbb2;&#xbcd; &#xbaa;&#xbca;&#xba4;&#xbc1; &#xb87;&#xba3;&#xb95;&#xbcd;&#xb95;&#xbaa;&#xbcd;&#xbaa;&#xbbe;&#xb9f;&#xbcd;&#xb9f;&#xbc8; &#xb8e;&#xb9f;&#xbcd;&#xb9f;&#xbc1;&#xbae;&#xbcd; &#xbae;&#xbc1;&#xbaf;&#xbb1;&#xbcd;&#xb9a;&#xbbf;&#xbaf;&#xbbf;&#xbb2;&#xbcd; ...</p>
+</div>
+
+<h5>From Yahoo Indian- Malayalam (http://in.malayalam.yahoo.com/)</h5>
+<div class="indic">
+<h4 lang="ml">&#xd2a;&#xd34;&#xd36;&#xd4d;&#xd36;&#xd3f;&#xd30;&#xd3e;&#xd1c; &#xd2e;&#xd46;&#xd17;&#xd3e;&#xd39;&#xd3f;&#xd31;&#xd4d;&#xd31;&#xd4d;; &#x2018;&#xd38;&#xd4d;&#xd35;.&#xd32;&#xd47;&#x2019; &#xd2e;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd47;&#xd31;&#xd41;&#xd28;&#xd4d;&#xd28;&#xd41;</h4>
+<p lang="ml">&#xd2a;&#xd34;&#xd36;&#xd4d;&#xd36;&#xd3f;&#xd30;&#xd3e;&#xd1c; &#xd2e;&#xd32;&#xd2f;&#xd3e;&#xd33; &#xd38;&#xd3f;&#xd28;&#xd3f;&#xd2e;&#xd2f;&#xd41;&#xd1f;&#xd46; &#xd1a;&#xd30;&#xd3f;&#xd24;&#xd4d;&#xd30;&#xd24;&#xd4d;&#xd24;&#xd3f;&#xd32;&#xd46; &#xd0f;&#xd31;&#xd4d;&#xd31;&#xd35;&#xd41;&#xd02; &#xd35;&#xd32;&#xd3f;&#xd2f; &#xd35;&#xd3f;&#xd1c;&#xd2f;&#xd2e;&#xd3e;&#xd15;&#xd41;&#xd15;&#xd2f;&#xd3e;&#xd23;&#xd4d;. 30 &#xd26;&#xd3f;&#xd35;&#xd38;&#xd19;&#xd4d;&#xd19;&#xd33;&#xd4d;&#x200d; &#xd2a;&#xd3f;&#xd28;&#xd4d;&#xd28;&#xd3f;&#xd1f;&#xd4d;&#xd1f;&#xd2a;&#xd4d;&#xd2a;&#xd4b;&#xd33;&#xd4d;&#x200d; &#xd1a;&#xd3f;&#xd24;&#xd4d;&#xd30;&#xd24;&#xd4d;&#xd24;&#xd3f;&#xd28;&#xd4d;&#x200d;&#xd31;&#xd46; &#xd15;&#xd33;&#xd15;&#xd4d;&#xd37;&#xd28;&#xd4d;&#x200d; 12 &#xd15;&#xd4b;&#xd1f;&#xd3f;...</p>
+</div>
+
+<h5>From Yahoo Indian- Punjabi (http://in.punjabi.yahoo.com/)</h5>
+<div class="indic">
+<h4 lang="pa">&#xa1a;&#xa3e;&#xa02;&#xa38; &#xa2a;&#xa47; &#xa21;&#xa3e;&#xa02;&#xa38; &#xa36;&#xa3e;&#xa39;&#xa3f;&#xa26; &#xa26;&#xa40; &#xa15;&#xa39;&#xa3e;&#xa23;&#xa40;</h4>
+<p lang="pa">&#xa15;&#xa47;&#xa28; &#xa18;&#xa4b;&#xa36; &#xa26;&#xa40; &#xa5e;&#xa3f;&#xa32;&#xa2e; &#xa1a;&#xa3e;&#xa02;&#xa38; &#xa2a;&#xa47; &#xa21;&#xa3e;&#xa02;&#xa38; &#xa5e;&#xa3f;&#xa32;&#xa2e; &#xa35;&#xa3f;&#xa71;&#xa1a; &#xa36;&#xa3e;&#xa39;&#xa3f;&#xa26; &#xa15;&#xa2a;&#xa42;&#xa30; &#xa2e;&#xa41;&#xa71;&#xa16; &#xa2d;&#xa42;&#xa2e;&#xa3f;&#xa15;&#xa3e; &#xa35;&#xa3f;&#xa71;&#xa1a; &#xa39;&#xa28;&#x964; &#xa5e;&#xa3f;&#xa32;&#xa2e; &#xa26;&#xa47; &#xa2c;&#xa3e;&#xa30;&#xa47; &#xa35;&#xa3f;&#xa71;&#xa1a; &#xa15;&#xa3f;&#xa39;&#xa3e; &#xa1c;&#xa3e; &#xa38;&#xa15;&#xa26;&#xa3e; &#xa39;&#xa48; &#xa15;&#xa3f; &#xa07;&#xa39; &#xa06;&#xa2a; &#xa36;&#xa3e;&#xa39;&#xa3f;&#xa26; &#xa26;&#xa40; &#xa15;&#xa39;&#xa3e;&#xa23;&#xa40; &#xa39;&#xa48;&#x964; &#xa5e;&#xa3f;&#xa32;&#xa2e; &#xa26;&#xa3e; &#xa28;&#xa3e;&#xa07;&#xa15; &#xa2e;&#xa71;&#xa27;&#xa2e; &#xa2a;&#xa30;&#xa3f;&#xa35;&#xa3e;&#xa30; &#xa26;&#xa3e; &#xa26;&#xa71;&#xa38;&#xa3f;&#xa06; &#xa17;&#xa3f;&#xa06; &#xa39;&#xa48; &#xa05;&#xa24;&#xa47; &#xa15;&#xa08;...</p>
+</div>
+
+<h5>From Yahoo Indian- Gujarati (http://in.gujarati.yahoo.com/)</h5>
+<div class="indic">
+<h4 lang="gu">&#xab6;&#xabf;&#xab2;&#xacd;&#xaaa;&#xabe; &#xa85;&#xaa8;&#xac7; &#xab0;&#xabe;&#xa9c; &#xa86;&#xa9c;&#xac7; &#xab8;&#xabe;&#xaa4; &#xaab;&#xac7;&#xab0;&#xabe; &#xab2;&#xac7;&#xab6;&#xac7;</h4>
+<p lang="gu">&#xaac;&#xacb;&#xab2;&#xac0;&#xab5;&#xac1;&#xaa1; &#xab8;&#xac1;&#xa82;&#xaa6;&#xab0;&#xac0; &#xab6;&#xabf;&#xab2;&#xacd;&#xaaa;&#xabe; &#xab6;&#xac7;&#xa9f;&#xacd;&#xa9f;&#xac0; &#xaaa;&#xacb;&#xaa4;&#xabe;&#xaa8;&#xabe; &#xaae;&#xa82;&#xa97;&#xac7;&#xaa4;&#xab0; &#xaad;&#xabe;&#xab0;&#xaa4;&#xac0;&#xaaf; &#xaae;&#xac2;&#xab3;&#xaa8;&#xabe; &#xaac;&#xacd;&#xab0;&#xabf;&#xa9f;&#xabf;&#xab6; &#xa89;&#xaa6;&#xacd;&#xaaf;&#xacb;&#xa97;&#xaaa;&#xaa4;&#xabf; &#xab0;&#xabe;&#xa9c; &#xa95;&#xac1;&#xa82;&#xaa6;&#xacd;&#xab0;&#xabe; &#xab8;&#xabe;&#xaa5;&#xac7; &#xa86;&#xa9c;&#xac7; &#xab2;&#xa97;&#xacd;&#xaa8; &#xaac;&#xa82;&#xaa7;&#xaa8;&#xaae;&#xabe;&#xa82; &#xaac;&#xa82;&#xaa7;&#xabe;&#xaaf; &#xa9c;&#xab6;&#xac7;. &#xab5;&#xabf;&#xab5;&#xabe;&#xab9; &#xab8;&#xaae;&#xabe;&#xab0;&#xa82;&#xaad; &#xab0;&#xabe;&#xa9c;&#xaa8;&#xabe; &#xaae;&#xabf;&#xaa4;&#xacd;&#xab0; &#xa95;&#xabf;&#xab0;&#xaa3; &#xaac;&#xabe;&#xab5;&#xabe;&#xaa8;&#xabe; &#xa96;&#xa82;&#xaa1;&#xabe;&#xab2;&#xabe;&#xaae;&#xabe;&#xa82; &#xa86;&#xab5;&#xac7;&#xab2; &#xaab;&#xabe;&#xab0;&#xacd;&#xaae;...</p>
+</div>
+<pagebreak />
+
+<h2>Arabic Fonts/Languages</h2>
+<h5>From BBC World Service Arabic News (http://www.bbc.co.uk/arabic/)</h5>
+<div class="arabic">
+<h4 lang="ar">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</h4>
+<p lang="ar">&#x628;&#x64a;&#x639; &#x627;&#x644;&#x642;&#x641;&#x627;&#x632; &#x627;&#x644;&#x62c;&#x644;&#x62f;&#x64a; &#x627;&#x644;&#x645;&#x631;&#x635;&#x639; &#x627;&#x644;&#x630;&#x64a; &#x627;&#x631;&#x62a;&#x62f;&#x627;&#x647; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x644;&#x644;&#x645;&#x631;&#x629; &#x627;&#x644;&#x627;&#x648;&#x644;&#x649; &#x639;&#x627;&#x645; 1983 &#x62e;&#x644;&#x627;&#x644; &#x627;&#x648;&#x644; &#x62e;&#x637;&#x648;&#x629; &#x645;&#x646; &#x631;&#x642;&#x635;&#x62a;&#x647; &#x627;&#x644;&#x634;&#x647;&#x64a;&#x631;&#x629; "&#x627;&#x644;&#x633;&#x64a;&#x631; &#x639;&#x644;&#x649; &#x627;&#x644;&#x642;&#x645;&#x631; (&#x645;&#x648;&#x646; &#x648;&#x648;&#x643;)" &#x628;&#x633;&#x639;&#x631; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631; &#x627;&#x644;&#x633;&#x628;&#x62a; &#x641;&#x64a; &#x646;&#x64a;&#x648;&#x64a;&#x648;&#x631;&#x643; &#x62e;&#x644;&#x627;&#x644; &#x645;&#x632;&#x627;&#x62f; &#x644;&#x645;&#x642;&#x62a;&#x646;&#x64a;&#x627;&#x62a; &#x627;&#x644;&#x645;&#x63a;&#x646;&#x64a; &#x627;&#x644;&#x627;&#x645;&#x631;&#x64a;&#x643;&#x64a; &#x627;&#x644;&#x631;&#x627;&#x62d;&#x644;.</p>
+</div>
+
+<h5 style="text-align: right;">In alternative fonts (available with mPDF):</h5>
+<div class="arabic">
+<table border="1" style="border-collapse: collapse;" width="100%"> <tr> <td>
+<p style="font-family: ar_1_002">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_1_003">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_1_004">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_1_005">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_1_006">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+</td><td>
+<p style="font-family: ar_1_007">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_2_001">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_2_002">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_2_003">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+<p style="font-family: ar_2_004">&#x628;&#x64a;&#x639; &#x642;&#x641;&#x627;&#x632; &#x645;&#x627;&#x64a;&#x643;&#x644; &#x62c;&#x627;&#x643;&#x633;&#x648;&#x646; &#x628;&#x640; 350 &#x627;&#x644;&#x641; &#x62f;&#x648;&#x644;&#x627;&#x631;</p>
+</td></tr></table>
+</div>
+
+
+
+<h5>From BBC World Service Persian News (http://www.bbc.co.uk/persian/)</h5>
+<div class="arabic">
+<h4 lang="fa">\'&#x637;&#x628;&#x642; &#x646;&#x638;&#x631;&#x633;&#x646;&#x62c;&#x6cc; &#x62f;&#x648;&#x644;&#x62a; &#x627;&#x646;&#x62a;&#x62e;&#x627;&#x628;&#x627;&#x62a; &#x628;&#x647; &#x62f;&#x648;&#x631; &#x62f;&#x648;&#x645; &#x6a9;&#x634;&#x6cc;&#x62f;&#x647; &#x645;&#x6cc; &#x634;&#x62f;\'</h4>
+<p lang="fa">&#x639;&#x644;&#x6cc;&#x631;&#x636;&#x627; &#x632;&#x627;&#x6a9;&#x627;&#x646;&#x6cc; &#x646;&#x645;&#x627;&#x6cc;&#x646;&#x62f;&#x647; &#x62a;&#x647;&#x631;&#x627;&#x646; &#x62f;&#x631; &#x645;&#x62c;&#x644;&#x633; &#x6af;&#x641;&#x62a;&#x647; &#x6a9;&#x647; &#x6cc;&#x6a9; &#x631;&#x648;&#x632; &#x67e;&#x6cc;&#x634; &#x627;&#x632; &#x628;&#x631;&#x6af;&#x632;&#x627;&#x631;&#x6cc; &#x627;&#x646;&#x62a;&#x62e;&#x627;&#x628;&#x627;&#x62a; &#x631;&#x6cc;&#x627;&#x633;&#x62a; &#x62c;&#x645;&#x647;&#x648;&#x631;&#x6cc; &#x62f;&#x631; &#x627;&#x6cc;&#x631;&#x627;&#x646;&#x60c; &#x646;&#x638;&#x631;&#x633;&#x646;&#x62c;&#x6cc; &#x648;&#x632;&#x627;&#x631;&#x62a; &#x6a9;&#x634;&#x648;&#x631; &#x648; &#x648;&#x632;&#x627;&#x631;&#x62a; &#x627;&#x637;&#x644;&#x627;&#x639;&#x627;&#x62a; &#x627;&#x6cc;&#x631;&#x627;&#x646; &#x646;&#x634;&#x627;&#x646; &#x645;&#x6cc; &#x62f;&#x627;&#x62f; &#x6a9;&#x647; &#x627;&#x646;&#x62a;&#x62e;&#x627;&#x628;&#x627;&#x62a; &#x628;&#x647; &#x62f;&#x648;&#x631; &#x62f;&#x648;&#x645; &#x6a9;&#x634;&#x6cc;&#x62f;&#x647; &#x645;&#x6cc; &#x634;&#x648;&#x62f;.</p>
+</div>
+
+
+<h5>From BBC World Service Urdu News (http://www.bbc.co.uk/urdu/)</h5>
+<div class="arabic">
+<h4 lang="ur">&#x62c;&#x6cc;&#x6a9;&#x633;&#x646; &#x6a9;&#x627; &#x62f;&#x633;&#x62a;&#x627;&#x646;&#x6c1; 35 &#x644;&#x627;&#x6a9;&#x6be; &#x688;&#x627;&#x644;&#x631; &#x6a9;&#x627;</h4>
+<p lang="ur">&#x627;&#x645;&#x631;&#x6cc;&#x6a9;&#x6cc; &#x67e;&#x627;&#x67e; &#x633;&#x646;&#x6af;&#x631; &#x645;&#x627;&#x626;&#x6cc;&#x6a9;&#x644; &#x62c;&#x6cc;&#x6a9;&#x633;&#x646; &#x6a9;&#x627; &#x62f;&#x633;&#x62a;&#x627;&#x646;&#x6c1; &#x62c;&#x633; &#x67e;&#x631; &#x646;&#x642;&#x644;&#x6cc; &#x6c1;&#x6cc;&#x631;&#x6d2; &#x62c;&#x691;&#x6d2; &#x6c1;&#x648;&#x626;&#x6d2; &#x62a;&#x6be;&#x6d2; &#x627;&#x648;&#x631; &#x62c;&#x648; &#x627;&#x646;&#x6be;&#x6cc;&#x6ba; &#x67e;&#x6c1;&#x644;&#x6cc; &#x645;&#x631;&#x62a;&#x628;&#x6c1; &#x2019;&#x645;&#x648;&#x646; &#x648;&#x627;&#x6a9;&#x2018; &#x67e;&#x6cc;&#x634; &#x6a9;&#x6cc;&#x626;&#x6d2; &#x62c;&#x627;&#x646;&#x6d2; &#x67e;&#x631; &#x645;&#x644;&#x627; &#x62a;&#x6be;&#x627; &#x67e;&#x6cc;&#x646;&#x62a;&#x6cc;&#x633; &#x644;&#x627;&#x6a9;&#x6be; &#x688;&#x627;&#x644;&#x631; &#x645;&#x6cc;&#x6ba; &#x646;&#x6cc;&#x644;&#x627;&#x645; &#x6c1;&#x648; &#x6af;&#x6cc;&#x627; &#x6c1;&#x6d2;&#x6d4;</p>
+</div>
+
+
+<h5>From BBC World Service Pashto News (http://www.bbc.co.uk/pashto/)</h5>
+<div class="arabic">
+<h4 lang="ps">&#x633;&#x62a;&#x627;&#x633;&#x64a; &#x67e;&#x64a;&#x63a;&#x627;&#x645;&#x648;&#x646;&#x647; &#x627;&#x648;&#x62f; &#x62e;&#x648;&#x69a;&#x649; &#x633;&#x646;&#x62f;&#x631;&#x6d0;</h4>
+<p lang="ps">&#x62f; &#x645;&#x648;&#x633;&#x64a;&#x642;&#x6cd; &#x62f;&#x627;&#x62e;&#x67e;&#x631;&#x648;&#x646;&#x6d0; &#x67e;&#x647; &#x627;&#x641;&#x63a;&#x627;&#x646;&#x633;&#x62a;&#x627;&#x646; &#x6a9;&#x6d0; &#x62f;&#x627;&#x6d0;&#x641; &#x627;&#x6d0;&#x645; &#x67e;&#x647; &#x685;&#x67e;&#x648;&#x62f; &#x633;&#x647;&#x627;&#x631; &#x67e;&#x647; &#x644;&#x633;&#x648; &#x628;&#x62c;&#x648; &#x627;&#x648;&#x631;&#x64a;&#x62f;&#x644;&#x649; &#x634;&#x649;</p>
+</div>
+
+
+<pagebreak />
+<h2>Fixed-position block elements</h2>
+mPDF 4.0 supports fixed-position block elements (at least partially). This page has some examples of fixed-position elements.
+<div id="myfixed">
+<div style="border: 1px solid #000088; background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  background-color: #DDFFEE; padding: 0.5em;">#1. Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula eros vehicula pretium. Maecenas feugiat pede vel risus. <span title="Nulla is marked by a span">Nulla</span> et lectus. Fusce eleifend neque sit amet erat. Integer <a href="mailto:admin@bpm1.com">consectetuer</a> nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. 
+<p>Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula eros vehicula pretium. Maecenas feugiat pede vel risus. <span title="Nulla is marked by a span">Nulla</span> et lectus. Fusce eleifend neque sit amet erat. Integer <a href="mailto:admin@bpm1.com">consectetuer</a> nulla non orci. Morbi feugiat pulvinar dolor. Cras odio. </p>
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt eros turpis, vel aliquam quam eros odio et sapien.
+<div style="border: 1px solid #008800; background-color: #EEFFDD; text-align: left; padding: 0.5em;">
+Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt eros turpis, vel aliquam quam eros odio et sapien.
+</div>
+Mauris ante pede, eros auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </div>
+</div>
+
+<div class="myfixed2">#2. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. <div style="border: 1px dotted green; padding: 1em; background-color: #FFEEFF; color: red">Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.</div>Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.</div>
+
+<div class="myfixed3">#3. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi. Praesent sit amet pede quis metus aliquet vulputate. Donec luctus. Cras euismod tellus vel leo.</div>
+
+<div class="myfixed4">#4. overflow: auto<br />Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.</div>
+
+<div class="myfixed5">#5. overflow: visible<br />Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.</div>
+
+<div class="myfixed6">#6. overflow: hidden<br />Praesent pharetra nulla in turpis. Sed ipsum nulla, sodales nec, vulputate in, scelerisque vitae, magna. Sed egestas justo nec ipsum. Nulla facilisi.</div>
+
+<div class="myfixed7">#7. width: auto<br />Shrink-to-fit</div>
+
+<pagebreak />
+<h2>Barcodes</h2>
+<p>NB <b>Quiet zones</b> - The barcode object includes space to the right/left or top/bottom only when the specification states a \'quiet zone\' or \'light margin\'. All the examples below also have CSS property set on the barcode object i.e. padding: 1.5mm; </p>
+
+<h3>EAN-13 Barcodes (EAN-2 and EAN-5)</h3>
+<p>NB EAN-13, UPC-A, UPC-E, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).</p>
+<p>A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">EAN13</td>
+<td>Standard EAN-13 barcode. Accepts 12 or 13 characters (creating checksum digit if required). [0-9] numeric only.</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">ISBN</td>
+<td>Standard EAN-13 barcode with \'ISBN\' number shown above [shown at height="0.66"]</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0" type="ISBN" class="barcode" height="0.66" text="1" /></td>
+</tr>
+<tr>
+<td align="center">ISSN</td>
+<td>Standard EAN-13 barcode with \'ISSN\' number shown above [shown at size="0.8"]</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8" type="ISSN" size="0.8" class="barcode" text="1" /></td>
+</tr>
+</tbody>
+</table>
+
+<h3>EAN-8, UPC-A and UPC-E Barcodes</h3>
+<p>UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code (see below).</p>
+<p>A nominal height and width for these barcodes is defined by the specification. \'size\' will scale both the height and width. Values between 0.8 and 2 are allowed (i.e. 80% to 200% of the nominal size). \'height\' can also be varied as a factor of 1; this is applied after the scaling factor used for \'size\'.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">UPCA</td>
+<td>UPC-A barcode. This is a subset of the EAN-13. (098277211236) Accepts 11 or 12 characters (creating checksum digit if required). [0-9] numeric only</td>
+<td class="barcodecell"><barcode code="09827721123" type="UPCA" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">UPCE</td>
+<td>UPC-E barcode. Requires the UPC-A code to be entered as above (e.g. 042100005264 to give 425261). NB mPDF will die with an error message if the code is not valid, as only some UPC-A codes can be converted into valid UPC-E codes. UPC-E doesn\'t have a check digit encoded explicity, rather the check digit is encoded in the parity of the other six characters. The check digit that is encoded is the check digit from the original UPC-A barcode.</td>
+<td class="barcodecell"><barcode code="04210000526" type="UPCE" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN8</td>
+<td>EAN-8 (5512345) Accepts 7 or 8 characters (creating checksum digit if required). [0-9] numeric only</td>
+<td class="barcodecell"><barcode code="2468123" type="EAN8" class="barcode" /></td>
+</tr>
+</tbody>
+</table>
+
+<h3>EAN-2 and EAN-5 supplements, and combined forms</h3>
+<p>UPC-A, UPC-E, EAN-13, and EAN-8 may all include an additional bar code(EAN-2 and EAN-5) to the right of the main bar code.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">EAN2</td>
+<td colspan="2">EAN-2 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Used to denote an issue of a periodical. EAN-2 supplement accepts 2 digits [0-9] only, EAN-5 five.</td>
+</tr>
+<tr>
+<td align="center">EAN5</td>
+<td colspan="2">EAN-5 supplement barcode. mPDF does not generate EAN-5 barcode on its own; see supplements below. Usually used in conjunction with EAN-13 for the price of books. 90000 is the code for no price. </td>
+</tr>
+<tr>
+<td align="center">EAN13P2</td>
+<td>Standard EAN-13 barcode with 2-digit UPC supplement (07)</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 07" type="EAN13P2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">ISBNP2</td>
+<td>Standard EAN-13 barcode with \'ISBN\' number shown above, and 2-digit EAN-2 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 07" type="ISBNP2" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">ISSNP2</td>
+<td>Standard EAN-13 barcode with \'ISSN\' number shown above, and 2-digit EAN-2 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 07" type="ISSNP2" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">UPCAP2</td>
+<td>UPC-A barcode with 2-digit EAN-2 supplement. This is a subset of the EAN-13. (075678164125 07)</td>
+<td class="barcodecell"><barcode code="00633895260 24" type="UPCAP2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">UPCEP2</td>
+<td>UPC-E barcode with 2-digit EAN-2 supplement. (042100005264 07)</td>
+<td class="barcodecell"><barcode code="042100005264 07" type="UPCEP2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN8P2</td>
+<td>EAN-8 barcode with 2-digit EAN-2 supplement (55123457 07)</td>
+<td class="barcodecell"><barcode code="55123457 07" type="EAN8P2" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN13P5</td>
+<td>Standard EAN-13 barcode with 5-digit UPC supplement (90000)</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 90000" type="EAN13P5" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">ISBNP5</td>
+<td>Standard EAN-13 barcode with \'ISBN\' number shown above, and 5-digit EAN-5 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 90000" type="ISBNP5" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">ISSNP5</td>
+<td>Standard EAN-13 barcode with \'ISSN\' number shown above, and 5-digit EAN-5 supplement</td>
+<td class="barcodecell"><barcode code="978-0-9542246-0-8 90000" type="ISSNP5" class="barcode" text="1" /></td>
+</tr>
+<tr>
+<td align="center">UPCAP5</td>
+<td>UPC-A barcode with 5-digit EAN-5 supplement. This is a subset of the EAN-13. (075678164125 90000)</td>
+<td class="barcodecell"><barcode code="075678164125 90000" type="UPCAP5" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">UPCEP5</td>
+<td>UPC-E barcode with 5-digit EAN-5 supplement. (042100005264 90000)</td>
+<td class="barcodecell"><barcode code="042100005264 90000" type="UPCEP5" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">EAN8P5</td>
+<td>EAN-8 barcode with 5-digit EAN-5 supplement (55123457 90000)</td>
+<td class="barcodecell"><barcode code="55123457 90000" type="EAN8P5" class="barcode" /></td>
+</tr>
+</tbody>
+</table>
+
+<pagebreak />
+<h3>Postcode Barcodes</h3>
+<p>These all have sizes fixed by their specification. Although they can be altered using \'size\' it is not recommended. \'height\' is ignored.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<!-- ITEMS HERE -->
+<tr>
+<td align="center">IMB</td>
+<td>Intelligent Mail Barcode - also known as: USPS OneCode 4-State Customer Barcode, OneCode 4CB, USPS 4CB, 4-CB, 4-State Customer Barcode, USPS OneCode Solution Barcode. (01234567094987654321-01234567891) Accepts: Up to 31 digits (required 20-digit Tracking Code, and up to 11-digit Routing Code; this may be 0, 5, 9, or 11 digits). If the Routing code is included, it should be spearated by a hyphen - like this example.</td>
+<td class="barcodecell"><barcode code="01234567094987654321-01234567891" type="IMB" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">RM4SCC</td>
+<td>Royal Mail 4-state Customer barcode (SN34RD1A). Accepts: max. 9 characters. Valid characters: [A-Z,0-9] Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="SN34RD1A" type="RM4SCC" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">KIX</td>
+<td>Dutch KIX version of Royal Mail 4-state Customer barcode (SN34RD1A). Valid characters: [A-Z,0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="SN34RD1A" type="KIX" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">POSTNET</td>
+<td>POSTNET barcode. Accepts 5, 9 or 11 digits. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="123456789" type="POSTNET" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">PLANET</td>
+<td>PLANET barcode. Accepts 11 or 13 digits. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="00123456789" type="PLANET" class="barcode" /></td>
+</tr>
+</tbody>
+</table>
+
+
+<h3>Variable width Barcodes</h3>
+<p>These barcodes are all of variable length depending on the code entered. There is no recommended maximum size for any of these specs, but all recommend a minimum X-dimension (width of narrowest bar) as 7.5mil (=0.19mm). The default used here is twice the minimum i.e. X-dim = 0.38mm.</p>
+<p>The specifications give a minimum height of 15% of the barcode length (which can be variable). The bar height in mPDF is set to a default value of 10mm. </p>
+<p>\'size\' will scale the barcode in both dimensions. mPDF will accept any number, but bear in mind that size="0.5" will set the bar width to the minimum. The \'height\' attribute further allows scaling - this factor is applied to already scaled barcode. Thus size="2" height="0.5" will give a barcode twice the default width (X-dim=0.76mm) and at the default height set in mPDF i.e. 10mm.</p>
+<table class="items" width="100%" cellpadding="8" border="1">
+<thead>
+<tr>
+<td width="10%">CODE</td>
+<td>DESCRIPTION</td>
+<td>BARCODE</td>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td align="center">C128A</td>
+<td>CODE 128 A. Valid characters: [A-Z uppercase and control chars ASCII 0-31]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="CODE 128 A" type="C128A" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C128B</td>
+<td>CODE 128 B. Valid characters: [Upper / Lower Case + All ASCII Printable Characters]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="ABC123abc@456" type="C128B" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C128C</td>
+<td>CODE 128 C. Valid characters: [0-9]. Must be an even number of digits. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="0123456789" type="C128C" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">EAN128C [A/B/C]</td>
+<td>EAN128 (A, B, and C). Specified variant of Code 128, utilising an FNC1 start code. Also known as UCC/EAN-128 or GS1-128. Valid characters: [cf. Code 128]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="0112345678912343" type="EAN128C" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">C39</td>
+<td>CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9. Valid characters: [0-9 A-Z \'-\' . Space $/+%]</td>
+<td class="barcodecell"><barcode code="TEC-IT" type="C39" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C39+</td>
+<td>CODE 39 + CHECKSUM. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="39OR93" type="C39+" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C39E</td>
+<td>CODE 39 EXTENDED. Valid characters: [ASCII-characters between 0..127]</td>
+<td class="barcodecell"><barcode code="CODE 39 E" type="C39E" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">C39E+</td>
+<td>CODE 39 EXTENDED + CHECKSUM. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="CODE 39 E+" type="C39E+" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">S25</td>
+<td>Standard 2 of 5. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="54321068" type="S25" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">S25+</td>
+<td>Standard 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="54321068" type="S25+" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25</td>
+<td>Interleaved 2 of 5. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="54321068" type="I25" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25+</td>
+<td>Interleaved 2 of 5 + CHECKSUM. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="54321068" type="I25+" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25B</td>
+<td>Interleaved 2 of 5 with bearer bars. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="1234567" type="I25B" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">I25B+</td>
+<td>Interleaved 2 of 5 + CHECKSUM with bearer bars. Valid characters: [0-9]. Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="1234567" type="I25B+" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">C93</td>
+<td>CODE 93 - USS-93 (extended). Valid characters: [ASCII-characters between 0..127]. Checksum digits: automatic.</td>
+<td class="barcodecell"><barcode code="39OR93" type="C93" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">MSI</td>
+<td>MSI. Modified Plessey. Valid characters: [0-9]</td>
+<td class="barcodecell"><barcode code="01234567897" type="MSI" class="barcode" /></td>
+</tr>
+<tr>
+<td align="center">MSI+</td>
+<td>MSI + CHECKSUM (module 11). Checksum digit: automatic.</td>
+<td class="barcodecell"><barcode code="0123456789" type="MSI+" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">CODABAR</td>
+<td>CODABAR. Valid characters: [0-9 \'-\' $:/.+ ABCD] ABCD are used as stop and start characters e.g. A34698735B</td>
+<td class="barcodecell"><barcode code="A34698735B" type="CODABAR" class="barcode" /></td>
+</tr>
+
+<tr>
+<td align="center">CODE11</td>
+<td>CODE 11. Valid characters: [0-9 and \'-\']. Checksum digits: 1 (or 2 if length of code is > 10 characters) - automatic.</td>
+<td class="barcodecell"><barcode code="123-456-789" type="CODE11" class="barcode" /></td>
+</tr>
+
+
+</tbody>
+</table>
+
+';
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('s'); 
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm b/inc/3rdparty/libraries/mpdf/examples/example52_lineheight.htm
new file mode 100644 (file)
index 0000000..73eca93
--- /dev/null
@@ -0,0 +1,36 @@
+<html>
+<head>
+<style>
+body { font-family: Arial, Helvetica, sans-serif; }
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+}
+</style>
+</head>
+<body>
+<h4>Line-height & vertical alignment</h4>
+<div>In these examples, top and bottom padding are set to 0, so the block height = line height.</div>
+<div>The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.<br />
+Line-height: "normal" (set in mPDF by default as 1.33).</div>
+<p class="gradient" style="font-size: 10pt; line-height: normal; padding: 0 0.3em;">Normal text <span style="font-size: 16pt;">16pt font-size &#194;</span> and normal again</p>
+
+<div>Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.</div>
+<p class="gradient" style="font-size: 10pt; line-height: 2.0; padding: 0 0.3em;">Normal text <span style="font-size: 16pt;">16pt font-size &#194;</span> and normal again</p>
+
+<div>Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).<br />
+When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.<br />
+This means that as far as possible, multiple lines will remain equally spaced<br />
+Line-height: 200% </div>
+<p class="gradient" style="font-size: 10pt; line-height: 200%; padding: 0 0.3em;">Normal text <span style="font-size: 16pt;">16pt font-size &#194;</span> and normal again</p>
+
+<div>If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height.
+<br />Line-height: 2em</div>
+<p class="gradient" style="font-size: 10pt; line-height: 2em; padding: 0 0.3em;">Normal text <span style="font-size: 18pt;">18pt font-size &#194;</span> and normal again</p>
+
+<div>If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.<br />
+Line-height: 2em</div>
+<p class="gradient" style="font-size: 10pt; line-height: 2em; padding: 0 0.3em;">Normal text <span style="font-size: 24pt;">24pt font-size &#194;</span> and normal again</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php b/inc/3rdparty/libraries/mpdf/examples/example52_new_mPDF_4-2_features.php
new file mode 100644 (file)
index 0000000..fb30356
--- /dev/null
@@ -0,0 +1,492 @@
+<?php
+
+
+ini_set("memory_limit","256M");
+
+
+$html = '
+<style>
+body {
+       font-family: sans-serif;
+}
+@page {
+       margin-top: 2.0cm;
+       margin-bottom: 2.0cm;
+       margin-left: 2.3cm;
+       margin-right: 1.7cm;
+       margin-header: 8mm;
+       margin-footer: 8mm;
+       footer: html_myHTMLFooter;
+       background-color:#ffffff;
+}
+
+@page :first {
+       margin-top: 6.5cm;
+       margin-bottom: 2cm; 
+       header: html_myHTMLHeader;
+       footer: _blank;
+       resetpagenum: 1;
+       background-gradient: linear #FFFFFF #FFFF44 0 0.5 1 0.5; 
+       background: #ccffff url(bgbarcode.png) repeat-y fixed left top; 
+}
+@page letterhead {
+       margin-top: 2.0cm;
+       margin-bottom: 2.0cm;
+       margin-left: 2.3cm;
+       margin-right: 1.7cm;
+       margin-header: 8mm;
+       margin-footer: 8mm;
+       footer: html_myHTMLFooter;
+       background-color:#ffffff;
+}
+
+@page letterhead :first {
+       margin-top: 6.5cm;
+       margin-bottom: 2cm; 
+       header: html_myHTMLHeader;
+       footer: _blank;
+       resetpagenum: 1;
+}
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+h4 {
+       font-weight: bold;
+       margin-top: 1em;
+       margin-bottom: 0.3em;
+}
+div.text {
+       padding:1em; 
+       margin-bottom: 0.25em;
+       text-align:justify; 
+}
+div.artificial {
+       font-family: arialuni;  /* custom font using MS Arial Unicode  */
+}
+p { margin-top: 0; }
+.code {
+       font-family: mono;
+       font-size: 9pt;
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+}
+
+
+</style>
+
+<body>
+
+<!--mpdf
+
+<htmlpageheader name="myHTMLHeader">
+<div style="float:right; width: 90; height: 90; text-align: right; vertical-align: bottom; border: 1mm double #000088"><img src="tiger.png" width="90" /></div>
+
+<div style="color:#0000BB;"><span style="font-weight: bold; font-size: 14pt;">mPDF Version 4.2</span><br />123 Anystreet<br />Your City<br />GD12 4LP<br /><span style="font-size: 15pt;">&#x260e;</span> 01777 123 567
+</div>
+
+<div style="clear: both; margin-top: 1cm; text-align: right;">{DATE jS F Y}</div>
+
+</htmlpageheader>
+
+<htmlpagefooter name="myHTMLFooter">
+<table width="100%" style="border-top: 0.1mm solid #000000; vertical-align: top; font-size: 9pt; color: #000055;"><tr>
+<td width="25%"></td>
+<td width="50%" align="center">See <a href="http://mpdf1.com/manual/index.php">documentation manual</a> for further details</td>
+<td width="25%" align="right">Page {PAGENO} of {nbpg} pages</td>
+</tr></table>
+</htmlpagefooter>
+
+mpdf-->
+
+<h2>mPDF Version 4.2</h2>
+<h2>New Features</h2>
+
+<div class="gradient text">
+<ul>
+<li>image handling improved</li>
+<li>table layout - additional control over resizing</li>
+<li>vertical-alignment of images - better support for all CSS types</li>
+<li>top and bottom margins collapse between block elements</li>
+<li>improved support for CSS line-height</li>
+<li>display progress bar whilst generating file</li>
+<li>CSS @page selector can be specified when adding a pagebreak</li>
+<li>CSS @page selector allows different margins, backgrounds, headers/footers on :first :left and :right pages</li>
+<li>PNG images with alpha channel fully supported</li>
+<li>ability to generate italic and bold font variants from base font file</li>
+<li>CJK fonts to embed as subsets</li>
+<li>"double" border on block elements</li>
+<li>character substitution for missing characters in UTF-8 fonts</li>
+<li>direct passing of dynamically produced image data</li>
+<li>background-gradient and background-image can now co-exist </li>
+</ul>
+
+Note: automatic top- and bottom-margin to accomodate varying header/footer size was introduced in v4.0 but was not highlighted cf. AutoHeaderMargin in the Manual.
+
+</div>
+<br />
+
+<div class="gradient text">
+<h4>Page backgrounds</h4>
+Background images, gradients and/or colours can be used together on the same page. On this page, the bars on the left hand side are created using a background-image, whilst a background-gradient sets the background to the whole page.
+</div>
+<br />
+
+<div class="gradient text" style="background-color: #d9def0; border-style: double; border-color:#444444; border-width:1mm;">
+<h4>CSS "double" border</h4>
+Block elements can now use the CSS property: border(style) = double. See also the tiger logo in the header of this page.
+</div>
+<br />
+
+<div class="gradient text">
+<h4>CJK fonts to embed as subsets</h4>
+When writing documents with Chinese, Japanese or Korean characters, mPDF has previously required the end-user to download Adobe\'s free CJK font pack.
+The ability to embed font subsets now makes it feasible to use open license CJK fonts. 2 fonts are now available to download as an additional font-pack: 
+<ul>
+<li>zn_hannom_a -  contains all characters in the SJIS, BIG-5, and GBK codepages; original file was Han Nom A font (Hi-res version) from http://vietunicode.sourceforge.net/fonts/fonts_hannom.html</li>
+<li>unbatang_0613 - contains all the (Korean) characters in the UHC codepage; original file from from http://kldp.net/projects/unfonts/download</li>
+</ul>
+The following characters only added an extra 15kB to the size of this PDF file, and approximately 0.15 seconds extra to compile:<br />
+Chinese (traditional) <span style="font-family:zn_hannom_a">'."\xe6\x86\x82\xe9\xac\xb1".'</span> ; chinese (simplified) <span style="font-family:zn_hannom_a">'."\xe6\x9d\xa5\xe8\x87\xaa".'</span> ; japanese <span style="font-family:zn_hannom_a">'."\xe3\x81\x9f\xe3\x82\x90".'</span> ; korean <span style="font-family:unBatang_0613">'."\xed\x82\xa4\xec\x8a\xa4".'</span> 
+</div>
+<br />
+
+<div class="artificial gradient text">
+<h4>Artificial Bold and Italic</h4>
+The text in this block is in ArialUnicodeMS font. Using embedded subsets it covers most characters you want to print - BUT it does not have bold, italic, or bold-italic forms.<br />
+From version 4.2, mPDF will create "artificial" font styles if they are not available as separate font files:<br />
+<p style="font-weight: bold">The quick brown fox jumps over a lazy dog</p>
+<p style="font-style: italic">The quick brown fox jumps over a lazy dog</p>
+<p style="font-weight: bold; font-style: italic">The quick brown fox jumps over a lazy dog</p>
+</div>
+<br />
+
+<div class="gradient text" style="font-family: \'Trebuchet MS\'">
+<h4>Character substitution in UTF-8 files</h4>
+This paragraph has the font-family set to Trebuchet MS, and the document has the default font set as DejaVuSansCondensed.
+The following characters are not present in the Trebuchet font, and are substituted from the core Adobe Zapfdingbats font:<br />
+
+&#x2710; &#x2711; &#x2712; &#x2713; &#x2714; &#x2715; &#x2716; &#x2717; &#x2718; &#x2719; &#x271a; &#x271b; &#x271c; &#x271d; &#x271e; &#x271f;<br />
+The characters are not present in the Trebuchet font, and are substituted from the (default) DejaVuSansCondensed font:<br />
+&#x280; &#x281; &#x282; &#x283; &#x284; &#x285; &#x286; &#x287; &#x288; &#x289; &#x28a; &#x28b; &#x28c; &#x28d; &#x28e; &#x28f;<br />
+Character substitution in UTF-8 files is enabled by setting:
+<p class="code">
+$mpdf->useSubstitutionsMB = true;
+</p>
+<div style="color:red; padding:0; margin:0;">NB In mPDF 5.0 this has changed to 
+<p class="code" style="padding:0; margin:0;">
+$mpdf->useSubstitutions = true;
+</p>
+</div>
+It is not recommended to enable this for regular use, as it will add to the processing time. 
+</div>
+
+
+
+<pagebreak />
+
+<h2>Margin-collapse</h2>
+<p>mPDF has always allowed margins to be collapsed at the top and bottom of pages. This is specified by the custom CSS property "margin-collapse: collapse"</p>
+
+<p>mPDF 4.2 also allows margins to collapse between block elements on the page. This is the default behaviour in browsers, and has been enabled in mPDF 4.2 by default.</p>
+
+<p>In the next 2 paragraphs, the first one has the margin-bottom set to 3em, and the second has the margin-top set to 0em. So the vertical-space between paragraphs is 3em:</p>
+
+<p class="gradient" style="font-size: 10pt; padding: 0 0.3em; margin-bottom: 3em;">The quick brown fox jumps over a lazy dog</p>
+<p class="gradient" style="font-size: 10pt; padding: 0 0.3em; margin-top: 0em;">The quick brown fox jumps over a lazy dog</p>
+
+<p>In the next 2 paragraphs, the first one has the margin-bottom set to 2em, and the second has the margin-top set to 1em. The margins collapse to the larger of the adjoining margins i.e. 2em:</p>
+
+<p class="gradient" style="font-size: 10pt; padding: 0 0.3em; margin-bottom: 2em;">The quick brown fox jumps over a lazy dog</p>
+<p class="gradient" style="font-size: 10pt; padding: 0 0.3em; margin-top: 1em;">The quick brown fox jumps over a lazy dog</p>
+
+
+<pagebreak />
+
+<h2>Images</h2>
+
+<h4>PNG Alpha channel</h4>
+PNG alpha channel transparency is now fully supported, and works against solid backgrounds, gradients or background images:
+<table>
+<tr>
+<td><img style="vertical-align: top" src="alpha.png" width="90" /></td>
+<td style="background-color:#FFCCFF; "><img style="vertical-align: top" src="alpha.png" width="90" /></td>
+<td style="background-color:#CCFFFF;"><img style="vertical-align: top" src="alpha.png" width="90" /></td>
+<td style="background-color:#CCFFFF; background-gradient: linear #88FFFF #FFFF44 0 0.5 1 0.5; "><img style="vertical-align: top" src="alpha.png" width="90" /></td>
+<td style="background-color:#CCFFFF; background: transparent url(\'bgrock.jpg\') repeat scroll right top;"><img style="vertical-align: top" src="alpha.png" width="90" /></td>
+</tr>
+</table>
+
+<br />
+
+<h4>Image Border and padding</h4>
+Image padding is now supported as well as border and margin:
+<img src="sunset.jpg" width="100" style="border:3px solid #44FF44; padding: 1em; vertical-align: text-top; " />
+<br />
+
+<h4>Vertical alignment</h4>
+<div>From mPDF version 4.2 onwards, most of the values for "vertical-align" are supported: top, bottom, middle, baseline, text-top, and text-bottom.<br />
+<b>Note:</b> The default value for vertical alignment has been changed to baseline, and the default padding to 0, consistent with most browsers.
+</div>
+<br />
+<div class="gradient" style="font-size: 80%;">
+baseline: <img src="sunset.jpg" width="50" style="vertical-align: baseline;" />
+text-bottom: <img src="sunset.jpg" width="30" style="vertical-align: text-bottom;" />
+middle: <img src="sunset.jpg" width="30" style="vertical-align: middle;" />
+bottom: <img src="sunset.jpg" width="80" style="vertical-align: bottom;" />
+text-top: <img src="sunset.jpg" width="50" style="vertical-align: text-top;" />
+top: <img src="sunset.jpg" width="100" style="vertical-align: top;" />
+</div>
+
+
+<pagebreak />
+<h4>Image Alignment</h4>
+<div>From mPDF version 4.2 onwards, in-line images can be individually aligned (vertically). 
+</div>
+
+<div class="gradient" style="margin: 0.5em 0;">
+These images <img src="img1.png" style="vertical-align: top;" />
+are <img src="img2.png" style="vertical-align: top;" />
+<b>top</b> <img src="img3.png" style="vertical-align: top;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+
+<div class="gradient" style="margin: 0.5em 0;">
+These images <img src="img1.png" style="vertical-align: text-top;" />
+are <img src="img2.png" style="vertical-align: text-top;" />
+<b>text-top</b> <img src="img3.png" style="vertical-align: text-top;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+
+<div class="gradient" style="margin: 0.5em 0;">
+These images <img src="img1.png" style="vertical-align: bottom;" />
+are <img src="img2.png" style="vertical-align: bottom;" />
+<b>bottom</b> <img src="img3.png" style="vertical-align: bottom;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+
+<div class="gradient" style="margin: 0.5em 0;">
+These images <img src="img1.png" style="vertical-align: text-bottom;" />
+are <img src="img2.png" style="vertical-align: text-bottom;" />
+<b>text-bottom</b> <img src="img3.png" style="vertical-align: text-bottom;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+
+<div class="gradient" style="margin: 0.5em 0;">
+These images <img src="img1.png" style="vertical-align: baseline;" />
+are <img src="img2.png" style="vertical-align: baseline;" />
+<b>baseline</b> <img src="img3.png" style="vertical-align: baseline;" />
+aligned <img src="img4.png" style="vertical-align: middle;" />
+</div>
+
+<div class="gradient" style="margin: 0.5em 0;">
+These images <img src="img1.png" style="vertical-align: middle;" />
+are <img src="img2.png" style="vertical-align: middle;" />
+<b>middle</b> <img src="img3.png" style="vertical-align: middle;" />
+aligned <img src="img5.png" style="vertical-align: bottom;" />
+</div>
+
+
+<pagebreak />
+<h4>Images from PHP</h4>
+
+<br />
+<img src="var:smileyface" />
+<br />
+This image was created with the following code:
+
+<p class="code">
+       $img = imagecreatetruecolor(200, 200);<br />
+       $white = imagecolorallocate($img, 255, 255, 255);<br />
+       $red   = imagecolorallocate($img, 255,   0,   0);<br />
+       $green = imagecolorallocate($img,   0, 255,   0);<br />
+       $blue  = imagecolorallocate($img,   0,   0, 255);<br />
+       imagearc($img, 100, 100, 200, 200,  0, 360, $white);<br />
+       imagearc($img, 100, 100, 150, 150, 25, 155, $red);<br />
+       imagearc($img,  60,  75,  50,  50,  0, 360, $green);<br />
+       imagearc($img, 140,  75,  50,  50,  0, 360, $blue);<br />
+       ob_start();<br />
+       imagejpeg($img);<br />
+       $mpdf->smileyface = ob_get_clean(); <br />
+       imagedestroy($img);<br />
+</p>
+and written to the document using:
+<p class="code">
+&lt;img src="var:smileyface" /&gt;
+</p>
+
+
+<pagebreak>
+<h4>Line-height inheritance</h4>
+Line-height inheritance has been altered to follow the CSS2 recommendation:
+<ul>
+<li>normal is inherited as "normal"</li>
+<li>1.2 is inherited as a factor</li>
+<li>120% is converted to an actual value and then inherited as the computed value</li>
+<li>em is converted to an actual value and then inherited as the computed value</li>
+<li>px pt mm are inherited as fixed values</li>
+</ul>
+
+<div>Relative values (e.g. 1.3, normal)</div>
+<div style="font-size: 12pt; line-height: 2.0; border: 0.2mm solid #880000; background-color: #FFEECC; padding: 0.3em;">
+This DIV has the line-height set as "2.0" and font-size as 12pt. The line-height is therefore 24pt, but the factor of 2 is inherited...<br />
+Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse...
+<div style="font-size: 8pt; border: 0.2mm solid #880000; background-color: #FFEECC; padding: 0.3em;">
+This DIV has the font-size set as 8pt. The line-height of 2 is inherited...<br />
+Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. 
+<div style="font-size: 18pt; border: 0.2mm solid #880000; background-color: #FFEECC; padding: 0.3em;">
+This DIV has the font-size set as 18pt. The line-height of 2 is inherited...<br />
+Nulla felis erat, imperdiet eu, ullamcorper non...
+</div>
+</div>
+</div>
+<br />
+<div>Absolute values (e.g. 130%, 1.3em, 18pt)</div>
+<div style="font-size: 12pt; line-height: 200%; border: 0.2mm solid #880000; background-color: #FFEECC; padding: 0.3em;">
+This DIV has the line-height set as "200%" and font-size as 12pt. The computed line-height of 24pt is inherited...<br />
+Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse...
+<div style="font-size: 8pt; border: 0.2mm solid #880000; background-color: #FFEECC; padding: 0.3em;">
+This DIV has the font-size set as 8pt. The computed line-height of 24pt is inherited...<br />
+Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. 
+<div style="font-size: 18pt; border: 0.2mm solid #880000; background-color: #FFEECC; padding: 0.3em;">
+This DIV has the font-size set as 18pt. The computed line-height of 24pt is inherited...<br />
+Nulla felis erat, imperdiet eu, ullamcorper non...
+</div>
+</div>
+</div>
+
+
+<pagebreak />
+<h4>Line-height & vertical alignment</h4>
+<div>In these examples, top and bottom padding are set to 0, so the block height = line height.</div>
+<div>The inline text (set to a larger font-size) inherits the line-height as a factor of the largest font-size i.e. the line height will expand to reflect the largest font on the line.<br />
+Line-height: "normal" (set in mPDF by default as 1.33).</div>
+<p class="gradient" style="font-size: 10pt; line-height: normal; padding: 0 0.3em;">Normal text <span style="font-size: 16pt;">16pt font-size &#194;</span> and normal again</p>
+
+<div>Line-height: 2.0 When using relative line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the largest font.</div>
+<p class="gradient" style="font-size: 10pt; line-height: 2.0; padding: 0 0.3em;">Normal text <span style="font-size: 16pt;">16pt font-size &#194;</span> and normal again</p>
+
+<div>Line-heights set as a percentages are computed on the base font-size, and are then inherited and treated the same as absolute lengths. This is also true for "em" values. The line-height of this line is set as 200% of the paragraph font-size (10pt).<br />
+When using absolute line-heights, the text is aligned vertically so that the centre-line of the line goes throught the middle of the base font.<br />
+This means that as far as possible, multiple lines will remain equally spaced<br />
+Line-height: 200% </div>
+<p class="gradient" style="font-size: 10pt; line-height: 200%; padding: 0 0.3em;">Normal text <span style="font-size: 16pt;">16pt font-size &#194;</span> and normal again</p>
+
+<div>If the line includes a font-size greater than 1.6 times the computed line-height, then the text baseline is dropped so that the text will approximately fit within the line-height.
+<br />Line-height: 2em</div>
+<p class="gradient" style="font-size: 10pt; line-height: 2em; padding: 0 0.3em;">Normal text <span style="font-size: 18pt;">18pt font-size &#194;</span> and normal again</p>
+
+<div>If the line includes a font-size greater than 2 times the computed line-height, then the line-height is increased to accommodate the larger fontsize.<br />
+Line-height: 2em</div>
+<p class="gradient" style="font-size: 10pt; line-height: 2em; padding: 0 0.3em;">Normal text <span style="font-size: 24pt;">24pt font-size &#194;</span> and normal again</p>
+
+<br />
+This broadly reflects the behaviour of IE and Firefox. Note that tall characters such as &#194; may fall outside the computed line-heights. See the same in an <a href="example52_lineheight.htm">HTML page</a>.
+
+
+<pagebreak page-selector="letterhead" />
+<h2>Extended use of CSS @page selectors</h2>
+The CSS @page selector, together with the pseudo-selectors :first :left :right have increased support in mPDF 4.2<br />
+A named @page can be selected when forcing a new page, e.g. this page was started with:<br />
+<span style="font-family: mono; font-size: 9pt;">&lt;pagebreak page-selector="letterhead" /&gt;</span>
+<br />
+The header and background on this page (and page 1 of the document) are set by the CSS selector: @page letterhead :first {} whilst subsequent pages have no header, a footer, and no background.
+<br /> 
+CSS @page selectors allow different margins, backgrounds, headers/footers to be set on :first :left and :right pages. Only fixed or mirrored left- and right-margins are supported (i.e. cannot specify different margins for :left and :right).
+<br />
+This layout can be used to produce company letters with only the first page on letterheaded paper.
+
+<pagebreak />
+<h2>Table Layout control</h2>
+<p>mPDF attempts to layout tables according to HTML and CSS specifications. However, because of the difference between screen and paged media, mPDF resizes tables when necessary to make them fit the page. This will happen if the minimum table-width is greater than the page-width. Minimum table-width is defined as the minimum width to accomodate the longest word in each column i.e. words will never be split.
+</p>
+<p>This resizing (minimum-width) can be disabled using a custom CSS property "overflow" on the TABLE tag. There are 4 options:</p>
+&lt;table style="overflow: auto"&gt; (this is the default, using resizing)
+<table border="1" style="overflow: auto; border-collapse: collapse; padding: 0.1em; background-color: #DDFFFF"><tr>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+</tr></table>
+<br />
+&lt;table style="overflow: visible"&gt; (disables resizing, but allows overflow to show)
+<table border="1" style="overflow: visible; border-collapse: collapse; padding: 0.1em; background-color: #DDFFFF"><tr>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+</tr></table>
+<br />
+
+&lt;table style="overflow: hidden"&gt; (disables resizing, and hides/clips any overflow)
+<table border="1" style="overflow: hidden; border-collapse: collapse; padding: 0.1em; background-color: #DDFFFF"><tr>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+</tr></table>
+<br />
+
+&lt;table style="overflow: wrap"&gt; (forces words to break as necessary)
+<table border="1" style="overflow: wrap; border-collapse: collapse; padding: 0.1em; background-color: #DDFFFF"><tr>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+<td>Verylongwordwithnospacesinitatall</td>
+</tr></table>
+<br />
+
+
+
+';
+if ($_REQUEST['html']) { echo $html; exit; }
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+define('_MPDF_URI','../');     // required for the progress bar
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('','A4','','',15,15,20,20,5,5); 
+
+$mpdf->StartProgressBarOutput(2);      // 2 => advanced mode
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->useSubstitutions = true;
+
+// Dynamically create image in var:smileyface
+       $img = imagecreatetruecolor(200, 200);
+       $white = imagecolorallocate($img, 255, 255, 255);
+       $red   = imagecolorallocate($img, 255,   0,   0);
+       $green = imagecolorallocate($img,   0, 255,   0);
+       $blue  = imagecolorallocate($img,   0,   0, 255);
+       imagearc($img, 100, 100, 200, 200,  0, 360, $white);
+       imagearc($img, 100, 100, 150, 150, 25, 155, $red);
+       imagearc($img,  60,  75,  50,  50,  0, 360, $green);
+       imagearc($img, 140,  75,  50,  50,  0, 360, $blue);
+       ob_start();
+       imagejpeg($img);
+       $mpdf->smileyface = ob_get_clean(); 
+       imagedestroy($img);
+
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output(); 
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php b/inc/3rdparty/libraries/mpdf/examples/example53_new_mPDF_v5-0_fonts.php
new file mode 100644 (file)
index 0000000..ab0c2b6
--- /dev/null
@@ -0,0 +1,431 @@
+<?php
+ini_set("memory_limit","128M");
+
+
+$html = '
+<style>
+body {
+       font-family: sans-serif;
+       font-size: 10pt;
+}
+h4 {
+       font-variant: small-caps; 
+}
+h5 {
+       margin-bottom: 0;
+       color: #110044;
+}
+dl {
+       margin: 0;
+}
+</style>
+<h1></a>mPDF</h1>
+<h2>Fonts in mPDF Version 5.x</h2>
+<p style="color: red"><b>Note:</b> This example will only display correctly if you have all the fonts installed in mPDF</p>
+
+<p>mPDF version 5 supports Truetype fonts, reading and embedding directly from the .ttf font files. Fonts must follow the Truetype specification and use Unicode mapping to the characters. Truetype collections (.ttc files) and Opentype files (.otf) in Truetype format are also supported.</p>
+
+<h4>Easy to add new fonts</h4>
+<ol>
+<li>Upload the Truetype font file to the fonts directory (/ttfonts)</li>
+<li>Define the font file details in the configuration file (config_fonts.php)</li>
+<li>Access the font by specifying it in your HTML code as the CSS font-family</li>
+</ol>
+
+<div>These are some examples of Windows fonts:</div>
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE;">
+<div style="font-family: Arial">Arial - The quick, sly fox jumped over the lazy brown dog.</div>
+<div style="font-family: \'Comic Sans MS\'">Comic Sans MS - The quick, sly fox jumped over the lazy brown dog.</div>
+<div style="font-family: \'Trebuchet MS\'">Trebuchet - The quick, sly fox jumped over the lazy brown dog.</div>
+<div style="font-family: Calibri">Calibri - The quick, sly fox jumped over the lazy brown dog.</div>
+<div style="font-family: Quillscript">QuillScript - The quick, sly fox jumped over the lazy brown dog.</div>
+<div style="font-family: \'Lucida Console\'">Lucidaconsole - The quick, sly fox jumped over the lazy brown dog.</div>
+<div style="font-family: Tahoma">Tahoma - The quick, sly fox jumped over the lazy brown dog.</div>
+</div>
+
+<h4>Full Unicode support</h4>
+
+<p>The DejaVu fonts distributed with mPDF contain an extensive set of characters, but it is easy to add fonts to access uncommon characters.</p>
+
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE;">
+<dl>
+<dt>Georgian (DejaVuSansCondensed)</dt>
+<dd style="font-family:\'Dejavu Sans Condensed\';">&#4256; &#4257; &#4258; &#4259; &#4260; &#4261; &#4262; &#4263; &#4264; &#4265; &#4266; &#4267; &#4268; &#4269; &#4270; &#4271; &#4272; &#4273; &#4274; &#4275;</dd>
+<dt>Runic (Junicode)</dt>
+<dd style="font-family:junicode;">&#5792; &#5793; &#5794; &#5795; &#5796; &#5797; &#5798; &#5799; &#5800; &#5801; &#5802; &#5803; &#5804; &#5805; &#5806; &#5807; &#5808; &#5809; &#5810; &#5811; &#5812; &#5813; &#5814; &#5815; &#5816; &#5817; &#5818; &#5819; &#5820;</dd>
+<dt>Greek Extended (Quivira)</dt>
+<dd style="font-family:quivira;">&#7936; &#7937; &#7938; &#7939; &#7940; &#7941; &#7942; &#7943; &#7944; &#7945; &#7946; &#7947; &#7948; &#7949; &#7950; &#7951; &#7952; &#7953; &#7954; &#7955; &#7956; &#7957; </dd>
+<dt>IPA Extensions (Quivira)</dt>
+<dd style="font-family:quivira;">&#592; &#593; &#594; &#595; &#596; &#597; &#598; &#599; &#600; &#601; &#602; &#603; &#604; &#675; &#676; &#677; &#678; &#679; &#680; &#681; &#682; &#683; </dd>
+<dt>Letterlike Symbols (Symbola)</dt>
+<dd style="font-family:symbola;">&#8448; &#8449; &#8450; &#8451; &#8452; &#8453; &#8454; &#8455; &#8456; &#8457; &#8458; &#8459; &#8460; &#8461; &#8462; &#8463; &#8464; &#8465; &#8466; &#8467; &#8468; &#8469; &#8470; &#8471; &#8472; &#8473; &#8474; &#8475; &#8476; </dd>
+<dt>Mathematical Operators (Symbola)</dt>
+<dd style="font-family:symbola;">&#8704; &#8705; &#8706; &#8707; &#8708; &#8709; &#8710; &#8711; &#8712; &#8713; &#8714; &#8715; &#8716; &#8717; &#8718; &#8719; &#8720; &#8721; &#8722; &#8723; &#8724; &#8725; &#8726; &#8727; &#8728; &#8729; &#8730; &#8731; &#8732; &#8733; &#8734; </dd>
+<dt>Miscellaneous Technical (Symbola)</dt>
+<dd style="font-family:symbola;">&#8960; &#8961; &#8962; &#8963; &#8964; &#8965; &#8966; &#8967;&#8974; &#8975; &#8976; &#8977; &#8978; &#8979; &#8980; &#8981; &#8982; &#8983; &#8984; &#8985; &#8986; &#8987; &#8992; &#8993; &#8994; &#8995; &#8996; &#8997; &#8998; &#8999; </dd>
+<dt>Enclosed Alphanumerics (Quivira)</dt>
+<dd style="font-family:quivira;">&#9312; &#9313; &#9314; &#9315; &#9316; &#9317; &#9318; &#9319; &#9320; &#9321; &#9322; &#9323; &#9324; &#9325; &#9326; &#9327;</dd>
+<dt>Miscellaneous Symbols (DejaVuSansCondensed)</dt>
+<dd style="font-family:\'Dejavu Sans Condensed\';">&#9728; &#9729; &#9730; &#9731; &#9732; &#9733; &#9734; &#9735; &#9736; &#9737; &#9738; &#9739; &#9740; &#9741; &#9742; &#9743; &#9744; &#9745; &#9746; </dd>
+<dt>Supplemental Arrows-B (Symbola)</dt>
+<dd style="font-family:symbola;">&#10496; &#10497; &#10498; &#10499; &#10500; &#10501; &#10502; &#10503; &#10504; &#10505; &#10506; &#10507; &#10512; &#10513; &#10516; &#10517; &#10518; &#10519; &#10520; &#10614; &#10615; &#10616; &#10617; &#10618; &#10619; &#10620; &#10621; </dd>
+</dl>
+</div>
+The online manual lists a number of open-source fonts available to cover uncommon characters: <a href="http://mpdf1.com/manual/index.php?tid=451">http://mpdf1.com/manual/index.php?tid=451</a>
+
+<pagebreak />
+<h2>Complex scripts</h2>
+
+<p>Although all characters may be displayed, there are various reasons why a script may not appear as expected.</p>
+
+<h4>Right-to-left languages (Hebrew, Arabic etc.)</h4>
+Arabic languages and Hebrew are written in a right-to-left direction (RTL). mPDF recognises both Arabic and Hebrew languages and reverses text direction automatically.
+
+<div style="border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 18pt; font-family:tahoma; text-align: center;">
+&#1571;&#1604;&#1587;&#1617;&#1604;&#1575;&#1605; &#1593;&#1604;&#1610;&#1603;&#1605; &nbsp; &nbsp; &#1513;&#1500;&#1493;&#1501;
+</div>
+
+Arabic languages (but not Hebrew) also change the form of the letter depending on its position in the text e.g. these are the initial, medial, final, and isolated forms of arabic letter \'ain\':
+
+<div style="font-family:xbriyaz; border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 18pt; text-align: center;"> &#x639; &#x640;&#x639; &#x640;&#x639;&#x640; &#x639;&#x640; </div>
+The isolated characters are contained in the Unicode block \'Arabic\' U+0600 - U+06FF.<br />
+The initial, medial and final forms are contained in Unicode Blocks \'Arabic Presentation Forms\' A and B (U+FB50 - U+FDFF, U+FE70 - U+FEFE). Note that quite a large number of fonts contain the isolated characters but not the presentation forms. Fonts used with mPDF must contain the \'Arabic Presentation Forms\' in order to display arabic text correctly. mPDF automatically converts letters to their initial/medial/final forms in several languages: arabic, persian/farsi, urdu, sindhi and pashto.
+
+<p>Arabic text is used for many different languages e.g. persian/farsi, urdu, pashto etc. These languages often contain letters unique to that language. \'Arabic\' fonts do not always contain the full set of arabic charcters necessary for all languages. </p>
+
+<p>Other RTL languages (using other alphabets) are reversed in order, but not otherwise processed, by mPDF e.g. Syriac, Thaana, N\'Ko, and Samaritan.</p>
+
+
+<h4>Indic languages</h4>
+Indic languages are also complex scripts which require some processing of characters before display. For example some vowels consist of 2 characters, to be placed before and after the adjacent consonant e.g.
+<div style="font-family:ind_ml_1_001; border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 18pt; text-align: center;">
+ <div style="font-family: sans; font-size:normal">U+0D1C + U+0D4C [vowel AU] = [written together as &amp;#x0D1C;&amp;#x0D4C;]</div>
+ &#x0D1C; + &#x0D4C; = &#x0D1C;&#x0D4C;</div>
+<p style="margin-bottom: 0">Consonant conjuncts are where two adjacent characters are written as a single \'conjunct\' form e.g.</p>
+<div style="font-family:ind_hi_1_001; border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 18pt; text-align: center;"> &#2346; + &#2401; = &#2346;&#2403;</div>
+<p style="margin-bottom: 0">mPDF can support some of these languages, but requires specially prepared font files that are unique to mPDF.<br />
+Supported languages: Bengali, Devan&#257;gar&#299;, Gujar&#257;ti, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu</p>
+
+<div style="border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 18pt;">
+  <span style="font-family:ind_bn_1_001;">&#2438;&#2488;&#2488;&#2494;&#2482;&#2494;&#2478;&#2497; &#2438;&#2482;&#2494;&#2439;&#2453;&#2497;&#2478; </span>
+ <span style="font-family:ind_gu_1_001;">&#2728;&#2734;&#2744;&#2765;&#2724;&#2759; </span>
+ <span style="font-family:ind_ml_1_001;">&#3368;&#3374;&#3384;&#3405;&#3349;&#3390;&#3376;&#3330; </span>
+ <span style="font-family:ind_hi_1_001;">&#x0928;&#x092E;&#x0938;&#x094D;&#x0924;&#x0947; </span>
+ <span style="font-family:ind_ta_1_001;">&#2997;&#2979;&#2965;&#3021;&#2965;&#2990;&#3021;! </span>
+</div>
+Complex scripts <b>not</b> supported: Khmer, Sinhala, Tibetan, Myanmar (Burmese), Balinese 
+
+<h4>Vertical writing</h4>
+<div>Vertical writing is not supported by mPDF (e.g. Mongolian and Phags-pa) although the individual characters can be displayed using suitable fonts.</div>
+
+<pagebreak />
+
+<h4>Combining diacritics</h4>
+<p>In Unicode, letters with diacritics (e.g. &#193;&#225;&#550;&#551;&#196;&#228;) are usually represented as a single character e.g. Unicode U+0196 is an A Umlaut. There are 4 blocks in Unicode of diacritics or \'marks\' which can be used to combine with adjacent letters: Combining Diacritical Marks (U+0300 - U+036F), Combining Diacritical Marks Supplement (U+1DC0 - U+1DFF), Combining Marks for Symbols(U+20D0 - U+20FF) and Combining Half Marks (U+FE20 - U+FE2F). </p>
+
+
+<p>Software applications use special positioning information stored in OpenType font files to resposition the diacritic/mark depending on the context. mPDF does not support this repositioning and is dependent on the font design and original placement of the diacritic:
+</p>
+
+
+<div style="border:0.2mm solid #000088; padding: 0.5em; background-color: #EEEEEE; font-size: 14pt;">
+<div style="font-family:\'Dejavu Sans Condensed\';">&#193; &#225; &#550; &#551; &#196; &#228; &iuml; (Precomposed characters: DejaVu Sans Condensed)</div>
+<div style="font-family:\'Dejavu Sans Condensed\';">A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; (Using diacritics: DejaVu Sans Condensed)</div>
+<div style="font-family:\'Arial Unicode MS\';">A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; (Arial Unicode MS)</div>
+<div style="font-family:\'Times New Roman\';">A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; (Times New Roman)</div>
+<div style="font-family:\'Courier new\';">A&#769; a&#769; A&#x307; a&#x307; A&#x308; a&#x308; i&#x308; (Courier New)</div>
+</div>
+<p><b>It is recommended to use precomposed characters whenever possible with mPDF.</b></p>
+
+
+<pagebreak />
+
+<h2>Unicode Supplementary Planes</h2>
+<p>The original Unicode allocated characters between x0000 and xFFFF (65,536 characters). This \'Basic Multilingual Plane\' supported most characters in common use, including a large number of Unified Chinese-Japanese-Korean characters (CJK). Later the Unicode standard was extended to 16 Planes. </p>
+
+<p>The first plane (plane 0), the Basic Multilingual Plane (BMP), is where most characters have been assigned so far.</p>
+<p>Plane 1, the Supplementary Multilingual Plane (SMP), is mostly used for historic scripts such as Linear B, but is also used for musical and mathematical symbols.</p>
+<p>Plane 2, the Supplementary Ideographic Plane (SIP), is used for about 40,000 Unified Han (CJK) Ideographs.</p>
+
+<p>mPDF version 5 supports fonts containing characters from all Unicode Planes. By choosing the correct font, almost every single character from Unicode 5 can be displayed in a PDF file.</p>
+
+<h4>Unicode Supplementary Multilingual Plane (SMP or Plane 1) U+10000 - U+1FFFF</h4>
+<h5>Gothic text</h5>
+<div>
+This paragraph shows Gothic text. These characters lie in the Unicode Supplementary Multilingual Plane U+10330 - U+1034F.
+</div>
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE;">
+<div style="font-family:damase">
+&#66352; &#66353; &#66354; &#66355; &#66356; &#66357; &#66358; &#66359; &#66360; &#66361; &#66362; &#66363; &#66364; &#66365; &#66366; &#66367; &#66368; &#66369; &#66370; &#66371; &#66372; &#66373; &#66374; &#66375; &#66376; &#66377; &#66378;
+</div>
+</div>
+<div>
+Font: MPH2BDamase (damase_v.2.ttf) available from: http://www.wazu.jp/gallery/views/View_MPH2BDamase.html 
+</div>
+
+<h5>Egyptian Hieroglyphics</h5>
+<div>
+This paragraph shows Egyptian Hieroglyphics. These characters lie in the Unicode Supplementary Multilingual Plane U+13000 - U+1342F.
+</div>
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE;">
+<div style="font-family:aegyptus; font-size: 24pt">
+&#77824; &#77825; &#77826; &#77827; &#77828; &#77829; &#77830; &#77831; &#77832; &#77833; &#77834; &#77835; &#77836; &#77837; &#77838; &#77839; &#77840; &#77841;
+</div>
+</div>
+<div>
+Font: Aegyptus.otf available from: http://users.teilar.gr/~g1951d/
+</div>
+
+<p>SMP contains mainly ancient scripts - see <a href="http://mpdf1.com/manual/index.php?tid=451">http://mpdf1.com/manual/index.php?tid=451</a> for full list.</p>
+
+<p>mPDF uses a different method to embed fonts in the PDF file if they include characters from SMP or SIP, because the characters cannot be represented by a 4 character hex code 0000-FFFF. This method is less eficient than the default method, and it can be suppressed by adding the font name to the array \'BMPonly\' in the config_fonts.php configuration file. </p>
+
+<p>Note that the DejaVu fonts distributed with mPDF and (GNU)FreeSans and FreeSerif fonts do contain a few characters in the SMP plane, but most users will not require them and by default they have been added to the array \'BMPonly\'.</p>
+
+<pagebreak />
+
+<h4>CJK characters</h4>
+<p>Below are examples of all the CJK Unicode blocks contained in the Basic Multilingual Plane and Supplemental Ideographic Plane</p>
+
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE;">
+<h5>Plane 0 (BMP)</h5>
+<dl style="font-family:sun-exta;">
+<dt>CJK Radicals Supplement</dt>
+<dd>&#11918; &#11919; &#11920; &#11921; &#11922; &#11923; &#11924; &#11925; &#11926; &#11927; &#11928; &#11929; &#11931; &#11932; &#11933; &#11934; &#11935; &#11936; &#11937; &#11938; &#11939; &#11940; &#11941; &#11942; &#11943; &#11944; &#11945; &#11946;  </dd>
+<dt>Kangxi Radicals</dt>
+<dd>&#12083; &#12084; &#12085; &#12086; &#12087; &#12088; &#12089; &#12090; &#12091; &#12092; &#12093; &#12094; &#12095; &#12096; &#12097; &#12098; &#12099; &#12100; &#12101; &#12102; &#12103; &#12104; &#12105; &#12106; &#12107; &#12108; &#12109;  </dd>
+<dt>Ideographic Description Characters</dt>
+<dd>&#12272; &#12273; &#12274; &#12275; &#12276; &#12277; &#12278; &#12279; &#12280; &#12281; &#12282; &#12283; </dd>
+<dt>CJK Symbols and Punctuation</dt>
+<dd>&#12288;&#12296; &#12297; &#12298; &#12299; &#12300; &#12301; &#12302; &#12303; &#12304; &#12305; &#12306; &#12307; &#12308; &#12309; &#12310; &#12311; &#12312; &#12313; &#12314; &#12315; &#12316; &#12317; &#12318; &#12326; &#12327; &#12328; &#12329; &#12330; </dd>
+<dt>Hiragana</dt>
+<dd>&#12353; &#12354; &#12355; &#12356; &#12357; &#12358; &#12359; &#12360; &#12361; &#12362; &#12363; &#12364; &#12365; &#12366; &#12367; &#12368; &#12369; &#12370; &#12371; &#12372; &#12373; &#12374; </dd>
+<dt>Katakana</dt>
+<dd>&#12448; &#12449; &#12450; &#12451; &#12452; &#12453; &#12454; &#12455; &#12456; &#12457; &#12458; &#12459; &#12460; &#12461; &#12462; &#12463; &#12464; &#12465; &#12466; &#12467; &#12468; </dd>
+<dt>Bopomofo</dt>
+<dd>&#12549; &#12550; &#12551; &#12552; &#12553; &#12554; &#12555; &#12556; &#12557; &#12558; &#12559; &#12560; &#12561; &#12562; &#12563; &#12564; &#12565; &#12566; </dd>
+<dt>Hangul Compatibility Jamo</dt>
+<dd>&#12593; &#12594; &#12595; &#12596; &#12597; &#12598; &#12599; &#12600; &#12601; &#12602; &#12603; &#12604; &#12605; &#12606; &#12607; &#12608; &#12609; &#12610; </dd>
+<dt>Kanbun</dt>
+<dd>&#12688; &#12689; &#12690; &#12691; &#12692; &#12693; &#12694; &#12695; &#12696; &#12697; &#12698; &#12699; &#12700; &#12701; &#12702; &#12703; </dd>
+<dt>Bopomofo Extended</dt>
+<dd>&#12704; &#12705; &#12706; &#12707; &#12708; &#12709; &#12710; &#12711; &#12712; &#12713; &#12714; &#12715; &#12716; &#12717; &#12718; &#12719; &#12720; &#12721; &#12722; &#12723; &#12724; &#12725; &#12726; &#12727; </dd>
+<dt>Katakana Phonetic Extensions</dt>
+<dd>&#12784; &#12785; &#12786; &#12787; &#12788; &#12789; &#12790; &#12791; &#12792; &#12793; &#12794; &#12795; &#12796; &#12797; &#12798; &#12799; </dd>
+<dt>Enclosed CJK Letters and Months</dt>
+<dd>&#12804; &#12805; &#12806; &#12807; &#12808; &#12809; &#12810; &#12811; &#12812; &#12813; &#12814; &#12815; &#12816; &#12817; &#12818; &#12819; &#12820; &#12821; &#12822; &#12823; &#12824; &#12825; &#12826; &#12827; &#12828; </dd>
+<dt>CJK Compatibility</dt>
+<dd>&#13056; &#13057; &#13058; &#13059; &#13060; &#13061; &#13062; &#13063; &#13064; &#13065; &#13066; &#13067; &#13068; &#13069; &#13070; &#13071; &#13072; &#13073; &#13074; &#13075; &#13076; &#13077; &#13078; &#13079; &#13080; </dd>
+<dt>CJK Unified Ideographs Extension A</dt>
+<dd>&#13312; &#13313; &#13314; &#13315; &#13316; &#13317; &#13318; &#13319; &#13320; &#13321; &#13322; &#13323; &#13324; &#13325; &#13326; &#13327; &#13328; &#13329; &#13330; &#13331; &#13332; &#13333; &#13334; &#13335; &#13336; </dd>
+<dt>CJK Unified Ideographs</dt>
+<dd>&#19968; &#19969; &#19970; &#19971; &#19972; &#19973; &#19974; &#19975; &#19976; &#19977; &#19978; &#19979; &#19980; &#19981; &#19982; &#19983; &#19984; &#19985; &#19986; &#19987; &#19988; &#19989; &#19990; &#19991; &#19992; </dd>
+<dt>Yi Syllables</dt>
+<dd>&#40960; &#40961; &#40962; &#40963; &#40964; &#40965; &#40966; &#40967; &#40968; &#40969; &#40970; &#40971; &#40972; &#40973; &#40974; &#40975; &#40976; &#40977; &#40978; &#40979; &#40980; &#40981; &#40982; &#40983; &#40984; &#40985; &#40986;  </dd>
+<dt>Yi Radicals</dt>
+<dd>&#42128; &#42129; &#42130; &#42131; &#42132; &#42133; &#42134; &#42135; &#42136; &#42137; &#42138; &#42139; &#42140; &#42141; &#42142; &#42143; &#42144; &#42145; &#42146; &#42147; &#42148; &#42149; &#42150; &#42151; &#42152; &#42153;  </dd>
+<dt>Hangul Syllables</dt>
+<dd>&#44032; &#44033; &#44034; &#44035; &#44036; &#44037; &#44038; &#44039; &#44040; &#44041; &#44042; &#44043; &#44044; &#44045; &#44046; &#44047; &#44048; &#44049; &#44050; &#44051; &#44052; &#44053; &#44054; &#44055; &#44056; </dd>
+<dt>CJK Compatibility Ideographs</dt>
+<dd>&#63744; &#63745; &#63746; &#63747; &#63748; &#63749; &#63750; &#63752; &#63753; &#63754; &#63755; &#63756; &#63757; &#63758; &#63759; &#63760; &#63761; &#63762; &#63763; &#63764; &#63765; &#63766; &#63767; &#63768; &#63769; </dd>
+</dl>
+
+<h5>Plane 2 (SIP)</h5>
+<dl style="font-family:sun-exta;">
+<dt>CJK Unified Ideographs Extension B</dt>
+<dd>&#x20000; &#x20001; &#x20002; &#x20003; &#x20004; &#x20005; &#x20006; &#x20007; &#x20008; &#x20009; &#x2000A; &#x2000B; &#x2000C; &#x2000D; &#x2000E; &#x2000F; &#x20010; &#x20011; &#x20012; &#x20013; </dd>
+
+<dt>CJK Unified Ideographs Extension C</dt>
+<dd>&#x2A700; &#x2A701; &#x2A702; &#x2A703; &#x2A704; &#x2A705; &#x2A706; &#x2A707; &#x2A708; &#x2A709; &#x2A70A; &#x2A70B; &#x2A70C; &#x2A70D; &#x2A70E; &#x2A70F; &#x2A710; &#x2A711; &#x2A712; &#x2A713; </dd>
+
+<dt>CJK Compatibility Ideographs Supplement</dt>
+<dd>&#x2F800; &#x2F801; &#x2F802; &#x2F803; &#x2F804; &#x2F805; &#x2F806; &#x2F807; &#x2F808; &#x2F809; &#x2F80A; &#x2F80B; &#x2F80C; &#x2F80D; &#x2F80E; &#x2F80F; &#x2F810; &#x2F811; &#x2F812; &#x2F813; </dd>
+</dl>
+
+</div>
+
+<pagebreak />
+
+<h4>Using CJK fonts in mPDF</h4>
+
+<p>Fonts containing CJK characters are large files, typically 10-30MB. Adobe provides a free download of an \'Asian font pack\' allowing you to create PDF files without including (embedding) the font information in the file. This keeps the file size to a minimum and minimises resource usage on your website generating the PDF file. However, users will have to download the Adobe font packs to read the file, and other PDF software will not display the text correctly.</p>
+
+<p>mPDF allows you to embed subsets of CJK fonts keeping file size down, although there is increased memory usage to generate these files.</p>
+
+<p>Some CJK fonts are broken up into 2 files because of the size of the files. One freely available font with almost complete coverage of all CJK characters (in both BMP and SIP) is \'Sun\' available from Alan Wood\'s excellent website: <a href="http://www.alanwood.net/unicode/fonts-east-asian.html">http://www.alanwood.net/unicode/fonts-east-asian.html</a>. This comes as 2 files, Sun-ExtA and Sun-ExtB (both about 20MB in size) containing the characters from BMP and SIP respectively.
+</p>
+
+<p>mPDF allows you to treat these as one font by defining the second file as an SIP-extension of the first in the config_fonts.php configuration file. The following text includes random characters from the BMP and SIP mixed together:</p>
+
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE;">
+<div style="font-family:sun-extA;">
+&#40706; &#40712; &#40727; &#x2320f; &#x23225; &#40742; &#40743; &#x2322f; &#x23231; &#40761; &#40772; &#x23232; &#x23233; &#40773; &#40784; &#x23234; &#x23256; &#40787; &#40794; &#x23262; &#x23281; &#40802; &#40809; &#x23289; &#x2328a; 
+</div>
+</div>
+
+<p>This is the entry in the config_fonts.php configuration file:</p>
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE; font-family: \'Courier new\'; font-size: 8.5pt;">
+$this->fontdata = array(<br />
+...<br />
+ &nbsp; &nbsp; &nbsp; "sun-exta" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "Sun-ExtA.ttf",<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'sip-ext\' => \'sun-extb\',<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+ &nbsp; &nbsp; &nbsp; "sun-extb" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "Sun-ExtB.ttf",<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+<br />
+...<br />
+);
+</div>
+
+
+<p>This is the HTML code - note only the sun-exta font-family needs to be referenced:</p>
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE; font-family: \'Courier new\'; font-size: 8.5pt;">
+&lt;div style="font-family:sun-extA;"&gt;
+&amp;#40706; &amp;#40712; &amp;#40727; &amp;#x2320f; &amp;#x23225; &amp;#40742; &amp;#40743; &amp;#x2322f; &amp;#x23231; &amp;#40761; &amp;#40772; &amp;#x23232; &amp;#x23233; &amp;#40773; &amp;#40784; &amp;#x23234; &amp;#x23256; &amp;#40787; &amp;#40794; &amp;#x23262; &amp;#x23281; &amp;#40802; &amp;#40809; &amp;#x23289; &amp;#x2328a; 
+&lt;/div&gt;
+</div>
+
+<p>NB You may also need to edit the value $this->useAdobeCJK=false in config.php or use new mPDF(\'-aCJK\'), and edit the config_cp.php configuration file.</p>
+
+
+<pagebreak />
+
+<h4>TrueType Collections</h4>
+
+<p>TrueType Collections (.ttc files) contain more than one font. mPDF treats each font separately by defining the TTCfontID array in the config_fonts.php configuration file. </p>
+
+<p>This example uses the Windows MingLiU fonts, which consist of 2 files containing 6 fonts (note that mingliub is not a Bold variant): </p>
+
+<p>Font collection file (mingliu.ttc) contains the following fonts:<br />
+[1] MingLiU (mingliu) Regular<br />
+[2] PMingLiU (pmingliu) Regular (Proportional)<br />
+[3] MingLiU_HKSCS (mingliu_hkscs) Regular<br />
+</p>
+
+<p>Font collection file (mingliub.ttc) contains the following fonts:<br />
+[1] MingLiU-ExtB (mingliu-extb) Regular<br />
+[2] PMingLiU-ExtB (pmingliu-extb) Regular (Proportional)<br />
+[3] MingLiU_HKSCS-ExtB (mingliu_hkscs-extb) Regular<br />
+</p>
+
+<p>The following text includes characters from both BMP and SIP:</p>
+
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE;">
+<div style="font-family:mingliu;">
+&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; 
+</div>
+<div style="font-family:mingliu_hkscs;">
+&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; 
+</div>
+<div style="font-family:pmingliu;">
+&#40706; &#40742; &#40772; &#40784; &#40802; &#40809; &#x23289; &#x2328a; 
+</div>
+</div>
+
+<p>This is the entry in the config_fonts.php configuration file:</p>
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE; font-family: \'Courier new\'; font-size: 8.5pt;">
+$this->fontdata = array(<br />
+...<br />
+ &nbsp; &nbsp; &nbsp; "mingliu" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "mingliu.ttc",<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'TTCfontID\' => array (<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \'R\' => 1,<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; ),<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'sip-ext\' => \'mingliu-extb\',<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+
+ &nbsp; &nbsp; &nbsp; "pmingliu" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "mingliu.ttc",<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'TTCfontID\' => array (<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \'R\' => 2,<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; ),<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'sip-ext\' => \'pmingliu-extb\',<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+
+ &nbsp; &nbsp; &nbsp; "mingliu_hkscs" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "mingliu.ttc",<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'TTCfontID\' => array (<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \'R\' => 3,<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; ),<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'sip-ext\' => \'mingliu_hkscs-extb\',<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+
+ &nbsp; &nbsp; &nbsp; "mingliu-extb" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "mingliub.ttc",<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'TTCfontID\' => array (<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \'R\' => 1,<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; ),<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+
+ &nbsp; &nbsp; &nbsp; "pmingliu-extb" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "mingliub.ttc",<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'TTCfontID\' => array (<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \'R\' => 2,<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; ),<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+
+ &nbsp; &nbsp; &nbsp; "mingliu_hkscs-extb" => array(<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'R\' => "mingliub.ttc",<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; \'TTCfontID\' => array (<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \'R\' => 3,<br />
+ &nbsp; &nbsp; &nbsp;  &nbsp; &nbsp; &nbsp; ),<br />
+ &nbsp; &nbsp; &nbsp;  ),<br />
+<br />
+...<br />
+);
+</div>
+
+
+<p>This is the HTML code:</p>
+<div style="border:0.2mm solid #000088; padding: 1em; background-color: #EEEEEE; font-family: \'Courier new\'; font-size: 8.5pt;">
+&lt;div style="font-family:mingliu;"&gt;
+&amp;#40706; &amp;#40742; &amp;#40772; &amp;#40784; &amp;#40802; &amp;#40809; &amp;#x23289; &amp;#x2328a; 
+&lt;/div&gt;
+<br />
+&lt;div style="font-family:mingliu_hkscs;"&gt;
+&amp;#40706; &amp;#40742; &amp;#40772; &amp;#40784; &amp;#40802; &amp;#40809; &amp;#x23289; &amp;#x2328a; 
+&lt;/div&gt;
+<br />
+&lt;div style="font-family:pmingliu;"&gt;
+&amp;#40706; &amp;#40742; &amp;#40772; &amp;#40784; &amp;#40802; &amp;#40809; &amp;#x23289; &amp;#x2328a; 
+&lt;/div&gt;
+</div>
+
+
+';
+
+//==============================================================
+//==============================================================
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(); 
+
+$mpdf->WriteHTML($html);
+
+$mpdf->Output();
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php b/inc/3rdparty/libraries/mpdf/examples/example54_new_mPDF_v5-1_features_gradients_and_images.php
new file mode 100644 (file)
index 0000000..758f815
--- /dev/null
@@ -0,0 +1,498 @@
+<?php
+
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+//==============================================================
+$html = '
+<style>
+body {
+       font-family: sans-serif;
+       font-size: 10pt;
+}
+h4 {
+       font-variant: small-caps; 
+}
+h5 {
+       margin-bottom: 0;
+       color: #110044;
+}
+p { margin-top: 0; }
+dl {
+       margin: 0;
+}
+table {
+       border-spacing: 0.5em;
+       border: 7px dashed teal;
+}
+.table1 { 
+       background-image: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); 
+}
+.table1 tr.thisrow1 { 
+       background-image-resolution: 300dpi;
+       background: transparent url(\'bayeux1.jpg\') repeat scroll left top;
+}
+.table1 tr.thisrow1 td { 
+       height: 28mm;
+}
+.table1 tr.thisrow2 { 
+       background-image: none; 
+       background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
+       background: -webkit-gradient(linear, left bottom, left top, color-stop(0.29, rgb(90,83,12)), color-stop(0.65, rgb(117,117,39)), color-stop(0.83, rgb(153,153,67)));
+}
+.table3 { 
+       border-collapse: collapse;
+       /* background-gradient: linear #07cdde #00f200 1 0 0.5 1; */
+       background: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); 
+}
+tr.thisrow { 
+       border: 3px dashed red;
+       background: transparent url(\'bayeux1.jpg\') repeat scroll left top;
+}
+.table3 tr.thisrow { 
+       border: 3px dashed orange;
+       background: transparent url(\'bgrock.jpg\') repeat scroll left top;
+}
+tfoot tr { 
+       border: 5px dashed blue;
+       /* background-gradient: linear #c7Fdde #FF0000 1 0 0.5 0; */
+       background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
+}
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background: linear-gradient(top, #c7cdde, #f0f2ff);
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background: linear-gradient(top, #c7cdde, #f0f2ff);
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+div.text {
+       padding:1em; 
+       margin: 1em 0;
+       text-align:justify; 
+}
+.code {
+       font-family: mono;
+       font-size: 9pt;
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+}
+</style>
+<body style="background:  -moz-repeating-radial-gradient(rgba(255,0,0,0.1), rgba(0,0,255,0.1) 40px, rgba(255,0,0,0.1) 80px)">
+
+<div style="position:fixed; top: 0; right: 0"><img src="tux.svg" width="110" /></div>
+
+<h1></a>mPDF</h1>
+<h2>New features in mPDF Version 5.1</h2>
+
+<div class="rounded text">
+<ul>
+<li>CSS background (images, colours or gradients) on &lt;TR&gt; and &lt;TABLE&gt;</li>
+<li>CSS border on &lt;TR&gt; (only in border-collapsed mode)</li>
+<li>support for Mozilla and CSS3 gradient syntax:
+<ul>
+<li>-moz-linear-gradient, linear-gradient</li>
+<li>-moz-radial-gradient, radial-gradient</li>
+<li>-moz-repeating-linear-gradient, linear-repeating-gradient</li>
+<li>-moz-repeating-radial-gradient, radial-repeating-gradient</li>
+</ul>
+</li>
+<li>expanded support for gradients (including in SVG images):
+<ul>
+<li>multiple colour \'stops\'</li>
+<li>opacity (transparency)</li>
+<li>angle and/or position can be specified</li>
+</ul>
+</li>
+<li>gradient can be used as an image mask (custom mPDF styles: gradient-mask)</li>
+<li>CSS3 image-orientation supported for &lt;IMG&gt; (similar to existing custom mPDF attribute: rotate)</li>
+<li>CSS3 image-resolution supported for &lt;IMG&gt;</li>
+<li>background-image-resolution (custom mPDF CSS-type style) to define resolution of background images</li>
+<li>improved support for SVG images</li>
+<li>SVG and WMF images supported in background-image</li>
+<li>file attachments (embedded in PDF file) &rarr; &rarr; &rarr; &rarr; &rarr; <annotation file="tiger.jpg" content="This is a file attachment (embedded file)
+Double-click to open attached file
+Right-click to save file on your computer" icon="Paperclip" title="Attached File: tiger.jpg" pos-x="150" /></li>
+</ul>
+</div>
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Tables: borders, background images & gradients</div>
+
+<div class="rounded text">Background images or gradients can be set on whole tables or table rows (as well as individual table cells)</div>
+
+<table class="table1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr class="thisrow1"><td>This row has</td><td>a background-image</td><td>of the bayeux tapestry</td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+<tr class="thisrow2"><td>This row has</td><td>a gradient set</td><td>which spans all 3 cells</td></tr>
+<tr><td>Row 5</td><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+
+
+<div class="rounded text">Border can be set on table rows (only when border-collapse is set to collapse)</div>
+
+<table class="table3" border="1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr class="thisrow"><td>Row 2</td><td>This is data<br />This is data<br />This is data<br />This is data</td><td>Also data</td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+</tbody></table>
+
+
+<!-- ============================================================== -->
+
+
+<div style="margin-top: 2em; height: 2mm; background-image: -moz-linear-gradient(45deg, red, blue);"> </div>
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Mozilla and CSS3 gradient syntax</div>
+
+<div style="height: 2mm; background-image: -moz-linear-gradient(45deg, red, blue);"> </div>
+<h2>Linear gradients</h2>
+<h4> Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...</h4>
+<table style="border-collapse: collapse; repeat scroll left top; border: none;">
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet);">top right 210 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(30% 80% 60deg, red, orange, yellow, green, blue, indigo, violet);">30% 80% 60 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(30% 80% 60deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(10px 40px 325deg, red, orange, yellow, green, blue, indigo, violet);">10px 40px 325 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(10px 40px 325deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(bottom left 135deg, red, orange, yellow, green, blue, indigo, violet);">bottom left 135deg&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(bottom left 135deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+</table>
+
+
+<h4> Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...</h4>
+
+<table style="border-collapse: collapse; repeat scroll left top; border: none;">
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(bottom right, red, orange, yellow, green, blue, indigo, violet);">bottom right</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(bottom right, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(top, red, orange, yellow, green, blue, indigo, violet);">top</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(top, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(10px 40px, red, orange, yellow, green, blue, indigo, violet);">10px 40px</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(10px 40px, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(30% 10%, red, orange, yellow, green, blue, indigo, violet);">30% 10%</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(30% 10%, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+</table>
+
+<pagebreak />
+
+<h4> Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...</h4>
+
+<table style="border-collapse: collapse; repeat scroll left top; border: none;">
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);">90 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(120deg, red, orange, yellow, green, blue, indigo, violet);">120 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(120deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(180deg, red, orange, yellow, green, blue, indigo, violet);">180 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(180deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(210deg, red, orange, yellow, green, blue, indigo, violet);">210 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(210deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+</table>
+
+
+
+<div class="rounded text">
+<p>Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.</p>
+<p>Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification: </p>
+<ul>
+<li><i>-moz-linear-gradient</i> </li>
+<li><i>-moz-repeating-linear-gradient</i></li> 
+<li><i>-moz-radial-gradient</i> and </li>
+<li><i>-moz-repeating-radial-gradient</i></li>
+</ul>
+<p>WebKit (Safari, Chrome etc.) have a separate way of defining gradients using <i>-webkit-gradient</i></p>
+<p>Microsoft (IE) does not support any such method of specifying gradients, but does have a function <i>filter: progid:DXImageTransform.Microsoft.gradient()</i> </p>
+<p>When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:</p>
+<p class="code">
+background: #999999; /* for non-css3 browsers */<br />
+filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */<br />
+background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */<br />
+background: -moz-linear-gradient(top,  #cccccc,  #000000); /* for firefox 3.6+ */<br />
+</p>
+
+
+
+<p>mPDF versions <= 5.0 supported a custom style property <i>background-gradient</i> which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:</p>
+<ul>
+<li>mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image</li>
+<li>CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)</li>
+</ul>
+
+<p>mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:</p>
+<ul>
+<li>parse and support <i>-moz</i> type gradients</li>
+<li>parse and support CSS3 gradient syntax</li>
+<li>ignore <i>-webkit</i> syntax gradients</li>
+</ul>
+
+
+<p>More details can be found at:</p>
+<ul>
+<li>Mozilla linear - <a href="https://developer.mozilla.org/en/CSS/-moz-linear-gradient">https://developer.mozilla.org/en/CSS/-moz-linear-gradient</a></li>
+<li>Mozilla radial - <a href="https://developer.mozilla.org/en/CSS/-moz-radial-gradient">https://developer.mozilla.org/en/CSS/-moz-radial-gradient</a></li>
+<li>Mozilla gradients use - <a href="https://developer.mozilla.org/en/Using_gradients">https://developer.mozilla.org/en/Using_gradients</a></li>
+<li>CSS3 linear gradients - <a href="http://dev.w3.org/csswg/css3-images/#linear-gradients">http://dev.w3.org/csswg/css3-images/#linear-gradients</a></li>
+<li>CSS3 radial gradients - <a href="http://dev.w3.org/csswg/css3-images/#radial-gradients">http://dev.w3.org/csswg/css3-images/#radial-gradients</a></li>
+<li>WebKit gradients - <a href="http://webkit.org/blog/175/introducing-css-gradients/">http://webkit.org/blog/175/introducing-css-gradients/</a></li>
+</ul>
+</div>
+
+
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Repeating gradients</div>
+
+<p class="code">
+background: repeating-linear-gradient(red, blue 20px, red 40px);
+<br /> <br />
+background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px);
+</p>
+
+<div  style="float: right; width: 250px; height: 150px; background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px);">&nbsp;</div>
+
+<div  style="float: left; width: 250px; height: 150px; background: repeating-linear-gradient(red, blue 20px, red 40px);">&nbsp;</div>
+<br style="clear: both;" />
+<br />
+<br />
+
+<p class="code">
+background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px);
+<br /> <br />
+background: repeating-radial-gradient(red, blue 20px, red 40px);
+</p>
+<div  style="float: right; width: 250px; height: 150px; background: repeating-radial-gradient(red, blue 20px, red 40px);">&nbsp;</div>
+
+<div  style="float: left; width: 250px; height: 150px; background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px);">&nbsp;</div>
+<br style="clear: both;" />
+
+
+<pagebreak />
+
+
+<h2>Radial gradients</h2>
+
+<div  style="float: right; width: 250px; height: 150px; padding: 15px; background: #F56991; color: #E8F3F8; 
+border-radius: 155px / 100px;
+-moz-border-radius: 155px / 100px;
+box-shadow: 10px 10px 25px #CCC;
+-moz-box-shadow: 5px 5px 25px #CCC;
+background-image: -moz-radial-gradient(70% 30%, ellipse , #ffffff 0%, #F56991 50%, #8A2624 100%);">&nbsp;</div>
+
+
+<div  style="float: left; width: 150px; height: 150px; padding: 15px; background: #F56991; color: #E8F3F8;
+border-radius: 100px;
+-moz-border-radius: 100px;
+box-shadow: 10px 10px 25px #CCC;
+-moz-box-shadow: 5px 5px 25px #CCC;
+background-image: -moz-radial-gradient(70% 30%, circle , #ffffff 0%, #E56991 50%, #8A2624 100%);">&nbsp;</div>
+<br style="clear: both;" />
+
+
+<div  style="float: right; width: 150px; height: 150px; border: 0.2mm solid black;
+background: radial-gradient(bottom left, farthest-side, red, blue 50px, pink);
+background-image: -moz-radial-gradient(red, yellow, #1E90FF);
+background: -webkit-gradient(linear, left bottom, left top, color-stop(0.48, rgb(107,14,86)), color-stop(0.74, rgb(140,41,112)), color-stop(0.87, rgb(168,70,146)));">&nbsp;</div>
+
+<div  style="float: left; width: 150px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(red 5%, yellow 25%, #1E90FF 50%);">&nbsp;</div>
+<br style="clear: both;" />
+
+<div style="float: right; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(bottom left, circle, red, yellow, #1E90FF);">&nbsp;</div>
+
+<div style="float: left; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(bottom left, ellipse, red, yellow, #1E90FF);">&nbsp;</div>
+<br style="clear: both;" />
+
+<div style="float: right; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(ellipse closest-side, red, yellow 10%, #1E90FF 50%, white);">&nbsp;</div>
+
+<div style="float: left; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(ellipse farthest-corner, red, yellow 10%, #1E90FF 50%, white);">&nbsp;</div>
+<br style="clear: both;" />
+
+
+<p style="background-image: -moz-radial-gradient(center , red, orange, yellow, green, blue, indigo, violet);">&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;</p>
+
+<p style="background-image: -moz-radial-gradient(center , circle closest-side, blue 0%, red 100%);">&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;</p>
+
+
+
+
+<pagebreak />
+
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Gradient Image mask</div>
+
+<div class="rounded text">Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: <i>gradient-mask</i>. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.</div>
+
+<p class="code">&lt;img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /&gt;
+<br /><br />&lt;img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /&gt;
+<br /><br />&lt;img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /&gt;
+</p>
+
+<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" />
+<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" />
+<img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" />
+
+
+<br />
+
+
+
+
+<pagebreak />
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Image orientation</div>
+
+<div class="rounded text">Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.</div>
+<p class="code">&lt;img src="tiger2.png" style="image-orientation: -90deg" width="100" /&gt;
+<br />
+&lt;img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /&gt;
+</p>
+
+<img src="tiger2.png" width="100" /> 
+<img src="tiger2.png" style="image-orientation: 75deg;" width="100" /> 
+<img src="tiger2.png" style="image-orientation: 180deg; image-resolution: 300dpi; " width="100" /> 
+<img src="tiger2.png" style="image-orientation: -90deg" width="100" /> 
+
+
+<br />
+
+<br />
+<br />
+<br />
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Image resolution</div>
+
+
+<div class="rounded text">Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to &lt;IMG&gt; or background-images.
+<br />
+The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi.
+<br />
+NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution  in the file.</div>
+
+<p class="code">&lt;img src="tiger300px300dpi.png" style="image-resolution: from-image;" /&gt;
+<br />&lt;img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /&gt;
+<br />&lt;img src="tiger300px96dpi.png" style="image-resolution: from-image;" /&gt;</p>
+
+<img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> 
+<img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> 
+<img src="tiger300px96dpi.png" style="image-resolution: from-image;" /> 
+<br /> <br />
+
+
+
+<pagebreak />
+
+<div class="rounded text">Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'</div>
+
+<p class="code">&lt;div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;"&gt;</p>
+<div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">Hallo<br />world
+</div>
+
+<br />
+
+<p class="code">&lt;div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;"&gt;</p>
+<div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">
+</div>
+
+
+
+<br />
+
+
+<pagebreak />
+
+
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Mixed effects</div>
+
+
+<div style="padding: 15px; background: url(flowers-pattern.jpg) repeat right; border-radius: 90px;background-color: #00f200 ;  ">
+<div style="padding: 15px; background: -moz-linear-gradient(top right, red, orange, yellow, green, blue, indigo, violet); border-radius: 75px; ">
+<div style="padding: 15px; background-gradient: linear #07cdde #00f200 0 0 0.5 1; border-radius: 60px; ">
+<div style="padding: 15px; background: url(flowers-pattern.jpg) repeat right; border-radius: 45px; background-image-resolution: 180dpi; ">
+<div style="padding: 15px; background: -moz-linear-gradient(left, red, orange, yellow, green, blue, indigo, violet); border-radius: 30px; ">
+<div style="padding: 15px; background: url(alpha3.png) repeat top left; border-radius: 15px; background-image-resolution: 180dpi; ">
+Hallo World
+</div>
+<div style="padding: 15px; background: url(alpha3.png) repeat top left; border-radius: 15px; background-image-resolution: 360dpi; ">
+Hallo World
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+
+<br />
+
+<div style="background-color:#FF0000 ; width:180px; background-image: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));">
+<img src="tux.svg" width="180" />
+</div>
+
+';
+
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+//==============================================================
+$mpdf->WriteHTML($html);
+
+//==============================================================
+//==============================================================
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php b/inc/3rdparty/libraries/mpdf/examples/example55_new_mPDF_v5-1_color_and_other_features.php
new file mode 100644 (file)
index 0000000..1cd5bca
--- /dev/null
@@ -0,0 +1,456 @@
+<?php
+
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+$mpdf->useKerning=true;
+
+$mpdf->restrictColorSpace=3;   // forces everything to convert to CMYK colors
+
+$mpdf->AddSpotColor('PANTONE 534 EC',85,65,47,9);
+
+//==============================================================
+$html = '
+<style>
+@page {
+               sheet-size: A4;
+               size: 17cm 25cm;
+               margin: 10%;    /* % of page-box width for LR, height for TB */
+               margin-header: 5mm;
+               margin-footer: 5mm;
+               margin-left: 2cm;
+               margin-right: 1cm;
+               marks: cross crop;
+               background-image:  -moz-repeating-radial-gradient(rgba(255,0,0,0.1), rgba(0,0,255,0.1) 40px, rgba(255,0,0,0.1) 80px);
+}
+body {
+       font-family: sans-serif;
+       font-size: 10pt;
+}
+h4 {
+       font-variant: small-caps; 
+}
+h5 {
+       margin-bottom: 0;
+       color: #110044;
+}
+p { margin-top: 0; }
+dl {
+       margin: 0;
+}
+table {
+       border-spacing: 0.5em;
+       border: 7px dashed teal;
+}
+.table1 { 
+       background-image: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); 
+}
+.table1 tr.thisrow1 { 
+       background-image-resolution: 300dpi;
+       background: transparent url(\'bayeux1.jpg\') repeat scroll left top;
+}
+.table1 tr.thisrow1 td { 
+       height: 28mm;
+}
+.table1 tr.thisrow2 { 
+       background-image: none; 
+       background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
+       background: -webkit-gradient(linear, left bottom, left top, color-stop(0.29, rgb(90,83,12)), color-stop(0.65, rgb(117,117,39)), color-stop(0.83, rgb(153,153,67)));
+}
+.table3 { 
+       border-collapse: collapse;
+       /* background-gradient: linear #07cdde #00f200 1 0 0.5 1; */
+       background: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); 
+}
+tr.thisrow { 
+       border: 3px dashed red;
+       background: transparent url(\'bayeux1.jpg\') repeat scroll left top;
+}
+.table3 tr.thisrow { 
+       border: 3px dashed orange;
+       background: transparent url(\'bgrock.jpg\') repeat scroll left top;
+}
+tfoot tr { 
+       border: 5px dashed blue;
+       /* background-gradient: linear #c7Fdde #FF0000 1 0 0.5 0; */
+       background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
+}
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background: linear-gradient(top, #c7cdde, #f0f2ff);
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background: linear-gradient(top, #c7cdde, #f0f2ff);
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+div.text {
+       padding:1em; 
+       margin: 1em 0;
+       text-align:justify; 
+}
+.code {
+       font-family: mono;
+       font-size: 9pt;
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+}
+</style>
+<body>
+
+<div style="position:fixed; top: 0; right: 0"><img src="tux.svg" width="110" /></div>
+
+<h1></a>mPDF</h1>
+<h2>Other new features in mPDF Version 5.1</h2>
+
+<div class="rounded text">
+<ul>
+<li>Kerning</li>
+<li>Letter- and word-spacing</li>
+<li>Small-caps improved to work with justified text, and now with kerning, letter- and word-spacing</li>
+<li>Bleed area on @page media</li>
+<li>Colorspace and colour conversion (almost everything except BMP images)</li>
+<li>Spot colours</li>
+<li>PDF/X files</li>
+<li>dir="rtl"</li>
+<li>numeric list-styles for arabic and indic</li>
+</ul>
+</div>
+
+
+<!-- ============================================================== -->
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Kerning</div>
+
+<div class="rounded text">Font kerning is supported. This corrects the inter-character spacing between specific pairs of letters. It is dependent on kerning information being available in the original font file.
+<br />
+You need to set $mpdf-&gt;useKerning=true; either in the config.php configuration file, or at runtime. This causes the kerning information to be loaded when fonts are accessed (and will therefore increase memory usage).
+<br />
+You can then set kerning on or off using the draft CSS3 style property "font-kerning". Values of normal or auto will turn kerning on; "none" will turn kerning off.
+</div>
+
+<div style="border: 0.2mm solid black; font-family: arial; font-size: 40pt;">
+Off: AWAY To War.
+</div>
+
+<div style="border: 0.2mm solid black; font-family: arial; font-size: 40pt; font-kerning: auto;">
+On: AWAY To War.
+</div>
+
+<!-- ============================================================== -->
+<pagebreak />
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Letter and word spacing & text justification</div>
+
+<div class="rounded text">Letter- and word-spacing can be set on almost all block and in-line style elements, using the CSS properties letter-spacing and word-spacing. Values of normal or a length can be specified (em or ex recommended).
+Note that setting the letter-spacing value (including setting it to zero) will prevent any additional letter-spacing to be added when full-justifying text. The word-spacing value, however, is a <i>minimum</i> value, and can be increased in order to justify text.
+<br />
+<br />
+Text-align: justify - no longer uses configurable variable $jSpacing= C | W | \'\'
+<br />
+The default value is for mixed letter- and word-spacing, set by jSWord and jSmaxChar
+<br />
+If a line contains a cursive script (RTL or Indic [devanagari, punjabi, bengali]) then it prevents letter-spacing
+for justification on that line - effectively the same as setting letter-spacing:0
+<br />
+Spacing values have been removed from the config_cp.php configuration file, so the "lang" property 
+(in config_cp) no longer determines justification behaviour (this includes the use of Autofont()).
+<br />
+When using RTL or Indic [devanagari, punjabi, bengali] scripts, you should set CSS letter-spacing:0
+whenever you use text-align:justify.
+</div>
+
+<p style="border: 0.2mm solid black; padding: 0.3em;">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus. <span style="letter-spacing: 0.2em; color: red;">Letter spacing set at 0.2em. Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci.</span> Morbi feugiat pulvinar dolor. Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus. <span style="word-spacing: 1em; color: teal;">Word spacing set at 1em. Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien.</span> Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod. Donec et nulla. Sed quis orci. </p>
+
+
+<!-- ============================================================== -->
+<pagebreak />
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Colours</div>
+
+<div class="rounded text">Whenever a colour can be specified in a style, additional formats are now supported: rgb(), rgba(), hsl(), hsla(), cmyk(), cmyka(), or spot().
+<br />
+Spot colours need to be defined at the start of the script using e.g. $mpdf-&gt;AddSpotColor(\'PANTONE 534 EC\',85,65,47,9);
+<br />
+The four values define the CMYK values used when the spot colour is not available. A tint % can be specified when using the spot colour in the document.
+</div>
+
+<div style="border: 0.2mm solid black; background-color: rgba(150,150,255, 0.5); color: rgb(0,150,150);">background-color: rgba(150,150,255, 0.5); color: rgb(0,150,150);</div>
+<div style="border: 0.2mm solid black; background-color: rgba(60%,60%,100%, 0.5); color: rgb(0,60%,60%);">background-color: rgba(60%,60%,100%, 0.5); color: rgb(0,60%,60%);</div>
+<div style="border: 0.2mm solid black; background-color: hsla(180,30%,25%, 0.5); color: hsl(360,100%,50%);">background-color: hsla(180,30%,25%, 0.5); color: hsl(360,100%,50%);</div>
+<div style="border: 0.2mm solid black; background-color: cmyka(0,100,0,30, 0.3); color: spot(PANTONE 534 EC,90%);">background-color: cmyka(85,65,0,30, 0.3); color: spot(PANTONE 300 EC,80%);</div>
+<br />
+<br />
+
+<!-- ============================================================== -->
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">@page media</div>
+
+<div class="rounded text">When using @page to create a print publication with page-size less than sheet-size, the bleed margin is now configurable.
+Backgrounds/gradients/images now use the bleed box as their "container box", rather than the whole page. (See this document as an example.)
+<br />
+Crop- and cross-marks can now both be used together, and are more configurable.
+Also, background-image-opacity and background-image-resize have been extended to work with @page CSS.
+<br />
+The following values can be set in the configuration file, config.php:
+$this-&gt;bleedMargin<br />
+$this-&gt;crossMarkMargin<br />
+$this-&gt;cropMarkMargin<br />
+$this-&gt;cropMarkLength<br />
+$this-&gt;nonPrintMargin<br />
+</div>
+
+<!-- ============================================================== -->
+<pagebreak />
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Colorspace and colour conversion </div>
+
+<div class="rounded text">PDF files can contain objects using different colorSpaces e.g. Grayscale, RGB and CMYK. By default,
+mPDF creates PDF files using the colours as they are specified: font colour may be set (e.g. #880000) as an RGB colour, and the 
+file may contain JPG images in RGB or CMYK format.
+<br />
+In some circumstances, you may wish to create a PDF file with restricted colorSpaces e.g. printers will often want files 
+which contain only CMYK, spot colours, or grayscale, but <i>not</i> RGB.
+<br />
+Additional methods for defining colours can be used (see above), but alternatively you can set mPDF to restrict the colorSpace by setting 
+the value for $mpdf-&gt;restrictColorSpace:
+<br />
+1 - allow GRAYSCALE only [converts CMYK/RGB->gray]
+<br />
+2 - allow RGB / SPOT COLORS / Grayscale [converts CMYK->RGB]
+<br />
+3 - allow CMYK / SPOT COLORS / Grayscale [converts RGB->CMYK]
+<br />
+This will attempt to convert every colour value used in the document to the permitted colorSpace(s). Almost everything including images
+will be converted (except BMP images), and the conversion of images may take significant time.
+<br />
+This example file is set to (3) CMYK; compare the appearance of the Tux penguin in this file and in the previous example file (RGB).
+</div>
+<br />
+<br />
+
+<!-- ============================================================== -->
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">PDF/A and PDF/X files</div>
+
+<div class="rounded text">mPDF can produce files which (attempt to) meet the PDF/A and PDF/X specifications. In addition to restricted colorSpace,
+PDF/A and /X files cannot contain images or colour values with "transparency".
+<br />
+Please note that full compliance with the PDF/A or /X specification is not guaranteed.
+</div>
+
+<!-- ============================================================== -->
+<pagebreak />
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">RTL (right-to-left) text</div>
+
+<div class="rounded text"><div>Handling of RTL (right-to-left) languages has been significantly rewritten, and is likely to cause 
+changes to the resulting files if you have previously been using mPDF. The changes have made mPDF
+act more like a browser, respecting the HTML/CSS rules.
+Changes include:</div>
+<ul>
+<li>the document now has a baseline direction; this determines the 
+       <ul>
+       <li>behaviour of blocks for which text-align has not been specifically set</li>
+       <li>layout of mirrored page-margins, columns, ToC and Indexes, headers / footers</li>
+       <li>base direction can be set by any of:
+               <ul>
+               <li>$mpdf-&gt;SetDirectionality(\'rtl\');</li>
+               <li>&lt;html dir="rtl" or style="direction: rtl;"&gt;</li>
+               <li>&lt;body dir="rtl" or style="direction: rtl;"&gt;</li>
+               </ul></li>
+       <li>base direction is an inherited CSS property, so will affect all content, unless...</li>
+       </ul></li>
+<li>direction can be set for all HTML block elements e.g. &lt;DIV&gt;&lt;P&gt;&lt;TABLE&gt;&lt;UL&gt; etc using
+       <ul>
+       <li>CSS property &lt;style="direction: rtl;"&gt; </li>
+       <li>direction can only be set on the top-level element of nested lists</li>
+       <li>direction can only be set on &lt;TABLE&gt;, NOT on THEAD, TBODY, TD etc.</li>
+       <li>nested tables CAN have different directions</li>
+       </ul></li>
+<li>NOTE that block/table margins/paddings are NOT reversed by direction</li>
+<li>language (either CSS "lang", using Autofont, or through initial set-up e.g. $mpdf = new mPDF(\'ar\') )
+       no longer affects direction in any way.<br />
+       NB config_cp.php has been changed as a result; any values of "dir" set here are now ineffective</li>
+<li>default text-align is now as per CSS spec: "a nameless value which is dependent on direction"<br /> 
+       NB default text-align removed in default stylesheet in config.php </li>
+<li>once text-align is specified, it is respected and inherited<br />
+       NB mPDF &lt;5.1 reversed the text-align property for all blocks when RTL set.</li>
+<li>the configurable value $rtlcss is depracated, as it is no longer required</li>
+<li>improved algorithm for dtermining text direction
+       <ul>
+       <li>english word blocks are handled in text reversal as one block i.e. dir="rtl"<br />
+       [arabic text] this will not be reversed [arabic text]</li>
+       <li>arabic numerals 0-9 handled correctly</li>
+       </ul></li>
+</ul>
+Although the control of direction for block elements is now more configurable, the control of 
+text direction (RTL arabic characters) remains fully automatic and unconfigurable. 
+&lt;BDO&gt; etc has no effect. Enclosing text in silent tags can sometimes help e.g.:
+       content&lt;span&gt;[arabic text]&lt;/span&gt;content
+</div>
+
+
+<!-- ============================================================== -->
+<pagebreak />
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">List styles</div>
+<div class="rounded text">Additional numerical list-styles are supported. All of these (except Tamil) are consistent with the draft CSS3 specification:<br />
+<b>list-style</b>: arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya | persian | telugu | thai | urdu | tamil
+
+</div>
+
+<style>
+ul.arabic { font-family:\'XB Zar\'; text-align: right; direction: rtl; }
+ol.arabic { font-family:\'XB Zar\'; list-style: arabic-indic; text-align: right; direction: rtl; }
+ol.persian { font-family:\'XB Zar\'; list-style: persian; text-align: right; direction: rtl; }
+ol.urdu { font-family:\'XB Zar\'; list-style: urdu; text-align: right; direction: rtl; }
+ol.bengali { font-family: ind_bn_1_001; list-style: bengali; }
+ol.devanagari { font-family: ind_hi_1_001; list-style: devanagari; }
+ol.gujarati { font-family: ind_gu_1_001; list-style: gujarati; }
+ol.gurmukhi { font-family: ind_pa_1_001; list-style: gurmukhi; }
+ol.kannada { font-family: ind_kn_1_001; list-style: kannada; }
+ol.malayalam { font-family: ind_ml_1_001; list-style: malayalam ; }
+ol.oriya { font-family: ind_or_1_001; list-style: oriya ; }
+ol.tamil { font-family: ind_ta_1_001; list-style: tamil ; }
+ol.telugu { font-family: ind_te_1_001; list-style: telugu ; }
+</style>
+
+<ul class="arabic">
+
+
+<li>Arabic
+<ol class="arabic">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+<li>Six</li>
+</ol>
+</li>
+<li>Persian
+<ol class="persian">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+<li>Six</li>
+</ol>
+</li>
+<li>Urdu
+<ol class="urdu">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+<li>Six</li>
+</ol>
+</li>
+
+</ul>
+
+<ul>
+
+<li>Bengali
+<ol class="bengali">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Devanagari
+<ol class="devanagari">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Gujarati
+<ol class="gujarati">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Gurmukhi
+<ol class="gurmukhi">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Kannada
+<ol class="kannada">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Malayalam
+<ol class="malayalam">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Oriya
+<ol class="oriya">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Tamil
+<ol class="tamil">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+<li>Telugu
+<ol class="telugu">
+<li>One</li>
+<li>Two</li>
+<li>Three</li>
+<li>Four</li>
+<li>Five</li>
+</ol>
+</li>
+
+</ul>
+
+';
+
+//==============================================================
+$mpdf->WriteHTML($html);
+
+//==============================================================
+//==============================================================
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php b/inc/3rdparty/libraries/mpdf/examples/example56_new_mPDF_v5-1_features_grayscale.php
new file mode 100644 (file)
index 0000000..7d87cc0
--- /dev/null
@@ -0,0 +1,497 @@
+<?php
+
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+$mpdf->restrictColorSpace = 1; // forces to grayscale
+//==============================================================
+$html = '
+<style>
+body {
+       font-family: sans-serif;
+       font-size: 10pt;
+}
+h4 {
+       font-variant: small-caps; 
+}
+h5 {
+       margin-bottom: 0;
+       color: #110044;
+}
+p { margin-top: 0; }
+dl {
+       margin: 0;
+}
+table {
+       border-spacing: 0.5em;
+       border: 7px dashed teal;
+}
+.table1 { 
+       background-image: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); 
+}
+.table1 tr.thisrow1 { 
+       background-image-resolution: 300dpi;
+       background: transparent url(\'bayeux1.jpg\') repeat scroll left top;
+}
+.table1 tr.thisrow1 td { 
+       height: 28mm;
+}
+.table1 tr.thisrow2 { 
+       background-image: none; 
+       background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
+       background: -webkit-gradient(linear, left bottom, left top, color-stop(0.29, rgb(90,83,12)), color-stop(0.65, rgb(117,117,39)), color-stop(0.83, rgb(153,153,67)));
+}
+.table3 { 
+       border-collapse: collapse;
+       /* background-gradient: linear #07cdde #00f200 1 0 0.5 1; */
+       background: -moz-linear-gradient(left, #07cdde 20%, #00f200 ); 
+}
+tr.thisrow { 
+       border: 3px dashed red;
+       background: transparent url(\'bayeux1.jpg\') repeat scroll left top;
+}
+.table3 tr.thisrow { 
+       border: 3px dashed orange;
+       background: transparent url(\'bgrock.jpg\') repeat scroll left top;
+}
+tfoot tr { 
+       border: 5px dashed blue;
+       /* background-gradient: linear #c7Fdde #FF0000 1 0 0.5 0; */
+       background: -moz-linear-gradient(left, #c7Fdde 20%, #FF0000 ); 
+}
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background: linear-gradient(top, #c7cdde, #f0f2ff);
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background: linear-gradient(top, #c7cdde, #f0f2ff);
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+div.text {
+       padding:1em; 
+       margin: 1em 0;
+       text-align:justify; 
+}
+.code {
+       font-family: mono;
+       font-size: 9pt;
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+}
+</style>
+<body style="background:  -moz-repeating-radial-gradient(rgba(255,0,0,0.1), rgba(0,0,255,0.1) 40px, rgba(255,0,0,0.1) 80px)">
+
+<div style="position:fixed; top: 0; right: 0"><img src="tux.svg" width="110" /></div>
+
+<h1></a>mPDF</h1>
+<h2>New features in mPDF Version 5.1</h2>
+
+<div class="rounded text">
+<p>This is a copy of Example 54, but all object colours are converted to grayscale using simply:</p>
+<p class="code">$mpdf-&gt;restrictColorSpace = 1;</p>
+</div>
+
+<div class="rounded text">
+<ul>
+<li>CSS background (images, colours or gradients) on &lt;TR&gt; and &lt;TABLE&gt;</li>
+<li>CSS border on &lt;TR&gt; (only in border-collapsed mode)</li>
+<li>support for Mozilla and CSS3 gradient syntax:
+<ul>
+<li>-moz-linear-gradient, linear-gradient</li>
+<li>-moz-radial-gradient, radial-gradient</li>
+<li>-moz-repeating-linear-gradient, linear-repeating-gradient</li>
+<li>-moz-repeating-radial-gradient, radial-repeating-gradient</li>
+</ul>
+</li>
+<li>expanded support for gradients (including in SVG images):
+<ul>
+<li>multiple colour \'stops\'</li>
+<li>opacity (transparency)</li>
+<li>angle and/or position can be specified</li>
+</ul>
+</li>
+<li>etc...</li>
+</ul>
+</div>
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Tables: borders, background images & gradients</div>
+
+<div class="rounded text">Background images or gradients can be set on whole tables or table rows (as well as individual table cells)</div>
+
+<table class="table1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr class="thisrow1"><td>This row has</td><td>a background-image</td><td>of the bayeux tapestry</td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+<tr class="thisrow2"><td>This row has</td><td>a gradient set</td><td>which spans all 3 cells</td></tr>
+<tr><td>Row 5</td><td>Also data</td><td>Also data</td></tr>
+</tbody></table>
+
+
+<div class="rounded text">Border can be set on table rows (only when border-collapse is set to collapse)</div>
+
+<table class="table3" border="1">
+<tbody><tr><td>Row 1</td><td>This is data</td><td>This is data</td></tr>
+<tr class="thisrow"><td>Row 2</td><td>This is data<br />This is data<br />This is data<br />This is data</td><td>Also data</td></tr>
+<tr><td><p>Row 3</p></td><td><p>This is long data</p></td><td>This is data</td></tr>
+</tbody></table>
+
+
+<!-- ============================================================== -->
+
+
+<div style="margin-top: 2em; height: 2mm; background-image: -moz-linear-gradient(45deg, red, blue);"> </div>
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Mozilla and CSS3 gradient syntax</div>
+
+<div style="height: 2mm; background-image: -moz-linear-gradient(45deg, red, blue);"> </div>
+<h2>Linear gradients</h2>
+<h4> Angle set AND points e.g. -moz-linear-gradient(34% 84% 30deg, red, orange, yellow...</h4>
+<table style="border-collapse: collapse; repeat scroll left top; border: none;">
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet);">top right 210 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(30% 80% 60deg, red, orange, yellow, green, blue, indigo, violet);">30% 80% 60 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(30% 80% 60deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(10px 40px 325deg, red, orange, yellow, green, blue, indigo, violet);">10px 40px 325 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(10px 40px 325deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(bottom left 135deg, red, orange, yellow, green, blue, indigo, violet);">bottom left 135deg&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(bottom left 135deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+</table>
+
+
+<h4> Points set only e.g. -moz-linear-gradient(bottom left, red, orange, yellow...</h4>
+
+<table style="border-collapse: collapse; repeat scroll left top; border: none;">
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(bottom right, red, orange, yellow, green, blue, indigo, violet);">bottom right</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(bottom right, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(top, red, orange, yellow, green, blue, indigo, violet);">top</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(top, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(10px 40px, red, orange, yellow, green, blue, indigo, violet);">10px 40px</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(10px 40px, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(30% 10%, red, orange, yellow, green, blue, indigo, violet);">30% 10%</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(30% 10%, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+</table>
+
+<pagebreak />
+
+<h4> Angle set but no points e.g. -moz-linear-gradient(30deg, red, orange, yellow...</h4>
+
+<table style="border-collapse: collapse; repeat scroll left top; border: none;">
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);">90 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(90deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(120deg, red, orange, yellow, green, blue, indigo, violet);">120 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(120deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(180deg, red, orange, yellow, green, blue, indigo, violet);">180 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(180deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+<tr>
+<td style="height: 25mm; width: 135mm; background-image: -moz-linear-gradient(210deg, red, orange, yellow, green, blue, indigo, violet);">210 degrees&nbsp;</td>
+<td>&nbsp;</td>
+<td style="height: 25mm; width: 10mm; background-image: -moz-linear-gradient(210deg, red, orange, yellow, green, blue, indigo, violet);">&nbsp;</td>
+</tr>
+</table>
+
+
+
+<div class="rounded text">
+<p>Linear and radial gradients are not specified in the CSS2 specification. The CSS3 draft specification gives a way of outputting gradients, but currently this is not supported by any browser.</p>
+<p>Mozilla (Firefox) has developed its own way of producing gradients, which approximates to the CSS3 draft specification: </p>
+<ul>
+<li><i>-moz-linear-gradient</i> </li>
+<li><i>-moz-repeating-linear-gradient</i></li> 
+<li><i>-moz-radial-gradient</i> and </li>
+<li><i>-moz-repeating-radial-gradient</i></li>
+</ul>
+<p>WebKit (Safari, Chrome etc.) have a separate way of defining gradients using <i>-webkit-gradient</i></p>
+<p>Microsoft (IE) does not support any such method of specifying gradients, but does have a function <i>filter: progid:DXImageTransform.Microsoft.gradient()</i> </p>
+<p>When writing HTML for cross-browser compatibility, it is common to see something like this in a stylesheet:</p>
+<p class="code">
+background: #999999; /* for non-css3 browsers */<br />
+filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\'#cccccc\', endColorstr=\'#000000\'); /* for IE */<br />
+background: -webkit-gradient(linear, left top, left bottom, from(#cccccc), to(#000000)); /* for webkit browsers */<br />
+background: -moz-linear-gradient(top,  #cccccc,  #000000); /* for firefox 3.6+ */<br />
+</p>
+
+
+
+<p>mPDF versions <= 5.0 supported a custom style property <i>background-gradient</i> which accepted both linear and radial gradients. These continue to be supported (and both old and new forms can be used together); note the differences:</p>
+<ul>
+<li>mPDF background-gradients are output underneath background-images, and both can be specified; whereas the new CSS3/Mozilla-type gradients are defined as a type of background-image</li>
+<li>CSS3/Mozilla gradients support multiple colour-stops, opacity, repeating-gradients, and a greater number of options for defining the gradient axis (linear gradients) or shape and extent (radial gradients)</li>
+</ul>
+
+<p>mPDF will attempt to parse a CSS stylesheet written for cross-browser compatibility:</p>
+<ul>
+<li>parse and support <i>-moz</i> type gradients</li>
+<li>parse and support CSS3 gradient syntax</li>
+<li>ignore <i>-webkit</i> syntax gradients</li>
+</ul>
+
+
+<p>More details can be found at:</p>
+<ul>
+<li>Mozilla linear - <a href="https://developer.mozilla.org/en/CSS/-moz-linear-gradient">https://developer.mozilla.org/en/CSS/-moz-linear-gradient</a></li>
+<li>Mozilla radial - <a href="https://developer.mozilla.org/en/CSS/-moz-radial-gradient">https://developer.mozilla.org/en/CSS/-moz-radial-gradient</a></li>
+<li>Mozilla gradients use - <a href="https://developer.mozilla.org/en/Using_gradients">https://developer.mozilla.org/en/Using_gradients</a></li>
+<li>CSS3 linear gradients - <a href="http://dev.w3.org/csswg/css3-images/#linear-gradients">http://dev.w3.org/csswg/css3-images/#linear-gradients</a></li>
+<li>CSS3 radial gradients - <a href="http://dev.w3.org/csswg/css3-images/#radial-gradients">http://dev.w3.org/csswg/css3-images/#radial-gradients</a></li>
+<li>WebKit gradients - <a href="http://webkit.org/blog/175/introducing-css-gradients/">http://webkit.org/blog/175/introducing-css-gradients/</a></li>
+</ul>
+</div>
+
+
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Repeating gradients</div>
+
+<p class="code">
+background: repeating-linear-gradient(red, blue 20px, red 40px);
+<br /> <br />
+background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px);
+</p>
+
+<div  style="float: right; width: 250px; height: 150px; background: -moz-repeating-linear-gradient(top left -45deg, red, red 10px, rgba(255,255,255,0) 10px, rgba(255,255,255,0) 20px);">&nbsp;</div>
+
+<div  style="float: left; width: 250px; height: 150px; background: repeating-linear-gradient(red, blue 20px, red 40px);">&nbsp;</div>
+<br style="clear: both;" />
+<br />
+<br />
+
+<p class="code">
+background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px);
+<br /> <br />
+background: repeating-radial-gradient(red, blue 20px, red 40px);
+</p>
+<div  style="float: right; width: 250px; height: 150px; background: repeating-radial-gradient(red, blue 20px, red 40px);">&nbsp;</div>
+
+<div  style="float: left; width: 250px; height: 150px; background: repeating-radial-gradient(20px 30px, circle farthest-side, red, yellow, green 10px, yellow 15px, red 20px);">&nbsp;</div>
+<br style="clear: both;" />
+
+
+<pagebreak />
+
+
+<h2>Radial gradients</h2>
+
+<div  style="float: right; width: 250px; height: 150px; padding: 15px; background: #F56991; color: #E8F3F8; 
+border-radius: 155px / 100px;
+-moz-border-radius: 155px / 100px;
+box-shadow: 10px 10px 25px #CCC;
+-moz-box-shadow: 5px 5px 25px #CCC;
+background-image: -moz-radial-gradient(70% 30%, ellipse , #ffffff 0%, #F56991 50%, #8A2624 100%);">&nbsp;</div>
+
+
+<div  style="float: left; width: 150px; height: 150px; padding: 15px; background: #F56991; color: #E8F3F8;
+border-radius: 100px;
+-moz-border-radius: 100px;
+box-shadow: 10px 10px 25px #CCC;
+-moz-box-shadow: 5px 5px 25px #CCC;
+background-image: -moz-radial-gradient(70% 30%, circle , #ffffff 0%, #E56991 50%, #8A2624 100%);">&nbsp;</div>
+<br style="clear: both;" />
+
+
+<div  style="float: right; width: 150px; height: 150px; border: 0.2mm solid black;
+background: radial-gradient(bottom left, farthest-side, red, blue 50px, pink);
+background-image: -moz-radial-gradient(red, yellow, #1E90FF);
+background: -webkit-gradient(linear, left bottom, left top, color-stop(0.48, rgb(107,14,86)), color-stop(0.74, rgb(140,41,112)), color-stop(0.87, rgb(168,70,146)));">&nbsp;</div>
+
+<div  style="float: left; width: 150px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(red 5%, yellow 25%, #1E90FF 50%);">&nbsp;</div>
+<br style="clear: both;" />
+
+<div style="float: right; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(bottom left, circle, red, yellow, #1E90FF);">&nbsp;</div>
+
+<div style="float: left; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(bottom left, ellipse, red, yellow, #1E90FF);">&nbsp;</div>
+<br style="clear: both;" />
+
+<div style="float: right; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(ellipse closest-side, red, yellow 10%, #1E90FF 50%, white);">&nbsp;</div>
+
+<div style="float: left; width: 300px; height: 150px; border: 0.2mm solid black; background-image: -moz-radial-gradient(ellipse farthest-corner, red, yellow 10%, #1E90FF 50%, white);">&nbsp;</div>
+<br style="clear: both;" />
+
+
+<p style="background-image: -moz-radial-gradient(center , red, orange, yellow, green, blue, indigo, violet);">&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;</p>
+
+<p style="background-image: -moz-radial-gradient(center , circle closest-side, blue 0%, red 100%);">&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;<br />&nbsp;</p>
+
+
+
+
+<pagebreak />
+
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Gradient Image mask</div>
+
+<div class="rounded text">Gradients (linear or radial) can also be used to produce \'masks\' for images. The same syntax is used as for background gradients (e.g. -moz-linear-gradient) but is set using a custom mPDF style: <i>gradient-mask</i>. The rgba() method for defining colours is used: colours are ignored, but the opacity value is used to mask the image.</div>
+
+<p class="code">&lt;img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /&gt;
+<br /><br />&lt;img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" /&gt;
+<br /><br />&lt;img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" /&gt;
+</p>
+
+<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 30%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" />
+<img src="windmill.jpg" style="gradient-mask: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));" />
+<img src="windmill.jpg" style="gradient-mask: -moz-linear-gradient(left, rgba(0,0,0,0) , rgba(0,0,0,1) 50% , rgba(0,0,0,0) 100%);" />
+
+
+<br />
+
+
+
+
+<pagebreak />
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Image orientation</div>
+
+<div class="rounded text">Images can be rotated using a custom mPDF HTML attribute: rotate. mPDF now also supports the draft CSS3 property of image-orientation. Rotation can be expressed in degrees, radians or grad units; it is corrected if necessary to an orthogonal rotation i.e. 90, 180 or 270 degrees. NB This does not work on background-images.</div>
+<p class="code">&lt;img src="tiger2.png" style="image-orientation: -90deg" width="100" /&gt;
+<br />
+&lt;img src="tiger2.png" style="image-orientation: 3.14159rad" width="100" /&gt;
+</p>
+
+<img src="tiger2.png" width="100" /> 
+<img src="tiger2.png" style="image-orientation: 75deg;" width="100" /> 
+<img src="tiger2.png" style="image-orientation: 180deg; image-resolution: 300dpi; " width="100" /> 
+<img src="tiger2.png" style="image-orientation: -90deg" width="100" /> 
+
+
+<br />
+
+<br />
+<br />
+<br />
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Image resolution</div>
+
+
+<div class="rounded text">Image files (which do not have an output width or height specified) are displayed in mPDF at the default resolution set by the variable $mpdf->img_dpi. This can be overridden using the draft CSS3 property \'image-resolution\', which can be applied to &lt;IMG&gt; or background-images.
+<br />
+The next 3 image files are identical (300px x 300px) but they have been saved with a different specified resolution: the first at 96dpi, the second at 300dpi.
+<br />
+NB When used in combination with \'from-image\', a specified resolution is only used if the image does not have an intrinsic resolution. Only JPG, PNG and BMP files store a specified DPI resolution  in the file.</div>
+
+<p class="code">&lt;img src="tiger300px300dpi.png" style="image-resolution: from-image;" /&gt;
+<br />&lt;img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /&gt;
+<br />&lt;img src="tiger300px96dpi.png" style="image-resolution: from-image;" /&gt;</p>
+
+<img src="tiger300px300dpi.png" style="image-resolution: from-image;" /> 
+<img src="tiger300px300dpi.png" style="image-resolution: 150dpi;" /> 
+<img src="tiger300px96dpi.png" style="image-resolution: from-image;" /> 
+<br /> <br />
+
+
+
+<pagebreak />
+
+<div class="rounded text">Image resolution can also be applied to a background-image. This can be used as an alternative to the custom mPDF style property - \'background-image-resize\'</div>
+
+<p class="code">&lt;div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;"&gt;</p>
+<div height="300px" width="300px" style="background: #FFCCEE url(tiger300px96dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">Hallo<br />world
+</div>
+
+<br />
+
+<p class="code">&lt;div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;"&gt;</p>
+<div height="300px" width="300px" style="background-image: url(tiger300px300dpi.png); background-image-resolution: from-image; border: 0.2mm solid black;">
+</div>
+
+
+
+<br />
+
+
+<pagebreak />
+
+
+
+<div style="font-family: Arial; font-size: 18pt; color: rgb(49,124,209)">Mixed effects</div>
+
+
+<div style="padding: 15px; background: url(flowers-pattern.jpg) repeat right; border-radius: 90px;background-color: #00f200 ;  ">
+<div style="padding: 15px; background: -moz-linear-gradient(top right, red, orange, yellow, green, blue, indigo, violet); border-radius: 75px; ">
+<div style="padding: 15px; background-gradient: linear #07cdde #00f200 0 0 0.5 1; border-radius: 60px; ">
+<div style="padding: 15px; background: url(flowers-pattern.jpg) repeat right; border-radius: 45px; background-image-resolution: 180dpi; ">
+<div style="padding: 15px; background: -moz-linear-gradient(left, red, orange, yellow, green, blue, indigo, violet); border-radius: 30px; ">
+<div style="padding: 15px; background: url(alpha3.png) repeat top left; border-radius: 15px; background-image-resolution: 180dpi; ">
+Hallo World
+</div>
+<div style="padding: 15px; background: url(alpha3.png) repeat top left; border-radius: 15px; background-image-resolution: 360dpi; ">
+Hallo World
+</div>
+</div>
+</div>
+</div>
+</div>
+</div>
+
+<br />
+
+<div style="background-color:#FF0000 ; width:180px; background-image: -moz-radial-gradient(center, ellipse closest-side, rgba(255,255,255,1), rgba(255,255,255,1) 70%, rgba(255,255,255,0) 90%, rgba(255,255,255,0));">
+<img src="tux.svg" width="180" />
+</div>
+
+';
+
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+
+//==============================================================
+$mpdf->WriteHTML($html);
+
+//==============================================================
+//==============================================================
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms.php
new file mode 100644 (file)
index 0000000..2427f5a
--- /dev/null
@@ -0,0 +1,233 @@
+<?php
+
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+//==============================================================
+
+$html = '
+<style>
+textarea {
+}
+input {
+}
+select {
+       font-family: arialunicodems
+}
+</style>
+<body>
+<h2>Active Forms</h2>
+
+<form action="http://127.0.0.1/MPDF1.com/common/mpdf/examples/formsubmit.php" method="post">
+<b>Input Text</b>
+<input type="text" size="90" name="inputfield" value="" title="The title attribute works like a tool-tip" /> 
+<br /><br />
+
+<b>Readonly</b>
+<input type="text" size="90" name="readonlyfield" value="Read-only field. The value will be exported on submit" title="The title does not do anything if the field is read-only" readonly="readonly" /> 
+<br /><br />
+
+<b>Disabled</b>
+<input type="text" size="90" name="disabledfield" value="Disabled field. The value will not be exported on submit" title="The title does not do anything if the field is disabled." disabled="disabled" /> 
+<br /><br />
+
+<b>Required</b>
+<input type="text" size="90" name="requiredfield" value="" title="This field must be entered before you can submit." required="required" /> 
+<br /><br />
+
+<b>Hidden</b>
+<input type="hidden" name="hiddenfield" value="value_of_hidden_field"> 
+<br /><br />
+
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="mysecretpassword" title="This field is set to act as a password field." > 
+<br /><br />
+
+<b>Calculations</b>
+<input type="text" size="20" name="maths1" value="0" onChange="var a = this.getField(\'maths1\').value;
+var b = this.getField(\'maths2\').value;
+this.getField(\'maths3\').value = a + b;
+" /> + 
+<input type="text" size="20" name="maths2" value="0" onChange="var a = this.getField(\'maths1\').value;
+var b = this.getField(\'maths2\').value;
+this.getField(\'maths3\').value = a + b;
+" /> = 
+<input type="text" size="20" name="maths3" value="" readonly="readonly"/> 
+<br /><br />
+
+
+<b>Textarea</b>
+<textarea name="textareafield" spellcheck="true" rows="5" cols="80" wrap="virtual" title="Textarea tooltip">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+
+
+<b>First language</b>
+<select name="first_language" editable="editable" onChange="
+var choice = this.getField(\'first_language\').value;
+this.getField(\'first_language_display\').value = choice;
+">
+<option value="" >- Please select or type in -</option>
+<option value="Arabic" >&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;</option>
+<option value="Bulgarian" >&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080; &#1077;&#1079;&#1080;&#1082;</option>
+<option value="Chinese" >&#27721;&#35821;</option>
+<option value="Czech" >&#269;esky</option>
+<option value="English" >English</option>
+<option value="French" >Fran&#231;ais</option>
+<option value="Greek" >&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;</option>
+<option value="Japanese" >&#26085;&#26412;&#35486;</option>
+<option value="Latvian" >Latvie&#353;u valoda</option>
+<option value="Russian" >&#1056;&#1091;&#1089;&#1089;&#1082;&#1086;</option>
+<option value="Spanish" >Espa&#241;ol</option>
+<option value="Turkish" >T&#252;rk&#231;e</option>
+</select> 
+&nbsp;&nbsp;&nbsp;&nbsp; 
+
+You have selected: <input type="text" size="20" name="first_language_display" value="" readonly="readonly"/> 
+
+<br /><br />
+
+
+<div>
+<b>Spoken language(s)</b><br />
+<select size="6" multiple="multiple" name="spoken_languages">
+<option value="Arabic" >&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;</option>
+<option value="Bulgarian" >&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080; &#1077;&#1079;&#1080;&#1082;</option>
+<option value="Chinese" >&#27721;&#35821;</option>
+<option value="Czech" >&#269;esky</option>
+<option value="English" selected="selected">English</option>
+<option value="French" >Fran&#231;ais</option>
+<option value="Greek" >&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;</option>
+<option value="Japanese" >&#26085;&#26412;&#35486;</option>
+<option value="Latvian" >Latvie&#353;u valoda</option>
+<option value="Russian" >&#1056;&#1091;&#1089;&#1089;&#1082;&#1086;</option>
+<option value="Spanish" >Espa&#241;ol</option>
+<option value="Turkish" >T&#252;rk&#231;e</option>
+</select> 
+</div>
+<br /><br />
+
+
+
+<b>How many languages do you speak?</b> &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="1" checked="checked" > One &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="2" > Two &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="3" > Three &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="4" > Four &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="5" > Five + 
+
+<br /><br />
+
+
+<input type="checkbox" name="email" value="email_subscrbe" checked="checked" /> Please send me regular information by e-mail<br>
+<input type="checkbox" name="phone" value="phone-me" disabled="disabled" /> Please phone me (not available at present)<br>
+<input type="checkbox" name="subscribe" value="newsletter_subscribe" /> Please subscribe me to the Newsletter
+<br /><br />
+
+<br /><br />
+
+Click this button to see Javascript in action: 
+<input type="image" name="imageButton" value="imagesubmitted" src="goto.gif" title="Click to run javascript" onClick="
+var npass = this.getField(\'password\').value;
+app.alert(\'Value of password field is: \\\'\' + npass + \'\\\'\');
+var nButton = app.alert({
+cMsg: \'Do you want to change the input text field to: T\u00f6rkylempij\u00e4?\',
+cTitle: \'A message from A. C. Robat\',
+nIcon: 2, nType: 2
+});
+if ( nButton == 4 ) {
+this.getField(\'inputfield\').value = \'T\u00f6rkylempij\u00e4\';
+}
+" />
+
+<br /><br />
+
+<input type="submit" name="disabled_submit" value="Disabled" disabled="disabled" title="This Submit button is disabled" /> 
+
+<input type="reset" name="resetfield" value="Reset" />
+
+<input type="submit" name="submit" value="Submit" title="Click here to submit" /> 
+
+<input type="submit" name="submit_in_Turkish" value="Submit (T&#252;rk&#231;e)" title="Click here to submit in T&#252;rk&#231;e" /> 
+
+<input type="button" name="javascriptButton" value="Javascript Button" onClick="
+var npass = this.getField(\'password\').value;
+app.alert(\'Value of password field is: \\\'\' + npass + \'\\\'\');
+var nButton = app.alert({
+cMsg: \'Do you want to change the input text field to: T\u00f6rkylempij\u00e4?\',
+cTitle: \'A message from A. C. Robat\',
+nIcon: 2, nType: 2
+});
+if ( nButton == 4 ) {
+this.getField(\'inputfield\').value = \'T\u00f6rkylempij\u00e4\';
+}
+" />
+<br /><br />
+
+
+</form>
+';
+
+
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+
+//==============================================================
+$mpdf->useActiveForms = true;
+
+/*
+// Try playing around with these (these are also in config.php)
+$mpdf->formUseZapD = false;
+$mpdf->formSubmitNoValueFields = true;
+
+$mpdf->formExportType = 'xfdf'; // 'html' or 'xfdf'
+$mpdf->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected,
+                                                       // this determines whether to select 1st option (as per browser)
+                                                       // - affects whether "required" attribute is relevant
+$mpdf->form_border_color = '0.0 0.820 0.0'; 
+$mpdf->form_background_color = '0.941 0.941 0.941';
+$mpdf->form_border_width = '1';
+$mpdf->form_border_style = 'S';
+
+$mpdf->form_radio_color = '0.0 0.820 0.0'; 
+$mpdf->form_radio_background_color = '0.941 0.5 0.5';
+$mpdf->form_button_border_color = '0.0 0.820 0.0'; 
+$mpdf->form_button_background_color = '0.941 0.941 0.941';
+$mpdf->form_button_border_width = '1';
+$mpdf->form_button_border_style = 'S';
+*/
+
+$mpdf->WriteHTML($html);
+
+//==============================================================
+// JAVASCRIPT FOR WHOLE DOCUMENT
+$mpdf->SetJS('
+var dialogTitle = "Enter details";
+var defaultAnswer = "";
+var reply = app.response("This is javascript set to run when the document opens. Enter value for first field", dialogTitle, defaultAnswer);
+if (reply != null) { 
+this.getField("inputfield").value = reply;
+}
+');
+//==============================================================
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php b/inc/3rdparty/libraries/mpdf/examples/example57_new_mPDF_v5-3_active_forms_b.php
new file mode 100644 (file)
index 0000000..0d65222
--- /dev/null
@@ -0,0 +1,234 @@
+<?php
+
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+//==============================================================
+
+$html = '
+<style>
+textarea {
+}
+input {
+}
+select {
+       font-family: arialunicodems
+}
+</style>
+<body>
+<h2>Active Forms</h2>
+
+<form action="http://127.0.0.1/MPDF1.com/common/mpdf/examples/formsubmit.php" method="post">
+<b>Input Text</b>
+<input type="text" size="90" name="inputfield" value="" title="The title attribute works like a tool-tip" /> 
+<br /><br />
+
+<b>Readonly</b>
+<input type="text" size="90" name="readonlyfield" value="Read-only field. The value will be exported on submit" title="The title does not do anything if the field is read-only" readonly="readonly" /> 
+<br /><br />
+
+<b>Disabled</b>
+<input type="text" size="90" name="disabledfield" value="Disabled field. The value will not be exported on submit" title="The title does not do anything if the field is disabled." disabled="disabled" /> 
+<br /><br />
+
+<b>Required</b>
+<input type="text" size="90" name="requiredfield" value="" title="This field must be entered before you can submit." required="required" /> 
+<br /><br />
+
+<b>Hidden</b>
+<input type="hidden" name="hiddenfield" value="value_of_hidden_field"> 
+<br /><br />
+
+<b>Input Password</b>
+<input type="password" size="40" name="password" value="mysecretpassword" title="This field is set to act as a password field." > 
+<br /><br />
+
+<b>Calculations</b>
+<input type="text" size="20" name="maths1" value="0" onChange="var a = this.getField(\'maths1\').value;
+var b = this.getField(\'maths2\').value;
+this.getField(\'maths3\').value = a + b;
+" /> + 
+<input type="text" size="20" name="maths2" value="0" onChange="var a = this.getField(\'maths1\').value;
+var b = this.getField(\'maths2\').value;
+this.getField(\'maths3\').value = a + b;
+" /> = 
+<input type="text" size="20" name="maths3" value="" readonly="readonly"/> 
+<br /><br />
+
+
+<b>Textarea</b>
+<textarea name="textareafield" spellcheck="true" rows="5" cols="80" wrap="virtual" title="Textarea tooltip">Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. Quisque viverra. Etiam id libero at magna pellentesque aliquet. Nulla sit amet ipsum id enim tempus dictum. </textarea>
+<br /><br />
+
+
+<b>First language</b>
+<select name="first_language" editable="editable">
+<option value="" >- Please select or type in -</option>
+<option value="Arabic" >&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;</option>
+<option value="Bulgarian" >&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080; &#1077;&#1079;&#1080;&#1082;</option>
+<option value="Chinese" >&#27721;&#35821;</option>
+<option value="Czech" >&#269;esky</option>
+<option value="English" >English</option>
+<option value="French" >Fran&#231;ais</option>
+<option value="Greek" >&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;</option>
+<option value="Japanese" >&#26085;&#26412;&#35486;</option>
+<option value="Latvian" >Latvie&#353;u valoda</option>
+<option value="Russian" >&#1056;&#1091;&#1089;&#1089;&#1082;&#1086;</option>
+<option value="Spanish" >Espa&#241;ol</option>
+<option value="Turkish" >T&#252;rk&#231;e</option>
+</select> 
+&nbsp;&nbsp;&nbsp;&nbsp; 
+
+You have selected: <input type="text" size="20" name="first_language_display" value="" readonly="readonly" onCalculate="
+var choice = this.getField(\'first_language\').value;
+this.getField(\'first_language_display\').value = choice;
+"/> 
+
+<br /><br />
+
+
+<div>
+<b>Spoken language(s)</b><br />
+<select size="6" multiple="multiple" name="spoken_languages">
+<option value="Arabic" >&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;</option>
+<option value="Bulgarian" >&#1073;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080; &#1077;&#1079;&#1080;&#1082;</option>
+<option value="Chinese" >&#27721;&#35821;</option>
+<option value="Czech" >&#269;esky</option>
+<option value="English" selected="selected">English</option>
+<option value="French" >Fran&#231;ais</option>
+<option value="Greek" >&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;</option>
+<option value="Japanese" >&#26085;&#26412;&#35486;</option>
+<option value="Latvian" >Latvie&#353;u valoda</option>
+<option value="Russian" >&#1056;&#1091;&#1089;&#1089;&#1082;&#1086;</option>
+<option value="Spanish" >Espa&#241;ol</option>
+<option value="Turkish" >T&#252;rk&#231;e</option>
+</select> 
+</div>
+<br /><br />
+
+
+
+<b>How many languages do you speak?</b> &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="1" checked="checked" > One &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="2" > Two &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="3" > Three &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="4" > Four &nbsp;&nbsp;&nbsp;&nbsp; 
+<input type="radio" name="num_languages" value="5" > Five + 
+
+<br /><br />
+
+
+<input type="checkbox" name="email" value="email_subscrbe" checked="checked" /> Please send me regular information by e-mail<br>
+<input type="checkbox" name="phone" value="phone-me" disabled="disabled" /> Please phone me (not available at present)<br>
+<input type="checkbox" name="subscribe" value="newsletter_subscribe" /> Please subscribe me to the Newsletter
+<br /><br />
+
+<br /><br />
+
+Click this button to see Javascript in action: 
+<input type="image" name="imageButton" value="imagesubmitted" src="goto.gif" title="Click to run javascript" onClick="
+var npass = this.getField(\'password\').value;
+app.alert(\'Value of password field is: \\\'\' + npass + \'\\\'\');
+var nButton = app.alert({
+cMsg: \'Do you want to change the input text field to: T\u00f6rkylempij\u00e4?\',
+cTitle: \'A message from A. C. Robat\',
+nIcon: 2, nType: 2
+});
+if ( nButton == 4 ) {
+this.getField(\'inputfield\').value = \'T\u00f6rkylempij\u00e4\';
+}
+" />
+
+<br /><br />
+
+<input type="submit" name="disabled_submit" value="Disabled" disabled="disabled" title="This Submit button is disabled" /> 
+
+<input type="reset" name="resetfield" value="Reset" />
+
+<input type="submit" name="submit" value="Submit" title="Click here to submit" /> 
+
+<input type="submit" name="submit_in_Turkish" value="Submit (T&#252;rk&#231;e)" title="Click here to submit in T&#252;rk&#231;e" /> 
+
+<input type="button" name="javascriptButton" value="Javascript Button" onClick="
+var npass = this.getField(\'password\').value;
+app.alert(\'Value of password field is: \\\'\' + npass + \'\\\'\');
+var nButton = app.alert({
+cMsg: \'Do you want to change the input text field to: T\u00f6rkylempij\u00e4?\',
+cTitle: \'A message from A. C. Robat\',
+nIcon: 2, nType: 2
+});
+if ( nButton == 4 ) {
+this.getField(\'inputfield\').value = \'T\u00f6rkylempij\u00e4\';
+}
+" />
+<br /><br />
+
+
+</form>
+';
+
+
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+
+//==============================================================
+$mpdf->useActiveForms = true;
+$mpdf->formUseZapD = false;
+
+/*
+// Try playing around with these (these are also in config.php)
+$mpdf->formUseZapD = false;
+$mpdf->formSubmitNoValueFields = true;
+
+$mpdf->formExportType = 'xfdf'; // 'html' or 'xfdf'
+$mpdf->formSelectDefaultOption = true; // for Select drop down box; if no option is explicitly maked as selected,
+                                                       // this determines whether to select 1st option (as per browser)
+                                                       // - affects whether "required" attribute is relevant
+$mpdf->form_border_color = '0.0 0.820 0.0'; 
+$mpdf->form_background_color = '0.941 0.941 0.941';
+$mpdf->form_border_width = '1';
+$mpdf->form_border_style = 'S';
+
+$mpdf->form_radio_color = '0.0 0.820 0.0'; 
+$mpdf->form_radio_background_color = '0.941 0.5 0.5';
+$mpdf->form_button_border_color = '0.0 0.820 0.0'; 
+$mpdf->form_button_background_color = '0.941 0.941 0.941';
+$mpdf->form_button_border_width = '1';
+$mpdf->form_button_border_style = 'S';
+*/
+
+$mpdf->WriteHTML($html);
+
+//==============================================================
+// JAVASCRIPT FOR WHOLE DOCUMENT
+$mpdf->SetJS('
+var dialogTitle = "Enter details";
+var defaultAnswer = "";
+var reply = app.response("This is javascript set to run when the document opens. Enter value for first field", dialogTitle, defaultAnswer);
+if (reply != null) { 
+this.getField("inputfield").value = reply;
+}
+');
+//==============================================================
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php b/inc/3rdparty/libraries/mpdf/examples/example58_new_mPDF_v5-4_features.php
new file mode 100644 (file)
index 0000000..6772fa9
--- /dev/null
@@ -0,0 +1,547 @@
+<?php
+
+ini_set("memory_limit","64M");
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+
+//==============================================================
+
+$html = '
+<style>
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       box-shadow: 0.3em 0.3em #888888;
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+h4 {
+       font-weight: bold;
+       margin-top: 1em;
+       margin-bottom: 0.3em;
+       margin-top: 0;
+}
+div.text {
+       padding:0.8em; 
+       margin-bottom: 0.7em;
+}
+p { margin: 0.25em 0; }
+.code {
+       font-family: monospace;
+       font-size: 9pt;
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+       border:0.2mm solid #000088; 
+       box-shadow: 0.3em 0.3em #888888;
+}
+table {
+       overflow: visible;
+       empty-cells: hide;
+       border:1px solid #000000;
+       font-family: sans-serif;
+       font-size: 10pt;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+}
+td, th {
+       border:1px solid #000000;
+       text-align: left;
+       font-weight: normal;
+}
+td.markedcell {
+       text-decoration: line-through;
+       color: #CC0000;
+}
+td.underlinedcell {
+       text-decoration: underline;
+       color: #CC0000;
+}
+td.rotatedcell {
+       text-decoration: line-through;
+       color: #CC0000;
+       text-rotate: 45;
+}
+td.cost { text-align: right; }
+caption.tablecaption {
+       font-family: sans-serif;
+       font-weight: bold;
+       border: none;
+       caption-side: top;
+       margin-bottom: 0;
+       text-align: center;
+}
+u.doubleu {
+       text-decoration: none;
+       border-bottom: 3px double #000088;
+}
+a.reddashed {
+       text-decoration: none;
+       border: 1px dashed #880000;
+}
+.shadowtitle { 
+       height: 8mm; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.8em; 
+       padding-left: 3em;
+       font-family:sans;
+       font-size: 26pt; 
+       font-weight: bold;
+       border: 0.2mm solid white;
+       border-radius: 0.2em;
+       box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9);
+       color: #AAAACC;
+       text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white;
+}
+h3 { 
+       margin: 3em 0 2em -15mm; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.5em; 
+       padding-left: 3em;
+       width: 50%;
+       font-family:sans;
+       font-size: 16pt; 
+       font-weight: bold;
+       border-left: none;
+       border-radius: 0 2em 2em 0;
+       box-shadow: 0 0 2em 0.5em rgba(255,0,0,1);
+       text-shadow: 0.05em 0.04em rgba(127,127,127,0.5);
+}
+.css {
+       font-family: arial;
+       font-style: italic;
+       color: #000088;
+}
+table.zebra tbody tr:nth-child(2n+1) td { background-color: rgba(255,255,127,0.6); }
+table.zebra tbody tr:nth-child(2n+1) th { background-color: rgba(255,255,127,0.6); }
+table.zebra thead tr { background-color: #FFBBFF; }
+table.zebra tfoot tr { background-color: #BBFFFF; }
+
+
+</style>
+<body>
+
+
+<div class="shadowtitle">New Features in mPDF v5.4</div>
+
+
+<h3>Bookmark styles<bookmark content="Bookmark styles" level="0" /></h3>
+<div>
+<p>Bookmarks can be styled by adding code as below to your script. You can define a colour (array of RGB) and/or a font-style (B, I, or BI) for each level (starting at 0). Results may depend on the PDF Reader you are using.</p>
+<p class="code">
+$this->bookmarkStyles = array(<br />
+ &nbsp; &nbsp; &nbsp; 0 => array(\'color\'=> array(0,64,128), \'style\'=>\'B\'),<br />
+ &nbsp; &nbsp; &nbsp; 1 => array(\'color\'=> array(128,0,0), \'style\'=>\'\'),<br />
+ &nbsp; &nbsp; &nbsp; 2 => array(\'color\'=> array(0,128,0), \'style\'=>\'I\'),<br />
+);
+</p>
+</div>
+
+<h3>Embedded SVG code<bookmark content="Embedded SVG code" level="0" /></h3>
+<p>SVG Images can be embedded in your HTML code. This is formally part of the XHTML specification and is supported by IE9+ and most other browsers.</p>
+<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 400 200" width="400" height="200"> 
+  <circle cx="130" cy="100" r="80" stroke="black" stroke-width="1" fill="red" />
+  <circle cx="200" cy="100" r="80" stroke="black" stroke-width="1" fill="blue" />
+</svg>
+<p class="code">
+&lt;svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 200 200" width="200" height="200"&gt; <br />
+&nbsp;  &lt;circle cx="100" cy="50" r="40" stroke="black" stroke-width="1" fill="red" /&gt;<br />
+&nbsp;  &lt;circle cx="130" cy="50" r="40" stroke="black" stroke-width="1" fill="blue" /&gt;<br />
+&lt;/svg&gt;
+</p>
+
+
+<h3>Improved CSS support<bookmark content="Improved CSS support" level="0" /></h3>
+<div class="gradient text">
+<p><span class="css">border-radius</span> is now supported on fixed/absolute-positioned block elements.</p>
+<p><span class="css">visibility</span> can be set on any block-style element e.g. DIV,P or images IMG as: visible|hidden|printonly|screenonly</p>
+<p><span class="css">background-color</span> now supports rgba() and cmyka() alpha transparency formats in tables.</p>
+<p>Color, underline and strike-through are now supported in table cells, including with rotated text (see example below of spread table)</p>
+<p><span class="css">page-break-after: left|right|always</span> is supported on all block-style elements and tables</p>
+<p><span class="css">text-transform: capitalize|uppercase|lowercase</span> is supported in table cells</p>
+</div>
+
+
+<div class="gradient text">
+<h4>Zebra stripes in Tables<bookmark content="Zebra stripes" level="1" /></h4>
+<div>
+<p><span class="css">:nth-child()</span> selector can be used in tables (on TR, TD or TH) to stripe rows or columns. Both the <i>a</i>n+<i>b</i> and odd/even forms are supported e.g.</p>
+
+<p class="code">
+tr:nth-child(2n+1) { background-color: rgba(255,255,127,0.6); }  <i>or</i><br />
+tr:nth-child(odd) { background-color: rgba(255,255,127,0.6); }
+</p>
+
+<table class="zebra" align="center">
+<tbody>
+<tr>
+<th>Row 1</th>
+<td>This is data</td>
+<td class="cost">167.00</td>
+</tr>
+<tr>
+<th>Row 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td class="cost">
+<p>444.53</p>
+</td>
+</tr>
+<tr>
+<th>
+<p>Row 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td class="cost">14.00</td>
+</tr>
+<tr>
+<td>
+<p>Row 4</p>
+</td>
+<td>This is data</td>
+<td class="cost">
+<p>0.88</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td class="cost">144.00</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td class="cost">8089.00</td>
+</tr>
+</tbody></table>
+
+<p><b>Note:</b> mPDF does NOT correctly apply specificity to all CSS. The following stylesheet:</p>
+<p class="code">
+table.zebra tbody tr:nth-child(2n+1) td { background-color: yellow; }<br />
+table.zebra tbody td:nth-child(odd) { background-color: blue; }
+</p>
+<p>should make every odd row yellow, and every odd column blue, but with the row/yellow overriding the column/blue.
+In mPDF the td:nth-child(odd) trumps the plain td, so the column colour wins out. You can force the effect you want by using:</p>
+<p class="code">
+table.zebra tbody tr:nth-child(2n+1) td:nth-child(1n+0) { background-color: yellow; }
+</p>
+<p>The :nth-child(1n+0) selector just selects every td cell.</p>
+
+</div>
+</div>
+
+
+<div class="gradient text">
+<p><span class="css">border</span> can now be defined on in-line elements eg SPAN</p>
+<ul><li style="font-family: arial;">Cum sociis natoque <u class="doubleu">penatibus</u> et <a class="reddashed" href="#">magnis dis parturient</a> montes</li></ul>
+<p><b>Note:</b> Remember that in mPDF, inside table cells, properties set on block elements are set when possible as in-line properties - so a P element inside a table with border set, will appear with a border around the text line as though it had been set on SPAN </p>
+</div>
+
+
+
+
+<div class="gradient text">
+<h4>Shadows<bookmark content="Shadows" level="1" /></h4>
+<p><span class="css">box-shadow</span> can be defined on any block-level element (P, DIV etc). It follows the CSS3 recommendation, but <i>inset</i> is not supported.</p>
+<p><span class="css">text-shadow</span> can be defined on any element. It follows the CSS3 recommendation, but <i>blur</i> is not supported.</p>
+<p class="code">
+&lt;span style="text-shadow: 0.03em 0.03em #666, -0.015em -0.015em white;"&gt;<br />
+&lt;div style="box-shadow: 0.3em 0.3em #888888;"&gt;
+</p>
+</div>
+
+
+<h3>Other Enhancements<bookmark content="Other Enhancements" level="0" /></h3>
+
+<h4>Column Totals (Tables)<bookmark content="Column totals" level="1" /></h4>
+<p>{colsum} placed in the footer of a table will automatically display the sum of that column. If the table breaks across more than one page, the sum of the values on that page will be displayed. A number following the colsum e.g. {colsum2} will force that number of decimal places to be displayed.</p>
+
+<table class="zebra" align="center">
+<caption class="tablecaption" align="bottom">Table caption goes here</caption>
+<thead>
+<tr>
+<th>Header Row</th>
+<td>Header Row</td>
+<td>Header Row</td>
+</tr>
+</thead>
+<tfoot>
+<tr>
+<th></th>
+<td>Column total: (using colsum2 in {})</td>
+<td class="cost"><b>{colsum2}</b></td>
+</tr>
+</tfoot>
+<tbody>
+<tr>
+<th>Row 1</th>
+<td>This is data</td>
+<td class="cost">167.00</td>
+</tr>
+<tr>
+<th>Row 2</th>
+<td>
+<p>This is data p</p>
+</td>
+<td class="cost">
+<p>444.53</p>
+</td>
+</tr>
+<tr>
+<th>
+<p>Row 3</p>
+</th>
+<td>
+<p>This is long data</p>
+</td>
+<td class="cost">14.00</td>
+</tr>
+<tr>
+<td>
+<p>Row 4</p>
+</td>
+<td>This is data</td>
+<td class="cost">
+<p>0.88</p>
+</td>
+</tr>
+<tr>
+<td>Row 5</td>
+<td>Also data</td>
+<td class="cost">144.00</td>
+</tr>
+<tr>
+<td>Row 6</td>
+<td>Also data</td>
+<td class="cost">8089.00</td>
+</tr>
+<tr>
+<td>Row 7</td>
+<td>Also data</td>
+<td class="cost">3.00</td>
+</tr>
+<tr>
+<td>Row 8</td>
+<td>Also data</td>
+<td class="cost">23.00</td>
+</tr>
+</tbody></table>
+<br />
+
+<h4>Table <span style="font-variant: small-caps">caption</span><bookmark content="Table caption" level="1" /></h4>
+<p>The caption element for tables is partially supported (see example above).</p>
+<p class="code">
+&lt;caption align="top|bottom" style="caption-side: top|bottom"&gt;
+</p>
+<ul>
+<li>The caption must come immediately after &lt;table&gt;.</li>
+<li>The CSS <span class="css">caption-side</span> or HTML <span class="css">align</span> attribute of top|bottom supported</li>
+<li>Left or right placement are not supported.</li>
+<li>The caption is handled as a separate block element brought outside the table, so:
+<ul>
+       <li>CSS will not cascade correctly from the table</li>
+       <li>the width of the caption block is that of page or of the block element containing the table</li>
+       <li>text alignment will be to the page-width not the table width</li>
+       <li>if table page-break-after: always, the caption will follow the pagebreak</li>
+</ul></li>
+</ul>
+
+
+<h4>Core fonts in non-core font document<bookmark content="Core fonts" level="1" /></h4>
+
+<p>Core fonts, which do not need to be embedded in a PDF, can now be included in a document which uses non-core fonts. The pseudo font-family names: <span style="font-family: chelvetica">chelvetica</span>, <span style="font-family: ctimes">ctimes</span> and <span style="font-family: ccourier">ccourier</span> should be used.</p>
+<p class="code">
+&lt;div style="font-family: chelvetica"&gt;
+</p>
+<p>NB You could force mPDF to always use core fonts when Arial/Helvetica/Courier are specified, by editing $this->fonttrans in config_fonts.php:</p>
+<p class="code">
+$this->fonttrans = array(<br />
+       \'arial\' => \'chelvetica\',<br />
+       \'helvetica\' => \'chelvetica\',<br />
+       \'timesnewroman\' => \'ctimes\',<br />
+       \'times\' => \'ctimes\',<br />
+       \'couriernew\' => \'ccourier\',<br />
+       \'courier\' => \'ccourier\',<br />
+...
+</p>
+<br />
+
+<h4>Javascript in Forms<bookmark content="Javascript in Forms" level="1" /></h4>
+
+<p>Javascript used in (active) forms has been altered to reflect the Adobe Acrobat specification for Javascript in PDF documents.</p>
+<p>textarea and input (text-types) now accept javascript as: onKeystroke, onValidate, onCalculate and onFormat. onChange is depracated but is not ignored; it works as though for onCalculate. (PS Select still accepts onChange)</p>
+
+
+<br />
+
+
+
+<h4>Overlapping Rows in Tables<bookmark content="Overlapping Table Rows" level="1" /></h4>
+<p> Support for overlapping rowspans in tables has been improved (although probably not foolproof!)</p>
+<table style="border-collapse: separate; border-spacing: 3.5mm;">
+<tr>
+<td style="width: 30mm; height: 30mm; background-color: rgb(213,226,253)">&nbsp;</td>
+<td style="width: 30mm; height: 30mm; background-color: rgb(75,155,215)">&nbsp;</td>
+<td rowspan="2" style="width: 30mm; height: 63.5mm; background-color: rgb(183,225,253)">&nbsp;</td>
+</tr>
+<tr>
+<td colspan="2" rowspan="2" style="width: 63.5mm; height: 63.5mm; background-color: rgb(183,225,253)">&nbsp;</td>
+</tr>
+<tr>
+<td style="width: 30mm; height: 30mm; background-color: rgb(75,155,215)">&nbsp;</td>
+</tr>
+</table>
+
+<br />
+
+
+
+<h3>Circular Text<bookmark content="Circular Text" level="0" /></h3>
+<p>Circular Text can be included in a PDF document as a custom HTML tag (or a function)</p>
+<ul>
+<li>top-text and/or bottom-text can be specified</li>
+<li>Radius (r) and font-size (using CSS) are user-defined</li>
+<li>Width and height are calculated from radius and font-size</li>
+<li>Other CSS styles supported on Circular Text: border, margin, padding, color, background-color, font-family, font-size, font-weight, font-style, display, visibility, and opacity</li>
+<li>space-width should be specified as an integer defining the letter-spacing as a percentage of normal (default 120)</li>
+<li>char-width should be specified as an integer defining the width of each character as a percentage of normal (default 100)</li>
+<li>Circular Text is displayed as though an in-line element</li>
+</ul>
+<p>NB If $mpdf->useKerning is true then automatic kerning will be used on Circular Text.</p>
+
+<p class="code">
+&lt;textcircle r="30mm" top-text="Circular Text Circular Text" style="color: blue; font-size: 34pt; font-style: italic" /&gt;<br /><br />
+&lt;textcircle r="30mm" space-width="120" char-width="150" top-text="&amp;bull; Circular Text &amp;bull;" bottom-text="Circular Text" style="background-color: #FFAAAA; border:1px solid red; padding: 0.3em; margin: 0.3em; color: #000000; font-size: 21pt; font-weight:bold; font-family: Arial" /&gt;
+</p>
+
+<textcircle r="30mm" top-text="Circular Text Circular Text" style="color: blue; font-size: 34pt; font-style: italic" />
+
+<textcircle r="30mm" space-width="120" char-width="150" top-text="&bull; Circular Text &bull;" bottom-text="Circular Text" style="background-color: #FFAAAA; border:1px solid red; padding: 0.3em; margin: 0.3em; color: #000000; font-size: 21pt; font-weight:bold; font-family: Arial" />
+
+
+
+
+
+<h3 style="page-break-before: left;">Spread tables<bookmark content="Spread Tables" level="0" /></h3>
+<div class="gradient text">
+Setting the CSS property "overflow: visible" on a table now has the effect of cancelling resizing, and allowing tables to split columns across multiple pages.
+The maximum width for a column (or group of columns set by colspan) is the page width. It is recommended to specify absolute values of width on each column (not percentages).
+</div>
+<br />
+<input type="button" name="javascriptButton" value="Show 2 pages" onClick="TwoPages()" />
+<input type="button" name="javascriptButton2" value="Show 1 page" onClick="OnePage()" />
+
+
+<br /><br />
+
+<table cellPadding="9" style="font-size: 16pt;">
+<caption class="tablecaption">Periodic Table (table caption)</caption>
+<thead>
+<tr><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th><th>14</th><th>15</th><th>16</th><th>17</th><th>18</th></tr></thead>
+<tbody>
+<tr>
+<td>H </td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
+<td></td><td></td><td></td><td></td><td>He </td>
+</tr>
+<tr>
+<td>Li </td><td>Be </td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
+<td>B </td><td>C </td><td>N </td><td>O </td><td>F </td><td>Ne </td>
+</tr>
+<tr>
+<td>Na </td><td>Mg </td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
+<td>Al </td><td>Si </td><td>P </td><td>S </td><td>Cl </td><td>Ar </td>
+</tr>
+<tr>
+<td>K </td><td>Ca </td><td>Sc </td><td>Ti </td><td>V </td><td class="markedcell">Cr </td><td>Mn </td><td>Fe </td><td>Co </td><td>Ni </td>
+<td>Cu </td><td>Zn </td><td>Ga </td><td>Ge </td><td>As </td><td>Se </td><td>Br </td><td>Kr </td>
+</tr>
+<tr>
+<td>Rb </td><td>Sr </td><td>Y </td><td>Zr </td><td>Nb </td><td>Mo </td><td>Tc </td><td class="underlinedcell">Ru </td><td>Rh </td>
+<td>Pd </td><td>Ag </td><td>Cd </td><td>In </td><td>Sn </td><td>Sb </td><td>Te </td><td>I </td><td>Xe </td>
+</tr>
+<tr>
+<td>Cs </td><td>Ba </td><td class="rotatedcell">Lu </td><td>Hf </td><td>Ta </td><td>W </td><td>Re </td><td>Os </td><td>Ir </td><td>Pt </td>
+<td>Au </td><td>Hg </td><td>Tl </td><td>Pb </td><td>Bi </td><td>Po </td><td>At </td><td>Rn </td>
+</tr>
+<tr>
+<td>Fr </td><td>Ra </td><td> </td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>
+<td></td><td></td><td></td><td></td><td></td>
+</tr>
+</tbody></table>
+
+<br /><br />
+
+<div class="gradient text">
+<h4>Limitations of Spread tables<bookmark content="Limitations" level="1" /></h4>
+Spread tables cannot be used with: keep-headings-with-table ($mpdf->use_kwt), table rotate, table page-break-inside:avoid, columns,
+CJK (chinese-japanese-korean) or RTL (right-to-left) languages. 
+They will also cause problems with $mpdf->forcePortraitHeaders or $mpdf->forcePortraitMargins.<br />
+Warning: If a table row is too tall to fit on a page, mPDF will crash with an error message.<br />
+If the width settings within the table cause conflicts, it will override some of these settings.
+</div>
+<br />
+
+
+';
+
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+
+//==============================================================
+$mpdf->useActiveForms = true;
+
+$mpdf->bookmarkStyles = array(
+       0 => array('color'=> array(0,64,128), 'style'=>'B'),
+       1 => array('color'=> array(128,0,0), 'style'=>''),
+       2 => array('color'=> array(0,128,0), 'style'=>'I'),
+);
+
+$mpdf->useKerning=true;        // set this to improve appearance of Circular text
+                               // must be set before the font is first loaded
+
+$mpdf->WriteHTML($html);
+
+// JAVASCRIPT FOR WHOLE DOCUMENT
+$mpdf->SetJS('
+function TwoPages() {
+       this.layout="TwoColumnRight";
+       this.zoomType = zoomtype.fitW;
+}
+function OnePage() {
+       this.layout="SinglePage";
+       this.zoom = 100;
+}
+');
+
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php b/inc/3rdparty/libraries/mpdf/examples/example59_new_mPDF_v5-6_features.php
new file mode 100644 (file)
index 0000000..fc908d5
--- /dev/null
@@ -0,0 +1,387 @@
+<?php
+
+ini_set("memory_limit","64M");
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+
+//==============================================================
+
+$html = '
+<style>
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       box-shadow: 0.3em 0.3em #888888;
+}
+.rounded {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       border-radius: 2mm;
+       background-clip: border-box;
+}
+h4 {
+       font-weight: bold;
+       margin-top: 1em;
+       margin-bottom: 0.3em;
+       margin-top: 0;
+}
+div.text {
+       padding:0.8em; 
+       margin-bottom: 0.7em;
+}
+p { margin: 0.25em 0; }
+.code {
+       font-family: monospace;
+       font-size: 9pt;
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+       border:0.2mm solid #000088; 
+       box-shadow: 0.3em 0.3em #888888;
+}
+table {
+       border:1px solid #000000;
+       font-family: sans-serif;
+       font-size: 10pt;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+}
+td, th {
+       border:1px solid #000000;
+       text-align: left;
+       font-weight: normal;
+}
+.shadowtitle { 
+       height: 8mm; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.8em; 
+       padding-left: 3em;
+       font-family:sans;
+       font-size: 26pt; 
+       font-weight: bold;
+       border: 0.2mm solid white;
+       border-radius: 0.2em;
+       box-shadow: 0 0 2em 0.5em rgba(0,0,255,0.9);
+       color: #AAAACC;
+       text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white;
+}
+h3 { 
+       margin: 3em 0 2em -15mm; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.5em; 
+       padding-left: 3em;
+       width: 50%;
+       font-family:sans;
+       font-size: 16pt; 
+       font-weight: bold;
+       border-left: none;
+       border-radius: 0 2em 2em 0;
+       box-shadow: 0 0 2em 0.5em rgba(255,0,0,1);
+       text-shadow: 0.05em 0.04em rgba(127,127,127,0.5);
+}
+.css {
+       font-family: arial;
+       font-style: italic;
+       color: #000088;
+}
+table.pop {
+       border-collapse: collapse;
+}
+table.pop td {
+       font-family: arial;
+       font-size: 10px;
+       border: 1px solid #888888;
+}
+meter.pop  {
+       margin: 3px;
+}
+fieldset { border: 1px solid #000000; border-radius: 5px; padding: 10px; }
+div.folder { 
+       background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center;
+       padding: 5px 0 5px 25px;
+       border: 1px solid #000000;
+}
+</style>
+<body>
+
+
+<div class="shadowtitle">New Features in mPDF v5.6</div>
+
+<h3>HTML5 tags</h3>
+<div class="gradient text">
+<p>New tags introduced in HTML5 now have basic support in mPDF, and will thus support CSS style references.</p>
+<p>The following are treated as block elements similar to &lt;div&gt;:</p>
+<p class="code">&lt;article&gt; &lt;aside&gt; &lt;details&gt; &lt;figure&gt; &lt;figcaption&gt; &lt;footer&gt; &lt;header&gt; &lt;hgroup&gt; &lt;nav&gt; &lt;section&gt; &lt;summary&gt; </p>
+<p>The following are treated as in-line elements:</p>
+<p class="code">&lt;time&gt; &lt;mark&gt;</p>
+<p>Mark is set by default to highlight in yellow in config.php using $defaultCSS e.g. <mark>mark</mark></p>
+<p>Progress and meter are discussed below:</p>
+</div>
+
+<h3>&lt;progress&gt;</h3>
+<div class="gradient text">
+<p>Progress: accepts the attributes value and max. A progress element without a value is called an indeterminate progress bar.
+Text between the opening and closing tags is not displayed.</p>
+<p>CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity.
+HTML attributes width and height are supported, although not officially part of the spec.</p>
+<p>Example:</p>
+<p class="code">&lt;progress value="5" max="10"&gt;50%&lt;/progress&gt;</p>
+
+       <ul class="compact">
+            <li>
+              <label>Indeterminate</label>
+              <progress max="100"></progress>
+            </li>
+            <li>
+              <label>Progress: 0%</label>
+              <progress max="10" value="0"></progress>
+            </li>
+            <li>
+              <label>Progress: 100%</label>
+              <progress max="3254" value="3254"></progress>
+            </li>
+            <li>
+              <label>Progress: 57%</label>
+              <progress max="0.7" value="0.4"></progress>
+            </li>
+          </ul>
+</div>
+
+<h3>&lt;meter&gt;</h3>
+<div class="gradient text">
+<p>Meter: accepts the attributes min, max, value, optimum, low, and high.
+Text between the opening and closing tags is not displayed.</p>
+<p>CSS styles properties can be applied: display, visibility, margin, padding, border, vertical-align, width, height and opacity.
+HTML attributes width and height are supported, although not officially part of the spec.</p>
+<p>Example:</p>
+<p class="code">&lt;meter value="5" max="10" min="1" low="2" high="8" optimum="5.6"&gt;5&lt;/meter&gt;</p>
+
+
+
+          <ul class="compact">
+            <li>
+              <label>Meter: full</label>
+              <meter value="1"></meter>
+            </li>
+            <li>
+              <label>Preferred usage</label>
+              <meter min="1024" max="10240" low="2048" high="8192" value="1824" optimum="1024"></meter>
+            </li>
+            <li>
+              <label>Too much traffic</label>
+              <meter min="1024" max="10240" low="2048" high="8192" value="6216" optimum="1024"></meter>
+            </li>
+            <li>
+              <label>Much too much traffic</label>
+              <meter min="1024" max="10240" low="2048" high="8192" value="9216" optimum="1024"></meter>
+            </li>
+          </ul>
+</div>
+
+<div class="gradient text">
+<h4>Custom appearances for &lt;meter&gt; and &lt;progress&gt;</h4>
+<p>Meter (and to a lesser extent progress) can be used with custom appearances e.g. by using optimum to display the average, and low/high to indicate 90th centiles</p>
+
+<p>Custom appearances can be written by editing the script in classes/meter.php  - Use a custom attribute of type="anyname" which is passed to the class as a variable e.g.</p>
+<p class="code">&lt;meter type="2" value="612.7" optimum="580.4" min="517.0 " max="642.7" low="542" high="600"&gt;612.7&lt;/meter&gt;</p>
+</div>
+
+
+<table class="pop">
+<tbody>
+<tr>
+<td><p><b>Domain</b></p></td>
+<td><p><b>Indicator</b></p></td>
+<td><p><b>LHB</b></p><p><b>number</b></p></td>
+<td><p><b>LHB</b></p><p><b>Indicator</b></p>
+<p><b>value</b></p>
+</td>
+<td><p><b>Wales</b></p><p><b>average</b></p>
+</td>
+<td><p><b>Wales range</b></p></td>
+<td><p><b>Comparison</b></p></td>
+</tr>
+
+<tr>
+<td rowspan="4"><p><b>Deaths</b></p></td>
+<td><p>Death Rates per 100,000 population</p></td>
+<td><p>3046</p></td>
+<td><p><b>612.7</b><b></b></p></td>
+<td><p>580.4</p></td>
+<td><p>517.0 - 642.7</p></td>
+<td><meter class="pop" type="2" value="612.7" optimum="580.4" min="517.0 " max="642.7" low="542" high="600">612.7</meter></td>
+</tr>
+
+<tr>
+<td><p>Death Rates per 100,000 from cancer</p></td>
+<td><p>789</p></td>
+<td><p><b>178.2</b><b></b></p></td>
+<td><p>172.7</p></td>
+<td><p>159.5 - 182.2</p></td>
+<td><meter class="pop" type="2" value="178.2" optimum="172.7" min="159.5 " max="182.2" low="162" high="180">178.2</meter></td>
+</tr>
+
+<tr>
+<td><p>Death Rates per 100,000 from respiratory disease</p></td>
+<td><p>505</p></td>
+<td><p><b>60.5</b><b></b></p></td>
+<td><p>72.11</p></td>
+<td><p>54.41 - 95.5</p></td>
+<td><meter class="pop" type="2" value="60.5" optimum="72.11" min="54.41 " max="95.5" low="68" high="80">60.5</meter></td>
+</tr>
+
+<tr>
+<td><p>Death Rates per 100,000 from cardiovascular disease</p></td>
+<td><p>913</p></td>
+<td><p><b>178.2</b><b></b></p></td>
+<td><p>165.0</p></td>
+<td><p>151.8 - 179.9</p></td>
+<td><meter class="pop" type="2" value="160.2" optimum="165" min="151.8 " max="179.9" low="158" high="170">160.2</meter></td>
+</tr>
+
+</tbody>
+</table>
+
+
+<h3>Fieldset and Legend</h3>
+<form>
+  <fieldset>
+  <legend>Fieldset and legend</legend>
+<p>Support for fieldset and legend was introduced in mPDF v5.5. Consider it experimental!</p>
+    <label for="name">Username:</label>
+    <input type="text" name="name" id="name" />
+    <br />
+    <label for="mail">E-mail:</label>
+    <input type="text" name="mail" id="mail" />
+  </fieldset>
+</form>
+
+
+<h3>CSS styles</h3>
+<div class="gradient text">
+<h4></h4>
+<p><span class="css">min-height</span>, <span class="css">min-width</span>, <span class="css">max-height</span> and <span class="css">max-width</span> are now supported in CSS style sheets for &lt;img&gt; (only).</p>
+<p><span class="css">background: url(data:image/gif;base64,...)</span> is now supported in CSS style sheets (gif, png and jpeg).</p>
+</div>
+
+<div class="folder">This &lt;div&gt; has the folder icon set as an embedded image in the CSS</div>
+<p class="code">div.folder { 
+       background: url(data:image/gif;base64,R0lGODlhEAAOALMAAOazToeHh0tLS/7LZv/0jvb29t/f3//Ub//ge8WSLf/rhf/3kdbW1mxsbP//mf///yH5BAAAAAAALAAAAAAQAA4AAARe8L1Ekyky67QZ1hLnjM5UUde0ECwLJoExKcppV0aCcGCmTIHEIUEqjgaORCMxIC6e0CcguWw6aFjsVMkkIr7g77ZKPJjPZqIyd7sJAgVGoEGv2xsBxqNgYPj/gAwXEQA7) no-repeat 4px center;
+       padding: 5px 0 5px 25px;
+       border: 1px solid #000000;
+}
+</p>
+
+
+
+<h3>Arabic text</h3>
+
+
+
+<br /><br />
+
+<div class="gradient text">
+
+<p>The script handling Arabic text (RTL) was rewritten in mPDF 5.5 with improved support for Pashto/Sindhi/Urdu/Kurdish, especially for joining characters and added new presentation forms.</p>
+<p>Some characters in Pashto/Sindhi/Urdu/Kurdish do not have Unicode values for the final/initial/medial forms of the characters. However, some fonts include glyphs for these characters "un-mapped" to Unicode (including XB Zar and XB Riyaz, which are bundled with mPDF).</p>
+<p>By editing config_fonts.php and adding:</p> 
+<p class="code">
+       \'unAGlyphs\' => true,
+</p>
+<p>to appropriate fonts, this will force mPDF to use unmapped glyphs. It requires the font file to include a Format 2.0 POST table which references the glyphs by name as e.g. uni067C.med or uni067C.medi</p>
+<p>XB Riyaz, XB Zar, Arabic Typesetting (MS), Arial (MS) all contain this table. NB If you want to know if a font file is suitable, you can open a .ttf file in a text editor and search for "uni067C.med" - if it exists, it may work!</p>
+<p>Using "unAGlyphs" forces subsetting of fonts, and will not work with SIP/SMP fonts (using characters beyond the Unicode BMP Plane).</p>
+<p>mPDF maps these characters to part of the Private Use Area allocated by Unicode U+F500-F7FF. This could interfere with correct use
+if the font already utilises these codes (unlikely).</p>
+</div>
+
+<pagebreak />
+<p>Using Arial MS font:</p>
+';
+//==============================================================
+// Test for all Arabic characters which may need joining
+//==============================================================
+$mpdf->cacheTables = true;
+$html .='
+<style>
+.script-arabic { font-family: arial; font-size: 22pt; direction: rtl; padding: 0.1em 0.5em; text-align: center; }
+.joined { color: #888888; }
+</style>
+<div dir="ltr">
+';
+
+
+$ranges = array(0=>array(0x0621, 0x063a), 1=>array(0x0640, 0x064a), 2=>array(0x0671, 0x0672), 3=>array(0x0674, 0x06d3));
+
+foreach($ranges AS $r) {
+       $html .= '<table border="1" style="border-collapse: collapse">';
+       $html .= '<thead><tr>';
+       $html .= '<td></td>';
+       $html .= '<td style="text-align:center; padding: 0 0.5em;">Isolated</td>';
+       $html .= '<td></td>';
+       $html .= '<td style="text-align:center; padding: 0 0.5em;">Final</td>';
+       $html .= '<td style="text-align:center; padding: 0 0.5em;">Medial</td>';
+       $html .= '<td style="text-align:center; padding: 0 0.5em;">Initial</td>';
+       $html .= '<td></td>';
+       $html .= '</tr></thead><tbody>';
+       for($n=$r[0];$n<=$r[1];$n++) {
+
+               $html .= '<tr>';
+               $html .= '<td>U+0'.strtoupper(dechex($n)) .'</td>';
+
+               $html .= '<td class="script-arabic">&#x0'.dechex($n) .';</td>';
+               $html .= '<td class="script-arabic joined">&#x626;&#x0'.dechex($n) .';</td>';
+               $html .= '<td class="script-arabic">&#x640;&#x0'.dechex($n) .';</td>';
+               $html .= '<td class="script-arabic">&#x640;&#x0'.dechex($n) .';&#x640;</td>';
+               $html .= '<td class="script-arabic">&#x0'.dechex($n) .';&#x640;</td>';
+               $html .= '<td class="script-arabic joined">&#x0'.dechex($n) .';&#x647;</td>';
+
+               $html .= '</tr>';
+       }
+       $html .='</tbody></table>';
+$html .='<br />';
+}
+
+
+
+$html .='</div>';
+//==============================================================
+
+$html .='
+<br />
+
+
+';
+
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+
+//==============================================================
+
+$mpdf->WriteHTML($html);
+
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php b/inc/3rdparty/libraries/mpdf/examples/example60_new_mPDF_v5-7_features.php
new file mode 100644 (file)
index 0000000..658dc9a
--- /dev/null
@@ -0,0 +1,595 @@
+<?php
+
+ini_set("memory_limit","64M");
+
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+
+
+//==============================================================
+
+$html = '
+<style>
+.gradient {
+       border:0.1mm solid #220044; 
+       background-color: #f0f2ff;
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       box-shadow: 0.3em 0.3em #888888;
+}
+h4 {
+       font-weight: bold;
+       margin-top: 1em;
+       margin-bottom: 0.3em;
+       margin-top: 0;
+}
+div.text {
+       padding:0.8em; 
+       margin-bottom: 0.7em;
+}
+p { margin: 0.25em 0; }
+p.code {
+       background-color: #d5d5d5; 
+       margin: 1em 1cm;
+       padding: 0 0.3cm;
+       border:0.2mm solid #000088; 
+       box-shadow: 0.3em 0.3em #888888;
+}
+.code {
+       font-family: monospace;
+       font-size: 9pt;
+}
+.shadowtitle { 
+       height: 8mm; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.8em; 
+       padding-left: 3em;
+       font-family:sans;
+       font-size: 26pt; 
+       font-weight: bold;
+       border: 0.2mm solid white;
+       border-radius: 0.2em;
+       box-shadow: 0 0 1em 0.5em rgba(0,0,255,0.5);
+       color: #AAAACC;
+       text-shadow: 0.03em 0.03em #666, 0.05em 0.05em rgba(127,127,127,0.5), -0.015em -0.015em white;
+}
+h3 { 
+       margin: 3em 0 2em -15mm; 
+       background-color: #EEDDFF; 
+       background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;  
+       padding: 0.5em; 
+       padding-left: 3em;
+       width: 50%;
+       font-family:sans;
+       font-size: 16pt; 
+       font-weight: bold;
+       border-left: none;
+       border-radius: 0 2em 2em 0;
+       box-shadow: 0 0 2em 0.5em rgba(255,0,0,1);
+       text-shadow: 0.05em 0.04em rgba(127,127,127,0.5);
+}
+.css {
+       font-family: arial;
+       font-style: italic;
+       color: #000088;
+}
+
+.aBDP { text-align: "." center; }
+.arBDP { text-align: "\66B" center; }
+.middot { text-align: "\B7" center ; }
+
+p.menu {
+       text-align: justify;
+       padding-right: 4em;
+}
+dottab.menu {
+       outdent: 4em;
+}
+
+
+.outlined {
+       text-outline: 0.1mm 0.1mm #FF0000;
+       font-weight: bold;
+       font-size: 20pt; 
+       color: #FFFFFF;
+}
+
+/* For background-clip and -origin */
+.divclip {
+       border: 10px dashed #000000;
+       border-radius: 3em;
+       padding: 20px;
+       background:yellow;
+       background-image: -moz-linear-gradient(top right 210deg, red, orange, yellow, green, blue, indigo, violet);
+       width: 300px;
+       height: 50px;
+       margin-bottom: 1em;
+       background-repeat: no-repeat ;
+       background-size: 100% 100%;
+}
+.divpic {
+       background:yellow;
+       background: yellow url("bayeux1.jpg") no-repeat scroll left top; 
+       background-size: 100% 100%;
+}
+.div1 {
+       background-clip: content-box;
+       background-origin: content-box;
+}
+.div2 {
+       background-clip: padding-box;
+       background-origin: padding-box;
+}
+.div3 {
+       background-clip: border-box;
+       background-origin: border-box;
+}
+.div4 {
+       background-clip: content-box;
+       background-origin: border-box;
+}
+.div5 {
+       background-clip: border-box;
+       background-origin: content-box;
+}
+
+
+/* For Table of Contents */
+div.mpdf_toc {
+       font-family: sans-serif;
+       font-size: 11pt;
+}
+a.mpdf_toc_a  {
+       text-decoration: none;
+       color: black;
+}
+div.mpdf_toc_level_0 {         /* Whole line level 0 */
+       line-height: 1.5;
+       margin-left: 0;
+       padding-right: 2em;     /* should match e.g <dottab outdent="2em" /> 0 is default */
+}
+span.mpdf_toc_t_level_0 {      /* Title level 0 - may be inside <a> */
+       font-weight: bold;
+}
+span.mpdf_toc_p_level_0 {      /* Page no. level 0 - may be inside <a> */
+}
+div.mpdf_toc_level_1 {         /* Whole line level 1 */
+       margin-left: 2em;
+       text-indent: -2em;
+       padding-right: 2em;     /* should match <dottab outdent="2em" /> 2em is default */
+}
+span.mpdf_toc_t_level_1 {      /* Title level 1 */
+       font-style: italic;
+       font-weight: bold;
+}
+span.mpdf_toc_p_level_1  {     /* Page no. level 1 - may be inside <a> */
+}
+div.mpdf_toc_level_2 {         /* Whole line level 2 */
+       margin-left: 4em;
+       text-indent: -2em;
+       padding-right: 2em;     /* should match <dottab outdent="2em" /> 2em is default */
+}
+span.mpdf_toc_t_level_2 {      /* Title level 2 */
+}
+span.mpdf_toc_p_level_2 {      /* Page no. level 2 - may be inside <a> */
+}
+
+</style>
+<body>
+
+<tocpagebreak links="on" toc-preHTML="&lt;div class=&quot;shadowtitle&quot;&gt;New Features in mPDF v5.7&lt;/div&gt;&lt;h3&gt;Table of Contents&lt;/h3&gt;" toc-bookmarktext="Table of Contents"/>
+
+
+<h3>ToC Layout and styling</h3>
+<div class="gradient text">
+<h4>Table of Contents styling</h4>
+<p>When a Table of Contents is generated by mPDF using e.g. &lt;tocpagebreak&gt;, mPDF 5.7 will generate the ToC as HTML. This means that a CSS stylesheet can be used to format its appearance.</p>
+</div>
+
+<div class="gradient text">
+<p>Example table of contents:</p>
+<div class="mpdf_toc" id="mpdf_toc_0">
+       <div class="mpdf_toc_level_0">
+               <a class="mpdf_toc_a" href="#__mpdfinternallink_1"><span class="mpdf_toc_t_level_0">Section 1</span></a>
+               <dottab outdent="2em" />
+               <a class="mpdf_toc_a" href="#__mpdfinternallink_1"><span class="mpdf_toc_p_level_0">5</span></a>
+       </div>
+       <div class="mpdf_toc_level_1">
+               <a class="mpdf_toc_a" href="#__mpdfinternallink_2"><span class="mpdf_toc_t_level_1">Chapter 1</span></a>
+               <dottab outdent="2em" />
+               <a class="mpdf_toc_a" href="#__mpdfinternallink_2"><span class="mpdf_toc_p_level_1">6</span></a>
+       </div>
+       <div class="mpdf_toc_level_2">
+               <a class="mpdf_toc_a" href="#__mpdfinternallink_3"><span class="mpdf_toc_t_level_2">Topic 1</span></a>
+               <dottab outdent="2em" />
+               <a class="mpdf_toc_a" href="#__mpdfinternallink_3"><span class="mpdf_toc_p_level_2">7</span></a>
+       </div>
+</div>
+</div>
+
+<div class="gradient text">
+<p>This will result in the following HTML code generated (internally):</p>
+<p class="code">
+&lt;div class="mpdf_toc" id="mpdf_toc_0"&gt;<br />
+&nbsp; &lt;div class="mpdf_toc_level_0"&gt;<br />
+&nbsp; &nbsp; &lt;a class="mpdf_toc_a" href="#__mpdfinternallink_1"&gt;<br />
+&nbsp; &nbsp; &nbsp; &lt;span class="mpdf_toc_t_level_0"&gt;Section 1&lt;/span&gt;<br />
+&nbsp; &nbsp; &lt;/a&gt;<br />
+&nbsp; &nbsp; &lt;dottab outdent="2em" /&gt;<br />
+&nbsp; &nbsp; &lt;a class="mpdf_toc_a" href="#__mpdfinternallink_1"&gt;<br />
+&nbsp; &nbsp; &nbsp; &lt;span class="mpdf_toc_p_level_0"&gt;5&lt;/span&gt;<br />
+&nbsp; &nbsp; &lt;/a&gt;<br />
+&nbsp; &lt;/div&gt;<br />
+&nbsp; &lt;div class="mpdf_toc_level_1"&gt;<br />
+&nbsp; &nbsp; &lt;a class="mpdf_toc_a" href="#__mpdfinternallink_2"&gt;<br />
+&nbsp; &nbsp; &nbsp; &lt;span class="mpdf_toc_t_level_1"&gt;Chapter 1&lt;/span&gt;<br />
+&nbsp; &nbsp; &lt;/a&gt;<br />
+&nbsp; &nbsp; &lt;dottab outdent="2em" /&gt;<br />
+&nbsp; &nbsp; &lt;a class="mpdf_toc_a" href="#__mpdfinternallink_2"&gt;<br />
+&nbsp; &nbsp; &nbsp; &lt;span class="mpdf_toc_p_level_1"&gt;6&lt;/span&gt;<br />
+&nbsp; &nbsp; &lt;/a&gt;<br />
+&nbsp; &lt;/div&gt;<br />
+&nbsp; &lt;div class="mpdf_toc_level_2"&gt;<br />
+&nbsp; &nbsp; &lt;a class="mpdf_toc_a" href="#__mpdfinternallink_3"&gt;<br />
+&nbsp; &nbsp; &nbsp; &lt;span class="mpdf_toc_t_level_2"&gt;Topic 1&lt;/span&gt;<br />
+&nbsp; &nbsp; &lt;/a&gt;<br />
+&nbsp; &nbsp; &lt;dottab outdent="2em" /&gt;<br />
+&nbsp; &nbsp; &lt;a class="mpdf_toc_a" href="#__mpdfinternallink_3"&gt;<br />
+&nbsp; &nbsp; &nbsp; &lt;span class="mpdf_toc_p_level_2"&gt;7&lt;/span&gt;<br />
+&nbsp; &nbsp; &lt;/a&gt;<br />
+&nbsp; &lt;/div&gt;<br />
+&lt;/div&gt;
+</p>
+
+<p>NB The id is "0" (mpdf_toc_0) for root/un-named ToC; otherwise it is lowercase of the name="" used for the ToC</p>
+</div>
+
+<div class="gradient text">
+
+<p>Example Styling using CSS</p>
+<p>The following CSSwill format the ToC as it appears in this document:</p>
+<p class="code">
+/* For Table of Contents */<br />
+div.mpdf_toc {<br />
+&nbsp; font-family: sans-serif;<br />
+&nbsp; font-size: 11pt;<br />
+}<br />
+a.mpdf_toc_a  {<br />
+&nbsp; text-decoration: none;<br />
+&nbsp; color: black;<br />
+}<br /><br />
+/* Whole line level 0 */<br />
+div.mpdf_toc_level_0 {<br />
+&nbsp; line-height: 1.5;<br />
+&nbsp; margin-left: 0;<br />
+&nbsp; padding-right: 2em;<br />
+}<br /><br />
+/* Title level 0 - may be inside &lt;a&gt; */<br />
+span.mpdf_toc_t_level_0 {<br />
+&nbsp; font-weight: bold;<br />
+}<br /><br />
+/* Page no. level 0 - may be inside &lt;a&gt; */<br />
+span.mpdf_toc_p_level_0 { }<br /><br />
+/* Whole line level 1 */<br />
+div.mpdf_toc_level_1 {<br />
+&nbsp; margin-left: 2em;<br />
+&nbsp; padding-right: 2em;<br />
+}<br /><br />
+/* Title level 1 */<br />
+span.mpdf_toc_t_level_1 {<br />
+&nbsp; font-style: italic;<br />
+&nbsp; font-weight: bold;<br />
+}<br /><br />
+/* Page no. level 1 - may be inside &lt;a&gt; */<br />
+span.mpdf_toc_p_level_1  { }<br /><br />
+/* Whole line level 2 */<br />
+div.mpdf_toc_level_2 {<br />
+&nbsp; margin-left: 4em;<br />
+&nbsp; padding-right: 2em;<br />
+}<br /><br />
+/* Title level 2 */<br />
+span.mpdf_toc_t_level_2 { }<br /><br />
+/* Page no. level 2 - may be inside &lt;a&gt; */<br />
+span.mpdf_toc_p_level_2 { }<br /><br />
+</p>
+<p>NB padding-right should match &lt;dottab&gt; "outdent" (0 is default). See &lt;dottab&gt; for more details</p>
+</div>
+
+<div class="gradient text">
+<p>The functions TOCpagebreakByArray() and TOCpagebreak() have a new final parameter, and HTML tags &lt;TOC&gt; and &lt;TOCpagebreak&gt; have a new attribute "tocoutdent". This should be blank or a valid CSS length e.g. "2em". See &lt;dottab&gt; for more details.</p>
+</div>
+
+
+
+
+
+<h3>Text-align on decimal point</h3>
+<div class="gradient text">
+<p>Text inside a table column can be aligned on a decimal point (or any other character) by using either HTML attribute or CSS.</p>
+<p>This example table uses the following CSS stylesheet:</p>
+<p class="code">
+&lt;style&gt;<br />
+.aBDP { text-align: "." center; }<br />
+.arBDP { text-align: "\66B" center; }<br />
+.middot { text-align: "\B7" center ; }<br />
+&lt;/style&gt;
+</p>
+<p></p>
+
+
+<table border="1" style="border-collapse: collapse;" align="center">  
+  <tr><th>&lt;TD&gt; element</th><th>Column</th></tr>
+  <tr><td class="code">align="left"</td><td align="left">Left text</td></tr>  
+  <tr><td class="code">align="right"</td><td align="right">Right text</td></tr>  
+  <tr><td class="code">align="center"</td><td align="center">Center text</td></tr>  
+  <tr><td class="code">align="char"</td><td align="char"><p>1000.0001</p></td></tr>
+  <tr><td class="code">align="char" char=","</td><td align="char" char=","><p>1000,0001</p></td></tr>
+  <tr><td class="code">align="char" char="&amp;middot;"</td><td align="char" char="&middot;"><p>1000&#183;0001</p></td></tr>
+  <tr><td class="code">align="char" char="&amp;#183;"</td><td align="char" char="&#183;"><p>1000&#183;0001</p></td></tr>
+  <tr><td class="code">style="text-align: \'.\' center"</td><td style="text-align: \'.\' center">100.001</td></tr>  
+  <tr><td class="code">style="text-align: \'.\' center"</td><td style="text-align: \'.\' center">DP aligned text</td></tr>  
+  <tr><td class="code">style="text-align: \',\' center"</td><td style="text-align: \',\' center"><p>1.000,0001</p></td></tr>
+  <tr><td class="code">class="aBDP"</td><td class="aBDP">10.01</td></tr>  
+  <tr><td class="code">class="aBDP"</td><td class="aBDP">1000</td></tr>  
+  <tr><td class="code">class="aBDP"</td><td class="aBDP"><p>1000.0001</p></td></tr>
+  <tr><td class="code">class="middot"</td><td class="middot">1&#8201;000&#183;0001</td></tr>
+  <tr><td class="code">class="aBDP"</td><td class="aBDP"><p>1,000,000.00001</p></td></tr>
+  <tr><td class="code">class="aBDP"</td><td class="aBDP">1.000000001</td></tr>
+  <tr><td class="code">class="aBDP"</td><td class="aBDP">1.000.000.001</td></tr>
+  <tr><td class="code">class="arBDP"</td><td class="arBDP"><p style="lang: ar">&#x661;&#x66c;&#x665;&#x666;&#x667;&#x66c;&#x662;&#x663;&#x664;&#x66b;&#x662;&#x663;&#x664;&#x667;</p></td></tr>
+  <tr><td class="code">class="aBDP"</td><td class="aBDP">(GBP) 1,000,000.00001<br />1,000,000.00001 (EUR)<br />1,000,000.00001</td></tr>  
+</table>
+
+</div>
+
+
+
+
+<pagebreak />
+
+<h3>Automatic ToC and Bookmarks</h3>
+<div class="gradient text">
+<p>A Table of Contents and/or Bookmarks can be generated automatically from any of the heading tags H1 - H6. This example will generate ToC and bookmarks from all &lt;h3&gt; tags (top level) and &lt;h4&gt; tags (next level)</p>
+<p class="code">
+       $mpdf->h2toc = array(\'H3\'=>0, \'H4\'=>1);<br />
+       $mpdf->h2bookmarks = array(\'H3\'=>0, \'H4\'=>1);
+</p>
+</div>
+
+
+
+
+
+
+<h3>Improved line-breaking</h3>
+<p>mPDF will now avoid line-breaks in the middle of words even between &lt;tags&gt;</p>
+<div class="gradient text">
+<p class="code">
+&lt;b>Na&lt;sub&gt;2&lt;/sub&gt;HCO&lt;sub&gt;3&lt;/sub&gt;&lt;/b&gt;
+</p>
+<p>Pellentesque purus feugiat semper. Donec nunc odio, et vitae pellentesque. Pellentesque <b>Na<sub>2</sub>HCO<sub>3</sub></b> velit lacus.</p>
+</div>
+
+
+<h3>CSS hyphens</h3>
+<div class="gradient text">
+<p>The CSS property hyphens is now supported on all block elements</p>
+<p class="code">
+hyphens: manual | auto | none
+</p>
+<p>In the following example, the word interdependent contains no soft hyphen or similar characters, and is moved to the next line.</p>
+
+<p style="hyphens:none;border: 1px solid #000000;">Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (no characters suggesting line-break).</p>
+
+<p><b>manual</b> (default)
+       Words are only broken at line breaks where there are characters inside the word that suggest line break opportunities. Characters can be explicit ("-" hard hyphen) or conditional (&amp;shy; &amp;#173; &lt;wbr&gt;). </p>
+<p style="hyphens:manual;border: 1px solid #000000;">Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter&shy;dependent (uses soft hyphen &amp;shy;).</p>
+
+<p><b>none</b> - Words are not broken at line breaks, even if characters inside the word suggest line break points. </p>
+<p style="hyphens:none;border: 1px solid #000000;">Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter-dependent (hard hyphen).</p>
+
+<p><b>auto</b>
+       Words can be broken at appropriate hyphenation points, as determined by characters inside the word.</p>
+<p style="hyphens:auto;border: 1px solid #000000;">Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus interdependent (No characters suggesting line-break).</p>
+<p>SHY inside the word take priority over hyphenation points determined by other resources. </p>
+<p style="hyphens:auto;border: 1px solid #000000;">Cum velit lacus pena sociis natoque penatibus et magnis disa montes, nascetur ridicuus inter&shy;dependent (uses soft hyphen &amp;shy;).</p>
+
+<p>The configurable variables $this-&gt;hyphenate and $this-&gt;hyphenateTables are henceforth redundant and have no effect.</p>
+<p>NB Support for &lt;wbr&gt; is new in mPDF 5.7</p>
+</div>
+
+
+
+
+
+<h3>Text circle</h3>
+<div class="gradient text">
+<p>Added in mPDF 5.6 but not included in New Features example - transparent background and Divider were new. Now also added support for font-size:auto</p>
+<p class="code">
+&lt;textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular" divider="&amp;bull;" style="font-size: auto" /&gt;
+</p>
+<p></p>
+<div align="center"><textcircle r="30mm" top-text="Text Circular Text Circular" bottom-text="Text Circular Text Circular" divider="&bull;" style="font-size: auto" /></div>
+</div>
+
+
+<h3>List numbering</h3>
+<div class="gradient text">
+<p>This list is set to start numbering at 5</p>
+<p class="code">&lt;ol start="5"&gt;</p>
+<ol start="5">
+<li>List item number 1</li>
+<li>List item number 2</li>
+<li>List item number 3</li>
+</ol>
+</div>
+
+
+
+
+<h3>&lt;dottab&gt; and outdent</h3>
+<div class="gradient text">
+<p>&lt;dottab&gt; now supports a custom CSS property "outdent", which can also be used as an HTML attribute i.e. &lt;dottab outdent="2em"&gt;</p>
+<p>The first item uses &lt;dottab outdent="4em"&gt; whereas the following items have &lt;dottab class="menu"&gt; (with CSS <code>dottab.menu{outdent: 4em;}</code> ) and all have padding-right="4em" on the &lt;div&gt; element</p>
+<div style="border: 0.2mm solid #000088; padding: 1em;">
+<p class="menu">Nulla felis erat, imperdiet eu, ullamcorper non, nonummy quis, elit. Suspendisse potenti. Ut a eros at ligula vehicula pretium. Maecenas feugiat pede vel risus. Nulla et lectus <dottab outdent="4em" />&nbsp;&pound;37.00</p>
+
+<p class="menu">Fusce eleifend neque sit amet erat. Integer consectetuer nulla non orci. Morbi feugiat <dottab class="menu" />&nbsp;&pound;3700.00</p>
+
+<p class="menu">Cras odio. Donec mattis, nisi id euismod auctor, neque metus pellentesque risus, at eleifend lacus sapien et risus <dottab class="menu" />&nbsp;&pound;27.00</p>
+
+<p class="menu">Phasellus metus. Phasellus feugiat, lectus ac aliquam molestie, leo lacus tincidunt turpis, vel aliquam quam odio et sapien. Mauris ante pede, auctor ac, suscipit quis, malesuada sed, nulla. Integer sit amet odio sit amet lectus luctus euismod <dottab class="menu" />&nbsp;&pound;7.00</p>
+
+<p class="menu">Donec et nulla. Sed quis orci <dottab class="menu" />&nbsp;&pound;1137.00</p>
+</div>
+<p></p>
+<p class="code">
+p.menu { text-align: justify; padding-right: 4em; }<br />
+dottab.menu { outdent: 4em; }
+</p>
+<p>NB It is recommended to use &amp;nbsp; after the dottab if a space is required before the following content.</p>
+<p>NB This (outdent) is also used in the Table of Contents (see earlier in this document).</p>
+</div>
+
+
+
+<h3>Layers</h3>
+<div class="gradient text">
+<p>mPDF 5.7 will create layers in the document using the CSS property z-index. All layers are visible by default.</p>
+<p>This demonstrates layers in a PDF document. Select the layers named "Correct Answers" or "Wrong Answers" in your PDF viewer (the layers pane should be open already in Adobe Acrobat)</p>
+<div><b>What is the name of the Prime Minister of Britain?</b></div>
+<div style="z-index:1;color: green;float: left; width:30%">David Cameron</div>
+<div style="z-index:2;color: red;">Rupert Murdoch</div>
+<div><b>What is the name of the David Beckham\'s bulldog?</b></div>
+<div style="z-index:1;color: green;float: left; width:30%;">Scarlet</div>
+<div style="z-index:2;color: red;">Victoria</div>
+<p>To open/close/select layers in Adobe Reader (10):<br />
+<img src="layers_tab.jpg" /></p>
+<p>The layer names and initial state can be set (optionally) e.g.</p>
+<p class="code">
+       $mpdf-&gt;layerDetails[1][\'state\']=\'hidden\';        // Set initial state of layer - "hidden" or ""<br />
+       $mpdf-&gt;layerDetails[1][\'name\']=\'Correct Answers\';<br />
+       $mpdf-&gt;layerDetails[2][\'state\']=\'hidden\';<br />
+       $mpdf-&gt;layerDetails[2][\'name\']=\'Wrong Answers\';<br />
+</p>
+<p>This is the code used in the example above:</p>
+<p class="code">
+       &lt;div style="z-index:1;color: green;float: left; width:30%;"&gt;Scarlet&lt;/div&gt;<br />
+       &lt;div style="z-index:2;color: red;"&gt;Victoria&lt;/div&gt;
+</p>
+<div>To force the PDF reader to open with the layers tab open, set:
+<p class="code">$mpdf-&gt;open_layer_pane = true;</p>
+</div>
+
+</div>
+
+
+
+<h3>CSS visibility on &lt;span&gt;</h3>
+<p>CSS visibility:hidden is now supported on inline elements e.g. &lt;span&gt;</p>
+<div class="gradient text">
+<p>This next bit of text is hidden - <span style="visibility:hidden; border:1px solid #880000;background-color:yellow">Hidden text</span> - and this isn\'t.</p>
+<p class="code">style="visibility:hidden;"</p>
+<p>This next bit of text is only visible in print - <span style="visibility:printonly; border:1px solid #008800;background-color:yellow">Hidden text</span> - and this isn\'t.</p>
+<p class="code">style="visibility:printonly;"</p>
+<p>This next bit of text is only visible on screen - <span style="visibility:screenonly; border:1px solid #000088;background-color:yellow">Hidden text</span> - and this isn\'t.</p>
+<p class="code">style="visibility:screenonly;"</p>
+<p>You can show or hide these elements as for layers (above).</p>
+</div>
+
+
+
+<h3>CSS "rem" unit</h3>
+<div class="gradient text">
+
+<div style="font-size: 1rem; border: 1px solid #888888; padding: 5px 20px;">This line has the font-size set as 1rem
+<div style="font-size: 0.5rem; border: 1px solid #888888; padding: 5px 20px;">This line has the font-size set as 0.5rem
+<div style="font-size: 1.5rem; border: 1px solid #888888; padding: 5px 20px;">This line has the font-size set as 1.5rem
+</div>
+</div>
+</div>
+<div style="font-size: 1em; border: 1px solid #888888; padding: 5px 20px;">This line has the font-size set as 1em
+<div style="font-size: 0.5em; border: 1px solid #888888; padding: 5px 20px;">This line has the font-size set as 0.5em
+<div style="font-size: 1.5em; border: 1px solid #888888; padding: 5px 20px;">This line has the font-size set as 1.5em
+</div>
+</div>
+</div>
+
+</div>
+
+
+
+
+<h3>CSS outline</h3>
+<div class="gradient text">
+<div class="outlined">This is text with an outline set by CSS</div>
+<p class="code">
+.outlined { text-outline: 0.1mm 0.1mm #FF0000; }
+</p>
+</div>
+
+
+
+
+
+<h3>CSS background-clip, background-origin &amp; background-size</h3>
+<div class="gradient text">
+<p>CSS background-clip, background-origin &amp; background-size are now supported for most block level elements. (Not supported in tables, nor on page/body backgrounds).</p>
+
+
+<div class="divclip">background-clip: border-box[default value]<br />background-origin: padding-box[default value]</div>
+<div class="divclip div1">background-clip: content-box;<br />background-origin: content-box</div>
+<div class="divclip div2">background-clip: padding-box;<br />background-origin: padding-box</div>
+<div class="divclip div3">background-clip: border-box;<br />background-origin: border-box</div>
+<div class="divclip div4">background-clip: content-box;<br />background-origin: border-box</div>
+<div class="divclip div5">background-clip: border-box;<br />background-origin: content-box</div>
+
+<div class="divclip divpic">background-clip: border-box[default value]<br />background-origin: padding-box[default value]</div>
+<div class="divclip div1 divpic">background-clip: content-box;<br />background-origin: content-box</div>
+<div class="divclip div2 divpic">background-clip: padding-box;<br />background-origin: padding-box</div>
+<div class="divclip div3 divpic">background-clip: border-box;<br />background-origin: border-box</div>
+<div class="divclip div4 divpic">background-clip: content-box;<br />background-origin: border-box</div>
+<div class="divclip div5 divpic">background-clip: border-box;<br />background-origin: content-box</div>
+
+
+</div>
+
+
+';
+
+$mpdf->h2toc = array('H3'=>0, 'H4'=>1);
+$mpdf->h2bookmarks = array('H3'=>0, 'H4'=>1);
+
+$mpdf->open_layer_pane = false;
+$mpdf->layerDetails[1]['state']='hidden';      // Set initial state of layer - "hidden" or nothing
+$mpdf->layerDetails[1]['name']='Correct Answers';
+$mpdf->layerDetails[2]['state']='hidden';      // Set initial state of layer - "hidden" or nothing
+$mpdf->layerDetails[2]['name']='Wrong Answers';
+
+//==============================================================
+if ($_REQUEST['html']) { echo $html; exit; }
+if ($_REQUEST['source']) { 
+       $file = __FILE__;
+       header("Content-Type: text/plain");
+       header("Content-Length: ". filesize($file));
+       header("Content-Disposition: attachment; filename='".$file."'");
+       readfile($file);
+       exit; 
+}
+
+//==============================================================
+
+$mpdf->WriteHTML($html);
+
+// OUTPUT
+$mpdf->Output(); exit;
+
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/firefox-48.png b/inc/3rdparty/libraries/mpdf/examples/firefox-48.png
new file mode 100644 (file)
index 0000000..b982cf9
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/firefox-48.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/flowers-pattern.jpg b/inc/3rdparty/libraries/mpdf/examples/flowers-pattern.jpg
new file mode 100644 (file)
index 0000000..45aaeeb
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/flowers-pattern.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/formsubmit.php b/inc/3rdparty/libraries/mpdf/examples/formsubmit.php
new file mode 100644 (file)
index 0000000..f13a395
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+
+echo '<'.'!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
+</head>
+<body>
+<h2>Submitted data from PDF Form</h2>
+<p style="font-size:0.9em;">(See formsubmit.php in the Examples folder for details)</p>
+';
+
+
+if (count($_POST)) {
+  // To display HTML output from PDF form
+  echo '<h4>HTML format data sent as POST</h4>';
+  foreach($_POST AS $name=>$val) {
+       $t =  mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' );     // If from core fonts doc
+       echo '<p>PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'</p>';
+  }
+}
+else if (count($_GET)) {
+  // To display HTML output from PDF form
+  echo '<h4>HTML format data sent as GET</h4>';
+  foreach($_GET AS $name=>$val) {
+       $t =  mb_convert_encoding(PDFDocEncodingToWin1252($val), 'UTF-8', 'Windows-1252' );     // If from core fonts doc
+       echo '<p>PDFDocEnc: '.$name.' => '.htmlspecialchars($t).'</p>';
+  }
+}
+
+else  {
+ $postdata = file_get_contents("php://input");
+
+ if ($postdata) {
+  echo '<h4>XFDF format data detected</h4>';
+  // To parse XFDF
+  if (preg_match_all('/<field name="([^>]*)"\s*>\s*(<value\s*>(.*?)<\/value\s*>)\s*<\/field\s*>/s', $postdata, $m)) {
+       for($i=0; $i<count($m[0]); $i++) {
+               // if multiple values in response e.g. from multiple selected options
+               preg_match_all('/<value\s*>(.*?)<\/value\s*>/s', $m[2][$i], $v);
+               if (count($v[0])>1) {
+                       $values = array();
+                       foreach($v[1] AS $val) { $values[] = $val; }
+                       //foreach($v[1] AS $val) { $values[] = htmlspecialchars_decode($val); }
+                       echo '<p>Field: '.$m[1][$i].' => [array of values] ('.implode(', ',$values).')</p>';
+               }
+               else {
+                       //echo '<p>Field: '.$m[1][$i].' => '.htmlspecialchars_decode($m[3][$i]).'</p>';
+                       echo '<p>Field: '.$m[1][$i].' => '.$m[3][$i].'</p>';
+               }
+       }
+  }
+  if (preg_match_all('/<field name="([^>]*)"\s*>\s*<value\s*\/\s*>\s*<\/field\s*>/s', $postdata, $m)) {
+       for($i=0; $i<count($m[0]); $i++) {
+               echo '<p>Field: '.$m[1][$i].' => [blank]</p>';
+       }
+  }
+  if (preg_match_all('/<field name="([^>]*)"\s*\/\s*>/s', $postdata, $m)) {
+       for($i=0; $i<count($m[0]); $i++) {
+               echo '<p>Field: '.$m[1][$i].' => [no value]</p>';
+       }
+  }
+
+
+  // To display whole XFDF
+  //$postdata = preg_replace("/[\n\r]/", "", $postdata);
+  //$postdata = preg_replace('/>\s*</', ">\n<", $postdata);
+  //echo nl2br(htmlspecialchars($postdata)); 
+ }
+ else { echo "No form data detected"; }
+}
+
+
+
+echo '</body></html>';
+
+exit;
+
+function PDFDocEncodingToWin1252($txt) {
+       $Win1252ToPDFDocEncoding = array(
+               chr(0200) => chr(0240), chr(0214) => chr(0226), chr(0212) => chr(0227), chr(0237) => chr(0230), 
+               chr(0225) => chr(0200), chr(0210) => chr(0032), chr(0206) => chr(0201), chr(0207) => chr(0202),
+               chr(0205) => chr(0203), chr(0227) => chr(0204), chr(0226) => chr(0205), chr(0203) => chr(0206),
+               chr(0213) => chr(0210), chr(0233) => chr(0211), chr(0211) => chr(0213), chr(0204) => chr(0214),
+               chr(0223) => chr(0215), chr(0224) => chr(0216), chr(0221) => chr(0217), chr(0222) => chr(0220),
+               chr(0202) => chr(0221), chr(0232) => chr(0235), chr(0230) => chr(0037), chr(0231) => chr(0222),
+               chr(0216) => chr(0231)
+       ); 
+       return strtr($txt, array_flip($Win1252ToPDFDocEncoding) );
+}
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/goto.gif b/inc/3rdparty/libraries/mpdf/examples/goto.gif
new file mode 100644 (file)
index 0000000..e7de2b1
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/goto.gif differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/img1.png b/inc/3rdparty/libraries/mpdf/examples/img1.png
new file mode 100644 (file)
index 0000000..fe3f4de
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/img1.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/img2.png b/inc/3rdparty/libraries/mpdf/examples/img2.png
new file mode 100644 (file)
index 0000000..2d142f4
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/img2.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/img3.png b/inc/3rdparty/libraries/mpdf/examples/img3.png
new file mode 100644 (file)
index 0000000..a7a9487
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/img3.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/img4.png b/inc/3rdparty/libraries/mpdf/examples/img4.png
new file mode 100644 (file)
index 0000000..e9c3f44
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/img4.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/img5.png b/inc/3rdparty/libraries/mpdf/examples/img5.png
new file mode 100644 (file)
index 0000000..1e4c5ec
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/img5.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/index.php b/inc/3rdparty/libraries/mpdf/examples/index.php
new file mode 100644 (file)
index 0000000..869bab8
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+$ff = scandir('./');
+
+sort($ff);
+$files = array();
+foreach($ff AS $f) {
+       if (preg_match('/example[0]{0,1}(\d+)_(.*?)\.php/',$f,$m)) {
+               $num = intval($m[1]);
+               $files[$num] = array(ucfirst(preg_replace('/_/',' ',$m[2])), $m[0]);
+       }
+}
+echo '<html><body><h3>mPDF Example Files</h3>';
+
+foreach($files AS $n=>$f) {
+       echo '<p>'.$n.') '.$f[0].' &nbsp; <a href="'.$f[1].'">PDF</a> &nbsp;  <small><a href="show_code.php?filename='.$f[1].'">PHP</a></small></p>';
+}
+
+echo '</body></html>';
+exit;
+
+
+// For PHP4 compatability
+if (!function_exists('scandir')) {
+       function scandir($dir = './', $sort = 0) {
+               $dir_open = @ opendir($dir);
+               if (! $dir_open)
+                       return false;
+               while (($dir_content = readdir($dir_open)) !== false)
+                       $files[] = $dir_content;
+               if ($sort == 1)
+                       rsort($files, SORT_STRING);
+               else
+                       sort($files, SORT_STRING);
+               return $files;
+       }
+} 
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/klematis.jpg b/inc/3rdparty/libraries/mpdf/examples/klematis.jpg
new file mode 100644 (file)
index 0000000..b87e920
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/klematis.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/loading.gif b/inc/3rdparty/libraries/mpdf/examples/loading.gif
new file mode 100644 (file)
index 0000000..e846e1d
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/loading.gif differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstyleA4.css
new file mode 100644 (file)
index 0000000..90036e2
--- /dev/null
@@ -0,0 +1,89 @@
+               body { font-family: DejaVuSansCondensed, sans-serif; font-size: 11pt;  }
+               p {     text-align: justify; margin-bottom: 4pt;  margin-top:0pt; }
+
+               hr {    width: 70%; height: 1px; 
+                       text-align: center; color: #999999; 
+                       margin-top: 8pt; margin-bottom: 8pt; }
+
+               a {     color: #000066; font-style: normal; text-decoration: underline; 
+                       font-weight: normal; }
+
+               ul {    text-indent: 5mm; margin-bottom: 9pt; }
+               ol {    text-indent: 5mm; margin-bottom: 9pt; }
+
+               pre { font-family: DejaVuSansMono, monospaced; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; }
+
+               h1 {    font-weight: normal; font-size: 26pt; color: #000066; 
+                       font-family: DejaVuSansCondensed, sans-serif; margin-top: 18pt; margin-bottom: 6pt; 
+                       border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; 
+                       text-align: ; page-break-after:avoid; }
+               h2 {    font-weight: bold; font-size: 12pt; color: #000066; 
+                       font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: 6pt; 
+                       border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; 
+                       text-align: ;  text-transform: uppercase; page-break-after:avoid; }
+               h3 {    font-weight: normal; font-size: 26pt; color: #000000; 
+                       font-family: DejaVuSansCondensed, sans-serif; margin-top: 0pt; margin-bottom: 6pt; 
+                       border-top: 0; border-bottom: 0; 
+                       text-align: ; page-break-after:avoid; }
+               h4 {    font-weight: ; font-size: 13pt; color: #9f2b1e; 
+                       font-family: DejaVuSansCondensed, sans-serif; margin-top: 10pt; margin-bottom: 7pt; 
+                       font-variant: small-caps;
+                       text-align: ;  margin-collapse:collapse; page-break-after:avoid; }
+               h5 {    font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; 
+                       font-family: DejaVuSansCondensed, sans-serif; margin-top: 8pt; margin-bottom: 4pt; 
+                       text-align: ;  page-break-after:avoid; }
+               h6 {    font-weight: bold; font-size: 9.5pt; color: #333333; 
+                       font-family: DejaVuSansCondensed, sans-serif; margin-top: 6pt; margin-bottom: ; 
+                       text-align: ;  page-break-after:avoid; }
+
+
+               .breadcrumb {
+                       text-align: right; font-size: 8pt; font-family: DejaVuSerifCondensed, serif; color: #666666;
+                       font-weight: bold; font-style: normal; margin-bottom: 6pt; }
+
+               .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; }
+
+               .big { font-size: 1.5em; }
+               .red { color: #880000; }
+               .slanted { font-style: italic; }
+
+/* For Table of Contents */
+div.mpdf_toc {
+       font-family: sans-serif;
+       font-size: 11pt;
+}
+a.mpdf_toc_a  {
+       text-decoration: none;
+       color: black;
+}
+div.mpdf_toc_level_0 {         /* Whole line level 0 */
+       line-height: 1.5;
+       margin-left: 0;
+       padding-right: 2em;     /* should match e.g <dottab outdent="2em" /> 0 is default */
+}
+span.mpdf_toc_t_level_0 {      /* Title level 0 - may be inside <a> */
+       font-weight: bold;
+}
+span.mpdf_toc_p_level_0 {      /* Page no. level 0 - may be inside <a> */
+}
+div.mpdf_toc_level_1 {         /* Whole line level 1 */
+       margin-left: 2em;
+       text-indent: -2em;
+       padding-right: 2em;     /* should match <dottab outdent="2em" /> 2em is default */
+}
+span.mpdf_toc_t_level_1 {      /* Title level 1 */
+       font-style: italic;
+       font-weight: bold;
+}
+span.mpdf_toc_p_level_1  {     /* Page no. level 1 - may be inside <a> */
+}
+div.mpdf_toc_level_2 {         /* Whole line level 2 */
+       margin-left: 4em;
+       text-indent: -2em;
+       padding-right: 2em;     /* should match <dottab outdent="2em" /> 2em is default */
+}
+span.mpdf_toc_t_level_2 {      /* Title level 2 */
+}
+span.mpdf_toc_p_level_2 {      /* Page no. level 2 - may be inside <a> */
+}
+
diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstylePaged.css
new file mode 100644 (file)
index 0000000..4c5ff6c
--- /dev/null
@@ -0,0 +1,123 @@
+       @page {
+               size: 15cm 17cm;        /* width height  <length>{1,2} | auto | portrait | landscape NB 'em' and 'ex' % are not allowed */
+               margin: 10%;    /* % of page-box width for LR, height for TB */
+               margin-header: 5mm;
+               margin-footer: 5mm;
+               margin-left: 4cm;
+               margin-right: 2cm;
+               odd-header-name: myHeader2Odd;
+               even-header-name: html_myHTMLHeaderEven;
+               odd-footer-name: html_myHTMLFooterOdd;
+               even-footer-name: myFooter2Even;
+               marks: crop;     /* crop | cross | none */
+       }
+
+       @page :first {
+               margin-top: 5cm;    /* Top margin on first page 10cm */
+       }
+
+       @page standard {
+               size: auto;     /* auto is the default mPDF value */
+               margin: 10%;    /* % of page-box width for LR, height for TB */
+               marks: none;     /* crop | cross | none */
+       }
+
+       @page standard :first {
+               margin-top: 7cm;    /* Top margin on first page 10cm */
+       }
+
+       @page bigsquare {
+               size: 15cm 20cm;
+               margin-left: 4cm;
+               marks: crop cross;       /* crop | cross | none */
+               background: transparent url('bg.jpg') repeat scroll 5mm 5mm;  /* position inset by bleedMargin */
+       }
+
+       @page bigsquare :right {
+               header: html_myHTMLHeaderOdd;
+               footer: html_myHTMLFooterOdd;
+       }
+
+       @page bigsquare :left {         /* left is what mPDF calls EVEN page - right=ODD */
+               header: html_myHTMLHeaderEven;
+               footer: html_myHTMLFooterEven;
+       }
+
+       @page smallsquare {
+               size: 25cm 15cm;
+               margin-left: 4cm;
+               marks: crop;     /* crop | cross | none */
+               background-gradient: linear #c7cdde #f0f2ff 0 1 0 0.5;
+       }
+
+       @page rotated {
+               size: landscape;
+               marks: none;     /* crop | cross | none */
+               background-color: #fff0f2;
+               margin-left: 3cm;
+               margin-right: 3cm;
+       }
+       @page rotated :first {
+               margin-top: 7cm;    /* Top margin on first page 10cm */
+       }
+
+       h1.heading1 {   color: #1188FF;
+       }
+
+       h1.heading2 {   color: #88FF11;
+               page-break-before: always;
+               page: standard;
+       }
+       h1.heading3 {   color: #FF1188;
+               page-break-before: right;
+       }
+       h1.heading4 {   color: #FF8811;
+               page-break-before: left;
+               page: bigsquare;
+       }
+       h1.heading5 {   color: #11FF88;
+               page: smallsquare;
+       }
+       h1.heading6 {   color: #8811FF;
+               page: rotated;
+       }
+
+       br.paging { page-break-after: always; }
+
+               body { font-family: DejaVuSansCondensed; font-size: 11pt;  }
+               p {     text-align: justify; margin-bottom: 4pt;  margin-top:0pt; }
+
+               hr {    width: 70%; height: 1px; 
+                       text-align: center; color: #999999; 
+                       margin-top: 8pt; margin-bottom: 8pt; }
+
+               a {     color: #000066; font-style: normal; text-decoration: underline; 
+                       font-weight: normal; }
+
+               ul {    text-indent: 5mm; margin-bottom: 9pt; }
+               ol {    text-indent: 5mm; margin-bottom: 9pt; }
+
+               pre { font-family: DejaVuSansMono; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; }
+
+               h1 {    font-weight: normal; font-size: 26pt; color: #000066; 
+                       font-family: DejaVuSansCondensed; margin-top: 18pt; margin-bottom: 6pt; 
+                       border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; 
+                       text-align: ; page-break-after:avoid; }
+               h2 {    font-weight: bold; font-size: 12pt; color: #000066; 
+                       font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: 6pt; 
+                       border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; 
+                       text-align: ;  text-transform: uppercase; page-break-after:avoid; }
+               h3 {    font-weight: normal; font-size: 26pt; color: #000000; 
+                       font-family: DejaVuSansCondensed; margin-top: 0pt; margin-bottom: 6pt; 
+                       border-top: 0; border-bottom: 0; 
+                       text-align: ; page-break-after:avoid; }
+               h4 {    font-weight: ; font-size: 13pt; color: #9f2b1e; 
+                       font-family: DejaVuSansCondensed; margin-top: 10pt; margin-bottom: 7pt; 
+                       text-align: ;  margin-collapse:collapse; page-break-after:avoid; }
+               h5 {    font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; 
+                       font-family: DejaVuSansCondensed; margin-top: 8pt; margin-bottom: 4pt; 
+                       text-align: ;  page-break-after:avoid; }
+               h6 {    font-weight: bold; font-size: 9.5pt; color: #333333; 
+                       font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: ; 
+                       text-align: ;  page-break-after:avoid; }
+
diff --git a/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css b/inc/3rdparty/libraries/mpdf/examples/mpdfstyletables.css
new file mode 100644 (file)
index 0000000..b36d698
--- /dev/null
@@ -0,0 +1,124 @@
+
+               body { font-family: DejaVuSansCondensed; font-size: 11pt;  }
+               p {     text-align: justify; margin-bottom: 4pt; margin-top:0pt;  }
+
+               table {font-family: DejaVuSansCondensed; font-size: 9pt; line-height: 1.2;
+                       margin-top: 2pt; margin-bottom: 5pt;
+                       border-collapse: collapse;  }
+
+               thead { font-weight: bold; vertical-align: bottom; }
+               tfoot { font-weight: bold; vertical-align: top; }
+               thead td { font-weight: bold; }
+               tfoot td { font-weight: bold; }
+
+               thead td, thead th, tfoot td, tfoot th { font-variant: small-caps; }
+
+               .headerrow td, .headerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+               .footerrow td, .footerrow th { background-gradient: linear #b7cebd #f5f8f5 0 1 0 0.2;  }
+
+               th {    font-weight: bold; 
+                       vertical-align: top; 
+                       text-align:left; 
+                       padding-left: 2mm; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm; 
+                }
+
+               td {    padding-left: 2mm; 
+                       vertical-align: top; 
+                       text-align:left; 
+                       padding-right: 2mm; 
+                       padding-top: 0.5mm; 
+                       padding-bottom: 0.5mm;
+                }
+
+               th p { text-align: left; margin:0pt;  }
+               td p { text-align: left; margin:0pt;  }
+
+               table.widecells td {
+                       padding-left: 5mm;
+                       padding-right: 5mm;
+               }
+               table.tallcells td {
+                       padding-top: 3mm;
+                       padding-bottom: 3mm; 
+               }
+
+               hr {    width: 70%; height: 1px; 
+                       text-align: center; color: #999999; 
+                       margin-top: 8pt; margin-bottom: 8pt; }
+
+               a {     color: #000066; font-style: normal; text-decoration: underline; 
+                       font-weight: normal; }
+
+               ul {    text-indent: 5mm; margin-bottom: 9pt; }
+               ol {    text-indent: 5mm; margin-bottom: 9pt; }
+
+               pre { font-family: DejaVuSansMono; font-size: 9pt; margin-top: 5pt; margin-bottom: 5pt; }
+
+               h1 {    font-weight: normal; font-size: 26pt; color: #000066; 
+                       font-family: DejaVuSansCondensed; margin-top: 18pt; margin-bottom: 6pt; 
+                       border-top: 0.075cm solid #000000; border-bottom: 0.075cm solid #000000; 
+                       text-align: ; page-break-after:avoid; }
+               h2 {    font-weight: bold; font-size: 12pt; color: #000066; 
+                       font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: 6pt; 
+                       border-top: 0.07cm solid #000000; border-bottom: 0.07cm solid #000000; 
+                       text-align: ;  text-transform:uppercase; page-break-after:avoid; }
+               h3 {    font-weight: normal; font-size: 26pt; color: #000000; 
+                       font-family: DejaVuSansCondensed; margin-top: 0pt; margin-bottom: 6pt; 
+                       border-top: 0; border-bottom: 0; 
+                       text-align: ; page-break-after:avoid; }
+               h4 {    font-weight: ; font-size: 13pt; color: #9f2b1e; 
+                       font-family: DejaVuSansCondensed; margin-top: 10pt; margin-bottom: 7pt; 
+                       font-variant: small-caps;
+                       text-align: ;  margin-collapse:collapse; page-break-after:avoid; }
+               h5 {    font-weight: bold; font-style:italic; ; font-size: 11pt; color: #000044; 
+                       font-family: DejaVuSansCondensed; margin-top: 8pt; margin-bottom: 4pt; 
+                       text-align: ;  page-break-after:avoid; }
+               h6 {    font-weight: bold; font-size: 9.5pt; color: #333333; 
+                       font-family: DejaVuSansCondensed; margin-top: 6pt; margin-bottom: ; 
+                       text-align: ;  page-break-after:avoid; }
+
+               .breadcrumb {
+                       text-align: right; font-size: 8pt; font-family: DejaVuSerifCondensed; color: #666666;
+                       font-weight: bold; font-style: normal; margin-bottom: 6pt; }
+
+               .evenrow td, .evenrow th { background-color: #f5f8f5; } 
+               .oddrow td, .oddrow th { background-color: #e3ece4; } 
+
+               .bpmTopic {     background-color: #e3ece4; }
+               .bpmTopicC { background-color: #e3ece4; }
+               .bpmNoLines { background-color: #e3ece4; }
+               .bpmNoLinesC { background-color: #e3ece4; }
+               .bpmClear {             }
+               .bpmClearC { text-align: center; }
+               .bpmTopnTail { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailC { background-color: #e3ece4; topntail: 0.02cm solid #495b4a;}
+               .bpmTopnTailClear { topntail: 0.02cm solid #495b4a; }
+               .bpmTopnTailClearC { topntail: 0.02cm solid #495b4a; }
+
+               .bpmTopicC td, .bpmTopicC td p { text-align: center; }
+               .bpmNoLinesC td, .bpmNoLinesC td p { text-align: center; }
+               .bpmClearC td, .bpmClearC td p { text-align: center; }
+               .bpmTopnTailC td, .bpmTopnTailC td p { text-align: center;  }
+               .bpmTopnTailClearC td, .bpmTopnTailClearC td p {  text-align: center;  }
+
+               .pmhMiddleCenter { text-align:center; vertical-align:middle; }
+               .pmhMiddleRight {       text-align:right; vertical-align:middle; }
+               .pmhBottomCenter { text-align:center; vertical-align:bottom; }
+               .pmhBottomRight {       text-align:right; vertical-align:bottom; }
+               .pmhTopCenter { text-align:center; vertical-align:top; }
+               .pmhTopRight {  text-align:right; vertical-align:top; }
+               .pmhTopLeft {   text-align:left; vertical-align:top; }
+               .pmhBottomLeft {        text-align:left; vertical-align:bottom; }
+               .pmhMiddleLeft {        text-align:left; vertical-align:middle; }
+
+               .infobox { margin-top:10pt; background-color:#DDDDBB; text-align:center; border:1px solid #880000; }
+
+               .bpmTopic td, .bpmTopic th  {   border-top: 1px solid #FFFFFF; }
+               .bpmTopicC td, .bpmTopicC th  { border-top: 1px solid #FFFFFF; }
+               .bpmTopnTail td, .bpmTopnTail th  {     border-top: 1px solid #FFFFFF; }
+               .bpmTopnTailC td, .bpmTopnTailC th  {   border-top: 1px solid #FFFFFF; }
+
+
diff --git a/inc/3rdparty/libraries/mpdf/examples/quran282.jpg b/inc/3rdparty/libraries/mpdf/examples/quran282.jpg
new file mode 100644 (file)
index 0000000..c888872
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/quran282.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf
new file mode 100644 (file)
index 0000000..86c4d74
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/sample_basic.pdf differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_logoheader2.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_logoheader2.pdf
new file mode 100644 (file)
index 0000000..946883d
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/sample_logoheader2.pdf differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf
new file mode 100644 (file)
index 0000000..84944d9
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/sample_orientation2.pdf differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf b/inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf
new file mode 100644 (file)
index 0000000..c23ca31
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/sample_orientation3.pdf differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/show_code.php b/inc/3rdparty/libraries/mpdf/examples/show_code.php
new file mode 100644 (file)
index 0000000..32bc762
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+
+if ($_REQUEST['filename']) { $filename = $_REQUEST['filename']; }
+else { die("No file specified"); }
+
+include("../mpdf.php");
+
+$mpdf=new mPDF('utf-8-s'); 
+$mpdf->debug=true;
+$mpdf->tabSpaces = 6;
+
+$mpdf->allow_charset_conversion=true;
+$mpdf->charset_in='windows-1252';
+
+//==============================================================
+preg_match('/example[0]{0,1}(\d+)_(.*?)\.php/',$filename,$m);
+$num = intval($m[1]);
+$title = ucfirst(preg_replace('/_/',' ',$m[2]));
+
+if (!$num || !$title) { die("Invalid file"); }
+if (preg_match('/\//', $filename) || !preg_match('/\.php$/',$filename)) { die("Hacking attempt"); }
+
+$html = '
+<h1>mPDF</h1>
+<h2>Example '.$num.'. '.$title.'</h2>
+<div style="border:1px solid #555555; background-color: #DDDDDD; padding: 1em; font-size:8pt; font-family: lucidaconsole, mono;">
+';
+$lines = file($filename);
+
+$html .= '<pre>';
+foreach($lines AS $line) {
+       $html .= htmlspecialchars($line);
+}
+$html .= '</pre>';
+$html .= '</div>';
+
+$mpdf->WriteHTML($html,2);     // The 2 is important to prevent <style etc.  being parsed
+
+$mpdf->Output();
+exit;
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/sunset.jpg b/inc/3rdparty/libraries/mpdf/examples/sunset.jpg
new file mode 100644 (file)
index 0000000..ddd5118
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/sunset.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/sunsetv.jpg b/inc/3rdparty/libraries/mpdf/examples/sunsetv.jpg
new file mode 100644 (file)
index 0000000..b0f0e9f
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/sunsetv.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/test.pdf b/inc/3rdparty/libraries/mpdf/examples/test.pdf
new file mode 100644 (file)
index 0000000..5b89040
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/test.pdf differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger b/inc/3rdparty/libraries/mpdf/examples/tiger
new file mode 100644 (file)
index 0000000..0bbdd85
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger.bmp b/inc/3rdparty/libraries/mpdf/examples/tiger.bmp
new file mode 100644 (file)
index 0000000..5936520
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger.bmp differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger.gif b/inc/3rdparty/libraries/mpdf/examples/tiger.gif
new file mode 100644 (file)
index 0000000..12081da
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger.gif differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger.jpg b/inc/3rdparty/libraries/mpdf/examples/tiger.jpg
new file mode 100644 (file)
index 0000000..a88e6b3
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger.php b/inc/3rdparty/libraries/mpdf/examples/tiger.php
new file mode 100644 (file)
index 0000000..9fb2aa4
--- /dev/null
@@ -0,0 +1,18 @@
+<?php
+
+if ($_GET['t']=='png') { $filename = 'tiger.png'; $mime = 'png'; }
+else if ($_GET['t']=='gif') { $filename = 'tiger.gif'; $mime = 'gif'; }
+else if ($_GET['t']=='jpg') { $filename = 'tiger.jpg'; $mime = 'jpeg'; }
+else if ($_GET['t']=='jpeg') { $filename = 'tiger.jpg'; $mime = 'jpeg'; }
+else if ($_GET['t']=='wmf') { $filename = 'tiger2.wmf'; $mime = 'wmf'; }
+else if ($_GET['t']=='svg') { $filename = 'tiger.svg'; $mime = 'svg'; }
+else { exit; }
+
+
+$fp = fopen($filename, 'rb');
+header("Content-Type: image/".$mime);
+header("Content-Length: " . filesize($filename));
+fpassthru($fp);
+fclose($fp);
+exit;
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger.png b/inc/3rdparty/libraries/mpdf/examples/tiger.png
new file mode 100644 (file)
index 0000000..0bbdd85
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger.svg b/inc/3rdparty/libraries/mpdf/examples/tiger.svg
new file mode 100644 (file)
index 0000000..285f41b
--- /dev/null
@@ -0,0 +1,726 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 40 580 530">
+ <g transform="translate(200, 200)" style="fill-opacity: 1; fill: none;">
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-122.304 84.285C-122.304 84.285 -122.203 86.179 -123.027 86.16C-123.851 86.141 -140.305 38.066 -160.833 40.309C-160.833 40.309 -143.05 32.956 -122.304 84.285z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-118.774 81.262C-118.774 81.262 -119.323 83.078 -120.092 82.779C-120.86 82.481 -119.977 31.675 -140.043 26.801C-140.043 26.801 -120.82 25.937 -118.774 81.262z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-91.284 123.59C-91.284 123.59 -89.648 124.55 -90.118 125.227C-90.589 125.904 -139.763 113.102 -149.218 131.459C-149.218 131.459 -145.539 112.572 -91.284 123.59z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-94.093 133.801C-94.093 133.801 -92.237 134.197 -92.471 134.988C-92.704 135.779 -143.407 139.121 -146.597 159.522C-146.597 159.522 -149.055 140.437 -94.093 133.801z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-98.304 128.276C-98.304 128.276 -96.526 128.939 -96.872 129.687C-97.218 130.435 -147.866 126.346 -153.998 146.064C-153.998 146.064 -153.646 126.825 -98.304 128.276z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-109.009 110.072C-109.009 110.072 -107.701 111.446 -108.34 111.967C-108.979 112.488 -152.722 86.634 -166.869 101.676C-166.869 101.676 -158.128 84.533 -109.009 110.072z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-116.554 114.263C-116.554 114.263 -115.098 115.48 -115.674 116.071C-116.25 116.661 -162.638 95.922 -174.992 112.469C-174.992 112.469 -168.247 94.447 -116.554 114.263z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-119.154 118.335C-119.154 118.335 -117.546 119.343 -118.036 120.006C-118.526 120.669 -167.308 106.446 -177.291 124.522C-177.291 124.522 -173.066 105.749 -119.154 118.335z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-108.42 118.949C-108.42 118.949 -107.298 120.48 -107.999 120.915C-108.7 121.35 -148.769 90.102 -164.727 103.207C-164.727 103.207 -153.862 87.326 -108.42 118.949z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-128.2 90C-128.2 90 -127.6 91.8 -128.4 92C-129.2 92.2 -157.8 50.2 -177.001 57.8C-177.001 57.8 -161.8 46 -128.2 90z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-127.505 96.979C-127.505 96.979 -126.53 98.608 -127.269 98.975C-128.007 99.343 -164.992 64.499 -182.101 76.061C-182.101 76.061 -169.804 61.261 -127.505 96.979z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.172;">
+  <path d="M-127.62 101.349C-127.62 101.349 -126.498 102.88 -127.199 103.315C-127.9 103.749 -167.969 72.502 -183.927 85.607C-183.927 85.607 -173.062 69.726 -127.62 101.349z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0);">
+  <path d="M-129.83 103.065C-129.327 109.113 -128.339 115.682 -126.6 118.801C-126.6 118.801 -130.2 131.201 -121.4 144.401C-121.4 144.401 -121.8 151.601 -120.2 154.801C-120.2 154.801 -116.2 163.201 -111.4 164.001C-107.516 164.648 -98.793 167.717 -88.932 169.121C-88.932 169.121 -71.8 183.201 -75 196.001C-75 196.001 -75.4 212.401 -79 214.001C-79 214.001 -67.4 202.801 -77 219.601L-81.4 238.401C-81.4 238.401 -55.8 216.801 -71.4 235.201L-81.4 261.201C-81.4 261.201 -61.8 242.801 -69 251.201L-72.2 260.001C-72.2 260.001 -29 232.801 -59.8 262.401C-59.8 262.401 -51.8 258.801 -47.4 261.601C-47.4 261.601 -40.6 260.401 -41.4 262.001C-41.4 262.001 -62.2 272.401 -65.8 290.801C-65.8 290.801 -57.4 280.801 -60.6 291.601L-60.2 303.201C-60.2 303.201 -56.2 281.601 -56.6 319.201C-56.6 319.201 -37.4 301.201 -49 322.001L-49 338.801C-49 338.801 -33.8 322.401 -40.2 335.201C-40.2 335.201 -30.2 326.401 -34.2 341.601C-34.2 341.601 -35 352.001 -30.6 340.801C-30.6 340.801 -14.6 310.201 -20.6 336.401C-20.6 336.401 -21.4 355.601 -16.6 340.801C-16.6 340.801 -16.2 351.201 -7 358.401C-7 358.401 -8.2 307.601 4.6 343.601L8.6 360.001C8.6 360.001 11.4 350.801 11 345.601C11 345.601 25.8 329.201 19 353.601C19 353.601 34.2 330.801 31 344.001C31 344.001 23.4 360.001 25 364.801C25 364.801 41.8 330.001 43 328.401C43 328.401 41 370.802 51.8 334.801C51.8 334.801 57.4 346.801 54.6 351.201C54.6 351.201 62.6 343.201 61.8 340.001C61.8 340.001 66.4 331.801 69.2 345.401C69.2 345.401 71 354.801 72.6 351.601C72.6 351.601 76.6 375.602 77.8 352.801C77.8 352.801 79.4 339.201 72.2 327.601C72.2 327.601 73 324.401 70.2 320.401C70.2 320.401 83.8 342.001 76.6 313.201C76.6 313.201 87.801 321.201 89.001 321.201C89.001 321.201 75.4 298.001 84.2 302.801C84.2 302.801 79 292.401 97.001 304.401C97.001 304.401 81 288.401 98.601 298.001C98.601 298.001 106.601 304.401 99.001 294.401C99.001 294.401 84.6 278.401 106.601 296.401C106.601 296.401 118.201 312.801 119.001 315.601C119.001 315.601 109.001 286.401 104.601 283.601C104.601 283.601 113.001 247.201 154.201 262.801C154.201 262.801 161.001 280.001 165.401 261.601C165.401 261.601 178.201 255.201 189.401 282.801C189.401 282.801 193.401 269.201 192.601 266.401C192.601 266.401 199.401 267.601 198.601 266.401C198.601 266.401 211.801 270.801 213.001 270.001C213.001 270.001 219.801 276.801 220.201 273.201C220.201 273.201 229.401 276.001 227.401 272.401C227.401 272.401 236.201 288.001 236.601 291.601L239.001 277.601L241.001 280.401C241.001 280.401 242.601 272.801 241.801 271.601C241.001 270.401 261.801 278.401 266.601 299.201L268.601 307.601C268.601 307.601 274.601 292.801 273.001 288.801C273.001 288.801 278.201 289.601 278.601 294.001C278.601 294.001 282.601 270.801 277.801 264.801C277.801 264.801 282.201 264.001 283.401 267.601L283.401 260.401C283.401 260.401 290.601 261.201 290.601 258.801C290.601 258.801 295.001 254.801 297.001 259.601C297.001 259.601 284.601 224.401 303.001 243.601C303.001 243.601 310.201 254.401 306.601 235.601C303.001 216.801 299.001 215.201 303.801 214.801C303.801 214.801 304.601 211.201 302.601 209.601C300.601 208.001 303.801 209.601 303.801 209.601C303.801 209.601 308.601 213.601 303.401 191.601C303.401 191.601 309.801 193.201 297.801 164.001C297.801 164.001 300.601 161.601 296.601 153.201C296.601 153.201 304.601 157.601 307.401 156.001C307.401 156.001 307.001 154.401 303.801 150.401C303.801 150.401 282.201 95.6 302.601 117.601C302.601 117.601 314.451 131.151 308.051 108.351C308.051 108.351 298.94 84.341 299.717 80.045L-129.83 103.065z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38); stroke: rgb(0, 0, 0);">
+  <path d="M299.717 80.245C300.345 80.426 302.551 81.55 303.801 83.2C303.801 83.2 310.601 94 305.401 75.6C305.401 75.6 296.201 46.8 305.001 58C305.001 58 311.001 65.2 307.801 51.6C303.936 35.173 301.401 28.8 301.401 28.8C301.401 28.8 313.001 33.6 286.201 -6L295.001 -2.4C295.001 -2.4 275.401 -42 253.801 -47.2L245.801 -53.2C245.801 -53.2 284.201 -91.2 271.401 -128C271.401 -128 264.601 -133.2 255.001 -124C255.001 -124 248.601 -119.2 242.601 -120.8C242.601 -120.8 211.801 -119.6 209.801 -119.6C207.801 -119.6 173.001 -156.8 107.401 -139.2C107.401 -139.2 102.201 -137.2 97.801 -138.4C97.801 -138.4 79.4 -154.4 30.6 -131.6C30.6 -131.6 20.6 -129.6 19 -129.6C17.4 -129.6 14.6 -129.6 6.6 -123.2C-1.4 -116.8 -1.8 -116 -3.8 -114.4C-3.8 -114.4 -20.2 -103.2 -25 -102.4C-25 -102.4 -36.6 -96 -41 -86L-44.6 -84.8C-44.6 -84.8 -46.2 -77.6 -46.6 -76.4C-46.6 -76.4 -51.4 -72.8 -52.2 -67.2C-52.2 -67.2 -61 -61.2 -60.6 -56.8C-60.6 -56.8 -62.2 -51.6 -63 -46.8C-63 -46.8 -70.2 -42 -69.4 -39.2C-69.4 -39.2 -77 -25.2 -75.8 -18.4C-75.8 -18.4 -82.2 -18.8 -85 -16.4C-85 -16.4 -85.8 -11.6 -87.4 -11.2C-87.4 -11.2 -90.2 -10 -87.8 -6C-87.8 -6 -89.4 -3.2 -89.8 -1.6C-89.8 -1.6 -89 1.2 -93.4 6.8C-93.4 6.8 -99.8 25.6 -97.8 30.8C-97.8 30.8 -97.4 35.6 -100.2 37.2C-100.2 37.2 -103.8 36.8 -95.4 48.8C-95.4 48.8 -94.6 50 -97.8 52.4C-97.8 52.4 -115 56 -117.4 72.4C-117.4 72.4 -131 87.2 -131 92.4C-131 94.705 -130.729 97.852 -130.03 102.465C-130.03 102.465 -130.6 110.801 -103 111.601C-75.4 112.401 299.717 80.245 299.717 80.245z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M-115.6 102.6C-140.6 63.2 -126.2 119.601 -126.2 119.601C-117.4 154.001 12.2 116.401 12.2 116.401C12.2 116.401 181.001 86 192.201 82C203.401 78 298.601 84.4 298.601 84.4L293.001 67.6C228.201 21.2 209.001 44.4 195.401 40.4C181.801 36.4 184.201 46 181.001 46.8C177.801 47.6 138.601 22.8 132.201 23.6C125.801 24.4 100.459 0.649 115.401 32.4C131.401 66.4 57 71.6 40.2 60.4C23.4 49.2 47.4 78.8 47.4 78.8C65.8 98.8 31.4 82 31.4 82C-3 69.2 -27 94.8 -30.2 95.6C-33.4 96.4 -38.2 99.6 -39 93.2C-39.8 86.8 -47.31 70.099 -79 96.4C-99 113.001 -112.8 91 -112.8 91L-115.6 102.6z"/>
+ </g>
+ <g style="fill: rgb(232, 127, 58);">
+  <path d="M133.51 25.346C127.11 26.146 101.743 2.407 116.71 34.146C133.31 69.346 58.31 73.346 41.51 62.146C24.709 50.946 48.71 80.546 48.71 80.546C67.11 100.546 32.709 83.746 32.709 83.746C-1.691 70.946 -25.691 96.546 -28.891 97.346C-32.091 98.146 -36.891 101.346 -37.691 94.946C-38.491 88.546 -45.87 72.012 -77.691 98.146C-98.927 115.492 -112.418 94.037 -112.418 94.037L-115.618 104.146C-140.618 64.346 -125.546 122.655 -125.546 122.655C-116.745 157.056 13.509 118.146 13.509 118.146C13.509 118.146 182.31 87.746 193.51 83.746C204.71 79.746 299.038 86.073 299.038 86.073L293.51 68.764C228.71 22.364 210.31 46.146 196.71 42.146C183.11 38.146 185.51 47.746 182.31 48.546C179.11 49.346 139.91 24.546 133.51 25.346z"/>
+ </g>
+ <g style="fill: rgb(234, 140, 77);">
+  <path d="M134.819 27.091C128.419 27.891 103.685 3.862 118.019 35.891C134.219 72.092 59.619 75.092 42.819 63.892C26.019 52.692 50.019 82.292 50.019 82.292C68.419 102.292 34.019 85.492 34.019 85.492C-0.381 72.692 -24.382 98.292 -27.582 99.092C-30.782 99.892 -35.582 103.092 -36.382 96.692C-37.182 90.292 -44.43 73.925 -76.382 99.892C-98.855 117.983 -112.036 97.074 -112.036 97.074L-115.636 105.692C-139.436 66.692 -124.891 125.71 -124.891 125.71C-116.091 160.11 14.819 119.892 14.819 119.892C14.819 119.892 183.619 89.492 194.819 85.492C206.019 81.492 299.474 87.746 299.474 87.746L294.02 69.928C229.219 23.528 211.619 47.891 198.019 43.891C184.419 39.891 186.819 49.491 183.619 50.292C180.419 51.092 141.219 26.291 134.819 27.091z"/>
+ </g>
+ <g style="fill: rgb(236, 153, 97);">
+  <path d="M136.128 28.837C129.728 29.637 104.999 5.605 119.328 37.637C136.128 75.193 60.394 76.482 44.128 65.637C27.328 54.437 51.328 84.037 51.328 84.037C69.728 104.037 35.328 87.237 35.328 87.237C0.928 74.437 -23.072 100.037 -26.272 100.837C-29.472 101.637 -34.272 104.837 -35.072 98.437C-35.872 92.037 -42.989 75.839 -75.073 101.637C-98.782 120.474 -111.655 100.11 -111.655 100.11L-115.655 107.237C-137.455 70.437 -124.236 128.765 -124.236 128.765C-115.436 163.165 16.128 121.637 16.128 121.637C16.128 121.637 184.928 91.237 196.129 87.237C207.329 83.237 299.911 89.419 299.911 89.419L294.529 71.092C229.729 24.691 212.929 49.637 199.329 45.637C185.728 41.637 188.128 51.237 184.928 52.037C181.728 52.837 142.528 28.037 136.128 28.837z"/>
+ </g>
+ <g style="fill: rgb(238, 165, 117);">
+  <path d="M137.438 30.583C131.037 31.383 106.814 7.129 120.637 39.383C137.438 78.583 62.237 78.583 45.437 67.383C28.637 56.183 52.637 85.783 52.637 85.783C71.037 105.783 36.637 88.983 36.637 88.983C2.237 76.183 -21.763 101.783 -24.963 102.583C-28.163 103.383 -32.963 106.583 -33.763 100.183C-34.563 93.783 -41.548 77.752 -73.763 103.383C-98.709 122.965 -111.273 103.146 -111.273 103.146L-115.673 108.783C-135.473 73.982 -123.582 131.819 -123.582 131.819C-114.782 166.22 17.437 123.383 17.437 123.383C17.437 123.383 186.238 92.983 197.438 88.983C208.638 84.983 300.347 91.092 300.347 91.092L295.038 72.255C230.238 25.855 214.238 51.383 200.638 47.383C187.038 43.383 189.438 52.983 186.238 53.783C183.038 54.583 143.838 29.783 137.438 30.583z"/>
+ </g>
+ <g style="fill: rgb(241, 178, 136);">
+  <path d="M138.747 32.328C132.347 33.128 106.383 9.677 121.947 41.128C141.147 79.928 63.546 80.328 46.746 69.128C29.946 57.928 53.946 87.528 53.946 87.528C72.346 107.528 37.946 90.728 37.946 90.728C3.546 77.928 -20.454 103.528 -23.654 104.328C-26.854 105.128 -31.654 108.328 -32.454 101.928C-33.254 95.528 -40.108 79.665 -72.454 105.128C-98.636 125.456 -110.891 106.183 -110.891 106.183L-115.691 110.328C-133.691 77.128 -122.927 134.874 -122.927 134.874C-114.127 169.274 18.746 125.128 18.746 125.128C18.746 125.128 187.547 94.728 198.747 90.728C209.947 86.728 300.783 92.764 300.783 92.764L295.547 73.419C230.747 27.019 215.547 53.128 201.947 49.128C188.347 45.128 190.747 54.728 187.547 55.528C184.347 56.328 145.147 31.528 138.747 32.328z"/>
+ </g>
+ <g style="fill: rgb(243, 191, 156);">
+  <path d="M140.056 34.073C133.655 34.873 107.313 11.613 123.255 42.873C143.656 82.874 64.855 82.074 48.055 70.874C31.255 59.674 55.255 89.274 55.255 89.274C73.655 109.274 39.255 92.474 39.255 92.474C4.855 79.674 -19.145 105.274 -22.345 106.074C-25.545 106.874 -30.345 110.074 -31.145 103.674C-31.945 97.274 -38.668 81.578 -71.145 106.874C-98.564 127.947 -110.509 109.219 -110.509 109.219L-115.709 111.874C-131.709 81.674 -122.273 137.929 -122.273 137.929C-113.473 172.329 20.055 126.874 20.055 126.874C20.055 126.874 188.856 96.474 200.056 92.474C211.256 88.474 301.22 94.437 301.22 94.437L296.056 74.583C231.256 28.183 216.856 54.874 203.256 50.874C189.656 46.873 192.056 56.474 188.856 57.274C185.656 58.074 146.456 33.273 140.056 34.073z"/>
+ </g>
+ <g style="fill: rgb(245, 204, 176);">
+  <path d="M141.365 35.819C134.965 36.619 107.523 13.944 124.565 44.619C146.565 84.219 66.164 83.819 49.364 72.619C32.564 61.419 56.564 91.019 56.564 91.019C74.964 111.019 40.564 94.219 40.564 94.219C6.164 81.419 -17.836 107.019 -21.036 107.819C-24.236 108.619 -29.036 111.819 -29.836 105.419C-30.636 99.019 -37.227 83.492 -69.836 108.619C-98.491 130.438 -110.127 112.256 -110.127 112.256L-115.727 113.419C-130.128 85.019 -121.618 140.983 -121.618 140.983C-112.818 175.384 21.364 128.619 21.364 128.619C21.364 128.619 190.165 98.219 201.365 94.219C212.565 90.219 301.656 96.11 301.656 96.11L296.565 75.746C231.765 29.346 218.165 56.619 204.565 52.619C190.965 48.619 193.365 58.219 190.165 59.019C186.965 59.819 147.765 35.019 141.365 35.819z"/>
+ </g>
+ <g style="fill: rgb(248, 216, 196);">
+  <path d="M142.674 37.565C136.274 38.365 108.832 15.689 125.874 46.365C147.874 85.965 67.474 85.565 50.674 74.365C33.874 63.165 57.874 92.765 57.874 92.765C76.274 112.765 41.874 95.965 41.874 95.965C7.473 83.165 -16.527 108.765 -19.727 109.565C-22.927 110.365 -27.727 113.565 -28.527 107.165C-29.327 100.765 -35.786 85.405 -68.527 110.365C-98.418 132.929 -109.745 115.293 -109.745 115.293L-115.745 114.965C-129.346 88.564 -120.963 144.038 -120.963 144.038C-112.163 178.438 22.673 130.365 22.673 130.365C22.673 130.365 191.474 99.965 202.674 95.965C213.874 91.965 302.093 97.783 302.093 97.783L297.075 76.91C232.274 30.51 219.474 58.365 205.874 54.365C192.274 50.365 194.674 59.965 191.474 60.765C188.274 61.565 149.074 36.765 142.674 37.565z"/>
+ </g>
+ <g style="fill: rgb(250, 229, 215);">
+  <path d="M143.983 39.31C137.583 40.11 110.529 17.223 127.183 48.11C149.183 88.91 68.783 87.31 51.983 76.11C35.183 64.91 59.183 94.51 59.183 94.51C77.583 114.51 43.183 97.71 43.183 97.71C8.783 84.91 -15.217 110.51 -18.417 111.31C-21.618 112.11 -26.418 115.31 -27.218 108.91C-28.018 102.51 -34.346 87.318 -67.218 112.11C-98.345 135.42 -109.363 118.329 -109.363 118.329L-115.764 116.51C-128.764 92.51 -120.309 147.093 -120.309 147.093C-111.509 181.493 23.983 132.11 23.983 132.11C23.983 132.11 192.783 101.71 203.983 97.71C215.183 93.71 302.529 99.456 302.529 99.456L297.583 78.074C232.783 31.673 220.783 60.11 207.183 56.11C193.583 52.11 195.983 61.71 192.783 62.51C189.583 63.31 150.383 38.51 143.983 39.31z"/>
+ </g>
+ <g style="fill: rgb(252, 242, 235);">
+  <path d="M145.292 41.055C138.892 41.855 112.917 18.411 128.492 49.855C149.692 92.656 70.092 89.056 53.292 77.856C36.492 66.656 60.492 96.256 60.492 96.256C78.892 116.256 44.492 99.456 44.492 99.456C10.092 86.656 -13.908 112.256 -17.108 113.056C-20.308 113.856 -25.108 117.056 -25.908 110.656C-26.708 104.256 -32.905 89.232 -65.908 113.856C-98.273 137.911 -108.982 121.365 -108.982 121.365L-115.782 118.056C-128.582 94.856 -119.654 150.147 -119.654 150.147C-110.854 184.547 25.292 133.856 25.292 133.856C25.292 133.856 194.093 103.456 205.293 99.456C216.493 95.456 302.965 101.128 302.965 101.128L298.093 79.237C233.292 32.837 222.093 61.856 208.493 57.856C194.893 53.855 197.293 63.456 194.093 64.256C190.892 65.056 151.692 40.255 145.292 41.055z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M-115.8 119.601C-128.6 97.6 -119 153.201 -119 153.201C-110.2 187.601 26.6 135.601 26.6 135.601C26.6 135.601 195.401 105.2 206.601 101.2C217.801 97.2 303.401 102.8 303.401 102.8L298.601 80.4C233.801 34 223.401 63.6 209.801 59.6C196.201 55.6 198.601 65.2 195.401 66C192.201 66.8 153.001 42 146.601 42.8C140.201 43.6 114.981 19.793 129.801 51.6C152.028 99.307 69.041 89.227 54.6 79.6C37.8 68.4 61.8 98 61.8 98C80.2 118.001 45.8 101.2 45.8 101.2C11.4 88.4 -12.6 114.001 -15.8 114.801C-19 115.601 -23.8 118.801 -24.6 112.401C-25.4 106 -31.465 91.144 -64.6 115.601C-98.2 140.401 -108.6 124.401 -108.6 124.401L-115.8 119.601z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-74.2 149.601C-74.2 149.601 -81.4 161.201 -60.6 174.401C-60.6 174.401 -59.2 175.801 -77.2 171.601C-77.2 171.601 -83.4 169.601 -85 159.201C-85 159.201 -89.8 154.801 -94.6 149.201C-99.4 143.601 -74.2 149.601 -74.2 149.601z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M65.8 102C65.8 102 83.498 128.821 82.9 133.601C81.6 144.001 81.4 153.601 84.6 157.601C87.801 161.601 96.601 194.801 96.601 194.801C96.601 194.801 96.201 196.001 108.601 158.001C108.601 158.001 120.201 142.001 100.201 123.601C100.201 123.601 65 94.8 65.8 102z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-54.2 176.401C-54.2 176.401 -43 183.601 -57.4 214.801L-51 212.401C-51 212.401 -51.8 223.601 -55 226.001L-47.8 222.801C-47.8 222.801 -43 230.801 -47 235.601C-47 235.601 -30.2 243.601 -31 250.001C-31 250.001 -24.6 242.001 -28.6 235.601C-32.6 229.201 -39.8 233.201 -39 214.801L-47.8 218.001C-47.8 218.001 -42.2 209.201 -42.2 202.801L-50.2 205.201C-50.2 205.201 -34.731 178.623 -45.4 177.201C-51.4 176.401 -54.2 176.401 -54.2 176.401z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-21.8 193.201C-21.8 193.201 -19 188.801 -21.8 189.601C-24.6 190.401 -55.8 205.201 -61.8 214.801C-61.8 214.801 -27.4 190.401 -21.8 193.201z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-11.4 201.201C-11.4 201.201 -8.6 196.801 -11.4 197.601C-14.2 198.401 -45.4 213.201 -51.4 222.801C-51.4 222.801 -17 198.401 -11.4 201.201z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M1.8 186.001C1.8 186.001 4.6 181.601 1.8 182.401C-1 183.201 -32.2 198.001 -38.2 207.601C-38.2 207.601 -3.8 183.201 1.8 186.001z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-21.4 229.601C-21.4 229.601 -21.4 223.601 -24.2 224.401C-27 225.201 -63 242.801 -69 252.401C-69 252.401 -27 226.801 -21.4 229.601z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-20.2 218.801C-20.2 218.801 -19 214.001 -21.8 214.801C-23.8 214.801 -50.2 226.401 -56.2 236.001C-56.2 236.001 -26.6 214.401 -20.2 218.801z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-34.6 266.401L-44.6 274.001C-44.6 274.001 -34.2 266.401 -30.6 267.601C-30.6 267.601 -37.4 278.801 -38.2 284.001C-38.2 284.001 -27.8 271.201 -22.2 271.601C-22.2 271.601 -14.6 272.001 -14.6 282.801C-14.6 282.801 -9 272.401 -5.8 272.801C-5.8 272.801 -4.6 279.201 -5.8 286.001C-5.8 286.001 -1.8 278.401 2.2 280.001C2.2 280.001 8.6 278.001 7.8 289.601C7.8 289.601 7.8 300.001 7 302.801C7 302.801 12.6 276.401 15 276.001C15 276.001 23 274.801 27.8 283.601C27.8 283.601 23.8 276.001 28.6 278.001C28.6 278.001 39.4 279.601 42.6 286.401C42.6 286.401 35.8 274.401 41.4 277.601C41.4 277.601 48.2 277.601 49.4 284.001C49.4 284.001 57.8 305.201 59.8 306.801C59.8 306.801 52.2 285.201 53.8 285.201C53.8 285.201 51.8 273.201 57 288.001C57 288.001 53.8 274.001 59.4 274.801C65 275.601 69.4 285.601 77.8 283.201C77.8 283.201 87.401 288.801 89.401 219.601L-34.6 266.401z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-29.8 173.601C-29.8 173.601 -15 167.601 25 173.601C25 173.601 32.2 174.001 39 165.201C45.8 156.401 72.6 149.201 79 151.201L88.601 157.601L89.401 158.801C89.401 158.801 101.801 169.201 102.201 176.801C102.601 184.401 87.801 232.401 78.2 248.401C68.6 264.401 59 276.801 39.8 274.401C39.8 274.401 19 270.401 -6.6 274.401C-6.6 274.401 -35.8 272.801 -38.6 264.801C-41.4 256.801 -27.4 241.601 -27.4 241.601C-27.4 241.601 -23 233.201 -24.2 218.801C-25.4 204.401 -25 176.401 -29.8 173.601z"/>
+ </g>
+ <g style="fill: rgb(229, 102, 140);">
+  <path d="M-7.8 175.601C0.6 194.001 -29 259.201 -29 259.201C-31 260.801 -16.34 266.846 -6.2 264.401C4.746 261.763 45 266.001 45 266.001C68.6 250.401 81.4 206.001 81.4 206.001C81.4 206.001 91.801 182.001 74.2 178.801C56.6 175.601 -7.8 175.601 -7.8 175.601z"/>
+ </g>
+ <g style="fill: rgb(178, 50, 89);">
+  <path d="M-9.831 206.497C-6.505 193.707 -4.921 181.906 -7.8 175.601C-7.8 175.601 54.6 182.001 65.8 161.201C70.041 153.326 84.801 184.001 84.4 193.601C84.4 193.601 21.4 208.001 6.6 196.801L-9.831 206.497z"/>
+ </g>
+ <g style="fill: rgb(165, 38, 76);">
+  <path d="M-5.4 222.801C-5.4 222.801 -3.4 230.001 -5.8 234.001C-5.8 234.001 -7.4 234.801 -8.6 235.201C-8.6 235.201 -7.4 238.801 -1.4 240.401C-1.4 240.401 0.6 244.801 3 245.201C5.4 245.601 10.2 251.201 14.2 250.001C18.2 248.801 29.4 244.801 29.4 244.801C29.4 244.801 35 241.601 43.8 245.201C43.8 245.201 46.175 244.399 46.6 240.401C47.1 235.701 50.2 232.001 52.2 230.001C54.2 228.001 63.8 215.201 62.6 214.801C61.4 214.401 -5.4 222.801 -5.4 222.801z"/>
+ </g>
+ <g style="fill: rgb(255, 114, 127); stroke: rgb(0, 0, 0);">
+  <path d="M-9.8 174.401C-9.8 174.401 -12.6 196.801 -9.4 205.201C-6.2 213.601 -7 215.601 -7.8 219.601C-8.6 223.601 -4.2 233.601 1.4 239.601L13.4 241.201C13.4 241.201 28.6 237.601 37.8 240.401C37.8 240.401 46.794 241.744 50.2 226.801C50.2 226.801 55 220.401 62.2 217.601C69.4 214.801 76.6 173.201 72.6 165.201C68.6 157.201 54.2 152.801 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-8.2 249.201C-8.2 249.201 -9 247.201 -13.4 246.801C-13.4 246.801 -35.8 243.201 -44.2 230.801C-44.2 230.801 -51 225.201 -46.6 236.801C-46.6 236.801 -36.2 257.201 -29.4 260.001C-29.4 260.001 -13 264.001 -8.2 249.201z"/>
+ </g>
+ <g style="fill: rgb(204, 63, 76);">
+  <path d="M71.742 185.229C72.401 177.323 74.354 168.709 72.6 165.201C66.154 152.307 49.181 157.695 38.2 168.401C22.2 184.001 20.2 167.201 -9.8 174.401C-9.8 174.401 -11.545 188.364 -10.705 198.376C-10.705 198.376 26.6 186.801 27.4 192.401C27.4 192.401 29 189.201 38.2 189.201C47.4 189.201 70.142 188.029 71.742 185.229z"/>
+ </g>
+ <g style="stroke: rgb(165, 25, 38); stroke-width: 2;">
+  <path d="M28.6 175.201C28.6 175.201 33.4 180.001 29.8 189.601C29.8 189.601 15.4 205.601 17.4 219.601"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-19.4 260.001C-19.4 260.001 -23.8 247.201 -15 254.001C-15 254.001 -10.2 256.001 -11.4 257.601C-12.6 259.201 -18.2 263.201 -19.4 260.001z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-14.36 261.201C-14.36 261.201 -17.88 250.961 -10.84 256.401C-10.84 256.401 -6.419 258.849 -7.96 259.281C-12.52 260.561 -7.96 263.121 -14.36 261.201z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-9.56 261.201C-9.56 261.201 -13.08 250.961 -6.04 256.401C-6.04 256.401 -1.665 258.711 -3.16 259.281C-6.52 260.561 -3.16 263.121 -9.56 261.201z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-2.96 261.401C-2.96 261.401 -6.48 251.161 0.56 256.601C0.56 256.601 4.943 258.933 3.441 259.481C0.48 260.561 3.441 263.321 -2.96 261.401z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M3.52 261.321C3.52 261.321 0 251.081 7.041 256.521C7.041 256.521 10.881 258.121 9.921 259.401C8.961 260.681 9.921 263.241 3.52 261.321z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M10.2 262.001C10.2 262.001 5.4 249.601 14.6 256.001C14.6 256.001 19.4 258.001 18.2 259.601C17 261.201 18.2 264.401 10.2 262.001z"/>
+ </g>
+ <g style="stroke: rgb(165, 38, 76); stroke-width: 2;">
+  <path d="M-18.2 244.801C-18.2 244.801 -5 242.001 1 245.201C1 245.201 7 246.401 8.2 246.001C9.4 245.601 12.6 245.201 12.6 245.201"/>
+ </g>
+ <g style="stroke: rgb(165, 38, 76); stroke-width: 2;">
+  <path d="M15.8 253.601C15.8 253.601 27.8 240.001 39.8 244.401C46.816 246.974 45.8 243.601 46.6 240.801C47.4 238.001 47.6 233.801 52.6 230.801"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M33 237.601C33 237.601 29 226.801 26.2 239.601C23.4 252.401 20.2 256.001 18.6 258.801C18.6 258.801 18.6 264.001 27 263.601C27 263.601 37.8 263.201 38.2 260.401C38.6 257.601 37 246.001 33 237.601z"/>
+ </g>
+ <g style="stroke: rgb(165, 38, 76); stroke-width: 2;">
+  <path d="M47 244.801C47 244.801 50.6 242.401 53 243.601"/>
+ </g>
+ <g style="stroke: rgb(165, 38, 76); stroke-width: 2;">
+  <path d="M53.5 228.401C53.5 228.401 56.4 223.501 61.2 222.701"/>
+ </g>
+ <g style="fill: rgb(178, 178, 178);">
+  <path d="M-25.8 265.201C-25.8 265.201 -7.8 268.401 -3.4 266.801C-3.4 266.801 5.4 266.801 -3 268.801C-3 268.801 -15.8 268.801 -23.8 267.601C-23.8 267.601 -35.4 262.001 -25.8 265.201z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-11.8 172.001C-11.8 172.001 5.8 172.001 7.8 172.801C7.8 172.801 15 203.601 11.4 211.201C11.4 211.201 10.2 214.001 7.4 208.401C7.4 208.401 -11 175.601 -14.2 173.601C-17.4 171.601 -13 172.001 -11.8 172.001z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-88.9 169.301C-88.9 169.301 -80 171.001 -67.4 173.601C-67.4 173.601 -62.6 196.001 -59.4 200.801C-56.2 205.601 -59.8 205.601 -63.4 202.801C-67 200.001 -81.8 186.001 -83.8 181.601C-85.8 177.201 -88.9 169.301 -88.9 169.301z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-67.039 173.818C-67.039 173.818 -61.239 175.366 -60.23 177.581C-59.222 179.795 -61.432 183.092 -61.432 183.092C-61.432 183.092 -62.432 186.397 -63.634 184.235C-64.836 182.072 -67.708 174.412 -67.039 173.818z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-67 173.601C-67 173.601 -63.4 178.801 -59.8 178.801C-56.2 178.801 -55.818 178.388 -53 179.001C-48.4 180.001 -48.8 178.001 -42.2 179.201C-39.56 179.681 -37 178.801 -34.2 180.001C-31.4 181.201 -28.2 180.401 -27 178.401C-25.8 176.401 -21 172.201 -21 172.201C-21 172.201 -33.8 174.001 -36.6 174.801C-36.6 174.801 -59 176.001 -67 173.601z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-22.4 173.801C-22.4 173.801 -28.85 177.301 -29.25 179.701C-29.65 182.101 -24 185.801 -24 185.801C-24 185.801 -21.25 190.401 -20.65 188.001C-20.05 185.601 -21.6 174.201 -22.4 173.801z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-59.885 179.265C-59.885 179.265 -52.878 190.453 -52.661 179.242C-52.661 179.242 -52.104 177.984 -53.864 177.962C-59.939 177.886 -58.418 173.784 -59.885 179.265z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-52.707 179.514C-52.707 179.514 -44.786 190.701 -45.422 179.421C-45.422 179.421 -45.415 179.089 -47.168 178.936C-51.915 178.522 -51.57 174.004 -52.707 179.514z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-45.494 179.522C-45.494 179.522 -37.534 190.15 -38.203 180.484C-38.203 180.484 -38.084 179.251 -39.738 178.95C-43.63 178.244 -43.841 174.995 -45.494 179.522z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 204); stroke: rgb(0, 0, 0); stroke-width: 0.5;">
+  <path d="M-38.618 179.602C-38.618 179.602 -30.718 191.163 -30.37 181.382C-30.37 181.382 -28.726 180.004 -30.472 179.782C-36.29 179.042 -35.492 174.588 -38.618 179.602z"/>
+ </g>
+ <g style="fill: rgb(229, 229, 178);">
+  <path d="M-74.792 183.132L-82.45 181.601C-85.05 176.601 -87.15 170.451 -87.15 170.451C-87.15 170.451 -80.8 171.451 -68.3 174.251C-68.3 174.251 -67.424 177.569 -65.952 183.364L-74.792 183.132z"/>
+ </g>
+ <g style="fill: rgb(229, 229, 178);">
+  <path d="M-9.724 178.47C-11.39 175.964 -12.707 174.206 -13.357 173.8C-16.37 171.917 -12.227 172.294 -11.098 172.294C-11.098 172.294 5.473 172.294 7.356 173.047C7.356 173.047 7.88 175.289 8.564 178.68C8.564 178.68 -1.524 176.67 -9.724 178.47z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M43.88 40.321C71.601 44.281 97.121 8.641 98.881 -1.04C100.641 -10.72 90.521 -22.6 90.521 -22.6C91.841 -25.68 87.001 -39.76 81.721 -49C76.441 -58.24 60.54 -57.266 43 -58.24C27.16 -59.12 8.68 -35.8 7.36 -34.04C6.04 -32.28 12.2 6.001 13.52 11.721C14.84 17.441 12.2 43.841 12.2 43.841C46.44 34.741 16.16 36.361 43.88 40.321z"/>
+ </g>
+ <g style="fill: rgb(234, 142, 81);">
+  <path d="M8.088 -33.392C6.792 -31.664 12.84 5.921 14.136 11.537C15.432 17.153 12.84 43.073 12.84 43.073C45.512 34.193 16.728 35.729 43.944 39.617C71.161 43.505 96.217 8.513 97.945 -0.992C99.673 -10.496 89.737 -22.16 89.737 -22.16C91.033 -25.184 86.281 -39.008 81.097 -48.08C75.913 -57.152 60.302 -56.195 43.08 -57.152C27.528 -58.016 9.384 -35.12 8.088 -33.392z"/>
+ </g>
+ <g style="fill: rgb(239, 170, 124);">
+  <path d="M8.816 -32.744C7.544 -31.048 13.48 5.841 14.752 11.353C16.024 16.865 13.48 42.305 13.48 42.305C44.884 33.145 17.296 35.097 44.008 38.913C70.721 42.729 95.313 8.385 97.009 -0.944C98.705 -10.272 88.953 -21.72 88.953 -21.72C90.225 -24.688 85.561 -38.256 80.473 -47.16C75.385 -56.064 60.063 -55.125 43.16 -56.064C27.896 -56.912 10.088 -34.44 8.816 -32.744z"/>
+ </g>
+ <g style="fill: rgb(244, 198, 168);">
+  <path d="M9.544 -32.096C8.296 -30.432 14.12 5.761 15.368 11.169C16.616 16.577 14.12 41.537 14.12 41.537C43.556 32.497 17.864 34.465 44.072 38.209C70.281 41.953 94.409 8.257 96.073 -0.895C97.737 -10.048 88.169 -21.28 88.169 -21.28C89.417 -24.192 84.841 -37.504 79.849 -46.24C74.857 -54.976 59.824 -54.055 43.24 -54.976C28.264 -55.808 10.792 -33.76 9.544 -32.096z"/>
+ </g>
+ <g style="fill: rgb(249, 226, 211);">
+  <path d="M10.272 -31.448C9.048 -29.816 14.76 5.681 15.984 10.985C17.208 16.289 14.76 40.769 14.76 40.769C42.628 31.849 18.432 33.833 44.136 37.505C69.841 41.177 93.505 8.129 95.137 -0.848C96.769 -9.824 87.385 -20.84 87.385 -20.84C88.609 -23.696 84.121 -36.752 79.225 -45.32C74.329 -53.888 59.585 -52.985 43.32 -53.888C28.632 -54.704 11.496 -33.08 10.272 -31.448z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M44.2 36.8C69.4 40.4 92.601 8 94.201 -0.8C95.801 -9.6 86.601 -20.4 86.601 -20.4C87.801 -23.2 83.4 -36 78.6 -44.4C73.8 -52.8 59.346 -51.914 43.4 -52.8C29 -53.6 12.2 -32.4 11 -30.8C9.8 -29.2 15.4 5.6 16.6 10.8C17.8 16 15.4 40 15.4 40C40.9 31.4 19 33.2 44.2 36.8z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M90.601 2.8C90.601 2.8 62.8 10.4 51.2 8.8C51.2 8.8 35.4 2.2 26.6 24C26.6 24 23 31.2 21 33.2C19 35.2 90.601 2.8 90.601 2.8z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M94.401 0.6C94.401 0.6 65.4 12.8 55.4 12.4C55.4 12.4 39 7.8 30.6 22.4C30.6 22.4 22.2 31.6 19 33.2C19 33.2 18.6 34.8 25 30.8L35.4 36C35.4 36 50.2 45.6 59.8 29.6C59.8 29.6 63.8 18.4 63.8 16.4C63.8 14.4 85 8.8 86.601 8.4C88.201 8 94.801 3.8 94.401 0.6z"/>
+ </g>
+ <g style="fill: rgb(153, 204, 50);">
+  <path d="M47 36.514C40.128 36.514 31.755 32.649 31.755 26.4C31.755 20.152 40.128 13.887 47 13.887C53.874 13.887 59.446 18.952 59.446 25.2C59.446 31.449 53.874 36.514 47 36.514z"/>
+ </g>
+ <g style="fill: rgb(101, 153, 0);">
+  <path d="M43.377 19.83C38.531 20.552 33.442 22.055 33.514 21.839C35.054 17.22 41.415 13.887 47 13.887C51.296 13.887 55.084 15.865 57.32 18.875C57.32 18.875 52.004 18.545 43.377 19.83z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M55.4 19.6C55.4 19.6 51 16.4 51 18.6C51 18.6 54.6 23 55.4 19.6z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M45.4 27.726C42.901 27.726 40.875 25.7 40.875 23.2C40.875 20.701 42.901 18.675 45.4 18.675C47.9 18.675 49.926 20.701 49.926 23.2C49.926 25.7 47.9 27.726 45.4 27.726z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M-58.6 14.4C-58.6 14.4 -61.8 -6.8 -59.4 -11.2C-59.4 -11.2 -48.6 -21.2 -49 -24.8C-49 -24.8 -49.4 -42.8 -50.6 -43.6C-51.8 -44.4 -59.4 -50.4 -65.4 -44C-65.4 -44 -75.8 -26 -75 -19.6L-75 -17.6C-75 -17.6 -82.6 -18 -84.2 -16C-84.2 -16 -85.4 -10.8 -86.6 -10.4C-86.6 -10.4 -89.4 -8 -87.4 -5.2C-87.4 -5.2 -89.4 -2.8 -89 1.2L-81.4 5.2C-81.4 5.2 -79.4 19.6 -68.6 24.8C-63.764 27.129 -60.6 20.4 -58.6 14.4z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M-59.6 12.56C-59.6 12.56 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.48 -40.36 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.96 -59.6 12.56z"/>
+ </g>
+ <g style="fill: rgb(235, 149, 92);">
+  <path d="M-51.05 -42.61C-52.14 -43.47 -59.63 -49.24 -65.48 -43C-65.48 -43 -75.62 -25.45 -74.84 -19.21L-74.84 -17.26C-74.84 -17.26 -82.25 -17.65 -83.81 -15.7C-83.81 -15.7 -84.98 -10.63 -86.15 -10.24C-86.15 -10.24 -88.88 -7.9 -86.93 -5.17C-86.93 -5.17 -88.88 -2.83 -88.49 1.07L-81.08 4.97C-81.08 4.97 -79.13 19.01 -68.6 24.08C-63.886 26.35 -60.8 19.79 -58.85 13.94C-58.85 13.94 -61.97 -6.73 -59.63 -11.02C-59.63 -11.02 -49.1 -20.77 -49.49 -24.28C-49.49 -24.28 -49.88 -41.83 -51.05 -42.61z"/>
+ </g>
+ <g style="fill: rgb(242, 184, 146);">
+  <path d="M-51.5 -41.62C-52.48 -42.54 -59.86 -48.08 -65.56 -42C-65.56 -42 -75.44 -24.9 -74.68 -18.82L-74.68 -16.92C-74.68 -16.92 -81.9 -17.3 -83.42 -15.4C-83.42 -15.4 -84.56 -10.46 -85.7 -10.08C-85.7 -10.08 -88.36 -7.8 -86.46 -5.14C-86.46 -5.14 -88.36 -2.86 -87.98 0.94L-80.76 4.74C-80.76 4.74 -78.86 18.42 -68.6 23.36C-64.006 25.572 -61 19.18 -59.1 13.48C-59.1 13.48 -62.14 -6.66 -59.86 -10.84C-59.86 -10.84 -49.6 -20.34 -49.98 -23.76C-49.98 -23.76 -50.36 -40.86 -51.5 -41.62z"/>
+ </g>
+ <g style="fill: rgb(248, 220, 200);">
+  <path d="M-51.95 -40.63C-52.82 -41.61 -60.09 -46.92 -65.64 -41C-65.64 -41 -75.26 -24.35 -74.52 -18.43L-74.52 -16.58C-74.52 -16.58 -81.55 -16.95 -83.03 -15.1C-83.03 -15.1 -84.14 -10.29 -85.25 -9.92C-85.25 -9.92 -87.84 -7.7 -85.99 -5.11C-85.99 -5.11 -87.84 -2.89 -87.47 0.81L-80.44 4.51C-80.44 4.51 -78.59 17.83 -68.6 22.64C-64.127 24.794 -61.2 18.57 -59.35 13.02C-59.35 13.02 -62.31 -6.59 -60.09 -10.66C-60.09 -10.66 -50.1 -19.91 -50.47 -23.24C-50.47 -23.24 -50.84 -39.89 -51.95 -40.63z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M-59.6 12.46C-59.6 12.46 -62.48 -6.52 -60.32 -10.48C-60.32 -10.48 -50.6 -19.48 -50.96 -22.72C-50.96 -22.72 -51.32 -38.92 -52.4 -39.64C-53.16 -40.68 -60.32 -45.76 -65.72 -40C-65.72 -40 -75.08 -23.8 -74.36 -18.04L-74.36 -16.24C-74.36 -16.24 -81.2 -16.6 -82.64 -14.8C-82.64 -14.8 -83.72 -10.12 -84.8 -9.76C-84.8 -9.76 -87.32 -7.6 -85.52 -5.08C-85.52 -5.08 -87.32 -2.92 -86.96 0.68L-80.12 4.28C-80.12 4.28 -78.32 17.24 -68.6 21.92C-64.248 24.015 -61.4 17.86 -59.6 12.46z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-62.7 6.2C-62.7 6.2 -84.3 -4 -85.2 -4.8C-85.2 -4.8 -76.1 3.4 -75.3 3.4C-74.5 3.4 -62.7 6.2 -62.7 6.2z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-79.8 0C-79.8 0 -61.4 3.6 -61.4 8C-61.4 10.912 -61.643 24.331 -67 22.8C-75.4 20.4 -71.8 6 -79.8 0z"/>
+ </g>
+ <g style="fill: rgb(153, 204, 50);">
+  <path d="M-71.4 3.8C-71.4 3.8 -62.422 5.274 -61.4 8C-60.8 9.6 -60.137 17.908 -65.6 19C-70.152 19.911 -72.382 9.69 -71.4 3.8z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M14.595 46.349C14.098 44.607 15.409 44.738 17.2 44.2C19.2 43.6 31.4 39.8 32.2 37.2C33 34.6 46.2 39 46.2 39C48 39.8 52.4 42.4 52.4 42.4C57.2 43.6 63.8 44 63.8 44C66.2 45 69.6 47.8 69.6 47.8C84.2 58 96.601 50.8 96.601 50.8C116.601 44.2 110.601 27 110.601 27C107.601 18 110.801 14.6 110.801 14.6C111.001 10.8 118.201 17.2 118.201 17.2C120.801 21.4 121.601 26.4 121.601 26.4C129.601 37.6 126.201 19.8 126.201 19.8C126.401 18.8 123.601 15.2 123.601 14C123.601 12.8 121.801 9.4 121.801 9.4C118.801 6 121.201 -1 121.201 -1C123.001 -14.8 120.801 -13 120.801 -13C119.601 -14.8 110.401 -4.8 110.401 -4.8C108.201 -1.4 102.201 0.2 102.201 0.2C99.401 2 96.001 0.6 96.001 0.6C93.401 0.2 87.801 7.2 87.801 7.2C90.601 7 93.001 11.4 95.401 11.6C97.801 11.8 99.601 9.2 101.201 8.6C102.801 8 105.601 13.8 105.601 13.8C106.001 16.4 100.401 21.2 100.401 21.2C100.001 25.8 98.401 24.2 98.401 24.2C95.401 23.6 94.201 27.4 93.201 32C92.201 36.6 88.001 37 88.001 37C86.401 44.4 85.2 41.4 85.2 41.4C85 35.8 79 41.6 79 41.6C77.8 43.6 73.2 41.4 73.2 41.4C66.4 39.4 68.8 37.4 68.8 37.4C70.6 35.2 81.8 37.4 81.8 37.4C84 35.8 76 31.8 76 31.8C75.4 30 76.4 25.6 76.4 25.6C77.6 22.4 84.4 16.8 84.4 16.8C93.801 15.6 91.001 14 91.001 14C84.801 8.8 79 16.4 79 16.4C76.8 22.6 59.4 37.6 59.4 37.6C54.6 41 57.2 34.2 53.2 37.6C49.2 41 28.6 32 28.6 32C17.038 30.807 14.306 46.549 10.777 43.429C10.777 43.429 16.195 51.949 14.595 46.349z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M209.401 -120C209.401 -120 183.801 -112 181.001 -93.2C181.001 -93.2 178.601 -70.4 199.001 -52.8C199.001 -52.8 199.401 -46.4 201.401 -43.2C201.401 -43.2 199.801 -38.4 218.601 -46L245.801 -54.4C245.801 -54.4 252.201 -56.8 257.401 -65.6C262.601 -74.4 277.801 -93.2 274.201 -118.4C274.201 -118.4 275.401 -129.6 269.401 -130C269.401 -130 261.001 -131.6 253.801 -124C253.801 -124 247.001 -120.8 244.601 -121.2L209.401 -120z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M264.022 -120.99C264.022 -120.99 266.122 -129.92 261.282 -125.08C261.282 -125.08 254.242 -119.36 246.761 -119.36C246.761 -119.36 232.241 -117.16 227.841 -103.96C227.841 -103.96 223.881 -77.12 231.801 -71.4C231.801 -71.4 236.641 -63.92 243.681 -70.52C250.722 -77.12 266.222 -107.35 264.022 -120.99z"/>
+ </g>
+ <g style="fill: rgb(50, 50, 50);">
+  <path d="M263.648 -120.632C263.648 -120.632 265.738 -129.376 260.986 -124.624C260.986 -124.624 254.074 -119.008 246.729 -119.008C246.729 -119.008 232.473 -116.848 228.153 -103.888C228.153 -103.888 224.265 -77.536 232.041 -71.92C232.041 -71.92 236.793 -64.576 243.705 -71.056C250.618 -77.536 265.808 -107.24 263.648 -120.632z"/>
+ </g>
+ <g style="fill: rgb(102, 102, 102);">
+  <path d="M263.274 -120.274C263.274 -120.274 265.354 -128.832 260.69 -124.168C260.69 -124.168 253.906 -118.656 246.697 -118.656C246.697 -118.656 232.705 -116.536 228.465 -103.816C228.465 -103.816 224.649 -77.952 232.281 -72.44C232.281 -72.44 236.945 -65.232 243.729 -71.592C250.514 -77.952 265.394 -107.13 263.274 -120.274z"/>
+ </g>
+ <g style="fill: rgb(153, 153, 153);">
+  <path d="M262.9 -119.916C262.9 -119.916 264.97 -128.288 260.394 -123.712C260.394 -123.712 253.738 -118.304 246.665 -118.304C246.665 -118.304 232.937 -116.224 228.777 -103.744C228.777 -103.744 225.033 -78.368 232.521 -72.96C232.521 -72.96 237.097 -65.888 243.753 -72.128C250.41 -78.368 264.98 -107.02 262.9 -119.916z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M262.526 -119.558C262.526 -119.558 264.586 -127.744 260.098 -123.256C260.098 -123.256 253.569 -117.952 246.633 -117.952C246.633 -117.952 233.169 -115.912 229.089 -103.672C229.089 -103.672 225.417 -78.784 232.761 -73.48C232.761 -73.48 237.249 -66.544 243.777 -72.664C250.305 -78.784 264.566 -106.91 262.526 -119.558z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M262.151 -119.2C262.151 -119.2 264.201 -127.2 259.801 -122.8C259.801 -122.8 253.401 -117.6 246.601 -117.6C246.601 -117.6 233.401 -115.6 229.401 -103.6C229.401 -103.6 225.801 -79.2 233.001 -74C233.001 -74 237.401 -67.2 243.801 -73.2C250.201 -79.2 264.151 -106.8 262.151 -119.2z"/>
+ </g>
+ <g style="fill: rgb(153, 38, 0);">
+  <path d="M50.6 84C50.6 84 30.2 64.8 22.2 64C22.2 64 -12.2 60 -27 78C-27 78 -9.4 57.6 18.2 63.2C18.2 63.2 -3.4 58.8 -15.8 62C-15.8 62 -32.6 62 -42.2 76L-45 80.8C-45 80.8 -41 66 -22.6 60C-22.6 60 0.2 55.2 11 60C11 60 -10.6 53.2 -20.6 55.2C-20.6 55.2 -51 52.8 -63.8 79.2C-63.8 79.2 -59.8 64.8 -45 57.6C-45 57.6 -31.4 48.8 -11 51.6C-11 51.6 3.4 54.8 8.6 57.2C13.8 59.6 12.6 56.8 4.2 52C4.2 52 -1.4 42 -15.4 42.4C-15.4 42.4 -58.2 46 -68.6 58C-68.6 58 -55 46.8 -44.6 44C-44.6 44 -22.2 36 -13.8 36.8C-13.8 36.8 11 37.8 18.6 33.8C18.6 33.8 7.4 38.8 10.6 42C13.8 45.2 20.6 52.8 20.6 54C20.6 55.2 44.8 77.3 48.4 81.7L50.6 84z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M189 278C189 278 173.5 241.5 161 232C161 232 187 248 190.5 266C190.5 266 190.5 276 189 278z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M236 285.5C236 285.5 209.5 230.5 191 206.5C191 206.5 234.5 244 239.5 270.5L240 276L237 273.5C237 273.5 236.5 282.5 236 285.5z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M292.5 237C292.5 237 230 177.5 228.5 175C228.5 175 289 241 292 248.5C292 248.5 290 239.5 292.5 237z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M104 280.5C104 280.5 123.5 228.5 142.5 251C142.5 251 157.5 261 157 264C157 264 153 257.5 135 258C135 258 116 255 104 280.5z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M294.5 153C294.5 153 249.5 124.5 242 123C230.193 120.639 291.5 152 296.5 162.5C296.5 162.5 298.5 160 294.5 153z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M143.801 259.601C143.801 259.601 164.201 257.601 171.001 250.801L175.401 254.401L193.001 216.001L196.601 221.201C196.601 221.201 211.001 206.401 210.201 198.401C209.401 190.401 223.001 204.401 223.001 204.401C223.001 204.401 222.201 192.801 229.401 199.601C229.401 199.601 227.001 184.001 235.401 192.001C235.401 192.001 224.864 161.844 247.401 187.601C253.001 194.001 248.601 187.201 248.601 187.201C248.601 187.201 222.601 139.201 244.201 153.601C244.201 153.601 246.201 130.801 245.001 126.401C243.801 122.001 241.801 99.6 237.001 94.4C232.201 89.2 237.401 87.6 243.001 92.8C243.001 92.8 231.801 68.8 245.001 80.8C245.001 80.8 241.401 65.6 237.001 62.8C237.001 62.8 231.401 45.6 246.601 56.4C246.601 56.4 242.201 44 239.001 40.8C239.001 40.8 227.401 13.2 234.601 18L239.001 21.6C239.001 21.6 232.201 7.6 238.601 12C245.001 16.4 245.001 16 245.001 16C245.001 16 223.801 -17.2 244.201 0.4C244.201 0.4 236.042 -13.518 232.601 -20.4C232.601 -20.4 213.801 -40.8 228.201 -34.4L233.001 -32.8C233.001 -32.8 224.201 -42.8 216.201 -44.4C208.201 -46 218.601 -52.4 225.001 -50.4C231.401 -48.4 247.001 -40.8 247.001 -40.8C247.001 -40.8 259.801 -22 263.801 -21.6C263.801 -21.6 243.801 -29.2 249.801 -21.2C249.801 -21.2 264.201 -7.2 257.001 -7.6C257.001 -7.6 251.001 -0.4 255.801 8.4C255.801 8.4 237.342 -9.991 252.201 15.6L259.001 32C259.001 32 234.601 7.2 245.801 29.2C245.801 29.2 263.001 52.8 265.001 53.2C267.001 53.6 271.401 62.4 271.401 62.4L267.001 60.4L272.201 69.2C272.201 69.2 261.001 57.2 267.001 70.4L272.601 84.8C272.601 84.8 252.201 62.8 265.801 92.4C265.801 92.4 249.401 87.2 258.201 104.4C258.201 104.4 256.601 120.401 257.001 125.601C257.401 130.801 258.601 159.201 254.201 167.201C249.801 175.201 260.201 194.401 262.201 198.401C264.201 202.401 267.801 213.201 259.001 204.001C250.201 194.801 254.601 200.401 256.601 209.201C258.601 218.001 264.601 233.601 263.801 239.201C263.801 239.201 262.601 240.401 259.401 236.801C259.401 236.801 244.601 214.001 246.201 228.401C246.201 228.401 245.001 236.401 241.801 245.201C241.801 245.201 238.601 256.001 238.601 247.201C238.601 247.201 235.401 230.401 232.601 238.001C229.801 245.601 226.201 251.601 223.401 254.001C220.601 256.401 215.401 233.601 214.201 244.001C214.201 244.001 202.201 231.601 197.401 248.001L185.801 264.401C185.801 264.401 185.401 252.001 184.201 258.001C184.201 258.001 154.201 264.001 143.801 259.601z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M109.401 -97.2C109.401 -97.2 97.801 -105.2 93.801 -104.8C89.801 -104.4 121.401 -113.6 162.601 -86C162.601 -86 167.401 -83.2 171.001 -83.6C171.001 -83.6 174.201 -81.2 171.401 -77.6C171.401 -77.6 162.601 -68 173.801 -56.8C173.801 -56.8 192.201 -50 186.601 -58.8C186.601 -58.8 197.401 -54.8 199.801 -50.8C202.201 -46.8 201.001 -50.8 201.001 -50.8C201.001 -50.8 194.601 -58 188.601 -63.2C188.601 -63.2 183.401 -65.2 180.601 -73.6C177.801 -82 175.401 -92 179.801 -95.2C179.801 -95.2 175.801 -90.8 176.601 -94.8C177.401 -98.8 181.001 -102.4 182.601 -102.8C184.201 -103.2 200.601 -119 207.401 -119.4C207.401 -119.4 198.201 -118 195.201 -119C192.201 -120 165.601 -131.4 159.601 -132.6C159.601 -132.6 142.801 -139.2 154.801 -137.2C154.801 -137.2 190.601 -133.4 208.801 -120.2C208.801 -120.2 201.601 -128.6 183.201 -135.6C183.201 -135.6 161.001 -148.2 125.801 -143.2C125.801 -143.2 108.001 -140 100.201 -138.2C100.201 -138.2 97.601 -138.8 97.001 -139.2C96.401 -139.6 84.6 -148.6 57 -141.6C57 -141.6 40 -137 31.4 -132.2C31.4 -132.2 16.2 -131 12.6 -127.8C12.6 -127.8 -6 -113.2 -8 -112.4C-10 -111.6 -21.4 -104 -22.2 -103.6C-22.2 -103.6 2.4 -110.2 4.8 -112.6C7.2 -115 24.6 -117.6 27 -116.2C29.4 -114.8 37.8 -115.4 28.2 -114.8C28.2 -114.8 103.801 -100 104.601 -98C105.401 -96 109.401 -97.2 109.401 -97.2z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M180.801 -106.4C180.801 -106.4 170.601 -113.8 168.601 -113.8C166.601 -113.8 154.201 -124 150.001 -123.6C145.801 -123.2 133.601 -133.2 106.201 -125C106.201 -125 105.601 -127 109.201 -127.8C109.201 -127.8 115.601 -130 116.001 -130.6C116.001 -130.6 136.201 -134.8 143.401 -131.2C143.401 -131.2 152.601 -128.6 158.801 -122.4C158.801 -122.4 170.001 -119.2 173.201 -120.2C173.201 -120.2 182.001 -118 182.401 -116.2C182.401 -116.2 188.201 -113.2 186.401 -110.6C186.401 -110.6 186.801 -109 180.801 -106.4z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M168.33 -108.509C169.137 -107.877 170.156 -107.779 170.761 -106.97C170.995 -106.656 170.706 -106.33 170.391 -106.233C169.348 -105.916 168.292 -106.486 167.15 -105.898C166.748 -105.691 166.106 -105.873 165.553 -106.022C163.921 -106.463 162.092 -106.488 160.401 -105.8C158.416 -106.929 156.056 -106.345 153.975 -107.346C153.917 -107.373 153.695 -107.027 153.621 -107.054C150.575 -108.199 146.832 -107.916 144.401 -110.2C141.973 -110.612 139.616 -111.074 137.188 -111.754C135.37 -112.263 133.961 -113.252 132.341 -114.084C130.964 -114.792 129.507 -115.314 127.973 -115.686C126.11 -116.138 124.279 -116.026 122.386 -116.546C122.293 -116.571 122.101 -116.227 122.019 -116.254C121.695 -116.362 121.405 -116.945 121.234 -116.892C119.553 -116.37 118.065 -117.342 116.401 -117C115.223 -118.224 113.495 -117.979 111.949 -118.421C108.985 -119.269 105.831 -117.999 102.801 -119C106.914 -120.842 111.601 -119.61 115.663 -121.679C117.991 -122.865 120.653 -121.763 123.223 -122.523C123.71 -122.667 124.401 -122.869 124.801 -122.2C124.935 -122.335 125.117 -122.574 125.175 -122.546C127.625 -121.389 129.94 -120.115 132.422 -119.049C132.763 -118.903 133.295 -119.135 133.547 -118.933C135.067 -117.717 137.01 -117.82 138.401 -116.6C140.099 -117.102 141.892 -116.722 143.621 -117.346C143.698 -117.373 143.932 -117.032 143.965 -117.054C145.095 -117.802 146.25 -117.531 147.142 -117.227C147.48 -117.112 148.143 -116.865 148.448 -116.791C149.574 -116.515 150.43 -116.035 151.609 -115.852C151.723 -115.834 151.908 -116.174 151.98 -116.146C153.103 -115.708 154.145 -115.764 154.801 -114.6C154.936 -114.735 155.101 -114.973 155.183 -114.946C156.21 -114.608 156.859 -113.853 157.96 -113.612C158.445 -113.506 159.057 -112.88 159.633 -112.704C162.025 -111.973 163.868 -110.444 166.062 -109.549C166.821 -109.239 167.697 -109.005 168.33 -108.509z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M91.696 -122.739C89.178 -124.464 86.81 -125.57 84.368 -127.356C84.187 -127.489 83.827 -127.319 83.625 -127.441C82.618 -128.05 81.73 -128.631 80.748 -129.327C80.209 -129.709 79.388 -129.698 78.88 -129.956C76.336 -131.248 73.707 -131.806 71.2 -133C71.882 -133.638 73.004 -133.394 73.6 -134.2C73.795 -133.92 74.033 -133.636 74.386 -133.827C76.064 -134.731 77.914 -134.884 79.59 -134.794C81.294 -134.702 83.014 -134.397 84.789 -134.125C85.096 -134.078 85.295 -133.555 85.618 -133.458C87.846 -132.795 90.235 -133.32 92.354 -132.482C93.945 -131.853 95.515 -131.03 96.754 -129.755C97.006 -129.495 96.681 -129.194 96.401 -129C96.789 -129.109 97.062 -128.903 97.173 -128.59C97.257 -128.351 97.257 -128.049 97.173 -127.81C97.061 -127.498 96.782 -127.397 96.408 -127.346C95.001 -127.156 96.773 -128.536 96.073 -128.088C94.8 -127.274 95.546 -125.868 94.801 -124.6C94.521 -124.794 94.291 -125.012 94.401 -125.4C94.635 -124.878 94.033 -124.588 93.865 -124.272C93.48 -123.547 92.581 -122.132 91.696 -122.739z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M59.198 -115.391C56.044 -116.185 52.994 -116.07 49.978 -117.346C49.911 -117.374 49.688 -117.027 49.624 -117.054C48.258 -117.648 47.34 -118.614 46.264 -119.66C45.351 -120.548 43.693 -120.161 42.419 -120.648C42.095 -120.772 41.892 -121.284 41.591 -121.323C40.372 -121.48 39.445 -122.429 38.4 -123C40.736 -123.795 43.147 -123.764 45.609 -124.148C45.722 -124.166 45.867 -123.845 46 -123.845C46.136 -123.845 46.266 -124.066 46.4 -124.2C46.595 -123.92 46.897 -123.594 47.154 -123.848C47.702 -124.388 48.258 -124.198 48.798 -124.158C48.942 -124.148 49.067 -123.845 49.2 -123.845C49.336 -123.845 49.467 -124.156 49.6 -124.156C49.736 -124.155 49.867 -123.845 50 -123.845C50.136 -123.845 50.266 -124.066 50.4 -124.2C51.092 -123.418 51.977 -123.972 52.799 -123.793C53.837 -123.566 54.104 -122.418 55.178 -122.12C59.893 -120.816 64.03 -118.671 68.393 -116.584C68.7 -116.437 68.91 -116.189 68.8 -115.8C69.067 -115.8 69.38 -115.888 69.57 -115.756C70.628 -115.024 71.669 -114.476 72.366 -113.378C72.582 -113.039 72.253 -112.632 72.02 -112.684C67.591 -113.679 63.585 -114.287 59.198 -115.391z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M45.338 -71.179C43.746 -72.398 43.162 -74.429 42.034 -76.221C41.82 -76.561 42.094 -76.875 42.411 -76.964C42.971 -77.123 43.514 -76.645 43.923 -76.443C45.668 -75.581 47.203 -74.339 49.2 -74.2C51.19 -71.966 55.45 -71.581 55.457 -68.2C55.458 -67.341 54.03 -68.259 53.6 -67.4C51.149 -68.403 48.76 -68.3 46.38 -69.767C45.763 -70.148 46.093 -70.601 45.338 -71.179z"/>
+ </g>
+ <g style="fill: rgb(204, 114, 38);">
+  <path d="M17.8 -123.756C17.935 -123.755 24.966 -123.522 24.949 -123.408C24.904 -123.099 17.174 -122.05 16.81 -122.22C16.646 -122.296 9.134 -119.866 9 -120C9.268 -120.135 17.534 -123.756 17.8 -123.756z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M33.2 -114C33.2 -114 18.4 -112.2 14 -111C9.6 -109.8 -9 -102.2 -12 -100.2C-12 -100.2 -25.4 -94.8 -42.4 -74.8C-42.4 -74.8 -34.8 -78.2 -32.6 -81C-32.6 -81 -19 -93.6 -19.2 -91C-19.2 -91 -7 -99.6 -7.6 -97.4C-7.6 -97.4 16.8 -108.6 14.8 -105.4C14.8 -105.4 36.4 -110 35.4 -108C35.4 -108 54.2 -103.6 51.4 -103.4C51.4 -103.4 45.6 -102.2 52 -98.6C52 -98.6 48.6 -94.2 43.2 -98.2C37.8 -102.2 40.8 -100 35.8 -99C35.8 -99 33.2 -98.2 28.6 -102.2C28.6 -102.2 23 -106.8 14.2 -103.2C14.2 -103.2 -16.4 -90.6 -18.4 -90C-18.4 -90 -22 -87.2 -24.4 -83.6C-24.4 -83.6 -30.2 -79.2 -33.2 -77.8C-33.2 -77.8 -46 -66.2 -47.2 -64.8C-47.2 -64.8 -50.6 -59.6 -51.4 -59.2C-51.4 -59.2 -45 -63 -43 -65C-43 -65 -29 -75 -23.6 -75.8C-23.6 -75.8 -19.2 -78.8 -18.4 -80.2C-18.4 -80.2 -4 -89.4 0.2 -89.4C0.2 -89.4 9.4 -84.2 11.8 -91.2C11.8 -91.2 17.6 -93 23.2 -91.8C23.2 -91.8 26.4 -94.4 25.6 -96.6C25.6 -96.6 27.2 -98.4 28.2 -94.6C28.2 -94.6 31.6 -91 36.4 -93C36.4 -93 40.4 -93.2 38.4 -90.8C38.4 -90.8 34 -87 22.2 -86.8C22.2 -86.8 9.8 -86.2 -6.6 -78.6C-6.6 -78.6 -36.4 -68.2 -45.6 -57.8C-45.6 -57.8 -52 -49 -57.4 -47.8C-57.4 -47.8 -63.2 -47 -69.2 -39.6C-69.2 -39.6 -59.4 -45.4 -50.4 -45.4C-50.4 -45.4 -46.4 -47.8 -50.2 -44.2C-50.2 -44.2 -53.8 -36.6 -52.2 -31.2C-52.2 -31.2 -52.8 -26 -53.6 -24.4C-53.6 -24.4 -61.4 -11.6 -61.4 -9.2C-61.4 -6.8 -60.2 3 -59.8 3.6C-59.4 4.2 -60.8 2 -57 4.4C-53.2 6.8 -50.4 8.4 -49.6 11.2C-48.8 14 -51.6 5.8 -51.8 4C-52 2.2 -56.2 -5 -55.4 -7.4C-55.4 -7.4 -54.4 -6.4 -53.6 -5C-53.6 -5 -54.2 -5.6 -53.6 -9.2C-53.6 -9.2 -52.8 -14.4 -51.4 -17.6C-50 -20.8 -48 -24.6 -47.6 -25.4C-47.2 -26.2 -47.2 -32 -45.8 -29.4L-42.4 -26.8C-42.4 -26.8 -45.2 -29.4 -43 -31.6C-43 -31.6 -44 -37.2 -42.2 -39.8C-42.2 -39.8 -35.2 -48.2 -33.6 -49.2C-32 -50.2 -33.4 -49.8 -33.4 -49.8C-33.4 -49.8 -27.4 -54 -33.2 -52.4C-33.2 -52.4 -37.2 -50.8 -40.2 -50.8C-40.2 -50.8 -47.8 -48.8 -43.8 -53C-39.8 -57.2 -29.8 -62.6 -26 -62.4L-25.2 -60.8L-14 -63.2L-15.2 -62.4C-15.2 -62.4 -15.4 -62.6 -11.2 -63C-7 -63.4 -1.2 -62 0.2 -63.8C1.6 -65.6 5 -66.6 4.6 -65.2C4.2 -63.8 4 -61.8 4 -61.8C4 -61.8 9 -67.6 8.4 -65.4C7.8 -63.2 -0.4 -58 -1.8 -51.8L8.6 -60L12.2 -63C12.2 -63 15.8 -60.8 16 -62.4C16.2 -64 20.8 -69.8 22 -69.6C23.2 -69.4 25.2 -72.2 25 -69.6C24.8 -67 32.4 -61.6 32.4 -61.6C32.4 -61.6 35.6 -63.4 37 -62C38.4 -60.6 42.6 -81.8 42.6 -81.8L67.6 -92.4L111.201 -95.8L94.201 -102.6L33.2 -114z"/>
+ </g>
+ <g style="stroke: rgb(76, 0, 0); stroke-width: 2;">
+  <path d="M51.4 85C51.4 85 36.4 68.2 28 65.6C28 65.6 14.6 58.8 -10 66.6"/>
+ </g>
+ <g style="stroke: rgb(76, 0, 0); stroke-width: 2;">
+  <path d="M24.8 64.2C24.8 64.2 -0.4 56.2 -15.8 60.4C-15.8 60.4 -34.2 62.4 -42.6 76.2"/>
+ </g>
+ <g style="stroke: rgb(76, 0, 0); stroke-width: 2;">
+  <path d="M21.2 63C21.2 63 4.2 55.8 -10.6 53.6C-10.6 53.6 -27.2 51 -43.8 58.2C-43.8 58.2 -56 64.2 -61.4 74.4"/>
+ </g>
+ <g style="stroke: rgb(76, 0, 0); stroke-width: 2;">
+  <path d="M22.2 63.4C22.2 63.4 6.8 52.4 5.8 51C5.8 51 -1.2 40 -14.2 39.6C-14.2 39.6 -35.6 40.4 -52.8 48.4"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M20.895 54.407C22.437 55.87 49.4 84.8 49.4 84.8C84.6 121.401 56.6 87.2 56.6 87.2C49 82.4 39.8 63.6 39.8 63.6C38.6 60.8 53.8 70.8 53.8 70.8C57.8 71.6 71.4 90.8 71.4 90.8C64.6 88.4 69.4 95.6 69.4 95.6C72.2 97.6 92.601 113.201 92.601 113.201C96.201 117.201 100.201 118.801 100.201 118.801C114.201 113.601 107.801 126.801 107.801 126.801C110.201 133.601 115.801 122.001 115.801 122.001C127.001 105.2 110.601 107.601 110.601 107.601C80.6 110.401 73.8 94.4 73.8 94.4C71.4 92 80.2 94.4 80.2 94.4C88.601 96.4 73 82 73 82C75.4 82 84.6 88.8 84.6 88.8C95.001 98 97.001 96 97.001 96C115.001 87.2 125.401 94.8 125.401 94.8C127.401 96.4 121.801 103.2 123.401 108.401C125.001 113.601 129.801 126.001 129.801 126.001C127.401 127.601 127.801 138.401 127.801 138.401C144.601 161.601 135.001 159.601 135.001 159.601C119.401 159.201 134.201 166.801 134.201 166.801C137.401 168.801 146.201 176.001 146.201 176.001C143.401 174.801 141.801 180.001 141.801 180.001C146.601 184.001 143.801 188.801 143.801 188.801C137.801 190.001 136.601 194.001 136.601 194.001C143.401 202.001 133.401 202.401 133.401 202.401C137.001 206.801 132.201 218.801 132.201 218.801C127.401 218.801 121.001 224.401 121.001 224.401C123.401 229.201 113.001 234.801 113.001 234.801C104.601 236.401 107.401 243.201 107.401 243.201C99.401 249.201 97.001 265.201 97.001 265.201C96.201 275.601 93.801 278.801 99.001 276.801C104.201 274.801 103.401 262.401 103.401 262.401C98.601 246.801 141.401 230.801 141.401 230.801C145.401 229.201 146.201 224.001 146.201 224.001C148.201 224.401 157.001 232.001 157.001 232.001C164.601 243.201 165.001 234.001 165.001 234.001C166.201 230.401 164.601 224.401 164.601 224.401C170.601 202.801 156.601 196.401 156.601 196.401C146.601 162.801 160.601 171.201 160.601 171.201C163.401 176.801 174.201 182.001 174.201 182.001L177.801 179.601C176.201 174.801 184.601 168.801 184.601 168.801C187.401 175.201 193.401 167.201 193.401 167.201C197.001 142.801 209.401 157.201 209.401 157.201C213.401 158.401 214.601 151.601 214.601 151.601C218.201 141.201 214.601 127.601 214.601 127.601C218.201 127.201 227.801 133.201 227.801 133.201C230.601 129.601 221.401 112.801 225.401 115.201C229.401 117.601 233.801 119.201 233.801 119.201C234.601 117.201 224.601 104.801 224.601 104.801C220.201 102 215.001 81.6 215.001 81.6C222.201 85.2 212.201 70 212.201 70C212.201 66.8 218.201 55.6 218.201 55.6C217.401 48.8 218.201 49.2 218.201 49.2C221.001 50.4 229.001 52 222.201 45.6C215.401 39.2 223.001 34.4 223.001 34.4C227.401 31.6 213.801 32 213.801 32C208.601 27.6 209.001 23.6 209.001 23.6C217.001 25.6 202.601 11.2 200.201 7.6C197.801 4 207.401 -1.2 207.401 -1.2C220.601 -4.8 209.001 -8 209.001 -8C189.401 -7.6 200.201 -18.4 200.201 -18.4C206.201 -18 204.601 -20.4 204.601 -20.4C199.401 -21.6 189.801 -28 189.801 -28C185.801 -31.6 189.401 -30.8 189.401 -30.8C206.201 -29.6 177.401 -40.8 177.401 -40.8C185.401 -40.8 167.401 -51.2 167.401 -51.2C165.401 -52.8 162.201 -60.4 162.201 -60.4C156.201 -65.6 151.401 -72.4 151.401 -72.4C151.001 -76.8 146.201 -81.6 146.201 -81.6C134.601 -95.2 129.001 -94.8 129.001 -94.8C114.201 -98.4 109.001 -97.6 109.001 -97.6L56.2 -93.2C29.8 -80.4 37.6 -59.4 37.6 -59.4C44 -51 53.2 -54.8 53.2 -54.8C57.8 -61 69.4 -58.8 69.4 -58.8C89.801 -55.6 87.201 -59.2 87.201 -59.2C84.801 -63.8 68.6 -70 68.4 -70.6C68.2 -71.2 59.4 -74.6 59.4 -74.6C56.4 -75.8 52 -85 52 -85C48.8 -88.4 64.6 -82.6 64.6 -82.6C63.4 -81.6 70.8 -77.6 70.8 -77.6C88.201 -78.6 98.801 -67.8 98.801 -67.8C109.601 -51.2 109.801 -59.4 109.801 -59.4C112.601 -68.8 100.801 -90 100.801 -90C101.201 -92 109.401 -85.4 109.401 -85.4C110.801 -87.4 111.601 -81.6 111.601 -81.6C111.801 -79.2 115.601 -71.2 115.601 -71.2C118.401 -58.2 122.001 -65.6 122.001 -65.6L126.601 -56.2C128.001 -53.6 122.001 -46 122.001 -46C121.801 -43.2 122.601 -43.4 117.001 -35.8C111.401 -28.2 114.801 -23.8 114.801 -23.8C113.401 -17.2 122.201 -17.6 122.201 -17.6C124.801 -15.4 128.201 -15.4 128.201 -15.4C130.001 -13.4 132.401 -14 132.401 -14C134.001 -17.8 140.201 -15.8 140.201 -15.8C141.601 -18.2 149.801 -18.6 149.801 -18.6C150.801 -21.2 151.201 -22.8 154.601 -23.4C158.001 -24 133.401 -67 133.401 -67C139.801 -67.8 131.601 -80.2 131.601 -80.2C129.401 -86.8 140.801 -72.2 143.001 -70.8C145.201 -69.4 146.201 -67.2 144.601 -67.4C143.001 -67.6 141.201 -65.4 142.601 -65.2C144.001 -65 157.001 -50 160.401 -39.8C163.801 -29.6 169.801 -25.6 176.001 -19.6C182.201 -13.6 181.401 10.6 181.401 10.6C181.001 19.4 187.001 30 187.001 30C189.001 33.8 184.801 52 184.801 52C182.801 54.2 184.201 55 184.201 55C185.201 56.2 192.001 69.4 192.001 69.4C190.201 69.2 193.801 72.8 193.801 72.8C199.001 78.8 192.601 75.8 192.601 75.8C186.601 74.2 193.601 84 193.601 84C194.801 85.8 185.801 81.2 185.801 81.2C176.601 80.6 188.201 87.8 188.201 87.8C196.801 95 185.401 90.6 185.401 90.6C180.801 88.8 184.001 95.6 184.001 95.6C187.201 97.2 204.401 104.2 204.401 104.2C204.801 108.001 201.801 113.001 201.801 113.001C202.201 117.001 200.001 120.401 200.001 120.401C198.801 128.601 198.201 129.401 198.201 129.401C194.001 129.601 186.601 143.401 186.601 143.401C184.801 146.001 174.601 158.001 174.601 158.001C172.601 165.001 154.601 157.801 154.601 157.801C148.001 161.201 150.001 157.801 150.001 157.801C149.601 155.601 154.401 149.601 154.401 149.601C161.401 147.001 158.801 136.201 158.801 136.201C162.801 134.801 151.601 132.001 151.801 130.801C152.001 129.601 157.801 128.201 157.801 128.201C165.801 126.201 161.401 123.801 161.401 123.801C160.801 119.801 163.801 114.201 163.801 114.201C175.401 113.401 163.801 97.2 163.801 97.2C153.001 89.6 152.001 83.8 152.001 83.8C164.601 75.6 156.401 63.2 156.601 59.6C156.801 56 158.001 34.4 158.001 34.4C156.001 28.2 153.001 14.6 153.001 14.6C155.201 9.4 162.601 -3.2 162.601 -3.2C165.401 -7.4 174.201 -12.2 172.001 -15.2C169.801 -18.2 162.001 -16.4 162.001 -16.4C154.201 -17.8 154.801 -12.6 154.801 -12.6C153.201 -11.6 152.401 -6.6 152.401 -6.6C151.68 1.333 142.801 7.6 142.801 7.6C131.601 13.8 140.801 17.8 140.801 17.8C146.801 24.4 137.001 24.6 137.001 24.6C126.001 22.8 134.201 33 134.201 33C145.001 45.8 142.001 48.6 142.001 48.6C131.801 49.6 144.401 58.8 144.401 58.8C144.401 58.8 143.601 56.8 143.801 58.6C144.001 60.4 147.001 64.6 147.801 66.6C148.601 68.6 144.601 68.8 144.601 68.8C145.201 78.4 129.801 74.2 129.801 74.2C129.801 74.2 129.801 74.2 128.201 74.4C126.601 74.6 115.401 73.8 109.601 71.6C103.801 69.4 97.001 69.4 97.001 69.4C97.001 69.4 93.001 71.2 85.4 71C77.8 70.8 69.8 73.6 69.8 73.6C65.4 73.2 74 68.8 74.2 69C74.4 69.2 80 63.6 72 64.2C50.203 65.835 39.4 55.6 39.4 55.6C37.4 54.2 34.8 51.4 34.8 51.4C24.8 49.4 36.2 63.8 36.2 63.8C37.4 65.2 36 66.2 36 66.2C35.2 64.6 27.4 59.2 27.4 59.2C24.589 58.227 23.226 56.893 20.895 54.407z"/>
+ </g>
+ <g style="fill: rgb(76, 0, 0);">
+  <path d="M-3 42.8C-3 42.8 8.6 48.4 11.2 51.2C13.8 54 27.8 65.4 27.8 65.4C27.8 65.4 22.4 63.4 19.8 61.6C17.2 59.8 6.4 51.6 6.4 51.6C6.4 51.6 2.6 45.6 -3 42.8z"/>
+ </g>
+ <g style="fill: rgb(153, 204, 50);">
+  <path d="M-61.009 11.603C-60.672 11.455 -61.196 8.743 -61.4 8.2C-62.422 5.474 -71.4 4 -71.4 4C-71.627 5.365 -71.682 6.961 -71.576 8.599C-71.576 8.599 -66.708 14.118 -61.009 11.603z"/>
+ </g>
+ <g style="fill: rgb(101, 153, 0);">
+  <path d="M-61.009 11.403C-61.458 11.561 -61.024 8.669 -61.2 8.2C-62.222 5.474 -71.4 3.9 -71.4 3.9C-71.627 5.265 -71.682 6.861 -71.576 8.499C-71.576 8.499 -67.308 13.618 -61.009 11.403z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-65.4 11.546C-66.025 11.546 -66.531 10.406 -66.531 9C-66.531 7.595 -66.025 6.455 -65.4 6.455C-64.775 6.455 -64.268 7.595 -64.268 9C-64.268 10.406 -64.775 11.546 -65.4 11.546z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-65.4 9z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-111 109.601C-111 109.601 -116.6 119.601 -91.8 113.601C-91.8 113.601 -77.8 112.401 -75.4 110.001C-74.2 110.801 -65.834 113.734 -63 114.401C-56.2 116.001 -47.8 106 -47.8 106C-47.8 106 -43.2 95.5 -40.4 95.5C-37.6 95.5 -40.8 97.1 -40.8 97.1C-40.8 97.1 -47.4 107.201 -47 108.801C-47 108.801 -52.2 128.801 -68.2 129.601C-68.2 129.601 -84.35 130.551 -83 136.401C-83 136.401 -74.2 134.001 -71.8 136.401C-71.8 136.401 -61 136.001 -69 142.401L-75.8 154.001C-75.8 154.001 -75.66 157.919 -85.8 154.401C-95.6 151.001 -105.9 138.101 -105.9 138.101C-105.9 138.101 -121.85 123.551 -111 109.601z"/>
+ </g>
+ <g style="fill: rgb(229, 153, 153);">
+  <path d="M-112.2 113.601C-112.2 113.601 -114.2 123.201 -77.4 112.801C-77.4 112.801 -73 112.801 -70.6 113.601C-68.2 114.401 -56.2 117.201 -54.2 116.001C-54.2 116.001 -61.4 129.601 -73 128.001C-73 128.001 -86.2 129.601 -85.8 134.401C-85.8 134.401 -81.8 141.601 -77 144.001C-77 144.001 -74.2 146.401 -74.6 149.601C-75 152.801 -77.8 154.401 -79.8 155.201C-81.8 156.001 -85 152.801 -86.6 152.801C-88.2 152.801 -96.6 146.401 -101 141.601C-105.4 136.801 -113.8 124.801 -113.4 122.001C-113 119.201 -112.2 113.601 -112.2 113.601z"/>
+ </g>
+ <g style="fill: rgb(178, 101, 101);">
+  <path d="M-109 131.051C-106.4 135.001 -103.2 139.201 -101 141.601C-96.6 146.401 -88.2 152.801 -86.6 152.801C-85 152.801 -81.8 156.001 -79.8 155.201C-77.8 154.401 -75 152.801 -74.6 149.601C-74.2 146.401 -77 144.001 -77 144.001C-80.066 142.468 -82.806 138.976 -84.385 136.653C-84.385 136.653 -84.2 139.201 -89.4 138.401C-94.6 137.601 -99.8 134.801 -101.4 131.601C-103 128.401 -105.4 126.001 -103.8 129.601C-102.2 133.201 -99.8 136.801 -98.2 137.201C-96.6 137.601 -97 138.801 -99.4 138.401C-101.8 138.001 -104.6 137.601 -109 132.401z"/>
+ </g>
+ <g style="fill: rgb(153, 38, 0);">
+  <path d="M-111.6 110.001C-111.6 110.001 -109.8 96.4 -108.6 92.4C-108.6 92.4 -109.4 85.6 -107 81.4C-104.6 77.2 -102.6 71 -99.6 65.6C-96.6 60.2 -96.4 56.2 -92.4 54.6C-88.4 53 -82.4 44.4 -79.6 43.4C-76.8 42.4 -77 43.2 -77 43.2C-77 43.2 -70.2 28.4 -56.6 32.4C-56.6 32.4 -72.8 29.6 -57 20.2C-57 20.2 -61.8 21.3 -58.5 14.3C-56.299 9.632 -56.8 16.4 -67.8 28.2C-67.8 28.2 -72.8 36.8 -78 39.8C-83.2 42.8 -95.2 49.8 -96.4 53.6C-97.6 57.4 -100.8 63.2 -102.8 64.8C-104.8 66.4 -107.6 70.6 -108 74C-108 74 -109.2 78 -110.6 79.2C-112 80.4 -112.2 83.6 -112.2 85.6C-112.2 87.6 -114.2 90.4 -114 92.8C-114 92.8 -113.2 111.801 -113.6 113.801L-111.6 110.001z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M-120.2 114.601C-120.2 114.601 -122.2 113.201 -126.6 119.201C-126.6 119.201 -119.3 152.201 -119.3 153.601C-119.3 153.601 -118.2 151.501 -119.5 144.301C-120.8 137.101 -121.7 124.401 -121.7 124.401L-120.2 114.601z"/>
+ </g>
+ <g style="fill: rgb(153, 38, 0);">
+  <path d="M-98.6 54C-98.6 54 -116.2 57.2 -115.8 86.4L-116.6 111.201C-116.6 111.201 -117.8 85.6 -119 84C-120.2 82.4 -116.2 71.2 -119.4 77.2C-119.4 77.2 -133.4 91.2 -125.4 112.401C-125.4 112.401 -123.9 115.701 -126.9 111.101C-126.9 111.101 -131.5 98.5 -130.4 92.1C-130.4 92.1 -130.2 89.9 -128.3 87.1C-128.3 87.1 -119.7 75.4 -117 73.1C-117 73.1 -115.2 58.7 -99.8 53.5C-99.8 53.5 -94.1 51.2 -98.6 54z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M40.8 -12.2C41.46 -12.554 41.451 -13.524 42.031 -13.697C43.18 -14.041 43.344 -15.108 43.862 -15.892C44.735 -17.211 44.928 -18.744 45.51 -20.235C45.782 -20.935 45.809 -21.89 45.496 -22.55C44.322 -25.031 43.62 -27.48 42.178 -29.906C41.91 -30.356 41.648 -31.15 41.447 -31.748C40.984 -33.132 39.727 -34.123 38.867 -35.443C38.579 -35.884 39.104 -36.809 38.388 -36.893C37.491 -36.998 36.042 -37.578 35.809 -36.552C35.221 -33.965 36.232 -31.442 37.2 -29C36.418 -28.308 36.752 -27.387 36.904 -26.62C37.614 -23.014 36.416 -19.662 35.655 -16.188C35.632 -16.084 35.974 -15.886 35.946 -15.824C34.724 -13.138 33.272 -10.693 31.453 -8.312C30.695 -7.32 29.823 -6.404 29.326 -5.341C28.958 -4.554 28.55 -3.588 28.8 -2.6C25.365 0.18 23.115 4.025 20.504 7.871C20.042 8.551 20.333 9.76 20.884 10.029C21.697 10.427 22.653 9.403 23.123 8.557C23.512 7.859 23.865 7.209 24.356 6.566C24.489 6.391 24.31 5.972 24.445 5.851C27.078 3.504 28.747 0.568 31.2 -1.8C33.15 -2.129 34.687 -3.127 36.435 -4.14C36.743 -4.319 37.267 -4.07 37.557 -4.265C39.31 -5.442 39.308 -7.478 39.414 -9.388C39.464 -10.272 39.66 -11.589 40.8 -12.2z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M31.959 -16.666C32.083 -16.743 31.928 -17.166 32.037 -17.382C32.199 -17.706 32.602 -17.894 32.764 -18.218C32.873 -18.434 32.71 -18.814 32.846 -18.956C35.179 -21.403 35.436 -24.427 34.4 -27.4C35.424 -28.02 35.485 -29.282 35.06 -30.129C34.207 -31.829 34.014 -33.755 33.039 -35.298C32.237 -36.567 30.659 -37.811 29.288 -36.508C28.867 -36.108 28.546 -35.321 28.824 -34.609C28.888 -34.446 29.173 -34.3 29.146 -34.218C29.039 -33.894 28.493 -33.67 28.487 -33.398C28.457 -31.902 27.503 -30.391 28.133 -29.062C28.905 -27.433 29.724 -25.576 30.4 -23.8C29.166 -21.684 30.199 -19.235 28.446 -17.358C28.31 -17.212 28.319 -16.826 28.441 -16.624C28.733 -16.138 29.139 -15.732 29.625 -15.44C29.827 -15.319 30.175 -15.317 30.375 -15.441C30.953 -15.803 31.351 -16.29 31.959 -16.666z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M94.771 -26.977C96.16 -25.185 96.45 -22.39 94.401 -21C94.951 -17.691 98.302 -19.67 100.401 -20.2C100.292 -20.588 100.519 -20.932 100.802 -20.937C101.859 -20.952 102.539 -21.984 103.601 -21.8C104.035 -23.357 105.673 -24.059 106.317 -25.439C108.043 -29.134 107.452 -33.407 104.868 -36.653C104.666 -36.907 104.883 -37.424 104.759 -37.786C104.003 -39.997 101.935 -40.312 100.001 -41C98.824 -44.875 98.163 -48.906 96.401 -52.6C94.787 -52.85 94.089 -54.589 92.752 -55.309C91.419 -56.028 90.851 -54.449 90.892 -53.403C90.899 -53.198 91.351 -52.974 91.181 -52.609C91.105 -52.445 90.845 -52.334 90.845 -52.2C90.846 -52.065 91.067 -51.934 91.201 -51.8C90.283 -50.98 88.86 -50.503 88.565 -49.358C87.611 -45.648 90.184 -42.523 91.852 -39.322C92.443 -38.187 91.707 -36.916 90.947 -35.708C90.509 -35.013 90.617 -33.886 90.893 -33.03C91.645 -30.699 93.236 -28.96 94.771 -26.977z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M57.611 -8.591C56.124 -6.74 52.712 -4.171 55.629 -2.243C55.823 -2.114 56.193 -2.11 56.366 -2.244C58.387 -3.809 60.39 -4.712 62.826 -5.294C62.95 -5.323 63.224 -4.856 63.593 -5.017C65.206 -5.72 67.216 -5.662 68.4 -7C72.167 -6.776 75.732 -7.892 79.123 -9.2C80.284 -9.648 81.554 -10.207 82.755 -10.709C84.131 -11.285 85.335 -12.213 86.447 -13.354C86.58 -13.49 86.934 -13.4 87.201 -13.4C87.161 -14.263 88.123 -14.39 88.37 -15.012C88.462 -15.244 88.312 -15.64 88.445 -15.742C90.583 -17.372 91.503 -19.39 90.334 -21.767C90.049 -22.345 89.8 -22.963 89.234 -23.439C88.149 -24.35 87.047 -23.496 86 -23.8C85.841 -23.172 85.112 -23.344 84.726 -23.146C83.867 -22.707 82.534 -23.292 81.675 -22.854C80.313 -22.159 79.072 -21.99 77.65 -21.613C77.338 -21.531 76.56 -21.627 76.4 -21C76.266 -21.134 76.118 -21.368 76.012 -21.346C74.104 -20.95 72.844 -20.736 71.543 -19.044C71.44 -18.911 70.998 -19.09 70.839 -18.955C69.882 -18.147 69.477 -16.913 68.376 -16.241C68.175 -16.118 67.823 -16.286 67.629 -16.157C66.983 -15.726 66.616 -15.085 65.974 -14.638C65.645 -14.409 65.245 -14.734 65.277 -14.99C65.522 -16.937 66.175 -18.724 65.6 -20.6C67.677 -23.12 70.194 -25.069 72 -27.8C72.015 -29.966 72.707 -32.112 72.594 -34.189C72.584 -34.382 72.296 -35.115 72.17 -35.462C71.858 -36.316 72.764 -37.382 71.92 -38.106C70.516 -39.309 69.224 -38.433 68.4 -37C66.562 -36.61 64.496 -35.917 62.918 -37.151C61.911 -37.938 61.333 -38.844 60.534 -39.9C59.549 -41.202 59.884 -42.638 59.954 -44.202C59.96 -44.33 59.645 -44.466 59.645 -44.6C59.646 -44.735 59.866 -44.866 60 -45C59.294 -45.626 59.019 -46.684 58 -47C58.305 -48.092 57.629 -48.976 56.758 -49.278C54.763 -49.969 53.086 -48.057 51.194 -47.984C50.68 -47.965 50.213 -49.003 49.564 -49.328C49.132 -49.544 48.428 -49.577 48.066 -49.311C47.378 -48.807 46.789 -48.693 46.031 -48.488C44.414 -48.052 43.136 -46.958 41.656 -46.103C40.171 -45.246 39.216 -43.809 38.136 -42.489C37.195 -41.337 37.059 -38.923 38.479 -38.423C40.322 -37.773 41.626 -40.476 43.592 -40.15C43.904 -40.099 44.11 -39.788 44 -39.4C44.389 -39.291 44.607 -39.52 44.8 -39.8C45.658 -38.781 46.822 -38.444 47.76 -37.571C48.73 -36.667 50.476 -37.085 51.491 -36.088C53.02 -34.586 52.461 -31.905 54.4 -30.6C53.814 -29.287 53.207 -28.01 52.872 -26.583C52.59 -25.377 53.584 -24.18 54.795 -24.271C56.053 -24.365 56.315 -25.124 56.8 -26.2C57.067 -25.933 57.536 -25.636 57.495 -25.42C57.038 -23.033 56.011 -21.04 55.553 -18.609C55.494 -18.292 55.189 -18.09 54.8 -18.2C54.332 -14.051 50.28 -11.657 47.735 -8.492C47.332 -7.99 47.328 -6.741 47.737 -6.338C49.14 -4.951 51.1 -6.497 52.8 -7C53.013 -8.206 53.872 -9.148 55.204 -9.092C55.46 -9.082 55.695 -9.624 56.019 -9.754C56.367 -9.892 56.869 -9.668 57.155 -9.866C58.884 -11.061 60.292 -12.167 62.03 -13.356C62.222 -13.487 62.566 -13.328 62.782 -13.436C63.107 -13.598 63.294 -13.985 63.617 -14.17C63.965 -14.37 64.207 -14.08 64.4 -13.8C63.754 -13.451 63.75 -12.494 63.168 -12.292C62.393 -12.024 61.832 -11.511 61.158 -11.064C60.866 -10.871 60.207 -11.119 60.103 -10.94C59.505 -9.912 58.321 -9.474 57.611 -8.591z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M2.2 -58C2.2 -58 -7.038 -60.872 -18.2 -35.2C-18.2 -35.2 -20.6 -30 -23 -28C-25.4 -26 -36.6 -22.4 -38.6 -18.4L-49 -2.4C-49 -2.4 -34.2 -18.4 -31 -20.8C-31 -20.8 -23 -29.2 -26.2 -22.4C-26.2 -22.4 -40.2 -11.6 -39 -2.4C-39 -2.4 -44.6 12 -45.4 14C-45.4 14 -29.4 -18 -27 -19.2C-24.6 -20.4 -23.4 -20.4 -24.6 -16.8C-25.8 -13.2 -26.2 3.2 -29 5.2C-29 5.2 -21 -15.2 -21.8 -18.4C-21.8 -18.4 -18.6 -22 -16.2 -16.8L-17.4 -0.8L-13 11.2C-13 11.2 -15.4 0 -13.8 -15.6C-13.8 -15.6 -15.8 -26 -11.8 -20.4C-7.8 -14.8 1.8 -8.8 1.8 -4C1.8 -4 -3.4 -21.6 -12.6 -26.4L-16.6 -20.4L-17.8 -22.4C-17.8 -22.4 -21.4 -23.2 -17 -30C-12.6 -36.8 -13 -37.6 -13 -37.6C-13 -37.6 -6.6 -30.4 -5 -30.4C-5 -30.4 8.2 -38 9.4 -13.6C9.4 -13.6 16.2 -28 7 -34.8C7 -34.8 -7.8 -36.8 -6.6 -42L0.6 -54.4C4.2 -59.6 2.6 -56.8 2.6 -56.8z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-17.8 -41.6C-17.8 -41.6 -30.6 -41.6 -33.8 -36.4L-41 -26.8C-41 -26.8 -23.8 -36.8 -19.8 -38C-15.8 -39.2 -17.8 -41.6 -17.8 -41.6z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-57.8 -35.2C-57.8 -35.2 -59.8 -34 -60.2 -31.2C-60.6 -28.4 -63 -28 -62.2 -25.2C-61.4 -22.4 -59.4 -20 -59.4 -24C-59.4 -28 -57.8 -30 -57 -31.2C-56.2 -32.4 -54.6 -36.8 -57.8 -35.2z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-66.6 26C-66.6 26 -75 22 -78.2 18.4C-81.4 14.8 -80.948 19.966 -85.8 19.6C-91.647 19.159 -90.6 3.2 -90.6 3.2L-94.6 10.8C-94.6 10.8 -95.8 25.2 -87.8 22.8C-83.893 21.628 -82.6 23.2 -84.2 24C-85.8 24.8 -78.6 25.2 -81.4 26.8C-84.2 28.4 -69.8 23.2 -72.2 33.6L-66.6 26z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-79.2 40.4C-79.2 40.4 -94.6 44.8 -98.2 35.2C-98.2 35.2 -103 37.6 -100.8 40.6C-98.6 43.6 -97.4 44 -97.4 44C-97.4 44 -92 45.2 -92.6 46C-93.2 46.8 -95.6 50.2 -95.6 50.2C-95.6 50.2 -85.4 44.2 -79.2 40.4z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M149.201 118.601C148.774 120.735 147.103 121.536 145.201 122.201C143.284 121.243 140.686 118.137 138.801 120.201C138.327 119.721 137.548 119.661 137.204 118.999C136.739 118.101 137.011 117.055 136.669 116.257C136.124 114.985 135.415 113.619 135.601 112.201C137.407 111.489 138.002 109.583 137.528 107.82C137.459 107.563 137.03 107.366 137.23 107.017C137.416 106.694 137.734 106.467 138.001 106.2C137.866 106.335 137.721 106.568 137.61 106.548C137 106.442 137.124 105.805 137.254 105.418C137.839 103.672 139.853 103.408 141.201 104.6C141.457 104.035 141.966 104.229 142.401 104.2C142.351 103.621 142.759 103.094 142.957 102.674C143.475 101.576 145.104 102.682 145.901 102.07C146.977 101.245 148.04 100.546 149.118 101.149C150.927 102.162 152.636 103.374 153.835 105.115C154.41 105.949 154.65 107.23 154.592 108.188C154.554 108.835 153.173 108.483 152.83 109.412C152.185 111.16 154.016 111.679 154.772 113.017C154.97 113.366 154.706 113.67 154.391 113.768C153.98 113.896 153.196 113.707 153.334 114.16C154.306 117.353 151.55 118.031 149.201 118.601z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255);">
+  <path d="M139.6 138.201C139.593 136.463 137.992 134.707 139.201 133.001C139.336 133.135 139.467 133.356 139.601 133.356C139.736 133.356 139.867 133.135 140.001 133.001C141.496 135.217 145.148 136.145 145.006 138.991C144.984 139.438 143.897 140.356 144.801 141.001C142.988 142.349 142.933 144.719 142.001 146.601C140.763 146.315 139.551 145.952 138.401 145.401C138.753 143.915 138.636 142.231 139.456 140.911C139.89 140.213 139.603 139.134 139.6 138.201z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-26.6 129.201C-26.6 129.201 -43.458 139.337 -29.4 124.001C-20.6 114.401 -10.6 108.801 -10.6 108.801C-10.6 108.801 -0.2 104.4 3.4 103.2C7 102 22.2 96.8 25.4 96.4C28.6 96 38.2 92 45 96C51.8 100 59.8 104.4 59.8 104.4C59.8 104.4 43.4 96 39.8 98.4C36.2 100.8 29 100.4 23 103.6C23 103.6 8.2 108.001 5 110.001C1.8 112.001 -8.6 123.601 -10.2 122.801C-11.8 122.001 -9.8 121.601 -8.6 118.801C-7.4 116.001 -9.4 114.401 -17.4 120.801C-25.4 127.201 -26.6 129.201 -26.6 129.201z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-19.195 123.234C-19.195 123.234 -17.785 110.194 -9.307 111.859C-9.307 111.859 -1.081 107.689 1.641 105.721C1.641 105.721 9.78 104.019 11.09 103.402C29.569 94.702 44.288 99.221 44.835 98.101C45.381 96.982 65.006 104.099 68.615 108.185C69.006 108.628 58.384 102.588 48.686 100.697C40.413 99.083 18.811 100.944 7.905 106.48C4.932 107.989 -4.013 113.773 -6.544 113.662C-9.075 113.55 -19.195 123.234 -19.195 123.234z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-23 148.801C-23 148.801 -38.2 146.401 -21.4 144.801C-21.4 144.801 -3.4 142.801 0.6 137.601C0.6 137.601 14.2 128.401 17 128.001C19.8 127.601 49.8 120.401 50.2 118.001C50.6 115.601 56.2 115.601 57.8 116.401C59.4 117.201 58.6 118.401 55.8 119.201C53 120.001 21.8 136.401 15.4 137.601C9 138.801 -2.6 146.401 -7.4 147.601C-12.2 148.801 -23 148.801 -23 148.801z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-3.48 141.403C-3.48 141.403 -12.062 140.574 -3.461 139.755C-3.461 139.755 5.355 136.331 7.403 133.668C7.403 133.668 14.367 128.957 15.8 128.753C17.234 128.548 31.194 124.861 31.399 123.633C31.604 122.404 65.67 109.823 70.09 113.013C73.001 115.114 63.1 113.437 53.466 117.847C52.111 118.467 18.258 133.054 14.981 133.668C11.704 134.283 5.765 138.174 3.307 138.788C0.85 139.403 -3.48 141.403 -3.48 141.403z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-11.4 143.601C-11.4 143.601 -6.2 143.201 -7.4 144.801C-8.6 146.401 -11 145.601 -11 145.601L-11.4 143.601z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-18.6 145.201C-18.6 145.201 -13.4 144.801 -14.6 146.401C-15.8 148.001 -18.2 147.201 -18.2 147.201L-18.6 145.201z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-29 146.801C-29 146.801 -23.8 146.401 -25 148.001C-26.2 149.601 -28.6 148.801 -28.6 148.801L-29 146.801z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-36.6 147.601C-36.6 147.601 -31.4 147.201 -32.6 148.801C-33.8 150.401 -36.2 149.601 -36.2 149.601L-36.6 147.601z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M1.8 108.001C1.8 108.001 6.2 108.001 5 109.601C3.8 111.201 0.6 110.801 0.6 110.801L1.8 108.001z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-8.2 113.601C-8.2 113.601 -1.694 111.46 -4.2 114.801C-5.4 116.401 -7.8 115.601 -7.8 115.601L-8.2 113.601z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-19.4 118.401C-19.4 118.401 -14.2 118.001 -15.4 119.601C-16.6 121.201 -19 120.401 -19 120.401L-19.4 118.401z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-27 124.401C-27 124.401 -21.8 124.001 -23 125.601C-24.2 127.201 -26.6 126.401 -26.6 126.401L-27 124.401z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-33.8 129.201C-33.8 129.201 -28.6 128.801 -29.8 130.401C-31 132.001 -33.4 131.201 -33.4 131.201L-33.8 129.201z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M5.282 135.598C5.282 135.598 12.203 135.066 10.606 137.195C9.009 139.325 5.814 138.26 5.814 138.26L5.282 135.598z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M15.682 130.798C15.682 130.798 22.603 130.266 21.006 132.395C19.409 134.525 16.214 133.46 16.214 133.46L15.682 130.798z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M26.482 126.398C26.482 126.398 33.403 125.866 31.806 127.995C30.209 130.125 27.014 129.06 27.014 129.06L26.482 126.398z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M36.882 121.598C36.882 121.598 43.803 121.066 42.206 123.195C40.609 125.325 37.414 124.26 37.414 124.26L36.882 121.598z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M9.282 103.598C9.282 103.598 16.203 103.066 14.606 105.195C13.009 107.325 9.014 107.06 9.014 107.06L9.282 103.598z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M19.282 100.398C19.282 100.398 26.203 99.866 24.606 101.995C23.009 104.125 18.614 103.86 18.614 103.86L19.282 100.398z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-3.4 140.401C-3.4 140.401 1.8 140.001 0.6 141.601C-0.6 143.201 -3 142.401 -3 142.401L-3.4 140.401z"/>
+ </g>
+ <g style="fill: rgb(153, 38, 0);">
+  <path d="M-76.6 41.2C-76.6 41.2 -81 50 -81.4 53.2C-81.4 53.2 -80.6 44.4 -79.4 42.4C-78.2 40.4 -76.6 41.2 -76.6 41.2z"/>
+ </g>
+ <g style="fill: rgb(153, 38, 0);">
+  <path d="M-95 55.2C-95 55.2 -98.2 69.6 -97.8 72.4C-97.8 72.4 -99 60.8 -98.6 59.6C-98.2 58.4 -95 55.2 -95 55.2z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-74.2 -19.4L-74.4 -16.2L-76.6 -16C-76.6 -16 -62.4 -3.4 -61.8 4.2C-61.8 4.2 -61 -4 -74.2 -19.4z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-70.216 -18.135C-70.647 -18.551 -70.428 -19.296 -70.836 -19.556C-71.645 -20.072 -69.538 -20.129 -69.766 -20.845C-70.149 -22.051 -69.962 -22.072 -70.084 -23.348C-70.141 -23.946 -69.553 -25.486 -69.168 -25.926C-67.722 -27.578 -69.046 -30.51 -67.406 -32.061C-67.102 -32.35 -66.726 -32.902 -66.441 -33.32C-65.782 -34.283 -64.598 -34.771 -63.648 -35.599C-63.33 -35.875 -63.531 -36.702 -62.962 -36.61C-62.248 -36.495 -61.007 -36.625 -61.052 -35.784C-61.165 -33.664 -62.494 -31.944 -63.774 -30.276C-63.323 -29.572 -63.781 -28.937 -64.065 -28.38C-65.4 -25.76 -65.211 -22.919 -65.385 -20.079C-65.39 -19.994 -65.697 -19.916 -65.689 -19.863C-65.336 -17.528 -64.752 -15.329 -63.873 -13.1C-63.507 -12.17 -63.036 -11.275 -62.886 -10.348C-62.775 -9.662 -62.672 -8.829 -63.08 -8.124C-61.045 -5.234 -62.354 -2.583 -61.185 0.948C-60.978 1.573 -59.286 3.487 -59.749 3.326C-62.262 2.455 -62.374 2.057 -62.551 1.304C-62.697 0.681 -63.027 -0.696 -63.264 -1.298C-63.328 -1.462 -63.499 -3.346 -63.577 -3.468C-65.09 -5.85 -63.732 -5.674 -65.102 -8.032C-66.53 -8.712 -67.496 -9.816 -68.619 -10.978C-68.817 -11.182 -67.674 -11.906 -67.855 -12.119C-68.947 -13.408 -70.1 -14.175 -69.764 -15.668C-69.609 -16.358 -69.472 -17.415 -70.216 -18.135z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-73.8 -16.4C-73.8 -16.4 -73.4 -9.6 -71 -8C-68.6 -6.4 -69.8 -7.2 -73 -8.4C-76.2 -9.6 -75 -10.4 -75 -10.4C-75 -10.4 -77.8 -10 -75.4 -8C-73 -6 -69.4 -3.6 -71 -3.6C-72.6 -3.6 -80.2 -7.6 -80.2 -10.4C-80.2 -13.2 -81.2 -17.3 -81.2 -17.3C-81.2 -17.3 -80.1 -18.1 -75.3 -18C-75.3 -18 -73.9 -17.3 -73.8 -16.4z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-74.6 2.2C-74.6 2.2 -83.12 -0.591 -101.6 2.8C-101.6 2.8 -92.569 0.722 -73.8 3C-63.5 4.25 -74.6 2.2 -74.6 2.2z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-72.502 2.129C-72.502 2.129 -80.748 -1.389 -99.453 0.392C-99.453 0.392 -90.275 -0.897 -71.774 2.995C-61.62 5.131 -72.502 2.129 -72.502 2.129z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-70.714 2.222C-70.714 2.222 -78.676 -1.899 -97.461 -1.514C-97.461 -1.514 -88.213 -2.118 -70.052 3.14C-60.086 6.025 -70.714 2.222 -70.714 2.222z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-69.444 2.445C-69.444 2.445 -76.268 -1.862 -93.142 -2.96C-93.142 -2.96 -84.803 -2.79 -68.922 3.319C-60.206 6.672 -69.444 2.445 -69.444 2.445z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M45.84 12.961C45.84 12.961 44.91 13.605 45.124 12.424C45.339 11.243 73.547 -1.927 77.161 -1.677C77.161 -1.677 46.913 11.529 45.84 12.961z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M42.446 13.6C42.446 13.6 41.57 14.315 41.691 13.121C41.812 11.927 68.899 -3.418 72.521 -3.452C72.521 -3.452 43.404 12.089 42.446 13.6z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M39.16 14.975C39.16 14.975 38.332 15.747 38.374 14.547C38.416 13.348 58.233 -2.149 68.045 -4.023C68.045 -4.023 50.015 4.104 39.16 14.975z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M36.284 16.838C36.284 16.838 35.539 17.532 35.577 16.453C35.615 15.373 53.449 1.426 62.28 -0.26C62.28 -0.26 46.054 7.054 36.284 16.838z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M4.6 164.801C4.6 164.801 -10.6 162.401 6.2 160.801C6.2 160.801 24.2 158.801 28.2 153.601C28.2 153.601 41.8 144.401 44.6 144.001C47.4 143.601 63.8 140.001 64.2 137.601C64.6 135.201 70.6 132.801 72.2 133.601C73.8 134.401 73.8 143.601 71 144.401C68.2 145.201 49.4 152.401 43 153.601C36.6 154.801 25 162.401 20.2 163.601C15.4 164.801 4.6 164.801 4.6 164.801z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M77.6 127.401C77.6 127.401 74.6 129.001 73.4 131.601C73.4 131.601 67 142.201 52.8 145.401C52.8 145.401 29.8 154.401 22 156.401C22 156.401 8.6 161.401 1.2 160.601C1.2 160.601 -5.8 160.801 0.4 162.401C0.4 162.401 20.6 160.401 24 158.601C24 158.601 39.6 153.401 42.6 150.801C45.6 148.201 63.8 143.201 66 141.201C68.2 139.201 78 130.801 77.6 127.401z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M18.882 158.911C18.882 158.911 24.111 158.685 22.958 160.234C21.805 161.784 19.357 160.91 19.357 160.91L18.882 158.911z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M11.68 160.263C11.68 160.263 16.908 160.037 15.756 161.586C14.603 163.136 12.155 162.263 12.155 162.263L11.68 160.263z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M1.251 161.511C1.251 161.511 6.48 161.284 5.327 162.834C4.174 164.383 1.726 163.51 1.726 163.51L1.251 161.511z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-6.383 162.055C-6.383 162.055 -1.154 161.829 -2.307 163.378C-3.46 164.928 -5.908 164.054 -5.908 164.054L-6.383 162.055z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M35.415 151.513C35.415 151.513 42.375 151.212 40.84 153.274C39.306 155.336 36.047 154.174 36.047 154.174L35.415 151.513z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M45.73 147.088C45.73 147.088 51.689 143.787 51.155 148.849C50.885 151.405 46.362 149.749 46.362 149.749L45.73 147.088z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M54.862 144.274C54.862 144.274 62.021 140.573 60.287 146.035C59.509 148.485 55.493 146.935 55.493 146.935L54.862 144.274z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M64.376 139.449C64.376 139.449 68.735 134.548 69.801 141.21C70.207 143.748 65.008 142.11 65.008 142.11L64.376 139.449z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M26.834 155.997C26.834 155.997 32.062 155.77 30.91 157.32C29.757 158.869 27.308 157.996 27.308 157.996L26.834 155.997z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M62.434 34.603C62.434 34.603 61.708 35.268 61.707 34.197C61.707 33.127 79.191 19.863 88.034 18.479C88.034 18.479 71.935 25.208 62.434 34.603z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M65.4 98.4C65.4 98.4 87.401 120.801 96.601 124.401C96.601 124.401 105.801 135.601 101.801 161.601C101.801 161.601 98.601 169.201 95.401 148.401C95.401 148.401 98.601 123.201 87.401 139.201C87.401 139.201 79 129.301 85.4 129.601C85.4 129.601 88.601 131.601 89.001 130.001C89.401 128.401 81.4 114.801 64.2 100.4C47 86 65.4 98.4 65.4 98.4z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M7 137.201C7 137.201 6.8 135.401 8.6 136.201C10.4 137.001 104.601 143.201 136.201 167.201C136.201 167.201 91.001 144.001 7 137.201z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M17.4 132.801C17.4 132.801 17.2 131.001 19 131.801C20.8 132.601 157.401 131.601 181.001 164.001C181.001 164.001 159.001 138.801 17.4 132.801z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M29 128.801C29 128.801 28.8 127.001 30.6 127.801C32.4 128.601 205.801 115.601 229.401 148.001C229.401 148.001 219.801 122.401 29 128.801z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M39 124.001C39 124.001 38.8 122.201 40.6 123.001C42.4 123.801 164.601 85.2 188.201 117.601C188.201 117.601 174.801 93 39 124.001z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-19 146.801C-19 146.801 -19.2 145.001 -17.4 145.801C-15.6 146.601 2.2 148.801 4.2 187.601C4.2 187.601 -3 145.601 -19 146.801z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-27.8 148.401C-27.8 148.401 -28 146.601 -26.2 147.401C-24.4 148.201 -10.2 143.601 -13 182.401C-13 182.401 -11.8 147.201 -27.8 148.401z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-35.8 148.801C-35.8 148.801 -36 147.001 -34.2 147.801C-32.4 148.601 -17 149.201 -29.4 171.601C-29.4 171.601 -19.8 147.601 -35.8 148.801z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M11.526 104.465C11.526 104.465 11.082 106.464 12.631 105.247C28.699 92.622 61.141 33.72 116.826 28.086C116.826 28.086 78.518 15.976 11.526 104.465z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M22.726 102.665C22.726 102.665 21.363 101.472 23.231 100.847C25.099 100.222 137.541 27.72 176.826 35.686C176.826 35.686 149.719 28.176 22.726 102.665z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M1.885 108.767C1.885 108.767 1.376 110.366 3.087 109.39C12.062 104.27 15.677 47.059 59.254 45.804C59.254 45.804 26.843 31.09 1.885 108.767z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-18.038 119.793C-18.038 119.793 -19.115 121.079 -17.162 120.825C-6.916 119.493 14.489 78.222 58.928 83.301C58.928 83.301 26.962 68.955 -18.038 119.793z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-6.8 113.667C-6.8 113.667 -7.611 115.136 -5.742 114.511C4.057 111.237 17.141 66.625 61.729 63.078C61.729 63.078 27.603 55.135 -6.8 113.667z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-25.078 124.912C-25.078 124.912 -25.951 125.954 -24.369 125.748C-16.07 124.669 1.268 91.24 37.264 95.354C37.264 95.354 11.371 83.734 -25.078 124.912z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-32.677 130.821C-32.677 130.821 -33.682 131.866 -32.091 131.748C-27.923 131.439 2.715 98.36 21.183 113.862C21.183 113.862 9.168 95.139 -32.677 130.821z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M36.855 98.898C36.855 98.898 35.654 97.543 37.586 97.158C39.518 96.774 160.221 39.061 198.184 51.927C198.184 51.927 172.243 41.053 36.855 98.898z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M3.4 163.201C3.4 163.201 3.2 161.401 5 162.201C6.8 163.001 22.2 163.601 9.8 186.001C9.8 186.001 19.4 162.001 3.4 163.201z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M13.8 161.601C13.8 161.601 13.6 159.801 15.4 160.601C17.2 161.401 35 163.601 37 202.401C37 202.401 29.8 160.401 13.8 161.601z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M20.6 160.001C20.6 160.001 20.4 158.201 22.2 159.001C24 159.801 48.6 163.201 72.2 195.601C72.2 195.601 36.6 158.801 20.6 160.001z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M28.225 157.972C28.225 157.972 27.788 156.214 29.678 156.768C31.568 157.322 52.002 155.423 90.099 189.599C90.099 189.599 43.924 154.656 28.225 157.972z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M38.625 153.572C38.625 153.572 38.188 151.814 40.078 152.368C41.968 152.922 76.802 157.423 128.499 192.399C128.499 192.399 54.324 150.256 38.625 153.572z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-1.8 142.001C-1.8 142.001 -2 140.201 -0.2 141.001C1.6 141.801 55 144.401 85.4 171.201C85.4 171.201 50.499 146.426 -1.8 142.001z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M-11.8 146.001C-11.8 146.001 -12 144.201 -10.2 145.001C-8.4 145.801 16.2 149.201 39.8 181.601C39.8 181.601 4.2 144.801 -11.8 146.001z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M49.503 148.962C49.503 148.962 48.938 147.241 50.864 147.655C52.79 148.068 87.86 150.004 141.981 181.098C141.981 181.098 64.317 146.704 49.503 148.962z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M57.903 146.562C57.903 146.562 57.338 144.841 59.264 145.255C61.19 145.668 96.26 147.604 150.381 178.698C150.381 178.698 73.317 143.904 57.903 146.562z"/>
+ </g>
+ <g style="fill: rgb(255, 255, 255); stroke: rgb(0, 0, 0); stroke-width: 0.1;">
+  <path d="M67.503 141.562C67.503 141.562 66.938 139.841 68.864 140.255C70.79 140.668 113.86 145.004 203.582 179.298C203.582 179.298 82.917 138.904 67.503 141.562z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-43.8 148.401C-43.8 148.401 -38.6 148.001 -39.8 149.601C-41 151.201 -43.4 150.401 -43.4 150.401L-43.8 148.401z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-13 162.401C-13 162.401 -7.8 162.001 -9 163.601C-10.2 165.201 -12.6 164.401 -12.6 164.401L-13 162.401z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-21.8 162.001C-21.8 162.001 -16.6 161.601 -17.8 163.201C-19 164.801 -21.4 164.001 -21.4 164.001L-21.8 162.001z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-117.169 150.182C-117.169 150.182 -112.124 151.505 -113.782 152.624C-115.439 153.744 -117.446 152.202 -117.446 152.202L-117.169 150.182z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-115.169 140.582C-115.169 140.582 -110.124 141.905 -111.782 143.024C-113.439 144.144 -115.446 142.602 -115.446 142.602L-115.169 140.582z"/>
+ </g>
+ <g style="fill: rgb(0, 0, 0);">
+  <path d="M-122.369 136.182C-122.369 136.182 -117.324 137.505 -118.982 138.624C-120.639 139.744 -122.646 138.202 -122.646 138.202L-122.369 136.182z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-42.6 211.201C-42.6 211.201 -44.2 211.201 -48.2 213.201C-50.2 213.201 -61.4 216.801 -67 226.801C-67 226.801 -54.6 217.201 -42.6 211.201z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M45.116 303.847C45.257 304.105 45.312 304.525 45.604 304.542C46.262 304.582 47.495 304.883 47.37 304.247C46.522 299.941 45.648 295.004 41.515 293.197C40.876 292.918 39.434 293.331 39.36 294.215C39.233 295.739 39.116 297.088 39.425 298.554C39.725 299.975 41.883 299.985 42.8 298.601C43.736 300.273 44.168 302.116 45.116 303.847z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M34.038 308.581C34.786 309.994 34.659 311.853 36.074 312.416C36.814 312.71 38.664 311.735 38.246 310.661C37.444 308.6 37.056 306.361 35.667 304.55C35.467 304.288 35.707 303.755 35.547 303.427C34.953 302.207 33.808 301.472 32.4 301.801C31.285 304.004 32.433 306.133 33.955 307.842C34.091 307.994 33.925 308.37 34.038 308.581z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-5.564 303.391C-5.672 303.014 -5.71 302.551 -5.545 302.23C-5.014 301.197 -4.221 300.075 -4.558 299.053C-4.906 297.997 -6.022 298.179 -6.672 298.748C-7.807 299.742 -7.856 301.568 -8.547 302.927C-8.743 303.313 -8.692 303.886 -9.133 304.277C-9.607 304.698 -10.047 306.222 -9.951 306.793C-9.898 307.106 -10.081 317.014 -9.859 316.751C-9.24 316.018 -6.19 306.284 -6.121 305.392C-6.064 304.661 -5.332 304.196 -5.564 303.391z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-31.202 296.599C-28.568 294.1 -25.778 291.139 -26.22 287.427C-26.336 286.451 -28.111 286.978 -28.298 287.824C-29.1 291.449 -31.139 294.11 -33.707 296.502C-35.903 298.549 -37.765 304.893 -38 305.401C-34.303 300.145 -32.046 297.399 -31.202 296.599z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-44.776 290.635C-44.253 290.265 -44.555 289.774 -44.338 289.442C-43.385 287.984 -42.084 286.738 -42.066 285C-42.063 284.723 -42.441 284.414 -42.776 284.638C-43.053 284.822 -43.395 284.952 -43.503 285.082C-45.533 287.531 -46.933 290.202 -48.376 293.014C-48.559 293.371 -49.703 297.862 -49.39 297.973C-49.151 298.058 -47.431 293.877 -47.221 293.763C-45.958 293.077 -45.946 291.462 -44.776 290.635z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-28.043 310.179C-27.599 309.31 -26.023 308.108 -26.136 307.219C-26.254 306.291 -25.786 304.848 -26.698 305.536C-27.955 306.484 -31.404 307.833 -31.674 313.641C-31.7 314.212 -28.726 311.519 -28.043 310.179z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-13.6 293.001C-13.2 292.333 -12.492 292.806 -12.033 292.543C-11.385 292.171 -10.774 291.613 -10.482 290.964C-9.512 288.815 -7.743 286.995 -7.6 284.601C-9.091 283.196 -9.77 285.236 -10.4 286.201C-11.723 284.554 -12.722 286.428 -14.022 286.947C-14.092 286.975 -14.305 286.628 -14.38 286.655C-15.557 287.095 -16.237 288.176 -17.235 288.957C-17.406 289.091 -17.811 288.911 -17.958 289.047C-18.61 289.65 -19.583 289.975 -19.863 290.657C-20.973 293.364 -24.113 295.459 -26 303.001C-25.619 303.91 -21.488 296.359 -21.001 295.661C-20.165 294.465 -20.047 297.322 -18.771 296.656C-18.72 296.629 -18.534 296.867 -18.4 297.001C-18.206 296.721 -17.988 296.492 -17.6 296.601C-17.6 296.201 -17.734 295.645 -17.533 295.486C-16.296 294.509 -16.38 293.441 -15.6 292.201C-15.142 292.99 -14.081 292.271 -13.6 293.001z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M46.2 347.401C46.2 347.401 53.6 327.001 49.2 315.801C49.2 315.801 60.6 337.401 56 348.601C56 348.601 55.6 338.201 51.6 333.201C51.6 333.201 47.6 346.001 46.2 347.401z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M31.4 344.801C31.4 344.801 36.8 336.001 28.8 317.601C28.8 317.601 28 338.001 21.2 349.001C21.2 349.001 35.4 328.801 31.4 344.801z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M21.4 342.801C21.4 342.801 21.2 322.801 21.6 319.801C21.6 319.801 17.8 336.401 7.6 346.001C7.6 346.001 22 334.001 21.4 342.801z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M11.8 310.801C11.8 310.801 17.8 324.401 7.8 342.801C7.8 342.801 14.2 330.601 9.4 323.601C9.4 323.601 12 320.201 11.8 310.801z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-7.4 342.401C-7.4 342.401 -8.4 326.801 -6.6 324.601C-6.6 324.601 -6.4 318.201 -6.8 317.201C-6.8 317.201 -2.8 311.001 -2.6 318.401C-2.6 318.401 -1.2 326.201 1.6 330.801C1.6 330.801 5.2 336.201 5 342.601C5 342.601 -5 312.401 -7.4 342.401z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-11 314.801C-11 314.801 -17.6 325.601 -19.4 344.601C-19.4 344.601 -20.8 338.401 -17 324.001C-17 324.001 -12.8 308.601 -11 314.801z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-32.8 334.601C-32.8 334.601 -27.8 329.201 -26.4 324.201C-26.4 324.201 -22.8 308.401 -29.2 317.001C-29.2 317.001 -29 325.001 -37.2 332.401C-37.2 332.401 -32.4 330.001 -32.8 334.601z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-38.6 329.601C-38.6 329.601 -35.2 312.201 -34.4 311.401C-34.4 311.401 -32.6 308.001 -35.4 311.201C-35.4 311.201 -44.2 330.401 -48.2 337.001C-48.2 337.001 -40.2 327.801 -38.6 329.601z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-44.4 313.001C-44.4 313.001 -32.8 290.601 -54.6 316.401C-54.6 316.401 -43.6 306.601 -44.4 313.001z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M-59.8 298.401C-59.8 298.401 -55 279.601 -52.4 279.801C-52.4 279.801 -44.2 270.801 -50.8 281.401C-50.8 281.401 -56.8 291.001 -56.2 300.801C-56.2 300.801 -56.8 291.201 -59.8 298.401z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M270.5 287C270.5 287 258.5 277 256 273.5C256 273.5 269.5 292 269.5 299C269.5 299 272 291.5 270.5 287z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M276 265C276 265 255 250 251.5 242.5C251.5 242.5 278 272 278 276.5C278 276.5 278.5 267.5 276 265z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M293 111C293 111 281 103 279.5 105C279.5 105 290 111.5 292.5 120C292.5 120 291 111 293 111z"/>
+ </g>
+ <g style="fill: rgb(204, 204, 204);">
+  <path d="M301.5 191.5L284 179.5C284 179.5 303 196.5 303.5 200.5L301.5 191.5z"/>
+ </g>
+ <g style="stroke: rgb(0, 0, 0);">
+  <path d="M-89.25 169L-67.25 173.75"/>
+ </g>
+ <g style="stroke: rgb(0, 0, 0);">
+  <path d="M-39 331C-39 331 -39.5 327.5 -48.5 338"/>
+ </g>
+ <g style="stroke: rgb(0, 0, 0);">
+  <path d="M-33.5 336C-33.5 336 -31.5 329.5 -38 334"/>
+ </g>
+ <g style="stroke: rgb(0, 0, 0);">
+  <path d="M20.5 344.5C20.5 344.5 22 333.5 10.5 346.5"/>
+ </g>
+</g>
+</svg>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger.wmf b/inc/3rdparty/libraries/mpdf/examples/tiger.wmf
new file mode 100644 (file)
index 0000000..34c0b52
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger.wmf differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger2.png b/inc/3rdparty/libraries/mpdf/examples/tiger2.png
new file mode 100644 (file)
index 0000000..af42742
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger2.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger2.wmf b/inc/3rdparty/libraries/mpdf/examples/tiger2.wmf
new file mode 100644 (file)
index 0000000..c60c75a
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger2.wmf differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger24trns.png b/inc/3rdparty/libraries/mpdf/examples/tiger24trns.png
new file mode 100644 (file)
index 0000000..e3b3e0c
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger24trns.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.jpg b/inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.jpg
new file mode 100644 (file)
index 0000000..142415d
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.png b/inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.png
new file mode 100644 (file)
index 0000000..62f7405
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger300px300dpi.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger300px72dpi.jpg b/inc/3rdparty/libraries/mpdf/examples/tiger300px72dpi.jpg
new file mode 100644 (file)
index 0000000..168ca38
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger300px72dpi.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.jpg b/inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.jpg
new file mode 100644 (file)
index 0000000..82531f3
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.png b/inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.png
new file mode 100644 (file)
index 0000000..67174a7
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger300px96dpi.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger8trns.gif b/inc/3rdparty/libraries/mpdf/examples/tiger8trns.gif
new file mode 100644 (file)
index 0000000..d46053b
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger8trns.gif differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tiger8trns.png b/inc/3rdparty/libraries/mpdf/examples/tiger8trns.png
new file mode 100644 (file)
index 0000000..a34ddca
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tiger8trns.png differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tigercmyk.jpg b/inc/3rdparty/libraries/mpdf/examples/tigercmyk.jpg
new file mode 100644 (file)
index 0000000..ee8e702
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/tigercmyk.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/examples/tux.svg b/inc/3rdparty/libraries/mpdf/examples/tux.svg
new file mode 100644 (file)
index 0000000..de8c869
--- /dev/null
@@ -0,0 +1,1487 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="500pt"
+   height="600pt"
+   id="svg5620"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="mh_inksc_100511_NewTux.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/media/disk/※T h i n g S/UB SOFTWARE/Openclipart/mh_inksc_100511_NewTux.png"
+   inkscape:export-xdpi="150.03999"
+   inkscape:export-ydpi="150.03999">
+  <metadata
+     id="metadata5712">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     inkscape:window-height="728"
+     inkscape:window-width="1280"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     guidetolerance="10.0"
+     gridtolerance="10.0"
+     objecttolerance="10.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base"
+     showgrid="false"
+     inkscape:zoom="0.65866667"
+     inkscape:cx="837.03841"
+     inkscape:cy="362.33556"
+     inkscape:window-x="0"
+     inkscape:window-y="24"
+     inkscape:current-layer="svg5620"
+     showguides="true"
+     inkscape:guide-bbox="true" />
+  <defs
+     id="defs5622">
+    <linearGradient
+       id="linearGradient6810">
+      <stop
+         id="stop6812"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:0.04385965;" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.35964912;"
+         offset="0.46429399"
+         id="stop6816" />
+      <stop
+         id="stop6814"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 375 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="625 : 375 : 1"
+       inkscape:persp3d-origin="312.5 : 250 : 1"
+       id="perspective5714" />
+    <linearGradient
+       id="linearGradient172">
+      <stop
+         style="stop-color:#3f2600;stop-opacity:0.6;"
+         offset="0"
+         id="stop173" />
+      <stop
+         style="stop-color:#3f2600;stop-opacity:0;"
+         offset="1"
+         id="stop174" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient167">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.65;"
+         offset="0"
+         id="stop168" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop169" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient162">
+      <stop
+         style="stop-color:#ffa63f;stop-opacity:1;"
+         offset="0"
+         id="stop163" />
+      <stop
+         style="stop-color:#ffff00;stop-opacity:1;"
+         offset="1"
+         id="stop164" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient153">
+      <stop
+         style="stop-color:#ffeed7;stop-opacity:1;"
+         offset="0"
+         id="stop154" />
+      <stop
+         style="stop-color:#bdbfc2;stop-opacity:1;"
+         offset="1"
+         id="stop155" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient138">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.8;"
+         offset="0"
+         id="stop139" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop140" />
+    </linearGradient>
+    <linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient141"
+       x1="0.47424799"
+       y1="0.020191999"
+       x2="0.417539"
+       y2="0.90125799"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient142"
+       x1="0.55880702"
+       y1="0.031192999"
+       x2="0.553922"
+       y2="0.94531101"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient143"
+       x1="0.46557701"
+       y1="0.028819799"
+       x2="0.41365999"
+       y2="0.93366498"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient144"
+       x1="0.70346397"
+       y1="0.059404202"
+       x2="0.64553201"
+       y2="0.94063401"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient145"
+       x1="0.46741399"
+       y1="-0.036155298"
+       x2="0.86741799"
+       y2="0.75857902"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient146"
+       x1="0.57152498"
+       y1="0.023441499"
+       x2="0.57143003"
+       y2="0.71875"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient147"
+       x1="0.5"
+       y1="0.0234362"
+       x2="0.5"
+       y2="0.8125"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient148"
+       x1="0.50799799"
+       y1="0.37435901"
+       x2="0.51599997"
+       y2="0.92820501"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient149"
+       x1="0.5"
+       y1="0.131707"
+       x2="0.50400001"
+       y2="0.94634098"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient150"
+       x1="-0.30509499"
+       y1="0.099496603"
+       x2="0.156323"
+       y2="0.94191301"
+       gradientUnits="objectBoundingBox"
+       gradientTransform="matrix(-0.928523,0.283938,0.435332,0.943857,-1.91327e-7,5.49908e-8)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient151"
+       x1="0.433979"
+       y1="0.022184599"
+       x2="0.487055"
+       y2="1.02569"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient152"
+       x1="0.5"
+       y1="0.89842999"
+       x2="0.5"
+       y2="0.40625"
+       gradientUnits="objectBoundingBox"
+       spreadMethod="reflect" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient156"
+       x1="0.43568701"
+       y1="0.98882002"
+       x2="0.453989"
+       y2="0.23093501"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient157"
+       x1="0.49180499"
+       y1="1.15284"
+       x2="0.49482101"
+       y2="0.41252401"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient158"
+       x1="0.51730198"
+       y1="0.85418499"
+       x2="0.49843901"
+       y2="0.136172"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient159"
+       x1="0.46201"
+       y1="0.87917101"
+       x2="0.49215299"
+       y2="0.096282303"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient161"
+       x1="0.50086302"
+       y1="0.34872901"
+       x2="0.41209599"
+       y2="0.98558098"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient165"
+       x1="0.60399801"
+       y1="0.51020199"
+       x2="0.46399999"
+       y2="0.98367399"
+       gradientUnits="objectBoundingBox" />
+    <linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient166"
+       x1="0.50000501"
+       y1="0.191616"
+       x2="0.50800002"
+       y2="0.97005898"
+       gradientUnits="objectBoundingBox" />
+    <radialGradient
+       xlink:href="#linearGradient172"
+       id="radialGradient171"
+       cx="0.5"
+       cy="0.5"
+       fx="0.5"
+       fy="0.5"
+       r="0.5"
+       gradientUnits="objectBoundingBox" />
+    <radialGradient
+       xlink:href="#linearGradient172"
+       id="radialGradient176" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient178"
+       x1="0.94027299"
+       y1="1.2934099"
+       x2="0.19452"
+       y2="-0.675295"
+       gradientUnits="objectBoundingBox" />
+    <radialGradient
+       xlink:href="#linearGradient172"
+       id="radialGradient1399"
+       gradientTransform="scale(1.045233,0.956725)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1401"
+       gradientUnits="userSpaceOnUse"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886"
+       gradientTransform="scale(0.575262,1.738339)" />
+    <linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient1403"
+       gradientUnits="userSpaceOnUse"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561"
+       gradientTransform="scale(1.116071,0.896001)" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1405"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.816497,1.224744)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1407"
+       gradientUnits="userSpaceOnUse"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338"
+       gradientTransform="scale(0.816497,1.224744)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1409"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.816497,1.224744)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1411"
+       gradientUnits="userSpaceOnUse"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513"
+       gradientTransform="scale(0.816497,1.224744)" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1413"
+       gradientUnits="userSpaceOnUse"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361"
+       gradientTransform="scale(0.812855,1.230232)" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1415"
+       gradientUnits="userSpaceOnUse"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815"
+       gradientTransform="scale(0.649784,1.538974)" />
+    <linearGradient
+       xlink:href="#linearGradient138"
+       id="linearGradient1417"
+       gradientUnits="userSpaceOnUse"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439"
+       gradientTransform="scale(1.074798,0.930408)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1419"
+       gradientUnits="userSpaceOnUse"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251"
+       gradientTransform="scale(1.077001,0.928504)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1421"
+       gradientUnits="userSpaceOnUse"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858"
+       gradientTransform="scale(0.571707,1.749147)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1423"
+       gradientUnits="userSpaceOnUse"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911"
+       gradientTransform="scale(0.572667,1.746214)" />
+    <linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient1425"
+       gradientUnits="userSpaceOnUse"
+       x1="236.25362"
+       y1="657.11133"
+       x2="212.5099"
+       y2="737.41229"
+       gradientTransform="scale(1.011514,0.988617)" />
+    <linearGradient
+       xlink:href="#linearGradient153"
+       id="linearGradient1427"
+       gradientUnits="userSpaceOnUse"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583"
+       gradientTransform="scale(1.065499,0.938527)" />
+    <linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient1429"
+       gradientUnits="userSpaceOnUse"
+       x1="218.11714"
+       y1="630.30475"
+       x2="203.12654"
+       y2="737.8537"
+       gradientTransform="scale(1.009851,0.990245)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1431"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.007724,0.992335)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1433"
+       gradientUnits="userSpaceOnUse"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723"
+       gradientTransform="scale(0.999504,1.000496)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1435"
+       gradientUnits="userSpaceOnUse"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507"
+       gradientTransform="scale(1.065499,0.938527)" />
+    <linearGradient
+       xlink:href="#linearGradient162"
+       id="linearGradient1437"
+       gradientUnits="userSpaceOnUse"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934"
+       gradientTransform="scale(1.218684,0.820557)" />
+    <linearGradient
+       xlink:href="#linearGradient167"
+       id="linearGradient1439"
+       gradientUnits="userSpaceOnUse"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939"
+       gradientTransform="scale(1.221941,0.81837)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient5844"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.045233,0.956725)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5846"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.575262,1.738339)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient5848"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.116071,0.896001)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5850"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.816497,1.224744)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5852"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.816497,1.224744)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5854"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.816497,1.224744)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5856"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.816497,1.224744)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5858"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.812855,1.230232)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5860"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.649784,1.538974)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient5862"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.074798,0.930408)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5864"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.077001,0.928504)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5866"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.571707,1.749147)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5868"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.572667,1.746214)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient5870"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.011514,0.988617)"
+       x1="236.25362"
+       y1="657.11133"
+       x2="212.5099"
+       y2="737.41229" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5872"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.065499,0.938527)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient5874"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.009851,0.990245)"
+       x1="218.11714"
+       y1="630.30475"
+       x2="203.12654"
+       y2="737.8537" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5876"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.007724,0.992335)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5878"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(0.999504,1.000496)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5880"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.065499,0.938527)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient5882"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.218684,0.820557)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5884"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="scale(1.221941,0.81837)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5936"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.8689234e-2,-0.4008691,0.3415516,4.336381e-2,-313.66484,483.36861)"
+       x1="316.93988"
+       y1="474.01779"
+       x2="371.60889"
+       y2="582.63507" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5949"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6373879,0.286176,-0.2248927,0.5792711,-190.14391,-154.55792)"
+       x1="381.56607"
+       y1="655.73102"
+       x2="279.64313"
+       y2="386.66583" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5992"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9649387,-1.2915552e-2,-3.6719978e-2,2.5569228,169.00168,-594.11178)"
+       x1="400.57785"
+       y1="369.53015"
+       x2="400.84448"
+       y2="304.07886" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient6820"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1593287,2.2594958e-2,6.8898041e-2,-0.4858355,313.34561,293.76431)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient6824"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.184254,-0.3061768,0.2434767,-0.1724949,439.82488,377.41134)"
+       x1="294.40485"
+       y1="481.32233"
+       x2="371.60889"
+       y2="582.63507" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2514"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(7.6104436e-3,-0.1875898,0.5720113,2.3206217e-2,1167.6399,-164.81318)"
+       x1="892.69696"
+       y1="258.28925"
+       x2="564.89618"
+       y2="281.90463" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2517"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2316272,0.2342907,0.7144146,-0.7062927,960.97808,-166.19015)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2520"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672384,0,0,0.4874752,936.37068,-466.38275)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2524"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.523355,0,0,1.0256962,729.45868,-685.70504)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2527"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038119,-5.2260066e-2,-1.740863e-2,1.0462687,788.19568,-546.66535)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2530"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523959,0.3464001,0.4208255,0.9487298,1258.3327,-582.54204)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2533"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800109,0.4273134,0.4706466,1.1534176,1272.3477,-732.02104)"
+       x1="218.11714"
+       y1="630.30475"
+       x2="203.12654"
+       y2="737.8537" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient2536"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643925,0,0,1.2357712,729.45868,-685.70504)"
+       x1="236.25362"
+       y1="657.11133"
+       x2="212.5099"
+       y2="737.41229" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6810"
+       id="linearGradient2539"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.599201,7.9485483e-2,-0.2318863,1.9097465,860.80461,-630.61189)"
+       x1="855.06372"
+       y1="238.8383"
+       x2="871.15576"
+       y2="315.45914" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2545"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781848,0,0,0.990788,754.62768,-618.27804)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2548"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994837,0,0,1.1399824,714.04668,-671.75704)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2555"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.53779,729.45868,-686.43004)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2558"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2914159,-3.3330306e-2,5.0610341e-2,0.4881144,1003.9662,-404.72726)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient2561"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.9764582e-2,-5.7310058e-2,0.5824956,1376.4784,-428.91032)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2566"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8864067e-2,1.9024316,1751.4647,-802.97704)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient2569"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672141e-2,9.4458503e-2,1.6443046,688.76168,-695.81704)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient2572"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132361,-7.9650304e-2,-4.1197678e-2,1.0713842,746.14768,-643.96104)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient2577"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818268,0,0,0.3967969,505.21028,-296.00604)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3353"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-7.6104436e-3,-0.1875898,-0.5720113,2.3206217e-2,1186.0942,-162.08752)"
+       x1="892.69696"
+       y1="258.28925"
+       x2="564.89618"
+       y2="281.90463" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient3411"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818268,0,0,0.3967969,-359.87341,176.94177)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3413"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132361,-7.9650304e-2,-4.1197678e-2,1.0713842,-118.936,-171.0132)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3415"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672141e-2,9.4458503e-2,1.6443046,-176.32201,-222.8692)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3417"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8864067e-2,1.9024316,886.38099,-330.0292)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3419"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.9764582e-2,-5.7310058e-2,0.5824956,511.39472,44.037525)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3421"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2914159,-3.3330306e-2,5.0610341e-2,0.4881144,138.88252,68.220525)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3423"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.53779,-135.62501,-213.4822)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient3425"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.2174108e-2,0.1573001,2.0039596,-212.66601,-211.1902)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient3427"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994837,0,0,1.1399824,-151.03701,-198.8092)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3429"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781848,0,0,0.990788,-110.456,-145.33018)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3431"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146338,0,0,2.1864338,-135.62501,-212.7572)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6810"
+       id="linearGradient3433"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.599201,7.9485483e-2,-0.2318863,1.9097465,10.90312,-180.4374)"
+       x1="855.06372"
+       y1="238.8383"
+       x2="871.15576"
+       y2="315.45914" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3435"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643925,0,0,1.2357712,-135.62501,-212.7572)"
+       x1="236.25362"
+       y1="657.11133"
+       x2="212.5099"
+       y2="737.41229" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3437"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800109,0.4273134,0.4706466,1.1534176,407.26399,-259.0732)"
+       x1="218.11714"
+       y1="630.30475"
+       x2="203.12654"
+       y2="737.8537" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3439"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523959,0.3464001,0.4208255,0.9487298,393.24899,-109.59418)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3441"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038119,-5.2260066e-2,-1.740863e-2,1.0462687,-76.888003,-73.717475)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient3443"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.523355,0,0,1.0256962,-135.62501,-212.7572)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3445"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672384,0,0,0.4874752,71.286992,6.5651249)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3447"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2316272,0.2342907,0.7144146,-0.7062927,95.894394,306.75766)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3449"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(7.6104436e-3,-0.1875898,0.5720113,2.3206217e-2,302.55621,308.13463)"
+       x1="892.69696"
+       y1="258.28925"
+       x2="564.89618"
+       y2="281.90463" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient3455"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.1449278,0.2958704,-0.9021871,-0.4419231,1401.2488,-283.33537)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6810"
+       id="linearGradient3459"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.6037841,2.836597e-2,6.9037787e-2,1.9225339,1538.2922,-593.33926)"
+       x1="855.06372"
+       y1="238.8383"
+       x2="871.15576"
+       y2="315.45914" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5957"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(7.6104436e-3,-0.1875898,0.5720113,2.3206217e-2,313.36793,291.43423)"
+       x1="892.69696"
+       y1="258.28925"
+       x2="564.89618"
+       y2="281.90463" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5960"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2316272,0.2342907,0.7144146,-0.7062927,95.894394,306.75766)"
+       x1="867.34546"
+       y1="234.73897"
+       x2="867.33453"
+       y2="314.83911" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5963"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7672384,0,0,0.4874752,71.286992,6.5651249)"
+       x1="288.82358"
+       y1="398.85422"
+       x2="288.37628"
+       y2="482.55939" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient5967"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.523355,0,0,1.0256962,-135.62501,-212.7572)"
+       x1="284.68652"
+       y1="410.46326"
+       x2="285.45923"
+       y2="485.69934" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5970"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0038119,-5.2260066e-2,-1.740863e-2,1.0462687,-76.888003,-73.717475)"
+       x1="223.10072"
+       y1="570.41809"
+       x2="230.53499"
+       y2="710.97723" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5973"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.9523959,0.3464001,0.4208255,0.9487298,393.24899,-109.59418)"
+       x1="117.88966"
+       y1="587.23602"
+       x2="182.24524"
+       y2="704.73077" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient5976"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.1800109,0.4273134,0.4706466,1.1534176,407.26399,-259.0732)"
+       x1="218.11714"
+       y1="630.30475"
+       x2="203.12654"
+       y2="737.8537" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient162"
+       id="linearGradient5979"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2643925,0,0,1.2357712,-135.62501,-212.7572)"
+       x1="236.25362"
+       y1="657.11133"
+       x2="212.5099"
+       y2="737.41229" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6810"
+       id="linearGradient5982"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.599201,7.9485483e-2,-0.2318863,1.9097465,10.90312,-180.4374)"
+       x1="855.06372"
+       y1="238.8383"
+       x2="871.15576"
+       y2="315.45914" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5985"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7146338,0,0,2.1864338,-135.62501,-212.7572)"
+       x1="411.2215"
+       y1="242.94365"
+       x2="411.2215"
+       y2="331.44858" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient5988"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2781848,0,0,0.990788,-110.456,-145.33018)"
+       x1="322.48257"
+       y1="435.26761"
+       x2="323.2514"
+       y2="488.48251" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient5991"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3994837,0,0,1.1399824,-151.03701,-198.8092)"
+       x1="320.75104"
+       y1="498.17776"
+       x2="321.32224"
+       y2="614.50439" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5995"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9027839,-7.2174108e-2,0.1573001,2.0039596,-212.66601,-211.1902)"
+       x1="375.17325"
+       y1="419.78485"
+       x2="377.48541"
+       y2="324.03815" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient5998"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0160687,0,0,1.53779,-135.62501,-213.4822)"
+       spreadMethod="reflect"
+       x1="437.57941"
+       y1="528.87177"
+       x2="437.57941"
+       y2="394.10361" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient6001"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2914159,-3.3330306e-2,5.0610341e-2,0.4881144,138.88252,68.220525)"
+       x1="389.63535"
+       y1="242.28218"
+       x2="387.06866"
+       y2="281.32513" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient167"
+       id="linearGradient6004"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.3921823,-2.9764582e-2,-5.7310058e-2,0.5824956,511.39472,44.037525)"
+       x1="379.09573"
+       y1="240.92712"
+       x2="376.79556"
+       y2="281.01636" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient6009"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.4785291,4.0425338e-2,3.8864067e-2,1.9024316,886.38099,-330.0292)"
+       x1="381.38742"
+       y1="277.495"
+       x2="380.5517"
+       y2="245.68338" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient153"
+       id="linearGradient6012"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0650795,-6.1672141e-2,9.4458503e-2,1.6443046,-176.32201,-222.8692)"
+       x1="378.93771"
+       y1="278.60202"
+       x2="380.27319"
+       y2="243.91606" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient138"
+       id="linearGradient6015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4132361,-7.9650304e-2,-4.1197678e-2,1.0713842,-118.936,-171.0132)"
+       x1="303.01761"
+       y1="237.93179"
+       x2="297.0856"
+       y2="330.09561" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient172"
+       id="radialGradient6020"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.4818268,0,0,0.3967969,-359.87341,176.94177)"
+       cx="446.77762"
+       cy="1219.4125"
+       fx="446.77762"
+       fy="1219.4125"
+       r="195.07191" />
+  </defs>
+  <g
+     id="g6022">
+    <path
+       d="M 591.23603,660.80083 C 591.23603,703.54984 461.81827,738.20477 302.17337,738.20477 C 142.52846,738.20477 13.110708,703.54984 13.110708,660.80083 C 13.110708,618.05182 142.52846,583.39691 302.17337,583.39691 C 461.81827,583.39691 591.23603,618.05182 591.23603,660.80083 z"
+       id="path3355"
+       style="fill:url(#radialGradient6020);stroke:none;stroke-width:1pt;stroke-linecap:butt;stroke-linejoin:miter" />
+    <path
+       sodipodi:nodetypes="ccccccccc"
+       id="path3357"
+       d="M 143.90874,577.54277 C 115.92374,537.26402 110.46624,406.31277 175.76749,325.75527 C 208.12499,287.10777 216.37999,260.17402 218.93124,224.01402 C 220.66749,182.79027 189.77499,59.711525 306.28499,50.334025 C 424.29249,40.919025 417.95499,157.40902 417.27624,219.05277 C 416.71249,271.10277 419.0565,276.31252 445.584,316.88002 C 494.68275,391.41752 526.96749,544.04652 472.77249,613.51152 C 404.12624,700.47152 345.33124,662.75902 306.28499,665.92402 C 233.16874,669.92652 230.75124,708.91277 143.90874,577.54277 z"
+       style="fill:#000000;stroke:none;stroke-width:1.25" />
+    <path
+       sodipodi:nodetypes="cssccc"
+       id="path3359"
+       d="M 437.66398,210.61794 C 450.11848,228.11403 483.19457,249.41586 502.10694,275.91451 C 521.01932,302.41316 477.73746,333.2079 443.1675,314.23928 C 417.44041,300.12277 444.25181,384.39183 467.34598,377.01641 C 614.65479,312.95238 492.4139,250.78608 485.61266,191.90909 C 540.40451,67.355773 400.47822,152.79209 437.66398,210.61794 z"
+       style="fill:#000000;stroke:#000000;stroke-width:1.5625006" />
+    <path
+       d="M 375.15201,109.16012 C 373.96198,140.10802 339.90409,167.06128 299.08159,169.36204 C 258.25909,171.66281 226.13061,148.43982 227.32064,117.49192 C 228.51067,86.544125 262.56856,59.590825 303.39106,57.290125 C 344.21356,54.989325 376.34204,78.212325 375.15201,109.16012 z"
+       id="path3361"
+       style="fill:url(#linearGradient6015);stroke:none;stroke-width:1.26498997" />
+    <path
+       d="M 277.39315,182.77455 C 278.54881,202.89182 268.92216,219.81175 255.89144,220.56628 C 242.86071,221.3208 231.36038,205.62421 230.20473,185.50694 C 229.04907,165.38967 238.67572,148.46972 251.70644,147.71522 C 264.73717,146.96072 276.2375,162.65728 277.39315,182.77455 z"
+       id="path3363"
+       style="fill:url(#linearGradient6012);stroke:none;stroke-width:1.17873001" />
+    <path
+       d="M 301.04358,184.3151 C 301.51907,207.59043 316.56861,226.05786 334.65769,225.56328 C 352.74677,225.06869 367.02541,205.79938 366.54992,182.52405 C 366.07444,159.24872 351.02489,140.78132 332.93581,141.27592 C 314.84674,141.77042 300.5681,161.03977 301.04358,184.3151 z"
+       id="path3365"
+       style="fill:url(#linearGradient6009);stroke:none;stroke-width:0.93138498" />
+    <path
+       d="M 331.21231,191.85453 C 330.93912,204.63094 337.38392,215.00253 345.60719,215.02013 C 353.83046,215.03772 360.7182,204.69466 360.99139,191.91824 C 361.26458,179.14182 354.81978,168.77023 346.59651,168.75264 C 338.37324,168.73505 331.4855,179.07811 331.21231,191.85453 z"
+       id="path3367"
+       style="fill:#000000;stroke:none;stroke-width:1.86495996" />
+    <path
+       d="M 273.01381,188.19365 C 274.04499,198.77003 270.0676,207.92934 264.13008,208.65153 C 258.19256,209.37373 252.54331,201.38533 251.51214,190.80895 C 250.48097,180.23257 254.45835,171.07326 260.39587,170.35107 C 266.33339,169.62887 271.98264,177.61727 273.01381,188.19365 z"
+       id="path3369"
+       style="fill:#000000;stroke:none;stroke-width:2.39814997" />
+    <path
+       d="M 338.4302,184.54815 C 337.72904,191.6747 341.05031,197.74711 345.84847,198.11127 C 350.64663,198.47542 355.10471,192.99342 355.80587,185.86687 C 356.50703,178.74032 353.18576,172.6679 348.3876,172.30374 C 343.58944,171.93959 339.13136,177.42159 338.4302,184.54815 z"
+       id="path3371"
+       style="fill:url(#linearGradient6004);stroke:none;stroke-width:3.1916101" />
+    <path
+       d="M 269.50703,182.58574 C 270.12623,188.55758 267.73791,193.72929 264.17258,194.13707 C 260.60725,194.54485 257.21502,190.03429 256.59583,184.06244 C 255.97663,178.0906 258.36495,172.91889 261.93028,172.51111 C 265.49561,172.10333 268.88784,176.6139 269.50703,182.58574 z"
+       id="path3373"
+       style="fill:url(#linearGradient6001);stroke:none;stroke-width:4.12025976" />
+    <path
+       id="path3375"
+       d="M 187.75249,405.79902 C 203.79749,369.42027 237.89499,305.51652 238.62124,256.10152 C 238.62124,216.79902 356.34499,207.41277 365.79249,246.65402 C 375.23999,285.89527 399.21874,344.75777 414.47999,373.09902 C 429.73999,401.43902 474.24124,491.46777 426.83499,570.03152 C 384.13874,639.58652 254.67874,694.61402 185.57249,560.58527 C 162.31874,514.07652 166.46624,456.44152 187.75249,405.79902 z"
+       style="fill:url(#linearGradient5998);stroke:none;stroke-width:1.25" />
+    <path
+       id="path3377"
+       d="M 173.24559,378.8028 C 159.53586,404.75152 131.00745,472.99595 200.53857,510.33418 C 275.38701,549.97538 275.02711,631.56055 185.18731,592.7418 C 103.05444,557.65452 139.36496,415.87304 162.33593,381.94969 C 177.39745,358.18988 199.98644,329.10722 173.24559,378.8028 z"
+       style="fill:url(#linearGradient5995);stroke:none;stroke-width:1.15804005" />
+    <path
+       id="path3379"
+       d="M 185.01624,349.39277 C 163.18499,385.02777 110.79499,469.15902 180.90624,512.79652 C 275.36749,570.74027 248.62249,628.68527 162.40749,576.51402 C 41.021247,503.68402 147.62624,356.99402 196.32124,301.09152 C 251.87624,238.34152 207.01374,312.45027 185.01624,349.39277 z"
+       style="fill:#000000;stroke:#000000;stroke-width:1.5625" />
+    <path
+       id="path3381"
+       d="M 397.76919,419.60753 C 397.76919,459.32033 359.65441,510.90826 294.21657,510.44511 C 226.73185,511.0026 197.92832,459.32033 197.92832,419.60753 C 197.92832,379.89472 242.69287,347.66452 297.8494,347.66452 C 353.00463,347.66452 397.76919,379.89472 397.76919,419.60753 z"
+       style="font-size:12px;fill:url(#linearGradient5991);stroke:none;stroke-width:1.23705006;stroke-dasharray:none" />
+    <path
+       id="path3383"
+       d="M 362.15979,294.61832 C 361.43347,335.77773 334.64977,345.48709 300.75476,345.48709 C 266.85857,345.48709 242.25502,339.41113 239.34854,294.61832 C 239.34854,266.53917 266.85857,250.28968 300.75476,250.28968 C 334.64977,250.28968 362.15979,266.53917 362.15979,294.61832 z"
+       style="font-size:12px;fill:url(#linearGradient5988);stroke:none;stroke-width:1.38846004;stroke-dasharray:none" />
+    <path
+       id="path3385"
+       d="M 157.23124,357.83652 C 179.37624,324.09152 225.99999,272.38152 165.95249,365.10277 C 117.26374,441.40652 147.94874,490.44402 163.77249,503.90152 C 209.43124,544.60402 207.47999,571.83777 171.76624,550.40902 C 94.734994,504.62652 110.72249,427.59902 157.23124,357.83652 z"
+       style="fill:url(#linearGradient5985);stroke:none;stroke-width:1.25" />
+    <path
+       id="path3387"
+       d="M 462.21568,398.96909 C 450.39659,362.17304 409.96999,267.68577 467.11982,378.94676 C 519.1881,479.53006 466.98563,537.85433 458.30537,543.16377 C 449.62629,548.47226 421.31707,557.63765 431.92723,536.4342 C 442.53632,515.23062 487.08834,478.21682 462.21568,398.96909 z"
+       style="fill:url(#linearGradient5982);fill-opacity:1;stroke:none;stroke-width:1.25" />
+    <path
+       id="path3389"
+       d="M 140.51874,683.39402 C 89.966244,656.62402 16.453747,688.54902 43.141247,615.81152 C 48.486247,599.26402 35.172497,574.55152 43.867497,558.40402 C 54.041247,538.78152 75.842494,543.14277 88.923744,530.06152 C 101.82124,516.44777 109.99749,493.00027 133.97874,496.63402 C 157.95874,500.26777 173.90999,529.71027 190.65874,565.67027 C 203.01249,591.46777 246.83499,627.75027 243.97124,656.61777 C 240.60124,700.99277 190.18749,709.35527 140.51874,683.39402 z"
+       style="fill:url(#linearGradient5979);stroke:#e68c3f;stroke-width:7.8125" />
+    <path
+       id="path3391"
+       d="M 491.31808,670.91489 C 528.39675,625.95042 610.70818,635.17384 555.19701,573.52225 C 543.452,560.30492 546.95774,531.65049 532.68995,519.54726 C 515.71854,504.70652 496.99731,516.87766 479.79512,509.11645 C 462.56223,500.79684 444.55058,484.62292 423.51456,496.12697 C 402.4797,507.6306 400.21642,537.55836 398.23263,576.73647 C 396.49323,604.95714 370.77728,652.14775 384.4305,678.07775 C 404.45332,718.28664 455.96509,712.96302 491.31808,670.91489 z"
+       style="fill:url(#linearGradient5976);stroke:#e68c3f;stroke-width:7.81249762" />
+    <path
+       id="path3393"
+       d="M 475.19239,610.80964 C 532.58685,526.08884 489.81056,526.70588 475.48217,520.29802 C 461.11206,513.43236 445.8707,500.12629 428.97182,509.5003 C 412.07389,518.87396 411.10688,543.40025 410.64335,575.50997 C 410.05505,598.63832 390.69247,637.08007 402.33826,658.54446 C 416.30733,683.56395 450.20934,647.22527 475.19239,610.80964 z"
+       style="fill:url(#linearGradient5973);stroke:none;stroke-width:1.52532005" />
+    <path
+       id="path3395"
+       d="M 128.7701,623.00924 C 42.866706,567.39983 83.051524,548.52024 96.092064,539.78558 C 111.73042,528.58358 111.85185,506.75151 131.06896,508.78839 C 150.28506,510.82534 161.47212,534.4833 174.42831,563.86686 C 183.9948,584.9323 216.82272,612.77142 214.47562,637.07862 C 211.37663,665.56569 165.98235,646.7897 128.7701,623.00924 z"
+       style="fill:url(#linearGradient5970);stroke:none;stroke-width:1.52532005" />
+    <path
+       id="path3397"
+       d="M 251.81749,210.65402 C 260.75124,202.19152 282.83124,176.82152 324.26874,203.46027 C 331.97124,208.47277 338.22124,208.93152 353.04499,215.27902 C 382.70249,227.46527 368.52249,256.85277 337.11499,266.66402 C 323.66749,271.02527 311.44499,287.35902 286.95374,285.96277 C 266.03624,284.74152 260.55499,271.12027 247.70624,263.58027 C 224.86999,250.69152 221.49999,233.26277 233.83124,224.01402 C 246.16374,214.76527 250.98749,211.44027 251.81749,210.65402 z"
+       style="fill:url(#linearGradient5967);stroke:#e68c3f;stroke-width:4.6875" />
+    <path
+       id="path3399"
+       d="M 353.43874,234.29902 C 341.08499,235.02527 314.19749,261.91277 285.85624,261.91277 C 257.51499,261.91277 240.80124,235.75152 236.44124,235.75152"
+       style="fill:none;stroke:#e68c3f;stroke-width:3.125" />
+    <path
+       id="path3401"
+       d="M 265.90246,208.33442 C 270.38995,204.30176 284.54499,193.23548 303.31687,204.56504 C 307.27192,206.80832 311.35631,209.24996 317.43047,212.58509 C 329.462,219.58298 323.50274,229.6676 309.08839,236.04837 C 302.54708,238.72589 291.76316,244.6349 283.55168,244.22151 C 274.42662,243.38281 268.52325,237.43151 262.47546,233.55551 C 251.38073,226.22703 252.05445,220.30969 257.20813,215.38293 C 261.10416,212.00015 265.48554,208.70909 265.90246,208.33442 z"
+       style="fill:url(#linearGradient5963);stroke:none" />
+    <path
+       sodipodi:nodetypes="ccscc"
+       id="path3403"
+       d="M 485.62558,318.40009 C 470.31375,326.6082 417.68681,322.14515 480.02902,326.05185 C 529.45102,323.13335 535.62952,273.72084 534.95116,268.27709 C 534.2728,262.83418 518.48464,252.49699 513.21723,263.8189 C 507.9494,275.14041 526.70967,304.0309 485.62558,318.40009 z"
+       style="fill:url(#linearGradient5960);stroke:none;stroke-width:1.25" />
+    <path
+       sodipodi:nodetypes="ccscc"
+       id="path3405"
+       d="M 473.26296,135.03602 C 463.66338,137.45706 448.44209,148.26182 466.22252,134.32762 C 494.98909,121.13922 505.82847,135.59547 486.85683,175.63681 C 482.71091,184.38715 460.74905,201.85561 454.18436,199.10941 C 500.29783,163.55611 496.08175,126.83432 473.26296,135.03602 z"
+       style="fill:url(#linearGradient5957);stroke:none;stroke-width:1.25" />
+  </g>
+</svg>
diff --git a/inc/3rdparty/libraries/mpdf/examples/windmill.jpg b/inc/3rdparty/libraries/mpdf/examples/windmill.jpg
new file mode 100644 (file)
index 0000000..378a91c
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/examples/windmill.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourier.php b/inc/3rdparty/libraries/mpdf/font/ccourier.php
new file mode 100644 (file)
index 0000000..86d7a97
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+for($i=0;$i<=255;$i++)
+       $cw[chr($i)]=600;
+
+$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-23 -250 715 805]');
+$up=-100;
+$ut=50;
+
+?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourierb.php b/inc/3rdparty/libraries/mpdf/font/ccourierb.php
new file mode 100644 (file)
index 0000000..71444d8
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+for($i=0;$i<=255;$i++)
+       $cw[chr($i)]=600;
+$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-113 -250 749 801]');
+$up=-100;
+$ut=50;
+
+
+?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourierbi.php b/inc/3rdparty/libraries/mpdf/font/ccourierbi.php
new file mode 100644 (file)
index 0000000..e7d215a
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+for($i=0;$i<=255;$i++)
+       $cw[chr($i)]=600;
+$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-57 -250 869 801]');
+$up=-100;
+$ut=50;
+
+
+?>
diff --git a/inc/3rdparty/libraries/mpdf/font/ccourieri.php b/inc/3rdparty/libraries/mpdf/font/ccourieri.php
new file mode 100644 (file)
index 0000000..b16a133
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+for($i=0;$i<=255;$i++)
+       $cw[chr($i)]=600;
+$desc=array('Ascent'=>629,'Descent'=>-157,'CapHeight'=>562,'FontBBox'=>'[-27 -250 849 805]');
+$up=-100;
+$ut=50;
+
+
+?>
diff --git a/inc/3rdparty/libraries/mpdf/font/chelvetica.php b/inc/3rdparty/libraries/mpdf/font/chelvetica.php
new file mode 100644 (file)
index 0000000..176146f
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+$cw=array(
+       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
+       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
+       'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+       'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
+       'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
+       chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+       chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
+       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
+       chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
+
+$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-166 -225 1000 931]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -37, chr(89)=> -74, chr(118)=> -18, chr(119)=> -18, chr(121)=> -18, chr(146)=> -74, ), chr(70)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -55, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -74, chr(89)=> -74, chr(121)=> -37, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -18, chr(86)=> -18, chr(87)=> -18, chr(89)=> -18, ), chr(84)=> array ( chr(44)=> -110, chr(46)=> -110, chr(58)=> -110, chr(65)=> -74, chr(79)=> -18, chr(97)=> -110, chr(99)=> -110, chr(101)=> -110, chr(105)=> -37, chr(111)=> -110, chr(114)=> -37, chr(115)=> -110, chr(117)=> -37, chr(119)=> -55, chr(121)=> -55, ), chr(86)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -74, chr(97)=> -74, chr(101)=> -55, chr(105)=> -18, chr(111)=> -55, chr(114)=> -37, chr(117)=> -37, chr(121)=> -37, ), chr(87)=> array ( chr(44)=> -55, chr(46)=> -55, chr(58)=> -18, chr(65)=> -37, chr(97)=> -37, chr(101)=> -18, chr(105)=> 0, chr(111)=> -18, chr(114)=> -18, chr(117)=> -18, chr(121)=> -8, ), chr(89)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -55, chr(65)=> -74, chr(97)=> -74, chr(101)=> -91, chr(105)=> -37, chr(111)=> -91, chr(112)=> -74, chr(113)=> -91, chr(117)=> -55, chr(118)=> -55, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 18, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(121)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(145)=> array ( chr(145)=> -18, ), chr(146)=> array ( chr(115)=> -18, chr(146)=> -18, ), );
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/chelveticab.php b/inc/3rdparty/libraries/mpdf/font/chelveticab.php
new file mode 100644 (file)
index 0000000..362034c
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
+       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
+       'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+       'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
+       'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
+       chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+       chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
+       chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
+
+$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -228 1003 962]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -55, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -55, chr(89)=> -91, chr(118)=> -37, chr(119)=> -18, chr(121)=> -37, chr(146)=> -55, ), chr(70)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -55, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -55, chr(89)=> -91, chr(121)=> -37, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(86)=> -18, chr(87)=> -18, chr(89)=> -37, ), chr(84)=> array ( chr(44)=> -110, chr(46)=> -110, chr(58)=> -110, chr(65)=> -74, chr(79)=> -18, chr(97)=> -74, chr(99)=> -74, chr(101)=> -74, chr(105)=> -18, chr(111)=> -74, chr(114)=> -55, chr(115)=> -74, chr(117)=> -74, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -55, chr(65)=> -74, chr(97)=> -55, chr(101)=> -55, chr(105)=> -18, chr(111)=> -74, chr(114)=> -55, chr(117)=> -37, chr(121)=> -37, ), chr(87)=> array ( chr(44)=> -55, chr(46)=> -55, chr(58)=> -18, chr(65)=> -55, chr(97)=> -37, chr(101)=> -18, chr(105)=> -8, chr(111)=> -18, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(89)=> array ( chr(44)=> -110, chr(46)=> -110, chr(58)=> -74, chr(65)=> -91, chr(97)=> -55, chr(101)=> -55, chr(105)=> -37, chr(111)=> -74, chr(112)=> -55, chr(113)=> -74, chr(117)=> -55, chr(118)=> -55, ), chr(102)=> array ( chr(146)=> 18, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(121)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(145)=> array ( chr(145)=> -37, ), chr(146)=> array ( chr(115)=> -37, chr(146)=> -37, ), );
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/chelveticabi.php b/inc/3rdparty/libraries/mpdf/font/chelveticabi.php
new file mode 100644 (file)
index 0000000..b71ad34
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584,
+       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722,
+       'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+       'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889,
+       'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556,
+       chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+       chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611,
+       chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556);
+
+$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-174 -228 1114 962]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -74, chr(87)=> -55, chr(89)=> -74, chr(146)=> -55, ), chr(70)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -55, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -55, chr(87)=> -55, chr(89)=> -74, chr(146)=> -74, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -18, chr(87)=> -18, chr(89)=> -18, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -74, chr(65)=> -74, chr(79)=> -18, chr(97)=> -37, chr(99)=> -37, chr(101)=> -37, chr(105)=> -18, chr(111)=> -37, chr(114)=> -18, chr(115)=> -37, chr(117)=> -18, chr(119)=> -37, chr(121)=> -37, ), chr(86)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -74, chr(97)=> -37, chr(101)=> -37, chr(105)=> -37, chr(111)=> -37, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(87)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -37, chr(65)=> -55, chr(97)=> -18, chr(101)=> -18, chr(105)=> -8, chr(111)=> -18, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -55, chr(65)=> -74, chr(97)=> -37, chr(101)=> -37, chr(105)=> -37, chr(111)=> -37, chr(112)=> -37, chr(113)=> -37, chr(117)=> -37, chr(118)=> -37, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 18, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(119)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(121)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(145)=> array ( chr(145)=> -37, ), chr(146)=> array ( chr(115)=> -18, chr(116)=> 18, chr(146)=> -37, ), ); 
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/chelveticai.php b/inc/3rdparty/libraries/mpdf/font/chelveticai.php
new file mode 100644 (file)
index 0000000..4f10f4e
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278,
+       chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584,
+       ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667,
+       'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944,
+       'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833,
+       'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556,
+       chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+       chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333,
+       chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
+       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556,
+       chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
+
+$desc=array('Ascent'=>718,'Descent'=>-207,'CapHeight'=>718,'FontBBox'=>'[-170 -225 1116 931]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -55, chr(87)=> -18, chr(89)=> -74, chr(118)=> -18, chr(119)=> -18, chr(121)=> -8, chr(146)=> -37, ), chr(70)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(76)=> array ( chr(84)=> -74, chr(86)=> -55, chr(87)=> -37, chr(89)=> -91, chr(121)=> -18, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -18, chr(86)=> -18, chr(87)=> -18, chr(89)=> -37, ), chr(84)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -74, chr(65)=> -74, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -8, chr(111)=> -91, chr(114)=> -74, chr(115)=> -91, chr(117)=> -74, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -18, chr(65)=> -55, chr(97)=> -37, chr(101)=> -37, chr(105)=> -18, chr(111)=> -37, chr(114)=> -18, chr(117)=> -18, chr(121)=> -18, ), chr(87)=> array ( chr(44)=> -37, chr(46)=> -37, chr(65)=> -18, chr(97)=> -18, chr(101)=> -18, chr(105)=> -8, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -55, chr(97)=> -74, chr(101)=> -55, chr(105)=> -18, chr(111)=> -55, chr(112)=> -55, chr(113)=> -55, chr(117)=> -37, chr(118)=> -37, ), chr(102)=> array ( chr(146)=> 37, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -37, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(121)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(145)=> array ( chr(145)=> -37, ), chr(146)=> array ( chr(115)=> -18, chr(146)=> -37, ), ); 
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/csymbol.php b/inc/3rdparty/libraries/mpdf/font/csymbol.php
new file mode 100644 (file)
index 0000000..a7b1ddf
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549,
+       ','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722,
+       'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768,
+       'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576,
+       'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0,
+       chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
+       chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603,
+       chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768,
+       chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042,
+       chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329,
+       chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0);
+
+$desc=array('FontBBox'=>'[-180 -293 1090 1010]');
+$up=-100;
+$ut=50;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimes.php b/inc/3rdparty/libraries/mpdf/font/ctimes.php
new file mode 100644 (file)
index 0000000..c0a2486
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564,
+       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722,
+       'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944,
+       'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
+       'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+       chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980,
+       chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333,
+       chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+       chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
+       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500);
+
+$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>662,'FontBBox'=>'[-168 -218 1000 898]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -37, ), chr(65)=> array ( chr(84)=> -110, chr(86)=> -128, chr(87)=> -80, chr(89)=> -91, chr(118)=> -74, chr(119)=> -91, chr(121)=> -91, chr(146)=> -110, ), chr(70)=> array ( chr(44)=> -80, chr(46)=> -80, chr(65)=> -74, ), chr(76)=> array ( chr(84)=> -91, chr(86)=> -91, chr(87)=> -74, chr(89)=> -100, chr(121)=> -55, chr(146)=> -91, ), chr(80)=> array ( chr(44)=> -110, chr(46)=> -110, chr(65)=> -91, ), chr(82)=> array ( chr(84)=> -60, chr(86)=> -80, chr(87)=> -55, chr(89)=> -55, chr(121)=> -40, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -49, chr(65)=> -80, chr(79)=> -18, chr(97)=> -69, chr(99)=> -69, chr(101)=> -69, chr(105)=> -35, chr(111)=> -69, chr(114)=> -35, chr(115)=> -69, chr(117)=> -35, chr(119)=> -69, chr(121)=> -69, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -74, chr(65)=> -128, chr(97)=> -110, chr(101)=> -110, chr(105)=> -60, chr(111)=> -128, chr(114)=> -60, chr(117)=> -60, chr(121)=> -110, ), chr(87)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -37, chr(65)=> -110, chr(97)=> -80, chr(101)=> -80, chr(105)=> -40, chr(111)=> -80, chr(114)=> -40, chr(117)=> -40, chr(121)=> -60, ), chr(89)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -91, chr(65)=> -110, chr(97)=> -100, chr(101)=> -100, chr(105)=> -55, chr(111)=> -100, chr(112)=> -91, chr(113)=> -110, chr(117)=> -110, chr(118)=> -100, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 55, ), chr(114)=> array ( chr(44)=> -40, chr(46)=> -55, chr(103)=> -18, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -64, chr(46)=> -64, ), chr(119)=> array ( chr(44)=> -64, chr(46)=> -64, ), chr(121)=> array ( chr(44)=> -64, chr(46)=> -64, ), chr(145)=> array ( chr(145)=> -74, ), chr(146)=> array ( chr(115)=> -55, chr(116)=> -18, chr(146)=> -74, ), ); 
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimesb.php b/inc/3rdparty/libraries/mpdf/font/ctimesb.php
new file mode 100644 (file)
index 0000000..bd93d22
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
+       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722,
+       'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000,
+       'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833,
+       'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+       chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+       chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333,
+       chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722,
+       chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
+       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500);
+
+$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>676,'FontBBox'=>'[-168 -218 1000 935]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -55, ), chr(65)=> array ( chr(84)=> -74, chr(86)=> -128, chr(87)=> -110, chr(89)=> -91, chr(118)=> -74, chr(119)=> -74, chr(121)=> -74, chr(146)=> -74, ), chr(70)=> array ( chr(44)=> -91, chr(46)=> -91, chr(65)=> -74, ), chr(76)=> array ( chr(84)=> -91, chr(86)=> -91, chr(87)=> -91, chr(89)=> -91, chr(121)=> -55, chr(146)=> -91, ), chr(80)=> array ( chr(44)=> -91, chr(46)=> -91, chr(65)=> -74, ), chr(82)=> array ( chr(84)=> -35, chr(86)=> -35, chr(87)=> -35, chr(89)=> -35, chr(121)=> -35, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -74, chr(65)=> -74, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -18, chr(111)=> -91, chr(114)=> -74, chr(115)=> -91, chr(117)=> -91, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -91, chr(65)=> -128, chr(79)=> -20, chr(97)=> -91, chr(101)=> -91, chr(105)=> -37, chr(111)=> -91, chr(114)=> -74, chr(117)=> -91, chr(121)=> -91, ), chr(87)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -55, chr(65)=> -110, chr(97)=> -55, chr(101)=> -55, chr(105)=> -18, chr(111)=> -55, chr(114)=> -18, chr(117)=> -18, chr(121)=> -37, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -91, chr(65)=> -91, chr(97)=> -110, chr(101)=> -110, chr(105)=> -37, chr(111)=> -110, chr(112)=> -91, chr(113)=> -110, chr(117)=> -91, chr(118)=> -110, ), chr(102)=> array ( chr(102)=> 0, chr(146)=> 55, ), chr(114)=> array ( chr(44)=> -91, chr(46)=> -91, chr(99)=> -18, chr(101)=> -18, chr(104)=> 0, chr(111)=> -18, chr(113)=> -18, chr(116)=> 0, chr(119)=> 0, chr(120)=> 0, chr(121)=> 0, chr(122)=> 0, chr(146)=> 18, ), chr(118)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(119)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(121)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(145)=> array ( chr(145)=> -74, ), chr(146)=> array ( chr(115)=> -37, chr(146)=> -74, ), ); 
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimesbi.php b/inc/3rdparty/libraries/mpdf/font/ctimesbi.php
new file mode 100644 (file)
index 0000000..b7da5f1
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570,
+       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667,
+       'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889,
+       'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778,
+       'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+       chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000,
+       chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333,
+       chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667,
+       chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556,
+       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444);
+
+$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>669,'FontBBox'=>'[-200 -218 996 921]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -55, ), chr(65)=> array ( chr(84)=> -55, chr(86)=> -74, chr(87)=> -91, chr(89)=> -55, chr(118)=> -74, chr(119)=> -74, chr(121)=> -74, chr(146)=> -74, ), chr(70)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -91, ), chr(76)=> array ( chr(84)=> -18, chr(86)=> -37, chr(87)=> -37, chr(89)=> -37, chr(121)=> -37, chr(146)=> -55, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -74, ), chr(82)=> array ( chr(86)=> -18, chr(87)=> -18, chr(89)=> -18, chr(121)=> -18, ), chr(84)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -74, chr(65)=> -55, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -37, chr(111)=> -91, chr(114)=> -37, chr(115)=> -91, chr(117)=> -37, chr(119)=> -37, chr(121)=> -37, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -74, chr(65)=> -74, chr(97)=> -110, chr(101)=> -110, chr(105)=> -55, chr(111)=> -110, chr(114)=> -55, chr(117)=> -55, chr(121)=> -74, ), chr(87)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -55, chr(65)=> -74, chr(97)=> -74, chr(101)=> -74, chr(105)=> -37, chr(111)=> -74, chr(114)=> -74, chr(117)=> -55, chr(121)=> -55, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -74, chr(58)=> -91, chr(65)=> -74, chr(97)=> -91, chr(101)=> -110, chr(105)=> -55, chr(111)=> -110, chr(112)=> -74, chr(113)=> -110, chr(117)=> -91, chr(118)=> -91, ), chr(102)=> array ( chr(102)=> -18, chr(146)=> 55, ), chr(114)=> array ( chr(44)=> -55, chr(46)=> -55, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(119)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(121)=> array ( chr(44)=> -37, chr(46)=> -37, ), chr(145)=> array ( chr(145)=> -74, ), chr(146)=> array ( chr(115)=> -74, chr(116)=> -37, chr(146)=> -74, ), );
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/ctimesi.php b/inc/3rdparty/libraries/mpdf/font/ctimesi.php
new file mode 100644 (file)
index 0000000..0f64098
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250,
+       chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675,
+       ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611,
+       'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833,
+       'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722,
+       'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500,
+       chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980,
+       chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333,
+       chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611,
+       chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722,
+       chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500,
+       chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444);
+
+$desc=array('Ascent'=>683,'Descent'=>-217,'CapHeight'=>653,'FontBBox'=>'[-169 -217 1010 883]');
+$up=-100;
+$ut=50;
+$kerninfo=array ( chr(49)=> array ( chr(49)=> -74, ), chr(65)=> array ( chr(84)=> -37, chr(86)=> -49, chr(87)=> -37, chr(89)=> -55, chr(118)=> -55, chr(119)=> -55, chr(121)=> -55, chr(146)=> -37, ), chr(70)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -128, ), chr(76)=> array ( chr(84)=> -20, chr(86)=> -37, chr(87)=> -37, chr(89)=> -20, chr(121)=> -29, chr(146)=> -37, ), chr(80)=> array ( chr(44)=> -128, chr(46)=> -128, chr(65)=> -128, ), chr(82)=> array ( chr(84)=> 0, chr(86)=> -18, chr(87)=> -18, chr(89)=> -18, chr(121)=> -18, ), chr(84)=> array ( chr(44)=> -74, chr(46)=> -74, chr(58)=> -55, chr(65)=> -74, chr(79)=> -18, chr(97)=> -91, chr(99)=> -91, chr(101)=> -91, chr(105)=> -55, chr(111)=> -91, chr(114)=> -55, chr(115)=> -91, chr(117)=> -55, chr(119)=> -74, chr(121)=> -74, ), chr(86)=> array ( chr(44)=> -128, chr(46)=> -128, chr(58)=> -64, chr(65)=> -74, chr(79)=> -29, chr(97)=> -110, chr(101)=> -110, chr(105)=> -74, chr(111)=> -110, chr(114)=> -74, chr(117)=> -74, chr(121)=> -91, ), chr(87)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -64, chr(65)=> -69, chr(97)=> -91, chr(101)=> -91, chr(105)=> -55, chr(111)=> -91, chr(114)=> -55, chr(117)=> -55, chr(121)=> -91, ), chr(89)=> array ( chr(44)=> -91, chr(46)=> -91, chr(58)=> -64, chr(65)=> -69, chr(97)=> -91, chr(101)=> -91, chr(105)=> -74, chr(111)=> -91, chr(112)=> -91, chr(113)=> -110, chr(117)=> -91, chr(118)=> -91, ), chr(102)=> array ( chr(146)=> 91, ), chr(114)=> array ( chr(44)=> -110, chr(46)=> -110, chr(99)=> -37, chr(100)=> -37, chr(101)=> -37, chr(103)=> -37, chr(104)=> -18, chr(111)=> -37, chr(113)=> -37, chr(114)=> 0, chr(116)=> 0, chr(117)=> 0, chr(118)=> 0, chr(119)=> 0, chr(120)=> 0, chr(121)=> 0, chr(146)=> 37, ), chr(118)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(119)=> array ( chr(44)=> -74, chr(46)=> -74, ), chr(121)=> array ( chr(44)=> -55, chr(46)=> -55, ), chr(145)=> array ( chr(145)=> -110, ), chr(146)=> array ( chr(115)=> -128, chr(116)=> -110, chr(146)=> -110, ), ); 
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/font/czapfdingbats.php b/inc/3rdparty/libraries/mpdf/font/czapfdingbats.php
new file mode 100644 (file)
index 0000000..6ead8fc
--- /dev/null
@@ -0,0 +1,21 @@
+<?php
+$cw=array(
+       chr(0)=>0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0,
+       chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939,
+       ','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692,
+       'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776,
+       'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873,
+       'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317,
+       chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0,
+       chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788,
+       chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788,
+       chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918,
+       chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874,
+       chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0);
+
+$desc=array('FontBBox'=>'[-1 -143 981 820]');
+$up=-100;
+$ut=50;
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/graph.php b/inc/3rdparty/libraries/mpdf/graph.php
new file mode 100644 (file)
index 0000000..a210ad3
--- /dev/null
@@ -0,0 +1,721 @@
+<?php
+
+
+// mPDF 4.5.009
+define("FF_USERFONT", 15);     // See jpgraph_ttf.inc.php for font IDs
+global $JpgUseSVGFormat;
+$JpgUseSVGFormat = true;
+
+//======================================================================================================
+// DELETE OLD GRAPH FILES FIRST - Housekeeping
+// First clear any files in directory that are >1 hrs old
+       $interval = 3600;
+       if ($handle = opendir(_MPDF_PATH.'graph_cache')) {
+          while (false !== ($file = readdir($handle))) { 
+               if (((filemtime(_MPDF_PATH.'graph_cache/'.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) { 
+                       @unlink(_MPDF_PATH.'graph_cache/'.$file);       // mPDF 4.0
+               }
+          }
+          closedir($handle); 
+       }
+//==============================================================================================================
+// LOAD GRAPHS
+
+       include_once(_JPGRAPH_PATH.'jpgraph.php'); 
+       include_once(_JPGRAPH_PATH.'jpgraph_line.php' ); 
+       include_once(_JPGRAPH_PATH.'jpgraph_log.php' ); 
+       include_once(_JPGRAPH_PATH.'jpgraph_scatter.php' ); 
+       include_once(_JPGRAPH_PATH.'jpgraph_regstat.php' ); 
+       include_once(_JPGRAPH_PATH.'jpgraph_pie.php'); 
+       include_once(_JPGRAPH_PATH.'jpgraph_pie3d.php'); 
+       include_once(_JPGRAPH_PATH.'jpgraph_bar.php'); 
+       include_once(_JPGRAPH_PATH.'jpgraph_radar.php'); 
+
+
+//======================================================================================================
+//*****************************************************************************************************
+//*****************************************************************************************************
+//*****************************************************************************************************
+//*****************************************************************************************************
+//*****************************************************************************************************
+//*****************************************************************************************************
+//======================================================================================================
+//======================================================================================================
+
+//======================================================================================================
+//======================================================================================================
+
+//======================================================================================================
+function print_graph($g,$pgwidth) {
+       $splines = false;
+       $bandw = false;
+       $percent = false;
+       $show_percent = false;
+       $stacked = false;
+       $h = false;
+       $show_values = false;
+       $hide_grid = false;
+       $hide_y_axis = false;
+
+       if (isset($g['attr']['TYPE']) && $g['attr']['TYPE']) { $type = strtolower($g['attr']['TYPE']); }
+       if (!in_array($type,array('bar','horiz_bar','line','radar','pie','pie3d','xy','scatter'))) { $type = 'bar'; } // Default=bar
+
+       if (isset($g['attr']['STACKED']) && $g['attr']['STACKED']) { $stacked = true; } // stacked for bar or horiz_bar
+       if (isset($g['attr']['SPLINES']) && $g['attr']['SPLINES'] && $type=='xy') { $splines = true; }  // splines for XY line graphs
+       if (isset($g['attr']['BANDW']) && $g['attr']['BANDW']) { $bandw = true; }       // black and white
+       if (isset($g['attr']['LEGEND-OVERLAP']) && $g['attr']['LEGEND-OVERLAP']) { $overlap = true; } // avoid overlap of Legends over graph (line, bar, horiz_bar only)
+       if (isset($g['attr']['PERCENT']) && $g['attr']['PERCENT'] && $type != 'xy' && $type != 'scatter') { $percent = true; }  // Show data series as percent of total in series
+       if (isset($g['attr']['SHOW-VALUES']) && $g['attr']['SHOW-VALUES']) { $show_values = true; }     // Show the individual data values
+       if (isset($g['attr']['HIDE-GRID']) && $g['attr']['HIDE-GRID']) { $hide_grid = true; }   // Hide the y-axis gridlines
+       if (isset($g['attr']['HIDE-Y-AXIS']) && $g['attr']['HIDE-Y-AXIS']) { $hide_y_axis = true; }     // Hide the y-axis
+
+
+       // Antialias: If true - better quality curves, but graph line will only be 1px even in PDF 300dpi 
+       // default=true for most except line and radar
+       if (isset($g['attr']['ANTIALIAS']) && ($g['attr']['ANTIALIAS']=='' || $g['attr']['ANTIALIAS']==0)) { $antialias = false; }
+       else if (isset($g['attr']['ANTIALIAS']) && $g['attr']['ANTIALIAS'] > 0) { $antialias = true; }
+       else if ($type=='line' || $type=='radar') { $antialias = false; }
+       else { $antialias = true; }
+
+       if ($g['attr']['DPI']) { $dpi = intval($g['attr']['DPI']); }
+       if (!$dpi || $dpi < 50 || $dpi > 2400) { $dpi = 150; }  // Default dpi 150
+       $k = (0.2645/25.4 * $dpi); 
+
+       // mPDF 4.5.009
+       global $JpgUseSVGFormat;
+       if (isset($JpgUseSVGFormat) && $JpgUseSVGFormat) {
+               $img_type = 'svg';
+               $k = 1; // Overrides as Vector scale does not need DPI
+       }
+       else {
+               $img_type = 'png';
+       }
+
+       if (isset($g['attr']['TITLE']) && $g['attr']['TITLE']) { $title = $g['attr']['TITLE']; }
+
+       if (isset($g['attr']['LABEL-X']) && $g['attr']['LABEL-X']) { $xlabel = $g['attr']['LABEL-X']; }         // NOT IMPLEMENTED??????
+       if (isset($g['attr']['LABEL-Y']) && $g['attr']['LABEL-Y']) { $ylabel = $g['attr']['LABEL-Y']; }
+
+       if (isset($g['attr']['AXIS-X']) && $g['attr']['AXIS-X']) { $xaxis = strtolower($g['attr']['AXIS-X']); }
+       if (!in_array($xaxis,array('text','lin','linear','log'))) { $xaxis = 'text'; }  // Default=text
+       if ($xaxis == 'linear') { $xaxis = 'lin'; }
+
+       if (isset($g['attr']['AXIS-Y']) && $g['attr']['AXIS-Y']) { $yaxis = strtolower($g['attr']['AXIS-Y']); }
+       if (!in_array($yaxis,array('lin','linear','log','percent'))) { $yaxis = 'lin'; }                        // Default=lin
+       if ($yaxis == 'percent') { $show_percent = true; $yaxis = 'lin'; }      // Show percent sign on scales
+       if ($yaxis == 'linear') { $yaxis = 'lin'; }
+
+       if ($splines) { $xaxis = 'lin'; }
+       $axes = $xaxis.$yaxis;  // e.g.textlin, textlog, loglog, loglin, linlog (XY)
+
+       // mPDF 4.0
+       if (isset($g['attr']['cWIDTH']) && $g['attr']['cWIDTH']) { $w=($g['attr']['cWIDTH'] / 0.2645); }        // pixels
+       if (isset($g['attr']['cHEIGHT']) && $g['attr']['cHEIGHT']) { $h=($g['attr']['cHEIGHT'] / 0.2645); }
+
+
+       if (isset($g['attr']['SERIES']) && strtolower($g['attr']['SERIES']) == 'rows') { $dataseries = 'rows'; }
+       else { $dataseries = 'cols'; }
+
+       // Defaults - define data
+       $rowbegin = 2;
+       $colbegin = 2;
+       if($type=='scatter' || $type=='xy') { 
+               if ($dataseries == 'rows') { $rowbegin = 1; }
+               else { $colbegin = 1; }
+       }
+       $rowend = 0;
+       $colend = 0;
+
+       if (isset($g['attr']['DATA-ROW-BEGIN']) && ($g['attr']['DATA-ROW-BEGIN'] === '0' || $g['attr']['DATA-ROW-BEGIN'] > 0)) { $rowbegin = $g['attr']['DATA-ROW-BEGIN']; }
+
+       if (isset($g['attr']['DATA-COL-BEGIN']) && ($g['attr']['DATA-COL-BEGIN'] === '0' || $g['attr']['DATA-COL-BEGIN'] > 0)) { $colbegin = $g['attr']['DATA-COL-BEGIN']; }
+
+       if (isset($g['attr']['DATA-ROW-END']) && ($g['attr']['DATA-ROW-END'] === '0' || $g['attr']['DATA-ROW-END'] <> 0)) { $rowend = $g['attr']['DATA-ROW-END']; }
+       if (isset($g['attr']['DATA-COL-END']) && ($g['attr']['DATA-COL-END'] === '0' || $g['attr']['DATA-COL-END'] <> 0)) { $colend = $g['attr']['DATA-COL-END']; }
+
+       $nr = count($g['data']);
+       $nc = 0;
+       foreach($g['data'] AS $r) {
+               $cc=0;
+               foreach($r AS $c) { $cc++; }
+               $nc = max($nc,$cc);
+       }
+       if ($colend == 0) { $colend = $nc; }
+       else if ($colend < 0) { $colend = $nc+$colend; }
+
+       if ($rowend == 0) { $rowend = $nr; }
+       else if ($rowend < 0) { $rowend = $nr+$rowend; }
+
+       if ($colend < $colbegin) { $colend = $colbegin; }
+       if ($rowend < $rowbegin) { $rowend = $rowbegin; }
+
+//     if ($type == 'xy' || $type=='scatter') { $colstart=0; }
+
+       // Get Data + Totals
+       $data = array();
+       $totals = array();
+       for ($r=($rowbegin-1);$r<$rowend;$r++) {
+               for ($c=($colbegin-1);$c<$colend;$c++) {
+                   if (isset($g['data'][$r][$c])) { $g['data'][$r][$c] = floatval($g['data'][$r][$c] ); }
+                   else { $g['data'][$r][$c] = 0; }
+                   if ($dataseries=='rows') { 
+                       $data[($r+1-$rowbegin)][($c+1-$colbegin)] = $g['data'][$r][$c] ; 
+                       $totals[($r+1-$rowbegin)] += $g['data'][$r][$c] ; 
+                   }
+                   else { 
+                       $data[($c+1-$colbegin)][($r+1-$rowbegin)] = $g['data'][$r][$c] ; 
+                       if (isset($totals[($c+1-$colbegin)])) { $totals[($c+1-$colbegin)] += $g['data'][$r][$c] ; }
+                       else { $totals[($c+1-$colbegin)] = $g['data'][$r][$c] ; }
+                   }
+               }
+       }
+       // PERCENT
+       if ($percent && $type != 'pie' && $type != 'pie3d') {
+               for ($r=0;$r<count($data);$r++) {
+                       for ($c=0;$c<count($data[$r]);$c++) {
+                               $data[$r][$c] = $data[$r][$c]/$totals[$r]  * 100;
+                       }
+               }
+       }
+       // Get Legends and labels
+       $legends = array();
+       $labels = array();
+       $longestlegend = 0;
+       $longestlabel = 0;
+       if ($dataseries=='cols') { 
+               if ($colbegin>1) {
+                       for ($r=($rowbegin-1);$r<$rowend;$r++) { 
+                               $legends[($r+1-$rowbegin)] = $g['data'][$r][0] ;
+                               $longestlegend = max($longestlegend, strlen( $g['data'][$r][0] ));
+                       }
+               }
+               if ($rowbegin>1) {
+                       for ($c=($colbegin-1);$c<$colend;$c++) { 
+                               $labels[($c+1-$colbegin)] = $g['data'][0][$c] ; 
+                               $longestlabel = max($longestlabel , strlen( $g['data'][0][$c] ));
+                       }
+               }
+       }
+       else if ($dataseries=='rows') { 
+               if ($colbegin>1) {
+                       for ($r=($rowbegin-1);$r<$rowend;$r++) { 
+                               $labels[($r+1-$rowbegin)] = $g['data'][$r][0] ; 
+                               $longestlabel = max($longestlabel , strlen( $g['data'][$r][0] ));
+                       }
+               }
+               if ($rowbegin>1) {
+                       for ($c=($colbegin-1);$c<$colend;$c++) { 
+                               $legends[($c+1-$colbegin)] = $g['data'][0][$c] ; 
+                               $longestlegend = max($longestlegend, strlen( $g['data'][0][$c] ));
+                       }
+               }
+       }
+   // Default sizes
+   $defsize = array();
+   $defsize['pie'] = array('w' => 600, 'h' => 300);
+   $defsize['pie3d'] = array('w' => 600, 'h' => 300);
+   $defsize['radar'] = array('w' => 600, 'h' => 300);
+   $defsize['line'] = array('w' => 600, 'h' => 400);
+   $defsize['xy'] = array('w' => 600, 'h' => 400);
+   $defsize['scatter'] = array('w' => 600, 'h' => 400);
+   $defsize['bar'] = array('w' => 600, 'h' => 400);
+   $defsize['horiz_bar'] = array('w' => 600, 'h' => 500);
+
+
+   // Use default ratios
+   if ($w && !$h) { $h = $w*$defsize[$type]['h']/$defsize[$type]['w']; }
+   if ($h && !$w) { $w = $h*$defsize[$type]['w']/$defsize[$type]['h']; }
+   if (!$h && !$w) { $w = $defsize[$type]['w']; $h = $defsize[$type]['h']; }
+
+
+   if (count($data)>0 && $type) {
+       $figure_file = "graph_cache/".rand(11111,999999999).".".$img_type;
+       if ($bandw) { $colours = array('snow1','black','snow4','snow3','snow2','cadetblue4','cadetblue3','cadetblue1','bisque4','bisque2','beige'); }
+       else { $colours = array('cyan','darkorchid4','cadetblue3','khaki1','darkolivegreen2','cadetblue4','coral','cyan4','rosybrown3','wheat1'); }
+       $fills = array('navy','orange','red','yellow','purple','navy','orange','red','yellow','purple');
+       $patterns = array(PATTERN_DIAG1,PATTERN_CROSS1,PATTERN_STRIPE1,PATTERN_DIAG3,PATTERN_CROSS2,PATTERN_DIAG2,PATTERN_DIAG4,PATTERN_CROSS3, PATTERN_CROSS4,PATTERN_STRIPE1);
+       $markers = array(MARK_DIAMOND, MARK_SQUARE, MARK_CIRCLE, MARK_UTRIANGLE, MARK_DTRIANGLE, MARK_FILLEDCIRCLE, MARK_CROSS, MARK_STAR, MARK_X);
+
+       // LEGENDS
+       if ($type == 'pie' || $type == 'pie3d') { 
+               $graph = new PieGraph (($w*$k),($h*$k));  
+       }
+       else if ($type == 'radar') { 
+               $graph = new RadarGraph(($w*$k),($h*$k));
+       }
+       else {
+               $graph = new Graph(($w*$k),($h*$k));
+       }
+
+// mPDF 4.5.009
+//     $graph->img->SetImgFormat($img_type) ;
+//     if (strtoupper($img_type)=='JPEG') { $graph->img->SetQuality(90); }
+       if ($antialias) { $graph->img->SetAntiAliasing(); }
+       $graph->SetShadow(true, 2*$k); 
+       $graph->SetMarginColor("white");
+       // TITLE
+       $graph->title->Set($title); 
+       $graph->title->SetMargin(10*$k);        
+       $graph->title->SetFont(FF_USERFONT,FS_BOLD,11*$k);
+       $graph->title->SetColor("black");
+       $graph->legend->SetLineSpacing(3*$k); 
+       $graph->legend->SetMarkAbsSize(6*$k); 
+       $graph->legend->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+
+       // Set GRAPH IMAGE MARGINS
+       if ($type == 'pie' || $type == 'pie3d') { 
+               $psize = 0.3;
+               $pposxabs = ($w/2);
+               $pposy = 0.55;
+               if ($longestlegend) {   // if legend showing
+                       $pposxabs -= ((($longestlegend * 5) + 20) / 2);
+               }
+               $pposx = ($pposxabs / $w);
+               $graph->legend->Pos(0.02,0.5,'right','center'); 
+       }
+       else if ($type == 'radar') { 
+               $psize = 0.5;
+               $pposxabs = ($w/2);
+               $pposy = 0.55;
+               if ($longestlabel) {    // if legend showing
+                       $pposxabs -= ((($longestlabel * 5) + 20) / 2);
+               }
+               $pposx = ($pposxabs / $w);
+               $graph->legend->Pos(0.02,0.5,'right','center'); 
+       }
+       else if ($type == 'xy' || $type == 'scatter') {
+               $pml = 50;
+               $pmr = 20;
+               $pmt = 60;
+               $pmb = 50;
+               $xaxislblmargin = $pmb - 30;
+               $yaxislblmargin = $pml - 15;
+               $graph->legend->Pos(0.02,0.1,'right','top'); 
+       }
+       else if ($type == 'line' || $type == 'bar') {
+               $pml = 50;
+               $pmr = 20;
+               $pmt = 60;
+               $pmb = 50;
+               $xlangle = 0;
+               $ll = ($longestlegend * 5);     // 45 degrees 8pt fontsize
+               if ($ll > 5 || ($ll>3 && count($data)>10)) {
+                       $pmb = max($pmb, $ll + 30);
+                       $xlangle = 50;
+               }
+               $xaxislblmargin = $pmb - 30;
+               $yaxislblmargin = $pml - 15;
+               if ($longestlabel && !$overlap) {       // if legend showing
+                       $pmr = ((($longestlabel * 5) + 40));
+               }
+               $graph->legend->Pos(0.02,0.1,'right','top'); 
+       }
+       else if ($type == 'horiz_bar') {
+               $pml = 50;
+               $pmr = 20;
+               $pmt = 50;
+               $pmb = 45;
+               $ll = ($longestlegend * 6.5);   // 8pt fontsize
+               $pml = max($pml, $ll + 20);
+               $xaxislblmargin = $pml - 20;
+               $yaxislblmargin = $pmb - 15;
+               if ($longestlabel && !$overlap) {       // if legend showing
+                       $pmr = ((($longestlabel * 5) + 40));
+               }
+               $graph->legend->Pos(0.02,0.1,'right','top'); 
+       }
+
+
+       // DRAW THE GRAPHS
+       if ($type == 'pie') { 
+                       $p1 = new PiePlot($data[0]); 
+                       $p1->SetSliceColors($colours); 
+
+                       if ($show_values) {
+                               $p1->value->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               if ($percent) { $p1->SetLabelType(PIE_VALUE_PERADJ); }   //PIE_VAL_PER = default
+                               else { $p1->SetLabelType(PIE_VALUE_ABS); }
+                               if ($percent || $show_percent) { $p1->value->SetFormat("%d%%"); }
+                               else { $p1->value->SetFormat("%s"); }
+                               // Enable and set policy for guide-lines. Make labels line up vertically
+                               $p1->SetGuideLines(true);
+                               $p1->SetGuideLinesAdjust(1.5);
+                       }
+                       else { $p1->value->Show(false); }
+                       $p1->SetLegends($legends);
+                       $p1->SetSize($psize);
+                       $p1->SetCenter($pposx, $pposy);
+                       if ($labels[0]) { 
+                               $graph->subtitle->Set($labels[0]); 
+                               $graph->subtitle->SetMargin(10*$k);     
+                               $graph->subtitle->SetFont(FF_USERFONT,FS_BOLD,11*$k);
+                               $graph->subtitle->SetColor("black");
+                       }
+                       $graph->Add($p1);
+       }
+       else if ($type == 'pie3d') { 
+                       $p1 = new PiePlot3d($data[0]); 
+                       $p1->SetSliceColors($colours); 
+                       if ($show_values) {
+                               $p1->value->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               if ($percent) { $p1->SetLabelType(PIE_VALUE_PERADJ); }   //PIE_VAL_PER = default
+                               else { $p1->SetLabelType(PIE_VALUE_ABS); }
+                               if ($percent || $show_percent) { $p1->value->SetFormat("%d%%"); }
+                               else { $p1->value->SetFormat("%s"); }
+                       }
+                       else { $p1->value->Show(false); }
+                       $p1->SetLegends($legends);
+                       $p1->SetEdge();
+                       $p1->SetSize($psize);
+                       $p1->SetCenter($pposx, $pposy);
+
+                       if ($labels[0]) { 
+                               $graph->subtitle->Set($labels[0]); 
+                               $graph->subtitle->SetMargin(10*$k);     
+                               $graph->subtitle->SetFont(FF_USERFONT,FS_BOLD,11*$k);
+                               $graph->subtitle->SetColor("black");
+                       }
+
+                       $graph->Add( $p1); 
+       }
+       // RADAR
+       else if ($type == 'radar') { 
+                       $graph->SetSize($psize);
+                       $graph->SetPos($pposx, $pposy);
+
+                       $graph->SetTitles( $legends);   // labels each axis
+
+                       $graph->axis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                       $graph->axis->title->SetMargin(5*$k);
+                       $graph->axis->SetWeight(1*$k);
+                       $graph->axis->HideLabels();
+                       $graph->axis->SetFont(FF_USERFONT,FS_NORMAL,6*$k);
+                       $graph->HideTickMarks(); 
+
+                       $group = array();
+                       foreach($data AS $series => $dat) { 
+                               $rdata = array();
+                               foreach($data[$series] AS $row) { $rdata[] = $row;  }
+                               if (count($rdata)<3) { die("ERROR::Graph::Cannot create a Radar Plot with less than 3 data points."); }
+                               // Create the radar plot
+                               $bplot = new RadarPlot($rdata);
+                               $bplot->mark->SetType($markers[$series]);
+                               $bplot->mark->SetFillColor($colours[$series]);
+                               $bplot->mark->SetWidth(3*$k);
+                               $bplot->SetColor($colours[$series]);
+                               if ($series == 0) { $bplot->SetFillColor('lightred'); }
+                               else { $bplot->SetFill(false); }
+                               $bplot->SetLineWeight(1*$k);
+                               $bplot->SetLegend($labels[$series]);
+                               if ($bandw) { $bplot->SetShadow("gray5"); }
+                               $graph->Add($bplot);
+                       }
+       }
+       // LINE
+       else if ($type == 'line') {
+                       // Setup the graph. 
+                       $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
+                       $graph->SetScale($axes);
+                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+
+                       if ($ylabel) {
+                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->yaxis->SetTitle($ylabel,'middle');
+                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
+                       }
+
+                       $graph->yaxis->SetLabelMargin(4*$k); 
+                       if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); }       // Percent
+
+                       // Show 0 label on Y-axis (default is not to show)
+                       $graph->yscale->ticks->SupressZeroLabel(true);
+                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
+                       if ($hide_grid) { $graph->ygrid->Show(false); }
+
+                       // Setup X-axis labels
+                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                       $graph->xaxis->SetTickLabels($legends);
+                       $graph->xaxis->SetLabelAngle($xlangle);
+                       $graph->xaxis->SetLabelMargin(4*$k); 
+                       // X-axis title
+                       if ($xlabel) {
+                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->xaxis->SetTitle($xlabel,'middle');
+                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
+                       }
+                       foreach($data AS $series => $rdata) { 
+                               $bplot = new LinePlot($rdata);
+                               $bplot->mark->SetType($markers[$series]);
+                               $bplot->mark->SetFillColor($colours[$series]);
+                               $bplot->mark->SetWidth(4*$k);
+                               if ($show_values) {
+                                       $bplot->value-> Show(); // Not if scatter
+                                       $bplot->value->SetMargin(6*$k); 
+                                       $bplot->value->SetColor("darkred");
+                                       $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
+                                       if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
+                                       else { $bplot->value->SetFormat("%s"); }
+                               }
+                               // Set color for each line
+                               $bplot->SetColor($colours[$series]);
+                               $bplot->SetWeight(2*$k);
+                               $bplot->SetLegend($labels[$series]);
+                               if ($bandw) { $bplot->SetShadow("gray5"); }
+                               // Indent the X-scale so the first and last point doesn't fall on the edges
+                               $bplot->SetCenter();
+                               $graph->Add($bplot);
+                       }
+
+       }
+       // XY or SCATTER
+       else if ($type == 'xy' || $type == 'scatter') {
+                       // Setup the graph. 
+                       $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
+                       $graph->SetScale($axes);
+                       // Setup font for axis
+                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                       // Y-axis title
+                       if ($labels[1]) {
+                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
+                               $graph->yaxis->SetTitle($labels[1],'middle');
+                       }
+
+
+                       $graph->yaxis->SetLabelMargin(4*$k); 
+                       if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); }       // Percent
+
+                       // Show 0 label on Y-axis (default is not to show)
+                       $graph->yscale->ticks->SupressZeroLabel(true);
+                       // Just let the maximum be autoscaled
+                       $graph->yaxis->scale->SetAutoMin(0); 
+                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
+                       if ($hide_grid) { $graph->ygrid->Show(false); }
+
+                       // Setup X-axis labels
+                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+// mPDF 2.5 Corrects labelling of x-axis
+//                     $graph->xaxis->SetTickLabels($legends);
+                       $graph->xaxis->SetLabelAngle(50);
+                       $graph->xaxis->SetLabelMargin(4*$k); 
+                       // X-axis title
+                       if ($labels[0]) {
+                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
+                               $graph->xaxis->SetTitle($labels[0],'middle');
+                       }
+
+                       // Create the bar plot
+                       // SPLINES
+                       if ($splines && $type=='xy') {
+                               $spline = new Spline($data[0],$data[1]);
+                               list($newx,$newy) = $spline->Get(100);
+                       }
+                       else {
+                               $newx = $data[0];
+                               $newy = $data[1];
+                       }
+
+                       if ($type=='xy') {
+                               // LINE PLOT
+                               $bplot = new LinePlot($newy, $newx);
+                               // Set color for each line
+                               $bplot->SetColor($fills[0]);
+                               $bplot->SetWeight(4*$k);
+                               if ($bandw) { $bplot->SetShadow("gray5"); }
+                               $graph->Add($bplot);
+                       }
+
+                       // SCATTER PLOT
+                       $cplot = new ScatterPlot($data[1], $data[0]);
+
+                       $cplot->mark->SetType($markers[0]);
+                       $cplot->mark->SetFillColor($fills[0]);
+                       $cplot->mark->SetWidth(8*$k);
+                       if ($show_values) {
+// mPDF 2.5 
+                               if ($type=='xy') { $cplot->value->Show(); }     // Not if scatter
+                               $cplot->value->SetMargin(8*$k); 
+                               $cplot->value->SetColor("darkred");
+                               $cplot->value->SetFont( FF_USERFONT, FS_NORMAL, 6*$k);
+
+                               if ($percent || $show_percent) { $cplot->value->SetFormat( '%d%%'); }
+                               else { $cplot->value->SetFormat("%s"); }
+                       }
+
+                       // Set color for each line
+                       $cplot->SetColor($fills[0]);
+                       $cplot->SetWeight(4*$k);
+                       if ($bandw) { $cplot->SetShadow("gray5"); }
+                       $graph->Add($cplot);
+
+       }
+       // BAR
+       else if ($type == 'bar') {
+                       // Setup the graph. 
+                       $graph->img->SetMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
+                       $graph->SetScale($axes);
+                       // Setup y-axis
+                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
+                       if ($hide_grid) { $graph->ygrid->Show(false); }
+                       $graph->yaxis->SetLabelMargin(4*$k); 
+                       if ($ylabel) {
+                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->yaxis->SetTitle($ylabel,'middle');
+                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
+                       }
+                       // Show 0 label on Y-axis (default is not to show)
+                       $graph->yscale->ticks->SupressZeroLabel(false);
+                       // Setup X-axis labels
+                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                       $graph->xaxis->SetTickLabels($legends);
+                       $graph->xaxis->SetLabelAngle($xlangle);
+                       $graph->xaxis->SetLabelMargin(4*$k); 
+                       // X-axis title
+                       if ($xlabel) {
+                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->xaxis->SetTitle($xlabel,'middle');
+                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
+                       }
+
+                       $group = array();
+                       foreach($data AS $series => $dat) { 
+                               $rdata = array();
+                               foreach($data[$series] AS $row) { $rdata[] = $row;  }
+
+                               // Create the bar plot
+                               $bplot = new BarPlot($rdata);
+                               $bplot->SetWidth(0.6);  // for SINGLE??
+                               // Setup color for gradient fill style 
+                               if ($bandw) { $bplot->SetPattern( $patterns[$series]); }
+                               else { $bplot->SetFillGradient($fills[$series],"#EEEEEE",GRAD_LEFT_REFLECTION); }
+
+                               // Set color for the frame of each bar
+                               $bplot->SetColor("darkgray");
+                               $bplot->SetLegend($labels[$series]);
+                               if ($bandw) { $bplot->SetShadow("gray5"); }
+                               if ($show_values) {
+                                       $bplot->value->Show();
+                                       $bplot->value->SetMargin(6*$k); 
+                                       $bplot->value->SetColor("darkred");
+                                       $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
+                                       if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
+                                       else { $bplot->value->SetFormat("%s"); }
+                               }
+
+                               $group[] = $bplot;
+                       }
+                       if (count($data)==1) {
+                               $graph->Add($group[0]);
+                       }
+                       else {
+                               // Create the grouped bar plot 
+                               if ($stacked) {
+                                       $gbplot = new AccBarPlot ($group); 
+                               }
+                               else {
+                                       $gbplot = new GroupBarPlot ($group); 
+                               }
+                               $graph->Add($gbplot);
+                       }
+       }
+       else if ($type == 'horiz_bar') {
+                       $graph->SetScale($axes);
+                       $graph->Set90AndMargin($pml*$k,$pmr*$k,$pmt*$k,$pmb*$k);        // LRTB
+
+                       // Setup y-axis
+                       $graph->yaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                       $graph->yaxis->SetLabelMargin(4*$k); 
+
+                       $graph->yaxis->SetPos('max');   // Intersect at top of x-axis i.e. y axis is at bottom
+                       // First make the labels look right
+                       $graph->yaxis->SetLabelAlign('center','top');
+                       if ($percent || $show_percent) { $graph->yaxis->SetLabelFormat('%d%%'); }
+                       $graph->yaxis->SetLabelSide(SIDE_RIGHT);
+                       $graph->yaxis->scale->SetGrace(10);     // sets 10% headroom
+                       if ($hide_y_axis) { $graph->yaxis->Hide(); }
+                       if ($hide_grid) { $graph->ygrid->Show(false); }
+
+                       // The fix the tick marks
+                       $graph->yaxis->SetTickSide(SIDE_LEFT);
+                       if ($ylabel) {
+                               $graph->yaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->yaxis->SetTitle($ylabel,'middle');
+                               $graph->yaxis->SetTitleMargin($yaxislblmargin*$k); 
+                               // Finally setup the title
+                               $graph->yaxis->SetTitleSide(SIDE_RIGHT);
+                               // To align the title to the right use :
+                               $graph->yaxis->title->Align('right');
+                               $graph->yaxis->title->SetAngle(0);
+
+                       }
+
+                       // Show 0 label on Y-axis (default is not to show)
+                       $graph->yscale->ticks->SupressZeroLabel(false);
+                       // Setup X-axis labels
+                       $graph->xaxis->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                       $graph->xaxis->title->SetAngle(90);
+                       $graph->xaxis->SetTickLabels($legends);
+                       $graph->xaxis->SetLabelMargin(4*$k); 
+                       // X-axis title
+                       if ($xlabel) {
+                               $graph->xaxis->title->SetFont(FF_USERFONT,FS_NORMAL,8*$k);
+                               $graph->xaxis->SetTitleMargin($xaxislblmargin*$k); 
+                               $graph->xaxis->SetTitle($xlabel,'middle');
+                       }
+                       $group = array();
+                       foreach($data AS $series => $dat) { 
+                               $rdata = array();
+                               foreach($data[$series] AS $row) { $rdata[] = $row;  }
+                               // Create the bar pot
+                               $bplot = new BarPlot($rdata);
+                               $bplot->SetWidth(0.6);  // for SINGLE??
+                               // Setup color for gradient fill style 
+                               if ($bandw) { $bplot->SetPattern( $patterns[$series]); }
+                               else { $bplot->SetFillGradient($fills[$series],"#EEEEEE",GRAD_LEFT_REFLECTION); }
+
+                               // Set color for the frame of each bar
+                               $bplot->SetColor("darkgray");
+                               $bplot->SetLegend($labels[$series]);
+                               if ($bandw) { $bplot->SetShadow("gray5"); }
+                               if ($show_values) {
+                                       $bplot->value-> Show();
+                                       $bplot->value->SetMargin(6*$k); 
+                                       $bplot->value->SetColor("darkred");
+                                       $bplot->value->SetFont( FF_USERFONT, FS_NORMAL, 8*$k);
+                                       if ($percent || $show_percent) { $bplot->value->SetFormat( '%d%%'); }
+                                       else { $bplot->value->SetFormat("%s"); }
+                               }
+
+                               $group[] = $bplot;
+                       }
+                       if (count($data)==1) {
+                               $graph->Add($group[0]);
+                       }
+                       else {
+                               // Create the grouped bar plot 
+                               if ($stacked) {
+                                       $gbplot = new AccBarPlot ($group); 
+                               }
+                               else {
+                                       $gbplot = new GroupBarPlot ($group); 
+                               }
+                               $graph->Add($gbplot);
+                       }
+       }
+       if ($graph) {
+               $graph->Stroke( _MPDF_PATH.$figure_file);
+               $srcpath = str_replace("\\","/",dirname(__FILE__)) . "/";
+               $srcpath .= $figure_file;
+               return array('file'=>$srcpath, 'w'=>$w, 'h'=>$h);
+       }
+   }
+   return false;
+}
+//======================================================================================================
+//======================================================================================================
+//======================================================================================================
+//======================================================================================================
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt b/inc/3rdparty/libraries/mpdf/graph_cache/dummy.txt
new file mode 100644 (file)
index 0000000..4123496
--- /dev/null
@@ -0,0 +1,2 @@
+This is just a placeholder file so that the folder is created on install.
+It can be deleted once installed.
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc b/inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc
new file mode 100644 (file)
index 0000000..0d06cd5
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/iccprofiles/SWOP2006_Coated5v2.icc differ
diff --git a/inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc b/inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc
new file mode 100644 (file)
index 0000000..d0ef573
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/iccprofiles/sRGB_IEC61966-2-1.icc differ
diff --git a/inc/3rdparty/libraries/mpdf/includes/CJKdata.php b/inc/3rdparty/libraries/mpdf/includes/CJKdata.php
new file mode 100644 (file)
index 0000000..8423052
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+// mPDF 2.5
+
+// BIG 5
+$cw = array(
+       32 => 250, 33 => 250, 34 => 408, 35 => 668, 36 => 490, 37 => 875, 38 => 698, 39 => 250, 40 => 240, 41 => 240,
+       42 => 417, 43 => 667, 44 => 250, 45 => 313, 46 => 250, 47 => 520, 48 => 500, 49 => 500, 50 => 500, 51 => 500,
+       52 => 500, 53 => 500, 54 => 500, 55 => 500, 56 => 500, 57 => 500, 58 => 250, 59 => 250, 60 => 667, 61 => 667,
+       62 => 667, 63 => 396, 64 => 921, 65 => 677, 66 => 615, 67 => 719, 68 => 760, 69 => 625, 70 => 552, 71 => 771,
+       72 => 802, 73 => 354, 74 => 354, 75 => 781, 76 => 604, 77 => 927, 78 => 750, 79 => 823, 80 => 563, 81 => 823,
+       82 => 729, 83 => 542, 84 => 698, 85 => 771, 86 => 729, 87 => 948, 88 => 771, 89 => 677, 90 => 635, 91 => 344,
+       92 => 520, 93 => 344, 94 => 469, 95 => 500, 96 => 250, 97 => 469, 98 => 521, 99 => 427, 100 => 521, 101 => 438,
+       102 => 271, 103 => 469, 104 => 531, 105 => 250, 106 => 250, 107 => 458, 108 => 240, 109 => 802, 110 => 531, 111 => 500,
+       112 => 521, 113 => 521, 114 => 365, 115 => 333, 116 => 292, 117 => 521, 118 => 458, 119 => 677, 120 => 479, 121 => 458,
+       122 => 427, 123 => 480, 124 => 496, 125 => 480, 126 => 667,
+       17601 => 500,
+);
+$this->Big5_widths=$cw;
+
+
+// GB
+$cw = array(
+       32 => 207, 33 => 270, 34 => 342, 35 => 467, 36 => 462, 37 => 797, 38 => 710, 39 => 239, 40 => 374, 41 => 374,
+       42 => 423, 43 => 605, 44 => 238, 45 => 375, 46 => 238, 47 => 334, 48 => 462, 49 => 462, 50 => 462, 51 => 462,
+       52 => 462, 53 => 462, 54 => 462, 55 => 462, 56 => 462, 57 => 462, 58 => 238, 59 => 238, 60 => 605, 61 => 605,
+       62 => 605, 63 => 344, 64 => 748, 65 => 684, 66 => 560, 67 => 695, 68 => 739, 69 => 563, 70 => 511, 71 => 729,
+       72 => 793, 73 => 318, 74 => 312, 75 => 666, 76 => 526, 77 => 896, 78 => 758, 79 => 772, 80 => 544, 81 => 772,
+       82 => 628, 83 => 465, 84 => 607, 85 => 753, 86 => 711, 87 => 972, 88 => 647, 89 => 620, 90 => 607, 91 => 374,
+       92 => 333, 93 => 374, 94 => 606, 95 => 500, 96 => 239, 97 => 417, 98 => 503, 99 => 427, 100 => 529, 101 => 415,
+       102 => 264, 103 => 444, 104 => 518, 105 => 241, 106 => 230, 107 => 495, 108 => 228, 109 => 793, 110 => 527, 111 => 524,
+       112 => 524, 113 => 504, 114 => 338, 115 => 336, 116 => 277, 117 => 517, 118 => 450, 119 => 652, 120 => 466, 121 => 452,
+       122 => 407, 123 => 370, 124 => 258, 125 => 370, 126 => 605,
+);
+$this->GB_widths=$cw;
+
+// Japanese
+$cw = array(
+       32 => 278, 33 => 299, 34 => 353, 35 => 614, 36 => 614, 37 => 721, 38 => 735, 39 => 216, 40 => 323, 41 => 323,
+       42 => 449, 43 => 529, 44 => 219, 45 => 306, 46 => 219, 47 => 453, 48 => 614, 49 => 614, 50 => 614, 51 => 614,
+       52 => 614, 53 => 614, 54 => 614, 55 => 614, 56 => 614, 57 => 614, 58 => 219, 59 => 219, 60 => 529, 61 => 529,
+       62 => 529, 63 => 486, 64 => 744, 65 => 646, 66 => 604, 67 => 617, 68 => 681, 69 => 567, 70 => 537, 71 => 647,
+       72 => 738, 73 => 320, 74 => 433, 75 => 637, 76 => 566, 77 => 904, 78 => 710, 79 => 716, 80 => 605, 81 => 716,
+       82 => 623, 83 => 517, 84 => 601, 85 => 690, 86 => 668, 87 => 990, 88 => 681, 89 => 634, 90 => 578, 91 => 316,
+       92 => 614, 93 => 316, 94 => 529, 95 => 500, 96 => 387, 97 => 509, 98 => 566, 99 => 478, 100 => 565, 101 => 503,
+       102 => 337, 103 => 549, 104 => 580, 105 => 275, 106 => 266, 107 => 544, 108 => 276, 109 => 854, 110 => 579, 111 => 550,
+       112 => 578, 113 => 566, 114 => 410, 115 => 444, 116 => 340, 117 => 575, 118 => 512, 119 => 760, 120 => 503, 121 => 529,
+       122 => 453, 123 => 326, 124 => 380, 125 => 326, 126 => 387, 127 => 216, 128 => 453, 129 => 216, 130 => 380, 131 => 529,
+       132 => 299, 133 => 614, 134 => 614, 135 => 265, 136 => 614, 137 => 475, 138 => 614, 139 => 353, 140 => 451, 141 => 291,
+       142 => 291, 143 => 588, 144 => 589, 145 => 500, 146 => 476, 147 => 476, 148 => 219, 149 => 494, 150 => 452, 151 => 216,
+       152 => 353, 153 => 353, 154 => 451, 156 => 1075, 157 => 486, 158 => 387, 159 => 387, 160 => 387, 161 => 387,
+       162 => 387,     163 => 387, 164 => 387, 165 => 387, 166 => 387, 167 => 387, 168 => 387, 170 => 880, 171 => 448,
+       172 => 566, 173 => 716, 174 => 903, 175 => 460, 176 => 805, 177 => 275, 178 => 276, 179 => 550, 180 => 886, 181 => 582,
+       182 => 529, 183 => 738, 184 => 529, 185 => 738, 186 => 357, 187 => 529, 188 => 406, 189 => 406, 190 => 575, 191 => 406,
+       192 => 934, 193 => 934, 194 => 934, 195 => 646, 196 => 646, 197 => 646, 198 => 646, 199 => 646, 200 => 646, 201 => 617,
+       202 => 567, 203 => 567, 204 => 567, 205 => 567, 206 => 320, 207 => 320, 208 => 320, 209 => 320, 210 => 681, 211 => 710,
+       212 => 716, 213 => 716, 214 => 716, 215 => 716, 216 => 716, 217 => 529, 218 => 690, 219 => 690, 220 => 690, 221 => 690,
+       222 => 634, 223 => 605, 224 => 509, 225 => 509, 226 => 509, 227 => 509, 228 => 509, 229 => 509, 230 => 478, 231 => 503,
+       232 => 503, 233 => 503, 234 => 503, 235 => 275, 236 => 275, 237 => 275, 238 => 275, 239 => 550, 240 => 579, 241 => 550,
+       242 => 550, 243 => 550, 244 => 550, 245 => 550, 246 => 529, 247 => 575, 248 => 575, 249 => 575, 250 => 575, 251 => 529,
+       252 => 578, 253 => 529, 254 => 517, 255 => 634, 256 => 578, 257 => 445, 258 => 444, 259 => 842, 260 => 453, 261 => 614,
+);
+
+
+$_cr = array(
+       array(231, 632, 500), // half-width
+       array(8718, 8718, 500),
+       array(9738, 9757, 250), // quarter-width
+       array(9758, 9778, 333), // third-width
+       array(12063, 12087, 500),
+);
+foreach($_cr as $_r) {
+       for($i = $_r[0]; $i <= $_r[1]; $i++) {
+               $cw[$i+31] = $_r[2];
+       }
+}
+$this->SJIS_widths=$cw;
+
+// Korean
+$cw = array(
+       32 => 333, 33 => 416, 34 => 416, 35 => 833, 36 => 625, 37 => 916, 38 => 833, 39 => 250, 40 => 500, 41 => 500,
+       42 => 500, 43 => 833, 44 => 291, 45 => 450, 46 => 291, 47 => 375, 48 => 625, 49 => 625, 50 => 625, 51 => 625,
+       52 => 625, 53 => 625, 54 => 625, 55 => 625, 56 => 625, 57 => 625, 58 => 333, 59 => 333, 60 => 833, 61 => 833,
+       62 => 916, 63 => 500, 64 => 1000, 65 => 791, 66 => 708, 67 => 708, 68 => 750, 69 => 708, 70 => 666, 71 => 750,
+       72 => 791, 73 => 375, 74 => 500, 75 => 791, 76 => 666, 77 => 916, 78 => 791, 79 => 750, 80 => 666, 81 => 750,
+       82 => 708, 83 => 666, 84 => 791, 85 => 791, 86 => 750, 87 => 1000, 88 => 708, 89 => 708, 90 => 666, 91 => 500,
+       92 => 375, 93 => 500, 94 => 500, 95 => 500, 96 => 333, 97 => 541, 98 => 583, 99 => 541, 100 => 583, 101 => 583,
+       102 => 375, 103 => 583, 104 => 583, 105 => 291, 106 => 333, 107 => 583, 108 => 291, 109 => 875, 110 => 583, 111 => 583,
+       112 => 583, 113 => 583, 114 => 458, 115 => 541, 116 => 375, 117 => 583, 118 => 583, 119 => 833, 120 => 625, 121 => 625,
+       122 => 500, 123 => 583, 124 => 583, 125 => 583, 126 => 750,
+);
+$_cr = array(
+       array(8094, 8190, 500)
+);
+foreach($_cr as $_r) {
+       for($i = $_r[0]; $i <= $_r[1]; $i++) {
+               $cw[$i+31] = $_r[2];
+       }
+}
+$this->UHC_widths=$cw;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/functions.php b/inc/3rdparty/libraries/mpdf/includes/functions.php
new file mode 100644 (file)
index 0000000..03f4709
--- /dev/null
@@ -0,0 +1,126 @@
+<?php
+
+// mPDF 5.6.23
+function array_insert(&$array, $value, $offset) {
+       if (is_array($array)) {
+               $array  = array_values($array);
+               $offset = intval($offset);
+               if ($offset < 0 || $offset >= count($array)) { array_push($array, $value); }
+               else if ($offset == 0) { array_unshift($array, $value); }
+               else { 
+                       $temp  = array_slice($array, 0, $offset);
+                       array_push($temp, $value);
+                       $array = array_slice($array, $offset);
+                       $array = array_merge($temp, $array);
+               }
+       }
+       else { $array = array($value); }
+       return count($array);
+}
+
+function urlencode_part($url) {        // mPDF 5.6.02
+       if (!preg_match('/^[a-z]+:\/\//i',$url)) { return $url; }
+       $file=$url;
+       $query='';
+       if (preg_match('/[?]/',$url)) {
+               $bits = preg_split('/[?]/',$url,2);
+               $file=$bits[0];
+               $query='?'.$bits[1];
+       }
+       $file = str_replace(array(" ","!","$","&","'","(",")","*","+",",",";","="),array("%20","%21","%24","%26","%27","%28","%29","%2A","%2B","%2C","%3B","%3D"),$file);
+       return $file.$query;
+}
+
+
+function _strspn($str1, $str2, $start=null, $length=null) {
+       $numargs = func_num_args();
+       if ($numargs == 2) {
+               return strspn($str1, $str2);
+       }
+       else if ($numargs == 3) {
+               return strspn($str1, $str2, $start);
+       }
+       else {
+               return strspn($str1, $str2, $start, $length);
+       }
+}
+
+
+function _strcspn($str1, $str2, $start=null, $length=null) {
+       $numargs = func_num_args();
+       if ($numargs == 2) {
+               return strcspn($str1, $str2);
+       } 
+       else if ($numargs == 3) {
+               return strcspn($str1, $str2, $start);
+       } 
+       else {
+               return strcspn($str1, $str2, $start, $length);
+       }
+}
+
+function _fgets (&$h, $force=false) {
+       $startpos = ftell($h);
+       $s = fgets($h, 1024);
+       if ($force && preg_match("/^([^\r\n]*[\r\n]{1,2})(.)/",trim($s), $ns)) {
+               $s = $ns[1];
+               fseek($h,$startpos+strlen($s));
+       }
+       return $s;
+}
+
+
+// For PHP4 compatability
+if(!function_exists('str_ireplace')) {
+  function str_ireplace($search,$replace,$subject) {
+       $search = preg_quote($search, "/");
+       return preg_replace("/".$search."/i", $replace, $subject); 
+  }
+}
+if(!function_exists('htmlspecialchars_decode')) {
+       function htmlspecialchars_decode ($str) {
+               return strtr($str, array_flip(get_html_translation_table(HTML_SPECIALCHARS)));
+       }
+}
+
+function PreparePreText($text,$ff='//FF//') {
+       $text = htmlspecialchars($text);
+       if ($ff) { $text = str_replace($ff,'</pre><formfeed /><pre>',$text); }
+       return ('<pre>'.$text.'</pre>');
+}
+
+if(!function_exists('strcode2utf')){ 
+  function strcode2utf($str,$lo=true) {
+       //converts all the &#nnn; and &#xhhh; in a string to Unicode
+       if ($lo) { $lo = 1; } else { $lo = 0; }
+       $str = preg_replace('/\&\#([0-9]+)\;/me', "code2utf('\\1',{$lo})",$str);
+       $str = preg_replace('/\&\#x([0-9a-fA-F]+)\;/me', "codeHex2utf('\\1',{$lo})",$str);
+       return $str;
+  }
+}
+
+if(!function_exists('code2utf')){ 
+  function code2utf($num,$lo=true){
+       //Returns the utf string corresponding to the unicode value
+       if ($num<128) {
+               if ($lo) return chr($num);
+               else return '&#'.$num.';';
+       }
+       if ($num<2048) return chr(($num>>6)+192).chr(($num&63)+128);
+       if ($num<65536) return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
+       if ($num<2097152) return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
+       return '?';
+  }
+}
+
+
+if(!function_exists('codeHex2utf')){ 
+  function codeHex2utf($hex,$lo=true){
+       $num = hexdec($hex);
+       if (($num<128) && !$lo) return '&#x'.$hex.';';
+       return code2utf($num,$lo);
+  }
+}
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_bn_1_001.volt.php
new file mode 100644 (file)
index 0000000..f745de0
--- /dev/null
@@ -0,0 +1,3164 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0995 09CD 09B7',
+    'replace' => 'E002',
+  ),
+  1 => 
+  array (
+    'match' => '099C 09CD 099E',
+    'replace' => 'E003',
+  ),
+  2 => 
+  array (
+    'match' => '09CD 200D',
+    'replace' => '007E',
+  ),
+  3 => 
+  array (
+    'match' => '09CD 200C',
+    'replace' => '200C',
+  ),
+  4 => 
+  array (
+    'match' => '200D 09CD',
+    'replace' => '00D0',
+  ),
+  5 => 
+  array (
+    'match' => '((0995|0996|0997|0998|0999|099A|099B|099C|099D|099E|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9)) 09CD 09B0',
+    'replace' => '\\1 E1CD',
+  ),
+  6 => 
+  array (
+    'match' => '((0995|0996|0997|0998|0999|099A|099B|099C|099D|099E|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9)) 09B0 09CD',
+    'replace' => '\\1 E068',
+  ),
+  7 => 
+  array (
+    'match' => '((09BE|09C0|09C1|09C2|09C3|09C4|09CB|09CC|09D7|09BC)) 09CD 09B0',
+    'replace' => '\\1 E1CD',
+  ),
+  8 => 
+  array (
+    'match' => '((09BE|09C0|09C1|09C2|09C3|09C4|09CB|09CC|09D7|09BC)) 09B0 09CD',
+    'replace' => '\\1 E068',
+  ),
+  9 => 
+  array (
+    'match' => '(0020) 09CD 09B0',
+    'replace' => '\\1 E1CD',
+  ),
+  10 => 
+  array (
+    'match' => '(0020) 09B0 09CD',
+    'replace' => '\\1 E068',
+  ),
+  11 => 
+  array (
+    'match' => '(25CC) 09CD 09B0',
+    'replace' => '\\1 E1CD',
+  ),
+  12 => 
+  array (
+    'match' => '(25CC) 09B0 09CD',
+    'replace' => '\\1 E068',
+  ),
+  13 => 
+  array (
+    'match' => '((09B0|E042|E043|E044|E048|E049|E04E|E04F|E050|E051|E052|E053|E054|E056|E057|E058|E059|E05B|E05C|E05D|E05E|E062|E063|E064|E065|E0A8|E0BC|E0EF|E0FD|E101|E11C|E11E|E14F|E151|E152|E164|E17D|E18E|E190)) 09C1',
+    'replace' => '\\1 E03C',
+  ),
+  14 => 
+  array (
+    'match' => '((09B0|E042|E043|E044|E048|E049|E04E|E04F|E050|E051|E052|E053|E054|E056|E057|E058|E059|E05B|E05C|E05D|E05E|E062|E063|E064|E065|E0A8|E0BC|E0EF|E0FD|E101|E11C|E11E|E14F|E151|E152|E164|E17D|E18E|E190)) 09C2',
+    'replace' => '\\1 E03E',
+  ),
+  15 => 
+  array (
+    'match' => '((E045|E046|E047|E04A|E04B|E04C|E04D|E05F|E060|E061|E07C|E07D|E0B1|E0E8|E0E9|E11A|E11B|E163|E17B|E18D)) 09C1',
+    'replace' => '\\1 E03D',
+  ),
+  16 => 
+  array (
+    'match' => 'E068 0981',
+    'replace' => 'E069',
+  ),
+  17 => 
+  array (
+    'match' => '0995 09CD 0995',
+    'replace' => 'E06A',
+  ),
+  18 => 
+  array (
+    'match' => '0995 09CD 0996',
+    'replace' => 'E06B',
+  ),
+  19 => 
+  array (
+    'match' => '0995 09CD 099A',
+    'replace' => 'E06C',
+  ),
+  20 => 
+  array (
+    'match' => '0995 09CD 099B',
+    'replace' => 'E06D',
+  ),
+  21 => 
+  array (
+    'match' => '0995 09CD 099F',
+    'replace' => 'E06E',
+  ),
+  22 => 
+  array (
+    'match' => '0995 09CD 09A0',
+    'replace' => 'E06F',
+  ),
+  23 => 
+  array (
+    'match' => '0995 09CD 09A3',
+    'replace' => 'E070',
+  ),
+  24 => 
+  array (
+    'match' => '0995 09CD 09A4',
+    'replace' => 'E071',
+  ),
+  25 => 
+  array (
+    'match' => '0995 09CD 09A5',
+    'replace' => 'E072',
+  ),
+  26 => 
+  array (
+    'match' => '0995 09CD 09A8',
+    'replace' => 'E073',
+  ),
+  27 => 
+  array (
+    'match' => '0995 09CD 09AA',
+    'replace' => 'E074',
+  ),
+  28 => 
+  array (
+    'match' => '0995 09CD 09AB',
+    'replace' => 'E075',
+  ),
+  29 => 
+  array (
+    'match' => '0995 09CD 09AE',
+    'replace' => 'E076',
+  ),
+  30 => 
+  array (
+    'match' => '0995 09CD 09B2',
+    'replace' => 'E077',
+  ),
+  31 => 
+  array (
+    'match' => '0995 09CD 09AC',
+    'replace' => 'E078',
+  ),
+  32 => 
+  array (
+    'match' => '0995 09CD 09B6',
+    'replace' => 'E079',
+  ),
+  33 => 
+  array (
+    'match' => '0995 09CD 09B8',
+    'replace' => 'E07A',
+  ),
+  34 => 
+  array (
+    'match' => '0996 09CD 0996',
+    'replace' => 'E083',
+  ),
+  35 => 
+  array (
+    'match' => '0996 09CD 09A4',
+    'replace' => 'E084',
+  ),
+  36 => 
+  array (
+    'match' => '0996 09CD 09A8',
+    'replace' => 'E085',
+  ),
+  37 => 
+  array (
+    'match' => '0996 09CD 09AE',
+    'replace' => 'E086',
+  ),
+  38 => 
+  array (
+    'match' => '0996 09CD 09AC',
+    'replace' => 'E087',
+  ),
+  39 => 
+  array (
+    'match' => '0997 09CD 0997',
+    'replace' => 'E088',
+  ),
+  40 => 
+  array (
+    'match' => '0997 09CD 0998',
+    'replace' => 'E089',
+  ),
+  41 => 
+  array (
+    'match' => '0997 09CD 099C',
+    'replace' => 'E08A',
+  ),
+  42 => 
+  array (
+    'match' => '0997 09CD 099D',
+    'replace' => 'E08B',
+  ),
+  43 => 
+  array (
+    'match' => '0997 09CD 09A1',
+    'replace' => 'E08C',
+  ),
+  44 => 
+  array (
+    'match' => '0997 09CD 09A2',
+    'replace' => 'E08D',
+  ),
+  45 => 
+  array (
+    'match' => '0997 09CD 09A3',
+    'replace' => 'E08E',
+  ),
+  46 => 
+  array (
+    'match' => '0997 09CD 09A6',
+    'replace' => 'E08F',
+  ),
+  47 => 
+  array (
+    'match' => '0997 09CD 09A7',
+    'replace' => 'E090',
+  ),
+  48 => 
+  array (
+    'match' => '0997 09CD 09A8',
+    'replace' => 'E091',
+  ),
+  49 => 
+  array (
+    'match' => '0997 09CD 09AB',
+    'replace' => 'E092',
+  ),
+  50 => 
+  array (
+    'match' => '0997 09CD 09AC',
+    'replace' => 'E093',
+  ),
+  51 => 
+  array (
+    'match' => '0997 09CD 09AD',
+    'replace' => 'E094',
+  ),
+  52 => 
+  array (
+    'match' => '0997 09CD 09AE',
+    'replace' => 'E095',
+  ),
+  53 => 
+  array (
+    'match' => '0997 09CD 09B2',
+    'replace' => 'E096',
+  ),
+  54 => 
+  array (
+    'match' => '0998 09CD 09A8',
+    'replace' => 'E099',
+  ),
+  55 => 
+  array (
+    'match' => '0998 09CD 09AE',
+    'replace' => 'E09A',
+  ),
+  56 => 
+  array (
+    'match' => '0998 09CD 09AC',
+    'replace' => 'E09B',
+  ),
+  57 => 
+  array (
+    'match' => '0999 09CD 0995',
+    'replace' => 'E09C',
+  ),
+  58 => 
+  array (
+    'match' => '0999 09CD 0996',
+    'replace' => 'E09D',
+  ),
+  59 => 
+  array (
+    'match' => '0999 09CD 0997',
+    'replace' => 'E09E',
+  ),
+  60 => 
+  array (
+    'match' => '0999 09CD 0998',
+    'replace' => 'E09F',
+  ),
+  61 => 
+  array (
+    'match' => '0999 09CD 09A8',
+    'replace' => 'E0A0',
+  ),
+  62 => 
+  array (
+    'match' => '0999 09CD 09AD',
+    'replace' => 'E0A1',
+  ),
+  63 => 
+  array (
+    'match' => '0999 09CD 09AE',
+    'replace' => 'E0A2',
+  ),
+  64 => 
+  array (
+    'match' => '0999 09CD 09AC',
+    'replace' => 'E0A3',
+  ),
+  65 => 
+  array (
+    'match' => '0999 09CD 09B6',
+    'replace' => 'E0A4',
+  ),
+  66 => 
+  array (
+    'match' => '0999 09CD 09B7',
+    'replace' => 'E0A5',
+  ),
+  67 => 
+  array (
+    'match' => '0999 09CD 09B9',
+    'replace' => 'E0A6',
+  ),
+  68 => 
+  array (
+    'match' => '099A 09CD 099A',
+    'replace' => 'E0AC',
+  ),
+  69 => 
+  array (
+    'match' => '099A 09CD 099B',
+    'replace' => 'E0AD',
+  ),
+  70 => 
+  array (
+    'match' => '099A 09CD 099E',
+    'replace' => 'E0AE',
+  ),
+  71 => 
+  array (
+    'match' => '099A 09CD 09AE',
+    'replace' => 'E0AF',
+  ),
+  72 => 
+  array (
+    'match' => '099A 09CD 09AC',
+    'replace' => 'E0B0',
+  ),
+  73 => 
+  array (
+    'match' => '099B 09CD 099B',
+    'replace' => 'E0B4',
+  ),
+  74 => 
+  array (
+    'match' => '099B 09CD 09B2',
+    'replace' => 'E0B5',
+  ),
+  75 => 
+  array (
+    'match' => '099B 09CD 09AC',
+    'replace' => 'E0B6',
+  ),
+  76 => 
+  array (
+    'match' => '099C 09CD 099C',
+    'replace' => 'E0B7',
+  ),
+  77 => 
+  array (
+    'match' => '099C 09CD 099D',
+    'replace' => 'E0B8',
+  ),
+  78 => 
+  array (
+    'match' => '099C 09CD 09A6',
+    'replace' => 'E0B9',
+  ),
+  79 => 
+  array (
+    'match' => '099C 09CD 09AC',
+    'replace' => 'E0BA',
+  ),
+  80 => 
+  array (
+    'match' => '099C 09CD 09AE',
+    'replace' => 'E0BB',
+  ),
+  81 => 
+  array (
+    'match' => '099D 09CD 099D',
+    'replace' => 'E0BE',
+  ),
+  82 => 
+  array (
+    'match' => '099D 09CD 09AE',
+    'replace' => 'E0BF',
+  ),
+  83 => 
+  array (
+    'match' => '099D 09CD 09AC',
+    'replace' => 'E0C0',
+  ),
+  84 => 
+  array (
+    'match' => '099E 09CD 099A',
+    'replace' => 'E0C1',
+  ),
+  85 => 
+  array (
+    'match' => '099E 09CD 099B',
+    'replace' => 'E0C2',
+  ),
+  86 => 
+  array (
+    'match' => '099E 09CD 099C',
+    'replace' => 'E0C3',
+  ),
+  87 => 
+  array (
+    'match' => '099E 09CD 099D',
+    'replace' => 'E0C4',
+  ),
+  88 => 
+  array (
+    'match' => '099E 09CD 09B6',
+    'replace' => 'E0C5',
+  ),
+  89 => 
+  array (
+    'match' => '099F 09CD 0995',
+    'replace' => 'E0C6',
+  ),
+  90 => 
+  array (
+    'match' => '099F 09CD 0996',
+    'replace' => 'E0C7',
+  ),
+  91 => 
+  array (
+    'match' => '099F 09CD 099A',
+    'replace' => 'E0C8',
+  ),
+  92 => 
+  array (
+    'match' => '099F 09CD 099B',
+    'replace' => 'E0C9',
+  ),
+  93 => 
+  array (
+    'match' => '099F 09CD 099F',
+    'replace' => 'E0CA',
+  ),
+  94 => 
+  array (
+    'match' => '099F 09CD 09A0',
+    'replace' => 'E0CB',
+  ),
+  95 => 
+  array (
+    'match' => '099F 09CD 09A4',
+    'replace' => 'E0CC',
+  ),
+  96 => 
+  array (
+    'match' => '099F 09CD 09A5',
+    'replace' => 'E0CD',
+  ),
+  97 => 
+  array (
+    'match' => '099F 09CD 09AA',
+    'replace' => 'E0CE',
+  ),
+  98 => 
+  array (
+    'match' => '099F 09CD 09AB',
+    'replace' => 'E0CF',
+  ),
+  99 => 
+  array (
+    'match' => '099F 09CD 09AC',
+    'replace' => 'E0D0',
+  ),
+  100 => 
+  array (
+    'match' => '099F 09CD 09AE',
+    'replace' => 'E0D1',
+  ),
+  101 => 
+  array (
+    'match' => '099F 09CD 09B6',
+    'replace' => 'E0D2',
+  ),
+  102 => 
+  array (
+    'match' => '099F 09CD 09B7',
+    'replace' => 'E0D3',
+  ),
+  103 => 
+  array (
+    'match' => '099F 09CD 09B8',
+    'replace' => 'E0D4',
+  ),
+  104 => 
+  array (
+    'match' => '09A0 09CD 09A0',
+    'replace' => 'E0D5',
+  ),
+  105 => 
+  array (
+    'match' => '09A0 09CD 09A3',
+    'replace' => 'E0D6',
+  ),
+  106 => 
+  array (
+    'match' => '09A0 09CD 09AC',
+    'replace' => 'E0D7',
+  ),
+  107 => 
+  array (
+    'match' => '09A1 09CD 0997',
+    'replace' => 'E0D8',
+  ),
+  108 => 
+  array (
+    'match' => '09A1 09CD 09A1',
+    'replace' => 'E0D9',
+  ),
+  109 => 
+  array (
+    'match' => '09A1 09CD 09A2',
+    'replace' => 'E0DA',
+  ),
+  110 => 
+  array (
+    'match' => '09A1 09CD 09AE',
+    'replace' => 'E0DB',
+  ),
+  111 => 
+  array (
+    'match' => '09A1 09CD 09AC',
+    'replace' => 'E0DC',
+  ),
+  112 => 
+  array (
+    'match' => '09A2 09CD 09A2',
+    'replace' => 'E0DD',
+  ),
+  113 => 
+  array (
+    'match' => '09A2 09CD 09A3',
+    'replace' => 'E0DE',
+  ),
+  114 => 
+  array (
+    'match' => '09A2 09CD 09AC',
+    'replace' => 'E0DF',
+  ),
+  115 => 
+  array (
+    'match' => '09A3 09CD 099F',
+    'replace' => 'E0E0',
+  ),
+  116 => 
+  array (
+    'match' => '09A3 09CD 09A0',
+    'replace' => 'E0E1',
+  ),
+  117 => 
+  array (
+    'match' => '09A3 09CD 09A1',
+    'replace' => 'E0E2',
+  ),
+  118 => 
+  array (
+    'match' => '09A3 09CD 09A2',
+    'replace' => 'E0E3',
+  ),
+  119 => 
+  array (
+    'match' => '09A3 09CD 09A3',
+    'replace' => 'E0E4',
+  ),
+  120 => 
+  array (
+    'match' => '09A3 09CD 09AE',
+    'replace' => 'E0E5',
+  ),
+  121 => 
+  array (
+    'match' => '09A3 09CD 09AC',
+    'replace' => 'E0E6',
+  ),
+  122 => 
+  array (
+    'match' => '09A3 09CD 09B8',
+    'replace' => 'E0E7',
+  ),
+  123 => 
+  array (
+    'match' => '09A4 09CD 09A4',
+    'replace' => 'E0EA',
+  ),
+  124 => 
+  array (
+    'match' => '09A4 09CD 09A5',
+    'replace' => 'E0EB',
+  ),
+  125 => 
+  array (
+    'match' => '09A4 09CD 09A8',
+    'replace' => 'E0EC',
+  ),
+  126 => 
+  array (
+    'match' => '09A4 09CD 09AE',
+    'replace' => 'E0ED',
+  ),
+  127 => 
+  array (
+    'match' => '09A4 09CD 09AC',
+    'replace' => 'E0EE',
+  ),
+  128 => 
+  array (
+    'match' => '09A5 09CD 09A5',
+    'replace' => 'E0F1',
+  ),
+  129 => 
+  array (
+    'match' => '09A5 09CD 09A8',
+    'replace' => 'E0F2',
+  ),
+  130 => 
+  array (
+    'match' => '09A5 09CD 09AC',
+    'replace' => 'E0F3',
+  ),
+  131 => 
+  array (
+    'match' => '09A6 09CD 0997',
+    'replace' => 'E0F4',
+  ),
+  132 => 
+  array (
+    'match' => '09A6 09CD 0998',
+    'replace' => 'E0F5',
+  ),
+  133 => 
+  array (
+    'match' => '09A6 09CD 09A6',
+    'replace' => 'E0F6',
+  ),
+  134 => 
+  array (
+    'match' => '09A6 09CD 09A7',
+    'replace' => 'E0F7',
+  ),
+  135 => 
+  array (
+    'match' => '09A6 09CD 09A8',
+    'replace' => 'E0F8',
+  ),
+  136 => 
+  array (
+    'match' => '09A6 09CD 09AC',
+    'replace' => 'E0F9',
+  ),
+  137 => 
+  array (
+    'match' => '09A6 09CD 09AE',
+    'replace' => 'E0FB',
+  ),
+  138 => 
+  array (
+    'match' => '09A6 09CD 09AF',
+    'replace' => 'E0FC',
+  ),
+  139 => 
+  array (
+    'match' => '09A7 09CD 09A7',
+    'replace' => 'E102',
+  ),
+  140 => 
+  array (
+    'match' => '09A7 09CD 09A8',
+    'replace' => 'E103',
+  ),
+  141 => 
+  array (
+    'match' => '09A7 09CD 09AE',
+    'replace' => 'E104',
+  ),
+  142 => 
+  array (
+    'match' => '09A7 09CD 09AC',
+    'replace' => 'E105',
+  ),
+  143 => 
+  array (
+    'match' => '09A8 09CD 0995',
+    'replace' => 'E106',
+  ),
+  144 => 
+  array (
+    'match' => '09A8 09CD 0997',
+    'replace' => 'E107',
+  ),
+  145 => 
+  array (
+    'match' => '09A8 09CD 099A',
+    'replace' => 'E108',
+  ),
+  146 => 
+  array (
+    'match' => '09A8 09CD 099C',
+    'replace' => 'E109',
+  ),
+  147 => 
+  array (
+    'match' => '09A8 09CD 099F',
+    'replace' => 'E10A',
+  ),
+  148 => 
+  array (
+    'match' => '09A8 09CD 09A0',
+    'replace' => 'E10B',
+  ),
+  149 => 
+  array (
+    'match' => '09A8 09CD 09A1',
+    'replace' => 'E10C',
+  ),
+  150 => 
+  array (
+    'match' => '09A8 09CD 09A4',
+    'replace' => 'E10D',
+  ),
+  151 => 
+  array (
+    'match' => '09A8 09CD 09A5',
+    'replace' => 'E10E',
+  ),
+  152 => 
+  array (
+    'match' => '09A8 09CD 09A6',
+    'replace' => 'E10F',
+  ),
+  153 => 
+  array (
+    'match' => '09A8 09CD 09A7',
+    'replace' => 'E110',
+  ),
+  154 => 
+  array (
+    'match' => '09A8 09CD 09A8',
+    'replace' => 'E111',
+  ),
+  155 => 
+  array (
+    'match' => '09A8 09CD 09AB',
+    'replace' => 'E112',
+  ),
+  156 => 
+  array (
+    'match' => '09A8 09CD 09AD',
+    'replace' => 'E113',
+  ),
+  157 => 
+  array (
+    'match' => '09A8 09CD 09AE',
+    'replace' => 'E114',
+  ),
+  158 => 
+  array (
+    'match' => '09A8 09CD 09AF',
+    'replace' => 'E115',
+  ),
+  159 => 
+  array (
+    'match' => '09A8 09CD 09AC',
+    'replace' => 'E116',
+  ),
+  160 => 
+  array (
+    'match' => '09A8 09CD 09B6',
+    'replace' => 'E117',
+  ),
+  161 => 
+  array (
+    'match' => '09A8 09CD 09B7',
+    'replace' => 'E118',
+  ),
+  162 => 
+  array (
+    'match' => '09A8 09CD 09B8',
+    'replace' => 'E119',
+  ),
+  163 => 
+  array (
+    'match' => '09AA 09CD 0995',
+    'replace' => 'E122',
+  ),
+  164 => 
+  array (
+    'match' => '09AA 09CD 0996',
+    'replace' => 'E123',
+  ),
+  165 => 
+  array (
+    'match' => '09AA 09CD 099A',
+    'replace' => 'E124',
+  ),
+  166 => 
+  array (
+    'match' => '09AA 09CD 099B',
+    'replace' => 'E125',
+  ),
+  167 => 
+  array (
+    'match' => '09AA 09CD 099F',
+    'replace' => 'E126',
+  ),
+  168 => 
+  array (
+    'match' => '09AA 09CD 09A0',
+    'replace' => 'E127',
+  ),
+  169 => 
+  array (
+    'match' => '09AA 09CD 09A4',
+    'replace' => 'E128',
+  ),
+  170 => 
+  array (
+    'match' => '09AA 09CD 09A8',
+    'replace' => 'E129',
+  ),
+  171 => 
+  array (
+    'match' => '09AA 09CD 09AA',
+    'replace' => 'E12A',
+  ),
+  172 => 
+  array (
+    'match' => '09AA 09CD 09AB',
+    'replace' => 'E12B',
+  ),
+  173 => 
+  array (
+    'match' => '09AA 09CD 09AE',
+    'replace' => 'E12C',
+  ),
+  174 => 
+  array (
+    'match' => '09AA 09CD 09B2',
+    'replace' => 'E12D',
+  ),
+  175 => 
+  array (
+    'match' => '09AA 09CD 09AC',
+    'replace' => 'E12E',
+  ),
+  176 => 
+  array (
+    'match' => '09AA 09CD 09B6',
+    'replace' => 'E12F',
+  ),
+  177 => 
+  array (
+    'match' => '09AA 09CD 09B7',
+    'replace' => 'E130',
+  ),
+  178 => 
+  array (
+    'match' => '09AA 09CD 09B8',
+    'replace' => 'E131',
+  ),
+  179 => 
+  array (
+    'match' => '09AB 09CD 099F',
+    'replace' => 'E132',
+  ),
+  180 => 
+  array (
+    'match' => '09AB 09CD 09A4',
+    'replace' => 'E133',
+  ),
+  181 => 
+  array (
+    'match' => '09AB 09CD 09AA',
+    'replace' => 'E134',
+  ),
+  182 => 
+  array (
+    'match' => '09AB 09CD 09AB',
+    'replace' => 'E135',
+  ),
+  183 => 
+  array (
+    'match' => '09AB 09CD 09B2',
+    'replace' => 'E136',
+  ),
+  184 => 
+  array (
+    'match' => '09AC 09CD 099C',
+    'replace' => 'E137',
+  ),
+  185 => 
+  array (
+    'match' => '09AC 09CD 099D',
+    'replace' => 'E138',
+  ),
+  186 => 
+  array (
+    'match' => '09AC 09CD 09A1',
+    'replace' => 'E139',
+  ),
+  187 => 
+  array (
+    'match' => '09AC 09CD 09A2',
+    'replace' => 'E13A',
+  ),
+  188 => 
+  array (
+    'match' => '09AC 09CD 09A6',
+    'replace' => 'E13B',
+  ),
+  189 => 
+  array (
+    'match' => '09AC 09CD 09A7',
+    'replace' => 'E13C',
+  ),
+  190 => 
+  array (
+    'match' => '09AC 09CD 09A8',
+    'replace' => 'E13D',
+  ),
+  191 => 
+  array (
+    'match' => '09AC 09CD 09B2',
+    'replace' => 'E13E',
+  ),
+  192 => 
+  array (
+    'match' => '09AC 09CD 09AC',
+    'replace' => 'E13F',
+  ),
+  193 => 
+  array (
+    'match' => '09AD 09CD 09A3',
+    'replace' => 'E141',
+  ),
+  194 => 
+  array (
+    'match' => '09AD 09CD 09A8',
+    'replace' => 'E142',
+  ),
+  195 => 
+  array (
+    'match' => '09AD 09CD 09AD',
+    'replace' => 'E143',
+  ),
+  196 => 
+  array (
+    'match' => '09AD 09CD 09AE',
+    'replace' => 'E144',
+  ),
+  197 => 
+  array (
+    'match' => '09AD 09CD 09B2',
+    'replace' => 'E145',
+  ),
+  198 => 
+  array (
+    'match' => '09AD 09CD 09AC',
+    'replace' => 'E146',
+  ),
+  199 => 
+  array (
+    'match' => '09AE 09CD 09A3',
+    'replace' => 'E147',
+  ),
+  200 => 
+  array (
+    'match' => '09AE 09CD 09A8',
+    'replace' => 'E148',
+  ),
+  201 => 
+  array (
+    'match' => '09AE 09CD 09AA',
+    'replace' => 'E149',
+  ),
+  202 => 
+  array (
+    'match' => '09AE 09CD 09AB',
+    'replace' => 'E14A',
+  ),
+  203 => 
+  array (
+    'match' => '09AE 09CD 09AC',
+    'replace' => 'E14B',
+  ),
+  204 => 
+  array (
+    'match' => '09AE 09CD 09AD',
+    'replace' => 'E14C',
+  ),
+  205 => 
+  array (
+    'match' => '09AE 09CD 09AE',
+    'replace' => 'E14D',
+  ),
+  206 => 
+  array (
+    'match' => '09AE 09CD 09B2',
+    'replace' => 'E14E',
+  ),
+  207 => 
+  array (
+    'match' => '09B2 09CD 0995',
+    'replace' => 'E153',
+  ),
+  208 => 
+  array (
+    'match' => '09B2 09CD 0996',
+    'replace' => 'E154',
+  ),
+  209 => 
+  array (
+    'match' => '09B2 09CD 0997',
+    'replace' => 'E155',
+  ),
+  210 => 
+  array (
+    'match' => '09B2 09CD 099A',
+    'replace' => 'E156',
+  ),
+  211 => 
+  array (
+    'match' => '09B2 09CD 099C',
+    'replace' => 'E157',
+  ),
+  212 => 
+  array (
+    'match' => '09B2 09CD 099F',
+    'replace' => 'E158',
+  ),
+  213 => 
+  array (
+    'match' => '09B2 09CD 09A1',
+    'replace' => 'E159',
+  ),
+  214 => 
+  array (
+    'match' => '09B2 09CD 09A6',
+    'replace' => 'E15A',
+  ),
+  215 => 
+  array (
+    'match' => '09B2 09CD 09AA',
+    'replace' => 'E15B',
+  ),
+  216 => 
+  array (
+    'match' => '09B2 09CD 09AB',
+    'replace' => 'E15C',
+  ),
+  217 => 
+  array (
+    'match' => '09B2 09CD 09AC',
+    'replace' => 'E15D',
+  ),
+  218 => 
+  array (
+    'match' => '09B2 09CD 09AE',
+    'replace' => 'E15E',
+  ),
+  219 => 
+  array (
+    'match' => '09B2 09CD 09B2',
+    'replace' => 'E15F',
+  ),
+  220 => 
+  array (
+    'match' => '09B2 09CD 09B6',
+    'replace' => 'E160',
+  ),
+  221 => 
+  array (
+    'match' => '09B2 09CD 09B8',
+    'replace' => 'E161',
+  ),
+  222 => 
+  array (
+    'match' => '09B2 09CD 09B9',
+    'replace' => 'E162',
+  ),
+  223 => 
+  array (
+    'match' => '09B6 09CD 0995',
+    'replace' => 'E166',
+  ),
+  224 => 
+  array (
+    'match' => '09B6 09CD 099A',
+    'replace' => 'E167',
+  ),
+  225 => 
+  array (
+    'match' => '09B6 09CD 099B',
+    'replace' => 'E168',
+  ),
+  226 => 
+  array (
+    'match' => '09B6 09CD 09A4',
+    'replace' => 'E169',
+  ),
+  227 => 
+  array (
+    'match' => '09B6 09CD 09A8',
+    'replace' => 'E16A',
+  ),
+  228 => 
+  array (
+    'match' => '09B6 09CD 09AA',
+    'replace' => 'E16B',
+  ),
+  229 => 
+  array (
+    'match' => '09B6 09CD 09AE',
+    'replace' => 'E16C',
+  ),
+  230 => 
+  array (
+    'match' => '09B6 09CD 09AF',
+    'replace' => 'E16D',
+  ),
+  231 => 
+  array (
+    'match' => '09B6 09CD 09B2',
+    'replace' => 'E16E',
+  ),
+  232 => 
+  array (
+    'match' => '09B6 09CD 09AC',
+    'replace' => 'E16F',
+  ),
+  233 => 
+  array (
+    'match' => '09B6 09CD 09B6',
+    'replace' => 'E170',
+  ),
+  234 => 
+  array (
+    'match' => '09B7 09CD 0995',
+    'replace' => 'E171',
+  ),
+  235 => 
+  array (
+    'match' => '09B7 09CD 099F',
+    'replace' => 'E172',
+  ),
+  236 => 
+  array (
+    'match' => '09B7 09CD 09A0',
+    'replace' => 'E173',
+  ),
+  237 => 
+  array (
+    'match' => '09B7 09CD 09A3',
+    'replace' => 'E174',
+  ),
+  238 => 
+  array (
+    'match' => '09B7 09CD 09AA',
+    'replace' => 'E175',
+  ),
+  239 => 
+  array (
+    'match' => '09B7 09CD 09AB',
+    'replace' => 'E176',
+  ),
+  240 => 
+  array (
+    'match' => '09B7 09CD 09AE',
+    'replace' => 'E177',
+  ),
+  241 => 
+  array (
+    'match' => '09B7 09CD 09AF',
+    'replace' => 'E178',
+  ),
+  242 => 
+  array (
+    'match' => '09B7 09CD 09AC',
+    'replace' => 'E179',
+  ),
+  243 => 
+  array (
+    'match' => '09B8 09CD 0995',
+    'replace' => 'E17E',
+  ),
+  244 => 
+  array (
+    'match' => '09B8 09CD 0996',
+    'replace' => 'E17F',
+  ),
+  245 => 
+  array (
+    'match' => '09B8 09CD 099C',
+    'replace' => 'E180',
+  ),
+  246 => 
+  array (
+    'match' => '09B8 09CD 099F',
+    'replace' => 'E181',
+  ),
+  247 => 
+  array (
+    'match' => '09B8 09CD 09A4',
+    'replace' => 'E182',
+  ),
+  248 => 
+  array (
+    'match' => '09B8 09CD 09A5',
+    'replace' => 'E183',
+  ),
+  249 => 
+  array (
+    'match' => '09B8 09CD 09A8',
+    'replace' => 'E184',
+  ),
+  250 => 
+  array (
+    'match' => '09B8 09CD 09AA',
+    'replace' => 'E185',
+  ),
+  251 => 
+  array (
+    'match' => '09B8 09CD 09AB',
+    'replace' => 'E186',
+  ),
+  252 => 
+  array (
+    'match' => '09B8 09CD 09AE',
+    'replace' => 'E187',
+  ),
+  253 => 
+  array (
+    'match' => '09B8 09CD 09AF',
+    'replace' => 'E188',
+  ),
+  254 => 
+  array (
+    'match' => '09B8 09CD 09B2',
+    'replace' => 'E189',
+  ),
+  255 => 
+  array (
+    'match' => '09B8 09CD 09AC',
+    'replace' => 'E18A',
+  ),
+  256 => 
+  array (
+    'match' => '09B8 09CD 09B8',
+    'replace' => 'E18B',
+  ),
+  257 => 
+  array (
+    'match' => '09B9 09CD 09A3',
+    'replace' => 'E192',
+  ),
+  258 => 
+  array (
+    'match' => '09B9 09CD 09A8',
+    'replace' => 'E193',
+  ),
+  259 => 
+  array (
+    'match' => '09B9 09CD 09AE',
+    'replace' => 'E194',
+  ),
+  260 => 
+  array (
+    'match' => '09B9 09CD 09AF',
+    'replace' => 'E195',
+  ),
+  261 => 
+  array (
+    'match' => '09B9 09CD 09B2',
+    'replace' => 'E196',
+  ),
+  262 => 
+  array (
+    'match' => '09B9 09CD 09AC',
+    'replace' => 'E197',
+  ),
+  263 => 
+  array (
+    'match' => '09DC 09CD 0997',
+    'replace' => 'E198',
+  ),
+  264 => 
+  array (
+    'match' => '09DC 09CD 099C',
+    'replace' => 'E199',
+  ),
+  265 => 
+  array (
+    'match' => '09DC 09CD 09A7',
+    'replace' => 'E19A',
+  ),
+  266 => 
+  array (
+    'match' => '0995 E1CD',
+    'replace' => 'E041',
+  ),
+  267 => 
+  array (
+    'match' => '0996 E1CD',
+    'replace' => 'E042',
+  ),
+  268 => 
+  array (
+    'match' => '0997 E1CD',
+    'replace' => 'E043',
+  ),
+  269 => 
+  array (
+    'match' => '0998 E1CD',
+    'replace' => 'E044',
+  ),
+  270 => 
+  array (
+    'match' => '0999 E1CD',
+    'replace' => 'E045',
+  ),
+  271 => 
+  array (
+    'match' => '099A E1CD',
+    'replace' => 'E046',
+  ),
+  272 => 
+  array (
+    'match' => '099B E1CD',
+    'replace' => 'E047',
+  ),
+  273 => 
+  array (
+    'match' => '099C E1CD',
+    'replace' => 'E048',
+  ),
+  274 => 
+  array (
+    'match' => '099D E1CD',
+    'replace' => 'E049',
+  ),
+  275 => 
+  array (
+    'match' => '099F E1CD',
+    'replace' => 'E04A',
+  ),
+  276 => 
+  array (
+    'match' => '09A0 E1CD',
+    'replace' => 'E04B',
+  ),
+  277 => 
+  array (
+    'match' => '09A1 E1CD',
+    'replace' => 'E04C',
+  ),
+  278 => 
+  array (
+    'match' => '09A2 E1CD',
+    'replace' => 'E04D',
+  ),
+  279 => 
+  array (
+    'match' => '09A3 E1CD',
+    'replace' => 'E04E',
+  ),
+  280 => 
+  array (
+    'match' => '09A4 E1CD',
+    'replace' => 'E04F',
+  ),
+  281 => 
+  array (
+    'match' => '09A5 E1CD',
+    'replace' => 'E050',
+  ),
+  282 => 
+  array (
+    'match' => '09A6 E1CD',
+    'replace' => 'E051',
+  ),
+  283 => 
+  array (
+    'match' => '09A7 E1CD',
+    'replace' => 'E052',
+  ),
+  284 => 
+  array (
+    'match' => '09A8 E1CD',
+    'replace' => 'E053',
+  ),
+  285 => 
+  array (
+    'match' => '09AA E1CD',
+    'replace' => 'E054',
+  ),
+  286 => 
+  array (
+    'match' => '09AB E1CD',
+    'replace' => 'E055',
+  ),
+  287 => 
+  array (
+    'match' => '09AC E1CD',
+    'replace' => 'E056',
+  ),
+  288 => 
+  array (
+    'match' => '09AD E1CD',
+    'replace' => 'E057',
+  ),
+  289 => 
+  array (
+    'match' => '09AE E1CD',
+    'replace' => 'E058',
+  ),
+  290 => 
+  array (
+    'match' => '09AF E1CD',
+    'replace' => 'E059',
+  ),
+  291 => 
+  array (
+    'match' => '09B0 E1CD',
+    'replace' => 'E05A',
+  ),
+  292 => 
+  array (
+    'match' => '09B2 E1CD',
+    'replace' => 'E05B',
+  ),
+  293 => 
+  array (
+    'match' => '09B6 E1CD',
+    'replace' => 'E05C',
+  ),
+  294 => 
+  array (
+    'match' => '09B7 E1CD',
+    'replace' => 'E05D',
+  ),
+  295 => 
+  array (
+    'match' => '09B8 E1CD',
+    'replace' => 'E05E',
+  ),
+  296 => 
+  array (
+    'match' => '09B9 E1CD',
+    'replace' => 'E05F',
+  ),
+  297 => 
+  array (
+    'match' => '09DC E1CD',
+    'replace' => 'E060',
+  ),
+  298 => 
+  array (
+    'match' => '09DD E1CD',
+    'replace' => 'E061',
+  ),
+  299 => 
+  array (
+    'match' => '09DF E1CD',
+    'replace' => 'E062',
+  ),
+  300 => 
+  array (
+    'match' => '00D0 09B0',
+    'replace' => 'E1CD',
+  ),
+  301 => 
+  array (
+    'match' => 'E06A E1CD',
+    'replace' => 'E07B',
+  ),
+  302 => 
+  array (
+    'match' => 'E06E E1CD',
+    'replace' => 'E07C',
+  ),
+  303 => 
+  array (
+    'match' => 'E071 E1CD',
+    'replace' => 'E07D',
+  ),
+  304 => 
+  array (
+    'match' => 'E071 09CD 09AC',
+    'replace' => 'E07E',
+  ),
+  305 => 
+  array (
+    'match' => 'E002 09CD 09A3',
+    'replace' => 'E07F',
+  ),
+  306 => 
+  array (
+    'match' => 'E002 09CD 09AE',
+    'replace' => 'E080',
+  ),
+  307 => 
+  array (
+    'match' => 'E002 E1CD',
+    'replace' => 'E081',
+  ),
+  308 => 
+  array (
+    'match' => 'E002 09CD 09AC',
+    'replace' => 'E082',
+  ),
+  309 => 
+  array (
+    'match' => 'E090 E1CD',
+    'replace' => 'E097',
+  ),
+  310 => 
+  array (
+    'match' => 'E090 09CD 09AC',
+    'replace' => 'E098',
+  ),
+  311 => 
+  array (
+    'match' => 'E09C E1CD',
+    'replace' => 'E0A7',
+  ),
+  312 => 
+  array (
+    'match' => 'E09F E1CD',
+    'replace' => 'E0A8',
+  ),
+  313 => 
+  array (
+    'match' => '0999 09CD E002',
+    'replace' => 'E0A9',
+  ),
+  314 => 
+  array (
+    'match' => 'E0AD E1CD',
+    'replace' => 'E0B1',
+  ),
+  315 => 
+  array (
+    'match' => 'E0AD 09CD 09B2',
+    'replace' => 'E0B2',
+  ),
+  316 => 
+  array (
+    'match' => 'E0AD 09CD 09AC',
+    'replace' => 'E0B3',
+  ),
+  317 => 
+  array (
+    'match' => 'E0B7 E1CD',
+    'replace' => 'E0BC',
+  ),
+  318 => 
+  array (
+    'match' => 'E0B7 09CD 09AC',
+    'replace' => 'E0BD',
+  ),
+  319 => 
+  array (
+    'match' => 'E0E0 E1CD',
+    'replace' => 'E0E8',
+  ),
+  320 => 
+  array (
+    'match' => 'E0E2 E1CD',
+    'replace' => 'E0E9',
+  ),
+  321 => 
+  array (
+    'match' => 'E0EA E1CD',
+    'replace' => 'E0EF',
+  ),
+  322 => 
+  array (
+    'match' => 'E0EA 09CD 09AC',
+    'replace' => 'E0F0',
+  ),
+  323 => 
+  array (
+    'match' => 'E0F6 E1CD',
+    'replace' => 'E0FD',
+  ),
+  324 => 
+  array (
+    'match' => 'E0F6 09CD 09AC',
+    'replace' => 'E0FE',
+  ),
+  325 => 
+  array (
+    'match' => 'E0F7 E1CD',
+    'replace' => 'E0FF',
+  ),
+  326 => 
+  array (
+    'match' => 'E0F7 09CD 09AC',
+    'replace' => 'E100',
+  ),
+  327 => 
+  array (
+    'match' => 'E0FA E1CD',
+    'replace' => 'E101',
+  ),
+  328 => 
+  array (
+    'match' => 'E10A E1CD',
+    'replace' => 'E11A',
+  ),
+  329 => 
+  array (
+    'match' => 'E10C E1CD',
+    'replace' => 'E11B',
+  ),
+  330 => 
+  array (
+    'match' => 'E10D E1CD',
+    'replace' => 'E11C',
+  ),
+  331 => 
+  array (
+    'match' => 'E10D 09CD 09AC',
+    'replace' => 'E11D',
+  ),
+  332 => 
+  array (
+    'match' => 'E10F E1CD',
+    'replace' => 'E11E',
+  ),
+  333 => 
+  array (
+    'match' => 'E10F 09CD 09AC',
+    'replace' => 'E11F',
+  ),
+  334 => 
+  array (
+    'match' => 'E110 E1CD',
+    'replace' => 'E120',
+  ),
+  335 => 
+  array (
+    'match' => 'E110 09CD 09AC',
+    'replace' => 'E121',
+  ),
+  336 => 
+  array (
+    'match' => 'E13C 09CD 09AC',
+    'replace' => 'E140',
+  ),
+  337 => 
+  array (
+    'match' => 'E149 E1CD',
+    'replace' => 'E14F',
+  ),
+  338 => 
+  array (
+    'match' => 'E14A E1CD',
+    'replace' => 'E150',
+  ),
+  339 => 
+  array (
+    'match' => 'E14B E1CD',
+    'replace' => 'E151',
+  ),
+  340 => 
+  array (
+    'match' => 'E14C E1CD',
+    'replace' => 'E152',
+  ),
+  341 => 
+  array (
+    'match' => 'E158 E1CD',
+    'replace' => 'E163',
+  ),
+  342 => 
+  array (
+    'match' => 'E15B E1CD',
+    'replace' => 'E164',
+  ),
+  343 => 
+  array (
+    'match' => 'E161 09CD 099F',
+    'replace' => 'E165',
+  ),
+  344 => 
+  array (
+    'match' => 'E171 E1CD',
+    'replace' => 'E17A',
+  ),
+  345 => 
+  array (
+    'match' => 'E172 E1CD',
+    'replace' => 'E17B',
+  ),
+  346 => 
+  array (
+    'match' => 'E172 09CD 09AC',
+    'replace' => 'E17C',
+  ),
+  347 => 
+  array (
+    'match' => 'E175 E1CD',
+    'replace' => 'E17D',
+  ),
+  348 => 
+  array (
+    'match' => 'E17E E1CD',
+    'replace' => 'E18C',
+  ),
+  349 => 
+  array (
+    'match' => 'E181 E1CD',
+    'replace' => 'E18D',
+  ),
+  350 => 
+  array (
+    'match' => 'E182 E1CD',
+    'replace' => 'E18E',
+  ),
+  351 => 
+  array (
+    'match' => 'E182 09CD 09AC',
+    'replace' => 'E18F',
+  ),
+  352 => 
+  array (
+    'match' => 'E185 E1CD',
+    'replace' => 'E190',
+  ),
+  353 => 
+  array (
+    'match' => 'E185 09CD 09B2',
+    'replace' => 'E191',
+  ),
+  354 => 
+  array (
+    'match' => '((0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD 09AF',
+    'replace' => '\\1 E067',
+  ),
+  355 => 
+  array (
+    'match' => '((E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062)) 09CD 09AF',
+    'replace' => '\\1 E067',
+  ),
+  356 => 
+  array (
+    'match' => '((E002|E003|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E079|E07A|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E086|E089|E08A|E08B|E08C|E08D|E08F|E090|E092|E095|E097|E098|E09A|E09B|E09D|E09F|E0A2|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B1|E0B2|E0B3|E0B4|E0B7|E0B8|E0B9|E0BB|E0BC|E0BD|E0BE|E0BF|E0C5|E0C6|E0C7|E0C8|E0C9|E0CB|E0CC|E0CD|E0CE|E0CF|E0D2|E0D3|E0D5|E0D6|E0D8|E0D9|E0DA|E0DB|E0E0|E0E1|E0E3|E0E5|E0E7|E0E8|E0ED|E0F1|E0F5|E0F6|E0FB|E0FC|E0FD|E0FE|E102|E104|E105|E106|E108|E109|E10A|E10B|E10C|E10F|E110|E112|E114|E115|E117|E118|E119|E11A|E11B|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E12B|E12C|E130|E131|E132|E133|E134|E135|E136|E137|E139|E13A|E13B|E13F|E144|E149|E14A|E14D|E14F|E150|E153|E154|E156|E157|E158|E159|E15A|E15C|E161|E162|E163|E165|E166|E167|E168|E16C|E16D|E174|E175|E176|E177|E178|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E185|E186|E187|E188|E18B|E18C|E18D|E190|E191|E193|E194|E195|E198|E199|E19A|0995|0999|099A|099B|099E|09A1|09A2|09A4|09AB|09AD|09B9|E002|E003|E06A|E073|E074|E077|E078|E07B|E07D|E07E|E07F|E081|E082|E084|E08A|E08C|E08D|E090|E092|E094|E097|E098|E09C|E0A0|E0A1|E0A6|E0A7|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0C1|E0C2|E0C3|E0C4|E0C6|E0C8|E0C9|E0CC|E0CF|E0D9|E0DA|E0DC|E0DD|E0DF|E0E2|E0E3|E0E9|E0EA|E0F0|E108|E109|E10C|E10D|E10E|E110|E112|E113|E11B|E120|E121|E122|E124|E125|E128|E12B|E133|E134|E135|E136|E137|E139|E13A|E13C|E140|E143|E14A|E14C|E153|E156|E157|E159|E15C|E162|E166|E167|E168|E169|E171|E174|E176|E17A|E17E|E180|E182|E183|E18C|E192|E193|E194|E195|E196|E197|09A6|E08F|E0B9|E0F4|E0F6|E0F7|E0F8|E0F9|E0FA|E0FD|E0DC|E0FF|E100|E101|E10F|E11E|E11F|E13B|E15A|099F|09A0|E06E|E06F|E07C|E0CA|E0CB|E0D0|E0D1|E0D4|E0D5|E0D7|E0E0|E0E1|E0E8|E10A|E10B|E11A|E126|E127|E132|E158|E163|E165|E172|E173|E17B|E17C|E181|E18D)) 09CD 09AF',
+    'replace' => '\\1 E067',
+  ),
+  357 => 
+  array (
+    'match' => '(200C) 09CD 09AF',
+    'replace' => '\\1 E067',
+  ),
+  358 => 
+  array (
+    'match' => 'E0A9 E1CD',
+    'replace' => 'E0AA',
+  ),
+  359 => 
+  array (
+    'match' => 'E0A9 E1CD',
+    'replace' => 'E0AB',
+  ),
+  360 => 
+  array (
+    'match' => '(09BF (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD',
+    'replace' => '\\1 09CD 09BF',
+  ),
+  361 => 
+  array (
+    'match' => '(09BF (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 007E',
+    'replace' => '\\1 007E 09BF',
+  ),
+  362 => 
+  array (
+    'match' => '(09C7 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD',
+    'replace' => '\\1 09CD 09C7',
+  ),
+  363 => 
+  array (
+    'match' => '(09C7 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 007E',
+    'replace' => '\\1 007E 09C7',
+  ),
+  364 => 
+  array (
+    'match' => '(09C8 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 09CD',
+    'replace' => '\\1 09CD 09C8',
+  ),
+  365 => 
+  array (
+    'match' => '(09C8 (0995|0996|0997|0998|0999|099A|099B|099C|099D|099F|09A0|09A1|09A2|09A3|09A4|09A5|09A6|09A7|09A8|09AA|09AB|09AC|09AD|09AE|09AF|09B0|09B2|09B6|09B7|09B8|09B9|09DC|09DD|09DF)) 007E',
+    'replace' => '\\1 007E 09C8',
+  ),
+  366 => 
+  array (
+    'match' => '09BF 0995 (09CD (09BF|09C7|09C8))',
+    'replace' => '0995 \\1',
+  ),
+  367 => 
+  array (
+    'match' => '09BF 0996 (09CD (09BF|09C7|09C8))',
+    'replace' => '0996 \\1',
+  ),
+  368 => 
+  array (
+    'match' => '09BF 0997 (09CD (09BF|09C7|09C8))',
+    'replace' => '0997 \\1',
+  ),
+  369 => 
+  array (
+    'match' => '09BF 0998 (09CD (09BF|09C7|09C8))',
+    'replace' => '0998 \\1',
+  ),
+  370 => 
+  array (
+    'match' => '09BF 0999 (09CD (09BF|09C7|09C8))',
+    'replace' => '0999 \\1',
+  ),
+  371 => 
+  array (
+    'match' => '09BF 099A (09CD (09BF|09C7|09C8))',
+    'replace' => '099A \\1',
+  ),
+  372 => 
+  array (
+    'match' => '09BF 099B (09CD (09BF|09C7|09C8))',
+    'replace' => '099B \\1',
+  ),
+  373 => 
+  array (
+    'match' => '09BF 099C (09CD (09BF|09C7|09C8))',
+    'replace' => '099C \\1',
+  ),
+  374 => 
+  array (
+    'match' => '09BF 099D (09CD (09BF|09C7|09C8))',
+    'replace' => '099D \\1',
+  ),
+  375 => 
+  array (
+    'match' => '09BF 099F (09CD (09BF|09C7|09C8))',
+    'replace' => '099F \\1',
+  ),
+  376 => 
+  array (
+    'match' => '09BF 09A0 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A0 \\1',
+  ),
+  377 => 
+  array (
+    'match' => '09BF 09A1 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A1 \\1',
+  ),
+  378 => 
+  array (
+    'match' => '09BF 09A2 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A2 \\1',
+  ),
+  379 => 
+  array (
+    'match' => '09BF 09A3 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A3 \\1',
+  ),
+  380 => 
+  array (
+    'match' => '09BF 09A4 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A4 \\1',
+  ),
+  381 => 
+  array (
+    'match' => '09BF 09A5 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A5 \\1',
+  ),
+  382 => 
+  array (
+    'match' => '09BF 09A6 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A6 \\1',
+  ),
+  383 => 
+  array (
+    'match' => '09BF 09A7 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A7 \\1',
+  ),
+  384 => 
+  array (
+    'match' => '09BF 09A8 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A8 \\1',
+  ),
+  385 => 
+  array (
+    'match' => '09BF 09AA (09CD (09BF|09C7|09C8))',
+    'replace' => '09AA \\1',
+  ),
+  386 => 
+  array (
+    'match' => '09BF 09AB (09CD (09BF|09C7|09C8))',
+    'replace' => '09AB \\1',
+  ),
+  387 => 
+  array (
+    'match' => '09BF 09AC (09CD (09BF|09C7|09C8))',
+    'replace' => '09AC \\1',
+  ),
+  388 => 
+  array (
+    'match' => '09BF 09AD (09CD (09BF|09C7|09C8))',
+    'replace' => '09AD \\1',
+  ),
+  389 => 
+  array (
+    'match' => '09BF 09AE (09CD (09BF|09C7|09C8))',
+    'replace' => '09AE \\1',
+  ),
+  390 => 
+  array (
+    'match' => '09BF 09AF (09CD (09BF|09C7|09C8))',
+    'replace' => '09AF \\1',
+  ),
+  391 => 
+  array (
+    'match' => '09BF 09B0 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B0 \\1',
+  ),
+  392 => 
+  array (
+    'match' => '09BF 09B2 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B2 \\1',
+  ),
+  393 => 
+  array (
+    'match' => '09BF 09B6 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B6 \\1',
+  ),
+  394 => 
+  array (
+    'match' => '09BF 09B7 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B7 \\1',
+  ),
+  395 => 
+  array (
+    'match' => '09BF 09B8 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B8 \\1',
+  ),
+  396 => 
+  array (
+    'match' => '09BF 09B9 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B9 \\1',
+  ),
+  397 => 
+  array (
+    'match' => '09BF 09DC (09CD (09BF|09C7|09C8))',
+    'replace' => '09DC \\1',
+  ),
+  398 => 
+  array (
+    'match' => '09BF 09DD (09CD (09BF|09C7|09C8))',
+    'replace' => '09DD \\1',
+  ),
+  399 => 
+  array (
+    'match' => '09BF 09DF (09CD (09BF|09C7|09C8))',
+    'replace' => '09DF \\1',
+  ),
+  400 => 
+  array (
+    'match' => '09C7 0995 (09CD (09BF|09C7|09C8))',
+    'replace' => '0995 \\1',
+  ),
+  401 => 
+  array (
+    'match' => '09C7 0996 (09CD (09BF|09C7|09C8))',
+    'replace' => '0996 \\1',
+  ),
+  402 => 
+  array (
+    'match' => '09C7 0997 (09CD (09BF|09C7|09C8))',
+    'replace' => '0997 \\1',
+  ),
+  403 => 
+  array (
+    'match' => '09C7 0998 (09CD (09BF|09C7|09C8))',
+    'replace' => '0998 \\1',
+  ),
+  404 => 
+  array (
+    'match' => '09C7 0999 (09CD (09BF|09C7|09C8))',
+    'replace' => '0999 \\1',
+  ),
+  405 => 
+  array (
+    'match' => '09C7 099A (09CD (09BF|09C7|09C8))',
+    'replace' => '099A \\1',
+  ),
+  406 => 
+  array (
+    'match' => '09C7 099B (09CD (09BF|09C7|09C8))',
+    'replace' => '099B \\1',
+  ),
+  407 => 
+  array (
+    'match' => '09C7 099C (09CD (09BF|09C7|09C8))',
+    'replace' => '099C \\1',
+  ),
+  408 => 
+  array (
+    'match' => '09C7 099D (09CD (09BF|09C7|09C8))',
+    'replace' => '099D \\1',
+  ),
+  409 => 
+  array (
+    'match' => '09C7 099F (09CD (09BF|09C7|09C8))',
+    'replace' => '099F \\1',
+  ),
+  410 => 
+  array (
+    'match' => '09C7 09A0 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A0 \\1',
+  ),
+  411 => 
+  array (
+    'match' => '09C7 09A1 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A1 \\1',
+  ),
+  412 => 
+  array (
+    'match' => '09C7 09A2 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A2 \\1',
+  ),
+  413 => 
+  array (
+    'match' => '09C7 09A3 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A3 \\1',
+  ),
+  414 => 
+  array (
+    'match' => '09C7 09A4 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A4 \\1',
+  ),
+  415 => 
+  array (
+    'match' => '09C7 09A5 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A5 \\1',
+  ),
+  416 => 
+  array (
+    'match' => '09C7 09A6 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A6 \\1',
+  ),
+  417 => 
+  array (
+    'match' => '09C7 09A7 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A7 \\1',
+  ),
+  418 => 
+  array (
+    'match' => '09C7 09A8 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A8 \\1',
+  ),
+  419 => 
+  array (
+    'match' => '09C7 09AA (09CD (09BF|09C7|09C8))',
+    'replace' => '09AA \\1',
+  ),
+  420 => 
+  array (
+    'match' => '09C7 09AB (09CD (09BF|09C7|09C8))',
+    'replace' => '09AB \\1',
+  ),
+  421 => 
+  array (
+    'match' => '09C7 09AC (09CD (09BF|09C7|09C8))',
+    'replace' => '09AC \\1',
+  ),
+  422 => 
+  array (
+    'match' => '09C7 09AD (09CD (09BF|09C7|09C8))',
+    'replace' => '09AD \\1',
+  ),
+  423 => 
+  array (
+    'match' => '09C7 09AE (09CD (09BF|09C7|09C8))',
+    'replace' => '09AE \\1',
+  ),
+  424 => 
+  array (
+    'match' => '09C7 09AF (09CD (09BF|09C7|09C8))',
+    'replace' => '09AF \\1',
+  ),
+  425 => 
+  array (
+    'match' => '09C7 09B0 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B0 \\1',
+  ),
+  426 => 
+  array (
+    'match' => '09C7 09B2 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B2 \\1',
+  ),
+  427 => 
+  array (
+    'match' => '09C7 09B6 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B6 \\1',
+  ),
+  428 => 
+  array (
+    'match' => '09C7 09B7 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B7 \\1',
+  ),
+  429 => 
+  array (
+    'match' => '09C7 09B8 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B8 \\1',
+  ),
+  430 => 
+  array (
+    'match' => '09C7 09B9 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B9 \\1',
+  ),
+  431 => 
+  array (
+    'match' => '09C7 09DC (09CD (09BF|09C7|09C8))',
+    'replace' => '09DC \\1',
+  ),
+  432 => 
+  array (
+    'match' => '09C7 09DD (09CD (09BF|09C7|09C8))',
+    'replace' => '09DD \\1',
+  ),
+  433 => 
+  array (
+    'match' => '09C7 09DF (09CD (09BF|09C7|09C8))',
+    'replace' => '09DF \\1',
+  ),
+  434 => 
+  array (
+    'match' => '09C8 0995 (09CD (09BF|09C7|09C8))',
+    'replace' => '0995 \\1',
+  ),
+  435 => 
+  array (
+    'match' => '09C8 0996 (09CD (09BF|09C7|09C8))',
+    'replace' => '0996 \\1',
+  ),
+  436 => 
+  array (
+    'match' => '09C8 0997 (09CD (09BF|09C7|09C8))',
+    'replace' => '0997 \\1',
+  ),
+  437 => 
+  array (
+    'match' => '09C8 0998 (09CD (09BF|09C7|09C8))',
+    'replace' => '0998 \\1',
+  ),
+  438 => 
+  array (
+    'match' => '09C8 0999 (09CD (09BF|09C7|09C8))',
+    'replace' => '0999 \\1',
+  ),
+  439 => 
+  array (
+    'match' => '09C8 099A (09CD (09BF|09C7|09C8))',
+    'replace' => '099A \\1',
+  ),
+  440 => 
+  array (
+    'match' => '09C8 099B (09CD (09BF|09C7|09C8))',
+    'replace' => '099B \\1',
+  ),
+  441 => 
+  array (
+    'match' => '09C8 099C (09CD (09BF|09C7|09C8))',
+    'replace' => '099C \\1',
+  ),
+  442 => 
+  array (
+    'match' => '09C8 099D (09CD (09BF|09C7|09C8))',
+    'replace' => '099D \\1',
+  ),
+  443 => 
+  array (
+    'match' => '09C8 099F (09CD (09BF|09C7|09C8))',
+    'replace' => '099F \\1',
+  ),
+  444 => 
+  array (
+    'match' => '09C8 09A0 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A0 \\1',
+  ),
+  445 => 
+  array (
+    'match' => '09C8 09A1 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A1 \\1',
+  ),
+  446 => 
+  array (
+    'match' => '09C8 09A2 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A2 \\1',
+  ),
+  447 => 
+  array (
+    'match' => '09C8 09A3 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A3 \\1',
+  ),
+  448 => 
+  array (
+    'match' => '09C8 09A4 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A4 \\1',
+  ),
+  449 => 
+  array (
+    'match' => '09C8 09A5 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A5 \\1',
+  ),
+  450 => 
+  array (
+    'match' => '09C8 09A6 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A6 \\1',
+  ),
+  451 => 
+  array (
+    'match' => '09C8 09A7 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A7 \\1',
+  ),
+  452 => 
+  array (
+    'match' => '09C8 09A8 (09CD (09BF|09C7|09C8))',
+    'replace' => '09A8 \\1',
+  ),
+  453 => 
+  array (
+    'match' => '09C8 09AA (09CD (09BF|09C7|09C8))',
+    'replace' => '09AA \\1',
+  ),
+  454 => 
+  array (
+    'match' => '09C8 09AB (09CD (09BF|09C7|09C8))',
+    'replace' => '09AB \\1',
+  ),
+  455 => 
+  array (
+    'match' => '09C8 09AC (09CD (09BF|09C7|09C8))',
+    'replace' => '09AC \\1',
+  ),
+  456 => 
+  array (
+    'match' => '09C8 09AD (09CD (09BF|09C7|09C8))',
+    'replace' => '09AD \\1',
+  ),
+  457 => 
+  array (
+    'match' => '09C8 09AE (09CD (09BF|09C7|09C8))',
+    'replace' => '09AE \\1',
+  ),
+  458 => 
+  array (
+    'match' => '09C8 09AF (09CD (09BF|09C7|09C8))',
+    'replace' => '09AF \\1',
+  ),
+  459 => 
+  array (
+    'match' => '09C8 09B0 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B0 \\1',
+  ),
+  460 => 
+  array (
+    'match' => '09C8 09B2 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B2 \\1',
+  ),
+  461 => 
+  array (
+    'match' => '09C8 09B6 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B6 \\1',
+  ),
+  462 => 
+  array (
+    'match' => '09C8 09B7 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B7 \\1',
+  ),
+  463 => 
+  array (
+    'match' => '09C8 09B8 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B8 \\1',
+  ),
+  464 => 
+  array (
+    'match' => '09C8 09B9 (09CD (09BF|09C7|09C8))',
+    'replace' => '09B9 \\1',
+  ),
+  465 => 
+  array (
+    'match' => '09C8 09DC (09CD (09BF|09C7|09C8))',
+    'replace' => '09DC \\1',
+  ),
+  466 => 
+  array (
+    'match' => '09C8 09DD (09CD (09BF|09C7|09C8))',
+    'replace' => '09DD \\1',
+  ),
+  467 => 
+  array (
+    'match' => '09C8 09DF (09CD (09BF|09C7|09C8))',
+    'replace' => '09DF \\1',
+  ),
+  468 => 
+  array (
+    'match' => '09BF 0995 (007E (09BF|09C7|09C8))',
+    'replace' => '0995 \\1',
+  ),
+  469 => 
+  array (
+    'match' => '09BF 0996 (007E (09BF|09C7|09C8))',
+    'replace' => '0996 \\1',
+  ),
+  470 => 
+  array (
+    'match' => '09BF 0997 (007E (09BF|09C7|09C8))',
+    'replace' => '0997 \\1',
+  ),
+  471 => 
+  array (
+    'match' => '09BF 0998 (007E (09BF|09C7|09C8))',
+    'replace' => '0998 \\1',
+  ),
+  472 => 
+  array (
+    'match' => '09BF 0999 (007E (09BF|09C7|09C8))',
+    'replace' => '0999 \\1',
+  ),
+  473 => 
+  array (
+    'match' => '09BF 099A (007E (09BF|09C7|09C8))',
+    'replace' => '099A \\1',
+  ),
+  474 => 
+  array (
+    'match' => '09BF 099B (007E (09BF|09C7|09C8))',
+    'replace' => '099B \\1',
+  ),
+  475 => 
+  array (
+    'match' => '09BF 099C (007E (09BF|09C7|09C8))',
+    'replace' => '099C \\1',
+  ),
+  476 => 
+  array (
+    'match' => '09BF 099D (007E (09BF|09C7|09C8))',
+    'replace' => '099D \\1',
+  ),
+  477 => 
+  array (
+    'match' => '09BF 099F (007E (09BF|09C7|09C8))',
+    'replace' => '099F \\1',
+  ),
+  478 => 
+  array (
+    'match' => '09BF 09A0 (007E (09BF|09C7|09C8))',
+    'replace' => '09A0 \\1',
+  ),
+  479 => 
+  array (
+    'match' => '09BF 09A1 (007E (09BF|09C7|09C8))',
+    'replace' => '09A1 \\1',
+  ),
+  480 => 
+  array (
+    'match' => '09BF 09A2 (007E (09BF|09C7|09C8))',
+    'replace' => '09A2 \\1',
+  ),
+  481 => 
+  array (
+    'match' => '09BF 09A3 (007E (09BF|09C7|09C8))',
+    'replace' => '09A3 \\1',
+  ),
+  482 => 
+  array (
+    'match' => '09BF 09A4 (007E (09BF|09C7|09C8))',
+    'replace' => '09A4 \\1',
+  ),
+  483 => 
+  array (
+    'match' => '09BF 09A5 (007E (09BF|09C7|09C8))',
+    'replace' => '09A5 \\1',
+  ),
+  484 => 
+  array (
+    'match' => '09BF 09A6 (007E (09BF|09C7|09C8))',
+    'replace' => '09A6 \\1',
+  ),
+  485 => 
+  array (
+    'match' => '09BF 09A7 (007E (09BF|09C7|09C8))',
+    'replace' => '09A7 \\1',
+  ),
+  486 => 
+  array (
+    'match' => '09BF 09A8 (007E (09BF|09C7|09C8))',
+    'replace' => '09A8 \\1',
+  ),
+  487 => 
+  array (
+    'match' => '09BF 09AA (007E (09BF|09C7|09C8))',
+    'replace' => '09AA \\1',
+  ),
+  488 => 
+  array (
+    'match' => '09BF 09AB (007E (09BF|09C7|09C8))',
+    'replace' => '09AB \\1',
+  ),
+  489 => 
+  array (
+    'match' => '09BF 09AC (007E (09BF|09C7|09C8))',
+    'replace' => '09AC \\1',
+  ),
+  490 => 
+  array (
+    'match' => '09BF 09AD (007E (09BF|09C7|09C8))',
+    'replace' => '09AD \\1',
+  ),
+  491 => 
+  array (
+    'match' => '09BF 09AE (007E (09BF|09C7|09C8))',
+    'replace' => '09AE \\1',
+  ),
+  492 => 
+  array (
+    'match' => '09BF 09AF (007E (09BF|09C7|09C8))',
+    'replace' => '09AF \\1',
+  ),
+  493 => 
+  array (
+    'match' => '09BF 09B0 (007E (09BF|09C7|09C8))',
+    'replace' => '09B0 \\1',
+  ),
+  494 => 
+  array (
+    'match' => '09BF 09B2 (007E (09BF|09C7|09C8))',
+    'replace' => '09B2 \\1',
+  ),
+  495 => 
+  array (
+    'match' => '09BF 09B6 (007E (09BF|09C7|09C8))',
+    'replace' => '09B6 \\1',
+  ),
+  496 => 
+  array (
+    'match' => '09BF 09B7 (007E (09BF|09C7|09C8))',
+    'replace' => '09B7 \\1',
+  ),
+  497 => 
+  array (
+    'match' => '09BF 09B8 (007E (09BF|09C7|09C8))',
+    'replace' => '09B8 \\1',
+  ),
+  498 => 
+  array (
+    'match' => '09BF 09B9 (007E (09BF|09C7|09C8))',
+    'replace' => '09B9 \\1',
+  ),
+  499 => 
+  array (
+    'match' => '09BF 09DC (007E (09BF|09C7|09C8))',
+    'replace' => '09DC \\1',
+  ),
+  500 => 
+  array (
+    'match' => '09BF 09DD (007E (09BF|09C7|09C8))',
+    'replace' => '09DD \\1',
+  ),
+  501 => 
+  array (
+    'match' => '09BF 09DF (007E (09BF|09C7|09C8))',
+    'replace' => '09DF \\1',
+  ),
+  502 => 
+  array (
+    'match' => '09C7 0995 (007E (09BF|09C7|09C8))',
+    'replace' => '0995 \\1',
+  ),
+  503 => 
+  array (
+    'match' => '09C7 0996 (007E (09BF|09C7|09C8))',
+    'replace' => '0996 \\1',
+  ),
+  504 => 
+  array (
+    'match' => '09C7 0997 (007E (09BF|09C7|09C8))',
+    'replace' => '0997 \\1',
+  ),
+  505 => 
+  array (
+    'match' => '09C7 0998 (007E (09BF|09C7|09C8))',
+    'replace' => '0998 \\1',
+  ),
+  506 => 
+  array (
+    'match' => '09C7 0999 (007E (09BF|09C7|09C8))',
+    'replace' => '0999 \\1',
+  ),
+  507 => 
+  array (
+    'match' => '09C7 099A (007E (09BF|09C7|09C8))',
+    'replace' => '099A \\1',
+  ),
+  508 => 
+  array (
+    'match' => '09C7 099B (007E (09BF|09C7|09C8))',
+    'replace' => '099B \\1',
+  ),
+  509 => 
+  array (
+    'match' => '09C7 099C (007E (09BF|09C7|09C8))',
+    'replace' => '099C \\1',
+  ),
+  510 => 
+  array (
+    'match' => '09C7 099D (007E (09BF|09C7|09C8))',
+    'replace' => '099D \\1',
+  ),
+  511 => 
+  array (
+    'match' => '09C7 099F (007E (09BF|09C7|09C8))',
+    'replace' => '099F \\1',
+  ),
+  512 => 
+  array (
+    'match' => '09C7 09A0 (007E (09BF|09C7|09C8))',
+    'replace' => '09A0 \\1',
+  ),
+  513 => 
+  array (
+    'match' => '09C7 09A1 (007E (09BF|09C7|09C8))',
+    'replace' => '09A1 \\1',
+  ),
+  514 => 
+  array (
+    'match' => '09C7 09A2 (007E (09BF|09C7|09C8))',
+    'replace' => '09A2 \\1',
+  ),
+  515 => 
+  array (
+    'match' => '09C7 09A3 (007E (09BF|09C7|09C8))',
+    'replace' => '09A3 \\1',
+  ),
+  516 => 
+  array (
+    'match' => '09C7 09A4 (007E (09BF|09C7|09C8))',
+    'replace' => '09A4 \\1',
+  ),
+  517 => 
+  array (
+    'match' => '09C7 09A5 (007E (09BF|09C7|09C8))',
+    'replace' => '09A5 \\1',
+  ),
+  518 => 
+  array (
+    'match' => '09C7 09A6 (007E (09BF|09C7|09C8))',
+    'replace' => '09A6 \\1',
+  ),
+  519 => 
+  array (
+    'match' => '09C7 09A7 (007E (09BF|09C7|09C8))',
+    'replace' => '09A7 \\1',
+  ),
+  520 => 
+  array (
+    'match' => '09C7 09A8 (007E (09BF|09C7|09C8))',
+    'replace' => '09A8 \\1',
+  ),
+  521 => 
+  array (
+    'match' => '09C7 09AA (007E (09BF|09C7|09C8))',
+    'replace' => '09AA \\1',
+  ),
+  522 => 
+  array (
+    'match' => '09C7 09AB (007E (09BF|09C7|09C8))',
+    'replace' => '09AB \\1',
+  ),
+  523 => 
+  array (
+    'match' => '09C7 09AC (007E (09BF|09C7|09C8))',
+    'replace' => '09AC \\1',
+  ),
+  524 => 
+  array (
+    'match' => '09C7 09AD (007E (09BF|09C7|09C8))',
+    'replace' => '09AD \\1',
+  ),
+  525 => 
+  array (
+    'match' => '09C7 09AE (007E (09BF|09C7|09C8))',
+    'replace' => '09AE \\1',
+  ),
+  526 => 
+  array (
+    'match' => '09C7 09AF (007E (09BF|09C7|09C8))',
+    'replace' => '09AF \\1',
+  ),
+  527 => 
+  array (
+    'match' => '09C7 09B0 (007E (09BF|09C7|09C8))',
+    'replace' => '09B0 \\1',
+  ),
+  528 => 
+  array (
+    'match' => '09C7 09B2 (007E (09BF|09C7|09C8))',
+    'replace' => '09B2 \\1',
+  ),
+  529 => 
+  array (
+    'match' => '09C7 09B6 (007E (09BF|09C7|09C8))',
+    'replace' => '09B6 \\1',
+  ),
+  530 => 
+  array (
+    'match' => '09C7 09B7 (007E (09BF|09C7|09C8))',
+    'replace' => '09B7 \\1',
+  ),
+  531 => 
+  array (
+    'match' => '09C7 09B8 (007E (09BF|09C7|09C8))',
+    'replace' => '09B8 \\1',
+  ),
+  532 => 
+  array (
+    'match' => '09C7 09B9 (007E (09BF|09C7|09C8))',
+    'replace' => '09B9 \\1',
+  ),
+  533 => 
+  array (
+    'match' => '09C7 09DC (007E (09BF|09C7|09C8))',
+    'replace' => '09DC \\1',
+  ),
+  534 => 
+  array (
+    'match' => '09C7 09DD (007E (09BF|09C7|09C8))',
+    'replace' => '09DD \\1',
+  ),
+  535 => 
+  array (
+    'match' => '09C7 09DF (007E (09BF|09C7|09C8))',
+    'replace' => '09DF \\1',
+  ),
+  536 => 
+  array (
+    'match' => '09C8 0995 (007E (09BF|09C7|09C8))',
+    'replace' => '0995 \\1',
+  ),
+  537 => 
+  array (
+    'match' => '09C8 0996 (007E (09BF|09C7|09C8))',
+    'replace' => '0996 \\1',
+  ),
+  538 => 
+  array (
+    'match' => '09C8 0997 (007E (09BF|09C7|09C8))',
+    'replace' => '0997 \\1',
+  ),
+  539 => 
+  array (
+    'match' => '09C8 0998 (007E (09BF|09C7|09C8))',
+    'replace' => '0998 \\1',
+  ),
+  540 => 
+  array (
+    'match' => '09C8 0999 (007E (09BF|09C7|09C8))',
+    'replace' => '0999 \\1',
+  ),
+  541 => 
+  array (
+    'match' => '09C8 099A (007E (09BF|09C7|09C8))',
+    'replace' => '099A \\1',
+  ),
+  542 => 
+  array (
+    'match' => '09C8 099B (007E (09BF|09C7|09C8))',
+    'replace' => '099B \\1',
+  ),
+  543 => 
+  array (
+    'match' => '09C8 099C (007E (09BF|09C7|09C8))',
+    'replace' => '099C \\1',
+  ),
+  544 => 
+  array (
+    'match' => '09C8 099D (007E (09BF|09C7|09C8))',
+    'replace' => '099D \\1',
+  ),
+  545 => 
+  array (
+    'match' => '09C8 099F (007E (09BF|09C7|09C8))',
+    'replace' => '099F \\1',
+  ),
+  546 => 
+  array (
+    'match' => '09C8 09A0 (007E (09BF|09C7|09C8))',
+    'replace' => '09A0 \\1',
+  ),
+  547 => 
+  array (
+    'match' => '09C8 09A1 (007E (09BF|09C7|09C8))',
+    'replace' => '09A1 \\1',
+  ),
+  548 => 
+  array (
+    'match' => '09C8 09A2 (007E (09BF|09C7|09C8))',
+    'replace' => '09A2 \\1',
+  ),
+  549 => 
+  array (
+    'match' => '09C8 09A3 (007E (09BF|09C7|09C8))',
+    'replace' => '09A3 \\1',
+  ),
+  550 => 
+  array (
+    'match' => '09C8 09A4 (007E (09BF|09C7|09C8))',
+    'replace' => '09A4 \\1',
+  ),
+  551 => 
+  array (
+    'match' => '09C8 09A5 (007E (09BF|09C7|09C8))',
+    'replace' => '09A5 \\1',
+  ),
+  552 => 
+  array (
+    'match' => '09C8 09A6 (007E (09BF|09C7|09C8))',
+    'replace' => '09A6 \\1',
+  ),
+  553 => 
+  array (
+    'match' => '09C8 09A7 (007E (09BF|09C7|09C8))',
+    'replace' => '09A7 \\1',
+  ),
+  554 => 
+  array (
+    'match' => '09C8 09A8 (007E (09BF|09C7|09C8))',
+    'replace' => '09A8 \\1',
+  ),
+  555 => 
+  array (
+    'match' => '09C8 09AA (007E (09BF|09C7|09C8))',
+    'replace' => '09AA \\1',
+  ),
+  556 => 
+  array (
+    'match' => '09C8 09AB (007E (09BF|09C7|09C8))',
+    'replace' => '09AB \\1',
+  ),
+  557 => 
+  array (
+    'match' => '09C8 09AC (007E (09BF|09C7|09C8))',
+    'replace' => '09AC \\1',
+  ),
+  558 => 
+  array (
+    'match' => '09C8 09AD (007E (09BF|09C7|09C8))',
+    'replace' => '09AD \\1',
+  ),
+  559 => 
+  array (
+    'match' => '09C8 09AE (007E (09BF|09C7|09C8))',
+    'replace' => '09AE \\1',
+  ),
+  560 => 
+  array (
+    'match' => '09C8 09AF (007E (09BF|09C7|09C8))',
+    'replace' => '09AF \\1',
+  ),
+  561 => 
+  array (
+    'match' => '09C8 09B0 (007E (09BF|09C7|09C8))',
+    'replace' => '09B0 \\1',
+  ),
+  562 => 
+  array (
+    'match' => '09C8 09B2 (007E (09BF|09C7|09C8))',
+    'replace' => '09B2 \\1',
+  ),
+  563 => 
+  array (
+    'match' => '09C8 09B6 (007E (09BF|09C7|09C8))',
+    'replace' => '09B6 \\1',
+  ),
+  564 => 
+  array (
+    'match' => '09C8 09B7 (007E (09BF|09C7|09C8))',
+    'replace' => '09B7 \\1',
+  ),
+  565 => 
+  array (
+    'match' => '09C8 09B8 (007E (09BF|09C7|09C8))',
+    'replace' => '09B8 \\1',
+  ),
+  566 => 
+  array (
+    'match' => '09C8 09B9 (007E (09BF|09C7|09C8))',
+    'replace' => '09B9 \\1',
+  ),
+  567 => 
+  array (
+    'match' => '09C8 09DC (007E (09BF|09C7|09C8))',
+    'replace' => '09DC \\1',
+  ),
+  568 => 
+  array (
+    'match' => '09C8 09DD (007E (09BF|09C7|09C8))',
+    'replace' => '09DD \\1',
+  ),
+  569 => 
+  array (
+    'match' => '09C8 09DF (007E (09BF|09C7|09C8))',
+    'replace' => '09DF \\1',
+  ),
+  570 => 
+  array (
+    'match' => '09A4 09CD',
+    'replace' => 'E066',
+  ),
+  571 => 
+  array (
+    'match' => '09A4 007E',
+    'replace' => 'E066',
+  ),
+  572 => 
+  array (
+    'match' => 'E066 200D',
+    'replace' => 'E066',
+  ),
+  573 => 
+  array (
+    'match' => '09BF 200D',
+    'replace' => '09BF',
+  ),
+  574 => 
+  array (
+    'match' => '09C7 200D',
+    'replace' => '09C7',
+  ),
+  575 => 
+  array (
+    'match' => '09C8 200D',
+    'replace' => '09C8',
+  ),
+  576 => 
+  array (
+    'match' => '007E',
+    'replace' => '09CD',
+  ),
+  577 => 
+  array (
+    'match' => '200C',
+    'replace' => '09CD',
+  ),
+  578 => 
+  array (
+    'match' => '00D0',
+    'replace' => '09CD',
+  ),
+  579 => 
+  array (
+    'match' => '0997 09C1',
+    'replace' => 'E00A',
+  ),
+  580 => 
+  array (
+    'match' => '09DC 09C1',
+    'replace' => 'E012',
+  ),
+  581 => 
+  array (
+    'match' => '09DC 09C2',
+    'replace' => 'E013',
+  ),
+  582 => 
+  array (
+    'match' => '09DC 09C3',
+    'replace' => 'E014',
+  ),
+  583 => 
+  array (
+    'match' => '09DC 09C4',
+    'replace' => 'E015',
+  ),
+  584 => 
+  array (
+    'match' => '09DD 09C1',
+    'replace' => 'E016',
+  ),
+  585 => 
+  array (
+    'match' => '09DD 09C2',
+    'replace' => 'E017',
+  ),
+  586 => 
+  array (
+    'match' => '09DD 09C3',
+    'replace' => 'E018',
+  ),
+  587 => 
+  array (
+    'match' => '09DD 09C4',
+    'replace' => 'E019',
+  ),
+  588 => 
+  array (
+    'match' => '09B6 09C1',
+    'replace' => 'E00F',
+  ),
+  589 => 
+  array (
+    'match' => '09B9 09C1',
+    'replace' => 'E010',
+  ),
+  590 => 
+  array (
+    'match' => '09B9 09C3',
+    'replace' => 'E011',
+  ),
+  591 => 
+  array (
+    'match' => 'E084 09C1',
+    'replace' => 'E19B',
+  ),
+  592 => 
+  array (
+    'match' => 'E0F4 09C1',
+    'replace' => 'E19C',
+  ),
+  593 => 
+  array (
+    'match' => 'E10D 09C1',
+    'replace' => 'E19D',
+  ),
+  594 => 
+  array (
+    'match' => 'E128 09C1',
+    'replace' => 'E19E',
+  ),
+  595 => 
+  array (
+    'match' => 'E133 09C1',
+    'replace' => 'E19F',
+  ),
+  596 => 
+  array (
+    'match' => 'E155 09C1',
+    'replace' => 'E1A0',
+  ),
+  597 => 
+  array (
+    'match' => 'E169 09C1',
+    'replace' => 'E1A1',
+  ),
+  598 => 
+  array (
+    'match' => 'E182 09C1',
+    'replace' => 'E1A2',
+  ),
+  599 => 
+  array (
+    'match' => '09BF ((E002|E003|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E079|E07A|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E086|E089|E08A|E08B|E08C|E08D|E08F|E090|E092|E095|E097|E098|E09A|E09B|E09D|E09F|E0A2|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B1|E0B2|E0B3|E0B4|E0B7|E0B8|E0B9|E0BB|E0BC|E0BD|E0BE|E0BF|E0C5|E0C6|E0C7|E0C8|E0C9|E0CB|E0CC|E0CD|E0CE|E0CF|E0D2|E0D3|E0D5|E0D6|E0D8|E0D9|E0DA|E0DB|E0E0|E0E1|E0E3|E0E5|E0E7|E0E8|E0ED|E0F1|E0F5|E0F6|E0FB|E0FC|E0FD|E0FE|E102|E104|E105|E106|E108|E109|E10A|E10B|E10C|E10F|E110|E112|E114|E115|E117|E118|E119|E11A|E11B|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E12B|E12C|E130|E131|E132|E133|E134|E135|E136|E137|E139|E13A|E13B|E13F|E144|E149|E14A|E14D|E14F|E150|E153|E154|E156|E157|E158|E159|E15A|E15C|E161|E162|E163|E165|E166|E167|E168|E16C|E16D|E174|E175|E176|E177|E178|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E185|E186|E187|E188|E18B|E18C|E18D|E190|E191|E193|E194|E195|E198|E199|E19A))',
+    'replace' => 'E01C \\1',
+  ),
+  600 => 
+  array (
+    'match' => '((0995|0999|099A|099B|099F|09A0|09A1|09A2|09A4|09AB|09AD|09B9)) 09BE',
+    'replace' => '\\1 E01A',
+  ),
+  601 => 
+  array (
+    'match' => '((0995|0999|099A|099B|099F|09A0|09A1|09A2|09A4|09AB|09AD|09B9)) 09D7',
+    'replace' => '\\1 E03F',
+  ),
+  602 => 
+  array (
+    'match' => '((09A6)) 09BE',
+    'replace' => '\\1 E01B',
+  ),
+  603 => 
+  array (
+    'match' => '((09A6)) 09D7',
+    'replace' => '\\1 E040',
+  ),
+  604 => 
+  array (
+    'match' => '09C0 0981',
+    'replace' => 'E1B4',
+  ),
+  605 => 
+  array (
+    'match' => '09D7 0981',
+    'replace' => 'E1B5',
+  ),
+  606 => 
+  array (
+    'match' => 'E01D 0981',
+    'replace' => 'E1B6',
+  ),
+  607 => 
+  array (
+    'match' => 'E01E 0981',
+    'replace' => 'E1B7',
+  ),
+  608 => 
+  array (
+    'match' => 'E01F 0981',
+    'replace' => 'E1B8',
+  ),
+  609 => 
+  array (
+    'match' => 'E03F 0981',
+    'replace' => 'E1B9',
+  ),
+  610 => 
+  array (
+    'match' => 'E040 0981',
+    'replace' => 'E1BA',
+  ),
+  611 => 
+  array (
+    'match' => '09C0 E069',
+    'replace' => 'E1BB',
+  ),
+  612 => 
+  array (
+    'match' => '09D7 E069',
+    'replace' => 'E1BC',
+  ),
+  613 => 
+  array (
+    'match' => 'E01D E069',
+    'replace' => 'E1BD',
+  ),
+  614 => 
+  array (
+    'match' => 'E01E E069',
+    'replace' => 'E1BE',
+  ),
+  615 => 
+  array (
+    'match' => 'E01F E069',
+    'replace' => 'E1BF',
+  ),
+  616 => 
+  array (
+    'match' => 'E03F E069',
+    'replace' => 'E1C0',
+  ),
+  617 => 
+  array (
+    'match' => 'E040 E069',
+    'replace' => 'E1C1',
+  ),
+  618 => 
+  array (
+    'match' => '0987 0981',
+    'replace' => 'E1C2',
+  ),
+  619 => 
+  array (
+    'match' => '0988 0981',
+    'replace' => 'E1C3',
+  ),
+  620 => 
+  array (
+    'match' => '098A 0981',
+    'replace' => 'E1C4',
+  ),
+  621 => 
+  array (
+    'match' => '0990 0981',
+    'replace' => 'E1C5',
+  ),
+  622 => 
+  array (
+    'match' => '0994 0981',
+    'replace' => 'E1C6',
+  ),
+  623 => 
+  array (
+    'match' => '099F 0981',
+    'replace' => 'E1C7',
+  ),
+  624 => 
+  array (
+    'match' => '09A0 0981',
+    'replace' => 'E1C8',
+  ),
+  625 => 
+  array (
+    'match' => '099F E068',
+    'replace' => 'E1C9',
+  ),
+  626 => 
+  array (
+    'match' => '09A0 E068',
+    'replace' => 'E1CA',
+  ),
+  627 => 
+  array (
+    'match' => '099F E069',
+    'replace' => 'E1CB',
+  ),
+  628 => 
+  array (
+    'match' => '09A0 E069',
+    'replace' => 'E1CC',
+  ),
+  629 => 
+  array (
+    'match' => '((0995|0999|099A|099B|099E|09A1|09A2|09A4|09AB|09AD|09B9|E002|E003|E06A|E073|E074|E077|E078|E07B|E07D|E07E|E07F|E081|E082|E084|E08A|E08C|E08D|E090|E092|E094|E097|E098|E09C|E0A0|E0A1|E0A6|E0A7|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0C1|E0C2|E0C3|E0C4|E0C6|E0C8|E0C9|E0CC|E0CF|E0D9|E0DA|E0DC|E0DD|E0DF|E0E2|E0E3|E0E9|E0EA|E0F0|E108|E109|E10C|E10D|E10E|E110|E112|E113|E11B|E120|E121|E122|E124|E125|E128|E12B|E133|E134|E135|E136|E137|E139|E13A|E13C|E140|E143|E14A|E14C|E153|E156|E157|E159|E15C|E162|E166|E167|E168|E169|E171|E174|E176|E17A|E17E|E180|E182|E183|E18C|E192|E193|E194|E195|E196|E197)) 09C0',
+    'replace' => '\\1 E01D',
+  ),
+  630 => 
+  array (
+    'match' => '((09A6|E08F|E0B9|E0F4|E0F6|E0F7|E0F8|E0F9|E0FA|E0FD|E0DC|E0FF|E100|E101|E10F|E11E|E11F|E13B|E15A)) 09C0',
+    'replace' => '\\1 E01E',
+  ),
+  631 => 
+  array (
+    'match' => '((099F|09A0|E06E|E06F|E07C|E0CA|E0CB|E0D0|E0D1|E0D4|E0D5|E0D7|E0E0|E0E1|E0E8|E10A|E10B|E11A|E126|E127|E132|E158|E163|E165|E172|E173|E17B|E17C|E181|E18D)) 09C0',
+    'replace' => '\\1 E01F',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_gu_1_001.volt.php
new file mode 100644 (file)
index 0000000..a3e6c03
--- /dev/null
@@ -0,0 +1,3314 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0A95 0ACD 0AB7',
+    'replace' => 'E002',
+  ),
+  1 => 
+  array (
+    'match' => '0A9C 0ACD 0A9E',
+    'replace' => 'E003',
+  ),
+  2 => 
+  array (
+    'match' => '0ACD 200C',
+    'replace' => 'E163',
+  ),
+  3 => 
+  array (
+    'match' => '0A95 0ABC',
+    'replace' => 'E004',
+  ),
+  4 => 
+  array (
+    'match' => '0A96 0ABC',
+    'replace' => 'E005',
+  ),
+  5 => 
+  array (
+    'match' => '0A97 0ABC',
+    'replace' => 'E006',
+  ),
+  6 => 
+  array (
+    'match' => '0A98 0ABC',
+    'replace' => 'E007',
+  ),
+  7 => 
+  array (
+    'match' => '0A99 0ABC',
+    'replace' => 'E008',
+  ),
+  8 => 
+  array (
+    'match' => '0A9A 0ABC',
+    'replace' => 'E009',
+  ),
+  9 => 
+  array (
+    'match' => '0A9B 0ABC',
+    'replace' => 'E00A',
+  ),
+  10 => 
+  array (
+    'match' => '0A9C 0ABC',
+    'replace' => 'E00B',
+  ),
+  11 => 
+  array (
+    'match' => '0A9D 0ABC',
+    'replace' => 'E00C',
+  ),
+  12 => 
+  array (
+    'match' => '0A9E 0ABC',
+    'replace' => 'E00D',
+  ),
+  13 => 
+  array (
+    'match' => '0A9F 0ABC',
+    'replace' => 'E00E',
+  ),
+  14 => 
+  array (
+    'match' => '0AA0 0ABC',
+    'replace' => 'E00F',
+  ),
+  15 => 
+  array (
+    'match' => '0AA1 0ABC',
+    'replace' => 'E010',
+  ),
+  16 => 
+  array (
+    'match' => '0AA2 0ABC',
+    'replace' => 'E011',
+  ),
+  17 => 
+  array (
+    'match' => '0AA3 0ABC',
+    'replace' => 'E012',
+  ),
+  18 => 
+  array (
+    'match' => '0AA4 0ABC',
+    'replace' => 'E013',
+  ),
+  19 => 
+  array (
+    'match' => '0AA5 0ABC',
+    'replace' => 'E014',
+  ),
+  20 => 
+  array (
+    'match' => '0AA6 0ABC',
+    'replace' => 'E015',
+  ),
+  21 => 
+  array (
+    'match' => '0AA7 0ABC',
+    'replace' => 'E016',
+  ),
+  22 => 
+  array (
+    'match' => '0AA8 0ABC',
+    'replace' => 'E017',
+  ),
+  23 => 
+  array (
+    'match' => '0AAA 0ABC',
+    'replace' => 'E018',
+  ),
+  24 => 
+  array (
+    'match' => '0AAB 0ABC',
+    'replace' => 'E019',
+  ),
+  25 => 
+  array (
+    'match' => '0AAC 0ABC',
+    'replace' => 'E01A',
+  ),
+  26 => 
+  array (
+    'match' => '0AAD 0ABC',
+    'replace' => 'E01B',
+  ),
+  27 => 
+  array (
+    'match' => '0AAE 0ABC',
+    'replace' => 'E01C',
+  ),
+  28 => 
+  array (
+    'match' => '0AAF 0ABC',
+    'replace' => 'E01D',
+  ),
+  29 => 
+  array (
+    'match' => '0AB0 0ABC',
+    'replace' => 'E01E',
+  ),
+  30 => 
+  array (
+    'match' => '0AB2 0ABC',
+    'replace' => 'E01F',
+  ),
+  31 => 
+  array (
+    'match' => '0AB3 0ABC',
+    'replace' => 'E020',
+  ),
+  32 => 
+  array (
+    'match' => '0AB5 0ABC',
+    'replace' => 'E021',
+  ),
+  33 => 
+  array (
+    'match' => '0AB6 0ABC',
+    'replace' => 'E022',
+  ),
+  34 => 
+  array (
+    'match' => '0AB7 0ABC',
+    'replace' => 'E023',
+  ),
+  35 => 
+  array (
+    'match' => '0AB8 0ABC',
+    'replace' => 'E024',
+  ),
+  36 => 
+  array (
+    'match' => '0AB9 0ABC',
+    'replace' => 'E025',
+  ),
+  37 => 
+  array (
+    'match' => 'E002 0ABC',
+    'replace' => 'E026',
+  ),
+  38 => 
+  array (
+    'match' => 'E003 0ABC',
+    'replace' => 'E027',
+  ),
+  39 => 
+  array (
+    'match' => '((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E)) 0ACD 0AB0',
+    'replace' => '\\1 E05D',
+  ),
+  40 => 
+  array (
+    'match' => '(25CC) 0ACD 0AB0',
+    'replace' => '\\1 E05D',
+  ),
+  41 => 
+  array (
+    'match' => '(200D) 0ACD 0AB0',
+    'replace' => '\\1 E05D',
+  ),
+  42 => 
+  array (
+    'match' => '(0020) 0ACD 0AB0',
+    'replace' => '\\1 E05D',
+  ),
+  43 => 
+  array (
+    'match' => '((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E)) 0AB0 0ACD',
+    'replace' => '\\1 E032',
+  ),
+  44 => 
+  array (
+    'match' => '((0ABE|0AC0|0AC1|0AC2|0AC3|0AC4|0AC5|0AC7|0AC8|0AC9|0ACB|0ACC)) 0AB0 0ACD',
+    'replace' => '\\1 E032',
+  ),
+  45 => 
+  array (
+    'match' => '(E05D) 0AB0 0ACD',
+    'replace' => '\\1 E032',
+  ),
+  46 => 
+  array (
+    'match' => '(25CC) 0AB0 0ACD',
+    'replace' => '\\1 E032',
+  ),
+  47 => 
+  array (
+    'match' => '0A95 E05D',
+    'replace' => 'E05E',
+  ),
+  48 => 
+  array (
+    'match' => '0A96 E05D',
+    'replace' => 'E05F',
+  ),
+  49 => 
+  array (
+    'match' => '0A97 E05D',
+    'replace' => 'E060',
+  ),
+  50 => 
+  array (
+    'match' => '0A98 E05D',
+    'replace' => 'E061',
+  ),
+  51 => 
+  array (
+    'match' => '0A99 E05D',
+    'replace' => 'E062',
+  ),
+  52 => 
+  array (
+    'match' => '0A9A E05D',
+    'replace' => 'E063',
+  ),
+  53 => 
+  array (
+    'match' => '0A9B E05D',
+    'replace' => 'E064',
+  ),
+  54 => 
+  array (
+    'match' => '0A9C E05D',
+    'replace' => 'E065',
+  ),
+  55 => 
+  array (
+    'match' => '0A9D E05D',
+    'replace' => 'E066',
+  ),
+  56 => 
+  array (
+    'match' => '0A9E E05D',
+    'replace' => 'E067',
+  ),
+  57 => 
+  array (
+    'match' => '0A9F E05D',
+    'replace' => 'E068',
+  ),
+  58 => 
+  array (
+    'match' => '0AA0 E05D',
+    'replace' => 'E069',
+  ),
+  59 => 
+  array (
+    'match' => '0AA1 E05D',
+    'replace' => 'E06A',
+  ),
+  60 => 
+  array (
+    'match' => '0AA2 E05D',
+    'replace' => 'E06B',
+  ),
+  61 => 
+  array (
+    'match' => '0AA3 E05D',
+    'replace' => 'E06C',
+  ),
+  62 => 
+  array (
+    'match' => '0AA4 E05D',
+    'replace' => 'E06D',
+  ),
+  63 => 
+  array (
+    'match' => '0AA5 E05D',
+    'replace' => 'E06E',
+  ),
+  64 => 
+  array (
+    'match' => '0AA6 E05D',
+    'replace' => 'E06F',
+  ),
+  65 => 
+  array (
+    'match' => '0AA7 E05D',
+    'replace' => 'E070',
+  ),
+  66 => 
+  array (
+    'match' => '0AA8 E05D',
+    'replace' => 'E071',
+  ),
+  67 => 
+  array (
+    'match' => '0AAA E05D',
+    'replace' => 'E072',
+  ),
+  68 => 
+  array (
+    'match' => '0AAB E05D',
+    'replace' => 'E073',
+  ),
+  69 => 
+  array (
+    'match' => '0AAC E05D',
+    'replace' => 'E074',
+  ),
+  70 => 
+  array (
+    'match' => '0AAD E05D',
+    'replace' => 'E075',
+  ),
+  71 => 
+  array (
+    'match' => '0AAE E05D',
+    'replace' => 'E076',
+  ),
+  72 => 
+  array (
+    'match' => '0AAF E05D',
+    'replace' => 'E077',
+  ),
+  73 => 
+  array (
+    'match' => '0AB0 E05D',
+    'replace' => 'E078',
+  ),
+  74 => 
+  array (
+    'match' => '0AB2 E05D',
+    'replace' => 'E079',
+  ),
+  75 => 
+  array (
+    'match' => '0AB3 E05D',
+    'replace' => 'E07A',
+  ),
+  76 => 
+  array (
+    'match' => '0AB5 E05D',
+    'replace' => 'E07B',
+  ),
+  77 => 
+  array (
+    'match' => '0AB6 E05D',
+    'replace' => 'E07C',
+  ),
+  78 => 
+  array (
+    'match' => '0AB7 E05D',
+    'replace' => 'E07D',
+  ),
+  79 => 
+  array (
+    'match' => '0AB8 E05D',
+    'replace' => 'E07E',
+  ),
+  80 => 
+  array (
+    'match' => '0AB9 E05D',
+    'replace' => 'E07F',
+  ),
+  81 => 
+  array (
+    'match' => 'E002 E05D',
+    'replace' => 'E080',
+  ),
+  82 => 
+  array (
+    'match' => 'E003 E05D',
+    'replace' => 'E081',
+  ),
+  83 => 
+  array (
+    'match' => 'E004 E05D',
+    'replace' => 'E082',
+  ),
+  84 => 
+  array (
+    'match' => 'E005 E05D',
+    'replace' => 'E083',
+  ),
+  85 => 
+  array (
+    'match' => 'E006 E05D',
+    'replace' => 'E084',
+  ),
+  86 => 
+  array (
+    'match' => 'E007 E05D',
+    'replace' => 'E085',
+  ),
+  87 => 
+  array (
+    'match' => 'E008 E05D',
+    'replace' => 'E086',
+  ),
+  88 => 
+  array (
+    'match' => 'E009 E05D',
+    'replace' => 'E087',
+  ),
+  89 => 
+  array (
+    'match' => 'E00A E05D',
+    'replace' => 'E088',
+  ),
+  90 => 
+  array (
+    'match' => 'E00B E05D',
+    'replace' => 'E089',
+  ),
+  91 => 
+  array (
+    'match' => 'E00C E05D',
+    'replace' => 'E08A',
+  ),
+  92 => 
+  array (
+    'match' => 'E00D E05D',
+    'replace' => 'E08B',
+  ),
+  93 => 
+  array (
+    'match' => 'E00E E05D',
+    'replace' => 'E08C',
+  ),
+  94 => 
+  array (
+    'match' => 'E00F E05D',
+    'replace' => 'E08D',
+  ),
+  95 => 
+  array (
+    'match' => 'E010 E05D',
+    'replace' => 'E08E',
+  ),
+  96 => 
+  array (
+    'match' => 'E011 E05D',
+    'replace' => 'E08F',
+  ),
+  97 => 
+  array (
+    'match' => 'E012 E05D',
+    'replace' => 'E090',
+  ),
+  98 => 
+  array (
+    'match' => 'E013 E05D',
+    'replace' => 'E091',
+  ),
+  99 => 
+  array (
+    'match' => 'E014 E05D',
+    'replace' => 'E092',
+  ),
+  100 => 
+  array (
+    'match' => 'E015 E05D',
+    'replace' => 'E093',
+  ),
+  101 => 
+  array (
+    'match' => 'E016 E05D',
+    'replace' => 'E094',
+  ),
+  102 => 
+  array (
+    'match' => 'E017 E05D',
+    'replace' => 'E095',
+  ),
+  103 => 
+  array (
+    'match' => 'E018 E05D',
+    'replace' => 'E096',
+  ),
+  104 => 
+  array (
+    'match' => 'E019 E05D',
+    'replace' => 'E097',
+  ),
+  105 => 
+  array (
+    'match' => 'E01A E05D',
+    'replace' => 'E098',
+  ),
+  106 => 
+  array (
+    'match' => 'E01B E05D',
+    'replace' => 'E099',
+  ),
+  107 => 
+  array (
+    'match' => 'E01C E05D',
+    'replace' => 'E09A',
+  ),
+  108 => 
+  array (
+    'match' => 'E01D E05D',
+    'replace' => 'E09B',
+  ),
+  109 => 
+  array (
+    'match' => 'E01E E05D',
+    'replace' => 'E09C',
+  ),
+  110 => 
+  array (
+    'match' => 'E01F E05D',
+    'replace' => 'E09D',
+  ),
+  111 => 
+  array (
+    'match' => 'E020 E05D',
+    'replace' => 'E09E',
+  ),
+  112 => 
+  array (
+    'match' => 'E021 E05D',
+    'replace' => 'E09F',
+  ),
+  113 => 
+  array (
+    'match' => 'E022 E05D',
+    'replace' => 'E0A0',
+  ),
+  114 => 
+  array (
+    'match' => 'E023 E05D',
+    'replace' => 'E0A1',
+  ),
+  115 => 
+  array (
+    'match' => 'E024 E05D',
+    'replace' => 'E0A2',
+  ),
+  116 => 
+  array (
+    'match' => 'E025 E05D',
+    'replace' => 'E0A3',
+  ),
+  117 => 
+  array (
+    'match' => 'E026 E05D',
+    'replace' => 'E0A4',
+  ),
+  118 => 
+  array (
+    'match' => 'E027 E05D',
+    'replace' => 'E0A5',
+  ),
+  119 => 
+  array (
+    'match' => '0A95 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0A6 \\1',
+  ),
+  120 => 
+  array (
+    'match' => '0A96 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0A7 \\1',
+  ),
+  121 => 
+  array (
+    'match' => '0A97 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0A8 \\1',
+  ),
+  122 => 
+  array (
+    'match' => '0A98 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0A9 \\1',
+  ),
+  123 => 
+  array (
+    'match' => '0A99 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0AA \\1',
+  ),
+  124 => 
+  array (
+    'match' => '0A9A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0AB \\1',
+  ),
+  125 => 
+  array (
+    'match' => '0A9B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0AC \\1',
+  ),
+  126 => 
+  array (
+    'match' => '0A9C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0AD \\1',
+  ),
+  127 => 
+  array (
+    'match' => '0A9D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0AE \\1',
+  ),
+  128 => 
+  array (
+    'match' => '0A9E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0AF \\1',
+  ),
+  129 => 
+  array (
+    'match' => '0A9F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B0 \\1',
+  ),
+  130 => 
+  array (
+    'match' => '0AA0 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B1 \\1',
+  ),
+  131 => 
+  array (
+    'match' => '0AA1 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B2 \\1',
+  ),
+  132 => 
+  array (
+    'match' => '0AA2 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B3 \\1',
+  ),
+  133 => 
+  array (
+    'match' => '0AA3 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B4 \\1',
+  ),
+  134 => 
+  array (
+    'match' => '0AA4 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B5 \\1',
+  ),
+  135 => 
+  array (
+    'match' => '0AA5 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B6 \\1',
+  ),
+  136 => 
+  array (
+    'match' => '0AA6 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B7 \\1',
+  ),
+  137 => 
+  array (
+    'match' => '0AA7 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B8 \\1',
+  ),
+  138 => 
+  array (
+    'match' => '0AA8 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0B9 \\1',
+  ),
+  139 => 
+  array (
+    'match' => '0AAA 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0BA \\1',
+  ),
+  140 => 
+  array (
+    'match' => '0AAB 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0BB \\1',
+  ),
+  141 => 
+  array (
+    'match' => '0AAC 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0BC \\1',
+  ),
+  142 => 
+  array (
+    'match' => '0AAD 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0BD \\1',
+  ),
+  143 => 
+  array (
+    'match' => '0AAE 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0BE \\1',
+  ),
+  144 => 
+  array (
+    'match' => '0AAF 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0BF \\1',
+  ),
+  145 => 
+  array (
+    'match' => '0AB0 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C0 \\1',
+  ),
+  146 => 
+  array (
+    'match' => '0AB2 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C1 \\1',
+  ),
+  147 => 
+  array (
+    'match' => '0AB3 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C2 \\1',
+  ),
+  148 => 
+  array (
+    'match' => '0AB5 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C3 \\1',
+  ),
+  149 => 
+  array (
+    'match' => '0AB6 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C4 \\1',
+  ),
+  150 => 
+  array (
+    'match' => '0AB7 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C5 \\1',
+  ),
+  151 => 
+  array (
+    'match' => '0AB8 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C6 \\1',
+  ),
+  152 => 
+  array (
+    'match' => '0AB9 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C7 \\1',
+  ),
+  153 => 
+  array (
+    'match' => 'E002 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C8 \\1',
+  ),
+  154 => 
+  array (
+    'match' => 'E003 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0C9 \\1',
+  ),
+  155 => 
+  array (
+    'match' => 'E004 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0CA \\1',
+  ),
+  156 => 
+  array (
+    'match' => 'E005 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0CB \\1',
+  ),
+  157 => 
+  array (
+    'match' => 'E006 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0CC \\1',
+  ),
+  158 => 
+  array (
+    'match' => 'E007 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0CD \\1',
+  ),
+  159 => 
+  array (
+    'match' => 'E008 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0CE \\1',
+  ),
+  160 => 
+  array (
+    'match' => 'E009 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0CF \\1',
+  ),
+  161 => 
+  array (
+    'match' => 'E00A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D0 \\1',
+  ),
+  162 => 
+  array (
+    'match' => 'E00B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D1 \\1',
+  ),
+  163 => 
+  array (
+    'match' => 'E00C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D2 \\1',
+  ),
+  164 => 
+  array (
+    'match' => 'E00D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D3 \\1',
+  ),
+  165 => 
+  array (
+    'match' => 'E00E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D4 \\1',
+  ),
+  166 => 
+  array (
+    'match' => 'E00F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D5 \\1',
+  ),
+  167 => 
+  array (
+    'match' => 'E010 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D6 \\1',
+  ),
+  168 => 
+  array (
+    'match' => 'E011 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D7 \\1',
+  ),
+  169 => 
+  array (
+    'match' => 'E012 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D8 \\1',
+  ),
+  170 => 
+  array (
+    'match' => 'E013 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0D9 \\1',
+  ),
+  171 => 
+  array (
+    'match' => 'E014 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0DA \\1',
+  ),
+  172 => 
+  array (
+    'match' => 'E015 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0DB \\1',
+  ),
+  173 => 
+  array (
+    'match' => 'E016 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0DC \\1',
+  ),
+  174 => 
+  array (
+    'match' => 'E017 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0DD \\1',
+  ),
+  175 => 
+  array (
+    'match' => 'E018 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0DE \\1',
+  ),
+  176 => 
+  array (
+    'match' => 'E019 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0DF \\1',
+  ),
+  177 => 
+  array (
+    'match' => 'E01A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E0 \\1',
+  ),
+  178 => 
+  array (
+    'match' => 'E01B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E1 \\1',
+  ),
+  179 => 
+  array (
+    'match' => 'E01C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E2 \\1',
+  ),
+  180 => 
+  array (
+    'match' => 'E01D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E3 \\1',
+  ),
+  181 => 
+  array (
+    'match' => 'E01E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E4 \\1',
+  ),
+  182 => 
+  array (
+    'match' => 'E01F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E5 \\1',
+  ),
+  183 => 
+  array (
+    'match' => 'E020 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E6 \\1',
+  ),
+  184 => 
+  array (
+    'match' => 'E021 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E7 \\1',
+  ),
+  185 => 
+  array (
+    'match' => 'E022 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E8 \\1',
+  ),
+  186 => 
+  array (
+    'match' => 'E023 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0E9 \\1',
+  ),
+  187 => 
+  array (
+    'match' => 'E024 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0EA \\1',
+  ),
+  188 => 
+  array (
+    'match' => 'E025 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0EB \\1',
+  ),
+  189 => 
+  array (
+    'match' => 'E026 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0EC \\1',
+  ),
+  190 => 
+  array (
+    'match' => 'E027 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0ED \\1',
+  ),
+  191 => 
+  array (
+    'match' => 'E05E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0EE \\1',
+  ),
+  192 => 
+  array (
+    'match' => 'E05F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0EF \\1',
+  ),
+  193 => 
+  array (
+    'match' => 'E060 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F0 \\1',
+  ),
+  194 => 
+  array (
+    'match' => 'E061 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F1 \\1',
+  ),
+  195 => 
+  array (
+    'match' => 'E062 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F2 \\1',
+  ),
+  196 => 
+  array (
+    'match' => 'E063 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F3 \\1',
+  ),
+  197 => 
+  array (
+    'match' => 'E064 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F4 \\1',
+  ),
+  198 => 
+  array (
+    'match' => 'E065 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F5 \\1',
+  ),
+  199 => 
+  array (
+    'match' => 'E066 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F6 \\1',
+  ),
+  200 => 
+  array (
+    'match' => 'E067 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F7 \\1',
+  ),
+  201 => 
+  array (
+    'match' => 'E068 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F8 \\1',
+  ),
+  202 => 
+  array (
+    'match' => 'E069 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0F9 \\1',
+  ),
+  203 => 
+  array (
+    'match' => 'E06A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0FA \\1',
+  ),
+  204 => 
+  array (
+    'match' => 'E06B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0FB \\1',
+  ),
+  205 => 
+  array (
+    'match' => 'E06C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0FC \\1',
+  ),
+  206 => 
+  array (
+    'match' => 'E06D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0FD \\1',
+  ),
+  207 => 
+  array (
+    'match' => 'E06E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0FE \\1',
+  ),
+  208 => 
+  array (
+    'match' => 'E06F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E0FF \\1',
+  ),
+  209 => 
+  array (
+    'match' => 'E070 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E100 \\1',
+  ),
+  210 => 
+  array (
+    'match' => 'E071 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E101 \\1',
+  ),
+  211 => 
+  array (
+    'match' => 'E072 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E102 \\1',
+  ),
+  212 => 
+  array (
+    'match' => 'E073 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E103 \\1',
+  ),
+  213 => 
+  array (
+    'match' => 'E074 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E104 \\1',
+  ),
+  214 => 
+  array (
+    'match' => 'E075 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E105 \\1',
+  ),
+  215 => 
+  array (
+    'match' => 'E076 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E106 \\1',
+  ),
+  216 => 
+  array (
+    'match' => 'E077 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E107 \\1',
+  ),
+  217 => 
+  array (
+    'match' => 'E078 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E108 \\1',
+  ),
+  218 => 
+  array (
+    'match' => 'E079 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E109 \\1',
+  ),
+  219 => 
+  array (
+    'match' => 'E07A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E10A \\1',
+  ),
+  220 => 
+  array (
+    'match' => 'E07B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E10B \\1',
+  ),
+  221 => 
+  array (
+    'match' => 'E07C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E10C \\1',
+  ),
+  222 => 
+  array (
+    'match' => 'E07D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E10D \\1',
+  ),
+  223 => 
+  array (
+    'match' => 'E07E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E10E \\1',
+  ),
+  224 => 
+  array (
+    'match' => 'E07F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E10F \\1',
+  ),
+  225 => 
+  array (
+    'match' => 'E080 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E110 \\1',
+  ),
+  226 => 
+  array (
+    'match' => 'E081 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E111 \\1',
+  ),
+  227 => 
+  array (
+    'match' => 'E082 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E112 \\1',
+  ),
+  228 => 
+  array (
+    'match' => 'E083 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E113 \\1',
+  ),
+  229 => 
+  array (
+    'match' => 'E084 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E114 \\1',
+  ),
+  230 => 
+  array (
+    'match' => 'E085 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E115 \\1',
+  ),
+  231 => 
+  array (
+    'match' => 'E086 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E116 \\1',
+  ),
+  232 => 
+  array (
+    'match' => 'E087 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E117 \\1',
+  ),
+  233 => 
+  array (
+    'match' => 'E088 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E118 \\1',
+  ),
+  234 => 
+  array (
+    'match' => 'E089 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E119 \\1',
+  ),
+  235 => 
+  array (
+    'match' => 'E08A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E11A \\1',
+  ),
+  236 => 
+  array (
+    'match' => 'E08B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E11B \\1',
+  ),
+  237 => 
+  array (
+    'match' => 'E08C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E11C \\1',
+  ),
+  238 => 
+  array (
+    'match' => 'E08D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E11D \\1',
+  ),
+  239 => 
+  array (
+    'match' => 'E08E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E11E \\1',
+  ),
+  240 => 
+  array (
+    'match' => 'E08F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E11F \\1',
+  ),
+  241 => 
+  array (
+    'match' => 'E090 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E120 \\1',
+  ),
+  242 => 
+  array (
+    'match' => 'E091 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E121 \\1',
+  ),
+  243 => 
+  array (
+    'match' => 'E092 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E122 \\1',
+  ),
+  244 => 
+  array (
+    'match' => 'E093 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E123 \\1',
+  ),
+  245 => 
+  array (
+    'match' => 'E094 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E124 \\1',
+  ),
+  246 => 
+  array (
+    'match' => 'E095 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E125 \\1',
+  ),
+  247 => 
+  array (
+    'match' => 'E096 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E126 \\1',
+  ),
+  248 => 
+  array (
+    'match' => 'E097 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E127 \\1',
+  ),
+  249 => 
+  array (
+    'match' => 'E098 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E128 \\1',
+  ),
+  250 => 
+  array (
+    'match' => 'E099 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E129 \\1',
+  ),
+  251 => 
+  array (
+    'match' => 'E09A 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E12A \\1',
+  ),
+  252 => 
+  array (
+    'match' => 'E09B 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E12B \\1',
+  ),
+  253 => 
+  array (
+    'match' => 'E09C 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E12C \\1',
+  ),
+  254 => 
+  array (
+    'match' => 'E09D 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E12D \\1',
+  ),
+  255 => 
+  array (
+    'match' => 'E09E 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E12E \\1',
+  ),
+  256 => 
+  array (
+    'match' => 'E09F 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E12F \\1',
+  ),
+  257 => 
+  array (
+    'match' => 'E0A0 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E130 \\1',
+  ),
+  258 => 
+  array (
+    'match' => 'E0A1 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E131 \\1',
+  ),
+  259 => 
+  array (
+    'match' => 'E0A2 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E132 \\1',
+  ),
+  260 => 
+  array (
+    'match' => 'E0A3 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E133 \\1',
+  ),
+  261 => 
+  array (
+    'match' => 'E0A4 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E134 \\1',
+  ),
+  262 => 
+  array (
+    'match' => 'E0A5 0ACD ((0A95|0A96|0A97|0A98|0A99|0A9A|0A9B|0A9C|0A9D|0A9E|0A9F|0AA0|0AA1|0AA2|0AA3|0AA4|0AA5|0AA6|0AA7|0AA8|0AAA|0AAB|0AAC|0AAD|0AAE|0AAF|0AB0|0AB2|0AB3|0AB5|0AB6|0AB7|0AB8|0AB9|E002|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E136|E137|E138|E139|E13A|E13B|E13C|E13D|E13E|E13F|E140|E141|E142|E143|E144|E145|E146|E147|E148|E149|E14A|E14B|E14C|E14D|E14E|E14F|E150|E151|E152|E153|E154|E155|E156|E157|E158|E159|E15A|E15B|E15C|E15D|E15E))',
+    'replace' => 'E135 \\1',
+  ),
+  263 => 
+  array (
+    'match' => '0A95 0ACD (200D)',
+    'replace' => 'E0A6 \\1',
+  ),
+  264 => 
+  array (
+    'match' => '0A96 0ACD (200D)',
+    'replace' => 'E0A7 \\1',
+  ),
+  265 => 
+  array (
+    'match' => '0A97 0ACD (200D)',
+    'replace' => 'E0A8 \\1',
+  ),
+  266 => 
+  array (
+    'match' => '0A98 0ACD (200D)',
+    'replace' => 'E0A9 \\1',
+  ),
+  267 => 
+  array (
+    'match' => '0A99 0ACD (200D)',
+    'replace' => 'E0AA \\1',
+  ),
+  268 => 
+  array (
+    'match' => '0A9A 0ACD (200D)',
+    'replace' => 'E0AB \\1',
+  ),
+  269 => 
+  array (
+    'match' => '0A9B 0ACD (200D)',
+    'replace' => 'E0AC \\1',
+  ),
+  270 => 
+  array (
+    'match' => '0A9C 0ACD (200D)',
+    'replace' => 'E0AD \\1',
+  ),
+  271 => 
+  array (
+    'match' => '0A9D 0ACD (200D)',
+    'replace' => 'E0AE \\1',
+  ),
+  272 => 
+  array (
+    'match' => '0A9E 0ACD (200D)',
+    'replace' => 'E0AF \\1',
+  ),
+  273 => 
+  array (
+    'match' => '0A9F 0ACD (200D)',
+    'replace' => 'E0B0 \\1',
+  ),
+  274 => 
+  array (
+    'match' => '0AA0 0ACD (200D)',
+    'replace' => 'E0B1 \\1',
+  ),
+  275 => 
+  array (
+    'match' => '0AA1 0ACD (200D)',
+    'replace' => 'E0B2 \\1',
+  ),
+  276 => 
+  array (
+    'match' => '0AA2 0ACD (200D)',
+    'replace' => 'E0B3 \\1',
+  ),
+  277 => 
+  array (
+    'match' => '0AA3 0ACD (200D)',
+    'replace' => 'E0B4 \\1',
+  ),
+  278 => 
+  array (
+    'match' => '0AA4 0ACD (200D)',
+    'replace' => 'E0B5 \\1',
+  ),
+  279 => 
+  array (
+    'match' => '0AA5 0ACD (200D)',
+    'replace' => 'E0B6 \\1',
+  ),
+  280 => 
+  array (
+    'match' => '0AA6 0ACD (200D)',
+    'replace' => 'E0B7 \\1',
+  ),
+  281 => 
+  array (
+    'match' => '0AA7 0ACD (200D)',
+    'replace' => 'E0B8 \\1',
+  ),
+  282 => 
+  array (
+    'match' => '0AA8 0ACD (200D)',
+    'replace' => 'E0B9 \\1',
+  ),
+  283 => 
+  array (
+    'match' => '0AAA 0ACD (200D)',
+    'replace' => 'E0BA \\1',
+  ),
+  284 => 
+  array (
+    'match' => '0AAB 0ACD (200D)',
+    'replace' => 'E0BB \\1',
+  ),
+  285 => 
+  array (
+    'match' => '0AAC 0ACD (200D)',
+    'replace' => 'E0BC \\1',
+  ),
+  286 => 
+  array (
+    'match' => '0AAD 0ACD (200D)',
+    'replace' => 'E0BD \\1',
+  ),
+  287 => 
+  array (
+    'match' => '0AAE 0ACD (200D)',
+    'replace' => 'E0BE \\1',
+  ),
+  288 => 
+  array (
+    'match' => '0AAF 0ACD (200D)',
+    'replace' => 'E0BF \\1',
+  ),
+  289 => 
+  array (
+    'match' => '0AB0 0ACD (200D)',
+    'replace' => 'E0C0 \\1',
+  ),
+  290 => 
+  array (
+    'match' => '0AB2 0ACD (200D)',
+    'replace' => 'E0C1 \\1',
+  ),
+  291 => 
+  array (
+    'match' => '0AB3 0ACD (200D)',
+    'replace' => 'E0C2 \\1',
+  ),
+  292 => 
+  array (
+    'match' => '0AB5 0ACD (200D)',
+    'replace' => 'E0C3 \\1',
+  ),
+  293 => 
+  array (
+    'match' => '0AB6 0ACD (200D)',
+    'replace' => 'E0C4 \\1',
+  ),
+  294 => 
+  array (
+    'match' => '0AB7 0ACD (200D)',
+    'replace' => 'E0C5 \\1',
+  ),
+  295 => 
+  array (
+    'match' => '0AB8 0ACD (200D)',
+    'replace' => 'E0C6 \\1',
+  ),
+  296 => 
+  array (
+    'match' => '0AB9 0ACD (200D)',
+    'replace' => 'E0C7 \\1',
+  ),
+  297 => 
+  array (
+    'match' => 'E002 0ACD (200D)',
+    'replace' => 'E0C8 \\1',
+  ),
+  298 => 
+  array (
+    'match' => 'E003 0ACD (200D)',
+    'replace' => 'E0C9 \\1',
+  ),
+  299 => 
+  array (
+    'match' => 'E004 0ACD (200D)',
+    'replace' => 'E0CA \\1',
+  ),
+  300 => 
+  array (
+    'match' => 'E005 0ACD (200D)',
+    'replace' => 'E0CB \\1',
+  ),
+  301 => 
+  array (
+    'match' => 'E006 0ACD (200D)',
+    'replace' => 'E0CC \\1',
+  ),
+  302 => 
+  array (
+    'match' => 'E007 0ACD (200D)',
+    'replace' => 'E0CD \\1',
+  ),
+  303 => 
+  array (
+    'match' => 'E008 0ACD (200D)',
+    'replace' => 'E0CE \\1',
+  ),
+  304 => 
+  array (
+    'match' => 'E009 0ACD (200D)',
+    'replace' => 'E0CF \\1',
+  ),
+  305 => 
+  array (
+    'match' => 'E00A 0ACD (200D)',
+    'replace' => 'E0D0 \\1',
+  ),
+  306 => 
+  array (
+    'match' => 'E00B 0ACD (200D)',
+    'replace' => 'E0D1 \\1',
+  ),
+  307 => 
+  array (
+    'match' => 'E00C 0ACD (200D)',
+    'replace' => 'E0D2 \\1',
+  ),
+  308 => 
+  array (
+    'match' => 'E00D 0ACD (200D)',
+    'replace' => 'E0D3 \\1',
+  ),
+  309 => 
+  array (
+    'match' => 'E00E 0ACD (200D)',
+    'replace' => 'E0D4 \\1',
+  ),
+  310 => 
+  array (
+    'match' => 'E00F 0ACD (200D)',
+    'replace' => 'E0D5 \\1',
+  ),
+  311 => 
+  array (
+    'match' => 'E010 0ACD (200D)',
+    'replace' => 'E0D6 \\1',
+  ),
+  312 => 
+  array (
+    'match' => 'E011 0ACD (200D)',
+    'replace' => 'E0D7 \\1',
+  ),
+  313 => 
+  array (
+    'match' => 'E012 0ACD (200D)',
+    'replace' => 'E0D8 \\1',
+  ),
+  314 => 
+  array (
+    'match' => 'E013 0ACD (200D)',
+    'replace' => 'E0D9 \\1',
+  ),
+  315 => 
+  array (
+    'match' => 'E014 0ACD (200D)',
+    'replace' => 'E0DA \\1',
+  ),
+  316 => 
+  array (
+    'match' => 'E015 0ACD (200D)',
+    'replace' => 'E0DB \\1',
+  ),
+  317 => 
+  array (
+    'match' => 'E016 0ACD (200D)',
+    'replace' => 'E0DC \\1',
+  ),
+  318 => 
+  array (
+    'match' => 'E017 0ACD (200D)',
+    'replace' => 'E0DD \\1',
+  ),
+  319 => 
+  array (
+    'match' => 'E018 0ACD (200D)',
+    'replace' => 'E0DE \\1',
+  ),
+  320 => 
+  array (
+    'match' => 'E019 0ACD (200D)',
+    'replace' => 'E0DF \\1',
+  ),
+  321 => 
+  array (
+    'match' => 'E01A 0ACD (200D)',
+    'replace' => 'E0E0 \\1',
+  ),
+  322 => 
+  array (
+    'match' => 'E01B 0ACD (200D)',
+    'replace' => 'E0E1 \\1',
+  ),
+  323 => 
+  array (
+    'match' => 'E01C 0ACD (200D)',
+    'replace' => 'E0E2 \\1',
+  ),
+  324 => 
+  array (
+    'match' => 'E01D 0ACD (200D)',
+    'replace' => 'E0E3 \\1',
+  ),
+  325 => 
+  array (
+    'match' => 'E01E 0ACD (200D)',
+    'replace' => 'E0E4 \\1',
+  ),
+  326 => 
+  array (
+    'match' => 'E01F 0ACD (200D)',
+    'replace' => 'E0E5 \\1',
+  ),
+  327 => 
+  array (
+    'match' => 'E020 0ACD (200D)',
+    'replace' => 'E0E6 \\1',
+  ),
+  328 => 
+  array (
+    'match' => 'E021 0ACD (200D)',
+    'replace' => 'E0E7 \\1',
+  ),
+  329 => 
+  array (
+    'match' => 'E022 0ACD (200D)',
+    'replace' => 'E0E8 \\1',
+  ),
+  330 => 
+  array (
+    'match' => 'E023 0ACD (200D)',
+    'replace' => 'E0E9 \\1',
+  ),
+  331 => 
+  array (
+    'match' => 'E024 0ACD (200D)',
+    'replace' => 'E0EA \\1',
+  ),
+  332 => 
+  array (
+    'match' => 'E025 0ACD (200D)',
+    'replace' => 'E0EB \\1',
+  ),
+  333 => 
+  array (
+    'match' => 'E026 0ACD (200D)',
+    'replace' => 'E0EC \\1',
+  ),
+  334 => 
+  array (
+    'match' => 'E027 0ACD (200D)',
+    'replace' => 'E0ED \\1',
+  ),
+  335 => 
+  array (
+    'match' => 'E05E 0ACD (200D)',
+    'replace' => 'E0EE \\1',
+  ),
+  336 => 
+  array (
+    'match' => 'E05F 0ACD (200D)',
+    'replace' => 'E0EF \\1',
+  ),
+  337 => 
+  array (
+    'match' => 'E060 0ACD (200D)',
+    'replace' => 'E0F0 \\1',
+  ),
+  338 => 
+  array (
+    'match' => 'E061 0ACD (200D)',
+    'replace' => 'E0F1 \\1',
+  ),
+  339 => 
+  array (
+    'match' => 'E062 0ACD (200D)',
+    'replace' => 'E0F2 \\1',
+  ),
+  340 => 
+  array (
+    'match' => 'E063 0ACD (200D)',
+    'replace' => 'E0F3 \\1',
+  ),
+  341 => 
+  array (
+    'match' => 'E064 0ACD (200D)',
+    'replace' => 'E0F4 \\1',
+  ),
+  342 => 
+  array (
+    'match' => 'E065 0ACD (200D)',
+    'replace' => 'E0F5 \\1',
+  ),
+  343 => 
+  array (
+    'match' => 'E066 0ACD (200D)',
+    'replace' => 'E0F6 \\1',
+  ),
+  344 => 
+  array (
+    'match' => 'E067 0ACD (200D)',
+    'replace' => 'E0F7 \\1',
+  ),
+  345 => 
+  array (
+    'match' => 'E068 0ACD (200D)',
+    'replace' => 'E0F8 \\1',
+  ),
+  346 => 
+  array (
+    'match' => 'E069 0ACD (200D)',
+    'replace' => 'E0F9 \\1',
+  ),
+  347 => 
+  array (
+    'match' => 'E06A 0ACD (200D)',
+    'replace' => 'E0FA \\1',
+  ),
+  348 => 
+  array (
+    'match' => 'E06B 0ACD (200D)',
+    'replace' => 'E0FB \\1',
+  ),
+  349 => 
+  array (
+    'match' => 'E06C 0ACD (200D)',
+    'replace' => 'E0FC \\1',
+  ),
+  350 => 
+  array (
+    'match' => 'E06D 0ACD (200D)',
+    'replace' => 'E0FD \\1',
+  ),
+  351 => 
+  array (
+    'match' => 'E06E 0ACD (200D)',
+    'replace' => 'E0FE \\1',
+  ),
+  352 => 
+  array (
+    'match' => 'E06F 0ACD (200D)',
+    'replace' => 'E0FF \\1',
+  ),
+  353 => 
+  array (
+    'match' => 'E070 0ACD (200D)',
+    'replace' => 'E100 \\1',
+  ),
+  354 => 
+  array (
+    'match' => 'E071 0ACD (200D)',
+    'replace' => 'E101 \\1',
+  ),
+  355 => 
+  array (
+    'match' => 'E072 0ACD (200D)',
+    'replace' => 'E102 \\1',
+  ),
+  356 => 
+  array (
+    'match' => 'E073 0ACD (200D)',
+    'replace' => 'E103 \\1',
+  ),
+  357 => 
+  array (
+    'match' => 'E074 0ACD (200D)',
+    'replace' => 'E104 \\1',
+  ),
+  358 => 
+  array (
+    'match' => 'E075 0ACD (200D)',
+    'replace' => 'E105 \\1',
+  ),
+  359 => 
+  array (
+    'match' => 'E076 0ACD (200D)',
+    'replace' => 'E106 \\1',
+  ),
+  360 => 
+  array (
+    'match' => 'E077 0ACD (200D)',
+    'replace' => 'E107 \\1',
+  ),
+  361 => 
+  array (
+    'match' => 'E078 0ACD (200D)',
+    'replace' => 'E108 \\1',
+  ),
+  362 => 
+  array (
+    'match' => 'E079 0ACD (200D)',
+    'replace' => 'E109 \\1',
+  ),
+  363 => 
+  array (
+    'match' => 'E07A 0ACD (200D)',
+    'replace' => 'E10A \\1',
+  ),
+  364 => 
+  array (
+    'match' => 'E07B 0ACD (200D)',
+    'replace' => 'E10B \\1',
+  ),
+  365 => 
+  array (
+    'match' => 'E07C 0ACD (200D)',
+    'replace' => 'E10C \\1',
+  ),
+  366 => 
+  array (
+    'match' => 'E07D 0ACD (200D)',
+    'replace' => 'E10D \\1',
+  ),
+  367 => 
+  array (
+    'match' => 'E07E 0ACD (200D)',
+    'replace' => 'E10E \\1',
+  ),
+  368 => 
+  array (
+    'match' => 'E07F 0ACD (200D)',
+    'replace' => 'E10F \\1',
+  ),
+  369 => 
+  array (
+    'match' => 'E080 0ACD (200D)',
+    'replace' => 'E110 \\1',
+  ),
+  370 => 
+  array (
+    'match' => 'E081 0ACD (200D)',
+    'replace' => 'E111 \\1',
+  ),
+  371 => 
+  array (
+    'match' => 'E082 0ACD (200D)',
+    'replace' => 'E112 \\1',
+  ),
+  372 => 
+  array (
+    'match' => 'E083 0ACD (200D)',
+    'replace' => 'E113 \\1',
+  ),
+  373 => 
+  array (
+    'match' => 'E084 0ACD (200D)',
+    'replace' => 'E114 \\1',
+  ),
+  374 => 
+  array (
+    'match' => 'E085 0ACD (200D)',
+    'replace' => 'E115 \\1',
+  ),
+  375 => 
+  array (
+    'match' => 'E086 0ACD (200D)',
+    'replace' => 'E116 \\1',
+  ),
+  376 => 
+  array (
+    'match' => 'E087 0ACD (200D)',
+    'replace' => 'E117 \\1',
+  ),
+  377 => 
+  array (
+    'match' => 'E088 0ACD (200D)',
+    'replace' => 'E118 \\1',
+  ),
+  378 => 
+  array (
+    'match' => 'E089 0ACD (200D)',
+    'replace' => 'E119 \\1',
+  ),
+  379 => 
+  array (
+    'match' => 'E08A 0ACD (200D)',
+    'replace' => 'E11A \\1',
+  ),
+  380 => 
+  array (
+    'match' => 'E08B 0ACD (200D)',
+    'replace' => 'E11B \\1',
+  ),
+  381 => 
+  array (
+    'match' => 'E08C 0ACD (200D)',
+    'replace' => 'E11C \\1',
+  ),
+  382 => 
+  array (
+    'match' => 'E08D 0ACD (200D)',
+    'replace' => 'E11D \\1',
+  ),
+  383 => 
+  array (
+    'match' => 'E08E 0ACD (200D)',
+    'replace' => 'E11E \\1',
+  ),
+  384 => 
+  array (
+    'match' => 'E08F 0ACD (200D)',
+    'replace' => 'E11F \\1',
+  ),
+  385 => 
+  array (
+    'match' => 'E090 0ACD (200D)',
+    'replace' => 'E120 \\1',
+  ),
+  386 => 
+  array (
+    'match' => 'E091 0ACD (200D)',
+    'replace' => 'E121 \\1',
+  ),
+  387 => 
+  array (
+    'match' => 'E092 0ACD (200D)',
+    'replace' => 'E122 \\1',
+  ),
+  388 => 
+  array (
+    'match' => 'E093 0ACD (200D)',
+    'replace' => 'E123 \\1',
+  ),
+  389 => 
+  array (
+    'match' => 'E094 0ACD (200D)',
+    'replace' => 'E124 \\1',
+  ),
+  390 => 
+  array (
+    'match' => 'E095 0ACD (200D)',
+    'replace' => 'E125 \\1',
+  ),
+  391 => 
+  array (
+    'match' => 'E096 0ACD (200D)',
+    'replace' => 'E126 \\1',
+  ),
+  392 => 
+  array (
+    'match' => 'E097 0ACD (200D)',
+    'replace' => 'E127 \\1',
+  ),
+  393 => 
+  array (
+    'match' => 'E098 0ACD (200D)',
+    'replace' => 'E128 \\1',
+  ),
+  394 => 
+  array (
+    'match' => 'E099 0ACD (200D)',
+    'replace' => 'E129 \\1',
+  ),
+  395 => 
+  array (
+    'match' => 'E09A 0ACD (200D)',
+    'replace' => 'E12A \\1',
+  ),
+  396 => 
+  array (
+    'match' => 'E09B 0ACD (200D)',
+    'replace' => 'E12B \\1',
+  ),
+  397 => 
+  array (
+    'match' => 'E09C 0ACD (200D)',
+    'replace' => 'E12C \\1',
+  ),
+  398 => 
+  array (
+    'match' => 'E09D 0ACD (200D)',
+    'replace' => 'E12D \\1',
+  ),
+  399 => 
+  array (
+    'match' => 'E09E 0ACD (200D)',
+    'replace' => 'E12E \\1',
+  ),
+  400 => 
+  array (
+    'match' => 'E09F 0ACD (200D)',
+    'replace' => 'E12F \\1',
+  ),
+  401 => 
+  array (
+    'match' => 'E0A0 0ACD (200D)',
+    'replace' => 'E130 \\1',
+  ),
+  402 => 
+  array (
+    'match' => 'E0A1 0ACD (200D)',
+    'replace' => 'E131 \\1',
+  ),
+  403 => 
+  array (
+    'match' => 'E0A2 0ACD (200D)',
+    'replace' => 'E132 \\1',
+  ),
+  404 => 
+  array (
+    'match' => 'E0A3 0ACD (200D)',
+    'replace' => 'E133 \\1',
+  ),
+  405 => 
+  array (
+    'match' => 'E0A4 0ACD (200D)',
+    'replace' => 'E134 \\1',
+  ),
+  406 => 
+  array (
+    'match' => 'E0A5 0ACD (200D)',
+    'replace' => 'E135 \\1',
+  ),
+  407 => 
+  array (
+    'match' => 'E0A6 E0A6',
+    'replace' => 'E221',
+  ),
+  408 => 
+  array (
+    'match' => 'E0B7 E0A8',
+    'replace' => 'E223',
+  ),
+  409 => 
+  array (
+    'match' => 'E0C6 E0B5',
+    'replace' => 'E222',
+  ),
+  410 => 
+  array (
+    'match' => 'E0AA 0A95',
+    'replace' => 'E136',
+  ),
+  411 => 
+  array (
+    'match' => 'E0AA 0A96',
+    'replace' => 'E137',
+  ),
+  412 => 
+  array (
+    'match' => 'E0AA 0A97',
+    'replace' => 'E138',
+  ),
+  413 => 
+  array (
+    'match' => 'E0AA 0A98',
+    'replace' => 'E139',
+  ),
+  414 => 
+  array (
+    'match' => 'E0AA 0AAE',
+    'replace' => 'E13A',
+  ),
+  415 => 
+  array (
+    'match' => 'E0AA 0AB5',
+    'replace' => 'E13B',
+  ),
+  416 => 
+  array (
+    'match' => 'E0AA E002',
+    'replace' => 'E13C',
+  ),
+  417 => 
+  array (
+    'match' => 'E0AC 0AB5',
+    'replace' => 'E13D',
+  ),
+  418 => 
+  array (
+    'match' => 'E0B0 0A9F',
+    'replace' => 'E13E',
+  ),
+  419 => 
+  array (
+    'match' => 'E0B0 0AA0',
+    'replace' => 'E13F',
+  ),
+  420 => 
+  array (
+    'match' => 'E0B1 0AA0',
+    'replace' => 'E140',
+  ),
+  421 => 
+  array (
+    'match' => 'E0B2 0AA1',
+    'replace' => 'E141',
+  ),
+  422 => 
+  array (
+    'match' => 'E0B2 0AA2',
+    'replace' => 'E142',
+  ),
+  423 => 
+  array (
+    'match' => 'E0B3 0AA2',
+    'replace' => 'E143',
+  ),
+  424 => 
+  array (
+    'match' => 'E0B7 0A97',
+    'replace' => 'E145',
+  ),
+  425 => 
+  array (
+    'match' => 'E0B7 E060',
+    'replace' => 'E146',
+  ),
+  426 => 
+  array (
+    'match' => 'E0B7 0A98',
+    'replace' => 'E147',
+  ),
+  427 => 
+  array (
+    'match' => 'E0B7 0AA8',
+    'replace' => 'E148',
+  ),
+  428 => 
+  array (
+    'match' => 'E0B7 0AA7',
+    'replace' => 'E149',
+  ),
+  429 => 
+  array (
+    'match' => 'E0B7 0AB5',
+    'replace' => 'E14A',
+  ),
+  430 => 
+  array (
+    'match' => 'E0B7 0AAC',
+    'replace' => 'E14B',
+  ),
+  431 => 
+  array (
+    'match' => 'E0B7 0AAE',
+    'replace' => 'E14C',
+  ),
+  432 => 
+  array (
+    'match' => 'E0B7 0AB2',
+    'replace' => 'E14D',
+  ),
+  433 => 
+  array (
+    'match' => 'E0B7 0AA6',
+    'replace' => 'E14E',
+  ),
+  434 => 
+  array (
+    'match' => 'E0C7 0AA8',
+    'replace' => 'E14F',
+  ),
+  435 => 
+  array (
+    'match' => 'E0C7 0AA3',
+    'replace' => 'E150',
+  ),
+  436 => 
+  array (
+    'match' => 'E0C7 0AAF',
+    'replace' => 'E151',
+  ),
+  437 => 
+  array (
+    'match' => 'E0C7 0AB2',
+    'replace' => 'E152',
+  ),
+  438 => 
+  array (
+    'match' => 'E0C7 0AB5',
+    'replace' => 'E153',
+  ),
+  439 => 
+  array (
+    'match' => 'E0C7 0AAE',
+    'replace' => 'E154',
+  ),
+  440 => 
+  array (
+    'match' => 'E0AF 0A9A',
+    'replace' => 'E155',
+  ),
+  441 => 
+  array (
+    'match' => 'E0AF 0A9C',
+    'replace' => 'E156',
+  ),
+  442 => 
+  array (
+    'match' => 'E0B9 0AA8',
+    'replace' => 'E157',
+  ),
+  443 => 
+  array (
+    'match' => 'E0C4 0AA8',
+    'replace' => 'E158',
+  ),
+  444 => 
+  array (
+    'match' => 'E0C4 0AB5',
+    'replace' => 'E159',
+  ),
+  445 => 
+  array (
+    'match' => 'E0C4 0A9A',
+    'replace' => 'E15A',
+  ),
+  446 => 
+  array (
+    'match' => 'E0B5 0AA4',
+    'replace' => 'E15B',
+  ),
+  447 => 
+  array (
+    'match' => 'E0C6 E06D',
+    'replace' => 'E15C',
+  ),
+  448 => 
+  array (
+    'match' => 'E0B7 0AAF',
+    'replace' => 'E15D',
+  ),
+  449 => 
+  array (
+    'match' => 'E0FF 0AAF',
+    'replace' => 'E15E',
+  ),
+  450 => 
+  array (
+    'match' => 'E0A6 0A95',
+    'replace' => 'E21F',
+  ),
+  451 => 
+  array (
+    'match' => 'E0A6 E05E',
+    'replace' => 'E220',
+  ),
+  452 => 
+  array (
+    'match' => 'E163',
+    'replace' => '0ACD',
+  ),
+  453 => 
+  array (
+    'match' => 'E0A6 200D',
+    'replace' => 'E0A6',
+  ),
+  454 => 
+  array (
+    'match' => 'E0A7 200D',
+    'replace' => 'E0A7',
+  ),
+  455 => 
+  array (
+    'match' => 'E0A8 200D',
+    'replace' => 'E0A8',
+  ),
+  456 => 
+  array (
+    'match' => 'E0A9 200D',
+    'replace' => 'E0A9',
+  ),
+  457 => 
+  array (
+    'match' => 'E0AA 200D',
+    'replace' => 'E0AA',
+  ),
+  458 => 
+  array (
+    'match' => 'E0AB 200D',
+    'replace' => 'E0AB',
+  ),
+  459 => 
+  array (
+    'match' => 'E0AC 200D',
+    'replace' => 'E0AC',
+  ),
+  460 => 
+  array (
+    'match' => 'E0AD 200D',
+    'replace' => 'E0AD',
+  ),
+  461 => 
+  array (
+    'match' => 'E0AE 200D',
+    'replace' => 'E0AE',
+  ),
+  462 => 
+  array (
+    'match' => 'E0AF 200D',
+    'replace' => 'E0AF',
+  ),
+  463 => 
+  array (
+    'match' => 'E0B0 200D',
+    'replace' => 'E0B0',
+  ),
+  464 => 
+  array (
+    'match' => 'E0B1 200D',
+    'replace' => 'E0B1',
+  ),
+  465 => 
+  array (
+    'match' => 'E0B2 200D',
+    'replace' => 'E0B2',
+  ),
+  466 => 
+  array (
+    'match' => 'E0B3 200D',
+    'replace' => 'E0B3',
+  ),
+  467 => 
+  array (
+    'match' => 'E0B4 200D',
+    'replace' => 'E0B4',
+  ),
+  468 => 
+  array (
+    'match' => 'E0B5 200D',
+    'replace' => 'E0B5',
+  ),
+  469 => 
+  array (
+    'match' => 'E0B6 200D',
+    'replace' => 'E0B6',
+  ),
+  470 => 
+  array (
+    'match' => 'E0B7 200D',
+    'replace' => 'E0B7',
+  ),
+  471 => 
+  array (
+    'match' => 'E0B8 200D',
+    'replace' => 'E0B8',
+  ),
+  472 => 
+  array (
+    'match' => 'E0B9 200D',
+    'replace' => 'E0B9',
+  ),
+  473 => 
+  array (
+    'match' => 'E0BA 200D',
+    'replace' => 'E0BA',
+  ),
+  474 => 
+  array (
+    'match' => 'E0BB 200D',
+    'replace' => 'E0BB',
+  ),
+  475 => 
+  array (
+    'match' => 'E0BC 200D',
+    'replace' => 'E0BC',
+  ),
+  476 => 
+  array (
+    'match' => 'E0BD 200D',
+    'replace' => 'E0BD',
+  ),
+  477 => 
+  array (
+    'match' => 'E0BE 200D',
+    'replace' => 'E0BE',
+  ),
+  478 => 
+  array (
+    'match' => 'E0BF 200D',
+    'replace' => 'E0BF',
+  ),
+  479 => 
+  array (
+    'match' => 'E0C0 200D',
+    'replace' => 'E0C0',
+  ),
+  480 => 
+  array (
+    'match' => 'E0C1 200D',
+    'replace' => 'E0C1',
+  ),
+  481 => 
+  array (
+    'match' => 'E0C2 200D',
+    'replace' => 'E0C2',
+  ),
+  482 => 
+  array (
+    'match' => 'E0C3 200D',
+    'replace' => 'E0C3',
+  ),
+  483 => 
+  array (
+    'match' => 'E0C4 200D',
+    'replace' => 'E0C4',
+  ),
+  484 => 
+  array (
+    'match' => 'E0C5 200D',
+    'replace' => 'E0C5',
+  ),
+  485 => 
+  array (
+    'match' => 'E0C6 200D',
+    'replace' => 'E0C6',
+  ),
+  486 => 
+  array (
+    'match' => 'E0C7 200D',
+    'replace' => 'E0C7',
+  ),
+  487 => 
+  array (
+    'match' => 'E0C8 200D',
+    'replace' => 'E0C8',
+  ),
+  488 => 
+  array (
+    'match' => 'E0C9 200D',
+    'replace' => 'E0C9',
+  ),
+  489 => 
+  array (
+    'match' => 'E0CA 200D',
+    'replace' => 'E0CA',
+  ),
+  490 => 
+  array (
+    'match' => 'E0CB 200D',
+    'replace' => 'E0CB',
+  ),
+  491 => 
+  array (
+    'match' => 'E0CC 200D',
+    'replace' => 'E0CC',
+  ),
+  492 => 
+  array (
+    'match' => 'E0CD 200D',
+    'replace' => 'E0CD',
+  ),
+  493 => 
+  array (
+    'match' => 'E0CE 200D',
+    'replace' => 'E0CE',
+  ),
+  494 => 
+  array (
+    'match' => 'E0CF 200D',
+    'replace' => 'E0CF',
+  ),
+  495 => 
+  array (
+    'match' => 'E0D0 200D',
+    'replace' => 'E0D0',
+  ),
+  496 => 
+  array (
+    'match' => 'E0D1 200D',
+    'replace' => 'E0D1',
+  ),
+  497 => 
+  array (
+    'match' => 'E0D2 200D',
+    'replace' => 'E0D2',
+  ),
+  498 => 
+  array (
+    'match' => 'E0D3 200D',
+    'replace' => 'E0D3',
+  ),
+  499 => 
+  array (
+    'match' => 'E0D4 200D',
+    'replace' => 'E0D4',
+  ),
+  500 => 
+  array (
+    'match' => 'E0D5 200D',
+    'replace' => 'E0D5',
+  ),
+  501 => 
+  array (
+    'match' => 'E0D6 200D',
+    'replace' => 'E0D6',
+  ),
+  502 => 
+  array (
+    'match' => 'E0D7 200D',
+    'replace' => 'E0D7',
+  ),
+  503 => 
+  array (
+    'match' => 'E0D8 200D',
+    'replace' => 'E0D8',
+  ),
+  504 => 
+  array (
+    'match' => 'E0D9 200D',
+    'replace' => 'E0D9',
+  ),
+  505 => 
+  array (
+    'match' => 'E0DA 200D',
+    'replace' => 'E0DA',
+  ),
+  506 => 
+  array (
+    'match' => 'E0DB 200D',
+    'replace' => 'E0DB',
+  ),
+  507 => 
+  array (
+    'match' => 'E0DC 200D',
+    'replace' => 'E0DC',
+  ),
+  508 => 
+  array (
+    'match' => 'E0DD 200D',
+    'replace' => 'E0DD',
+  ),
+  509 => 
+  array (
+    'match' => 'E0DE 200D',
+    'replace' => 'E0DE',
+  ),
+  510 => 
+  array (
+    'match' => 'E0DF 200D',
+    'replace' => 'E0DF',
+  ),
+  511 => 
+  array (
+    'match' => 'E0E0 200D',
+    'replace' => 'E0E0',
+  ),
+  512 => 
+  array (
+    'match' => 'E0E1 200D',
+    'replace' => 'E0E1',
+  ),
+  513 => 
+  array (
+    'match' => 'E0E2 200D',
+    'replace' => 'E0E2',
+  ),
+  514 => 
+  array (
+    'match' => 'E0E3 200D',
+    'replace' => 'E0E3',
+  ),
+  515 => 
+  array (
+    'match' => 'E0E4 200D',
+    'replace' => 'E0E4',
+  ),
+  516 => 
+  array (
+    'match' => 'E0E5 200D',
+    'replace' => 'E0E5',
+  ),
+  517 => 
+  array (
+    'match' => 'E0E6 200D',
+    'replace' => 'E0E6',
+  ),
+  518 => 
+  array (
+    'match' => 'E0E7 200D',
+    'replace' => 'E0E7',
+  ),
+  519 => 
+  array (
+    'match' => 'E0E8 200D',
+    'replace' => 'E0E8',
+  ),
+  520 => 
+  array (
+    'match' => 'E0E9 200D',
+    'replace' => 'E0E9',
+  ),
+  521 => 
+  array (
+    'match' => 'E0EA 200D',
+    'replace' => 'E0EA',
+  ),
+  522 => 
+  array (
+    'match' => 'E0EB 200D',
+    'replace' => 'E0EB',
+  ),
+  523 => 
+  array (
+    'match' => 'E0EC 200D',
+    'replace' => 'E0EC',
+  ),
+  524 => 
+  array (
+    'match' => 'E0ED 200D',
+    'replace' => 'E0ED',
+  ),
+  525 => 
+  array (
+    'match' => 'E0EE 200D',
+    'replace' => 'E0EE',
+  ),
+  526 => 
+  array (
+    'match' => 'E0EF 200D',
+    'replace' => 'E0EF',
+  ),
+  527 => 
+  array (
+    'match' => 'E0F0 200D',
+    'replace' => 'E0F0',
+  ),
+  528 => 
+  array (
+    'match' => 'E0F1 200D',
+    'replace' => 'E0F1',
+  ),
+  529 => 
+  array (
+    'match' => 'E0F2 200D',
+    'replace' => 'E0F2',
+  ),
+  530 => 
+  array (
+    'match' => 'E0F3 200D',
+    'replace' => 'E0F3',
+  ),
+  531 => 
+  array (
+    'match' => 'E0F4 200D',
+    'replace' => 'E0F4',
+  ),
+  532 => 
+  array (
+    'match' => 'E0F5 200D',
+    'replace' => 'E0F5',
+  ),
+  533 => 
+  array (
+    'match' => 'E0F6 200D',
+    'replace' => 'E0F6',
+  ),
+  534 => 
+  array (
+    'match' => 'E0F7 200D',
+    'replace' => 'E0F7',
+  ),
+  535 => 
+  array (
+    'match' => 'E0F8 200D',
+    'replace' => 'E0F8',
+  ),
+  536 => 
+  array (
+    'match' => 'E0F9 200D',
+    'replace' => 'E0F9',
+  ),
+  537 => 
+  array (
+    'match' => 'E0FA 200D',
+    'replace' => 'E0FA',
+  ),
+  538 => 
+  array (
+    'match' => 'E0FB 200D',
+    'replace' => 'E0FB',
+  ),
+  539 => 
+  array (
+    'match' => 'E0FC 200D',
+    'replace' => 'E0FC',
+  ),
+  540 => 
+  array (
+    'match' => 'E0FD 200D',
+    'replace' => 'E0FD',
+  ),
+  541 => 
+  array (
+    'match' => 'E0FE 200D',
+    'replace' => 'E0FE',
+  ),
+  542 => 
+  array (
+    'match' => 'E0FF 200D',
+    'replace' => 'E0FF',
+  ),
+  543 => 
+  array (
+    'match' => 'E100 200D',
+    'replace' => 'E100',
+  ),
+  544 => 
+  array (
+    'match' => 'E101 200D',
+    'replace' => 'E101',
+  ),
+  545 => 
+  array (
+    'match' => 'E102 200D',
+    'replace' => 'E102',
+  ),
+  546 => 
+  array (
+    'match' => 'E103 200D',
+    'replace' => 'E103',
+  ),
+  547 => 
+  array (
+    'match' => 'E104 200D',
+    'replace' => 'E104',
+  ),
+  548 => 
+  array (
+    'match' => 'E105 200D',
+    'replace' => 'E105',
+  ),
+  549 => 
+  array (
+    'match' => 'E106 200D',
+    'replace' => 'E106',
+  ),
+  550 => 
+  array (
+    'match' => 'E107 200D',
+    'replace' => 'E107',
+  ),
+  551 => 
+  array (
+    'match' => 'E108 200D',
+    'replace' => 'E108',
+  ),
+  552 => 
+  array (
+    'match' => 'E109 200D',
+    'replace' => 'E109',
+  ),
+  553 => 
+  array (
+    'match' => 'E10A 200D',
+    'replace' => 'E10A',
+  ),
+  554 => 
+  array (
+    'match' => 'E10B 200D',
+    'replace' => 'E10B',
+  ),
+  555 => 
+  array (
+    'match' => 'E10C 200D',
+    'replace' => 'E10C',
+  ),
+  556 => 
+  array (
+    'match' => 'E10D 200D',
+    'replace' => 'E10D',
+  ),
+  557 => 
+  array (
+    'match' => 'E10E 200D',
+    'replace' => 'E10E',
+  ),
+  558 => 
+  array (
+    'match' => 'E10F 200D',
+    'replace' => 'E10F',
+  ),
+  559 => 
+  array (
+    'match' => 'E110 200D',
+    'replace' => 'E110',
+  ),
+  560 => 
+  array (
+    'match' => 'E111 200D',
+    'replace' => 'E111',
+  ),
+  561 => 
+  array (
+    'match' => 'E112 200D',
+    'replace' => 'E112',
+  ),
+  562 => 
+  array (
+    'match' => 'E113 200D',
+    'replace' => 'E113',
+  ),
+  563 => 
+  array (
+    'match' => 'E114 200D',
+    'replace' => 'E114',
+  ),
+  564 => 
+  array (
+    'match' => 'E115 200D',
+    'replace' => 'E115',
+  ),
+  565 => 
+  array (
+    'match' => 'E116 200D',
+    'replace' => 'E116',
+  ),
+  566 => 
+  array (
+    'match' => 'E117 200D',
+    'replace' => 'E117',
+  ),
+  567 => 
+  array (
+    'match' => 'E118 200D',
+    'replace' => 'E118',
+  ),
+  568 => 
+  array (
+    'match' => 'E119 200D',
+    'replace' => 'E119',
+  ),
+  569 => 
+  array (
+    'match' => 'E11A 200D',
+    'replace' => 'E11A',
+  ),
+  570 => 
+  array (
+    'match' => 'E11B 200D',
+    'replace' => 'E11B',
+  ),
+  571 => 
+  array (
+    'match' => 'E11C 200D',
+    'replace' => 'E11C',
+  ),
+  572 => 
+  array (
+    'match' => 'E11D 200D',
+    'replace' => 'E11D',
+  ),
+  573 => 
+  array (
+    'match' => 'E11E 200D',
+    'replace' => 'E11E',
+  ),
+  574 => 
+  array (
+    'match' => 'E11F 200D',
+    'replace' => 'E11F',
+  ),
+  575 => 
+  array (
+    'match' => 'E120 200D',
+    'replace' => 'E120',
+  ),
+  576 => 
+  array (
+    'match' => 'E121 200D',
+    'replace' => 'E121',
+  ),
+  577 => 
+  array (
+    'match' => 'E122 200D',
+    'replace' => 'E122',
+  ),
+  578 => 
+  array (
+    'match' => 'E123 200D',
+    'replace' => 'E123',
+  ),
+  579 => 
+  array (
+    'match' => 'E124 200D',
+    'replace' => 'E124',
+  ),
+  580 => 
+  array (
+    'match' => 'E125 200D',
+    'replace' => 'E125',
+  ),
+  581 => 
+  array (
+    'match' => 'E126 200D',
+    'replace' => 'E126',
+  ),
+  582 => 
+  array (
+    'match' => 'E127 200D',
+    'replace' => 'E127',
+  ),
+  583 => 
+  array (
+    'match' => 'E128 200D',
+    'replace' => 'E128',
+  ),
+  584 => 
+  array (
+    'match' => 'E129 200D',
+    'replace' => 'E129',
+  ),
+  585 => 
+  array (
+    'match' => 'E12A 200D',
+    'replace' => 'E12A',
+  ),
+  586 => 
+  array (
+    'match' => 'E12B 200D',
+    'replace' => 'E12B',
+  ),
+  587 => 
+  array (
+    'match' => 'E12C 200D',
+    'replace' => 'E12C',
+  ),
+  588 => 
+  array (
+    'match' => 'E12D 200D',
+    'replace' => 'E12D',
+  ),
+  589 => 
+  array (
+    'match' => 'E12E 200D',
+    'replace' => 'E12E',
+  ),
+  590 => 
+  array (
+    'match' => 'E12F 200D',
+    'replace' => 'E12F',
+  ),
+  591 => 
+  array (
+    'match' => 'E130 200D',
+    'replace' => 'E130',
+  ),
+  592 => 
+  array (
+    'match' => 'E131 200D',
+    'replace' => 'E131',
+  ),
+  593 => 
+  array (
+    'match' => 'E132 200D',
+    'replace' => 'E132',
+  ),
+  594 => 
+  array (
+    'match' => 'E133 200D',
+    'replace' => 'E133',
+  ),
+  595 => 
+  array (
+    'match' => 'E134 200D',
+    'replace' => 'E134',
+  ),
+  596 => 
+  array (
+    'match' => 'E135 200D',
+    'replace' => 'E135',
+  ),
+  597 => 
+  array (
+    'match' => '200D 0ACD',
+    'replace' => '0ACD',
+  ),
+  598 => 
+  array (
+    'match' => '200D E05D',
+    'replace' => 'E05D',
+  ),
+  599 => 
+  array (
+    'match' => '0A9C 0ABE',
+    'replace' => 'E21B',
+  ),
+  600 => 
+  array (
+    'match' => '0A9C 0AC9',
+    'replace' => 'E21C',
+  ),
+  601 => 
+  array (
+    'match' => '0A9C 0ACB',
+    'replace' => 'E21D',
+  ),
+  602 => 
+  array (
+    'match' => '0A9C 0ACC',
+    'replace' => 'E21E',
+  ),
+  603 => 
+  array (
+    'match' => '0ABF ((0A95|0A99|0AA1|0AA6|0AAB|0AB0|0AB9|E004|E008|E010|E015|E019|E01E|E025|E05E|E062|E06A|E06F|E073|E078|E07F|E082|E086|E08E|E093|E097|E09C|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142|E144|E145|E146|E148|E14A|E14B|E14E))',
+    'replace' => 'E038 \\1',
+  ),
+  604 => 
+  array (
+    'match' => '0ABF ((0A9F|0AA0|0AA2|0A9C|E00E|E00F|E011|E00B|E068|E069|E06B|E065|E08C|E08D|E08F|E089|E14F|E150|E151|E152|E153|E154))',
+    'replace' => 'E03A \\1',
+  ),
+  605 => 
+  array (
+    'match' => '0ABF ((0A96|0AA3|0AAC|0AAD|0AB3|E002|E003|E005|E012|E01A|E01B|E020|E026|E027|E05F|E06C|E074|E075|E07A|E080|E081|E083|E090|E098|E099|E09E|E0A4|E0A5|E15E))',
+    'replace' => 'E039 \\1',
+  ),
+  606 => 
+  array (
+    'match' => '0ABF ((E13D))',
+    'replace' => 'E03B \\1',
+  ),
+  607 => 
+  array (
+    'match' => '0ABF ((E13E|E13F|E140|E143))',
+    'replace' => 'E03C \\1',
+  ),
+  608 => 
+  array (
+    'match' => '0ABF ((E15C))',
+    'replace' => 'E03D \\1',
+  ),
+  609 => 
+  array (
+    'match' => '0ABF ((E0A7|E0BC|E0BD|E0C8|E0C9|E0C2) (0A97|0A98|0AAF|0A9B|0A9D|0A9E|0AA4|0AA5|0AA7|0AA8|0AAA|0AAE|0AAF|0AB2|0AB5|0AB6|0AB7|0AB8))',
+    'replace' => 'E25C \\1',
+  ),
+  610 => 
+  array (
+    'match' => '0ABF ((E0A7|E0BC|E0BD|E0C8|E0C9|E0C2) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
+    'replace' => 'E25C \\1',
+  ),
+  611 => 
+  array (
+    'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
+    'replace' => 'E25C \\1',
+  ),
+  612 => 
+  array (
+    'match' => '0ABF ((E0AC|E0AE) (0A97|0A98|0AAF|0A9B|0A9D|0A9E|0AA4|0AA5|0AA7|0AA8|0AAA|0AAE|0AAF|0AB2|0AB5|0AB6|0AB7|0AB8))',
+    'replace' => 'E25C \\1',
+  ),
+  613 => 
+  array (
+    'match' => '0ABF ((E0AC|E0AE) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
+    'replace' => 'E25C \\1',
+  ),
+  614 => 
+  array (
+    'match' => '0ABF ((E0B4|E0B5|E0B9) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
+    'replace' => 'E25C \\1',
+  ),
+  615 => 
+  array (
+    'match' => '0ABF ((E0B1) (0A96|0AA3|0AAC|0AAD|0AB3|E002|E003))',
+    'replace' => 'E25C \\1',
+  ),
+  616 => 
+  array (
+    'match' => '0ABF ((E0A6|E0A8|E0AA|E0B2|E0B7|E0BB|E0C4|E0C7) (0A9C|0A9F|0AA0|0AA2))',
+    'replace' => 'E25D \\1',
+  ),
+  617 => 
+  array (
+    'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
+    'replace' => 'E25D \\1',
+  ),
+  618 => 
+  array (
+    'match' => '0ABF ((E0AB|E0B6|E0BA|E0BE|E0BF|E0C1|E0C3|E0C5|E0C6|E0A9|E0B8|E0AD|E0AF|E0B0|E0B3) (0A9C|0A9F|0AA0|0AA2))',
+    'replace' => 'E25D \\1',
+  ),
+  619 => 
+  array (
+    'match' => '0ABF ((E0B4|E0B5|E0B9) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
+    'replace' => 'E25D \\1',
+  ),
+  620 => 
+  array (
+    'match' => '0ABF ((E0B1) (0A95|0A99|0AA1|0AA6|0AAB|0AB9))',
+    'replace' => 'E25D \\1',
+  ),
+  621 => 
+  array (
+    'match' => '0AB9 0AC3',
+    'replace' => 'E02F',
+  ),
+  622 => 
+  array (
+    'match' => '0AB0 0AC1',
+    'replace' => 'E15F',
+  ),
+  623 => 
+  array (
+    'match' => '0AC0 E032',
+    'replace' => 'E043',
+  ),
+  624 => 
+  array (
+    'match' => '0AC7 E032',
+    'replace' => 'E04D',
+  ),
+  625 => 
+  array (
+    'match' => '0AC8 E032',
+    'replace' => 'E051',
+  ),
+  626 => 
+  array (
+    'match' => '0ACB E032',
+    'replace' => 'E055',
+  ),
+  627 => 
+  array (
+    'match' => '0ACC E032',
+    'replace' => 'E059',
+  ),
+  628 => 
+  array (
+    'match' => '0A87 0A82',
+    'replace' => 'E160',
+  ),
+  629 => 
+  array (
+    'match' => '0A89 0A82',
+    'replace' => 'E161',
+  ),
+  630 => 
+  array (
+    'match' => '0A8A 0A82',
+    'replace' => 'E162',
+  ),
+  631 => 
+  array (
+    'match' => 'E032 0A81',
+    'replace' => 'E034',
+  ),
+  632 => 
+  array (
+    'match' => 'E032 0A82',
+    'replace' => 'E033',
+  ),
+  633 => 
+  array (
+    'match' => '0AC7 0A82',
+    'replace' => 'E04C',
+  ),
+  634 => 
+  array (
+    'match' => '0AC8 0A82',
+    'replace' => 'E050',
+  ),
+  635 => 
+  array (
+    'match' => '0AC0 0A82',
+    'replace' => 'E040',
+  ),
+  636 => 
+  array (
+    'match' => '0ACB 0A82',
+    'replace' => 'E054',
+  ),
+  637 => 
+  array (
+    'match' => '0ACC 0A82',
+    'replace' => 'E058',
+  ),
+  638 => 
+  array (
+    'match' => 'E04D 0A82',
+    'replace' => 'E04E',
+  ),
+  639 => 
+  array (
+    'match' => 'E051 0A82',
+    'replace' => 'E052',
+  ),
+  640 => 
+  array (
+    'match' => 'E043 0A82',
+    'replace' => 'E046',
+  ),
+  641 => 
+  array (
+    'match' => 'E055 0A82',
+    'replace' => 'E056',
+  ),
+  642 => 
+  array (
+    'match' => 'E059 0A82',
+    'replace' => 'E05A',
+  ),
+  643 => 
+  array (
+    'match' => 'E04D 0A81',
+    'replace' => 'E04F',
+  ),
+  644 => 
+  array (
+    'match' => 'E051 0A81',
+    'replace' => 'E053',
+  ),
+  645 => 
+  array (
+    'match' => 'E043 0A81',
+    'replace' => 'E049',
+  ),
+  646 => 
+  array (
+    'match' => 'E055 0A81',
+    'replace' => 'E057',
+  ),
+  647 => 
+  array (
+    'match' => 'E059 0A81',
+    'replace' => 'E05B',
+  ),
+  648 => 
+  array (
+    'match' => '((0A8D|0A8F|0A90|0A91|0A93|0A94|0AC0|E03E|E03F|0AC5|0AC7|0AC8|0AC9|0ACB|0ACC)) 0A81',
+    'replace' => '\\1 E031',
+  ),
+  649 => 
+  array (
+    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) 0AC0',
+    'replace' => '\\1 E03E',
+  ),
+  650 => 
+  array (
+    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) E040',
+    'replace' => '\\1 E041',
+  ),
+  651 => 
+  array (
+    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) E046',
+    'replace' => '\\1 E047',
+  ),
+  652 => 
+  array (
+    'match' => '((0A95|0A99|0AA1|0AA6|0AAB|0AB9|E004|E008|E010|E015|E019|E025|E05E|E062|E06A|E06F|E073|E07F|E082|E086|E08E|E093|E097|E0A3|E136|E137|E138|E139|E13A|E13B|E13C|E141|E142)) E049',
+    'replace' => '\\1 E04A',
+  ),
+  653 => 
+  array (
+    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) 0AC0',
+    'replace' => '\\1 E03F',
+  ),
+  654 => 
+  array (
+    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E040',
+    'replace' => '\\1 E042',
+  ),
+  655 => 
+  array (
+    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E046',
+    'replace' => '\\1 E048',
+  ),
+  656 => 
+  array (
+    'match' => '((0A9F|0AA0|0AA2|0A9B|0AB0|E00E|E00F|E011|E00A|E01E|E068|E069|E06B|E064|E078|E08C|E08D|E08F|E088|E09C)) E049',
+    'replace' => '\\1 E04B',
+  ),
+  657 => 
+  array (
+    'match' => '0A9C 0AC0',
+    'replace' => 'E028',
+  ),
+  658 => 
+  array (
+    'match' => '0AB3 0AC0',
+    'replace' => 'E02A',
+  ),
+  659 => 
+  array (
+    'match' => '0AB3 E043',
+    'replace' => 'E02B',
+  ),
+  660 => 
+  array (
+    'match' => '0AB3 E046',
+    'replace' => 'E02C',
+  ),
+  661 => 
+  array (
+    'match' => '0AB3 E049',
+    'replace' => 'E02D',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_hi_1_001.volt.php
new file mode 100644 (file)
index 0000000..637d70f
--- /dev/null
@@ -0,0 +1,4169 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0915 094D 0937',
+    'replace' => 'E028',
+  ),
+  1 => 
+  array (
+    'match' => '091C 094D 091E',
+    'replace' => 'E029',
+  ),
+  2 => 
+  array (
+    'match' => '0926 094D 092F',
+    'replace' => 'E128',
+  ),
+  3 => 
+  array (
+    'match' => '094D (200D)',
+    'replace' => 'E00E \\1',
+  ),
+  4 => 
+  array (
+    'match' => '094D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029))',
+    'replace' => 'E00E \\1',
+  ),
+  5 => 
+  array (
+    'match' => '094D (25CC)',
+    'replace' => 'E00E \\1',
+  ),
+  6 => 
+  array (
+    'match' => '094D 200C',
+    'replace' => 'E00C',
+  ),
+  7 => 
+  array (
+    'match' => '((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029|0958|0959|095A|E02A|E02B|E02C|E02D|095B|E02E|E02F|E030|E031|095C|095D|E032|E033|E034|E035|E036|0929|E037|095E|E038|E039|E03A|095F|0931|E03B|0934|E03C|E03D|E03E|E03F|E040|E041|E042|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133)) E00E 0930',
+    'replace' => '\\1 E013',
+  ),
+  8 => 
+  array (
+    'match' => '(093C) E00E 0930',
+    'replace' => '\\1 E013',
+  ),
+  9 => 
+  array (
+    'match' => '(200D) E00E 0930',
+    'replace' => '\\1 E013',
+  ),
+  10 => 
+  array (
+    'match' => '(25CC) E00E 0930',
+    'replace' => '\\1 E013',
+  ),
+  11 => 
+  array (
+    'match' => '(0020) E00E 0930',
+    'replace' => '\\1 E013',
+  ),
+  12 => 
+  array (
+    'match' => '((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029|0958|0959|095A|E02A|E02B|E02C|E02D|095B|E02E|E02F|E030|E031|095C|095D|E032|E033|E034|E035|E036|0929|E037|095E|E038|E039|E03A|095F|0931|E03B|0934|E03C|E03D|E03E|E03F|E040|E041|E042|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0A0|E0A1|E0A2|E0A3|E0A4|E0A5|E0A6|E0A7|E0A8|E0A9|E0AA|E0AB|E0AC|E0AD|E0AE|E0AF|E0B0|E0B1|E0B2|E0B3|E0B4|E0B5|E0B6|E0B7|E0B8|E0B9|E0BA|E0BB|E0BC|E0BD|E0BE|E0BF|E0C0|E0C1|E0C2|E0C3|E0C4|E0C5|E0C6|E0C7|E0C8|E0C9|E0CA|E0CB|E0CC|E0CD|E0CE|E0CF|E0D0|E0D1|E0D2|E11E|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E129|E12A|E12B|E12C|E12D|E12E|E12F|E130|E131|E132|E133)) 0930 094D',
+    'replace' => '\\1 E015',
+  ),
+  13 => 
+  array (
+    'match' => '((E013|E015|0941|0942|0943|0962|093E|0940|0949|094A|094B|094C|0945|0946|0947|0948|0901)) 0930 094D',
+    'replace' => '\\1 E015',
+  ),
+  14 => 
+  array (
+    'match' => '(093C) 0930 094D',
+    'replace' => '\\1 E015',
+  ),
+  15 => 
+  array (
+    'match' => '(25CC) 0930 094D',
+    'replace' => '\\1 E015',
+  ),
+  16 => 
+  array (
+    'match' => '(E128) 0930 094D',
+    'replace' => '\\1 E015',
+  ),
+  17 => 
+  array (
+    'match' => '0915 093C',
+    'replace' => '0958',
+  ),
+  18 => 
+  array (
+    'match' => '0916 093C',
+    'replace' => '0959',
+  ),
+  19 => 
+  array (
+    'match' => '0917 093C',
+    'replace' => '095A',
+  ),
+  20 => 
+  array (
+    'match' => '0918 093C',
+    'replace' => 'E02A',
+  ),
+  21 => 
+  array (
+    'match' => '0919 093C',
+    'replace' => 'E02B',
+  ),
+  22 => 
+  array (
+    'match' => '091A 093C',
+    'replace' => 'E02C',
+  ),
+  23 => 
+  array (
+    'match' => '091B 093C',
+    'replace' => 'E02D',
+  ),
+  24 => 
+  array (
+    'match' => '091C 093C',
+    'replace' => '095B',
+  ),
+  25 => 
+  array (
+    'match' => '091D 093C',
+    'replace' => 'E02E',
+  ),
+  26 => 
+  array (
+    'match' => '091E 093C',
+    'replace' => 'E02F',
+  ),
+  27 => 
+  array (
+    'match' => '091F 093C',
+    'replace' => 'E030',
+  ),
+  28 => 
+  array (
+    'match' => '0920 093C',
+    'replace' => 'E031',
+  ),
+  29 => 
+  array (
+    'match' => '0921 093C',
+    'replace' => '095C',
+  ),
+  30 => 
+  array (
+    'match' => '0922 093C',
+    'replace' => '095D',
+  ),
+  31 => 
+  array (
+    'match' => '0923 093C',
+    'replace' => 'E032',
+  ),
+  32 => 
+  array (
+    'match' => '0924 093C',
+    'replace' => 'E033',
+  ),
+  33 => 
+  array (
+    'match' => '0925 093C',
+    'replace' => 'E034',
+  ),
+  34 => 
+  array (
+    'match' => '0926 093C',
+    'replace' => 'E035',
+  ),
+  35 => 
+  array (
+    'match' => '0927 093C',
+    'replace' => 'E036',
+  ),
+  36 => 
+  array (
+    'match' => '0928 093C',
+    'replace' => '0929',
+  ),
+  37 => 
+  array (
+    'match' => '092A 093C',
+    'replace' => 'E037',
+  ),
+  38 => 
+  array (
+    'match' => '092B 093C',
+    'replace' => '095E',
+  ),
+  39 => 
+  array (
+    'match' => '092C 093C',
+    'replace' => 'E038',
+  ),
+  40 => 
+  array (
+    'match' => '092D 093C',
+    'replace' => 'E039',
+  ),
+  41 => 
+  array (
+    'match' => '092E 093C',
+    'replace' => 'E03A',
+  ),
+  42 => 
+  array (
+    'match' => '092F 093C',
+    'replace' => '095F',
+  ),
+  43 => 
+  array (
+    'match' => '0930 093C',
+    'replace' => '0931',
+  ),
+  44 => 
+  array (
+    'match' => '0932 093C',
+    'replace' => 'E03B',
+  ),
+  45 => 
+  array (
+    'match' => '0933 093C',
+    'replace' => '0934',
+  ),
+  46 => 
+  array (
+    'match' => '0935 093C',
+    'replace' => 'E03C',
+  ),
+  47 => 
+  array (
+    'match' => '0936 093C',
+    'replace' => 'E03D',
+  ),
+  48 => 
+  array (
+    'match' => '0937 093C',
+    'replace' => 'E03E',
+  ),
+  49 => 
+  array (
+    'match' => '0938 093C',
+    'replace' => 'E03F',
+  ),
+  50 => 
+  array (
+    'match' => '0939 093C',
+    'replace' => 'E040',
+  ),
+  51 => 
+  array (
+    'match' => 'E028 093C',
+    'replace' => 'E041',
+  ),
+  52 => 
+  array (
+    'match' => 'E029 093C',
+    'replace' => 'E042',
+  ),
+  53 => 
+  array (
+    'match' => '0915 E013',
+    'replace' => 'E08B',
+  ),
+  54 => 
+  array (
+    'match' => '0916 E013',
+    'replace' => 'E08C',
+  ),
+  55 => 
+  array (
+    'match' => '0917 E013',
+    'replace' => 'E08D',
+  ),
+  56 => 
+  array (
+    'match' => '0918 E013',
+    'replace' => 'E08E',
+  ),
+  57 => 
+  array (
+    'match' => '0919 E013',
+    'replace' => 'E08F',
+  ),
+  58 => 
+  array (
+    'match' => '091A E013',
+    'replace' => 'E090',
+  ),
+  59 => 
+  array (
+    'match' => '091B E013',
+    'replace' => 'E091',
+  ),
+  60 => 
+  array (
+    'match' => '091C E013',
+    'replace' => 'E092',
+  ),
+  61 => 
+  array (
+    'match' => '091D E013',
+    'replace' => 'E093',
+  ),
+  62 => 
+  array (
+    'match' => '091E E013',
+    'replace' => 'E094',
+  ),
+  63 => 
+  array (
+    'match' => '091F E013',
+    'replace' => 'E095',
+  ),
+  64 => 
+  array (
+    'match' => '0920 E013',
+    'replace' => 'E096',
+  ),
+  65 => 
+  array (
+    'match' => '0921 E013',
+    'replace' => 'E097',
+  ),
+  66 => 
+  array (
+    'match' => '0922 E013',
+    'replace' => 'E098',
+  ),
+  67 => 
+  array (
+    'match' => '0923 E013',
+    'replace' => 'E099',
+  ),
+  68 => 
+  array (
+    'match' => '0924 E013',
+    'replace' => 'E09A',
+  ),
+  69 => 
+  array (
+    'match' => '0925 E013',
+    'replace' => 'E09B',
+  ),
+  70 => 
+  array (
+    'match' => '0926 E013',
+    'replace' => 'E09C',
+  ),
+  71 => 
+  array (
+    'match' => '0927 E013',
+    'replace' => 'E09D',
+  ),
+  72 => 
+  array (
+    'match' => '0928 E013',
+    'replace' => 'E09E',
+  ),
+  73 => 
+  array (
+    'match' => '092A E013',
+    'replace' => 'E09F',
+  ),
+  74 => 
+  array (
+    'match' => '092B E013',
+    'replace' => 'E0A0',
+  ),
+  75 => 
+  array (
+    'match' => '092C E013',
+    'replace' => 'E0A1',
+  ),
+  76 => 
+  array (
+    'match' => '092D E013',
+    'replace' => 'E0A2',
+  ),
+  77 => 
+  array (
+    'match' => '092E E013',
+    'replace' => 'E0A3',
+  ),
+  78 => 
+  array (
+    'match' => '092F E013',
+    'replace' => 'E0A4',
+  ),
+  79 => 
+  array (
+    'match' => '0930 E013',
+    'replace' => 'E0A5',
+  ),
+  80 => 
+  array (
+    'match' => '0932 E013',
+    'replace' => 'E0A6',
+  ),
+  81 => 
+  array (
+    'match' => '0933 E013',
+    'replace' => 'E0A7',
+  ),
+  82 => 
+  array (
+    'match' => '0935 E013',
+    'replace' => 'E0A8',
+  ),
+  83 => 
+  array (
+    'match' => '0936 E013',
+    'replace' => 'E0A9',
+  ),
+  84 => 
+  array (
+    'match' => '0937 E013',
+    'replace' => 'E0AA',
+  ),
+  85 => 
+  array (
+    'match' => '0938 E013',
+    'replace' => 'E0AB',
+  ),
+  86 => 
+  array (
+    'match' => '0939 E013',
+    'replace' => 'E0AC',
+  ),
+  87 => 
+  array (
+    'match' => 'E028 E013',
+    'replace' => 'E0AD',
+  ),
+  88 => 
+  array (
+    'match' => 'E029 E013',
+    'replace' => 'E0AE',
+  ),
+  89 => 
+  array (
+    'match' => '0958 E013',
+    'replace' => 'E0AF',
+  ),
+  90 => 
+  array (
+    'match' => '0959 E013',
+    'replace' => 'E0B0',
+  ),
+  91 => 
+  array (
+    'match' => '095A E013',
+    'replace' => 'E0B1',
+  ),
+  92 => 
+  array (
+    'match' => 'E02A E013',
+    'replace' => 'E0B2',
+  ),
+  93 => 
+  array (
+    'match' => 'E02B E013',
+    'replace' => 'E0B3',
+  ),
+  94 => 
+  array (
+    'match' => 'E02C E013',
+    'replace' => 'E0B4',
+  ),
+  95 => 
+  array (
+    'match' => 'E02D E013',
+    'replace' => 'E0B5',
+  ),
+  96 => 
+  array (
+    'match' => '095B E013',
+    'replace' => 'E0B6',
+  ),
+  97 => 
+  array (
+    'match' => 'E02E E013',
+    'replace' => 'E0B7',
+  ),
+  98 => 
+  array (
+    'match' => 'E02F E013',
+    'replace' => 'E0B8',
+  ),
+  99 => 
+  array (
+    'match' => 'E030 E013',
+    'replace' => 'E0B9',
+  ),
+  100 => 
+  array (
+    'match' => 'E031 E013',
+    'replace' => 'E0BA',
+  ),
+  101 => 
+  array (
+    'match' => '095C E013',
+    'replace' => 'E0BB',
+  ),
+  102 => 
+  array (
+    'match' => '095D E013',
+    'replace' => 'E0BC',
+  ),
+  103 => 
+  array (
+    'match' => 'E032 E013',
+    'replace' => 'E0BD',
+  ),
+  104 => 
+  array (
+    'match' => 'E033 E013',
+    'replace' => 'E0BE',
+  ),
+  105 => 
+  array (
+    'match' => 'E034 E013',
+    'replace' => 'E0BF',
+  ),
+  106 => 
+  array (
+    'match' => 'E035 E013',
+    'replace' => 'E0C0',
+  ),
+  107 => 
+  array (
+    'match' => 'E036 E013',
+    'replace' => 'E0C1',
+  ),
+  108 => 
+  array (
+    'match' => '0929 E013',
+    'replace' => 'E0C2',
+  ),
+  109 => 
+  array (
+    'match' => 'E037 E013',
+    'replace' => 'E0C3',
+  ),
+  110 => 
+  array (
+    'match' => '095E E013',
+    'replace' => 'E0C4',
+  ),
+  111 => 
+  array (
+    'match' => 'E038 E013',
+    'replace' => 'E0C5',
+  ),
+  112 => 
+  array (
+    'match' => 'E039 E013',
+    'replace' => 'E0C6',
+  ),
+  113 => 
+  array (
+    'match' => 'E03A E013',
+    'replace' => 'E0C7',
+  ),
+  114 => 
+  array (
+    'match' => '095F E013',
+    'replace' => 'E0C8',
+  ),
+  115 => 
+  array (
+    'match' => '0931 E013',
+    'replace' => 'E0C9',
+  ),
+  116 => 
+  array (
+    'match' => 'E03B E013',
+    'replace' => 'E0CA',
+  ),
+  117 => 
+  array (
+    'match' => '0934 E013',
+    'replace' => 'E0CB',
+  ),
+  118 => 
+  array (
+    'match' => 'E03C E013',
+    'replace' => 'E0CC',
+  ),
+  119 => 
+  array (
+    'match' => 'E03D E013',
+    'replace' => 'E0CD',
+  ),
+  120 => 
+  array (
+    'match' => 'E03E E013',
+    'replace' => 'E0CE',
+  ),
+  121 => 
+  array (
+    'match' => 'E03F E013',
+    'replace' => 'E0CF',
+  ),
+  122 => 
+  array (
+    'match' => 'E040 E013',
+    'replace' => 'E0D0',
+  ),
+  123 => 
+  array (
+    'match' => 'E041 E013',
+    'replace' => 'E0D1',
+  ),
+  124 => 
+  array (
+    'match' => 'E042 E013',
+    'replace' => 'E0D2',
+  ),
+  125 => 
+  array (
+    'match' => 'E028 E013',
+    'replace' => 'E0AD',
+  ),
+  126 => 
+  array (
+    'match' => 'E029 E013',
+    'replace' => 'E0AE',
+  ),
+  127 => 
+  array (
+    'match' => '0915 E00E',
+    'replace' => 'E043',
+  ),
+  128 => 
+  array (
+    'match' => '0916 E00E',
+    'replace' => 'E044',
+  ),
+  129 => 
+  array (
+    'match' => '0917 E00E',
+    'replace' => 'E045',
+  ),
+  130 => 
+  array (
+    'match' => '0918 E00E',
+    'replace' => 'E046',
+  ),
+  131 => 
+  array (
+    'match' => '0919 E00E',
+    'replace' => 'E047',
+  ),
+  132 => 
+  array (
+    'match' => '091A E00E',
+    'replace' => 'E048',
+  ),
+  133 => 
+  array (
+    'match' => '091B E00E',
+    'replace' => 'E049',
+  ),
+  134 => 
+  array (
+    'match' => '091C E00E',
+    'replace' => 'E04A',
+  ),
+  135 => 
+  array (
+    'match' => '091D E00E',
+    'replace' => 'E04B',
+  ),
+  136 => 
+  array (
+    'match' => '091E E00E',
+    'replace' => 'E04C',
+  ),
+  137 => 
+  array (
+    'match' => '091F E00E',
+    'replace' => 'E04D',
+  ),
+  138 => 
+  array (
+    'match' => '0920 E00E',
+    'replace' => 'E04E',
+  ),
+  139 => 
+  array (
+    'match' => '0921 E00E',
+    'replace' => 'E04F',
+  ),
+  140 => 
+  array (
+    'match' => '0922 E00E',
+    'replace' => 'E050',
+  ),
+  141 => 
+  array (
+    'match' => '0923 E00E',
+    'replace' => 'E051',
+  ),
+  142 => 
+  array (
+    'match' => '0924 E00E',
+    'replace' => 'E052',
+  ),
+  143 => 
+  array (
+    'match' => '0925 E00E',
+    'replace' => 'E053',
+  ),
+  144 => 
+  array (
+    'match' => '0926 E00E',
+    'replace' => 'E054',
+  ),
+  145 => 
+  array (
+    'match' => '0927 E00E',
+    'replace' => 'E055',
+  ),
+  146 => 
+  array (
+    'match' => '0928 E00E',
+    'replace' => 'E056',
+  ),
+  147 => 
+  array (
+    'match' => '092A E00E',
+    'replace' => 'E057',
+  ),
+  148 => 
+  array (
+    'match' => '092B E00E',
+    'replace' => 'E058',
+  ),
+  149 => 
+  array (
+    'match' => '092C E00E',
+    'replace' => 'E059',
+  ),
+  150 => 
+  array (
+    'match' => '092D E00E',
+    'replace' => 'E05A',
+  ),
+  151 => 
+  array (
+    'match' => '092E E00E',
+    'replace' => 'E05B',
+  ),
+  152 => 
+  array (
+    'match' => '092F E00E',
+    'replace' => 'E05C',
+  ),
+  153 => 
+  array (
+    'match' => '0930 E00E',
+    'replace' => 'E05D',
+  ),
+  154 => 
+  array (
+    'match' => '0932 E00E',
+    'replace' => 'E05E',
+  ),
+  155 => 
+  array (
+    'match' => '0933 E00E',
+    'replace' => 'E05F',
+  ),
+  156 => 
+  array (
+    'match' => '0935 E00E',
+    'replace' => 'E060',
+  ),
+  157 => 
+  array (
+    'match' => '0936 E00E',
+    'replace' => 'E061',
+  ),
+  158 => 
+  array (
+    'match' => '0937 E00E',
+    'replace' => 'E062',
+  ),
+  159 => 
+  array (
+    'match' => '0938 E00E',
+    'replace' => 'E063',
+  ),
+  160 => 
+  array (
+    'match' => '0939 E00E',
+    'replace' => 'E064',
+  ),
+  161 => 
+  array (
+    'match' => 'E028 E00E',
+    'replace' => 'E065',
+  ),
+  162 => 
+  array (
+    'match' => 'E029 E00E',
+    'replace' => 'E066',
+  ),
+  163 => 
+  array (
+    'match' => 'E08B E00E',
+    'replace' => 'E0D3',
+  ),
+  164 => 
+  array (
+    'match' => 'E08C E00E',
+    'replace' => 'E0D4',
+  ),
+  165 => 
+  array (
+    'match' => 'E08D E00E',
+    'replace' => 'E0D5',
+  ),
+  166 => 
+  array (
+    'match' => 'E08E E00E',
+    'replace' => 'E0D6',
+  ),
+  167 => 
+  array (
+    'match' => 'E08F E00E',
+    'replace' => 'E0D7',
+  ),
+  168 => 
+  array (
+    'match' => 'E090 E00E',
+    'replace' => 'E0D8',
+  ),
+  169 => 
+  array (
+    'match' => 'E091 E00E',
+    'replace' => 'E0D9',
+  ),
+  170 => 
+  array (
+    'match' => 'E092 E00E',
+    'replace' => 'E0DA',
+  ),
+  171 => 
+  array (
+    'match' => 'E093 E00E',
+    'replace' => 'E0DB',
+  ),
+  172 => 
+  array (
+    'match' => 'E094 E00E',
+    'replace' => 'E0DC',
+  ),
+  173 => 
+  array (
+    'match' => 'E095 E00E',
+    'replace' => 'E0DD',
+  ),
+  174 => 
+  array (
+    'match' => 'E096 E00E',
+    'replace' => 'E0DE',
+  ),
+  175 => 
+  array (
+    'match' => 'E097 E00E',
+    'replace' => 'E0DF',
+  ),
+  176 => 
+  array (
+    'match' => 'E098 E00E',
+    'replace' => 'E0E0',
+  ),
+  177 => 
+  array (
+    'match' => 'E099 E00E',
+    'replace' => 'E0E1',
+  ),
+  178 => 
+  array (
+    'match' => 'E09A E00E',
+    'replace' => 'E0E2',
+  ),
+  179 => 
+  array (
+    'match' => 'E09B E00E',
+    'replace' => 'E0E3',
+  ),
+  180 => 
+  array (
+    'match' => 'E09C E00E',
+    'replace' => 'E0E4',
+  ),
+  181 => 
+  array (
+    'match' => 'E09D E00E',
+    'replace' => 'E0E5',
+  ),
+  182 => 
+  array (
+    'match' => 'E09E E00E',
+    'replace' => 'E0E6',
+  ),
+  183 => 
+  array (
+    'match' => 'E09F E00E',
+    'replace' => 'E0E7',
+  ),
+  184 => 
+  array (
+    'match' => 'E0A0 E00E',
+    'replace' => 'E0E8',
+  ),
+  185 => 
+  array (
+    'match' => 'E0A1 E00E',
+    'replace' => 'E0E9',
+  ),
+  186 => 
+  array (
+    'match' => 'E0A2 E00E',
+    'replace' => 'E0EA',
+  ),
+  187 => 
+  array (
+    'match' => 'E0A3 E00E',
+    'replace' => 'E0EB',
+  ),
+  188 => 
+  array (
+    'match' => 'E0A4 E00E',
+    'replace' => 'E0EC',
+  ),
+  189 => 
+  array (
+    'match' => 'E0A5 E00E',
+    'replace' => 'E0ED',
+  ),
+  190 => 
+  array (
+    'match' => 'E0A6 E00E',
+    'replace' => 'E0EE',
+  ),
+  191 => 
+  array (
+    'match' => 'E0A7 E00E',
+    'replace' => 'E0EF',
+  ),
+  192 => 
+  array (
+    'match' => 'E0A8 E00E',
+    'replace' => 'E0F0',
+  ),
+  193 => 
+  array (
+    'match' => 'E0A9 E00E',
+    'replace' => 'E0F1',
+  ),
+  194 => 
+  array (
+    'match' => 'E0AA E00E',
+    'replace' => 'E0F2',
+  ),
+  195 => 
+  array (
+    'match' => 'E0AB E00E',
+    'replace' => 'E0F3',
+  ),
+  196 => 
+  array (
+    'match' => 'E0AC E00E',
+    'replace' => 'E0F4',
+  ),
+  197 => 
+  array (
+    'match' => 'E0AD E00E',
+    'replace' => 'E0F5',
+  ),
+  198 => 
+  array (
+    'match' => 'E0AE E00E',
+    'replace' => 'E0F6',
+  ),
+  199 => 
+  array (
+    'match' => 'E0AF E00E',
+    'replace' => 'E0F7',
+  ),
+  200 => 
+  array (
+    'match' => 'E0B0 E00E',
+    'replace' => 'E0F8',
+  ),
+  201 => 
+  array (
+    'match' => 'E0B1 E00E',
+    'replace' => 'E0F9',
+  ),
+  202 => 
+  array (
+    'match' => 'E0B2 E00E',
+    'replace' => 'E0FA',
+  ),
+  203 => 
+  array (
+    'match' => 'E0B3 E00E',
+    'replace' => 'E0FB',
+  ),
+  204 => 
+  array (
+    'match' => 'E0B4 E00E',
+    'replace' => 'E0FC',
+  ),
+  205 => 
+  array (
+    'match' => 'E0B5 E00E',
+    'replace' => 'E0FD',
+  ),
+  206 => 
+  array (
+    'match' => 'E0B6 E00E',
+    'replace' => 'E0FE',
+  ),
+  207 => 
+  array (
+    'match' => 'E0B7 E00E',
+    'replace' => 'E0FF',
+  ),
+  208 => 
+  array (
+    'match' => 'E0B8 E00E',
+    'replace' => 'E100',
+  ),
+  209 => 
+  array (
+    'match' => 'E0B9 E00E',
+    'replace' => 'E101',
+  ),
+  210 => 
+  array (
+    'match' => 'E0BA E00E',
+    'replace' => 'E102',
+  ),
+  211 => 
+  array (
+    'match' => 'E0BB E00E',
+    'replace' => 'E103',
+  ),
+  212 => 
+  array (
+    'match' => 'E0BC E00E',
+    'replace' => 'E104',
+  ),
+  213 => 
+  array (
+    'match' => 'E0BD E00E',
+    'replace' => 'E105',
+  ),
+  214 => 
+  array (
+    'match' => 'E0BE E00E',
+    'replace' => 'E106',
+  ),
+  215 => 
+  array (
+    'match' => 'E0BF E00E',
+    'replace' => 'E107',
+  ),
+  216 => 
+  array (
+    'match' => 'E0C0 E00E',
+    'replace' => 'E108',
+  ),
+  217 => 
+  array (
+    'match' => 'E0C1 E00E',
+    'replace' => 'E109',
+  ),
+  218 => 
+  array (
+    'match' => 'E0C2 E00E',
+    'replace' => 'E10A',
+  ),
+  219 => 
+  array (
+    'match' => 'E0C3 E00E',
+    'replace' => 'E10B',
+  ),
+  220 => 
+  array (
+    'match' => 'E0C4 E00E',
+    'replace' => 'E10C',
+  ),
+  221 => 
+  array (
+    'match' => 'E0C5 E00E',
+    'replace' => 'E10D',
+  ),
+  222 => 
+  array (
+    'match' => 'E0C6 E00E',
+    'replace' => 'E10E',
+  ),
+  223 => 
+  array (
+    'match' => 'E0C7 E00E',
+    'replace' => 'E10F',
+  ),
+  224 => 
+  array (
+    'match' => 'E0C8 E00E',
+    'replace' => 'E110',
+  ),
+  225 => 
+  array (
+    'match' => 'E0C9 E00E',
+    'replace' => 'E111',
+  ),
+  226 => 
+  array (
+    'match' => 'E0CA E00E',
+    'replace' => 'E112',
+  ),
+  227 => 
+  array (
+    'match' => 'E0CB E00E',
+    'replace' => 'E113',
+  ),
+  228 => 
+  array (
+    'match' => 'E0CC E00E',
+    'replace' => 'E114',
+  ),
+  229 => 
+  array (
+    'match' => 'E0CD E00E',
+    'replace' => 'E115',
+  ),
+  230 => 
+  array (
+    'match' => 'E0CE E00E',
+    'replace' => 'E116',
+  ),
+  231 => 
+  array (
+    'match' => 'E0CF E00E',
+    'replace' => 'E117',
+  ),
+  232 => 
+  array (
+    'match' => 'E0D0 E00E',
+    'replace' => 'E118',
+  ),
+  233 => 
+  array (
+    'match' => 'E0D1 E00E',
+    'replace' => 'E119',
+  ),
+  234 => 
+  array (
+    'match' => 'E0D2 E00E',
+    'replace' => 'E11A',
+  ),
+  235 => 
+  array (
+    'match' => '0958 E00E',
+    'replace' => 'E067',
+  ),
+  236 => 
+  array (
+    'match' => '0959 E00E',
+    'replace' => 'E068',
+  ),
+  237 => 
+  array (
+    'match' => '095A E00E',
+    'replace' => 'E069',
+  ),
+  238 => 
+  array (
+    'match' => 'E02A E00E',
+    'replace' => 'E06A',
+  ),
+  239 => 
+  array (
+    'match' => 'E02B E00E',
+    'replace' => 'E06B',
+  ),
+  240 => 
+  array (
+    'match' => 'E02C E00E',
+    'replace' => 'E06C',
+  ),
+  241 => 
+  array (
+    'match' => 'E02D E00E',
+    'replace' => 'E06D',
+  ),
+  242 => 
+  array (
+    'match' => '095B E00E',
+    'replace' => 'E06E',
+  ),
+  243 => 
+  array (
+    'match' => 'E02E E00E',
+    'replace' => 'E06F',
+  ),
+  244 => 
+  array (
+    'match' => 'E02F E00E',
+    'replace' => 'E070',
+  ),
+  245 => 
+  array (
+    'match' => 'E030 E00E',
+    'replace' => 'E071',
+  ),
+  246 => 
+  array (
+    'match' => 'E031 E00E',
+    'replace' => 'E072',
+  ),
+  247 => 
+  array (
+    'match' => '095C E00E',
+    'replace' => 'E073',
+  ),
+  248 => 
+  array (
+    'match' => '095D E00E',
+    'replace' => 'E074',
+  ),
+  249 => 
+  array (
+    'match' => 'E032 E00E',
+    'replace' => 'E075',
+  ),
+  250 => 
+  array (
+    'match' => 'E033 E00E',
+    'replace' => 'E076',
+  ),
+  251 => 
+  array (
+    'match' => 'E034 E00E',
+    'replace' => 'E077',
+  ),
+  252 => 
+  array (
+    'match' => 'E035 E00E',
+    'replace' => 'E078',
+  ),
+  253 => 
+  array (
+    'match' => 'E036 E00E',
+    'replace' => 'E079',
+  ),
+  254 => 
+  array (
+    'match' => '0929 E00E',
+    'replace' => 'E07A',
+  ),
+  255 => 
+  array (
+    'match' => 'E037 E00E',
+    'replace' => 'E07B',
+  ),
+  256 => 
+  array (
+    'match' => '095E E00E',
+    'replace' => 'E07C',
+  ),
+  257 => 
+  array (
+    'match' => 'E038 E00E',
+    'replace' => 'E07D',
+  ),
+  258 => 
+  array (
+    'match' => 'E039 E00E',
+    'replace' => 'E07E',
+  ),
+  259 => 
+  array (
+    'match' => 'E03A E00E',
+    'replace' => 'E07F',
+  ),
+  260 => 
+  array (
+    'match' => '095F E00E',
+    'replace' => 'E080',
+  ),
+  261 => 
+  array (
+    'match' => '0931 E00E',
+    'replace' => 'E081',
+  ),
+  262 => 
+  array (
+    'match' => 'E03B E00E',
+    'replace' => 'E082',
+  ),
+  263 => 
+  array (
+    'match' => '0934 E00E',
+    'replace' => 'E083',
+  ),
+  264 => 
+  array (
+    'match' => 'E03C E00E',
+    'replace' => 'E084',
+  ),
+  265 => 
+  array (
+    'match' => 'E03D E00E',
+    'replace' => 'E085',
+  ),
+  266 => 
+  array (
+    'match' => 'E03E E00E',
+    'replace' => 'E086',
+  ),
+  267 => 
+  array (
+    'match' => 'E03F E00E',
+    'replace' => 'E087',
+  ),
+  268 => 
+  array (
+    'match' => 'E040 E00E',
+    'replace' => 'E088',
+  ),
+  269 => 
+  array (
+    'match' => 'E041 E00E',
+    'replace' => 'E089',
+  ),
+  270 => 
+  array (
+    'match' => 'E042 E00E',
+    'replace' => 'E08A',
+  ),
+  271 => 
+  array (
+    'match' => 'E043 0924',
+    'replace' => 'E11B',
+  ),
+  272 => 
+  array (
+    'match' => 'E044 0928',
+    'replace' => 'E11C',
+  ),
+  273 => 
+  array (
+    'match' => 'E047 092E',
+    'replace' => 'E11D',
+  ),
+  274 => 
+  array (
+    'match' => 'E052 0924',
+    'replace' => 'E11E',
+  ),
+  275 => 
+  array (
+    'match' => 'E052 0928',
+    'replace' => 'E11F',
+  ),
+  276 => 
+  array (
+    'match' => 'E054 0917',
+    'replace' => 'E120',
+  ),
+  277 => 
+  array (
+    'match' => 'E054 0918',
+    'replace' => 'E121',
+  ),
+  278 => 
+  array (
+    'match' => 'E054 0926',
+    'replace' => 'E122',
+  ),
+  279 => 
+  array (
+    'match' => 'E054 0927',
+    'replace' => 'E123',
+  ),
+  280 => 
+  array (
+    'match' => 'E054 0928',
+    'replace' => 'E124',
+  ),
+  281 => 
+  array (
+    'match' => 'E054 092C',
+    'replace' => 'E125',
+  ),
+  282 => 
+  array (
+    'match' => 'E054 092D',
+    'replace' => 'E126',
+  ),
+  283 => 
+  array (
+    'match' => 'E054 E05C 092D',
+    'replace' => 'E127',
+  ),
+  284 => 
+  array (
+    'match' => 'E054 092F',
+    'replace' => 'E128',
+  ),
+  285 => 
+  array (
+    'match' => 'E054 0935',
+    'replace' => 'E129',
+  ),
+  286 => 
+  array (
+    'match' => 'E057 0924',
+    'replace' => 'E12A',
+  ),
+  287 => 
+  array (
+    'match' => 'E061 0928',
+    'replace' => 'E12B',
+  ),
+  288 => 
+  array (
+    'match' => 'E061 091A',
+    'replace' => 'E12C',
+  ),
+  289 => 
+  array (
+    'match' => 'E061 0932',
+    'replace' => 'E12D',
+  ),
+  290 => 
+  array (
+    'match' => 'E061 0935',
+    'replace' => 'E12E',
+  ),
+  291 => 
+  array (
+    'match' => 'E062 091F',
+    'replace' => 'E12F',
+  ),
+  292 => 
+  array (
+    'match' => 'E062 0920',
+    'replace' => 'E130',
+  ),
+  293 => 
+  array (
+    'match' => 'E062 E095',
+    'replace' => 'E131',
+  ),
+  294 => 
+  array (
+    'match' => 'E062 E096',
+    'replace' => 'E132',
+  ),
+  295 => 
+  array (
+    'match' => 'E063 E09A',
+    'replace' => 'E133',
+  ),
+  296 => 
+  array (
+    'match' => 'E064 0928',
+    'replace' => 'E134',
+  ),
+  297 => 
+  array (
+    'match' => 'E064 092E',
+    'replace' => 'E135',
+  ),
+  298 => 
+  array (
+    'match' => 'E064 092F',
+    'replace' => 'E136',
+  ),
+  299 => 
+  array (
+    'match' => 'E064 0923',
+    'replace' => 'E137',
+  ),
+  300 => 
+  array (
+    'match' => 'E064 0932',
+    'replace' => 'E138',
+  ),
+  301 => 
+  array (
+    'match' => 'E064 0935',
+    'replace' => 'E139',
+  ),
+  302 => 
+  array (
+    'match' => 'E044 E056',
+    'replace' => 'E13B',
+  ),
+  303 => 
+  array (
+    'match' => 'E052 E052',
+    'replace' => 'E13D',
+  ),
+  304 => 
+  array (
+    'match' => 'E052 E056',
+    'replace' => 'E13E',
+  ),
+  305 => 
+  array (
+    'match' => 'E054 E05B',
+    'replace' => 'E13F',
+  ),
+  306 => 
+  array (
+    'match' => 'E057 E052',
+    'replace' => 'E140',
+  ),
+  307 => 
+  array (
+    'match' => 'E061 E056',
+    'replace' => 'E141',
+  ),
+  308 => 
+  array (
+    'match' => 'E061 E048',
+    'replace' => 'E142',
+  ),
+  309 => 
+  array (
+    'match' => 'E061 E05E',
+    'replace' => 'E143',
+  ),
+  310 => 
+  array (
+    'match' => 'E061 E060',
+    'replace' => 'E144',
+  ),
+  311 => 
+  array (
+    'match' => 'E063 E0E2',
+    'replace' => 'E145',
+  ),
+  312 => 
+  array (
+    'match' => 'E047 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E047 E015 \\1',
+  ),
+  313 => 
+  array (
+    'match' => 'E04D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E04D E015 \\1',
+  ),
+  314 => 
+  array (
+    'match' => 'E04E ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E04E E015 \\1',
+  ),
+  315 => 
+  array (
+    'match' => 'E04F ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E04F E015 \\1',
+  ),
+  316 => 
+  array (
+    'match' => 'E050 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E050 E015 \\1',
+  ),
+  317 => 
+  array (
+    'match' => 'E054 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E054 E015 \\1',
+  ),
+  318 => 
+  array (
+    'match' => 'E06B ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E06B E015 \\1',
+  ),
+  319 => 
+  array (
+    'match' => 'E071 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E071 E015 \\1',
+  ),
+  320 => 
+  array (
+    'match' => 'E072 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E072 E015 \\1',
+  ),
+  321 => 
+  array (
+    'match' => 'E073 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E073 E015 \\1',
+  ),
+  322 => 
+  array (
+    'match' => 'E074 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E074 E015 \\1',
+  ),
+  323 => 
+  array (
+    'match' => 'E078 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E078 E015 \\1',
+  ),
+  324 => 
+  array (
+    'match' => 'E0FB ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E0FB E015 \\1',
+  ),
+  325 => 
+  array (
+    'match' => 'E101 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E101 E015 \\1',
+  ),
+  326 => 
+  array (
+    'match' => 'E102 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E102 E015 \\1',
+  ),
+  327 => 
+  array (
+    'match' => 'E103 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E103 E015 \\1',
+  ),
+  328 => 
+  array (
+    'match' => 'E104 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E104 E015 \\1',
+  ),
+  329 => 
+  array (
+    'match' => 'E108 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) E015)',
+    'replace' => 'E108 E015 \\1',
+  ),
+  330 => 
+  array (
+    'match' => 'E047 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E047 E015 \\1',
+  ),
+  331 => 
+  array (
+    'match' => 'E04D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E04D E015 \\1',
+  ),
+  332 => 
+  array (
+    'match' => 'E04E ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E04E E015 \\1',
+  ),
+  333 => 
+  array (
+    'match' => 'E04F ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E04F E015 \\1',
+  ),
+  334 => 
+  array (
+    'match' => 'E050 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E050 E015 \\1',
+  ),
+  335 => 
+  array (
+    'match' => 'E054 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E054 E015 \\1',
+  ),
+  336 => 
+  array (
+    'match' => 'E06B ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E06B E015 \\1',
+  ),
+  337 => 
+  array (
+    'match' => 'E071 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E071 E015 \\1',
+  ),
+  338 => 
+  array (
+    'match' => 'E072 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E072 E015 \\1',
+  ),
+  339 => 
+  array (
+    'match' => 'E073 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E073 E015 \\1',
+  ),
+  340 => 
+  array (
+    'match' => 'E074 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E074 E015 \\1',
+  ),
+  341 => 
+  array (
+    'match' => 'E078 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E078 E015 \\1',
+  ),
+  342 => 
+  array (
+    'match' => 'E0FB ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E0FB E015 \\1',
+  ),
+  343 => 
+  array (
+    'match' => 'E101 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E101 E015 \\1',
+  ),
+  344 => 
+  array (
+    'match' => 'E102 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E102 E015 \\1',
+  ),
+  345 => 
+  array (
+    'match' => 'E103 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E103 E015 \\1',
+  ),
+  346 => 
+  array (
+    'match' => 'E104 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E104 E015 \\1',
+  ),
+  347 => 
+  array (
+    'match' => 'E108 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951) E015)',
+    'replace' => 'E108 E015 \\1',
+  ),
+  348 => 
+  array (
+    'match' => 'E047 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E047 E015 \\1',
+  ),
+  349 => 
+  array (
+    'match' => 'E04D ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E04D E015 \\1',
+  ),
+  350 => 
+  array (
+    'match' => 'E04E ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E04E E015 \\1',
+  ),
+  351 => 
+  array (
+    'match' => 'E04F ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E04F E015 \\1',
+  ),
+  352 => 
+  array (
+    'match' => 'E050 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E050 E015 \\1',
+  ),
+  353 => 
+  array (
+    'match' => 'E054 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E054 E015 \\1',
+  ),
+  354 => 
+  array (
+    'match' => 'E06B ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E06B E015 \\1',
+  ),
+  355 => 
+  array (
+    'match' => 'E071 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E071 E015 \\1',
+  ),
+  356 => 
+  array (
+    'match' => 'E072 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E072 E015 \\1',
+  ),
+  357 => 
+  array (
+    'match' => 'E073 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E073 E015 \\1',
+  ),
+  358 => 
+  array (
+    'match' => 'E074 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E074 E015 \\1',
+  ),
+  359 => 
+  array (
+    'match' => 'E078 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E078 E015 \\1',
+  ),
+  360 => 
+  array (
+    'match' => 'E0FB ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E0FB E015 \\1',
+  ),
+  361 => 
+  array (
+    'match' => 'E101 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E101 E015 \\1',
+  ),
+  362 => 
+  array (
+    'match' => 'E102 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E102 E015 \\1',
+  ),
+  363 => 
+  array (
+    'match' => 'E103 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E103 E015 \\1',
+  ),
+  364 => 
+  array (
+    'match' => 'E104 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E104 E015 \\1',
+  ),
+  365 => 
+  array (
+    'match' => 'E108 ((0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029) (0941|0942|0943|0944|0952|E013) E015)',
+    'replace' => 'E108 E015 \\1',
+  ),
+  366 => 
+  array (
+    'match' => '200D E00E',
+    'replace' => '094D',
+  ),
+  367 => 
+  array (
+    'match' => 'E00C',
+    'replace' => '094D',
+  ),
+  368 => 
+  array (
+    'match' => 'E00E',
+    'replace' => '094D',
+  ),
+  369 => 
+  array (
+    'match' => 'E043 200D',
+    'replace' => 'E043',
+  ),
+  370 => 
+  array (
+    'match' => 'E044 200D',
+    'replace' => 'E044',
+  ),
+  371 => 
+  array (
+    'match' => 'E045 200D',
+    'replace' => 'E045',
+  ),
+  372 => 
+  array (
+    'match' => 'E046 200D',
+    'replace' => 'E046',
+  ),
+  373 => 
+  array (
+    'match' => 'E047 200D',
+    'replace' => 'E047',
+  ),
+  374 => 
+  array (
+    'match' => 'E048 200D',
+    'replace' => 'E048',
+  ),
+  375 => 
+  array (
+    'match' => 'E049 200D',
+    'replace' => 'E049',
+  ),
+  376 => 
+  array (
+    'match' => 'E04A 200D',
+    'replace' => 'E04A',
+  ),
+  377 => 
+  array (
+    'match' => 'E04B 200D',
+    'replace' => 'E04B',
+  ),
+  378 => 
+  array (
+    'match' => 'E04C 200D',
+    'replace' => 'E04C',
+  ),
+  379 => 
+  array (
+    'match' => 'E04D 200D',
+    'replace' => 'E04D',
+  ),
+  380 => 
+  array (
+    'match' => 'E04E 200D',
+    'replace' => 'E04E',
+  ),
+  381 => 
+  array (
+    'match' => 'E04F 200D',
+    'replace' => 'E04F',
+  ),
+  382 => 
+  array (
+    'match' => 'E050 200D',
+    'replace' => 'E050',
+  ),
+  383 => 
+  array (
+    'match' => 'E051 200D',
+    'replace' => 'E051',
+  ),
+  384 => 
+  array (
+    'match' => 'E052 200D',
+    'replace' => 'E052',
+  ),
+  385 => 
+  array (
+    'match' => 'E053 200D',
+    'replace' => 'E053',
+  ),
+  386 => 
+  array (
+    'match' => 'E054 200D',
+    'replace' => 'E054',
+  ),
+  387 => 
+  array (
+    'match' => 'E055 200D',
+    'replace' => 'E055',
+  ),
+  388 => 
+  array (
+    'match' => 'E056 200D',
+    'replace' => 'E056',
+  ),
+  389 => 
+  array (
+    'match' => 'E057 200D',
+    'replace' => 'E057',
+  ),
+  390 => 
+  array (
+    'match' => 'E058 200D',
+    'replace' => 'E058',
+  ),
+  391 => 
+  array (
+    'match' => 'E059 200D',
+    'replace' => 'E059',
+  ),
+  392 => 
+  array (
+    'match' => 'E05A 200D',
+    'replace' => 'E05A',
+  ),
+  393 => 
+  array (
+    'match' => 'E05B 200D',
+    'replace' => 'E05B',
+  ),
+  394 => 
+  array (
+    'match' => 'E05C 200D',
+    'replace' => 'E05C',
+  ),
+  395 => 
+  array (
+    'match' => 'E05D 200D',
+    'replace' => 'E05D',
+  ),
+  396 => 
+  array (
+    'match' => 'E05E 200D',
+    'replace' => 'E05E',
+  ),
+  397 => 
+  array (
+    'match' => 'E05F 200D',
+    'replace' => 'E05F',
+  ),
+  398 => 
+  array (
+    'match' => 'E060 200D',
+    'replace' => 'E060',
+  ),
+  399 => 
+  array (
+    'match' => 'E061 200D',
+    'replace' => 'E061',
+  ),
+  400 => 
+  array (
+    'match' => 'E062 200D',
+    'replace' => 'E062',
+  ),
+  401 => 
+  array (
+    'match' => 'E063 200D',
+    'replace' => 'E063',
+  ),
+  402 => 
+  array (
+    'match' => 'E064 200D',
+    'replace' => 'E064',
+  ),
+  403 => 
+  array (
+    'match' => 'E065 200D',
+    'replace' => 'E065',
+  ),
+  404 => 
+  array (
+    'match' => 'E066 200D',
+    'replace' => 'E066',
+  ),
+  405 => 
+  array (
+    'match' => 'E067 200D',
+    'replace' => 'E067',
+  ),
+  406 => 
+  array (
+    'match' => 'E068 200D',
+    'replace' => 'E068',
+  ),
+  407 => 
+  array (
+    'match' => 'E069 200D',
+    'replace' => 'E069',
+  ),
+  408 => 
+  array (
+    'match' => 'E06A 200D',
+    'replace' => 'E06A',
+  ),
+  409 => 
+  array (
+    'match' => 'E06B 200D',
+    'replace' => 'E06B',
+  ),
+  410 => 
+  array (
+    'match' => 'E06C 200D',
+    'replace' => 'E06C',
+  ),
+  411 => 
+  array (
+    'match' => 'E06D 200D',
+    'replace' => 'E06D',
+  ),
+  412 => 
+  array (
+    'match' => 'E06E 200D',
+    'replace' => 'E06E',
+  ),
+  413 => 
+  array (
+    'match' => 'E06F 200D',
+    'replace' => 'E06F',
+  ),
+  414 => 
+  array (
+    'match' => 'E070 200D',
+    'replace' => 'E070',
+  ),
+  415 => 
+  array (
+    'match' => 'E071 200D',
+    'replace' => 'E071',
+  ),
+  416 => 
+  array (
+    'match' => 'E072 200D',
+    'replace' => 'E072',
+  ),
+  417 => 
+  array (
+    'match' => 'E073 200D',
+    'replace' => 'E073',
+  ),
+  418 => 
+  array (
+    'match' => 'E074 200D',
+    'replace' => 'E074',
+  ),
+  419 => 
+  array (
+    'match' => 'E075 200D',
+    'replace' => 'E075',
+  ),
+  420 => 
+  array (
+    'match' => 'E076 200D',
+    'replace' => 'E076',
+  ),
+  421 => 
+  array (
+    'match' => 'E077 200D',
+    'replace' => 'E077',
+  ),
+  422 => 
+  array (
+    'match' => 'E078 200D',
+    'replace' => 'E078',
+  ),
+  423 => 
+  array (
+    'match' => 'E079 200D',
+    'replace' => 'E079',
+  ),
+  424 => 
+  array (
+    'match' => 'E07A 200D',
+    'replace' => 'E07A',
+  ),
+  425 => 
+  array (
+    'match' => 'E07B 200D',
+    'replace' => 'E07B',
+  ),
+  426 => 
+  array (
+    'match' => 'E07C 200D',
+    'replace' => 'E07C',
+  ),
+  427 => 
+  array (
+    'match' => 'E07D 200D',
+    'replace' => 'E07D',
+  ),
+  428 => 
+  array (
+    'match' => 'E07E 200D',
+    'replace' => 'E07E',
+  ),
+  429 => 
+  array (
+    'match' => 'E07F 200D',
+    'replace' => 'E07F',
+  ),
+  430 => 
+  array (
+    'match' => 'E080 200D',
+    'replace' => 'E080',
+  ),
+  431 => 
+  array (
+    'match' => 'E081 200D',
+    'replace' => 'E081',
+  ),
+  432 => 
+  array (
+    'match' => 'E082 200D',
+    'replace' => 'E082',
+  ),
+  433 => 
+  array (
+    'match' => 'E083 200D',
+    'replace' => 'E083',
+  ),
+  434 => 
+  array (
+    'match' => 'E084 200D',
+    'replace' => 'E084',
+  ),
+  435 => 
+  array (
+    'match' => 'E085 200D',
+    'replace' => 'E085',
+  ),
+  436 => 
+  array (
+    'match' => 'E086 200D',
+    'replace' => 'E086',
+  ),
+  437 => 
+  array (
+    'match' => 'E087 200D',
+    'replace' => 'E087',
+  ),
+  438 => 
+  array (
+    'match' => 'E088 200D',
+    'replace' => 'E088',
+  ),
+  439 => 
+  array (
+    'match' => 'E089 200D',
+    'replace' => 'E089',
+  ),
+  440 => 
+  array (
+    'match' => 'E08A 200D',
+    'replace' => 'E08A',
+  ),
+  441 => 
+  array (
+    'match' => 'E0D3 200D',
+    'replace' => 'E0D3',
+  ),
+  442 => 
+  array (
+    'match' => 'E0D4 200D',
+    'replace' => 'E0D4',
+  ),
+  443 => 
+  array (
+    'match' => 'E0D5 200D',
+    'replace' => 'E0D5',
+  ),
+  444 => 
+  array (
+    'match' => 'E0D6 200D',
+    'replace' => 'E0D6',
+  ),
+  445 => 
+  array (
+    'match' => 'E0D7 200D',
+    'replace' => 'E0D7',
+  ),
+  446 => 
+  array (
+    'match' => 'E0D8 200D',
+    'replace' => 'E0D8',
+  ),
+  447 => 
+  array (
+    'match' => 'E0D9 200D',
+    'replace' => 'E0D9',
+  ),
+  448 => 
+  array (
+    'match' => 'E0DA 200D',
+    'replace' => 'E0DA',
+  ),
+  449 => 
+  array (
+    'match' => 'E0DB 200D',
+    'replace' => 'E0DB',
+  ),
+  450 => 
+  array (
+    'match' => 'E0DC 200D',
+    'replace' => 'E0DC',
+  ),
+  451 => 
+  array (
+    'match' => 'E0DD 200D',
+    'replace' => 'E0DD',
+  ),
+  452 => 
+  array (
+    'match' => 'E0DE 200D',
+    'replace' => 'E0DE',
+  ),
+  453 => 
+  array (
+    'match' => 'E0DF 200D',
+    'replace' => 'E0DF',
+  ),
+  454 => 
+  array (
+    'match' => 'E0E0 200D',
+    'replace' => 'E0E0',
+  ),
+  455 => 
+  array (
+    'match' => 'E0E1 200D',
+    'replace' => 'E0E1',
+  ),
+  456 => 
+  array (
+    'match' => 'E0E2 200D',
+    'replace' => 'E0E2',
+  ),
+  457 => 
+  array (
+    'match' => 'E0E3 200D',
+    'replace' => 'E0E3',
+  ),
+  458 => 
+  array (
+    'match' => 'E0E4 200D',
+    'replace' => 'E0E4',
+  ),
+  459 => 
+  array (
+    'match' => 'E0E5 200D',
+    'replace' => 'E0E5',
+  ),
+  460 => 
+  array (
+    'match' => 'E0E6 200D',
+    'replace' => 'E0E6',
+  ),
+  461 => 
+  array (
+    'match' => 'E0E7 200D',
+    'replace' => 'E0E7',
+  ),
+  462 => 
+  array (
+    'match' => 'E0E8 200D',
+    'replace' => 'E0E8',
+  ),
+  463 => 
+  array (
+    'match' => 'E0E9 200D',
+    'replace' => 'E0E9',
+  ),
+  464 => 
+  array (
+    'match' => 'E0EA 200D',
+    'replace' => 'E0EA',
+  ),
+  465 => 
+  array (
+    'match' => 'E0EB 200D',
+    'replace' => 'E0EB',
+  ),
+  466 => 
+  array (
+    'match' => 'E0EC 200D',
+    'replace' => 'E0EC',
+  ),
+  467 => 
+  array (
+    'match' => 'E0ED 200D',
+    'replace' => 'E0ED',
+  ),
+  468 => 
+  array (
+    'match' => 'E0EE 200D',
+    'replace' => 'E0EE',
+  ),
+  469 => 
+  array (
+    'match' => 'E0EF 200D',
+    'replace' => 'E0EF',
+  ),
+  470 => 
+  array (
+    'match' => 'E0F0 200D',
+    'replace' => 'E0F0',
+  ),
+  471 => 
+  array (
+    'match' => 'E0F1 200D',
+    'replace' => 'E0F1',
+  ),
+  472 => 
+  array (
+    'match' => 'E0F2 200D',
+    'replace' => 'E0F2',
+  ),
+  473 => 
+  array (
+    'match' => 'E0F3 200D',
+    'replace' => 'E0F3',
+  ),
+  474 => 
+  array (
+    'match' => 'E0F4 200D',
+    'replace' => 'E0F4',
+  ),
+  475 => 
+  array (
+    'match' => 'E0F5 200D',
+    'replace' => 'E0F5',
+  ),
+  476 => 
+  array (
+    'match' => 'E0F6 200D',
+    'replace' => 'E0F6',
+  ),
+  477 => 
+  array (
+    'match' => 'E0F7 200D',
+    'replace' => 'E0F7',
+  ),
+  478 => 
+  array (
+    'match' => 'E0F8 200D',
+    'replace' => 'E0F8',
+  ),
+  479 => 
+  array (
+    'match' => 'E0F9 200D',
+    'replace' => 'E0F9',
+  ),
+  480 => 
+  array (
+    'match' => 'E0FA 200D',
+    'replace' => 'E0FA',
+  ),
+  481 => 
+  array (
+    'match' => 'E0FB 200D',
+    'replace' => 'E0FB',
+  ),
+  482 => 
+  array (
+    'match' => 'E0FC 200D',
+    'replace' => 'E0FC',
+  ),
+  483 => 
+  array (
+    'match' => 'E0FD 200D',
+    'replace' => 'E0FD',
+  ),
+  484 => 
+  array (
+    'match' => 'E0FE 200D',
+    'replace' => 'E0FE',
+  ),
+  485 => 
+  array (
+    'match' => 'E0FF 200D',
+    'replace' => 'E0FF',
+  ),
+  486 => 
+  array (
+    'match' => 'E100 200D',
+    'replace' => 'E100',
+  ),
+  487 => 
+  array (
+    'match' => 'E101 200D',
+    'replace' => 'E101',
+  ),
+  488 => 
+  array (
+    'match' => 'E102 200D',
+    'replace' => 'E102',
+  ),
+  489 => 
+  array (
+    'match' => 'E103 200D',
+    'replace' => 'E103',
+  ),
+  490 => 
+  array (
+    'match' => 'E104 200D',
+    'replace' => 'E104',
+  ),
+  491 => 
+  array (
+    'match' => 'E105 200D',
+    'replace' => 'E105',
+  ),
+  492 => 
+  array (
+    'match' => 'E106 200D',
+    'replace' => 'E106',
+  ),
+  493 => 
+  array (
+    'match' => 'E107 200D',
+    'replace' => 'E107',
+  ),
+  494 => 
+  array (
+    'match' => 'E108 200D',
+    'replace' => 'E108',
+  ),
+  495 => 
+  array (
+    'match' => 'E109 200D',
+    'replace' => 'E109',
+  ),
+  496 => 
+  array (
+    'match' => 'E10A 200D',
+    'replace' => 'E10A',
+  ),
+  497 => 
+  array (
+    'match' => 'E10B 200D',
+    'replace' => 'E10B',
+  ),
+  498 => 
+  array (
+    'match' => 'E10C 200D',
+    'replace' => 'E10C',
+  ),
+  499 => 
+  array (
+    'match' => 'E10D 200D',
+    'replace' => 'E10D',
+  ),
+  500 => 
+  array (
+    'match' => 'E10E 200D',
+    'replace' => 'E10E',
+  ),
+  501 => 
+  array (
+    'match' => 'E10F 200D',
+    'replace' => 'E10F',
+  ),
+  502 => 
+  array (
+    'match' => 'E110 200D',
+    'replace' => 'E110',
+  ),
+  503 => 
+  array (
+    'match' => 'E111 200D',
+    'replace' => 'E111',
+  ),
+  504 => 
+  array (
+    'match' => 'E112 200D',
+    'replace' => 'E112',
+  ),
+  505 => 
+  array (
+    'match' => 'E113 200D',
+    'replace' => 'E113',
+  ),
+  506 => 
+  array (
+    'match' => 'E114 200D',
+    'replace' => 'E114',
+  ),
+  507 => 
+  array (
+    'match' => 'E115 200D',
+    'replace' => 'E115',
+  ),
+  508 => 
+  array (
+    'match' => 'E116 200D',
+    'replace' => 'E116',
+  ),
+  509 => 
+  array (
+    'match' => 'E117 200D',
+    'replace' => 'E117',
+  ),
+  510 => 
+  array (
+    'match' => 'E118 200D',
+    'replace' => 'E118',
+  ),
+  511 => 
+  array (
+    'match' => 'E119 200D',
+    'replace' => 'E119',
+  ),
+  512 => 
+  array (
+    'match' => 'E11A 200D',
+    'replace' => 'E11A',
+  ),
+  513 => 
+  array (
+    'match' => 'E13D 200D',
+    'replace' => 'E13D',
+  ),
+  514 => 
+  array (
+    'match' => 'E13E 200D',
+    'replace' => 'E13E',
+  ),
+  515 => 
+  array (
+    'match' => 'E13F 200D',
+    'replace' => 'E13F',
+  ),
+  516 => 
+  array (
+    'match' => 'E140 200D',
+    'replace' => 'E140',
+  ),
+  517 => 
+  array (
+    'match' => 'E141 200D',
+    'replace' => 'E141',
+  ),
+  518 => 
+  array (
+    'match' => 'E142 200D',
+    'replace' => 'E142',
+  ),
+  519 => 
+  array (
+    'match' => 'E143 200D',
+    'replace' => 'E143',
+  ),
+  520 => 
+  array (
+    'match' => 'E144 200D',
+    'replace' => 'E144',
+  ),
+  521 => 
+  array (
+    'match' => 'E145 200D',
+    'replace' => 'E145',
+  ),
+  522 => 
+  array (
+    'match' => '200D E013',
+    'replace' => 'E013',
+  ),
+  523 => 
+  array (
+    'match' => '200D',
+    'replace' => '200B',
+  ),
+  524 => 
+  array (
+    'match' => '200C',
+    'replace' => '200B',
+  ),
+  525 => 
+  array (
+    'match' => '(093F) E047',
+    'replace' => '\\1 E047 093F',
+  ),
+  526 => 
+  array (
+    'match' => '(093F) E04D',
+    'replace' => '\\1 E04D 093F',
+  ),
+  527 => 
+  array (
+    'match' => '(093F) E04E',
+    'replace' => '\\1 E04E 093F',
+  ),
+  528 => 
+  array (
+    'match' => '(093F) E04F',
+    'replace' => '\\1 E04F 093F',
+  ),
+  529 => 
+  array (
+    'match' => '(093F) E050',
+    'replace' => '\\1 E050 093F',
+  ),
+  530 => 
+  array (
+    'match' => '(093F) E054',
+    'replace' => '\\1 E054 093F',
+  ),
+  531 => 
+  array (
+    'match' => '(093F) E06B',
+    'replace' => '\\1 E06B 093F',
+  ),
+  532 => 
+  array (
+    'match' => '(093F) E071',
+    'replace' => '\\1 E071 093F',
+  ),
+  533 => 
+  array (
+    'match' => '(093F) E072',
+    'replace' => '\\1 E072 093F',
+  ),
+  534 => 
+  array (
+    'match' => '(093F) E073',
+    'replace' => '\\1 E073 093F',
+  ),
+  535 => 
+  array (
+    'match' => '(093F) E074',
+    'replace' => '\\1 E074 093F',
+  ),
+  536 => 
+  array (
+    'match' => '(093F) E078',
+    'replace' => '\\1 E078 093F',
+  ),
+  537 => 
+  array (
+    'match' => '(093F) E0FB',
+    'replace' => '\\1 E0FB 093F',
+  ),
+  538 => 
+  array (
+    'match' => '(093F) E101',
+    'replace' => '\\1 E101 093F',
+  ),
+  539 => 
+  array (
+    'match' => '(093F) E102',
+    'replace' => '\\1 E102 093F',
+  ),
+  540 => 
+  array (
+    'match' => '(093F) E103',
+    'replace' => '\\1 E103 093F',
+  ),
+  541 => 
+  array (
+    'match' => '(093F) E104',
+    'replace' => '\\1 E104 093F',
+  ),
+  542 => 
+  array (
+    'match' => '(093F) E108',
+    'replace' => '\\1 E108 093F',
+  ),
+  543 => 
+  array (
+    'match' => '093F E047 (093F)',
+    'replace' => 'E047 \\1',
+  ),
+  544 => 
+  array (
+    'match' => '093F E04D (093F)',
+    'replace' => 'E04D \\1',
+  ),
+  545 => 
+  array (
+    'match' => '093F E04E (093F)',
+    'replace' => 'E04E \\1',
+  ),
+  546 => 
+  array (
+    'match' => '093F E04F (093F)',
+    'replace' => 'E04F \\1',
+  ),
+  547 => 
+  array (
+    'match' => '093F E050 (093F)',
+    'replace' => 'E050 \\1',
+  ),
+  548 => 
+  array (
+    'match' => '093F E054 (093F)',
+    'replace' => 'E054 \\1',
+  ),
+  549 => 
+  array (
+    'match' => '093F E06B (093F)',
+    'replace' => 'E06B \\1',
+  ),
+  550 => 
+  array (
+    'match' => '093F E071 (093F)',
+    'replace' => 'E071 \\1',
+  ),
+  551 => 
+  array (
+    'match' => '093F E072 (093F)',
+    'replace' => 'E072 \\1',
+  ),
+  552 => 
+  array (
+    'match' => '093F E073 (093F)',
+    'replace' => 'E073 \\1',
+  ),
+  553 => 
+  array (
+    'match' => '093F E074 (093F)',
+    'replace' => 'E074 \\1',
+  ),
+  554 => 
+  array (
+    'match' => '093F E078 (093F)',
+    'replace' => 'E078 \\1',
+  ),
+  555 => 
+  array (
+    'match' => '093F E0FB (093F)',
+    'replace' => 'E0FB \\1',
+  ),
+  556 => 
+  array (
+    'match' => '093F E101 (093F)',
+    'replace' => 'E101 \\1',
+  ),
+  557 => 
+  array (
+    'match' => '093F E102 (093F)',
+    'replace' => 'E102 \\1',
+  ),
+  558 => 
+  array (
+    'match' => '093F E103 (093F)',
+    'replace' => 'E103 \\1',
+  ),
+  559 => 
+  array (
+    'match' => '093F E104 (093F)',
+    'replace' => 'E104 \\1',
+  ),
+  560 => 
+  array (
+    'match' => '093F E108 (093F)',
+    'replace' => 'E108 \\1',
+  ),
+  561 => 
+  array (
+    'match' => '(E015) 0915 E015',
+    'replace' => '\\1 0915',
+  ),
+  562 => 
+  array (
+    'match' => '(E015) 0916 E015',
+    'replace' => '\\1 0916',
+  ),
+  563 => 
+  array (
+    'match' => '(E015) 0917 E015',
+    'replace' => '\\1 0917',
+  ),
+  564 => 
+  array (
+    'match' => '(E015) 0918 E015',
+    'replace' => '\\1 0918',
+  ),
+  565 => 
+  array (
+    'match' => '(E015) 0919 E015',
+    'replace' => '\\1 0919',
+  ),
+  566 => 
+  array (
+    'match' => '(E015) 091A E015',
+    'replace' => '\\1 091A',
+  ),
+  567 => 
+  array (
+    'match' => '(E015) 091B E015',
+    'replace' => '\\1 091B',
+  ),
+  568 => 
+  array (
+    'match' => '(E015) 091C E015',
+    'replace' => '\\1 091C',
+  ),
+  569 => 
+  array (
+    'match' => '(E015) 091D E015',
+    'replace' => '\\1 091D',
+  ),
+  570 => 
+  array (
+    'match' => '(E015) 091E E015',
+    'replace' => '\\1 091E',
+  ),
+  571 => 
+  array (
+    'match' => '(E015) 091F E015',
+    'replace' => '\\1 091F',
+  ),
+  572 => 
+  array (
+    'match' => '(E015) 0920 E015',
+    'replace' => '\\1 0920',
+  ),
+  573 => 
+  array (
+    'match' => '(E015) 0921 E015',
+    'replace' => '\\1 0921',
+  ),
+  574 => 
+  array (
+    'match' => '(E015) 0922 E015',
+    'replace' => '\\1 0922',
+  ),
+  575 => 
+  array (
+    'match' => '(E015) 0923 E015',
+    'replace' => '\\1 0923',
+  ),
+  576 => 
+  array (
+    'match' => '(E015) 0924 E015',
+    'replace' => '\\1 0924',
+  ),
+  577 => 
+  array (
+    'match' => '(E015) 0925 E015',
+    'replace' => '\\1 0925',
+  ),
+  578 => 
+  array (
+    'match' => '(E015) 0926 E015',
+    'replace' => '\\1 0926',
+  ),
+  579 => 
+  array (
+    'match' => '(E015) 0927 E015',
+    'replace' => '\\1 0927',
+  ),
+  580 => 
+  array (
+    'match' => '(E015) 0928 E015',
+    'replace' => '\\1 0928',
+  ),
+  581 => 
+  array (
+    'match' => '(E015) 092A E015',
+    'replace' => '\\1 092A',
+  ),
+  582 => 
+  array (
+    'match' => '(E015) 092B E015',
+    'replace' => '\\1 092B',
+  ),
+  583 => 
+  array (
+    'match' => '(E015) 092C E015',
+    'replace' => '\\1 092C',
+  ),
+  584 => 
+  array (
+    'match' => '(E015) 092D E015',
+    'replace' => '\\1 092D',
+  ),
+  585 => 
+  array (
+    'match' => '(E015) 092E E015',
+    'replace' => '\\1 092E',
+  ),
+  586 => 
+  array (
+    'match' => '(E015) 092F E015',
+    'replace' => '\\1 092F',
+  ),
+  587 => 
+  array (
+    'match' => '(E015) 0930 E015',
+    'replace' => '\\1 0930',
+  ),
+  588 => 
+  array (
+    'match' => '(E015) 0932 E015',
+    'replace' => '\\1 0932',
+  ),
+  589 => 
+  array (
+    'match' => '(E015) 0933 E015',
+    'replace' => '\\1 0933',
+  ),
+  590 => 
+  array (
+    'match' => '(E015) 0935 E015',
+    'replace' => '\\1 0935',
+  ),
+  591 => 
+  array (
+    'match' => '(E015) 0936 E015',
+    'replace' => '\\1 0936',
+  ),
+  592 => 
+  array (
+    'match' => '(E015) 0937 E015',
+    'replace' => '\\1 0937',
+  ),
+  593 => 
+  array (
+    'match' => '(E015) 0938 E015',
+    'replace' => '\\1 0938',
+  ),
+  594 => 
+  array (
+    'match' => '(E015) 0939 E015',
+    'replace' => '\\1 0939',
+  ),
+  595 => 
+  array (
+    'match' => '(E015) E028 E015',
+    'replace' => '\\1 E028',
+  ),
+  596 => 
+  array (
+    'match' => '(E015) E029 E015',
+    'replace' => '\\1 E029',
+  ),
+  597 => 
+  array (
+    'match' => '(E015) E015 E015',
+    'replace' => '\\1 E015',
+  ),
+  598 => 
+  array (
+    'match' => '(E015) 0947 E015',
+    'replace' => '\\1 0947',
+  ),
+  599 => 
+  array (
+    'match' => '(E015) E1A8 E015',
+    'replace' => '\\1 E1A8',
+  ),
+  600 => 
+  array (
+    'match' => '(E015) E1A7 E015',
+    'replace' => '\\1 E1A7',
+  ),
+  601 => 
+  array (
+    'match' => '(E015) E199 E015',
+    'replace' => '\\1 E199',
+  ),
+  602 => 
+  array (
+    'match' => '(E015) E1B2 E015',
+    'replace' => '\\1 E1B2',
+  ),
+  603 => 
+  array (
+    'match' => '(E015) E1B1 E015',
+    'replace' => '\\1 E1B1',
+  ),
+  604 => 
+  array (
+    'match' => '(E015) 0946 E015',
+    'replace' => '\\1 0946',
+  ),
+  605 => 
+  array (
+    'match' => '(E015) E202 E015',
+    'replace' => '\\1 E202',
+  ),
+  606 => 
+  array (
+    'match' => '(E015) E201 E015',
+    'replace' => '\\1 E201',
+  ),
+  607 => 
+  array (
+    'match' => '(E015) E1A3 E015',
+    'replace' => '\\1 E1A3',
+  ),
+  608 => 
+  array (
+    'match' => '(E015) E1C6 E015',
+    'replace' => '\\1 E1C6',
+  ),
+  609 => 
+  array (
+    'match' => '(E015) E1C5 E015',
+    'replace' => '\\1 E1C5',
+  ),
+  610 => 
+  array (
+    'match' => '(E015) 0945 E015',
+    'replace' => '\\1 0945',
+  ),
+  611 => 
+  array (
+    'match' => '(E015) E200 E015',
+    'replace' => '\\1 E200',
+  ),
+  612 => 
+  array (
+    'match' => '(E015) E1FF E015',
+    'replace' => '\\1 E1FF',
+  ),
+  613 => 
+  array (
+    'match' => '(E015) 0948 E015',
+    'replace' => '\\1 0948',
+  ),
+  614 => 
+  array (
+    'match' => '(E015) E1AA E015',
+    'replace' => '\\1 E1AA',
+  ),
+  615 => 
+  array (
+    'match' => '(E015) E1A9 E015',
+    'replace' => '\\1 E1A9',
+  ),
+  616 => 
+  array (
+    'match' => '(E015) E19A E015',
+    'replace' => '\\1 E19A',
+  ),
+  617 => 
+  array (
+    'match' => '(E015) E1B4 E015',
+    'replace' => '\\1 E1B4',
+  ),
+  618 => 
+  array (
+    'match' => '(E015) E1B3 E015',
+    'replace' => '\\1 E1B3',
+  ),
+  619 => 
+  array (
+    'match' => '(E015) 0902 E015',
+    'replace' => '\\1 0902',
+  ),
+  620 => 
+  array (
+    'match' => '(E015) E00F E015',
+    'replace' => '\\1 E00F',
+  ),
+  621 => 
+  array (
+    'match' => '(E015) 0901 E015',
+    'replace' => '\\1 0901',
+  ),
+  622 => 
+  array (
+    'match' => '(E015) 0953 E015',
+    'replace' => '\\1 0953',
+  ),
+  623 => 
+  array (
+    'match' => '(E015) 0954 E015',
+    'replace' => '\\1 0954',
+  ),
+  624 => 
+  array (
+    'match' => '(E015) 0951 E015',
+    'replace' => '\\1 0951',
+  ),
+  625 => 
+  array (
+    'match' => '(E015) 0941 E015',
+    'replace' => '\\1 0941',
+  ),
+  626 => 
+  array (
+    'match' => '(E015) 0942 E015',
+    'replace' => '\\1 0942',
+  ),
+  627 => 
+  array (
+    'match' => '(E015) 0943 E015',
+    'replace' => '\\1 0943',
+  ),
+  628 => 
+  array (
+    'match' => '(E015) 0944 E015',
+    'replace' => '\\1 0944',
+  ),
+  629 => 
+  array (
+    'match' => '(E015) 0952 E015',
+    'replace' => '\\1 0952',
+  ),
+  630 => 
+  array (
+    'match' => '(E015) E013 E015',
+    'replace' => '\\1 E013',
+  ),
+  631 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0915 E015',
+    'replace' => '\\1 0915',
+  ),
+  632 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0916 E015',
+    'replace' => '\\1 0916',
+  ),
+  633 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0917 E015',
+    'replace' => '\\1 0917',
+  ),
+  634 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0918 E015',
+    'replace' => '\\1 0918',
+  ),
+  635 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0919 E015',
+    'replace' => '\\1 0919',
+  ),
+  636 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091A E015',
+    'replace' => '\\1 091A',
+  ),
+  637 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091B E015',
+    'replace' => '\\1 091B',
+  ),
+  638 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091C E015',
+    'replace' => '\\1 091C',
+  ),
+  639 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091D E015',
+    'replace' => '\\1 091D',
+  ),
+  640 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091E E015',
+    'replace' => '\\1 091E',
+  ),
+  641 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 091F E015',
+    'replace' => '\\1 091F',
+  ),
+  642 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0920 E015',
+    'replace' => '\\1 0920',
+  ),
+  643 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0921 E015',
+    'replace' => '\\1 0921',
+  ),
+  644 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0922 E015',
+    'replace' => '\\1 0922',
+  ),
+  645 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0923 E015',
+    'replace' => '\\1 0923',
+  ),
+  646 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0924 E015',
+    'replace' => '\\1 0924',
+  ),
+  647 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0925 E015',
+    'replace' => '\\1 0925',
+  ),
+  648 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0926 E015',
+    'replace' => '\\1 0926',
+  ),
+  649 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0927 E015',
+    'replace' => '\\1 0927',
+  ),
+  650 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0928 E015',
+    'replace' => '\\1 0928',
+  ),
+  651 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092A E015',
+    'replace' => '\\1 092A',
+  ),
+  652 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092B E015',
+    'replace' => '\\1 092B',
+  ),
+  653 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092C E015',
+    'replace' => '\\1 092C',
+  ),
+  654 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092D E015',
+    'replace' => '\\1 092D',
+  ),
+  655 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092E E015',
+    'replace' => '\\1 092E',
+  ),
+  656 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 092F E015',
+    'replace' => '\\1 092F',
+  ),
+  657 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0930 E015',
+    'replace' => '\\1 0930',
+  ),
+  658 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0932 E015',
+    'replace' => '\\1 0932',
+  ),
+  659 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0933 E015',
+    'replace' => '\\1 0933',
+  ),
+  660 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0935 E015',
+    'replace' => '\\1 0935',
+  ),
+  661 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0936 E015',
+    'replace' => '\\1 0936',
+  ),
+  662 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0937 E015',
+    'replace' => '\\1 0937',
+  ),
+  663 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0938 E015',
+    'replace' => '\\1 0938',
+  ),
+  664 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0939 E015',
+    'replace' => '\\1 0939',
+  ),
+  665 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E028 E015',
+    'replace' => '\\1 E028',
+  ),
+  666 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E029 E015',
+    'replace' => '\\1 E029',
+  ),
+  667 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E015 E015',
+    'replace' => '\\1 E015',
+  ),
+  668 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0947 E015',
+    'replace' => '\\1 0947',
+  ),
+  669 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A8 E015',
+    'replace' => '\\1 E1A8',
+  ),
+  670 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A7 E015',
+    'replace' => '\\1 E1A7',
+  ),
+  671 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E199 E015',
+    'replace' => '\\1 E199',
+  ),
+  672 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B2 E015',
+    'replace' => '\\1 E1B2',
+  ),
+  673 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B1 E015',
+    'replace' => '\\1 E1B1',
+  ),
+  674 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0946 E015',
+    'replace' => '\\1 0946',
+  ),
+  675 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E202 E015',
+    'replace' => '\\1 E202',
+  ),
+  676 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E201 E015',
+    'replace' => '\\1 E201',
+  ),
+  677 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A3 E015',
+    'replace' => '\\1 E1A3',
+  ),
+  678 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1C6 E015',
+    'replace' => '\\1 E1C6',
+  ),
+  679 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1C5 E015',
+    'replace' => '\\1 E1C5',
+  ),
+  680 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0945 E015',
+    'replace' => '\\1 0945',
+  ),
+  681 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E200 E015',
+    'replace' => '\\1 E200',
+  ),
+  682 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1FF E015',
+    'replace' => '\\1 E1FF',
+  ),
+  683 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0948 E015',
+    'replace' => '\\1 0948',
+  ),
+  684 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1AA E015',
+    'replace' => '\\1 E1AA',
+  ),
+  685 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1A9 E015',
+    'replace' => '\\1 E1A9',
+  ),
+  686 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E19A E015',
+    'replace' => '\\1 E19A',
+  ),
+  687 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B4 E015',
+    'replace' => '\\1 E1B4',
+  ),
+  688 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E1B3 E015',
+    'replace' => '\\1 E1B3',
+  ),
+  689 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0902 E015',
+    'replace' => '\\1 0902',
+  ),
+  690 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E00F E015',
+    'replace' => '\\1 E00F',
+  ),
+  691 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0901 E015',
+    'replace' => '\\1 0901',
+  ),
+  692 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0953 E015',
+    'replace' => '\\1 0953',
+  ),
+  693 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0954 E015',
+    'replace' => '\\1 0954',
+  ),
+  694 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0951 E015',
+    'replace' => '\\1 0951',
+  ),
+  695 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0941 E015',
+    'replace' => '\\1 0941',
+  ),
+  696 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0942 E015',
+    'replace' => '\\1 0942',
+  ),
+  697 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0943 E015',
+    'replace' => '\\1 0943',
+  ),
+  698 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0944 E015',
+    'replace' => '\\1 0944',
+  ),
+  699 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) 0952 E015',
+    'replace' => '\\1 0952',
+  ),
+  700 => 
+  array (
+    'match' => '(E015 (0915|0916|0917|0918|0919|091A|091B|091C|091D|091E|091F|0920|0921|0922|0923|0924|0925|0926|0927|0928|092A|092B|092C|092D|092E|092F|0930|0932|0933|0935|0936|0937|0938|0939|E028|E029)) E013 E015',
+    'replace' => '\\1 E013',
+  ),
+  701 => 
+  array (
+    'match' => '(093F) E015',
+    'replace' => '\\1 E015 093F',
+  ),
+  702 => 
+  array (
+    'match' => '093F E015',
+    'replace' => 'E015',
+  ),
+  703 => 
+  array (
+    'match' => '0915 0962',
+    'replace' => 'E153',
+  ),
+  704 => 
+  array (
+    'match' => '0915 0963',
+    'replace' => 'E154',
+  ),
+  705 => 
+  array (
+    'match' => 'E08F 0941',
+    'replace' => 'E155',
+  ),
+  706 => 
+  array (
+    'match' => 'E08F 0942',
+    'replace' => 'E156',
+  ),
+  707 => 
+  array (
+    'match' => 'E08F 0943',
+    'replace' => 'E157',
+  ),
+  708 => 
+  array (
+    'match' => 'E08F 0944',
+    'replace' => 'E158',
+  ),
+  709 => 
+  array (
+    'match' => 'E091 0941',
+    'replace' => 'E159',
+  ),
+  710 => 
+  array (
+    'match' => 'E091 0942',
+    'replace' => 'E15A',
+  ),
+  711 => 
+  array (
+    'match' => 'E091 0943',
+    'replace' => 'E15B',
+  ),
+  712 => 
+  array (
+    'match' => 'E091 0944',
+    'replace' => 'E15C',
+  ),
+  713 => 
+  array (
+    'match' => 'E095 0941',
+    'replace' => 'E15D',
+  ),
+  714 => 
+  array (
+    'match' => 'E095 0942',
+    'replace' => 'E15E',
+  ),
+  715 => 
+  array (
+    'match' => 'E095 0943',
+    'replace' => 'E15F',
+  ),
+  716 => 
+  array (
+    'match' => 'E095 0944',
+    'replace' => 'E160',
+  ),
+  717 => 
+  array (
+    'match' => 'E096 0941',
+    'replace' => 'E161',
+  ),
+  718 => 
+  array (
+    'match' => 'E096 0942',
+    'replace' => 'E162',
+  ),
+  719 => 
+  array (
+    'match' => 'E096 0943',
+    'replace' => 'E163',
+  ),
+  720 => 
+  array (
+    'match' => 'E096 0944',
+    'replace' => 'E164',
+  ),
+  721 => 
+  array (
+    'match' => 'E097 0941',
+    'replace' => 'E165',
+  ),
+  722 => 
+  array (
+    'match' => 'E097 0942',
+    'replace' => 'E166',
+  ),
+  723 => 
+  array (
+    'match' => 'E097 0943',
+    'replace' => 'E167',
+  ),
+  724 => 
+  array (
+    'match' => 'E097 0944',
+    'replace' => 'E168',
+  ),
+  725 => 
+  array (
+    'match' => 'E098 0941',
+    'replace' => 'E169',
+  ),
+  726 => 
+  array (
+    'match' => 'E098 0942',
+    'replace' => 'E16A',
+  ),
+  727 => 
+  array (
+    'match' => 'E098 0943',
+    'replace' => 'E16B',
+  ),
+  728 => 
+  array (
+    'match' => 'E098 0944',
+    'replace' => 'E16C',
+  ),
+  729 => 
+  array (
+    'match' => '0926 0943',
+    'replace' => 'E16D',
+  ),
+  730 => 
+  array (
+    'match' => '092A 0962',
+    'replace' => 'E16E',
+  ),
+  731 => 
+  array (
+    'match' => '092A 0963',
+    'replace' => 'E16F',
+  ),
+  732 => 
+  array (
+    'match' => '0939 0943',
+    'replace' => 'E172',
+  ),
+  733 => 
+  array (
+    'match' => '0939 0944',
+    'replace' => 'E173',
+  ),
+  734 => 
+  array (
+    'match' => 'E0B3 0941',
+    'replace' => 'E174',
+  ),
+  735 => 
+  array (
+    'match' => 'E0B3 0942',
+    'replace' => 'E175',
+  ),
+  736 => 
+  array (
+    'match' => 'E0B3 0943',
+    'replace' => 'E176',
+  ),
+  737 => 
+  array (
+    'match' => 'E0B3 0944',
+    'replace' => 'E177',
+  ),
+  738 => 
+  array (
+    'match' => 'E0B5 0941',
+    'replace' => 'E178',
+  ),
+  739 => 
+  array (
+    'match' => 'E0B5 0942',
+    'replace' => 'E179',
+  ),
+  740 => 
+  array (
+    'match' => 'E0B5 0943',
+    'replace' => 'E17A',
+  ),
+  741 => 
+  array (
+    'match' => 'E0B5 0944',
+    'replace' => 'E17B',
+  ),
+  742 => 
+  array (
+    'match' => 'E0B9 0941',
+    'replace' => 'E17C',
+  ),
+  743 => 
+  array (
+    'match' => 'E0B9 0942',
+    'replace' => 'E17D',
+  ),
+  744 => 
+  array (
+    'match' => 'E0B9 0943',
+    'replace' => 'E17E',
+  ),
+  745 => 
+  array (
+    'match' => 'E0B9 0944',
+    'replace' => 'E17F',
+  ),
+  746 => 
+  array (
+    'match' => 'E0BA 0941',
+    'replace' => 'E180',
+  ),
+  747 => 
+  array (
+    'match' => 'E0BA 0942',
+    'replace' => 'E181',
+  ),
+  748 => 
+  array (
+    'match' => 'E0BA 0943',
+    'replace' => 'E182',
+  ),
+  749 => 
+  array (
+    'match' => 'E0BA 0944',
+    'replace' => 'E183',
+  ),
+  750 => 
+  array (
+    'match' => 'E0BB 0941',
+    'replace' => 'E184',
+  ),
+  751 => 
+  array (
+    'match' => 'E0BB 0942',
+    'replace' => 'E185',
+  ),
+  752 => 
+  array (
+    'match' => 'E0BB 0943',
+    'replace' => 'E186',
+  ),
+  753 => 
+  array (
+    'match' => 'E0BB 0944',
+    'replace' => 'E187',
+  ),
+  754 => 
+  array (
+    'match' => 'E0BC 0941',
+    'replace' => 'E188',
+  ),
+  755 => 
+  array (
+    'match' => 'E0BC 0942',
+    'replace' => 'E189',
+  ),
+  756 => 
+  array (
+    'match' => 'E0BC 0943',
+    'replace' => 'E18A',
+  ),
+  757 => 
+  array (
+    'match' => 'E0BC 0944',
+    'replace' => 'E18B',
+  ),
+  758 => 
+  array (
+    'match' => 'E131 0941',
+    'replace' => 'E18C',
+  ),
+  759 => 
+  array (
+    'match' => 'E131 0942',
+    'replace' => 'E18D',
+  ),
+  760 => 
+  array (
+    'match' => 'E131 0943',
+    'replace' => 'E18E',
+  ),
+  761 => 
+  array (
+    'match' => 'E131 0944',
+    'replace' => 'E18F',
+  ),
+  762 => 
+  array (
+    'match' => 'E132 0941',
+    'replace' => 'E190',
+  ),
+  763 => 
+  array (
+    'match' => 'E132 0942',
+    'replace' => 'E191',
+  ),
+  764 => 
+  array (
+    'match' => 'E132 0943',
+    'replace' => 'E192',
+  ),
+  765 => 
+  array (
+    'match' => 'E132 0944',
+    'replace' => 'E193',
+  ),
+  766 => 
+  array (
+    'match' => '((0930|0931|E0A5|E0C9)) 0941',
+    'replace' => '\\1 E170',
+  ),
+  767 => 
+  array (
+    'match' => '((0930|0931|E0A5|E0C9)) 0942',
+    'replace' => '\\1 E171',
+  ),
+  768 => 
+  array (
+    'match' => '0947 E015',
+    'replace' => 'E199',
+  ),
+  769 => 
+  array (
+    'match' => '0948 E015',
+    'replace' => 'E19A',
+  ),
+  770 => 
+  array (
+    'match' => '0940 E015',
+    'replace' => 'E19B',
+  ),
+  771 => 
+  array (
+    'match' => 'E194 E015',
+    'replace' => 'E19C',
+  ),
+  772 => 
+  array (
+    'match' => 'E195 E015',
+    'replace' => 'E19D',
+  ),
+  773 => 
+  array (
+    'match' => 'E196 E015',
+    'replace' => 'E19E',
+  ),
+  774 => 
+  array (
+    'match' => 'E197 E015',
+    'replace' => 'E19F',
+  ),
+  775 => 
+  array (
+    'match' => 'E198 E015',
+    'replace' => 'E1A0',
+  ),
+  776 => 
+  array (
+    'match' => '094B E015',
+    'replace' => 'E1A1',
+  ),
+  777 => 
+  array (
+    'match' => '094C E015',
+    'replace' => 'E1A2',
+  ),
+  778 => 
+  array (
+    'match' => '0946 E015',
+    'replace' => 'E1A3',
+  ),
+  779 => 
+  array (
+    'match' => '094A E015',
+    'replace' => 'E1A4',
+  ),
+  780 => 
+  array (
+    'match' => '0908 0901',
+    'replace' => 'E1A5',
+  ),
+  781 => 
+  array (
+    'match' => '0908 0902',
+    'replace' => 'E1A6',
+  ),
+  782 => 
+  array (
+    'match' => 'E12F 0901',
+    'replace' => 'E1C9',
+  ),
+  783 => 
+  array (
+    'match' => 'E130 0901',
+    'replace' => 'E1CA',
+  ),
+  784 => 
+  array (
+    'match' => '0945 0901',
+    'replace' => 'E200',
+  ),
+  785 => 
+  array (
+    'match' => '0946 0901',
+    'replace' => 'E202',
+  ),
+  786 => 
+  array (
+    'match' => '0947 0901',
+    'replace' => 'E1A7',
+  ),
+  787 => 
+  array (
+    'match' => '0948 0901',
+    'replace' => 'E1A9',
+  ),
+  788 => 
+  array (
+    'match' => '094B 0901',
+    'replace' => 'E1AB',
+  ),
+  789 => 
+  array (
+    'match' => '094C 0901',
+    'replace' => 'E1AD',
+  ),
+  790 => 
+  array (
+    'match' => '0945 0902',
+    'replace' => 'E1FF',
+  ),
+  791 => 
+  array (
+    'match' => '0946 0902',
+    'replace' => 'E201',
+  ),
+  792 => 
+  array (
+    'match' => '0947 0902',
+    'replace' => 'E1A8',
+  ),
+  793 => 
+  array (
+    'match' => '0948 0902',
+    'replace' => 'E1AA',
+  ),
+  794 => 
+  array (
+    'match' => '094B 0902',
+    'replace' => 'E1AC',
+  ),
+  795 => 
+  array (
+    'match' => '094C 0902',
+    'replace' => 'E1AE',
+  ),
+  796 => 
+  array (
+    'match' => 'E015 0902 0901',
+    'replace' => 'E1B0 E1AF',
+  ),
+  797 => 
+  array (
+    'match' => 'E199 0902 0901',
+    'replace' => 'E1B2 E1B1',
+  ),
+  798 => 
+  array (
+    'match' => 'E19A 0902 0901',
+    'replace' => 'E1B4 E1B3',
+  ),
+  799 => 
+  array (
+    'match' => 'E1A1 0902 0901',
+    'replace' => 'E1C2 E1C1',
+  ),
+  800 => 
+  array (
+    'match' => 'E1A3 0902 0901',
+    'replace' => 'E1C6 E1C5',
+  ),
+  801 => 
+  array (
+    'match' => 'E1A4 0902 0901',
+    'replace' => 'E1C8 E1C7',
+  ),
+  802 => 
+  array (
+    'match' => 'E1A2 0902 0901',
+    'replace' => 'E1C4 E1C3',
+  ),
+  803 => 
+  array (
+    'match' => 'E19B 0901',
+    'replace' => 'E1B5',
+  ),
+  804 => 
+  array (
+    'match' => 'E19C 0901',
+    'replace' => 'E1B6',
+  ),
+  805 => 
+  array (
+    'match' => 'E19D 0901',
+    'replace' => 'E1B7',
+  ),
+  806 => 
+  array (
+    'match' => 'E19E 0901',
+    'replace' => 'E1B8',
+  ),
+  807 => 
+  array (
+    'match' => 'E19F 0901',
+    'replace' => 'E1B9',
+  ),
+  808 => 
+  array (
+    'match' => 'E1A0 0901',
+    'replace' => 'E1BA',
+  ),
+  809 => 
+  array (
+    'match' => 'E19B 0902',
+    'replace' => 'E1BB',
+  ),
+  810 => 
+  array (
+    'match' => 'E19C 0902',
+    'replace' => 'E1BC',
+  ),
+  811 => 
+  array (
+    'match' => 'E19D 0902',
+    'replace' => 'E1BD',
+  ),
+  812 => 
+  array (
+    'match' => 'E19E 0902',
+    'replace' => 'E1BE',
+  ),
+  813 => 
+  array (
+    'match' => 'E19F 0902',
+    'replace' => 'E1BF',
+  ),
+  814 => 
+  array (
+    'match' => 'E1A0 0902',
+    'replace' => 'E1C0',
+  ),
+  815 => 
+  array (
+    'match' => '((0908|E01B|090D|090E|E01F|0910|E021|0914|E025|E016|E017|0940|E194|E195|E196|E197|E198|E19B|E19C|E19D|E19E|E19F|E1A0|0949|094A|E1A4|094B|E1A1|094C|E1A2|E015|0947|E1A8|E1A7|E199|E1B2|E1B1|0946|E202|E201|E1A3|E1C6|E1C5|0945|E200|E1FF|0948|E1AA|E1A9|E19A|E1B4|E1B3|0902|E00F|0901|0953|0954|0951)) 0901',
+    'replace' => '\\1 E00F',
+  ),
+  816 => 
+  array (
+    'match' => '093F ((0930|0931))',
+    'replace' => 'E14B \\1',
+  ),
+  817 => 
+  array (
+    'match' => '093F ((0915|0958|E08B|E0AF|0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0920|E031|E096|E0BA|0921|095C|E097|E0BB|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|092B|095E|E0A0|E0C4|0939|E040|E0AC|E0D0|E120|E122|E124|E125|E129|E134|E139))',
+    'replace' => 'E14C \\1',
+  ),
+  818 => 
+  array (
+    'match' => '093F ((0924|E033|E09A|E0BE|092A|E037|E09F|E0C3|092C|E038|E0A1|E0C5|0935|E03C|E0A8|E0CC|0937|E03E|E0AA|E0CE|E11B|E11E|E121|E123|E126|E12F|E130|E131|E132|E137|E138))',
+    'replace' => 'E14D \\1',
+  ),
+  819 => 
+  array (
+    'match' => '093F ((0917|095A|E08D|E0B1|0918|E02A|E08E|E0B2|091A|E02C|E090|E0B4|091B|E02D|E091|E0B5|091E|E02F|E094|E0B8|0925|E034|0927|E036|E09D|E0C1|0928|0929|E09E|E0C2|092D|E039|E0A2|E0C6|092E|E03A|E0A3|E0C7|092F|095F|E0A4|E0C8|0932|E03B|E0A6|E0CA|0933|0934|E0A7|E0CB|0936|E03D|E0A9|E0CD|0938|E03F|E0AB|E0CF|E127|E128|E12A|E135|E136))',
+    'replace' => 'E14E \\1',
+  ),
+  820 => 
+  array (
+    'match' => '((0940|094A|094B|094C|0946|0947|0948)) E015',
+    'replace' => '\\1 E014',
+  ),
+  821 => 
+  array (
+    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) 0940',
+    'replace' => '\\1 E194',
+  ),
+  822 => 
+  array (
+    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) E19B',
+    'replace' => '\\1 E19C',
+  ),
+  823 => 
+  array (
+    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) E1B5',
+    'replace' => '\\1 E1B6',
+  ),
+  824 => 
+  array (
+    'match' => '((0919|E02B|E08F|E0B3|091F|E030|E095|E0B9|0922|095D|E098|E0BC|0926|E035|E09C|E0C0|0930|0931|0932|E03B|E0A6|E0CA|0939|E040|E0AC|E0D0)) E1BB',
+    'replace' => '\\1 E1BC',
+  ),
+  825 => 
+  array (
+    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) 0940',
+    'replace' => '\\1 E195',
+  ),
+  826 => 
+  array (
+    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E19B',
+    'replace' => '\\1 E19D',
+  ),
+  827 => 
+  array (
+    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E1B5',
+    'replace' => '\\1 E1B7',
+  ),
+  828 => 
+  array (
+    'match' => '((091B|E02D|E091|E0B5|0920|E031|E096|E0BA)) E1BB',
+    'replace' => '\\1 E1BD',
+  ),
+  829 => 
+  array (
+    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) 0940',
+    'replace' => '\\1 E198',
+  ),
+  830 => 
+  array (
+    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E19B',
+    'replace' => '\\1 E1A0',
+  ),
+  831 => 
+  array (
+    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E1B5',
+    'replace' => '\\1 E1BA',
+  ),
+  832 => 
+  array (
+    'match' => '((0915|0958|E08B|E0AF|092B|095E|E0A0|E0C4)) E1BB',
+    'replace' => '\\1 E1C0',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_kn_1_001.volt.php
new file mode 100644 (file)
index 0000000..b059f8f
--- /dev/null
@@ -0,0 +1,2994 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0CCD 200C',
+    'replace' => 'E0AD',
+  ),
+  1 => 
+  array (
+    'match' => '200D 0CCD',
+    'replace' => 'E0AC',
+  ),
+  2 => 
+  array (
+    'match' => '0CC6 0CC2',
+    'replace' => '0CCA',
+  ),
+  3 => 
+  array (
+    'match' => '0C95 0CCD 0CB7',
+    'replace' => 'E07D',
+  ),
+  4 => 
+  array (
+    'match' => '0C9C 0CCD 0C9E',
+    'replace' => 'E07E',
+  ),
+  5 => 
+  array (
+    'match' => '0CB0 0CCD',
+    'replace' => 'E00B',
+  ),
+  6 => 
+  array (
+    'match' => '((0C95|0C96|0C97|0C98|0C99|0C9A|0C9B|0C9C|0C9D|0C9E|0C9F|0CA0|0CA1|0CA2|0CA3|0CA4|0CA5|0CA6|0CA7|0CA8|0CAA|0CAB|0CAC|0CAD|0CAE|0CAF|0CB0|0CB1|0CB2|0CB3|0CB5|0CB6|0CB7|0CB8|0CB9|E07D|E07E|E0A3)) 0CCD',
+    'replace' => '\\1 E0AC',
+  ),
+  7 => 
+  array (
+    'match' => '((0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) 0CCD',
+    'replace' => '\\1 E0AC',
+  ),
+  8 => 
+  array (
+    'match' => '(0CBC) 0CCD',
+    'replace' => '\\1 E0AC',
+  ),
+  9 => 
+  array (
+    'match' => '(0020) 0CCD',
+    'replace' => '\\1 E0AC',
+  ),
+  10 => 
+  array (
+    'match' => '(25CC) 0CCD',
+    'replace' => '\\1 E0AC',
+  ),
+  11 => 
+  array (
+    'match' => '0C95 0CBC',
+    'replace' => 'E0E6',
+  ),
+  12 => 
+  array (
+    'match' => '0C96 0CBC',
+    'replace' => 'E0E7',
+  ),
+  13 => 
+  array (
+    'match' => '0C97 0CBC',
+    'replace' => 'E172',
+  ),
+  14 => 
+  array (
+    'match' => '0C98 0CBC',
+    'replace' => 'E173',
+  ),
+  15 => 
+  array (
+    'match' => '0C99 0CBC',
+    'replace' => 'E174',
+  ),
+  16 => 
+  array (
+    'match' => '0C9A 0CBC',
+    'replace' => 'E175',
+  ),
+  17 => 
+  array (
+    'match' => '0C9B 0CBC',
+    'replace' => 'E176',
+  ),
+  18 => 
+  array (
+    'match' => '0C9C 0CBC',
+    'replace' => 'E0E8',
+  ),
+  19 => 
+  array (
+    'match' => '0C9D 0CBC',
+    'replace' => 'E0E9',
+  ),
+  20 => 
+  array (
+    'match' => '0C9E 0CBC',
+    'replace' => 'E177',
+  ),
+  21 => 
+  array (
+    'match' => '0C9F 0CBC',
+    'replace' => 'E178',
+  ),
+  22 => 
+  array (
+    'match' => '0CA0 0CBC',
+    'replace' => 'E179',
+  ),
+  23 => 
+  array (
+    'match' => '0CA1 0CBC',
+    'replace' => 'E17A',
+  ),
+  24 => 
+  array (
+    'match' => '0CA2 0CBC',
+    'replace' => 'E17B',
+  ),
+  25 => 
+  array (
+    'match' => '0CA3 0CBC',
+    'replace' => 'E17C',
+  ),
+  26 => 
+  array (
+    'match' => '0CA4 0CBC',
+    'replace' => 'E17D',
+  ),
+  27 => 
+  array (
+    'match' => '0CA5 0CBC',
+    'replace' => 'E17E',
+  ),
+  28 => 
+  array (
+    'match' => '0CA6 0CBC',
+    'replace' => 'E17F',
+  ),
+  29 => 
+  array (
+    'match' => '0CA7 0CBC',
+    'replace' => 'E180',
+  ),
+  30 => 
+  array (
+    'match' => '0CA8 0CBC',
+    'replace' => 'E181',
+  ),
+  31 => 
+  array (
+    'match' => '0CAA 0CBC',
+    'replace' => 'E182',
+  ),
+  32 => 
+  array (
+    'match' => '0CAB 0CBC',
+    'replace' => 'E0EA',
+  ),
+  33 => 
+  array (
+    'match' => '0CAC 0CBC',
+    'replace' => 'E183',
+  ),
+  34 => 
+  array (
+    'match' => '0CAD 0CBC',
+    'replace' => 'E184',
+  ),
+  35 => 
+  array (
+    'match' => '0CAE 0CBC',
+    'replace' => 'E185',
+  ),
+  36 => 
+  array (
+    'match' => '0CAF 0CBC',
+    'replace' => 'E186',
+  ),
+  37 => 
+  array (
+    'match' => '0CB0 0CBC',
+    'replace' => 'E0EB',
+  ),
+  38 => 
+  array (
+    'match' => '0CB1 0CBC',
+    'replace' => 'E187',
+  ),
+  39 => 
+  array (
+    'match' => '0CB2 0CBC',
+    'replace' => 'E188',
+  ),
+  40 => 
+  array (
+    'match' => '0CB3 0CBC',
+    'replace' => 'E189',
+  ),
+  41 => 
+  array (
+    'match' => '0CB5 0CBC',
+    'replace' => 'E18A',
+  ),
+  42 => 
+  array (
+    'match' => '0CB6 0CBC',
+    'replace' => 'E18B',
+  ),
+  43 => 
+  array (
+    'match' => '0CB7 0CBC',
+    'replace' => 'E18C',
+  ),
+  44 => 
+  array (
+    'match' => '0CB8 0CBC',
+    'replace' => 'E18D',
+  ),
+  45 => 
+  array (
+    'match' => '0CB9 0CBC',
+    'replace' => 'E18E',
+  ),
+  46 => 
+  array (
+    'match' => 'E07D 0CBC',
+    'replace' => 'E117',
+  ),
+  47 => 
+  array (
+    'match' => 'E07E 0CBC',
+    'replace' => 'E118',
+  ),
+  48 => 
+  array (
+    'match' => 'E0A3 0CBC',
+    'replace' => 'E136',
+  ),
+  49 => 
+  array (
+    'match' => 'E0AC 0C95',
+    'replace' => 'E02E',
+  ),
+  50 => 
+  array (
+    'match' => 'E0AC 0C96',
+    'replace' => 'E02F',
+  ),
+  51 => 
+  array (
+    'match' => 'E0AC 0C97',
+    'replace' => 'E030',
+  ),
+  52 => 
+  array (
+    'match' => 'E0AC 0C98',
+    'replace' => 'E031',
+  ),
+  53 => 
+  array (
+    'match' => 'E0AC 0C99',
+    'replace' => 'E032',
+  ),
+  54 => 
+  array (
+    'match' => 'E0AC 0C9A',
+    'replace' => 'E033',
+  ),
+  55 => 
+  array (
+    'match' => 'E0AC 0C9B',
+    'replace' => 'E034',
+  ),
+  56 => 
+  array (
+    'match' => 'E0AC 0C9C',
+    'replace' => 'E035',
+  ),
+  57 => 
+  array (
+    'match' => 'E0AC 0C9D',
+    'replace' => 'E036',
+  ),
+  58 => 
+  array (
+    'match' => 'E0AC 0C9E',
+    'replace' => 'E037',
+  ),
+  59 => 
+  array (
+    'match' => 'E0AC 0C9F',
+    'replace' => 'E038',
+  ),
+  60 => 
+  array (
+    'match' => 'E0AC 0CA0',
+    'replace' => 'E039',
+  ),
+  61 => 
+  array (
+    'match' => 'E0AC 0CA1',
+    'replace' => 'E03A',
+  ),
+  62 => 
+  array (
+    'match' => 'E0AC 0CA2',
+    'replace' => 'E03B',
+  ),
+  63 => 
+  array (
+    'match' => 'E0AC 0CA3',
+    'replace' => 'E03C',
+  ),
+  64 => 
+  array (
+    'match' => 'E0AC 0CA4',
+    'replace' => 'E03D',
+  ),
+  65 => 
+  array (
+    'match' => 'E0AC 0CA5',
+    'replace' => 'E03E',
+  ),
+  66 => 
+  array (
+    'match' => 'E0AC 0CA6',
+    'replace' => 'E03F',
+  ),
+  67 => 
+  array (
+    'match' => 'E0AC 0CA7',
+    'replace' => 'E040',
+  ),
+  68 => 
+  array (
+    'match' => 'E0AC 0CA8',
+    'replace' => 'E041',
+  ),
+  69 => 
+  array (
+    'match' => 'E0AC 0CAA',
+    'replace' => 'E042',
+  ),
+  70 => 
+  array (
+    'match' => 'E0AC 0CAB',
+    'replace' => 'E043',
+  ),
+  71 => 
+  array (
+    'match' => 'E0AC 0CAC',
+    'replace' => 'E044',
+  ),
+  72 => 
+  array (
+    'match' => 'E0AC 0CAD',
+    'replace' => 'E045',
+  ),
+  73 => 
+  array (
+    'match' => 'E0AC 0CAE',
+    'replace' => 'E046',
+  ),
+  74 => 
+  array (
+    'match' => 'E0AC 0CAF',
+    'replace' => 'E047',
+  ),
+  75 => 
+  array (
+    'match' => 'E0AC 0CB0',
+    'replace' => 'E048',
+  ),
+  76 => 
+  array (
+    'match' => 'E0AC 0CB1',
+    'replace' => 'E049',
+  ),
+  77 => 
+  array (
+    'match' => 'E0AC 0CB2',
+    'replace' => 'E04A',
+  ),
+  78 => 
+  array (
+    'match' => 'E0AC 0CB3',
+    'replace' => 'E04B',
+  ),
+  79 => 
+  array (
+    'match' => 'E0AC 0CB5',
+    'replace' => 'E04C',
+  ),
+  80 => 
+  array (
+    'match' => 'E0AC 0CB6',
+    'replace' => 'E04D',
+  ),
+  81 => 
+  array (
+    'match' => 'E0AC 0CB7',
+    'replace' => 'E04E',
+  ),
+  82 => 
+  array (
+    'match' => 'E0AC 0CB8',
+    'replace' => 'E04F',
+  ),
+  83 => 
+  array (
+    'match' => 'E0AC 0CB9',
+    'replace' => 'E050',
+  ),
+  84 => 
+  array (
+    'match' => 'E0AC E07D',
+    'replace' => 'E081',
+  ),
+  85 => 
+  array (
+    'match' => 'E07D E03C',
+    'replace' => 'E0A3',
+  ),
+  86 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E02E',
+    'replace' => '\\1 E052',
+  ),
+  87 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E02F',
+    'replace' => '\\1 E053',
+  ),
+  88 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E030',
+    'replace' => '\\1 E054',
+  ),
+  89 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E031',
+    'replace' => '\\1 E055',
+  ),
+  90 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E032',
+    'replace' => '\\1 E056',
+  ),
+  91 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E033',
+    'replace' => '\\1 E057',
+  ),
+  92 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E034',
+    'replace' => '\\1 E058',
+  ),
+  93 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E035',
+    'replace' => '\\1 E059',
+  ),
+  94 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E036',
+    'replace' => '\\1 E05A',
+  ),
+  95 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E037',
+    'replace' => '\\1 E05B',
+  ),
+  96 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E038',
+    'replace' => '\\1 E05C',
+  ),
+  97 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E039',
+    'replace' => '\\1 E05D',
+  ),
+  98 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03A',
+    'replace' => '\\1 E05E',
+  ),
+  99 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03B',
+    'replace' => '\\1 E05F',
+  ),
+  100 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03C',
+    'replace' => '\\1 E060',
+  ),
+  101 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03D',
+    'replace' => '\\1 E061',
+  ),
+  102 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03E',
+    'replace' => '\\1 E062',
+  ),
+  103 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E03F',
+    'replace' => '\\1 E063',
+  ),
+  104 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E040',
+    'replace' => '\\1 E064',
+  ),
+  105 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E041',
+    'replace' => '\\1 E065',
+  ),
+  106 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E042',
+    'replace' => '\\1 E066',
+  ),
+  107 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E043',
+    'replace' => '\\1 E067',
+  ),
+  108 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E044',
+    'replace' => '\\1 E068',
+  ),
+  109 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E045',
+    'replace' => '\\1 E069',
+  ),
+  110 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E046',
+    'replace' => '\\1 E06A',
+  ),
+  111 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E047',
+    'replace' => '\\1 E06B',
+  ),
+  112 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E048',
+    'replace' => '\\1 E06C',
+  ),
+  113 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E049',
+    'replace' => '\\1 E06D',
+  ),
+  114 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04A',
+    'replace' => '\\1 E06E',
+  ),
+  115 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04B',
+    'replace' => '\\1 E06F',
+  ),
+  116 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04C',
+    'replace' => '\\1 E070',
+  ),
+  117 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04D',
+    'replace' => '\\1 E071',
+  ),
+  118 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04E',
+    'replace' => '\\1 E072',
+  ),
+  119 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E04F',
+    'replace' => '\\1 E073',
+  ),
+  120 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E050',
+    'replace' => '\\1 E074',
+  ),
+  121 => 
+  array (
+    'match' => '((E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E081)) E081',
+    'replace' => '\\1 E081',
+  ),
+  122 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E02E',
+    'replace' => '\\1 E052',
+  ),
+  123 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E02F',
+    'replace' => '\\1 E053',
+  ),
+  124 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E030',
+    'replace' => '\\1 E054',
+  ),
+  125 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E031',
+    'replace' => '\\1 E055',
+  ),
+  126 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E032',
+    'replace' => '\\1 E056',
+  ),
+  127 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E033',
+    'replace' => '\\1 E057',
+  ),
+  128 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E034',
+    'replace' => '\\1 E058',
+  ),
+  129 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E035',
+    'replace' => '\\1 E059',
+  ),
+  130 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E036',
+    'replace' => '\\1 E05A',
+  ),
+  131 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E037',
+    'replace' => '\\1 E05B',
+  ),
+  132 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E038',
+    'replace' => '\\1 E05C',
+  ),
+  133 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E039',
+    'replace' => '\\1 E05D',
+  ),
+  134 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03A',
+    'replace' => '\\1 E05E',
+  ),
+  135 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03B',
+    'replace' => '\\1 E05F',
+  ),
+  136 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03C',
+    'replace' => '\\1 E060',
+  ),
+  137 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03D',
+    'replace' => '\\1 E061',
+  ),
+  138 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03E',
+    'replace' => '\\1 E062',
+  ),
+  139 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03F',
+    'replace' => '\\1 E063',
+  ),
+  140 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E040',
+    'replace' => '\\1 E064',
+  ),
+  141 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E041',
+    'replace' => '\\1 E065',
+  ),
+  142 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E042',
+    'replace' => '\\1 E066',
+  ),
+  143 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E043',
+    'replace' => '\\1 E067',
+  ),
+  144 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E044',
+    'replace' => '\\1 E068',
+  ),
+  145 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E045',
+    'replace' => '\\1 E069',
+  ),
+  146 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E046',
+    'replace' => '\\1 E06A',
+  ),
+  147 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E047',
+    'replace' => '\\1 E06B',
+  ),
+  148 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E048',
+    'replace' => '\\1 E06C',
+  ),
+  149 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E049',
+    'replace' => '\\1 E06D',
+  ),
+  150 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04A',
+    'replace' => '\\1 E06E',
+  ),
+  151 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04B',
+    'replace' => '\\1 E06F',
+  ),
+  152 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04C',
+    'replace' => '\\1 E070',
+  ),
+  153 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04D',
+    'replace' => '\\1 E071',
+  ),
+  154 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04E',
+    'replace' => '\\1 E072',
+  ),
+  155 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04F',
+    'replace' => '\\1 E073',
+  ),
+  156 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E050',
+    'replace' => '\\1 E074',
+  ),
+  157 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E081',
+    'replace' => '\\1 E081',
+  ),
+  158 => 
+  array (
+    'match' => '(E07D) E02E',
+    'replace' => '\\1 E052',
+  ),
+  159 => 
+  array (
+    'match' => '(E07D) E02F',
+    'replace' => '\\1 E053',
+  ),
+  160 => 
+  array (
+    'match' => '(E07D) E030',
+    'replace' => '\\1 E054',
+  ),
+  161 => 
+  array (
+    'match' => '(E07D) E031',
+    'replace' => '\\1 E055',
+  ),
+  162 => 
+  array (
+    'match' => '(E07D) E032',
+    'replace' => '\\1 E056',
+  ),
+  163 => 
+  array (
+    'match' => '(E07D) E033',
+    'replace' => '\\1 E057',
+  ),
+  164 => 
+  array (
+    'match' => '(E07D) E034',
+    'replace' => '\\1 E058',
+  ),
+  165 => 
+  array (
+    'match' => '(E07D) E035',
+    'replace' => '\\1 E059',
+  ),
+  166 => 
+  array (
+    'match' => '(E07D) E036',
+    'replace' => '\\1 E05A',
+  ),
+  167 => 
+  array (
+    'match' => '(E07D) E037',
+    'replace' => '\\1 E05B',
+  ),
+  168 => 
+  array (
+    'match' => '(E07D) E038',
+    'replace' => '\\1 E05C',
+  ),
+  169 => 
+  array (
+    'match' => '(E07D) E039',
+    'replace' => '\\1 E05D',
+  ),
+  170 => 
+  array (
+    'match' => '(E07D) E03A',
+    'replace' => '\\1 E05E',
+  ),
+  171 => 
+  array (
+    'match' => '(E07D) E03B',
+    'replace' => '\\1 E05F',
+  ),
+  172 => 
+  array (
+    'match' => '(E07D) E03C',
+    'replace' => '\\1 E060',
+  ),
+  173 => 
+  array (
+    'match' => '(E07D) E03D',
+    'replace' => '\\1 E061',
+  ),
+  174 => 
+  array (
+    'match' => '(E07D) E03E',
+    'replace' => '\\1 E062',
+  ),
+  175 => 
+  array (
+    'match' => '(E07D) E03F',
+    'replace' => '\\1 E063',
+  ),
+  176 => 
+  array (
+    'match' => '(E07D) E040',
+    'replace' => '\\1 E064',
+  ),
+  177 => 
+  array (
+    'match' => '(E07D) E041',
+    'replace' => '\\1 E065',
+  ),
+  178 => 
+  array (
+    'match' => '(E07D) E042',
+    'replace' => '\\1 E066',
+  ),
+  179 => 
+  array (
+    'match' => '(E07D) E043',
+    'replace' => '\\1 E067',
+  ),
+  180 => 
+  array (
+    'match' => '(E07D) E044',
+    'replace' => '\\1 E068',
+  ),
+  181 => 
+  array (
+    'match' => '(E07D) E045',
+    'replace' => '\\1 E069',
+  ),
+  182 => 
+  array (
+    'match' => '(E07D) E046',
+    'replace' => '\\1 E06A',
+  ),
+  183 => 
+  array (
+    'match' => '(E07D) E047',
+    'replace' => '\\1 E06B',
+  ),
+  184 => 
+  array (
+    'match' => '(E07D) E048',
+    'replace' => '\\1 E06C',
+  ),
+  185 => 
+  array (
+    'match' => '(E07D) E049',
+    'replace' => '\\1 E06D',
+  ),
+  186 => 
+  array (
+    'match' => '(E07D) E04A',
+    'replace' => '\\1 E06E',
+  ),
+  187 => 
+  array (
+    'match' => '(E07D) E04B',
+    'replace' => '\\1 E06F',
+  ),
+  188 => 
+  array (
+    'match' => '(E07D) E04C',
+    'replace' => '\\1 E070',
+  ),
+  189 => 
+  array (
+    'match' => '(E07D) E04D',
+    'replace' => '\\1 E071',
+  ),
+  190 => 
+  array (
+    'match' => '(E07D) E04E',
+    'replace' => '\\1 E072',
+  ),
+  191 => 
+  array (
+    'match' => '(E07D) E04F',
+    'replace' => '\\1 E073',
+  ),
+  192 => 
+  array (
+    'match' => '(E07D) E050',
+    'replace' => '\\1 E074',
+  ),
+  193 => 
+  array (
+    'match' => '(E07D) E081',
+    'replace' => '\\1 E081',
+  ),
+  194 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02E',
+    'replace' => '\\1 E052',
+  ),
+  195 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02F',
+    'replace' => '\\1 E053',
+  ),
+  196 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E030',
+    'replace' => '\\1 E054',
+  ),
+  197 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E031',
+    'replace' => '\\1 E055',
+  ),
+  198 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E032',
+    'replace' => '\\1 E056',
+  ),
+  199 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E033',
+    'replace' => '\\1 E057',
+  ),
+  200 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E034',
+    'replace' => '\\1 E058',
+  ),
+  201 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E035',
+    'replace' => '\\1 E059',
+  ),
+  202 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E036',
+    'replace' => '\\1 E05A',
+  ),
+  203 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E037',
+    'replace' => '\\1 E05B',
+  ),
+  204 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E038',
+    'replace' => '\\1 E05C',
+  ),
+  205 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E039',
+    'replace' => '\\1 E05D',
+  ),
+  206 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03A',
+    'replace' => '\\1 E05E',
+  ),
+  207 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03B',
+    'replace' => '\\1 E05F',
+  ),
+  208 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03C',
+    'replace' => '\\1 E060',
+  ),
+  209 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03D',
+    'replace' => '\\1 E061',
+  ),
+  210 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03E',
+    'replace' => '\\1 E062',
+  ),
+  211 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03F',
+    'replace' => '\\1 E063',
+  ),
+  212 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E040',
+    'replace' => '\\1 E064',
+  ),
+  213 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E041',
+    'replace' => '\\1 E065',
+  ),
+  214 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E042',
+    'replace' => '\\1 E066',
+  ),
+  215 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E043',
+    'replace' => '\\1 E067',
+  ),
+  216 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E044',
+    'replace' => '\\1 E068',
+  ),
+  217 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E045',
+    'replace' => '\\1 E069',
+  ),
+  218 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E046',
+    'replace' => '\\1 E06A',
+  ),
+  219 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E047',
+    'replace' => '\\1 E06B',
+  ),
+  220 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E048',
+    'replace' => '\\1 E06C',
+  ),
+  221 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E049',
+    'replace' => '\\1 E06D',
+  ),
+  222 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04A',
+    'replace' => '\\1 E06E',
+  ),
+  223 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04B',
+    'replace' => '\\1 E06F',
+  ),
+  224 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04C',
+    'replace' => '\\1 E070',
+  ),
+  225 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04D',
+    'replace' => '\\1 E071',
+  ),
+  226 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04E',
+    'replace' => '\\1 E072',
+  ),
+  227 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04F',
+    'replace' => '\\1 E073',
+  ),
+  228 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E050',
+    'replace' => '\\1 E074',
+  ),
+  229 => 
+  array (
+    'match' => '(E07D (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E081',
+    'replace' => '\\1 E081',
+  ),
+  230 => 
+  array (
+    'match' => '(E07E) E02E',
+    'replace' => '\\1 E052',
+  ),
+  231 => 
+  array (
+    'match' => '(E07E) E02F',
+    'replace' => '\\1 E053',
+  ),
+  232 => 
+  array (
+    'match' => '(E07E) E030',
+    'replace' => '\\1 E054',
+  ),
+  233 => 
+  array (
+    'match' => '(E07E) E031',
+    'replace' => '\\1 E055',
+  ),
+  234 => 
+  array (
+    'match' => '(E07E) E032',
+    'replace' => '\\1 E056',
+  ),
+  235 => 
+  array (
+    'match' => '(E07E) E033',
+    'replace' => '\\1 E057',
+  ),
+  236 => 
+  array (
+    'match' => '(E07E) E034',
+    'replace' => '\\1 E058',
+  ),
+  237 => 
+  array (
+    'match' => '(E07E) E035',
+    'replace' => '\\1 E059',
+  ),
+  238 => 
+  array (
+    'match' => '(E07E) E036',
+    'replace' => '\\1 E05A',
+  ),
+  239 => 
+  array (
+    'match' => '(E07E) E037',
+    'replace' => '\\1 E05B',
+  ),
+  240 => 
+  array (
+    'match' => '(E07E) E038',
+    'replace' => '\\1 E05C',
+  ),
+  241 => 
+  array (
+    'match' => '(E07E) E039',
+    'replace' => '\\1 E05D',
+  ),
+  242 => 
+  array (
+    'match' => '(E07E) E03A',
+    'replace' => '\\1 E05E',
+  ),
+  243 => 
+  array (
+    'match' => '(E07E) E03B',
+    'replace' => '\\1 E05F',
+  ),
+  244 => 
+  array (
+    'match' => '(E07E) E03C',
+    'replace' => '\\1 E060',
+  ),
+  245 => 
+  array (
+    'match' => '(E07E) E03D',
+    'replace' => '\\1 E061',
+  ),
+  246 => 
+  array (
+    'match' => '(E07E) E03E',
+    'replace' => '\\1 E062',
+  ),
+  247 => 
+  array (
+    'match' => '(E07E) E03F',
+    'replace' => '\\1 E063',
+  ),
+  248 => 
+  array (
+    'match' => '(E07E) E040',
+    'replace' => '\\1 E064',
+  ),
+  249 => 
+  array (
+    'match' => '(E07E) E041',
+    'replace' => '\\1 E065',
+  ),
+  250 => 
+  array (
+    'match' => '(E07E) E042',
+    'replace' => '\\1 E066',
+  ),
+  251 => 
+  array (
+    'match' => '(E07E) E043',
+    'replace' => '\\1 E067',
+  ),
+  252 => 
+  array (
+    'match' => '(E07E) E044',
+    'replace' => '\\1 E068',
+  ),
+  253 => 
+  array (
+    'match' => '(E07E) E045',
+    'replace' => '\\1 E069',
+  ),
+  254 => 
+  array (
+    'match' => '(E07E) E046',
+    'replace' => '\\1 E06A',
+  ),
+  255 => 
+  array (
+    'match' => '(E07E) E047',
+    'replace' => '\\1 E06B',
+  ),
+  256 => 
+  array (
+    'match' => '(E07E) E048',
+    'replace' => '\\1 E06C',
+  ),
+  257 => 
+  array (
+    'match' => '(E07E) E049',
+    'replace' => '\\1 E06D',
+  ),
+  258 => 
+  array (
+    'match' => '(E07E) E04A',
+    'replace' => '\\1 E06E',
+  ),
+  259 => 
+  array (
+    'match' => '(E07E) E04B',
+    'replace' => '\\1 E06F',
+  ),
+  260 => 
+  array (
+    'match' => '(E07E) E04C',
+    'replace' => '\\1 E070',
+  ),
+  261 => 
+  array (
+    'match' => '(E07E) E04D',
+    'replace' => '\\1 E071',
+  ),
+  262 => 
+  array (
+    'match' => '(E07E) E04E',
+    'replace' => '\\1 E072',
+  ),
+  263 => 
+  array (
+    'match' => '(E07E) E04F',
+    'replace' => '\\1 E073',
+  ),
+  264 => 
+  array (
+    'match' => '(E07E) E050',
+    'replace' => '\\1 E074',
+  ),
+  265 => 
+  array (
+    'match' => '(E07E) E081',
+    'replace' => '\\1 E081',
+  ),
+  266 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02E',
+    'replace' => '\\1 E052',
+  ),
+  267 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E02F',
+    'replace' => '\\1 E053',
+  ),
+  268 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E030',
+    'replace' => '\\1 E054',
+  ),
+  269 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E031',
+    'replace' => '\\1 E055',
+  ),
+  270 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E032',
+    'replace' => '\\1 E056',
+  ),
+  271 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E033',
+    'replace' => '\\1 E057',
+  ),
+  272 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E034',
+    'replace' => '\\1 E058',
+  ),
+  273 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E035',
+    'replace' => '\\1 E059',
+  ),
+  274 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E036',
+    'replace' => '\\1 E05A',
+  ),
+  275 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E037',
+    'replace' => '\\1 E05B',
+  ),
+  276 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E038',
+    'replace' => '\\1 E05C',
+  ),
+  277 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E039',
+    'replace' => '\\1 E05D',
+  ),
+  278 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03A',
+    'replace' => '\\1 E05E',
+  ),
+  279 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03B',
+    'replace' => '\\1 E05F',
+  ),
+  280 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03C',
+    'replace' => '\\1 E060',
+  ),
+  281 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03D',
+    'replace' => '\\1 E061',
+  ),
+  282 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03E',
+    'replace' => '\\1 E062',
+  ),
+  283 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E03F',
+    'replace' => '\\1 E063',
+  ),
+  284 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E040',
+    'replace' => '\\1 E064',
+  ),
+  285 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E041',
+    'replace' => '\\1 E065',
+  ),
+  286 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E042',
+    'replace' => '\\1 E066',
+  ),
+  287 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E043',
+    'replace' => '\\1 E067',
+  ),
+  288 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E044',
+    'replace' => '\\1 E068',
+  ),
+  289 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E045',
+    'replace' => '\\1 E069',
+  ),
+  290 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E046',
+    'replace' => '\\1 E06A',
+  ),
+  291 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E047',
+    'replace' => '\\1 E06B',
+  ),
+  292 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E048',
+    'replace' => '\\1 E06C',
+  ),
+  293 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E049',
+    'replace' => '\\1 E06D',
+  ),
+  294 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04A',
+    'replace' => '\\1 E06E',
+  ),
+  295 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04B',
+    'replace' => '\\1 E06F',
+  ),
+  296 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04C',
+    'replace' => '\\1 E070',
+  ),
+  297 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04D',
+    'replace' => '\\1 E071',
+  ),
+  298 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04E',
+    'replace' => '\\1 E072',
+  ),
+  299 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E04F',
+    'replace' => '\\1 E073',
+  ),
+  300 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E050',
+    'replace' => '\\1 E074',
+  ),
+  301 => 
+  array (
+    'match' => '(E07E (0CBE|0CBF|0CC6|0CC1|0CC2|0CCC|0CCA)) E081',
+    'replace' => '\\1 E081',
+  ),
+  302 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E03D',
+    'replace' => '\\1 E076',
+  ),
+  303 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E041',
+    'replace' => '\\1 E077',
+  ),
+  304 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E046',
+    'replace' => '\\1 E078',
+  ),
+  305 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E047',
+    'replace' => '\\1 E079',
+  ),
+  306 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E048',
+    'replace' => '\\1 E07A',
+  ),
+  307 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04A',
+    'replace' => '\\1 E07B',
+  ),
+  308 => 
+  array (
+    'match' => '((E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E081)) E04E',
+    'replace' => '\\1 E07C',
+  ),
+  309 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E030',
+    'replace' => '\\1 E104',
+  ),
+  310 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E032',
+    'replace' => '\\1 E105',
+  ),
+  311 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E034',
+    'replace' => '\\1 E106',
+  ),
+  312 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E035',
+    'replace' => '\\1 E107',
+  ),
+  313 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E036',
+    'replace' => '\\1 E108',
+  ),
+  314 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E037',
+    'replace' => '\\1 E109',
+  ),
+  315 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E039',
+    'replace' => '\\1 E10A',
+  ),
+  316 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03A',
+    'replace' => '\\1 E10B',
+  ),
+  317 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03B',
+    'replace' => '\\1 E10C',
+  ),
+  318 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03C',
+    'replace' => '\\1 E10D',
+  ),
+  319 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03E',
+    'replace' => '\\1 E10E',
+  ),
+  320 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E03F',
+    'replace' => '\\1 E10F',
+  ),
+  321 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E040',
+    'replace' => '\\1 E110',
+  ),
+  322 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E049',
+    'replace' => '\\1 E111',
+  ),
+  323 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E04A',
+    'replace' => '\\1 E112',
+  ),
+  324 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E04C',
+    'replace' => '\\1 E113',
+  ),
+  325 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E04E',
+    'replace' => '\\1 E114',
+  ),
+  326 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E050',
+    'replace' => '\\1 E115',
+  ),
+  327 => 
+  array (
+    'match' => '((E0E6|E0E7|E172|E173|E174|E175|E176|E0E8|E0E9|E177|E178|E179|E17A|E17B|E17C|E17D|E17E|E17F|E180|E181|E182|E0EA|E183|E184|E185|E186|E0EB|E187|E188|E189|E18A|E18B|E18C|E18D|E18E|E0F2|E0F3|E11B|E11C|E11D|E11E|E0F4|E0F5|E11F|E120|E121|E122|E123|E124|E125|E126|E127|E128|E0F9|E129|E12A|E12B|E12C|E0FD|E12D|E12E|E12F|E130|E131|E132|E133)) E051',
+    'replace' => '\\1 E116',
+  ),
+  328 => 
+  array (
+    'match' => '((0CAA|0CAB|0CB5|E182|E0EA|E18A)) 0CC1',
+    'replace' => '\\1 E007',
+  ),
+  329 => 
+  array (
+    'match' => '((0CAA|0CAB|0CB5|E182|E0EA|E18A)) 0CC2',
+    'replace' => '\\1 E009',
+  ),
+  330 => 
+  array (
+    'match' => '((0CB3|E189)) 0CC1',
+    'replace' => '\\1 E008',
+  ),
+  331 => 
+  array (
+    'match' => '((0CB3|E189)) 0CC2',
+    'replace' => '\\1 E00A',
+  ),
+  332 => 
+  array (
+    'match' => '0C98 0CC1',
+    'replace' => 'E0A5',
+  ),
+  333 => 
+  array (
+    'match' => '0C98 0CC6',
+    'replace' => 'E0A6',
+  ),
+  334 => 
+  array (
+    'match' => '0C98 0CCA',
+    'replace' => 'E0A7',
+  ),
+  335 => 
+  array (
+    'match' => '0C98 0CCB',
+    'replace' => 'E0A8',
+  ),
+  336 => 
+  array (
+    'match' => '0C99 0CC6',
+    'replace' => 'E0A9',
+  ),
+  337 => 
+  array (
+    'match' => '0C99 0CCA',
+    'replace' => 'E0AA',
+  ),
+  338 => 
+  array (
+    'match' => '0C99 0CCB',
+    'replace' => 'E0AB',
+  ),
+  339 => 
+  array (
+    'match' => '0C9E 0CC1',
+    'replace' => 'E0D8',
+  ),
+  340 => 
+  array (
+    'match' => '0C9E 0CC2',
+    'replace' => 'E0D9',
+  ),
+  341 => 
+  array (
+    'match' => '0C9E 0CC6',
+    'replace' => 'E0DA',
+  ),
+  342 => 
+  array (
+    'match' => '0C9E 0CCA',
+    'replace' => 'E0DB',
+  ),
+  343 => 
+  array (
+    'match' => '0CB1 0CC6',
+    'replace' => 'E0AC',
+  ),
+  344 => 
+  array (
+    'match' => '0CB1 0CCA',
+    'replace' => 'E0AD',
+  ),
+  345 => 
+  array (
+    'match' => '0CB1 0CCB',
+    'replace' => 'E0AE',
+  ),
+  346 => 
+  array (
+    'match' => '0CAA 0CCA',
+    'replace' => 'E0AF',
+  ),
+  347 => 
+  array (
+    'match' => '0CAB 0CCA',
+    'replace' => 'E0B0',
+  ),
+  348 => 
+  array (
+    'match' => '0CB5 0CCA',
+    'replace' => 'E0B1',
+  ),
+  349 => 
+  array (
+    'match' => '0C9D 0CC6',
+    'replace' => 'E0DD',
+  ),
+  350 => 
+  array (
+    'match' => '0C9D 0CCA',
+    'replace' => 'E0DE',
+  ),
+  351 => 
+  array (
+    'match' => '0C9D 0CCB',
+    'replace' => 'E0DF',
+  ),
+  352 => 
+  array (
+    'match' => '0CAE 0CC6',
+    'replace' => 'E0E0',
+  ),
+  353 => 
+  array (
+    'match' => '0CAE 0CCA',
+    'replace' => 'E0E1',
+  ),
+  354 => 
+  array (
+    'match' => '0CAE 0CCB',
+    'replace' => 'E0E2',
+  ),
+  355 => 
+  array (
+    'match' => '0CAF 0CC6',
+    'replace' => 'E0E3',
+  ),
+  356 => 
+  array (
+    'match' => '0CAF 0CCA',
+    'replace' => 'E0E4',
+  ),
+  357 => 
+  array (
+    'match' => '0CAF 0CCB',
+    'replace' => 'E0E5',
+  ),
+  358 => 
+  array (
+    'match' => '0CB3 0CCA',
+    'replace' => 'E0DC',
+  ),
+  359 => 
+  array (
+    'match' => 'E173 0CC1',
+    'replace' => 'E138',
+  ),
+  360 => 
+  array (
+    'match' => 'E173 0CC6',
+    'replace' => 'E139',
+  ),
+  361 => 
+  array (
+    'match' => 'E173 0CCA',
+    'replace' => 'E13A',
+  ),
+  362 => 
+  array (
+    'match' => 'E174 0CC6',
+    'replace' => 'E13C',
+  ),
+  363 => 
+  array (
+    'match' => 'E174 0CCA',
+    'replace' => 'E13D',
+  ),
+  364 => 
+  array (
+    'match' => 'E187 0CC6',
+    'replace' => 'E13F',
+  ),
+  365 => 
+  array (
+    'match' => 'E187 0CCA',
+    'replace' => 'E140',
+  ),
+  366 => 
+  array (
+    'match' => 'E182 0CCA',
+    'replace' => 'E142',
+  ),
+  367 => 
+  array (
+    'match' => 'E0EA 0CCA',
+    'replace' => 'E0FC',
+  ),
+  368 => 
+  array (
+    'match' => 'E18A 0CCA',
+    'replace' => 'E143',
+  ),
+  369 => 
+  array (
+    'match' => 'E177 0CC1',
+    'replace' => 'E164',
+  ),
+  370 => 
+  array (
+    'match' => 'E177 0CC2',
+    'replace' => 'E165',
+  ),
+  371 => 
+  array (
+    'match' => 'E177 0CC6',
+    'replace' => 'E166',
+  ),
+  372 => 
+  array (
+    'match' => 'E177 0CCA',
+    'replace' => 'E167',
+  ),
+  373 => 
+  array (
+    'match' => 'E189 0CCA',
+    'replace' => 'E168',
+  ),
+  374 => 
+  array (
+    'match' => 'E0E9 0CC6',
+    'replace' => 'E0F6',
+  ),
+  375 => 
+  array (
+    'match' => 'E0E9 0CCA',
+    'replace' => 'E0F8',
+  ),
+  376 => 
+  array (
+    'match' => 'E185 0CC6',
+    'replace' => 'E16C',
+  ),
+  377 => 
+  array (
+    'match' => 'E185 0CCA',
+    'replace' => 'E16D',
+  ),
+  378 => 
+  array (
+    'match' => 'E186 0CC6',
+    'replace' => 'E16F',
+  ),
+  379 => 
+  array (
+    'match' => 'E186 0CCA',
+    'replace' => 'E170',
+  ),
+  380 => 
+  array (
+    'match' => '0C95 0CBF',
+    'replace' => 'E082',
+  ),
+  381 => 
+  array (
+    'match' => '0C96 0CBF',
+    'replace' => 'E083',
+  ),
+  382 => 
+  array (
+    'match' => '0C97 0CBF',
+    'replace' => 'E084',
+  ),
+  383 => 
+  array (
+    'match' => '0C98 0CBF',
+    'replace' => 'E085',
+  ),
+  384 => 
+  array (
+    'match' => '0C9A 0CBF',
+    'replace' => 'E086',
+  ),
+  385 => 
+  array (
+    'match' => '0C9B 0CBF',
+    'replace' => 'E087',
+  ),
+  386 => 
+  array (
+    'match' => '0C9C 0CBF',
+    'replace' => 'E088',
+  ),
+  387 => 
+  array (
+    'match' => '0C9D 0CBF',
+    'replace' => 'E089',
+  ),
+  388 => 
+  array (
+    'match' => '0CA0 0CBF',
+    'replace' => 'E08A',
+  ),
+  389 => 
+  array (
+    'match' => '0CA1 0CBF',
+    'replace' => 'E08B',
+  ),
+  390 => 
+  array (
+    'match' => '0CA2 0CBF',
+    'replace' => 'E08C',
+  ),
+  391 => 
+  array (
+    'match' => '0CA3 0CBF',
+    'replace' => 'E08D',
+  ),
+  392 => 
+  array (
+    'match' => '0CA4 0CBF',
+    'replace' => 'E08E',
+  ),
+  393 => 
+  array (
+    'match' => '0CA5 0CBF',
+    'replace' => 'E08F',
+  ),
+  394 => 
+  array (
+    'match' => '0CA6 0CBF',
+    'replace' => 'E090',
+  ),
+  395 => 
+  array (
+    'match' => '0CA7 0CBF',
+    'replace' => 'E091',
+  ),
+  396 => 
+  array (
+    'match' => '0CA8 0CBF',
+    'replace' => 'E092',
+  ),
+  397 => 
+  array (
+    'match' => '0CAA 0CBF',
+    'replace' => 'E093',
+  ),
+  398 => 
+  array (
+    'match' => '0CAB 0CBF',
+    'replace' => 'E094',
+  ),
+  399 => 
+  array (
+    'match' => '0CAC 0CBF',
+    'replace' => 'E095',
+  ),
+  400 => 
+  array (
+    'match' => '0CAD 0CBF',
+    'replace' => 'E096',
+  ),
+  401 => 
+  array (
+    'match' => '0CAE 0CBF',
+    'replace' => 'E097',
+  ),
+  402 => 
+  array (
+    'match' => '0CAF 0CBF',
+    'replace' => 'E098',
+  ),
+  403 => 
+  array (
+    'match' => '0CB0 0CBF',
+    'replace' => 'E099',
+  ),
+  404 => 
+  array (
+    'match' => '0CB2 0CBF',
+    'replace' => 'E09A',
+  ),
+  405 => 
+  array (
+    'match' => '0CB3 0CBF',
+    'replace' => 'E09B',
+  ),
+  406 => 
+  array (
+    'match' => '0CB5 0CBF',
+    'replace' => 'E09C',
+  ),
+  407 => 
+  array (
+    'match' => '0CB6 0CBF',
+    'replace' => 'E09D',
+  ),
+  408 => 
+  array (
+    'match' => '0CB7 0CBF',
+    'replace' => 'E09E',
+  ),
+  409 => 
+  array (
+    'match' => '0CB8 0CBF',
+    'replace' => 'E09F',
+  ),
+  410 => 
+  array (
+    'match' => '0CB9 0CBF',
+    'replace' => 'E0A0',
+  ),
+  411 => 
+  array (
+    'match' => 'E07D 0CBF',
+    'replace' => 'E0A1',
+  ),
+  412 => 
+  array (
+    'match' => 'E07E 0CBF',
+    'replace' => 'E0A2',
+  ),
+  413 => 
+  array (
+    'match' => 'E0E6 0CBF',
+    'replace' => 'E0F2',
+  ),
+  414 => 
+  array (
+    'match' => 'E0E7 0CBF',
+    'replace' => 'E0F3',
+  ),
+  415 => 
+  array (
+    'match' => 'E172 0CBF',
+    'replace' => 'E11B',
+  ),
+  416 => 
+  array (
+    'match' => 'E173 0CBF',
+    'replace' => 'E11C',
+  ),
+  417 => 
+  array (
+    'match' => 'E175 0CBF',
+    'replace' => 'E11D',
+  ),
+  418 => 
+  array (
+    'match' => 'E176 0CBF',
+    'replace' => 'E11E',
+  ),
+  419 => 
+  array (
+    'match' => 'E0E8 0CBF',
+    'replace' => 'E0F4',
+  ),
+  420 => 
+  array (
+    'match' => 'E0E9 0CBF',
+    'replace' => 'E0F5',
+  ),
+  421 => 
+  array (
+    'match' => 'E179 0CBF',
+    'replace' => 'E11F',
+  ),
+  422 => 
+  array (
+    'match' => 'E17A 0CBF',
+    'replace' => 'E120',
+  ),
+  423 => 
+  array (
+    'match' => 'E17B 0CBF',
+    'replace' => 'E121',
+  ),
+  424 => 
+  array (
+    'match' => 'E17C 0CBF',
+    'replace' => 'E122',
+  ),
+  425 => 
+  array (
+    'match' => 'E17D 0CBF',
+    'replace' => 'E123',
+  ),
+  426 => 
+  array (
+    'match' => 'E17E 0CBF',
+    'replace' => 'E124',
+  ),
+  427 => 
+  array (
+    'match' => 'E17F 0CBF',
+    'replace' => 'E125',
+  ),
+  428 => 
+  array (
+    'match' => 'E180 0CBF',
+    'replace' => 'E126',
+  ),
+  429 => 
+  array (
+    'match' => 'E181 0CBF',
+    'replace' => 'E127',
+  ),
+  430 => 
+  array (
+    'match' => 'E182 0CBF',
+    'replace' => 'E128',
+  ),
+  431 => 
+  array (
+    'match' => 'E0EA 0CBF',
+    'replace' => 'E0F9',
+  ),
+  432 => 
+  array (
+    'match' => 'E183 0CBF',
+    'replace' => 'E129',
+  ),
+  433 => 
+  array (
+    'match' => 'E184 0CBF',
+    'replace' => 'E12A',
+  ),
+  434 => 
+  array (
+    'match' => 'E185 0CBF',
+    'replace' => 'E12B',
+  ),
+  435 => 
+  array (
+    'match' => 'E186 0CBF',
+    'replace' => 'E12C',
+  ),
+  436 => 
+  array (
+    'match' => 'E0EB 0CBF',
+    'replace' => 'E0FD',
+  ),
+  437 => 
+  array (
+    'match' => 'E188 0CBF',
+    'replace' => 'E12D',
+  ),
+  438 => 
+  array (
+    'match' => 'E189 0CBF',
+    'replace' => 'E12E',
+  ),
+  439 => 
+  array (
+    'match' => 'E18A 0CBF',
+    'replace' => 'E12F',
+  ),
+  440 => 
+  array (
+    'match' => 'E18B 0CBF',
+    'replace' => 'E130',
+  ),
+  441 => 
+  array (
+    'match' => 'E18C 0CBF',
+    'replace' => 'E131',
+  ),
+  442 => 
+  array (
+    'match' => 'E18D 0CBF',
+    'replace' => 'E132',
+  ),
+  443 => 
+  array (
+    'match' => 'E18E 0CBF',
+    'replace' => 'E133',
+  ),
+  444 => 
+  array (
+    'match' => 'E117 0CBF',
+    'replace' => 'E134',
+  ),
+  445 => 
+  array (
+    'match' => 'E118 0CBF',
+    'replace' => 'E135',
+  ),
+  446 => 
+  array (
+    'match' => 'E136 0CBF',
+    'replace' => 'E137',
+  ),
+  447 => 
+  array (
+    'match' => 'E0AD',
+    'replace' => '0CCD',
+  ),
+  448 => 
+  array (
+    'match' => 'E0AC',
+    'replace' => '0CCD',
+  ),
+  449 => 
+  array (
+    'match' => '0C95 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E00C \\1',
+  ),
+  450 => 
+  array (
+    'match' => '0C96 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E00D \\1',
+  ),
+  451 => 
+  array (
+    'match' => '0C97 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E00E \\1',
+  ),
+  452 => 
+  array (
+    'match' => '0C98 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E00F \\1',
+  ),
+  453 => 
+  array (
+    'match' => '0C99 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E010 \\1',
+  ),
+  454 => 
+  array (
+    'match' => '0C9A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E011 \\1',
+  ),
+  455 => 
+  array (
+    'match' => '0C9B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E012 \\1',
+  ),
+  456 => 
+  array (
+    'match' => '0C9C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E013 \\1',
+  ),
+  457 => 
+  array (
+    'match' => '0C9D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E014 \\1',
+  ),
+  458 => 
+  array (
+    'match' => '0C9F ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E015 \\1',
+  ),
+  459 => 
+  array (
+    'match' => '0CA0 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E016 \\1',
+  ),
+  460 => 
+  array (
+    'match' => '0CA1 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E017 \\1',
+  ),
+  461 => 
+  array (
+    'match' => '0CA2 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E018 \\1',
+  ),
+  462 => 
+  array (
+    'match' => '0CA3 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E019 \\1',
+  ),
+  463 => 
+  array (
+    'match' => '0CA4 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E01A \\1',
+  ),
+  464 => 
+  array (
+    'match' => '0CA5 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E01B \\1',
+  ),
+  465 => 
+  array (
+    'match' => '0CA6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E01C \\1',
+  ),
+  466 => 
+  array (
+    'match' => '0CA7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E01D \\1',
+  ),
+  467 => 
+  array (
+    'match' => '0CA8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E01E \\1',
+  ),
+  468 => 
+  array (
+    'match' => '0CAA ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E01F \\1',
+  ),
+  469 => 
+  array (
+    'match' => '0CAB ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E020 \\1',
+  ),
+  470 => 
+  array (
+    'match' => '0CAC ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E021 \\1',
+  ),
+  471 => 
+  array (
+    'match' => '0CAD ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E022 \\1',
+  ),
+  472 => 
+  array (
+    'match' => '0CAE ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E023 \\1',
+  ),
+  473 => 
+  array (
+    'match' => '0CAF ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E024 \\1',
+  ),
+  474 => 
+  array (
+    'match' => '0CB0 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E025 \\1',
+  ),
+  475 => 
+  array (
+    'match' => '0CB1 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E026 \\1',
+  ),
+  476 => 
+  array (
+    'match' => '0CB2 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E027 \\1',
+  ),
+  477 => 
+  array (
+    'match' => '0CB3 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E028 \\1',
+  ),
+  478 => 
+  array (
+    'match' => '0CB5 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E029 \\1',
+  ),
+  479 => 
+  array (
+    'match' => '0CB6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E02A \\1',
+  ),
+  480 => 
+  array (
+    'match' => '0CB7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E02B \\1',
+  ),
+  481 => 
+  array (
+    'match' => '0CB8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E02C \\1',
+  ),
+  482 => 
+  array (
+    'match' => '0CB9 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E02D \\1',
+  ),
+  483 => 
+  array (
+    'match' => 'E07D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E07F \\1',
+  ),
+  484 => 
+  array (
+    'match' => 'E07E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E080 \\1',
+  ),
+  485 => 
+  array (
+    'match' => 'E0E6 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E0EC \\1',
+  ),
+  486 => 
+  array (
+    'match' => 'E0E7 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E0ED \\1',
+  ),
+  487 => 
+  array (
+    'match' => 'E172 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E18F \\1',
+  ),
+  488 => 
+  array (
+    'match' => 'E173 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E190 \\1',
+  ),
+  489 => 
+  array (
+    'match' => 'E174 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E191 \\1',
+  ),
+  490 => 
+  array (
+    'match' => 'E175 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E192 \\1',
+  ),
+  491 => 
+  array (
+    'match' => 'E176 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E193 \\1',
+  ),
+  492 => 
+  array (
+    'match' => 'E0E8 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E0EE \\1',
+  ),
+  493 => 
+  array (
+    'match' => 'E0E9 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E0EF \\1',
+  ),
+  494 => 
+  array (
+    'match' => 'E178 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E194 \\1',
+  ),
+  495 => 
+  array (
+    'match' => 'E179 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E195 \\1',
+  ),
+  496 => 
+  array (
+    'match' => 'E17A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E196 \\1',
+  ),
+  497 => 
+  array (
+    'match' => 'E17B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E197 \\1',
+  ),
+  498 => 
+  array (
+    'match' => 'E17C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E198 \\1',
+  ),
+  499 => 
+  array (
+    'match' => 'E17D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E199 \\1',
+  ),
+  500 => 
+  array (
+    'match' => 'E17E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E19A \\1',
+  ),
+  501 => 
+  array (
+    'match' => 'E17F ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E19B \\1',
+  ),
+  502 => 
+  array (
+    'match' => 'E180 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E19C \\1',
+  ),
+  503 => 
+  array (
+    'match' => 'E181 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E19D \\1',
+  ),
+  504 => 
+  array (
+    'match' => 'E182 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E19E \\1',
+  ),
+  505 => 
+  array (
+    'match' => 'E0EA ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E0F0 \\1',
+  ),
+  506 => 
+  array (
+    'match' => 'E183 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E19F \\1',
+  ),
+  507 => 
+  array (
+    'match' => 'E184 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A0 \\1',
+  ),
+  508 => 
+  array (
+    'match' => 'E185 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A1 \\1',
+  ),
+  509 => 
+  array (
+    'match' => 'E186 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A2 \\1',
+  ),
+  510 => 
+  array (
+    'match' => 'E0EB ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E0F1 \\1',
+  ),
+  511 => 
+  array (
+    'match' => 'E187 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A3 \\1',
+  ),
+  512 => 
+  array (
+    'match' => 'E188 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A4 \\1',
+  ),
+  513 => 
+  array (
+    'match' => 'E189 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A5 \\1',
+  ),
+  514 => 
+  array (
+    'match' => 'E18A ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A6 \\1',
+  ),
+  515 => 
+  array (
+    'match' => 'E18B ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A7 \\1',
+  ),
+  516 => 
+  array (
+    'match' => 'E18C ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A8 \\1',
+  ),
+  517 => 
+  array (
+    'match' => 'E18D ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1A9 \\1',
+  ),
+  518 => 
+  array (
+    'match' => 'E18E ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E1AA \\1',
+  ),
+  519 => 
+  array (
+    'match' => 'E117 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E119 \\1',
+  ),
+  520 => 
+  array (
+    'match' => 'E118 ((0CBE|0CC6|0CC7|E003|0CCA|0CCB|0CCC))',
+    'replace' => 'E11A \\1',
+  ),
+  521 => 
+  array (
+    'match' => '0C95 (0CCD)',
+    'replace' => 'E00C \\1',
+  ),
+  522 => 
+  array (
+    'match' => '0C96 (0CCD)',
+    'replace' => 'E00D \\1',
+  ),
+  523 => 
+  array (
+    'match' => '0C97 (0CCD)',
+    'replace' => 'E00E \\1',
+  ),
+  524 => 
+  array (
+    'match' => '0C98 (0CCD)',
+    'replace' => 'E00F \\1',
+  ),
+  525 => 
+  array (
+    'match' => '0C99 (0CCD)',
+    'replace' => 'E010 \\1',
+  ),
+  526 => 
+  array (
+    'match' => '0C9A (0CCD)',
+    'replace' => 'E011 \\1',
+  ),
+  527 => 
+  array (
+    'match' => '0C9B (0CCD)',
+    'replace' => 'E012 \\1',
+  ),
+  528 => 
+  array (
+    'match' => '0C9C (0CCD)',
+    'replace' => 'E013 \\1',
+  ),
+  529 => 
+  array (
+    'match' => '0C9D (0CCD)',
+    'replace' => 'E014 \\1',
+  ),
+  530 => 
+  array (
+    'match' => '0C9F (0CCD)',
+    'replace' => 'E015 \\1',
+  ),
+  531 => 
+  array (
+    'match' => '0CA0 (0CCD)',
+    'replace' => 'E016 \\1',
+  ),
+  532 => 
+  array (
+    'match' => '0CA1 (0CCD)',
+    'replace' => 'E017 \\1',
+  ),
+  533 => 
+  array (
+    'match' => '0CA2 (0CCD)',
+    'replace' => 'E018 \\1',
+  ),
+  534 => 
+  array (
+    'match' => '0CA3 (0CCD)',
+    'replace' => 'E019 \\1',
+  ),
+  535 => 
+  array (
+    'match' => '0CA4 (0CCD)',
+    'replace' => 'E01A \\1',
+  ),
+  536 => 
+  array (
+    'match' => '0CA5 (0CCD)',
+    'replace' => 'E01B \\1',
+  ),
+  537 => 
+  array (
+    'match' => '0CA6 (0CCD)',
+    'replace' => 'E01C \\1',
+  ),
+  538 => 
+  array (
+    'match' => '0CA7 (0CCD)',
+    'replace' => 'E01D \\1',
+  ),
+  539 => 
+  array (
+    'match' => '0CA8 (0CCD)',
+    'replace' => 'E01E \\1',
+  ),
+  540 => 
+  array (
+    'match' => '0CAA (0CCD)',
+    'replace' => 'E01F \\1',
+  ),
+  541 => 
+  array (
+    'match' => '0CAB (0CCD)',
+    'replace' => 'E020 \\1',
+  ),
+  542 => 
+  array (
+    'match' => '0CAC (0CCD)',
+    'replace' => 'E021 \\1',
+  ),
+  543 => 
+  array (
+    'match' => '0CAD (0CCD)',
+    'replace' => 'E022 \\1',
+  ),
+  544 => 
+  array (
+    'match' => '0CAE (0CCD)',
+    'replace' => 'E023 \\1',
+  ),
+  545 => 
+  array (
+    'match' => '0CAF (0CCD)',
+    'replace' => 'E024 \\1',
+  ),
+  546 => 
+  array (
+    'match' => '0CB0 (0CCD)',
+    'replace' => 'E025 \\1',
+  ),
+  547 => 
+  array (
+    'match' => '0CB1 (0CCD)',
+    'replace' => 'E026 \\1',
+  ),
+  548 => 
+  array (
+    'match' => '0CB2 (0CCD)',
+    'replace' => 'E027 \\1',
+  ),
+  549 => 
+  array (
+    'match' => '0CB3 (0CCD)',
+    'replace' => 'E028 \\1',
+  ),
+  550 => 
+  array (
+    'match' => '0CB5 (0CCD)',
+    'replace' => 'E029 \\1',
+  ),
+  551 => 
+  array (
+    'match' => '0CB6 (0CCD)',
+    'replace' => 'E02A \\1',
+  ),
+  552 => 
+  array (
+    'match' => '0CB7 (0CCD)',
+    'replace' => 'E02B \\1',
+  ),
+  553 => 
+  array (
+    'match' => '0CB8 (0CCD)',
+    'replace' => 'E02C \\1',
+  ),
+  554 => 
+  array (
+    'match' => '0CB9 (0CCD)',
+    'replace' => 'E02D \\1',
+  ),
+  555 => 
+  array (
+    'match' => 'E07D (0CCD)',
+    'replace' => 'E07F \\1',
+  ),
+  556 => 
+  array (
+    'match' => 'E07E (0CCD)',
+    'replace' => 'E080 \\1',
+  ),
+  557 => 
+  array (
+    'match' => 'E0E6 (0CCD)',
+    'replace' => 'E0EC \\1',
+  ),
+  558 => 
+  array (
+    'match' => 'E0E7 (0CCD)',
+    'replace' => 'E0ED \\1',
+  ),
+  559 => 
+  array (
+    'match' => 'E172 (0CCD)',
+    'replace' => 'E18F \\1',
+  ),
+  560 => 
+  array (
+    'match' => 'E173 (0CCD)',
+    'replace' => 'E190 \\1',
+  ),
+  561 => 
+  array (
+    'match' => 'E174 (0CCD)',
+    'replace' => 'E191 \\1',
+  ),
+  562 => 
+  array (
+    'match' => 'E175 (0CCD)',
+    'replace' => 'E192 \\1',
+  ),
+  563 => 
+  array (
+    'match' => 'E176 (0CCD)',
+    'replace' => 'E193 \\1',
+  ),
+  564 => 
+  array (
+    'match' => 'E0E8 (0CCD)',
+    'replace' => 'E0EE \\1',
+  ),
+  565 => 
+  array (
+    'match' => 'E0E9 (0CCD)',
+    'replace' => 'E0EF \\1',
+  ),
+  566 => 
+  array (
+    'match' => 'E178 (0CCD)',
+    'replace' => 'E194 \\1',
+  ),
+  567 => 
+  array (
+    'match' => 'E179 (0CCD)',
+    'replace' => 'E195 \\1',
+  ),
+  568 => 
+  array (
+    'match' => 'E17A (0CCD)',
+    'replace' => 'E196 \\1',
+  ),
+  569 => 
+  array (
+    'match' => 'E17B (0CCD)',
+    'replace' => 'E197 \\1',
+  ),
+  570 => 
+  array (
+    'match' => 'E17C (0CCD)',
+    'replace' => 'E198 \\1',
+  ),
+  571 => 
+  array (
+    'match' => 'E17D (0CCD)',
+    'replace' => 'E199 \\1',
+  ),
+  572 => 
+  array (
+    'match' => 'E17E (0CCD)',
+    'replace' => 'E19A \\1',
+  ),
+  573 => 
+  array (
+    'match' => 'E17F (0CCD)',
+    'replace' => 'E19B \\1',
+  ),
+  574 => 
+  array (
+    'match' => 'E180 (0CCD)',
+    'replace' => 'E19C \\1',
+  ),
+  575 => 
+  array (
+    'match' => 'E181 (0CCD)',
+    'replace' => 'E19D \\1',
+  ),
+  576 => 
+  array (
+    'match' => 'E182 (0CCD)',
+    'replace' => 'E19E \\1',
+  ),
+  577 => 
+  array (
+    'match' => 'E0EA (0CCD)',
+    'replace' => 'E0F0 \\1',
+  ),
+  578 => 
+  array (
+    'match' => 'E183 (0CCD)',
+    'replace' => 'E19F \\1',
+  ),
+  579 => 
+  array (
+    'match' => 'E184 (0CCD)',
+    'replace' => 'E1A0 \\1',
+  ),
+  580 => 
+  array (
+    'match' => 'E185 (0CCD)',
+    'replace' => 'E1A1 \\1',
+  ),
+  581 => 
+  array (
+    'match' => 'E186 (0CCD)',
+    'replace' => 'E1A2 \\1',
+  ),
+  582 => 
+  array (
+    'match' => 'E0EB (0CCD)',
+    'replace' => 'E0F1 \\1',
+  ),
+  583 => 
+  array (
+    'match' => 'E187 (0CCD)',
+    'replace' => 'E1A3 \\1',
+  ),
+  584 => 
+  array (
+    'match' => 'E188 (0CCD)',
+    'replace' => 'E1A4 \\1',
+  ),
+  585 => 
+  array (
+    'match' => 'E189 (0CCD)',
+    'replace' => 'E1A5 \\1',
+  ),
+  586 => 
+  array (
+    'match' => 'E18A (0CCD)',
+    'replace' => 'E1A6 \\1',
+  ),
+  587 => 
+  array (
+    'match' => 'E18B (0CCD)',
+    'replace' => 'E1A7 \\1',
+  ),
+  588 => 
+  array (
+    'match' => 'E18C (0CCD)',
+    'replace' => 'E1A8 \\1',
+  ),
+  589 => 
+  array (
+    'match' => 'E18D (0CCD)',
+    'replace' => 'E1A9 \\1',
+  ),
+  590 => 
+  array (
+    'match' => 'E18E (0CCD)',
+    'replace' => 'E1AA \\1',
+  ),
+  591 => 
+  array (
+    'match' => 'E117 (0CCD)',
+    'replace' => 'E119 \\1',
+  ),
+  592 => 
+  array (
+    'match' => 'E118 (0CCD)',
+    'replace' => 'E11A \\1',
+  ),
+  593 => 
+  array (
+    'match' => '0C98 (0CBE)',
+    'replace' => 'E00F \\1',
+  ),
+  594 => 
+  array (
+    'match' => '0CB1 (0CBE)',
+    'replace' => 'E026 \\1',
+  ),
+  595 => 
+  array (
+    'match' => 'E173 (0CBE)',
+    'replace' => 'E190 \\1',
+  ),
+  596 => 
+  array (
+    'match' => 'E187 (0CBE)',
+    'replace' => 'E1A3 \\1',
+  ),
+  597 => 
+  array (
+    'match' => '((E00F|0C9E|E026|E190|E177|E1A3)) 0CBE',
+    'replace' => '\\1 E004',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_ml_1_001.volt.php
new file mode 100644 (file)
index 0000000..0ef71d1
--- /dev/null
@@ -0,0 +1,1769 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0D4D 200D',
+    'replace' => '007E',
+  ),
+  1 => 
+  array (
+    'match' => '0D4D 200C',
+    'replace' => '2018',
+  ),
+  2 => 
+  array (
+    'match' => '200D 0D4D',
+    'replace' => '2019',
+  ),
+  3 => 
+  array (
+    'match' => '0D15 0D4D 0D37',
+    'replace' => 'E010',
+  ),
+  4 => 
+  array (
+    'match' => '0D1C 0D4D 0D1E',
+    'replace' => 'E011',
+  ),
+  5 => 
+  array (
+    'match' => '0D1A 0D4D 0D1A',
+    'replace' => 'E03E',
+  ),
+  6 => 
+  array (
+    'match' => '0D2C 0D4D 0D2C',
+    'replace' => 'E04B',
+  ),
+  7 => 
+  array (
+    'match' => '0D24 0D4D 0D24',
+    'replace' => 'E023',
+  ),
+  8 => 
+  array (
+    'match' => '0D28 0D4D 0D28',
+    'replace' => 'E02A',
+  ),
+  9 => 
+  array (
+    'match' => '0D23 0D4D 0D23',
+    'replace' => 'E043',
+  ),
+  10 => 
+  array (
+    'match' => '0D2E 0D4D 0D2E',
+    'replace' => 'E030',
+  ),
+  11 => 
+  array (
+    'match' => '0D33 0D4D 0D33',
+    'replace' => 'E036',
+  ),
+  12 => 
+  array (
+    'match' => '0D32 0D4D 0D32',
+    'replace' => 'E05D',
+  ),
+  13 => 
+  array (
+    'match' => '0D26 0D4D 0D26',
+    'replace' => 'E015',
+  ),
+  14 => 
+  array (
+    'match' => '0D1F 0D4D 0D1F',
+    'replace' => 'E014',
+  ),
+  15 => 
+  array (
+    'match' => '0D1C 0D4D 0D1C',
+    'replace' => 'E01B',
+  ),
+  16 => 
+  array (
+    'match' => '0D2A 0D4D 0D2A',
+    'replace' => 'E046',
+  ),
+  17 => 
+  array (
+    'match' => '0D17 0D4D 0D17',
+    'replace' => 'E03B',
+  ),
+  18 => 
+  array (
+    'match' => '0D15 0D4D 0D15',
+    'replace' => 'E012',
+  ),
+  19 => 
+  array (
+    'match' => '0D31 0D4D 0D31',
+    'replace' => 'E05C',
+  ),
+  20 => 
+  array (
+    'match' => '0D19 0D4D 0D15',
+    'replace' => 'E013',
+  ),
+  21 => 
+  array (
+    'match' => '0D19 0D4D 0D19',
+    'replace' => 'E016',
+  ),
+  22 => 
+  array (
+    'match' => '0D15 0D4D 0D24',
+    'replace' => 'E017',
+  ),
+  23 => 
+  array (
+    'match' => '0D17 0D4D 0D2E',
+    'replace' => 'E018',
+  ),
+  24 => 
+  array (
+    'match' => '0D17 0D4D E029',
+    'replace' => 'E019',
+  ),
+  25 => 
+  array (
+    'match' => '0D17 0D4D 0D28',
+    'replace' => 'E01A',
+  ),
+  26 => 
+  array (
+    'match' => '0D1E 0D4D 0D1C',
+    'replace' => 'E01C',
+  ),
+  27 => 
+  array (
+    'match' => '0D1E 0D4D 0D1E',
+    'replace' => 'E01D',
+  ),
+  28 => 
+  array (
+    'match' => '0D1E 0D4D 0D1A',
+    'replace' => 'E01E',
+  ),
+  29 => 
+  array (
+    'match' => '0D1E 0D4D 0D1B',
+    'replace' => 'E01F',
+  ),
+  30 => 
+  array (
+    'match' => '0D23 0D4D 0D2E',
+    'replace' => 'E020',
+  ),
+  31 => 
+  array (
+    'match' => '0D23 0D4D 0D21',
+    'replace' => 'E021',
+  ),
+  32 => 
+  array (
+    'match' => '0D23 0D4D 0D1F',
+    'replace' => 'E022',
+  ),
+  33 => 
+  array (
+    'match' => '0D24 0D4D 0D38',
+    'replace' => 'E024',
+  ),
+  34 => 
+  array (
+    'match' => '0D24 0D4D 0D25',
+    'replace' => 'E025',
+  ),
+  35 => 
+  array (
+    'match' => '0D24 0D4D 0D2E',
+    'replace' => 'E026',
+  ),
+  36 => 
+  array (
+    'match' => '0D24 0D4D 0D2D',
+    'replace' => 'E027',
+  ),
+  37 => 
+  array (
+    'match' => '0D24 0D4D 0D28',
+    'replace' => 'E028',
+  ),
+  38 => 
+  array (
+    'match' => '0D26 0D4D 0D27',
+    'replace' => 'E029',
+  ),
+  39 => 
+  array (
+    'match' => '0D28 0D4D 0D26',
+    'replace' => 'E02B',
+  ),
+  40 => 
+  array (
+    'match' => '0D28 0D4D 0D24',
+    'replace' => 'E02C',
+  ),
+  41 => 
+  array (
+    'match' => '0D28 0D4D 0D27',
+    'replace' => 'E02D',
+  ),
+  42 => 
+  array (
+    'match' => '0D28 0D4D 0D2A',
+    'replace' => 'E031',
+  ),
+  43 => 
+  array (
+    'match' => '0D28 0D4D 0D2E',
+    'replace' => 'E02E',
+  ),
+  44 => 
+  array (
+    'match' => '0D28 0D4D 0D25',
+    'replace' => 'E02F',
+  ),
+  45 => 
+  array (
+    'match' => '0D2E 0D4D 0D2A',
+    'replace' => 'E031',
+  ),
+  46 => 
+  array (
+    'match' => '0D36 0D4D 0D1A',
+    'replace' => 'E032',
+  ),
+  47 => 
+  array (
+    'match' => '0D38 0D4D 0D25',
+    'replace' => 'E033',
+  ),
+  48 => 
+  array (
+    'match' => '0D39 0D4D 0D28',
+    'replace' => 'E034',
+  ),
+  49 => 
+  array (
+    'match' => '0D39 0D4D 0D2E',
+    'replace' => 'E035',
+  ),
+  50 => 
+  array (
+    'match' => '0D15 0D4D 0D32',
+    'replace' => 'E037',
+  ),
+  51 => 
+  array (
+    'match' => '0D15 0D4D 0D33',
+    'replace' => 'E037',
+  ),
+  52 => 
+  array (
+    'match' => '0D15 0D4D 0D38',
+    'replace' => 'E038',
+  ),
+  53 => 
+  array (
+    'match' => '0D15 0D4D 0D1F',
+    'replace' => 'E039',
+  ),
+  54 => 
+  array (
+    'match' => '0D18 0D4D 0D28',
+    'replace' => 'E03A',
+  ),
+  55 => 
+  array (
+    'match' => '0D17 0D4D 0D32',
+    'replace' => 'E03C',
+  ),
+  56 => 
+  array (
+    'match' => '0D17 0D4D 0D33',
+    'replace' => 'E03C',
+  ),
+  57 => 
+  array (
+    'match' => '0D1A 0D4D 0D1B',
+    'replace' => 'E03F',
+  ),
+  58 => 
+  array (
+    'match' => '0D21 0D4D 0D21',
+    'replace' => 'E040',
+  ),
+  59 => 
+  array (
+    'match' => '0D21 0D4D 0D22',
+    'replace' => 'E041',
+  ),
+  60 => 
+  array (
+    'match' => '0D21 0D4D 0D1C',
+    'replace' => 'E042',
+  ),
+  61 => 
+  array (
+    'match' => '0D23 0D4D 0D20',
+    'replace' => 'E044',
+  ),
+  62 => 
+  array (
+    'match' => '0D24 0D4D 0D32',
+    'replace' => 'E045',
+  ),
+  63 => 
+  array (
+    'match' => '0D2A 0D4D 0D28',
+    'replace' => 'E047',
+  ),
+  64 => 
+  array (
+    'match' => '0D2A 0D4D 0D32',
+    'replace' => 'E048',
+  ),
+  65 => 
+  array (
+    'match' => '0D2A 0D4D 0D33',
+    'replace' => 'E048',
+  ),
+  66 => 
+  array (
+    'match' => '0D2A 0D4D 0D38',
+    'replace' => 'E049',
+  ),
+  67 => 
+  array (
+    'match' => '0D2A 0D4D 0D24',
+    'replace' => 'E04A',
+  ),
+  68 => 
+  array (
+    'match' => '0D2C 0D4D 0D32',
+    'replace' => 'E04C',
+  ),
+  69 => 
+  array (
+    'match' => '0D2C 0D4D 0D33',
+    'replace' => 'E04C',
+  ),
+  70 => 
+  array (
+    'match' => '0D2C 0D4D 0D26',
+    'replace' => 'E04D',
+  ),
+  71 => 
+  array (
+    'match' => '0D2C 0D4D 0D27',
+    'replace' => 'E04E',
+  ),
+  72 => 
+  array (
+    'match' => '0D2C 0D4D 0D15',
+    'replace' => 'E04F',
+  ),
+  73 => 
+  array (
+    'match' => '0D2B 0D4D 0D32',
+    'replace' => 'E050',
+  ),
+  74 => 
+  array (
+    'match' => '0D2B 0D4D 0D33',
+    'replace' => 'E050',
+  ),
+  75 => 
+  array (
+    'match' => '0D2B 0D4D 0D15',
+    'replace' => 'E051',
+  ),
+  76 => 
+  array (
+    'match' => '0D2B 0D4D 0D24',
+    'replace' => 'E052',
+  ),
+  77 => 
+  array (
+    'match' => '0D2E 0D4D 0D32',
+    'replace' => 'E053',
+  ),
+  78 => 
+  array (
+    'match' => '0D2E 0D4D 0D33',
+    'replace' => 'E053',
+  ),
+  79 => 
+  array (
+    'match' => '0D2E 0D4D 0D28',
+    'replace' => 'E054',
+  ),
+  80 => 
+  array (
+    'match' => '0D2F 0D4D 0D2F',
+    'replace' => 'E055',
+  ),
+  81 => 
+  array (
+    'match' => '0D2F 0D4D 0D2E',
+    'replace' => 'E056',
+  ),
+  82 => 
+  array (
+    'match' => '0D2F 0D4D 0D2A',
+    'replace' => 'E057',
+  ),
+  83 => 
+  array (
+    'match' => '0D2F 0D4D 0D15',
+    'replace' => 'E058',
+  ),
+  84 => 
+  array (
+    'match' => '0D2F 0D4D 0D24',
+    'replace' => 'E05A',
+  ),
+  85 => 
+  array (
+    'match' => '0D32 0D4D 0D32',
+    'replace' => 'E05D',
+  ),
+  86 => 
+  array (
+    'match' => '0D32 0D4D 0D2A',
+    'replace' => 'E05E',
+  ),
+  87 => 
+  array (
+    'match' => '0D32 0D4D 0D15',
+    'replace' => 'E05F',
+  ),
+  88 => 
+  array (
+    'match' => '0D32 0D4D 0D2E',
+    'replace' => 'E060',
+  ),
+  89 => 
+  array (
+    'match' => '0D35 0D4D 0D35',
+    'replace' => 'E061',
+  ),
+  90 => 
+  array (
+    'match' => '0D35 0D4D 0D32',
+    'replace' => 'E062',
+  ),
+  91 => 
+  array (
+    'match' => '0D35 0D4D 0D33',
+    'replace' => 'E062',
+  ),
+  92 => 
+  array (
+    'match' => '0D36 0D4D 0D36',
+    'replace' => 'E063',
+  ),
+  93 => 
+  array (
+    'match' => '0D36 0D4D 0D32',
+    'replace' => 'E064',
+  ),
+  94 => 
+  array (
+    'match' => '0D36 0D4D 0D33',
+    'replace' => 'E064',
+  ),
+  95 => 
+  array (
+    'match' => '0D36 0D4D 0D28',
+    'replace' => 'E065',
+  ),
+  96 => 
+  array (
+    'match' => '0D36 0D4D 0D2E',
+    'replace' => 'E066',
+  ),
+  97 => 
+  array (
+    'match' => '0D37 0D4D 0D2A',
+    'replace' => 'E067',
+  ),
+  98 => 
+  array (
+    'match' => '0D37 0D4D 0D15',
+    'replace' => 'E068',
+  ),
+  99 => 
+  array (
+    'match' => '0D37 0D4D 0D23',
+    'replace' => 'E069',
+  ),
+  100 => 
+  array (
+    'match' => '0D37 0D4D 0D1F',
+    'replace' => 'E06A',
+  ),
+  101 => 
+  array (
+    'match' => '0D37 0D4D 0D2E',
+    'replace' => 'E06B',
+  ),
+  102 => 
+  array (
+    'match' => '0D37 0D4D E05C',
+    'replace' => 'E06C',
+  ),
+  103 => 
+  array (
+    'match' => '0D37 0D4D 0D2B',
+    'replace' => 'E06D',
+  ),
+  104 => 
+  array (
+    'match' => '0D37 0D4D 0D20',
+    'replace' => 'E06E',
+  ),
+  105 => 
+  array (
+    'match' => '0D37 0D4D 0D24',
+    'replace' => 'E06F',
+  ),
+  106 => 
+  array (
+    'match' => '0D38 0D4D 0D38',
+    'replace' => 'E070',
+  ),
+  107 => 
+  array (
+    'match' => '0D38 0D4D 0D32',
+    'replace' => 'E071',
+  ),
+  108 => 
+  array (
+    'match' => '0D38 0D4D 0D33',
+    'replace' => 'E071',
+  ),
+  109 => 
+  array (
+    'match' => '0D38 0D4D E05C',
+    'replace' => 'E072',
+  ),
+  110 => 
+  array (
+    'match' => '0D38 0D4D 0D2A',
+    'replace' => 'E073',
+  ),
+  111 => 
+  array (
+    'match' => '0D38 0D4D 0D24',
+    'replace' => 'E074',
+  ),
+  112 => 
+  array (
+    'match' => '0D38 0D4D 0D15',
+    'replace' => 'E075',
+  ),
+  113 => 
+  array (
+    'match' => '0D38 0D4D 0D28',
+    'replace' => 'E076',
+  ),
+  114 => 
+  array (
+    'match' => '0D38 0D4D 0D2E',
+    'replace' => 'E077',
+  ),
+  115 => 
+  array (
+    'match' => '0D39 0D4D 0D32',
+    'replace' => 'E078',
+  ),
+  116 => 
+  array (
+    'match' => '0D39 0D4D 0D33',
+    'replace' => 'E078',
+  ),
+  117 => 
+  array (
+    'match' => '0D34 0D4D 0D24',
+    'replace' => 'E079',
+  ),
+  118 => 
+  array (
+    'match' => '0D34 0D4D 0D15',
+    'replace' => 'E07A',
+  ),
+  119 => 
+  array (
+    'match' => '0D34 0D4D 0D2E',
+    'replace' => 'E07C',
+  ),
+  120 => 
+  array (
+    'match' => 'E006 0D4D 0D31',
+    'replace' => 'E07D',
+  ),
+  121 => 
+  array (
+    'match' => '0D28 0D4D 0D30',
+    'replace' => 'E07D',
+  ),
+  122 => 
+  array (
+    'match' => '0D28 0D4D 0D31',
+    'replace' => 'E07D',
+  ),
+  123 => 
+  array (
+    'match' => '0D34 0D4D E023',
+    'replace' => 'E07B',
+  ),
+  124 => 
+  array (
+    'match' => '0D2F 0D4D E023',
+    'replace' => 'E05B',
+  ),
+  125 => 
+  array (
+    'match' => '0D2F 0D4D E012',
+    'replace' => 'E059',
+  ),
+  126 => 
+  array (
+    'match' => 'E010 0D4D 0D2E',
+    'replace' => 'E03D',
+  ),
+  127 => 
+  array (
+    'match' => '2019 0D31',
+    'replace' => 'E00E',
+  ),
+  128 => 
+  array (
+    'match' => '2019 0D31',
+    'replace' => 'E00E',
+  ),
+  129 => 
+  array (
+    'match' => '2019 0D2F',
+    'replace' => 'E00D',
+  ),
+  130 => 
+  array (
+    'match' => '2019 0D35',
+    'replace' => 'E00F',
+  ),
+  131 => 
+  array (
+    'match' => '0D4D 0D31 ((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39))',
+    'replace' => 'E00E \\1',
+  ),
+  132 => 
+  array (
+    'match' => '0D4D 0D30 ((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39))',
+    'replace' => 'E00E \\1',
+  ),
+  133 => 
+  array (
+    'match' => '0D4D 0D31 ((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D))',
+    'replace' => 'E00E \\1',
+  ),
+  134 => 
+  array (
+    'match' => '0D4D 0D30 ((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D))',
+    'replace' => 'E00E \\1',
+  ),
+  135 => 
+  array (
+    'match' => '0D4D 0D31 ((0020|25CC))',
+    'replace' => 'E00E \\1',
+  ),
+  136 => 
+  array (
+    'match' => '0D4D 0D30 ((0020|25CC))',
+    'replace' => 'E00E \\1',
+  ),
+  137 => 
+  array (
+    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D 0D2F',
+    'replace' => '\\1 E00D',
+  ),
+  138 => 
+  array (
+    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 2018 0D2F',
+    'replace' => '\\1 E00D',
+  ),
+  139 => 
+  array (
+    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 0D4D 0D2F',
+    'replace' => '\\1 E00D',
+  ),
+  140 => 
+  array (
+    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 2018 0D2F',
+    'replace' => '\\1 E00D',
+  ),
+  141 => 
+  array (
+    'match' => '((0020|25CC)) 0D4D 0D2F',
+    'replace' => '\\1 E00D',
+  ),
+  142 => 
+  array (
+    'match' => '((0020|25CC)) 2018 0D2F',
+    'replace' => '\\1 E00D',
+  ),
+  143 => 
+  array (
+    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D 0D35',
+    'replace' => '\\1 E00F',
+  ),
+  144 => 
+  array (
+    'match' => '((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 2018 0D35',
+    'replace' => '\\1 E00F',
+  ),
+  145 => 
+  array (
+    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 0D4D 0D35',
+    'replace' => '\\1 E00F',
+  ),
+  146 => 
+  array (
+    'match' => '((E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E07B|E07C|E07D)) 2018 0D35',
+    'replace' => '\\1 E00F',
+  ),
+  147 => 
+  array (
+    'match' => '((0020|25CC)) 0D4D 0D35',
+    'replace' => '\\1 E00F',
+  ),
+  148 => 
+  array (
+    'match' => '((0020|25CC)) 2018 0D35',
+    'replace' => '\\1 E00F',
+  ),
+  149 => 
+  array (
+    'match' => '0D28 0D4D',
+    'replace' => 'E006',
+  ),
+  150 => 
+  array (
+    'match' => '0D28 007E',
+    'replace' => 'E006',
+  ),
+  151 => 
+  array (
+    'match' => '0D23 0D4D',
+    'replace' => 'E005',
+  ),
+  152 => 
+  array (
+    'match' => '0D23 007E',
+    'replace' => 'E005',
+  ),
+  153 => 
+  array (
+    'match' => '0D32 0D4D',
+    'replace' => 'E008',
+  ),
+  154 => 
+  array (
+    'match' => '0D32 007E',
+    'replace' => 'E008',
+  ),
+  155 => 
+  array (
+    'match' => '0D33 0D4D',
+    'replace' => 'E009',
+  ),
+  156 => 
+  array (
+    'match' => '0D33 007E',
+    'replace' => 'E009',
+  ),
+  157 => 
+  array (
+    'match' => '0D31 0D4D',
+    'replace' => 'E007',
+  ),
+  158 => 
+  array (
+    'match' => '0D31 007E',
+    'replace' => 'E007',
+  ),
+  159 => 
+  array (
+    'match' => '0D30 0D4D',
+    'replace' => 'E007',
+  ),
+  160 => 
+  array (
+    'match' => '0D30 007E',
+    'replace' => 'E007',
+  ),
+  161 => 
+  array (
+    'match' => '(E00E) E005',
+    'replace' => '\\1 E005 E00E',
+  ),
+  162 => 
+  array (
+    'match' => '(E00E) E006',
+    'replace' => '\\1 E006 E00E',
+  ),
+  163 => 
+  array (
+    'match' => '(E00E) E007',
+    'replace' => '\\1 E007 E00E',
+  ),
+  164 => 
+  array (
+    'match' => '(E00E) E008',
+    'replace' => '\\1 E008 E00E',
+  ),
+  165 => 
+  array (
+    'match' => '(E00E) E009',
+    'replace' => '\\1 E009 E00E',
+  ),
+  166 => 
+  array (
+    'match' => 'E00E E005 (E00E)',
+    'replace' => 'E005 \\1',
+  ),
+  167 => 
+  array (
+    'match' => 'E00E E006 (E00E)',
+    'replace' => 'E006 \\1',
+  ),
+  168 => 
+  array (
+    'match' => 'E00E E007 (E00E)',
+    'replace' => 'E007 \\1',
+  ),
+  169 => 
+  array (
+    'match' => 'E00E E008 (E00E)',
+    'replace' => 'E008 \\1',
+  ),
+  170 => 
+  array (
+    'match' => 'E00E E009 (E00E)',
+    'replace' => 'E009 \\1',
+  ),
+  171 => 
+  array (
+    'match' => '(E00E (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D ((0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39))',
+    'replace' => '\\1 0D4D E00E \\3',
+  ),
+  172 => 
+  array (
+    'match' => 'E00E 0D15 (0D4D E00E)',
+    'replace' => '0D15 \\1',
+  ),
+  173 => 
+  array (
+    'match' => 'E00E 0D16 (0D4D E00E)',
+    'replace' => '0D16 \\1',
+  ),
+  174 => 
+  array (
+    'match' => 'E00E 0D17 (0D4D E00E)',
+    'replace' => '0D17 \\1',
+  ),
+  175 => 
+  array (
+    'match' => 'E00E 0D18 (0D4D E00E)',
+    'replace' => '0D18 \\1',
+  ),
+  176 => 
+  array (
+    'match' => 'E00E 0D19 (0D4D E00E)',
+    'replace' => '0D19 \\1',
+  ),
+  177 => 
+  array (
+    'match' => 'E00E 0D1A (0D4D E00E)',
+    'replace' => '0D1A \\1',
+  ),
+  178 => 
+  array (
+    'match' => 'E00E 0D1B (0D4D E00E)',
+    'replace' => '0D1B \\1',
+  ),
+  179 => 
+  array (
+    'match' => 'E00E 0D1C (0D4D E00E)',
+    'replace' => '0D1C \\1',
+  ),
+  180 => 
+  array (
+    'match' => 'E00E 0D1D (0D4D E00E)',
+    'replace' => '0D1D \\1',
+  ),
+  181 => 
+  array (
+    'match' => 'E00E 0D1E (0D4D E00E)',
+    'replace' => '0D1E \\1',
+  ),
+  182 => 
+  array (
+    'match' => 'E00E 0D1F (0D4D E00E)',
+    'replace' => '0D1F \\1',
+  ),
+  183 => 
+  array (
+    'match' => 'E00E 0D20 (0D4D E00E)',
+    'replace' => '0D20 \\1',
+  ),
+  184 => 
+  array (
+    'match' => 'E00E 0D21 (0D4D E00E)',
+    'replace' => '0D21 \\1',
+  ),
+  185 => 
+  array (
+    'match' => 'E00E 0D22 (0D4D E00E)',
+    'replace' => '0D22 \\1',
+  ),
+  186 => 
+  array (
+    'match' => 'E00E 0D23 (0D4D E00E)',
+    'replace' => '0D23 \\1',
+  ),
+  187 => 
+  array (
+    'match' => 'E00E 0D24 (0D4D E00E)',
+    'replace' => '0D24 \\1',
+  ),
+  188 => 
+  array (
+    'match' => 'E00E 0D25 (0D4D E00E)',
+    'replace' => '0D25 \\1',
+  ),
+  189 => 
+  array (
+    'match' => 'E00E 0D26 (0D4D E00E)',
+    'replace' => '0D26 \\1',
+  ),
+  190 => 
+  array (
+    'match' => 'E00E 0D27 (0D4D E00E)',
+    'replace' => '0D27 \\1',
+  ),
+  191 => 
+  array (
+    'match' => 'E00E 0D28 (0D4D E00E)',
+    'replace' => '0D28 \\1',
+  ),
+  192 => 
+  array (
+    'match' => 'E00E 0D2A (0D4D E00E)',
+    'replace' => '0D2A \\1',
+  ),
+  193 => 
+  array (
+    'match' => 'E00E 0D2B (0D4D E00E)',
+    'replace' => '0D2B \\1',
+  ),
+  194 => 
+  array (
+    'match' => 'E00E 0D2C (0D4D E00E)',
+    'replace' => '0D2C \\1',
+  ),
+  195 => 
+  array (
+    'match' => 'E00E 0D2D (0D4D E00E)',
+    'replace' => '0D2D \\1',
+  ),
+  196 => 
+  array (
+    'match' => 'E00E 0D2E (0D4D E00E)',
+    'replace' => '0D2E \\1',
+  ),
+  197 => 
+  array (
+    'match' => 'E00E 0D2F (0D4D E00E)',
+    'replace' => '0D2F \\1',
+  ),
+  198 => 
+  array (
+    'match' => 'E00E 0D30 (0D4D E00E)',
+    'replace' => '0D30 \\1',
+  ),
+  199 => 
+  array (
+    'match' => 'E00E 0D31 (0D4D E00E)',
+    'replace' => '0D31 \\1',
+  ),
+  200 => 
+  array (
+    'match' => 'E00E 0D32 (0D4D E00E)',
+    'replace' => '0D32 \\1',
+  ),
+  201 => 
+  array (
+    'match' => 'E00E 0D33 (0D4D E00E)',
+    'replace' => '0D33 \\1',
+  ),
+  202 => 
+  array (
+    'match' => 'E00E 0D34 (0D4D E00E)',
+    'replace' => '0D34 \\1',
+  ),
+  203 => 
+  array (
+    'match' => 'E00E 0D35 (0D4D E00E)',
+    'replace' => '0D35 \\1',
+  ),
+  204 => 
+  array (
+    'match' => 'E00E 0D36 (0D4D E00E)',
+    'replace' => '0D36 \\1',
+  ),
+  205 => 
+  array (
+    'match' => 'E00E 0D37 (0D4D E00E)',
+    'replace' => '0D37 \\1',
+  ),
+  206 => 
+  array (
+    'match' => 'E00E 0D38 (0D4D E00E)',
+    'replace' => '0D38 \\1',
+  ),
+  207 => 
+  array (
+    'match' => 'E00E 0D39 (0D4D E00E)',
+    'replace' => '0D39 \\1',
+  ),
+  208 => 
+  array (
+    'match' => '(0D46) E005',
+    'replace' => '\\1 E005 0D46',
+  ),
+  209 => 
+  array (
+    'match' => '(0D46) E006',
+    'replace' => '\\1 E006 0D46',
+  ),
+  210 => 
+  array (
+    'match' => '(0D46) E007',
+    'replace' => '\\1 E007 0D46',
+  ),
+  211 => 
+  array (
+    'match' => '(0D46) E008',
+    'replace' => '\\1 E008 0D46',
+  ),
+  212 => 
+  array (
+    'match' => '(0D46) E009',
+    'replace' => '\\1 E009 0D46',
+  ),
+  213 => 
+  array (
+    'match' => '(0D47) E005',
+    'replace' => '\\1 E005 0D47',
+  ),
+  214 => 
+  array (
+    'match' => '(0D47) E006',
+    'replace' => '\\1 E006 0D47',
+  ),
+  215 => 
+  array (
+    'match' => '(0D47) E007',
+    'replace' => '\\1 E007 0D47',
+  ),
+  216 => 
+  array (
+    'match' => '(0D47) E008',
+    'replace' => '\\1 E008 0D47',
+  ),
+  217 => 
+  array (
+    'match' => '(0D47) E009',
+    'replace' => '\\1 E009 0D47',
+  ),
+  218 => 
+  array (
+    'match' => '(0D48) E005',
+    'replace' => '\\1 E005 0D48',
+  ),
+  219 => 
+  array (
+    'match' => '(0D48) E006',
+    'replace' => '\\1 E006 0D48',
+  ),
+  220 => 
+  array (
+    'match' => '(0D48) E007',
+    'replace' => '\\1 E007 0D48',
+  ),
+  221 => 
+  array (
+    'match' => '(0D48) E008',
+    'replace' => '\\1 E008 0D48',
+  ),
+  222 => 
+  array (
+    'match' => '(0D48) E009',
+    'replace' => '\\1 E009 0D48',
+  ),
+  223 => 
+  array (
+    'match' => '0D46 E005',
+    'replace' => 'E005',
+  ),
+  224 => 
+  array (
+    'match' => '0D46 E006',
+    'replace' => 'E006',
+  ),
+  225 => 
+  array (
+    'match' => '0D46 E007',
+    'replace' => 'E007',
+  ),
+  226 => 
+  array (
+    'match' => '0D46 E008',
+    'replace' => 'E008',
+  ),
+  227 => 
+  array (
+    'match' => '0D46 E009',
+    'replace' => 'E009',
+  ),
+  228 => 
+  array (
+    'match' => '0D47 E005',
+    'replace' => 'E005',
+  ),
+  229 => 
+  array (
+    'match' => '0D47 E006',
+    'replace' => 'E006',
+  ),
+  230 => 
+  array (
+    'match' => '0D47 E007',
+    'replace' => 'E007',
+  ),
+  231 => 
+  array (
+    'match' => '0D47 E008',
+    'replace' => 'E008',
+  ),
+  232 => 
+  array (
+    'match' => '0D47 E009',
+    'replace' => 'E009',
+  ),
+  233 => 
+  array (
+    'match' => '0D48 E005',
+    'replace' => 'E005',
+  ),
+  234 => 
+  array (
+    'match' => '0D48 E006',
+    'replace' => 'E006',
+  ),
+  235 => 
+  array (
+    'match' => '0D48 E007',
+    'replace' => 'E007',
+  ),
+  236 => 
+  array (
+    'match' => '0D48 E008',
+    'replace' => 'E008',
+  ),
+  237 => 
+  array (
+    'match' => '0D48 E009',
+    'replace' => 'E009',
+  ),
+  238 => 
+  array (
+    'match' => '(0D46 (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D',
+    'replace' => '\\1 0D4D 0D46',
+  ),
+  239 => 
+  array (
+    'match' => '(0D47 (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D',
+    'replace' => '\\1 0D4D 0D47',
+  ),
+  240 => 
+  array (
+    'match' => '(0D48 (0D15|0D16|0D17|0D18|0D19|0D1A|0D1B|0D1C|0D1D|0D1E|0D1F|0D20|0D21|0D22|0D23|0D24|0D25|0D26|0D27|0D28|0D2A|0D2B|0D2C|0D2D|0D2E|0D2F|0D30|0D31|0D32|0D33|0D34|0D35|0D36|0D37|0D38|0D39)) 0D4D',
+    'replace' => '\\1 0D4D 0D48',
+  ),
+  241 => 
+  array (
+    'match' => '0D46 0D15 (0D4D)',
+    'replace' => '0D15 \\1',
+  ),
+  242 => 
+  array (
+    'match' => '0D46 0D16 (0D4D)',
+    'replace' => '0D16 \\1',
+  ),
+  243 => 
+  array (
+    'match' => '0D46 0D17 (0D4D)',
+    'replace' => '0D17 \\1',
+  ),
+  244 => 
+  array (
+    'match' => '0D46 0D18 (0D4D)',
+    'replace' => '0D18 \\1',
+  ),
+  245 => 
+  array (
+    'match' => '0D46 0D19 (0D4D)',
+    'replace' => '0D19 \\1',
+  ),
+  246 => 
+  array (
+    'match' => '0D46 0D1A (0D4D)',
+    'replace' => '0D1A \\1',
+  ),
+  247 => 
+  array (
+    'match' => '0D46 0D1B (0D4D)',
+    'replace' => '0D1B \\1',
+  ),
+  248 => 
+  array (
+    'match' => '0D46 0D1C (0D4D)',
+    'replace' => '0D1C \\1',
+  ),
+  249 => 
+  array (
+    'match' => '0D46 0D1D (0D4D)',
+    'replace' => '0D1D \\1',
+  ),
+  250 => 
+  array (
+    'match' => '0D46 0D1E (0D4D)',
+    'replace' => '0D1E \\1',
+  ),
+  251 => 
+  array (
+    'match' => '0D46 0D1F (0D4D)',
+    'replace' => '0D1F \\1',
+  ),
+  252 => 
+  array (
+    'match' => '0D46 0D20 (0D4D)',
+    'replace' => '0D20 \\1',
+  ),
+  253 => 
+  array (
+    'match' => '0D46 0D21 (0D4D)',
+    'replace' => '0D21 \\1',
+  ),
+  254 => 
+  array (
+    'match' => '0D46 0D22 (0D4D)',
+    'replace' => '0D22 \\1',
+  ),
+  255 => 
+  array (
+    'match' => '0D46 0D23 (0D4D)',
+    'replace' => '0D23 \\1',
+  ),
+  256 => 
+  array (
+    'match' => '0D46 0D24 (0D4D)',
+    'replace' => '0D24 \\1',
+  ),
+  257 => 
+  array (
+    'match' => '0D46 0D25 (0D4D)',
+    'replace' => '0D25 \\1',
+  ),
+  258 => 
+  array (
+    'match' => '0D46 0D26 (0D4D)',
+    'replace' => '0D26 \\1',
+  ),
+  259 => 
+  array (
+    'match' => '0D46 0D27 (0D4D)',
+    'replace' => '0D27 \\1',
+  ),
+  260 => 
+  array (
+    'match' => '0D46 0D28 (0D4D)',
+    'replace' => '0D28 \\1',
+  ),
+  261 => 
+  array (
+    'match' => '0D46 0D2A (0D4D)',
+    'replace' => '0D2A \\1',
+  ),
+  262 => 
+  array (
+    'match' => '0D46 0D2B (0D4D)',
+    'replace' => '0D2B \\1',
+  ),
+  263 => 
+  array (
+    'match' => '0D46 0D2C (0D4D)',
+    'replace' => '0D2C \\1',
+  ),
+  264 => 
+  array (
+    'match' => '0D46 0D2D (0D4D)',
+    'replace' => '0D2D \\1',
+  ),
+  265 => 
+  array (
+    'match' => '0D46 0D2E (0D4D)',
+    'replace' => '0D2E \\1',
+  ),
+  266 => 
+  array (
+    'match' => '0D46 0D2F (0D4D)',
+    'replace' => '0D2F \\1',
+  ),
+  267 => 
+  array (
+    'match' => '0D46 0D30 (0D4D)',
+    'replace' => '0D30 \\1',
+  ),
+  268 => 
+  array (
+    'match' => '0D46 0D31 (0D4D)',
+    'replace' => '0D31 \\1',
+  ),
+  269 => 
+  array (
+    'match' => '0D46 0D32 (0D4D)',
+    'replace' => '0D32 \\1',
+  ),
+  270 => 
+  array (
+    'match' => '0D46 0D33 (0D4D)',
+    'replace' => '0D33 \\1',
+  ),
+  271 => 
+  array (
+    'match' => '0D46 0D34 (0D4D)',
+    'replace' => '0D34 \\1',
+  ),
+  272 => 
+  array (
+    'match' => '0D46 0D35 (0D4D)',
+    'replace' => '0D35 \\1',
+  ),
+  273 => 
+  array (
+    'match' => '0D46 0D36 (0D4D)',
+    'replace' => '0D36 \\1',
+  ),
+  274 => 
+  array (
+    'match' => '0D46 0D37 (0D4D)',
+    'replace' => '0D37 \\1',
+  ),
+  275 => 
+  array (
+    'match' => '0D46 0D38 (0D4D)',
+    'replace' => '0D38 \\1',
+  ),
+  276 => 
+  array (
+    'match' => '0D46 0D39 (0D4D)',
+    'replace' => '0D39 \\1',
+  ),
+  277 => 
+  array (
+    'match' => '0D47 0D15 (0D4D)',
+    'replace' => '0D15 \\1',
+  ),
+  278 => 
+  array (
+    'match' => '0D47 0D16 (0D4D)',
+    'replace' => '0D16 \\1',
+  ),
+  279 => 
+  array (
+    'match' => '0D47 0D17 (0D4D)',
+    'replace' => '0D17 \\1',
+  ),
+  280 => 
+  array (
+    'match' => '0D47 0D18 (0D4D)',
+    'replace' => '0D18 \\1',
+  ),
+  281 => 
+  array (
+    'match' => '0D47 0D19 (0D4D)',
+    'replace' => '0D19 \\1',
+  ),
+  282 => 
+  array (
+    'match' => '0D47 0D1A (0D4D)',
+    'replace' => '0D1A \\1',
+  ),
+  283 => 
+  array (
+    'match' => '0D47 0D1B (0D4D)',
+    'replace' => '0D1B \\1',
+  ),
+  284 => 
+  array (
+    'match' => '0D47 0D1C (0D4D)',
+    'replace' => '0D1C \\1',
+  ),
+  285 => 
+  array (
+    'match' => '0D47 0D1D (0D4D)',
+    'replace' => '0D1D \\1',
+  ),
+  286 => 
+  array (
+    'match' => '0D47 0D1E (0D4D)',
+    'replace' => '0D1E \\1',
+  ),
+  287 => 
+  array (
+    'match' => '0D47 0D1F (0D4D)',
+    'replace' => '0D1F \\1',
+  ),
+  288 => 
+  array (
+    'match' => '0D47 0D20 (0D4D)',
+    'replace' => '0D20 \\1',
+  ),
+  289 => 
+  array (
+    'match' => '0D47 0D21 (0D4D)',
+    'replace' => '0D21 \\1',
+  ),
+  290 => 
+  array (
+    'match' => '0D47 0D22 (0D4D)',
+    'replace' => '0D22 \\1',
+  ),
+  291 => 
+  array (
+    'match' => '0D47 0D23 (0D4D)',
+    'replace' => '0D23 \\1',
+  ),
+  292 => 
+  array (
+    'match' => '0D47 0D24 (0D4D)',
+    'replace' => '0D24 \\1',
+  ),
+  293 => 
+  array (
+    'match' => '0D47 0D25 (0D4D)',
+    'replace' => '0D25 \\1',
+  ),
+  294 => 
+  array (
+    'match' => '0D47 0D26 (0D4D)',
+    'replace' => '0D26 \\1',
+  ),
+  295 => 
+  array (
+    'match' => '0D47 0D27 (0D4D)',
+    'replace' => '0D27 \\1',
+  ),
+  296 => 
+  array (
+    'match' => '0D47 0D28 (0D4D)',
+    'replace' => '0D28 \\1',
+  ),
+  297 => 
+  array (
+    'match' => '0D47 0D2A (0D4D)',
+    'replace' => '0D2A \\1',
+  ),
+  298 => 
+  array (
+    'match' => '0D47 0D2B (0D4D)',
+    'replace' => '0D2B \\1',
+  ),
+  299 => 
+  array (
+    'match' => '0D47 0D2C (0D4D)',
+    'replace' => '0D2C \\1',
+  ),
+  300 => 
+  array (
+    'match' => '0D47 0D2D (0D4D)',
+    'replace' => '0D2D \\1',
+  ),
+  301 => 
+  array (
+    'match' => '0D47 0D2E (0D4D)',
+    'replace' => '0D2E \\1',
+  ),
+  302 => 
+  array (
+    'match' => '0D47 0D2F (0D4D)',
+    'replace' => '0D2F \\1',
+  ),
+  303 => 
+  array (
+    'match' => '0D47 0D30 (0D4D)',
+    'replace' => '0D30 \\1',
+  ),
+  304 => 
+  array (
+    'match' => '0D47 0D31 (0D4D)',
+    'replace' => '0D31 \\1',
+  ),
+  305 => 
+  array (
+    'match' => '0D47 0D32 (0D4D)',
+    'replace' => '0D32 \\1',
+  ),
+  306 => 
+  array (
+    'match' => '0D47 0D33 (0D4D)',
+    'replace' => '0D33 \\1',
+  ),
+  307 => 
+  array (
+    'match' => '0D47 0D34 (0D4D)',
+    'replace' => '0D34 \\1',
+  ),
+  308 => 
+  array (
+    'match' => '0D47 0D35 (0D4D)',
+    'replace' => '0D35 \\1',
+  ),
+  309 => 
+  array (
+    'match' => '0D47 0D36 (0D4D)',
+    'replace' => '0D36 \\1',
+  ),
+  310 => 
+  array (
+    'match' => '0D47 0D37 (0D4D)',
+    'replace' => '0D37 \\1',
+  ),
+  311 => 
+  array (
+    'match' => '0D47 0D38 (0D4D)',
+    'replace' => '0D38 \\1',
+  ),
+  312 => 
+  array (
+    'match' => '0D47 0D39 (0D4D)',
+    'replace' => '0D39 \\1',
+  ),
+  313 => 
+  array (
+    'match' => '0D48 0D15 (0D4D)',
+    'replace' => '0D15 \\1',
+  ),
+  314 => 
+  array (
+    'match' => '0D48 0D16 (0D4D)',
+    'replace' => '0D16 \\1',
+  ),
+  315 => 
+  array (
+    'match' => '0D48 0D17 (0D4D)',
+    'replace' => '0D17 \\1',
+  ),
+  316 => 
+  array (
+    'match' => '0D48 0D18 (0D4D)',
+    'replace' => '0D18 \\1',
+  ),
+  317 => 
+  array (
+    'match' => '0D48 0D19 (0D4D)',
+    'replace' => '0D19 \\1',
+  ),
+  318 => 
+  array (
+    'match' => '0D48 0D1A (0D4D)',
+    'replace' => '0D1A \\1',
+  ),
+  319 => 
+  array (
+    'match' => '0D48 0D1B (0D4D)',
+    'replace' => '0D1B \\1',
+  ),
+  320 => 
+  array (
+    'match' => '0D48 0D1C (0D4D)',
+    'replace' => '0D1C \\1',
+  ),
+  321 => 
+  array (
+    'match' => '0D48 0D1D (0D4D)',
+    'replace' => '0D1D \\1',
+  ),
+  322 => 
+  array (
+    'match' => '0D48 0D1E (0D4D)',
+    'replace' => '0D1E \\1',
+  ),
+  323 => 
+  array (
+    'match' => '0D48 0D1F (0D4D)',
+    'replace' => '0D1F \\1',
+  ),
+  324 => 
+  array (
+    'match' => '0D48 0D20 (0D4D)',
+    'replace' => '0D20 \\1',
+  ),
+  325 => 
+  array (
+    'match' => '0D48 0D21 (0D4D)',
+    'replace' => '0D21 \\1',
+  ),
+  326 => 
+  array (
+    'match' => '0D48 0D22 (0D4D)',
+    'replace' => '0D22 \\1',
+  ),
+  327 => 
+  array (
+    'match' => '0D48 0D23 (0D4D)',
+    'replace' => '0D23 \\1',
+  ),
+  328 => 
+  array (
+    'match' => '0D48 0D24 (0D4D)',
+    'replace' => '0D24 \\1',
+  ),
+  329 => 
+  array (
+    'match' => '0D48 0D25 (0D4D)',
+    'replace' => '0D25 \\1',
+  ),
+  330 => 
+  array (
+    'match' => '0D48 0D26 (0D4D)',
+    'replace' => '0D26 \\1',
+  ),
+  331 => 
+  array (
+    'match' => '0D48 0D27 (0D4D)',
+    'replace' => '0D27 \\1',
+  ),
+  332 => 
+  array (
+    'match' => '0D48 0D28 (0D4D)',
+    'replace' => '0D28 \\1',
+  ),
+  333 => 
+  array (
+    'match' => '0D48 0D2A (0D4D)',
+    'replace' => '0D2A \\1',
+  ),
+  334 => 
+  array (
+    'match' => '0D48 0D2B (0D4D)',
+    'replace' => '0D2B \\1',
+  ),
+  335 => 
+  array (
+    'match' => '0D48 0D2C (0D4D)',
+    'replace' => '0D2C \\1',
+  ),
+  336 => 
+  array (
+    'match' => '0D48 0D2D (0D4D)',
+    'replace' => '0D2D \\1',
+  ),
+  337 => 
+  array (
+    'match' => '0D48 0D2E (0D4D)',
+    'replace' => '0D2E \\1',
+  ),
+  338 => 
+  array (
+    'match' => '0D48 0D2F (0D4D)',
+    'replace' => '0D2F \\1',
+  ),
+  339 => 
+  array (
+    'match' => '0D48 0D30 (0D4D)',
+    'replace' => '0D30 \\1',
+  ),
+  340 => 
+  array (
+    'match' => '0D48 0D31 (0D4D)',
+    'replace' => '0D31 \\1',
+  ),
+  341 => 
+  array (
+    'match' => '0D48 0D32 (0D4D)',
+    'replace' => '0D32 \\1',
+  ),
+  342 => 
+  array (
+    'match' => '0D48 0D33 (0D4D)',
+    'replace' => '0D33 \\1',
+  ),
+  343 => 
+  array (
+    'match' => '0D48 0D34 (0D4D)',
+    'replace' => '0D34 \\1',
+  ),
+  344 => 
+  array (
+    'match' => '0D48 0D35 (0D4D)',
+    'replace' => '0D35 \\1',
+  ),
+  345 => 
+  array (
+    'match' => '0D48 0D36 (0D4D)',
+    'replace' => '0D36 \\1',
+  ),
+  346 => 
+  array (
+    'match' => '0D48 0D37 (0D4D)',
+    'replace' => '0D37 \\1',
+  ),
+  347 => 
+  array (
+    'match' => '0D48 0D38 (0D4D)',
+    'replace' => '0D38 \\1',
+  ),
+  348 => 
+  array (
+    'match' => '0D48 0D39 (0D4D)',
+    'replace' => '0D39 \\1',
+  ),
+  349 => 
+  array (
+    'match' => '0D41 0D4D',
+    'replace' => 'E003',
+  ),
+  350 => 
+  array (
+    'match' => '007E',
+    'replace' => '0D4D',
+  ),
+  351 => 
+  array (
+    'match' => '2018',
+    'replace' => '0D4D',
+  ),
+  352 => 
+  array (
+    'match' => '2019',
+    'replace' => '0D4D',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_or_1_001.volt.php
new file mode 100644 (file)
index 0000000..b490e2b
--- /dev/null
@@ -0,0 +1,2149 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0B4D 200C',
+    'replace' => '2018',
+  ),
+  1 => 
+  array (
+    'match' => '0B15 0B4D 0B37',
+    'replace' => 'E003',
+  ),
+  2 => 
+  array (
+    'match' => '0B1C 0B4D 0B1E',
+    'replace' => 'E004',
+  ),
+  3 => 
+  array (
+    'match' => '((0B15|0B16|0B17|0B18|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B1F|0B20|0B21|0B22|0B23|0B24|0B25|0B26|0B27|0B28|0B2A|0B2B|0B2C|0B2D|0B2E|0B2F|0B30|0B32|0B33|0B35|0B36|0B37|0B38|0B39|0B71|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B30 0B4D',
+    'replace' => '\\1 E069',
+  ),
+  4 => 
+  array (
+    'match' => '((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C)) 0B30 0B4D',
+    'replace' => '\\1 E069',
+  ),
+  5 => 
+  array (
+    'match' => '((0B3E|0B40|E044|0B57|E068|E074|E08B|E08F)) 0B30 0B4D',
+    'replace' => '\\1 E069',
+  ),
+  6 => 
+  array (
+    'match' => '(0B3C) 0B30 0B4D',
+    'replace' => '\\1 E069',
+  ),
+  7 => 
+  array (
+    'match' => '(25CC) 0B30 0B4D',
+    'replace' => '\\1 E069',
+  ),
+  8 => 
+  array (
+    'match' => '((0B15|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B20|0B21|0B22|0B24|0B26|0B28|0B2C|0B2D|0B32|0B33|0B35|0B39|25CC)) E069',
+    'replace' => '\\1 E06B',
+  ),
+  9 => 
+  array (
+    'match' => '((0B15|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B20|0B21|0B22|0B24|0B26|0B28|0B2C|0B2D|0B32|0B33|0B35|0B39|25CC) 0B3C) E069',
+    'replace' => '\\1 E06B',
+  ),
+  10 => 
+  array (
+    'match' => '0B38 0B4D 0B24 0B4D 0B30',
+    'replace' => 'E01B',
+  ),
+  11 => 
+  array (
+    'match' => '0B28 0B4D 0B24 0B4D 0B30',
+    'replace' => 'E01D',
+  ),
+  12 => 
+  array (
+    'match' => '0B28 0B4D 0B24 0B4D 0B30',
+    'replace' => 'E01C',
+  ),
+  13 => 
+  array (
+    'match' => '0B56 E069',
+    'replace' => 'E070',
+  ),
+  14 => 
+  array (
+    'match' => '0B57 E069',
+    'replace' => 'E074',
+  ),
+  15 => 
+  array (
+    'match' => '0B3F E069',
+    'replace' => 'E06D',
+  ),
+  16 => 
+  array (
+    'match' => '0B40 E069',
+    'replace' => 'E14D',
+  ),
+  17 => 
+  array (
+    'match' => '0B24 0B4D 0B17 0B4D 0B27',
+    'replace' => 'E036',
+  ),
+  18 => 
+  array (
+    'match' => '0B24 0B4D 0B38 0B4D 0B28',
+    'replace' => 'E030',
+  ),
+  19 => 
+  array (
+    'match' => '0B19 0B4D 0B15',
+    'replace' => 'E005',
+  ),
+  20 => 
+  array (
+    'match' => '0B19 0B4D 0B16',
+    'replace' => 'E006',
+  ),
+  21 => 
+  array (
+    'match' => '0B19 0B4D 0B17',
+    'replace' => 'E007',
+  ),
+  22 => 
+  array (
+    'match' => '0B19 0B4D 0B18',
+    'replace' => 'E008',
+  ),
+  23 => 
+  array (
+    'match' => '0B1A 0B4D 0B1A',
+    'replace' => 'E009',
+  ),
+  24 => 
+  array (
+    'match' => '0B1F 0B4D 0B1F',
+    'replace' => 'E00A',
+  ),
+  25 => 
+  array (
+    'match' => '0B24 0B4D 0B24',
+    'replace' => 'E00B',
+  ),
+  26 => 
+  array (
+    'match' => '0B26 0B4D 0B27',
+    'replace' => 'E00C',
+  ),
+  27 => 
+  array (
+    'match' => '0B26 0B4D 0B26',
+    'replace' => 'E00D',
+  ),
+  28 => 
+  array (
+    'match' => '0B23 0B4D 0B23',
+    'replace' => 'E00F',
+  ),
+  29 => 
+  array (
+    'match' => '0B1E 0B4D 0B1A',
+    'replace' => 'E011',
+  ),
+  30 => 
+  array (
+    'match' => '0B1E 0B4D 0B1D',
+    'replace' => 'E012',
+  ),
+  31 => 
+  array (
+    'match' => '0B1E 0B4D 0B1C',
+    'replace' => 'E013',
+  ),
+  32 => 
+  array (
+    'match' => '0B26 0B4D 0B2D',
+    'replace' => 'E014',
+  ),
+  33 => 
+  array (
+    'match' => '0B27 0B4D 0B27',
+    'replace' => 'E015',
+  ),
+  34 => 
+  array (
+    'match' => '0B2C 0B4D 0B26',
+    'replace' => 'E016',
+  ),
+  35 => 
+  array (
+    'match' => '0B28 0B4D 0B26',
+    'replace' => 'E017',
+  ),
+  36 => 
+  array (
+    'match' => '0B28 0B4D 0B27',
+    'replace' => 'E018',
+  ),
+  37 => 
+  array (
+    'match' => '0B2E 0B4D 0B2B',
+    'replace' => 'E019',
+  ),
+  38 => 
+  array (
+    'match' => '0B2E 0B4D 0B2A',
+    'replace' => 'E01A',
+  ),
+  39 => 
+  array (
+    'match' => '0B37 0B4D 0B23',
+    'replace' => 'E010',
+  ),
+  40 => 
+  array (
+    'match' => '0B39 0B4D 0B28',
+    'replace' => 'E01E',
+  ),
+  41 => 
+  array (
+    'match' => '0B39 0B4D 0B35',
+    'replace' => 'E01F',
+  ),
+  42 => 
+  array (
+    'match' => '0B39 0B4D 0B2E',
+    'replace' => 'E020',
+  ),
+  43 => 
+  array (
+    'match' => '0B1A 0B4D 0B1B',
+    'replace' => 'E021',
+  ),
+  44 => 
+  array (
+    'match' => '0B1E 0B4D 0B1B',
+    'replace' => 'E023',
+  ),
+  45 => 
+  array (
+    'match' => '0B2E 0B4D 0B2D',
+    'replace' => 'E024',
+  ),
+  46 => 
+  array (
+    'match' => '0B28 0B4D 0B24',
+    'replace' => 'E025',
+  ),
+  47 => 
+  array (
+    'match' => '0B38 0B4D 0B24',
+    'replace' => 'E026',
+  ),
+  48 => 
+  array (
+    'match' => '0B2A 0B4D 0B24',
+    'replace' => 'E027',
+  ),
+  49 => 
+  array (
+    'match' => '0B15 0B4D 0B24',
+    'replace' => 'E028',
+  ),
+  50 => 
+  array (
+    'match' => '0B23 0B4D 0B21',
+    'replace' => 'E029',
+  ),
+  51 => 
+  array (
+    'match' => '0B24 0B4D 0B15',
+    'replace' => 'E02A',
+  ),
+  52 => 
+  array (
+    'match' => '0B24 0B4D 0B38',
+    'replace' => 'E02B',
+  ),
+  53 => 
+  array (
+    'match' => '0B24 0B4D 0B2A',
+    'replace' => 'E02C',
+  ),
+  54 => 
+  array (
+    'match' => '0B23 0B4D 0B22',
+    'replace' => 'E031',
+  ),
+  55 => 
+  array (
+    'match' => '0B36 0B4D 0B1B',
+    'replace' => 'E032',
+  ),
+  56 => 
+  array (
+    'match' => '0B24 0B4D 0B28',
+    'replace' => 'E033',
+  ),
+  57 => 
+  array (
+    'match' => '0B24 0B4D 0B2E',
+    'replace' => 'E034',
+  ),
+  58 => 
+  array (
+    'match' => '0B17 0B4D 0B27',
+    'replace' => 'E035',
+  ),
+  59 => 
+  array (
+    'match' => '0B24 0B4D 0B2B',
+    'replace' => 'E037',
+  ),
+  60 => 
+  array (
+    'match' => '0B2E 0B4D 0B2E',
+    'replace' => 'E14A',
+  ),
+  61 => 
+  array (
+    'match' => '0B21 0B3C',
+    'replace' => '0B5C',
+  ),
+  62 => 
+  array (
+    'match' => '0B22 0B3C',
+    'replace' => '0B5D',
+  ),
+  63 => 
+  array (
+    'match' => '((0B15|0B16|0B17|0B18|0B19|0B1A|0B1B|0B1C|0B1D|0B1E|0B1F|0B20|0B21|0B22|0B23|0B24|0B25|0B26|0B27|0B28|0B2A|0B2B|0B2C|0B2D|0B2E|0B2F|0B30|0B32|0B33|0B35|0B36|0B37|0B38|0B39|0B71|E003|E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B4D',
+    'replace' => '\\1 2019',
+  ),
+  64 => 
+  array (
+    'match' => '((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C)) 0B4D',
+    'replace' => '\\1 2019',
+  ),
+  65 => 
+  array (
+    'match' => '(E069) 0B4D',
+    'replace' => '\\1 2019',
+  ),
+  66 => 
+  array (
+    'match' => '((0B41|E045|0B42|0B43|E053|E056|E059|0B3C)) 0B4D',
+    'replace' => '\\1 2019',
+  ),
+  67 => 
+  array (
+    'match' => '(200D) 0B4D',
+    'replace' => '\\1 2019',
+  ),
+  68 => 
+  array (
+    'match' => '(25CC) 0B4D',
+    'replace' => '\\1 2019',
+  ),
+  69 => 
+  array (
+    'match' => '(0020) 0B4D',
+    'replace' => '\\1 2019',
+  ),
+  70 => 
+  array (
+    'match' => '200D 2019',
+    'replace' => '2019',
+  ),
+  71 => 
+  array (
+    'match' => '2019 0B30',
+    'replace' => 'E075',
+  ),
+  72 => 
+  array (
+    'match' => '2019 0B5F',
+    'replace' => 'E077',
+  ),
+  73 => 
+  array (
+    'match' => '2019 0B35',
+    'replace' => 'E078',
+  ),
+  74 => 
+  array (
+    'match' => '2019 0B32',
+    'replace' => 'E110',
+  ),
+  75 => 
+  array (
+    'match' => '2019 0B33',
+    'replace' => 'E111',
+  ),
+  76 => 
+  array (
+    'match' => '2019 0B2E',
+    'replace' => 'E11C',
+  ),
+  77 => 
+  array (
+    'match' => '2019 0B15',
+    'replace' => 'E0F6',
+  ),
+  78 => 
+  array (
+    'match' => '2019 0B16',
+    'replace' => 'E0F7',
+  ),
+  79 => 
+  array (
+    'match' => '2019 0B17',
+    'replace' => 'E0F8',
+  ),
+  80 => 
+  array (
+    'match' => '2019 0B18',
+    'replace' => 'E0F9',
+  ),
+  81 => 
+  array (
+    'match' => '2019 0B19',
+    'replace' => 'E0FA',
+  ),
+  82 => 
+  array (
+    'match' => '2019 0B1A',
+    'replace' => 'E0FB',
+  ),
+  83 => 
+  array (
+    'match' => '2019 0B1B',
+    'replace' => 'E0FC',
+  ),
+  84 => 
+  array (
+    'match' => '2019 0B1C',
+    'replace' => 'E0FD',
+  ),
+  85 => 
+  array (
+    'match' => '2019 0B1D',
+    'replace' => 'E0FE',
+  ),
+  86 => 
+  array (
+    'match' => '2019 0B1E',
+    'replace' => 'E0FF',
+  ),
+  87 => 
+  array (
+    'match' => '2019 0B1F',
+    'replace' => 'E100',
+  ),
+  88 => 
+  array (
+    'match' => '2019 0B20',
+    'replace' => 'E101',
+  ),
+  89 => 
+  array (
+    'match' => '2019 0B21',
+    'replace' => 'E102',
+  ),
+  90 => 
+  array (
+    'match' => '2019 0B22',
+    'replace' => 'E103',
+  ),
+  91 => 
+  array (
+    'match' => '2019 0B23',
+    'replace' => 'E104',
+  ),
+  92 => 
+  array (
+    'match' => '2019 0B24',
+    'replace' => 'E105',
+  ),
+  93 => 
+  array (
+    'match' => '2019 0B25',
+    'replace' => 'E106',
+  ),
+  94 => 
+  array (
+    'match' => '2019 0B26',
+    'replace' => 'E107',
+  ),
+  95 => 
+  array (
+    'match' => '2019 0B27',
+    'replace' => 'E108',
+  ),
+  96 => 
+  array (
+    'match' => '2019 0B28',
+    'replace' => 'E109',
+  ),
+  97 => 
+  array (
+    'match' => '2019 0B2A',
+    'replace' => 'E10A',
+  ),
+  98 => 
+  array (
+    'match' => '2019 0B2B',
+    'replace' => 'E10B',
+  ),
+  99 => 
+  array (
+    'match' => '2019 0B2C',
+    'replace' => 'E10C',
+  ),
+  100 => 
+  array (
+    'match' => '2019 0B2D',
+    'replace' => 'E10D',
+  ),
+  101 => 
+  array (
+    'match' => '2019 0B2E',
+    'replace' => 'E10E',
+  ),
+  102 => 
+  array (
+    'match' => '2019 0B2F',
+    'replace' => 'E10F',
+  ),
+  103 => 
+  array (
+    'match' => '2019 0B32',
+    'replace' => 'E110',
+  ),
+  104 => 
+  array (
+    'match' => '2019 0B33',
+    'replace' => 'E111',
+  ),
+  105 => 
+  array (
+    'match' => '2019 0B35',
+    'replace' => 'E112',
+  ),
+  106 => 
+  array (
+    'match' => '2019 0B36',
+    'replace' => 'E113',
+  ),
+  107 => 
+  array (
+    'match' => '2019 0B37',
+    'replace' => 'E114',
+  ),
+  108 => 
+  array (
+    'match' => '2019 0B38',
+    'replace' => 'E115',
+  ),
+  109 => 
+  array (
+    'match' => '2019 0B39',
+    'replace' => 'E116',
+  ),
+  110 => 
+  array (
+    'match' => '2019 E003',
+    'replace' => 'E119',
+  ),
+  111 => 
+  array (
+    'match' => '2019 E004',
+    'replace' => 'E11A',
+  ),
+  112 => 
+  array (
+    'match' => '2019 0B35',
+    'replace' => 'E078',
+  ),
+  113 => 
+  array (
+    'match' => '2019 0B71',
+    'replace' => 'E078',
+  ),
+  114 => 
+  array (
+    'match' => '0B15 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E090 \\1',
+  ),
+  115 => 
+  array (
+    'match' => '0B16 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E091 \\1',
+  ),
+  116 => 
+  array (
+    'match' => '0B17 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E092 \\1',
+  ),
+  117 => 
+  array (
+    'match' => '0B18 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E093 \\1',
+  ),
+  118 => 
+  array (
+    'match' => '0B19 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E094 \\1',
+  ),
+  119 => 
+  array (
+    'match' => '0B1A ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E095 \\1',
+  ),
+  120 => 
+  array (
+    'match' => '0B1B ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E096 \\1',
+  ),
+  121 => 
+  array (
+    'match' => '0B1C ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E097 \\1',
+  ),
+  122 => 
+  array (
+    'match' => '0B1D ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E098 \\1',
+  ),
+  123 => 
+  array (
+    'match' => '0B1E ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E099 \\1',
+  ),
+  124 => 
+  array (
+    'match' => '0B1F ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09A \\1',
+  ),
+  125 => 
+  array (
+    'match' => '0B20 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09B \\1',
+  ),
+  126 => 
+  array (
+    'match' => '0B21 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09C \\1',
+  ),
+  127 => 
+  array (
+    'match' => '0B22 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09D \\1',
+  ),
+  128 => 
+  array (
+    'match' => '0B23 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09E \\1',
+  ),
+  129 => 
+  array (
+    'match' => '0B24 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09F \\1',
+  ),
+  130 => 
+  array (
+    'match' => '0B25 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A0 \\1',
+  ),
+  131 => 
+  array (
+    'match' => '0B26 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A1 \\1',
+  ),
+  132 => 
+  array (
+    'match' => '0B27 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A2 \\1',
+  ),
+  133 => 
+  array (
+    'match' => '0B28 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A3 \\1',
+  ),
+  134 => 
+  array (
+    'match' => '0B2A ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A4 \\1',
+  ),
+  135 => 
+  array (
+    'match' => '0B2B ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A5 \\1',
+  ),
+  136 => 
+  array (
+    'match' => '0B2C ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A6 \\1',
+  ),
+  137 => 
+  array (
+    'match' => '0B2D ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A7 \\1',
+  ),
+  138 => 
+  array (
+    'match' => '0B2E ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A8 \\1',
+  ),
+  139 => 
+  array (
+    'match' => '0B2F ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A9 \\1',
+  ),
+  140 => 
+  array (
+    'match' => '0B32 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AA \\1',
+  ),
+  141 => 
+  array (
+    'match' => '0B33 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AB \\1',
+  ),
+  142 => 
+  array (
+    'match' => '0B35 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AC \\1',
+  ),
+  143 => 
+  array (
+    'match' => '0B36 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AD \\1',
+  ),
+  144 => 
+  array (
+    'match' => '0B37 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AE \\1',
+  ),
+  145 => 
+  array (
+    'match' => '0B38 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AF \\1',
+  ),
+  146 => 
+  array (
+    'match' => '0B39 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B0 \\1',
+  ),
+  147 => 
+  array (
+    'match' => 'E003 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B1 \\1',
+  ),
+  148 => 
+  array (
+    'match' => 'E004 ((E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B2 \\1',
+  ),
+  149 => 
+  array (
+    'match' => '0B15 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E090 \\1',
+  ),
+  150 => 
+  array (
+    'match' => '0B16 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E091 \\1',
+  ),
+  151 => 
+  array (
+    'match' => '0B17 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E092 \\1',
+  ),
+  152 => 
+  array (
+    'match' => '0B18 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E093 \\1',
+  ),
+  153 => 
+  array (
+    'match' => '0B19 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E094 \\1',
+  ),
+  154 => 
+  array (
+    'match' => '0B1A ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E095 \\1',
+  ),
+  155 => 
+  array (
+    'match' => '0B1B ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E096 \\1',
+  ),
+  156 => 
+  array (
+    'match' => '0B1C ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E097 \\1',
+  ),
+  157 => 
+  array (
+    'match' => '0B1D ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E098 \\1',
+  ),
+  158 => 
+  array (
+    'match' => '0B1E ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E099 \\1',
+  ),
+  159 => 
+  array (
+    'match' => '0B1F ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09A \\1',
+  ),
+  160 => 
+  array (
+    'match' => '0B20 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09B \\1',
+  ),
+  161 => 
+  array (
+    'match' => '0B21 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09C \\1',
+  ),
+  162 => 
+  array (
+    'match' => '0B22 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09D \\1',
+  ),
+  163 => 
+  array (
+    'match' => '0B23 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09E \\1',
+  ),
+  164 => 
+  array (
+    'match' => '0B24 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09F \\1',
+  ),
+  165 => 
+  array (
+    'match' => '0B25 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A0 \\1',
+  ),
+  166 => 
+  array (
+    'match' => '0B26 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A1 \\1',
+  ),
+  167 => 
+  array (
+    'match' => '0B27 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A2 \\1',
+  ),
+  168 => 
+  array (
+    'match' => '0B28 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A3 \\1',
+  ),
+  169 => 
+  array (
+    'match' => '0B2A ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A4 \\1',
+  ),
+  170 => 
+  array (
+    'match' => '0B2B ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A5 \\1',
+  ),
+  171 => 
+  array (
+    'match' => '0B2C ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A6 \\1',
+  ),
+  172 => 
+  array (
+    'match' => '0B2D ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A7 \\1',
+  ),
+  173 => 
+  array (
+    'match' => '0B2E ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A8 \\1',
+  ),
+  174 => 
+  array (
+    'match' => '0B2F ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A9 \\1',
+  ),
+  175 => 
+  array (
+    'match' => '0B32 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AA \\1',
+  ),
+  176 => 
+  array (
+    'match' => '0B33 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AB \\1',
+  ),
+  177 => 
+  array (
+    'match' => '0B35 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AC \\1',
+  ),
+  178 => 
+  array (
+    'match' => '0B36 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AD \\1',
+  ),
+  179 => 
+  array (
+    'match' => '0B37 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AE \\1',
+  ),
+  180 => 
+  array (
+    'match' => '0B38 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AF \\1',
+  ),
+  181 => 
+  array (
+    'match' => '0B39 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B0 \\1',
+  ),
+  182 => 
+  array (
+    'match' => 'E003 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B1 \\1',
+  ),
+  183 => 
+  array (
+    'match' => 'E004 ((0B01|0B3F|0B56|E06B|E041|E064|E06D|E070|E089|E08C) (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B2 \\1',
+  ),
+  184 => 
+  array (
+    'match' => '0B15 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E090 \\1',
+  ),
+  185 => 
+  array (
+    'match' => '0B16 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E091 \\1',
+  ),
+  186 => 
+  array (
+    'match' => '0B17 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E092 \\1',
+  ),
+  187 => 
+  array (
+    'match' => '0B18 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E093 \\1',
+  ),
+  188 => 
+  array (
+    'match' => '0B19 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E094 \\1',
+  ),
+  189 => 
+  array (
+    'match' => '0B1A (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E095 \\1',
+  ),
+  190 => 
+  array (
+    'match' => '0B1B (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E096 \\1',
+  ),
+  191 => 
+  array (
+    'match' => '0B1C (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E097 \\1',
+  ),
+  192 => 
+  array (
+    'match' => '0B1D (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E098 \\1',
+  ),
+  193 => 
+  array (
+    'match' => '0B1E (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E099 \\1',
+  ),
+  194 => 
+  array (
+    'match' => '0B1F (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09A \\1',
+  ),
+  195 => 
+  array (
+    'match' => '0B20 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09B \\1',
+  ),
+  196 => 
+  array (
+    'match' => '0B21 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09C \\1',
+  ),
+  197 => 
+  array (
+    'match' => '0B22 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09D \\1',
+  ),
+  198 => 
+  array (
+    'match' => '0B23 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09E \\1',
+  ),
+  199 => 
+  array (
+    'match' => '0B24 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09F \\1',
+  ),
+  200 => 
+  array (
+    'match' => '0B25 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A0 \\1',
+  ),
+  201 => 
+  array (
+    'match' => '0B26 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A1 \\1',
+  ),
+  202 => 
+  array (
+    'match' => '0B27 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A2 \\1',
+  ),
+  203 => 
+  array (
+    'match' => '0B28 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A3 \\1',
+  ),
+  204 => 
+  array (
+    'match' => '0B2A (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A4 \\1',
+  ),
+  205 => 
+  array (
+    'match' => '0B2B (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A5 \\1',
+  ),
+  206 => 
+  array (
+    'match' => '0B2C (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A6 \\1',
+  ),
+  207 => 
+  array (
+    'match' => '0B2D (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A7 \\1',
+  ),
+  208 => 
+  array (
+    'match' => '0B2E (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A8 \\1',
+  ),
+  209 => 
+  array (
+    'match' => '0B2F (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A9 \\1',
+  ),
+  210 => 
+  array (
+    'match' => '0B32 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AA \\1',
+  ),
+  211 => 
+  array (
+    'match' => '0B33 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AB \\1',
+  ),
+  212 => 
+  array (
+    'match' => '0B35 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AC \\1',
+  ),
+  213 => 
+  array (
+    'match' => '0B36 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AD \\1',
+  ),
+  214 => 
+  array (
+    'match' => '0B37 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AE \\1',
+  ),
+  215 => 
+  array (
+    'match' => '0B38 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AF \\1',
+  ),
+  216 => 
+  array (
+    'match' => '0B39 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B0 \\1',
+  ),
+  217 => 
+  array (
+    'match' => 'E003 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B1 \\1',
+  ),
+  218 => 
+  array (
+    'match' => 'E004 (0B3C (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B2 \\1',
+  ),
+  219 => 
+  array (
+    'match' => '0B15 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E090 \\1',
+  ),
+  220 => 
+  array (
+    'match' => '0B16 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E091 \\1',
+  ),
+  221 => 
+  array (
+    'match' => '0B17 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E092 \\1',
+  ),
+  222 => 
+  array (
+    'match' => '0B18 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E093 \\1',
+  ),
+  223 => 
+  array (
+    'match' => '0B19 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E094 \\1',
+  ),
+  224 => 
+  array (
+    'match' => '0B1A (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E095 \\1',
+  ),
+  225 => 
+  array (
+    'match' => '0B1B (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E096 \\1',
+  ),
+  226 => 
+  array (
+    'match' => '0B1C (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E097 \\1',
+  ),
+  227 => 
+  array (
+    'match' => '0B1D (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E098 \\1',
+  ),
+  228 => 
+  array (
+    'match' => '0B1E (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E099 \\1',
+  ),
+  229 => 
+  array (
+    'match' => '0B1F (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09A \\1',
+  ),
+  230 => 
+  array (
+    'match' => '0B20 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09B \\1',
+  ),
+  231 => 
+  array (
+    'match' => '0B21 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09C \\1',
+  ),
+  232 => 
+  array (
+    'match' => '0B22 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09D \\1',
+  ),
+  233 => 
+  array (
+    'match' => '0B23 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09E \\1',
+  ),
+  234 => 
+  array (
+    'match' => '0B24 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E09F \\1',
+  ),
+  235 => 
+  array (
+    'match' => '0B25 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A0 \\1',
+  ),
+  236 => 
+  array (
+    'match' => '0B26 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A1 \\1',
+  ),
+  237 => 
+  array (
+    'match' => '0B27 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A2 \\1',
+  ),
+  238 => 
+  array (
+    'match' => '0B28 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A3 \\1',
+  ),
+  239 => 
+  array (
+    'match' => '0B2A (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A4 \\1',
+  ),
+  240 => 
+  array (
+    'match' => '0B2B (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A5 \\1',
+  ),
+  241 => 
+  array (
+    'match' => '0B2C (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A6 \\1',
+  ),
+  242 => 
+  array (
+    'match' => '0B2D (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A7 \\1',
+  ),
+  243 => 
+  array (
+    'match' => '0B2E (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A8 \\1',
+  ),
+  244 => 
+  array (
+    'match' => '0B2F (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0A9 \\1',
+  ),
+  245 => 
+  array (
+    'match' => '0B32 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AA \\1',
+  ),
+  246 => 
+  array (
+    'match' => '0B33 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AB \\1',
+  ),
+  247 => 
+  array (
+    'match' => '0B35 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AC \\1',
+  ),
+  248 => 
+  array (
+    'match' => '0B36 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AD \\1',
+  ),
+  249 => 
+  array (
+    'match' => '0B37 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AE \\1',
+  ),
+  250 => 
+  array (
+    'match' => '0B38 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0AF \\1',
+  ),
+  251 => 
+  array (
+    'match' => '0B39 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B0 \\1',
+  ),
+  252 => 
+  array (
+    'match' => 'E003 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B1 \\1',
+  ),
+  253 => 
+  array (
+    'match' => 'E004 (E069 (E07B|E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E11E|E11F|E120|E121|E122|E11B|E11C))',
+    'replace' => 'E0B2 \\1',
+  ),
+  254 => 
+  array (
+    'match' => '0B25 0B3F',
+    'replace' => 'E02D',
+  ),
+  255 => 
+  array (
+    'match' => '0B27 0B3F',
+    'replace' => 'E02E',
+  ),
+  256 => 
+  array (
+    'match' => '0B16 0B3F',
+    'replace' => 'E02F',
+  ),
+  257 => 
+  array (
+    'match' => '(0B3C) 0B4D',
+    'replace' => '\\1 E063',
+  ),
+  258 => 
+  array (
+    'match' => '(0B3C) E075',
+    'replace' => '\\1 E076',
+  ),
+  259 => 
+  array (
+    'match' => '2018',
+    'replace' => '0B4D',
+  ),
+  260 => 
+  array (
+    'match' => '2019',
+    'replace' => '0B4D',
+  ),
+  261 => 
+  array (
+    'match' => '((0B16|0B17|0B18|0B1F|0B23|0B25|0B27|0B2A|0B2B|0B2E|0B2F|0B37|0B38)) 0B01',
+    'replace' => '\\1 E039',
+  ),
+  262 => 
+  array (
+    'match' => '((E003|E006|E007|E008|E019|E01A|E00F|E010|E015|E01B|E024|E026|E027|E029|E14A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E034|E035|E036|E037)) 0B01',
+    'replace' => '\\1 E039',
+  ),
+  263 => 
+  array (
+    'match' => '0B3F 0B01',
+    'replace' => 'E041',
+  ),
+  264 => 
+  array (
+    'match' => 'E03F 0B01',
+    'replace' => 'E041',
+  ),
+  265 => 
+  array (
+    'match' => 'E040 0B01',
+    'replace' => 'E042',
+  ),
+  266 => 
+  array (
+    'match' => '0B40 0B01',
+    'replace' => 'E044',
+  ),
+  267 => 
+  array (
+    'match' => '0B57 0B01',
+    'replace' => 'E068',
+  ),
+  268 => 
+  array (
+    'match' => '0B56 0B01',
+    'replace' => 'E064',
+  ),
+  269 => 
+  array (
+    'match' => 'E05D 0B01',
+    'replace' => 'E064',
+  ),
+  270 => 
+  array (
+    'match' => 'E05E 0B01',
+    'replace' => 'E065',
+  ),
+  271 => 
+  array (
+    'match' => 'E05F 0B01',
+    'replace' => 'E066',
+  ),
+  272 => 
+  array (
+    'match' => 'E060 0B01',
+    'replace' => 'E067',
+  ),
+  273 => 
+  array (
+    'match' => 'E06D 0B01',
+    'replace' => 'E089',
+  ),
+  274 => 
+  array (
+    'match' => 'E06E 0B01',
+    'replace' => 'E08A',
+  ),
+  275 => 
+  array (
+    'match' => 'E070 0B01',
+    'replace' => 'E08C',
+  ),
+  276 => 
+  array (
+    'match' => 'E071 0B01',
+    'replace' => 'E08D',
+  ),
+  277 => 
+  array (
+    'match' => 'E072 0B01',
+    'replace' => 'E08E',
+  ),
+  278 => 
+  array (
+    'match' => 'E074 0B01',
+    'replace' => 'E08F',
+  ),
+  279 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  280 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  281 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  282 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  283 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E053',
+    'replace' => '\\1 E054',
+  ),
+  284 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E056',
+    'replace' => '\\1 E057',
+  ),
+  285 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E059',
+    'replace' => '\\1 E05A',
+  ),
+  286 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  287 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E075',
+    'replace' => '\\1 E076',
+  ),
+  288 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  289 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  290 => 
+  array (
+    'match' => '((E0F6|E0F7|E0F8|E0F9|E0FA|E0FB|E0FC|E0FD|E0FE|E0FF|E100|E101|E102|E103|E104|E105|E106|E107|E108|E109|E10A|E10B|E10C|E10D|E10E|E10F|E110|E111|E112|E113|E114|E115|E116|E117|E118|E119|E11A|E11B|E11C|E11D|E07B|E084)) E082',
+    'replace' => '\\1 E083',
+  ),
+  291 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  292 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  293 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  294 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  295 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E053',
+    'replace' => '\\1 E054',
+  ),
+  296 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E056',
+    'replace' => '\\1 E057',
+  ),
+  297 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E059',
+    'replace' => '\\1 E05A',
+  ),
+  298 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  299 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E075',
+    'replace' => '\\1 E076',
+  ),
+  300 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  301 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  302 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E082',
+    'replace' => '\\1 E083',
+  ),
+  303 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  304 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  305 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  306 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  307 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E053',
+    'replace' => '\\1 E054',
+  ),
+  308 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E056',
+    'replace' => '\\1 E057',
+  ),
+  309 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E059',
+    'replace' => '\\1 E05A',
+  ),
+  310 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  311 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E075',
+    'replace' => '\\1 E076',
+  ),
+  312 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  313 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  314 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069) E082',
+    'replace' => '\\1 E083',
+  ),
+  315 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  316 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  317 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  318 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  319 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E053',
+    'replace' => '\\1 E054',
+  ),
+  320 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E056',
+    'replace' => '\\1 E057',
+  ),
+  321 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E059',
+    'replace' => '\\1 E05A',
+  ),
+  322 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  323 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E075',
+    'replace' => '\\1 E076',
+  ),
+  324 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  325 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  326 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037) E069 0B01) E082',
+    'replace' => '\\1 E083',
+  ),
+  327 => 
+  array (
+    'match' => '(E02B) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  328 => 
+  array (
+    'match' => '(E02B) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  329 => 
+  array (
+    'match' => '(E02B) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  330 => 
+  array (
+    'match' => '(E02B) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  331 => 
+  array (
+    'match' => '(E02B) E053',
+    'replace' => '\\1 E054',
+  ),
+  332 => 
+  array (
+    'match' => '(E02B) E056',
+    'replace' => '\\1 E057',
+  ),
+  333 => 
+  array (
+    'match' => '(E02B) E059',
+    'replace' => '\\1 E05A',
+  ),
+  334 => 
+  array (
+    'match' => '(E02B) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  335 => 
+  array (
+    'match' => '(E02B) E075',
+    'replace' => '\\1 E076',
+  ),
+  336 => 
+  array (
+    'match' => '(E02B) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  337 => 
+  array (
+    'match' => '(E02B) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  338 => 
+  array (
+    'match' => '(E02B) E082',
+    'replace' => '\\1 E083',
+  ),
+  339 => 
+  array (
+    'match' => '(E02C) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  340 => 
+  array (
+    'match' => '(E02C) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  341 => 
+  array (
+    'match' => '(E02C) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  342 => 
+  array (
+    'match' => '(E02C) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  343 => 
+  array (
+    'match' => '(E02C) E053',
+    'replace' => '\\1 E054',
+  ),
+  344 => 
+  array (
+    'match' => '(E02C) E056',
+    'replace' => '\\1 E057',
+  ),
+  345 => 
+  array (
+    'match' => '(E02C) E059',
+    'replace' => '\\1 E05A',
+  ),
+  346 => 
+  array (
+    'match' => '(E02C) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  347 => 
+  array (
+    'match' => '(E02C) E075',
+    'replace' => '\\1 E076',
+  ),
+  348 => 
+  array (
+    'match' => '(E02C) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  349 => 
+  array (
+    'match' => '(E02C) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  350 => 
+  array (
+    'match' => '(E02C) E082',
+    'replace' => '\\1 E083',
+  ),
+  351 => 
+  array (
+    'match' => '(E06B) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  352 => 
+  array (
+    'match' => '(E06B) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  353 => 
+  array (
+    'match' => '(E06B) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  354 => 
+  array (
+    'match' => '(E06B) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  355 => 
+  array (
+    'match' => '(E06B) E053',
+    'replace' => '\\1 E054',
+  ),
+  356 => 
+  array (
+    'match' => '(E06B) E056',
+    'replace' => '\\1 E057',
+  ),
+  357 => 
+  array (
+    'match' => '(E06B) E059',
+    'replace' => '\\1 E05A',
+  ),
+  358 => 
+  array (
+    'match' => '(E06B) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  359 => 
+  array (
+    'match' => '(E06B) E075',
+    'replace' => '\\1 E076',
+  ),
+  360 => 
+  array (
+    'match' => '(E06B) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  361 => 
+  array (
+    'match' => '(E06B) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  362 => 
+  array (
+    'match' => '(E06B) E082',
+    'replace' => '\\1 E083',
+  ),
+  363 => 
+  array (
+    'match' => '(0B3C) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  364 => 
+  array (
+    'match' => '(0B3C) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  365 => 
+  array (
+    'match' => '(0B3C) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  366 => 
+  array (
+    'match' => '(0B3C) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  367 => 
+  array (
+    'match' => '(0B3C) E053',
+    'replace' => '\\1 E054',
+  ),
+  368 => 
+  array (
+    'match' => '(0B3C) E056',
+    'replace' => '\\1 E057',
+  ),
+  369 => 
+  array (
+    'match' => '(0B3C) E059',
+    'replace' => '\\1 E05A',
+  ),
+  370 => 
+  array (
+    'match' => '(0B3C) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  371 => 
+  array (
+    'match' => '(0B3C) E075',
+    'replace' => '\\1 E076',
+  ),
+  372 => 
+  array (
+    'match' => '(0B3C) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  373 => 
+  array (
+    'match' => '(0B3C) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  374 => 
+  array (
+    'match' => '(0B3C) E082',
+    'replace' => '\\1 E083',
+  ),
+  375 => 
+  array (
+    'match' => '(E075) 0B3C',
+    'replace' => '\\1 E03C',
+  ),
+  376 => 
+  array (
+    'match' => '(E075) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  377 => 
+  array (
+    'match' => '(E075) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  378 => 
+  array (
+    'match' => '(E075) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  379 => 
+  array (
+    'match' => '(E075) E053',
+    'replace' => '\\1 E054',
+  ),
+  380 => 
+  array (
+    'match' => '(E075) E056',
+    'replace' => '\\1 E057',
+  ),
+  381 => 
+  array (
+    'match' => '(E075) E059',
+    'replace' => '\\1 E05A',
+  ),
+  382 => 
+  array (
+    'match' => '(E075) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  383 => 
+  array (
+    'match' => '(E075) E075',
+    'replace' => '\\1 E076',
+  ),
+  384 => 
+  array (
+    'match' => '(E075) E07B',
+    'replace' => '\\1 E07C',
+  ),
+  385 => 
+  array (
+    'match' => '(E075) E07D',
+    'replace' => '\\1 E07F',
+  ),
+  386 => 
+  array (
+    'match' => '(E075) E082',
+    'replace' => '\\1 E083',
+  ),
+  387 => 
+  array (
+    'match' => '(E075) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  388 => 
+  array (
+    'match' => '(E075) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  389 => 
+  array (
+    'match' => '(E075) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  390 => 
+  array (
+    'match' => '(E075) E053',
+    'replace' => '\\1 E054',
+  ),
+  391 => 
+  array (
+    'match' => '(E075) E056',
+    'replace' => '\\1 E057',
+  ),
+  392 => 
+  array (
+    'match' => '(E075) E059',
+    'replace' => '\\1 E05A',
+  ),
+  393 => 
+  array (
+    'match' => 'E14D 0B01',
+    'replace' => 'E08B',
+  ),
+  394 => 
+  array (
+    'match' => 'E14D E038',
+    'replace' => 'E08B',
+  ),
+  395 => 
+  array (
+    'match' => 'E14D E039',
+    'replace' => 'E08B',
+  ),
+  396 => 
+  array (
+    'match' => 'E14D E149',
+    'replace' => 'E08B',
+  ),
+  397 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E0FD',
+    'replace' => '\\1 E11E',
+  ),
+  398 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E109',
+    'replace' => '\\1 E121',
+  ),
+  399 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E110',
+    'replace' => '\\1 E11F',
+  ),
+  400 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E111',
+    'replace' => '\\1 E120',
+  ),
+  401 => 
+  array (
+    'match' => '((E00E|E00F|E010|E011|E012|E013|E01B|E01C|E01E|E01F|E020|E023|E024|E025|E026|E027|E028|E029|E02A|E02B|E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037)) E11C',
+    'replace' => '\\1 E122',
+  ),
+  402 => 
+  array (
+    'match' => '(E076) 0B41',
+    'replace' => '\\1 E048',
+  ),
+  403 => 
+  array (
+    'match' => '(E076) 0B42',
+    'replace' => '\\1 E04B',
+  ),
+  404 => 
+  array (
+    'match' => '(E076) 0B43',
+    'replace' => '\\1 E04F',
+  ),
+  405 => 
+  array (
+    'match' => '(E076) E053',
+    'replace' => '\\1 E054',
+  ),
+  406 => 
+  array (
+    'match' => '(E076) E056',
+    'replace' => '\\1 E057',
+  ),
+  407 => 
+  array (
+    'match' => '(E076) E059',
+    'replace' => '\\1 E05A',
+  ),
+  408 => 
+  array (
+    'match' => '(E076) 0B4D',
+    'replace' => '\\1 E062',
+  ),
+  409 => 
+  array (
+    'match' => '(E090) E10E',
+    'replace' => '\\1 E11C',
+  ),
+  410 => 
+  array (
+    'match' => '(E0B1) E10E',
+    'replace' => '\\1 E11C',
+  ),
+  411 => 
+  array (
+    'match' => '(E09F) E10E',
+    'replace' => '\\1 E11C',
+  ),
+  412 => 
+  array (
+    'match' => '(E092) E10E',
+    'replace' => '\\1 E11C',
+  ),
+  413 => 
+  array (
+    'match' => '(E0A8) E10E',
+    'replace' => '\\1 E11C',
+  ),
+  414 => 
+  array (
+    'match' => '(E0A3) E106',
+    'replace' => '\\1 E0FC',
+  ),
+  415 => 
+  array (
+    'match' => '(E0AF) E106',
+    'replace' => '\\1 E0FC',
+  ),
+  416 => 
+  array (
+    'match' => '((0B16|0B17|0B18|0B1F|0B23|0B25|0B27|0B2A|0B2B|0B2E|0B2F|0B37|0B38)) 0B01',
+    'replace' => '\\1 E039',
+  ),
+  417 => 
+  array (
+    'match' => '(0B10) 0B01',
+    'replace' => '\\1 E149',
+  ),
+  418 => 
+  array (
+    'match' => '(0B14) 0B01',
+    'replace' => '\\1 E149',
+  ),
+  419 => 
+  array (
+    'match' => '(E069) 0B01',
+    'replace' => '\\1 E149',
+  ),
+  420 => 
+  array (
+    'match' => '(E06A) 0B01',
+    'replace' => '\\1 E149',
+  ),
+  421 => 
+  array (
+    'match' => '(E06B) 0B01',
+    'replace' => '\\1 E149',
+  ),
+  422 => 
+  array (
+    'match' => '(E06C) 0B01',
+    'replace' => '\\1 E149',
+  ),
+  423 => 
+  array (
+    'match' => '0B21 0B4D (E035)',
+    'replace' => 'E12F \\1',
+  ),
+  424 => 
+  array (
+    'match' => ' (E035)',
+    'replace' => ' \\1',
+  ),
+  425 => 
+  array (
+    'match' => ' (E035)',
+    'replace' => ' \\1',
+  ),
+  426 => 
+  array (
+    'match' => ' (E035)',
+    'replace' => ' \\1',
+  ),
+  427 => 
+  array (
+    'match' => ' (E035)',
+    'replace' => ' \\1',
+  ),
+  428 => 
+  array (
+    'match' => ' (E035)',
+    'replace' => ' \\1',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_pa_1_001.volt.php
new file mode 100644 (file)
index 0000000..34f81a6
--- /dev/null
@@ -0,0 +1,1444 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0A4D 200C',
+    'replace' => 'E055',
+  ),
+  1 => 
+  array (
+    'match' => '0A4D 200D',
+    'replace' => 'E057',
+  ),
+  2 => 
+  array (
+    'match' => '((0A15|0A16|0A17|0A18|0A19|0A1A|0A1B|0A1C|0A1D|0A1E|0A1F|0A20|0A21|0A22|0A23|0A24|0A25|0A26|0A27|0A28|0A2A|0A2B|0A2C|0A2D|0A2E|0A2F|0A30|0A32|0A33|0A35|0A36|0A38|0A39|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|0A59|0A5A|0A5B|0A5C|0A5E)) 0A4D',
+    'replace' => '\\1 E056',
+  ),
+  3 => 
+  array (
+    'match' => '(200D) 0A4D',
+    'replace' => '\\1 E056',
+  ),
+  4 => 
+  array (
+    'match' => '(0020) 0A4D',
+    'replace' => '\\1 E056',
+  ),
+  5 => 
+  array (
+    'match' => '(25CC) 0A4D',
+    'replace' => '\\1 E056',
+  ),
+  6 => 
+  array (
+    'match' => '200D E056',
+    'replace' => 'E056',
+  ),
+  7 => 
+  array (
+    'match' => '0A05 0A3C',
+    'replace' => 'E02A',
+  ),
+  8 => 
+  array (
+    'match' => '0A06 0A3C',
+    'replace' => 'E02B',
+  ),
+  9 => 
+  array (
+    'match' => '0A07 0A3C',
+    'replace' => 'E02C',
+  ),
+  10 => 
+  array (
+    'match' => '0A08 0A3C',
+    'replace' => 'E02D',
+  ),
+  11 => 
+  array (
+    'match' => '0A09 0A3C',
+    'replace' => 'E02E',
+  ),
+  12 => 
+  array (
+    'match' => '0A0A 0A3C',
+    'replace' => 'E02F',
+  ),
+  13 => 
+  array (
+    'match' => '0A0F 0A3C',
+    'replace' => 'E030',
+  ),
+  14 => 
+  array (
+    'match' => '0A10 0A3C',
+    'replace' => 'E031',
+  ),
+  15 => 
+  array (
+    'match' => '0A13 0A3C',
+    'replace' => 'E032',
+  ),
+  16 => 
+  array (
+    'match' => '0A14 0A3C',
+    'replace' => 'E033',
+  ),
+  17 => 
+  array (
+    'match' => '0A15 0A3C',
+    'replace' => 'E034',
+  ),
+  18 => 
+  array (
+    'match' => '0A16 0A3C',
+    'replace' => 'E035',
+  ),
+  19 => 
+  array (
+    'match' => '0A17 0A3C',
+    'replace' => 'E036',
+  ),
+  20 => 
+  array (
+    'match' => '0A18 0A3C',
+    'replace' => 'E037',
+  ),
+  21 => 
+  array (
+    'match' => '0A19 0A3C',
+    'replace' => 'E038',
+  ),
+  22 => 
+  array (
+    'match' => '0A1A 0A3C',
+    'replace' => 'E039',
+  ),
+  23 => 
+  array (
+    'match' => '0A1B 0A3C',
+    'replace' => 'E03A',
+  ),
+  24 => 
+  array (
+    'match' => '0A1C 0A3C',
+    'replace' => 'E03B',
+  ),
+  25 => 
+  array (
+    'match' => '0A1D 0A3C',
+    'replace' => 'E03C',
+  ),
+  26 => 
+  array (
+    'match' => '0A1E 0A3C',
+    'replace' => 'E03D',
+  ),
+  27 => 
+  array (
+    'match' => '0A1F 0A3C',
+    'replace' => 'E03E',
+  ),
+  28 => 
+  array (
+    'match' => '0A20 0A3C',
+    'replace' => 'E03F',
+  ),
+  29 => 
+  array (
+    'match' => '0A21 0A3C',
+    'replace' => 'E040',
+  ),
+  30 => 
+  array (
+    'match' => '0A22 0A3C',
+    'replace' => 'E041',
+  ),
+  31 => 
+  array (
+    'match' => '0A23 0A3C',
+    'replace' => 'E042',
+  ),
+  32 => 
+  array (
+    'match' => '0A24 0A3C',
+    'replace' => 'E043',
+  ),
+  33 => 
+  array (
+    'match' => '0A25 0A3C',
+    'replace' => 'E044',
+  ),
+  34 => 
+  array (
+    'match' => '0A26 0A3C',
+    'replace' => 'E045',
+  ),
+  35 => 
+  array (
+    'match' => '0A27 0A3C',
+    'replace' => 'E046',
+  ),
+  36 => 
+  array (
+    'match' => '0A28 0A3C',
+    'replace' => 'E047',
+  ),
+  37 => 
+  array (
+    'match' => '0A2A 0A3C',
+    'replace' => 'E048',
+  ),
+  38 => 
+  array (
+    'match' => '0A2B 0A3C',
+    'replace' => 'E049',
+  ),
+  39 => 
+  array (
+    'match' => '0A2C 0A3C',
+    'replace' => 'E04A',
+  ),
+  40 => 
+  array (
+    'match' => '0A2D 0A3C',
+    'replace' => 'E04B',
+  ),
+  41 => 
+  array (
+    'match' => '0A2E 0A3C',
+    'replace' => 'E04C',
+  ),
+  42 => 
+  array (
+    'match' => '0A2F 0A3C',
+    'replace' => 'E04D',
+  ),
+  43 => 
+  array (
+    'match' => '0A30 0A3C',
+    'replace' => 'E04E',
+  ),
+  44 => 
+  array (
+    'match' => '0A32 0A3C',
+    'replace' => 'E04F',
+  ),
+  45 => 
+  array (
+    'match' => '0A33 0A3C',
+    'replace' => 'E050',
+  ),
+  46 => 
+  array (
+    'match' => '0A35 0A3C',
+    'replace' => 'E051',
+  ),
+  47 => 
+  array (
+    'match' => '0A36 0A3C',
+    'replace' => 'E052',
+  ),
+  48 => 
+  array (
+    'match' => '0A38 0A3C',
+    'replace' => 'E053',
+  ),
+  49 => 
+  array (
+    'match' => '0A39 0A3C',
+    'replace' => 'E054',
+  ),
+  50 => 
+  array (
+    'match' => 'E056 0A15',
+    'replace' => 'E07B',
+  ),
+  51 => 
+  array (
+    'match' => 'E056 0A16',
+    'replace' => 'E07C',
+  ),
+  52 => 
+  array (
+    'match' => 'E056 0A17',
+    'replace' => 'E07D',
+  ),
+  53 => 
+  array (
+    'match' => 'E056 0A18',
+    'replace' => 'E07E',
+  ),
+  54 => 
+  array (
+    'match' => 'E056 0A19',
+    'replace' => 'E07F',
+  ),
+  55 => 
+  array (
+    'match' => 'E056 0A1A',
+    'replace' => 'E080',
+  ),
+  56 => 
+  array (
+    'match' => 'E056 0A1B',
+    'replace' => 'E081',
+  ),
+  57 => 
+  array (
+    'match' => 'E056 0A1C',
+    'replace' => 'E082',
+  ),
+  58 => 
+  array (
+    'match' => 'E056 0A1D',
+    'replace' => 'E083',
+  ),
+  59 => 
+  array (
+    'match' => 'E056 0A1E',
+    'replace' => 'E084',
+  ),
+  60 => 
+  array (
+    'match' => 'E056 0A1F',
+    'replace' => 'E085',
+  ),
+  61 => 
+  array (
+    'match' => 'E056 0A20',
+    'replace' => 'E086',
+  ),
+  62 => 
+  array (
+    'match' => 'E056 0A21',
+    'replace' => 'E087',
+  ),
+  63 => 
+  array (
+    'match' => 'E056 0A22',
+    'replace' => 'E088',
+  ),
+  64 => 
+  array (
+    'match' => 'E056 0A23',
+    'replace' => 'E089',
+  ),
+  65 => 
+  array (
+    'match' => 'E056 0A24',
+    'replace' => 'E08A',
+  ),
+  66 => 
+  array (
+    'match' => 'E056 0A25',
+    'replace' => 'E08B',
+  ),
+  67 => 
+  array (
+    'match' => 'E056 0A26',
+    'replace' => 'E08C',
+  ),
+  68 => 
+  array (
+    'match' => 'E056 0A27',
+    'replace' => 'E08D',
+  ),
+  69 => 
+  array (
+    'match' => 'E056 0A28',
+    'replace' => 'E08E',
+  ),
+  70 => 
+  array (
+    'match' => 'E056 0A2A',
+    'replace' => 'E08F',
+  ),
+  71 => 
+  array (
+    'match' => 'E056 0A2B',
+    'replace' => 'E090',
+  ),
+  72 => 
+  array (
+    'match' => 'E056 0A2C',
+    'replace' => 'E091',
+  ),
+  73 => 
+  array (
+    'match' => 'E056 0A2D',
+    'replace' => 'E092',
+  ),
+  74 => 
+  array (
+    'match' => 'E056 0A2E',
+    'replace' => 'E093',
+  ),
+  75 => 
+  array (
+    'match' => 'E056 0A2F',
+    'replace' => 'E094',
+  ),
+  76 => 
+  array (
+    'match' => 'E056 0A30',
+    'replace' => 'E095',
+  ),
+  77 => 
+  array (
+    'match' => 'E056 0A32',
+    'replace' => 'E096',
+  ),
+  78 => 
+  array (
+    'match' => 'E056 0A35',
+    'replace' => 'E097',
+  ),
+  79 => 
+  array (
+    'match' => 'E056 0A36',
+    'replace' => 'E098',
+  ),
+  80 => 
+  array (
+    'match' => 'E056 0A38',
+    'replace' => 'E099',
+  ),
+  81 => 
+  array (
+    'match' => 'E056 0A39',
+    'replace' => 'E09A',
+  ),
+  82 => 
+  array (
+    'match' => 'E056 0A59',
+    'replace' => 'E09B',
+  ),
+  83 => 
+  array (
+    'match' => 'E056 0A5A',
+    'replace' => 'E09C',
+  ),
+  84 => 
+  array (
+    'match' => 'E056 0A5B',
+    'replace' => 'E09D',
+  ),
+  85 => 
+  array (
+    'match' => 'E056 0A5C',
+    'replace' => 'E09E',
+  ),
+  86 => 
+  array (
+    'match' => 'E056 0A5E',
+    'replace' => 'E09F',
+  ),
+  87 => 
+  array (
+    'match' => 'E056 0A33',
+    'replace' => 'E0BB',
+  ),
+  88 => 
+  array (
+    'match' => 'E07B ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A15 \\1',
+  ),
+  89 => 
+  array (
+    'match' => 'E07C ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A16 \\1',
+  ),
+  90 => 
+  array (
+    'match' => 'E07D ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A17 \\1',
+  ),
+  91 => 
+  array (
+    'match' => 'E07E ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A18 \\1',
+  ),
+  92 => 
+  array (
+    'match' => 'E07F ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A19 \\1',
+  ),
+  93 => 
+  array (
+    'match' => 'E080 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A1A \\1',
+  ),
+  94 => 
+  array (
+    'match' => 'E081 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A1B \\1',
+  ),
+  95 => 
+  array (
+    'match' => 'E082 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A1C \\1',
+  ),
+  96 => 
+  array (
+    'match' => 'E083 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A1D \\1',
+  ),
+  97 => 
+  array (
+    'match' => 'E084 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A1E \\1',
+  ),
+  98 => 
+  array (
+    'match' => 'E085 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A1F \\1',
+  ),
+  99 => 
+  array (
+    'match' => 'E086 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A20 \\1',
+  ),
+  100 => 
+  array (
+    'match' => 'E087 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A21 \\1',
+  ),
+  101 => 
+  array (
+    'match' => 'E088 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A22 \\1',
+  ),
+  102 => 
+  array (
+    'match' => 'E089 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A23 \\1',
+  ),
+  103 => 
+  array (
+    'match' => 'E08A ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A24 \\1',
+  ),
+  104 => 
+  array (
+    'match' => 'E08B ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A25 \\1',
+  ),
+  105 => 
+  array (
+    'match' => 'E08C ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A26 \\1',
+  ),
+  106 => 
+  array (
+    'match' => 'E08D ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A27 \\1',
+  ),
+  107 => 
+  array (
+    'match' => 'E08E ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A28 \\1',
+  ),
+  108 => 
+  array (
+    'match' => 'E08F ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A2A \\1',
+  ),
+  109 => 
+  array (
+    'match' => 'E090 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A2B \\1',
+  ),
+  110 => 
+  array (
+    'match' => 'E091 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A2C \\1',
+  ),
+  111 => 
+  array (
+    'match' => 'E092 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A2D \\1',
+  ),
+  112 => 
+  array (
+    'match' => 'E093 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A2E \\1',
+  ),
+  113 => 
+  array (
+    'match' => 'E094 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A2F \\1',
+  ),
+  114 => 
+  array (
+    'match' => 'E095 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A30 \\1',
+  ),
+  115 => 
+  array (
+    'match' => 'E096 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A32 \\1',
+  ),
+  116 => 
+  array (
+    'match' => 'E097 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A35 \\1',
+  ),
+  117 => 
+  array (
+    'match' => 'E098 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A36 \\1',
+  ),
+  118 => 
+  array (
+    'match' => 'E099 ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A38 \\1',
+  ),
+  119 => 
+  array (
+    'match' => 'E09A ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A39 \\1',
+  ),
+  120 => 
+  array (
+    'match' => 'E09B ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A59 \\1',
+  ),
+  121 => 
+  array (
+    'match' => 'E09C ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A5A \\1',
+  ),
+  122 => 
+  array (
+    'match' => 'E09D ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A5B \\1',
+  ),
+  123 => 
+  array (
+    'match' => 'E09E ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A5C \\1',
+  ),
+  124 => 
+  array (
+    'match' => 'E09F ((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F))',
+    'replace' => '0A4D 0A5E \\1',
+  ),
+  125 => 
+  array (
+    'match' => '(0A3F (0A15|0A16|0A17|0A18|0A19|0A1A|0A1B|0A1C|0A1D|0A1E|0A1F|0A20|0A21|0A22|0A23|0A24|0A25|0A26|0A27|0A28|0A2A|0A2B|0A2C|0A2D|0A2E|0A2F|0A30|0A32|0A33|0A35|0A36|0A38|0A39|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|0A59|0A5A|0A5B|0A5C|0A5E)) 0A4D',
+    'replace' => '\\1 0A4D 0A3F',
+  ),
+  126 => 
+  array (
+    'match' => '0A3F 0A15 (0A4D 0A3F)',
+    'replace' => '0A15 \\1',
+  ),
+  127 => 
+  array (
+    'match' => '0A3F 0A16 (0A4D 0A3F)',
+    'replace' => '0A16 \\1',
+  ),
+  128 => 
+  array (
+    'match' => '0A3F 0A17 (0A4D 0A3F)',
+    'replace' => '0A17 \\1',
+  ),
+  129 => 
+  array (
+    'match' => '0A3F 0A18 (0A4D 0A3F)',
+    'replace' => '0A18 \\1',
+  ),
+  130 => 
+  array (
+    'match' => '0A3F 0A19 (0A4D 0A3F)',
+    'replace' => '0A19 \\1',
+  ),
+  131 => 
+  array (
+    'match' => '0A3F 0A1A (0A4D 0A3F)',
+    'replace' => '0A1A \\1',
+  ),
+  132 => 
+  array (
+    'match' => '0A3F 0A1B (0A4D 0A3F)',
+    'replace' => '0A1B \\1',
+  ),
+  133 => 
+  array (
+    'match' => '0A3F 0A1C (0A4D 0A3F)',
+    'replace' => '0A1C \\1',
+  ),
+  134 => 
+  array (
+    'match' => '0A3F 0A1D (0A4D 0A3F)',
+    'replace' => '0A1D \\1',
+  ),
+  135 => 
+  array (
+    'match' => '0A3F 0A1E (0A4D 0A3F)',
+    'replace' => '0A1E \\1',
+  ),
+  136 => 
+  array (
+    'match' => '0A3F 0A1F (0A4D 0A3F)',
+    'replace' => '0A1F \\1',
+  ),
+  137 => 
+  array (
+    'match' => '0A3F 0A20 (0A4D 0A3F)',
+    'replace' => '0A20 \\1',
+  ),
+  138 => 
+  array (
+    'match' => '0A3F 0A21 (0A4D 0A3F)',
+    'replace' => '0A21 \\1',
+  ),
+  139 => 
+  array (
+    'match' => '0A3F 0A22 (0A4D 0A3F)',
+    'replace' => '0A22 \\1',
+  ),
+  140 => 
+  array (
+    'match' => '0A3F 0A23 (0A4D 0A3F)',
+    'replace' => '0A23 \\1',
+  ),
+  141 => 
+  array (
+    'match' => '0A3F 0A24 (0A4D 0A3F)',
+    'replace' => '0A24 \\1',
+  ),
+  142 => 
+  array (
+    'match' => '0A3F 0A25 (0A4D 0A3F)',
+    'replace' => '0A25 \\1',
+  ),
+  143 => 
+  array (
+    'match' => '0A3F 0A26 (0A4D 0A3F)',
+    'replace' => '0A26 \\1',
+  ),
+  144 => 
+  array (
+    'match' => '0A3F 0A27 (0A4D 0A3F)',
+    'replace' => '0A27 \\1',
+  ),
+  145 => 
+  array (
+    'match' => '0A3F 0A28 (0A4D 0A3F)',
+    'replace' => '0A28 \\1',
+  ),
+  146 => 
+  array (
+    'match' => '0A3F 0A2A (0A4D 0A3F)',
+    'replace' => '0A2A \\1',
+  ),
+  147 => 
+  array (
+    'match' => '0A3F 0A2B (0A4D 0A3F)',
+    'replace' => '0A2B \\1',
+  ),
+  148 => 
+  array (
+    'match' => '0A3F 0A2C (0A4D 0A3F)',
+    'replace' => '0A2C \\1',
+  ),
+  149 => 
+  array (
+    'match' => '0A3F 0A2D (0A4D 0A3F)',
+    'replace' => '0A2D \\1',
+  ),
+  150 => 
+  array (
+    'match' => '0A3F 0A2E (0A4D 0A3F)',
+    'replace' => '0A2E \\1',
+  ),
+  151 => 
+  array (
+    'match' => '0A3F 0A2F (0A4D 0A3F)',
+    'replace' => '0A2F \\1',
+  ),
+  152 => 
+  array (
+    'match' => '0A3F 0A30 (0A4D 0A3F)',
+    'replace' => '0A30 \\1',
+  ),
+  153 => 
+  array (
+    'match' => '0A3F 0A32 (0A4D 0A3F)',
+    'replace' => '0A32 \\1',
+  ),
+  154 => 
+  array (
+    'match' => '0A3F 0A33 (0A4D 0A3F)',
+    'replace' => '0A33 \\1',
+  ),
+  155 => 
+  array (
+    'match' => '0A3F 0A35 (0A4D 0A3F)',
+    'replace' => '0A35 \\1',
+  ),
+  156 => 
+  array (
+    'match' => '0A3F 0A36 (0A4D 0A3F)',
+    'replace' => '0A36 \\1',
+  ),
+  157 => 
+  array (
+    'match' => '0A3F 0A38 (0A4D 0A3F)',
+    'replace' => '0A38 \\1',
+  ),
+  158 => 
+  array (
+    'match' => '0A3F 0A39 (0A4D 0A3F)',
+    'replace' => '0A39 \\1',
+  ),
+  159 => 
+  array (
+    'match' => '0A3F E034 (0A4D 0A3F)',
+    'replace' => 'E034 \\1',
+  ),
+  160 => 
+  array (
+    'match' => '0A3F E035 (0A4D 0A3F)',
+    'replace' => 'E035 \\1',
+  ),
+  161 => 
+  array (
+    'match' => '0A3F E036 (0A4D 0A3F)',
+    'replace' => 'E036 \\1',
+  ),
+  162 => 
+  array (
+    'match' => '0A3F E037 (0A4D 0A3F)',
+    'replace' => 'E037 \\1',
+  ),
+  163 => 
+  array (
+    'match' => '0A3F E038 (0A4D 0A3F)',
+    'replace' => 'E038 \\1',
+  ),
+  164 => 
+  array (
+    'match' => '0A3F E039 (0A4D 0A3F)',
+    'replace' => 'E039 \\1',
+  ),
+  165 => 
+  array (
+    'match' => '0A3F E03A (0A4D 0A3F)',
+    'replace' => 'E03A \\1',
+  ),
+  166 => 
+  array (
+    'match' => '0A3F E03B (0A4D 0A3F)',
+    'replace' => 'E03B \\1',
+  ),
+  167 => 
+  array (
+    'match' => '0A3F E03C (0A4D 0A3F)',
+    'replace' => 'E03C \\1',
+  ),
+  168 => 
+  array (
+    'match' => '0A3F E03D (0A4D 0A3F)',
+    'replace' => 'E03D \\1',
+  ),
+  169 => 
+  array (
+    'match' => '0A3F E03E (0A4D 0A3F)',
+    'replace' => 'E03E \\1',
+  ),
+  170 => 
+  array (
+    'match' => '0A3F E03F (0A4D 0A3F)',
+    'replace' => 'E03F \\1',
+  ),
+  171 => 
+  array (
+    'match' => '0A3F E040 (0A4D 0A3F)',
+    'replace' => 'E040 \\1',
+  ),
+  172 => 
+  array (
+    'match' => '0A3F E041 (0A4D 0A3F)',
+    'replace' => 'E041 \\1',
+  ),
+  173 => 
+  array (
+    'match' => '0A3F E042 (0A4D 0A3F)',
+    'replace' => 'E042 \\1',
+  ),
+  174 => 
+  array (
+    'match' => '0A3F E043 (0A4D 0A3F)',
+    'replace' => 'E043 \\1',
+  ),
+  175 => 
+  array (
+    'match' => '0A3F E044 (0A4D 0A3F)',
+    'replace' => 'E044 \\1',
+  ),
+  176 => 
+  array (
+    'match' => '0A3F E045 (0A4D 0A3F)',
+    'replace' => 'E045 \\1',
+  ),
+  177 => 
+  array (
+    'match' => '0A3F E046 (0A4D 0A3F)',
+    'replace' => 'E046 \\1',
+  ),
+  178 => 
+  array (
+    'match' => '0A3F E047 (0A4D 0A3F)',
+    'replace' => 'E047 \\1',
+  ),
+  179 => 
+  array (
+    'match' => '0A3F E048 (0A4D 0A3F)',
+    'replace' => 'E048 \\1',
+  ),
+  180 => 
+  array (
+    'match' => '0A3F E049 (0A4D 0A3F)',
+    'replace' => 'E049 \\1',
+  ),
+  181 => 
+  array (
+    'match' => '0A3F E04A (0A4D 0A3F)',
+    'replace' => 'E04A \\1',
+  ),
+  182 => 
+  array (
+    'match' => '0A3F E04B (0A4D 0A3F)',
+    'replace' => 'E04B \\1',
+  ),
+  183 => 
+  array (
+    'match' => '0A3F E04C (0A4D 0A3F)',
+    'replace' => 'E04C \\1',
+  ),
+  184 => 
+  array (
+    'match' => '0A3F E04D (0A4D 0A3F)',
+    'replace' => 'E04D \\1',
+  ),
+  185 => 
+  array (
+    'match' => '0A3F E04E (0A4D 0A3F)',
+    'replace' => 'E04E \\1',
+  ),
+  186 => 
+  array (
+    'match' => '0A3F E04F (0A4D 0A3F)',
+    'replace' => 'E04F \\1',
+  ),
+  187 => 
+  array (
+    'match' => '0A3F E050 (0A4D 0A3F)',
+    'replace' => 'E050 \\1',
+  ),
+  188 => 
+  array (
+    'match' => '0A3F E051 (0A4D 0A3F)',
+    'replace' => 'E051 \\1',
+  ),
+  189 => 
+  array (
+    'match' => '0A3F E052 (0A4D 0A3F)',
+    'replace' => 'E052 \\1',
+  ),
+  190 => 
+  array (
+    'match' => '0A3F E053 (0A4D 0A3F)',
+    'replace' => 'E053 \\1',
+  ),
+  191 => 
+  array (
+    'match' => '0A3F E054 (0A4D 0A3F)',
+    'replace' => 'E054 \\1',
+  ),
+  192 => 
+  array (
+    'match' => '0A3F 0A59 (0A4D 0A3F)',
+    'replace' => '0A59 \\1',
+  ),
+  193 => 
+  array (
+    'match' => '0A3F 0A5A (0A4D 0A3F)',
+    'replace' => '0A5A \\1',
+  ),
+  194 => 
+  array (
+    'match' => '0A3F 0A5B (0A4D 0A3F)',
+    'replace' => '0A5B \\1',
+  ),
+  195 => 
+  array (
+    'match' => '0A3F 0A5C (0A4D 0A3F)',
+    'replace' => '0A5C \\1',
+  ),
+  196 => 
+  array (
+    'match' => '0A3F 0A5E (0A4D 0A3F)',
+    'replace' => '0A5E \\1',
+  ),
+  197 => 
+  array (
+    'match' => 'E055',
+    'replace' => '0A4D',
+  ),
+  198 => 
+  array (
+    'match' => 'E056',
+    'replace' => '0A4D',
+  ),
+  199 => 
+  array (
+    'match' => 'E057',
+    'replace' => '0A4D',
+  ),
+  200 => 
+  array (
+    'match' => '0A15 0A4D',
+    'replace' => 'E004',
+  ),
+  201 => 
+  array (
+    'match' => '0A16 0A4D',
+    'replace' => 'E005',
+  ),
+  202 => 
+  array (
+    'match' => '0A17 0A4D',
+    'replace' => 'E006',
+  ),
+  203 => 
+  array (
+    'match' => '0A18 0A4D',
+    'replace' => 'E007',
+  ),
+  204 => 
+  array (
+    'match' => '0A19 0A4D',
+    'replace' => 'E008',
+  ),
+  205 => 
+  array (
+    'match' => '0A1A 0A4D',
+    'replace' => 'E009',
+  ),
+  206 => 
+  array (
+    'match' => '0A1B 0A4D',
+    'replace' => 'E00A',
+  ),
+  207 => 
+  array (
+    'match' => '0A1C 0A4D',
+    'replace' => 'E00B',
+  ),
+  208 => 
+  array (
+    'match' => '0A1D 0A4D',
+    'replace' => 'E00C',
+  ),
+  209 => 
+  array (
+    'match' => '0A1E 0A4D',
+    'replace' => 'E00D',
+  ),
+  210 => 
+  array (
+    'match' => '0A1F 0A4D',
+    'replace' => 'E00E',
+  ),
+  211 => 
+  array (
+    'match' => '0A20 0A4D',
+    'replace' => 'E00F',
+  ),
+  212 => 
+  array (
+    'match' => '0A21 0A4D',
+    'replace' => 'E010',
+  ),
+  213 => 
+  array (
+    'match' => '0A22 0A4D',
+    'replace' => 'E011',
+  ),
+  214 => 
+  array (
+    'match' => '0A23 0A4D',
+    'replace' => 'E012',
+  ),
+  215 => 
+  array (
+    'match' => '0A24 0A4D',
+    'replace' => 'E013',
+  ),
+  216 => 
+  array (
+    'match' => '0A25 0A4D',
+    'replace' => 'E014',
+  ),
+  217 => 
+  array (
+    'match' => '0A26 0A4D',
+    'replace' => 'E015',
+  ),
+  218 => 
+  array (
+    'match' => '0A27 0A4D',
+    'replace' => 'E016',
+  ),
+  219 => 
+  array (
+    'match' => '0A28 0A4D',
+    'replace' => 'E017',
+  ),
+  220 => 
+  array (
+    'match' => '0A2A 0A4D',
+    'replace' => 'E018',
+  ),
+  221 => 
+  array (
+    'match' => '0A2B 0A4D',
+    'replace' => 'E019',
+  ),
+  222 => 
+  array (
+    'match' => '0A2C 0A4D',
+    'replace' => 'E01A',
+  ),
+  223 => 
+  array (
+    'match' => '0A2D 0A4D',
+    'replace' => 'E01B',
+  ),
+  224 => 
+  array (
+    'match' => '0A2E 0A4D',
+    'replace' => 'E01C',
+  ),
+  225 => 
+  array (
+    'match' => '0A2F 0A4D',
+    'replace' => 'E01D',
+  ),
+  226 => 
+  array (
+    'match' => '0A30 0A4D',
+    'replace' => 'E01E',
+  ),
+  227 => 
+  array (
+    'match' => '0A32 0A4D',
+    'replace' => 'E01F',
+  ),
+  228 => 
+  array (
+    'match' => '0A33 0A4D',
+    'replace' => 'E020',
+  ),
+  229 => 
+  array (
+    'match' => '0A35 0A4D',
+    'replace' => 'E021',
+  ),
+  230 => 
+  array (
+    'match' => '0A36 0A4D',
+    'replace' => 'E022',
+  ),
+  231 => 
+  array (
+    'match' => '0A38 0A4D',
+    'replace' => 'E023',
+  ),
+  232 => 
+  array (
+    'match' => '0A39 0A4D',
+    'replace' => 'E024',
+  ),
+  233 => 
+  array (
+    'match' => '0A59 0A4D',
+    'replace' => 'E025',
+  ),
+  234 => 
+  array (
+    'match' => '0A5A 0A4D',
+    'replace' => 'E026',
+  ),
+  235 => 
+  array (
+    'match' => '0A5B 0A4D',
+    'replace' => 'E027',
+  ),
+  236 => 
+  array (
+    'match' => '0A5C 0A4D',
+    'replace' => 'E028',
+  ),
+  237 => 
+  array (
+    'match' => '0A5E 0A4D',
+    'replace' => 'E029',
+  ),
+  238 => 
+  array (
+    'match' => '((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0BB)) 0A41',
+    'replace' => '\\1 E002',
+  ),
+  239 => 
+  array (
+    'match' => '((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0BB)) 0A42',
+    'replace' => '\\1 E003',
+  ),
+  240 => 
+  array (
+    'match' => '0A2F 0A4D',
+    'replace' => 'E0A0',
+  ),
+  241 => 
+  array (
+    'match' => '0A09 0A02',
+    'replace' => 'E0A1',
+  ),
+  242 => 
+  array (
+    'match' => '0A09 0A70',
+    'replace' => 'E0A1',
+  ),
+  243 => 
+  array (
+    'match' => '0A0A 0A02',
+    'replace' => 'E0A2',
+  ),
+  244 => 
+  array (
+    'match' => '0A0A 0A70',
+    'replace' => 'E0A2',
+  ),
+  245 => 
+  array (
+    'match' => '0A13 0A02',
+    'replace' => 'E0A3',
+  ),
+  246 => 
+  array (
+    'match' => '0A13 0A70',
+    'replace' => 'E0A3',
+  ),
+  247 => 
+  array (
+    'match' => '0A05 0A02',
+    'replace' => 'E0B4',
+  ),
+  248 => 
+  array (
+    'match' => '0A05 0A70',
+    'replace' => 'E0B4',
+  ),
+  249 => 
+  array (
+    'match' => '0A06 0A02',
+    'replace' => 'E0B5',
+  ),
+  250 => 
+  array (
+    'match' => '0A06 0A70',
+    'replace' => 'E0B5',
+  ),
+  251 => 
+  array (
+    'match' => '0A07 0A02',
+    'replace' => 'E0B6',
+  ),
+  252 => 
+  array (
+    'match' => '0A07 0A70',
+    'replace' => 'E0B6',
+  ),
+  253 => 
+  array (
+    'match' => '0A08 0A02',
+    'replace' => 'E0B7',
+  ),
+  254 => 
+  array (
+    'match' => '0A08 0A70',
+    'replace' => 'E0B7',
+  ),
+  255 => 
+  array (
+    'match' => '0A0F 0A02',
+    'replace' => 'E0B8',
+  ),
+  256 => 
+  array (
+    'match' => '0A0F 0A70',
+    'replace' => 'E0B8',
+  ),
+  257 => 
+  array (
+    'match' => '0A10 0A02',
+    'replace' => 'E0B9',
+  ),
+  258 => 
+  array (
+    'match' => '0A10 0A70',
+    'replace' => 'E0B9',
+  ),
+  259 => 
+  array (
+    'match' => '0A14 0A02',
+    'replace' => 'E0BA',
+  ),
+  260 => 
+  array (
+    'match' => '0A14 0A70',
+    'replace' => 'E0BA',
+  ),
+  261 => 
+  array (
+    'match' => '((0A15|0A16|0A17|0A18|0A19|0A1A|0A1B|0A1C|0A1D|0A1E|0A1F|0A20|0A21|0A22|0A23|0A24|0A25|0A26|0A27|0A28|0A2A|0A2B|0A2C|0A2D|0A2E|0A2F|0A30|0A32|0A33|0A35|0A36|0A38|0A39|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E|E04F|E050|E051|E052|E053|E054|0A59|0A5A|0A5B|0A5C|0A5E)) 0A02',
+    'replace' => '\\1 0A70',
+  ),
+  262 => 
+  array (
+    'match' => '((E004|E005|E006|E007|E008|E009|E00A|E00B|E00C|E00D|E00E|E00F|E010|E011|E012|E013|E014|E015|E016|E017|E018|E019|E01A|E01B|E01C|E01D|E01E|E01F|E020|E021|E022|E023|E024|E025|E026|E027|E028|E029|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071|E072|E073|E074|E075|E076|E077|E078|E079|E07A|E02A|E02C)) 0A02',
+    'replace' => '\\1 0A70',
+  ),
+  263 => 
+  array (
+    'match' => '((E07B|E07C|E07D|E07E|E07F|E080|E081|E082|E083|E084|E085|E086|E087|E088|E089|E08A|E08B|E08C|E08D|E08E|E08F|E090|E091|E092|E093|E094|E095|E096|E097|E098|E099|E09A|E09B|E09C|E09D|E09E|E09F|E0BB)) 0A02',
+    'replace' => '\\1 0A70',
+  ),
+  264 => 
+  array (
+    'match' => '(0A41) 0A02',
+    'replace' => '\\1 0A70',
+  ),
+  265 => 
+  array (
+    'match' => '(0A42) 0A02',
+    'replace' => '\\1 0A70',
+  ),
+  266 => 
+  array (
+    'match' => '(E002) 0A02',
+    'replace' => '\\1 0A70',
+  ),
+  267 => 
+  array (
+    'match' => '(E003) 0A02',
+    'replace' => '\\1 0A70',
+  ),
+  268 => 
+  array (
+    'match' => '0A3E 0A02',
+    'replace' => 'E0A8',
+  ),
+  269 => 
+  array (
+    'match' => '0A3E 0A70',
+    'replace' => 'E0A8',
+  ),
+  270 => 
+  array (
+    'match' => '0A40 0A02',
+    'replace' => 'E0A9',
+  ),
+  271 => 
+  array (
+    'match' => '0A40 0A70',
+    'replace' => 'E0A9',
+  ),
+  272 => 
+  array (
+    'match' => '0A47 0A02',
+    'replace' => 'E0AA',
+  ),
+  273 => 
+  array (
+    'match' => '0A47 0A70',
+    'replace' => 'E0AA',
+  ),
+  274 => 
+  array (
+    'match' => '0A48 0A02',
+    'replace' => 'E0AB',
+  ),
+  275 => 
+  array (
+    'match' => '0A48 0A70',
+    'replace' => 'E0AB',
+  ),
+  276 => 
+  array (
+    'match' => '0A4B 0A02',
+    'replace' => 'E0AC',
+  ),
+  277 => 
+  array (
+    'match' => '0A4B 0A70',
+    'replace' => 'E0AC',
+  ),
+  278 => 
+  array (
+    'match' => '0A4C 0A02',
+    'replace' => 'E0AD',
+  ),
+  279 => 
+  array (
+    'match' => '0A4C 0A70',
+    'replace' => 'E0AD',
+  ),
+  280 => 
+  array (
+    'match' => '0A3E 0A01',
+    'replace' => 'E0AE',
+  ),
+  281 => 
+  array (
+    'match' => '0A40 0A01',
+    'replace' => 'E0AF',
+  ),
+  282 => 
+  array (
+    'match' => '0A47 0A01',
+    'replace' => 'E0B0',
+  ),
+  283 => 
+  array (
+    'match' => '0A48 0A01',
+    'replace' => 'E0B1',
+  ),
+  284 => 
+  array (
+    'match' => '0A4B 0A01',
+    'replace' => 'E0B2',
+  ),
+  285 => 
+  array (
+    'match' => '0A4C 0A01',
+    'replace' => 'E0B3',
+  ),
+  286 => 
+  array (
+    'match' => '((0A08|0A0F|0A10|0A13|0A14|E0B6|E0B7|E0B8|E0B9|E0BA)) 0A01',
+    'replace' => '\\1 E0A5',
+  ),
+  287 => 
+  array (
+    'match' => '((E0A8|E0A9|E0AA|E0AB|E0AC|E0AD)) 0A01',
+    'replace' => '\\1 E0A5',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_ta_1_001.volt.php
new file mode 100644 (file)
index 0000000..9f53413
--- /dev/null
@@ -0,0 +1,394 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0BCD 200D',
+    'replace' => '014B',
+  ),
+  1 => 
+  array (
+    'match' => '0BCD 200C',
+    'replace' => 'E002',
+  ),
+  2 => 
+  array (
+    'match' => '200D 0BCD',
+    'replace' => '014A',
+  ),
+  3 => 
+  array (
+    'match' => '0B95 0BCD 0BB7',
+    'replace' => 'E005',
+  ),
+  4 => 
+  array (
+    'match' => '0BB8 0BCD 0BB0 0BC0',
+    'replace' => 'E04B',
+  ),
+  5 => 
+  array (
+    'match' => '0B93 0BAE 0BCD',
+    'replace' => 'E04C',
+  ),
+  6 => 
+  array (
+    'match' => '(0BB8) 0BC1',
+    'replace' => '\\1 E00C',
+  ),
+  7 => 
+  array (
+    'match' => '(0BB8) 0BC2',
+    'replace' => '\\1 E00D',
+  ),
+  8 => 
+  array (
+    'match' => '0B95 0BC2',
+    'replace' => 'E00F',
+  ),
+  9 => 
+  array (
+    'match' => '0B9C 0BC1',
+    'replace' => 'E014',
+  ),
+  10 => 
+  array (
+    'match' => '0B9C 0BC2',
+    'replace' => 'E015',
+  ),
+  11 => 
+  array (
+    'match' => '0B9F 0BBF',
+    'replace' => 'E018',
+  ),
+  12 => 
+  array (
+    'match' => '0BB2 0BBF',
+    'replace' => 'E033',
+  ),
+  13 => 
+  array (
+    'match' => '0BB7 0BBF',
+    'replace' => 'E03F',
+  ),
+  14 => 
+  array (
+    'match' => '0BB7 0BC1',
+    'replace' => 'E041',
+  ),
+  15 => 
+  array (
+    'match' => '0BB7 0BC2',
+    'replace' => 'E042',
+  ),
+  16 => 
+  array (
+    'match' => '0BB8 0BBF',
+    'replace' => 'E043',
+  ),
+  17 => 
+  array (
+    'match' => '0BB9 0BC1',
+    'replace' => 'E045',
+  ),
+  18 => 
+  array (
+    'match' => '0BB9 0BC2',
+    'replace' => 'E046',
+  ),
+  19 => 
+  array (
+    'match' => 'E005 0BBF',
+    'replace' => 'E047',
+  ),
+  20 => 
+  array (
+    'match' => 'E005 0BC1',
+    'replace' => 'E049',
+  ),
+  21 => 
+  array (
+    'match' => 'E005 0BC2',
+    'replace' => 'E04A',
+  ),
+  22 => 
+  array (
+    'match' => '((0BAA|0BAF|0B99|0BB5)) 0BC0',
+    'replace' => '\\1 E00B',
+  ),
+  23 => 
+  array (
+    'match' => '((0BAE|0B9A|0BB9|0B9C|0BB4|0BB1)) 0BBF',
+    'replace' => '\\1 E006',
+  ),
+  24 => 
+  array (
+    'match' => '((0BB0|0BB3|0BA3|0BA9)) 0BBF',
+    'replace' => '\\1 E007',
+  ),
+  25 => 
+  array (
+    'match' => '((0B95|0BA4)) 0BBF',
+    'replace' => '\\1 E008',
+  ),
+  26 => 
+  array (
+    'match' => '((0BAA|0BAF|0B99|0BB5)) 0BBF',
+    'replace' => '\\1 E009',
+  ),
+  27 => 
+  array (
+    'match' => '((0BA8|0B9E)) 0BBF',
+    'replace' => '\\1 E00A',
+  ),
+  28 => 
+  array (
+    'match' => '0BA3 200C 0BC8',
+    'replace' => 'E01F',
+  ),
+  29 => 
+  array (
+    'match' => '0BA9 200C 0BC8',
+    'replace' => 'E027',
+  ),
+  30 => 
+  array (
+    'match' => '0BB2 200C 0BC8',
+    'replace' => 'E037',
+  ),
+  31 => 
+  array (
+    'match' => '0BB3 200C 0BC8',
+    'replace' => 'E03A',
+  ),
+  32 => 
+  array (
+    'match' => '0B9F 0BC0',
+    'replace' => 'E019',
+  ),
+  33 => 
+  array (
+    'match' => '0BB2 0BC0',
+    'replace' => 'E034',
+  ),
+  34 => 
+  array (
+    'match' => '0BB7 0BC0',
+    'replace' => 'E040',
+  ),
+  35 => 
+  array (
+    'match' => '0BB8 0BC0',
+    'replace' => 'E044',
+  ),
+  36 => 
+  array (
+    'match' => 'E005 0BC0',
+    'replace' => 'E048',
+  ),
+  37 => 
+  array (
+    'match' => '0B95 0BC1',
+    'replace' => 'E00E',
+  ),
+  38 => 
+  array (
+    'match' => '0B99 0BC1',
+    'replace' => 'E010',
+  ),
+  39 => 
+  array (
+    'match' => '0B99 0BC2',
+    'replace' => 'E011',
+  ),
+  40 => 
+  array (
+    'match' => '0B9A 0BC1',
+    'replace' => 'E012',
+  ),
+  41 => 
+  array (
+    'match' => '0B9A 0BC2',
+    'replace' => 'E013',
+  ),
+  42 => 
+  array (
+    'match' => '0B9E 0BC1',
+    'replace' => 'E016',
+  ),
+  43 => 
+  array (
+    'match' => '0B9E 0BC2',
+    'replace' => 'E017',
+  ),
+  44 => 
+  array (
+    'match' => '0B9F 0BC1',
+    'replace' => 'E01A',
+  ),
+  45 => 
+  array (
+    'match' => '0B9F 0BC2',
+    'replace' => 'E01B',
+  ),
+  46 => 
+  array (
+    'match' => '0BA3 200C 0BBE',
+    'replace' => 'E01C',
+  ),
+  47 => 
+  array (
+    'match' => '0BA3 0BC1',
+    'replace' => 'E01D',
+  ),
+  48 => 
+  array (
+    'match' => '0BA3 0BC2',
+    'replace' => 'E01E',
+  ),
+  49 => 
+  array (
+    'match' => '0BA4 0BC1',
+    'replace' => 'E020',
+  ),
+  50 => 
+  array (
+    'match' => '0BA4 0BC2',
+    'replace' => 'E021',
+  ),
+  51 => 
+  array (
+    'match' => '0BA8 0BC1',
+    'replace' => 'E022',
+  ),
+  52 => 
+  array (
+    'match' => '0BA8 0BC2',
+    'replace' => 'E023',
+  ),
+  53 => 
+  array (
+    'match' => '0BA9 200C 0BBE',
+    'replace' => 'E024',
+  ),
+  54 => 
+  array (
+    'match' => '0BA9 0BC1',
+    'replace' => 'E025',
+  ),
+  55 => 
+  array (
+    'match' => '0BA9 0BC2',
+    'replace' => 'E026',
+  ),
+  56 => 
+  array (
+    'match' => '0BAA 0BC1',
+    'replace' => 'E028',
+  ),
+  57 => 
+  array (
+    'match' => '0BAA 0BC2',
+    'replace' => 'E029',
+  ),
+  58 => 
+  array (
+    'match' => '0BAE 0BC1',
+    'replace' => 'E02A',
+  ),
+  59 => 
+  array (
+    'match' => '0BAE 0BC2',
+    'replace' => 'E02B',
+  ),
+  60 => 
+  array (
+    'match' => '0BAF 0BC1',
+    'replace' => 'E02C',
+  ),
+  61 => 
+  array (
+    'match' => '0BAF 0BC2',
+    'replace' => 'E02D',
+  ),
+  62 => 
+  array (
+    'match' => '0BB0 0BC1',
+    'replace' => 'E02E',
+  ),
+  63 => 
+  array (
+    'match' => '0BB0 0BC2',
+    'replace' => 'E02F',
+  ),
+  64 => 
+  array (
+    'match' => '0BB1 200C 0BBE',
+    'replace' => 'E030',
+  ),
+  65 => 
+  array (
+    'match' => '0BB1 0BC1',
+    'replace' => 'E031',
+  ),
+  66 => 
+  array (
+    'match' => '0BB1 0BC2',
+    'replace' => 'E032',
+  ),
+  67 => 
+  array (
+    'match' => '0BB2 0BC1',
+    'replace' => 'E035',
+  ),
+  68 => 
+  array (
+    'match' => '0BB2 0BC2',
+    'replace' => 'E036',
+  ),
+  69 => 
+  array (
+    'match' => '0BB3 0BC1',
+    'replace' => 'E038',
+  ),
+  70 => 
+  array (
+    'match' => '0BB3 0BC2',
+    'replace' => 'E039',
+  ),
+  71 => 
+  array (
+    'match' => '0BB4 0BC1',
+    'replace' => 'E03B',
+  ),
+  72 => 
+  array (
+    'match' => '0BB4 0BC2',
+    'replace' => 'E03C',
+  ),
+  73 => 
+  array (
+    'match' => '0BB5 0BC1',
+    'replace' => 'E03D',
+  ),
+  74 => 
+  array (
+    'match' => '0BB5 0BC2',
+    'replace' => 'E03E',
+  ),
+  75 => 
+  array (
+    'match' => '014B',
+    'replace' => '0BCD',
+  ),
+  76 => 
+  array (
+    'match' => 'E002',
+    'replace' => '0BCD',
+  ),
+  77 => 
+  array (
+    'match' => '014A',
+    'replace' => '0BCD',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php b/inc/3rdparty/libraries/mpdf/includes/ind_te_1_001.volt.php
new file mode 100644 (file)
index 0000000..1cf96cc
--- /dev/null
@@ -0,0 +1,1489 @@
+<?php
+       $volt = array (
+  0 => 
+  array (
+    'match' => '0C4D 0C30 ((0C15|0C16|0C17|0C18|0C19|0C1A|0C1B|0C1C|0C1D|0C1E|0C1F|0C20|0C21|0C22|0C23|0C24|0C25|0C26|0C27|0C28|0C2A|0C2B|0C2C|0C2D|0C2E|0C2F|0C30|0C31|0C32|0C33|0C35|0C36|0C37|0C38|0C39))',
+    'replace' => 'E046 \\1',
+  ),
+  1 => 
+  array (
+    'match' => '0C4D 200D',
+    'replace' => '00C9',
+  ),
+  2 => 
+  array (
+    'match' => '0C4D 200C',
+    'replace' => '00D0',
+  ),
+  3 => 
+  array (
+    'match' => '200D 0C4D',
+    'replace' => '00D1',
+  ),
+  4 => 
+  array (
+    'match' => '((0C15|0C16|0C17|0C18|0C19|0C1A|0C1B|0C1C|0C1D|0C1E|0C1F|0C20|0C21|0C22|0C23|0C24|0C25|0C26|0C27|0C28|0C2A|0C2B|0C2C|0C2D|0C2E|0C2F|0C30|0C31|0C32|0C33|0C35|0C36|0C37|0C38|0C39)) 0C4D',
+    'replace' => '\\1 00D1',
+  ),
+  5 => 
+  array (
+    'match' => '((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C)) 0C4D',
+    'replace' => '\\1 00D1',
+  ),
+  6 => 
+  array (
+    'match' => '((0C41|0C42|0C43|0C44)) 0C4D',
+    'replace' => '\\1 00D1',
+  ),
+  7 => 
+  array (
+    'match' => '(0020) 0C4D',
+    'replace' => '\\1 00D1',
+  ),
+  8 => 
+  array (
+    'match' => '(25CC) 0C4D',
+    'replace' => '\\1 00D1',
+  ),
+  9 => 
+  array (
+    'match' => '0C15 00D1 0C37',
+    'replace' => 'E078',
+  ),
+  10 => 
+  array (
+    'match' => '0C36 00D1 0C1C',
+    'replace' => 'E079',
+  ),
+  11 => 
+  array (
+    'match' => '00D1 0C15',
+    'replace' => 'E02C',
+  ),
+  12 => 
+  array (
+    'match' => '00D1 0C16',
+    'replace' => 'E02D',
+  ),
+  13 => 
+  array (
+    'match' => '00D1 0C17',
+    'replace' => 'E02E',
+  ),
+  14 => 
+  array (
+    'match' => '00D1 0C18',
+    'replace' => 'E02F',
+  ),
+  15 => 
+  array (
+    'match' => '00D1 0C19',
+    'replace' => 'E030',
+  ),
+  16 => 
+  array (
+    'match' => '00D1 0C1A',
+    'replace' => 'E031',
+  ),
+  17 => 
+  array (
+    'match' => '00D1 0C1B',
+    'replace' => 'E032',
+  ),
+  18 => 
+  array (
+    'match' => '00D1 0C1C',
+    'replace' => 'E033',
+  ),
+  19 => 
+  array (
+    'match' => '00D1 0C1D',
+    'replace' => 'E034',
+  ),
+  20 => 
+  array (
+    'match' => '00D1 0C1E',
+    'replace' => 'E035',
+  ),
+  21 => 
+  array (
+    'match' => '00D1 0C1F',
+    'replace' => 'E036',
+  ),
+  22 => 
+  array (
+    'match' => '00D1 0C20',
+    'replace' => 'E037',
+  ),
+  23 => 
+  array (
+    'match' => '00D1 0C21',
+    'replace' => 'E038',
+  ),
+  24 => 
+  array (
+    'match' => '00D1 0C22',
+    'replace' => 'E039',
+  ),
+  25 => 
+  array (
+    'match' => '00D1 0C23',
+    'replace' => 'E03A',
+  ),
+  26 => 
+  array (
+    'match' => '00D1 0C24',
+    'replace' => 'E03B',
+  ),
+  27 => 
+  array (
+    'match' => '00D1 0C25',
+    'replace' => 'E03C',
+  ),
+  28 => 
+  array (
+    'match' => '00D1 0C26',
+    'replace' => 'E03D',
+  ),
+  29 => 
+  array (
+    'match' => '00D1 0C27',
+    'replace' => 'E03E',
+  ),
+  30 => 
+  array (
+    'match' => '00D1 0C28',
+    'replace' => 'E03F',
+  ),
+  31 => 
+  array (
+    'match' => '00D1 0C2A',
+    'replace' => 'E040',
+  ),
+  32 => 
+  array (
+    'match' => '00D1 0C2B',
+    'replace' => 'E041',
+  ),
+  33 => 
+  array (
+    'match' => '00D1 0C2C',
+    'replace' => 'E042',
+  ),
+  34 => 
+  array (
+    'match' => '00D1 0C2D',
+    'replace' => 'E043',
+  ),
+  35 => 
+  array (
+    'match' => '00D1 0C2E',
+    'replace' => 'E044',
+  ),
+  36 => 
+  array (
+    'match' => '00D1 0C2F',
+    'replace' => 'E045',
+  ),
+  37 => 
+  array (
+    'match' => '00D1 0C30',
+    'replace' => 'E046',
+  ),
+  38 => 
+  array (
+    'match' => '00D1 0C31',
+    'replace' => 'E047',
+  ),
+  39 => 
+  array (
+    'match' => '00D1 0C32',
+    'replace' => 'E048',
+  ),
+  40 => 
+  array (
+    'match' => '00D1 0C33',
+    'replace' => 'E049',
+  ),
+  41 => 
+  array (
+    'match' => '00D1 0C35',
+    'replace' => 'E04A',
+  ),
+  42 => 
+  array (
+    'match' => '00D1 0C36',
+    'replace' => 'E04B',
+  ),
+  43 => 
+  array (
+    'match' => '00D1 0C37',
+    'replace' => 'E04C',
+  ),
+  44 => 
+  array (
+    'match' => '00D1 0C38',
+    'replace' => 'E04D',
+  ),
+  45 => 
+  array (
+    'match' => '00D1 0C39',
+    'replace' => 'E04E',
+  ),
+  46 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02C',
+    'replace' => '\\1 E04F',
+  ),
+  47 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02D',
+    'replace' => '\\1 E050',
+  ),
+  48 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02E',
+    'replace' => '\\1 E051',
+  ),
+  49 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E02F',
+    'replace' => '\\1 E052',
+  ),
+  50 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E030',
+    'replace' => '\\1 E053',
+  ),
+  51 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E031',
+    'replace' => '\\1 E054',
+  ),
+  52 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E032',
+    'replace' => '\\1 E055',
+  ),
+  53 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E033',
+    'replace' => '\\1 E056',
+  ),
+  54 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E034',
+    'replace' => '\\1 E057',
+  ),
+  55 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E035',
+    'replace' => '\\1 E058',
+  ),
+  56 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E036',
+    'replace' => '\\1 E059',
+  ),
+  57 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E037',
+    'replace' => '\\1 E05A',
+  ),
+  58 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E038',
+    'replace' => '\\1 E05B',
+  ),
+  59 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E039',
+    'replace' => '\\1 E05C',
+  ),
+  60 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03A',
+    'replace' => '\\1 E05D',
+  ),
+  61 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03B',
+    'replace' => '\\1 E05E',
+  ),
+  62 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03C',
+    'replace' => '\\1 E05F',
+  ),
+  63 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03D',
+    'replace' => '\\1 E060',
+  ),
+  64 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03E',
+    'replace' => '\\1 E061',
+  ),
+  65 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E03F',
+    'replace' => '\\1 E062',
+  ),
+  66 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E040',
+    'replace' => '\\1 E063',
+  ),
+  67 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E041',
+    'replace' => '\\1 E064',
+  ),
+  68 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E042',
+    'replace' => '\\1 E065',
+  ),
+  69 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E043',
+    'replace' => '\\1 E066',
+  ),
+  70 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E044',
+    'replace' => '\\1 E067',
+  ),
+  71 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E045',
+    'replace' => '\\1 E068',
+  ),
+  72 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E046',
+    'replace' => '\\1 E069',
+  ),
+  73 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E047',
+    'replace' => '\\1 E06A',
+  ),
+  74 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E048',
+    'replace' => '\\1 E06B',
+  ),
+  75 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E049',
+    'replace' => '\\1 E06C',
+  ),
+  76 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04A',
+    'replace' => '\\1 E06D',
+  ),
+  77 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04B',
+    'replace' => '\\1 E06E',
+  ),
+  78 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04C',
+    'replace' => '\\1 E06F',
+  ),
+  79 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04D',
+    'replace' => '\\1 E070',
+  ),
+  80 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) E04E',
+    'replace' => '\\1 E071',
+  ),
+  81 => 
+  array (
+    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E02C',
+    'replace' => '\\1 E072',
+  ),
+  82 => 
+  array (
+    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E03F',
+    'replace' => '\\1 E073',
+  ),
+  83 => 
+  array (
+    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E044',
+    'replace' => '\\1 E074',
+  ),
+  84 => 
+  array (
+    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E045',
+    'replace' => '\\1 E075',
+  ),
+  85 => 
+  array (
+    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E04A',
+    'replace' => '\\1 E076',
+  ),
+  86 => 
+  array (
+    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) E046',
+    'replace' => '\\1 E077',
+  ),
+  87 => 
+  array (
+    'match' => '00C9',
+    'replace' => '0C4D',
+  ),
+  88 => 
+  array (
+    'match' => '00D0',
+    'replace' => '0C4D',
+  ),
+  89 => 
+  array (
+    'match' => '00D1',
+    'replace' => '0C4D',
+  ),
+  90 => 
+  array (
+    'match' => '0C2A ((0C3E|0C4A|0C4B|0C4C))',
+    'replace' => 'E028 \\1',
+  ),
+  91 => 
+  array (
+    'match' => '0C2B ((0C3E|0C4A|0C4B|0C4C))',
+    'replace' => 'E029 \\1',
+  ),
+  92 => 
+  array (
+    'match' => '0C37 ((0C3E|0C4A|0C4B|0C4C))',
+    'replace' => 'E02A \\1',
+  ),
+  93 => 
+  array (
+    'match' => '0C38 ((0C3E|0C4A|0C4B|0C4C))',
+    'replace' => 'E02B \\1',
+  ),
+  94 => 
+  array (
+    'match' => 'E07B ((0C3E|0C4A|0C4B|0C4C))',
+    'replace' => 'E0B2 \\1',
+  ),
+  95 => 
+  array (
+    'match' => '((E028|E029|E02A|E02B)) 0C4A',
+    'replace' => '\\1 E009',
+  ),
+  96 => 
+  array (
+    'match' => '((E028|E029|E02A|E02B)) 0C4B',
+    'replace' => '\\1 E00A',
+  ),
+  97 => 
+  array (
+    'match' => '((E028|E029|E02A|E02B)) 0C4C',
+    'replace' => '\\1 E00B',
+  ),
+  98 => 
+  array (
+    'match' => '0C15 0C41',
+    'replace' => 'E07F',
+  ),
+  99 => 
+  array (
+    'match' => '0C15 0C42',
+    'replace' => 'E080',
+  ),
+  100 => 
+  array (
+    'match' => '0C16 0C3F',
+    'replace' => 'E081',
+  ),
+  101 => 
+  array (
+    'match' => '0C16 0C40',
+    'replace' => 'E082',
+  ),
+  102 => 
+  array (
+    'match' => '0C18 0C4A',
+    'replace' => 'E083',
+  ),
+  103 => 
+  array (
+    'match' => '0C18 0C4B',
+    'replace' => 'E084',
+  ),
+  104 => 
+  array (
+    'match' => '0C19 0C41',
+    'replace' => 'E085',
+  ),
+  105 => 
+  array (
+    'match' => '0C19 0C42',
+    'replace' => 'E086',
+  ),
+  106 => 
+  array (
+    'match' => '0C1A 0C3F',
+    'replace' => 'E087',
+  ),
+  107 => 
+  array (
+    'match' => '0C1A 0C40',
+    'replace' => 'E088',
+  ),
+  108 => 
+  array (
+    'match' => '0C1B 0C3F',
+    'replace' => 'E089',
+  ),
+  109 => 
+  array (
+    'match' => '0C1B 0C40',
+    'replace' => 'E08A',
+  ),
+  110 => 
+  array (
+    'match' => '0C1C 0C3F',
+    'replace' => 'E08B',
+  ),
+  111 => 
+  array (
+    'match' => '0C1C 0C40',
+    'replace' => 'E08C',
+  ),
+  112 => 
+  array (
+    'match' => '0C1C 0C41',
+    'replace' => 'E08D',
+  ),
+  113 => 
+  array (
+    'match' => '0C1C 0C42',
+    'replace' => 'E08E',
+  ),
+  114 => 
+  array (
+    'match' => '0C1D 0C4A',
+    'replace' => 'E08F',
+  ),
+  115 => 
+  array (
+    'match' => '0C1D 0C4B',
+    'replace' => 'E090',
+  ),
+  116 => 
+  array (
+    'match' => '0C24 0C3F',
+    'replace' => 'E091',
+  ),
+  117 => 
+  array (
+    'match' => '0C24 0C40',
+    'replace' => 'E092',
+  ),
+  118 => 
+  array (
+    'match' => '0C28 0C3F',
+    'replace' => 'E093',
+  ),
+  119 => 
+  array (
+    'match' => '0C28 0C40',
+    'replace' => 'E094',
+  ),
+  120 => 
+  array (
+    'match' => '0C2C 0C3F',
+    'replace' => 'E095',
+  ),
+  121 => 
+  array (
+    'match' => '0C2C 0C40',
+    'replace' => 'E096',
+  ),
+  122 => 
+  array (
+    'match' => '0C2D 0C3F',
+    'replace' => 'E097',
+  ),
+  123 => 
+  array (
+    'match' => '0C2D 0C40',
+    'replace' => 'E098',
+  ),
+  124 => 
+  array (
+    'match' => '0C2E 0C3F',
+    'replace' => 'E099',
+  ),
+  125 => 
+  array (
+    'match' => '0C2E 0C40',
+    'replace' => 'E09A',
+  ),
+  126 => 
+  array (
+    'match' => '0C2E 0C4A',
+    'replace' => 'E09B',
+  ),
+  127 => 
+  array (
+    'match' => '0C2E 0C4B',
+    'replace' => 'E09C',
+  ),
+  128 => 
+  array (
+    'match' => '0C2F 0C3F',
+    'replace' => 'E09D',
+  ),
+  129 => 
+  array (
+    'match' => '0C2F 0C40',
+    'replace' => 'E09E',
+  ),
+  130 => 
+  array (
+    'match' => '0C2F 0C4A',
+    'replace' => 'E09F',
+  ),
+  131 => 
+  array (
+    'match' => '0C2F 0C4B',
+    'replace' => 'E0A0',
+  ),
+  132 => 
+  array (
+    'match' => '0C32 0C3F',
+    'replace' => 'E0A1',
+  ),
+  133 => 
+  array (
+    'match' => '0C32 0C40',
+    'replace' => 'E0A2',
+  ),
+  134 => 
+  array (
+    'match' => '0C33 0C3F',
+    'replace' => 'E0A3',
+  ),
+  135 => 
+  array (
+    'match' => '0C33 0C40',
+    'replace' => 'E0A4',
+  ),
+  136 => 
+  array (
+    'match' => '0C35 0C3F',
+    'replace' => 'E0A5',
+  ),
+  137 => 
+  array (
+    'match' => '0C35 0C40',
+    'replace' => 'E0A6',
+  ),
+  138 => 
+  array (
+    'match' => '0C36 0C41',
+    'replace' => 'E0A7',
+  ),
+  139 => 
+  array (
+    'match' => '0C36 0C42',
+    'replace' => 'E0A8',
+  ),
+  140 => 
+  array (
+    'match' => '0C36 0C3F',
+    'replace' => 'E0A9',
+  ),
+  141 => 
+  array (
+    'match' => '0C36 0C40',
+    'replace' => 'E0AA',
+  ),
+  142 => 
+  array (
+    'match' => '0C39 0C3E',
+    'replace' => 'E0AB',
+  ),
+  143 => 
+  array (
+    'match' => '0C39 0C41',
+    'replace' => 'E0AC',
+  ),
+  144 => 
+  array (
+    'match' => '0C39 0C42',
+    'replace' => 'E0AD',
+  ),
+  145 => 
+  array (
+    'match' => 'E078 0C41',
+    'replace' => 'E0AE',
+  ),
+  146 => 
+  array (
+    'match' => 'E078 0C42',
+    'replace' => 'E0AF',
+  ),
+  147 => 
+  array (
+    'match' => 'E07A 0C48',
+    'replace' => 'E0B0',
+  ),
+  148 => 
+  array (
+    'match' => 'E07B 0C48',
+    'replace' => 'E0B1',
+  ),
+  149 => 
+  array (
+    'match' => 'E07A 0C3F',
+    'replace' => 'E0DA',
+  ),
+  150 => 
+  array (
+    'match' => 'E07A 0C40',
+    'replace' => 'E0DB',
+  ),
+  151 => 
+  array (
+    'match' => 'E07B 0C3F',
+    'replace' => 'E0DC',
+  ),
+  152 => 
+  array (
+    'match' => 'E07B 0C40',
+    'replace' => 'E0DD',
+  ),
+  153 => 
+  array (
+    'match' => '0C15 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E00D \\1',
+  ),
+  154 => 
+  array (
+    'match' => '0C17 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E00E \\1',
+  ),
+  155 => 
+  array (
+    'match' => '0C18 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E00F \\1',
+  ),
+  156 => 
+  array (
+    'match' => '0C1A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E010 \\1',
+  ),
+  157 => 
+  array (
+    'match' => '0C1B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E011 \\1',
+  ),
+  158 => 
+  array (
+    'match' => '0C1C ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E012 \\1',
+  ),
+  159 => 
+  array (
+    'match' => '0C1D ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E013 \\1',
+  ),
+  160 => 
+  array (
+    'match' => '0C20 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E014 \\1',
+  ),
+  161 => 
+  array (
+    'match' => '0C21 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E015 \\1',
+  ),
+  162 => 
+  array (
+    'match' => '0C22 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E016 \\1',
+  ),
+  163 => 
+  array (
+    'match' => '0C24 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E017 \\1',
+  ),
+  164 => 
+  array (
+    'match' => '0C25 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E018 \\1',
+  ),
+  165 => 
+  array (
+    'match' => '0C26 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E019 \\1',
+  ),
+  166 => 
+  array (
+    'match' => '0C27 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E01A \\1',
+  ),
+  167 => 
+  array (
+    'match' => '0C28 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E01B \\1',
+  ),
+  168 => 
+  array (
+    'match' => '0C2A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E01C \\1',
+  ),
+  169 => 
+  array (
+    'match' => '0C2B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E01D \\1',
+  ),
+  170 => 
+  array (
+    'match' => '0C2D ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E01E \\1',
+  ),
+  171 => 
+  array (
+    'match' => '0C2E ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E01F \\1',
+  ),
+  172 => 
+  array (
+    'match' => '0C2F ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E020 \\1',
+  ),
+  173 => 
+  array (
+    'match' => '0C30 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E021 \\1',
+  ),
+  174 => 
+  array (
+    'match' => '0C33 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E022 \\1',
+  ),
+  175 => 
+  array (
+    'match' => '0C35 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E023 \\1',
+  ),
+  176 => 
+  array (
+    'match' => '0C36 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E024 \\1',
+  ),
+  177 => 
+  array (
+    'match' => '0C37 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E025 \\1',
+  ),
+  178 => 
+  array (
+    'match' => '0C38 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E026 \\1',
+  ),
+  179 => 
+  array (
+    'match' => '0C39 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E027 \\1',
+  ),
+  180 => 
+  array (
+    'match' => 'E078 ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E07C \\1',
+  ),
+  181 => 
+  array (
+    'match' => 'E07A ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E07D \\1',
+  ),
+  182 => 
+  array (
+    'match' => 'E07B ((0C3E|0C3F|0C40|0C46|0C47|0C56|0C4A|0C4B|0C4C))',
+    'replace' => 'E07E \\1',
+  ),
+  183 => 
+  array (
+    'match' => '0C15 (0C3E)',
+    'replace' => 'E00D \\1',
+  ),
+  184 => 
+  array (
+    'match' => '0C17 (0C3E)',
+    'replace' => 'E00E \\1',
+  ),
+  185 => 
+  array (
+    'match' => '0C18 (0C3E)',
+    'replace' => 'E00F \\1',
+  ),
+  186 => 
+  array (
+    'match' => '0C1A (0C3E)',
+    'replace' => 'E010 \\1',
+  ),
+  187 => 
+  array (
+    'match' => '0C1B (0C3E)',
+    'replace' => 'E011 \\1',
+  ),
+  188 => 
+  array (
+    'match' => '0C1C (0C3E)',
+    'replace' => 'E012 \\1',
+  ),
+  189 => 
+  array (
+    'match' => '0C1D (0C3E)',
+    'replace' => 'E013 \\1',
+  ),
+  190 => 
+  array (
+    'match' => '0C20 (0C3E)',
+    'replace' => 'E014 \\1',
+  ),
+  191 => 
+  array (
+    'match' => '0C21 (0C3E)',
+    'replace' => 'E015 \\1',
+  ),
+  192 => 
+  array (
+    'match' => '0C22 (0C3E)',
+    'replace' => 'E016 \\1',
+  ),
+  193 => 
+  array (
+    'match' => '0C24 (0C3E)',
+    'replace' => 'E017 \\1',
+  ),
+  194 => 
+  array (
+    'match' => '0C25 (0C3E)',
+    'replace' => 'E018 \\1',
+  ),
+  195 => 
+  array (
+    'match' => '0C26 (0C3E)',
+    'replace' => 'E019 \\1',
+  ),
+  196 => 
+  array (
+    'match' => '0C27 (0C3E)',
+    'replace' => 'E01A \\1',
+  ),
+  197 => 
+  array (
+    'match' => '0C28 (0C3E)',
+    'replace' => 'E01B \\1',
+  ),
+  198 => 
+  array (
+    'match' => '0C2A (0C3E)',
+    'replace' => 'E01C \\1',
+  ),
+  199 => 
+  array (
+    'match' => '0C2B (0C3E)',
+    'replace' => 'E01D \\1',
+  ),
+  200 => 
+  array (
+    'match' => '0C2D (0C3E)',
+    'replace' => 'E01E \\1',
+  ),
+  201 => 
+  array (
+    'match' => '0C2E (0C3E)',
+    'replace' => 'E01F \\1',
+  ),
+  202 => 
+  array (
+    'match' => '0C2F (0C3E)',
+    'replace' => 'E020 \\1',
+  ),
+  203 => 
+  array (
+    'match' => '0C30 (0C3E)',
+    'replace' => 'E021 \\1',
+  ),
+  204 => 
+  array (
+    'match' => '0C33 (0C3E)',
+    'replace' => 'E022 \\1',
+  ),
+  205 => 
+  array (
+    'match' => '0C35 (0C3E)',
+    'replace' => 'E023 \\1',
+  ),
+  206 => 
+  array (
+    'match' => '0C36 (0C3E)',
+    'replace' => 'E024 \\1',
+  ),
+  207 => 
+  array (
+    'match' => '0C37 (0C3E)',
+    'replace' => 'E025 \\1',
+  ),
+  208 => 
+  array (
+    'match' => '0C38 (0C3E)',
+    'replace' => 'E026 \\1',
+  ),
+  209 => 
+  array (
+    'match' => '0C39 (0C3E)',
+    'replace' => 'E027 \\1',
+  ),
+  210 => 
+  array (
+    'match' => 'E078 (0C3E)',
+    'replace' => 'E07C \\1',
+  ),
+  211 => 
+  array (
+    'match' => 'E07A (0C3E)',
+    'replace' => 'E07D \\1',
+  ),
+  212 => 
+  array (
+    'match' => 'E07B (0C3E)',
+    'replace' => 'E07E \\1',
+  ),
+  213 => 
+  array (
+    'match' => '0C15 (0C4C)',
+    'replace' => 'E00D \\1',
+  ),
+  214 => 
+  array (
+    'match' => '0C17 (0C4C)',
+    'replace' => 'E00E \\1',
+  ),
+  215 => 
+  array (
+    'match' => '0C18 (0C4C)',
+    'replace' => 'E00F \\1',
+  ),
+  216 => 
+  array (
+    'match' => '0C1A (0C4C)',
+    'replace' => 'E010 \\1',
+  ),
+  217 => 
+  array (
+    'match' => '0C1B (0C4C)',
+    'replace' => 'E011 \\1',
+  ),
+  218 => 
+  array (
+    'match' => '0C1C (0C4C)',
+    'replace' => 'E012 \\1',
+  ),
+  219 => 
+  array (
+    'match' => '0C1D (0C4C)',
+    'replace' => 'E013 \\1',
+  ),
+  220 => 
+  array (
+    'match' => '0C20 (0C4C)',
+    'replace' => 'E014 \\1',
+  ),
+  221 => 
+  array (
+    'match' => '0C21 (0C4C)',
+    'replace' => 'E015 \\1',
+  ),
+  222 => 
+  array (
+    'match' => '0C22 (0C4C)',
+    'replace' => 'E016 \\1',
+  ),
+  223 => 
+  array (
+    'match' => '0C24 (0C4C)',
+    'replace' => 'E017 \\1',
+  ),
+  224 => 
+  array (
+    'match' => '0C25 (0C4C)',
+    'replace' => 'E018 \\1',
+  ),
+  225 => 
+  array (
+    'match' => '0C26 (0C4C)',
+    'replace' => 'E019 \\1',
+  ),
+  226 => 
+  array (
+    'match' => '0C27 (0C4C)',
+    'replace' => 'E01A \\1',
+  ),
+  227 => 
+  array (
+    'match' => '0C28 (0C4C)',
+    'replace' => 'E01B \\1',
+  ),
+  228 => 
+  array (
+    'match' => '0C2A (0C4C)',
+    'replace' => 'E01C \\1',
+  ),
+  229 => 
+  array (
+    'match' => '0C2B (0C4C)',
+    'replace' => 'E01D \\1',
+  ),
+  230 => 
+  array (
+    'match' => '0C2D (0C4C)',
+    'replace' => 'E01E \\1',
+  ),
+  231 => 
+  array (
+    'match' => '0C2E (0C4C)',
+    'replace' => 'E01F \\1',
+  ),
+  232 => 
+  array (
+    'match' => '0C2F (0C4C)',
+    'replace' => 'E020 \\1',
+  ),
+  233 => 
+  array (
+    'match' => '0C30 (0C4C)',
+    'replace' => 'E021 \\1',
+  ),
+  234 => 
+  array (
+    'match' => '0C33 (0C4C)',
+    'replace' => 'E022 \\1',
+  ),
+  235 => 
+  array (
+    'match' => '0C35 (0C4C)',
+    'replace' => 'E023 \\1',
+  ),
+  236 => 
+  array (
+    'match' => '0C36 (0C4C)',
+    'replace' => 'E024 \\1',
+  ),
+  237 => 
+  array (
+    'match' => '0C37 (0C4C)',
+    'replace' => 'E025 \\1',
+  ),
+  238 => 
+  array (
+    'match' => '0C38 (0C4C)',
+    'replace' => 'E026 \\1',
+  ),
+  239 => 
+  array (
+    'match' => '0C39 (0C4C)',
+    'replace' => 'E027 \\1',
+  ),
+  240 => 
+  array (
+    'match' => 'E078 (0C4C)',
+    'replace' => 'E07C \\1',
+  ),
+  241 => 
+  array (
+    'match' => 'E07A (0C4C)',
+    'replace' => 'E07D \\1',
+  ),
+  242 => 
+  array (
+    'match' => 'E07B (0C4C)',
+    'replace' => 'E07E \\1',
+  ),
+  243 => 
+  array (
+    'match' => '0C15 (0C4D)',
+    'replace' => 'E00D \\1',
+  ),
+  244 => 
+  array (
+    'match' => '0C17 (0C4D)',
+    'replace' => 'E00E \\1',
+  ),
+  245 => 
+  array (
+    'match' => '0C18 (0C4D)',
+    'replace' => 'E00F \\1',
+  ),
+  246 => 
+  array (
+    'match' => '0C1A (0C4D)',
+    'replace' => 'E010 \\1',
+  ),
+  247 => 
+  array (
+    'match' => '0C1B (0C4D)',
+    'replace' => 'E011 \\1',
+  ),
+  248 => 
+  array (
+    'match' => '0C1C (0C4D)',
+    'replace' => 'E012 \\1',
+  ),
+  249 => 
+  array (
+    'match' => '0C1D (0C4D)',
+    'replace' => 'E013 \\1',
+  ),
+  250 => 
+  array (
+    'match' => '0C20 (0C4D)',
+    'replace' => 'E014 \\1',
+  ),
+  251 => 
+  array (
+    'match' => '0C21 (0C4D)',
+    'replace' => 'E015 \\1',
+  ),
+  252 => 
+  array (
+    'match' => '0C22 (0C4D)',
+    'replace' => 'E016 \\1',
+  ),
+  253 => 
+  array (
+    'match' => '0C24 (0C4D)',
+    'replace' => 'E017 \\1',
+  ),
+  254 => 
+  array (
+    'match' => '0C25 (0C4D)',
+    'replace' => 'E018 \\1',
+  ),
+  255 => 
+  array (
+    'match' => '0C26 (0C4D)',
+    'replace' => 'E019 \\1',
+  ),
+  256 => 
+  array (
+    'match' => '0C27 (0C4D)',
+    'replace' => 'E01A \\1',
+  ),
+  257 => 
+  array (
+    'match' => '0C28 (0C4D)',
+    'replace' => 'E01B \\1',
+  ),
+  258 => 
+  array (
+    'match' => '0C2A (0C4D)',
+    'replace' => 'E01C \\1',
+  ),
+  259 => 
+  array (
+    'match' => '0C2B (0C4D)',
+    'replace' => 'E01D \\1',
+  ),
+  260 => 
+  array (
+    'match' => '0C2D (0C4D)',
+    'replace' => 'E01E \\1',
+  ),
+  261 => 
+  array (
+    'match' => '0C2E (0C4D)',
+    'replace' => 'E01F \\1',
+  ),
+  262 => 
+  array (
+    'match' => '0C2F (0C4D)',
+    'replace' => 'E020 \\1',
+  ),
+  263 => 
+  array (
+    'match' => '0C30 (0C4D)',
+    'replace' => 'E021 \\1',
+  ),
+  264 => 
+  array (
+    'match' => '0C33 (0C4D)',
+    'replace' => 'E022 \\1',
+  ),
+  265 => 
+  array (
+    'match' => '0C35 (0C4D)',
+    'replace' => 'E023 \\1',
+  ),
+  266 => 
+  array (
+    'match' => '0C36 (0C4D)',
+    'replace' => 'E024 \\1',
+  ),
+  267 => 
+  array (
+    'match' => '0C37 (0C4D)',
+    'replace' => 'E025 \\1',
+  ),
+  268 => 
+  array (
+    'match' => '0C38 (0C4D)',
+    'replace' => 'E026 \\1',
+  ),
+  269 => 
+  array (
+    'match' => '0C39 (0C4D)',
+    'replace' => 'E027 \\1',
+  ),
+  270 => 
+  array (
+    'match' => 'E078 (0C4D)',
+    'replace' => 'E07C \\1',
+  ),
+  271 => 
+  array (
+    'match' => 'E07A (0C4D)',
+    'replace' => 'E07D \\1',
+  ),
+  272 => 
+  array (
+    'match' => 'E07B (0C4D)',
+    'replace' => 'E07E \\1',
+  ),
+  273 => 
+  array (
+    'match' => 'E00F (0C3E)',
+    'replace' => '0C18 \\1',
+  ),
+  274 => 
+  array (
+    'match' => 'E013 (0C3E)',
+    'replace' => '0C1D \\1',
+  ),
+  275 => 
+  array (
+    'match' => 'E01F (0C3E)',
+    'replace' => '0C2E \\1',
+  ),
+  276 => 
+  array (
+    'match' => 'E020 (0C3E)',
+    'replace' => '0C2F \\1',
+  ),
+  277 => 
+  array (
+    'match' => 'E027 (0C3E)',
+    'replace' => '0C39 \\1',
+  ),
+  278 => 
+  array (
+    'match' => 'E00F (0C4C)',
+    'replace' => '0C18 \\1',
+  ),
+  279 => 
+  array (
+    'match' => 'E013 (0C4C)',
+    'replace' => '0C1D \\1',
+  ),
+  280 => 
+  array (
+    'match' => 'E01F (0C4C)',
+    'replace' => '0C2E \\1',
+  ),
+  281 => 
+  array (
+    'match' => 'E020 (0C4C)',
+    'replace' => '0C2F \\1',
+  ),
+  282 => 
+  array (
+    'match' => 'E027 (0C4C)',
+    'replace' => '0C39 \\1',
+  ),
+  283 => 
+  array (
+    'match' => '((E00F|0C1F|E01C|E01D|E025|E026|E027)) 0C46',
+    'replace' => '\\1 E007',
+  ),
+  284 => 
+  array (
+    'match' => '((E00F|0C1F|E01C|E01D|E025|E026|E027)) 0C47',
+    'replace' => '\\1 E008',
+  ),
+  285 => 
+  array (
+    'match' => '((0C16|0C18|0C1F|0C2C|E01E|0C2E|0C2F|0C32|0C1D)) 0C3E',
+    'replace' => '\\1 E002',
+  ),
+  286 => 
+  array (
+    'match' => '((0C19|0C1C)) 0C3E',
+    'replace' => '\\1 E003',
+  ),
+  287 => 
+  array (
+    'match' => '((0C1E|E022)) 0C3E',
+    'replace' => '\\1 E004',
+  ),
+  288 => 
+  array (
+    'match' => '((E02C|E02D|E02E|E02F|E030|E031|E032|E033|E034|E035|E036|E037|E038|E039|E03A|E03B|E03C|E03D|E03E|E03F|E040|E041|E042|E043|E044|E045|E046|E047|E048|E049|E04A|E04B|E04C|E04D|E04E)) 0C56',
+    'replace' => '\\1 E00C',
+  ),
+  289 => 
+  array (
+    'match' => '((E04F|E050|E051|E052|E053|E054|E055|E056|E057|E058|E059|E05A|E05B|E05C|E05D|E05E|E05F|E060|E061|E062|E063|E064|E065|E066|E067|E068|E069|E06A|E06B|E06C|E06D|E06E|E06F|E070|E071)) 0C56',
+    'replace' => '\\1 E00C',
+  ),
+  290 => 
+  array (
+    'match' => '(0C33) 0C41',
+    'replace' => '\\1 E005',
+  ),
+  291 => 
+  array (
+    'match' => '(0C33) 0C42',
+    'replace' => '\\1 E0DE',
+  ),
+  292 => 
+  array (
+    'match' => '((0C2A|0C2B|0C35)) 0C41',
+    'replace' => '\\1 E006',
+  ),
+  293 => 
+  array (
+    'match' => '((0C2A|0C2B|0C35)) 0C42',
+    'replace' => '\\1 E0DF',
+  ),
+  294 => 
+  array (
+    'match' => 'E046 (E07C 0C46 0C56)',
+    'replace' => 'E077 \\1',
+  ),
+  295 => 
+  array (
+    'match' => 'E046 ((0C15|E00D|0C16|0C17|E00E|0C18|E00F|0C19|0C1A|E010|0C1B|E011|0C1C|E012|0C1D|E013|0C1E|0C1F|0C20|E014|0C21|E015|0C22|E016|0C23|0C24|E017|0C25|E018|0C26|E019|0C27|E01A|0C28|E01B|0C2A|E01C|0C2B|E01D|0C2C|0C2D|E01E|0C2E|E01F|0C2F|E020|0C30|E021|0C32|0C33|E022|0C35|E023|0C36|E024|0C37|E025|0C38|E026|0C39|E027|E078|E07C|E079) 0C46 0C56)',
+    'replace' => 'E069 \\1',
+  ),
+  296 => 
+  array (
+    'match' => '0C4D',
+    'replace' => 'E0E0',
+  ),
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/no_image.jpg b/inc/3rdparty/libraries/mpdf/includes/no_image.jpg
new file mode 100644 (file)
index 0000000..a690485
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/includes/no_image.jpg differ
diff --git a/inc/3rdparty/libraries/mpdf/includes/out.php b/inc/3rdparty/libraries/mpdf/includes/out.php
new file mode 100644 (file)
index 0000000..75da455
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+$path = '../tmp/';
+
+$tempfilename = $_REQUEST['filename'].'.pdf';
+if (strstr($tempfilename,'/') || strstr($tempfilename,'\\')) { die("Filename should not contain \ or / "); }
+$opname = $_REQUEST['opname'];
+$dest = $_REQUEST['dest'];
+       if ($tempfilename && file_exists($path.$tempfilename)) {
+               // mPDF 5.3.17
+               if ($dest=='I') {
+                       if(PHP_SAPI!='cli') {
+                               header('Content-Type: application/pdf');
+                               header('Content-disposition: inline; filename="'.$name.'"');
+                               header('Cache-Control: public, must-revalidate, max-age=0'); 
+                               header('Pragma: public');
+                               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
+                               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                       }
+               }
+
+               else if ($dest=='D') {
+                       header('Content-Description: File Transfer');
+                       if (headers_sent())
+                               $this->Error('Some data has already been output to browser, can\'t send PDF file');
+                       header('Content-Transfer-Encoding: binary');
+                       header('Cache-Control: public, must-revalidate, max-age=0');
+                       header('Pragma: public');
+                       header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
+                       header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                       header('Content-Type: application/force-download');
+                       header('Content-Type: application/octet-stream', false);
+                       header('Content-Type: application/download', false);
+                       header('Content-Type: application/pdf', false);
+                       header('Content-disposition: attachment; filename="'.$name.'"');
+               }
+               $filesize = filesize($path.$tempfilename);
+               if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
+                       // don't use length if server using compression
+                       header('Content-Length: '.$filesize);
+               }
+               $fd=fopen($path.$tempfilename,'rb');
+               fpassthru($fd);
+               fclose($fd);
+               unlink($path.$tempfilename);
+               // ====================== DELETE OLD FILES - Housekeeping =========================================
+               // Clear any files in directory that are >24 hrs old
+               $interval = 86400;
+               if ($handle = opendir(dirname($path.'dummy'))) {
+                  while (false !== ($file = readdir($handle))) { 
+                       if (((filemtime($path.$file)+$interval) < time()) && ($file != "..") && ($file != ".") && substr($file, -3)=='pdf') { 
+                               unlink($path.$file); 
+                       }
+                  }
+                  closedir($handle); 
+               }
+               exit;
+       }
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/subs_core.php b/inc/3rdparty/libraries/mpdf/includes/subs_core.php
new file mode 100644 (file)
index 0000000..326a3f4
--- /dev/null
@@ -0,0 +1,454 @@
+<?php
+$aarr = array(
+160 => 160, 
+161 => 161, 
+162 => 162, 
+163 => 163, 
+164 => 164, 
+165 => 165, 
+166 => 166, 
+167 => 167, 
+168 => 168, 
+169 => 169, 
+170 => 170, 
+171 => 171, 
+172 => 172, 
+173 => 173, 
+174 => 174, 
+175 => 175, 
+176 => 176, 
+177 => 177, 
+178 => 178, 
+179 => 179, 
+180 => 180, 
+181 => 181, 
+182 => 182, 
+183 => 183, 
+184 => 184, 
+185 => 185, 
+186 => 186, 
+187 => 187, 
+188 => 188, 
+189 => 189, 
+190 => 190, 
+191 => 191, 
+192 => 192, 
+193 => 193, 
+194 => 194, 
+195 => 195, 
+196 => 196, 
+197 => 197, 
+198 => 198, 
+199 => 199, 
+200 => 200, 
+201 => 201, 
+202 => 202, 
+203 => 203, 
+204 => 204, 
+205 => 205, 
+206 => 206, 
+207 => 207, 
+208 => 208, 
+209 => 209, 
+210 => 210, 
+211 => 211, 
+212 => 212, 
+213 => 213, 
+214 => 214, 
+215 => 215, 
+216 => 216, 
+217 => 217, 
+218 => 218, 
+219 => 219, 
+220 => 220, 
+221 => 221, 
+222 => 222, 
+223 => 223, 
+224 => 224, 
+225 => 225, 
+226 => 226, 
+227 => 227, 
+228 => 228, 
+229 => 229, 
+230 => 230, 
+231 => 231, 
+232 => 232, 
+233 => 233, 
+234 => 234, 
+235 => 235, 
+236 => 236, 
+237 => 237, 
+238 => 238, 
+239 => 239, 
+240 => 240, 
+241 => 241, 
+242 => 242, 
+243 => 243, 
+244 => 244, 
+245 => 245, 
+246 => 246, 
+247 => 247, 
+248 => 248, 
+249 => 249, 
+250 => 250, 
+251 => 251, 
+252 => 252, 
+253 => 253, 
+254 => 254, 
+255 => 255, 
+338 => 140, 
+339 => 156, 
+352 => 138, 
+353 => 154, 
+376 => 159, 
+381 => 142, 
+382 => 158, 
+402 => 131, 
+710 => 136, 
+732 => 152, 
+8211 => 150, 
+8212 => 151, 
+8216 => 145, 
+8217 => 146, 
+8218 => 130, 
+8220 => 147, 
+8221 => 148, 
+8222 => 132, 
+8224 => 134, 
+8225 => 135, 
+8226 => 149, 
+8230 => 133, 
+8240 => 137, 
+8249 => 139, 
+8250 => 155, 
+8364 => 128, 
+8482 => 153
+);
+
+$zarr = array(
+8594 => 213, 
+8596 => 214, 
+8597 => 215, 
+9312 => 172, 
+9313 => 173, 
+9314 => 174, 
+9315 => 175, 
+9316 => 176, 
+9317 => 177, 
+9318 => 178, 
+9319 => 179, 
+9320 => 180, 
+9321 => 181, 
+9632 => 110, 
+9650 => 115, 
+9660 => 116, 
+9670 => 117, 
+9679 => 108, 
+9687 => 119, 
+9733 => 72, 
+9742 => 37, 
+9755 => 42, 
+9758 => 43, 
+9824 => 171, 
+9827 => 168, 
+9829 => 170, 
+9830 => 169, 
+9985 => 33, 
+9986 => 34, 
+9987 => 35, 
+9988 => 36, 
+9990 => 38, 
+9991 => 39, 
+9992 => 40, 
+9993 => 41, 
+9996 => 44, 
+9997 => 45, 
+9998 => 46, 
+9999 => 47, 
+10000 => 48, 
+10001 => 49, 
+10002 => 50, 
+10003 => 51, 
+10004 => 52, 
+10005 => 53, 
+10006 => 54, 
+10007 => 55, 
+10008 => 56, 
+10009 => 57, 
+10010 => 58, 
+10011 => 59, 
+10012 => 60, 
+10013 => 61, 
+10014 => 62, 
+10015 => 63, 
+10016 => 64, 
+10017 => 65, 
+10018 => 66, 
+10019 => 67, 
+10020 => 68, 
+10021 => 69, 
+10022 => 70, 
+10023 => 71, 
+10025 => 73, 
+10026 => 74, 
+10027 => 75, 
+10028 => 76, 
+10029 => 77, 
+10030 => 78, 
+10031 => 79, 
+10032 => 80, 
+10033 => 81, 
+10034 => 82, 
+10035 => 83, 
+10036 => 84, 
+10037 => 85, 
+10038 => 86, 
+10039 => 87, 
+10040 => 88, 
+10041 => 89, 
+10042 => 90, 
+10043 => 91, 
+10044 => 92, 
+10045 => 93, 
+10046 => 94, 
+10047 => 95, 
+10048 => 96, 
+10049 => 97, 
+10050 => 98, 
+10051 => 99, 
+10052 => 100, 
+10053 => 101, 
+10054 => 102, 
+10055 => 103, 
+10056 => 104, 
+10057 => 105, 
+10058 => 106, 
+10059 => 107, 
+10061 => 109, 
+10063 => 111, 
+10064 => 112, 
+10065 => 113, 
+10066 => 114, 
+10070 => 118, 
+10072 => 120, 
+10073 => 121, 
+10074 => 122, 
+10075 => 123, 
+10076 => 124, 
+10077 => 125, 
+10078 => 126, 
+10081 => 161, 
+10082 => 162, 
+10083 => 163, 
+10084 => 164, 
+10085 => 165, 
+10086 => 166, 
+10087 => 167, 
+10102 => 182, 
+10103 => 183, 
+10104 => 184, 
+10105 => 185, 
+10106 => 186, 
+10107 => 187, 
+10108 => 188, 
+10109 => 189, 
+10110 => 190, 
+10111 => 191, 
+10112 => 192, 
+10113 => 193, 
+10114 => 194, 
+10115 => 195, 
+10116 => 196, 
+10117 => 197, 
+10118 => 198, 
+10119 => 199, 
+10120 => 200, 
+10121 => 201, 
+10122 => 202, 
+10123 => 203, 
+10124 => 204, 
+10125 => 205, 
+10126 => 206, 
+10127 => 207, 
+10128 => 208, 
+10129 => 209, 
+10130 => 210, 
+10131 => 211, 
+10132 => 212, 
+10136 => 216, 
+10137 => 217, 
+10138 => 218, 
+10139 => 219, 
+10140 => 220, 
+10141 => 221, 
+10142 => 222, 
+10143 => 223, 
+10144 => 224, 
+10145 => 225, 
+10146 => 226, 
+10147 => 227, 
+10148 => 228, 
+10149 => 229, 
+10150 => 230, 
+10151 => 231, 
+10152 => 232, 
+10153 => 233, 
+10154 => 234, 
+10155 => 235, 
+10156 => 236, 
+10157 => 237, 
+10158 => 238, 
+10159 => 239, 
+10161 => 241, 
+10162 => 242, 
+10163 => 243, 
+10164 => 244, 
+10165 => 245, 
+10166 => 246, 
+10167 => 247, 
+10168 => 248, 
+10169 => 249, 
+10170 => 250, 
+10171 => 251, 
+10172 => 252, 
+10173 => 253, 
+10174 => 254
+);
+
+$sarr = array(
+169 => 227, 
+172 => 216, 
+174 => 226, 
+176 => 176, 
+177 => 177, 
+181 => 109, 
+215 => 180, 
+247 => 184, 
+402 => 166, 
+913 => 65, 
+914 => 66, 
+915 => 71, 
+916 => 68, 
+917 => 69, 
+918 => 90, 
+919 => 72, 
+920 => 81, 
+921 => 73, 
+922 => 75, 
+923 => 76, 
+924 => 77, 
+925 => 78, 
+926 => 88, 
+927 => 79, 
+928 => 80, 
+929 => 82, 
+931 => 83, 
+932 => 84, 
+933 => 85, 
+934 => 70, 
+935 => 67, 
+936 => 89, 
+937 => 87, 
+945 => 97, 
+946 => 98, 
+947 => 103, 
+948 => 100, 
+949 => 101, 
+950 => 122, 
+951 => 104, 
+952 => 113, 
+953 => 105, 
+954 => 107, 
+955 => 108, 
+956 => 109, 
+957 => 110, 
+958 => 120, 
+959 => 111, 
+960 => 112, 
+961 => 114, 
+962 => 86, 
+963 => 115, 
+964 => 116, 
+965 => 117, 
+966 => 102, 
+967 => 99, 
+968 => 121, 
+969 => 119, 
+977 => 74, 
+978 => 161, 
+981 => 106, 
+982 => 118, 
+8226 => 183, 
+8230 => 188, 
+8242 => 162, 
+8243 => 178, 
+8260 => 164, 
+8465 => 193, 
+8472 => 195, 
+8476 => 194, 
+8482 => 228, 
+8486 => 87, 
+8501 => 192, 
+8592 => 172, 
+8593 => 173, 
+8594 => 174, 
+8595 => 175, 
+8596 => 171, 
+8629 => 191, 
+8656 => 220, 
+8657 => 221, 
+8658 => 222, 
+8659 => 223, 
+8660 => 219, 
+8704 => 34, 
+8706 => 182, 
+8707 => 36, 
+8709 => 198, 
+8710 => 68, 
+8711 => 209, 
+8712 => 206, 
+8713 => 207, 
+8715 => 39, 
+8719 => 213, 
+8721 => 229, 
+8722 => 45, 
+8725 => 164, 
+8727 => 42, 
+8730 => 214, 
+8733 => 181, 
+8734 => 165, 
+8736 => 208, 
+8743 => 217, 
+8744 => 218, 
+8745 => 199, 
+8746 => 200, 
+8747 => 242, 
+8756 => 92, 
+8764 => 126, 
+8773 => 64, 
+8776 => 187, 
+8800 => 185, 
+8801 => 186, 
+8804 => 163, 
+8805 => 179, 
+8834 => 204, 
+8835 => 201, 
+8836 => 203, 
+8838 => 205, 
+8839 => 202, 
+8853 => 197, 
+8855 => 196, 
+8869 => 94, 
+8901 => 215, 
+8992 => 243, 
+8993 => 245, 
+9001 => 225, 
+9002 => 241, 
+9674 => 224, 
+9824 => 170, 
+9827 => 167, 
+9829 => 169, 
+9830 => 168
+);
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php b/inc/3rdparty/libraries/mpdf/includes/subs_win-1252.php
new file mode 100644 (file)
index 0000000..6658ff7
--- /dev/null
@@ -0,0 +1,308 @@
+<?php
+
+$subsarray = array (
+  913 => '<tts>65</tts>',
+  914 => '<tts>66</tts>',
+  915 => '<tts>71</tts>',
+  916 => '<tts>68</tts>',
+  917 => '<tts>69</tts>',
+  918 => '<tts>90</tts>',
+  919 => '<tts>72</tts>',
+  920 => '<tts>81</tts>',
+  921 => '<tts>73</tts>',
+  922 => '<tts>75</tts>',
+  923 => '<tts>76</tts>',
+  924 => '<tts>77</tts>',
+  925 => '<tts>78</tts>',
+  926 => '<tts>88</tts>',
+  927 => '<tts>79</tts>',
+  928 => '<tts>80</tts>',
+  929 => '<tts>82</tts>',
+  931 => '<tts>83</tts>',
+  932 => '<tts>84</tts>',
+  933 => '<tts>85</tts>',
+  934 => '<tts>70</tts>',
+  935 => '<tts>67</tts>',
+  936 => '<tts>89</tts>',
+  937 => '<tts>87</tts>',
+  945 => '<tts>97</tts>',
+  946 => '<tts>98</tts>',
+  947 => '<tts>103</tts>',
+  948 => '<tts>100</tts>',
+  949 => '<tts>101</tts>',
+  950 => '<tts>122</tts>',
+  951 => '<tts>104</tts>',
+  952 => '<tts>113</tts>',
+  953 => '<tts>105</tts>',
+  954 => '<tts>107</tts>',
+  955 => '<tts>108</tts>',
+  956 => '<tts>109</tts>',
+  957 => '<tts>110</tts>',
+  958 => '<tts>120</tts>',
+  959 => '<tts>111</tts>',
+  960 => '<tts>112</tts>',
+  961 => '<tts>114</tts>',
+  962 => '<tts>86</tts>',
+  963 => '<tts>115</tts>',
+  964 => '<tts>116</tts>',
+  965 => '<tts>117</tts>',
+  966 => '<tts>102</tts>',
+  967 => '<tts>99</tts>',
+  968 => '<tts>121</tts>',
+  969 => '<tts>119</tts>',
+  977 => '<tts>74</tts>',
+  978 => '<tts>161</tts>',
+  981 => '<tts>106</tts>',
+  982 => '<tts>118</tts>',
+  8242 => '<tts>162</tts>',
+  8243 => '<tts>178</tts>',
+  8260 => '<tts>164</tts>',
+  8465 => '<tts>193</tts>',
+  8472 => '<tts>195</tts>',
+  8476 => '<tts>194</tts>',
+  8486 => '<tts>87</tts>',
+  8501 => '<tts>192</tts>',
+  8592 => '<tts>172</tts>',
+  8593 => '<tts>173</tts>',
+  8594 => '<tts>174</tts>',
+  8595 => '<tts>175</tts>',
+  8596 => '<tts>171</tts>',
+  8597 => '<ttz>215</ttz>',
+  8629 => '<tts>191</tts>',
+  8656 => '<tts>220</tts>',
+  8657 => '<tts>221</tts>',
+  8658 => '<tts>222</tts>',
+  8659 => '<tts>223</tts>',
+  8660 => '<tts>219</tts>',
+  8704 => '<tts>34</tts>',
+  8706 => '<tts>182</tts>',
+  8707 => '<tts>36</tts>',
+  8709 => '<tts>198</tts>',
+  8710 => '<tts>68</tts>',
+  8711 => '<tts>209</tts>',
+  8712 => '<tts>206</tts>',
+  8713 => '<tts>207</tts>',
+  8715 => '<tts>39</tts>',
+  8719 => '<tts>213</tts>',
+  8721 => '<tts>229</tts>',
+  8722 => '<tts>45</tts>',
+  8725 => '<tts>164</tts>',
+  8727 => '<tts>42</tts>',
+  8730 => '<tts>214</tts>',
+  8733 => '<tts>181</tts>',
+  8734 => '<tts>165</tts>',
+  8736 => '<tts>208</tts>',
+  8743 => '<tts>217</tts>',
+  8744 => '<tts>218</tts>',
+  8745 => '<tts>199</tts>',
+  8746 => '<tts>200</tts>',
+  8747 => '<tts>242</tts>',
+  8756 => '<tts>92</tts>',
+  8764 => '<tts>126</tts>',
+  8773 => '<tts>64</tts>',
+  8776 => '<tts>187</tts>',
+  8800 => '<tts>185</tts>',
+  8801 => '<tts>186</tts>',
+  8804 => '<tts>163</tts>',
+  8805 => '<tts>179</tts>',
+  8834 => '<tts>204</tts>',
+  8835 => '<tts>201</tts>',
+  8836 => '<tts>203</tts>',
+  8838 => '<tts>205</tts>',
+  8839 => '<tts>202</tts>',
+  8853 => '<tts>197</tts>',
+  8855 => '<tts>196</tts>',
+  8869 => '<tts>94</tts>',
+  8901 => '<tts>215</tts>',
+  8992 => '<tts>243</tts>',
+  8993 => '<tts>245</tts>',
+  9001 => '<tts>225</tts>',
+  9002 => '<tts>241</tts>',
+  9312 => '<ttz>172</ttz>',
+  9313 => '<ttz>173</ttz>',
+  9314 => '<ttz>174</ttz>',
+  9315 => '<ttz>175</ttz>',
+  9316 => '<ttz>176</ttz>',
+  9317 => '<ttz>177</ttz>',
+  9318 => '<ttz>178</ttz>',
+  9319 => '<ttz>179</ttz>',
+  9320 => '<ttz>180</ttz>',
+  9321 => '<ttz>181</ttz>',
+  9632 => '<ttz>110</ttz>',
+  9650 => '<ttz>115</ttz>',
+  9660 => '<ttz>116</ttz>',
+  9670 => '<ttz>117</ttz>',
+  9674 => '<tts>224</tts>',
+  9679 => '<ttz>108</ttz>',
+  9687 => '<ttz>119</ttz>',
+  9733 => '<ttz>72</ttz>',
+  9742 => '<ttz>37</ttz>',
+  9755 => '<ttz>42</ttz>',
+  9758 => '<ttz>43</ttz>',
+  9824 => '<tts>170</tts>',
+  9827 => '<tts>167</tts>',
+  9829 => '<tts>169</tts>',
+  9830 => '<tts>168</tts>',
+  9985 => '<ttz>33</ttz>',
+  9986 => '<ttz>34</ttz>',
+  9987 => '<ttz>35</ttz>',
+  9988 => '<ttz>36</ttz>',
+  9990 => '<ttz>38</ttz>',
+  9991 => '<ttz>39</ttz>',
+  9992 => '<ttz>40</ttz>',
+  9993 => '<ttz>41</ttz>',
+  9996 => '<ttz>44</ttz>',
+  9997 => '<ttz>45</ttz>',
+  9998 => '<ttz>46</ttz>',
+  9999 => '<ttz>47</ttz>',
+  10000 => '<ttz>48</ttz>',
+  10001 => '<ttz>49</ttz>',
+  10002 => '<ttz>50</ttz>',
+  10003 => '<ttz>51</ttz>',
+  10004 => '<ttz>52</ttz>',
+  10005 => '<ttz>53</ttz>',
+  10006 => '<ttz>54</ttz>',
+  10007 => '<ttz>55</ttz>',
+  10008 => '<ttz>56</ttz>',
+  10009 => '<ttz>57</ttz>',
+  10010 => '<ttz>58</ttz>',
+  10011 => '<ttz>59</ttz>',
+  10012 => '<ttz>60</ttz>',
+  10013 => '<ttz>61</ttz>',
+  10014 => '<ttz>62</ttz>',
+  10015 => '<ttz>63</ttz>',
+  10016 => '<ttz>64</ttz>',
+  10017 => '<ttz>65</ttz>',
+  10018 => '<ttz>66</ttz>',
+  10019 => '<ttz>67</ttz>',
+  10020 => '<ttz>68</ttz>',
+  10021 => '<ttz>69</ttz>',
+  10022 => '<ttz>70</ttz>',
+  10023 => '<ttz>71</ttz>',
+  10025 => '<ttz>73</ttz>',
+  10026 => '<ttz>74</ttz>',
+  10027 => '<ttz>75</ttz>',
+  10028 => '<ttz>76</ttz>',
+  10029 => '<ttz>77</ttz>',
+  10030 => '<ttz>78</ttz>',
+  10031 => '<ttz>79</ttz>',
+  10032 => '<ttz>80</ttz>',
+  10033 => '<ttz>81</ttz>',
+  10034 => '<ttz>82</ttz>',
+  10035 => '<ttz>83</ttz>',
+  10036 => '<ttz>84</ttz>',
+  10037 => '<ttz>85</ttz>',
+  10038 => '<ttz>86</ttz>',
+  10039 => '<ttz>87</ttz>',
+  10040 => '<ttz>88</ttz>',
+  10041 => '<ttz>89</ttz>',
+  10042 => '<ttz>90</ttz>',
+  10043 => '<ttz>91</ttz>',
+  10044 => '<ttz>92</ttz>',
+  10045 => '<ttz>93</ttz>',
+  10046 => '<ttz>94</ttz>',
+  10047 => '<ttz>95</ttz>',
+  10048 => '<ttz>96</ttz>',
+  10049 => '<ttz>97</ttz>',
+  10050 => '<ttz>98</ttz>',
+  10051 => '<ttz>99</ttz>',
+  10052 => '<ttz>100</ttz>',
+  10053 => '<ttz>101</ttz>',
+  10054 => '<ttz>102</ttz>',
+  10055 => '<ttz>103</ttz>',
+  10056 => '<ttz>104</ttz>',
+  10057 => '<ttz>105</ttz>',
+  10058 => '<ttz>106</ttz>',
+  10059 => '<ttz>107</ttz>',
+  10061 => '<ttz>109</ttz>',
+  10063 => '<ttz>111</ttz>',
+  10064 => '<ttz>112</ttz>',
+  10065 => '<ttz>113</ttz>',
+  10066 => '<ttz>114</ttz>',
+  10070 => '<ttz>118</ttz>',
+  10072 => '<ttz>120</ttz>',
+  10073 => '<ttz>121</ttz>',
+  10074 => '<ttz>122</ttz>',
+  10075 => '<ttz>123</ttz>',
+  10076 => '<ttz>124</ttz>',
+  10077 => '<ttz>125</ttz>',
+  10078 => '<ttz>126</ttz>',
+  10081 => '<ttz>161</ttz>',
+  10082 => '<ttz>162</ttz>',
+  10083 => '<ttz>163</ttz>',
+  10084 => '<ttz>164</ttz>',
+  10085 => '<ttz>165</ttz>',
+  10086 => '<ttz>166</ttz>',
+  10087 => '<ttz>167</ttz>',
+  10102 => '<ttz>182</ttz>',
+  10103 => '<ttz>183</ttz>',
+  10104 => '<ttz>184</ttz>',
+  10105 => '<ttz>185</ttz>',
+  10106 => '<ttz>186</ttz>',
+  10107 => '<ttz>187</ttz>',
+  10108 => '<ttz>188</ttz>',
+  10109 => '<ttz>189</ttz>',
+  10110 => '<ttz>190</ttz>',
+  10111 => '<ttz>191</ttz>',
+  10112 => '<ttz>192</ttz>',
+  10113 => '<ttz>193</ttz>',
+  10114 => '<ttz>194</ttz>',
+  10115 => '<ttz>195</ttz>',
+  10116 => '<ttz>196</ttz>',
+  10117 => '<ttz>197</ttz>',
+  10118 => '<ttz>198</ttz>',
+  10119 => '<ttz>199</ttz>',
+  10120 => '<ttz>200</ttz>',
+  10121 => '<ttz>201</ttz>',
+  10122 => '<ttz>202</ttz>',
+  10123 => '<ttz>203</ttz>',
+  10124 => '<ttz>204</ttz>',
+  10125 => '<ttz>205</ttz>',
+  10126 => '<ttz>206</ttz>',
+  10127 => '<ttz>207</ttz>',
+  10128 => '<ttz>208</ttz>',
+  10129 => '<ttz>209</ttz>',
+  10130 => '<ttz>210</ttz>',
+  10131 => '<ttz>211</ttz>',
+  10132 => '<ttz>212</ttz>',
+  10136 => '<ttz>216</ttz>',
+  10137 => '<ttz>217</ttz>',
+  10138 => '<ttz>218</ttz>',
+  10139 => '<ttz>219</ttz>',
+  10140 => '<ttz>220</ttz>',
+  10141 => '<ttz>221</ttz>',
+  10142 => '<ttz>222</ttz>',
+  10143 => '<ttz>223</ttz>',
+  10144 => '<ttz>224</ttz>',
+  10145 => '<ttz>225</ttz>',
+  10146 => '<ttz>226</ttz>',
+  10147 => '<ttz>227</ttz>',
+  10148 => '<ttz>228</ttz>',
+  10149 => '<ttz>229</ttz>',
+  10150 => '<ttz>230</ttz>',
+  10151 => '<ttz>231</ttz>',
+  10152 => '<ttz>232</ttz>',
+  10153 => '<ttz>233</ttz>',
+  10154 => '<ttz>234</ttz>',
+  10155 => '<ttz>235</ttz>',
+  10156 => '<ttz>236</ttz>',
+  10157 => '<ttz>237</ttz>',
+  10158 => '<ttz>238</ttz>',
+  10159 => '<ttz>239</ttz>',
+  10161 => '<ttz>241</ttz>',
+  10162 => '<ttz>242</ttz>',
+  10163 => '<ttz>243</ttz>',
+  10164 => '<ttz>244</ttz>',
+  10165 => '<ttz>245</ttz>',
+  10166 => '<ttz>246</ttz>',
+  10167 => '<ttz>247</ttz>',
+  10168 => '<ttz>248</ttz>',
+  10169 => '<ttz>249</ttz>',
+  10170 => '<ttz>250</ttz>',
+  10171 => '<ttz>251</ttz>',
+  10172 => '<ttz>252</ttz>',
+  10173 => '<ttz>253</ttz>',
+  10174 => '<ttz>254</ttz>',
+);
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/includes/upperCase.php b/inc/3rdparty/libraries/mpdf/includes/upperCase.php
new file mode 100644 (file)
index 0000000..020f426
--- /dev/null
@@ -0,0 +1,975 @@
+<?php
+$this->upperCase=array (
+  97 => 65,
+  98 => 66,
+  99 => 67,
+  100 => 68,
+  101 => 69,
+  102 => 70,
+  103 => 71,
+  104 => 72,
+  105 => 73,
+  106 => 74,
+  107 => 75,
+  108 => 76,
+  109 => 77,
+  110 => 78,
+  111 => 79,
+  112 => 80,
+  113 => 81,
+  114 => 82,
+  115 => 83,
+  116 => 84,
+  117 => 85,
+  118 => 86,
+  119 => 87,
+  120 => 88,
+  121 => 89,
+  122 => 90,
+  181 => 924,
+  224 => 192,
+  225 => 193,
+  226 => 194,
+  227 => 195,
+  228 => 196,
+  229 => 197,
+  230 => 198,
+  231 => 199,
+  232 => 200,
+  233 => 201,
+  234 => 202,
+  235 => 203,
+  236 => 204,
+  237 => 205,
+  238 => 206,
+  239 => 207,
+  240 => 208,
+  241 => 209,
+  242 => 210,
+  243 => 211,
+  244 => 212,
+  245 => 213,
+  246 => 214,
+  248 => 216,
+  249 => 217,
+  250 => 218,
+  251 => 219,
+  252 => 220,
+  253 => 221,
+  254 => 222,
+  255 => 376,
+  257 => 256,
+  259 => 258,
+  261 => 260,
+  263 => 262,
+  265 => 264,
+  267 => 266,
+  269 => 268,
+  271 => 270,
+  273 => 272,
+  275 => 274,
+  277 => 276,
+  279 => 278,
+  281 => 280,
+  283 => 282,
+  285 => 284,
+  287 => 286,
+  289 => 288,
+  291 => 290,
+  293 => 292,
+  295 => 294,
+  297 => 296,
+  299 => 298,
+  301 => 300,
+  303 => 302,
+  305 => 73,
+  307 => 306,
+  309 => 308,
+  311 => 310,
+  314 => 313,
+  316 => 315,
+  318 => 317,
+  320 => 319,
+  322 => 321,
+  324 => 323,
+  326 => 325,
+  328 => 327,
+  331 => 330,
+  333 => 332,
+  335 => 334,
+  337 => 336,
+  339 => 338,
+  341 => 340,
+  343 => 342,
+  345 => 344,
+  347 => 346,
+  349 => 348,
+  351 => 350,
+  353 => 352,
+  355 => 354,
+  357 => 356,
+  359 => 358,
+  361 => 360,
+  363 => 362,
+  365 => 364,
+  367 => 366,
+  369 => 368,
+  371 => 370,
+  373 => 372,
+  375 => 374,
+  378 => 377,
+  380 => 379,
+  382 => 381,
+  383 => 83,
+  384 => 579,
+  387 => 386,
+  389 => 388,
+  392 => 391,
+  396 => 395,
+  402 => 401,
+  405 => 502,
+  409 => 408,
+  410 => 573,
+  414 => 544,
+  417 => 416,
+  419 => 418,
+  421 => 420,
+  424 => 423,
+  429 => 428,
+  432 => 431,
+  436 => 435,
+  438 => 437,
+  441 => 440,
+  445 => 444,
+  447 => 503,
+  453 => 452,
+  454 => 452,
+  456 => 455,
+  457 => 455,
+  459 => 458,
+  460 => 458,
+  462 => 461,
+  464 => 463,
+  466 => 465,
+  468 => 467,
+  470 => 469,
+  472 => 471,
+  474 => 473,
+  476 => 475,
+  477 => 398,
+  479 => 478,
+  481 => 480,
+  483 => 482,
+  485 => 484,
+  487 => 486,
+  489 => 488,
+  491 => 490,
+  493 => 492,
+  495 => 494,
+  498 => 497,
+  499 => 497,
+  501 => 500,
+  505 => 504,
+  507 => 506,
+  509 => 508,
+  511 => 510,
+  513 => 512,
+  515 => 514,
+  517 => 516,
+  519 => 518,
+  521 => 520,
+  523 => 522,
+  525 => 524,
+  527 => 526,
+  529 => 528,
+  531 => 530,
+  533 => 532,
+  535 => 534,
+  537 => 536,
+  539 => 538,
+  541 => 540,
+  543 => 542,
+  547 => 546,
+  549 => 548,
+  551 => 550,
+  553 => 552,
+  555 => 554,
+  557 => 556,
+  559 => 558,
+  561 => 560,
+  563 => 562,
+  572 => 571,
+  575 => 11390,
+  576 => 11391,
+  578 => 577,
+  583 => 582,
+  585 => 584,
+  587 => 586,
+  589 => 588,
+  591 => 590,
+  592 => 11375,
+  593 => 11373,
+  594 => 11376,
+  595 => 385,
+  596 => 390,
+  598 => 393,
+  599 => 394,
+  601 => 399,
+  603 => 400,
+  608 => 403,
+  611 => 404,
+  616 => 407,
+  617 => 406,
+  619 => 11362,
+  623 => 412,
+  625 => 11374,
+  626 => 413,
+  629 => 415,
+  637 => 11364,
+  640 => 422,
+  643 => 425,
+  648 => 430,
+  649 => 580,
+  650 => 433,
+  651 => 434,
+  652 => 581,
+  658 => 439,
+  837 => 921,
+  881 => 880,
+  883 => 882,
+  887 => 886,
+  891 => 1021,
+  892 => 1022,
+  893 => 1023,
+  940 => 902,
+  941 => 904,
+  942 => 905,
+  943 => 906,
+  945 => 913,
+  946 => 914,
+  947 => 915,
+  948 => 916,
+  949 => 917,
+  950 => 918,
+  951 => 919,
+  952 => 920,
+  953 => 921,
+  954 => 922,
+  955 => 923,
+  956 => 924,
+  957 => 925,
+  958 => 926,
+  959 => 927,
+  960 => 928,
+  961 => 929,
+  962 => 931,
+  963 => 931,
+  964 => 932,
+  965 => 933,
+  966 => 934,
+  967 => 935,
+  968 => 936,
+  969 => 937,
+  970 => 938,
+  971 => 939,
+  972 => 908,
+  973 => 910,
+  974 => 911,
+  976 => 914,
+  977 => 920,
+  981 => 934,
+  982 => 928,
+  983 => 975,
+  985 => 984,
+  987 => 986,
+  989 => 988,
+  991 => 990,
+  993 => 992,
+  995 => 994,
+  997 => 996,
+  999 => 998,
+  1001 => 1000,
+  1003 => 1002,
+  1005 => 1004,
+  1007 => 1006,
+  1008 => 922,
+  1009 => 929,
+  1010 => 1017,
+  1013 => 917,
+  1016 => 1015,
+  1019 => 1018,
+  1072 => 1040,
+  1073 => 1041,
+  1074 => 1042,
+  1075 => 1043,
+  1076 => 1044,
+  1077 => 1045,
+  1078 => 1046,
+  1079 => 1047,
+  1080 => 1048,
+  1081 => 1049,
+  1082 => 1050,
+  1083 => 1051,
+  1084 => 1052,
+  1085 => 1053,
+  1086 => 1054,
+  1087 => 1055,
+  1088 => 1056,
+  1089 => 1057,
+  1090 => 1058,
+  1091 => 1059,
+  1092 => 1060,
+  1093 => 1061,
+  1094 => 1062,
+  1095 => 1063,
+  1096 => 1064,
+  1097 => 1065,
+  1098 => 1066,
+  1099 => 1067,
+  1100 => 1068,
+  1101 => 1069,
+  1102 => 1070,
+  1103 => 1071,
+  1104 => 1024,
+  1105 => 1025,
+  1106 => 1026,
+  1107 => 1027,
+  1108 => 1028,
+  1109 => 1029,
+  1110 => 1030,
+  1111 => 1031,
+  1112 => 1032,
+  1113 => 1033,
+  1114 => 1034,
+  1115 => 1035,
+  1116 => 1036,
+  1117 => 1037,
+  1118 => 1038,
+  1119 => 1039,
+  1121 => 1120,
+  1123 => 1122,
+  1125 => 1124,
+  1127 => 1126,
+  1129 => 1128,
+  1131 => 1130,
+  1133 => 1132,
+  1135 => 1134,
+  1137 => 1136,
+  1139 => 1138,
+  1141 => 1140,
+  1143 => 1142,
+  1145 => 1144,
+  1147 => 1146,
+  1149 => 1148,
+  1151 => 1150,
+  1153 => 1152,
+  1163 => 1162,
+  1165 => 1164,
+  1167 => 1166,
+  1169 => 1168,
+  1171 => 1170,
+  1173 => 1172,
+  1175 => 1174,
+  1177 => 1176,
+  1179 => 1178,
+  1181 => 1180,
+  1183 => 1182,
+  1185 => 1184,
+  1187 => 1186,
+  1189 => 1188,
+  1191 => 1190,
+  1193 => 1192,
+  1195 => 1194,
+  1197 => 1196,
+  1199 => 1198,
+  1201 => 1200,
+  1203 => 1202,
+  1205 => 1204,
+  1207 => 1206,
+  1209 => 1208,
+  1211 => 1210,
+  1213 => 1212,
+  1215 => 1214,
+  1218 => 1217,
+  1220 => 1219,
+  1222 => 1221,
+  1224 => 1223,
+  1226 => 1225,
+  1228 => 1227,
+  1230 => 1229,
+  1231 => 1216,
+  1233 => 1232,
+  1235 => 1234,
+  1237 => 1236,
+  1239 => 1238,
+  1241 => 1240,
+  1243 => 1242,
+  1245 => 1244,
+  1247 => 1246,
+  1249 => 1248,
+  1251 => 1250,
+  1253 => 1252,
+  1255 => 1254,
+  1257 => 1256,
+  1259 => 1258,
+  1261 => 1260,
+  1263 => 1262,
+  1265 => 1264,
+  1267 => 1266,
+  1269 => 1268,
+  1271 => 1270,
+  1273 => 1272,
+  1275 => 1274,
+  1277 => 1276,
+  1279 => 1278,
+  1281 => 1280,
+  1283 => 1282,
+  1285 => 1284,
+  1287 => 1286,
+  1289 => 1288,
+  1291 => 1290,
+  1293 => 1292,
+  1295 => 1294,
+  1297 => 1296,
+  1299 => 1298,
+  1301 => 1300,
+  1303 => 1302,
+  1305 => 1304,
+  1307 => 1306,
+  1309 => 1308,
+  1311 => 1310,
+  1313 => 1312,
+  1315 => 1314,
+  1317 => 1316,
+  1377 => 1329,
+  1378 => 1330,
+  1379 => 1331,
+  1380 => 1332,
+  1381 => 1333,
+  1382 => 1334,
+  1383 => 1335,
+  1384 => 1336,
+  1385 => 1337,
+  1386 => 1338,
+  1387 => 1339,
+  1388 => 1340,
+  1389 => 1341,
+  1390 => 1342,
+  1391 => 1343,
+  1392 => 1344,
+  1393 => 1345,
+  1394 => 1346,
+  1395 => 1347,
+  1396 => 1348,
+  1397 => 1349,
+  1398 => 1350,
+  1399 => 1351,
+  1400 => 1352,
+  1401 => 1353,
+  1402 => 1354,
+  1403 => 1355,
+  1404 => 1356,
+  1405 => 1357,
+  1406 => 1358,
+  1407 => 1359,
+  1408 => 1360,
+  1409 => 1361,
+  1410 => 1362,
+  1411 => 1363,
+  1412 => 1364,
+  1413 => 1365,
+  1414 => 1366,
+  7545 => 42877,
+  7549 => 11363,
+  7681 => 7680,
+  7683 => 7682,
+  7685 => 7684,
+  7687 => 7686,
+  7689 => 7688,
+  7691 => 7690,
+  7693 => 7692,
+  7695 => 7694,
+  7697 => 7696,
+  7699 => 7698,
+  7701 => 7700,
+  7703 => 7702,
+  7705 => 7704,
+  7707 => 7706,
+  7709 => 7708,
+  7711 => 7710,
+  7713 => 7712,
+  7715 => 7714,
+  7717 => 7716,
+  7719 => 7718,
+  7721 => 7720,
+  7723 => 7722,
+  7725 => 7724,
+  7727 => 7726,
+  7729 => 7728,
+  7731 => 7730,
+  7733 => 7732,
+  7735 => 7734,
+  7737 => 7736,
+  7739 => 7738,
+  7741 => 7740,
+  7743 => 7742,
+  7745 => 7744,
+  7747 => 7746,
+  7749 => 7748,
+  7751 => 7750,
+  7753 => 7752,
+  7755 => 7754,
+  7757 => 7756,
+  7759 => 7758,
+  7761 => 7760,
+  7763 => 7762,
+  7765 => 7764,
+  7767 => 7766,
+  7769 => 7768,
+  7771 => 7770,
+  7773 => 7772,
+  7775 => 7774,
+  7777 => 7776,
+  7779 => 7778,
+  7781 => 7780,
+  7783 => 7782,
+  7785 => 7784,
+  7787 => 7786,
+  7789 => 7788,
+  7791 => 7790,
+  7793 => 7792,
+  7795 => 7794,
+  7797 => 7796,
+  7799 => 7798,
+  7801 => 7800,
+  7803 => 7802,
+  7805 => 7804,
+  7807 => 7806,
+  7809 => 7808,
+  7811 => 7810,
+  7813 => 7812,
+  7815 => 7814,
+  7817 => 7816,
+  7819 => 7818,
+  7821 => 7820,
+  7823 => 7822,
+  7825 => 7824,
+  7827 => 7826,
+  7829 => 7828,
+  7835 => 7776,
+  7841 => 7840,
+  7843 => 7842,
+  7845 => 7844,
+  7847 => 7846,
+  7849 => 7848,
+  7851 => 7850,
+  7853 => 7852,
+  7855 => 7854,
+  7857 => 7856,
+  7859 => 7858,
+  7861 => 7860,
+  7863 => 7862,
+  7865 => 7864,
+  7867 => 7866,
+  7869 => 7868,
+  7871 => 7870,
+  7873 => 7872,
+  7875 => 7874,
+  7877 => 7876,
+  7879 => 7878,
+  7881 => 7880,
+  7883 => 7882,
+  7885 => 7884,
+  7887 => 7886,
+  7889 => 7888,
+  7891 => 7890,
+  7893 => 7892,
+  7895 => 7894,
+  7897 => 7896,
+  7899 => 7898,
+  7901 => 7900,
+  7903 => 7902,
+  7905 => 7904,
+  7907 => 7906,
+  7909 => 7908,
+  7911 => 7910,
+  7913 => 7912,
+  7915 => 7914,
+  7917 => 7916,
+  7919 => 7918,
+  7921 => 7920,
+  7923 => 7922,
+  7925 => 7924,
+  7927 => 7926,
+  7929 => 7928,
+  7931 => 7930,
+  7933 => 7932,
+  7935 => 7934,
+  7936 => 7944,
+  7937 => 7945,
+  7938 => 7946,
+  7939 => 7947,
+  7940 => 7948,
+  7941 => 7949,
+  7942 => 7950,
+  7943 => 7951,
+  7952 => 7960,
+  7953 => 7961,
+  7954 => 7962,
+  7955 => 7963,
+  7956 => 7964,
+  7957 => 7965,
+  7968 => 7976,
+  7969 => 7977,
+  7970 => 7978,
+  7971 => 7979,
+  7972 => 7980,
+  7973 => 7981,
+  7974 => 7982,
+  7975 => 7983,
+  7984 => 7992,
+  7985 => 7993,
+  7986 => 7994,
+  7987 => 7995,
+  7988 => 7996,
+  7989 => 7997,
+  7990 => 7998,
+  7991 => 7999,
+  8000 => 8008,
+  8001 => 8009,
+  8002 => 8010,
+  8003 => 8011,
+  8004 => 8012,
+  8005 => 8013,
+  8017 => 8025,
+  8019 => 8027,
+  8021 => 8029,
+  8023 => 8031,
+  8032 => 8040,
+  8033 => 8041,
+  8034 => 8042,
+  8035 => 8043,
+  8036 => 8044,
+  8037 => 8045,
+  8038 => 8046,
+  8039 => 8047,
+  8048 => 8122,
+  8049 => 8123,
+  8050 => 8136,
+  8051 => 8137,
+  8052 => 8138,
+  8053 => 8139,
+  8054 => 8154,
+  8055 => 8155,
+  8056 => 8184,
+  8057 => 8185,
+  8058 => 8170,
+  8059 => 8171,
+  8060 => 8186,
+  8061 => 8187,
+  8064 => 8072,
+  8065 => 8073,
+  8066 => 8074,
+  8067 => 8075,
+  8068 => 8076,
+  8069 => 8077,
+  8070 => 8078,
+  8071 => 8079,
+  8080 => 8088,
+  8081 => 8089,
+  8082 => 8090,
+  8083 => 8091,
+  8084 => 8092,
+  8085 => 8093,
+  8086 => 8094,
+  8087 => 8095,
+  8096 => 8104,
+  8097 => 8105,
+  8098 => 8106,
+  8099 => 8107,
+  8100 => 8108,
+  8101 => 8109,
+  8102 => 8110,
+  8103 => 8111,
+  8112 => 8120,
+  8113 => 8121,
+  8115 => 8124,
+  8126 => 921,
+  8131 => 8140,
+  8144 => 8152,
+  8145 => 8153,
+  8160 => 8168,
+  8161 => 8169,
+  8165 => 8172,
+  8179 => 8188,
+  8526 => 8498,
+  8560 => 8544,
+  8561 => 8545,
+  8562 => 8546,
+  8563 => 8547,
+  8564 => 8548,
+  8565 => 8549,
+  8566 => 8550,
+  8567 => 8551,
+  8568 => 8552,
+  8569 => 8553,
+  8570 => 8554,
+  8571 => 8555,
+  8572 => 8556,
+  8573 => 8557,
+  8574 => 8558,
+  8575 => 8559,
+  8580 => 8579,
+  9424 => 9398,
+  9425 => 9399,
+  9426 => 9400,
+  9427 => 9401,
+  9428 => 9402,
+  9429 => 9403,
+  9430 => 9404,
+  9431 => 9405,
+  9432 => 9406,
+  9433 => 9407,
+  9434 => 9408,
+  9435 => 9409,
+  9436 => 9410,
+  9437 => 9411,
+  9438 => 9412,
+  9439 => 9413,
+  9440 => 9414,
+  9441 => 9415,
+  9442 => 9416,
+  9443 => 9417,
+  9444 => 9418,
+  9445 => 9419,
+  9446 => 9420,
+  9447 => 9421,
+  9448 => 9422,
+  9449 => 9423,
+  11312 => 11264,
+  11313 => 11265,
+  11314 => 11266,
+  11315 => 11267,
+  11316 => 11268,
+  11317 => 11269,
+  11318 => 11270,
+  11319 => 11271,
+  11320 => 11272,
+  11321 => 11273,
+  11322 => 11274,
+  11323 => 11275,
+  11324 => 11276,
+  11325 => 11277,
+  11326 => 11278,
+  11327 => 11279,
+  11328 => 11280,
+  11329 => 11281,
+  11330 => 11282,
+  11331 => 11283,
+  11332 => 11284,
+  11333 => 11285,
+  11334 => 11286,
+  11335 => 11287,
+  11336 => 11288,
+  11337 => 11289,
+  11338 => 11290,
+  11339 => 11291,
+  11340 => 11292,
+  11341 => 11293,
+  11342 => 11294,
+  11343 => 11295,
+  11344 => 11296,
+  11345 => 11297,
+  11346 => 11298,
+  11347 => 11299,
+  11348 => 11300,
+  11349 => 11301,
+  11350 => 11302,
+  11351 => 11303,
+  11352 => 11304,
+  11353 => 11305,
+  11354 => 11306,
+  11355 => 11307,
+  11356 => 11308,
+  11357 => 11309,
+  11358 => 11310,
+  11361 => 11360,
+  11365 => 570,
+  11366 => 574,
+  11368 => 11367,
+  11370 => 11369,
+  11372 => 11371,
+  11379 => 11378,
+  11382 => 11381,
+  11393 => 11392,
+  11395 => 11394,
+  11397 => 11396,
+  11399 => 11398,
+  11401 => 11400,
+  11403 => 11402,
+  11405 => 11404,
+  11407 => 11406,
+  11409 => 11408,
+  11411 => 11410,
+  11413 => 11412,
+  11415 => 11414,
+  11417 => 11416,
+  11419 => 11418,
+  11421 => 11420,
+  11423 => 11422,
+  11425 => 11424,
+  11427 => 11426,
+  11429 => 11428,
+  11431 => 11430,
+  11433 => 11432,
+  11435 => 11434,
+  11437 => 11436,
+  11439 => 11438,
+  11441 => 11440,
+  11443 => 11442,
+  11445 => 11444,
+  11447 => 11446,
+  11449 => 11448,
+  11451 => 11450,
+  11453 => 11452,
+  11455 => 11454,
+  11457 => 11456,
+  11459 => 11458,
+  11461 => 11460,
+  11463 => 11462,
+  11465 => 11464,
+  11467 => 11466,
+  11469 => 11468,
+  11471 => 11470,
+  11473 => 11472,
+  11475 => 11474,
+  11477 => 11476,
+  11479 => 11478,
+  11481 => 11480,
+  11483 => 11482,
+  11485 => 11484,
+  11487 => 11486,
+  11489 => 11488,
+  11491 => 11490,
+  11500 => 11499,
+  11502 => 11501,
+  11520 => 4256,
+  11521 => 4257,
+  11522 => 4258,
+  11523 => 4259,
+  11524 => 4260,
+  11525 => 4261,
+  11526 => 4262,
+  11527 => 4263,
+  11528 => 4264,
+  11529 => 4265,
+  11530 => 4266,
+  11531 => 4267,
+  11532 => 4268,
+  11533 => 4269,
+  11534 => 4270,
+  11535 => 4271,
+  11536 => 4272,
+  11537 => 4273,
+  11538 => 4274,
+  11539 => 4275,
+  11540 => 4276,
+  11541 => 4277,
+  11542 => 4278,
+  11543 => 4279,
+  11544 => 4280,
+  11545 => 4281,
+  11546 => 4282,
+  11547 => 4283,
+  11548 => 4284,
+  11549 => 4285,
+  11550 => 4286,
+  11551 => 4287,
+  11552 => 4288,
+  11553 => 4289,
+  11554 => 4290,
+  11555 => 4291,
+  11556 => 4292,
+  11557 => 4293,
+  42561 => 42560,
+  42563 => 42562,
+  42565 => 42564,
+  42567 => 42566,
+  42569 => 42568,
+  42571 => 42570,
+  42573 => 42572,
+  42575 => 42574,
+  42577 => 42576,
+  42579 => 42578,
+  42581 => 42580,
+  42583 => 42582,
+  42585 => 42584,
+  42587 => 42586,
+  42589 => 42588,
+  42591 => 42590,
+  42595 => 42594,
+  42597 => 42596,
+  42599 => 42598,
+  42601 => 42600,
+  42603 => 42602,
+  42605 => 42604,
+  42625 => 42624,
+  42627 => 42626,
+  42629 => 42628,
+  42631 => 42630,
+  42633 => 42632,
+  42635 => 42634,
+  42637 => 42636,
+  42639 => 42638,
+  42641 => 42640,
+  42643 => 42642,
+  42645 => 42644,
+  42647 => 42646,
+  42787 => 42786,
+  42789 => 42788,
+  42791 => 42790,
+  42793 => 42792,
+  42795 => 42794,
+  42797 => 42796,
+  42799 => 42798,
+  42803 => 42802,
+  42805 => 42804,
+  42807 => 42806,
+  42809 => 42808,
+  42811 => 42810,
+  42813 => 42812,
+  42815 => 42814,
+  42817 => 42816,
+  42819 => 42818,
+  42821 => 42820,
+  42823 => 42822,
+  42825 => 42824,
+  42827 => 42826,
+  42829 => 42828,
+  42831 => 42830,
+  42833 => 42832,
+  42835 => 42834,
+  42837 => 42836,
+  42839 => 42838,
+  42841 => 42840,
+  42843 => 42842,
+  42845 => 42844,
+  42847 => 42846,
+  42849 => 42848,
+  42851 => 42850,
+  42853 => 42852,
+  42855 => 42854,
+  42857 => 42856,
+  42859 => 42858,
+  42861 => 42860,
+  42863 => 42862,
+  42874 => 42873,
+  42876 => 42875,
+  42879 => 42878,
+  42881 => 42880,
+  42883 => 42882,
+  42885 => 42884,
+  42887 => 42886,
+  42892 => 42891,
+);
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdf.css b/inc/3rdparty/libraries/mpdf/mpdf.css
new file mode 100644 (file)
index 0000000..b46d0d6
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+   This is a secondary default stylesheet for mPDF
+   It will only parse element-level CSS here 
+   Remove the comment marks below and edit as required
+*/
+
+
+
+/* 
+   These values used to be the default prior to mPDF 4.2
+   Altered to make appearance closer to that of browsers
+   Uncomment these lines to return to behaviour prior to v4.2  
+*/
+
+
+/*
+img { margin: 0.83em 0; vertical-align: bottom; }
+table { margin: 0.5em; }
+textarea { vertical-align: top; }
+*/
diff --git a/inc/3rdparty/libraries/mpdf/mpdf.php b/inc/3rdparty/libraries/mpdf/mpdf.php
new file mode 100644 (file)
index 0000000..dbe16fe
--- /dev/null
@@ -0,0 +1,32723 @@
+<?php
+
+// ******************************************************************************
+// Software: mPDF, Unicode-HTML Free PDF generator                              *
+// Version:  5.7     based on                                                   *
+//           FPDF by Olivier PLATHEY                                            *
+//           HTML2FPDF by Renato Coelho                                         *
+// Date:     2013-07-14                                                         *
+// Author:   Ian Back <ianb@bpm1.com>                                           *
+// License:  GPL                                                                *
+//                                                                              *
+// Changes:  See changelog.txt                                                  *
+// ******************************************************************************
+
+
+define('mPDF_VERSION','5.7');
+
+//Scale factor
+define('_MPDFK', (72/25.4));
+
+/*-- HTML-CSS --*/
+define('AUTOFONT_CJK',1);
+define('AUTOFONT_THAIVIET',2);
+define('AUTOFONT_RTL',4);
+define('AUTOFONT_INDIC',8);
+define('AUTOFONT_ALL',15);
+
+define('_BORDER_ALL',15);
+define('_BORDER_TOP',8);
+define('_BORDER_RIGHT',4);
+define('_BORDER_BOTTOM',2);
+define('_BORDER_LEFT',1);
+/*-- END HTML-CSS --*/
+
+if (!defined('_MPDF_PATH')) define('_MPDF_PATH', dirname(preg_replace('/\\\\/','/',__FILE__)) . '/');
+if (!defined('_MPDF_URI')) define('_MPDF_URI',_MPDF_PATH);
+
+require_once(_MPDF_PATH.'includes/functions.php');
+require_once(_MPDF_PATH.'config_cp.php');
+
+if (!defined('_JPGRAPH_PATH')) define("_JPGRAPH_PATH", _MPDF_PATH.'jpgraph/'); 
+
+if (!defined('_MPDF_TEMP_PATH')) define("_MPDF_TEMP_PATH", _MPDF_PATH.'tmp/');
+
+if (!defined('_MPDF_TTFONTPATH')) { define('_MPDF_TTFONTPATH',_MPDF_PATH.'ttfonts/'); }
+if (!defined('_MPDF_TTFONTDATAPATH')) { define('_MPDF_TTFONTDATAPATH',_MPDF_PATH.'ttfontdata/'); }
+
+$errorlevel=error_reporting();
+$errorlevel=error_reporting($errorlevel & ~E_NOTICE);
+
+//error_reporting(E_ALL);
+
+if(function_exists("date_default_timezone_set")) {
+       if (ini_get("date.timezone")=="") { date_default_timezone_set("Europe/London"); }
+}
+if (!function_exists("mb_strlen")) { die("Error - mPDF requires mb_string functions. Ensure that PHP is compiled with php_mbstring.dll enabled."); }
+
+if (!defined('PHP_VERSION_ID')) {
+    $version = explode('.', PHP_VERSION);
+    define('PHP_VERSION_ID', ($version[0] * 10000 + $version[1] * 100 + $version[2]));
+}
+// Machine dependent number of bytes used to pack "double" into binary (used in cacheTables)
+$test = pack("d", 134455.474557333333666);
+define("_DSIZE", strlen($test));
+
+class mPDF
+{
+
+///////////////////////////////
+// EXTERNAL (PUBLIC) VARIABLES
+// Define these in config.php
+///////////////////////////////
+var $CJKforceend;      // mPDF 5.6.40
+// mPDF 5.6.34
+var $h2bookmarks;
+var $h2toc;
+var $decimal_align;    // mPDF 5.6.13
+var $margBuffer;       // mPDF 5.4.04
+var $splitTableBorderWidth;    // mPDF 5.4.16
+
+var $cacheTables;
+var $bookmarkStyles;
+var $useActiveForms;
+
+var $repackageTTF;
+var $allowCJKorphans;
+var $allowCJKoverflow;
+
+var $useKerning;
+var $restrictColorSpace;
+var $bleedMargin;
+var $crossMarkMargin;
+var $cropMarkMargin;
+var $cropMarkLength;
+var $nonPrintMargin;
+
+var $PDFX;
+var $PDFXauto;
+
+var $PDFA;
+var $PDFAauto;
+var $ICCProfile;
+
+var $printers_info;
+var $iterationCounter;
+var $smCapsScale;
+var $smCapsStretch;
+
+var $backupSubsFont;
+var $backupSIPFont;
+var $debugfonts;
+var $useAdobeCJK;
+var $percentSubset;
+var $maxTTFFilesize;
+var $BMPonly;
+
+var $tableMinSizePriority;
+
+var $dpi;
+var $watermarkImgAlphaBlend;
+var $watermarkImgBehind;
+var $justifyB4br;
+var $packTableData;
+var $pgsIns;
+var $simpleTables;
+var $enableImports;
+
+var $debug;
+var $showStats;
+var $setAutoTopMargin;
+var $setAutoBottomMargin;
+var $autoMarginPadding;
+var $collapseBlockMargins;
+var $falseBoldWeight;
+var $normalLineheight;
+var $progressBar;
+var $incrementFPR1;
+var $incrementFPR2;
+var $incrementFPR3;
+var $incrementFPR4;
+
+var $SHYlang;
+var $SHYleftmin;
+var $SHYrightmin;
+var $SHYcharmin;
+var $SHYcharmax;
+var $SHYlanguages;
+// PageNumber Conditional Text
+var $pagenumPrefix;
+var $pagenumSuffix;
+var $nbpgPrefix;
+var $nbpgSuffix;
+var $showImageErrors;
+var $allow_output_buffering;
+var $autoPadding;
+var $useGraphs;
+var $autoFontGroupSize;
+var $tabSpaces;
+var $useLang;
+var $restoreBlockPagebreaks;
+var $watermarkTextAlpha;
+var $watermarkImageAlpha;
+var $watermark_size;
+var $watermark_pos;
+var $annotSize;
+var $annotMargin;
+var $annotOpacity;
+var $title2annots;
+var $keepColumns;
+var $keep_table_proportions;
+var $ignore_table_widths;
+var $ignore_table_percents;
+var $list_align_style;
+var $list_number_suffix;
+var $useSubstitutions;
+var $CSSselectMedia;
+
+var $forcePortraitHeaders;
+var $forcePortraitMargins;
+var $displayDefaultOrientation;
+var $ignore_invalid_utf8;
+var $allowedCSStags;
+var $onlyCoreFonts;
+var $allow_charset_conversion;
+
+var $jSWord;
+var $jSmaxChar;
+var $jSmaxCharLast;
+var $jSmaxWordLast;
+
+var $max_colH_correction;
+
+
+var $table_error_report;
+var $table_error_report_param;
+var $biDirectional;
+var $text_input_as_HTML; 
+var $anchor2Bookmark;
+var $list_indent_first_level;
+var $shrink_tables_to_fit;
+
+var $allow_html_optional_endtags;
+
+var $img_dpi;
+
+var $defaultheaderfontsize;
+var $defaultheaderfontstyle;
+var $defaultheaderline;
+var $defaultfooterfontsize;
+var $defaultfooterfontstyle;
+var $defaultfooterline;
+var $header_line_spacing;
+var $footer_line_spacing;
+
+var $pregUHCchars;
+var $pregSJISchars;
+var $pregCJKchars;
+var $pregASCIIchars1;
+var $pregASCIIchars2;
+var $pregASCIIchars3;
+var $pregVIETchars;
+var $pregVIETPluschars;
+
+var $pregRTLchars;
+var $pregHEBchars;
+var $pregARABICchars;
+var $pregNonARABICchars;
+// INDIC
+var $pregHIchars;
+var $pregBNchars;
+var $pregPAchars;
+var $pregGUchars;
+var $pregORchars;
+var $pregTAchars;
+var $pregTEchars;
+var $pregKNchars;
+var $pregMLchars;
+var $pregSHchars;
+var $pregINDextra;
+
+var $mirrorMargins;
+var $default_lineheight_correction;
+var $watermarkText;
+var $watermarkImage;
+var $showWatermarkText;
+var $showWatermarkImage;
+
+var $fontsizes;
+
+// Aliases for backward compatability
+var $UnvalidatedText;  // alias = $watermarkText
+var $TopicIsUnvalidated;       // alias = $showWatermarkText
+var $useOddEven;               // alias = $mirrorMargins
+var $useSubstitutionsMB;       // alias = $useSubstitutions
+
+
+
+//////////////////////
+// CLASS OBJECTS
+//////////////////////
+var $cssmgr;
+var $grad;
+var $bmp;
+var $wmf;
+var $tocontents;
+var $form;
+var $directw;
+
+//////////////////////
+// INTERNAL VARIABLES
+//////////////////////
+var $writingToC;       // mPDF 5.6.38
+// mPDF 5.6.01
+var $layers;
+var $current_layer;
+var $open_layer_pane;
+var $decimal_offset;   // mPDF 5.6.13
+var $inMeter;  // mPDF 5.5.09
+
+var $CJKleading;
+var $CJKfollowing;
+var $CJKoverflow;
+
+var $textshadow;
+
+var $colsums;
+var $spanborder;
+var $spanborddet;
+
+var $visibility;
+
+var $useRC128encryption;
+var $uniqid;
+
+var $kerning;
+var $fixedlSpacing;
+var $minwSpacing;
+var $lSpacingCSS;
+var $wSpacingCSS;
+
+var $listDir;
+var $spotColorIDs;
+var $SVGcolors;
+var $spotColors;
+var $defTextColor;
+var $defDrawColor;
+var $defFillColor;
+
+var $tableBackgrounds;
+var $inlineDisplayOff;
+var $kt_y00;
+var $kt_p00;
+var $upperCase;
+var $checkSIP;
+var $checkSMP;
+var $checkCJK;
+var $tableCJK;
+
+var $watermarkImgAlpha;
+var $PDFAXwarnings;
+var $MetadataRoot; 
+var $OutputIntentRoot;
+var $InfoRoot; 
+var $current_filename;
+var $parsers;
+var $current_parser;
+var $_obj_stack;
+var $_don_obj_stack;
+var $_current_obj_id;
+var $tpls;
+var $tpl;
+var $tplprefix;
+var $_res;
+
+var $pdf_version;
+var $noImageFile;
+var $lastblockbottommargin;
+var $baselineC;
+var $subPos;
+var $subArrMB;
+var $ReqFontStyle;
+var $tableClipPath ;
+var $forceExactLineheight;
+var $listOcc; 
+
+var $fullImageHeight;
+var $inFixedPosBlock;          // Internal flag for position:fixed block
+var $fixedPosBlock;            // Buffer string for position:fixed block
+var $fixedPosBlockDepth;
+var $fixedPosBlockBBox;
+var $fixedPosBlockSave;
+var $maxPosL;
+var $maxPosR;
+
+var $loaded;
+
+var $extraFontSubsets;
+var $docTemplateStart;         // Internal flag for page (page no. -1) that docTemplate starts on
+var $time0;
+
+// Classes
+var $indic;
+var $barcode;
+
+var $SHYpatterns;
+var $loadedSHYpatterns;
+var $loadedSHYdictionary;
+var $SHYdictionary;
+var $SHYdictionaryWords;
+
+var $spanbgcolorarray;
+var $default_font;
+var $list_lineheight;
+var $headerbuffer;
+var $lastblocklevelchange;
+var $nestedtablejustfinished;
+var $linebreakjustfinished;
+var $cell_border_dominance_L;
+var $cell_border_dominance_R;
+var $cell_border_dominance_T;
+var $cell_border_dominance_B;
+var $table_keep_together;
+var $plainCell_properties;
+var $inherit_lineheight;
+var $listitemtype;
+var $shrin_k1;
+var $outerfilled;
+
+var $blockContext;
+var $floatDivs;
+
+
+var $patterns;
+var $pageBackgrounds;
+
+var $bodyBackgroundGradient;
+var $bodyBackgroundImage;
+var $bodyBackgroundColor;
+
+var $writingHTMLheader;        // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
+var $writingHTMLfooter;
+var $autoFontGroups;
+var $angle;
+
+var $gradients;
+
+var $kwt_Reference;
+var $kwt_BMoutlines;
+var $kwt_toc;
+
+var $tbrot_Reference;
+var $tbrot_BMoutlines;
+var $tbrot_toc;
+
+var $col_Reference;
+var $col_BMoutlines;
+var $col_toc;
+
+var $currentGraphId;
+var $graphs;
+
+var $floatbuffer;
+var $floatmargins;
+
+var $bullet;
+var $bulletarray;
+
+var $rtlAsArabicFarsi;         // DEPRACATED
+
+var $currentLang;
+var $default_lang;
+var $default_available_fonts;
+var $pageTemplate;
+var $docTemplate;
+var $docTemplateContinue;
+
+var $arabGlyphs;
+var $arabHex;
+var $persianGlyphs;
+var $persianHex;
+var $arabVowels;
+var $arabPrevLink;
+var $arabNextLink;
+
+
+var $formobjects; // array of Form Objects for WMF
+var $InlineProperties;
+var $InlineAnnots;
+var $ktAnnots;
+var $tbrot_Annots;
+var $kwt_Annots;
+var $columnAnnots;
+var $columnForms;
+
+var $PageAnnots;
+
+var $pageDim;  // Keep track of page wxh for orientation changes - set in _beginpage, used in _putannots
+
+var $breakpoints;
+
+var $tableLevel;
+var $tbctr;
+var $innermostTableLevel;
+var $saveTableCounter;
+var $cellBorderBuffer;
+
+var $saveHTMLFooter_height;
+var $saveHTMLFooterE_height;
+
+var $firstPageBoxHeader;
+var $firstPageBoxHeaderEven;
+var $firstPageBoxFooter;
+var $firstPageBoxFooterEven;
+
+var $page_box;
+var $show_marks;       // crop or cross marks
+
+var $basepathIsLocal;
+
+var $use_kwt;
+var $kwt;
+var $kwt_height;
+var $kwt_y0;
+var $kwt_x0;
+var $kwt_buffer;
+var $kwt_Links;
+var $kwt_moved;
+var $kwt_saved;
+
+var $PageNumSubstitutions;
+
+var $table_borders_separate;
+var $base_table_properties;
+var $borderstyles;
+
+var $listjustfinished;
+var $blockjustfinished;
+
+var $orig_bMargin;
+var $orig_tMargin;
+var $orig_lMargin;
+var $orig_rMargin;
+var $orig_hMargin;
+var $orig_fMargin;
+
+var $pageheaders;
+var $pagefooters;
+
+var $pageHTMLheaders;
+var $pageHTMLfooters;
+
+var $saveHTMLHeader;
+var $saveHTMLFooter;
+
+var $HTMLheaderPageLinks;
+var $HTMLheaderPageAnnots;
+var $HTMLheaderPageForms;
+
+// See config_fonts.php for these next 5 values
+var $available_unifonts;
+var $sans_fonts;
+var $serif_fonts;
+var $mono_fonts;
+var $defaultSubsFont;
+
+// List of ALL available CJK fonts (incl. styles) (Adobe add-ons)  hw removed
+var $available_CJK_fonts;
+
+var $HTMLHeader;
+var $HTMLFooter;
+var $HTMLHeaderE;
+var $HTMLFooterE;
+var $bufferoutput; 
+
+var $showdefaultpagenos;       // DEPRACATED -left for backward compatability
+
+
+// CJK fonts
+var $Big5_widths;
+var $GB_widths;
+var $SJIS_widths;
+var $UHC_widths;
+
+// SetProtection
+var $encrypted;        //whether document is protected
+var $Uvalue;   //U entry in pdf document
+var $Ovalue;   //O entry in pdf document
+var $Pvalue;   //P entry in pdf document
+var $enc_obj_id;       //encryption object id
+var $last_rc4_key;     //last RC4 key encrypted (cached for optimisation)
+var $last_rc4_key_c;   //last RC4 computed key
+var $encryption_key;
+var $padding;  //used for encryption
+
+
+// Bookmark
+var $BMoutlines;
+var $OutlineRoot;
+// INDEX
+var $ColActive;
+var $Reference;
+var $CurrCol;
+var $NbCol;
+var $y0;                       //Top ordinate of columns
+var $ColL;
+var $ColWidth;
+var $ColGap;
+// COLUMNS 
+var $ColR;
+var $ChangeColumn;
+var $columnbuffer;
+var $ColDetails;
+var $columnLinks;
+var $colvAlign;
+// Substitutions
+var $substitute;               // Array of substitution strings e.g. <ttz>112</ttz>
+var $entsearch;                // Array of HTML entities (>ASCII 127) to substitute
+var $entsubstitute;    // Array of substitution decimal unicode for the Hi entities
+
+
+// Default values if no style sheet offered    (cf. http://www.w3.org/TR/CSS21/sample.html)
+var $defaultCSS;
+
+var $linemaxfontsize;
+var $lineheight_correction;
+var $lastoptionaltag;  // Save current block item which HTML specifies optionsl endtag
+var $pageoutput;
+var $charset_in;
+var $blk;
+var $blklvl;
+var $ColumnAdjust;
+var $ws;       // Word spacing
+var $HREF;
+var $pgwidth;
+var $fontlist; 
+var $oldx;
+var $oldy;
+var $B;
+var $U;      //underlining flag
+var $S;        // SmallCaps flag
+var $I;
+
+var $tdbegin;
+var $table;
+var $cell;
+var $col;
+var $row;
+
+var $divbegin;
+var $divalign;
+var $divwidth;
+var $divheight;
+var $divrevert;
+var $spanbgcolor;
+
+var $spanlvl;
+var $listlvl;
+var $listnum;
+var $listtype;
+var $listoccur;
+var $listlist;
+var $listitem;
+
+var $pjustfinished;
+var $ignorefollowingspaces;
+var $SUP;
+var $SUB;
+var $SMALL;
+var $BIG;
+var $toupper;
+var $tolower;
+var $capitalize;
+var $dash_on;
+var $dotted_on;
+var $strike;
+
+var $textbuffer;
+var $currentfontstyle;
+var $currentfontfamily;
+var $currentfontsize;
+var $colorarray;
+var $bgcolorarray;
+var $internallink;
+var $enabledtags;
+
+var $lineheight;
+var $basepath;
+var $textparam;
+
+var $specialcontent;
+var $selectoption;
+var $objectbuffer;
+
+// Table Rotation
+var $table_rotate;
+var $tbrot_maxw;
+var $tbrot_maxh;
+var $tablebuffer;
+var $tbrot_align;
+var $tbrot_Links;
+
+var $divbuffer;                // Buffer used when keeping DIV on one page
+var $keep_block_together;      // Keep a Block from page-break-inside: avoid
+var $ktLinks;          // Keep-together Block links array
+var $ktBlock;          // Keep-together Block array
+var $ktForms;
+var $ktReference;
+var $ktBMoutlines;
+var $_kttoc;
+
+var $tbrot_y0;
+var $tbrot_x0;
+var $tbrot_w;
+var $tbrot_h;
+
+var $mb_enc;
+var $directionality;
+
+var $extgstates; // Used for alpha channel - Transparency (Watermark)
+var $mgl;
+var $mgt;
+var $mgr;
+var $mgb;
+
+var $tts;
+var $ttz;
+var $tta;
+
+var $headerDetails;
+var $footerDetails;
+
+// Best to alter the below variables using default stylesheet above
+var $page_break_after_avoid;
+var $margin_bottom_collapse;
+var $list_indent;
+var $list_align;
+var $list_margin_bottom; 
+var $default_font_size;        // in pts
+var $original_default_font_size;       // used to save default sizes when using table default
+var $original_default_font;
+var $watermark_font;
+var $defaultAlign;
+
+// TABLE
+var $defaultTableAlign;
+var $tablethead;
+var $thead_font_weight;
+var $thead_font_style;
+var $thead_font_smCaps;
+var $thead_valign_default;
+var $thead_textalign_default;
+var $tabletfoot;
+var $tfoot_font_weight;
+var $tfoot_font_style;
+var $tfoot_font_smCaps;
+var $tfoot_valign_default;
+var $tfoot_textalign_default;
+
+var $trow_text_rotate;
+
+var $cellPaddingL;
+var $cellPaddingR;
+var $cellPaddingT;
+var $cellPaddingB;
+var $table_lineheight;
+var $table_border_attr_set;
+var $table_border_css_set;
+
+var $shrin_k;                  // factor with which to shrink tables - used internally - do not change
+var $shrink_this_table_to_fit; // 0 or false to disable; value (if set) gives maximum factor to reduce fontsize
+var $MarginCorrection; // corrects for OddEven Margins
+var $margin_footer;
+var $margin_header;
+
+var $tabletheadjustfinished;
+var $usingCoreFont;
+var $charspacing;
+
+//Private properties FROM FPDF
+var $DisplayPreferences; 
+var $flowingBlockAttr;
+var $page;               //current page number
+var $n;                  //current object number
+var $offsets;            //array of object offsets
+var $buffer;             //buffer holding in-memory PDF
+var $pages;              //array containing pages
+var $state;              //current document state
+var $compress;           //compression flag
+var $DefOrientation;     //default orientation
+var $CurOrientation;     //current orientation
+var $OrientationChanges; //array indicating orientation changes
+var $k;                  //scale factor (number of points in user unit)
+var $fwPt;
+var $fhPt;         //dimensions of page format in points
+var $fw;
+var $fh;             //dimensions of page format in user unit
+var $wPt;
+var $hPt;           //current dimensions of page in points
+var $w;
+var $h;               //current dimensions of page in user unit
+var $lMargin;            //left margin
+var $tMargin;            //top margin
+var $rMargin;            //right margin
+var $bMargin;            //page break margin
+var $cMarginL;            //cell margin Left
+var $cMarginR;            //cell margin Right
+var $cMarginT;            //cell margin Left
+var $cMarginB;            //cell margin Right
+var $DeflMargin;            //Default left margin
+var $DefrMargin;            //Default right margin
+var $x;
+var $y;               //current position in user unit for cell positioning
+var $lasth;              //height of last cell printed
+var $LineWidth;          //line width in user unit
+var $CoreFonts;          //array of standard font names
+var $fonts;              //array of used fonts
+var $FontFiles;          //array of font files
+var $images;             //array of used images
+var $PageLinks;          //array of links in pages
+var $links;              //array of internal links
+var $FontFamily;         //current font family
+var $FontStyle;          //current font style
+var $CurrentFont;        //current font info
+var $FontSizePt;         //current font size in points
+var $FontSize;           //current font size in user unit
+var $DrawColor;          //commands for drawing color
+var $FillColor;          //commands for filling color
+var $TextColor;          //commands for text color
+var $ColorFlag;          //indicates whether fill and text colors are different
+var $autoPageBreak;      //automatic page breaking
+var $PageBreakTrigger;   //threshold used to trigger page breaks
+var $InFooter;           //flag set when processing footer
+var $InHTMLFooter;
+
+var $processingFooter;   //flag set when processing footer - added for columns
+var $processingHeader;   //flag set when processing header - added for columns
+var $ZoomMode;           //zoom display mode
+var $LayoutMode;         //layout display mode
+var $title;              //title
+var $subject;            //subject
+var $author;             //author
+var $keywords;           //keywords
+var $creator;            //creator
+
+var $aliasNbPg;       //alias for total number of pages
+var $aliasNbPgGp;       //alias for total number of pages in page group
+var $aliasNbPgHex;
+var $aliasNbPgGpHex;
+
+var $ispre;
+
+var $outerblocktags;
+var $innerblocktags;
+
+
+// **********************************
+// **********************************
+// **********************************
+// **********************************
+// **********************************
+// **********************************
+// **********************************
+// **********************************
+// **********************************
+
+function mPDF($mode='',$format='A4',$default_font_size=0,$default_font='',$mgl=15,$mgr=15,$mgt=16,$mgb=16,$mgh=9,$mgf=9, $orientation='P') {
+
+/*-- BACKGROUNDS --*/
+               if (!class_exists('grad', false)) { include(_MPDF_PATH.'classes/grad.php'); }
+               if (empty($this->grad)) { $this->grad = new grad($this); }
+/*-- END BACKGROUNDS --*/
+/*-- FORMS --*/
+               if (!class_exists('form', false)) { include(_MPDF_PATH.'classes/form.php'); }
+               if (empty($this->form)) { $this->form = new form($this); }
+/*-- END FORMS --*/
+
+       $this->time0 = microtime(true);
+       //Some checks
+       $this->_dochecks();
+
+       // Set up Aliases for backwards compatability
+       $this->UnvalidatedText =& $this->watermarkText;
+       $this->TopicIsUnvalidated =& $this->showWatermarkText;
+       $this->AliasNbPg =& $this->aliasNbPg;
+       $this->AliasNbPgGp =& $this->aliasNbPgGp;
+       $this->BiDirectional =& $this->biDirectional;
+       $this->Anchor2Bookmark =& $this->anchor2Bookmark;
+       $this->KeepColumns =& $this->keepColumns;
+       $this->useOddEven =& $this->mirrorMargins;
+       $this->useSubstitutionsMB =& $this->useSubstitutions;
+
+       $this->writingToC = false;      // mPDF 5.6.38
+       // mPDF 5.6.01
+       $this->layers = array();
+       $this->current_layer = 0;
+       $this->open_layer_pane = false;
+
+       $this->visibility='visible';
+
+       //Initialization of properties
+       $this->spotColors=array();
+       $this->spotColorIDs = array();
+       $this->tableBackgrounds = array();
+
+       $this->kt_y00 = '';
+       $this->kt_p00 = '';
+       $this->iterationCounter = false;
+       $this->BMPonly = array();
+       $this->page=0;
+       $this->n=2;
+       $this->buffer='';
+       $this->objectbuffer = array();
+       $this->pages=array();
+       $this->OrientationChanges=array();
+       $this->state=0;
+       $this->fonts=array();
+       $this->FontFiles=array();
+       $this->images=array();
+       $this->links=array();
+       $this->InFooter=false;
+       $this->processingFooter=false;
+       $this->processingHeader=false;
+       $this->lasth=0;
+       $this->FontFamily='';
+       $this->FontStyle='';
+       $this->FontSizePt=9;
+       $this->U=false;
+       // Small Caps
+       $this->upperCase = array();
+       $this->S = false;
+       $this->smCapsScale = 1;
+       $this->smCapsStretch = 100;
+       $this->margBuffer = 0;  // mPDF 5.4.04
+       $this->inMeter = false; // mPDF 5.5.09
+       $this->decimal_offset = 0;
+
+       $this->defTextColor = $this->TextColor = $this->SetTColor($this->ConvertColor(0),true);
+       $this->defDrawColor = $this->DrawColor = $this->SetDColor($this->ConvertColor(0),true);
+       $this->defFillColor = $this->FillColor = $this->SetFColor($this->ConvertColor(255),true);
+
+       //SVG color names array
+       //http://www.w3schools.com/css/css_colornames.asp
+       $this->SVGcolors = array('antiquewhite'=>'#FAEBD7','aqua'=>'#00FFFF','aquamarine'=>'#7FFFD4','beige'=>'#F5F5DC','black'=>'#000000',
+'blue'=>'#0000FF','brown'=>'#A52A2A','cadetblue'=>'#5F9EA0','chocolate'=>'#D2691E','cornflowerblue'=>'#6495ED','crimson'=>'#DC143C',
+'darkblue'=>'#00008B','darkgoldenrod'=>'#B8860B','darkgreen'=>'#006400','darkmagenta'=>'#8B008B','darkorange'=>'#FF8C00',
+'darkred'=>'#8B0000','darkseagreen'=>'#8FBC8F','darkslategray'=>'#2F4F4F','darkviolet'=>'#9400D3','deepskyblue'=>'#00BFFF',
+'dodgerblue'=>'#1E90FF','firebrick'=>'#B22222','forestgreen'=>'#228B22','fuchsia'=>'#FF00FF','gainsboro'=>'#DCDCDC','gold'=>'#FFD700',
+'gray'=>'#808080','green'=>'#008000','greenyellow'=>'#ADFF2F','hotpink'=>'#FF69B4','indigo'=>'#4B0082','khaki'=>'#F0E68C',
+'lavenderblush'=>'#FFF0F5','lemonchiffon'=>'#FFFACD','lightcoral'=>'#F08080','lightgoldenrodyellow'=>'#FAFAD2','lightgreen'=>'#90EE90',
+'lightsalmon'=>'#FFA07A','lightskyblue'=>'#87CEFA','lightslategray'=>'#778899','lightyellow'=>'#FFFFE0','lime'=>'#00FF00','limegreen'=>'#32CD32',
+'magenta'=>'#FF00FF','maroon'=>'#800000','mediumaquamarine'=>'#66CDAA','mediumorchid'=>'#BA55D3','mediumseagreen'=>'#3CB371',
+'mediumspringgreen'=>'#00FA9A','mediumvioletred'=>'#C71585','midnightblue'=>'#191970','mintcream'=>'#F5FFFA','moccasin'=>'#FFE4B5','navy'=>'#000080',
+'olive'=>'#808000','orange'=>'#FFA500','orchid'=>'#DA70D6','palegreen'=>'#98FB98',
+'palevioletred'=>'#D87093','peachpuff'=>'#FFDAB9','pink'=>'#FFC0CB','powderblue'=>'#B0E0E6','purple'=>'#800080',
+'red'=>'#FF0000','royalblue'=>'#4169E1','salmon'=>'#FA8072','seagreen'=>'#2E8B57','sienna'=>'#A0522D','silver'=>'#C0C0C0','skyblue'=>'#87CEEB',
+'slategray'=>'#708090','springgreen'=>'#00FF7F','steelblue'=>'#4682B4','tan'=>'#D2B48C','teal'=>'#008080','thistle'=>'#D8BFD8','turquoise'=>'#40E0D0',
+'violetred'=>'#D02090','white'=>'#FFFFFF','yellow'=>'#FFFF00', 
+'aliceblue'=>'#f0f8ff', 'azure'=>'#f0ffff', 'bisque'=>'#ffe4c4', 'blanchedalmond'=>'#ffebcd', 'blueviolet'=>'#8a2be2', 'burlywood'=>'#deb887', 
+'chartreuse'=>'#7fff00', 'coral'=>'#ff7f50', 'cornsilk'=>'#fff8dc', 'cyan'=>'#00ffff', 'darkcyan'=>'#008b8b', 'darkgray'=>'#a9a9a9', 
+'darkgrey'=>'#a9a9a9', 'darkkhaki'=>'#bdb76b', 'darkolivegreen'=>'#556b2f', 'darkorchid'=>'#9932cc', 'darksalmon'=>'#e9967a', 
+'darkslateblue'=>'#483d8b', 'darkslategrey'=>'#2f4f4f', 'darkturquoise'=>'#00ced1', 'deeppink'=>'#ff1493', 'dimgray'=>'#696969', 
+'dimgrey'=>'#696969', 'floralwhite'=>'#fffaf0', 'ghostwhite'=>'#f8f8ff', 'goldenrod'=>'#daa520', 'grey'=>'#808080', 'honeydew'=>'#f0fff0', 
+'indianred'=>'#cd5c5c', 'ivory'=>'#fffff0', 'lavender'=>'#e6e6fa', 'lawngreen'=>'#7cfc00', 'lightblue'=>'#add8e6', 'lightcyan'=>'#e0ffff', 
+'lightgray'=>'#d3d3d3', 'lightgrey'=>'#d3d3d3', 'lightpink'=>'#ffb6c1', 'lightseagreen'=>'#20b2aa', 'lightslategrey'=>'#778899', 
+'lightsteelblue'=>'#b0c4de', 'linen'=>'#faf0e6', 'mediumblue'=>'#0000cd', 'mediumpurple'=>'#9370db', 'mediumslateblue'=>'#7b68ee', 
+'mediumturquoise'=>'#48d1cc', 'mistyrose'=>'#ffe4e1', 'navajowhite'=>'#ffdead', 'oldlace'=>'#fdf5e6', 'olivedrab'=>'#6b8e23', 'orangered'=>'#ff4500', 
+'palegoldenrod'=>'#eee8aa', 'paleturquoise'=>'#afeeee', 'papayawhip'=>'#ffefd5', 'peru'=>'#cd853f', 'plum'=>'#dda0dd', 'rosybrown'=>'#bc8f8f', 
+'saddlebrown'=>'#8b4513', 'sandybrown'=>'#f4a460', 'seashell'=>'#fff5ee', 'slateblue'=>'#6a5acd', 'slategrey'=>'#708090', 'snow'=>'#fffafa', 
+'tomato'=>'#ff6347', 'violet'=>'#ee82ee', 'wheat'=>'#f5deb3', 'whitesmoke'=>'#f5f5f5', 'yellowgreen'=>'#9acd32');
+
+       $this->ColorFlag=false;
+       $this->extgstates = array();
+
+       $this->mb_enc='windows-1252';
+       $this->directionality='ltr';
+       $this->defaultAlign = 'L';
+       $this->defaultTableAlign = 'L';
+
+       $this->fixedPosBlockSave = array();
+       $this->extraFontSubsets = 0;
+
+       $this->SHYpatterns = array();
+       $this->loadedSHYdictionary = false;
+       $this->SHYdictionary = array();
+       $this->SHYdictionaryWords = array();
+       $this->blockContext = 1;
+       $this->floatDivs = array();
+       $this->DisplayPreferences=''; 
+
+       $this->patterns = array();              // Tiling patterns used for backgrounds
+       $this->pageBackgrounds = array();
+       $this->writingHTMLheader = false;       // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
+       $this->writingHTMLfooter = false;       // internal flag - used both for writing HTMLHeaders/Footers and FixedPos block
+       $this->gradients = array();
+
+       $this->kwt_Reference = array();
+       $this->kwt_BMoutlines = array();
+       $this->kwt_toc = array();
+
+       $this->tbrot_Reference = array();
+       $this->tbrot_BMoutlines = array();
+       $this->tbrot_toc = array();
+
+       $this->col_Reference = array();
+       $this->col_BMoutlines = array();
+       $this->col_toc = array();
+       $this->graphs = array();
+
+       $this->pgsIns = array();
+       $this->PDFAXwarnings = array();
+       $this->inlineDisplayOff = false;
+       $this->kerning = false;
+       $this->lSpacingCSS = '';
+       $this->wSpacingCSS = '';
+       $this->fixedlSpacing = false;
+       $this->minwSpacing = 0;
+
+
+       $this->baselineC = 0.35;        // Baseline for text
+       $this->noImageFile = str_replace("\\","/",dirname(__FILE__)) . '/includes/no_image.jpg';
+       $this->subPos = 0;
+       $this->forceExactLineheight = false;
+       $this->listOcc = 0;
+       $this->normalLineheight = 1.3;
+       // These are intended as configuration variables, and should be set in config.php - which will override these values; 
+       // set here as failsafe as will cause an error if not defined
+       $this->incrementFPR1 = 10;
+       $this->incrementFPR2 = 10;
+       $this->incrementFPR3 = 10;
+       $this->incrementFPR4 = 10;
+
+       $this->fullImageHeight = false;
+       $this->floatbuffer = array();
+       $this->floatmargins = array();
+       $this->autoFontGroups = 0;
+       $this->formobjects=array(); // array of Form Objects for WMF
+       $this->InlineProperties=array();
+       $this->InlineAnnots=array();
+       $this->ktAnnots=array();
+       $this->tbrot_Annots=array();
+       $this->kwt_Annots=array();
+       $this->columnAnnots=array();
+       $this->pageDim=array();
+       $this->breakpoints = array();   // used in columnbuffer
+       $this->tableLevel=0;
+       $this->tbctr=array();   // counter for nested tables at each level
+       $this->page_box = array();
+       $this->show_marks = ''; // crop or cross marks
+       $this->kwt = false;
+       $this->kwt_height = 0;
+       $this->kwt_y0 = 0;
+       $this->kwt_x0 = 0;
+       $this->kwt_buffer = array();
+       $this->kwt_Links = array();
+       $this->kwt_moved = false;
+       $this->kwt_saved = false;
+       $this->PageNumSubstitutions = array();
+       $this->base_table_properties=array();
+       $this->borderstyles = array('inset','groove','outset','ridge','dotted','dashed','solid','double');
+       $this->tbrot_align = 'C';
+       $this->pageheaders=array();
+       $this->pagefooters=array();
+
+       $this->pageHTMLheaders=array();
+       $this->pageHTMLfooters=array();
+       $this->HTMLheaderPageLinks = array();
+       $this->HTMLheaderPageAnnots = array();
+
+       $this->ktForms = array();
+       $this->HTMLheaderPageForms = array();
+       $this->columnForms = array();
+       $this->tbrotForms = array();
+       $this->useRC128encryption = false;
+       $this->uniqid = '';
+
+       $this->bufferoutput = false; 
+       $this->encrypted=false;                 //whether document is protected
+       $this->BMoutlines=array();
+       $this->ColActive=0;                     //Flag indicating that columns are on (the index is being processed)
+       $this->Reference=array();               //Array containing the references
+       $this->CurrCol=0;               //Current column number
+       $this->ColL = array(0);                 // Array of Left pos of columns - absolute - needs Margin correction for Odd-Even
+       $this->ColR = array(0);                 // Array of Right pos of columns - absolute pos - needs Margin correction for Odd-Even
+       $this->ChangeColumn = 0;
+       $this->columnbuffer = array();
+       $this->ColDetails = array();            // Keeps track of some column details
+       $this->columnLinks = array();           // Cross references PageLinks
+       $this->substitute = array();            // Array of substitution strings e.g. <ttz>112</ttz>
+       $this->entsearch = array();             // Array of HTML entities (>ASCII 127) to substitute
+       $this->entsubstitute = array(); // Array of substitution decimal unicode for the Hi entities
+       $this->lastoptionaltag = '';
+       $this->charset_in = '';
+       $this->blk = array();
+       $this->blklvl = 0;
+       $this->tts = false;
+       $this->ttz = false;
+       $this->tta = false;
+       $this->ispre=false;
+
+       $this->checkSIP = false;
+       $this->checkSMP = false;
+       $this->checkCJK = false;
+       $this->tableCJK = false;
+
+       $this->headerDetails=array();
+       $this->footerDetails=array();
+       $this->page_break_after_avoid = false;
+       $this->margin_bottom_collapse = false;
+       $this->tablethead = 0;
+       $this->tabletfoot = 0;
+       $this->table_border_attr_set = 0;
+       $this->table_border_css_set = 0;
+       $this->shrin_k = 1.0;
+       $this->shrink_this_table_to_fit = 0;
+       $this->MarginCorrection = 0;
+
+       $this->tabletheadjustfinished = false;
+       $this->usingCoreFont = false;
+       $this->charspacing=0;
+
+       $this->autoPageBreak = true;
+
+       require(_MPDF_PATH.'config.php');       // config data
+
+       $this->_setPageSize($format, $orientation);
+       $this->DefOrientation=$orientation;
+
+       $this->margin_header=$mgh;
+       $this->margin_footer=$mgf;
+
+       $bmargin=$mgb;
+
+       $this->DeflMargin = $mgl;
+       $this->DefrMargin = $mgr;
+
+       $this->orig_tMargin = $mgt;
+       $this->orig_bMargin = $bmargin;
+       $this->orig_lMargin = $this->DeflMargin;
+       $this->orig_rMargin = $this->DefrMargin;
+       $this->orig_hMargin = $this->margin_header;
+       $this->orig_fMargin = $this->margin_footer;
+
+       if ($this->setAutoTopMargin=='pad') { $mgt += $this->margin_header; }
+       if ($this->setAutoBottomMargin=='pad') { $mgb += $this->margin_footer; }
+       $this->SetMargins($this->DeflMargin,$this->DefrMargin,$mgt);    // sets l r t margin
+       //Automatic page break
+       $this->SetAutoPageBreak($this->autoPageBreak,$bmargin); // sets $this->bMargin & PageBreakTrigger
+
+       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+
+       //Interior cell margin (1 mm) ? not used
+       $this->cMarginL = 1;
+       $this->cMarginR = 1;
+       //Line width (0.2 mm)
+       $this->LineWidth=.567/_MPDFK;
+
+       //To make the function Footer() work - replaces {nb} with page number
+       $this->AliasNbPages();
+       $this->AliasNbPageGroups();
+
+       $this->aliasNbPgHex = '{nbHEXmarker}';
+       $this->aliasNbPgGpHex = '{nbpgHEXmarker}';
+
+       //Enable all tags as default
+       $this->DisableTags();
+       //Full width display mode
+       $this->SetDisplayMode(100);     // fullwidth?           'fullpage'
+       //Compression
+       $this->SetCompression(true);
+       //Set default display preferences
+       $this->SetDisplayPreferences(''); 
+
+       // Font data
+       require(_MPDF_PATH.'config_fonts.php');
+       // Available fonts
+       $this->available_unifonts = array();
+       foreach ($this->fontdata AS $f => $fs) {
+               if (isset($fs['R']) && $fs['R']) { $this->available_unifonts[] = $f; }
+               if (isset($fs['B']) && $fs['B']) { $this->available_unifonts[] = $f.'B'; }
+               if (isset($fs['I']) && $fs['I']) { $this->available_unifonts[] = $f.'I'; }
+               if (isset($fs['BI']) && $fs['BI']) { $this->available_unifonts[] = $f.'BI'; }
+       }
+
+       $this->default_available_fonts = $this->available_unifonts;
+
+       $optcore = false;
+       $onlyCoreFonts = false;
+       if (preg_match('/([\-+])aCJK/i',$mode, $m)) {
+               preg_replace('/([\-+])aCJK/i','',$mode);
+               if ($m[1]=='+') { $this->useAdobeCJK = true; }
+               else { $this->useAdobeCJK = false; }
+       }
+
+       if (strlen($mode)==1) {
+               if ($mode=='s') { $this->percentSubset = 100; $mode = ''; }
+               else if ($mode=='c') { $onlyCoreFonts = true; $mode = ''; }
+       }
+       else if (substr($mode,-2)=='-s') {
+               $this->percentSubset = 100; 
+               $mode = substr($mode,0,strlen($mode)-2);
+       }
+       else if (substr($mode,-2)=='-c') {
+               $onlyCoreFonts = true;
+               $mode = substr($mode,0,strlen($mode)-2);
+       }
+       else if (substr($mode,-2)=='-x') {
+               $optcore = true;
+               $mode = substr($mode,0,strlen($mode)-2);
+       }
+
+       // Autodetect if mode is a language_country string (en-GB or en_GB or en)
+       if ((strlen($mode) == 5 && $mode != 'UTF-8') || strlen($mode) == 2) {
+               list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($mode, $this->useAdobeCJK);
+               if ($coreSuitable && $optcore) { $onlyCoreFonts = true; }
+               if ($mpdf_pdf_unifonts) { 
+                       $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); 
+                       $this->default_available_fonts = $mpdf_pdf_unifonts;
+               }
+               $this->currentLang = $mode;
+               $this->default_lang = $mode;
+       }
+
+       $this->onlyCoreFonts =  $onlyCoreFonts;
+
+       if ($this->onlyCoreFonts) {
+               $this->setMBencoding('windows-1252');   // sets $this->mb_enc
+       }
+       else {
+               $this->setMBencoding('UTF-8');  // sets $this->mb_enc
+       }
+       @mb_regex_encoding('UTF-8');    // required only for mb_ereg... and mb_split functions
+
+
+       // Adobe CJK fonts
+       $this->available_CJK_fonts = array('gb','big5','sjis','uhc','gbB','big5B','sjisB','uhcB','gbI','big5I','sjisI','uhcI',
+               'gbBI','big5BI','sjisBI','uhcBI');
+
+
+       //Standard fonts
+       $this->CoreFonts=array('ccourier'=>'Courier','ccourierB'=>'Courier-Bold','ccourierI'=>'Courier-Oblique','ccourierBI'=>'Courier-BoldOblique',
+               'chelvetica'=>'Helvetica','chelveticaB'=>'Helvetica-Bold','chelveticaI'=>'Helvetica-Oblique','chelveticaBI'=>'Helvetica-BoldOblique',
+               'ctimes'=>'Times-Roman','ctimesB'=>'Times-Bold','ctimesI'=>'Times-Italic','ctimesBI'=>'Times-BoldItalic',
+               'csymbol'=>'Symbol','czapfdingbats'=>'ZapfDingbats');
+       $this->fontlist=array("ctimes","ccourier","chelvetica","csymbol","czapfdingbats");
+
+       // Substitutions
+       $this->setHiEntitySubstitutions();
+
+       if ($this->onlyCoreFonts) {
+               $this->useSubstitutions = true;
+               $this->SetSubstitutions();
+       }
+       else { $this->useSubstitutions = false; }
+
+/*-- HTML-CSS --*/
+
+       if (!class_exists('cssmgr', false)) { include(_MPDF_PATH .'classes/cssmgr.php'); }
+       $this->cssmgr = new cssmgr($this);
+       if (file_exists(_MPDF_PATH.'mpdf.css')) {
+               $css = file_get_contents(_MPDF_PATH.'mpdf.css');
+               $css2 = $this->cssmgr->ReadDefaultCSS($css);
+               $this->defaultCSS = $this->cssmgr->array_merge_recursive_unique($this->defaultCSS,$css2); 
+       }
+/*-- END HTML-CSS --*/
+
+       if ($default_font=='') { 
+         if ($this->onlyCoreFonts) { 
+               if (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']),$this->mono_fonts)) { $default_font = 'ccourier'; }
+               else if (in_array(strtolower($this->defaultCSS['BODY']['FONT-FAMILY']),$this->sans_fonts)) { $default_font = 'chelvetica'; }
+               else { $default_font = 'ctimes'; }
+         }
+         else { $default_font = $this->defaultCSS['BODY']['FONT-FAMILY']; }
+       }
+       if (!$default_font_size) { 
+               $mmsize = $this->ConvertSize($this->defaultCSS['BODY']['FONT-SIZE']);
+               $default_font_size = $mmsize*(_MPDFK);
+       }
+
+       if ($default_font) { $this->SetDefaultFont($default_font); }
+       if ($default_font_size) { $this->SetDefaultFontSize($default_font_size); }
+
+       $this->SetLineHeight(); // lineheight is in mm
+
+       $this->SetFColor($this->ConvertColor(255));
+       $this->HREF='';
+       $this->oldy=-1;
+       $this->B=0;
+       $this->U=false;
+       $this->S=false;
+       $this->I=0;
+
+       $this->listlvl=0;
+       $this->listnum=0; 
+       $this->listtype='';
+       $this->listoccur=array();
+       $this->listlist=array();
+       $this->listitem=array();
+
+       $this->tdbegin=false; 
+       $this->table=array(); 
+       $this->cell=array();  
+       $this->col=-1; 
+       $this->row=-1; 
+       $this->cellBorderBuffer = array();
+
+       $this->divbegin=false;
+       $this->divalign='';
+       $this->divwidth=0; 
+       $this->divheight=0; 
+       $this->spanbgcolor=false;
+       $this->divrevert=false;
+       $this->spanborder=false;
+       $this->spanborddet=array();
+
+       $this->blockjustfinished=false;
+       $this->listjustfinished=false;
+       $this->ignorefollowingspaces = true; //in order to eliminate exceeding left-side spaces
+       $this->toupper=false;
+       $this->tolower=false;
+       $this->capitalize=false;
+       $this->dash_on=false;
+       $this->dotted_on=false;
+       $this->SUP=false;
+       $this->SUB=false;
+       $this->strike=false;
+       $this->textshadow='';
+
+       $this->currentfontfamily='';
+       $this->currentfontsize='';
+       $this->currentfontstyle='';
+       $this->colorarray=array();
+       $this->spanbgcolorarray=array();
+       $this->textbuffer=array();
+       $this->internallink=array();
+       $this->basepath = "";
+
+       $this->SetBasePath('');
+
+       $this->textparam = array();
+
+       $this->specialcontent = '';
+       $this->selectoption = array();
+
+/*-- IMPORTS --*/
+
+       $this->tpls = array();
+       $this->tpl = 0;
+       $this->tplprefix = "/TPL";
+       $this->res = array();
+       if ($this->enableImports) {
+               $this->SetImportUse();
+       }
+/*-- END IMPORTS --*/
+
+       if ($this->progressBar) { $this->StartProgressBarOutput($this->progressBar) ;   }       // *PROGRESS-BAR*
+}
+
+
+function _setPageSize($format, &$orientation) {
+       //Page format
+       if(is_string($format))
+       {
+               if ($format=='') { $format = 'A4'; }
+               $pfo = 'P';
+               if(preg_match('/([0-9a-zA-Z]*)-L/i',$format,$m)) {      // e.g. A4-L = A4 landscape
+                       $format=$m[1]; 
+                       $pfo='L'; 
+               }
+               $format = $this->_getPageFormat($format);
+               if (!$format) { $this->Error('Unknown page format: '.$format); }
+               else { $orientation = $pfo; }
+
+               $this->fwPt=$format[0];
+               $this->fhPt=$format[1];
+       }
+       else
+       {
+               if (!$format[0] || !$format[1]) { $this->Error('Invalid page format: '.$format[0].' '.$format[1]); }
+               $this->fwPt=$format[0]*_MPDFK;
+               $this->fhPt=$format[1]*_MPDFK;
+       }
+       $this->fw=$this->fwPt/_MPDFK;
+       $this->fh=$this->fhPt/_MPDFK;
+       //Page orientation
+       $orientation=strtolower($orientation);
+       if($orientation=='p' or $orientation=='portrait')
+       {
+               $orientation='P';
+               $this->wPt=$this->fwPt;
+               $this->hPt=$this->fhPt;
+       }
+       elseif($orientation=='l' or $orientation=='landscape')
+       {
+               $orientation='L';
+               $this->wPt=$this->fhPt;
+               $this->hPt=$this->fwPt;
+       }
+       else $this->Error('Incorrect orientation: '.$orientation);
+       $this->CurOrientation=$orientation;
+
+       $this->w=$this->wPt/_MPDFK;
+       $this->h=$this->hPt/_MPDFK;
+}
+
+function _getPageFormat($format) {
+               switch (strtoupper($format)) {
+                       case '4A0': {$format = array(4767.87,6740.79); break;}
+                       case '2A0': {$format = array(3370.39,4767.87); break;}
+                       case 'A0': {$format = array(2383.94,3370.39); break;}
+                       case 'A1': {$format = array(1683.78,2383.94); break;}
+                       case 'A2': {$format = array(1190.55,1683.78); break;}
+                       case 'A3': {$format = array(841.89,1190.55); break;}
+                       case 'A4': default: {$format = array(595.28,841.89); break;}
+                       case 'A5': {$format = array(419.53,595.28); break;}
+                       case 'A6': {$format = array(297.64,419.53); break;}
+                       case 'A7': {$format = array(209.76,297.64); break;}
+                       case 'A8': {$format = array(147.40,209.76); break;}
+                       case 'A9': {$format = array(104.88,147.40); break;}
+                       case 'A10': {$format = array(73.70,104.88); break;}
+                       case 'B0': {$format = array(2834.65,4008.19); break;}
+                       case 'B1': {$format = array(2004.09,2834.65); break;}
+                       case 'B2': {$format = array(1417.32,2004.09); break;}
+                       case 'B3': {$format = array(1000.63,1417.32); break;}
+                       case 'B4': {$format = array(708.66,1000.63); break;}
+                       case 'B5': {$format = array(498.90,708.66); break;}
+                       case 'B6': {$format = array(354.33,498.90); break;}
+                       case 'B7': {$format = array(249.45,354.33); break;}
+                       case 'B8': {$format = array(175.75,249.45); break;}
+                       case 'B9': {$format = array(124.72,175.75); break;}
+                       case 'B10': {$format = array(87.87,124.72); break;}
+                       case 'C0': {$format = array(2599.37,3676.54); break;}
+                       case 'C1': {$format = array(1836.85,2599.37); break;}
+                       case 'C2': {$format = array(1298.27,1836.85); break;}
+                       case 'C3': {$format = array(918.43,1298.27); break;}
+                       case 'C4': {$format = array(649.13,918.43); break;}
+                       case 'C5': {$format = array(459.21,649.13); break;}
+                       case 'C6': {$format = array(323.15,459.21); break;}
+                       case 'C7': {$format = array(229.61,323.15); break;}
+                       case 'C8': {$format = array(161.57,229.61); break;}
+                       case 'C9': {$format = array(113.39,161.57); break;}
+                       case 'C10': {$format = array(79.37,113.39); break;}
+                       case 'RA0': {$format = array(2437.80,3458.27); break;}
+                       case 'RA1': {$format = array(1729.13,2437.80); break;}
+                       case 'RA2': {$format = array(1218.90,1729.13); break;}
+                       case 'RA3': {$format = array(864.57,1218.90); break;}
+                       case 'RA4': {$format = array(609.45,864.57); break;}
+                       case 'SRA0': {$format = array(2551.18,3628.35); break;}
+                       case 'SRA1': {$format = array(1814.17,2551.18); break;}
+                       case 'SRA2': {$format = array(1275.59,1814.17); break;}
+                       case 'SRA3': {$format = array(907.09,1275.59); break;}
+                       case 'SRA4': {$format = array(637.80,907.09); break;}
+                       case 'LETTER': {$format = array(612.00,792.00); break;}
+                       case 'LEGAL': {$format = array(612.00,1008.00); break;}
+                       case 'LEDGER': {$format = array(279.00,432.00); break;}
+                       case 'TABLOID': {$format = array(279.00,432.00); break;}
+                       case 'EXECUTIVE': {$format = array(521.86,756.00); break;}
+                       case 'FOLIO': {$format = array(612.00,936.00); break;}
+                       case 'B': {$format=array(362.83,561.26 );        break;}                //      'B' format paperback size 128x198mm
+                       case 'A': {$format=array(314.65,504.57 );        break;}                //      'A' format paperback size 111x178mm
+                       case 'DEMY': {$format=array(382.68,612.28 );  break;}           //      'Demy' format paperback size 135x216mm
+                       case 'ROYAL': {$format=array(433.70,663.30 );  break;}  //      'Royal' format paperback size 153x234mm
+                       default: $format = false;
+               }
+       return $format;
+}
+
+
+/*-- PROGRESS-BAR --*/
+function StartProgressBarOutput($mode=1) {
+       // must be relative path, or URI (not a file system path)
+       if (!defined('_MPDF_URI')) { 
+               $this->progressBar = false;
+               if ($this->debug) { $this->Error("You need to define _MPDF_URI to use the progress bar!"); }
+               else return false; 
+       }
+       $this->progressBar = $mode;
+       if ($this->progbar_altHTML) {
+               echo $this->progbar_altHTML;
+       }
+       else {
+          echo '<html>
+       <head>
+       <title>mPDF File Progress</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <link rel="stylesheet" type="text/css" href="'._MPDF_URI.'progbar.css" />
+               </head>
+       <body>
+       <div class="main">
+               <div class="heading">'.$this->progbar_heading.'</div>
+               <div class="demo">
+          ';
+          if ($this->progressBar==2) { echo '          <table width="100%"><tr><td style="width: 50%;"> 
+                       <span class="barheading">Writing HTML code</span> <br/>
+
+                       <div class="progressBar">
+                       <div id="element1"  class="innerBar">&nbsp;</div>
+                       </div>
+                       <span class="code" id="box1"></span>
+                       </td><td style="width: 50%;">
+                       <span class="barheading">Autosizing elements</span> <br/>
+                       <div class="progressBar">
+                       <div id="element4"  class="innerBar">&nbsp;</div>
+                       </div>
+                       <span class="code" id="box4"></span>
+                       <br/><br/>
+                       <span class="barheading">Writing Tables</span> <br/>
+                       <div class="progressBar">
+                       <div id="element7"  class="innerBar">&nbsp;</div>
+                       </div>
+                       <span class="code" id="box7"></span>
+                       </td></tr>
+                       <tr><td><br /><br /></td><td></td></tr>
+                       <tr><td style="width: 50%;"> 
+       '; }
+       echo '                  <span class="barheading">Writing PDF file</span> <br/>
+                       <div class="progressBar">
+                       <div id="element2"  class="innerBar">&nbsp;</div>
+                       </div>
+                       <span class="code" id="box2"></span>
+          ';
+          if ($this->progressBar==2) { echo '
+                       </td><td style="width: 50%;">
+                       <span class="barheading">Memory usage</span> <br/>
+                       <div class="progressBar">
+                       <div id="element5"  class="innerBar">&nbsp;</div>
+                       </div>
+                       <span id="box5">0</span> '.ini_get("memory_limit").'<br />
+                       <br/><br/>
+                       <span class="barheading">Memory usage (peak)</span> <br/>
+                       <div class="progressBar">
+                       <div id="element6"  class="innerBar">&nbsp;</div>
+                       </div>
+                       <span id="box6">0</span> '.ini_get("memory_limit").'<br />
+                       </td></tr>
+                       </table>
+          '; }
+          echo '                       <br/><br/>
+               <span id="box3"></span>
+
+               </div>
+          ';
+       }
+       ob_flush();
+      flush();
+}
+
+function UpdateProgressBar($el,$val,$txt='') {
+       // $val should be a string - 5 = actual value, +15 = increment
+
+       if ($this->progressBar<2) {
+               if ($el>3) { return; }
+               else if ($el ==1) { $el = 2; }
+       }
+       echo '<script type="text/javascript">';
+       if ($val) { echo ' document.getElementById(\'element'.$el.'\').style.width=\''.$val.'%\'; '; }
+       if ($txt) { echo ' document.getElementById(\'box'.$el.'\').innerHTML=\''.$txt.'\'; '; }
+       if ($this->progressBar==2) { 
+               $m = round(memory_get_usage(true)/1048576);
+               $m2 = round(memory_get_peak_usage(true)/1048576);
+               $mem = $m * 100 / (ini_get("memory_limit")+0);
+               $mem2 = $m2 * 100 / (ini_get("memory_limit")+0);
+               echo ' document.getElementById(\'element5\').style.width=\''.$mem.'%\'; '; 
+               echo ' document.getElementById(\'element6\').style.width=\''.$mem2.'%\'; '; 
+               echo ' document.getElementById(\'box5\').innerHTML=\''.$m.'MB / \'; '; 
+               echo ' document.getElementById(\'box6\').innerHTML=\''.$m2.'MB / \'; '; 
+       }
+       echo '</script>'."\n";
+       ob_flush();
+       flush();
+}
+/*-- END PROGRESS-BAR --*/
+
+
+
+function RestrictUnicodeFonts($res) {
+       // $res = array of (Unicode) fonts to restrict to: e.g. norasi|norasiB - language specific
+       if (count($res)) {      // Leave full list of available fonts if passed blank array
+               $this->available_unifonts = $res;
+       }
+       else { $this->available_unifonts = $this->default_available_fonts; }
+       if (count($this->available_unifonts) == 0) { $this->available_unifonts[] = $this->default_available_fonts[0]; }
+       $this->available_unifonts = array_values($this->available_unifonts);
+}
+
+
+function setMBencoding($enc) {
+       if ($this->mb_enc != $enc) { 
+               $this->mb_enc = $enc; 
+               mb_internal_encoding($this->mb_enc); 
+       }
+}
+
+
+function SetMargins($left,$right,$top) {
+       //Set left, top and right margins
+       $this->lMargin=$left;
+       $this->rMargin=$right;
+       $this->tMargin=$top;
+}
+
+function ResetMargins() {
+       //ReSet left, top margins
+       if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P' && $this->CurOrientation=='L') {
+           if (($this->mirrorMargins) && (($this->page)%2==0)) {       // EVEN
+               $this->tMargin=$this->orig_rMargin;
+               $this->bMargin=$this->orig_lMargin;
+           }
+           else {      // ODD  // OR NOT MIRRORING MARGINS/FOOTERS
+               $this->tMargin=$this->orig_lMargin;
+               $this->bMargin=$this->orig_rMargin;
+           }
+          $this->lMargin=$this->DeflMargin;
+          $this->rMargin=$this->DefrMargin;
+          $this->MarginCorrection = 0;
+          $this->PageBreakTrigger=$this->h-$this->bMargin;
+       }
+       else  if (($this->mirrorMargins) && (($this->page)%2==0)) {     // EVEN
+               $this->lMargin=$this->DefrMargin;
+               $this->rMargin=$this->DeflMargin;
+               $this->MarginCorrection = $this->DefrMargin-$this->DeflMargin;
+
+       }
+       else {  // ODD  // OR NOT MIRRORING MARGINS/FOOTERS
+               $this->lMargin=$this->DeflMargin;
+               $this->rMargin=$this->DefrMargin;
+               if ($this->mirrorMargins) { $this->MarginCorrection = $this->DeflMargin-$this->DefrMargin; }
+       }
+       $this->x=$this->lMargin;
+
+}
+
+function SetLeftMargin($margin) {
+       //Set left margin
+       $this->lMargin=$margin;
+       if($this->page>0 and $this->x<$margin) $this->x=$margin;
+}
+
+function SetTopMargin($margin) {
+       //Set top margin
+       $this->tMargin=$margin;
+}
+
+function SetRightMargin($margin) {
+       //Set right margin
+       $this->rMargin=$margin;
+}
+
+function SetAutoPageBreak($auto,$margin=0) {
+       //Set auto page break mode and triggering margin
+       $this->autoPageBreak=$auto;
+       $this->bMargin=$margin;
+       $this->PageBreakTrigger=$this->h-$margin;
+}
+
+function SetDisplayMode($zoom,$layout='continuous') {
+       //Set display mode in viewer
+       if($zoom=='fullpage' or $zoom=='fullwidth' or $zoom=='real' or $zoom=='default' or !is_string($zoom))
+               $this->ZoomMode=$zoom;
+       else
+               $this->Error('Incorrect zoom display mode: '.$zoom);
+       if($layout=='single' or $layout=='continuous' or $layout=='two' or $layout=='twoleft' or $layout=='tworight' or $layout=='default')
+               $this->LayoutMode=$layout;
+       else
+               $this->Error('Incorrect layout display mode: '.$layout);
+}
+
+function SetCompression($compress) {
+       //Set page compression
+       if(function_exists('gzcompress'))       $this->compress=$compress;
+       else $this->compress=false;
+}
+
+function SetTitle($title) {
+       //Title of document // Arrives as UTF-8
+       $this->title = $title;
+}
+
+function SetSubject($subject) {
+       //Subject of document
+       $this->subject= $subject;
+}
+
+function SetAuthor($author) {
+       //Author of document
+       $this->author= $author;
+}
+
+function SetKeywords($keywords) {
+       //Keywords of document
+       $this->keywords= $keywords;
+}
+
+function SetCreator($creator) {
+       //Creator of document
+       $this->creator= $creator;
+}
+
+
+function SetAnchor2Bookmark($x) {
+       $this->anchor2Bookmark = $x;
+}
+
+function AliasNbPages($alias='{nb}') {
+       //Define an alias for total number of pages
+       $this->aliasNbPg=$alias;
+}
+
+function AliasNbPageGroups($alias='{nbpg}') {
+       //Define an alias for total number of pages in a group
+       $this->aliasNbPgGp=$alias;
+}
+
+function SetAlpha($alpha, $bm='Normal', $return=false, $mode='B') {
+// alpha: real value from 0 (transparent) to 1 (opaque)
+// bm:    blend mode, one of the following:
+//          Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn,
+//          HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity
+// set alpha for stroking (CA) and non-stroking (ca) operations
+// mode determines F (fill) S (stroke) B (both)
+       if (($this->PDFA || $this->PDFX) && $alpha!=1) { 
+               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Image opacity must be 100% (Opacity changed to 100%)"; }
+               $alpha = 1; 
+       }
+       $a = array('BM'=>'/'.$bm);
+       if ($mode=='F' || $mode='B') $a['ca'] = $alpha;
+       if ($mode=='S' || $mode='B') $a['CA'] = $alpha;
+       $gs = $this->AddExtGState($a);
+       if ($return) { return sprintf('/GS%d gs', $gs); }
+       else { $this->_out(sprintf('/GS%d gs', $gs)); }
+}
+
+function AddExtGState($parms) {
+       $n = count($this->extgstates);
+       // check if graphics state already exists
+       for ($i=1; $i<=$n; $i++) {
+         if (count($this->extgstates[$i]['parms']) == count($parms)) {
+           $same = true;
+           foreach($this->extgstates[$i]['parms'] AS $k=>$v) {
+               if (!isset($parms[$k]) || $parms[$k] != $v) { $same = false; break; }
+           }
+           if ($same) { return $i; }
+         }
+       }
+       $n++;
+       $this->extgstates[$n]['parms'] = $parms;
+       return $n;
+}
+
+function SetVisibility($v) {
+       if (($this->PDFA || $this->PDFX) && $this->visibility!='visible') { $this->PDFAXwarnings[] = "Cannot set visibility to anything other than full when using PDFA or PDFX"; return ''; }
+       else if (!$this->PDFA && !$this->PDFX)
+               $this->pdf_version='1.5';
+       if($this->visibility!='visible') {
+               $this->_out('EMC');
+               $this->hasOC=intval($this->hasOC );     // mPDF 5.6.01
+       }
+       if($v=='printonly') {
+               $this->_out('/OC /OC1 BDC');
+               $this->hasOC=($this->hasOC | 1);        // mPDF 5.6.01
+       }
+       elseif($v=='screenonly') {
+               $this->_out('/OC /OC2 BDC');
+               $this->hasOC=($this->hasOC | 2);        // mPDF 5.6.01
+       }
+       elseif($v=='hidden') {
+               $this->_out('/OC /OC3 BDC');
+               $this->hasOC=($this->hasOC | 4);        // mPDF 5.6.01
+       }
+       elseif($v!='visible')
+               $this->Error('Incorrect visibility: '.$v);
+       $this->visibility=$v;
+}
+
+function Error($msg) {
+       //Fatal error
+       header('Content-Type: text/html; charset=utf-8');
+       die('<B>mPDF error: </B>'.$msg);
+}
+
+function Open() {
+       //Begin document
+       if($this->state==0)     $this->_begindoc();
+}
+
+function Close() {
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'2','Closing last page'); }        // *PROGRESS-BAR*
+       //Terminate document
+       if($this->state==3)     return;
+       if($this->page==0) $this->AddPage($this->CurOrientation);
+       if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }       // *TABLES*
+       if ($this->tablebuffer) { $this->printtablebuffer(); }  // *TABLES*
+/*-- COLUMNS --*/
+
+       if ($this->ColActive) {
+               $this->SetColumns(0);
+               $this->ColActive = 0; 
+               if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
+       }
+/*-- END COLUMNS --*/
+       if (count($this->divbuffer)) { $this->printdivbuffer(); }
+
+       // BODY Backgrounds
+       $s = '';
+
+       $s .= $this->PrintBodyBackgrounds();
+
+       $s .= $this->PrintPageBackgrounds();
+       $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$s."\n".'\\1', $this->pages[$this->page]);
+       $this->pageBackgrounds = array();
+
+       if($this->visibility!='visible')
+               $this->SetVisibility('visible');
+       // mPDF 5.6.01 - LAYERS
+       $this->EndLayer();
+
+       if (!$this->tocontents || !$this->tocontents->TOCmark) { //Page footer
+               $this->InFooter=true;
+               $this->Footer();
+               $this->InFooter=false;
+       }
+       if ($this->tocontents && ($this->tocontents->TOCmark || count($this->tocontents->m_TOC))) { $this->tocontents->insertTOC(); }   // *TOC*
+
+       //Close page
+       $this->_endpage();
+
+       //Close document
+       $this->_enddoc();
+}
+
+/*-- BACKGROUNDS --*/
+function _resizeBackgroundImage($imw, $imh, $cw, $ch, $resize=0, $repx, $repy, $pba=array(), $size=array()) {  // mPDF 5.6.10
+       // pba is background positioning area (from CSS background-origin) may not always be set [x,y,w,h]
+       // size is from CSS3 background-size - takes precendence over old resize 
+       //      $w - absolute length or % or auto or cover | contain
+       //      $h - absolute length or % or auto or cover | contain
+       // mPDF 5.6.10
+       if (isset($pba['w'])) $cw = $pba['w'];
+       if (isset($pba['h'])) $ch = $pba['h'];
+
+       $cw = $cw*_MPDFK;
+       $ch = $ch*_MPDFK;
+       if (empty($size) && !$resize) { return array($imw, $imh, $repx, $repy); }
+
+       // mPDF 5.6.10
+       if (isset($size['w']) && $size['w']) {
+               if ($size['w']=='contain') {
+               // Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area. 
+               // Same as resize==3
+                       $h = $imh * $cw/$imw;
+                       $w = $cw;
+                       if ($h > $ch) {
+                               $w = $w * $ch/$h;
+                               $h = $ch;
+                       }
+               }
+               else if ($size['w']=='cover') {
+               // Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area. 
+                       $h = $imh * $cw/$imw;
+                       $w = $cw;
+                       if ($h < $ch) {
+                               $w = $w * $h/$ch;
+                               $h = $ch;
+                       }
+               }
+               else {
+                       if (stristr($size['w'] ,'%')) {
+                               $size['w'] += 0; 
+                               $size['w'] /= 100; 
+                               $size['w'] = ($cw * $size['w']);
+                       }
+                       if (stristr($size['h'] ,'%')) {
+                               $size['h'] += 0; 
+                               $size['h'] /= 100; 
+                               $size['h'] = ($ch * $size['h']);
+                       }
+                       if ($size['w']=='auto' && $size['h']=='auto') {
+                               $w = $imw;
+                               $h = $imh;
+                       }
+                       else if ($size['w']=='auto' && $size['h']!='auto') {
+                               $w = $imw * $size['h']/$imh;
+                               $h = $size['h'];
+                       }
+                       else if ($size['w']!='auto' && $size['h']=='auto') {
+                               $h = $imh * $size['w']/$imw;
+                               $w = $size['w'];
+                       }
+                       else {
+                               $w = $size['w'];
+                               $h = $size['h'];
+                       }
+               }
+               return array($w, $h, $repx, $repy); 
+       }
+       else if ($resize==1 && $imw > $cw) {
+               $h = $imh * $cw/$imw;
+               return array($cw, $h, $repx, $repy); 
+       }
+       else if ($resize==2 && $imh > $ch) {
+               $w = $imw * $ch/$imh;
+               return array($w, $ch, $repx, $repy); 
+       }
+       else if ($resize==3) {
+               $w = $imw;
+               $h = $imh;
+               if ($w > $cw) {
+                       $h = $h * $cw/$w;
+                       $w = $cw;
+               }
+               if ($h > $ch) {
+                       $w = $w * $ch/$h;
+                       $h = $ch;
+               }
+               return array($w, $h, $repx, $repy); 
+       }
+       else if ($resize==4) {
+               $h = $imh * $cw/$imw;
+               return array($cw, $h, $repx, $repy); 
+       }
+       else if ($resize==5) {
+               $w = $imw * $ch/$imh;
+               return array($w, $ch, $repx, $repy); 
+       }
+       else if ($resize==6) {
+               return array($cw, $ch, $repx, $repy); 
+       }
+       return array($imw, $imh, $repx, $repy);
+}
+
+
+function SetBackground(&$properties, &$maxwidth) {
+       // mPDF 5.6.10  5.6.11
+       if (isset($properties['BACKGROUND-ORIGIN']) && ($properties['BACKGROUND-ORIGIN']=='border-box' || $properties['BACKGROUND-ORIGIN']== 'content-box')) { $origin = $properties['BACKGROUND-ORIGIN']; }
+       else { $origin = 'padding-box'; }
+       // mPDF 5.6.10
+       if (isset($properties['BACKGROUND-SIZE'])) { 
+               if (stristr($properties['BACKGROUND-SIZE'] ,'contain') ) { $bsw = $bsh = 'contain'; }
+               else if (stristr($properties['BACKGROUND-SIZE'] ,'cover') ) { $bsw = $bsh = 'cover'; }
+               else {
+                       $bsw = $bsh = 'auto';
+                       $sz = preg_split('/\s+/',trim($properties['BACKGROUND-SIZE']));
+                       if (count($sz)==2) { $bsw = $sz[0]; $bsh = $sz[1]; }
+                       else { $bsw = $sz[0]; }
+                       if (!stristr($bsw ,'%') && !stristr($bsw ,'auto') ) { $bsw = $this->ConvertSize($bsw ,$maxwidth,$this->FontSize); }
+                       if (!stristr($bsh ,'%') && !stristr($bsh ,'auto') ) { $bsh = $this->ConvertSize($bsh ,$maxwidth,$this->FontSize); }
+               }
+               $size = array('w'=>$bsw, 'h'=>$bsh);
+       }
+          if (preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/',$properties['BACKGROUND-IMAGE'])) {
+               return array('gradient'=>$properties['BACKGROUND-IMAGE'], 'origin'=>$origin, 'size'=>$size );   // mPDF 5.6.10
+          }
+          else {
+               $file = $properties['BACKGROUND-IMAGE'];
+               $sizesarray = $this->Image($file,0,0,0,0,'','',false, false, false, false, true);
+               if (isset($sizesarray['IMAGE_ID'])) {
+                       $image_id = $sizesarray['IMAGE_ID'];
+                       $orig_w = $sizesarray['WIDTH']*_MPDFK;          // in user units i.e. mm
+                       $orig_h = $sizesarray['HEIGHT']*_MPDFK;         // (using $this->img_dpi)
+                       if (isset($properties['BACKGROUND-IMAGE-RESOLUTION'])) { 
+                               if (preg_match('/from-image/i', $properties['BACKGROUND-IMAGE-RESOLUTION']) && isset($sizesarray['set-dpi']) && $sizesarray['set-dpi']>0) {
+                                       $orig_w *= $this->img_dpi / $sizesarray['set-dpi'];
+                                       $orig_h *= $this->img_dpi / $sizesarray['set-dpi'];
+                               }
+                               else if (preg_match('/(\d+)dpi/i', $properties['BACKGROUND-IMAGE-RESOLUTION'], $m)) {
+                                       $dpi = $m[1]; 
+                                       if ($dpi > 0) {
+                                               $orig_w *= $this->img_dpi / $dpi;
+                                               $orig_h *= $this->img_dpi / $dpi;
+                                       }
+                               }
+                       }
+                       $x_repeat = true;
+                       $y_repeat = true;
+                       if (isset($properties['BACKGROUND-REPEAT'])) {
+                               if ($properties['BACKGROUND-REPEAT']=='no-repeat' || $properties['BACKGROUND-REPEAT']=='repeat-x') { $y_repeat = false; }
+                               if ($properties['BACKGROUND-REPEAT']=='no-repeat' || $properties['BACKGROUND-REPEAT']=='repeat-y') { $x_repeat = false; }
+                       }
+                       $x_pos = 0;
+                       $y_pos = 0;
+                       if (isset($properties['BACKGROUND-POSITION'])) { 
+                               $ppos = preg_split('/\s+/',$properties['BACKGROUND-POSITION']);
+                               $x_pos = $ppos[0];
+                               $y_pos = $ppos[1];
+                               if (!stristr($x_pos ,'%') ) { $x_pos = $this->ConvertSize($x_pos ,$maxwidth,$this->FontSize); }
+                               if (!stristr($y_pos ,'%') ) { $y_pos = $this->ConvertSize($y_pos ,$maxwidth,$this->FontSize); }
+                       }
+                       if (isset($properties['BACKGROUND-IMAGE-RESIZE'])) { $resize = $properties['BACKGROUND-IMAGE-RESIZE']; }
+                       else { $resize = 0; }
+                       if (isset($properties['BACKGROUND-IMAGE-OPACITY'])) { $opacity = $properties['BACKGROUND-IMAGE-OPACITY']; }
+                       else { $opacity = 1; }
+                       return array('image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$sizesarray['itype'], 'origin'=>$origin, 'size'=>$size );
+               }
+          }
+          return false;
+}
+/*-- END BACKGROUNDS --*/
+
+function PrintBodyBackgrounds() {
+       $s = '';
+       $clx = 0;
+       $cly = 0;
+       $clw = $this->w;
+       $clh = $this->h;
+       // If using bleed and trim margins in paged media
+       if ($this->pageDim[$this->page]['outer_width_LR'] || $this->pageDim[$this->page]['outer_width_TB']) {
+               $clx = $this->pageDim[$this->page]['outer_width_LR'] - $this->pageDim[$this->page]['bleedMargin'];
+               $cly = $this->pageDim[$this->page]['outer_width_TB'] - $this->pageDim[$this->page]['bleedMargin'];
+               $clw = $this->w - 2*$clx;
+               $clh = $this->h - 2*$cly;
+       }
+
+       if ($this->bodyBackgroundColor) {
+               $s .= 'q ' .$this->SetFColor($this->bodyBackgroundColor, true)."\n";
+               if ($this->bodyBackgroundColor{0}==5) { // RGBa
+                       $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{4})/100, 'Normal', true, 'F')."\n";
+               }
+               else if ($this->bodyBackgroundColor{0}==6) {    // CMYKa
+                       $s .= $this->SetAlpha(ord($this->bodyBackgroundColor{5})/100, 'Normal', true, 'F')."\n";
+               }
+               $s .= sprintf('%.3F %.3F %.3F %.3F re f Q', ($clx*_MPDFK), ($cly*_MPDFK),$clw*_MPDFK,$clh*_MPDFK)."\n";
+       }
+
+/*-- BACKGROUNDS --*/
+       if ($this->bodyBackgroundGradient) { 
+               $g = $this->grad->parseBackgroundGradient($this->bodyBackgroundGradient);
+               if ($g) {
+                       $s .= $this->grad->Gradient($clx, $cly, $clw, $clh, (isset($g['gradtype']) ? $g['gradtype'] : null), $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
+               }
+       }
+       if ($this->bodyBackgroundImage) {
+          if ( $this->bodyBackgroundImage['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->bodyBackgroundImage['gradient'])) {
+               $g = $this->grad->parseMozGradient( $this->bodyBackgroundImage['gradient']);
+               if ($g) {
+                       $s .= $this->grad->Gradient($clx, $cly, $clw, $clh, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true);
+               }
+          }
+          else if ($this->bodyBackgroundImage['image_id']) {   // Background pattern
+                       $n = count($this->patterns)+1;
+                       // If using resize, uses TrimBox (not including the bleed)
+                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($this->bodyBackgroundImage['orig_w'], $this->bodyBackgroundImage['orig_h'], $clw, $clh, $this->bodyBackgroundImage['resize'], $this->bodyBackgroundImage['x_repeat'], $this->bodyBackgroundImage['y_repeat']);
+
+                       $this->patterns[$n] = array('x'=>$clx, 'y'=>$cly, 'w'=>$clw, 'h'=>$clh, 'pgh'=>$this->h, 'image_id'=>$this->bodyBackgroundImage['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$this->bodyBackgroundImage['x_pos'], 'y_pos'=>$this->bodyBackgroundImage['y_pos'], 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$this->bodyBackgroundImage['itype']);
+                       if (($this->bodyBackgroundImage['opacity']>0 || $this->bodyBackgroundImage['opacity']==='0') && $this->bodyBackgroundImage['opacity']<1) { $opac = $this->SetAlpha($this->bodyBackgroundImage['opacity'],'Normal',true); }
+                       else { $opac = ''; }
+                       $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, ($clx*_MPDFK), ($cly*_MPDFK),$clw*_MPDFK, $clh*_MPDFK) ."\n";
+          }
+       }
+/*-- END BACKGROUNDS --*/
+       return $s;
+}
+
+
+function PrintPageBackgrounds($adjustmenty=0) {
+       $s = '';
+
+       ksort($this->pageBackgrounds);
+       foreach($this->pageBackgrounds AS $bl=>$pbs) {
+               foreach ($pbs AS $pb) {
+                 if ((!isset($pb['image_id']) && !isset($pb['gradient'])) || isset($pb['shadowonly'])) {       // Background colour or boxshadow
+                       // mPDF 5.6.01  - LAYERS
+                       if($pb['z-index']>0) {
+                               $this->current_layer = $pb['z-index'];
+                               $s .= "\n".'/OCBZ-index /ZI'.$pb['z-index'].' BDC'."\n";
+                       }
+
+                       if($pb['visibility']!='visible') {
+                               if($pb['visibility']=='printonly') 
+                                       $s .= '/OC /OC1 BDC'."\n";
+                               else if($pb['visibility']=='screenonly')
+                                       $s .= '/OC /OC2 BDC'."\n";
+                               else if($pb['visibility']=='hidden')
+                                       $s .= '/OC /OC3 BDC'."\n";
+                       }
+                       // Box shadow
+                       if (isset($pb['shadow']) && $pb['shadow']) { $s .= $pb['shadow']."\n"; }
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
+                       $s .= 'q '.$this->SetFColor($pb['col'], true)."\n";
+                       if ($pb['col']{0}==5) { // RGBa
+                               $s .= $this->SetAlpha(ord($pb['col']{4})/100, 'Normal', true, 'F')."\n"; 
+                       }
+                       else if ($pb['col']{0}==6) {    // CMYKa
+                               $s .= $this->SetAlpha(ord($pb['col']{5})/100, 'Normal', true, 'F')."\n";
+                       }
+                       $s .= sprintf('%.3F %.3F %.3F %.3F re f Q',$pb['x']*_MPDFK,($this->h-$pb['y'])*_MPDFK,$pb['w']*_MPDFK,-$pb['h']*_MPDFK)."\n";
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
+                       if($pb['visibility']!='visible')
+                               $s .= 'EMC'."\n";
+
+                       // mPDF 5.6.01  - LAYERS
+                       if($pb['z-index']>0) {
+                               $s .= "\n".'EMCBZ-index'."\n";
+                               $this->current_layer = 0;
+                       }
+                 }
+               }
+/*-- BACKGROUNDS --*/
+               foreach ($pbs AS $pb) {
+                 // mPDF 5.6.01  - LAYERS
+                 if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
+                       if($pb['z-index']>0) {
+                               $this->current_layer = $pb['z-index'];
+                               $s .= "\n".'/OCGZ-index /ZI'.$pb['z-index'].' BDC'."\n";
+                       }
+                       if($pb['visibility']!='visible') {
+                               if($pb['visibility']=='printonly') 
+                                       $s .= '/OC /OC1 BDC'."\n";
+                               else if($pb['visibility']=='screenonly')
+                                       $s .= '/OC /OC2 BDC'."\n";
+                               else if($pb['visibility']=='hidden')
+                                       $s .= '/OC /OC3 BDC'."\n";
+                       }
+                 }
+                 if (isset($pb['gradient']) && $pb['gradient']) {
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
+                       $s .= $this->grad->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
+                 }
+                 else if (isset($pb['image_id']) && $pb['image_id']) { // Background Image
+                       $pb['y'] -= $adjustmenty; 
+                       $pb['h'] += $adjustmenty; 
+                       $n = count($this->patterns)+1;
+                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($pb['orig_w'], $pb['orig_h'], $pb['w'], $pb['h'], $pb['resize'], $pb['x_repeat'], $pb['y_repeat'], $pb['bpa'], $pb['size']);       // mPDF 5.6.10
+                       $this->patterns[$n] = array('x'=>$pb['x'], 'y'=>$pb['y'], 'w'=>$pb['w'], 'h'=>$pb['h'], 'pgh'=>$this->h, 'image_id'=>$pb['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$pb['x_pos'], 'y_pos'=>$pb['y_pos'], 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$pb['itype'], 'bpa'=>$pb['bpa']);      // mPDF 5.6.10
+                       $x = $pb['x']*_MPDFK;
+                       $y = ($this->h - $pb['y'])*_MPDFK;
+                       $w = $pb['w']*_MPDFK;
+                       $h = -$pb['h']*_MPDFK;
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
+                       if ($this->writingHTMLfooter || $this->writingHTMLheader) {     // Write each (tiles) image rather than use as a pattern
+                               $iw = $pb['orig_w']/_MPDFK;
+                               $ih = $pb['orig_h']/_MPDFK;
+
+                               $w = $pb['w'];
+                               $h = $pb['h'];
+                               $x0 = $pb['x'];
+                               $y0 = $pb['y'];
+
+                               // mPDF 5.6.11
+                               if (isset($pb['bpa']) && $pb['bpa']) {
+                                       $w = $pb['bpa']['w'];
+                                       $h = $pb['bpa']['h'];
+                                       $x0 = $pb['bpa']['x'];
+                                       $y0 = $pb['bpa']['y'];
+                               }
+
+                               // mPDF 5.6.11
+                               if (isset($pb['size']['w']) && $pb['size']['w']) {
+                                       $size = $pb['size'];
+
+                                       if ($size['w']=='contain') {
+                                       // Scale the image, while preserving its intrinsic aspect ratio (if any), to the largest size such that both its width and its height can fit inside the background positioning area. 
+                                       // Same as resize==3
+                                               $ih = $ih * $pb['bpa']['w']/$iw;
+                                               $iw = $pb['bpa']['w'];
+                                               if ($ih > $pb['bpa']['h']) {
+                                                       $iw = $iw * $pb['bpa']['h']/$ih;
+                                                       $ih = $pb['bpa']['h'];
+                                               }
+                                       }
+                                       else if ($size['w']=='cover') {
+                                       // Scale the image, while preserving its intrinsic aspect ratio (if any), to the smallest size such that both its width and its height can completely cover the background positioning area. 
+                                               $ih = $ih * $pb['bpa']['w']/$iw;
+                                               $iw = $pb['bpa']['w'];
+                                               if ($ih < $pb['bpa']['h']) {
+                                                       $iw = $iw * $ih/$pb['bpa']['h'];
+                                                       $ih = $pb['bpa']['h'];
+                                               }
+                                       }
+                                       else {
+                                               if (stristr($size['w'] ,'%')) {
+                                                       $size['w'] += 0; 
+                                                       $size['w'] /= 100; 
+                                                       $size['w'] = ($pb['bpa']['w'] * $size['w']);
+                                               }
+                                               if (stristr($size['h'] ,'%')) {
+                                                       $size['h'] += 0; 
+                                                       $size['h'] /= 100; 
+                                                       $size['h'] = ($pb['bpa']['h'] * $size['h']);
+                                               }
+                                               if ($size['w']=='auto' && $size['h']=='auto') {
+                                                       $iw = $iw;
+                                                       $ih = $ih;
+                                               }
+                                               else if ($size['w']=='auto' && $size['h']!='auto') {
+                                                       $iw = $iw * $size['h']/$ih;
+                                                       $ih = $size['h'];
+                                               }
+                                               else if ($size['w']!='auto' && $size['h']=='auto') {
+                                                       $ih = $ih * $size['w']/$iw;
+                                                       $iw = $size['w'];
+                                               }
+                                               else {
+                                                       $iw = $size['w'];
+                                                       $ih = $size['h'];
+                                               }
+                                       }
+                               }
+
+                               // Number to repeat
+                               if ($pb['x_repeat']) { $nx = ceil($pb['w']/$iw)+1; }    // mPDF 5.6.11
+                               else { $nx = 1; }
+                               if ($pb['y_repeat']) { $ny = ceil($pb['h']/$ih)+1; }    // mPDF 5.6.11
+                               else { $ny = 1; }
+
+                               $x_pos = $pb['x_pos'];
+                               if (stristr($x_pos ,'%') ) { 
+                                       $x_pos += 0; 
+                                       $x_pos /= 100; 
+                                       $x_pos = ($pb['bpa']['w'] * $x_pos) - ($iw * $x_pos);   // mPDF 5.6.11
+                               }
+                               $y_pos = $pb['y_pos'];
+                               if (stristr($y_pos ,'%') ) { 
+                                       $y_pos += 0; 
+                                       $y_pos /= 100; 
+                                       $y_pos = ($pb['bpa']['h'] * $y_pos) - ($ih * $y_pos);   // mPDF 5.6.11
+                               }
+                               if ($nx>1) {
+                                       while($x_pos>($pb['x']-$pb['bpa']['x'])) { $x_pos -= $iw; }     // mPDF 5.6.11
+                               }
+                               if ($ny>1) {
+                                       while($y_pos>($pb['y']-$pb['bpa']['y'])) { $y_pos -= $ih; }     // mPDF 5.6.11
+                               }
+                               for($xi=0;$xi<$nx;$xi++) {
+                                 for($yi=0;$yi<$ny;$yi++) {
+                                       $x = $x0 + $x_pos + ($iw*$xi);
+                                       $y = $y0 + $y_pos + ($ih*$yi);
+                                       if ($pb['opacity']>0 && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
+                                       else { $opac = ''; }
+                                       $s .= sprintf("q %s %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q", $opac,$iw*_MPDFK,$ih*_MPDFK,$x*_MPDFK,($this->h-($y+$ih))*_MPDFK,$pb['image_id']) ."\n";
+                                 }
+                               }
+                       }
+                       else {
+                               if (($pb['opacity']>0 || $pb['opacity']==='0') && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
+                               else { $opac = ''; }
+                               $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) ."\n";
+                       }
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
+                 }
+                 if ((isset($pb['gradient']) && $pb['gradient']) || (isset($pb['image_id']) && $pb['image_id'])) {
+                       if($pb['visibility']!='visible')
+                               $s .= 'EMC'."\n";
+
+                       // mPDF 5.6.01  - LAYERS
+                       if($pb['z-index']>0) {
+                               $s .= "\n".'EMCGZ-index'."\n";
+                               $this->current_layer = 0;
+                       }
+                 }
+
+               }
+/*-- END BACKGROUNDS --*/
+       }
+       return $s;
+}
+
+function PrintTableBackgrounds($adjustmenty=0) {
+       $s = '';
+/*-- BACKGROUNDS --*/
+       ksort($this->tableBackgrounds);
+       foreach($this->tableBackgrounds AS $bl=>$pbs) {
+               foreach ($pbs AS $pb) {
+                if ((!isset($pb['gradient']) || !$pb['gradient']) && (!isset($pb['image_id']) || !$pb['image_id'])) {
+                       $s .= 'q '.$this->SetFColor($pb['col'], true)."\n";
+                       if ($pb['col']{0}==5) { // RGBa
+                               $s .= $this->SetAlpha(ord($pb['col']{4})/100, 'Normal', true, 'F')."\n"; 
+                       }
+                       else if ($pb['col']{0}==6) {    // CMYKa
+                               $s .= $this->SetAlpha(ord($pb['col']{5})/100, 'Normal', true, 'F')."\n";
+                       }
+                       $s .= sprintf('%.3F %.3F %.3F %.3F re %s Q',$pb['x']*_MPDFK,($this->h-$pb['y'])*_MPDFK,$pb['w']*_MPDFK,-$pb['h']*_MPDFK,'f')."\n";
+                 }
+                if (isset($pb['gradient']) && $pb['gradient']) {
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
+                       $s .= $this->grad->Gradient($pb['x'], $pb['y'], $pb['w'], $pb['h'], $pb['gradtype'], $pb['stops'], $pb['colorspace'], $pb['coords'], $pb['extend'], true);
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
+                 }
+                 if (isset($pb['image_id']) && $pb['image_id']) {      // Background pattern
+                       $pb['y'] -= $adjustmenty; 
+                       $pb['h'] += $adjustmenty; 
+                       $n = count($this->patterns)+1;
+                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($pb['orig_w'], $pb['orig_h'], $pb['w'], $pb['h'], $pb['resize'], $pb['x_repeat'], $pb['y_repeat']);
+                       $this->patterns[$n] = array('x'=>$pb['x'], 'y'=>$pb['y'], 'w'=>$pb['w'], 'h'=>$pb['h'], 'pgh'=>$this->h, 'image_id'=>$pb['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$pb['x_pos'], 'y_pos'=>$pb['y_pos'], 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$pb['itype']);
+                       $x = $pb['x']*_MPDFK;
+                       $y = ($this->h - $pb['y'])*_MPDFK;
+                       $w = $pb['w']*_MPDFK;
+                       $h = -$pb['h']*_MPDFK;
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= $pb['clippath']."\n"; }
+                       if ($pb['opacity']>0 && $pb['opacity']<1) { $opac = $this->SetAlpha($pb['opacity'],'Normal',true); }
+                       else { $opac = ''; }
+                       $s .= sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $x, $y, $w, $h) ."\n";
+                       if (isset($pb['clippath']) && $pb['clippath']) { $s .= 'Q'."\n"; }
+                 }
+               }
+       }
+/*-- END BACKGROUNDS --*/
+       return $s;
+}
+
+// mPDF 5.6.01 - LAYERS
+function BeginLayer($id) {
+       if($this->current_layer>0) $this->EndLayer();
+       if ($id < 1) { return false; }
+       if (!isset($this->layers[$id])) { 
+               $this->layers[$id] = array('name'=>'Layer '.($id) );
+               if (($this->PDFA || $this->PDFX)) { $this->PDFAXwarnings[] = "Cannot use layers when using PDFA or PDFX"; return ''; }
+               else if (!$this->PDFA && !$this->PDFX) { $this->pdf_version='1.5'; }
+       }
+       $this->current_layer = $id;
+       $this->_out('/OCZ-index /ZI'.$id.' BDC');
+
+       $this->pageoutput[$this->page] = array();
+}
+
+function EndLayer() {
+       if($this->current_layer>0) {
+               $this->_out('EMCZ-index');
+               $this->current_layer = 0;
+       }
+}
+
+
+
+// Depracated - can use AddPage for all
+function AddPages($orientation='',$condition='', $resetpagenum='', $pagenumstyle='', $suppress='',$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='')
+{
+       $this->AddPage($orientation,$condition,$resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue,$pagesel,$newformat); 
+}
+
+
+function AddPageByArray($a) {
+       if (!is_array($a)) { $a = array(); }
+       $orientation = (isset($a['orientation']) ? $a['orientation'] : '');
+       $condition = (isset($a['condition']) ? $a['condition'] : (isset($a['type']) ? $a['type'] : ''));
+       $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : '');
+       $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : '');
+       $suppress = (isset($a['suppress']) ? $a['suppress'] : '');
+       $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : ''));
+       $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : ''));
+       $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : ''));
+       $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : ''));
+       $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : ''));
+       $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : ''));
+       $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : ''));
+       $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : ''));
+       $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : ''));
+       $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : ''));
+       $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0));
+       $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0));
+       $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0));
+       $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0));
+       $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : ''));
+       $newformat = (isset($a['newformat']) ? $a['newformat'] : (isset($a['sheet-size']) ? $a['sheet-size'] : ''));
+
+       $this->AddPage($orientation,$condition,$resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue,$pagesel,$newformat);
+
+}
+
+
+function AddPage($orientation='',$condition='', $resetpagenum='', $pagenumstyle='', $suppress='',$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='')
+{
+/*-- CSS-FLOAT --*/
+       // Float DIV
+       // Cannot do with columns on, or if any change in page orientation/margins etc.
+       // If next page already exists - i.e background /headers and footers already written
+       if ($this->state > 0 && $this->page < count($this->pages)) {
+               $bak_cml = $this->cMarginL;
+               $bak_cmr = $this->cMarginR; 
+               $bak_dw = $this->divwidth;
+               // Paint Div Border if necessary
+               if ($this->blklvl > 0) {
+                       $save_tr = $this->table_rotate; // *TABLES*
+                       $this->table_rotate = 0;        // *TABLES*
+                       if ($this->y == $this->blk[$this->blklvl]['y0']) {  $this->blk[$this->blklvl]['startpage']++; }
+                       if (($this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table'] ) { $toplvl = $this->blklvl; }
+                       else { $toplvl = $this->blklvl-1; }
+                       $sy = $this->y;
+                       for ($bl=1;$bl<=$toplvl;$bl++) {
+                               $this->PaintDivBB('pagebottom',0,$bl);
+                       }
+                       $this->y = $sy;
+                       $this->table_rotate = $save_tr; // *TABLES*
+               }
+               $s = $this->PrintPageBackgrounds();
+
+               // Writes after the marker so not overwritten later by page background etc.
+               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+               $this->pageBackgrounds = array();
+               $family=$this->FontFamily;
+               $style=$this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
+               $size=$this->FontSizePt;
+               $lw=$this->LineWidth;
+               $dc=$this->DrawColor;
+               $fc=$this->FillColor;
+               $tc=$this->TextColor;
+               $cf=$this->ColorFlag;
+
+               $this->printfloatbuffer();
+
+               //Move to next page
+               $this->page++;
+               $this->ResetMargins();
+               $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
+               $this->x=$this->lMargin;
+               $this->y=$this->tMargin;
+               $this->FontFamily='';
+               $this->_out('2 J');
+               $this->LineWidth=$lw;
+               $this->_out(sprintf('%.3F w',$lw*_MPDFK));
+               if($family)     $this->SetFont($family,$style,$size,true,true);
+               $this->DrawColor=$dc;
+               if($dc!=$this->defDrawColor) $this->_out($dc);
+               $this->FillColor=$fc;
+               if($fc!=$this->defFillColor) $this->_out($fc);
+               $this->TextColor=$tc;
+               $this->ColorFlag=$cf;
+               for($bl=1;$bl<=$this->blklvl;$bl++) {
+                       $this->blk[$bl]['y0'] = $this->y;
+                       // Don't correct more than once for background DIV containing a Float
+                       if (!isset($this->blk[$bl]['marginCorrected'][$this->page])) { $this->blk[$bl]['x0'] += $this->MarginCorrection; }
+                       $this->blk[$bl]['marginCorrected'][$this->page] = true; 
+               }
+               $this->cMarginL = $bak_cml;
+               $this->cMarginR = $bak_cmr;
+               $this->divwidth = $bak_dw;
+               return '';
+       }
+/*-- END CSS-FLOAT --*/
+
+       //Start a new page
+       if($this->state==0) $this->Open();
+
+       $bak_cml = $this->cMarginL;
+       $bak_cmr = $this->cMarginR; 
+       $bak_dw = $this->divwidth;
+
+
+       $bak_lh = $this->lineheight;
+
+       $orientation = substr(strtoupper($orientation),0,1);
+       $condition = strtoupper($condition);
+
+
+       if ($condition == 'NEXT-EVEN') {        // always adds at least one new page to create an Even page
+          if (!$this->mirrorMargins) { $condition = ''; }
+          else { 
+               if ($pagesel) { $pbch = $pagesel; $pagesel = ''; }      // *CSS-PAGE*
+               else { $pbch = false; } // *CSS-PAGE*
+               $this->AddPage($this->CurOrientation,'O'); 
+               if ($pbch ) { $pagesel = $pbch; }       // *CSS-PAGE*
+               $condition = ''; 
+          }
+       }
+       if ($condition == 'NEXT-ODD') { // always adds at least one new page to create an Odd page
+          if (!$this->mirrorMargins) { $condition = ''; }
+          else { 
+               if ($pagesel) { $pbch = $pagesel; $pagesel = ''; }      // *CSS-PAGE*
+               else { $pbch = false; } // *CSS-PAGE*
+               $this->AddPage($this->CurOrientation,'E'); 
+               if ($pbch ) { $pagesel = $pbch; }       // *CSS-PAGE*
+               $condition = ''; 
+          }
+       }
+
+
+       if ($condition == 'E') {        // only adds new page if needed to create an Even page
+          if (!$this->mirrorMargins || ($this->page)%2==0) { return false; }
+       }
+       if ($condition == 'O') {        // only adds new page if needed to create an Odd page
+          if (!$this->mirrorMargins || ($this->page)%2==1) { return false; }
+       }
+
+       if ($resetpagenum || $pagenumstyle || $suppress) {
+               $this->PageNumSubstitutions[] = array('from'=>($this->page+1), 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
+       }
+
+
+       $save_tr = $this->table_rotate; // *TABLES*
+       $this->table_rotate = 0;        // *TABLES*
+       $save_kwt = $this->kwt;
+       $this->kwt = 0;
+       // mPDF 5.6.01 - LAYERS
+       $save_layer = $this->current_layer;
+       $save_vis = $this->visibility;
+
+       if($this->visibility!='visible')
+               $this->SetVisibility('visible');
+       // mPDF 5.6.01 - LAYERS
+       $this->EndLayer();
+
+       // Paint Div Border if necessary
+       //PAINTS BACKGROUND COLOUR OR BORDERS for DIV - DISABLED FOR COLUMNS (cf. AcceptPageBreak) AT PRESENT in ->PaintDivBB
+       if (!$this->ColActive && $this->blklvl > 0) {
+               if (isset($this->blk[$this->blklvl]['y0']) && $this->y == $this->blk[$this->blklvl]['y0']) {  
+                       if (isset($this->blk[$this->blklvl]['startpage'])) { $this->blk[$this->blklvl]['startpage']++; }
+                       else { $this->blk[$this->blklvl]['startpage'] = 1; }
+               }
+               if ((isset($this->blk[$this->blklvl]['y0']) && $this->y > $this->blk[$this->blklvl]['y0']) || $this->flowingBlockAttr['is_table'] ) { $toplvl = $this->blklvl; }
+               else { $toplvl = $this->blklvl-1; }
+               $sy = $this->y;
+               for ($bl=1;$bl<=$toplvl;$bl++) {
+
+                       // mPDF 5.6.01 - LAYERS
+                       if ($this->blk[$bl]['z-index']>0) {
+                               $this->BeginLayer($this->blk[$bl]['z-index']);
+                       }
+                       if (isset($this->blk[$bl]['visibility']) && $this->blk[$bl]['visibility'] && $this->blk[$bl]['visibility']!='visible') {
+                               $this->SetVisibility($this->blk[$bl]['visibility']);
+                       }
+
+                       $this->PaintDivBB('pagebottom',0,$bl);
+               }
+               $this->y = $sy;
+               // RESET block y0 and x0 - see below
+       }
+
+       if($this->visibility!='visible')
+               $this->SetVisibility('visible');
+       // mPDF 5.6.01 - LAYERS
+       $this->EndLayer();
+
+       // BODY Backgrounds
+       if ($this->page > 0) {
+               $s = '';
+               $s .= $this->PrintBodyBackgrounds();
+
+               $s .= $this->PrintPageBackgrounds();
+               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$s."\n".'\\1', $this->pages[$this->page]);
+               $this->pageBackgrounds = array();
+       }
+
+       $save_kt = $this->keep_block_together;
+       $this->keep_block_together = 0;
+
+       $save_cols = false;
+/*-- COLUMNS --*/
+       if ($this->ColActive) {
+               $save_cols = true;
+               $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
+               $this->SetColumns(0);
+       }
+/*-- END COLUMNS --*/
+
+
+       $family=$this->FontFamily;
+       $style=$this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
+       $size=$this->FontSizePt;
+       $this->ColumnAdjust = true;     // enables column height adjustment for the page
+       $lw=$this->LineWidth;
+       $dc=$this->DrawColor;
+       $fc=$this->FillColor;
+       $tc=$this->TextColor;
+       $cf=$this->ColorFlag;
+       if($this->page>0)
+       {
+               //Page footer
+               $this->InFooter=true;
+
+               $this->Reset();
+               $this->pageoutput[$this->page] = array();
+
+               $this->Footer();
+               //Close page
+               $this->_endpage();
+       }
+
+
+       //Start new page
+       $this->_beginpage($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat);
+       if ($this->docTemplate) {
+               $pagecount = $this->SetSourceFile($this->docTemplate);
+               if (($this->page - $this->docTemplateStart) > $pagecount) {
+                       if ($this->docTemplateContinue) { 
+                               $tplIdx = $this->ImportPage($pagecount);
+                               $this->UseTemplate($tplIdx);
+                       }
+               }
+               else {
+                       $tplIdx = $this->ImportPage(($this->page - $this->docTemplateStart));
+                       $this->UseTemplate($tplIdx);
+               }
+       }
+       if ($this->pageTemplate) {
+               $this->UseTemplate($this->pageTemplate);
+       }
+
+       // Tiling Patterns
+       $this->_out('___PAGE___START'.date('jY'));
+       $this->_out('___BACKGROUND___PATTERNS'.date('jY'));
+       $this->_out('___HEADER___MARKER'.date('jY'));
+       $this->pageBackgrounds = array();
+
+       //Set line cap style to square
+       $this->SetLineCap(2);
+       //Set line width
+       $this->LineWidth=$lw;
+       $this->_out(sprintf('%.3F w',$lw*_MPDFK));
+       //Set font
+       if($family)     $this->SetFont($family,$style,$size,true,true); // forces write
+       //Set colors
+       $this->DrawColor=$dc;
+       if($dc!=$this->defDrawColor) $this->_out($dc);
+       $this->FillColor=$fc;
+       if($fc!=$this->defFillColor) $this->_out($fc);
+       $this->TextColor=$tc;
+       $this->ColorFlag=$cf;
+
+       //Page header
+       $this->Header();
+
+       //Restore line width
+       if($this->LineWidth!=$lw)
+       {
+               $this->LineWidth=$lw;
+               $this->_out(sprintf('%.3F w',$lw*_MPDFK));
+       }
+       //Restore font
+       if($family)     $this->SetFont($family,$style,$size,true,true); // forces write
+       //Restore colors
+       if($this->DrawColor!=$dc)
+       {
+               $this->DrawColor=$dc;
+               $this->_out($dc);
+       }
+       if($this->FillColor!=$fc)
+       {
+               $this->FillColor=$fc;
+               $this->_out($fc);
+       }
+       $this->TextColor=$tc;
+       $this->ColorFlag=$cf;
+       $this->InFooter=false;
+
+       // mPDF 5.6.01 - LAYERS
+       if ($save_layer>0)
+               $this->BeginLayer($save_layer);
+
+       if($save_vis!='visible')
+               $this->SetVisibility($save_vis);
+
+/*-- COLUMNS --*/
+       if ($save_cols) {
+               // Restore columns
+               $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
+       }
+       if ($this->ColActive) { $this->SetCol(0); }
+/*-- END COLUMNS --*/
+
+
+       //RESET BLOCK BORDER TOP
+       if (!$this->ColActive) {
+               for($bl=1;$bl<=$this->blklvl;$bl++) {
+                       $this->blk[$bl]['y0'] = $this->y;
+                       if (isset($this->blk[$bl]['x0'])) { $this->blk[$bl]['x0'] += $this->MarginCorrection; }
+                       else { $this->blk[$bl]['x0'] = $this->MarginCorrection; }
+                       // Added mPDF 3.0 Float DIV
+                       $this->blk[$bl]['marginCorrected'][$this->page] = true; 
+               }
+       }
+
+
+       $this->table_rotate = $save_tr; // *TABLES*
+       $this->kwt = $save_kwt;
+
+       $this->keep_block_together = $save_kt ;
+
+       $this->cMarginL = $bak_cml;
+       $this->cMarginR = $bak_cmr;
+       $this->divwidth = $bak_dw;
+
+       $this->lineheight = $bak_lh;
+}
+
+
+function PageNo() {
+       //Get current page number
+       return $this->page;
+}
+
+function AddSpotColorsFromFile($file) {
+       $colors = @file($file) or die("Cannot load spot colors file - ".$file);
+       foreach($colors AS $sc) {
+               list($name, $c, $m, $y, $k) = preg_split("/\t/",$sc);
+               $c = intval($c);
+               $m = intval($m);
+               $y = intval($y);
+               $k = intval($k);
+               $this->AddSpotColor($name, $c, $m, $y, $k);
+       }
+}
+
+function AddSpotColor($name, $c, $m, $y, $k) {
+       $name = strtoupper(trim($name));
+       if(!isset($this->spotColors[$name])) {
+               $i=count($this->spotColors)+1;
+               $this->spotColors[$name]=array('i'=>$i,'c'=>$c,'m'=>$m,'y'=>$y,'k'=>$k);
+               $this->spotColorIDs[$i]=$name;
+       }
+}
+
+function SetColor($col, $type='') {
+       $out = '';
+       if ($col{0}==3 || $col{0}==5) { // RGB / RGBa
+               $out = sprintf('%.3F %.3F %.3F rg',ord($col{1})/255,ord($col{2})/255,ord($col{3})/255);
+       }
+       else if ($col{0}==1) {  // GRAYSCALE
+               $out = sprintf('%.3F g',ord($col{1})/255);
+       }
+       else if ($col{0}==2) {  // SPOT COLOR
+               $out = sprintf('/CS%d cs %.3F scn',ord($col{1}),ord($col{2})/100);
+       }
+       else if ($col{0}==4 || $col{0}==6) {    // CMYK / CMYKa
+               $out = sprintf('%.3F %.3F %.3F %.3F k', ord($col{1})/100, ord($col{2})/100, ord($col{3})/100, ord($col{4})/100);
+       }
+       if ($type=='Draw') { $out = strtoupper($out); } // e.g. rg => RG
+       else if ($type=='CodeOnly') { $out = preg_replace('/\s(rg|g|k)/','',$out); }
+       return $out; 
+}
+
+
+function SetDColor($col, $return=false) {
+       $out = $this->SetColor($col, 'Draw');
+       if ($return) { return $out; }
+       if ($out=='') { return ''; }
+       $this->DrawColor = $out;
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['DrawColor']) && $this->pageoutput[$this->page]['DrawColor'] != $this->DrawColor) || !isset($this->pageoutput[$this->page]['DrawColor']) || $this->keep_block_together)) { $this->_out($this->DrawColor); }
+       $this->pageoutput[$this->page]['DrawColor'] = $this->DrawColor;
+}
+
+function SetFColor($col, $return=false) {
+       $out = $this->SetColor($col, 'Fill');
+       if ($return) { return $out; }
+       if ($out=='') { return ''; }
+       $this->FillColor = $out;
+       $this->ColorFlag = ($out != $this->TextColor);
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['FillColor']) && $this->pageoutput[$this->page]['FillColor'] != $this->FillColor) || !isset($this->pageoutput[$this->page]['FillColor']) || $this->keep_block_together)) { $this->_out($this->FillColor); }
+       $this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
+}
+
+function SetTColor($col, $return=false) {
+       $out = $this->SetColor($col, 'Text');
+       if ($return) { return $out; }
+       if ($out=='') { return ''; }
+       $this->TextColor = $out;
+       $this->ColorFlag = ($this->FillColor != $out);
+} 
+
+
+function SetDrawColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
+       //Set color for all stroking operations
+       $col = array();
+       if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
+       else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
+       else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
+       $out = $this->SetDColor($col, $return);
+       return $out;
+}
+
+function SetFillColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
+       //Set color for all filling operations
+       $col = array();
+       if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
+       else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
+       else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
+       $out = $this->SetFColor($col, $return);
+       return $out;
+}
+
+function SetTextColor($r,$g=-1,$b=-1,$col4=-1, $return=false) {
+       //Set color for text
+       $col = array();
+       if(($r==0 and $g==0 and $b==0 && $col4 == -1) or $g==-1) { $col = $this->ConvertColor($r); }
+       else if ($col4 == -1) { $col = $this->ConvertColor('rgb('.$r.','.$g.','.$b.')'); }
+       else { $col = $this->ConvertColor('cmyk('.$r.','.$g.','.$b.','.$col4.')'); }
+       $out = $this->SetTColor($col, $return);
+       return $out;
+}
+
+function _getCharWidth(&$cw, $u, $isdef=true) {
+       if ($u==0) { $w = false; }
+       else { $w = (ord($cw[$u*2]) << 8) + ord($cw[$u*2+1]); }
+       if ($w == 65535) { return 0; }
+       else if ($w) { return $w; }
+       else if ($isdef) { return false; }
+       else { return 0; }
+}
+
+function _charDefined(&$cw, $u) {
+       if ($u==0) { return false; }
+       $w = (ord($cw[$u*2]) << 8) + ord($cw[$u*2+1]);
+       if ($w) { return true; }
+       else { return false; }
+}
+
+function GetCharWidthCore($c) {
+       //Get width of a single character in the current Core font
+       $c = (string)$c;
+       $w = 0;
+       // Soft Hyphens chr(173)
+       if ($c == chr(173) && $this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') { 
+               return 0;
+       }
+       else if ($this->S && isset($this->upperCase[ord($c)])) { 
+               $charw = $this->CurrentFont['cw'][chr($this->upperCase[ord($c)])];
+               if ($charw!==false) { 
+                       $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
+                       $w+=$charw; 
+               }
+       }
+       else if (isset($this->CurrentFont['cw'][$c])) { 
+               $w += $this->CurrentFont['cw'][$c]; 
+       } 
+       else if (isset($this->CurrentFont['cw'][ord($c)])) { 
+               $w += $this->CurrentFont['cw'][ord($c)]; 
+       }
+       $w *=  ($this->FontSize/ 1000);
+       if ($this->minwSpacing || $this->fixedlSpacing) {
+               if ($c==' ') $nb_spaces = 1;
+               else $nb_spaces = 0;
+               $w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
+       }
+       return ($w);
+}
+
+function GetCharWidthNonCore($c, $addSubset=true) {
+       //Get width of a single character in the current Non-Core font
+       $c = (string)$c;
+       $w = 0;
+       $unicode = $this->UTF8StringToArray($c, $addSubset);
+       $char = $unicode[0];
+/*-- CJK-FONTS --*/
+       if ($this->CurrentFont['type'] == 'Type0') {    // CJK Adobe fonts
+                       if ($char == 173) { return 0; } // Soft Hyphens
+                       elseif (isset($this->CurrentFont['cw'][$char])) { $w+=$this->CurrentFont['cw'][$char]; } 
+                       elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
+                       else { $w += 500; }
+       }
+       else { 
+/*-- END CJK-FONTS --*/
+                       if ($char == 173) { return 0; } // Soft Hyphens
+                       else if ($this->S && isset($this->upperCase[$char])) {
+                               $charw = $this->_getCharWidth($this->CurrentFont['cw'],$this->upperCase[$char]);
+                               if ($charw!==false) { 
+                                       $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
+                                       $w+=$charw; 
+                               }
+                               elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
+                               elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
+                               else { $w += 500; }
+                       }
+                       else {
+                               $charw = $this->_getCharWidth($this->CurrentFont['cw'],$char);
+                               if ($charw!==false) { $w+=$charw; }
+                               elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
+                               elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
+                               else { $w += 500; }
+                       }
+       }       // *CJK-FONTS*
+       $w *=  ($this->FontSize/ 1000);
+       if ($this->minwSpacing || $this->fixedlSpacing) {
+               if ($c==' ') $nb_spaces = 1;
+               else $nb_spaces = 0;
+               $w += $this->fixedlSpacing + ($nb_spaces * $this->minwSpacing);
+       }
+       return ($w);
+}
+
+
+function GetCharWidth($c, $addSubset=true) {
+       if (!$this->usingCoreFont) {
+               return $this->GetCharWidthNonCore($c, $addSubset);
+       } 
+       else {
+               return $this->GetCharWidthCore($c);
+       }
+}
+
+function GetStringWidth($s, $addSubset=true) {
+                       //Get width of a string in the current font
+                       $s = (string)$s;
+                       $cw = &$this->CurrentFont['cw'];
+                       $w = 0;
+                       $kerning = 0;
+                       $lastchar = 0;
+                       $nb_carac = 0;
+                       $nb_spaces = 0;
+                       // mPDF ITERATION
+                       if ($this->iterationCounter) $s = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/', '\\1', $s);
+
+                       if (!$this->usingCoreFont) {
+                             $s = str_replace("\xc2\xad",'',$s ); 
+                               $unicode = $this->UTF8StringToArray($s, $addSubset);
+                               if ($this->minwSpacing || $this->fixedlSpacing) {
+                                       $nb_carac = count($unicode);  
+                                       $nb_spaces = mb_substr_count($s,' ', $this->mb_enc);  
+                               }
+/*-- CJK-FONTS --*/
+                               if ($this->CurrentFont['type'] == 'Type0') {    // CJK Adobe fonts
+                                       foreach($unicode as $char) {
+                                               if (isset($cw[$char])) { $w+=$cw[$char]; } 
+                                               elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
+                                               else { $w += 500; }
+                                       }
+                               }
+                               else { 
+/*-- END CJK-FONTS --*/
+                                       foreach($unicode as $char) {
+                                               if ($this->S && isset($this->upperCase[$char])) {
+                                                       $charw = $this->_getCharWidth($cw,$this->upperCase[$char]);
+                                                       if ($charw!==false) { 
+                                                               $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
+                                                               $w+=$charw; 
+                                                       }
+                                                       elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
+                                                       elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
+                                                       else { $w += 500; }
+                                               }
+                                               else {
+                                                       $charw = $this->_getCharWidth($cw,$char);
+                                                       if ($charw!==false) { $w+=$charw; }
+                                                       elseif(isset($this->CurrentFont['desc']['MissingWidth'])) { $w += $this->CurrentFont['desc']['MissingWidth']; }
+                                                       elseif(isset($this->CurrentFont['MissingWidth'])) { $w += $this->CurrentFont['MissingWidth']; }
+                                                       else { $w += 500; }
+                                                       if ($this->kerning && $this->useKerning && $lastchar) {
+                                                               if (isset($this->CurrentFont['kerninfo'][$lastchar][$char])) { 
+                                                                       $kerning += $this->CurrentFont['kerninfo'][$lastchar][$char]; 
+                                                               }
+                                                       }
+                                                       $lastchar = $char;
+                                               }
+                                       }
+                               }       // *CJK-FONTS*
+
+                       } 
+                       else {
+                               if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') { 
+                               $s = str_replace(chr(173),'',$s ); 
+                               }
+                               $nb_carac = $l = strlen($s);
+                               if ($this->minwSpacing || $this->fixedlSpacing) {
+                                       $nb_spaces = substr_count($s,' ');  
+                               }
+                               for($i=0; $i<$l; $i++) {
+                                       if ($this->S && isset($this->upperCase[ord($s[$i])])) { 
+                                               $charw = $cw[chr($this->upperCase[ord($s[$i])])];
+                                               if ($charw!==false) { 
+                                                       $charw = $charw*$this->smCapsScale * $this->smCapsStretch/100;
+                                                       $w+=$charw; 
+                                               }
+                                       }
+                                       else if (isset($cw[$s[$i]])) { 
+                                               $w += $cw[$s[$i]]; 
+                                       } 
+                                       else if (isset($cw[ord($s[$i])])) { 
+                                               $w += $cw[ord($s[$i])]; 
+                                       }
+                                       if ($this->kerning && $this->useKerning && $i>0) {
+                                               if (isset($this->CurrentFont['kerninfo'][$s[($i-1)]][$s[$i]])) { 
+                                                       $kerning += $this->CurrentFont['kerninfo'][$s[($i-1)]][$s[$i]]; 
+                                               }
+                                       }
+                               }
+                       }
+                       unset($cw);
+                       if ($this->kerning && $this->useKerning) { $w += $kerning; }
+                       $w *=  ($this->FontSize/ 1000);
+                       $w += (($nb_carac + $nb_spaces) * $this->fixedlSpacing) + ($nb_spaces * $this->minwSpacing);
+                       return ($w);
+}
+
+function SetLineWidth($width) {
+       //Set line width
+       $this->LineWidth=$width;
+       $lwout = (sprintf('%.3F w',$width*_MPDFK));
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['LineWidth']) && $this->pageoutput[$this->page]['LineWidth'] != $lwout) || !isset($this->pageoutput[$this->page]['LineWidth']) || $this->keep_block_together)) {
+                $this->_out($lwout); 
+       }
+       $this->pageoutput[$this->page]['LineWidth'] = $lwout;
+}
+
+function Line($x1,$y1,$x2,$y2) {
+       //Draw a line
+       $this->_out(sprintf('%.3F %.3F m %.3F %.3F l S',$x1*_MPDFK,($this->h-$y1)*_MPDFK,$x2*_MPDFK,($this->h-$y2)*_MPDFK));
+}
+
+function Arrow($x1,$y1,$x2,$y2,$headsize=3,$fill='B',$angle=25) {
+  //F == fill //S == stroke //B == stroke and fill 
+  // angle = splay of arrowhead - 1 - 89 degrees
+  if($fill=='F')       $fill='f';
+  elseif($fill=='FD' or $fill=='DF' or $fill=='B') $fill='B';
+  else $fill='S';
+  $a = atan2(($y2-$y1),($x2-$x1));
+  $b = $a + deg2rad($angle);
+  $c = $a - deg2rad($angle);
+  $x3 = $x2 - ($headsize* cos($b));
+  $y3 = $this->h-($y2 - ($headsize* sin($b)));
+  $x4 = $x2 - ($headsize* cos($c));
+  $y4 = $this->h-($y2 - ($headsize* sin($c)));
+
+  $x5 = $x3-($x3-$x4)/2;       // mid point of base of arrowhead - to join arrow line to
+  $y5 = $y3-($y3-$y4)/2;
+
+  $s = '';
+  $s.=sprintf('%.3F %.3F m %.3F %.3F l S',$x1*_MPDFK,($this->h-$y1)*_MPDFK,$x5*_MPDFK,$y5*_MPDFK);
+  $this->_out($s);
+
+  $s = '';
+  $s.=sprintf('%.3F %.3F m %.3F %.3F l %.3F %.3F l %.3F %.3F l %.3F %.3F l ',$x5*_MPDFK,$y5*_MPDFK,$x3*_MPDFK,$y3*_MPDFK,$x2*_MPDFK,($this->h-$y2)*_MPDFK,$x4*_MPDFK,$y4*_MPDFK,$x5*_MPDFK,$y5*_MPDFK);
+  $s.=$fill;
+  $this->_out($s);
+}
+
+
+function Rect($x,$y,$w,$h,$style='') {
+       //Draw a rectangle
+       if($style=='F') $op='f';
+       elseif($style=='FD' or $style=='DF') $op='B';
+       else $op='S';
+       $this->_out(sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$h*_MPDFK,$op));
+}
+
+function AddFont($family,$style='') {
+       if(empty($family)) { return; }
+       $family = strtolower($family);
+       $style=strtoupper($style);
+       $style=str_replace('U','',$style);
+       if($style=='IB') $style='BI';
+       $fontkey = $family.$style;
+       // check if the font has been already added
+       if(isset($this->fonts[$fontkey])) {
+               return;
+       }
+
+/*-- CJK-FONTS --*/
+       if (in_array($family,$this->available_CJK_fonts)) { 
+               if (empty($this->Big5_widths)) { require(_MPDF_PATH . 'includes/CJKdata.php'); }
+               $this->AddCJKFont($family);     // don't need to add style
+               return; 
+       }
+/*-- END CJK-FONTS --*/
+
+       if ($this->usingCoreFont) { die("mPDF Error - problem with Font management"); }
+
+       $stylekey = $style;
+       if (!$style) { $stylekey = 'R'; }
+
+       if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) {
+               die('mPDF Error - Font is not supported - '.$family.' '.$style);
+       }
+
+       $name = '';
+       $originalsize = 0;
+       $sip = false;
+       $smp = false;
+       $unAGlyphs = false;     // mPDF 5.4.05
+       $haskerninfo = false;
+       $BMPselected = false;
+       @include(_MPDF_TTFONTDATAPATH.$fontkey.'.mtx.php');
+
+       $ttffile = '';
+       if (defined('_MPDF_SYSTEM_TTFONTS')) {
+               $ttffile = _MPDF_SYSTEM_TTFONTS.$this->fontdata[$family][$stylekey];
+               if (!file_exists($ttffile)) { $ttffile = ''; }
+       }
+       if (!$ttffile) {
+               $ttffile = _MPDF_TTFONTPATH.$this->fontdata[$family][$stylekey];
+               if (!file_exists($ttffile)) { die("mPDF Error - cannot find TTF TrueType font file - ".$ttffile); }
+       }
+       $ttfstat = stat($ttffile);
+
+       if (isset($this->fontdata[$family]['TTCfontID'][$stylekey])) { $TTCfontID = $this->fontdata[$family]['TTCfontID'][$stylekey]; }
+       else { $TTCfontID = 0; }
+
+
+       $BMPonly = false;
+       if (in_array($family,$this->BMPonly)) { $BMPonly = true; }
+       $regenerate = false;
+       if ($BMPonly && !$BMPselected) { $regenerate = true; }
+       else if (!$BMPonly && $BMPselected) { $regenerate = true; }
+       if ($this->useKerning && !$haskerninfo) { $regenerate = true; }
+       // mPDF 5.4.05
+       if (isset($this->fontdata[$family]['unAGlyphs']) && $this->fontdata[$family]['unAGlyphs'] && !$unAGlyphs) { 
+               $regenerate = true; 
+               $unAGlyphs = true;
+       }
+       else if ((!isset($this->fontdata[$family]['unAGlyphs']) || !$this->fontdata[$family]['unAGlyphs']) && $unAGlyphs) { 
+               $regenerate = true; 
+               $unAGlyphs = false;
+       }
+       if (!isset($name) || $originalsize != $ttfstat['size'] || $regenerate) {
+               if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
+               $ttf = new TTFontFile();
+               $ttf->getMetrics($ttffile, $TTCfontID, $this->debugfonts, $BMPonly, $this->useKerning, $unAGlyphs);     // mPDF 5.4.05
+               $cw = $ttf->charWidths;
+               $kerninfo = $ttf->kerninfo;
+               $haskerninfo = true;
+               $name = preg_replace('/[ ()]/','',$ttf->fullName);
+               $sip = $ttf->sipset;
+               $smp = $ttf->smpset;
+
+               $desc= array('Ascent'=>round($ttf->ascent),
+               'Descent'=>round($ttf->descent),
+               'CapHeight'=>round($ttf->capHeight),
+               'Flags'=>$ttf->flags,
+               'FontBBox'=>'['.round($ttf->bbox[0])." ".round($ttf->bbox[1])." ".round($ttf->bbox[2])." ".round($ttf->bbox[3]).']',
+               'ItalicAngle'=>$ttf->italicAngle,
+               'StemV'=>round($ttf->stemV),
+               'MissingWidth'=>round($ttf->defaultWidth));
+               $panose = '';
+               // mPDF 5.5.19
+               if (count($ttf->panose)) {
+                       $panoseArray = array_merge(array($ttf->sFamilyClass, $ttf->sFamilySubClass), $ttf->panose);
+                       foreach($panoseArray as $value)
+                               $panose .= ' '.dechex($value);
+               }
+               $up = round($ttf->underlinePosition);
+               $ut = round($ttf->underlineThickness);
+               $originalsize = $ttfstat['size']+0;
+               $type = 'TTF';
+               //Generate metrics .php file
+               $s='<?php'."\n";
+               $s.='$name=\''.$name."';\n";
+               $s.='$type=\''.$type."';\n";
+               $s.='$desc='.var_export($desc,true).";\n";
+               $s.='$up='.$up.";\n";
+               $s.='$ut='.$ut.";\n";
+               $s.='$ttffile=\''.$ttffile."';\n";
+               $s.='$TTCfontID=\''.$TTCfontID."';\n";
+               $s.='$originalsize='.$originalsize.";\n";
+               if ($sip) $s.='$sip=true;'."\n";
+               else $s.='$sip=false;'."\n";
+               if ($smp) $s.='$smp=true;'."\n";
+               else $s.='$smp=false;'."\n";
+               if ($BMPonly) $s.='$BMPselected=true;'."\n";
+               else $s.='$BMPselected=false;'."\n";
+               $s.='$fontkey=\''.$fontkey."';\n";
+               $s.='$panose=\''.$panose."';\n";
+               if ($this->useKerning) { 
+                       $s.='$kerninfo='.var_export($kerninfo,true).";\n"; 
+                       $s.='$haskerninfo=true;'."\n";
+               }
+               else $s.='$haskerninfo=false;'."\n";
+               // mPDF 5.4.05
+               if ($this->fontdata[$family]['unAGlyphs']) { 
+                       $s.='$unAGlyphs=true;'."\n";
+               }
+               else $s.='$unAGlyphs=false;'."\n";
+               $s.="?>";
+               if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
+                       $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.mtx.php',"w");
+                       fwrite($fh,$s,strlen($s));
+                       fclose($fh);
+                       $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.cw.dat',"wb");
+                       fwrite($fh,$cw,strlen($cw));
+                       fclose($fh);
+                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cgm');
+                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.z');
+                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cw127.php');
+                       @unlink(_MPDF_TTFONTDATAPATH.$fontkey.'.cw');
+               }
+               else if ($this->debugfonts) { $this->Error('Cannot write to the font caching directory - '._MPDF_TTFONTDATAPATH); }
+               unset($ttf);
+       }
+       else {
+               $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$fontkey.'.cw.dat'); 
+       }
+
+       if (isset($this->fontdata[$family]['indic']) && $this->fontdata[$family]['indic']) { $indic = true; }
+       else { $indic = false; }
+       if (isset($this->fontdata[$family]['sip-ext']) && $this->fontdata[$family]['sip-ext']) { $sipext = $this->fontdata[$family]['sip-ext']; }
+       else { $sipext = ''; }
+
+
+       $i = count($this->fonts)+$this->extraFontSubsets+1;
+       if ($sip || $smp) {
+               $this->fonts[$fontkey] = array('i'=>$i, 'type'=>$type, 'name'=>$name, 'desc'=>$desc, 'panose'=>$panose, 'up'=>$up, 'ut'=>$ut, 'cw'=>$cw, 'ttffile'=>$ttffile, 'fontkey'=>$fontkey, 'subsets'=>array(0=>range(0,127)), 'subsetfontids'=>array($i), 'used'=>false, 'indic'=>$indic, 'sip'=>$sip, 'sipext'=>$sipext, 'smp'=>$smp, 'TTCfontID' => $TTCfontID, 'unAGlyphs' => false);        // mPDF 5.4.05
+       }
+       else  {
+               $ss = array();
+               for ($s=32; $s<128; $s++) { $ss[$s] = $s; }
+               $this->fonts[$fontkey] = array('i'=>$i, 'type'=>$type, 'name'=>$name, 'desc'=>$desc, 'panose'=>$panose, 'up'=>$up, 'ut'=>$ut, 'cw'=>$cw, 'ttffile'=>$ttffile, 'fontkey'=>$fontkey, 'subset'=>$ss, 'used'=>false, 'indic'=>$indic, 'sip'=>$sip, 'sipext'=>$sipext, 'smp'=>$smp, 'TTCfontID' => $TTCfontID, 'unAGlyphs' => $unAGlyphs);   // mPDF 5.4.05
+       }
+       if ($this->useKerning && $haskerninfo) { $this->fonts[$fontkey]['kerninfo'] = $kerninfo; }
+       $this->FontFiles[$fontkey]=array('length1'=>$originalsize, 'type'=>"TTF", 'ttffile'=>$ttffile, 'sip'=>$sip, 'smp'=>$smp);
+       unset($cw);
+}
+
+
+
+function SetFont($family,$style='',$size=0, $write=true, $forcewrite=false) {
+       $family=strtolower($family);
+       if (!$this->onlyCoreFonts) {
+               if ($family == 'sans' || $family == 'sans-serif') { $family = $this->sans_fonts[0]; }
+               if ($family == 'serif') { $family = $this->serif_fonts[0]; }
+               if ($family == 'mono' || $family == 'monospace') { $family = $this->mono_fonts[0]; }
+       }
+       if (isset($this->fonttrans[$family]) && $this->fonttrans[$family]) { $family = $this->fonttrans[$family]; }
+       if($family=='') { 
+               if ($this->FontFamily) { $family=$this->FontFamily; }
+               else if ($this->default_font) { $family=$this->default_font; }
+               else { $this->Error("No font or default font set!"); }
+       }
+       $this->ReqFontStyle = $style;   // required or requested style - used later for artificial bold/italic
+
+       if (($family == 'csymbol') || ($family == 'czapfdingbats')  || ($family == 'ctimes')  || ($family == 'ccourier') || ($family == 'chelvetica')) { 
+               if ($this->PDFA || $this->PDFX) {
+                  if ($family == 'csymbol' || $family == 'czapfdingbats') { 
+                       $this->Error("Symbol and Zapfdingbats cannot be embedded in mPDF (required for PDFA1-b or PDFX/1-a).");
+                  }
+                  if ($family == 'ctimes'  || $family == 'ccourier' || $family == 'chelvetica') { 
+                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Core Adobe font ".ucfirst($family)." cannot be embedded in mPDF, which is required for PDFA1-b or PDFX/1-a. (Embedded font will be substituted.)"; }
+                       if ($family == 'chelvetica') { $family = 'sans'; }
+                       if ($family == 'ctimes') { $family = 'serif'; }
+                       if ($family == 'ccourier') { $family = 'mono'; }
+                  }
+                  $this->usingCoreFont = false;
+               }
+               else { $this->usingCoreFont = true; }
+               if($family=='csymbol' || $family=='czapfdingbats') { $style=''; }
+       }
+       else {  $this->usingCoreFont = false; }
+
+       $this->U=false;
+       $this->S=false;
+       if ($style) {
+               $style=strtoupper($style);
+               if(strpos($style,'U')!==false) {
+                       $this->U=true;
+                       $style=str_replace('U','',$style);
+               }
+               if(strpos($style,'S')!==false) {
+                       $this->S=true;
+                       // Small Caps
+                       if (empty($this->upperCase)) { @include(_MPDF_PATH.'includes/upperCase.php'); } 
+                       $style=str_replace('S','',$style);
+               }
+               if ($style=='IB') $style='BI';
+       }
+       if ($size==0) $size=$this->FontSizePt;
+
+       $fontkey=$family.$style;
+
+       $stylekey = $style;
+       if (!$stylekey) { $stylekey = "R"; }
+
+       if (!$this->onlyCoreFonts && !$this->usingCoreFont) {
+               if(!isset($this->fonts[$fontkey]) || count($this->default_available_fonts) != count($this->available_unifonts) ) { // not already added
+/*-- CJK-FONTS --*/
+                 // CJK fonts
+                 if (in_array($fontkey,$this->available_CJK_fonts)) {
+                       if(!isset($this->fonts[$fontkey])) {    // already added
+                               if (empty($this->Big5_widths)) { require(_MPDF_PATH . 'includes/CJKdata.php'); }
+                               $this->AddCJKFont($family);     // don't need to add style
+                       }
+                 }
+                 // Test to see if requested font/style is available - or substitute
+                 else
+/*-- END CJK-FONTS --*/
+                 if (!in_array($fontkey,$this->available_unifonts)) {
+                       // If font[nostyle] exists - set it
+                       if (in_array($family,$this->available_unifonts)) {
+                               $style = '';
+                       }
+
+                       // Else if only one font available - set it (assumes if only one font available it will not have a style)
+                       else if (count($this->available_unifonts) == 1) {
+                               $family = $this->available_unifonts[0];
+                               $style = '';
+                       }
+
+                       else {
+                               $found = 0;
+                               // else substitute font of similar type
+                               if (in_array($family,$this->sans_fonts)) { 
+                                       $i = array_intersect($this->sans_fonts,$this->available_unifonts);
+                                       if (count($i)) {
+                                               $i = array_values($i);
+                                               // with requested style if possible
+                                               if (!in_array(($i[0].$style),$this->available_unifonts)) {
+                                                       $style = '';
+                                               }
+                                               $family = $i[0]; 
+                                               $found = 1;
+                                       }
+                               }
+                               else if (in_array($family,$this->serif_fonts)) { 
+                                       $i = array_intersect($this->serif_fonts,$this->available_unifonts);
+                                       if (count($i)) {
+                                               $i = array_values($i);
+                                               // with requested style if possible
+                                               if (!in_array(($i[0].$style),$this->available_unifonts)) {
+                                                       $style = '';
+                                               }
+                                               $family = $i[0]; 
+                                               $found = 1;
+                                       }
+                               }
+                               else if (in_array($family,$this->mono_fonts)) {
+                                       $i = array_intersect($this->mono_fonts,$this->available_unifonts);
+                                       if (count($i)) {
+                                               $i = array_values($i);
+                                               // with requested style if possible
+                                               if (!in_array(($i[0].$style),$this->available_unifonts)) {
+                                                       $style = '';
+                                               }
+                                               $family = $i[0]; 
+                                               $found = 1;
+                                       }
+                               }
+
+                               if (!$found) {
+                                       // set first available font
+                                       $fs = $this->available_unifonts[0];
+                                       preg_match('/^([a-z_0-9\-]+)([BI]{0,2})$/',$fs,$fas);   // Allow "-"
+                                       // with requested style if possible
+                                       $ws = $fas[1].$style;
+                                       if (in_array($ws,$this->available_unifonts)) {
+                                               $family = $fas[1]; // leave $style as is
+                                       }
+                                       else if (in_array($fas[1],$this->available_unifonts)) {
+                                       // or without style
+                                               $family = $fas[1];
+                                               $style = '';
+                                       }
+                                       else {
+                                       // or with the style specified 
+                                               $family = $fas[1];
+                                               $style = $fas[2];
+                                       }
+                               }
+                       }
+                       $fontkey = $family.$style; 
+                 }
+               }
+               // try to add font (if not already added)
+               $this->AddFont($family, $style);
+
+               //Test if font is already selected
+               if($this->FontFamily == $family && $this->FontFamily == $this->currentfontfamily && $this->FontStyle == $style && $this->FontStyle == $this->currentfontstyle && $this->FontSizePt == $size && $this->FontSizePt == $this->currentfontsize && !$forcewrite) {
+                       return $family;
+               }
+
+               $fontkey = $family.$style; 
+
+               //Select it
+               $this->FontFamily = $family;
+               $this->FontStyle = $style;
+               $this->FontSizePt = $size;
+               $this->FontSize = $size / _MPDFK;
+               $this->CurrentFont = &$this->fonts[$fontkey];
+               if ($write) { 
+                       $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+                       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
+                       $this->pageoutput[$this->page]['Font'] = $fontout;
+               }
+
+
+
+               // Added - currentfont (lowercase) used in HTML2PDF
+               $this->currentfontfamily=$family;
+               $this->currentfontsize=$size;
+               $this->currentfontstyle=$style.($this->U ? 'U' : '').($this->S ? 'S' : '');
+               $this->setMBencoding('UTF-8');
+       }
+
+       else {  // if using core fonts
+
+
+               if ($this->PDFA || $this->PDFX) {
+                       $this->Error('Core Adobe fonts cannot be embedded in mPDF (required for PDFA1-b or PDFX/1-a) - cannot use option to use core fonts.');
+               }
+               $this->setMBencoding('windows-1252');
+
+               //Test if font is already selected
+               if(($this->FontFamily == $family) AND ($this->FontStyle == $style) AND ($this->FontSizePt == $size) && !$forcewrite) {
+                       return $family;
+               }
+
+               if (!isset($this->CoreFonts[$fontkey])) {
+                       if (in_array($family,$this->serif_fonts)) { $family = 'ctimes'; }
+                       else if (in_array($family,$this->mono_fonts)) { $family = 'ccourier'; }
+                       else { $family = 'chelvetica'; }
+                       $this->usingCoreFont = true;
+                       $fontkey = $family.$style; 
+               }
+
+               if(!isset($this->fonts[$fontkey]))      {
+                       // STANDARD CORE FONTS
+                       if (isset($this->CoreFonts[$fontkey])) {
+                               //Load metric file
+                               $file=$family;
+                               if($family=='ctimes' || $family=='chelvetica' || $family=='ccourier') { $file.=strtolower($style); }
+                               $file.='.php';
+                               include(_MPDF_PATH.'font/'.$file);
+                               if(!isset($cw)) { $this->Error('Could not include font metric file'); }
+                               $i=count($this->fonts)+$this->extraFontSubsets+1;
+                               $this->fonts[$fontkey]=array('i'=>$i,'type'=>'core','name'=>$this->CoreFonts[$fontkey],'desc'=>$desc,'up'=>$up,'ut'=>$ut,'cw'=>$cw);
+                               if ($this->useKerning) { $this->fonts[$fontkey]['kerninfo'] = $kerninfo; }
+                       }
+                       else {
+                               die('mPDF error - Font not defined');
+                       }
+               }
+               //Test if font is already selected
+               if(($this->FontFamily == $family) AND ($this->FontStyle == $style) AND ($this->FontSizePt == $size) && !$forcewrite) {
+                       return $family;
+               }
+               //Select it
+               $this->FontFamily=$family;
+               $this->FontStyle=$style;
+               $this->FontSizePt=$size;
+               $this->FontSize=$size/_MPDFK;
+               $this->CurrentFont=&$this->fonts[$fontkey];
+               if ($write) { 
+                       $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+                       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
+                       $this->pageoutput[$this->page]['Font'] = $fontout;
+               }
+               // Added - currentfont (lowercase) used in HTML2PDF
+               $this->currentfontfamily=$family;
+               $this->currentfontsize=$size;
+               $this->currentfontstyle=$style.($this->U ? 'U' : '').($this->S ? 'S' : '');
+
+       }
+
+       return $family;
+}
+
+function SetFontSize($size,$write=true) {
+       //Set font size in points
+       if($this->FontSizePt==$size) return;
+       $this->FontSizePt=$size;
+       $this->FontSize=$size/_MPDFK;
+       $this->currentfontsize=$size;
+               if ($write) { 
+                       $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+                       // Edited mPDF 3.0
+                       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
+                       $this->pageoutput[$this->page]['Font'] = $fontout;
+               }
+}
+
+function AddLink() {
+       //Create a new internal link
+       $n=count($this->links)+1;
+       $this->links[$n]=array(0,0);
+       return $n;
+}
+
+function SetLink($link,$y=0,$page=-1) {
+       //Set destination of internal link
+       if($y==-1) $y=$this->y;
+       if($page==-1)   $page=$this->page;
+       $this->links[$link]=array($page,$y);
+}
+
+function Link($x,$y,$w,$h,$link) {
+       $l = array($x*_MPDFK,$this->hPt-$y*_MPDFK,$w*_MPDFK,$h*_MPDFK,$link);
+       if ($this->keep_block_together) {       // Save to array - don't write yet
+               $this->ktLinks[$this->page][]= $l;
+               return;
+       }
+       else if ($this->table_rotate) { // *TABLES*
+               $this->tbrot_Links[$this->page][]= $l;  // *TABLES*
+               return; // *TABLES*
+       }       // *TABLES*
+       else if ($this->kwt) {
+               $this->kwt_Links[$this->page][]= $l;
+               return;
+       }
+
+       if ($this->writingHTMLheader || $this->writingHTMLfooter) {
+               $this->HTMLheaderPageLinks[]= $l;
+               return;
+       }
+       //Put a link on the page
+       $this->PageLinks[$this->page][]= $l;
+       // Save cross-reference to Column buffer
+       $ref = count($this->PageLinks[$this->page])-1;  // *COLUMNS*
+       $this->columnLinks[$this->CurrCol][INTVAL($this->x)][INTVAL($this->y)] = $ref;  // *COLUMNS*
+
+}
+
+function Text($x,$y,$txt) {
+       // Output a string
+       // Called (internally) by Watermark and _tableWrite [rotated cells]
+       // Expects input to be mb_encoded if necessary and RTL reversed
+
+       // ARTIFICIAL BOLD AND ITALIC
+       $s = 'q ';
+       if ($this->falseBoldWeight && strpos($this->ReqFontStyle,"B") !== false && strpos($this->FontStyle,"B") === false) {
+               $s  .= '2 Tr 1 J 1 j ';
+               $s .= sprintf('%.3F w ',($this->FontSize/130)*_MPDFK*$this->falseBoldWeight);
+               $tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+               if($this->FillColor!=$tc) { $s .= $tc.' '; }            // stroke (outline) = same colour as text(fill)
+       }
+       if (strpos($this->ReqFontStyle,"I") !== false && strpos($this->FontStyle,"I") === false) {
+               $aix = '1 0 0.261799 1 %.3F %.3F Tm'; 
+       }
+       else { $aix = '%.3F %.3F Td'; }
+
+       if($this->ColorFlag) $s.=$this->TextColor.' ';
+
+       $this->CurrentFont['used']= true;
+       if ($this->CurrentFont['type']=='TTF' && ($this->CurrentFont['sip'] || $this->CurrentFont['smp'])) {
+             $txt2 = str_replace(chr(194).chr(160),chr(32),$txt);
+               $txt2 = $this->UTF8toSubset($txt2);
+               $s.=sprintf('BT '.$aix.' %s Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$txt2);
+       }
+       else if (!$this->usingCoreFont) {
+             $txt2 = str_replace(chr(194).chr(160),chr(32),$txt); 
+               $this->UTF8StringToArray($txt2);        // this is just to add chars to subset list
+               if ($this->kerning && $this->useKerning) { $s .= $this->_kern($txt2, '', $aix, $x, $y); }
+               else {
+                       //Convert string to UTF-16BE without BOM
+                       $txt2= $this->UTF8ToUTF16BE($txt2, false);
+                       $s.=sprintf('BT '.$aix.' (%s) Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$this->_escape($txt2));
+               }
+       }
+       else {
+             $txt2 = str_replace(chr(160),chr(32),$txt);
+               if ($this->kerning && $this->useKerning) { $s .= $this->_kern($txt2, '', $aix, $x, $y); }
+               else {
+                       $s.=sprintf('BT '.$aix.' (%s) Tj ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$this->_escape($txt2));
+               }
+       }
+       if($this->U && $txt!='') {
+               $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+               if($this->FillColor!=$c) { $s.= ' '.$c.' '; }
+               if (isset($this->CurrentFont['up'])) { $up=$this->CurrentFont['up']; }
+               else { $up = -100; }
+               $adjusty = (-$up/1000* $this->FontSize);
+               if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
+               else { $ut = 60/1000* $this->FontSize; }
+               $olw = $this->LineWidth;
+               $s.=' '.(sprintf(' %.3F w',$ut*_MPDFK));
+               $s.=' '.$this->_dounderline($x,$y + $adjusty,$txt);
+               $s.=' '.(sprintf(' %.3F w',$olw*_MPDFK));
+               if($this->FillColor!=$c) { $s.= ' '.$this->FillColor.' '; }
+       }
+       // STRIKETHROUGH
+       if($this->strike && $txt!='') {
+               $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+               if($this->FillColor!=$c) { $s.= ' '.$c.' '; }
+               //Superscript and Subscript Y coordinate adjustment (now for striked-through texts)
+               if (isset($this->CurrentFont['desc']['CapHeight'])) { $ch=$this->CurrentFont['desc']['CapHeight']; }
+               else { $ch = 700; }
+               $adjusty = (-$ch/1000* $this->FontSize) * 0.35;
+               if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
+               else { $ut = 60/1000* $this->FontSize; }
+               $olw = $this->LineWidth;
+               $s.=' '.(sprintf(' %.3F w',$ut*_MPDFK));
+               $s.=' '.$this->_dounderline($x,$y+$adjusty,$txt);
+               $s.=' '.(sprintf(' %.3F w',$olw*_MPDFK));
+               if($this->FillColor!=$c) { $s.= ' '.$this->FillColor.' '; }
+       }
+       $s .= 'Q';
+       $this->_out($s);
+}
+
+/*-- DIRECTW --*/
+function WriteText($x,$y,$txt) {
+       // Output a string using Text() but does encoding and text reversing of RTL
+       $txt = $this->purify_utf8_text($txt);
+       if ($this->text_input_as_HTML) {
+               $txt = $this->all_entities_to_utf8($txt);
+       }
+       if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
+       // DIRECTIONALITY
+       if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; }        // *RTL*
+       $this->magic_reverse_dir($txt, true, $this->directionality);    // *RTL*
+       // Font-specific ligature substitution for Indic fonts
+       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($txt);       // *INDIC*
+       $this->Text($x,$y,$txt);
+}
+
+function WriteCell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='', $currentx=0) {
+       //Output a cell using Cell() but does encoding and text reversing of RTL
+       $txt = $this->purify_utf8_text($txt);
+       if ($this->text_input_as_HTML) {
+               $txt = $this->all_entities_to_utf8($txt);
+       }
+       if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
+       // DIRECTIONALITY
+       if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; }        // *RTL*
+       $this->magic_reverse_dir($txt, true, $this->directionality);    // *RTL*
+       // Font-specific ligature substitution for Indic fonts
+       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($txt);       // *INDIC*
+       $this->Cell($w,$h,$txt,$border,$ln,$align,$fill,$link, $currentx);
+}
+/*-- END DIRECTW --*/
+
+
+function ResetSpacing() {
+       if ($this->ws != 0) { $this->_out('BT 0 Tw ET'); }
+       $this->ws=0;
+       if ($this->charspacing != 0) { $this->_out('BT 0 Tc ET'); }
+       $this->charspacing=0;
+}
+
+
+function SetSpacing($cs,$ws) {
+       if (intval($cs*1000)==0) { $cs = 0; }
+       if ($cs) { $this->_out(sprintf('BT %.3F Tc ET',$cs)); }
+       else if ($this->charspacing != 0) { $this->_out('BT 0 Tc ET'); }
+       $this->charspacing=$cs;
+       if (intval($ws*1000)==0) { $ws = 0; }
+       if ($ws) { $this->_out(sprintf('BT %.3F Tw ET',$ws)); }
+       else if ($this->ws != 0) { $this->_out('BT 0 Tw ET'); }
+       $this->ws=$ws;
+}
+
+// WORD SPACING
+function GetJspacing($nc,$ns,$w,$inclCursive) {
+       $ws = 0; 
+       $charspacing = 0;
+       $ww = $this->jSWord;
+       $ncx = $nc-1;
+       if ($nc == 0) { return array(0,0); }
+       else if ($nc==1) { $charspacing = $w; }
+       // Only word spacing allowed / possible
+       else if ($this->fixedlSpacing !== false || $inclCursive) {
+               if ($ns) { $ws = $w / $ns; } 
+       }
+       else if (!$ns) {
+               $charspacing = $w / ($ncx );
+               if (($this->jSmaxChar > 0) && ($charspacing > $this->jSmaxChar)) { 
+                       $charspacing = $this->jSmaxChar;
+               }
+       }
+       else if ($ns == ($ncx )) {
+               $charspacing = $w / $ns;
+       }
+       else {
+               if ($this->usingCoreFont) {
+                       $cs = ($w * (1 - $this->jSWord)) / ($ncx );
+                       if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
+                               $cs = $this->jSmaxChar;
+                               $ww = 1 - (($cs * ($ncx ))/$w);
+                       }
+                       $charspacing = $cs; 
+                       $ws = ($w * ($ww) ) / $ns;
+               }
+               else {
+                       $cs = ($w * (1 - $this->jSWord)) / ($ncx -$ns);
+                       if (($this->jSmaxChar > 0) && ($cs > $this->jSmaxChar)) {
+                               $cs = $this->jSmaxChar;
+                               $ww = 1 - (($cs * ($ncx -$ns))/$w);
+                       }
+                       $charspacing = $cs; 
+                       $ws = (($w * ($ww) ) / $ns) - $charspacing;
+               }
+       }
+       return array($charspacing,$ws); 
+}
+
+function Cell($w,$h=0,$txt='',$border=0,$ln=0,$align='',$fill=0,$link='', $currentx=0, $lcpaddingL=0, $lcpaddingR=0, $valign='M', $spanfill=0, $abovefont=0, $belowfont=0, $exactWidth=false) {
+       //Output a cell
+       // Expects input to be mb_encoded if necessary and RTL reversed
+       // NON_BREAKING SPACE
+       if ($this->usingCoreFont) {
+             $txt = str_replace(chr(160),chr(32),$txt);
+       }
+       else {
+             $txt = str_replace(chr(194).chr(160),chr(32),$txt);
+       }
+
+       $oldcolumn = $this->CurrCol;
+       // Automatic page break
+       // Allows PAGE-BREAK-AFTER = avoid to work
+
+       if (!$this->tableLevel && (($this->y+$this->divheight>$this->PageBreakTrigger) || ($this->y+$h>$this->PageBreakTrigger) || 
+               ($this->y+($h*2)>$this->PageBreakTrigger && $this->blk[$this->blklvl]['page_break_after_avoid'])) and !$this->InFooter and $this->AcceptPageBreak()) {
+               $x=$this->x;//Current X position
+
+
+               // WORD SPACING
+               $ws=$this->ws;//Word Spacing
+               $charspacing=$this->charspacing;//Character Spacing
+               $this->ResetSpacing();
+
+               $this->AddPage($this->CurOrientation);
+               // Added to correct for OddEven Margins
+               $x += $this->MarginCorrection;
+               if ($currentx) { 
+                       $currentx += $this->MarginCorrection;
+               } 
+               $this->x=$x;
+               // WORD SPACING
+               $this->SetSpacing($charspacing,$ws);
+       }
+
+       // Test: to put line through centre of cell: $this->Line($this->x,$this->y+($h/2),$this->x+50,$this->y+($h/2));
+
+/*-- COLUMNS --*/
+       // COLS
+       // COLUMN CHANGE
+       if ($this->CurrCol != $oldcolumn) {
+               if ($currentx) { 
+                       $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+               } 
+               $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+       }
+
+       // COLUMNS Update/overwrite the lowest bottom of printing y value for a column
+       if ($this->ColActive) {
+               if ($h) { $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$h; }
+               else { $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$this->divheight; }
+       }
+/*-- END COLUMNS --*/
+
+       // KEEP BLOCK TOGETHER Update/overwrite the lowest bottom of printing y value on first page
+       if ($this->keep_block_together) {
+               if ($h) { $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$h; }
+//             else { $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$this->divheight; }
+       }
+
+       if($w==0) $w = $this->w-$this->rMargin-$this->x;
+       $s='';
+       if($fill==1 && $this->FillColor) { 
+               if((isset($this->pageoutput[$this->page]['FillColor']) && $this->pageoutput[$this->page]['FillColor'] != $this->FillColor) || !isset($this->pageoutput[$this->page]['FillColor']) || $this->keep_block_together) { $s .= $this->FillColor.' '; }
+               $this->pageoutput[$this->page]['FillColor'] = $this->FillColor;
+       }
+
+
+       $boxtop = $this->y;
+       $boxheight = $h;
+       $boxbottom = $this->y+$h;
+
+       if($txt!='') {
+               // FONT SIZE - this determines the baseline caculation
+               if ($this->linemaxfontsize && !$this->processingHeader) { $bfs = $this->linemaxfontsize; }
+               else  { $bfs = $this->FontSize; }
+               //Calculate baseline Superscript and Subscript Y coordinate adjustment
+               $bfx = $this->baselineC;
+               $baseline = $bfx*$bfs;
+               if($this->SUP) { $baseline += ($bfx-1.05)*$this->FontSize; }
+               else if($this->SUB) { $baseline += ($bfx + 0.04)*$this->FontSize; }
+               else if($this->bullet) { $baseline += ($bfx-0.7)*$this->FontSize; }
+
+               // Vertical align (for Images)
+               if ($abovefont || $belowfont) { // from flowing block - valign always M
+                       $va = $abovefont + (0.5*$bfs);
+               }
+               else if ($this->lineheight_correction) { 
+                       if ($valign == 'T') { $va = (0.5 * $bfs * $this->lineheight_correction); }
+                       else if ($valign == 'B') { $va = $h-(0.5 * $bfs * $this->lineheight_correction); }
+                       else { $va = 0.5*$h; }  // Middle
+               }
+               else { 
+                       if ($valign == 'T') { $va = (0.5 * $bfs * $this->default_lineheight_correction); }
+                       else if ($valign == 'B') { $va = $h-(0.5 * $bfs * $this->default_lineheight_correction); }
+                       else { $va = 0.5*$h; }  // Middle
+               }
+
+               // ONLY SET THESE IF WANT TO CONFINE BORDER +/- FILL TO FIT FONTSIZE - NOT FULL CELL AS IS ORIGINAL FUNCTION
+               // spanfill or spanborder are set in FlowingBlock functions
+               if ($spanfill || !empty($this->spanborddet) || $link!='') {
+                       $exth = 0.2;    // Add to fontsize to increase height of background / link / border
+                       $boxtop = $this->y+$baseline+$va-($this->FontSize*(1+$exth/2)*(0.5+$bfx));
+                       $boxheight = $this->FontSize * (1+$exth);
+                       $boxbottom = $boxtop + $boxheight;
+               }
+       }
+
+       $bbw = $tbw = $lbw = $rbw = 0;  // Border widths
+       if (!empty($this->spanborddet)) { 
+               if (!isset($this->spanborddet['B'])) { $this->spanborddet['B'] = array('s' => 0, 'style' => '', 'w' => 0); }
+               if (!isset($this->spanborddet['T'])) { $this->spanborddet['T'] = array('s' => 0, 'style' => '', 'w' => 0); }
+               if (!isset($this->spanborddet['L'])) { $this->spanborddet['L'] = array('s' => 0, 'style' => '', 'w' => 0); }
+               if (!isset($this->spanborddet['R'])) { $this->spanborddet['R'] = array('s' => 0, 'style' => '', 'w' => 0); }
+               $bbw = $this->spanborddet['B']['w'];
+               $tbw = $this->spanborddet['T']['w'];
+               $lbw = $this->spanborddet['L']['w'];
+               $rbw = $this->spanborddet['R']['w'];
+       }
+       if($fill==1 || $border==1 || !empty($this->spanborddet)) {
+               if (!empty($this->spanborddet)) { 
+                       if ($fill==1) {
+                               $s.=sprintf('%.3F %.3F %.3F %.3F re f ',($this->x-$lbw)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($w+$lbw+$rbw)*_MPDFK,(-$boxheight-$tbw-$bbw)*_MPDFK);
+                       }
+                       $s.= ' q ';
+                       $dashon = 3;
+                       $dashoff = 3.5;
+                       $dot = 2.5;
+                       if($tbw) {
+                               $short = 0;
+                               if ($this->spanborddet['T']['style'] == 'dashed') {
+                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$tbw*$dashon*_MPDFK,$tbw*$dashoff*_MPDFK);
+                               }
+                               else if ($this->spanborddet['T']['style'] == 'dotted') {
+                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$tbw*$dot*_MPDFK,-$tbw/2*_MPDFK);
+                                       $short = $tbw/2;
+                               }
+                               else {
+                                       $s.=' 0 j 0 J [] 0 d ';
+                               }
+                               $c = $this->SetDColor($this->spanborddet['T']['c'],true);
+                               if ($this->spanborddet['T']['style'] == 'double') {
+                                       $s.=sprintf(' %s %.3F w ',$c,$tbw/3*_MPDFK);
+                                       $xadj = $xadj2 = 0; 
+                                       if ($this->spanborddet['L']['style'] == 'double') { $xadj = $this->spanborddet['L']['w']*2/3; }
+                                       if ($this->spanborddet['R']['style'] == 'double') { $xadj2 = $this->spanborddet['R']['w']*2/3; }
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxtop+$tbw*5/6)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxtop+$tbw*5/6)*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw+$xadj)*_MPDFK,($this->h-$boxtop+$tbw/6)*_MPDFK,($this->x+$w+$rbw-$short-$xadj2)*_MPDFK,($this->h-$boxtop+$tbw/6)*_MPDFK);
+                               }
+                               else {
+                                       $s.=sprintf(' %s %.3F w ',$c,$tbw*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxtop+$tbw/2)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxtop+$tbw/2)*_MPDFK);
+                               }
+                       }
+                       if($bbw) {
+                               $short = 0;
+                               if ($this->spanborddet['B']['style'] == 'dashed') {
+                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$bbw*$dashon*_MPDFK,$bbw*$dashoff*_MPDFK);
+                               }
+                               else if ($this->spanborddet['B']['style'] == 'dotted') {
+                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$bbw*$dot*_MPDFK,-$bbw/2*_MPDFK);
+                                       $short = $bbw/2;
+                               }
+                               else {
+                                       $s.=' 0 j 0 J [] 0 d ';
+                               }
+                               $c = $this->SetDColor($this->spanborddet['B']['c'],true);
+                               if ($this->spanborddet['B']['style'] == 'double') {
+                                       $s.=sprintf(' %s %.3F w ',$c,$bbw/3*_MPDFK);
+                                       $xadj = $xadj2 = 0; 
+                                       if ($this->spanborddet['L']['style'] == 'double') { $xadj = $this->spanborddet['L']['w']*2/3; }
+                                       if ($this->spanborddet['R']['style'] == 'double') { $xadj2 = $this->spanborddet['R']['w']*2/3; }
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw+$xadj)*_MPDFK,($this->h-$boxbottom-$bbw/6)*_MPDFK,($this->x+$w+$rbw-$short-$xadj2)*_MPDFK,($this->h-$boxbottom-$bbw/6)*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxbottom-$bbw*5/6)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxbottom-$bbw*5/6)*_MPDFK);
+                               }
+                               else {
+                                       $s.=sprintf(' %s %.3F w ',$c,$bbw*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw)*_MPDFK,($this->h-$boxbottom-$bbw/2)*_MPDFK,($this->x+$w+$rbw-$short)*_MPDFK,($this->h-$boxbottom-$bbw/2)*_MPDFK);
+                               }
+                       }
+                       if($lbw) {
+                               $short = 0;
+                               if ($this->spanborddet['L']['style'] == 'dashed') {
+                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$lbw*$dashon*_MPDFK,$lbw*$dashoff*_MPDFK);
+                               }
+                               else if ($this->spanborddet['L']['style'] == 'dotted') {
+                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$lbw*$dot*_MPDFK,-$lbw/2*_MPDFK);
+                                       $short = $lbw/2;
+                               }
+                               else {
+                                       $s.=' 0 j 0 J [] 0 d ';
+                               }
+                               $c = $this->SetDColor($this->spanborddet['L']['c'],true);
+                               if ($this->spanborddet['L']['style'] == 'double') {
+                                       $s.=sprintf(' %s %.3F w ',$c,$lbw/3*_MPDFK);
+                                       $yadj = $yadj2 = 0; 
+                                       if ($this->spanborddet['T']['style'] == 'double') { $yadj = $this->spanborddet['T']['w']*2/3; }
+                                       if ($this->spanborddet['B']['style'] == 'double') { $yadj2 = $this->spanborddet['B']['w']*2/3; }
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw/6)*_MPDFK,($this->h-$boxtop+$tbw-$yadj)*_MPDFK,($this->x-$lbw/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short+$yadj2)*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw*5/6)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x-$lbw*5/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
+                               }
+                               else {
+                                       $s.=sprintf(' %s %.3F w ',$c,$lbw*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x-$lbw/2)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x-$lbw/2)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
+                               }
+                       }
+                       if($rbw) {
+                               $short = 0;
+                               if ($this->spanborddet['R']['style'] == 'dashed') {
+                                       $s.=sprintf(' 0 j 0 J [%.3F %.3F] 0 d ',$rbw*$dashon*_MPDFK,$rbw*$dashoff*_MPDFK);
+                               }
+                               else if ($this->spanborddet['R']['style'] == 'dotted') {
+                                       $s.=sprintf(' 1 j 1 J [%.3F %.3F] %.3F d ',0.001,$rbw*$dot*_MPDFK,-$rbw/2*_MPDFK);
+                                       $short = $rbw/2;
+                               }
+                               else {
+                                       $s.=' 0 j 0 J [] 0 d ';
+                               }
+                               $c = $this->SetDColor($this->spanborddet['R']['c'],true);
+                               if ($this->spanborddet['R']['style'] == 'double') {
+                                       $s.=sprintf(' %s %.3F w ',$c,$rbw/3*_MPDFK);
+                                       $yadj = $yadj2 = 0; 
+                                       if ($this->spanborddet['T']['style'] == 'double') { $yadj = $this->spanborddet['T']['w']*2/3; }
+                                       if ($this->spanborddet['B']['style'] == 'double') { $yadj2 = $this->spanborddet['B']['w']*2/3; }
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x+$w+$rbw/6)*_MPDFK,($this->h-$boxtop+$tbw-$yadj)*_MPDFK,($this->x+$w+$rbw/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short+$yadj2)*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x+$w+$rbw*5/6)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x+$w+$rbw*5/6)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
+                               }
+                               else {
+                                       $s.=sprintf(' %s %.3F w ',$c,$rbw*_MPDFK);
+                                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($this->x+$w+$rbw/2)*_MPDFK,($this->h-$boxtop+$tbw)*_MPDFK,($this->x+$w+$rbw/2)*_MPDFK,($this->h-$boxbottom-$bbw+$short)*_MPDFK);
+                               }
+                       }
+                       $s.= ' Q ';
+               }
+               else {
+                       if ($fill==1) $op=($border==1) ? 'B' : 'f';
+                       else $op='S';
+                       $s.=sprintf('%.3F %.3F %.3F %.3F re %s ',$this->x*_MPDFK,($this->h-$boxtop)*_MPDFK,$w*_MPDFK,-$boxheight*_MPDFK,$op);
+               }
+       }
+
+       if(is_string($border)) {
+               $x=$this->x;
+               $y=$this->y;
+               if(is_int(strpos($border,'L')))
+                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-$boxtop)*_MPDFK,$x*_MPDFK,($this->h-($boxbottom))*_MPDFK);
+               if(is_int(strpos($border,'T')))
+                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-$boxtop)*_MPDFK,($x+$w)*_MPDFK,($this->h-$boxtop)*_MPDFK);
+               if(is_int(strpos($border,'R')))
+                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',($x+$w)*_MPDFK,($this->h-$boxtop)*_MPDFK,($x+$w)*_MPDFK,($this->h-($boxbottom))*_MPDFK);
+               if(is_int(strpos($border,'B')))
+                       $s.=sprintf('%.3F %.3F m %.3F %.3F l S ',$x*_MPDFK,($this->h-($boxbottom))*_MPDFK,($x+$w)*_MPDFK,($this->h-($boxbottom))*_MPDFK);
+       }
+
+       if($txt!='') {
+               if ($exactWidth)
+                       $stringWidth = $w;  
+               else 
+                       $stringWidth = $this->GetStringWidth($txt) + ( $this->charspacing * mb_strlen( $txt, $this->mb_enc ) / _MPDFK )
+                                + ( $this->ws * mb_substr_count( $txt, ' ', $this->mb_enc ) / _MPDFK );
+
+               // Set x OFFSET FOR PRINTING
+               if($align=='R') {
+                       $dx=$w-$this->cMarginR - $stringWidth - $lcpaddingR;
+               }
+               elseif($align=='C') {
+                       $dx=(($w - $stringWidth )/2);
+               }
+               elseif($align=='L' or $align=='J') $dx=$this->cMarginL + $lcpaddingL;
+               else $dx = 0;
+
+               if($this->ColorFlag) $s .='q '.$this->TextColor.' ';
+
+               // OUTLINE
+               if($this->textparam['outline-s'] && !$this->S) {        // mPDF 5.6.07
+                       $s .=' '.sprintf('%.3F w',$this->LineWidth*_MPDFK).' ';
+                       $s .=" $this->DrawColor ";
+                       $s .=" 2 Tr ";
+               }
+               else if ($this->falseBoldWeight && strpos($this->ReqFontStyle,"B") !== false && strpos($this->FontStyle,"B") === false && !$this->S) {  // can't use together with OUTLINE or Small Caps
+                       $s .= ' 2 Tr 1 J 1 j ';
+                       $s .= ' '.sprintf('%.3F w',($this->FontSize/130)*_MPDFK*$this->falseBoldWeight).' ';
+                       $tc = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+                       if($this->FillColor!=$tc) { $s .= ' '.$tc.' '; }                // stroke (outline) = same colour as text(fill)
+               }
+               else { $s .=" 0 Tr "; } // mPDF 5.6.07
+
+               if (strpos($this->ReqFontStyle,"I") !== false && strpos($this->FontStyle,"I") === false) {      // Artificial italic
+                       $aix = '1 0 0.261799 1 %.3F %.3F Tm '; 
+               }
+               else { $aix = '%.3F %.3F Td '; }
+
+               // THE TEXT
+               $sub = '';
+               $this->CurrentFont['used']= true;
+
+               // WORD SPACING
+               // IF multibyte - Tw has no effect - need to use alternative method - do word spacing using an adjustment before each space
+               if ($this->ws && !$this->usingCoreFont && !$this->CurrentFont['sip'] && !$this->CurrentFont['smp'] && !$this->S) {
+                 $sub .= ' BT 0 Tw ET ';        
+                 if ($this->kerning && $this->useKerning) { $sub .= $this->_kern($txt, 'MBTw', $aix, ($this->x+$dx), ($this->y+$baseline+$va)); }
+                 else {
+                       $space = " ";
+                       //Convert string to UTF-16BE without BOM
+                       $space= $this->UTF8ToUTF16BE($space , false);
+                       $space=$this->_escape($space ); 
+                       $sub .=sprintf('BT '.$aix,($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK);
+                       $t = explode(' ',$txt);
+                       $sub .=sprintf(' %.3F Tc [',$this->charspacing);
+                       $numt = count($t);
+                       for($i=0;$i<$numt;$i++) {
+                               $tx = $t[$i]; 
+                               //Convert string to UTF-16BE without BOM
+                               $tx = $this->UTF8ToUTF16BE($tx , false);
+                               $tx = $this->_escape($tx); 
+                               $sub .=sprintf('(%s) ',$tx);
+                               if (($i+1)<$numt) {
+                                       $adj = -($this->ws)*1000/$this->FontSizePt;
+                                       $sub .=sprintf('%d(%s) ',$adj,$space);
+                               }
+                       }
+                       $sub .='] TJ ';
+                       $sub .=' ET';
+                 }
+               }
+               else {
+                 $txt2= $txt;
+                 if ($this->CurrentFont['type']=='TTF' && ($this->CurrentFont['sip'] || $this->CurrentFont['smp'])) {
+                       if ($this->S) { $sub .= $this->_smallCaps($txt2, 'SIPSMP', $aix, $dx, _MPDFK, $baseline, $va); } 
+                       else {
+                               $txt2 = $this->UTF8toSubset($txt2);
+                               $sub .=sprintf('BT '.$aix.' %s Tj ET',($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK,$txt2);
+                       }
+                 }
+                 else {
+                       if ($this->S) { $sub .= $this->_smallCaps($txt2, '', $aix, $dx, _MPDFK, $baseline, $va); } 
+                       else if ($this->kerning && $this->useKerning) { $sub .= $this->_kern($txt2, '', $aix, ($this->x+$dx), ($this->y+$baseline+$va)); } 
+                       else {
+                               if (!$this->usingCoreFont) {
+                                       $txt2 = $this->UTF8ToUTF16BE($txt2, false);
+                               }
+                               $txt2=$this->_escape($txt2); 
+                               $sub .=sprintf('BT '.$aix.' (%s) Tj ET',($this->x+$dx)*_MPDFK,($this->h-($this->y+$baseline+$va))*_MPDFK,$txt2);
+                       }
+                 }
+               }
+               // UNDERLINE
+               if($this->U) {
+                       $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+                       if($this->FillColor!=$c) { $sub .= ' '.$c.' '; }
+                       if (isset($this->CurrentFont['up'])) { $up=$this->CurrentFont['up']; }
+                       else { $up = -100; }
+                       $adjusty = (-$up/1000* $this->FontSize);
+                       if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
+                       else { $ut = 60/1000* $this->FontSize; }
+                       $olw = $this->LineWidth;
+                       $sub .=' '.(sprintf(' %.3F w 0 j 0 J ',$ut*_MPDFK));
+                       $sub .=' '.$this->_dounderline($this->x+$dx,$this->y+$baseline+$va+$adjusty,$txt);
+                       $sub .=' '.(sprintf(' %.3F w 2 j 2 J ',$olw*_MPDFK));
+                       if($this->FillColor!=$c) { $sub .= ' '.$this->FillColor.' '; }
+               }
+
+               // STRIKETHROUGH
+               if($this->strike) {
+                       $c = strtoupper($this->TextColor); // change 0 0 0 rg to 0 0 0 RG
+                       if($this->FillColor!=$c) { $sub .= ' '.$c.' '; }
+                       //Superscript and Subscript Y coordinate adjustment (now for striked-through texts)
+                       if (isset($this->CurrentFont['desc']['CapHeight'])) { $ch=$this->CurrentFont['desc']['CapHeight']; }
+                       else { $ch = 700; }
+                       $adjusty = (-$ch/1000* $this->FontSize) * 0.35;
+                       if (isset($this->CurrentFont['ut'])) { $ut=$this->CurrentFont['ut']/1000* $this->FontSize; }
+                       else { $ut = 60/1000* $this->FontSize; }
+                       $olw = $this->LineWidth;
+                       $sub .=' '.(sprintf(' %.3F w 0 j 0 J ',$ut*_MPDFK));
+                       $sub .=' '.$this->_dounderline($this->x+$dx,$this->y+$baseline+$va+$adjusty,$txt);
+                       $sub .=' '.(sprintf(' %.3F w 2 j 2 J ',$olw*_MPDFK));
+                       if($this->FillColor!=$c) { $sub .= ' '.$this->FillColor.' '; }
+               }
+
+               // TEXT SHADOW
+               if ($this->textshadow) {                // First to process is last in CSS comma separated shadows
+                       foreach($this->textshadow AS $ts) {
+                                       $s .= ' q ';
+                                       $s .= $this->SetTColor($ts['col'], true)."\n";
+                                       if ($ts['col']{0}==5 && ord($ts['col']{4})<100) {       // RGBa
+                                               $s .= $this->SetAlpha(ord($ts['col']{4})/100, 'Normal', true, 'F')."\n"; 
+                                       }
+                                       else if ($ts['col']{0}==6 && ord($ts['col']{5})<100) {  // CMYKa
+                                               $s .= $this->SetAlpha(ord($ts['col']{5})/100, 'Normal', true, 'F')."\n"; 
+                                       }
+                                       else if ($ts['col']{0}==1 && $ts['col']{2}==1 && ord($ts['col']{3})<100) {      // Gray
+                                               $s .= $this->SetAlpha(ord($ts['col']{3})/100, 'Normal', true, 'F')."\n"; 
+                                       }
+                                       $s .= sprintf(' 1 0 0 1 %.4F %.4F cm', $ts['x']*_MPDFK, -$ts['y']*_MPDFK)."\n";
+                                       $s .= $sub;
+                                       $s .= ' Q ';
+                       }
+               }
+
+               $s .= $sub;
+
+               // COLOR
+               if($this->ColorFlag) $s .=' Q';
+
+               // LINK
+               if($link!='') {
+                       $this->Link($this->x,$boxtop,$w,$boxheight,$link);
+               }
+       }
+       if($s) $this->_out($s);
+
+       // WORD SPACING
+       if ($this->ws && !$this->usingCoreFont) {
+               $this->_out(sprintf('BT %.3F Tc ET',$this->charspacing));        
+       }
+       $this->lasth=$h;
+       if( strpos($txt,"\n") !== false) $ln=1; // cell recognizes \n from <BR> tag
+       if($ln>0)
+       {
+               //Go to next line
+               $this->y += $h;
+               if($ln==1) {
+                       //Move to next line
+                       if ($currentx != 0) { $this->x=$currentx; }
+                       else { $this->x=$this->lMargin; }
+               }
+       }
+       else $this->x+=$w;
+
+
+}
+
+
+function _kern($txt, $mode, $aix, $x, $y) {
+   if ($mode == 'MBTw') {      // Multibyte requiring word spacing
+                 $space = ' ';
+                 //Convert string to UTF-16BE without BOM
+                 $space= $this->UTF8ToUTF16BE($space , false);
+                 $space=$this->_escape($space ); 
+                 $s = sprintf(' BT '.$aix,$x*_MPDFK,($this->h-$y)*_MPDFK);
+                 $t = explode(' ',$txt);
+                 for($i=0;$i<count($t);$i++) {
+                       $tx = $t[$i]; 
+
+                       $tj = '(';
+                       $unicode = $this->UTF8StringToArray($tx);
+                       for($ti=0;$ti<count($unicode);$ti++) {
+                               if ($ti > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($ti-1)]][$unicode[$ti]]))  {
+                                                       $kern = -$this->CurrentFont['kerninfo'][$unicode[($ti-1)]][$unicode[$ti]];
+                                                       $tj .= sprintf(')%d(',$kern);
+                               }
+                               $tc = code2utf($unicode[$ti]);
+                               $tc = $this->UTF8ToUTF16BE($tc, false);
+                               $tj .= $this->_escape($tc); 
+                       }
+                       $tj .= ')';
+                       $s.=sprintf(' %.3F Tc [%s] TJ',$this->charspacing,$tj);
+
+
+                       if (($i+1)<count($t)) {
+                               $s.=sprintf(' %.3F Tc (%s) Tj',$this->ws+$this->charspacing,$space);
+                       }
+                 }
+                 $s.=' ET ';
+   }
+   else if (!$this->usingCoreFont) {
+       $s = '';
+       $tj = '(';
+       $unicode = $this->UTF8StringToArray($txt);
+       for($i=0;$i<count($unicode);$i++) {
+               if ($i > 0 && isset($this->CurrentFont['kerninfo'][$unicode[($i-1)]][$unicode[$i]])) {
+                                       $kern = -$this->CurrentFont['kerninfo'][$unicode[($i-1)]][$unicode[$i]];
+                                       $tj .= sprintf(')%d(',$kern);
+               }
+               $tx = code2utf($unicode[$i]);
+               $tx = $this->UTF8ToUTF16BE($tx, false);
+               $tj .= $this->_escape($tx); 
+       }
+       $tj .= ')';
+       $s.=sprintf(' BT '.$aix.' [%s] TJ ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$tj);
+   }
+   else {      // CORE Font
+       $s = '';
+       $tj = '(';
+       $l = strlen($txt);
+       for($i=0;$i<$l;$i++) {
+               if ($i > 0 && isset($this->CurrentFont['kerninfo'][$txt[($i-1)]][$txt[$i]])) {
+                       $kern = -$this->CurrentFont['kerninfo'][$txt[($i-1)]][$txt[$i]];
+                       $tj .= sprintf(')%d(',$kern);
+               }
+               $tj .= $this->_escape($txt[$i]); 
+       }
+       $tj .= ')';
+       $s.=sprintf(' BT '.$aix.' [%s] TJ ET ',$x*_MPDFK,($this->h-$y)*_MPDFK,$tj);
+   }
+
+   return $s;
+}
+
+
+function _smallCaps($txt, $mode, $aix, $dx, $k, $baseline, $va) {
+       $upp = false;
+       $str = array();
+       $bits = array();
+       if (!$this->usingCoreFont) { 
+          $unicode = $this->UTF8StringToArray($txt);
+          foreach($unicode as $char) {
+               if ($this->ws && $char == 32) {         // space
+                       if (count($str)) { $bits[] = array($upp, $str, false); }
+                       $bits[] = array(false, array(32), true); 
+                       $str = array(); 
+                       $upp = false;
+               }
+               else if (isset($this->upperCase[$char])) { 
+                       if (!$upp) { 
+                               if (count($str)) { $bits[] = array($upp, $str, false); }
+                               $str = array(); 
+                       }
+                       $str[] = $this->upperCase[$char]; 
+                       if ((!isset($this->CurrentFont['sip']) || !$this->CurrentFont['sip']) && (!isset($this->CurrentFont['smp']) || !$this->CurrentFont['smp'])) {   
+                               $this->CurrentFont['subset'][$this->upperCase[$char]] = $this->upperCase[$char];
+                       }
+                       $upp = true;
+               }
+               else { 
+                       if ($upp) { 
+                               if (count($str)) { $bits[] = array($upp, $str, false); }
+                               $str = array(); 
+                       }
+                       $str[] = $char;
+                       $upp = false;
+               }
+          }
+       }
+       else {
+          for($i=0;$i<strlen($txt);$i++) {
+               if (isset($this->upperCase[ord($txt[$i])]) && $this->upperCase[ord($txt[$i])] < 256) { 
+                       if (!$upp) { 
+                               if (count($str)) { $bits[] = array($upp, $str, false); }
+                               $str = array(); 
+                       }
+                       $str[] = $this->upperCase[ord($txt[$i])]; 
+                       $upp = true;
+               }
+               else { 
+                       if ($upp) { 
+                               if (count($str)) { $bits[] = array($upp, $str, false); }
+                               $str = array(); 
+                       }
+                       $str[] = ord($txt[$i]);
+                       $upp = false;
+               }
+          }
+       }
+       if (count($str)) { $bits[] = array($upp, $str, false); }
+
+       $fid = $this->CurrentFont['i'];
+
+       $s=sprintf(' BT '.$aix,($this->x+$dx)*$k,($this->h-($this->y+$baseline+$va))*$k);
+       foreach($bits AS $b) {
+               if ($b[0]) { $upp = true; }
+               else { $upp = false; }
+
+               $size = count ($b[1]);
+               $txt = '';
+               for ($i = 0; $i < $size; $i++) {
+                       $txt .= code2utf($b[1][$i]); 
+               }
+               if ($this->usingCoreFont) { 
+                       $txt = utf8_decode($txt);
+               }
+               if ($mode == 'SIPSMP') {
+                       $txt = $this->UTF8toSubset($txt);
+               }
+               else { 
+                       if (!$this->usingCoreFont) {
+                               $txt = $this->UTF8ToUTF16BE($txt, false);
+                       }
+                       $txt=$this->_escape($txt); 
+                       $txt = '('.$txt.')';
+               }
+               if ($b[2]) { // space
+                       $s.=sprintf(' /F%d %.3F Tf %d Tz', $fid, $this->FontSizePt, 100); 
+                       $s.=sprintf(' %.3F Tc', ($this->charspacing+$this->ws));
+                       $s.=sprintf(' %s Tj', $txt);
+               }
+               else if ($upp) { 
+                       $s.=sprintf(' /F%d %.3F Tf', $fid, $this->FontSizePt*$this->smCapsScale); 
+                       $s.=sprintf(' %d Tz', $this->smCapsStretch); 
+                       $s.=sprintf(' %.3F Tc', ($this->charspacing*100/$this->smCapsStretch));
+                       $s.=sprintf(' %s Tj', $txt);
+               }
+               else { 
+                       $s.=sprintf(' /F%d %.3F Tf %d Tz', $fid, $this->FontSizePt, 100); 
+                       $s.=sprintf(' %.3F Tc', ($this->charspacing)); 
+                       $s.=sprintf(' %s Tj', $txt);
+               }
+       }
+       $s.=' ET ';
+       return $s;
+}
+
+
+function MultiCell($w,$h,$txt,$border=0,$align='',$fill=0,$link='',$directionality='ltr',$encoded=false)
+{
+       // Parameter (pre-)encoded - When called internally from ToC or textarea: mb_encoding already done - but not reverse RTL/Indic
+       if (!$encoded) {
+               $txt = $this->purify_utf8_text($txt);
+               if ($this->text_input_as_HTML) {
+                       $txt = $this->all_entities_to_utf8($txt);
+               }
+               if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
+               // Font-specific ligature substitution for Indic fonts
+               else if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {   // *INDIC*
+                       $this->ConvertIndic($tmp);      // *INDIC*
+               }       // *INDIC*
+               if (preg_match("/([".$this->pregRTLchars."])/u", $txt)) { $this->biDirectional = true; }        // *RTL*
+       }
+       if (!$align) { $align = $this->defaultAlign; }
+
+       //Output text with automatic or explicit line breaks
+       $cw=&$this->CurrentFont['cw'];
+       if($w==0)       $w=$this->w-$this->rMargin-$this->x;
+
+       $wmax = ($w - ($this->cMarginL+$this->cMarginR));
+       if ($this->usingCoreFont)  {
+               $s=str_replace("\r",'',$txt);
+               $nb=strlen($s);
+               while($nb>0 and $s[$nb-1]=="\n")        $nb--;
+       }
+       else {
+               $s=str_replace("\r",'',$txt);
+               $nb=mb_strlen($s, $this->mb_enc );
+               while($nb>0 and mb_substr($s,$nb-1,1,$this->mb_enc )=="\n")     $nb--;
+       }
+       $b=0;
+       if($border) {
+               if($border==1) {
+                       $border='LTRB';
+                       $b='LRT';
+                       $b2='LR';
+               }
+               else {
+                       $b2='';
+                       if(is_int(strpos($border,'L'))) $b2.='L';
+                       if(is_int(strpos($border,'R'))) $b2.='R';
+                       $b=is_int(strpos($border,'T')) ? $b2.'T' : $b2;
+               }
+       }
+       $sep=-1;
+       $i=0;
+       $j=0;
+       $l=0;
+       $ns=0;
+       $nl=1;
+
+
+
+   if (!$this->usingCoreFont)  {
+       $checkCursive=false;
+       if ($this->biDirectional) {  $checkCursive=true; }
+       else if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {  $checkCursive=true; }    // *INDIC*
+       while($i<$nb) {
+               //Get next character
+               $c = mb_substr($s,$i,1,$this->mb_enc );
+               if($c == "\n") {
+                       //Explicit line break
+                       // WORD SPACING
+                       $this->ResetSpacing();
+                       $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
+                       // DIRECTIONALITY
+                       $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
+
+                       $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
+                       $i++;
+                       $sep=-1;
+                       $j=$i;
+                       $l=0;
+                       $ns=0;
+                       $nl++;
+                       if($border and $nl==2) $b=$b2;
+                       continue;
+               }
+               if($c == " ") {
+                       $sep=$i;
+                       $ls=$l;
+                       $ns++;
+               }
+
+               $l += $this->GetCharWidthNonCore($c);
+
+               if($l>$wmax) {
+                       //Automatic line break
+                       if($sep==-1) {  // Only one word
+                               if($i==$j) $i++;
+                               // WORD SPACING
+                               $this->ResetSpacing();
+                               $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
+                               // DIRECTIONALITY
+                               $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
+
+                               $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
+                       }
+                       else {
+                               $tmp = rtrim(mb_substr($s,$j,$sep-$j,$this->mb_enc));
+                               if($align=='J') {
+                                       //////////////////////////////////////////
+                                       // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
+                                       // WORD SPACING UNICODE
+                                       // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
+                                       $tmp = str_replace(chr(194).chr(160),chr(32),$tmp ); 
+                                       $len_ligne = $this->GetStringWidth($tmp );
+                                       $nb_carac = mb_strlen( $tmp , $this->mb_enc ) ;  
+                                       $nb_spaces = mb_substr_count( $tmp ,' ', $this->mb_enc ) ;  
+
+                                       $inclCursive=false;
+                                       if ($checkCursive) {
+                                               if (preg_match("/([".$this->pregRTLchars."])/u", $tmp)) { $inclCursive = true; }        // *RTL*
+                                               if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $tmp)) { $inclCursive = true; }   // *INDIC*
+                                       }
+                                       list($charspacing,$ws) = $this->GetJspacing($nb_carac,$nb_spaces,((($wmax) - $len_ligne) * _MPDFK),$inclCursive);
+                                       $this->SetSpacing($charspacing,$ws);
+                                       //////////////////////////////////////////
+                               }
+
+                               // DIRECTIONALITY
+                               $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
+
+                               $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
+                               $i=$sep+1;
+                       }
+                       $sep=-1;
+                       $j=$i;
+                       $l=0;
+                       $ns=0;
+                       $nl++;
+                       if($border and $nl==2) $b=$b2;
+               }
+               else $i++;
+       }
+       //Last chunk
+       // WORD SPACING
+
+       $this->ResetSpacing();
+
+   }
+
+
+   else {
+
+       while($i<$nb) {
+               //Get next character
+               $c=$s[$i];
+               if($c == "\n") {
+                       //Explicit line break
+                       // WORD SPACING
+                       $this->ResetSpacing();
+                       $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link);
+                       $i++;
+                       $sep=-1;
+                       $j=$i;
+                       $l=0;
+                       $ns=0;
+                       $nl++;
+                       if($border and $nl==2) $b=$b2;
+                       continue;
+               }
+               if($c == " ") {
+                       $sep=$i;
+                       $ls=$l;
+                       $ns++;
+               }
+
+               $l += $this->GetCharWidthCore($c);
+               if($l>$wmax) {
+                       //Automatic line break
+                       if($sep==-1) {
+                               if($i==$j) $i++;
+                               // WORD SPACING
+                               $this->ResetSpacing();
+                               $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link);
+                       }
+                       else {
+                               if($align=='J') {
+                                       $tmp = rtrim(substr($s,$j,$sep-$j));
+                                       //////////////////////////////////////////
+                                       // JUSTIFY J using Unicode fonts (Word spacing doesn't work)
+                                       // WORD SPACING NON_UNICDOE/CJK
+                                       // Change NON_BREAKING SPACE to spaces so they are 'spaced' properly
+                                       $tmp = str_replace(chr(160),chr(32),$tmp);
+                                       $len_ligne = $this->GetStringWidth($tmp );
+                                       $nb_carac = strlen( $tmp ) ;  
+                                       $nb_spaces = substr_count( $tmp ,' ' ) ;  
+                                       list($charspacing,$ws) = $this->GetJspacing($nb_carac,$nb_spaces,((($wmax) - $len_ligne) * _MPDFK),false);
+                                       $this->SetSpacing($charspacing,$ws);
+                                       //////////////////////////////////////////
+                               }
+                               $this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill,$link);
+                               $i=$sep+1;
+                       }
+                       $sep=-1;
+                       $j=$i;
+                       $l=0;
+                       $ns=0;
+                       $nl++;
+                       if($border and $nl==2) $b=$b2;
+               }
+               else $i++;
+       }
+       //Last chunk
+       // WORD SPACING
+
+       $this->ResetSpacing();
+
+   }
+       //Last chunk
+   if($border and is_int(strpos($border,'B'))) $b.='B';
+   if (!$this->usingCoreFont)  {
+               $tmp = rtrim(mb_substr($s,$j,$i-$j,$this->mb_enc));
+               // DIRECTIONALITY
+               $this->magic_reverse_dir($tmp, true, $directionality);  // *RTL*
+               $this->Cell($w,$h,$tmp,$b,2,$align,$fill,$link);
+   }
+   else { $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill,$link); }
+   $this->x=$this->lMargin;
+}
+
+
+/*-- DIRECTW --*/
+function Write($h,$txt,$currentx=0,$link='',$directionality='ltr',$align='') {
+       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
+       if (empty($this->directw)) { $this->directw = new directw($this); }
+       $this->directw->Write($h,$txt,$currentx,$link,$directionality,$align);
+}
+/*-- END DIRECTW --*/
+
+
+/*-- HTML-CSS --*/
+function saveInlineProperties() {
+       $saved = array();
+       $saved[ 'family' ] = $this->FontFamily;
+       $saved[ 'style' ] = $this->FontStyle;
+       $saved[ 'sizePt' ] = $this->FontSizePt;
+       $saved[ 'size' ] = $this->FontSize;
+       $saved[ 'HREF' ] = $this->HREF; 
+       $saved[ 'underline' ] = $this->U; 
+       $saved[ 'smCaps' ] = $this->S;
+       $saved[ 'strike' ] = $this->strike;
+       $saved[ 'textshadow' ] = $this->textshadow;
+       $saved[ 'SUP' ] = $this->SUP; 
+       $saved[ 'SUB' ] = $this->SUB; 
+       $saved[ 'linewidth' ] = $this->LineWidth;
+       $saved[ 'drawcolor' ] = $this->DrawColor;
+       $saved[ 'textparam' ] = $this->textparam;
+       $saved[ 'toupper' ] = $this->toupper;
+       $saved[ 'tolower' ] = $this->tolower;
+       $saved[ 'capitalize' ] = $this->capitalize;
+       $saved[ 'fontkerning' ] = $this->kerning;
+       $saved[ 'lSpacingCSS' ] = $this->lSpacingCSS;
+       $saved[ 'wSpacingCSS' ] = $this->wSpacingCSS;
+       $saved[ 'I' ] = $this->I;
+       $saved[ 'B' ] = $this->B;
+       $saved[ 'colorarray' ] = $this->colorarray;
+       $saved[ 'bgcolorarray' ] = $this->spanbgcolorarray;
+       $saved[ 'border' ] = $this->spanborddet;
+       $saved[ 'color' ] = $this->TextColor; 
+       $saved[ 'bgcolor' ] = $this->FillColor;
+       $saved[ 'lang' ] = $this->currentLang;
+       $saved[ 'display_off' ] = $this->inlineDisplayOff;
+
+       return $saved;
+}
+
+function restoreInlineProperties( &$saved) {
+       $FontFamily = $saved[ 'family' ];
+       $this->FontStyle = $saved[ 'style' ];
+       $this->FontSizePt = $saved[ 'sizePt' ];
+       $this->FontSize = $saved[ 'size' ];
+
+       $this->currentLang =  $saved['lang'];
+       if ($this->useLang && !$this->usingCoreFont) {
+         if ($this->currentLang != $this->default_lang && ((strlen($this->currentLang) == 5 && $this->currentLang != 'UTF-8') || strlen($this->currentLang ) == 2)) { 
+               list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($this->currentLang, $this->useAdobeCJK);
+               if ($mpdf_pdf_unifonts) { $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); }
+               else { $this->RestrictUnicodeFonts($this->default_available_fonts ); }
+         }
+         else { 
+               $this->RestrictUnicodeFonts($this->default_available_fonts );
+         } 
+       }
+
+       $this->ColorFlag = ($this->FillColor != $this->TextColor); //Restore ColorFlag as well
+
+       $this->HREF = $saved[ 'HREF' ];
+       $this->U = $saved[ 'underline' ];
+       $this->S = $saved[ 'smCaps' ];
+       $this->strike = $saved[ 'strike' ];
+       $this->textshadow = $saved[ 'textshadow' ];
+       $this->SUP = $saved[ 'SUP' ];
+       $this->SUB = $saved[ 'SUB' ];
+       $this->LineWidth = $saved[ 'linewidth' ];
+       $this->DrawColor = $saved[ 'drawcolor' ];
+       $this->textparam = $saved[ 'textparam' ];
+       $this->inlineDisplayOff = $saved['display_off'];
+
+       $this->toupper = $saved[ 'toupper' ];
+       $this->tolower = $saved[ 'tolower' ];
+       $this->capitalize = $saved[ 'capitalize' ];
+       $this->kerning = $saved[ 'fontkerning' ];
+       $this->lSpacingCSS = $saved[ 'lSpacingCSS' ];
+       if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
+               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
+       }
+       else { $this->fixedlSpacing = false; }
+       $this->wSpacingCSS = $saved[ 'wSpacingCSS' ];
+       if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
+               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
+       }
+       else { $this->minwSpacing = 0; }
+  
+       $this->SetFont($FontFamily, $saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ],false);
+
+       $this->currentfontstyle = $saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : '');
+       $this->currentfontsize = $saved[ 'sizePt' ];
+       $this->SetStylesArray(array('S'=>$this->S, 'U'=>$this->U, 'B'=>$saved[ 'B' ], 'I'=>$saved[ 'I' ]));
+
+       $this->TextColor = $saved[ 'color' ];
+       $this->FillColor = $saved[ 'bgcolor' ];
+       $this->colorarray = $saved[ 'colorarray' ];
+       $cor = $saved[ 'colorarray' ];
+       if ($cor) $this->SetTColor($cor);
+       $this->spanbgcolorarray = $saved[ 'bgcolorarray' ];
+       $cor = $saved[ 'bgcolorarray' ];
+       if ($cor) $this->SetFColor($cor);
+       $this->spanborddet = $saved[ 'border' ];
+}
+
+
+
+// Used when ColActive for tables - updated to return first block with background fill OR borders
+function GetFirstBlockFill() {
+       // Returns the first blocklevel that uses a bgcolor fill
+       $startfill = 0;
+       for ($i=1;$i<=$this->blklvl;$i++) {
+               if ($this->blk[$i]['bgcolor'] || $this->blk[$i]['border_left']['w'] || $this->blk[$i]['border_right']['w']  || $this->blk[$i]['border_top']['w']  || $this->blk[$i]['border_bottom']['w']  ) {
+                       $startfill = $i;
+                       break;
+               }
+       }
+       return $startfill;
+}
+
+function SetBlockFill($blvl) {
+       if ($this->blk[$blvl]['bgcolor']) {
+               $this->SetFColor($this->blk[$blvl]['bgcolorarray']);
+               return 1;
+       }
+       else {
+               $this->SetFColor($this->ConvertColor(255));
+               return 0;
+       }
+}
+
+
+//-------------------------FLOWING BLOCK------------------------------------//
+//The following functions were originally written by Damon Kohler           //
+//--------------------------------------------------------------------------//
+
+function saveFont() {
+       $saved = array();
+       $saved[ 'family' ] = $this->FontFamily;
+       $saved[ 'style' ] = $this->FontStyle;
+       $saved[ 'sizePt' ] = $this->FontSizePt;
+       $saved[ 'size' ] = $this->FontSize;
+       $saved[ 'curr' ] = &$this->CurrentFont;
+       $saved[ 'color' ] = $this->TextColor; 
+       $saved[ 'spanbgcolor' ] = $this->spanbgcolor; 
+       $saved[ 'spanbgcolorarray' ] = $this->spanbgcolorarray; 
+       $saved[ 'bord' ] = $this->spanborder;
+       $saved[ 'border' ] = $this->spanborddet;
+       $saved[ 'HREF' ] = $this->HREF;
+       $saved[ 'underline' ] = $this->U; 
+       $saved[ 'smCaps' ] = $this->S;
+       $saved[ 'strike' ] = $this->strike;
+       $saved[ 'textshadow' ] = $this->textshadow;
+       $saved[ 'SUP' ] = $this->SUP;
+       $saved[ 'SUB' ] = $this->SUB;
+       $saved[ 'linewidth' ] = $this->LineWidth;
+       $saved[ 'drawcolor' ] = $this->DrawColor;
+       $saved[ 'textparam' ] = $this->textparam;
+       $saved[ 'ReqFontStyle' ] = $this->ReqFontStyle;
+       $saved[ 'fontkerning' ] = $this->kerning; 
+       $saved[ 'fixedlSpacing' ] = $this->fixedlSpacing;
+       $saved[ 'minwSpacing' ] = $this->minwSpacing;
+       return $saved;
+}
+
+function restoreFont( &$saved, $write=true) {
+       if (!isset($saved) || empty($saved)) return;
+
+       $this->FontFamily = $saved[ 'family' ];
+       $this->FontStyle = $saved[ 'style' ];
+       $this->FontSizePt = $saved[ 'sizePt' ];
+       $this->FontSize = $saved[ 'size' ];
+       $this->CurrentFont = &$saved[ 'curr' ];
+       $this->TextColor = $saved[ 'color' ]; 
+       $this->spanbgcolor = $saved[ 'spanbgcolor' ]; 
+       $this->spanbgcolorarray = $saved[ 'spanbgcolorarray' ]; 
+       $this->spanborder = $saved[ 'bord' ];
+       $this->spanborddet = $saved[ 'border' ];
+       $this->ColorFlag = ($this->FillColor != $this->TextColor); //Restore ColorFlag as well
+       $this->HREF = $saved[ 'HREF' ]; 
+       $this->U = $saved[ 'underline' ]; 
+       $this->S = $saved[ 'smCaps' ];
+       $this->kerning = $saved[ 'fontkerning' ];
+       $this->fixedlSpacing = $saved[ 'fixedlSpacing' ];
+       $this->minwSpacing = $saved[ 'minwSpacing' ];
+       $this->strike = $saved[ 'strike' ]; 
+       $this->textshadow = $saved[ 'textshadow' ];
+       $this->SUP = $saved[ 'SUP' ]; 
+       $this->SUB = $saved[ 'SUB' ]; 
+       $this->LineWidth = $saved[ 'linewidth' ]; 
+       $this->DrawColor = $saved[ 'drawcolor' ]; 
+       $this->textparam = $saved[ 'textparam' ];
+       if ($write) { 
+               $this->SetFont($saved[ 'family' ],$saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ],true,true);  // force output
+               $fontout = (sprintf('BT /F%d %.3F Tf ET', $this->CurrentFont['i'], $this->FontSizePt));
+               if($this->page>0 && ((isset($this->pageoutput[$this->page]['Font']) && $this->pageoutput[$this->page]['Font'] != $fontout) || !isset($this->pageoutput[$this->page]['Font']) || $this->keep_block_together)) { $this->_out($fontout); }
+               $this->pageoutput[$this->page]['Font'] = $fontout;
+       }
+       else 
+               $this->SetFont($saved[ 'family' ],$saved[ 'style' ].($this->U ? 'U' : '').($this->S ? 'S' : ''),$saved[ 'sizePt' ]);
+       $this->ReqFontStyle = $saved[ 'ReqFontStyle' ];
+}
+
+function newFlowingBlock( $w, $h, $a = '', $is_table = false, $is_list = false, $blockstate = 0, $newblock=true, $blockdir='ltr')
+{
+       if (!$a) { 
+               if ($blockdir=='rtl') { $a = 'R'; }
+               else { $a = 'L'; }
+       }
+       $this->flowingBlockAttr[ 'width' ] = ($w * _MPDFK);
+       // line height in user units
+       $this->flowingBlockAttr[ 'is_table' ] = $is_table;
+       $this->flowingBlockAttr[ 'is_list' ] = $is_list;
+       $this->flowingBlockAttr[ 'height' ] = $h;
+       $this->flowingBlockAttr[ 'lineCount' ] = 0;
+       $this->flowingBlockAttr[ 'align' ] = $a;
+       $this->flowingBlockAttr[ 'font' ] = array();
+       $this->flowingBlockAttr[ 'content' ] = array();
+       $this->flowingBlockAttr[ 'contentB' ] = array();
+       $this->flowingBlockAttr[ 'contentWidth' ] = 0;
+       $this->flowingBlockAttr[ 'blockstate' ] = $blockstate;
+
+       $this->flowingBlockAttr[ 'newblock' ] = $newblock;
+       $this->flowingBlockAttr[ 'valign' ] = 'M';
+       $this->flowingBlockAttr['blockdir'] = $blockdir;
+
+}
+
+function finishFlowingBlock($endofblock=false, $next='') {
+       $currentx = $this->x;
+       //prints out the last chunk
+       $is_table = $this->flowingBlockAttr[ 'is_table' ];
+       $is_list = $this->flowingBlockAttr[ 'is_list' ];
+       $maxWidth =& $this->flowingBlockAttr[ 'width' ];
+       $lineHeight =& $this->flowingBlockAttr[ 'height' ];
+       $align =& $this->flowingBlockAttr[ 'align' ];
+       $content =& $this->flowingBlockAttr[ 'content' ];
+       $contentB =& $this->flowingBlockAttr[ 'contentB' ];
+       $font =& $this->flowingBlockAttr[ 'font' ];
+       $contentWidth =& $this->flowingBlockAttr[ 'contentWidth' ];
+       $lineCount =& $this->flowingBlockAttr[ 'lineCount' ];
+       $valign =& $this->flowingBlockAttr[ 'valign' ];
+       $blockstate = $this->flowingBlockAttr[ 'blockstate' ];
+
+       $newblock = $this->flowingBlockAttr[ 'newblock' ];
+       $blockdir = $this->flowingBlockAttr['blockdir'];
+
+
+       // *********** BLOCK BACKGROUND COLOR *****************//
+       if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) {
+               $fill = 0;
+       }
+       else {
+               $this->SetFColor($this->ConvertColor(255));
+               $fill = 0;
+       }
+
+       $hanger = '';   // mPDF 5.6.40
+
+       // Always right trim!
+       // Right trim content and adjust width if need to justify (later)
+               if (isset($content[count($content)-1]) && preg_match('/[ ]+$/',$content[count($content)-1], $m)) {
+                       $strip = strlen($m[0]);
+                       $content[count($content)-1] = substr($content[count($content)-1],0,(strlen($content[count($content)-1])-$strip));
+                       $this->restoreFont( $font[ count($content)-1 ],false );
+                       $contentWidth -= $this->GetStringWidth($m[0]) * _MPDFK;
+               }
+
+       // the amount of space taken up so far in user units
+       $usedWidth = 0;
+
+       // COLS
+       $oldcolumn = $this->CurrCol;
+
+       if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }        // *COLUMNS*
+
+       // Print out each chunk
+
+/*-- TABLES --*/
+       if ($is_table) { 
+               $ipaddingL = 0; 
+               $ipaddingR = 0; 
+               $paddingL = 0;
+               $paddingR = 0;
+       } 
+       else { 
+/*-- END TABLES --*/
+               $ipaddingL = $this->blk[$this->blklvl]['padding_left']; 
+               $ipaddingR = $this->blk[$this->blklvl]['padding_right']; 
+               $paddingL = ($ipaddingL * _MPDFK); 
+               $paddingR = ($ipaddingR * _MPDFK);
+               $this->cMarginL =  $this->blk[$this->blklvl]['border_left']['w'];
+               $this->cMarginR =  $this->blk[$this->blklvl]['border_right']['w'];
+
+               // Added mPDF 3.0 Float DIV
+               $fpaddingR = 0;
+               $fpaddingL = 0;
+/*-- CSS-FLOAT --*/
+               if (count($this->floatDivs)) {
+                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
+                       if ($r_exists) { $fpaddingR = $r_width; }
+                       if ($l_exists) { $fpaddingL = $l_width; }
+               }
+/*-- END CSS-FLOAT --*/
+
+               $usey = $this->y + 0.002;
+               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
+                       $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
+               }
+/*-- CSS-IMAGE-FLOAT --*/
+               // If float exists at this level
+               if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
+               if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
+/*-- END CSS-IMAGE-FLOAT --*/
+       }       // *TABLES*
+
+               // Set Current lineheight (correction factor)
+               $lhfixed = false; 
+/*-- LISTS --*/
+               if ($is_list) {
+                       if (preg_match('/([0-9.,]+)mm/',$this->list_lineheight[$this->listlvl][$this->listOcc],$am)) { 
+                               $lhfixed = true; 
+                               $def_fontsize = $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listOcc][$this->listnum]['size'];
+                               $this->lineheight_correction = $am[1] / $def_fontsize ;
+                       }
+                       else { 
+                               $this->lineheight_correction = $this->list_lineheight[$this->listlvl][$this->listOcc]; 
+                       }
+               }
+               else
+/*-- END LISTS --*/
+/*-- TABLES --*/
+               if ($is_table) {
+                       if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight,$am)) { 
+                               $lhfixed = true; 
+                               $def_fontsize = $this->FontSize;                                // needs to be default font-size for block ****
+                               $this->lineheight_correction = $lineHeight / $def_fontsize ; 
+                       }
+                       else { 
+                               $this->lineheight_correction = $this->table_lineheight; 
+                       }
+               }
+               else
+/*-- END TABLES --*/
+               if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
+                       if (preg_match('/([0-9.,]+)mm/',$this->blk[$this->blklvl]['line_height'],$am)) { 
+                               $lhfixed = true; 
+                               $def_fontsize = $this->blk[$this->blklvl]['InlineProperties']['size'];  // needs to be default font-size for block ****
+                               $this->lineheight_correction = $am[1] / $def_fontsize ;
+                       }
+                       else { 
+                               $this->lineheight_correction = $this->blk[$this->blklvl]['line_height']; 
+                       }
+               } 
+               else {
+                       $this->lineheight_correction = $this->normalLineheight; 
+               }
+
+               //  correct lineheight to maximum fontsize
+               if ($lhfixed) { $maxlineHeight = $this->lineheight; }
+               else { $maxlineHeight = 0; }
+               $this->forceExactLineheight = true;
+               $maxfontsize = 0;
+               // While we're at it, check if contains cursive text
+               $checkCursive=false;
+               if ($this->biDirectional) {  $checkCursive=true; }      // *RTL*
+               foreach ( $content as $k => $chunk )
+               {
+                 $this->restoreFont( $font[ $k ],false );
+                 if (!isset($this->objectbuffer[$k])) { 
+                       // Soft Hyphens chr(173)
+                       if (!$this->usingCoreFont) {
+                             $content[$k] = $chunk = str_replace("\xc2\xad",'',$chunk ); 
+                               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {  $checkCursive=true; } // *INDIC*
+                       }
+                       else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
+                             $content[$k] = $chunk = str_replace(chr(173),'',$chunk );
+                       }
+                       // Special case of sub/sup carried over on its own to last line
+                       if (($this->SUB || $this->SUP) && count($content)==1) { $actfs = $this->FontSize*100/55; } // 55% is font change for sub/sup
+                       else { $actfs = $this->FontSize; }
+                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction ); }
+                       if ($lhfixed && ($actfs > $def_fontsize || ($actfs > ($lineHeight * $this->lineheight_correction) && $is_list))) { 
+                               $this->forceExactLineheight = false; 
+                       }
+                       $maxfontsize = max($maxfontsize,$actfs);
+                 }
+               }
+
+               if(isset($font[count($font)-1])) {
+                       $lastfontreqstyle = $font[count($font)-1]['ReqFontStyle'];
+                       $lastfontstyle = $font[count($font)-1]['style'];
+               }
+               else {
+                       $lastfontreqstyle=null;
+                       $lastfontstyle=null;
+               }
+               if ($blockdir == 'ltr' && strpos($lastfontreqstyle,"I") !== false && strpos($lastfontstyle,"I") === false) {    // Artificial italic
+                       $lastitalic = $this->FontSize*0.15*_MPDFK;
+               }
+               else { $lastitalic = 0; }
+
+
+/*-- LISTS --*/
+               if ($is_list && is_array($this->bulletarray) && count($this->bulletarray)) {
+                       $actfs = $this->bulletarray['fontsize'];
+                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction );  }
+                       if ($lhfixed && $actfs > $def_fontsize) { $this->forceExactLineheight = false; }
+                       $maxfontsize = max($maxfontsize,$actfs);
+               }
+/*-- END LISTS --*/
+
+               // when every text item checked i.e. $maxfontsize is set properly
+
+               $af = 0;        // Above font
+               $bf = 0;        // Below font
+               $mta = 0;       // Maximum top-aligned 
+               $mba = 0;       // Maximum bottom-aligned 
+
+               foreach ( $content as $k => $chunk )
+               {
+                 if (isset($this->objectbuffer[$k])) { 
+                       $oh = $this->objectbuffer[$k]['OUTER-HEIGHT'];
+                       $va = $this->objectbuffer[$k]['vertical-align']; // = $objattr['vertical-align'] = set as M,T,B,S
+                       if ($lhfixed && $oh > $def_fontsize) { $this->forceExactLineheight = false; }
+
+                       if ($va == 'BS') {      //  (BASELINE default)
+                               $af = max($af, ($oh - ($maxfontsize * (0.5 + $this->baselineC))));
+                       }
+                       else if ($va == 'M') { 
+                               $af = max($af, ($oh - $maxfontsize)/2);
+                               $bf = max($bf, ($oh - $maxfontsize)/2);
+                       }
+                       else if ($va == 'TT') { 
+                               $bf = max($bf, ($oh - $maxfontsize));
+                       }
+                       else if ($va == 'TB') { 
+                               $af = max($af, ($oh - $maxfontsize));
+                       }
+                       else if ($va == 'T') { 
+                               $mta = max($mta, $oh);
+                       }
+                       else if ($va == 'B') { 
+                               $mba = max($mba, $oh);
+                       }
+                 }
+               }
+               if ((!$lhfixed || !$this->forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
+                       $maxlineHeight = $maxfontsize + $af + $bf;
+               }
+               else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
+               if ($mta > $maxlineHeight) { 
+                       $bf += ($mta - $maxlineHeight);
+                       $maxlineHeight = $mta;
+               }
+               if ($mba > $maxlineHeight) { 
+                       $af += ($mba - $maxlineHeight);
+                       $maxlineHeight = $mba;
+               }
+
+               $lineHeight = $maxlineHeight;
+               // If NOT images, and maxfontsize NOT > lineHeight - this value determines text baseline positioning
+               if ($lhfixed && $af==0 && $bf==0 && $maxfontsize<=($def_fontsize * $this->lineheight_correction * 0.8 )) { 
+                       $this->linemaxfontsize = $def_fontsize; 
+               }
+               else { $this->linemaxfontsize = $maxfontsize; }
+
+               // Get PAGEBREAK TO TEST for height including the bottom border/padding
+               $check_h = max($this->divheight,$lineHeight);
+
+               // This fixes a proven bug...
+               if ($endofblock && $newblock && $blockstate==0 && !$content) {  $check_h = 0; }
+               // but ? needs to fix potentially more widespread...
+       //      if (!$content) {  $check_h = 0; }
+
+               if ($this->blklvl > 0 && !$is_table) { 
+                  if ($endofblock && $blockstate > 1) { 
+                       if ($this->blk[$this->blklvl]['page_break_after_avoid']) {  $check_h += $lineHeight; }
+                       $check_h += ($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']);
+                  }
+                  //   mPDF 5.4.03
+                  if (($newblock && ($blockstate==1 || $blockstate==3) && $lineCount == 0) || ($endofblock && $blockstate ==3 && $lineCount == 0)) { 
+                       $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']);
+                  }
+               }
+
+               // Force PAGE break if column height cannot take check-height
+               if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) { 
+                       $this->SetCol($this->NbCol-1);
+               }
+               //      mPDF 5.4.04
+               // Avoid just border/background-color moved on to next page
+               if ($endofblock && $blockstate > 1 && !$content) { $buff = $this->margBuffer; }
+               else { $buff = 0; }
+
+
+               // PAGEBREAK
+               // mPDF 5.4.04
+               if(!$is_table && ($this->y+$check_h) > ($this->PageBreakTrigger + $buff) and !$this->InFooter and $this->AcceptPageBreak()) {
+                       $bak_x=$this->x;//Current X position
+                       // WORD SPACING
+                       $ws=$this->ws;//Word Spacing
+                       $charspacing=$this->charspacing;//Character Spacing
+                       $this->ResetSpacing();
+
+                     $this->AddPage($this->CurOrientation);
+
+                     $this->x=$bak_x;
+                       // Added to correct for OddEven Margins
+                       $currentx += $this->MarginCorrection;
+                       $this->x += $this->MarginCorrection;
+
+                       // WORD SPACING
+                       $this->SetSpacing($charspacing,$ws);
+               }
+
+               if ($this->keep_block_together && !$is_table && $this->kt_p00 < $this->page && ($this->y+$check_h) > $this->kt_y00) {
+                       $this->printdivbuffer();
+                       $this->keep_block_together = 0;
+               }
+
+/*-- COLUMNS --*/
+               // COLS
+               // COLUMN CHANGE
+               if ($this->CurrCol != $oldcolumn) {
+                       $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+                       $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+                       $oldcolumn = $this->CurrCol;
+               }
+
+
+               if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }
+/*-- END COLUMNS --*/
+
+               // TOP MARGIN
+               if ($newblock && ($blockstate==1 || $blockstate==3) && ($this->blk[$this->blklvl]['margin_top']) && $lineCount == 0 && !$is_table && !$is_list) { 
+                       $this->DivLn($this->blk[$this->blklvl]['margin_top'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']); 
+                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+               }
+
+               if ($newblock && ($blockstate==1 || $blockstate==3) && $lineCount == 0 && !$is_table && !$is_list) { 
+                       $this->blk[$this->blklvl]['y0'] = $this->y;
+                       $this->blk[$this->blklvl]['startpage'] = $this->page;
+                       if ($this->blk[$this->blklvl]['float']) { $this->blk[$this->blklvl]['float_start_y'] = $this->y; } // mPDF 5.6.63
+                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+               }
+
+       // ADDED for Paragraph_indent
+       $WidthCorrection = 0;
+       if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align != 'C')) { 
+               $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+               $WidthCorrection = ($ti*_MPDFK); 
+       } 
+
+
+       // PADDING and BORDER spacing/fill
+       if (($newblock) && ($blockstate==1 || $blockstate==3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 0) && (!$is_table) && (!$is_list)) { 
+                       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
+                       $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'],-3,true,false,1); 
+                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+                       $this->x = $currentx;
+       }
+
+
+       // Added mPDF 3.0 Float DIV
+       $fpaddingR = 0;
+       $fpaddingL = 0;
+/*-- CSS-FLOAT --*/
+       if (count($this->floatDivs)) {
+               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
+               if ($r_exists) { $fpaddingR = $r_width; }
+               if ($l_exists) { $fpaddingL = $l_width; }
+       }
+/*-- END CSS-FLOAT --*/
+
+       $usey = $this->y + 0.002;
+       if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
+               $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
+       }
+/*-- CSS-IMAGE-FLOAT --*/
+       // If float exists at this level
+       if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
+       if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
+/*-- END CSS-IMAGE-FLOAT --*/
+
+       if ($content) {
+
+               // In FinishFlowing Block no lines are justified as it is always last line
+               // but if CJKorphan has allowed content width to go over max width, use J charspacing to compress line
+               // JUSTIFICATION J - NOT!
+               $nb_carac = 0;
+               $nb_spaces = 0;
+               $jcharspacing = 0;
+               $jws = 0;
+               $inclCursive=false;
+               $dottab = false; // mPDF 5.6.19
+               foreach ( $content as $k => $chunk ) {
+                       if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
+                               if ($this->usingCoreFont) {
+                                     $chunk = str_replace(chr(160),chr(32),$chunk );
+                               }
+                               else {
+                                     $chunk = str_replace(chr(194).chr(160),chr(32),$chunk ); 
+                               }
+                               $nb_carac += mb_strlen( $chunk, $this->mb_enc );  
+                               $nb_spaces += mb_substr_count( $chunk,' ', $this->mb_enc );  
+                               if ($checkCursive) {
+                                       if (preg_match("/([".$this->pregRTLchars."])/u", $chunk)) { $inclCursive = true; }      // *RTL*
+                                       if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $chunk)) { $inclCursive = true; } // *INDIC*
+                               }
+                       }
+                       else if ($this->objectbuffer[$k]['type']=='dottab') { $dottab = $this->objectbuffer[$k]['outdent']; } // mPDF 5.6.19
+               }
+               // if it's justified, we need to find the char/word spacing (or if orphans have allowed length of line to go over the maxwidth)
+               // If "orphans" in fact is just a final space - ignore this
+               // mPDF 5.6.40
+               $lastchar = mb_substr($content[(count($content)-1)],mb_strlen($content[(count($content)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
+               if (preg_match("/[".$this->CJKoverflow."]/u", $lastchar)) { $CJKoverflow = true; }
+               else {$CJKoverflow = false; } 
+               if ((((($contentWidth + $lastitalic) > $maxWidth) && ($content[count($content)-1] != ' ') )  ||
+                       (!$endofblock && $align=='J' && ($next=='image' || $next=='select' || $next=='input' || $next=='textarea' || ($next=='br' && $this->justifyB4br))))  && !($CJKoverflow && $this->allowCJKoverflow) ) {  // mPDF 5.6.40
+                 // WORD SPACING
+                       list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$contentWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
+               }
+/*-- CJK-FONTS --*/
+               // mPDF 5.6.40
+               else if ($this->checkCJK && $align=='J' && $CJKoverflow && $this->allowCJKoverflow && $this->CJKforceend) {
+               // force-end overhang
+                       $hanger = mb_substr($content[count($content)-1],mb_strlen($content[count($content)-1],$this->mb_enc)-1,1,$this->mb_enc );
+                       if (preg_match("/[".$this->CJKoverflow."]/u", $hanger)) {
+                               $content[count($content)-1] = mb_substr($content[count($content)-1],0,mb_strlen($content[count($content)-1],$this->mb_enc)-1,$this->mb_enc );
+                               $this->restoreFont( $font[ count($content)-1 ],false );
+                               $contentWidth -= $this->GetStringWidth($hanger) * _MPDFK;
+                               $nb_carac -= 1;
+                               list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$contentWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
+                       }
+               }
+/*-- END CJK-FONTS --*/
+
+               // Check if will fit at word/char spacing of previous line - if so continue it
+               // but only allow a maximum of $this->jSmaxWordLast and $this->jSmaxCharLast
+               else if ($contentWidth < ($maxWidth - $lastitalic-$WidthCorrection - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK))) && !$this->fixedlSpacing) {
+                       if ($this->ws > $this->jSmaxWordLast) {
+                               $jws = $this->jSmaxWordLast;
+                       }
+                       if ($this->charspacing > $this->jSmaxCharLast) {
+                               $jcharspacing = $this->jSmaxCharLast;
+                       }
+                       $check = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) ) - ( $jcharspacing * $nb_carac) - ( $jws * $nb_spaces);
+                       if ($check <= 0) {
+                               $jcharspacing = 0;
+                               $jws = 0;
+                       }
+               }
+
+               $empty = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
+
+               $empty -= ($jcharspacing * $nb_carac);
+               $empty -= ($jws * $nb_spaces);
+
+               $empty /= _MPDFK;
+
+               if (!$is_table) { 
+                       $this->maxPosR = max($this->maxPosR , ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin'] - $empty)); 
+                       $this->maxPosL = min($this->maxPosL , ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $empty)); 
+               }
+
+               $arraysize = count($content);
+
+               $margins = ($this->cMarginL+$this->cMarginR) + ($ipaddingL+$ipaddingR + $fpaddingR + $fpaddingR );
+
+               if (!$is_table) { $this->DivLn($lineHeight,$this->blklvl,false); }      // false -> don't advance y
+
+               // DIRECTIONALITY RTL
+               $all_rtl = false;
+               $contains_rtl = false;
+/*-- RTL --*/
+               if ($blockdir == 'rtl' || $this->biDirectional)  {
+                       $all_rtl = true;
+                       foreach ( $content as $k => $chunk ) {
+                               $reversed = $this->magic_reverse_dir($chunk, false, $blockdir);
+                               if ($reversed > 0) { $contains_rtl = true; }
+                               if ($reversed < 2) { $all_rtl = false; }
+                               $content[$k] = $chunk;
+                       }
+                       if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) { 
+                               $content = array_reverse($content,false); 
+                               $contentB = array_reverse($contentB,false);
+                       }
+               }
+/*-- END RTL --*/
+
+               $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL;
+               if ($dottab !== false && $blockdir=='rtl') { $this->x -= $dottab; } // mPDF 5.6.19
+               else if ($align == 'R') { $this->x += $empty; }
+               else if ($align == 'J' && $blockdir == 'rtl') { $this->x += $empty; }
+               else if ($align == 'C') { $this->x += ($empty / 2); }
+
+               // Paragraph INDENT
+               $WidthCorrection = 0; 
+               if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align !='C')) { 
+                       $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+                       $this->x += $ti; 
+               }
+
+
+          foreach ( $content as $k => $chunk )
+          {
+
+               // FOR IMAGES
+               if ((($blockdir == 'rtl') && ($contains_rtl )) || $all_rtl ) { $dirk = $arraysize-1 - $k; } else { $dirk = $k; }
+
+               $va = 'M';      // default for text
+               if (isset($this->objectbuffer[$dirk]) && $this->objectbuffer[$dirk]) {
+                       $xadj = $this->x - $this->objectbuffer[$dirk]['OUTER-X']; 
+                       $this->objectbuffer[$dirk]['OUTER-X'] += $xadj;
+                       $this->objectbuffer[$dirk]['BORDER-X'] += $xadj;
+                       $this->objectbuffer[$dirk]['INNER-X'] += $xadj;
+                       $va = $this->objectbuffer[$dirk]['vertical-align'];
+                       $yadj = $this->y - $this->objectbuffer[$dirk]['OUTER-Y'];
+                       if ($va == 'BS') { 
+                               $yadj += $af + ($this->linemaxfontsize * (0.5 + $this->baselineC)) - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
+                       }
+                       else if ($va == 'M' || $va == '') { 
+                               $yadj += $af + ($this->linemaxfontsize /2) - ($this->objectbuffer[$dirk]['OUTER-HEIGHT']/2);
+                       }
+                       else if ($va == 'TB') { 
+                               $yadj += $af + $this->linemaxfontsize - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
+                       }
+                       else if ($va == 'TT') { 
+                               $yadj += $af;
+                       }
+                       else if ($va == 'B') { 
+                               $yadj += $af + $this->linemaxfontsize + $bf - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
+                       }
+                       else if ($va == 'T') { 
+                               $yadj += 0;
+                       }
+                       $this->objectbuffer[$dirk]['OUTER-Y'] += $yadj;
+                       $this->objectbuffer[$dirk]['BORDER-Y'] += $yadj;
+                       $this->objectbuffer[$dirk]['INNER-Y'] += $yadj;
+               }
+
+
+                       // DIRECTIONALITY RTL
+                       if ((($blockdir == 'rtl') && ($contains_rtl )) || $all_rtl ) { $this->restoreFont( $font[ $arraysize-1 - $k ] ); }
+                       else { $this->restoreFont( $font[ $k ] ); }
+
+                       // mPDF 5.6.13 Decimal alignment - set in _tableWrite
+                       if ($is_table && substr($align,0,1)=='D' && $k==0 ) {
+                               $dp = $this->decimal_align[substr($align,0,2)];
+                               $s = preg_split('/'.preg_quote($dp,'/').'/', $content[0], 2);   // ? needs to be /u if not core
+                               $s0 = $this->GetStringWidth($s[0], false);
+                               $this->x += ($this->decimal_offset - $s0);
+                       }
+
+                       $this->SetSpacing(($this->fixedlSpacing*_MPDFK)+$jcharspacing,($this->fixedlSpacing+$this->minwSpacing)*_MPDFK+$jws);
+                       $this->fixedlSpacing = false;
+                       $this->minwSpacing = 0;
+
+                       // mPDF 5.6.26
+                       $save_vis = $this->visibility;
+                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) {
+                               $this->SetVisibility($this->textparam['visibility']);
+                       }
+
+                       // *********** SPAN BACKGROUND COLOR ***************** //
+                       if (isset($this->spanbgcolor) && $this->spanbgcolor) { 
+                               $cor = $this->spanbgcolorarray;
+                               $this->SetFColor($cor);
+                               $save_fill = $fill; $spanfill = 1; $fill = 1;
+                       }
+                       if (!empty($this->spanborddet)) { 
+                               if (strpos($contentB[$k],'L')!==false && isset($this->spanborddet['L'])) $this->x += $this->spanborddet['L']['w'];
+                               if (strpos($contentB[$k],'L')===false) $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0; 
+                               if (strpos($contentB[$k],'R')===false) $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0; 
+                       }
+                       // WORD SPACING
+                     $stringWidth = $this->GetStringWidth($chunk ) + ( $this->charspacing * mb_strlen($chunk,$this->mb_enc ) / _MPDFK )  
+                               + ( $this->ws * mb_substr_count($chunk,' ',$this->mb_enc ) / _MPDFK );
+                       if (isset($this->objectbuffer[$dirk])) { 
+                               if ($this->objectbuffer[$dirk]['type']=='dottab') { 
+                                       $this->objectbuffer[$dirk]['OUTER-WIDTH'] +=$empty; 
+                                       $this->objectbuffer[$dirk]['OUTER-WIDTH'] +=$this->objectbuffer[$dirk]['outdent']; // mPDF 5.6.19
+                               }
+                               $stringWidth = $this->objectbuffer[$dirk]['OUTER-WIDTH'];
+                       }
+
+                       if ($stringWidth==0) { $stringWidth = 0.000001; }
+                       if ($k == $arraysize-1) {
+                               // mPDF 5.6.40
+                               if ($this->checkCJK && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {
+                                 // force-end overhang
+                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true ); 
+                                       $this->Cell( $this->GetStringWidth($hanger), $lineHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
+                               }
+                               else {
+                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
+                               }
+                       }
+                       else $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0,0,'M', $fill, $af, $bf, true );//first or middle part
+
+
+                       if (!empty($this->spanborddet)) { 
+                               if (strpos($contentB[$k],'R')!==false && $k != $arraysize-1)  $this->x += $this->spanborddet['R']['w'];
+                       }
+                       // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** //
+                       if (isset($spanfill) && $spanfill) { 
+                               $fill = $save_fill; $spanfill = 0; 
+                               if ($fill) { $this->SetFColor($bcor); }
+                       }
+                       // mPDF 5.6.26
+                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) {
+                               $this->SetVisibility($save_vis);
+                       }
+
+          }
+
+       $this->printobjectbuffer($is_table, $blockdir);
+
+       $this->objectbuffer = array();
+
+       $this->ResetSpacing();
+
+/*-- LISTS --*/
+       // LIST BULLETS/NUMBERS
+       if ($is_list && is_array($this->bulletarray) && ($lineCount == 0) ) {
+         
+         $savedFont = $this->saveFont();
+
+         $bull = $this->bulletarray;
+         if (isset($bull['level']) && isset($bull['occur']) && isset($this->InlineProperties['LIST'][$bull['level']][$bull['occur']])) { 
+               $this->restoreInlineProperties($this->InlineProperties['LIST'][$bull['level']][$bull['occur']]); 
+         }
+         if (isset($bull['level']) && isset($bull['occur']) && isset($bull['num']) && isset($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) && $this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) { $this->restoreInlineProperties($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]); }
+         if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
+               $this->bullet = true;
+               $this->SetFont('czapfdingbats','',$this->FontSizePt/2.5);
+         }
+         else { $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); }      // force output
+       //Output bullet
+         $this->x = $currentx;
+         if (isset($bull['x'])) { $this->x += $bull['x']; }
+         $this->y -= $lineHeight;
+         if (isset($bull['col']) && $bull['col']) { $this->SetTColor($bull['col']); }  // mPDF 5.6.67
+
+        if (isset($bull['txt'])) { $this->Cell($bull['w'], $lineHeight,$bull['txt'],'','',$bull['align'],0,'',0,-$this->cMarginL, -$this->cMarginR ); }
+         if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
+               $this->bullet = false;
+         }
+         $this->x = $currentx; // Reset
+         $this->y += $lineHeight;
+
+         if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+
+          $this->restoreFont( $savedFont );
+         // $font = array( $savedFont );
+
+         $this->bulletarray = array(); // prevents repeat of bullet/number if <li>....<br />.....</li>
+       }
+/*-- END LISTS --*/
+
+
+       }       // END IF CONTENT
+
+/*-- CSS-IMAGE-FLOAT --*/
+       // Update values if set to skipline
+       if ($this->floatmargins) { $this->_advanceFloatMargins(); }
+
+
+       if ($endofblock && $blockstate>1) { 
+               // If float exists at this level
+               if (isset($this->floatmargins['R']['y1'])) { $fry1 = $this->floatmargins['R']['y1']; }
+               else { $fry1 = 0; }
+               if (isset($this->floatmargins['L']['y1'])) { $fly1 = $this->floatmargins['L']['y1']; }
+               else { $fly1 = 0; }
+               if ($this->y < $fry1 || $this->y < $fly1) { 
+                       $drop = max($fry1,$fly1) - $this->y;
+                       $this->DivLn($drop); 
+                       $this->x = $currentx;
+               }
+       }
+/*-- END CSS-IMAGE-FLOAT --*/
+
+
+       // PADDING and BORDER spacing/fill
+       if ($endofblock && ($blockstate > 1) && ($this->blk[$this->blklvl]['padding_bottom'] || $this->blk[$this->blklvl]['border_bottom'] || $this->blk[$this->blklvl]['css_set_height']) && (!$is_table) && (!$is_list)) { 
+                       // If CSS height set, extend bottom - if on same page as block started, and CSS HEIGHT > actual height, 
+                       //      and does not force pagebreak
+                       $extra = 0;
+                       if ($this->blk[$this->blklvl]['css_set_height'] && $this->blk[$this->blklvl]['startpage']==$this->page) {
+                               // predicted height
+                               $h1 = ($this->y-$this->blk[$this->blklvl]['y0']) + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'];
+                               if ($h1 < ($this->blk[$this->blklvl]['css_set_height']+$this->blk[$this->blklvl]['padding_bottom']+$this->blk[$this->blklvl]['padding_top'])) { $extra = ($this->blk[$this->blklvl]['css_set_height']+$this->blk[$this->blklvl]['padding_bottom']+$this->blk[$this->blklvl]['padding_top']) - $h1; }
+                               if($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra > $this->PageBreakTrigger) {
+                                       $extra = $this->PageBreakTrigger - ($this->y + $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w']); 
+                               }
+                       }
+
+                       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
+                       $this->DivLn($this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $extra,-3,true,false,2); 
+                       $this->x = $currentx;
+
+                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+
+       }
+
+       // SET Bottom y1 of block (used for painting borders)
+       if (($endofblock) && ($blockstate > 1) && (!$is_table) && (!$is_list)) { 
+               $this->blk[$this->blklvl]['y1'] = $this->y;
+       }
+
+       // BOTTOM MARGIN
+       if (($endofblock) && ($blockstate > 1) && ($this->blk[$this->blklvl]['margin_bottom']) && (!$is_table) && (!$is_list)) { 
+               if($this->y+$this->blk[$this->blklvl]['margin_bottom'] < $this->PageBreakTrigger and !$this->InFooter) {
+                 $this->DivLn($this->blk[$this->blklvl]['margin_bottom'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']); 
+                 if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }    // *COLUMNS*
+               }
+       }
+
+       // Reset lineheight
+       $lineHeight = $this->divheight;
+}
+
+
+
+
+
+function printobjectbuffer($is_table=false, $blockdir=false) {
+               if (!$blockdir) { $blockdir = $this->directionality; }
+               if ($is_table && $this->shrin_k > 1) { $k = $this->shrin_k; } 
+               else { $k = 1; }
+               $save_y = $this->y;
+               $save_x = $this->x;
+               $save_currentfontfamily = $this->FontFamily;
+               $save_currentfontsize = $this->FontSizePt;
+               $save_currentfontstyle = $this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
+               if ($blockdir == 'rtl') { $rtlalign = 'R'; } else { $rtlalign = 'L'; }
+               foreach ($this->objectbuffer AS $ib => $objattr) { 
+                  if ($objattr['type'] == 'bookmark' || $objattr['type'] == 'indexentry' || $objattr['type'] == 'toc') {
+                       $x = $objattr['OUTER-X']; 
+                       $y = $objattr['OUTER-Y'];
+                       $this->y = $y - $this->FontSize/2;
+                       $this->x = $x;
+                       if ($objattr['type'] == 'bookmark' ) { $this->Bookmark($objattr['CONTENT'],$objattr['bklevel'] ,$y - $this->FontSize); }        // *BOOKMARKS*
+                       if ($objattr['type'] == 'indexentry') { $this->IndexEntry($objattr['CONTENT']); }       // *INDEX*
+                       if ($objattr['type'] == 'toc') { $this->TOC_Entry($objattr['CONTENT'], $objattr['toclevel'], $objattr['toc_id']); }     // *TOC*
+                  }
+/*-- ANNOTATIONS --*/
+                  else if ($objattr['type'] == 'annot') {
+                       if ($objattr['POS-X']) { $x = $objattr['POS-X']; }
+                       else if ($this->annotMargin<>0) { $x = -$objattr['OUTER-X']; }
+                       else { $x = $objattr['OUTER-X']; }
+                       if ($objattr['POS-Y']) { $y = $objattr['POS-Y']; }
+                       else { $y = $objattr['OUTER-Y'] - $this->FontSize/2; }
+                       // Create a dummy entry in the _out/columnBuffer with position sensitive data,
+                       // linking $y-1 in the Columnbuffer with entry in $this->columnAnnots
+                       // and when columns are split in length will not break annotation from current line
+                       $this->y = $y-1;
+                       $this->x = $x-1;
+                       $this->Line($x-1,$y-1,$x-1,$y-1);
+                       $this->Annotation($objattr['CONTENT'], $x , $y , $objattr['ICON'], $objattr['AUTHOR'], $objattr['SUBJECT'], $objattr['OPACITY'], $objattr['COLOR'], $objattr['POPUP'], $objattr['FILE']);
+                  }
+/*-- END ANNOTATIONS --*/
+                  else { 
+                       $y = $objattr['OUTER-Y'];
+                       $x = $objattr['OUTER-X'];
+                       $w = $objattr['OUTER-WIDTH'];
+                       $h = $objattr['OUTER-HEIGHT'];
+                       if (isset($objattr['text'])) { $texto = $objattr['text']; }
+                       $this->y = $y;
+                       $this->x = $x;
+                       if (isset($objattr['fontfamily'])) { $this->SetFont($objattr['fontfamily'],'',$objattr['fontsize'] ); }
+                  }
+
+               // HR
+                  if ($objattr['type'] == 'hr') {
+                       $this->SetDColor($objattr['color']);
+                       switch($objattr['align']) {
+                   case 'C':
+                       $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH'];
+                       $empty /= 2;
+                       $x += $empty;
+                                 break;
+                   case 'R':
+                       $empty = $objattr['OUTER-WIDTH'] - $objattr['INNER-WIDTH'];
+                       $x += $empty;
+                       break;
+                       }
+               $oldlinewidth = $this->LineWidth;
+                       $this->SetLineWidth($objattr['linewidth']/$k );
+                       $this->y += ($objattr['linewidth']/2) + $objattr['margin_top']/$k;
+                       $this->Line($x,$this->y,$x+$objattr['INNER-WIDTH'],$this->y);
+                       $this->SetLineWidth($oldlinewidth);
+                       $this->SetDColor($this->ConvertColor(0));
+                  }
+               // IMAGE
+                  if ($objattr['type'] == 'image') {
+                       // mPDF 5.6.01  - LAYERS
+                       if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->currentlayer==0) {
+                               $this->BeginLayer($objattr['z-index']);
+                       }
+                       if(isset($objattr['visibility']) && $objattr['visibility']!='visible' && $objattr['visibility']) {
+                               $this->SetVisibility($objattr['visibility']);
+                       }
+                       if (isset($objattr['opacity'])) { $this->SetAlpha($objattr['opacity']); }
+                       $rotate = 0;
+                       $obiw = $objattr['INNER-WIDTH'];
+                       $obih = $objattr['INNER-HEIGHT'];
+                       $sx = $objattr['INNER-WIDTH']*_MPDFK / $objattr['orig_w'];
+                       $sy = abs($objattr['INNER-HEIGHT'])*_MPDFK / abs($objattr['orig_h']);
+                       $sx = ($objattr['INNER-WIDTH']*_MPDFK / $objattr['orig_w']);
+                       $sy = ($objattr['INNER-HEIGHT']*_MPDFK / $objattr['orig_h']);
+
+                       if (isset($objattr['ROTATE'])) { $rotate = $objattr['ROTATE']; }
+                       if ($rotate==90) { 
+                               // Clockwise
+                               $obiw = $objattr['INNER-HEIGHT'];
+                               $obih = $objattr['INNER-WIDTH'];
+                               $tr = $this->transformTranslate(0, -$objattr['INNER-WIDTH'], true) ;
+                               $tr .= ' '. $this->transformRotate(90, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-WIDTH'] ),true) ;
+                               $sx = $obiw*_MPDFK / $objattr['orig_h'];
+                               $sy = $obih*_MPDFK / $objattr['orig_w'];
+                       }
+                       else if ($rotate==-90 || $rotate==270) { 
+                               // AntiClockwise
+                               $obiw = $objattr['INNER-HEIGHT'];
+                               $obih = $objattr['INNER-WIDTH'];
+                               $tr = $this->transformTranslate($objattr['INNER-WIDTH'], ($objattr['INNER-HEIGHT']-$objattr['INNER-WIDTH']), true) ;
+                               $tr .= ' '. $this->transformRotate(-90, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-WIDTH'] ),true) ;
+                               $sx = $obiw*_MPDFK / $objattr['orig_h'];
+                               $sy = $obih*_MPDFK / $objattr['orig_w'];
+                       }
+                       else if ($rotate==180) { 
+                               // Mirror
+                               $tr = $this->transformTranslate($objattr['INNER-WIDTH'], -$objattr['INNER-HEIGHT'], true) ;
+                               $tr .= ' '. $this->transformRotate(180, $objattr['INNER-X'],($objattr['INNER-Y'] +$objattr['INNER-HEIGHT'] ),true) ;
+                       }
+                       else { $tr = ''; }
+                       $tr = trim($tr);
+                       if ($tr) { $tr .= ' '; }
+                       $gradmask = '';
+
+
+/*-- BACKGROUNDS --*/
+                       if (isset($objattr['GRADIENT-MASK'])) { 
+                               $g = $this->grad->parseMozGradient( $objattr['GRADIENT-MASK'] );
+                               if ($g) {
+                                       $dummy = $this->grad->Gradient($objattr['INNER-X'], $objattr['INNER-Y'], $obiw, $obih, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true, true);
+                                       $gradmask = '/TGS'.count($this->gradients).' gs ';
+                                       // $this->_out("q ".$tr.$this->grad->Gradient($objattr['INNER-X'], $objattr['INNER-Y'], $obiw, $obih, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend'], true)." Q");
+                               }
+                       }
+/*-- END BACKGROUNDS --*/
+/*-- IMAGES-WMF --*/
+                       if (isset($objattr['itype']) && $objattr['itype']=='wmf') { 
+                               $outstring = sprintf('q '.$tr.'%.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, -$sy, $objattr['INNER-X']*_MPDFK-$sx*$objattr['wmf_x'], (($this->h-$objattr['INNER-Y'])*_MPDFK)+$sy*$objattr['wmf_y'], $objattr['ID']);
+                       }
+                       else  
+/*-- END IMAGES-WMF --*/
+                       if (isset($objattr['itype']) && $objattr['itype']=='svg') { 
+                               $outstring = sprintf('q '.$tr.'%.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, -$sy, $objattr['INNER-X']*_MPDFK-$sx*$objattr['wmf_x'], (($this->h-$objattr['INNER-Y'])*_MPDFK)+$sy*$objattr['wmf_y'], $objattr['ID']);
+                       }
+                       else { 
+                               $outstring = sprintf("q ".$tr."%.3F 0 0 %.3F %.3F %.3F cm ".$gradmask."/I%d Do Q",$obiw*_MPDFK, $obih*_MPDFK, $objattr['INNER-X'] *_MPDFK, ($this->h-($objattr['INNER-Y'] +$obih ))*_MPDFK,$objattr['ID'] );
+                       }
+                       $this->_out($outstring);
+                       // LINK
+                       if (isset($objattr['link'])) $this->Link($objattr['INNER-X'],$objattr['INNER-Y'],$objattr['INNER-WIDTH'],$objattr['INNER-HEIGHT'],$objattr['link']);
+                       if (isset($objattr['opacity'])) { $this->SetAlpha(1); }
+                       if ((isset($objattr['border_top']) && $objattr['border_top']>0) || (isset($objattr['border_left']) && $objattr['border_left']>0) || (isset($objattr['border_right']) && $objattr['border_right']>0) || (isset($objattr['border_bottom']) && $objattr['border_bottom']>0)) { $this->PaintImgBorder($objattr,$is_table); }
+                       if(isset($objattr['visibility']) && $objattr['visibility']!='visible' && $objattr['visibility']) {
+                               $this->SetVisibility('visible');
+                       }
+                       // mPDF 5.6.01  - LAYERS
+                       if (isset($objattr['z-index']) && $objattr['z-index'] > 0 && $this->currentlayer==0) {
+                               $this->EndLayer();
+                       }
+
+                  }
+
+/*-- BARCODES --*/
+               // BARCODE
+                  if ($objattr['type'] == 'barcode') {
+                       $bgcol = $this->ConvertColor(255);
+                       if (isset($objattr['bgcolor']) && $objattr['bgcolor']) {
+                               $bgcol = $objattr['bgcolor'];
+                       }
+                       $col = $this->ConvertColor(0);
+                       if (isset($objattr['color']) && $objattr['color']) {
+                               $col = $objattr['color'];
+                       }
+                       $this->SetFColor($bgcol);
+                       $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F');
+                       $this->SetFColor($this->ConvertColor(255));
+                       if (isset($objattr['BORDER-WIDTH'])) { $this->PaintImgBorder($objattr,$is_table); }
+                       if ($objattr['btype'] == 'EAN13' || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN' || $objattr['btype'] == 'UPCA' || $objattr['btype'] == 'UPCE' || $objattr['btype'] == 'EAN8') {
+                               $this->WriteBarcode($objattr['code'], $objattr['showtext'], $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize'], 0, 0, 0, 0, 0, $objattr['bheight'], $bgcol, $col, $objattr['btype'], $objattr['bsupp'], $objattr['bsupp_code'], $k);
+                       }
+                       // QR-code
+                       else if ($objattr['btype']=='QR') {
+                               if (!class_exists('QRcode', false)) { 
+                                       include(_MPDF_PATH.'qrcode/qrcode.class.php'); 
+                               }
+                               $this->qrcode = new QRcode($objattr['code'], $objattr['errorlevel']);
+                               $this->qrcode->displayFPDF($this, $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize']*25, array(255,255,255), array(0,0,0));
+                       }
+                       else {
+                               $this->WriteBarcode2($objattr['code'], $objattr['INNER-X'], $objattr['INNER-Y'], $objattr['bsize'], $objattr['bheight'], $bgcol, $col, $objattr['btype'], $objattr['pr_ratio'], $k);
+                       }
+                  }
+/*-- END BARCODES --*/
+
+               // TEXT CIRCLE
+                  if ($objattr['type'] == 'textcircle') {
+                       $bgcol = '';    // mPDF 5.5.14
+                       if (isset($objattr['bgcolor']) && $objattr['bgcolor']) {
+                               $bgcol = $objattr['bgcolor'];
+                       }
+                       $col = $this->ConvertColor(0);
+                       if (isset($objattr['color']) && $objattr['color']) {
+                               $col = $objattr['color'];
+                       }
+                       $this->SetTColor($col);
+                       $this->SetFColor($bgcol);
+                       if ($bgcol) $this->Rect($objattr['BORDER-X'], $objattr['BORDER-Y'], $objattr['BORDER-WIDTH'], $objattr['BORDER-HEIGHT'], 'F');  // mPDF 5.5.14
+                       $this->SetFColor($this->ConvertColor(255));
+                       if (isset($objattr['BORDER-WIDTH'])) { $this->PaintImgBorder($objattr,$is_table); }
+                       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
+                       if (empty($this->directw)) { $this->directw = new directw($this); }
+                       $save_lmfs = $this->linemaxfontsize;
+                       $this->linemaxfontsize = 0;
+                       if (isset($objattr['top-text'])) {
+                               $this->directw->CircularText($objattr['INNER-X']+$objattr['INNER-WIDTH']/2, $objattr['INNER-Y']+$objattr['INNER-HEIGHT']/2, $objattr['r']/$k, $objattr['top-text'], 'top', $objattr['fontfamily'], $objattr['fontsize']/$k, $objattr['fontstyle'], $objattr['space-width'], $objattr['char-width'],  $objattr['divider']);              // mPDF 5.5.23
+                       }
+                       if (isset($objattr['bottom-text'])) {
+                               $this->directw->CircularText($objattr['INNER-X']+$objattr['INNER-WIDTH']/2, $objattr['INNER-Y']+$objattr['INNER-HEIGHT']/2, $objattr['r']/$k, $objattr['bottom-text'], 'bottom', $objattr['fontfamily'], $objattr['fontsize']/$k, $objattr['fontstyle'], $objattr['space-width'], $objattr['char-width'],  $objattr['divider']);                // mPDF 5.5.23
+                       }
+                       $this->linemaxfontsize = $save_lmfs;
+                  }
+
+                  $this->ResetSpacing();
+
+               // DOT-TAB
+                  if ($objattr['type'] == 'dottab') {
+                               // mPDF 5.6.19
+                               if (isset($objattr['fontfamily'])) { $this->SetFont($objattr['fontfamily'],'',$objattr['fontsize'] ); }
+                               $sp = $this->GetStringWidth(' ');
+                               $nb=floor(($w-2*$sp)/$this->GetStringWidth('.'));
+                               if ($nb>0) { $dots=' '.str_repeat('.',$nb).' '; }
+                               else { $dots=' '; }
+                               $col = $this->ConvertColor(0);
+                               if (isset($objattr['colorarray']) && ($objattr['colorarray'])) {        // mPDF 5.6.19
+                                       $col = $objattr['colorarray'];
+                               }
+                               $this->SetTColor($col);
+                               $save_dh = $this->divheight;    // mPDF 5.6.19
+                               $save_sbd = $this->spanborddet;
+                               $save_u = $this->U;
+                               $save_s = $this->strike;
+                               $this->spanborddet = '';
+                               $this->divheight = 0;   // mPDF 5.6.19
+                               $this->U = false;
+                               $this->strike = false;
+                               $this->Cell($w,$h,$dots,0,0,'C');
+                               $this->spanborddet = $save_sbd;
+                               $this->U = $save_u;
+                               $this->strike = $save_s;
+                               $this->divheight = $save_dh;    // mPDF 5.6.19
+                               // mPDF 5.0
+                               $this->SetTColor($this->ConvertColor(0));
+                  }
+
+/*-- FORMS --*/
+               // TEXT/PASSWORD INPUT
+                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD')) {
+                       $this->form->print_ob_text($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
+                  }
+
+               // TEXTAREA
+                  if ($objattr['type'] == 'textarea') {
+                       $this->form->print_ob_textarea($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
+                  }
+
+               // SELECT
+                  if ($objattr['type'] == 'select') {
+                       $this->form->print_ob_select($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
+                  }
+
+
+               // INPUT/BUTTON as IMAGE
+                  if ($objattr['type'] == 'input' && $objattr['subtype'] == 'IMAGE') {
+                       $this->form->print_ob_imageinput($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
+                  }
+
+               // BUTTON
+                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'SUBMIT' || $objattr['subtype'] == 'RESET' || $objattr['subtype'] == 'BUTTON')) {
+                       $this->form->print_ob_button($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir);
+                  }
+
+               // CHECKBOX
+                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'CHECKBOX')) {
+                       $this->form->print_ob_checkbox($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y);
+                  }
+               // RADIO
+                  if ($objattr['type'] == 'input' && ($objattr['subtype'] == 'RADIO')) {
+                       $this->form->print_ob_radio($objattr,$w,$h,$texto,$rtlalign,$k,$blockdir,$x,$y);
+                  }
+/*-- END FORMS --*/
+               }
+               $this->SetFont($save_currentfontfamily,$save_currentfontstyle,$save_currentfontsize);
+               $this->y = $save_y;
+               $this->x = $save_x;
+               unset($content);
+}
+
+
+function WriteFlowingBlock( $s)
+{
+       $currentx = $this->x; 
+       $is_table = $this->flowingBlockAttr[ 'is_table' ];
+       $is_list = $this->flowingBlockAttr[ 'is_list' ];
+       // width of all the content so far in points
+       $contentWidth =& $this->flowingBlockAttr[ 'contentWidth' ];
+       // cell width in points
+       $maxWidth =& $this->flowingBlockAttr[ 'width' ];
+       $lineCount =& $this->flowingBlockAttr[ 'lineCount' ];
+       // line height in user units
+       $lineHeight =& $this->flowingBlockAttr[ 'height' ];
+       $align =& $this->flowingBlockAttr[ 'align' ];
+       $content =& $this->flowingBlockAttr[ 'content' ];
+       $contentB =& $this->flowingBlockAttr[ 'contentB' ];
+       $font =& $this->flowingBlockAttr[ 'font' ];
+       $valign =& $this->flowingBlockAttr[ 'valign' ];
+       $blockstate = $this->flowingBlockAttr[ 'blockstate' ];
+
+       $newblock = $this->flowingBlockAttr[ 'newblock' ];
+       $blockdir = $this->flowingBlockAttr['blockdir'];
+       // *********** BLOCK BACKGROUND COLOR ***************** //
+       if ($this->blk[$this->blklvl]['bgcolor'] && !$is_table) {
+               $fill = 0;
+       }
+       else {
+               $this->SetFColor($this->ConvertColor(255));
+               $fill = 0;
+       }
+       $font[] = $this->saveFont();
+       $content[] = '';
+       $contentB[] = '';
+       $currContent =& $content[ count( $content ) - 1 ];
+       // where the line should be cutoff if it is to be justified
+       $cutoffWidth = $contentWidth;
+
+       $CJKoverflow = false;
+       $hanger = '';   // mPDF 5.6.40
+
+       // COLS
+       $oldcolumn = $this->CurrCol;
+
+       if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }        // *COLUMNS*
+
+/*-- TABLES --*/
+   if ($is_table) { 
+       $ipaddingL = 0; 
+       $ipaddingR = 0; 
+       $paddingL = 0; 
+       $paddingR = 0; 
+       $cpaddingadjustL = 0;
+       $cpaddingadjustR = 0;
+       // Added mPDF 3.0
+       $fpaddingR = 0;
+       $fpaddingL = 0;
+  } 
+   else { 
+/*-- END TABLES --*/
+               $ipaddingL = $this->blk[$this->blklvl]['padding_left']; 
+               $ipaddingR = $this->blk[$this->blklvl]['padding_right']; 
+               $paddingL = ($ipaddingL * _MPDFK); 
+               $paddingR = ($ipaddingR * _MPDFK); 
+               $this->cMarginL =  $this->blk[$this->blklvl]['border_left']['w'];
+               $cpaddingadjustL = -$this->cMarginL;
+               $this->cMarginR =  $this->blk[$this->blklvl]['border_right']['w'];
+               $cpaddingadjustR = -$this->cMarginR;
+               // Added mPDF 3.0 Float DIV
+               $fpaddingR = 0;
+               $fpaddingL = 0;
+/*-- CSS-FLOAT --*/
+               if (count($this->floatDivs)) {
+                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
+                       if ($r_exists) { $fpaddingR = $r_width; }
+                       if ($l_exists) { $fpaddingL = $l_width; }
+               }
+/*-- END CSS-FLOAT --*/
+
+               $usey = $this->y + 0.002;
+               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
+                       $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
+               }
+/*-- CSS-IMAGE-FLOAT --*/
+               // If float exists at this level
+               if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
+               if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
+/*-- END CSS-IMAGE-FLOAT --*/
+   }   // *TABLES*
+
+     //OBJECTS - IMAGES & FORM Elements (NB has already skipped line/page if required - in printbuffer)
+      if (substr($s,0,3) == "\xbb\xa4\xac") { //identifier has been identified!
+               $objattr = $this->_getObjAttr($s);
+               $h_corr = 0; 
+               if ($is_table) {        // *TABLES*
+                       $maximumW = ($maxWidth/_MPDFK) - ($this->cellPaddingL + $this->cMarginL + $this->cellPaddingR + $this->cMarginR);       // *TABLES*
+               }       // *TABLES*
+               else {  // *TABLES*
+                       if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) && (!$is_table)) { $h_corr = $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w']; }
+                       $maximumW = ($maxWidth/_MPDFK) - ($this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_right'] + $this->blk[$this->blklvl]['border_right']['w'] + $fpaddingL + $fpaddingR ); 
+               }       // *TABLES*
+               $objattr = $this->inlineObject($objattr['type'],$this->lMargin + $fpaddingL + ($contentWidth/_MPDFK),($this->y + $h_corr), $objattr, $this->lMargin,($contentWidth/_MPDFK),$maximumW,$lineHeight,true,$is_table);
+
+               // SET LINEHEIGHT for this line ================ RESET AT END
+               $lineHeight = MAX($lineHeight,$objattr['OUTER-HEIGHT']);
+               $this->objectbuffer[count($content)-1] = $objattr;
+               // if (isset($objattr['vertical-align'])) { $valign = $objattr['vertical-align']; }
+               // else { $valign = ''; }
+               $contentWidth += ($objattr['OUTER-WIDTH'] * _MPDFK);
+               return;
+       }
+
+       $lbw = $rbw = 0;        // Border widths
+       if (!empty($this->spanborddet)) { 
+               if (isset($this->spanborddet['L'])) $lbw = $this->spanborddet['L']['w'];
+               if (isset($this->spanborddet['R'])) $rbw = $this->spanborddet['R']['w'];
+       }
+
+   if ($this->usingCoreFont) {
+       $tmp = strlen( $s );
+   }
+   else {
+       $tmp = mb_strlen( $s, $this->mb_enc );
+   }
+
+   // for every character in the string
+   for ( $i = 0; $i < $tmp; $i++ )  {
+       // extract the current character
+       // get the width of the character in points
+       if ($this->usingCoreFont) {
+               $c = $s[$i];
+               // Soft Hyphens chr(173)
+               $cw = ($this->GetCharWidthCore($c) * _MPDFK);
+               if ($this->kerning && $this->useKerning && $i > 0) {
+                       if (isset($this->CurrentFont['kerninfo'][$s[($i-1)]][$c])) { 
+                               $cw += ($this->CurrentFont['kerninfo'][$s[($i-1)]][$c] * $this->FontSizePt / 1000 );
+                       }
+               }
+       }
+       else {
+             $c = mb_substr($s,$i,1,$this->mb_enc );
+               $cw = ($this->GetCharWidthNonCore($c, false) * _MPDFK);
+               if ($this->kerning && $this->useKerning && $i > 0) {
+                       $lastc = mb_substr($s,($i-1),1,$this->mb_enc );
+                       $ulastc = $this->UTF8StringToArray($lastc, false);
+                       $uc = $this->UTF8StringToArray($c, false);
+                       if (isset($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]])) { 
+                               $cw += ($this->CurrentFont['kerninfo'][$ulastc[0]][$uc[0]] * $this->FontSizePt / 1000 );
+                       }
+               }
+       }
+
+       if ($i==0) {
+               $cw += $lbw*_MPDFK;
+               $contentB[(count($contentB)-1)] .= 'L';
+       }
+       if ($i==($tmp-1)) {
+               $cw += $rbw*_MPDFK;
+               $contentB[(count($contentB)-1)] .= 'R';
+       }
+       // mPDF 5.6.45
+       if ($c==' ') { 
+               $currContent .= $c;
+               $cutoffWidth = $contentWidth;
+               $contentWidth += $cw;
+               continue;
+       }
+
+       // ADDED for Paragraph_indent
+       $WidthCorrection = 0; 
+       if (($newblock) && ($blockstate==1 || $blockstate==3) && isset($this->blk[$this->blklvl]['text_indent']) && ($lineCount == 0) && (!$is_table) && (!$is_list) && ($align != 'C')) { 
+               $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+               $WidthCorrection = ($ti*_MPDFK); 
+       } 
+
+       // Added mPDF 3.0 Float DIV
+       $fpaddingR = 0;
+       $fpaddingL = 0;
+/*-- CSS-FLOAT --*/
+       if (count($this->floatDivs)) {
+               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
+               if ($r_exists) { $fpaddingR = $r_width; }
+               if ($l_exists) { $fpaddingL = $l_width; }
+       }
+/*-- END CSS-FLOAT --*/
+
+       $usey = $this->y + 0.002;
+       if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 0) ) { 
+               $usey += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
+       }
+
+/*-- CSS-IMAGE-FLOAT --*/
+       // If float exists at this level
+       if (isset($this->floatmargins['R']) && $usey <= $this->floatmargins['R']['y1'] && $usey >= $this->floatmargins['R']['y0'] && !$this->floatmargins['R']['skipline']) { $fpaddingR += $this->floatmargins['R']['w']; }
+       if (isset($this->floatmargins['L']) && $usey <= $this->floatmargins['L']['y1'] && $usey >= $this->floatmargins['L']['y0'] && !$this->floatmargins['L']['skipline']) { $fpaddingL += $this->floatmargins['L']['w']; }
+/*-- END CSS-IMAGE-FLOAT --*/
+
+
+
+       // try adding another char
+       if (( $contentWidth + $cw > $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) ) +  0.001))  {// 0.001 is to correct for deviations converting mm=>pts
+               // it won't fit, output what we already have
+               $lineCount++;
+
+               // contains any content that didn't make it into this print
+               $savedContent = '';
+               $savedContentB = '';
+               $savedFont = array();
+               $savedObj = array();
+               // mPDF 5.6.20
+               $savedPreContent = array();
+               $savedPreContentB = array();
+               $savedPreFont = array();
+
+               // cut off and save any partial words at the end of the string
+               $words = explode( ' ', $currContent ); 
+               ///////////////////
+               // HYPHENATION
+               $currWord = $words[count($words)-1] ;
+               $success = false;
+
+               // mPDF 5.6.21   Hard Hyphens -
+               $hardsuccess = false;
+               if ($this->textparam['hyphens'] != 2 && preg_match("/\-/",$currWord)) { 
+                       $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
+                       list($hardsuccess,$pre,$post,$prelength) = $this->hardHyphenate($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth("-", false)) );
+                       if ($hardsuccess) { 
+                               $already = array_pop( $words );
+                               $forward = mb_substr($already,$prelength+1,mb_strlen($already, $this->mb_enc), $this->mb_enc);
+                               $words[] = $pre.'-';
+                               $words[] = $forward;
+                               $currContent = mb_substr($currContent,0,mb_strlen($currContent, $this->mb_enc)+1-mb_strlen($post, $this->mb_enc), $this->mb_enc) . '-';
+                       }
+               }
+               
+/*-- HYPHENATION --*/
+               // Soft Hyphens chr(173)
+               else if ($this->textparam['hyphens'] != 2 && (!$this->usingCoreFont && preg_match("/\xc2\xad/",$currWord)) || ($this->usingCoreFont && preg_match("/".chr(173)."/",$currWord) && ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats')) ) {      // mPDF 5.6.06
+                       $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
+                       list($success,$pre,$post,$prelength) = $this->softHyphenate($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth(" ", false)) );
+               }
+
+               if (!$success && !$hardsuccess && $this->textparam['hyphens'] == 1 ) {  // mPDF 5.6.06  // mPDF 5.6.21
+                       // Look ahead to get current word
+                       for($ac = $i; $ac<(mb_strlen($s)-1); $ac++) {
+                               $addc = mb_substr($s,$ac,1,$this->mb_enc );
+                               if ($addc == ' ') { break; }
+                               $currWord .= $addc;
+                       }
+                       $rem = $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
+                       list($success,$pre,$post,$prelength) = $this->hyphenateWord($currWord, (($rem-$cutoffWidth)/_MPDFK -$this->GetCharWidth(" ", false)) );
+               }
+               if ($success) { 
+                       $already = array_pop( $words );
+                       $forward = mb_substr($already,$prelength,mb_strlen($already, $this->mb_enc), $this->mb_enc);
+                       $words[] = $pre.'-';
+                       $words[] = $forward;
+                       $currContent = mb_substr($currContent,0,mb_strlen($currContent, $this->mb_enc)+1-mb_strlen($post, $this->mb_enc), $this->mb_enc) . '-';
+               }
+/*-- END HYPHENATION --*/
+
+               // mPDF 5.6.13 Decimal alignment (cancel if wraps to > 1 line)
+               if ($is_table && substr($align,0,1)=='D' ) { $align=substr($align,2,1); }
+
+/*-- CJK-FONTS --*/
+               // mPDF 5.6.42
+               if ($this->checkCJK) {
+                       $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
+               }
+               // Next character is suitable to add as overhanging or squeezed punctuation
+               if ($this->checkCJK && preg_match("/[".$this->CJKoverflow."]/u", $c) && $this->allowCJKorphans && !$CJKoverflow) {
+                       // add character onto this line
+                       $currContent .= $c;
+                       $cutoffWidth = $contentWidth;
+                       $contentWidth += $cw;
+                       $CJKoverflow = true;
+                       continue;
+               }
+               // Last character that fits is not allowed to end a line - move lastchar(s) to start of next line
+               else if ($this->checkCJK && preg_match("/[".$this->CJKleading."]/u", $lastchar)) {
+                       //move lastchar(s) to next line
+                       $m0 = $lastchar;
+                       $m1 = $c;
+                       while(preg_match("/[".$this->CJKleading."]/u", $m0) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
+                               // trim last letter off word[0]
+                               $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
+                               // and add it to savedContent for next line
+                               $savedContent = $m0.$savedContent;
+                               $m1 = $lastchar;
+                               $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
+                               $m0 = $lastchar;
+                       }
+                       $lastContent = '';
+                       for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
+                       $savedFont = $this->saveFont();
+                       // replace the current content with the cropped version
+                       $currContent = rtrim( $lastContent );
+               }
+               // Next character is not allowed to start a new line
+               else if ($this->checkCJK && preg_match("/[".$this->CJKfollowing."]/u", $c)) {
+                       // try squeezing another character(s) onto this line = Oikomi
+                       if ($this->allowCJKorphans && !$CJKoverflow) {  // mPDF 5.6.40
+                             $lookahead = mb_substr($s,$i+1,1,$this->mb_enc );
+                               //if lookahead is not another following char
+                               if (!$lookahead || ($lookahead && !preg_match("/[".$this->CJKfollowing."]/u", $lookahead))) {
+                                       $currContent .= $c;
+                                       $cutoffWidth = $contentWidth;
+                                       $contentWidth += $cw;
+                                       if ($this->allowCJKoverflow && preg_match("/[".$this->CJKoverflow."]/u", $c)) { $CJKoverflow = true; }
+                                       continue;
+                               }
+                       }
+                       // or move lastchar(s) to next line to keep $c company = Oidashi
+                       $m0 = $lastchar;
+                       $m1 = $c;
+                       while(preg_match("/[".$this->CJKfollowing."]/u", $m1) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
+                               // trim last letter off word[0]
+                               $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
+                               // and add it to savedContent for next line
+                               $savedContent = $m0.$savedContent;
+                               $m1 = $lastchar;
+                               $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
+                               $m0 = $lastchar;
+                       }
+                       $lastContent = '';
+                       for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
+                       $savedFont = $this->saveFont();
+                       // replace the current content with the cropped version
+                       $currContent = rtrim( $lastContent );
+               }
+               // mPDF 5.6.42
+               else if ($this->checkCJK && preg_match("/([".$this->pregCJKchars."]+[0-9\x{ff10}-\x{ff19}]+$)/u", $words[0])) {
+                       $lookahead = mb_substr($s,$i,16,$this->mb_enc );
+                       //and if lookahead starts with a few numerals
+                       if ($lookahead && (preg_match("/^([0-9\x{ff10}-\x{ff19}]+[".$this->pregCJKchars."]+)/u", $lookahead) || preg_match("/^([0-9\x{ff10}-\x{ff19}]+$)/u", $lookahead)) ) {
+                               // or move lastchar(s) to next line to keep numerals together
+                               $m0 = $lastchar;
+                               while(preg_match("/[0-9\x{ff10}-\x{ff19}]/u", $m0) && mb_strlen($words[(count($words)-1)], $this->mb_enc)>2) {
+                                       // trim last letter off word[0]
+                                       $words[(count($words)-1)] = mb_substr($words[(count($words)-1)],0,mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, $this->mb_enc);
+                                       // and add it to savedContent for next line
+                                       $savedContent = $m0.$savedContent;
+                                       $lastchar = mb_substr($words[(count($words)-1)],mb_strlen($words[(count($words)-1)], $this->mb_enc)-1, 1, $this->mb_enc);
+                                       $m0 = $lastchar;
+                               }
+                       }
+                       $lastContent = '';
+                       for ( $w = 0; $w < count( $words ) ; $w++) { $lastContent .= $words[ $w ]." "; }
+                       $savedFont = $this->saveFont();
+                       // replace the current content with the cropped version
+                       $currContent = rtrim( $lastContent );
+               }
+               else 
+/*-- END CJK-FONTS --*/
+               // if it looks like we didn't finish any words for this chunk
+               if ( count( $words ) == 1 ) {
+                 // TO correct for error when word too wide for page - but only when one long word from left to right margin
+                 if (count($content) == 1 && $currContent != ' ') {
+                       $lastchar = mb_substr($words[0],mb_strlen($words[0], $this->mb_enc)-1, 1, $this->mb_enc);
+                       $lastContent = $words[0]; 
+                       $savedFont = $this->saveFont();
+                       // replace the current content with the cropped version
+                       $currContent = rtrim( $lastContent );
+                 }
+                 // mPDF 5.6.20
+                 else if (     count($content)>1
+                               && (!isset($this->objectbuffer[(count($content)-1)]) && !isset($this->objectbuffer[(count($content)-2)]))
+                               && substr($content[count($content)-2],-1,1) != ' '
+                               && substr($currContent,0,1) != ' '
+                       ) {
+                       // Go back to find a space in a previous chunk of content
+                       $found = false;
+                       for ($ix=count($content)-1;$ix>=0;$ix--) {
+                               // mPDF 5.6.29
+                               if ($this->usingCoreFont && preg_match('/[ '.chr(173).']/',$content[$ix],$m)) { $match = $m[0]; $found = $ix; break; }
+                               else if (!$this->usingCoreFont) {
+                                       if (preg_match('/[ ]/',$content[$ix])) { $match = ' '; $found = $ix; break; }
+                                       else if (preg_match('/[\x{00AD}]/u',$content[$ix])) {
+                                               // even though it is UTF-8 replace it temporarily with chr(173)
+                                               $content[$ix] = preg_replace('/[\x{00AD}]/u',chr(173),$content[$ix]);
+                                               $match = chr(173); $found = $ix; break; 
+                                       }
+                               }
+                       }
+                       if ($found !== false) {
+                               $charpos = strrpos($content[$found],$match);    // mPDF 5.6.29
+                               for ($ix=count($content)-1;$ix>$found;$ix--) {
+                                       // save and crop off any subsequent chunks
+                                       $savedPreContent[] = array_pop($content);
+                                       $savedPreContentB[] = array_pop($contentB);
+                                       $savedPreFont[] = array_pop($font);
+                               }
+                               if (substr($content[count($content)-1],$charpos+1,strlen($content[count($content)-1])-1) != '') {
+                                       $savedPreContent[] = substr($content[count($content)-1],$charpos+1,strlen($content[count($content)-1])-1);
+                                       $savedPreContentB[] = preg_replace('/L/','',$contentB[count($content)-1]);      // ???
+                                       $savedPreFont[] = $font[count($content)-1];
+                               }
+                               $savedContent = '';
+                               $savedContentB = '';
+                               $savedFont = array();
+
+                               $currContent =& $content[ count( $content ) - 1 ];
+                               $currContent = substr($currContent,0,$charpos);
+                               if ($match == chr(173)) { $currContent .= '-'; }        // mPDF 5.6.29
+                               if (strpos($contentB[(count($contentB)-1)],'R')!==false) {                      // ???
+                                       $contentB[count($content)-1] = preg_replace('/R/','',$contentB[count($content)-1]);     // ???
+                               }
+
+                               $currContent = rtrim( $currContent );
+                       }
+                       else {
+                               $savedContent = array_pop( $content );
+                               $savedContentB = array_pop($contentB);
+                               $savedFont = array_pop( $font );
+                               $currContent =& $content[ count( $content ) - 1 ];
+                               $currContent = rtrim( $currContent );
+                       }
+                 }
+                 else {
+                       // save and crop off the content currently on the stack
+                       $savedContent = array_pop( $content );
+                       $savedContentB = array_pop($contentB);  // mPDF 5.6.20
+                       $savedFont = array_pop( $font );
+                       // trim any trailing spaces off the last bit of content
+                       $currContent =& $content[ count( $content ) - 1 ];
+                       $currContent = rtrim( $currContent );
+                 }
+               }
+               else {  // otherwise, we need to find which bit to cut off
+                 $lastContent = '';
+              for ( $w = 0; $w < count( $words ) - 1; $w++) { $lastContent .= $words[ $w ]." "; }
+              $savedContent = $words[ count( $words ) - 1 ];
+              $savedFont = $this->saveFont();
+              // replace the current content with the cropped version
+              $currContent = rtrim( $lastContent );
+               }
+               // CJK - strip CJK space at end of line
+               // &#x3000; = \xe3\x80\x80 = CJK space
+               if ($this->checkCJK) { $currContent = preg_replace("/\xe3\x80\x80$/",'',$currContent) ; }       // *CJK-FONTS*
+
+
+               if (isset($this->objectbuffer[(count($content)-1)]) && $this->objectbuffer[(count($content)-1)]['type']=='dottab') {
+                       $savedObj = array_pop( $this->objectbuffer );
+                       $contentWidth -= ($this->objectbuffer[(count($content)-1)]['OUTER-WIDTH'] * _MPDFK);
+               }
+
+               // Set Current lineheight (correction factor)
+               $lhfixed = false; 
+/*-- LISTS --*/
+               if ($is_list) {
+                       if (preg_match('/([0-9.,]+)mm/',$this->list_lineheight[$this->listlvl][$this->listOcc],$am)) { 
+                               $lhfixed = true; 
+                               $def_fontsize = $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listOcc][$this->listnum]['size'];
+                               $this->lineheight_correction = $am[1] / $def_fontsize ;
+                       }
+                       else { 
+                               $this->lineheight_correction = $this->list_lineheight[$this->listlvl][$this->listOcc]; 
+                       }
+               }
+               else
+/*-- END LISTS --*/
+/*-- TABLES --*/
+               if ($is_table) {
+                       if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight,$am)) { 
+                               $lhfixed = true; 
+                               $def_fontsize = $this->FontSize;                                // needs to be default font-size for block ****
+                               $this->lineheight_correction = $lineHeight / $def_fontsize ; 
+                       }
+                       else { 
+                               $this->lineheight_correction = $this->table_lineheight; 
+                       }
+               }
+               else
+/*-- END TABLES --*/
+               if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
+                       if (preg_match('/([0-9.,]+)mm/',$this->blk[$this->blklvl]['line_height'],$am)) { 
+                               $lhfixed = true; 
+                               $def_fontsize = $this->blk[$this->blklvl]['InlineProperties']['size'];  // needs to be default font-size for block ****
+                               $this->lineheight_correction = $am[1] / $def_fontsize ;
+                       }
+                       else { 
+                               $this->lineheight_correction = $this->blk[$this->blklvl]['line_height']; 
+                       }
+               } 
+               else {
+                       $this->lineheight_correction = $this->normalLineheight; 
+               }
+               // update $contentWidth and $cutoffWidth since they changed with cropping
+               // Also correct lineheight to maximum fontsize (not for tables)
+               $contentWidth = 0;
+               //  correct lineheight to maximum fontsize
+               if ($lhfixed) { $maxlineHeight = $this->lineheight; }
+               else { $maxlineHeight = 0; }
+               $this->forceExactLineheight = true;
+               $maxfontsize = 0;
+               // While we're at it, check for cursive text
+               $checkCursive=false;
+               if ($this->biDirectional) {  $checkCursive=true; }      // *RTL*
+               foreach ( $content as $k => $chunk )
+               {
+              $this->restoreFont( $font[ $k ]);
+                 if (!isset($this->objectbuffer[$k])) { 
+                       // mPDF 5.6.40
+                       if ($this->checkCJK && $k == count($content)-1 && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $this->CJKforceend) {
+                         // force-end overhang
+                               $hanger = mb_substr($chunk,mb_strlen($chunk,$this->mb_enc)-1,1,$this->mb_enc );
+                               $content[$k] = $chunk = mb_substr($chunk,0,mb_strlen($chunk,$this->mb_enc)-1,$this->mb_enc );
+                       }
+                       if (!$this->usingCoreFont) {
+                             $content[$k] = $chunk = str_replace("\xc2\xad",'',$chunk ); 
+                               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) {  $checkCursive=true; } // *INDIC*
+                       }
+                       // Soft Hyphens chr(173)
+                       else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
+                             $content[$k] = $chunk = str_replace(chr(173),'',$chunk );
+                       }
+                       $contentWidth += $this->GetStringWidth( $chunk ) * _MPDFK; 
+                       if (!empty($this->spanborddet)) { 
+                               if (strpos($contentB[$k],'L')!==false) $contentWidth += $this->spanborddet['L']['w'] * _MPDFK; 
+                               if (strpos($contentB[$k],'R')!==false) $contentWidth += $this->spanborddet['R']['w'] * _MPDFK; 
+                       }
+                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$this->FontSize * $this->lineheight_correction ); }
+                       if ($lhfixed && ($this->FontSize > $def_fontsize || ($this->FontSize > ($lineHeight * $this->lineheight_correction) && $is_list))) { 
+                               $this->forceExactLineheight = false; 
+                       }
+                       $maxfontsize = max($maxfontsize,$this->FontSize); 
+                 }
+               }
+
+               $lastfontreqstyle = $font[count($font)-1]['ReqFontStyle'];
+               $lastfontstyle = $font[count($font)-1]['style'];
+               if ($blockdir == 'ltr' && strpos($lastfontreqstyle,"I") !== false && strpos($lastfontstyle,"I") === false) {    // Artificial italic
+                       $lastitalic = $this->FontSize*0.15*_MPDFK;
+               }
+               else { $lastitalic = 0; }
+
+
+/*-- LISTS --*/
+               if ($is_list && is_array($this->bulletarray) && $this->bulletarray) {
+                       $actfs = $this->bulletarray['fontsize'];
+                       if (!$lhfixed) { $maxlineHeight = max($maxlineHeight,$actfs * $this->lineheight_correction );  }
+                       if ($lhfixed && $actfs > $def_fontsize) { $this->forceExactLineheight = false; }
+                       $maxfontsize = max($maxfontsize,$actfs);
+               }
+/*-- END LISTS --*/
+
+               // when every text item checked i.e. $maxfontsize is set properly
+
+               $af = 0;        // Above font
+               $bf = 0;        // Below font
+               $mta = 0;       // Maximum top-aligned 
+               $mba = 0;       // Maximum bottom-aligned 
+
+               foreach ( $content as $k => $chunk ) {
+                 if (isset($this->objectbuffer[$k]) && $this->objectbuffer[$k]) { 
+                       $contentWidth += $this->objectbuffer[$k]['OUTER-WIDTH'] * _MPDFK; 
+                       $oh = $this->objectbuffer[$k]['OUTER-HEIGHT'];
+                       $va = $this->objectbuffer[$k]['vertical-align']; // = $objattr['vertical-align'] = set as M,T,B,S
+                       if ($lhfixed && $oh > $def_fontsize) { $this->forceExactLineheight = false; }
+
+                       if ($va == 'BS') {      //  (BASELINE default)
+                               $af = max($af, ($oh - ($maxfontsize * (0.5 + $this->baselineC))));
+                       }
+                       else if ($va == 'M') { 
+                               $af = max($af, ($oh - $maxfontsize)/2);
+                               $bf = max($bf, ($oh - $maxfontsize)/2);
+                       }
+                       else if ($va == 'TT') { 
+                               $bf = max($bf, ($oh - $maxfontsize));
+                       }
+                       else if ($va == 'TB') { 
+                               $af = max($af, ($oh - $maxfontsize));
+                       }
+                       else if ($va == 'T') { 
+                               $mta = max($mta, $oh);
+                       }
+                       else if ($va == 'B') { 
+                               $mba = max($mba, $oh);
+                       }
+                 }
+               }
+               if ((!$lhfixed || !$this->forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
+                       $maxlineHeight = $maxfontsize + $af + $bf;
+               }
+               else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
+
+               if ($mta > $maxlineHeight) { 
+                       $bf += ($mta - $maxlineHeight);
+                       $maxlineHeight = $mta;
+               }
+               if ($mba > $maxlineHeight) { 
+                       $af += ($mba - $maxlineHeight);
+                       $maxlineHeight = $mba;
+               }
+
+
+               $lineHeight = $maxlineHeight; 
+               $cutoffWidth = $contentWidth;
+               // If NOT images, and maxfontsize NOT > lineHeight - this value determines text baseline positioning
+               if ($lhfixed && $af==0 && $bf==0 && $maxfontsize<=($def_fontsize * $this->lineheight_correction * 0.8 )) { 
+                       $this->linemaxfontsize = $def_fontsize; 
+               }
+               else { $this->linemaxfontsize = $maxfontsize; }
+
+
+               $inclCursive=false;
+               foreach ( $content as $k => $chunk ) {
+                       if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
+                               if ($this->usingCoreFont) {
+                                     $content[$k] = str_replace(chr(160),chr(32),$chunk );
+                               }
+                               else {
+                                     $content[$k] = str_replace(chr(194).chr(160),chr(32),$chunk ); 
+                                       if ($checkCursive) {
+                                               if (preg_match("/([".$this->pregRTLchars."])/u", $chunk)) { $inclCursive = true; }      // *RTL*
+                                               if (preg_match("/([".$this->pregHIchars.$this->pregBNchars.$this->pregPAchars."])/u", $chunk)) { $inclCursive = true; } // *INDIC*
+                                       }
+                               }
+                       }
+               }
+
+               // JUSTIFICATION J
+               $jcharspacing = 0;
+               $jws = 0;
+               $nb_carac = 0;
+               $nb_spaces = 0;
+               // if it's justified, we need to find the char/word spacing (or if orphans have allowed length of line to go over the maxwidth)
+               if ( ($align == 'J' && !$CJKoverflow) || (($cutoffWidth + $lastitalic > $maxWidth - $WidthCorrection - (($this->cMarginL+$this->cMarginR)*_MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) ) +  0.001) && (!$CJKoverflow || ($CJKoverflow && !$this->allowCJKoverflow))) || $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {   // 0.001 is to correct for deviations converting mm=>pts   // mPDF 5.6.40
+                 // JUSTIFY J (Use character spacing)
+                 // WORD SPACING
+                       foreach ( $content as $k => $chunk ) {
+                               if (!isset($this->objectbuffer[$k]) || (isset($this->objectbuffer[$k]) && !$this->objectbuffer[$k])) {
+                                       $nb_carac += mb_strlen( $chunk, $this->mb_enc ) ;  
+                                       $nb_spaces += mb_substr_count( $chunk,' ', $this->mb_enc ) ;  
+                               }
+                       }
+                       list($jcharspacing,$jws) = $this->GetJspacing($nb_carac,$nb_spaces,($maxWidth-$lastitalic-$cutoffWidth-$WidthCorrection-(($this->cMarginL+$this->cMarginR)*_MPDFK)-($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) )),$inclCursive);
+               }
+
+
+               // WORD SPACING
+               $empty = $maxWidth - $lastitalic-$WidthCorrection - $contentWidth - (($this->cMarginL+$this->cMarginR)* _MPDFK) - ($paddingL+$paddingR +(($fpaddingL + $fpaddingR) * _MPDFK) );
+
+               $empty -= ($jcharspacing * $nb_carac);
+               $empty -= ($jws * $nb_spaces);
+
+               $empty /= _MPDFK;
+               $b = ''; //do not use borders
+               // Get PAGEBREAK TO TEST for height including the top border/padding
+               $check_h = max($this->divheight,$lineHeight);
+               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($this->blklvl > 0) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
+                       $check_h += ($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['border_top']['w']);
+               }
+
+               if ($this->ColActive && $check_h > ($this->PageBreakTrigger - $this->y0)) { 
+                       $this->SetCol($this->NbCol-1);
+               }
+
+               // PAGEBREAK
+               // 'If' below used in order to fix "first-line of other page with justify on" bug 
+               if(!$is_table && ($this->y+$check_h) > $this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak()) {
+                       $bak_x=$this->x;//Current X position
+
+                       // WORD SPACING
+                       $ws=$this->ws;//Word Spacing
+                       $charspacing=$this->charspacing;//Character Spacing
+                       $this->ResetSpacing();
+
+                     $this->AddPage($this->CurOrientation);
+
+                     $this->x = $bak_x;
+                       // Added to correct for OddEven Margins
+                       $currentx += $this->MarginCorrection;
+                       $this->x += $this->MarginCorrection;
+
+                       // WORD SPACING
+                       $this->SetSpacing($charspacing,$ws);
+               }
+
+               if ($this->keep_block_together && !$is_table && $this->kt_p00 < $this->page && ($this->y+$check_h) > $this->kt_y00) {
+                       $this->printdivbuffer();
+                       $this->keep_block_together = 0;
+               }
+
+
+/*-- COLUMNS --*/
+               // COLS
+               // COLUMN CHANGE
+               if ($this->CurrCol != $oldcolumn) {
+                       $currentx += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+                       $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+                       $oldcolumn = $this->CurrCol;
+               }
+
+               if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }        // *COLUMNS*
+/*-- END COLUMNS --*/
+
+               // TOP MARGIN
+               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($this->blk[$this->blklvl]['margin_top']) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
+                       $this->DivLn($this->blk[$this->blklvl]['margin_top'],$this->blklvl-1,true,$this->blk[$this->blklvl]['margin_collapse']); 
+                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+               }
+
+
+               // Update y0 for top of block (used to paint border)
+               if (($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
+                       $this->blk[$this->blklvl]['y0'] = $this->y;
+                       $this->blk[$this->blklvl]['startpage'] = $this->page;
+                       if ($this->blk[$this->blklvl]['float']) { $this->blk[$this->blklvl]['float_start_y'] = $this->y; } // mPDF 5.6.63
+               }
+
+               // TOP PADDING and BORDER spacing/fill
+               if (($newblock) && ($blockstate==1 || $blockstate==3) && (($this->blk[$this->blklvl]['padding_top']) || ($this->blk[$this->blklvl]['border_top'])) && ($lineCount == 1) && (!$is_table) && (!$is_list)) { 
+                       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
+                       $this->DivLn($this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'],-3,true,false,1);
+                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+               }
+
+               $arraysize = count($content);
+
+               $margins = ($this->cMarginL+$this->cMarginR) + ($ipaddingL+$ipaddingR + $fpaddingR + $fpaddingR );
+               // PAINT BACKGROUND FOR THIS LINE
+               if (!$is_table) { $this->DivLn($lineHeight,$this->blklvl,false); }      // false -> don't advance y
+
+               $this->x = $currentx + $this->cMarginL + $ipaddingL + $fpaddingL ;
+               if ($align == 'R') { $this->x += $empty; }
+               else if ($align == 'C') { $this->x += ($empty / 2); }
+
+               // Paragraph INDENT
+               if (isset($this->blk[$this->blklvl]['text_indent']) && ($newblock) && ($blockstate==1 || $blockstate==3) && ($lineCount == 1) && (!$is_table) && ($blockdir !='rtl') && ($align !='C')) { 
+                       $ti = $this->ConvertSize($this->blk[$this->blklvl]['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+                       $this->x += $ti; 
+               }
+
+               // DIRECTIONALITY RTL
+               $all_rtl = false;
+               $contains_rtl = false;
+/*-- RTL --*/
+               if ($blockdir == 'rtl' || $this->biDirectional)  {
+                       $all_rtl = true;
+                       foreach ( $content as $k => $chunk ) {
+                               $reversed = $this->magic_reverse_dir($chunk, false, $blockdir);
+
+                               if ($reversed > 0) { $contains_rtl = true; }
+                               if ($reversed < 2) { $all_rtl = false; }
+                               $content[$k] = $chunk;
+                       }
+                       if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) { 
+                               $content = array_reverse($content,false); 
+                               $contentB = array_reverse($contentB,false);
+                       }
+               }
+/*-- END RTL --*/
+
+               foreach ( $content as $k => $chunk ) {
+
+                       // FOR IMAGES - UPDATE POSITION
+                       if (($blockdir =='rtl' && $contains_rtl) || $all_rtl) { $dirk = $arraysize-1 - $k ; } else { $dirk = $k; }
+
+                       $va = 'M';      // default for text
+                       if (isset($this->objectbuffer[$dirk]) && $this->objectbuffer[$dirk]) {
+                         $xadj = $this->x - $this->objectbuffer[$dirk]['OUTER-X'] ; 
+                         $this->objectbuffer[$dirk]['OUTER-X'] += $xadj;
+                         $this->objectbuffer[$dirk]['BORDER-X'] += $xadj;
+                         $this->objectbuffer[$dirk]['INNER-X'] += $xadj;
+                         $va = $this->objectbuffer[$dirk]['vertical-align'];
+                         $yadj = $this->y - $this->objectbuffer[$dirk]['OUTER-Y'];
+                         if ($va == 'BS') { 
+                               $yadj += $af + ($this->linemaxfontsize * (0.5 + $this->baselineC)) - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
+                         }
+                         else if ($va == 'M' || $va == '') { 
+                               $yadj += $af + ($this->linemaxfontsize /2) - ($this->objectbuffer[$dirk]['OUTER-HEIGHT']/2);
+                         }
+                         else if ($va == 'TB') { 
+                               $yadj += $af + $this->linemaxfontsize - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
+                         }
+                         else if ($va == 'TT') { 
+                               $yadj += $af;
+                         }
+                         else if ($va == 'B') { 
+                               $yadj += $af + $this->linemaxfontsize + $bf - $this->objectbuffer[$dirk]['OUTER-HEIGHT'];
+                         }
+                         else if ($va == 'T') { 
+                               $yadj += 0;
+                         }
+                         $this->objectbuffer[$dirk]['OUTER-Y'] += $yadj;
+                         $this->objectbuffer[$dirk]['BORDER-Y'] += $yadj;
+                         $this->objectbuffer[$dirk]['INNER-Y'] += $yadj;
+                       }
+
+                       // DIRECTIONALITY RTL
+                       if ((($blockdir == 'rtl') && ($contains_rtl )) || ($all_rtl )) { $this->restoreFont($font[$arraysize-1 - $k]); }
+                       else { $this->restoreFont( $font[ $k ] ); }
+
+                       $this->SetSpacing(($this->fixedlSpacing*_MPDFK)+$jcharspacing,($this->fixedlSpacing+$this->minwSpacing)*_MPDFK+$jws);
+                       // Now unset these values so they don't influence GetStringwidth below or in fn. Cell
+                       $this->fixedlSpacing = false;
+                       $this->minwSpacing = 0;
+
+                       // mPDF 5.6.26
+                       $save_vis = $this->visibility;
+                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->textparam['visibility'] != $this->visibility) {
+                               $this->SetVisibility($this->textparam['visibility']);
+                       }
+                       // *********** SPAN BACKGROUND COLOR ***************** //
+                       if ($this->spanbgcolor) { 
+                               $cor = $this->spanbgcolorarray;
+                               $this->SetFColor($cor);
+                               $save_fill = $fill; $spanfill = 1; $fill = 1;
+                       }
+                       if (!empty($this->spanborddet)) { 
+                               if (strpos($contentB[$k],'L')!==false) $this->x += $this->spanborddet['L']['w'];
+                               if (strpos($contentB[$k],'L')===false) $this->spanborddet['L']['s'] = $this->spanborddet['L']['w'] = 0; 
+                               if (strpos($contentB[$k],'R')===false) $this->spanborddet['R']['s'] = $this->spanborddet['R']['w'] = 0; 
+                       }
+
+                       // WORD SPACING
+                     $stringWidth = $this->GetStringWidth($chunk );
+                       $stringWidth += ( $this->charspacing * mb_strlen($chunk,$this->mb_enc ) / _MPDFK );
+                       $stringWidth += ( $this->ws * mb_substr_count($chunk,' ',$this->mb_enc ) / _MPDFK );
+                       if (isset($this->objectbuffer[$dirk])) { $stringWidth = $this->objectbuffer[$dirk]['OUTER-WIDTH'];  }
+
+                       if ($stringWidth==0) { $stringWidth = 0.000001; }
+                       if ($k == $arraysize-1) {
+                               $stringWidth -= ( $this->charspacing / _MPDFK ); 
+                               // mPDF 5.6.40
+                               if ($this->checkCJK && $CJKoverflow && $align=='J' && $this->allowCJKoverflow && $hanger && $this->CJKforceend) {
+                                 // force-end overhang
+                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true ); 
+                                       $this->Cell( $this->GetStringWidth($hanger), $lineHeight, $hanger, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true );
+                               }
+                               else {
+                                       $this->Cell( $stringWidth, $lineHeight, $chunk, '', 1, '', $fill, $this->HREF, $currentx,0,0,'M', $fill, $af, $bf, true ); //mono-style line or last part (skips line)
+                               }
+
+                       }
+                       else $this->Cell( $stringWidth, $lineHeight, $chunk, '', 0, '', $fill, $this->HREF, 0, 0,0,'M', $fill, $af, $bf, true );//first or middle part  
+
+                       if (!empty($this->spanborddet)) { 
+                               if (strpos($contentB[$k],'R')!==false && $k != $arraysize-1)  $this->x += $this->spanborddet['R']['w'];
+                       }
+                       // *********** SPAN BACKGROUND COLOR OFF - RESET BLOCK BGCOLOR ***************** //
+                       if (isset($spanfill) && $spanfill) { 
+                               $fill = $save_fill; $spanfill = 0; 
+                               if ($fill) { $this->SetFColor($bcor); }
+                       }
+                       // mPDF 5.6.26
+                       if (isset($this->textparam['visibility']) && $this->textparam['visibility'] && $this->visibility != $save_vis) {
+                               $this->SetVisibility($save_vis);
+                       }
+
+               }
+               if (!$is_table) { 
+                       $this->maxPosR = max($this->maxPosR , ($this->w - $this->rMargin - $this->blk[$this->blklvl]['outer_right_margin'])); 
+                       $this->maxPosL = min($this->maxPosL , ($this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'])); 
+               }
+
+               // move on to the next line, reset variables, tack on saved content and current char
+
+               $this->printobjectbuffer($is_table, $blockdir);
+               $this->objectbuffer = array();
+
+/*-- LISTS --*/
+               // LIST BULLETS/NUMBERS
+               if ($is_list && is_array($this->bulletarray) && ($lineCount == 1) ) {
+                 
+                 $this->ResetSpacing();
+
+                 $bull = $this->bulletarray;
+                 if (isset($bull['level']) && isset($bull['occur']) && isset($this->InlineProperties['LIST'][$bull['level']][$bull['occur']])) { 
+                       $this->restoreInlineProperties($this->InlineProperties['LIST'][$bull['level']][$bull['occur']]); 
+                 }
+                 if (isset($bull['level']) && isset($bull['occur']) && isset($bull['num']) && isset($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) && $this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]) { $this->restoreInlineProperties($this->InlineProperties['LISTITEM'][$bull['level']][$bull['occur']][$bull['num']]); }
+                 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
+                       $this->bullet = true;
+                       $this->SetFont('czapfdingbats','',$this->FontSizePt/2.5);
+                 }
+                 else { $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); }      // force output
+               //Output bullet
+                 $this->x = $currentx;
+                 if (isset($bull['x'])) { $this->x += $bull['x']; }
+                 $this->y -= $lineHeight;
+                 if (isset($bull['col']) && $bull['col']) { $this->SetTColor($bull['col']); }  // mPDF 5.6.67
+                 if (isset($bull['txt'])) { $this->Cell($bull['w'], $lineHeight,$bull['txt'],'','',$bull['align'],0,'',0,-$this->cMarginL, -$this->cMarginR ); }
+                 if (isset($bull['font']) && $bull['font'] == 'czapfdingbats') {
+                       $this->bullet = false;
+                 }
+                 $this->x = $currentx; // Reset
+                 $this->y += $lineHeight;
+
+                 if ($this->ColActive && !$is_table) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+
+                 $this->bulletarray = array(); // prevents repeat of bullet/number if <li>....<br />.....</li>
+               }
+/*-- END LISTS --*/
+
+
+/*-- CSS-IMAGE-FLOAT --*/
+               // Update values if set to skipline
+               if ($this->floatmargins) { $this->_advanceFloatMargins(); }
+/*-- END CSS-IMAGE-FLOAT --*/
+
+               // Reset lineheight
+               $lineHeight = $this->divheight;
+               $valign = 'M';
+
+               $font = array();
+               $content = array();
+               $contentB = array();
+               $contentWidth = 0;
+               if (!empty($savedObj)) {
+                       $this->objectbuffer[] = $savedObj;
+                       $font[] = $savedFont;
+                       $content[] = '';
+                       $contentB[] = '';
+                       $contentWidth += $savedObj['OUTER-WIDTH'] * _MPDFK;
+               }
+               // mPDF 5.6.20
+               if (count($savedPreContent) > 0) {
+                       for($ix=count($savedPreContent)-1;$ix>=0;$ix--) {
+                               $font[] = $savedPreFont[$ix];
+                               $content[] = $savedPreContent[$ix];
+                               $contentB[] = $savedPreContentB[$ix];
+                               $this->restoreFont( $savedPreFont[$ix] );
+                               $lbw = $rbw = 0;        // Border widths
+                               if (!empty($this->spanborddet)) { 
+                                       $lbw = $this->spanborddet['L']['w'];
+                                       $rbw = $this->spanborddet['R']['w'];
+                               }
+                               if ($ix>0) {
+                                       $contentWidth += $this->GetStringWidth( $savedPreContent[$ix] ) * _MPDFK;
+                                       if (strpos($savedPreContentB[$ix],'L')!==false) $contentWidth += $lbw;
+                                       if (strpos($savedPreContentB[$ix],'R')!==false) $contentWidth += $rbw;
+                               }
+                       }
+                       $savedPreContent = array();
+                       $savedPreContentB = array();
+                       $savedPreFont = array();
+                       $content[ (count($content)-1) ] .= $c;
+               }
+               else {
+                       $font[] = $savedFont;
+                       $content[] = $savedContent . $c;
+                       $contentB[] = $savedContentB ;
+               }
+
+               $currContent =& $content[ (count($content)-1) ];
+
+               // CJK - strip CJK space at end of line
+               // &#x3000; = \xe3\x80\x80 = CJK space
+               if ($this->checkCJK && $currContent == "\xe3\x80\x80") { $currContent = '' ; }  // *CJK-FONTS*
+
+               $this->restoreFont( $savedFont );
+               $lbw = $rbw = 0;        // Border widths
+               if (!empty($this->spanborddet)) { 
+                       $lbw = $this->spanborddet['L']['w'];
+                       $rbw = $this->spanborddet['R']['w'];
+               }
+               $contentWidth += $this->GetStringWidth( $currContent ) * _MPDFK;
+               if (strpos($savedContentB,'L')!==false) $contentWidth += $lbw;
+               $cutoffWidth = $contentWidth;
+               $CJKoverflow = false;
+               $hanger = '';   // mPDF 5.6.40
+      }
+      // another character will fit, so add it on
+       else {
+               $contentWidth += $cw;
+               $currContent .= $c;
+       }
+    }
+    unset($content);
+    unset($contentB);
+}
+//----------------------END OF FLOWING BLOCK------------------------------------//
+
+
+/*-- CSS-IMAGE-FLOAT --*/
+// Update values if set to skipline
+function _advanceFloatMargins() {
+       // Update floatmargins - L
+       if (isset($this->floatmargins['L']) && $this->floatmargins['L']['skipline'] && $this->floatmargins['L']['y0'] != $this->y) {
+               $yadj = $this->y - $this->floatmargins['L']['y0'];
+               $this->floatmargins['L']['y0'] = $this->y;
+               $this->floatmargins['L']['y1'] += $yadj;
+
+               // Update objattr in floatbuffer
+               if ($this->floatbuffer[$this->floatmargins['L']['id']]['border_left']['w']) {
+                       $this->floatbuffer[$this->floatmargins['L']['id']]['BORDER-Y'] += $yadj;
+               }
+               $this->floatbuffer[$this->floatmargins['L']['id']]['INNER-Y'] += $yadj;
+               $this->floatbuffer[$this->floatmargins['L']['id']]['OUTER-Y'] += $yadj;
+
+               // Unset values
+               $this->floatbuffer[$this->floatmargins['L']['id']]['skipline'] = false;
+               $this->floatmargins['L']['skipline'] = false;
+               $this->floatmargins['L']['id'] = '';
+       }
+       // Update floatmargins - R
+       if (isset($this->floatmargins['R']) && $this->floatmargins['R']['skipline'] && $this->floatmargins['R']['y0'] != $this->y) {
+               $yadj = $this->y - $this->floatmargins['R']['y0'];
+               $this->floatmargins['R']['y0'] = $this->y;
+               $this->floatmargins['R']['y1'] += $yadj;
+
+               // Update objattr in floatbuffer
+               if ($this->floatbuffer[$this->floatmargins['R']['id']]['border_left']['w']) {
+                       $this->floatbuffer[$this->floatmargins['R']['id']]['BORDER-Y'] += $yadj;
+               }
+               $this->floatbuffer[$this->floatmargins['R']['id']]['INNER-Y'] += $yadj;
+               $this->floatbuffer[$this->floatmargins['R']['id']]['OUTER-Y'] += $yadj;
+
+               // Unset values
+               $this->floatbuffer[$this->floatmargins['R']['id']]['skipline'] = false;
+               $this->floatmargins['R']['skipline'] = false;
+               $this->floatmargins['R']['id'] = '';
+       }
+}
+/*-- END CSS-IMAGE-FLOAT --*/
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+// ADDED forcewrap - to call from inline OBJECT functions to breakwords if necessary in cell
+////////////////////////////////////////////////////////////////////////////////
+function WordWrap(&$text, $maxwidth, $forcewrap = 0) {
+    $biggestword=0;
+    $toonarrow=false;
+
+    $text = trim($text);
+
+    if ($text==='') return 0;
+    $space = $this->GetCharWidth(' ',false);
+    $lines = explode("\n", $text);
+    $text = '';
+    $count = 0;
+    foreach ($lines as $line) {
+       $words = explode(' ', $line);
+       $width = 0;
+       foreach ($words as $word) {
+               $word = trim($word);
+               $wordwidth = $this->GetStringWidth($word);
+               //Warn user that maxwidth is insufficient
+               if ($wordwidth > $maxwidth + 0.0001) {
+                       if ($wordwidth > $biggestword) { $biggestword = $wordwidth; }
+                       $toonarrow=true;
+                       // ADDED
+                       if ($forcewrap) {
+                         while($wordwidth > $maxwidth) {
+                               $chw = 0;       // check width
+                               for ( $i = 0; $i < mb_strlen($word, $this->mb_enc ); $i++ ) {
+                                       $chw = $this->GetStringWidth(mb_substr($word,0,$i+1,$this->mb_enc ));
+                                       if ($chw > $maxwidth ) {
+                                               if ($text) {
+                                                       $text = rtrim($text)."\n".mb_substr($word,0,$i,$this->mb_enc );
+                                                       $count++;
+                                               }
+                                               else {
+                                                       $text = mb_substr($word,0,$i,$this->mb_enc );
+                                               }
+                                               $word = mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
+                                               $wordwidth = $this->GetStringWidth($word);
+                                               $width = $maxwidth; 
+                                               break;
+                                       }
+                               }
+                         }
+                       }
+               }
+
+               if ($width + $wordwidth  < $maxwidth - 0.0001) {
+                       $width += $wordwidth + $space;
+                       $text .= $word.' ';
+               }
+               else {
+                       $width = $wordwidth + $space;
+                       $text = rtrim($text)."\n".$word.' ';
+                       $count++;
+            }
+       }
+       $text .= "\n";
+       $count++;
+    }
+    $text = rtrim($text);
+
+    //Return -(wordsize) if word is bigger than maxwidth 
+
+       // ADDED
+       if ($forcewrap) { return $count; }
+      if (($toonarrow) && ($this->table_error_report)) {
+               $this->Error("Word is too long to fit in table - ".$this->table_error_report_param); 
+       }
+    if ($toonarrow) return -$biggestword;
+    else return $count;
+}
+
+/*-- END HTML-CSS --*/
+
+function _SetTextRendering($mode) { 
+       if (!(($mode == 0) || ($mode == 1) || ($mode == 2))) 
+       $this->Error("Text rendering mode should be 0, 1 or 2 (value : $mode)"); 
+       $tr = ($mode.' Tr'); 
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']) || $this->keep_block_together)) { $this->_out($tr); }
+       $this->pageoutput[$this->page]['TextRendering'] = $tr;
+
+} 
+
+function SetTextOutline($params=array()) {     // mPDF 5.6.07
+  if (isset($params['outline-s']) && $params['outline-s'])
+  { 
+    $this->SetLineWidth($params['outline-WIDTH']); 
+    $this->SetDColor($params['outline-COLOR']);
+    $tr = ('2 Tr'); 
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']) || $this->keep_block_together)) { $this->_out($tr); }
+       $this->pageoutput[$this->page]['TextRendering'] = $tr;
+  }
+  else //Now resets all values
+  { 
+    $this->SetLineWidth(0.2); 
+    $this->SetDColor($this->ConvertColor(0));
+    $this->_SetTextRendering(0); 
+    $tr = ('0 Tr'); 
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['TextRendering']) && $this->pageoutput[$this->page]['TextRendering'] != $tr) || !isset($this->pageoutput[$this->page]['TextRendering']) || $this->keep_block_together)) { $this->_out($tr); }
+       $this->pageoutput[$this->page]['TextRendering'] = $tr;
+  } 
+}
+
+function Image($file,$x,$y,$w=0,$h=0,$type='',$link='',$paint=true, $constrain=true, $watermark=false, $shownoimg=true, $allowvector=true) {
+       $orig_srcpath = $file;
+       $this->GetFullPath($file);
+
+       $info=$this->_getImage($file, true, $allowvector, $orig_srcpath );
+       if(!$info && $paint) {
+               $info = $this->_getImage($this->noImageFile);
+               if ($info) { 
+                       $file = $this->noImageFile; 
+                       $w = ($info['w'] * (25.4/$this->dpi));  // 14 x 16px
+                       $h = ($info['h'] * (25.4/$this->dpi));  // 14 x 16px
+               }
+       }
+       if(!$info) return false;
+       //Automatic width and height calculation if needed
+       if($w==0 and $h==0) {
+/*-- IMAGES-WMF --*/
+           if ($info['type']=='wmf') { 
+                       // WMF units are twips (1/20pt)
+                       // divide by 20 to get points
+                       // divide by k to get user units
+                       $w = abs($info['w'])/(20*_MPDFK);
+                       $h = abs($info['h']) / (20*_MPDFK);
+               }
+               else 
+/*-- END IMAGES-WMF --*/
+           if ($info['type']=='svg') { 
+                       // returned SVG units are pts
+                       // divide by k to get user units (mm)
+                       $w = abs($info['w'])/_MPDFK;
+                       $h = abs($info['h']) /_MPDFK;
+               }
+               else {
+                       //Put image at default image dpi
+                       $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
+                       $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
+               }
+       }
+       if($w==0)       $w=abs($h*$info['w']/$info['h']); 
+       if($h==0)       $h=abs($w*$info['h']/$info['w']); 
+
+/*-- WATERMARK --*/
+       if ($watermark) {
+         $maxw = $this->w;
+         $maxh = $this->h;
+         // Size = D PF or array
+         if (is_array($this->watermark_size)) {
+               $w = $this->watermark_size[0];
+               $h = $this->watermark_size[1];
+         }
+         else if (!is_string($this->watermark_size)) {
+               $maxw -= $this->watermark_size*2;
+               $maxh -= $this->watermark_size*2;
+               $w = $maxw;
+               $h=abs($w*$info['h']/$info['w']);
+               if ($h > $maxh )  {
+                       $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
+               }
+         }
+         else if ($this->watermark_size == 'F') {
+               if ($this->ColActive) { $maxw = $this->w - ($this->DeflMargin + $this->DefrMargin); }
+               else { $maxw = $this->pgwidth; }
+               $maxh = $this->h - ($this->tMargin + $this->bMargin);
+               $w = $maxw;
+               $h=abs($w*$info['h']/$info['w']);
+               if ($h > $maxh )  {
+                       $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
+               }
+         }
+         else  if ($this->watermark_size == 'P') {     // Default P
+               $w = $maxw;
+               $h=abs($w*$info['h']/$info['w']);
+               if ($h > $maxh )  {
+                       $h = $maxh ; $w=abs($h*$info['w']/$info['h']);
+               }
+         }
+         // Automatically resize to maximum dimensions of page if too large
+         if ($w > $maxw) {
+               $w = $maxw;
+               $h=abs($w*$info['h']/$info['w']);
+         }
+         if ($h > $maxh )  {
+               $h = $maxh ;
+               $w=abs($h*$info['w']/$info['h']);
+         }
+         // Position
+         if (is_array($this->watermark_pos)) {
+               $x = $this->watermark_pos[0];
+               $y = $this->watermark_pos[1];
+         }
+         else if ($this->watermark_pos == 'F')  {      // centred on printable area
+               if ($this->ColActive) { // *COLUMNS*
+                       if (($this->mirrorMargins) && (($this->page)%2==0)) { $xadj = $this->DeflMargin-$this->DefrMargin; }    // *COLUMNS*
+                       else { $xadj = 0; }     // *COLUMNS*
+                       $x = ($this->DeflMargin - $xadj + ($this->w - ($this->DeflMargin + $this->DefrMargin))/2) - ($w/2);     // *COLUMNS*
+               }       // *COLUMNS*
+               else {  // *COLUMNS*
+                       $x = ($this->lMargin + ($this->pgwidth)/2) - ($w/2);
+               }       // *COLUMNS*
+               $y = ($this->tMargin + ($this->h - ($this->tMargin + $this->bMargin))/2) - ($h/2);
+         }
+         else {        // default P - centred on whole page
+               $x = ($this->w/2) - ($w/2);
+               $y = ($this->h/2) - ($h/2);
+         }
+/*-- IMAGES-WMF --*/
+         if ($info['type']=='wmf') { 
+               $sx = $w*_MPDFK / $info['w'];
+               $sy = -$h*_MPDFK / $info['h'];
+               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
+         }
+         else  
+/*-- END IMAGES-WMF --*/
+         if ($info['type']=='svg') { 
+               $sx = $w*_MPDFK / $info['w'];
+               $sy = -$h*_MPDFK / $info['h'];
+               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
+         }
+         else { 
+               $outstring = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q",$w*_MPDFK,$h*_MPDFK,$x*_MPDFK,($this->h-($y+$h))*_MPDFK,$info['i']);
+         }
+
+         if ($this->watermarkImgBehind) { 
+               $outstring = $this->watermarkImgAlpha . "\n" . $outstring . "\n" . $this->SetAlpha(1, 'Normal', true) . "\n";
+               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', "\n".$outstring."\n".'\\1', $this->pages[$this->page]);
+         }
+         else { $this->_out($outstring); }
+
+         return 0;
+       }       // end of IF watermark
+/*-- END WATERMARK --*/
+
+       if ($constrain) {
+         // Automatically resize to maximum dimensions of page if too large
+         if (isset($this->blk[$this->blklvl]['inner_width']) && $this->blk[$this->blklvl]['inner_width']) { $maxw = $this->blk[$this->blklvl]['inner_width']; }
+         else { $maxw = $this->pgwidth; }
+         if ($w > $maxw) {
+               $w = $maxw;
+               $h=abs($w*$info['h']/$info['w']);
+         }
+         if ($h > $this->h - ($this->tMargin + $this->bMargin + 1))  {  // see below - +10 to avoid drawing too close to border of page
+               $h = $this->h - ($this->tMargin + $this->bMargin + 1) ;
+               if ($this->fullImageHeight) { $h = $this->fullImageHeight; }
+               $w=abs($h*$info['w']/$info['h']);
+         }
+
+
+         //Avoid drawing out of the paper(exceeding width limits).
+         //if ( ($x + $w) > $this->fw ) {
+         if ( ($x + $w) > $this->w ) {
+               $x = $this->lMargin;
+               $y += 5;
+         }
+
+         $changedpage = false;
+         $oldcolumn = $this->CurrCol;
+         //Avoid drawing out of the page.
+         if($y+$h>$this->PageBreakTrigger and !$this->InFooter and $this->AcceptPageBreak()) {
+               $this->AddPage($this->CurOrientation);
+               // Added to correct for OddEven Margins
+               $x=$x +$this->MarginCorrection;
+               $y = $tMargin + $this->margin_header;
+               $changedpage = true;
+         }
+/*-- COLUMNS --*/
+         // COLS
+         // COLUMN CHANGE
+         if ($this->CurrCol != $oldcolumn) {
+               $y = $this->y0;
+               $x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+               $this->x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+         }
+/*-- END COLUMNS --*/
+       }       // end of IF constrain
+
+/*-- IMAGES-WMF --*/
+       if ($info['type']=='wmf') { 
+               $sx = $w*_MPDFK / $info['w'];
+               $sy = -$h*_MPDFK / $info['h'];
+               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
+       }
+       else  
+/*-- END IMAGES-WMF --*/
+       if ($info['type']=='svg') { 
+               $sx = $w*_MPDFK / $info['w'];
+               $sy = -$h*_MPDFK / $info['h'];
+               $outstring = sprintf('q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q', $sx, $sy, $x*_MPDFK-$sx*$info['x'], (($this->h-$y)*_MPDFK)-$sy*$info['y'], $info['i']);
+       }
+       else { 
+               $outstring = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /I%d Do Q",$w*_MPDFK,$h*_MPDFK,$x*_MPDFK,($this->h-($y+$h))*_MPDFK,$info['i']);
+       }
+
+       if($paint) {
+               $this->_out($outstring);
+               if($link) $this->Link($x,$y,$w,$h,$link);
+
+               // Avoid writing text on top of the image. // THIS WAS OUTSIDE THE if ($paint) bit!!!!!!!!!!!!!!!!
+               $this->y = $y + $h;
+       }
+
+       //Return width-height array
+       $sizesarray['WIDTH'] = $w;
+       $sizesarray['HEIGHT'] = $h;
+       $sizesarray['X'] = $x; //Position before painting image
+       $sizesarray['Y'] = $y; //Position before painting image
+       $sizesarray['OUTPUT'] = $outstring;
+
+       $sizesarray['IMAGE_ID'] = $info['i'];
+       $sizesarray['itype'] = $info['type'];
+       $sizesarray['set-dpi'] = $info['set-dpi'];
+       return $sizesarray;
+}
+
+
+
+//=============================================================
+//=============================================================
+//=============================================================
+//=============================================================
+//=============================================================
+/*-- HTML-CSS --*/
+
+function _getObjAttr($t) {
+       $c = explode("\xbb\xa4\xac",$t,2);
+       $c = explode(",",$c[1],2);
+       foreach($c as $v) {
+               $v = explode("=",$v,2);
+               $sp[$v[0]] = $v[1];
+       }
+       return (unserialize($sp['objattr']));
+}
+
+
+function inlineObject($type,$x,$y,$objattr,$Lmargin,$widthUsed,$maxWidth,$lineHeight,$paint=false,$is_table=false)
+{
+   if ($is_table) { $k = $this->shrin_k; } else { $k = 1; }
+
+   // NB $x is only used when paint=true
+       // Lmargin not used
+   $w = 0; 
+   if (isset($objattr['width'])) { $w = $objattr['width']/$k; }
+   $h = 0;
+   if (isset($objattr['height'])) { $h = abs($objattr['height']/$k); }
+   $widthLeft = $maxWidth - $widthUsed;
+   $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10) ;
+   if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
+   // For Images
+   if (isset($objattr['border_left'])) {
+       $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left']+ $objattr['margin_right'])/$k;
+       $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top']+ $objattr['margin_bottom'])/$k;
+
+       if ($type == 'image' || $type == 'barcode' || $type == 'textcircle') {
+               $extraWidth += ($objattr['padding_left'] + $objattr['padding_right'])/$k;
+               $extraHeight += ($objattr['padding_top'] + $objattr['padding_bottom'])/$k;
+       }
+   }
+
+   if (!isset($objattr['vertical-align'])) { $objattr['vertical-align'] = 'M'; }
+
+   if ($type == 'image' || (isset($objattr['subtype']) && $objattr['subtype'] == 'IMAGE')) {
+    if (isset($objattr['itype']) && ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg')) {
+       $file = $objattr['file'];
+       $info=$this->formobjects[$file];
+    }
+    else if (isset($objattr['file'])) {
+       $file = $objattr['file'];
+       $info=$this->images[$file];
+    }
+   }
+    if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') {
+       $w = 0.00001;
+       $h = 0.00001;
+   }
+
+   // TEST whether need to skipline
+   if (!$paint) {
+       if ($type == 'hr') {    // always force new line
+               if (($y + $h + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { return array(-2, $w ,$h ); } // New page + new line
+               else { return array(1, $w ,$h ); } // new line
+       }
+       else {
+               if ($widthUsed > 0 && $w > $widthLeft && (!$is_table || $type != 'image')) {    // New line needed
+                       if (($y + $h + $lineHeight > $this->PageBreakTrigger) && !$this->InFooter) { return array(-2,$w ,$h ); } // New page + new line
+                       return array(1,$w ,$h ); // new line
+               }
+               else if ($widthUsed > 0 && $w > $widthLeft && $is_table) {      // New line needed in TABLE
+                       return array(1,$w ,$h ); // new line
+               }
+               // Will fit on line but NEW PAGE REQUIRED
+               else if (($y + $h > $this->PageBreakTrigger) && !$this->InFooter && !$is_table) { return array(-1,$w ,$h ); }
+               else { return array(0,$w ,$h ); }
+       }
+   }
+
+   if ($type == 'annot' || $type == 'bookmark' || $type == 'indexentry' || $type == 'toc') {
+       $w = 0.00001;
+       $h = 0.00001;
+       $objattr['BORDER-WIDTH'] = 0;
+       $objattr['BORDER-HEIGHT'] = 0;
+       $objattr['BORDER-X'] = $x;
+       $objattr['BORDER-Y'] = $y;
+       $objattr['INNER-WIDTH'] = 0;
+       $objattr['INNER-HEIGHT'] = 0;
+       $objattr['INNER-X'] = $x;
+       $objattr['INNER-Y'] = $y;
+  }
+
+  if ($type == 'image') {
+       // Automatically resize to width remaining
+       if ($w > $widthLeft  && !$is_table) {
+               $w = $widthLeft ;
+               $h=abs($w*$info['h']/$info['w']);
+       }
+       $img_w = $w - $extraWidth ;
+       $img_h = $h - $extraHeight ;
+
+       $objattr['BORDER-WIDTH'] = $img_w + $objattr['padding_left']/$k + $objattr['padding_right']/$k + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
+       $objattr['BORDER-HEIGHT'] = $img_h + $objattr['padding_top']/$k + $objattr['padding_bottom']/$k + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
+       $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
+       $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
+       $objattr['INNER-WIDTH'] = $img_w;
+       $objattr['INNER-HEIGHT'] = $img_h;
+       $objattr['INNER-X'] = $x + $objattr['padding_left']/$k + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
+       $objattr['INNER-Y'] = $y + $objattr['padding_top']/$k + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
+       $objattr['ID'] = $info['i'];
+   }
+
+   if ($type == 'input' && $objattr['subtype'] == 'IMAGE') { 
+       $img_w = $w - $extraWidth ;
+       $img_h = $h - $extraHeight ;
+       $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
+       $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
+       $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
+       $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
+       $objattr['INNER-WIDTH'] = $img_w;
+       $objattr['INNER-HEIGHT'] = $img_h;
+       $objattr['INNER-X'] = $x + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
+       $objattr['INNER-Y'] = $y + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
+       $objattr['ID'] = $info['i'];
+   }
+
+  if ($type == 'barcode' || $type == 'textcircle') {
+       $b_w = $w - $extraWidth ;
+       $b_h = $h - $extraHeight ;
+       $objattr['BORDER-WIDTH'] = $b_w + $objattr['padding_left']/$k + $objattr['padding_right']/$k + (($objattr['border_left']['w']/$k + $objattr['border_right']['w']/$k)/2) ;
+       $objattr['BORDER-HEIGHT'] = $b_h + $objattr['padding_top']/$k + $objattr['padding_bottom']/$k + (($objattr['border_top']['w']/$k + $objattr['border_bottom']['w']/$k)/2) ;
+       $objattr['BORDER-X'] = $x + $objattr['margin_left']/$k + (($objattr['border_left']['w']/$k)/2) ;
+       $objattr['BORDER-Y'] = $y + $objattr['margin_top']/$k + (($objattr['border_top']['w']/$k)/2) ;
+       $objattr['INNER-X'] = $x + $objattr['padding_left']/$k + $objattr['margin_left']/$k + ($objattr['border_left']['w']/$k);
+       $objattr['INNER-Y'] = $y + $objattr['padding_top']/$k + $objattr['margin_top']/$k + ($objattr['border_top']['w']/$k) ;
+       $objattr['INNER-WIDTH'] = $b_w;
+       $objattr['INNER-HEIGHT'] = $b_h;
+   }
+
+
+   if ($type == 'textarea') {
+       // Automatically resize to width remaining
+       if ($w > $widthLeft && !$is_table) {
+               $w = $widthLeft ;
+       }
+       if (($y + $h > $this->PageBreakTrigger) && !$this->InFooter) {
+               $h=$this->h - $y - $this->bMargin;
+       }
+   }
+
+   if ($type == 'hr') {
+       if ($is_table) { 
+               $objattr['INNER-WIDTH'] = $maxWidth * $objattr['W-PERCENT']/100; 
+               $objattr['width'] = $objattr['INNER-WIDTH']; 
+               $w = $maxWidth;
+       }
+       else { 
+               if ($w>$maxWidth) { $w = $maxWidth; }
+               $objattr['INNER-WIDTH'] = $w; 
+               $w = $maxWidth;
+       }
+  }
+
+
+
+   if (($type == 'select') || ($type == 'input' && ($objattr['subtype'] == 'TEXT' || $objattr['subtype'] == 'PASSWORD'))) {
+       // Automatically resize to width remaining
+       if ($w > $widthLeft && !$is_table) {
+               $w = $widthLeft;
+       }
+   }
+
+   if ($type == 'textarea' || $type == 'select' || $type == 'input') {
+       if (isset($objattr['fontsize'])) $objattr['fontsize'] /= $k;
+       if (isset($objattr['linewidth'])) $objattr['linewidth'] /= $k;
+   }
+
+   if (!isset($objattr['BORDER-Y'])) { $objattr['BORDER-Y'] = 0; }
+   if (!isset($objattr['BORDER-X'])) { $objattr['BORDER-X'] = 0; }
+   if (!isset($objattr['INNER-Y'])) { $objattr['INNER-Y'] = 0; }
+   if (!isset($objattr['INNER-X'])) { $objattr['INNER-X'] = 0; }
+
+   //Return width-height array
+   $objattr['OUTER-WIDTH'] = $w;
+   $objattr['OUTER-HEIGHT'] = $h;
+   $objattr['OUTER-X'] = $x;
+   $objattr['OUTER-Y'] = $y;
+   return $objattr;
+}
+
+/*-- END HTML-CSS --*/
+
+//=============================================================
+//=============================================================
+//=============================================================
+//=============================================================
+//=============================================================
+
+function SetLineJoin($mode=0)
+{
+       $s=sprintf('%d j',$mode);
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['LineJoin']) && $this->pageoutput[$this->page]['LineJoin'] != $s) || !isset($this->pageoutput[$this->page]['LineJoin']) || $this->keep_block_together)) { $this->_out($s); }
+       $this->pageoutput[$this->page]['LineJoin'] = $s;
+
+}
+function SetLineCap($mode=2) {
+       $s=sprintf('%d J',$mode);
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['LineCap']) && $this->pageoutput[$this->page]['LineCap'] != $s) || !isset($this->pageoutput[$this->page]['LineCap']) || $this->keep_block_together)) { $this->_out($s); }
+       $this->pageoutput[$this->page]['LineCap'] = $s;
+
+}
+
+function SetDash($black=false,$white=false)
+{
+        if($black and $white) $s=sprintf('[%.3F %.3F] 0 d',$black*_MPDFK,$white*_MPDFK);
+        else $s='[] 0 d';
+       if($this->page>0 && ((isset($this->pageoutput[$this->page]['Dash']) && $this->pageoutput[$this->page]['Dash'] != $s) || !isset($this->pageoutput[$this->page]['Dash']) || $this->keep_block_together)) { $this->_out($s); }
+       $this->pageoutput[$this->page]['Dash'] = $s;
+
+}
+
+function SetDisplayPreferences($preferences) {
+       // String containing any or none of /HideMenubar/HideToolbar/HideWindowUI/DisplayDocTitle/CenterWindow/FitWindow
+    $this->DisplayPreferences .= $preferences;
+}
+
+
+function Ln($h='',$collapsible=0)
+{
+// Added collapsible to allow collapsible top-margin on new page
+       //Line feed; default value is last cell height
+       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
+       if ($collapsible && ($this->y==$this->tMargin) && (!$this->ColActive)) { $h = 0; }
+       if(is_string($h)) $this->y+=$this->lasth;
+       else $this->y+=$h;
+}
+
+/*-- HTML-CSS --*/
+// $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
+function DivLn($h,$level=-3,$move_y=true,$collapsible=false,$state=0) {
+  // this->x is returned as it was
+  // adds lines (y) where DIV bgcolors are filled in
+  // allows .00001 as nominal height used for bookmarks/annotations etc.
+  if ($collapsible && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->tMargin)) && (!$this->ColActive)) { return; }
+  if ($collapsible && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->y0)) && ($this->ColActive) && $this->CurrCol == 0) { return; }      // *COLUMNS*
+
+       // Still use this method if columns or page-break-inside: avoid, as it allows repositioning later
+       // otherwise, now uses PaintDivBB()
+  if (!$this->ColActive && !$this->keep_block_together && !$this->kwt) {
+       if ($move_y && !$this->ColActive) { $this->y += $h; }
+       return; 
+  }
+
+  if ($level == -3) { $level = $this->blklvl; }
+  $firstblockfill = $this->GetFirstBlockFill();
+  if ($firstblockfill && $this->blklvl > 0 && $this->blklvl >= $firstblockfill) {
+       $last_x = 0;
+       $last_w = 0;
+       $last_fc = $this->FillColor;
+       $bak_x = $this->x;
+       $bak_h = $this->divheight;
+       $this->divheight = 0;   // Temporarily turn off divheight - as Cell() uses it to check for PageBreak
+       for ($blvl=$firstblockfill;$blvl<=$level;$blvl++) {
+               $this->SetBlockFill($blvl);
+               $this->x = $this->lMargin + $this->blk[$blvl]['outer_left_margin'];
+               if ($last_x != $this->lMargin + $this->blk[$blvl]['outer_left_margin'] || $last_w != $this->blk[$blvl]['width'] || $last_fc != $this->FillColor || $this->blk[$blvl]['border_top']['s'] || $this->blk[$blvl]['border_bottom']['s'] || $this->blk[$blvl]['border_left']['s'] || $this->blk[$blvl]['border_right']['s']) {        // mPDF 5.6.55
+                       $x = $this->x;
+                       $this->Cell( ($this->blk[$blvl]['width']), $h, '', '', 0, '', 1);
+                       if (!$this->keep_block_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) {
+                               $this->x = $x;
+                               // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
+                               if ($blvl == $this->blklvl) { $this->PaintDivLnBorder($state,$blvl,$h); }
+                               else { $this->PaintDivLnBorder(0,$blvl,$h); }
+                       }
+               }
+               $last_x = $this->lMargin + $this->blk[$blvl]['outer_left_margin'];
+               $last_w = $this->blk[$blvl]['width'];
+               $last_fc = $this->FillColor;
+       }
+       // Reset current block fill
+       if (isset($this->blk[$this->blklvl]['bgcolorarray'])) { 
+               $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
+               $this->SetFColor($bcor);
+       }
+       $this->x = $bak_x;
+       $this->divheight = $bak_h;
+  }
+  if ($move_y) { $this->y += $h; }
+}
+/*-- END HTML-CSS --*/
+
+
+function SetX($x)
+{
+       //Set x position
+       if($x >= 0)     $this->x=$x;
+       else $this->x = $this->w + $x;
+}
+
+function SetY($y)
+{
+       //Set y position and reset x
+       $this->x=$this->lMargin;
+       if($y>=0)
+               $this->y=$y;
+       else
+               $this->y=$this->h+$y;
+}
+
+function SetXY($x,$y)
+{
+       //Set x and y positions
+       $this->SetY($y);
+       $this->SetX($x);
+}
+
+
+function Output($name='',$dest='')
+{
+       //Output PDF to some destination
+       if ($this->showStats) {
+               echo '<div>Generated in '.sprintf('%.2F',(microtime(true) - $this->time0)).' seconds</div>';
+       }
+       //Finish document if necessary
+       if ($this->progressBar) { $this->UpdateProgressBar(1,'100','Finished'); }       // *PROGRESS-BAR*
+       if($this->state < 3) $this->Close();
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'100','Finished'); }       // *PROGRESS-BAR*
+       // fn. error_get_last is only in PHP>=5.2
+       if ($this->debug && function_exists('error_get_last') && error_get_last()) {
+          $e = error_get_last(); 
+          if (($e['type'] < 2048 && $e['type'] != 8) || (intval($e['type']) & intval(ini_get("error_reporting")))) {
+               echo "<p>Error message detected - PDF file generation aborted.</p>"; 
+               echo $e['message'].'<br />';
+               echo 'File: '.$e['file'].'<br />';
+               echo 'Line: '.$e['line'].'<br />';
+               exit; 
+          }
+       }
+
+
+       if (($this->PDFA || $this->PDFX) && $this->encrypted) { $this->Error("PDFA1-b or PDFX/1-a does not permit encryption of documents."); }
+       if (count($this->PDFAXwarnings) && (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto))) {
+               if ($this->PDFA) {
+                       echo '<div>WARNING - This file could not be generated as it stands as a PDFA1-b compliant file.</div>';
+                       echo '<div>These issues can be automatically fixed by mPDF using <i>$mpdf-&gt;PDFAauto=true;</i></div>';
+                       echo '<div>Action that mPDF will take to automatically force PDFA1-b compliance are shown in brackets.</div>';
+               }
+               else {
+                       echo '<div>WARNING - This file could not be generated as it stands as a PDFX/1-a compliant file.</div>';
+                       echo '<div>These issues can be automatically fixed by mPDF using <i>$mpdf-&gt;PDFXauto=true;</i></div>';
+                       echo '<div>Action that mPDF will take to automatically force PDFX/1-a compliance are shown in brackets.</div>';
+               }
+               echo '<div>Warning(s) generated:</div><ul>';
+               $this->PDFAXwarnings = array_unique($this->PDFAXwarnings);
+               foreach($this->PDFAXwarnings AS $w) {
+                       echo '<li>'.$w.'</li>';
+               }
+               echo '</ul>';
+               exit;
+       }
+
+       if ($this->showStats) {
+               echo '<div>Compiled in '.sprintf('%.2F',(microtime(true) - $this->time0)).' seconds (total)</div>';
+               echo '<div>Peak Memory usage '.number_format((memory_get_peak_usage(true)/(1024*1024)),2).' MB</div>';
+               echo '<div>PDF file size '.number_format((strlen($this->buffer)/1024)).' kB</div>';
+               echo '<div>Number of fonts '.count($this->fonts).'</div>';
+               exit;
+       }
+
+
+       if(is_bool($dest)) $dest=$dest ? 'D' : 'F';
+       $dest=strtoupper($dest);
+       if($dest=='') {
+               if($name=='') {
+                       $name='mpdf.pdf';
+                       $dest='I';
+               }
+               else { $dest='F'; }
+       }
+
+/*-- PROGRESS-BAR --*/
+       if ($this->progressBar && ($dest=='D' || $dest=='I')) {
+               if($name=='') { $name='mpdf.pdf'; }
+               $tempfile = '_tempPDF'.RAND(1,10000);
+               //Save to local file
+               $f=fopen(_MPDF_TEMP_PATH.$tempfile.'.pdf','wb');
+               if(!$f) $this->Error('Unable to create temporary output file: '.$tempfile.'.pdf');
+               fwrite($f,$this->buffer,strlen($this->buffer));
+               fclose($f);
+               $this->UpdateProgressBar(3,'','Finished');
+
+               echo '<script type="text/javascript">
+
+               var form = document.createElement("form");
+               form.setAttribute("method", "post");
+               form.setAttribute("action", "'._MPDF_URI.'includes/out.php");
+
+               var hiddenField = document.createElement("input");
+               hiddenField.setAttribute("type", "hidden");
+               hiddenField.setAttribute("name", "filename");
+               hiddenField.setAttribute("value", "'.$tempfile.'");
+               form.appendChild(hiddenField);
+
+               var hiddenField = document.createElement("input");
+               hiddenField.setAttribute("type", "hidden");
+               hiddenField.setAttribute("name", "dest");
+               hiddenField.setAttribute("value", "'.$dest.'");
+               form.appendChild(hiddenField);
+
+               var hiddenField = document.createElement("input");
+               hiddenField.setAttribute("type", "hidden");
+               hiddenField.setAttribute("name", "opname");
+               hiddenField.setAttribute("value", "'.$name.'");
+               form.appendChild(hiddenField);
+
+               var hiddenField = document.createElement("input");
+               hiddenField.setAttribute("type", "hidden");
+               hiddenField.setAttribute("name", "path");
+               hiddenField.setAttribute("value", "'.urlencode(_MPDF_TEMP_PATH).'");
+               form.appendChild(hiddenField);
+
+               document.body.appendChild(form); 
+               form.submit();
+
+       </script>
+               </div>
+               </body>
+               </html>';
+               exit;
+       }
+       else {
+               if ($this->progressBar) { $this->UpdateProgressBar(3,'','Finished'); }
+/*-- END PROGRESS-BAR --*/
+
+               switch($dest) {
+                  case 'I':
+                       if ($this->debug && !$this->allow_output_buffering && ob_get_contents()) { echo "<p>Output has already been sent from the script - PDF file generation aborted.</p>"; exit; }
+                       //Send to standard output
+                       if(PHP_SAPI!='cli') {
+                               //We send to a browser
+                               header('Content-Type: application/pdf');
+                               if(headers_sent())
+                                       $this->Error('Some data has already been output to browser, can\'t send PDF file');
+                               if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
+                                       // don't use length if server using compression
+                                       header('Content-Length: '.strlen($this->buffer));
+                               }
+                               header('Content-disposition: inline; filename="'.$name.'"');
+                               header('Cache-Control: public, must-revalidate, max-age=0'); 
+                               header('Pragma: public');
+                               header('Expires: Sat, 26 Jul 1997 05:00:00 GMT'); 
+                               header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                       }
+                       echo $this->buffer;
+                       break;
+                  case 'D':
+                       //Download file
+                       header('Content-Description: File Transfer');
+                       if (headers_sent())
+                               $this->Error('Some data has already been output to browser, can\'t send PDF file');
+                       header('Content-Transfer-Encoding: binary');
+                       header('Cache-Control: public, must-revalidate, max-age=0');
+                       header('Pragma: public');
+                       header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
+                       header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
+                       header('Content-Type: application/force-download');
+                       header('Content-Type: application/octet-stream', false);
+                       header('Content-Type: application/download', false);
+                       header('Content-Type: application/pdf', false);
+                       if (!isset($_SERVER['HTTP_ACCEPT_ENCODING']) OR empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
+                               // don't use length if server using compression
+                               header('Content-Length: '.strlen($this->buffer));
+                       }
+                       header('Content-disposition: attachment; filename="'.$name.'"');
+                       echo $this->buffer;
+                       break;
+                  case 'F':
+                       //Save to local file
+                       $f=fopen($name,'wb');
+                       if(!$f) $this->Error('Unable to create output file: '.$name);
+                       fwrite($f,$this->buffer,strlen($this->buffer));
+                       fclose($f);
+                       break;
+                  case 'S':
+                       //Return as a string
+                       return $this->buffer;
+                  default:
+                       $this->Error('Incorrect output destination: '.$dest);
+               }
+
+       }       // *PROGRESS-BAR*
+       //======================================================================================================
+       // DELETE OLD TMP FILES - Housekeeping
+       // Delete any files in tmp/ directory that are >1 hrs old
+               $interval = 3600;
+               if ($handle = opendir(preg_replace('/\/$/','',_MPDF_TEMP_PATH))) {
+                  while (false !== ($file = readdir($handle))) { 
+                       if (!is_dir($file) && ((filemtime(_MPDF_TEMP_PATH.$file)+$interval) < time()) && ($file != "..") && ($file != ".")) { // mPDF 5.4.19
+                               unlink(_MPDF_TEMP_PATH.$file); 
+                       }
+                  }
+                  closedir($handle); 
+               }
+       //==============================================================================================================
+
+       return '';
+}
+
+
+// *****************************************************************************
+//                                                                             *
+//                             Protected methods                               *
+//                                                                             *
+// *****************************************************************************
+function _dochecks()
+{
+       //Check for locale-related bug
+       if(1.1==1)
+               $this->Error('Don\'t alter the locale before including mPDF');
+       //Check for decimal separator
+       if(sprintf('%.1f',1.0)!='1.0')
+               setlocale(LC_NUMERIC,'C');
+       // mPDF 5.4.11
+       $mqr=ini_get("magic_quotes_runtime");
+       if ($mqr) { $this->Error('mPDF requires magic_quotes_runtime to be turned off e.g. by using ini_set("magic_quotes_runtime", 0);'); }
+}
+
+function _begindoc()
+{
+       //Start document
+       $this->state=1;
+       $this->_out('%PDF-'.$this->pdf_version);
+       $this->_out('%'.chr(226).chr(227).chr(207).chr(211));   // 4 chars > 128 to show binary file
+}
+
+
+/*-- HTMLHEADERS-FOOTERS --*/
+function _puthtmlheaders() {
+       $this->state=2;
+       $nb=$this->page;
+       for($n=1;$n<=$nb;$n++) {
+         if ($this->mirrorMargins && $n%2==0) { $OE = 'E'; }   // EVEN
+         else { $OE = 'O'; }
+         $this->page = $n;
+         if (isset($this->saveHTMLHeader[$n][$OE])) {
+               $html = $this->saveHTMLHeader[$n][$OE]['html'];
+               $this->lMargin = $this->saveHTMLHeader[$n][$OE]['ml'];
+               $this->rMargin = $this->saveHTMLHeader[$n][$OE]['mr'];
+               $this->tMargin = $this->saveHTMLHeader[$n][$OE]['mh'];
+               $this->bMargin = $this->saveHTMLHeader[$n][$OE]['mf'];
+               $this->margin_header = $this->saveHTMLHeader[$n][$OE]['mh'];
+               $this->margin_footer = $this->saveHTMLHeader[$n][$OE]['mf'];
+               $this->w = $this->saveHTMLHeader[$n][$OE]['pw'];
+               $this->h = $this->saveHTMLHeader[$n][$OE]['ph'];
+               $rotate = (isset($this->saveHTMLHeader[$n][$OE]['rotate']) ? $this->saveHTMLHeader[$n][$OE]['rotate'] : null);
+               $this->Reset();
+               $this->pageoutput[$n] = array();
+               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+               $this->x = $this->lMargin;
+               $this->y = $this->margin_header;
+               // mPDF 5.6.47
+               $pn = $this->docPageNum($n);
+               if ($pn)
+                       $pnstr = $this->pagenumPrefix.$pn.$this->pagenumSuffix;
+               else { $pnstr = ''; }
+               $html = str_replace('{PAGENO}',$pnstr,$html);
+               $pnt = $this->docPageNumTotal($n);
+               if ($pnt)
+                       $pntstr = $this->nbpgPrefix.$pnt.$this->nbpgSuffix;
+               else { $pntstr = ''; }
+               $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg}
+               $html = str_replace($this->aliasNbPg,$nb,$html );       // {nb}
+               $html = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$html );
+
+               $this->HTMLheaderPageLinks = array();
+               $this->HTMLheaderPageAnnots = array();
+               $this->HTMLheaderPageForms = array();
+               $this->pageBackgrounds = array();
+
+               $this->writingHTMLheader = true;
+               $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
+               $this->writingHTMLheader = false;
+               $this->Reset();
+               $this->pageoutput[$n] = array();
+
+               $s = $this->PrintPageBackgrounds();
+               $this->headerbuffer = $s . $this->headerbuffer;
+               $os = '';
+               if ($rotate) {
+                       $os .= sprintf('q 0 -1 1 0 0 %.3F cm ',($this->w*_MPDFK));
+               }
+               $os .= $this->headerbuffer ;
+               if ($rotate) {
+                       $os .= ' Q' . "\n";
+               }
+
+               // Writes over the page background but behind any other output on page
+               $os = preg_replace('/\\\\/','\\\\\\\\',$os);
+               $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.date('jY').')/', "\n".$os."\n".'\\1', $this->pages[$n]);
+
+               $lks = $this->HTMLheaderPageLinks; 
+               foreach($lks AS $lk) {
+                       if ($rotate) {
+                               $lw = $lk[2];
+                               $lh = $lk[3];
+                               $lk[2] = $lh;
+                               $lk[3] = $lw;   // swap width and height
+                               $ax = $lk[0]/_MPDFK;
+                               $ay = $lk[1]/_MPDFK;
+                               $bx = $ay-($lh/_MPDFK);
+                               $by = $this->w-$ax;
+                               $lk[0] = $bx*_MPDFK;
+                               $lk[1] = ($this->h-$by)*_MPDFK - $lw;
+                       }
+                       $this->PageLinks[$n][]=$lk;
+               }
+/*-- FORMS --*/
+               foreach($this->HTMLheaderPageForms AS $f) {
+                       $this->form->forms[$f['n']] = $f;
+               }
+/*-- END FORMS --*/
+
+
+         }
+         if (isset($this->saveHTMLFooter[$n][$OE])) {
+               $html = $this->saveHTMLFooter[$this->page][$OE]['html'];
+               $this->lMargin = $this->saveHTMLFooter[$n][$OE]['ml'];
+               $this->rMargin = $this->saveHTMLFooter[$n][$OE]['mr'];
+               $this->tMargin = $this->saveHTMLFooter[$n][$OE]['mh'];
+               $this->bMargin = $this->saveHTMLFooter[$n][$OE]['mf'];
+               $this->margin_header = $this->saveHTMLFooter[$n][$OE]['mh'];
+               $this->margin_footer = $this->saveHTMLFooter[$n][$OE]['mf'];
+               $this->w = $this->saveHTMLFooter[$n][$OE]['pw'];
+               $this->h = $this->saveHTMLFooter[$n][$OE]['ph'];
+               $rotate = (isset($this->saveHTMLFooter[$n][$OE]['rotate']) ? $this->saveHTMLFooter[$n][$OE]['rotate'] : null);
+               $this->Reset();
+               $this->pageoutput[$n] = array();
+               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+               $this->x = $this->lMargin;
+               $top_y = $this->y = $this->h - $this->margin_footer;
+
+               // if bottom-margin==0, corrects to avoid division by zero
+               if ($this->y == $this->h) { $top_y = $this->y = ($this->h - 0.1); }
+               // mPDF 5.6.47
+               $pn = $this->docPageNum($n);
+               if ($pn)
+                       $pnstr = $this->pagenumPrefix.$pn.$this->pagenumSuffix;
+               else { $pnstr = ''; }
+               $html = str_replace('{PAGENO}',$pnstr,$html);
+               $pnt = $this->docPageNumTotal($n);
+               if ($pnt)
+                       $pntstr = $this->nbpgPrefix.$pnt.$this->nbpgSuffix;
+               else { $pntstr = ''; }
+               $html = str_replace($this->aliasNbPgGp,$pntstr,$html ); // {nbpg}
+               $html = str_replace($this->aliasNbPg,$nb,$html );       // {nb}
+               $html = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$html );
+
+
+               $this->HTMLheaderPageLinks = array();
+               $this->HTMLheaderPageAnnots = array();
+               $this->HTMLheaderPageForms = array();
+               $this->pageBackgrounds = array();
+
+               $this->writingHTMLfooter = true;
+               $this->InFooter = true;
+               $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
+               $this->writingHTMLfooter = false;
+               $this->InFooter = false;
+               $this->Reset();
+               $this->pageoutput[$n] = array();
+
+               $fheight = $this->y - $top_y;
+               $adj = -$fheight;
+
+               $s = $this->PrintPageBackgrounds(-$adj);
+               $this->headerbuffer = $s . $this->headerbuffer;
+
+               $os = '';
+               $os .= $this->StartTransform(true)."\n";
+               if ($rotate) {
+                       $os .= sprintf('q 0 -1 1 0 0 %.3F cm ',($this->w*_MPDFK));
+               }
+               $os .= $this->transformTranslate(0, $adj, true)."\n";
+               $os .= $this->headerbuffer ;
+               if ($rotate) {
+                       $os .= ' Q' . "\n";
+               }
+               $os .= $this->StopTransform(true)."\n";
+               // Writes over the page background but behind any other output on page
+               $os = preg_replace('/\\\\/','\\\\\\\\',$os);
+               $this->pages[$n] = preg_replace('/(___HEADER___MARKER'.date('jY').')/', "\n".$os."\n".'\\1', $this->pages[$n]);
+
+               $lks = $this->HTMLheaderPageLinks; 
+               foreach($lks AS $lk) {
+                       $lk[1] -= $adj*_MPDFK;
+                       if ($rotate) {
+                               $lw = $lk[2];
+                               $lh = $lk[3];
+                               $lk[2] = $lh;
+                               $lk[3] = $lw;   // swap width and height
+
+                               $ax = $lk[0]/_MPDFK;
+                               $ay = $lk[1]/_MPDFK;
+                               $bx = $ay-($lh/_MPDFK);
+                               $by = $this->w-$ax;
+                               $lk[0] = $bx*_MPDFK;
+                               $lk[1] = ($this->h-$by)*_MPDFK - $lw;
+                       }
+                       $this->PageLinks[$n][]=$lk;
+               }
+/*-- FORMS --*/
+               foreach($this->HTMLheaderPageForms AS $f) {
+                       $f['y'] += $adj;
+                       $this->form->forms[$f['n']] = $f;
+               }
+/*-- END FORMS --*/
+         }
+       }
+       $this->page=$nb;
+       $this->state=1;
+}
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+
+function _putpages()
+{
+       $nb=$this->page;
+       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+
+       if($this->DefOrientation=='P') {
+               $defwPt=$this->fwPt;
+               $defhPt=$this->fhPt;
+       }
+       else {
+               $defwPt=$this->fhPt;
+               $defhPt=$this->fwPt;
+       }
+       $annotid=(3+2*$nb);
+
+       // Active Forms
+       $totaladdnum = 0;
+       for($n=1;$n<=$nb;$n++) {
+               if (isset($this->PageLinks[$n])) { $totaladdnum += count($this->PageLinks[$n]); }
+/*-- ANNOTATIONS --*/
+               if (isset($this->PageAnnots[$n])) { 
+                       foreach ($this->PageAnnots[$n] as $k => $pl) {
+                               if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { $totaladdnum += 2 ; }
+                               else { $totaladdnum++; }
+                       }
+               }
+/*-- END ANNOTATIONS --*/
+
+/*-- FORMS --*/
+               if ( count($this->form->forms) > 0 ) {
+                       $this->form->countPageForms($n, $totaladdnum);
+               }
+/*-- END FORMS --*/
+       }
+/*-- FORMS --*/
+       // Make a note in the radio button group of the obj_id it will have
+       $ctr = 0;
+       if (count($this->form->form_radio_groups)) {
+               foreach($this->form->form_radio_groups AS $name=>$frg) {
+                       $this->form->form_radio_groups[$name]['obj_id'] = $annotid + $totaladdnum + $ctr;
+                       $ctr++;
+               }
+       }
+/*-- END FORMS --*/
+
+       // Select unused fonts (usually default font)
+       $unused = array();
+       foreach($this->fonts as $fk=>$font) {
+          if (!$font['used'] && ($font['type']=='TTF')) { 
+               $unused[] = $fk;
+          }
+       }
+
+
+       for($n=1;$n<=$nb;$n++)
+       {
+               $thispage = $this->pages[$n];
+//             unset($this->pages[$n]);        // mPDF 5.6.47
+               if(isset($this->OrientationChanges[$n])) { 
+                       $hPt=$this->pageDim[$n]['w']*_MPDFK;
+                       $wPt=$this->pageDim[$n]['h']*_MPDFK;
+                       $owidthPt_LR = $this->pageDim[$n]['outer_width_TB']*_MPDFK;
+                       $owidthPt_TB = $this->pageDim[$n]['outer_width_LR']*_MPDFK;
+               }
+               else { 
+                       $wPt=$this->pageDim[$n]['w']*_MPDFK;
+                       $hPt=$this->pageDim[$n]['h']*_MPDFK;
+                       $owidthPt_LR = $this->pageDim[$n]['outer_width_LR']*_MPDFK;
+                       $owidthPt_TB = $this->pageDim[$n]['outer_width_TB']*_MPDFK;
+               }
+               // Remove references to unused fonts (usually default font)
+               foreach($unused as $fk) {
+                       if ($this->fonts[$fk]['sip'] || $this->fonts[$fk]['smp']) {
+                               foreach($this->fonts[$fk]['subsetfontids'] AS $k => $fid) {
+                                               $thispage = preg_replace('/\s\/F'.$fid.' \d[\d.]* Tf\s/is',' ',$thispage); 
+                               }
+                       }
+                       else { 
+                               $thispage = preg_replace('/\s\/F'.$this->fonts[$fk]['i'].' \d[\d.]* Tf\s/is',' ',$thispage); 
+                       }
+               }
+               //Replace number of pages
+               if(!empty($this->aliasNbPg)) {
+                       if (!$this->onlyCoreFonts) { $s1 = $this->UTF8ToUTF16BE($this->aliasNbPg, false); }
+                       $s2 = $this->aliasNbPg;
+                       if (!$this->onlyCoreFonts) { $r1 = $this->UTF8ToUTF16BE($nb, false); }
+                       $r2 = $nb;
+                       if (preg_match_all('/{mpdfheadernbpg (C|R) ff=(\S*) fs=(\S*) fz=(.*?)}/',$thispage,$m)) {
+                               for($hi=0;$hi<count($m[0]);$hi++) {
+                                       $pos = $m[1][$hi];
+                                       $hff = $m[2][$hi];
+                                       $hfst = $m[3][$hi];
+                                       $hfsz = $m[4][$hi];
+                                       $this->SetFont($hff,$hfst,$hfsz, false);
+                                       $x1 = $this->GetStringWidth($this->aliasNbPg);
+                                       $x2 = $this->GetStringWidth($nb);
+                                       $xadj = $x1 - $x2;
+                                       if ($pos=='C') { $xadj /= 2; }
+                                       $rep = sprintf(' q 1 0 0 1 %.3F 0 cm ', $xadj*_MPDFK); 
+                                       $thispage = str_replace($m[0][$hi], $rep, $thispage);
+                               }
+                       }
+                       if (!$this->onlyCoreFonts) { $thispage=str_replace($s1,$r1,$thispage); }
+                       $thispage=str_replace($s2,$r2,$thispage);
+
+                       // And now for any SMP/SIP fonts subset using <HH> format
+                       $r = '';
+                       $nstr = "$nb";
+                       for($i=0;$i<strlen($nstr);$i++) {
+                               $r .= sprintf("%02s", strtoupper(dechex(intval($nstr[$i])+48))); 
+                       }
+                       $thispage=str_replace($this->aliasNbPgHex,$r,$thispage);
+
+               }
+               //Replace number of pages in group
+               if(!empty($this->aliasNbPgGp)) {
+                       if (!$this->onlyCoreFonts) { $s1 = $this->UTF8ToUTF16BE($this->aliasNbPgGp, false); }
+                       $s2 = $this->aliasNbPgGp; 
+                       $nbt = $this->docPageNumTotal($n);
+                       if (!$this->onlyCoreFonts) { $r1 = $this->UTF8ToUTF16BE($nbt, false); } 
+                       $r2 = $nbt;
+                       if (preg_match_all('/{mpdfheadernbpggp (C|R) ff=(\S*) fs=(\S*) fz=(.*?)}/',$thispage,$m)) {
+                               for($hi=0;$hi<count($m[0]);$hi++) {
+                                       $pos = $m[1][$hi];
+                                       $hff = $m[2][$hi];
+                                       $hfst = $m[3][$hi];
+                                       $hfsz = $m[4][$hi];
+                                       $this->SetFont($hff,$hfst,$hfsz, false);
+                                       $x1 = $this->GetStringWidth($this->aliasNbPgGp);
+                                       $x2 = $this->GetStringWidth($nbt);
+                                       $xadj = $x1 - $x2;
+                                       if ($pos=='C') { $xadj /= 2; }
+                                       $rep = sprintf(' q 1 0 0 1 %.3F 0 cm ', $xadj*_MPDFK); 
+                                       $thispage = str_replace($m[0][$hi], $rep, $thispage);
+                               }
+                       }
+                       if (!$this->onlyCoreFonts) { $thispage=str_replace($s1,$r1,$thispage); }
+                       $thispage=str_replace($s2,$r2,$thispage);
+
+                       // And now for any SMP/SIP fonts subset using <HH> format
+                       $r = '';
+                       $nstr = "$nbt";
+                       for($i=0;$i<strlen($nstr);$i++) {
+                               $r .= sprintf("%02s", strtoupper(dechex(intval($nstr[$i])+48))); 
+                       }
+                       $thispage=str_replace($this->aliasNbPgGpHex,$r,$thispage);
+
+               }
+               $thispage = preg_replace('/(\s*___BACKGROUND___PATTERNS'.date('jY').'\s*)/', " ", $thispage);
+               $thispage = preg_replace('/(\s*___HEADER___MARKER'.date('jY').'\s*)/', " ", $thispage);
+               $thispage = preg_replace('/(\s*___PAGE___START'.date('jY').'\s*)/', " ", $thispage);
+               $thispage = preg_replace('/(\s*___TABLE___BACKGROUNDS'.date('jY').'\s*)/', " ", $thispage);
+
+               //Page
+               $this->_newobj();
+               $this->_out('<</Type /Page');
+               $this->_out('/Parent 1 0 R');
+               if(isset($this->OrientationChanges[$n])) {
+                       $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$hPt,$wPt));
+                       //If BleedBox is defined, it must be larger than the TrimBox, but smaller than the MediaBox
+                       $bleedMargin = $this->pageDim[$n]['bleedMargin']*_MPDFK;
+                       if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) {
+                               $x0 = $owidthPt_TB-$bleedMargin;
+                               $y0 = $owidthPt_LR-$bleedMargin;
+                               $x1 = $hPt-$owidthPt_TB+$bleedMargin;
+                               $y1 = $wPt-$owidthPt_LR+$bleedMargin;
+                               $this->_out(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1));
+                       }
+                       $this->_out(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_TB, $owidthPt_LR, ($hPt-$owidthPt_TB), ($wPt-$owidthPt_LR)));   
+                       if (isset($this->OrientationChanges[$n]) && $this->displayDefaultOrientation) {
+                               if ($this->DefOrientation=='P') { $this->_out('/Rotate 270'); }
+                               else { $this->_out('/Rotate 90'); }
+                       }
+               }
+               //else if($wPt != $defwPt || $hPt != $defhPt) {
+               else {
+                       $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$wPt,$hPt));
+                       $bleedMargin = $this->pageDim[$n]['bleedMargin']*_MPDFK;
+                       if ($bleedMargin && ($owidthPt_TB || $owidthPt_LR)) {
+                               $x0 = $owidthPt_LR-$bleedMargin;
+                               $y0 = $owidthPt_TB-$bleedMargin;
+                               $x1 = $wPt-$owidthPt_LR+$bleedMargin;
+                               $y1 = $hPt-$owidthPt_TB+$bleedMargin;
+                               $this->_out(sprintf('/BleedBox [%.3F %.3F %.3F %.3F]', $x0, $y0, $x1, $y1));
+                       }
+                       $this->_out(sprintf('/TrimBox [%.3F %.3F %.3F %.3F]', $owidthPt_LR, $owidthPt_TB, ($wPt-$owidthPt_LR), ($hPt-$owidthPt_TB)));   
+               }
+               $this->_out('/Resources 2 0 R');
+
+               // Important to keep in RGB colorSpace when using transparency
+               if (!$this->PDFA && !$this->PDFX) { 
+                       if ($this->restrictColorSpace == 3)
+                               $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceCMYK >> ');
+                       else if ($this->restrictColorSpace == 1)
+                               $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceGray >> ');
+                       else 
+                               $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceRGB >> ');
+               }
+
+               $annotsnum = 0;
+               if (isset($this->PageLinks[$n])) { $annotsnum += count($this->PageLinks[$n]); }
+/*-- ANNOTATIONS --*/
+               if (isset($this->PageAnnots[$n])) { 
+                       foreach ($this->PageAnnots[$n] as $k => $pl) {
+                               if (!empty($pl['opt']['popup']) || !empty($pl['opt']['file'])) { $annotsnum += 2 ; }
+                               else { $annotsnum++; }
+                               $this->PageAnnots[$n][$k]['pageobj'] = $this->n;
+                       }
+               }
+/*-- END ANNOTATIONS --*/
+
+/*-- FORMS --*/
+               // Active Forms
+               $formsnum = 0;
+               if ( count($this->form->forms) > 0 ) {
+                       foreach( $this->form->forms as $val ) {
+                               if ( $val['page'] == $n )
+                                       $formsnum++;
+                       }
+               }
+/*-- END FORMS --*/
+               if ($annotsnum || $formsnum) {
+                       $s = '/Annots [ ';
+                       for($i=0;$i<$annotsnum;$i++) { 
+                               $s .= ($annotid + $i) . ' 0 R ';
+                       } 
+                       $annotid += $annotsnum;
+/*-- FORMS --*/
+                       if ( count($this->form->forms) > 0 ) {
+                               $this->form->addFormIds($n, $s, $annotid);
+                       }
+/*-- END FORMS --*/
+                       $s .= '] ';
+                       $this->_out($s);
+               }
+
+               $this->_out('/Contents '.($this->n+1).' 0 R>>');
+               $this->_out('endobj');
+
+               //Page content
+               $this->_newobj();
+               $p=($this->compress) ? gzcompress($thispage) : $thispage;
+               $this->_out('<<'.$filter.'/Length '.strlen($p).'>>');
+               $this->_putstream($p);
+               $this->_out('endobj');
+       }
+       $this->_putannots($n);
+
+       //Pages root
+       $this->offsets[1]=strlen($this->buffer);
+       $this->_out('1 0 obj');
+       $this->_out('<</Type /Pages');
+       $kids='/Kids [';
+       for($i=0;$i<$nb;$i++)
+               $kids.=(3+2*$i).' 0 R ';
+       $this->_out($kids.']');
+       $this->_out('/Count '.$nb);
+       $this->_out(sprintf('/MediaBox [0 0 %.3F %.3F]',$defwPt,$defhPt));
+       $this->_out('>>');
+       $this->_out('endobj');
+}
+
+
+function _putannots($n) {
+       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+       $nb=$this->page;
+       for($n=1;$n<=$nb;$n++)
+       {
+               $annotobjs = array();
+               if(isset($this->PageLinks[$n]) || isset($this->PageAnnots[$n]) || count($this->form->forms) > 0 ) {
+                       $wPt=$this->pageDim[$n]['w']*_MPDFK;
+                       $hPt=$this->pageDim[$n]['h']*_MPDFK;
+
+                       //Links
+                       if(isset($this->PageLinks[$n])) {
+                          foreach($this->PageLinks[$n] as $key => $pl) {
+                               $this->_newobj();
+                               $annot='';
+                               $rect=sprintf('%.3F %.3F %.3F %.3F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]);
+                               $annot .= '<</Type /Annot /Subtype /Link /Rect ['.$rect.']';
+                               $annot .= ' /Contents '.$this->_UTF16BEtextstring($pl[4]);
+                               $annot .= ' /NM '.$this->_textstring(sprintf('%04u-%04u', $n, $key));
+                               $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
+                               $annot .= ' /Border [0 0 0]';
+                               // Use this (instead of /Border) to specify border around link
+               //              $annot .= ' /BS <</W 1';        // Width on points; 0 = no line
+               //              $annot .= ' /S /D';             // style - [S]olid, [D]ashed, [B]eveled, [I]nset, [U]nderline
+               //              $annot .= ' /D [3 2]';          // Dash array - if dashed
+               //              $annot .= ' >>';
+               //              $annot .= ' /C [1 0 0]';        // Color RGB
+
+                               if ($this->PDFA || $this->PDFX) { $annot .= ' /F 28'; }
+                               if (strpos($pl[4],'@')===0) {
+                                       $p=substr($pl[4],1);
+                                       //      $h=isset($this->OrientationChanges[$p]) ? $wPt : $hPt;
+                                       $htarg=$this->pageDim[$p]['h']*_MPDFK;
+                                       $annot.=sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>',1+2*$p,$htarg);
+                               }
+                               else if(is_string($pl[4])) {
+                                       $annot .= ' /A <</S /URI /URI '.$this->_textstring($pl[4]).'>> >>';
+                               }
+                               else {
+                                       $l=$this->links[$pl[4]];
+                                       // may not be set if #link points to non-existent target
+                                       if (isset($this->pageDim[$l[0]]['h'])) { $htarg=$this->pageDim[$l[0]]['h']*_MPDFK; }
+                                       else { $htarg=$this->h*_MPDFK; } // doesn't really matter
+                                       $annot.=sprintf(' /Dest [%d 0 R /XYZ 0 %.3F null]>>',1+2*$l[0],$htarg-$l[1]*_MPDFK);
+                               }
+                               $this->_out($annot);
+                               $this->_out('endobj');
+                          }
+                       }
+
+
+/*-- ANNOTATIONS --*/
+                       if(isset($this->PageAnnots[$n])) {
+                          foreach ($this->PageAnnots[$n] as $key => $pl) {
+                               if ($pl['opt']['file']) { $FileAttachment=true; }
+                               else { $FileAttachment=false; }
+                               $this->_newobj();
+                               $annot='';
+                               $pl['opt'] = array_change_key_case($pl['opt'], CASE_LOWER);
+                               $x = $pl['x']; 
+                               if ($this->annotMargin <> 0 || $x==0 || $x<0) { // Odd page
+                                  $x = ($wPt/_MPDFK) - $this->annotMargin;
+                               }
+                               $w = $h = 0;
+                               $a = $x * _MPDFK;
+                               $b = $hPt - ($pl['y']  * _MPDFK);
+                               $annot .= '<</Type /Annot ';
+                               if ($FileAttachment) { 
+                                       $annot .= '/Subtype /FileAttachment'; 
+                                       // Need to set a size for FileAttachment icons
+                                       if ($pl['opt']['icon']=='Paperclip') { $w=8.235; $h=20; }       // 7,17
+                                       else if ($pl['opt']['icon']=='Tag') { $w=20; $h=16; }
+                                       else if ($pl['opt']['icon']=='Graph') { $w=20; $h=20; }
+                                       else { $w=14; $h=20; }  // PushPin 
+                                       $f = $pl['opt']['file'];
+                                       $f = preg_replace('/^.*\//', '', $f);
+                                       $f = preg_replace('/[^a-zA-Z0-9._]/', '', $f);
+                                       $annot .= '/FS <</Type /Filespec /F ('.$f.')';
+                                       $annot .= '/EF <</F '.($this->n+1).' 0 R>>';
+                                       $annot .= '>>';
+                               }
+                               else { 
+                                       $annot .= '/Subtype /Text'; 
+                               }
+                               $rect = sprintf('%.3F %.3F %.3F %.3F', $a, $b-$h, $a+$w, $b);
+                               $annot .= '/Rect ['.$rect.']';
+
+                               // contents = description of file in free text
+                               $annot .= ' /Contents '.$this->_UTF16BEtextstring($pl['txt']);
+                               $annot .= ' /NM '.$this->_textstring(sprintf('%04u-%04u', $n, (2000 + $key)));
+                               $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
+                               $annot .= ' /CreationDate '.$this->_textstring('D:'.date('YmdHis'));
+                               $annot .= ' /Border [0 0 0]';
+                               if ($this->PDFA || $this->PDFX) { 
+                                       $annot .= ' /F 28'; 
+                                       $annot .= ' /CA 1'; 
+                               }
+                               else if ($pl['opt']['ca']>0) { $annot .= ' /CA '.$pl['opt']['ca']; }
+
+                               $annotcolor = ' /C [';
+                               if (isset($pl['opt']['c']) AND $pl['opt']['c']) {
+                                       $col = $pl['opt']['c'];
+                                       if ($col{0}==3 || $col{0}==5) { $annotcolor .= sprintf("%.3F %.3F %.3F", ord($col{1})/255,ord($col{2})/255,ord($col{3})/255); }
+                                       else if ($col{0}==1) { $annotcolor .= sprintf("%.3F", ord($col{1})/255); }
+                                       else if ($col{0}==4 || $col{0}==6) { $annotcolor .= sprintf("%.3F %.3F %.3F %.3F", ord($col{1})/100,ord($col{2})/100,ord($col{3})/100,ord($col{4})/100); }
+                                       else { $annotcolor .= '1 1 0'; }
+                               }
+                               else { $annotcolor .= '1 1 0'; }
+                               $annotcolor .= ']';
+                               $annot .= $annotcolor;
+                               // Usually Author
+                               // Use as Title for fileattachment
+                               if (isset($pl['opt']['t']) AND is_string($pl['opt']['t'])) {
+                                       $annot .= ' /T '.$this->_UTF16BEtextstring($pl['opt']['t']);
+                               }
+                               if ($FileAttachment) {
+                                       $iconsapp = array('Paperclip', 'Graph', 'PushPin', 'Tag'); 
+                               }
+                               else { $iconsapp = array('Comment', 'Help', 'Insert', 'Key', 'NewParagraph', 'Note', 'Paragraph'); }
+                               if (isset($pl['opt']['icon']) AND in_array($pl['opt']['icon'], $iconsapp)) {
+                                       $annot .= ' /Name /'.$pl['opt']['icon'];
+                               }
+                               else if ($FileAttachment) { $annot .= ' /Name /PushPin'; }
+                               else { $annot .= ' /Name /Note'; }
+                               if (!$FileAttachment) {
+                                       // /Subj is PDF 1.5 spec.
+                                       if (isset($pl['opt']['subj']) && !$this->PDFA && !$this->PDFX) {
+                                               $annot .= ' /Subj '.$this->_UTF16BEtextstring($pl['opt']['subj']);
+                                       }
+                                       if (!empty($pl['opt']['popup'])) { 
+                                               $annot .= ' /Open true'; 
+                                               $annot .= ' /Popup '.($this->n+1).' 0 R';
+                                       }
+                                       else { $annot .= ' /Open false'; }
+                               }
+                               $annot .= ' /P '.$pl['pageobj'].' 0 R';
+                               $annot .= '>>';
+                               $this->_out($annot);
+                               $this->_out('endobj');
+
+                               if ($FileAttachment) { 
+                                       $file = @file_get_contents($pl['opt']['file']) or die('mPDF Error: Cannot access file attachment - '.$pl['opt']['file']);
+                                       $filestream = gzcompress($file);
+                                       $this->_newobj();
+                                       $this->_out('<</Type /EmbeddedFile');
+                                       $this->_out('/Length '.strlen($filestream));
+                                       $this->_out('/Filter /FlateDecode');
+                                       $this->_out('>>');
+                                       $this->_putstream($filestream);
+                                       $this->_out('endobj');
+                               }
+                               else if (!empty($pl['opt']['popup'])) { 
+                                       $this->_newobj();
+                                       $annot='';
+                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][0])) { $x = $pl['opt']['popup'][0] * _MPDFK; }
+                                       else { $x = $pl['x'] * _MPDFK; }
+                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][1])) { $y = $hPt - ($pl['opt']['popup'][1] * _MPDFK); }
+                                       else { $y = $hPt - ($pl['y']  * _MPDFK); }
+                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][2])) { $w = $pl['opt']['popup'][2] * _MPDFK; }
+                                       else { $w = 180; }
+                                       if (is_array($pl['opt']['popup']) && isset($pl['opt']['popup'][3])) { $h = $pl['opt']['popup'][3] * _MPDFK; }
+                                       else { $h = 120; }
+                                       $rect = sprintf('%.3F %.3F %.3F %.3F', $x, $y-$h, $x+$w, $y);
+                                       $annot .= '<</Type /Annot /Subtype /Popup /Rect ['.$rect.']';
+                                       $annot .= ' /M '.$this->_textstring('D:'.date('YmdHis'));
+                                       if ($this->PDFA || $this->PDFX) { $annot .= ' /F 28'; }
+                                       $annot .= ' /Parent '.($this->n-1).' 0 R';
+                                       $annot .= '>>';
+                                       $this->_out($annot);
+                                       $this->_out('endobj');
+                               }
+                          }
+                       }
+/*-- END ANNOTATIONS --*/
+
+/*-- FORMS --*/
+                       // Active Forms
+                       if ( count($this->form->forms) > 0 ) {
+                               $this->form->_putFormItems($n, $hPt);
+                       }
+/*-- END FORMS --*/
+               }
+       }
+/*-- FORMS --*/
+       // Active Forms - Radio Button Group entries
+       // Output Radio Button Group form entries (radio_on_obj_id already determined)
+       if (count($this->form->form_radio_groups)) {
+               $this->form->_putRadioItems($n);
+       }
+/*-- END FORMS --*/
+}
+
+
+/*-- ANNOTATIONS --*/
+function Annotation($text, $x=0, $y=0, $icon='Note', $author='', $subject='', $opacity=0, $colarray=false, $popup='', $file='') {
+       if (is_array($colarray) && count($colarray)==3) { $colarray = $this->ConvertColor('rgb('.$colarray[0].','.$colarray[1].','.$colarray[2].')'); }
+       if ($colarray === false) { $colarray = $this->ConvertColor('yellow'); }
+       if ($x==0) { $x = $this->x; }
+       if ($y==0) { $y = $this->y; }
+       $page = $this->page;
+       if ($page < 1) {        // Document has not been started - assume it's for first page
+               $page = 1;
+               if ($x==0) { $x = $this->lMargin; }
+               if ($y==0) { $y = $this->tMargin; }
+       }
+
+       if ($this->PDFA || $this->PDFX) {
+               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Annotation markers cannot be semi-transparent in PDFA1-b or PDFX/1-a, so they may make underlying text unreadable. (Annotation markers moved to right margin)"; }
+               $x = ($this->w) - $this->rMargin*0.66;
+       }
+       if (!$this->annotMargin) { $y -= $this->FontSize / 2; }
+
+       if (!$opacity && $this->annotMargin) { $opacity = 1; }
+       else if (!$opacity) { $opacity = $this->annotOpacity; }
+
+       $an = array('txt' => $text, 'x' => $x, 'y' => $y, 'opt' => array('Icon'=>$icon, 'T'=>$author, 'Subj'=>$subject, 'C'=>$colarray, 'CA'=>$opacity, 'popup'=>$popup, 'file'=>$file));
+
+       if ($this->keep_block_together) {       // Save to array - don't write yet
+               $this->ktAnnots[$this->page][]= $an;
+               return;
+       }
+       else if ($this->table_rotate) {
+               $this->tbrot_Annots[$this->page][]= $an;
+               return;
+       }
+       else if ($this->kwt) {
+               $this->kwt_Annots[$this->page][]= $an;
+               return;
+       }
+       // mPDF 5.0 
+       if ($this->writingHTMLheader || $this->writingHTMLfooter) {
+               $this->HTMLheaderPageAnnots[]= $an;
+               return;
+       }
+       //Put an Annotation on the page
+       $this->PageAnnots[$page][] = $an;
+/*-- COLUMNS --*/
+       // Save cross-reference to Column buffer
+       $ref = count($this->PageAnnots[$this->page])-1;
+       $this->columnAnnots[$this->CurrCol][INTVAL($this->x)][INTVAL($this->y)] = $ref;
+/*-- END COLUMNS --*/
+}
+/*-- END ANNOTATIONS --*/
+
+
+function _putfonts() {
+       $nf=$this->n;
+       foreach($this->FontFiles as $fontkey=>$info) {
+          // TrueType embedded
+          if (isset($info['type']) && $info['type']=='TTF' && !$info['sip'] && !$info['smp']) {
+               $used = true;
+               $asSubset = false;
+               foreach($this->fonts AS $k=>$f) {
+                       if ($f['fontkey'] == $fontkey && $f['type']=='TTF') { 
+                               $used = $f['used']; 
+                               if ($used) {
+                                       $nChars = (ord($f['cw'][0]) << 8) + ord($f['cw'][1]);
+                                       $usage = intval(count($f['subset'])*100 / $nChars);
+                                       $fsize = $info['length1'];
+                                       // Always subset the very large TTF files
+                                       if ($fsize > ($this->maxTTFFilesize *1024)) { $asSubset = true; }
+                                       else if ($usage < $this->percentSubset) { $asSubset = true; }
+                               }
+                               if ($f['unAGlyphs']) $aaSubset = true;  // mPDF 5.4.05
+                               if ($this->PDFA || $this->PDFX)  $asSubset = false;
+                               $this->fonts[$k]['asSubset'] = $asSubset;
+                               break;
+                       }
+               }
+               if ($used && !$asSubset) {
+                       //Font file embedding
+                       $this->_newobj();
+                       $this->FontFiles[$fontkey]['n']=$this->n;
+                       $font='';
+                       $originalsize = $info['length1'];
+                       if ($this->repackageTTF || $this->fonts[$fontkey]['TTCfontID']>0) {
+                               // First see if there is a cached compressed file
+                               if (file_exists(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z')) {
+                                       $f=fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z','rb');
+                                       if(!$f) { $this->Error('Font file .ps.z not found'); }
+                                       while(!feof($f)) { $font .= fread($f, 2048); }
+                                       fclose($f);
+                                       include(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.php');       // sets $originalsize (of repackaged font)
+                               }
+                               else {
+                                       if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
+                                       $ttf = new TTFontFile();
+                                       $font = $ttf->repackageTTF($this->FontFiles[$fontkey]['ttffile'], $this->fonts[$fontkey]['TTCfontID'], $this->debugfonts, $this->fonts[$fontkey]['unAGlyphs']); // mPDF 5.4.05
+
+                                       $originalsize = strlen($font);
+                                       $font = gzcompress($font);
+                                       unset($ttf);
+                                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
+                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.z',"wb");
+                                               fwrite($fh,$font,strlen($font));
+                                               fclose($fh);
+                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.ps.php',"wb");
+                                               $len = "<?php \n";
+                                               $len.='$originalsize='.$originalsize.";\n";
+                                               $len.="?>";
+                                               fwrite($fh,$len,strlen($len));
+                                               fclose($fh);
+                                       }
+                               }
+                       }
+                       else {
+                               // First see if there is a cached compressed file
+                               if (file_exists(_MPDF_TTFONTDATAPATH.$fontkey.'.z')) {
+                                       $f=fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.z','rb');
+                                       if(!$f) { $this->Error('Font file not found'); }
+                                       while(!feof($f)) { $font .= fread($f, 2048); }
+                                       fclose($f);
+                               }
+                               else {
+                                       $f=fopen($this->FontFiles[$fontkey]['ttffile'],'rb');
+                                       if(!$f) { $this->Error('Font file not found'); }
+                                       while(!feof($f)) { $font .= fread($f, 2048); }
+                                       fclose($f);
+                                       $font = gzcompress($font);
+                                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
+                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$fontkey.'.z',"wb");
+                                               fwrite($fh,$font,strlen($font));
+                                               fclose($fh);
+                                       }
+                               }
+                       }
+
+                       $this->_out('<</Length '.strlen($font));
+                       $this->_out('/Filter /FlateDecode');
+                       $this->_out('/Length1 '.$originalsize);
+                       $this->_out('>>');
+                       $this->_putstream($font);
+                       $this->_out('endobj');
+               }
+          }
+       }
+
+       $nfonts = count($this->fonts);
+       $fctr = 1;
+       foreach($this->fonts as $k=>$font) {
+               //Font objects
+               $type=$font['type'];
+               $name=$font['name'];
+               if ((!isset($font['used']) || !$font['used']) && $type=='TTF') { continue; }
+               if ($this->progressBar) { $this->UpdateProgressBar(2,intval($fctr*100/$nfonts),'Writing Fonts'); $fctr++; }     // *PROGRESS-BAR*
+               if (isset($font['asSubset'])) { $asSubset = $font['asSubset']; }
+               else { $asSubset = ''; }
+/*-- CJK-FONTS --*/
+               if($type=='Type0') {    // = Adobe CJK Fonts
+                       $this->fonts[$k]['n']=$this->n+1;
+                       $this->_newobj();
+                       $this->_out('<</Type /Font');
+                       $this->_putType0($font);
+               }
+               else
+/*-- END CJK-FONTS --*/
+               if($type=='core') {
+                       //Standard font
+                       $this->fonts[$k]['n']=$this->n+1;
+                       if ($this->PDFA || $this->PDFX) { $this->Error('Core fonts are not allowed in PDF/A1-b or PDFX/1-a files (Times, Helvetica, Courier etc.)'); }
+                       $this->_newobj();
+                       $this->_out('<</Type /Font');
+                       $this->_out('/BaseFont /'.$name);
+                       $this->_out('/Subtype /Type1');
+                       if($name!='Symbol' && $name!='ZapfDingbats') {
+                               $this->_out('/Encoding /WinAnsiEncoding');
+                       }
+                       $this->_out('>>');
+                       $this->_out('endobj');
+               } 
+               // TrueType embedded SUBSETS for SIP (CJK extB containing Supplementary Ideographic Plane 2)
+               // Or Unicode Plane 1 - Supplementary Multilingual Plane
+               else if ($type=='TTF' && ($font['sip'] || $font['smp'])) {
+                  if (!$font['used']) { continue; }
+                  $ssfaid="AA";
+                  if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
+                  $ttf = new TTFontFile();
+                  for($sfid=0;$sfid<count($font['subsetfontids']);$sfid++) {
+                       $this->fonts[$k]['n'][$sfid]=$this->n+1;                // NB an array for subset
+                       $subsetname = 'MPDF'.$ssfaid.'+'.$font['name'];
+                       $ssfaid++;
+                       $subset = $font['subsets'][$sfid];
+                       unset($subset[0]);
+                       $ttfontstream = $ttf->makeSubsetSIP($font['ttffile'], $subset, $font['TTCfontID'], $this->debugfonts);
+                       $ttfontsize = strlen($ttfontstream);
+                       $fontstream = gzcompress($ttfontstream);
+                       $widthstring = '';
+                       $toUnistring = '';
+                       foreach($font['subsets'][$sfid] AS $cp=>$u) {
+                               $w = $this->_getCharWidth($font['cw'], $u); 
+                               if ($w !== false) {
+                                       $widthstring .= $w.' ';
+                               }
+                               else {
+                                       $widthstring .= round($ttf->defaultWidth).' ';
+                               }
+                               if ($u > 65535) {
+                                       $utf8 = chr(($u>>18)+240).chr((($u>>12)&63)+128).chr((($u>>6)&63)+128) .chr(($u&63)+128);
+                                       $utf16 = mb_convert_encoding($utf8, 'UTF-16BE', 'UTF-8');
+                                       $l1 = ord($utf16[0]);
+                                       $h1 = ord($utf16[1]);
+                                       $l2 = ord($utf16[2]);
+                                       $h2 = ord($utf16[3]);
+                                       $toUnistring .= sprintf("<%02s> <%02s%02s%02s%02s>\n", strtoupper(dechex($cp)), strtoupper(dechex($l1)), strtoupper(dechex($h1)), strtoupper(dechex($l2)), strtoupper(dechex($h2)));
+                               }
+                               else {
+                                       $toUnistring .= sprintf("<%02s> <%04s>\n", strtoupper(dechex($cp)), strtoupper(dechex($u)));
+                               }
+                       }
+
+                       //Additional Type1 or TrueType font
+                       $this->_newobj();
+                       $this->_out('<</Type /Font');
+                       $this->_out('/BaseFont /'.$subsetname);
+                       $this->_out('/Subtype /TrueType');
+                       $this->_out('/FirstChar 0 /LastChar '.(count($font['subsets'][$sfid])-1));
+                       $this->_out('/Widths '.($this->n+1).' 0 R');
+                       $this->_out('/FontDescriptor '.($this->n+2).' 0 R');
+                       $this->_out('/ToUnicode '.($this->n + 3).' 0 R');
+                       $this->_out('>>');
+                       $this->_out('endobj');
+
+                       //Widths
+                       $this->_newobj();
+                       $this->_out('['.$widthstring.']');
+                       $this->_out('endobj');
+
+                       //Descriptor
+                       $this->_newobj();
+                       $s='<</Type /FontDescriptor /FontName /'.$subsetname."\n";
+                       foreach($font['desc'] as $kd=>$v) {
+                               if ($kd == 'Flags') { $v = $v | 4; $v = $v & ~32; }     // SYMBOLIC font flag
+                               $s.=' /'.$kd.' '.$v."\n";
+                       }
+                       $s.='/FontFile2 '.($this->n + 2).' 0 R';
+                       $this->_out($s.'>>');
+                       $this->_out('endobj');
+
+                       // ToUnicode
+                       $this->_newobj();
+                       $toUni = "/CIDInit /ProcSet findresource begin\n";
+                       $toUni .= "12 dict begin\n";
+                       $toUni .= "begincmap\n";
+                       $toUni .= "/CIDSystemInfo\n";
+                       $toUni .= "<</Registry (Adobe)\n";
+                       $toUni .= "/Ordering (UCS)\n";
+                       $toUni .= "/Supplement 0\n";
+                       $toUni .= ">> def\n";
+                       $toUni .= "/CMapName /Adobe-Identity-UCS def\n";
+                       $toUni .= "/CMapType 2 def\n";
+                       $toUni .= "1 begincodespacerange\n";
+                       $toUni .= "<00> <FF>\n";
+                       $toUni .= "endcodespacerange\n";
+                       $toUni .= count($font['subsets'][$sfid])." beginbfchar\n";
+                       $toUni .= $toUnistring;
+                       $toUni .= "endbfchar\n";
+                       $toUni .= "endcmap\n";
+                       $toUni .= "CMapName currentdict /CMap defineresource pop\n";
+                       $toUni .= "end\n";
+                       $toUni .= "end\n";
+
+                       $this->_out('<</Length '.(strlen($toUni)).'>>');
+                       $this->_putstream($toUni);
+                       $this->_out('endobj');
+
+                       //Font file 
+                       $this->_newobj();
+                       $this->_out('<</Length '.strlen($fontstream));
+                       $this->_out('/Filter /FlateDecode');
+                       $this->_out('/Length1 '.$ttfontsize);
+                       $this->_out('>>');
+                       $this->_putstream($fontstream);
+                       $this->_out('endobj');
+                  }    // foreach subset
+                  unset($ttf);
+               } 
+               // TrueType embedded SUBSETS or FULL
+               else if ($type=='TTF') {
+                       $this->fonts[$k]['n']=$this->n+1;
+                       if ($asSubset ) {
+                               $ssfaid="A";
+                               if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
+                               $ttf = new TTFontFile();
+                               $fontname = 'MPDFA'.$ssfaid.'+'.$font['name'];
+                               $subset = $font['subset'];
+                               unset($subset[0]);
+                               $ttfontstream = $ttf->makeSubset($font['ttffile'], $subset, $font['TTCfontID'], $this->debugfonts, $font['unAGlyphs']); // mPDF 5.4.05
+                               $ttfontsize = strlen($ttfontstream);
+                               $fontstream = gzcompress($ttfontstream);
+                               $codeToGlyph = $ttf->codeToGlyph;
+                               unset($codeToGlyph[0]);
+                       }
+                       else { $fontname = $font['name']; }
+                       // Type0 Font
+                       // A composite font - a font composed of other fonts, organized hierarchically
+                       $this->_newobj();
+                       $this->_out('<</Type /Font');
+                       $this->_out('/Subtype /Type0');
+                       $this->_out('/BaseFont /'.$fontname.'');
+                       $this->_out('/Encoding /Identity-H'); 
+                       $this->_out('/DescendantFonts ['.($this->n + 1).' 0 R]');
+                       $this->_out('/ToUnicode '.($this->n + 2).' 0 R');
+                       $this->_out('>>');
+                       $this->_out('endobj');
+
+                       // CIDFontType2
+                       // A CIDFont whose glyph descriptions are based on TrueType font technology
+                       $this->_newobj();
+                       $this->_out('<</Type /Font');
+                       $this->_out('/Subtype /CIDFontType2');
+                       $this->_out('/BaseFont /'.$fontname.'');
+                       $this->_out('/CIDSystemInfo '.($this->n + 2).' 0 R'); 
+                       $this->_out('/FontDescriptor '.($this->n + 3).' 0 R');
+                       if (isset($font['desc']['MissingWidth'])){
+                               $this->_out('/DW '.$font['desc']['MissingWidth'].''); 
+                       }
+
+                       if (!$asSubset && file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw')) {
+                                       $w = '';
+                                       $w=file_get_contents(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw');
+                                       $this->_out($w);
+                       }
+                       else {
+                               $this->_putTTfontwidths($font, $asSubset, $ttf->maxUni);
+                       }
+
+                       $this->_out('/CIDToGIDMap '.($this->n + 4).' 0 R');
+                       $this->_out('>>');
+                       $this->_out('endobj');
+
+                       // ToUnicode
+                       $this->_newobj();
+                       $toUni = "/CIDInit /ProcSet findresource begin\n";
+                       $toUni .= "12 dict begin\n";
+                       $toUni .= "begincmap\n";
+                       $toUni .= "/CIDSystemInfo\n";
+                       $toUni .= "<</Registry (Adobe)\n";
+                       $toUni .= "/Ordering (UCS)\n";
+                       $toUni .= "/Supplement 0\n";
+                       $toUni .= ">> def\n";
+                       $toUni .= "/CMapName /Adobe-Identity-UCS def\n";
+                       $toUni .= "/CMapType 2 def\n";
+                       $toUni .= "1 begincodespacerange\n";
+                       $toUni .= "<0000> <FFFF>\n";
+                       $toUni .= "endcodespacerange\n";
+                       $toUni .= "1 beginbfrange\n";
+                       $toUni .= "<0000> <FFFF> <0000>\n";
+                       $toUni .= "endbfrange\n";
+                       $toUni .= "endcmap\n";
+                       $toUni .= "CMapName currentdict /CMap defineresource pop\n";
+                       $toUni .= "end\n";
+                       $toUni .= "end\n";
+                       $this->_out('<</Length '.(strlen($toUni)).'>>');
+                       $this->_putstream($toUni);
+                       $this->_out('endobj');
+
+
+                       // CIDSystemInfo dictionary
+                       $this->_newobj();
+                       $this->_out('<</Registry (Adobe)'); 
+                       $this->_out('/Ordering (UCS)');
+                       $this->_out('/Supplement 0');
+                       $this->_out('>>');
+                       $this->_out('endobj');
+
+                       // Font descriptor
+                       $this->_newobj();
+                       $this->_out('<</Type /FontDescriptor');
+                       $this->_out('/FontName /'.$fontname);
+                       foreach($font['desc'] as $kd=>$v) {
+                               if ($asSubset && $kd == 'Flags') { $v = $v | 4; $v = $v & ~32; }        // SYMBOLIC font flag
+                               $this->_out(' /'.$kd.' '.$v);
+                       }
+                       if ($font['panose']) {
+                               $this->_out(' /Style << /Panose <'.$font['panose'].'> >>');
+                       }
+                       if ($asSubset ) {
+                               $this->_out('/FontFile2 '.($this->n + 2).' 0 R');
+                       }
+                       else if ($font['fontkey']) {
+                               // obj ID of a stream containing a TrueType font program
+                               $this->_out('/FontFile2 '.$this->FontFiles[$font['fontkey']]['n'].' 0 R');
+                       }
+                       $this->_out('>>');
+                       $this->_out('endobj');
+
+                       // Embed CIDToGIDMap
+                       // A specification of the mapping from CIDs to glyph indices
+                       if ($asSubset ) {
+                               $cidtogidmap = '';
+                               $cidtogidmap = str_pad('', 256*256*2, "\x00");
+                               foreach($codeToGlyph as $cc=>$glyph) {
+                                       $cidtogidmap[$cc*2] = chr($glyph >> 8);
+                                       $cidtogidmap[$cc*2 + 1] = chr($glyph & 0xFF);
+                               }
+                               $cidtogidmap = gzcompress($cidtogidmap);
+                       }
+                       else {
+                               // First see if there is a cached CIDToGIDMapfile
+                               $cidtogidmap = '';
+                               if (file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm')) {
+                                       $f=fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm','rb');
+                                       while(!feof($f)) { $cidtogidmap .= fread($f, 2048); }
+                                       fclose($f);
+                               }
+                               else {
+                                       if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
+                                       $ttf = new TTFontFile();
+                                       $charToGlyph = $ttf->getCTG($font['ttffile'], $font['TTCfontID'], $this->debugfonts, $font['unAGlyphs']);       // mPDF 5.4.05
+                                       $cidtogidmap = str_pad('', 256*256*2, "\x00");
+                                       foreach($charToGlyph as $cc=>$glyph) {
+                                               $cidtogidmap[$cc*2] = chr($glyph >> 8);
+                                               $cidtogidmap[$cc*2 + 1] = chr($glyph & 0xFF);
+                                       }
+                                       unset($ttf);
+                                       $cidtogidmap = gzcompress($cidtogidmap);
+                                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
+                                               $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cgm',"wb");
+                                               fwrite($fh,$cidtogidmap,strlen($cidtogidmap));
+                                               fclose($fh);
+                                       }
+                               }
+                       }
+                       $this->_newobj();
+                       $this->_out('<</Length '.strlen($cidtogidmap).'');
+                       $this->_out('/Filter /FlateDecode');
+                       $this->_out('>>');
+                       $this->_putstream($cidtogidmap);
+                       $this->_out('endobj');
+
+                       //Font file 
+                       if ($asSubset ) {
+                               $this->_newobj();
+                               $this->_out('<</Length '.strlen($fontstream));
+                               $this->_out('/Filter /FlateDecode');
+                               $this->_out('/Length1 '.$ttfontsize);
+                               $this->_out('>>');
+                               $this->_putstream($fontstream);
+                               $this->_out('endobj');
+                               unset($ttf);
+                       }
+               } 
+               else { $this->Error('Unsupported font type: '.$type.' ('.$name.')'); }
+       }
+}
+
+
+
+function _putTTfontwidths(&$font, $asSubset, $maxUni) {
+       if ($asSubset && file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php')) {
+               include(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php') ;
+               $startcid = 128;
+       }
+       else {
+               $rangeid = 0;
+               $range = array();
+               $prevcid = -2;
+               $prevwidth = -1;
+               $interval = false;
+               $startcid = 1;
+       }
+       if ($asSubset) { $cwlen = $maxUni + 1; }
+       else { $cwlen = (strlen($font['cw'])/2); }
+
+       // for each character
+       for ($cid=$startcid; $cid<$cwlen; $cid++) {
+               if ($cid==128 && $asSubset && (!file_exists(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php'))) {
+                       if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
+                               $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw127.php',"wb");
+                               $cw127='<?php'."\n";
+                               $cw127.='$rangeid='.$rangeid.";\n";
+                               $cw127.='$prevcid='.$prevcid.";\n";
+                               $cw127.='$prevwidth='.$prevwidth.";\n";
+                               if ($interval) { $cw127.='$interval=true'.";\n"; }
+                               else { $cw127.='$interval=false'.";\n"; }
+                               $cw127.='$range='.var_export($range,true).";\n";
+                               $cw127.="?>";
+                               fwrite($fh,$cw127,strlen($cw127));
+                               fclose($fh);
+                       }
+               }
+               if ($font['cw'][$cid*2] == "\00" && $font['cw'][$cid*2+1] == "\00") { continue; }
+               $width = (ord($font['cw'][$cid*2]) << 8) + ord($font['cw'][$cid*2+1]);
+               if ($width == 65535) { $width = 0; }
+               if ($asSubset && $cid > 255 && (!isset($font['subset'][$cid]) || !$font['subset'][$cid])) {
+                       continue;
+               }
+               if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) {
+                       if ($cid == ($prevcid + 1)) {
+                               // consecutive CID
+                               if ($width == $prevwidth) {
+                                       if ($width == $range[$rangeid][0]) {
+                                               $range[$rangeid][] = $width;
+                                       } else {
+                                               array_pop($range[$rangeid]);
+                                               // new range
+                                               $rangeid = $prevcid;
+                                               $range[$rangeid] = array();
+                                               $range[$rangeid][] = $prevwidth;
+                                               $range[$rangeid][] = $width;
+                                       }
+                                       $interval = true;
+                                       $range[$rangeid]['interval'] = true;
+                               } else {
+                                       if ($interval) {
+                                               // new range
+                                               $rangeid = $cid;
+                                               $range[$rangeid] = array();
+                                               $range[$rangeid][] = $width;
+                                       } else {
+                                               $range[$rangeid][] = $width;
+                                       }
+                                       $interval = false;
+                               }
+                       } else {
+                               // new range
+                               $rangeid = $cid;
+                               $range[$rangeid] = array();
+                               $range[$rangeid][] = $width;
+                               $interval = false;
+                       }
+                       $prevcid = $cid;
+                       $prevwidth = $width;
+               }
+       }
+       $w = $this->_putfontranges($range);
+       $this->_out($w);
+       if (!$asSubset) {
+               if (is_writable(dirname(_MPDF_TTFONTDATAPATH.'x'))) {
+                       $fh = fopen(_MPDF_TTFONTDATAPATH.$font['fontkey'].'.cw',"wb");
+                       fwrite($fh,$w,strlen($w));
+                       fclose($fh);
+               }
+       }
+}
+
+function _putfontranges(&$range) {
+       // optimize ranges
+       $prevk = -1;
+       $nextk = -1;
+       $prevint = false;
+       foreach ($range as $k => $ws) {
+               $cws = count($ws);
+               if (($k == $nextk) AND (!$prevint) AND ((!isset($ws['interval'])) OR ($cws < 4))) {
+                       if (isset($range[$k]['interval'])) {
+                               unset($range[$k]['interval']);
+                       }
+                       $range[$prevk] = array_merge($range[$prevk], $range[$k]);
+                       unset($range[$k]);
+               } else {
+                       $prevk = $k;
+               }
+               $nextk = $k + $cws;
+               if (isset($ws['interval'])) {
+                       if ($cws > 3) {
+                               $prevint = true;
+                       } else {
+                               $prevint = false;
+                       }
+                       unset($range[$k]['interval']);
+                       --$nextk;
+               } else {
+                       $prevint = false;
+               }
+       }
+       // output data
+       $w = '';
+       foreach ($range as $k => $ws) {
+               if (count(array_count_values($ws)) == 1) {
+                       // interval mode is more compact
+                       $w .= ' '.$k.' '.($k + count($ws) - 1).' '.$ws[0];
+               } else {
+                       // range mode
+                       $w .= ' '.$k.' [ '.implode(' ', $ws).' ]' . "\n";
+               }
+       }
+       return '/W ['.$w.' ]';
+}
+
+
+function _putfontwidths(&$font, $cidoffset=0) {
+       ksort($font['cw']);
+       unset($font['cw'][65535]);
+       $rangeid = 0;
+       $range = array();
+       $prevcid = -2;
+       $prevwidth = -1;
+       $interval = false;
+       // for each character
+       foreach ($font['cw'] as $cid => $width) {
+               $cid -= $cidoffset;
+               if (!isset($font['dw']) || (isset($font['dw']) && $width != $font['dw'])) {
+                       if ($cid == ($prevcid + 1)) {
+                               // consecutive CID
+                               if ($width == $prevwidth) {
+                                       if ($width == $range[$rangeid][0]) {
+                                               $range[$rangeid][] = $width;
+                                       } else {
+                                               array_pop($range[$rangeid]);
+                                               // new range
+                                               $rangeid = $prevcid;
+                                               $range[$rangeid] = array();
+                                               $range[$rangeid][] = $prevwidth;
+                                               $range[$rangeid][] = $width;
+                                       }
+                                       $interval = true;
+                                       $range[$rangeid]['interval'] = true;
+                               } else {
+                                       if ($interval) {
+                                               // new range
+                                               $rangeid = $cid;
+                                               $range[$rangeid] = array();
+                                               $range[$rangeid][] = $width;
+                                       } else {
+                                               $range[$rangeid][] = $width;
+                                       }
+                                       $interval = false;
+                               }
+                       } else {
+                               // new range
+                               $rangeid = $cid;
+                               $range[$rangeid] = array();
+                               $range[$rangeid][] = $width;
+                               $interval = false;
+                       }
+                       $prevcid = $cid;
+                       $prevwidth = $width;
+               }
+       }
+       $this->_out($this->_putfontranges($range));
+}
+
+
+/*-- CJK-FONTS --*/
+
+// from class PDF_Chinese CJK EXTENSIONS
+function _putType0(&$font)
+{
+       //Type0
+       $this->_out('/Subtype /Type0');
+       $this->_out('/BaseFont /'.$font['name'].'-'.$font['CMap']);
+       $this->_out('/Encoding /'.$font['CMap']);
+       $this->_out('/DescendantFonts ['.($this->n+1).' 0 R]');
+       $this->_out('>>');
+       $this->_out('endobj');
+       //CIDFont
+       $this->_newobj();
+       $this->_out('<</Type /Font');
+       $this->_out('/Subtype /CIDFontType0');
+       $this->_out('/BaseFont /'.$font['name']);
+
+       $cidinfo = '/Registry '.$this->_textstring('Adobe');
+       $cidinfo .= ' /Ordering '.$this->_textstring($font['registry']['ordering']);
+       $cidinfo .= ' /Supplement '.$font['registry']['supplement'];
+       $this->_out('/CIDSystemInfo <<'.$cidinfo.'>>');
+
+       $this->_out('/FontDescriptor '.($this->n+1).' 0 R');
+       if (isset($font['MissingWidth'])){
+               $this->_out('/DW '.$font['MissingWidth'].''); 
+       }
+       $this->_putfontwidths($font, 31);
+       $this->_out('>>');
+       $this->_out('endobj');
+
+       //Font descriptor
+       $this->_newobj();
+       $s = '<</Type /FontDescriptor /FontName /'.$font['name'];
+       foreach ($font['desc'] as $k => $v) {
+               if ($k != 'Style') {
+                       $s .= ' /'.$k.' '.$v.'';
+               }
+       }
+       $this->_out($s.'>>');
+       $this->_out('endobj');
+}
+/*-- END CJK-FONTS --*/
+
+
+
+function _putimages()
+{
+       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+       reset($this->images);
+       while(list($file,$info)=each($this->images)) {
+               $this->_newobj();
+               $this->images[$file]['n']=$this->n;
+               $this->_out('<</Type /XObject');
+               $this->_out('/Subtype /Image');
+               $this->_out('/Width '.$info['w']);
+               $this->_out('/Height '.$info['h']);
+               if (isset($info['masked'])) {
+                       $this->_out('/SMask '.($this->n - 1).' 0 R');
+               }
+               if($info['cs']=='Indexed') {
+                       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { $this->Error("PDFA1-b and PDFX/1-a files do not permit using mixed colour space (".$file.")."); }
+                       $this->_out('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]');
+               }
+               else {
+                       $this->_out('/ColorSpace /'.$info['cs']);
+                       if($info['cs']=='DeviceCMYK') {
+                               if ($this->PDFA && $this->restrictColorSpace!=3) { $this->Error("PDFA1-b does not permit Images using mixed colour space (".$file.")."); }
+                               if($info['type']=='jpg') { $this->_out('/Decode [1 0 1 0 1 0 1 0]'); }
+                       }
+                       else if ($info['cs']=='DeviceRGB' && ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3))) { $this->Error("PDFA1-b and PDFX/1-a files do not permit using mixed colour space (".$file.")."); }
+               }
+               $this->_out('/BitsPerComponent '.$info['bpc']);
+               if (isset($info['f']) && $info['f']) { $this->_out('/Filter /'.$info['f']); }
+               if(isset($info['parms'])) { $this->_out($info['parms']); }
+               if(isset($info['trns']) and is_array($info['trns'])) {
+                       $trns='';
+                       for($i=0;$i<count($info['trns']);$i++)
+                               $trns.=$info['trns'][$i].' '.$info['trns'][$i].' ';
+                       $this->_out('/Mask ['.$trns.']');
+               }
+               $this->_out('/Length '.strlen($info['data']).'>>');
+               $this->_putstream($info['data']);
+
+               unset($this->images[$file]['data']);
+               $this->_out('endobj');
+               //Palette
+               if($info['cs']=='Indexed') {
+                       $this->_newobj();
+                       $pal=($this->compress) ? gzcompress($info['pal']) : $info['pal'];
+                       $this->_out('<<'.$filter.'/Length '.strlen($pal).'>>');
+                       $this->_putstream($pal);
+                       $this->_out('endobj');
+               }
+       }
+}
+
+function _putinfo()
+{
+       $this->_out('/Producer '.$this->_UTF16BEtextstring('mPDF '.mPDF_VERSION));
+       if(!empty($this->title))
+               $this->_out('/Title '.$this->_UTF16BEtextstring($this->title));
+       if(!empty($this->subject))
+               $this->_out('/Subject '.$this->_UTF16BEtextstring($this->subject));
+       if(!empty($this->author))
+               $this->_out('/Author '.$this->_UTF16BEtextstring($this->author));
+       if(!empty($this->keywords))
+               $this->_out('/Keywords '.$this->_UTF16BEtextstring($this->keywords));
+       if(!empty($this->creator))
+               $this->_out('/Creator '.$this->_UTF16BEtextstring($this->creator));
+
+       $z = date('O'); // +0200
+       $offset = substr($z,0,3)."'".substr($z,3,2)."'";
+       $this->_out('/CreationDate '.$this->_textstring(date('YmdHis').$offset));
+       $this->_out('/ModDate '.$this->_textstring(date('YmdHis').$offset));
+       if ($this->PDFX) {
+               $this->_out('/Trapped/False');
+               $this->_out('/GTS_PDFXVersion(PDF/X-1a:2003)');
+       }
+}
+
+function _putmetadata() {
+       $this->_newobj();
+       $this->MetadataRoot = $this->n;
+       $Producer = 'mPDF '.mPDF_VERSION;
+       $z = date('O'); // +0200
+       $offset = substr($z,0,3).':'.substr($z,3,2);
+       $CreationDate = date('Y-m-d\TH:i:s').$offset;   // 2006-03-10T10:47:26-05:00 2006-06-19T09:05:17Z
+       $uuid = sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand(0, 0xffff), mt_rand(0, 0xffff),
+                       mt_rand(0, 0xffff), mt_rand(0, 0x0fff) | 0x4000, mt_rand(0, 0x3fff) | 0x8000,
+                       mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)  );
+
+
+       $m = '<?xpacket begin="'.chr(239).chr(187).chr(191).'" id="W5M0MpCehiHzreSzNTczkc9d"?>'."\n";   // begin = FEFF BOM
+       $m .= ' <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="3.1-701">'."\n";
+       $m .= '  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">'."\n";
+       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdf="http://ns.adobe.com/pdf/1.3/">'."\n";
+       $m .= '    <pdf:Producer>'.$Producer.'</pdf:Producer>'."\n";
+       if(!empty($this->keywords)) { $m .= '    <pdf:Keywords>'.$this->keywords.'</pdf:Keywords>'."\n"; }
+       $m .= '   </rdf:Description>'."\n";
+
+       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:xmp="http://ns.adobe.com/xap/1.0/">'."\n";
+       $m .= '    <xmp:CreateDate>'.$CreationDate.'</xmp:CreateDate>'."\n";
+       $m .= '    <xmp:ModifyDate>'.$CreationDate.'</xmp:ModifyDate>'."\n";
+       $m .= '    <xmp:MetadataDate>'.$CreationDate.'</xmp:MetadataDate>'."\n";
+       if(!empty($this->creator)) { $m .= '    <xmp:CreatorTool>'.$this->creator.'</xmp:CreatorTool>'."\n"; }
+       $m .= '   </rdf:Description>'."\n";
+
+       // DC elements
+       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:dc="http://purl.org/dc/elements/1.1/">'."\n";
+       $m .= '    <dc:format>application/pdf</dc:format>'."\n";
+       if(!empty($this->title)) {
+               $m .= '    <dc:title>
+     <rdf:Alt>
+      <rdf:li xml:lang="x-default">'.$this->title.'</rdf:li>
+     </rdf:Alt>
+    </dc:title>'."\n";
+       }
+       if(!empty($this->keywords)) {
+               $m .= '    <dc:subject>
+     <rdf:Bag>
+      <rdf:li>'.$this->keywords.'</rdf:li>
+     </rdf:Bag>
+    </dc:subject>'."\n";
+       }
+       if(!empty($this->subject)) {
+               $m .= '    <dc:description>
+     <rdf:Alt>
+      <rdf:li xml:lang="x-default">'.$this->subject.'</rdf:li>
+     </rdf:Alt>
+    </dc:description>'."\n";
+       }
+       if(!empty($this->author)) {
+               $m .= '    <dc:creator>
+     <rdf:Seq>
+      <rdf:li>'.$this->author.'</rdf:li>
+     </rdf:Seq>
+    </dc:creator>'."\n";
+       }
+       $m .= '   </rdf:Description>'."\n";
+
+
+       // This bit is specific to PDFX-1a
+       if ($this->PDFX) {
+               $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/" pdfx:Apag_PDFX_Checkup="1.3" pdfx:GTS_PDFXConformance="PDF/X-1a:2003" pdfx:GTS_PDFXVersion="PDF/X-1:2003"/>'."\n";
+       }
+
+       // This bit is specific to PDFA-1b
+       else if ($this->PDFA) {
+               $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/" >'."\n";
+               $m .= '    <pdfaid:part>1</pdfaid:part>'."\n";
+               $m .= '    <pdfaid:conformance>B</pdfaid:conformance>'."\n";
+               $m .= '    <pdfaid:amd>2005</pdfaid:amd>'."\n";
+               $m .= '   </rdf:Description>'."\n";
+       }
+
+       $m .= '   <rdf:Description rdf:about="uuid:'.$uuid.'" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">'."\n";
+       $m .= '    <xmpMM:DocumentID>uuid:'.$uuid.'</xmpMM:DocumentID>'."\n";
+       $m .= '   </rdf:Description>'."\n";
+       $m .= '  </rdf:RDF>'."\n";
+       $m .= ' </x:xmpmeta>'."\n";
+       $m .= str_repeat(str_repeat(' ',100)."\n",20);  // 2-4kB whitespace padding required
+       $m .= '<?xpacket end="w"?>';    // "r" read only
+       $this->_out('<</Type/Metadata/Subtype/XML/Length '.strlen($m).'>>');
+       $this->_putstream($m);
+       $this->_out('endobj');
+}
+
+function _putoutputintent() {
+       $this->_newobj();
+       $this->OutputIntentRoot = $this->n;
+       $this->_out('<</Type /OutputIntent');
+
+       if ($this->PDFA) {
+               $this->_out('/S /GTS_PDFA1');
+               if ($this->ICCProfile) {
+                       $this->_out('/Info ('.preg_replace('/_/',' ',$this->ICCProfile).')');
+                       $this->_out('/OutputConditionIdentifier (Custom)');
+                       $this->_out('/OutputCondition ()');
+               }
+               else {
+                       $this->_out('/Info (sRGB IEC61966-2.1)');
+                       $this->_out('/OutputConditionIdentifier (sRGB IEC61966-2.1)');
+                       $this->_out('/OutputCondition ()');
+               }
+               $this->_out('/DestOutputProfile '.($this->n+1).' 0 R');
+       }
+       else if ($this->PDFX) { // always a CMYK profile
+               $this->_out('/S /GTS_PDFX');
+               if ($this->ICCProfile) {
+                       $this->_out('/Info ('.preg_replace('/_/',' ',$this->ICCProfile).')');
+                       $this->_out('/OutputConditionIdentifier (Custom)');
+                       $this->_out('/OutputCondition ()');
+                       $this->_out('/DestOutputProfile '.($this->n+1).' 0 R');
+               }
+               else {
+                       $this->_out('/Info (CGATS TR 001)');
+                       $this->_out('/OutputConditionIdentifier (CGATS TR 001)');
+                       $this->_out('/OutputCondition (CGATS TR 001 (SWOP))');
+                       $this->_out('/RegistryName (http://www.color.org)');
+               }
+       }
+       $this->_out('>>');
+       $this->_out('endobj');
+
+       if ($this->PDFX && !$this->ICCProfile) { return; } // no ICCProfile embedded
+
+       $this->_newobj();
+       if ($this->ICCProfile)
+               $s = file_get_contents(_MPDF_PATH.'iccprofiles/'.$this->ICCProfile.'.icc');
+       else 
+               $s = file_get_contents(_MPDF_PATH.'iccprofiles/sRGB_IEC61966-2-1.icc');
+       if ($this->compress) { $s = gzcompress($s); }
+       $this->_out('<<');
+       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace == 3)) { $this->_out('/N 4'); }
+       else { $this->_out('/N 3'); }
+       if ($this->compress)
+               $this->_out('/Filter /FlateDecode ');
+       $this->_out('/Length '.strlen($s).'>>');
+       $this->_putstream($s);
+       $this->_out('endobj');
+}
+
+
+function _putcatalog() {
+       $this->_out('/Type /Catalog');
+       $this->_out('/Pages 1 0 R');
+       if($this->ZoomMode=='fullpage') $this->_out('/OpenAction [3 0 R /Fit]');
+       elseif($this->ZoomMode=='fullwidth') $this->_out('/OpenAction [3 0 R /FitH null]');
+       elseif($this->ZoomMode=='real') $this->_out('/OpenAction [3 0 R /XYZ null null 1]');
+       elseif(!is_string($this->ZoomMode))     $this->_out('/OpenAction [3 0 R /XYZ null null '.($this->ZoomMode/100).']');
+       else    $this->_out('/OpenAction [3 0 R /XYZ null null null]');
+       if($this->LayoutMode=='single') $this->_out('/PageLayout /SinglePage');
+       elseif($this->LayoutMode=='continuous') $this->_out('/PageLayout /OneColumn');
+       elseif($this->LayoutMode=='twoleft')    $this->_out('/PageLayout /TwoColumnLeft');
+       elseif($this->LayoutMode=='tworight')   $this->_out('/PageLayout /TwoColumnRight');
+       elseif($this->LayoutMode=='two') {
+         if ($this->mirrorMargins) { $this->_out('/PageLayout /TwoColumnRight'); }
+         else { $this->_out('/PageLayout /TwoColumnLeft'); }
+       }
+
+/*-- BOOKMARKS --*/
+       if(count($this->BMoutlines)>0) {
+             $this->_out('/Outlines '.$this->OutlineRoot.' 0 R');
+             $this->_out('/PageMode /UseOutlines');
+       }
+/*-- END BOOKMARKS --*/
+       if(is_int(strpos($this->DisplayPreferences,'FullScreen'))) $this->_out('/PageMode /FullScreen');
+
+       // Metadata
+       if ($this->PDFA || $this->PDFX) { 
+               $this->_out('/Metadata '.$this->MetadataRoot.' 0 R');
+       }
+       // OutputIntents
+       if ($this->PDFA || $this->PDFX || $this->ICCProfile) { 
+               $this->_out('/OutputIntents ['.$this->OutputIntentRoot.' 0 R]');
+       }
+
+/*-- FORMS --*/
+       if (count($this->form->forms)>0) {
+               $this->form->_putFormsCatalog();
+       }
+/*-- END FORMS --*/
+       if ( isset($this->js) ) {
+               $this->_out('/Names << /JavaScript '.($this->n_js).' 0 R >> ');
+       }
+
+       if($this->DisplayPreferences || $this->directionality == 'rtl' || $this->mirrorMargins) {
+               $this->_out('/ViewerPreferences<<');
+               if(is_int(strpos($this->DisplayPreferences,'HideMenubar'))) $this->_out('/HideMenubar true');
+               if(is_int(strpos($this->DisplayPreferences,'HideToolbar'))) $this->_out('/HideToolbar true');
+               if(is_int(strpos($this->DisplayPreferences,'HideWindowUI'))) $this->_out('/HideWindowUI true');
+               if(is_int(strpos($this->DisplayPreferences,'DisplayDocTitle'))) $this->_out('/DisplayDocTitle true');
+               if(is_int(strpos($this->DisplayPreferences,'CenterWindow'))) $this->_out('/CenterWindow true');
+               if(is_int(strpos($this->DisplayPreferences,'FitWindow'))) $this->_out('/FitWindow true');
+               // /PrintScaling is PDF 1.6 spec.
+               if(is_int(strpos($this->DisplayPreferences,'NoPrintScaling')) && !$this->PDFA && !$this->PDFX) 
+                       $this->_out('/PrintScaling /None');
+               if($this->directionality == 'rtl') $this->_out('/Direction /R2L');
+               // /Duplex is PDF 1.7 spec.
+               if($this->mirrorMargins && !$this->PDFA && !$this->PDFX) {
+                       // if ($this->DefOrientation=='P') $this->_out('/Duplex /DuplexFlipShortEdge');
+                       $this->_out('/Duplex /DuplexFlipLongEdge');     // PDF v1.7+
+               }
+               $this->_out('>>');
+       }
+       // mPDF 5.6.01
+       if($this->open_layer_pane && ($this->hasOC || count($this->layers)))
+               $this->_out('/PageMode /UseOC');
+
+       // mPDF 5.6.01
+       if ($this->hasOC || count($this->layers)) {
+               $p = $v = $h = $l = $loff = $lall = $as = '';   // mPDF 5.6.28
+               if ($this->hasOC) {
+                       if (($this->hasOC & 1) == 1) $p=$this->n_ocg_print.' 0 R';
+                       if (($this->hasOC & 2) == 2) $v=$this->n_ocg_view.' 0 R';
+                       if (($this->hasOC & 4) == 4) $h=$this->n_ocg_hidden.' 0 R';
+                       $as="<</Event /Print /OCGs [$p $v $h] /Category [/Print]>> <</Event /View /OCGs [$p $v $h] /Category [/View]>>";
+               }
+
+               if(count($this->layers)) {
+                       foreach($this->layers as $k=>$layer) {  // mPDF 5.6.28
+                               if (strtolower($this->layerDetails[$k]['state'])=='hidden') { $loff .= $layer['n'].' 0 R '; }
+                               else { $l .= $layer['n'].' 0 R '; }
+                               $lall .= $layer['n'].' 0 R ';
+                       }
+               }
+               $this->_out("/OCProperties <</OCGs [$p $v $h $lall] /D <</ON [$p $l] /OFF [$v $h $loff] ");     // mPDF 5.6.28
+               $this->_out("/Order [$v $p $h $lall] ");        // mPDF 5.6.28
+               if ($as) $this->_out("/AS [$as] ");
+               $this->_out(">>>>");
+
+       }
+
+}
+
+// Inactive function left for backwards compatability
+function SetUserRights($enable=true, $annots="", $form="", $signature="") {
+       // Does nothing
+}
+
+function _enddoc() {
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'10','Writing Headers & Footers'); }       // *PROGRESS-BAR*
+       $this->_puthtmlheaders();       // *HTMLHEADERS-FOOTERS*
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'20','Writing Pages'); }   // *PROGRESS-BAR*
+       // Remove references to unused fonts (usually default font)
+       foreach($this->fonts as $fk=>$font) {
+          if (!$font['used'] && ($font['type']=='TTF')) { 
+               if ($font['sip'] || $font['smp']) {
+                       foreach($font['subsetfontids'] AS $k => $fid) {
+                               foreach($this->pages AS $pn=>$page) { 
+                                       $this->pages[$pn] = preg_replace('/\s\/F'.$fid.' \d[\d.]* Tf\s/is',' ',$this->pages[$pn]); 
+                               }
+                       }
+               }
+               else { 
+                               foreach($this->pages AS $pn=>$page) { 
+                                       $this->pages[$pn] = preg_replace('/\s\/F'.$font['i'].' \d[\d.]* Tf\s/is',' ',$this->pages[$pn]); 
+                               }
+               }
+          }
+       }
+
+       // mPDF 5.6.01 - LAYERS
+       if (count($this->layers)) {
+         foreach($this->pages AS $pn=>$page) { 
+               preg_match_all('/\/OCZ-index \/ZI(\d+) BDC(.*?)(EMCZ)-index/is',$this->pages[$pn],$m1);
+               preg_match_all('/\/OCBZ-index \/ZI(\d+) BDC(.*?)(EMCBZ)-index/is',$this->pages[$pn],$m2);
+               preg_match_all('/\/OCGZ-index \/ZI(\d+) BDC(.*?)(EMCGZ)-index/is',$this->pages[$pn],$m3);
+               $m = array();
+               for ($i=0;$i<4;$i++) {
+                       $m[$i] = array_merge($m1[$i],$m2[$i],$m3[$i]);
+               }
+               if (count($m[0])) {
+                       $sortarr = array();
+                       for($i=0;$i<count($m[0]);$i++) {
+                               $key = $m[1][$i]*2;
+                               if ($m[3][$i]=='EMCZ') $key +=2;        // background first then gradient then normal
+                               else if ($m[3][$i]=='EMCGZ') $key +=1;
+                               $sortarr[$i] = $key;
+                       } 
+                       asort($sortarr);
+                       foreach($sortarr AS $i=>$k) {
+                               $this->pages[$pn] = str_replace($m[0][$i],'',$this->pages[$pn] );
+                               $this->pages[$pn] .= "\n".$m[0][$i]."\n";
+                       } 
+                       $this->pages[$pn] = preg_replace('/\/OC[BG]{0,1}Z-index \/ZI(\d+) BDC/is','/OC /ZI\\1 BDC ',$this->pages[$pn]); 
+                       $this->pages[$pn] = preg_replace('/EMC[BG]{0,1}Z-index/is','EMC',$this->pages[$pn]); 
+               }
+         }
+       }
+
+       $this->_putpages();
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'30','Writing document resources'); }      // *PROGRESS-BAR*
+
+       $this->_putresources();
+       //Info
+       $this->_newobj();
+       $this->InfoRoot = $this->n;
+       $this->_out('<<');
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'80','Writing document info'); }   // *PROGRESS-BAR*
+       $this->_putinfo();
+       $this->_out('>>');
+       $this->_out('endobj');
+
+       // METADATA
+       if ($this->PDFA || $this->PDFX) { $this->_putmetadata(); }
+       // OUTPUTINTENT
+       if ($this->PDFA || $this->PDFX || $this->ICCProfile) { $this->_putoutputintent(); }
+
+       //Catalog
+       $this->_newobj();
+       $this->_out('<<');
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'90','Writing document catalog'); }        // *PROGRESS-BAR*
+       $this->_putcatalog();
+       $this->_out('>>');
+       $this->_out('endobj');
+       //Cross-ref
+       $o=strlen($this->buffer);
+       $this->_out('xref');
+       $this->_out('0 '.($this->n+1));
+       $this->_out('0000000000 65535 f ');
+       for($i=1; $i <= $this->n ; $i++)
+               $this->_out(sprintf('%010d 00000 n ',$this->offsets[$i]));
+       //Trailer
+       $this->_out('trailer');
+       $this->_out('<<');
+       $this->_puttrailer();
+       $this->_out('>>');
+       $this->_out('startxref');
+       $this->_out($o);
+
+       $this->buffer .= '%%EOF';
+       $this->state=3;
+/*-- IMPORTS --*/
+
+       if ($this->enableImports && count($this->parsers) > 0) {
+               foreach ($this->parsers as $k => $_){
+                       $this->parsers[$k]->closeFile();
+                       $this->parsers[$k] = null;
+                       unset($this->parsers[$k]);
+               }
+       }
+/*-- END IMPORTS --*/
+}
+
+function _beginpage($orientation,$mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0,$pagesel='',$newformat='') {
+       if (!($pagesel && $this->page==1 && (sprintf("%0.4f", $this->y)==sprintf("%0.4f", $this->tMargin)))) { 
+               $this->page++;
+               $this->pages[$this->page]='';
+       }
+       $this->state=2;
+       $resetHTMLHeadersrequired = false;
+
+       if ($newformat) { $this->_setPageSize($newformat, $orientation); }
+/*-- CSS-PAGE --*/
+       // Paged media (page-box)
+
+       if ($pagesel || (isset($this->page_box['using']) && $this->page_box['using'])) {
+               if ($pagesel || $this->page==1) { $first = true; }
+               else { $first = false; }
+               if ($this->mirrorMargins && ($this->page % 2==0)) { $oddEven = 'E'; }
+               else { $oddEven = 'O'; }
+               if ($pagesel) { $psel = $pagesel; }
+               else if ($this->page_box['current']) { $psel = $this->page_box['current']; }
+               else { $psel = ''; }
+               list($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS($psel, $first, $oddEven);
+               if ($this->mirrorMargins && ($this->page % 2==0)) { 
+                       if ($hname) { $ehvalue = 1; $ehname = $hname; } else { $ehvalue = -1; }
+                       if ($fname) { $efvalue = 1; $efname = $fname; } else { $efvalue = -1; }
+               }
+               else { 
+                       if ($hname) { $ohvalue = 1; $ohname = $hname; } else { $ohvalue = -1; }
+                       if ($fname) { $ofvalue = 1; $ofname = $fname; } else { $ofvalue = -1; }
+               }
+               if ($resetpagenum || $pagenumstyle || $suppress) {
+                       $this->PageNumSubstitutions[] = array('from'=>($this->page), 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=>$suppress);
+               }
+               // PAGED MEDIA - CROP / CROSS MARKS from @PAGE
+               $this->show_marks = $marks;
+
+               // Background color
+               if (isset($bg['BACKGROUND-COLOR'])) {
+                       $cor = $this->ConvertColor($bg['BACKGROUND-COLOR']);
+                       if ($cor) { 
+                               $this->bodyBackgroundColor = $cor; 
+                       }
+               }
+               else { $this->bodyBackgroundColor = false; }
+
+/*-- BACKGROUNDS --*/
+               if (isset($bg['BACKGROUND-GRADIENT'])) { 
+                       $this->bodyBackgroundGradient = $bg['BACKGROUND-GRADIENT'];
+               }
+               else { $this->bodyBackgroundGradient = false; }
+
+               // Tiling Patterns
+               if (isset($bg['BACKGROUND-IMAGE']) && $bg['BACKGROUND-IMAGE']) { 
+                       $ret = $this->SetBackground($bg, $this->pgwidth);
+                       if ($ret) { $this->bodyBackgroundImage = $ret; }
+               }
+               else { $this->bodyBackgroundImage = false; }
+/*-- END BACKGROUNDS --*/
+
+               $this->page_box['current'] = $psel;
+               $this->page_box['using'] = true;
+       }
+/*-- END CSS-PAGE --*/
+
+       //Page orientation
+       if(!$orientation)
+               $orientation=$this->DefOrientation;
+       else {
+               $orientation=strtoupper(substr($orientation,0,1));
+               if($orientation!=$this->DefOrientation)
+                       $this->OrientationChanges[$this->page]=true;
+       }
+       if($orientation!=$this->CurOrientation || $newformat) {
+
+               //Change orientation
+               if($orientation=='P') {
+                       $this->wPt=$this->fwPt;
+                       $this->hPt=$this->fhPt;
+                       $this->w=$this->fw;
+                       $this->h=$this->fh;
+                  if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P') {
+                       $this->tMargin = $this->orig_tMargin;
+                       $this->bMargin = $this->orig_bMargin;
+                       $this->DeflMargin = $this->orig_lMargin;
+                       $this->DefrMargin = $this->orig_rMargin;
+                       $this->margin_header = $this->orig_hMargin;
+                       $this->margin_footer = $this->orig_fMargin;
+                  }
+                  else { $resetHTMLHeadersrequired = true; }   // *HTMLHEADERS-FOOTERS*
+               }
+               else {
+                       $this->wPt=$this->fhPt;
+                       $this->hPt=$this->fwPt;
+                       $this->w=$this->fh;
+                       $this->h=$this->fw;
+                  if (($this->forcePortraitHeaders || $this->forcePortraitMargins) && $this->DefOrientation=='P') {
+                       $this->tMargin = $this->orig_lMargin;
+                       $this->bMargin = $this->orig_rMargin;
+                       $this->DeflMargin = $this->orig_bMargin;
+                       $this->DefrMargin = $this->orig_tMargin;
+                       $this->margin_header = $this->orig_hMargin;
+                       $this->margin_footer = $this->orig_fMargin;
+                  }
+                  else { $resetHTMLHeadersrequired = true; }   // *HTMLHEADERS-FOOTERS*
+
+               }
+               $this->CurOrientation=$orientation;
+               $this->ResetMargins();
+               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+               $this->PageBreakTrigger=$this->h-$this->bMargin;
+       }
+
+       $this->pageDim[$this->page]['w']=$this->w ;
+       $this->pageDim[$this->page]['h']=$this->h ;
+
+       $this->pageDim[$this->page]['outer_width_LR'] = isset($this->page_box['outer_width_LR']) ? $this->page_box['outer_width_LR'] : 0; 
+       $this->pageDim[$this->page]['outer_width_TB'] = isset($this->page_box['outer_width_TB']) ? $this->page_box['outer_width_TB'] : 0; 
+       if (!isset($this->page_box['outer_width_LR']) && !isset($this->page_box['outer_width_TB'])) {
+               $this->pageDim[$this->page]['bleedMargin'] = 0;
+       }
+       else if ($this->bleedMargin <= $this->page_box['outer_width_LR'] && $this->bleedMargin <= $this->page_box['outer_width_TB']) {
+               $this->pageDim[$this->page]['bleedMargin'] = $this->bleedMargin;
+       }
+       else {
+               $this->pageDim[$this->page]['bleedMargin'] = min($this->page_box['outer_width_LR'], $this->page_box['outer_width_TB'])-0.01;
+       }
+
+       // If Page Margins are re-defined
+       // strlen()>0 is used to pick up (integer) 0, (string) '0', or set value
+       if ((strlen($mgl)>0 && $this->DeflMargin != $mgl) || (strlen($mgr)>0 && $this->DefrMargin != $mgr) || (strlen($mgt)>0 && $this->tMargin != $mgt) || (strlen($mgb)>0 && $this->bMargin != $mgb) || (strlen($mgh)>0 && $this->margin_header!=$mgh) || (strlen($mgf)>0 && $this->margin_footer!=$mgf)) {
+               if (strlen($mgl)>0)  $this->DeflMargin = $mgl;
+               if (strlen($mgr)>0)  $this->DefrMargin = $mgr;
+               if (strlen($mgt)>0)  $this->tMargin = $mgt;
+               if (strlen($mgb)>0)  $this->bMargin = $mgb;
+               if (strlen($mgh)>0)  $this->margin_header=$mgh;
+               if (strlen($mgf)>0)  $this->margin_footer=$mgf;
+               $this->ResetMargins();
+               $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
+               $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
+       }
+
+       $this->ResetMargins();
+       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+       $this->SetAutoPageBreak($this->autoPageBreak,$this->bMargin);
+
+       // Reset column top margin
+       $this->y0 = $this->tMargin;
+
+       $this->x=$this->lMargin;
+       $this->y=$this->tMargin;
+       $this->FontFamily='';
+
+       // HEADERS AND FOOTERS
+       if ($ohvalue<0 || strtoupper($ohvalue)=='OFF') { 
+               $this->HTMLHeader = ''; 
+               $this->headerDetails['odd'] = array(); 
+               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
+       }
+       else if ($ohname && $ohvalue>0) {
+/*-- HTMLHEADERS-FOOTERS --*/
+          if (preg_match('/^html_(.*)$/i',$ohname,$n)) {
+               if (isset($this->pageHTMLheaders[$n[1]])) { $this->HTMLHeader = $this->pageHTMLheaders[$n[1]]; }
+               else { $this->HTMLHeader = ''; }
+               $this->headerDetails['odd'] = array(); 
+               $resetHTMLHeadersrequired = true;
+          }
+          else {
+/*-- END HTMLHEADERS-FOOTERS --*/
+               if (isset($this->pageheaders[$ohname])) { $this->headerDetails['odd'] = $this->pageheaders[$ohname]; } 
+               else if ($ohname!='_default') { $this->headerDetails['odd'] = array(); }
+               $this->HTMLHeader = ''; 
+/*-- HTMLHEADERS-FOOTERS --*/
+               $resetHTMLHeadersrequired = false;
+          }
+/*-- END HTMLHEADERS-FOOTERS --*/
+       }
+
+       if ($ehvalue<0 || strtoupper($ehvalue)=='OFF') { 
+               $this->HTMLHeaderE = ''; 
+               $this->headerDetails['even'] = array(); 
+               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
+       }
+       else if ($ehname && $ehvalue>0) {
+/*-- HTMLHEADERS-FOOTERS --*/
+          if (preg_match('/^html_(.*)$/i',$ehname,$n)) {
+               if (isset($this->pageHTMLheaders[$n[1]])) { $this->HTMLHeaderE = $this->pageHTMLheaders[$n[1]]; } 
+               else { $this->HTMLHeaderE = ''; }
+               $this->headerDetails['even'] = array(); 
+               $resetHTMLHeadersrequired = true;
+          }
+          else {
+/*-- END HTMLHEADERS-FOOTERS --*/
+               if (isset($this->pageheaders[$ehname])) { $this->headerDetails['even'] = $this->pageheaders[$ehname]; }
+               else if ($ehname!='_default') { $this->headerDetails['even'] = array(); }
+               $this->HTMLHeaderE = ''; 
+/*-- HTMLHEADERS-FOOTERS --*/
+               $resetHTMLHeadersrequired = false;
+          }
+/*-- END HTMLHEADERS-FOOTERS --*/
+       }
+
+       if ($ofvalue<0 || strtoupper($ofvalue)=='OFF') { 
+               $this->HTMLFooter = ''; 
+               $this->footerDetails['odd'] = array(); 
+               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
+       }
+       else if ($ofname && $ofvalue>0) {
+/*-- HTMLHEADERS-FOOTERS --*/
+          if (preg_match('/^html_(.*)$/i',$ofname,$n)) {
+               if (isset($this->pageHTMLfooters[$n[1]])) { $this->HTMLFooter = $this->pageHTMLfooters[$n[1]]; }
+               else { $this->HTMLFooter = ''; }
+               $this->footerDetails['odd'] = array(); 
+               $resetHTMLHeadersrequired = true;
+          }
+          else {
+/*-- END HTMLHEADERS-FOOTERS --*/
+               if (isset($this->pagefooters[$ofname])) { $this->footerDetails['odd'] = $this->pagefooters[$ofname]; }
+               else if ($ofname!='_default') { $this->footerDetails['odd'] = array(); }
+               $this->HTMLFooter = ''; 
+/*-- HTMLHEADERS-FOOTERS --*/
+               $resetHTMLHeadersrequired = true;
+          }
+/*-- END HTMLHEADERS-FOOTERS --*/
+       }
+
+       if ($efvalue<0 || strtoupper($efvalue)=='OFF') { 
+               $this->HTMLFooterE = ''; 
+               $this->footerDetails['even'] = array(); 
+               $resetHTMLHeadersrequired = true;       // *HTMLHEADERS-FOOTERS*
+       }
+       else if ($efname && $efvalue>0) {
+/*-- HTMLHEADERS-FOOTERS --*/
+          if (preg_match('/^html_(.*)$/i',$efname,$n)) {
+               if (isset($this->pageHTMLfooters[$n[1]])) { $this->HTMLFooterE = $this->pageHTMLfooters[$n[1]]; } 
+               else { $this->HTMLFooterE = ''; }
+               $this->footerDetails['even'] = array(); 
+               $resetHTMLHeadersrequired = true;
+          }
+          else {
+/*-- END HTMLHEADERS-FOOTERS --*/
+               if (isset($this->pagefooters[$efname])) { $this->footerDetails['even'] = $this->pagefooters[$efname]; } 
+               else if ($efname!='_default') { $this->footerDetails['even'] = array(); }
+               $this->HTMLFooterE = ''; 
+/*-- HTMLHEADERS-FOOTERS --*/
+               $resetHTMLHeadersrequired = true;
+          }
+/*-- END HTMLHEADERS-FOOTERS --*/
+       }
+/*-- HTMLHEADERS-FOOTERS --*/
+       if ($resetHTMLHeadersrequired) {
+               $this->SetHTMLHeader($this->HTMLHeader );
+               $this->SetHTMLHeader($this->HTMLHeaderE ,'E');
+               $this->SetHTMLFooter($this->HTMLFooter );
+               $this->SetHTMLFooter($this->HTMLFooterE ,'E');
+       }
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+
+       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
+               $this->_setAutoHeaderHeight($this->headerDetails['even'], $this->HTMLHeaderE);
+               $this->_setAutoFooterHeight($this->footerDetails['even'], $this->HTMLFooterE);
+       }
+       else {  // ODD or DEFAULT
+               $this->_setAutoHeaderHeight($this->headerDetails['odd'], $this->HTMLHeader);
+               $this->_setAutoFooterHeight($this->footerDetails['odd'], $this->HTMLFooter);
+       }
+       // Reset column top margin
+       $this->y0 = $this->tMargin;
+
+       $this->x=$this->lMargin;
+       $this->y=$this->tMargin;
+}
+
+
+
+function _setAutoHeaderHeight(&$det, &$htmlh) {
+  if ($this->setAutoTopMargin=='pad') {
+       if ($htmlh['h']) { $h = $htmlh['h']; }
+       else if ($det) { $h = $this->_getHFHeight($det,'H'); }
+       else { $h = 0; }
+       $this->tMargin = $this->margin_header + $h + $this->orig_tMargin;
+  }
+  else if ($this->setAutoTopMargin=='stretch') {
+       if ($htmlh['h']) { $h = $htmlh['h']; }
+       else if ($det) { $h = $this->_getHFHeight($det,'H'); }
+       else { $h = 0; }
+       $this->tMargin = max($this->orig_tMargin, $this->margin_header + $h + $this->autoMarginPadding);
+  }
+}
+
+
+function _setAutoFooterHeight(&$det, &$htmlf) {
+  if ($this->setAutoBottomMargin=='pad') {
+       if ($htmlf['h']) { $h = $htmlf['h']; }
+       else if ($det) { $h = $this->_getHFHeight($det,'F'); }
+       else { $h = 0; }
+       $this->bMargin = $this->margin_footer + $h + $this->orig_bMargin;
+       $this->PageBreakTrigger=$this->h-$this->bMargin ;
+  }
+  else if ($this->setAutoBottomMargin=='stretch') {
+       if ($htmlf['h']) { $h = $htmlf['h']; }
+       else if ($det) { $h = $this->_getHFHeight($det,'F'); }
+       else { $h = 0; }
+       $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $h + $this->autoMarginPadding);
+       $this->PageBreakTrigger=$this->h-$this->bMargin ;
+  }
+}
+
+function _getHFHeight(&$det,$end) {
+       $h = 0;
+       if(count($det)) {
+               foreach(array('L','C','R') AS $pos) {
+                 if (isset($det[$pos]['content']) && $det[$pos]['content']) {
+                       if (isset($det[$pos]['font-size']) && $det[$pos]['font-size']) { $hfsz = $det[$pos]['font-size']; }
+                       else { $hfsz = $this->default_font_size; }
+                       $h = max($h,$hfsz/_MPDFK);
+                 }
+               }
+               if ($det['line'] && $end=='H') { $h += $h/_MPDFK*$this->header_line_spacing; }
+               else if ($det['line'] && $end=='F') { $h += $h/_MPDFK*$this->footer_line_spacing; }
+       }
+       return $h;
+}
+
+
+function _endpage() {
+/*-- CSS-IMAGE-FLOAT --*/
+       $this->printfloatbuffer();
+/*-- END CSS-IMAGE-FLOAT --*/
+
+       if($this->visibility!='visible')
+               $this->SetVisibility('visible');
+       $this->EndLayer();      // mPDF 5.6.01
+       //End of page contents
+       $this->state=1;
+}
+
+function _newobj($obj_id=false,$onlynewobj=false) {
+               if (!$obj_id) {
+                       $obj_id = ++$this->n;
+               }
+               //Begin a new object
+               if (!$onlynewobj) {
+                       $this->offsets[$obj_id] = strlen($this->buffer);
+                       $this->_out($obj_id.' 0 obj');
+                       $this->_current_obj_id = $obj_id; // for later use with encryption
+               }
+}
+
+function _dounderline($x,$y,$txt) {
+       // Now print line exactly where $y secifies - called from Text() and Cell() - adjust  position there
+       // WORD SPACING
+      $w =($this->GetStringWidth($txt)*_MPDFK) + ($this->charspacing * mb_strlen( $txt, $this->mb_enc )) 
+                + ( $this->ws * mb_substr_count( $txt, ' ', $this->mb_enc ));
+       //Draw a line
+       return sprintf('%.3F %.3F m %.3F %.3F l S',$x*_MPDFK,($this->h-$y)*_MPDFK,($x*_MPDFK)+$w,($this->h-$y)*_MPDFK);
+}
+
+
+function _imageError($file, $firsttime, $msg) {
+       // Save re-trying image URL's which have already failed
+       $this->failedimages[$file] = true;
+       if ($firsttime && ($this->showImageErrors || $this->debug)) {
+                       $this->Error("IMAGE Error (".$file."): ".$msg);
+       }
+       return false;
+}
+
+
+function _getImage(&$file, $firsttime=true, $allowvector=true, $orig_srcpath=false) { 
+       // firsttime i.e. whether to add to this->images - use false when calling iteratively
+       // Image Data passed directly as var:varname
+       if (preg_match('/var:\s*(.*)/',$file, $v)) { 
+               $data = $this->$v[1];
+               $file = md5($data);
+       }
+       // mPDF 5.5.13
+       if (preg_match('/data:image\/(gif|jpeg|png);base64,(.*)/',$file, $v)) { 
+               $type = $v[1];
+               $data = base64_decode($v[2]);
+               $file = md5($data);
+       }
+
+       // mPDF 5.6.02
+       if ($firsttime && $file && substr($file,0,5)!='data:') { $file = urlencode_part($file); }
+       if ($firsttime && $orig_srcpath && substr($orig_srcpath,0,5)!='data:') { $orig_srcpath = urlencode_part($orig_srcpath); }
+
+       $ppUx = 0;
+       if ($orig_srcpath && isset($this->images[$orig_srcpath])) { $file=$orig_srcpath; return $this->images[$orig_srcpath]; }
+       if (isset($this->images[$file])) { return $this->images[$file]; }
+       else if ($orig_srcpath && isset($this->formobjects[$orig_srcpath])) { $file=$orig_srcpath; return $this->formobjects[$file]; }
+       else if (isset($this->formobjects[$file])) { return $this->formobjects[$file]; }
+       // Save re-trying image URL's which have already failed
+       else if ($firsttime && isset($this->failedimages[$file])) { return $this->_imageError($file, $firsttime, ''); } 
+       if (empty($data)) {
+               $type = '';
+               $data = '';
+
+               if ($orig_srcpath && $this->basepathIsLocal && $check = @fopen($orig_srcpath,"rb")) {
+                       fclose($check); 
+                       $file=$orig_srcpath;
+                       $data = file_get_contents($file);
+                       $type = $this->_imageTypeFromString($data);
+               }
+               if (!$data && $check = @fopen($file,"rb")) {
+                       fclose($check); 
+                       $data = file_get_contents($file);
+                       $type = $this->_imageTypeFromString($data);
+               }
+               if ((!$data || !$type) && !ini_get('allow_url_fopen') ) {       // only worth trying if remote file and !ini_get('allow_url_fopen')
+                       $this->file_get_contents_by_socket($file, $data);       // needs full url?? even on local (never needed for local)
+                       if ($data) { $type = $this->_imageTypeFromString($data); }
+               }
+               if ((!$data || !$type) && !ini_get('allow_url_fopen') && function_exists("curl_init")) {
+                       $this->file_get_contents_by_curl($file, $data);         // needs full url?? even on local (never needed for local)
+                       if ($data) { $type = $this->_imageTypeFromString($data); }
+               }
+
+       }
+       if (!$data) { return $this->_imageError($file, $firsttime, 'Could not find image file'); }
+       if (empty($type)) { $type = $this->_imageTypeFromString($data); }       
+       if (($type == 'wmf' || $type == 'svg') && !$allowvector) { return $this->_imageError($file, $firsttime, 'WMF or SVG image file not supported in this context'); }
+
+       // SVG
+       if ($type == 'svg') {
+               if (!class_exists('SVG', false)) { include(_MPDF_PATH .'classes/svg.php'); }
+               $svg = new SVG($this);
+               $family=$this->FontFamily;
+               $style=$this->FontStyle;
+               $size=$this->FontSizePt;
+               $info = $svg->ImageSVG($data);
+               //Restore font
+               if($family) $this->SetFont($family,$style,$size,false);
+               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing SVG file'); }
+               $info['type']='svg';
+               $info['i']=count($this->formobjects)+1;
+               $this->formobjects[$file]=$info;
+               return $info;
+       }
+
+       // JPEG
+       if ($type == 'jpeg' || $type == 'jpg') {
+               $hdr = $this->_jpgHeaderFromString($data);
+               if (!$hdr) { return $this->_imageError($file, $firsttime, 'Error parsing JPG header'); }
+               $a = $this->_jpgDataFromHeader($hdr);
+               $j = strpos($data,'JFIF');
+               if ($j) { 
+                       //Read resolution
+                       $unitSp=ord(substr($data,($j+7),1));
+                       if ($unitSp > 0) {
+                               $ppUx=$this->_twobytes2int(substr($data,($j+8),2));     // horizontal pixels per meter, usually set to zero
+                               if ($unitSp == 2) {     // = dots per cm (if == 1 set as dpi)
+                                       $ppUx=round($ppUx/10 *25.4);
+                               }
+                       }
+               }
+               if ($a[2] == 'DeviceCMYK' && (($this->PDFA && $this->restrictColorSpace!=3) || $this->restrictColorSpace==2)) {
+                       // convert to RGB image
+                       if (!function_exists("gd_info")) { $this->Error("JPG image may not use CMYK color space (".$file.")."); }
+                       if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "JPG image may not use CMYK color space - ".$file." - (Image converted to RGB. NB This will alter the colour profile of the image.)"; }
+                       $im = @imagecreatefromstring($data);
+                       if ($im) {
+                               $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png';
+                               imageinterlace($im, false);
+                               $check = @imagepng($im, $tempfile);
+                               if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse JPG(CMYK) image'); }
+                               $info = $this->_getImage($tempfile, false);
+                               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse JPG(CMYK) image'); }
+                               imagedestroy($im);
+                               unlink($tempfile);
+                               $info['type']='jpg';
+                               if ($firsttime) {
+                                       $info['i']=count($this->images)+1;
+                                       $this->images[$file]=$info;
+                               }
+                               return $info;
+                       }
+                       else { return $this->_imageError($file, $firsttime, 'Error creating GD image file from JPG(CMYK) image'); }
+               }
+               else if ($a[2] == 'DeviceRGB' && ($this->PDFX || $this->restrictColorSpace==3)) {
+                       // Convert to CMYK image stream - nominally returned as type='png'
+                       $info = $this->_convImage($data, $a[2], 'DeviceCMYK', $a[0], $a[1], $ppUx, false);
+                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "JPG image may not use RGB color space - ".$file." - (Image converted to CMYK. NB This will alter the colour profile of the image.)"; }
+               }
+               else if (($a[2] == 'DeviceRGB' || $a[2] == 'DeviceCMYK') && $this->restrictColorSpace==1) {
+                       // Convert to Grayscale image stream - nominally returned as type='png'
+                       $info = $this->_convImage($data, $a[2], 'DeviceGray', $a[0], $a[1], $ppUx, false);
+               }
+               else {
+                       $info = array('w'=>$a[0],'h'=>$a[1],'cs'=>$a[2],'bpc'=>$a[3],'f'=>'DCTDecode','data'=>$data, 'type'=>'jpg');
+                       if ($ppUx) { $info['set-dpi'] = $ppUx; }
+               }
+               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing or converting JPG image'); }
+
+               if ($firsttime) {
+                       $info['i']=count($this->images)+1;
+                       $this->images[$file]=$info;
+               }
+               return $info;
+       }
+
+       // PNG
+       else if ($type == 'png') {
+               //Check signature
+               if(substr($data,0,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { 
+                       return $this->_imageError($file, $firsttime, 'Error parsing PNG identifier'); 
+               }
+               //Read header chunk
+               if(substr($data,12,4)!='IHDR') { 
+                       return $this->_imageError($file, $firsttime, 'Incorrect PNG file (no IHDR block found)'); 
+               }
+
+               $w=$this->_fourbytes2int(substr($data,16,4));
+               $h=$this->_fourbytes2int(substr($data,20,4));
+               $bpc=ord(substr($data,24,1));
+               $errpng = false;
+               $pngalpha = false; 
+               if($bpc>8) { $errpng = 'not 8-bit depth'; }
+               $ct=ord(substr($data,25,1));
+               if($ct==0) { $colspace='DeviceGray'; }
+               elseif($ct==2) { $colspace='DeviceRGB'; }
+               elseif($ct==3) { $colspace='Indexed'; }
+               elseif($ct==4) { $colspace='DeviceGray';  $errpng = 'alpha channel'; $pngalpha = true; }
+               else { $colspace='DeviceRGB'; $errpng = 'alpha channel'; $pngalpha = true; } 
+               if(ord(substr($data,26,1))!=0) { $errpng = 'compression method'; }
+               if(ord(substr($data,27,1))!=0) { $errpng = 'filter method'; }
+               if(ord(substr($data,28,1))!=0) { $errpng = 'interlaced file'; }
+               $j = strpos($data,'pHYs');
+               if ($j) { 
+                       //Read resolution
+                       $unitSp=ord(substr($data,($j+12),1));
+                       if ($unitSp == 1) {
+                               $ppUx=$this->_fourbytes2int(substr($data,($j+4),4));    // horizontal pixels per meter, usually set to zero
+                               $ppUx=round($ppUx/1000 *25.4);
+                       }
+               }
+               if (($colspace == 'DeviceRGB' || $colspace == 'Indexed') && ($this->PDFX || $this->restrictColorSpace==3)) {
+                       // Convert to CMYK image stream - nominally returned as type='png'
+                       $info = $this->_convImage($data, $colspace, 'DeviceCMYK', $w, $h, $ppUx, $pngalpha);
+                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "PNG image may not use RGB color space - ".$file." - (Image converted to CMYK. NB This will alter the colour profile of the image.)"; }
+               }
+               else if (($colspace == 'DeviceRGB' || $colspace == 'Indexed') && $this->restrictColorSpace==1) {
+                       // Convert to Grayscale image stream - nominally returned as type='png'
+                       $info = $this->_convImage($data, $colspace, 'DeviceGray', $w, $h, $ppUx, $pngalpha);
+               }
+               else if (($this->PDFA || $this->PDFX) && $pngalpha) {
+                       // Remove alpha channel
+                       if ($this->restrictColorSpace==1) {     // Grayscale
+                               $info = $this->_convImage($data, $colspace, 'DeviceGray', $w, $h, $ppUx, $pngalpha);
+                       }
+                       else if ($this->restrictColorSpace==3) {        // CMYK
+                               $info = $this->_convImage($data, $colspace, 'DeviceCMYK', $w, $h, $ppUx, $pngalpha);
+                       }
+                       else if ($this->PDFA ) {        // RGB
+                               $info = $this->_convImage($data, $colspace, 'DeviceRGB', $w, $h, $ppUx, $pngalpha);
+                       }
+                       if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "Transparency (alpha channel) not permitted in PDFA or PDFX files - ".$file." - (Image converted to one without transparency.)"; }
+               }
+               else if ($errpng || $pngalpha) {
+                       if (function_exists('gd_info')) { $gd = gd_info(); }
+                       else {$gd = array(); }
+                       if (!isset($gd['PNG Support'])) { return $this->_imageError($file, $firsttime, 'GD library required for PNG image ('.$errpng.')'); }
+                       $im = imagecreatefromstring($data);
+                       if (!$im) { return $this->_imageError($file, $firsttime, 'Error creating GD image from PNG file ('.$errpng.')'); }
+                       $w = imagesx($im);
+                       $h = imagesy($im);
+                       if ($im) {
+                          $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png';
+                          // Alpha channel set
+                          if ($pngalpha) {
+                               if ($this->PDFA) { $this->Error("PDFA1-b does not permit images with alpha channel transparency (".$file.")."); }
+                               $imgalpha = imagecreate($w, $h);
+                               // generate gray scale pallete
+                               for ($c = 0; $c < 256; ++$c) { ImageColorAllocate($imgalpha, $c, $c, $c); }
+                               // extract alpha channel
+                               $gammacorr = 2.2;       // gamma correction
+                               for ($xpx = 0; $xpx < $w; ++$xpx) {
+                                       for ($ypx = 0; $ypx < $h; ++$ypx) {
+                                               //$colorindex = imagecolorat($im, $xpx, $ypx);
+                                               //$col = imagecolorsforindex($im, $colorindex);
+                                               //$gamma2 = (pow((((127 - $col['alpha']) * 255 / 127) / 255), $gammacorr) * 255);
+                                               $alpha = (imagecolorat($im, $xpx, $ypx) & 0x7F000000) >> 24;
+                                               if ($alpha < 127) {
+                                                       if ($alpha==0) { $gamma = 255; }
+                                                       else
+                                                               $gamma = (pow((((127 - $alpha) * 255 / 127) / 255), $gammacorr) * 255);
+                                                       imagesetpixel($imgalpha, $xpx, $ypx, $gamma);
+                                               }
+                                       }
+                               }
+                               // create temp alpha file
+                               $tempfile_alpha = _MPDF_TEMP_PATH.'_tempMskPNG'.RAND(1,10000).'.png';
+                               if (!is_writable($tempfile_alpha)) { 
+                                       ob_start(); 
+                                       $check = @imagepng($imgalpha);
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
+                                       imagedestroy($imgalpha);
+                                       $this->_tempimg = ob_get_contents();
+                                       $this->_tempimglnk = 'var:_tempimg';
+                                       ob_end_clean();
+                                       // extract image without alpha channel
+                                       $imgplain = imagecreatetruecolor($w, $h);
+                                       imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h);
+                                       // create temp image file
+                                       $minfo = $this->_getImage($this->_tempimglnk, false);
+                                       if (!$minfo) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
+                                       ob_start(); 
+                                       $check = @imagepng($imgplain);
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
+                                       $this->_tempimg = ob_get_contents();
+                                       $this->_tempimglnk = 'var:_tempimg';
+                                       ob_end_clean();
+                                       $info = $this->_getImage($this->_tempimglnk, false);
+                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
+                                       imagedestroy($imgplain);
+                                       $imgmask = count($this->images)+1;
+                                       $minfo['cs'] = 'DeviceGray';
+                                       $minfo['i']=$imgmask ;
+                                       $this->images[$tempfile_alpha] = $minfo;
+
+                               }
+                               else {
+                                       $check = @imagepng($imgalpha, $tempfile_alpha);
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile_alpha.') parsing PNG image with alpha channel ('.$errpng.')'); }
+                                       imagedestroy($imgalpha);
+
+                                       // extract image without alpha channel
+                                       $imgplain = imagecreatetruecolor($w, $h);
+                                       imagecopy($imgplain, $im, 0, 0, 0, 0, $w, $h);
+
+                                       // create temp image file
+                                       $check = @imagepng($imgplain, $tempfile);
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile.') parsing PNG image with alpha channel ('.$errpng.')'); }
+                                       imagedestroy($imgplain);
+                                       // embed mask image
+                                       $minfo = $this->_getImage($tempfile_alpha, false);
+                                       unlink($tempfile_alpha);
+                                       if (!$minfo) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile_alpha.') created with GD library to parse PNG image'); }
+                                       $imgmask = count($this->images)+1;
+                                       $minfo['cs'] = 'DeviceGray';
+                                       $minfo['i']=$imgmask ;
+                                       $this->images[$tempfile_alpha] = $minfo;
+                                       // embed image, masked with previously embedded mask
+                                       $info = $this->_getImage($tempfile, false);
+                                       unlink($tempfile);
+                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse PNG image'); }
+
+                               }
+                               $info['masked'] = $imgmask;
+                               if ($ppUx) { $info['set-dpi'] = $ppUx; }
+                               $info['type']='png';
+                               if ($firsttime) {
+                                       $info['i']=count($this->images)+1;
+                                       $this->images[$file]=$info;
+                               }
+                               return $info;
+                          }
+                          else {       // No alpha/transparency set
+                               imagealphablending($im, false);
+                               imagesavealpha($im, false); 
+                               imageinterlace($im, false);
+                               if (!is_writable($tempfile)) { 
+                                       ob_start(); 
+                                       $check = @imagepng($im);
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse PNG image'); }
+                                       $this->_tempimg = ob_get_contents();
+                                       $this->_tempimglnk = 'var:_tempimg';
+                                       ob_end_clean();
+                                       $info = $this->_getImage($this->_tempimglnk, false);
+                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse PNG image'); }
+                                       imagedestroy($im);
+                               }
+                               else {
+                                       $check = @imagepng($im, $tempfile );
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Failed to create temporary image file ('.$tempfile.') parsing PNG image ('.$errpng.')'); }
+                                       imagedestroy($im);
+                                       $info = $this->_getImage($tempfile, false) ;
+                                       unlink($tempfile ); 
+                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse PNG image'); }
+                               }
+                               if ($ppUx) { $info['set-dpi'] = $ppUx; }
+                               $info['type']='png';
+                               if ($firsttime) {
+                                       $info['i']=count($this->images)+1;
+                                       $this->images[$file]=$info;
+                               }
+                               return $info;
+                          }
+                       }
+               }
+
+               else {
+                       $parms='/DecodeParms <</Predictor 15 /Colors '.($ct==2 ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w.'>>';
+                       //Scan chunks looking for palette, transparency and image data
+                       $pal='';
+                       $trns='';
+                       $pngdata='';
+                       $p = 33;
+                       do {
+                               $n=$this->_fourbytes2int(substr($data,$p,4));   $p += 4;
+                               $type=substr($data,$p,4);       $p += 4;
+                               if($type=='PLTE') {
+                                       //Read palette
+                                       $pal=substr($data,$p,$n);       $p += $n;
+                                       $p += 4;
+                               }
+                               elseif($type=='tRNS') {
+                                       //Read transparency info
+                                       $t=substr($data,$p,$n); $p += $n;
+                                       if($ct==0) $trns=array(ord(substr($t,1,1)));
+                                       elseif($ct==2) $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1)));
+                                       else
+                                       {
+                                               $pos=strpos($t,chr(0));
+                                               if(is_int($pos)) $trns=array($pos);
+                                       }
+                                       $p += 4;
+                               }
+                               elseif($type=='IDAT') {
+                                       $pngdata.=substr($data,$p,$n);  $p += $n;
+                                       $p += 4;
+                               }
+                               elseif($type=='IEND') { break; }
+                               else if (preg_match('/[a-zA-Z]{4}/',$type)) { $p += $n+4; }
+                               else { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data'); }
+                       }
+                       while($n);
+                       if (!$pngdata) { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data - no IDAT data found'); }
+                       if($colspace=='Indexed' and empty($pal)) { return $this->_imageError($file, $firsttime, 'Error parsing PNG image data - missing colour palette'); }
+                       $info = array('w'=>$w,'h'=>$h,'cs'=>$colspace,'bpc'=>$bpc,'f'=>'FlateDecode','parms'=>$parms,'pal'=>$pal,'trns'=>$trns,'data'=>$pngdata);
+                       $info['type']='png';
+                       if ($ppUx) { $info['set-dpi'] = $ppUx; }
+               }
+
+               if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing or converting PNG image'); }
+
+               if ($firsttime) {
+                       $info['i']=count($this->images)+1;
+                       $this->images[$file]=$info;
+               }
+               return $info;
+       }
+
+       // GIF
+       else if ($type == 'gif') {
+       if (function_exists('gd_info')) { $gd = gd_info(); }
+               else {$gd = array(); }
+               if (isset($gd['GIF Read Support']) && $gd['GIF Read Support']) {
+                       $im = @imagecreatefromstring($data);
+                       if ($im) {
+                               $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png';
+                               imagealphablending($im, false);
+                               imagesavealpha($im, false); 
+                               imageinterlace($im, false);
+                               if (!is_writable($tempfile)) { 
+                                       ob_start(); 
+                                       $check = @imagepng($im);
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary image object whilst using GD library to parse GIF image'); }
+                                       $this->_tempimg = ob_get_contents();
+                                       $this->_tempimglnk = 'var:_tempimg';
+                                       ob_end_clean();
+                                       $info = $this->_getImage($this->_tempimglnk, false);
+                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file image object created with GD library to parse GIF image'); }
+                                       imagedestroy($im);
+                               }
+                               else {
+                                       $check = @imagepng($im, $tempfile);
+                                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse GIF image'); }
+                                       $info = $this->_getImage($tempfile, false);
+                                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse GIF image'); }
+                                       imagedestroy($im);
+                                       unlink($tempfile);
+                               }
+                               $info['type']='gif';
+                               if ($firsttime) {
+                                       $info['i']=count($this->images)+1;
+                                       $this->images[$file]=$info;
+                               }
+                               return $info;
+                       }
+                       else { return $this->_imageError($file, $firsttime, 'Error creating GD image file from GIF image'); }
+               }
+
+               if (!class_exists('gif', false)) { 
+                       include_once(_MPDF_PATH.'classes/gif.php'); 
+               }
+               $gif=new CGIF();
+
+               $h=0;
+               $w=0;
+               $gif->loadFile($data, 0);
+
+               if(isset($gif->m_img->m_gih->m_bLocalClr) && $gif->m_img->m_gih->m_bLocalClr) {
+                       $nColors = $gif->m_img->m_gih->m_nTableSize;
+                       $pal = $gif->m_img->m_gih->m_colorTable->toString();
+                       if($bgColor != -1) {
+                               $bgColor = $gif->m_img->m_gih->m_colorTable->colorIndex($bgColor);
+                       }
+                       $colspace='Indexed';
+               } elseif(isset($gif->m_gfh->m_bGlobalClr) && $gif->m_gfh->m_bGlobalClr) {
+                       $nColors = $gif->m_gfh->m_nTableSize;
+                       $pal = $gif->m_gfh->m_colorTable->toString();
+                       if((isset($bgColor)) and $bgColor != -1) {
+                               $bgColor = $gif->m_gfh->m_colorTable->colorIndex($bgColor);
+                       }
+                       $colspace='Indexed';
+               } else {
+                       $nColors = 0;
+                       $bgColor = -1;
+                       $colspace='DeviceGray';
+                       $pal='';
+               }
+
+               $trns='';
+               if(isset($gif->m_img->m_bTrans) && $gif->m_img->m_bTrans && ($nColors > 0)) {
+                       $trns=array($gif->m_img->m_nTrans);
+               }
+               $gifdata=$gif->m_img->m_data;
+               $w=$gif->m_gfh->m_nWidth;
+               $h=$gif->m_gfh->m_nHeight;
+               $gif->ClearData();
+
+               if($colspace=='Indexed' and empty($pal)) {
+                       return $this->_imageError($file, $firsttime, 'Error parsing GIF image - missing colour palette'); 
+               }
+               if ($this->compress) {
+                       $gifdata=gzcompress($gifdata);
+                       $info = array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>8, 'f'=>'FlateDecode', 'pal'=>$pal, 'trns'=>$trns, 'data'=>$gifdata);
+               } 
+               else {
+                       $info = array( 'w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>8, 'pal'=>$pal, 'trns'=>$trns, 'data'=>$gifdata);
+               } 
+               $info['type']='gif';
+               if ($firsttime) {
+                       $info['i']=count($this->images)+1;
+                       $this->images[$file]=$info;
+               }
+               return $info;
+       }
+
+/*-- IMAGES-BMP --*/
+       // BMP (Windows Bitmap)
+       else if ($type == 'bmp') {
+               if (!class_exists('bmp', false)) { include(_MPDF_PATH.'classes/bmp.php'); }
+               if (empty($this->bmp)) { $this->bmp = new bmp($this); }
+               $info = $this->bmp->_getBMPimage($data, $file);
+               if (isset($info['error'])) {
+                       return $this->_imageError($file, $firsttime, $info['error']); 
+               }
+               if ($firsttime) {
+                       $info['i']=count($this->images)+1;
+                       $this->images[$file]=$info;
+               }
+               return $info;
+       }
+/*-- END IMAGES-BMP --*/
+/*-- IMAGES-WMF --*/
+       // WMF
+       else if ($type == 'wmf') {
+               if (!class_exists('wmf', false)) { include(_MPDF_PATH.'classes/wmf.php'); }
+               if (empty($this->wmf)) { $this->wmf = new wmf($this); }
+               $wmfres = $this->wmf->_getWMFimage($data);
+         if ($wmfres[0]==0) { 
+               if ($wmfres[1]) { return $this->_imageError($file, $firsttime, $wmfres[1]); }
+               return $this->_imageError($file, $firsttime, 'Error parsing WMF image'); 
+         }
+         $info = array('x'=>$wmfres[2][0],'y'=>$wmfres[2][1],'w'=>$wmfres[3][0],'h'=>$wmfres[3][1],'data'=>$wmfres[1]);
+         $info['i']=count($this->formobjects)+1;
+         $info['type']='wmf';
+         $this->formobjects[$file]=$info;
+         return $info;
+       }
+/*-- END IMAGES-WMF --*/
+
+       // UNKNOWN TYPE - try GD imagecreatefromstring
+       else {
+               if (function_exists('gd_info')) { $gd = gd_info(); }
+               else {$gd = array(); }
+               if (isset($gd['PNG Support']) && $gd['PNG Support']) {
+                       $im = @imagecreatefromstring($data);
+                       if (!$im) { return $this->_imageError($file, $firsttime, 'Error parsing image file - image type not recognised, and not supported by GD imagecreate'); }
+                       $tempfile = _MPDF_TEMP_PATH.'_tempImgPNG'.RAND(1,10000).'.png';
+                       imagealphablending($im, false);
+                       imagesavealpha($im, false); 
+                       imageinterlace($im, false);
+                       $check = @imagepng($im, $tempfile);
+                       if (!$check) { return $this->_imageError($file, $firsttime, 'Error creating temporary file ('.$tempfile.') whilst using GD library to parse unknown image type'); }
+                       $info = $this->_getImage($tempfile, false);
+                       imagedestroy($im);
+                       unlink($tempfile);
+                       if (!$info) { return $this->_imageError($file, $firsttime, 'Error parsing temporary file ('.$tempfile.') created with GD library to parse unknown image type'); }
+                       $info['type']='png';
+                       if ($firsttime) {
+                               $info['i']=count($this->images)+1;
+                               $this->images[$file]=$info;
+                       }
+                       return $info;
+               }
+       }
+
+       return $this->_imageError($file, $firsttime, 'Error parsing image file - image type not recognised'); 
+}
+//==============================================================
+function _convImage(&$data, $colspace, $targetcs, $w, $h, $dpi, $mask) {
+       if ($this->PDFA || $this->PDFX) { $mask=false; }
+       $im = @imagecreatefromstring($data);
+       $info = array();
+       if ($im) {
+               $imgdata = '';
+               $mimgdata = '';
+               $minfo = array();
+               //Read transparency info
+               $trns=array();
+               $trnsrgb = false;
+               if (!$this->PDFA && !$this->PDFX) { 
+                  $p = strpos($data,'tRNS');
+                  if ($p) { 
+                       $n=$this->_fourbytes2int(substr($data,($p-4),4));
+                       $t = substr($data,($p+4),$n);   
+                       if ($colspace=='DeviceGray') { 
+                               $trns=array(ord(substr($t,1,1))); 
+                               $trnsrgb = array($trns[0],$trns[0],$trns[0]);
+                       }
+                       else if ($colspace=='DeviceRGB') { 
+                               $trns=array(ord(substr($t,1,1)),ord(substr($t,3,1)),ord(substr($t,5,1))); 
+                               $trnsrgb = $trns;
+                               if ($targetcs=='DeviceCMYK') {
+                                       $col = $this->rgb2cmyk(array(3,$trns[0],$trns[1],$trns[2]));
+                                       $c1 = intval($col[1]*2.55);
+                                       $c2 = intval($col[2]*2.55);
+                                       $c3 = intval($col[3]*2.55);
+                                       $c4 = intval($col[4]*2.55);
+                                       $trns = array($c1,$c2,$c3,$c4);
+                               }
+                               else if ($targetcs=='DeviceGray') {
+                                       $c = intval(($trns[0] * .21) + ($trns[1] * .71) + ($trns[2] * .07));
+                                       $trns = array($c);
+                               }
+                       }
+                       else {  // Indexed
+                               $pos = strpos($t,chr(0));
+                               if (is_int($pos)) {
+                                       $pal = imagecolorsforindex($im, $pos);
+                                       $r = $pal['red'];
+                                       $g = $pal['green'];
+                                       $b = $pal['blue'];
+                                       $trns=array($r,$g,$b);  // ****
+                                       $trnsrgb = $trns;
+                                       if ($targetcs=='DeviceCMYK') {
+                                               $col = $this->rgb2cmyk(array(3,$r,$g,$b));
+                                               $c1 = intval($col[1]*2.55);
+                                               $c2 = intval($col[2]*2.55);
+                                               $c3 = intval($col[3]*2.55);
+                                               $c4 = intval($col[4]*2.55);
+                                               $trns = array($c1,$c2,$c3,$c4);
+                                       }
+                                       else if ($targetcs=='DeviceGray') {
+                                               $c = intval(($r * .21) + ($g * .71) + ($b * .07));
+                                               $trns = array($c);
+                                       }
+                               }
+                       }
+                  }
+               }
+               for ($i = 0; $i < $h; $i++) {
+                       for ($j = 0; $j < $w; $j++) {
+                               $rgb = imagecolorat($im, $j, $i);
+                               $r = ($rgb >> 16) & 0xFF;
+                               $g = ($rgb >> 8) & 0xFF;
+                               $b = $rgb & 0xFF;
+                               if ($colspace=='Indexed') {
+                                       $pal = imagecolorsforindex($im, $rgb);
+                                       $r = $pal['red'];
+                                       $g = $pal['green'];
+                                       $b = $pal['blue'];
+                               }
+
+                               if ($targetcs=='DeviceCMYK') {
+                                       $col = $this->rgb2cmyk(array(3,$r,$g,$b));
+                                       $c1 = intval($col[1]*2.55);
+                                       $c2 = intval($col[2]*2.55);
+                                       $c3 = intval($col[3]*2.55);
+                                       $c4 = intval($col[4]*2.55);
+                                       if ($trnsrgb) {
+                                               // original pixel was not set as transparent but processed color does match
+                                               if ($trnsrgb!=array($r,$g,$b) && $trns==array($c1,$c2,$c3,$c4)) {
+                                                       if ($c4==0) { $c4=1; } else { $c4--; }
+                                               }
+                                       }
+                                       $imgdata .= chr($c1).chr($c2).chr($c3).chr($c4);
+                               }
+                               else if ($targetcs=='DeviceGray') {
+                                       $c = intval(($r * .21) + ($g * .71) + ($b * .07));
+                                       if ($trnsrgb) {
+                                               // original pixel was not set as transparent but processed color does match
+                                               if ($trnsrgb!=array($r,$g,$b) && $trns==array($c)) {
+                                                       if ($c==0) { $c=1; } else { $c--; }
+                                               }
+                                       }
+                                       $imgdata .= chr($c);
+                               }
+                               else if ($targetcs=='DeviceRGB') {
+                                       $imgdata .= chr($r).chr($g).chr($b);
+                               }
+                               if ($mask) {
+                                       $col = imagecolorsforindex($im, $rgb);
+                                       $gammacorr = 2.2;       // gamma correction
+                                       $gamma = intval((pow((((127 - $col['alpha']) * 255 / 127) / 255), $gammacorr) * 255));
+                                       $mimgdata .= chr($gamma);
+                               }
+                       }
+               }
+
+               if ($targetcs=='DeviceGray') { $ncols = 1; }
+               else if ($targetcs=='DeviceRGB') { $ncols = 3; }
+               else if ($targetcs=='DeviceCMYK') { $ncols = 4; }
+
+               $imgdata = gzcompress($imgdata);
+               $info = array('w'=>$w,'h'=>$h,'cs'=>$targetcs,'bpc'=>8,'f'=>'FlateDecode','data'=>$imgdata, 'type'=>'png',
+                       'parms'=>'/DecodeParms <</Colors '.$ncols.' /BitsPerComponent 8 /Columns '.$w.'>>');
+               if ($dpi) { $info['set-dpi'] = $dpi; }
+               if ($mask) { 
+                       $mimgdata = gzcompress($mimgdata); 
+                       $minfo = array('w'=>$w,'h'=>$h,'cs'=>'DeviceGray','bpc'=>8,'f'=>'FlateDecode','data'=>$mimgdata, 'type'=>'png',
+                       'parms'=>'/DecodeParms <</Colors '.$ncols.' /BitsPerComponent 8 /Columns '.$w.'>>');
+                       if ($dpi) { $minfo['set-dpi'] = $dpi; }
+                       $tempfile = '_tempImgPNG'.RAND(1,10000).'.png';
+                       $imgmask = count($this->images)+1;
+                       $minfo['i']=$imgmask ;
+                       $this->images[$tempfile] = $minfo;
+                       $info['masked'] = $imgmask;
+               }
+               else if ($trns) { $info['trns'] = $trns; }
+               imagedestroy($im);
+       }
+       return $info;
+}
+
+
+
+
+function _fourbytes2int($s) {
+       //Read a 4-byte integer from string
+       return (ord($s[0])<<24) + (ord($s[1])<<16) + (ord($s[2])<<8) + ord($s[3]);
+}
+
+function _twobytes2int($s) {
+       //Read a 2-byte integer from string
+       return (ord(substr($s, 0, 1))<<8) + ord(substr($s, 1, 1));
+}
+
+function _jpgHeaderFromString(&$data) {
+       $p = 4;
+       $p += $this->_twobytes2int(substr($data, $p, 2));       // Length of initial marker block
+       $marker = substr($data, $p, 2);
+       while($marker != chr(255).chr(192) && $marker != chr(255).chr(194) && $p<strlen($data)) {
+               // Start of frame marker (FFC0) or (FFC2) mPDF 4.4.004
+               $p += ($this->_twobytes2int(substr($data, $p+2, 2))) + 2;       // Length of marker block
+               $marker = substr($data, $p, 2);
+       }
+       if ($marker != chr(255).chr(192) && $marker != chr(255).chr(194)) { return false; }
+       return substr($data, $p+2, 10);
+}
+
+function _jpgDataFromHeader($hdr) {
+       $bpc = ord(substr($hdr, 2, 1));
+       if (!$bpc) { $bpc = 8; }
+       $h = $this->_twobytes2int(substr($hdr, 3, 2));
+       $w = $this->_twobytes2int(substr($hdr, 5, 2));
+       $channels = ord(substr($hdr, 7, 1));
+       if ($channels==3) { $colspace='DeviceRGB'; }
+       elseif($channels==4) { $colspace='DeviceCMYK'; }
+       else { $colspace='DeviceGray'; }
+       return array($w, $h, $colspace, $bpc);
+}
+
+function file_get_contents_by_curl($url, &$data) {
+       $timeout = 5;
+       $ch = curl_init($url);
+       curl_setopt($ch, CURLOPT_HEADER, 0);
+       curl_setopt($ch, CURLOPT_NOBODY, 0);
+       curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
+       curl_setopt ( $ch , CURLOPT_CONNECTTIMEOUT , $timeout );
+       $data = curl_exec($ch);
+       curl_close($ch);
+}
+
+
+function file_get_contents_by_socket($url, &$data) {
+       $timeout = 1;
+       $p = parse_url($url);
+       $file = $p['path'];
+       if ($p['query']) { $file .= '?'.$p['query']; }
+       if(!($fh = @fsockopen($p['host'], 80, $errno, $errstr, $timeout))) { return false; }
+       $getstring =
+               "GET ".$file." HTTP/1.0 \r\n" .
+               "Host: ".$p['host']." \r\n" .
+               "Connection: close\r\n\r\n";
+       fwrite($fh, $getstring);
+       // Get rid of HTTP header
+       $s = fgets($fh, 1024);
+       if (!$s) { return false; }
+       $httpheader .= $s;
+       while (!feof($fh)) {
+               $s = fgets($fh, 1024);
+               if ( $s == "\r\n" ) { break; }
+       }
+       $data = '';
+       while (!feof($fh)) {
+               $data .= fgets($fh, 1024);
+       }
+       fclose($fh);
+}
+
+//==============================================================
+
+function _imageTypeFromString(&$data) {
+       $type = '';
+       if (substr($data, 6, 4)== 'JFIF' || substr($data, 6, 4)== 'Exif') { 
+               $type = 'jpeg'; 
+       }
+       else if (substr($data, 0, 6)== "GIF87a" || substr($data, 0, 6)== "GIF89a") { 
+               $type = 'gif';
+       }
+       else if (substr($data, 0, 8)== chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) { 
+               $type = 'png';
+       }
+/*-- IMAGES-WMF --*/
+       else if (substr($data, 0, 4)== chr(215).chr(205).chr(198).chr(154)) { 
+               $type = 'wmf';
+       }
+/*-- END IMAGES-WMF --*/
+       else if (preg_match('/<svg.*<\/svg>/is',$data)) { 
+               $type = 'svg';
+       }
+       // BMP images
+       else if (substr($data, 0, 2)== "BM") { 
+               $type = 'bmp';
+       }
+       return $type;
+}
+//==============================================================
+
+// Moved outside WMF as also needed for SVG
+function _putformobjects() {
+       reset($this->formobjects);
+       while(list($file,$info)=each($this->formobjects)) {
+               $this->_newobj();
+               $this->formobjects[$file]['n']=$this->n;
+               $this->_out('<</Type /XObject');
+               $this->_out('/Subtype /Form');
+               $this->_out('/Group '.($this->n+1).' 0 R');
+               $this->_out('/BBox ['.$info['x'].' '.$info['y'].' '.($info['w']+$info['x']).' '.($info['h']+$info['y']).']');
+               if ($this->compress)
+                       $this->_out('/Filter /FlateDecode');
+               $data=($this->compress) ? gzcompress($info['data']) : $info['data'];
+               $this->_out('/Length '.strlen($data).'>>');
+               $this->_putstream($data);
+               unset($this->formobjects[$file]['data']);
+               $this->_out('endobj');
+               // Required for SVG transparency (opacity) to work
+               $this->_newobj();
+               $this->_out('<</Type /Group');
+               $this->_out('/S /Transparency');
+               $this->_out('>>');
+               $this->_out('endobj');
+       }
+}
+
+function _freadint($f)
+{
+       //Read a 4-byte integer from file
+       $i=ord(fread($f,1))<<24;
+       $i+=ord(fread($f,1))<<16;
+       $i+=ord(fread($f,1))<<8;
+       $i+=ord(fread($f,1));
+       return $i;
+}
+
+function _UTF16BEtextstring($s) {
+       $s = $this->UTF8ToUTF16BE($s, true);
+/*-- ENCRYPTION --*/
+       if ($this->encrypted) {
+               $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
+       }
+/*-- END ENCRYPTION --*/
+       return '('. $this->_escape($s).')';
+}
+
+function _textstring($s) {
+/*-- ENCRYPTION --*/
+       if ($this->encrypted) {
+               $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
+       }
+/*-- END ENCRYPTION --*/
+       return '('. $this->_escape($s).')';
+}
+
+
+function _escape($s)
+{
+       // the chr(13) substitution fixes the Bugs item #1421290.
+       return strtr($s, array(')' => '\\)', '(' => '\\(', '\\' => '\\\\', chr(13) => '\r'));
+}
+
+function _putstream($s) {
+/*-- ENCRYPTION --*/
+       if ($this->encrypted) {
+               $s = $this->_RC4($this->_objectkey($this->_current_obj_id), $s);
+       }
+/*-- END ENCRYPTION --*/
+       $this->_out('stream');
+       $this->_out($s);
+       $this->_out('endstream');
+}
+
+
+function _out($s,$ln=true) {
+       if($this->state==2) {
+          if ($this->bufferoutput) {
+               $this->headerbuffer.= $s."\n";
+          }
+/*-- COLUMNS --*/
+          else if (($this->ColActive) && !$this->processingHeader && !$this->processingFooter) {
+               // Captures everything in buffer for columns; Almost everything is sent from fn. Cell() except:
+               // Images sent from Image() or
+               // later sent as _out($textto) in printbuffer
+               // Line()
+               if (preg_match('/q \d+\.\d\d+ 0 0 (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ cm \/(I|FO)\d+ Do Q/',$s,$m)) {    // Image data 
+                       $h = ($m[1]/_MPDFK);
+                       // Update/overwrite the lowest bottom of printing y value for a column
+                       $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y+$h;
+               }
+/*-- TABLES --*/
+               else if (preg_match('/\d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ ([\-]{0,1}\d+\.\d\d+) re/',$s,$m) && $this->tableLevel>0) { // Rect in table
+                       $h = ($m[1]/_MPDFK);
+                       // Update/overwrite the lowest bottom of printing y value for a column
+                       $this->ColDetails[$this->CurrCol]['bottom_margin'] = max($this->ColDetails[$this->CurrCol]['bottom_margin'],($this->y+$h));
+               }
+/*-- END TABLES --*/
+               else {  // Td Text Set in Cell()
+                       if (isset($this->ColDetails[$this->CurrCol]['bottom_margin'])) { $h = $this->ColDetails[$this->CurrCol]['bottom_margin'] - $this->y; }
+                       else { $h = 0; }
+               }
+               if ($h < 0) { $h = -$h; }
+               $this->columnbuffer[] = array(
+               's' => $s,                                                      // Text string to output 
+               'col' => $this->CurrCol,                                // Column when printed 
+               'x' => $this->x,                                                // x when printed 
+               'y' => $this->y,                                                // this->y when printed (after column break) 
+               'h' => $h                                                       // actual y at bottom when printed = y+h  
+               );
+          }
+/*-- END COLUMNS --*/
+/*-- TABLES --*/
+          else if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) {
+               // Captures eveything in buffer for rotated tables; 
+               $this->tablebuffer .= $s . "\n";
+          }
+/*-- END TABLES --*/
+          else if ($this->kwt && !$this->processingHeader && !$this->processingFooter) {
+               // Captures eveything in buffer for keep-with-table (h1-6); 
+               $this->kwt_buffer[] = array(
+               's' => $s,                                                      // Text string to output 
+               'x' => $this->x,                                                // x when printed  
+               'y' => $this->y,                                                // y when printed  
+               );
+          }
+          else if (($this->keep_block_together) && !$this->processingHeader && !$this->processingFooter) {
+               if (!isset($this->ktBlock[$this->page]['bottom_margin'])) {
+                       $this->ktBlock[$this->page]['bottom_margin'] = $this->y;
+               }
+
+               // Captures eveything in buffer; 
+               if (preg_match('/q \d+\.\d\d+ 0 0 (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ cm \/(I|FO)\d+ Do Q/',$s,$m)) {    // Image data 
+                       $h = ($m[1]/_MPDFK);
+                       // Update/overwrite the lowest bottom of printing y value for Keep together block
+                       $this->ktBlock[$this->page]['bottom_margin'] = $this->y+$h;
+               }
+               else {  // Td Text Set in Cell()
+                       if (isset($this->ktBlock[$this->page]['bottom_margin'])) { $h = $this->ktBlock[$this->page]['bottom_margin'] - $this->y; }
+                       else { $h = 0; }
+               }
+               if ($h < 0) { $h = -$h; }
+               $this->divbuffer[] = array(
+               'page' => $this->page,
+               's' => $s,                                                      // Text string to output 
+               'x' => $this->x,                                                // x when printed 
+               'y' => $this->y,                                                // y when printed (after column break)
+               'h' => $h                                                       // actual y at bottom when printed = y+h
+               );
+          }
+          else {
+               $this->pages[$this->page] .= $s.($ln == true ? "\n" : '');
+          }
+
+       }
+       else {
+               $this->buffer .= $s.($ln == true ? "\n" : '');
+       }
+}
+
+/*-- WATERMARK --*/
+// add a watermark 
+function watermark( $texte, $angle=45, $fontsize=96, $alpha=0.2 ) {
+       if ($this->PDFA || $this->PDFX) { $this->Error('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); }
+       if (!$this->watermark_font) { $this->watermark_font = $this->default_font; }
+      $this->SetFont( $this->watermark_font, "B", $fontsize, false );  // Don't output
+       $texte= $this->purify_utf8_text($texte);
+       if ($this->text_input_as_HTML) {
+               $texte= $this->all_entities_to_utf8($texte);
+       }
+       if ($this->usingCoreFont) { $texte = mb_convert_encoding($texte,$this->mb_enc,'UTF-8'); }
+       // DIRECTIONALITY
+       $this->magic_reverse_dir($texte, true, $this->directionality);  // *RTL*
+       // Font-specific ligature substitution for Indic fonts
+       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($texte);     // *INDIC*
+
+       $this->SetAlpha($alpha);
+
+       $this->SetTColor($this->ConvertColor(0));
+       $szfont = $fontsize;
+       $loop   = 0;
+       $maxlen = (min($this->w,$this->h) );    // sets max length of text as 7/8 width/height of page
+       while ( $loop == 0 )
+       {
+       $this->SetFont( $this->watermark_font, "B", $szfont, false );   // Don't output
+        $offset =  ((sin(deg2rad($angle))) * ($szfont/_MPDFK));
+
+       $strlen = $this->GetStringWidth($texte);
+       if ( $strlen > $maxlen - $offset  )
+          $szfont --;
+       else
+          $loop ++;
+       }
+
+       $this->SetFont( $this->watermark_font, "B", $szfont-0.1, true, true);   // Output The -0.1 is because SetFont above is not written to PDF
+                                                                                       // Repeating it will not output anything as mPDF thinks it is set
+       $adj = ((cos(deg2rad($angle))) * ($strlen/2));
+       $opp = ((sin(deg2rad($angle))) * ($strlen/2));
+       $wx = ($this->w/2) - $adj + $offset/3;
+       $wy = ($this->h/2) + $opp;
+       $this->Rotate($angle,$wx,$wy);
+       $this->Text($wx,$wy,$texte);
+       $this->Rotate(0);
+       $this->SetTColor($this->ConvertColor(0));
+
+       $this->SetAlpha(1);
+
+}
+
+function watermarkImg( $src, $alpha=0.2 ) {
+       if ($this->PDFA || $this->PDFX) { $this->Error('PDFA and PDFX do not permit transparency, so mPDF does not allow Watermarks!'); }
+       if ($this->watermarkImgBehind) { $this->watermarkImgAlpha = $this->SetAlpha($alpha, 'Normal', true); }
+       else { $this->SetAlpha($alpha, $this->watermarkImgAlphaBlend); }
+       $this->Image($src,0,0,0,0,'','', true, true, true);
+       if (!$this->watermarkImgBehind) { $this->SetAlpha(1); }
+}
+/*-- END WATERMARK --*/
+
+
+function Rotate($angle,$x=-1,$y=-1)
+{
+       if($x==-1)
+               $x=$this->x;
+       if($y==-1)
+               $y=$this->y;
+       if($this->angle!=0)
+               $this->_out('Q');
+       $this->angle=$angle;
+       if($angle!=0)
+       {
+               $angle*=M_PI/180;
+               $c=cos($angle);
+               $s=sin($angle);
+               $cx=$x*_MPDFK;
+               $cy=($this->h-$y)*_MPDFK;
+               $this->_out(sprintf('q %.5F %.5F %.5F %.5F %.3F %.3F cm 1 0 0 1 %.3F %.3F cm',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy));
+       }
+}
+
+
+
+function CircularText($x, $y, $r, $text, $align='top', $fontfamily='', $fontsize=0, $fontstyle='', $kerning=120, $fontwidth=100, $divider) {   // mPDF 5.5.23
+       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
+       if (empty($this->directw)) { $this->directw = new directw($this); }
+       $this->directw->CircularText($x, $y, $r, $text, $align, $fontfamily, $fontsize, $fontstyle, $kerning, $fontwidth, $divider);    // mPDF 5.5.23
+}
+
+
+// From Invoice
+function RoundedRect($x, $y, $w, $h, $r, $style = '')
+{
+       $hp = $this->h;
+       if($style=='F')
+               $op='f';
+       elseif($style=='FD' or $style=='DF')
+               $op='B';
+       else
+               $op='S';
+       $MyArc = 4/3 * (sqrt(2) - 1);
+       $this->_out(sprintf('%.3F %.3F m',($x+$r)*_MPDFK,($hp-$y)*_MPDFK ));
+       $xc = $x+$w-$r ;
+       $yc = $y+$r;
+       $this->_out(sprintf('%.3F %.3F l', $xc*_MPDFK,($hp-$y)*_MPDFK ));
+
+       $this->_Arc($xc + $r*$MyArc, $yc - $r, $xc + $r, $yc - $r*$MyArc, $xc + $r, $yc);
+       $xc = $x+$w-$r ;
+       $yc = $y+$h-$r;
+       $this->_out(sprintf('%.3F %.3F l',($x+$w)*_MPDFK,($hp-$yc)*_MPDFK));
+       $this->_Arc($xc + $r, $yc + $r*$MyArc, $xc + $r*$MyArc, $yc + $r, $xc, $yc + $r);
+       $xc = $x+$r ;
+       $yc = $y+$h-$r;
+       $this->_out(sprintf('%.3F %.3F l',$xc*_MPDFK,($hp-($y+$h))*_MPDFK));
+       $this->_Arc($xc - $r*$MyArc, $yc + $r, $xc - $r, $yc + $r*$MyArc, $xc - $r, $yc);
+       $xc = $x+$r ;
+       $yc = $y+$r;
+       $this->_out(sprintf('%.3F %.3F l',($x)*_MPDFK,($hp-$yc)*_MPDFK ));
+       $this->_Arc($xc - $r, $yc - $r*$MyArc, $xc - $r*$MyArc, $yc - $r, $xc, $yc - $r);
+       $this->_out($op);
+}
+
+function _Arc($x1, $y1, $x2, $y2, $x3, $y3)
+{
+       $h = $this->h;
+       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', $x1*_MPDFK, ($h-$y1)*_MPDFK,
+                                               $x2*_MPDFK, ($h-$y2)*_MPDFK, $x3*_MPDFK, ($h-$y3)*_MPDFK));
+}
+
+
+
+
+//====================================================
+
+
+
+/*-- DIRECTW --*/
+function Shaded_box( $text,$font='',$fontstyle='B',$szfont='',$width='70%',$style='DF',$radius=2.5,$fill='#FFFFFF',$color='#000000',$pad=2 ) {
+       // F (shading - no line),S (line, no shading),DF (both)
+       if (!class_exists('directw', false)) { include(_MPDF_PATH.'classes/directw.php'); }
+       if (empty($this->directw)) { $this->directw = new directw($this); }
+       $this->directw->Shaded_box( $text,$font,$fontstyle,$szfont,$width,$style,$radius,$fill,$color,$pad);
+}
+/*-- END DIRECTW --*/
+
+
+function UTF8StringToArray($str, $addSubset=true) {
+   $out = array();
+   $len = strlen($str);
+   for ($i = 0; $i < $len; $i++) {
+       $uni = -1;
+      $h = ord($str[$i]);
+      if ( $h <= 0x7F )
+         $uni = $h;
+      elseif ( $h >= 0xC2 ) {
+         if ( ($h <= 0xDF) && ($i < $len -1) )
+            $uni = ($h & 0x1F) << 6 | (ord($str[++$i]) & 0x3F);
+         elseif ( ($h <= 0xEF) && ($i < $len -2) )
+            $uni = ($h & 0x0F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
+         elseif ( ($h <= 0xF4) && ($i < $len -3) )
+            $uni = ($h & 0x0F) << 18 | (ord($str[++$i]) & 0x3F) << 12 | (ord($str[++$i]) & 0x3F) << 6 | (ord($str[++$i]) & 0x3F);
+      }
+       if ($uni >= 0) {
+               $out[] = $uni;
+               if ($addSubset && isset($this->CurrentFont['subset'])) {
+                       $this->CurrentFont['subset'][$uni] = $uni;
+               }
+       }
+   }
+   return $out;
+}
+
+
+//Convert utf-8 string to <HHHHHH> for Font Subsets
+function UTF8toSubset($str) {
+       $ret = '<';
+       $str = preg_replace('/'.preg_quote($this->aliasNbPg,'/').'/', chr(7), $str );
+       $str = preg_replace('/'.preg_quote($this->aliasNbPgGp,'/').'/', chr(8), $str );
+       $unicode = $this->UTF8StringToArray($str);
+       $orig_fid = $this->CurrentFont['subsetfontids'][0];
+       $last_fid = $this->CurrentFont['subsetfontids'][0];
+       foreach($unicode as $c) {
+          if ($c == 7 || $c == 8) { 
+                       if ($orig_fid != $last_fid) {
+                               $ret .= '> Tj /F'.$orig_fid.' '.$this->FontSizePt.' Tf <';
+                               $last_fid = $orig_fid;
+                       }
+                       if ($c == 7) { $ret .= $this->aliasNbPgHex; }
+                       else { $ret .= $this->aliasNbPgGpHex; }
+                       continue;
+          }
+          for ($i=0; $i<99; $i++) {
+               // return c as decimal char
+               $init = array_search($c, $this->CurrentFont['subsets'][$i]);
+               if ($init!==false) {
+                       if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) {
+                               $ret .= '> Tj /F'.$this->CurrentFont['subsetfontids'][$i].' '.$this->FontSizePt.' Tf <';
+                               $last_fid = $this->CurrentFont['subsetfontids'][$i];
+                       }
+                       $ret .= sprintf("%02s", strtoupper(dechex($init)));
+                       break;
+               }
+               // TrueType embedded SUBSETS
+               else if (count($this->CurrentFont['subsets'][$i]) < 255) {
+                       $n = count($this->CurrentFont['subsets'][$i]);
+                       $this->CurrentFont['subsets'][$i][$n] = $c;
+                       if ($this->CurrentFont['subsetfontids'][$i] != $last_fid) {
+                               $ret .= '> Tj /F'.$this->CurrentFont['subsetfontids'][$i].' '.$this->FontSizePt.' Tf <';
+                               $last_fid = $this->CurrentFont['subsetfontids'][$i];
+                       }
+                       $ret .= sprintf("%02s", strtoupper(dechex($n)));
+                       break;
+               }
+               else if (!isset($this->CurrentFont['subsets'][($i+1)])) {
+                       // TrueType embedded SUBSETS
+                       $this->CurrentFont['subsets'][($i+1)] = array(0=>0);
+                       $new_fid = count($this->fonts)+$this->extraFontSubsets+1;
+                       $this->CurrentFont['subsetfontids'][($i+1)] = $new_fid;
+                       $this->extraFontSubsets++;
+               }
+          }
+       }
+       $ret .= '>';
+       if ($last_fid != $orig_fid) {
+               $ret .= ' Tj /F'.$orig_fid.' '.$this->FontSizePt.' Tf <> ';
+       }
+       return $ret;
+}
+
+
+// Converts UTF-8 strings to UTF16-BE.
+function UTF8ToUTF16BE($str, $setbom=true) {
+       if ($this->checkSIP && preg_match("/([\x{20000}-\x{2FFFF}])/u", $str)) { 
+          if (!in_array($this->currentfontfamily, array('gb','big5','sjis','uhc','gbB','big5B','sjisB','uhcB','gbI','big5I','sjisI','uhcI',
+               'gbBI','big5BI','sjisBI','uhcBI'))) {
+               $str = preg_replace("/[\x{20000}-\x{2FFFF}]/u", chr(0), $str);
+          }
+       }
+       if ($this->checkSMP && preg_match("/([\x{10000}-\x{1FFFF}])/u", $str )) { 
+               $str = preg_replace("/[\x{10000}-\x{1FFFF}]/u", chr(0), $str );
+       }
+       $outstr = ""; // string to be returned
+       if ($setbom) {
+               $outstr .= "\xFE\xFF"; // Byte Order Mark (BOM)
+       }
+       $outstr .= mb_convert_encoding($str, 'UTF-16BE', 'UTF-8');
+       return $outstr;
+}
+
+
+
+
+
+// ====================================================
+// ====================================================
+/*-- CJK-FONTS --*/
+
+// from class PDF_Chinese CJK EXTENSIONS
+function AddCIDFont($family,$style,$name,&$cw,$CMap,$registry,$desc)
+{
+       $fontkey=strtolower($family).strtoupper($style);
+       if(isset($this->fonts[$fontkey]))
+               $this->Error("Font already added: $family $style");
+       $i=count($this->fonts)+$this->extraFontSubsets+1;
+       $name=str_replace(' ','',$name);
+       if ($family == 'sjis') { $up = -120; } else { $up = -130; }
+       // ? 'up' and 'ut' do not seem to be referenced anywhere
+       $this->fonts[$fontkey]=array('i'=>$i,'type'=>'Type0','name'=>$name,'up'=>$up,'ut'=>40,'cw'=>$cw,'CMap'=>$CMap,'registry'=>$registry,'MissingWidth'=>1000,'desc'=>$desc);
+}
+
+function AddCJKFont($family) {
+
+       if ($this->PDFA || $this->PDFX) {
+               $this->Error("Adobe CJK fonts cannot be embedded in mPDF (required for PDFA1-b and PDFX/1-a).");
+       }
+       if ($family == 'big5') { $this->AddBig5Font(); }
+       else if ($family == 'gb') { $this->AddGBFont(); }
+       else if ($family == 'sjis') { $this->AddSJISFont(); }
+       else if ($family == 'uhc') { $this->AddUHCFont(); }
+}
+
+function AddBig5Font()
+{
+       //Add Big5 font with proportional Latin
+       $family='big5';
+       $name='MSungStd-Light-Acro';
+       $cw=$this->Big5_widths;
+       $CMap='UniCNS-UTF16-H';
+       $registry=array('ordering'=>'CNS1','supplement'=>4);
+       $desc = array(
+       'Ascent' => 880,
+       'Descent' => -120,
+       'CapHeight' => 880,
+       'Flags' => 6,
+       'FontBBox' => '[-160 -249 1015 1071]',
+       'ItalicAngle' => 0,
+       'StemV' => 93,
+       );
+       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
+}
+
+
+function AddGBFont()
+{
+       //Add GB font with proportional Latin
+       $family='gb';
+       $name='STSongStd-Light-Acro';   
+       $cw=$this->GB_widths;
+       $CMap='UniGB-UTF16-H';
+       $registry=array('ordering'=>'GB1','supplement'=>4);
+       $desc = array(
+       'Ascent' => 752,
+       'Descent' => -271,
+       'CapHeight' => 737,
+       'Flags' => 6,
+       'FontBBox' => '[-25 -254 1000 880]',
+       'ItalicAngle' => 0,
+       'StemV' => 58,
+       'Style' => '<< /Panose <000000000400000000000000> >>',
+       );
+       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
+}
+
+
+function AddSJISFont()
+{
+       //Add SJIS font with proportional Latin
+       $family='sjis';
+       $name='KozMinPro-Regular-Acro';
+       $cw=$this->SJIS_widths;
+       $CMap='UniJIS-UTF16-H';
+       $registry=array('ordering'=>'Japan1','supplement'=>5);
+       $desc = array(
+       'Ascent' => 880,
+       'Descent' => -120,
+       'CapHeight' => 740,
+       'Flags' => 6,
+       'FontBBox' => '[-195 -272 1110 1075]',
+       'ItalicAngle' => 0,
+       'StemV' => 86,
+       'XHeight' => 502,
+       );
+       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
+}
+
+function AddUHCFont()
+{
+       //Add UHC font with proportional Latin
+       $family='uhc';
+       $name='HYSMyeongJoStd-Medium-Acro';     
+       $cw=$this->UHC_widths;
+       $CMap='UniKS-UTF16-H';
+       $registry=array('ordering'=>'Korea1','supplement'=>2);
+       $desc = array(
+       'Ascent' => 880,
+       'Descent' => -120,
+       'CapHeight' => 720,
+       'Flags' => 6,
+       'FontBBox' => '[-28 -148 1001 880]',
+       'ItalicAngle' => 0,
+       'StemV' => 60,
+       'Style' => '<< /Panose <000000000600000000000000> >>',
+       );
+       $this->AddCIDFont($family,'',$name,$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'B',$name.',Bold',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'I',$name.',Italic',$cw,$CMap,$registry,$desc);
+       $this->AddCIDFont($family,'BI',$name.',BoldItalic',$cw,$CMap,$registry,$desc);
+}
+
+/*-- END CJK-FONTS --*/
+
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+//////////////////////////////////////////////////////////////////////////////
+function SetAutoFont($af = AUTOFONT_ALL) {
+       if ($this->onlyCoreFonts) { return false; }
+       if (!$af && $af !== 0) { $af = AUTOFONT_ALL; }
+       $this->autoFontGroups = $af;
+       if ($this->autoFontGroups ) { 
+               $this->useLang = true;
+       }
+}
+
+
+function SetDefaultFont($font) {
+       // Disallow embedded fonts to be used as defaults in PDFA
+       if ($this->PDFA || $this->PDFX) {
+               if (strtolower($font) == 'ctimes') { $font = 'serif'; }
+               if (strtolower($font) == 'ccourier') { $font = 'monospace'; }
+               if (strtolower($font) == 'chelvetica') { $font = 'sans-serif'; }
+       }
+       $font = $this->SetFont($font);  // returns substituted font if necessary
+       $this->default_font = $font;
+       $this->original_default_font = $font;
+       if (!$this->watermark_font ) { $this->watermark_font = $font; } // *WATERMARK*
+       $this->defaultCSS['BODY']['FONT-FAMILY'] = $font;
+       $this->cssmgr->CSS['BODY']['FONT-FAMILY'] = $font;
+}
+
+function SetDefaultFontSize($fontsize) {
+       $this->default_font_size = $fontsize;
+       $this->original_default_font_size = $fontsize;
+       $this->SetFontSize($fontsize);
+       $this->defaultCSS['BODY']['FONT-SIZE'] = $fontsize . 'pt';
+       $this->cssmgr->CSS['BODY']['FONT-SIZE'] = $fontsize . 'pt';
+}
+
+function SetDefaultBodyCSS($prop, $val) {
+   if ($prop) {
+       $this->defaultCSS['BODY'][strtoupper($prop)] = $val;
+       $this->cssmgr->CSS['BODY'][strtoupper($prop)] = $val;
+  }
+}
+
+
+function SetDirectionality($dir='ltr') {
+/*-- RTL --*/
+       if (strtolower($dir) == 'rtl') { 
+         if ($this->directionality != 'rtl') {
+               // Swop L/R Margins so page 1 RTL is an 'even' page
+               $tmp = $this->DeflMargin;
+               $this->DeflMargin = $this->DefrMargin; 
+               $this->DefrMargin = $tmp; 
+               $this->orig_lMargin = $this->DeflMargin;
+               $this->orig_rMargin = $this->DefrMargin;
+
+               $this->SetMargins($this->DeflMargin,$this->DefrMargin,$this->tMargin);
+         }
+               $this->directionality = 'rtl'; 
+               $this->defaultAlign = 'R';
+               $this->defaultTableAlign = 'R';
+       }
+       else  { 
+/*-- END RTL --*/
+               $this->directionality = 'ltr'; 
+               $this->defaultAlign = 'L';
+               $this->defaultTableAlign = 'L';
+       }       // *RTL*
+       $this->cssmgr->CSS['BODY']['DIRECTION'] = $this->directionality;
+}
+
+
+
+// Added to set line-height-correction
+function SetLineHeightCorrection($val) {
+       if ($val > 0) { $this->default_lineheight_correction = $val; }
+       else { $this->default_lineheight_correction = 1.2; }
+}
+
+// Set a (fixed) lineheight to an actual value - either to named fontsize(pts) or default
+function SetLineHeight($FontPt='',$spacing = '') {
+   if ($this->shrin_k > 1) { $k = $this->shrin_k; }
+   else { $k = 1; }
+   if ($spacing > 0) { 
+       if (preg_match('/mm/',$spacing)) { 
+               $this->lineheight = ($spacing + 0.0) / $k; // convert to number
+       }
+       else  { 
+               if ($FontPt) { $this->lineheight = (($FontPt/_MPDFK) *$spacing); }
+               else { $this->lineheight = (($this->FontSizePt/_MPDFK) *$spacing); }
+       }
+   }
+   else {
+       if ($FontPt) { $this->lineheight = (($FontPt/_MPDFK) *$this->normalLineheight); }
+       else { $this->lineheight = (($this->FontSizePt/_MPDFK) *$this->normalLineheight); }
+   }
+}
+
+function _computeLineheight($lh, $fs='') {
+       if ($this->shrin_k > 1) { $k = $this->shrin_k; }
+       else { $k = 1; }
+       if (!$fs) { $fs = $this->FontSize; }
+       if (preg_match('/mm/',$lh)) { 
+               return (($lh + 0.0) / $k); // convert to number
+       }
+       else if ($lh > 0) { 
+               return ($fs * $lh);
+       }
+       else if (isset($this->normalLineheight)) { return ($fs * $this->normalLineheight); }
+       else return ($fs * $this->default_lineheight_correction); 
+}
+
+
+function SetBasePath($str='') {
+  if ( isset($_SERVER['HTTP_HOST']) ) { $host = $_SERVER['HTTP_HOST']; }
+  else if ( isset($_SERVER['SERVER_NAME']) ) { $host = $_SERVER['SERVER_NAME']; }
+  else { $host = ''; }
+  if (!$str) { 
+       if ($_SERVER['SCRIPT_NAME']) { $currentPath = dirname($_SERVER['SCRIPT_NAME']); }
+       else { $currentPath = dirname($_SERVER['PHP_SELF']); }
+       $currentPath = str_replace("\\","/",$currentPath);
+       if ($currentPath == '/') { $currentPath = ''; }
+       if ($host) { $currpath = 'http://' . $host . $currentPath .'/'; }
+       else { $currpath = ''; }
+       $this->basepath = $currpath; 
+       $this->basepathIsLocal = true; 
+       return; 
+  }
+  $str = preg_replace('/\?.*/','',$str);
+  if (!preg_match('/(http|https|ftp):\/\/.*\//i',$str)) { $str .= '/'; } 
+  $str .= 'xxx';       // in case $str ends in / e.g. http://www.bbc.co.uk/
+  $this->basepath = dirname($str) . "/";       // returns e.g. e.g. http://www.google.com/dir1/dir2/dir3/
+  $this->basepath = str_replace("\\","/",$this->basepath); //If on Windows
+  $tr = parse_url($this->basepath);
+  if (isset($tr['host']) && ($tr['host'] == $host)) { $this->basepathIsLocal = true; }
+  else { $this->basepathIsLocal = false; }
+}
+
+
+function GetFullPath(&$path,$basepath='') {
+       // When parsing CSS need to pass temporary basepath - so links are relative to current stylesheet
+       if (!$basepath) { $basepath = $this->basepath; }
+       //Fix path value
+       $path = str_replace("\\","/",$path); //If on Windows
+       $path = preg_replace('/^\/\//','http://',$path);        // mPDF 5.6.27
+       $regexp = '|^./|';      // Inadvertently corrects "./path/etc" and "//www.domain.com/etc"
+       $path = preg_replace($regexp,'',$path);
+
+
+       if(substr($path,0,1) == '#') { return; }
+       if (stristr($path,"mailto:") !== false) { return; }
+       if (strpos($path,"../") !== false ) { //It is a Relative Link
+               $backtrackamount = substr_count($path,"../");
+               $maxbacktrack = substr_count($basepath,"/") - 3;        // mPDF 5.6.18
+               $filepath = str_replace("../",'',$path);
+               $path = $basepath;
+               //If it is an invalid relative link, then make it go to directory root
+               if ($backtrackamount > $maxbacktrack) $backtrackamount = $maxbacktrack;
+               //Backtrack some directories
+               for( $i = 0 ; $i < $backtrackamount + 1 ; $i++ ) $path = substr( $path, 0 , strrpos($path,"/") );
+               $path = $path . "/" . $filepath; //Make it an absolute path
+       }
+       else if( strpos($path,":/") === false || strpos($path,":/") > 10) { //It is a Local Link
+               if (substr($path,0,1) == "/") { 
+                       $tr = parse_url($basepath);
+                       $root = $tr['scheme'].'://'.$tr['host'];
+                       $path = $root . $path; 
+               }
+               else { $path = $basepath . $path; }
+       }
+       //Do nothing if it is an Absolute Link
+}
+
+
+// Used for external CSS files
+function _get_file($path) {
+       // If local file try using local path (? quicker, but also allowed even if allow_url_fopen false)
+       $contents = '';
+       $contents = @file_get_contents($path);
+       if ($contents) { return $contents; }
+       if ($this->basepathIsLocal) {
+               $tr = parse_url($path);
+               $lp=getenv("SCRIPT_NAME");
+               $ap=realpath($lp);
+               $ap=str_replace("\\","/",$ap);
+               $docroot=substr($ap,0,strpos($ap,$lp));
+               // WriteHTML parses all paths to full URLs; may be local file name 
+               if ($tr['scheme'] && $tr['host'] && $_SERVER["DOCUMENT_ROOT"] ) { 
+                       $localpath = $_SERVER["DOCUMENT_ROOT"] . $tr['path']; 
+               }
+               // DOCUMENT_ROOT is not returned on IIS
+               else if ($docroot) {
+                       $localpath = $docroot . $tr['path'];
+               }
+               else { $localpath = $path; }
+               $contents = @file_get_contents($localpath);
+       }
+       // if not use full URL
+       else if (!$contents && !ini_get('allow_url_fopen') && function_exists("curl_init"))  {
+               $ch = curl_init($path);
+               curl_setopt($ch, CURLOPT_HEADER, 0);
+               curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
+               $contents = curl_exec($ch);
+               curl_close($ch);
+       }
+       return $contents;
+}
+
+
+function docPageNum($num = 0, $extras = false) {
+       if ($num < 1) { $num = $this->page; }
+       $type = '1';    // set default decimal
+       $ppgno = $num;
+       $suppress = 0;
+       $offset = 0;
+       $lastreset = 0;
+       foreach($this->PageNumSubstitutions AS $psarr) {
+               if ($num >= $psarr['from']) {
+                       if ($psarr['reset']) { 
+                               if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
+                               $ppgno = $num - $psarr['from'] + 1 + $offset; 
+                               $lastreset = $psarr['from'];
+                       }
+                       if ($psarr['type']) { $type = $psarr['type']; }
+                       if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
+                       else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
+               }
+       }
+       if ($suppress) { return ''; }
+
+       foreach($this->pgsIns AS $k=>$v) {
+               if ($k>$lastreset && $k<$num) {
+                       $ppgno -= $v;
+               }
+       }
+       if ($type=='A') { $ppgno = $this->dec2alpha($ppgno,true); }
+       else if ($type=='a') { $ppgno = $this->dec2alpha($ppgno,false);}
+       else if ($type=='I') { $ppgno = $this->dec2roman($ppgno,true); }
+       else if ($type=='i') { $ppgno = $this->dec2roman($ppgno,false); }
+       if ($extras) { $ppgno = $this->pagenumPrefix . $ppgno . $this->pagenumSuffix; }
+       return $ppgno;
+}
+
+
+function docPageSettings($num = 0) {
+       // Returns current type (numberstyle), suppression state for this page number; 
+       // reset is only returned if set for this page number
+       if ($num < 1) { $num = $this->page; }
+       $type = '1';    // set default decimal
+       $ppgno = $num;
+       $suppress = 0;
+       $offset = 0;
+       $reset = '';
+       foreach($this->PageNumSubstitutions AS $psarr) {
+               if ($num >= $psarr['from']) {
+                       if ($psarr['reset']) { 
+                               if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
+                               $ppgno = $num - $psarr['from'] + 1 + $offset; 
+                       }
+                       if ($psarr['type']) { $type = $psarr['type']; }
+                       if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
+                       else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
+               }
+               if ($num == $psarr['from']) { $reset = $psarr['reset']; }
+       }
+       if ($suppress) { $suppress = 'on'; }
+       else { $suppress = 'off'; }
+       return array($type, $suppress, $reset);
+}
+
+function docPageNumTotal($num = 0, $extras = false) {
+       if ($num < 1) { $num = $this->page; }
+       $type = '1';    // set default decimal
+       $ppgstart = 1;
+       $ppgend = count($this->pages)+1; 
+       $suppress = 0;
+       $offset = 0;
+       foreach($this->PageNumSubstitutions AS $psarr) {
+               if ($num >= $psarr['from']) {
+                       if ($psarr['reset']) { 
+                               if ($psarr['reset']>1) { $offset = $psarr['reset']-1; }
+                               $ppgstart = $psarr['from'] + $offset; 
+                               $ppgend = count($this->pages)+1 + $offset; 
+                       }
+                       if ($psarr['type']) { $type = $psarr['type']; }
+                       if (strtoupper($psarr['suppress'])=='ON' || $psarr['suppress']==1) { $suppress = 1; }
+                       else if (strtoupper($psarr['suppress'])=='OFF') { $suppress = 0; }
+               }
+               if ($num < $psarr['from']) {
+                       if ($psarr['reset']) { 
+                               $ppgend = $psarr['from'] + $offset; 
+                               break;
+                       }
+               }
+       }
+       if ($suppress) { return ''; }
+       $ppgno = $ppgend-$ppgstart+$offset; 
+
+       // mPDF 5.6.47
+       foreach($this->pgsIns AS $k => $v) {
+               if ($k>$ppgstart && $k<$ppgend) {
+                       $ppgno -= $v;
+               }
+       }
+
+       if ($extras) { $ppgno = $this->nbpgPrefix . $ppgno . $this->nbpgSuffix; }
+       return $ppgno;
+}
+
+function RestartDocTemplate() {
+       $this->docTemplateStart = $this->page;
+}
+
+
+
+//Page header
+function Header($content='') {
+
+       $this->cMarginL = 0;
+       $this->cMarginR = 0;
+
+
+/*-- HTMLHEADERS-FOOTERS --*/
+  if (($this->mirrorMargins && ($this->page%2==0) && $this->HTMLHeaderE) || ($this->mirrorMargins && ($this->page%2==1) && $this->HTMLHeader) || (!$this->mirrorMargins && $this->HTMLHeader)) {
+       $this->writeHTMLHeaders(); 
+       return;
+  }
+/*-- END HTMLHEADERS-FOOTERS --*/
+  $this->processingHeader=true;
+  $h = $this->headerDetails;
+  if(count($h)) {
+
+       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
+               $this->_out(sprintf('q 0 -1 1 0 0 %.3F cm ',($this->h*_MPDFK)));
+               $yadj = $this->w - $this->h;
+               $headerpgwidth = $this->h - $this->orig_lMargin - $this->orig_rMargin;
+               if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
+                       $headerlmargin = $this->orig_rMargin;
+               }
+               else {
+                       $headerlmargin = $this->orig_lMargin;
+               }
+       }
+       else { 
+               $yadj = 0; 
+               $headerpgwidth = $this->pgwidth;
+               $headerlmargin = $this->lMargin;
+       }
+
+       $this->y = $this->margin_header - $yadj ;
+       $this->SetTColor($this->ConvertColor(0));
+       $this->SUP = false;
+       $this->SUB = false;
+       $this->bullet = false;
+
+       // only show pagenumber if numbering on
+       $pgno = $this->docPageNum($this->page, true); 
+
+       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
+                       $side = 'even';
+       }
+       else {  // ODD  // OR NOT MIRRORING MARGINS/FOOTERS = DEFAULT
+                       $side = 'odd';
+       }
+       $maxfontheight = 0;
+       foreach(array('L','C','R') AS $pos) {
+         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
+               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
+               else { $hfsz = $this->default_font_size; }
+               $maxfontheight = max($maxfontheight,$hfsz);
+         }
+       }
+       // LEFT-CENTER-RIGHT
+       foreach(array('L','C','R') AS $pos) {
+         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
+               $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']);
+               $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd);
+               $hd = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd);
+               if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; }
+               else { $hff = $this->original_default_font; }
+               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
+               else { $hfsz = $this->original_default_font_size; }     // pts
+               $maxfontheight = max($maxfontheight,$hfsz);
+               $hfst = '';
+               if (isset($h[$side][$pos]['font-style']) && $h[$side][$pos]['font-style']) { 
+                       $hfst = $h[$side][$pos]['font-style'];
+               }
+               if (isset($h[$side][$pos]['color']) && $h[$side][$pos]['color']) { 
+                       $hfcol = $h[$side][$pos]['color']; 
+                       $cor = $this->ConvertColor($hfcol);
+                       if ($cor) { $this->SetTColor($cor); }
+               }
+               else { $hfcol = ''; }
+               $this->SetFont($hff,$hfst,$hfsz,true,true);
+               $this->x = $headerlmargin ;
+               $this->y = $this->margin_header - $yadj ;
+
+               $hd = $this->purify_utf8_text($hd);
+               if ($this->text_input_as_HTML) {
+                       $hd = $this->all_entities_to_utf8($hd);
+               }
+               // CONVERT CODEPAGE
+               if ($this->usingCoreFont) { $hd = mb_convert_encoding($hd,$this->mb_enc,'UTF-8'); }
+               // DIRECTIONALITY RTL
+               $this->magic_reverse_dir($hd, true, $this->directionality);     // *RTL*
+               // Font-specific ligature substitution for Indic fonts
+               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($hd);        // *INDIC*
+               $align = $pos;
+/*-- RTL --*/
+               if ($this->directionality == 'rtl') { 
+                       if ($pos == 'L') { $align = 'R'; }
+                       else if ($pos == 'R') { $align = 'L'; }
+               }
+/*-- END RTL --*/
+               if ($pos!='L' && (strpos($hd,$this->aliasNbPg)!==false || strpos($hd,$this->aliasNbPgGp)!==false)) { 
+                       if (strpos($hd,$this->aliasNbPgGp)!==false) { $type= 'nbpggp'; } else { $type= 'nbpg'; }
+                       $this->_out('{mpdfheader'.$type.' '.$pos.' ff='.$hff.' fs='.$hfst.' fz='.$hfsz.'}'); 
+                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
+                       $this->_out('Q');
+               }
+               else { 
+                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
+               }
+               if ($hfcol) { $this->SetTColor($this->ConvertColor(0)); }
+         }
+       }
+       //Return Font to normal
+       $this->SetFont($this->default_font,'',$this->original_default_font_size);
+       // LINE
+       if (isset($h[$side]['line']) && $h[$side]['line']) { 
+               $this->SetLineWidth(0.1);
+               $this->SetDColor($this->ConvertColor(0));
+               $this->Line($headerlmargin , $this->margin_header + ($maxfontheight*(1+$this->header_line_spacing)/_MPDFK) - $yadj , $headerlmargin + $headerpgwidth, $this->margin_header + ($maxfontheight*(1+$this->header_line_spacing)/_MPDFK) - $yadj  );
+       }
+       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
+               $this->_out('Q');
+       }
+  }
+  $this->SetY($this->tMargin);
+  if ($this->ColActive) { $this->pgwidth = $this->ColWidth; }  // *COLUMNS*
+
+  $this->processingHeader=false;
+}
+
+
+
+/*-- TABLES --*/
+function TableHeaderFooter($content='',$tablestartpage='',$tablestartcolumn ='',$horf = 'H',$level, $firstSpread=true, $finalSpread=true) {
+  if(($horf=='H' || $horf=='F') && !empty($content) && !empty($content[0])) {  // mPDF 5.6.61
+       $table = &$this->table[1][1];
+       // Advance down page by half width of top border
+
+       if ($horf=='H') { // Only if header
+               if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T'];  }
+               else { $adv = $table['max_cell_border_width']['T'] /2 ; }
+               if ($adv) { 
+                  if ($this->table_rotate) {
+                       $this->y += ($adv);
+                  }
+                  else {
+                       $this->DivLn($adv,$this->blklvl,true); 
+                  }
+               }
+       }
+
+   if ($horf=='F') { // Table Footer
+       $firstrow = count($table['cells']) - $table['footernrows'];
+       $lastrow = count($table['cells']) - 1;
+   }
+   else {      // Table Header
+       $firstrow = 0;
+       $lastrow = $table['headernrows'] - 1;
+   }
+
+   $topy = $content[$firstrow][0]['y']-$this->y;
+
+   for ($i=$firstrow ; $i<=$lastrow; $i++) {
+
+    $y = $this->y;
+
+/*-- COLUMNS --*/
+       // If outside columns, this is done in PaintDivBB
+       if ($this->ColActive) {
+       //OUTER FILL BGCOLOR of DIVS
+        if ($this->blklvl > 0) {
+         $firstblockfill = $this->GetFirstBlockFill();
+         if ($firstblockfill && $this->blklvl >= $firstblockfill) {
+               $divh = $content[$i][0]['h'];
+               $bak_x = $this->x;
+               $this->DivLn($divh,-3,false);
+               // Reset current block fill
+               $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
+               $this->SetFColor($bcor);
+               $this->x = $bak_x;
+         }
+        }
+       }
+/*-- END COLUMNS --*/
+
+    $colctr = 0;
+    foreach($content[$i] as $tablehf) {
+       $colctr++;
+       $y = $tablehf['y'] - $topy;
+      $this->y = $y;
+      //Set some cell values
+      $x = $tablehf['x'];
+       if (($this->mirrorMargins) && ($tablestartpage == 'ODD') && (($this->page)%2==0)) {     // EVEN
+               $x = $x +$this->MarginCorrection;
+       }
+       else if (($this->mirrorMargins) && ($tablestartpage == 'EVEN') && (($this->page)%2==1)) {       // ODD
+               $x = $x +$this->MarginCorrection;
+       }
+/*-- COLUMNS --*/
+       // Added to correct for Columns
+       if ($this->ColActive) {
+          if ($this->directionality == 'rtl') {        // *RTL*
+               $x -= ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth+$this->ColGap);   // *RTL*
+          }    // *RTL*
+          else {       // *RTL*
+               $x += ($this->CurrCol - $tablestartcolumn) * ($this->ColWidth+$this->ColGap);
+          }    // *RTL*
+       }
+/*-- END COLUMNS --*/
+
+       if ($colctr==1) { $x0 = $x; }
+
+       // mPDF ITERATION
+       if ($this->iterationCounter) {
+          foreach($tablehf['textbuffer'] AS $k=>$t) {
+               if (!is_array($t[0]) && preg_match('/{iteration ([a-zA-Z0-9_]+)}/',$t[0], $m)) {        // mPDF 5.5.06
+                       $vname = '__'.$m[1].'_';
+                       if (!isset($this->$vname)) { $this->$vname = 1; }
+                       else { $this->$vname++; }
+                       $tablehf['textbuffer'][$k][0] = preg_replace('/{iteration '.$m[1].'}/', $this->$vname, $tablehf['textbuffer'][$k][0]);
+               }
+          }
+       }
+
+
+      $w = $tablehf['w'];
+      $h = $tablehf['h'];
+      $va = $tablehf['va'];
+      $R = $tablehf['R'];
+      $mih = $tablehf['mih'];
+      $border = $tablehf['border'];
+      $border_details = $tablehf['border_details'];
+      $padding = $tablehf['padding'];
+       $this->tabletheadjustfinished = true;
+
+      $textbuffer = $tablehf['textbuffer'];
+
+      $align = $tablehf['a'];
+      //Align
+      $this->divalign=$align;
+       $this->x = $x;
+
+       if ($this->ColActive) {
+               if ($table['borders_separate']) { 
+                $tablefill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0;
+                if ($tablefill) {
+                               $color = $this->ConvertColor($tablefill);
+                               if ($color) {
+                                       $xadj = ($table['border_spacing_H']/2);
+                                       $yadj = ($table['border_spacing_V']/2);
+                                       $wadj = $table['border_spacing_H'];
+                                       $hadj = $table['border_spacing_V'];
+                                       if ($i == $firstrow && $horf=='H') {            // Top
+                                               $yadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
+                                               $hadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
+                                       }
+                                       if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i+$tablehf['rowspan']) == ($lastrow+1))  || (!isset($tablehf['rowspan']) && ($i+1) == ($lastrow+1))) && $horf=='F') { // Bottom
+                                               $hadj += $table['padding']['B'] + $table['border_details']['B']['w'] ;
+                                       }
+                                       if ($colctr == 1) {             // Left
+                                               $xadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
+                                               $wadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
+                                       }
+                                       if ($colctr == count($content[$i]) ) {  // Right
+                                               $wadj += $table['padding']['R'] + $table['border_details']['R']['w'] ;
+                                       }
+                                       $this->SetFColor($color);
+                                       $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F');
+                               }
+                }
+               }
+       }
+
+       if ($table['empty_cells']!='hide' || !empty($textbuffer) || !$table['borders_separate']) { $paintcell = true; }
+       else { $paintcell = false; } 
+
+       //Vertical align
+       if ($R && INTVAL($R) > 0 && isset($va) && $va!='B') { $va='B';}
+
+       if (!isset($va) || empty($va) || $va=='M') $this->y += ($h-$mih)/2;
+      elseif (isset($va) && $va=='B') $this->y += $h-$mih;
+
+
+       //TABLE ROW OR CELL FILL BGCOLOR
+       $fill = 0;
+       if (isset($tablehf['bgcolor']) && $tablehf['bgcolor'] && $tablehf['bgcolor']!='transparent') { 
+               $fill = $tablehf['bgcolor'];
+               $leveladj = 6;
+       }
+       else if (isset($content[$i][0]['trbgcolor']) && $content[$i][0]['trbgcolor'] && $content[$i][0]['trbgcolor']!='transparent') { // Row color
+               $fill = $content[$i][0]['trbgcolor'];
+               $leveladj = 3;
+       }
+       if ($fill && $paintcell) {
+               $color = $this->ConvertColor($fill);
+               if ($color) {
+                       if ($table['borders_separate']) { 
+                          if ($this->ColActive) {
+                               $this->SetFColor($color);
+                               $this->Rect($x+ ($table['border_spacing_H']/2), $y+ ($table['border_spacing_V']/2), $w- $table['border_spacing_H'], $h- $table['border_spacing_V'], 'F');
+                          }
+                          else {
+                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>($x + ($table['border_spacing_H']/2)), 'y'=>($y + ($table['border_spacing_V']/2)), 'w'=>($w - $table['border_spacing_H']), 'h'=>($h - $table['border_spacing_V']), 'col'=>$color);
+                          }
+                       }
+                       else { 
+                          if ($this->ColActive) {
+                               $this->SetFColor($color);
+                               $this->Rect($x, $y, $w, $h, 'F');
+                          }
+                          else {
+                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>$x, 'y'=>$y, 'w'=>$w, 'h'=>$h, 'col'=>$color);
+                          }
+                       }
+               }
+       }
+
+
+/*-- BACKGROUNDS --*/
+       if (isset($tablehf['gradient']) && $tablehf['gradient'] && $paintcell){
+               $g = $this->grad->parseBackgroundGradient($tablehf['gradient']);
+               if ($g) {
+                 if ($table['borders_separate']) { 
+                       $px = $x+ ($table['border_spacing_H']/2);
+                       $py = $y+ ($table['border_spacing_V']/2);
+                       $pw = $w- $table['border_spacing_H'];
+                       $ph = $h- $table['border_spacing_V'];
+                 }
+                 else {
+                       $px = $x;
+                       $py = $y;
+                       $pw = $w;
+                       $ph = $h;
+                 }
+                 if ($this->ColActive) {
+                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
+                 }
+                 else {
+                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                 }
+               }
+       }
+
+       if (isset($tablehf['background-image']) && $paintcell){
+         if ($tablehf['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $tablehf['background-image']['gradient'] )) {
+               $g = $this->grad->parseMozGradient( $tablehf['background-image']['gradient'] );
+               if ($g) {
+                 if ($table['borders_separate']) { 
+                       $px = $x+ ($table['border_spacing_H']/2);
+                       $py = $y+ ($table['border_spacing_V']/2);
+                       $pw = $w- $table['border_spacing_H'];
+                       $ph = $h- $table['border_spacing_V'];
+                 }
+                 else {
+                       $px = $x;
+                       $py = $y;
+                       $pw = $w;
+                       $ph = $h;
+                 }
+                 if ($this->ColActive) {
+                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
+                 }
+                 else {
+                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                 }
+               }
+         }
+         else if ($tablehf['background-image']['image_id']) {  // Background pattern
+               $n = count($this->patterns)+1;
+               if ($table['borders_separate']) { 
+                       $px = $x+ ($table['border_spacing_H']/2);
+                       $py = $y+ ($table['border_spacing_V']/2);
+                       $pw = $w- $table['border_spacing_H'];
+                       $ph = $h- $table['border_spacing_V'];
+               }
+               else {
+                       $px = $x;
+                       $py = $y;
+                       $pw = $w;
+                       $ph = $h;
+               }
+               if ($this->ColActive) {
+                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($tablehf['background-image']['orig_w'], $tablehf['background-image']['orig_h'], $pw, $ph, $tablehf['background-image']['resize'], $tablehf['background-image']['x_repeat'] , $tablehf['background-image']['y_repeat']);
+                       $this->patterns[$n] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'pgh'=>$this->h, 'image_id'=>$tablehf['background-image']['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$tablehf['background-image']['x_pos'] , 'y_pos'=>$tablehf['background-image']['y_pos'] , 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'itype'=>$tablehf['background-image']['itype']);
+                       if ($tablehf['background-image']['opacity']>0 && $tablehf['background-image']['opacity']<1) { $opac = $this->SetAlpha($tablehf['background-image']['opacity'],'Normal',true); }
+                       else { $opac = ''; }
+                       $this->_out(sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $px*_MPDFK, ($this->h-$py)*_MPDFK, $pw*_MPDFK, -$ph*_MPDFK));
+               }
+               else {
+                       $this->tableBackgrounds[$level*9+8][] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'image_id'=>$tablehf['background-image']['image_id'], 'orig_w'=>$tablehf['background-image']['orig_w'], 'orig_h'=>$tablehf['background-image']['orig_h'], 'x_pos'=>$tablehf['background-image']['x_pos'], 'y_pos'=>$tablehf['background-image']['y_pos'], 'x_repeat'=>$tablehf['background-image']['x_repeat'], 'y_repeat'=>$tablehf['background-image']['y_repeat'], 'clippath'=>'', 'resize'=>$tablehf['background-image']['resize'], 'opacity'=>$tablehf['background-image']['opacity'], 'itype'=>$tablehf['background-image']['itype']);
+               }
+         }
+       }
+/*-- END BACKGROUNDS --*/
+
+       //Cell Border
+       if ($table['borders_separate'] && $paintcell && $border) { 
+               $this->_tableRect($x+ ($table['border_spacing_H']/2)+($border_details['L']['w'] /2), $y+ ($table['border_spacing_V']/2)+($border_details['T']['w'] /2), $w-$table['border_spacing_H']-($border_details['L']['w'] /2)-($border_details['R']['w'] /2), $h- $table['border_spacing_V']-($border_details['T']['w'] /2)-($border_details['B']['w']/2), $border, $border_details, false, $table['borders_separate']);
+       }
+       else if ($paintcell && $border) { 
+               $this->_tableRect($x, $y, $w, $h, $border, $border_details, true, $table['borders_separate']);          // true causes buffer
+       }
+
+       //Print cell content
+      //$this->divheight = $this->table_lineheight*$this->lineheight; 
+      if (!empty($textbuffer)) {
+               if ($horf=='F' && preg_match('/{colsum([0-9]*)[_]*}/', $textbuffer[0][0], $m)) {
+                       $rep = sprintf("%01.".intval($m[1])."f", $this->colsums[$colctr-1]);
+                       $textbuffer[0][0] = preg_replace('/{colsum[0-9_]*}/', $rep ,$textbuffer[0][0]);
+               }
+
+               if ($R) {
+                                       $cellPtSize = $textbuffer[0][11] / $this->shrin_k;
+                                       if (!$cellPtSize) { $cellPtSize = $this->default_font_size; }
+                                       $cellFontHeight = ($cellPtSize/_MPDFK);
+                                       $opx = $this->x;
+                                       $opy = $this->y;
+                                       $angle = INTVAL($R);
+                                       // Only allow 45 - 90 degrees (when bottom-aligned) or -90
+                                       if ($angle > 90) { $angle = 90; }
+                                       else if ($angle > 0 && (isset($va) && $va!='B')) { $angle = 90; }
+                                       else if ($angle > 0 && $angle <45) { $angle = 45; }
+                                       else if ($angle < 0) { $angle = -90; }
+                                       $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight);
+                                       if (isset($align) && $align =='R') { 
+                                               $this->x += ($w) + ($offset) - ($cellFontHeight/3) - ($padding['R'] + $border_details['R']['w']); 
+                                       }
+                                       else if (!isset($align ) || $align =='C') { 
+                                               $this->x += ($w/2) + ($offset); 
+                                       }
+                                       else { 
+                                               $this->x += ($offset) + ($cellFontHeight/3)+($padding['L'] + $border_details['L']['w']); 
+                                       }
+                                       $str = '';
+                                       foreach($tablehf['textbuffer'] AS $t) { $str .= $t[0].' '; }
+                                       $str = trim($str);
+
+                                       if (!isset($va) || $va=='M') { 
+                                               $this->y -= ($h-$mih)/2; //Undo what was added earlier VERTICAL ALIGN
+                                               if ($angle > 0) { $this->y += (($h-$mih)/2)+($padding['T'] + $border_details['T']['w']) + ($mih-($padding['T'] + $border_details['T']['w']+$border_details['B']['w']+$padding['B'])); }
+                                               else if ($angle < 0) { $this->y += (($h-$mih)/2)+($padding['T'] + $border_details['T']['w']); }
+                                       }
+                                       else if (isset($va) && $va=='B') { 
+                                               $this->y -= $h-$mih; //Undo what was added earlier VERTICAL ALIGN
+                                               if ($angle > 0) { $this->y += $h-($border_details['B']['w']+$padding['B']); }
+                                               else if ($angle < 0) { $this->y += $h-$mih+($padding['T'] + $border_details['T']['w']); }
+                                       }
+                                       else if (isset($va) && $va=='T') { 
+                                               if ($angle > 0) { $this->y += $mih-($border_details['B']['w']+$padding['B']); }
+                                               else if ($angle < 0) { $this->y += ($padding['T'] + $border_details['T']['w']); }
+                                       }
+
+                                       $this->Rotate($angle,$this->x,$this->y);
+                                       $s_fs = $this->FontSizePt;
+                                       $s_f = $this->FontFamily;
+                                       $s_st = $this->FontStyle;
+                                       if (!empty($textbuffer[0][3])) { //Font Color
+                                               $cor = $textbuffer[0][3];
+                                               $this->SetTColor($cor); 
+                                       }
+                                       $s_str = $this->strike;
+                                       $this->strike = $textbuffer[0][8]; //Strikethrough
+                                       $this->SetFont($textbuffer[0][4],$textbuffer[0][2],$cellPtSize,true,true);
+                                       $this->Text($this->x,$this->y,$str);
+                                       $this->Rotate(0);
+                                       $this->SetFont($s_f,$s_st,$s_fs,true,true);
+                                       $this->SetTColor(0);
+                                       $this->strike = $s_str;
+                                       $this->x = $opx;
+                                       $this->y = $opy;
+               }
+               else {
+                       if ($table['borders_separate']) {       // NB twice border width
+                               $xadj = $border_details['L']['w'] + $padding['L'] +($table['border_spacing_H']/2);
+                               $wadj = $border_details['L']['w'] + $border_details['R']['w'] + $padding['L'] +$padding['R'] + $table['border_spacing_H'];
+                               $yadj = $border_details['T']['w'] + $padding['T'] + ($table['border_spacing_H']/2);
+                       }
+                       else {
+                               $xadj = $border_details['L']['w']/2 + $padding['L'];
+                               $wadj = ($border_details['L']['w'] + $border_details['R']['w'])/2 + $padding['L'] + $padding['R'];
+                               $yadj = $border_details['T']['w']/2 + $padding['T'];
+                       }
+
+                       $this->divwidth=$w-($wadj);
+                       $this->x += $xadj;
+                       $this->y += $yadj;
+                       $this->printbuffer($textbuffer,'',true);
+               }
+
+       }
+      $textbuffer = array();
+
+/*-- BACKGROUNDS --*/
+                       if (!$this->ColActive) {
+                         if (isset($content[$i][0]['trgradients']) && ($colctr==1 || $table['borders_separate'])) { 
+                               $g = $this->grad->parseBackgroundGradient($content[$i][0]['trgradients']);
+                               if ($g) {
+                                       $gx = $x0;
+                                       $gy = $y;
+                                       $gh = $h;
+                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+                                       if ($table['borders_separate']) { 
+                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
+                                               $s = '';
+                                               $clx = $x+ ($table['border_spacing_H']/2);
+                                               $cly = $y+ ($table['border_spacing_V']/2);
+                                               $clw = $w- $table['border_spacing_H'];
+                                               $clh = $h- $table['border_spacing_V'];
+                                               // Set clipping path
+                                               $s = ' q 0 w '; // Line width=0
+                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
+                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
+                                       }
+                                       else {
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                       }
+                               }
+                           }
+
+                          if (isset($content[$i][0]['trbackground-images']) && ($colctr==1 || $table['borders_separate'])) { 
+                           if ($content[$i][0]['trbackground-images']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $content[$i][0]['trbackground-images']['gradient'] )) {
+                               $g = $this->grad->parseMozGradient( $content[$i][0]['trbackground-images']['gradient'] );
+                               if ($g) {
+                                       $gx = $x0;
+                                       $gy = $y;
+                                       $gh = $h;
+                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+                                       if ($table['borders_separate']) { 
+                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
+                                               $s = '';
+                                               $clx = $x+ ($table['border_spacing_H']/2);
+                                               $cly = $y+ ($table['border_spacing_V']/2);
+                                               $clw = $w- $table['border_spacing_H'];
+                                               $clh = $h- $table['border_spacing_V'];
+                                               // Set clipping path
+                                               $s = ' q 0 w '; // Line width=0
+                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
+                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
+                                       }
+                                       else {
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                       }
+                               }
+                           }
+                           else { 
+                               $image_id = $content[$i][0]['trbackground-images']['image_id'];
+                               $orig_w = $content[$i][0]['trbackground-images']['orig_w'];
+                               $orig_h = $content[$i][0]['trbackground-images']['orig_h'];
+                               $x_pos = $content[$i][0]['trbackground-images']['x_pos'];
+                               $y_pos = $content[$i][0]['trbackground-images']['y_pos'];
+                               $x_repeat = $content[$i][0]['trbackground-images']['x_repeat'];
+                               $y_repeat = $content[$i][0]['trbackground-images']['y_repeat'];
+                               $resize = $content[$i][0]['trbackground-images']['resize'];
+                               $opacity = $content[$i][0]['trbackground-images']['opacity'];
+                               $itype = $content[$i][0]['trbackground-images']['itype'];
+
+                               $clippath = '';
+                               $gx = $x0;
+                               $gy = $y;
+                               $gh = $h;
+                               $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+                               if ($table['borders_separate']) { 
+                                       $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
+                                       $s = '';
+                                       $clx = $x+ ($table['border_spacing_H']/2);
+                                       $cly = $y+ ($table['border_spacing_V']/2);
+                                       $clw = $w- $table['border_spacing_H'];
+                                       $clh = $h- $table['border_spacing_V'];
+                                       // Set clipping path
+                                       $s = ' q 0 w '; // Line width=0
+                                       $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
+                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
+                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
+                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
+                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
+                                       $s .= ' W n ';  // Ends path no-op & Sets the clipping path
+                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
+                               }
+                               else {
+                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
+                               }
+                           }
+                          }
+                       }
+/*-- END BACKGROUNDS --*/
+
+       // TABLE BORDER - if separate OR collapsed and only table border
+       if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) { 
+                       $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H']/2);
+                       $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H']/2);
+                       $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V']/2);
+                       $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V']/2);
+                       $tbx = $x;
+                       $tby = $y;
+                       $tbw = $w;
+                       $tbh = $h;
+                       $tab_bord = 0;
+                       $corner = '';
+                       if ($i == $firstrow && $horf=='H') {            // Top
+                               $tby -= $halfspaceT + ($table['border_details']['T']['w']/2);
+                               $tbh += $halfspaceT + ($table['border_details']['T']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_TOP); 
+                               $corner .= 'T';
+                       }
+                       if (($i == ($lastrow) || (isset($tablehf['rowspan']) && ($i+$tablehf['rowspan']) == ($lastrow+1))) && $horf=='F') {     // Bottom
+                               $tbh += $halfspaceB + ($table['border_details']['B']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_BOTTOM); 
+                               $corner .= 'B';
+                       }
+                       if ($colctr == 1 && $firstSpread) {     // Left
+                               $tbx -= $halfspaceL + ($table['border_details']['L']['w']/2);
+                               $tbw += $halfspaceL + ($table['border_details']['L']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_LEFT); 
+                               $corner .= 'L';
+                       }
+                       if ($colctr == count($content[$i]) && $finalSpread) {   // Right
+                               $tbw += $halfspaceR + ($table['border_details']['R']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_RIGHT); 
+                               $corner .= 'R';
+                       }
+                       $this->_tableRect($tbx, $tby, $tbw, $tbh, $tab_bord , $table['border_details'], false, $table['borders_separate'], 'table', $corner, $table['border_spacing_V'], $table['border_spacing_H'] );
+       }
+
+
+     }// end column $content
+     $this->y = $y + $h; //Update y coordinate
+   }// end row $i
+   unset($table );
+   $this->colsums = array();
+  }
+}
+/*-- END TABLES --*/
+
+/*-- HTMLHEADERS-FOOTERS --*/
+function SetHTMLHeader($header='',$OE='',$write=false) {
+
+       $height = 0;
+       if (is_array($header) && isset($header['html']) && $header['html']) { 
+               $Hhtml = $header['html']; 
+               if ($this->setAutoTopMargin) {
+                       if (isset($header['h'])) { $height = $header['h']; }
+                       else { $height = $this->_gethtmlheight($Hhtml); }
+               }
+       }
+       else if (!is_array($header) && $header) { 
+               $Hhtml = $header; 
+               if ($this->setAutoTopMargin) { $height = $this->_gethtmlheight($Hhtml); }
+       }
+       else { $Hhtml = ''; }
+
+       if ($OE != 'E') { $OE = 'O'; }
+       if ($OE == 'E') {
+          
+          if ($Hhtml) {
+               $this->HTMLHeaderE['html'] = $Hhtml;
+               $this->HTMLHeaderE['h'] = $height;
+          }
+          else { $this->HTMLHeaderE = ''; }
+       }
+       else {
+          
+          if ($Hhtml) {
+               $this->HTMLHeader['html'] = $Hhtml;
+               $this->HTMLHeader['h'] = $height;
+          }
+          else { $this->HTMLHeader = ''; }
+       }
+       if (!$this->mirrorMargins && $OE == 'E') { return; }
+       if ($Hhtml=='') { return; }
+       if ($OE == 'E') {
+               $this->headerDetails['even'] = array(); // override and clear any other non-HTML header/footer
+       }
+       else {
+               $this->headerDetails['odd'] = array();  // override and clear any non-HTML other header/footer
+       }
+
+       if ($this->setAutoTopMargin=='pad') {
+               $this->tMargin = $this->margin_header + $height + $this->orig_tMargin;
+               if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; }
+       }
+       else if ($this->setAutoTopMargin=='stretch') {
+               $this->tMargin = max($this->orig_tMargin, $this->margin_header + $height + $this->autoMarginPadding);
+               if (isset($this->saveHTMLHeader[$this->page][$OE]['mt'])) { $this->saveHTMLHeader[$this->page][$OE]['mt'] = $this->tMargin; }
+       }
+       if ($write && $this->state!=0 && (($this->mirrorMargins && $OE == 'E' && ($this->page)%2==0) || ($this->mirrorMargins && $OE != 'E' && ($this->page)%2==1) || !$this->mirrorMargins)) { $this->writeHTMLHeaders(); }
+}
+
+function SetHTMLFooter($footer='',$OE='') {
+
+       $height = 0;
+       if (is_array($footer) && isset($footer['html']) && $footer['html']) { 
+               $Fhtml = $footer['html']; 
+               if ($this->setAutoBottomMargin) {
+                       if (isset($footer['h'])) { $height = $footer['h']; }
+                       else { $height = $this->_gethtmlheight($Fhtml); }
+               }
+       }
+       else if (!is_array($footer) && $footer) { 
+               $Fhtml = $footer; 
+               if ($this->setAutoBottomMargin) { $height = $this->_gethtmlheight($Fhtml); }
+       }
+       else { $Fhtml = ''; }
+
+       if ($OE != 'E') { $OE = 'O'; }
+       if ($OE == 'E') {
+          
+          if ($Fhtml) {
+               $this->HTMLFooterE['html'] = $Fhtml;
+               $this->HTMLFooterE['h'] = $height;
+          }
+          else { $this->HTMLFooterE = ''; }
+       }
+       else {
+          
+          if ($Fhtml) {
+               $this->HTMLFooter['html'] = $Fhtml;
+               $this->HTMLFooter['h'] = $height;
+          }
+          else { $this->HTMLFooter = ''; }
+       }
+       if (!$this->mirrorMargins && $OE == 'E') { return; }
+       if ($Fhtml=='') { return false; }
+       if ($OE == 'E') {
+               $this->footerDetails['even'] = array(); // override and clear any other header/footer
+       }
+       else {
+               $this->footerDetails['odd'] = array();  // override and clear any other header/footer
+       }
+
+       if ($this->setAutoBottomMargin=='pad') {
+               $this->bMargin = $this->margin_footer + $height + $this->orig_bMargin;
+               $this->PageBreakTrigger=$this->h-$this->bMargin ;
+               if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; }
+       }
+       else if ($this->setAutoBottomMargin=='stretch') {
+               $this->bMargin = max($this->orig_bMargin, $this->margin_footer + $height + $this->autoMarginPadding);
+               $this->PageBreakTrigger=$this->h-$this->bMargin ;
+               if (isset($this->saveHTMLHeader[$this->page][$OE]['mb'])) { $this->saveHTMLHeader[$this->page][$OE]['mb'] = $this->bMargin; }
+       }
+}
+
+
+function _getHtmlHeight($html) {
+               $save_state = $this->state;
+               if($this->state==0) {
+                       $this->AddPage($this->CurOrientation);
+               }
+               $this->state = 2;
+               $this->Reset();
+               $this->pageoutput[$this->page] = array();
+               $save_x = $this->x;
+               $save_y = $this->y;
+               $this->x = $this->lMargin;
+               $this->y = $this->margin_header;
+               $html = str_replace('{PAGENO}',$this->pagenumPrefix.$this->docPageNum($this->page).$this->pagenumSuffix,$html);
+               $html = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->docPageNumTotal($this->page).$this->nbpgSuffix,$html );
+               $html = str_replace($this->aliasNbPg,$this->page,$html );
+               $html = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$html );
+               $this->HTMLheaderPageLinks = array();
+               $this->HTMLheaderPageAnnots = array();
+               $this->HTMLheaderPageForms = array();
+               $savepb = $this->pageBackgrounds;
+               $this->writingHTMLheader = true;
+               $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
+               $this->writingHTMLheader = false;
+               $h = ($this->y - $this->margin_header);
+               $this->Reset();
+               $this->pageoutput[$this->page] = array();
+               $this->headerbuffer = '';
+               $this->pageBackgrounds = $savepb;
+               $this->x = $save_x;
+               $this->y = $save_y;
+               $this->state = $save_state;
+               if($save_state==0) {
+                       unset($this->pages[1]);
+                       $this->page = 0;
+               }
+               return $h;
+}
+
+
+// Called internally from Header
+function writeHTMLHeaders() {
+
+       if ($this->mirrorMargins && ($this->page)%2==0) { $OE = 'E'; }  // EVEN
+       else { $OE = 'O'; }
+       if ($OE == 'E') {
+               $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeaderE['html'] ;
+       }
+       else {
+               $this->saveHTMLHeader[$this->page][$OE]['html'] = $this->HTMLHeader['html'] ;
+       }
+       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
+               $this->saveHTMLHeader[$this->page][$OE]['rotate'] = true;
+               $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->tMargin;
+               $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->bMargin;
+               $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header;
+               $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer;
+               $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->h;
+               $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->w;
+       }
+       else {
+               $this->saveHTMLHeader[$this->page][$OE]['ml'] = $this->lMargin;
+               $this->saveHTMLHeader[$this->page][$OE]['mr'] = $this->rMargin;
+               $this->saveHTMLHeader[$this->page][$OE]['mh'] = $this->margin_header;
+               $this->saveHTMLHeader[$this->page][$OE]['mf'] = $this->margin_footer;
+               $this->saveHTMLHeader[$this->page][$OE]['pw'] = $this->w;
+               $this->saveHTMLHeader[$this->page][$OE]['ph'] = $this->h;
+       }
+}
+
+function writeHTMLFooters() {
+
+       if ($this->mirrorMargins && ($this->page)%2==0) { $OE = 'E'; }  // EVEN
+       else { $OE = 'O'; }
+       if ($OE == 'E') {
+               $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooterE['html'] ;
+       }
+       else {
+               $this->saveHTMLFooter[$this->page][$OE]['html'] = $this->HTMLFooter['html'] ;
+       }
+       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
+               $this->saveHTMLFooter[$this->page][$OE]['rotate'] = true;
+               $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->tMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->bMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->rMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->lMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header;
+               $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer;
+               $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->h;
+               $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->w;
+       }
+       else {
+               $this->saveHTMLFooter[$this->page][$OE]['ml'] = $this->lMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mr'] = $this->rMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mt'] = $this->tMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mb'] = $this->bMargin;
+               $this->saveHTMLFooter[$this->page][$OE]['mh'] = $this->margin_header;
+               $this->saveHTMLFooter[$this->page][$OE]['mf'] = $this->margin_footer;
+               $this->saveHTMLFooter[$this->page][$OE]['pw'] = $this->w;
+               $this->saveHTMLFooter[$this->page][$OE]['ph'] = $this->h;
+       }
+}
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+function DefHeaderByName($name,$arr) {
+       if (!$name) { $name = '_default'; }
+       $this->pageheaders[$name] = $arr;
+}
+
+function DefFooterByName($name,$arr) {
+       if (!$name) { $name = '_default'; }
+       $this->pagefooters[$name] = $arr;
+}
+
+function SetHeaderByName($name,$side='O',$write=false) {
+       if (!$name) { $name = '_default'; }
+       if ($side=='E') { $this->headerDetails['even'] = $this->pageheaders[$name]; }
+       else { $this->headerDetails['odd'] = $this->pageheaders[$name]; }
+       if ($write) { $this->Header(); }
+}
+
+function SetFooterByName($name,$side='O') {
+       if (!$name) { $name = '_default'; }
+       if ($side=='E') { $this->footerDetails['even'] = $this->pagefooters[$name]; }
+       else { $this->footerDetails['odd'] = $this->pagefooters[$name]; }
+}
+
+/*-- HTMLHEADERS-FOOTERS --*/
+function DefHTMLHeaderByName($name,$html) {
+       if (!$name) { $name = '_default'; }
+
+       $this->pageHTMLheaders[$name]['html'] = $html;
+       $this->pageHTMLheaders[$name]['h'] = $this->_gethtmlheight($html);
+}
+
+function DefHTMLFooterByName($name,$html) {
+       if (!$name) { $name = '_default'; }
+
+       $this->pageHTMLfooters[$name]['html'] = $html;
+       $this->pageHTMLfooters[$name]['h'] = $this->_gethtmlheight($html);
+}
+
+function SetHTMLHeaderByName($name,$side='O',$write=false) {
+       if (!$name) { $name = '_default'; }
+       $this->SetHTMLHeader($this->pageHTMLheaders[$name],$side,$write);
+}
+
+function SetHTMLFooterByName($name,$side='O') {
+       if (!$name) { $name = '_default'; }
+       $this->SetHTMLFooter($this->pageHTMLfooters[$name],$side,$write);
+}
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+
+function SetHeader($Harray=array(),$side='',$write=false) {
+  if (is_string($Harray)) {
+    if (strlen($Harray)==0) {
+       if ($side=='O') { $this->headerDetails['odd'] = array(); }
+       else if ($side=='E') { $this->headerDetails['even'] = array(); }
+       else { $this->headerDetails = array(); }
+   }
+   else if (strpos($Harray,'|') || strpos($Harray,'|')===0) {
+       $hdet = explode('|',$Harray);
+       $this->headerDetails = array (
+               'odd' => array (
+       'L' => array ('content' => $hdet[0], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'C' => array ('content' => $hdet[1], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'R' => array ('content' => $hdet[2], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'line' => $this->defaultheaderline,
+               ),
+               'even' => array (
+       'R' => array ('content' => $hdet[0], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'C' => array ('content' => $hdet[1], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'L' => array ('content' => $hdet[2], 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'line' => $this->defaultheaderline,
+               )
+       );
+    }
+    else {
+       $this->headerDetails = array (
+               'odd' => array (
+       'R' => array ('content' => $Harray, 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'line' => $this->defaultheaderline,
+               ),
+               'even' => array (
+       'L' => array ('content' => $Harray, 'font-size' => $this->defaultheaderfontsize, 'font-style' => $this->defaultheaderfontstyle),
+       'line' => $this->defaultheaderline,
+               )
+       );
+    }
+  }
+  else if (is_array($Harray)) {
+       if ($side=='O') { $this->headerDetails['odd'] = $Harray; }
+       else if ($side=='E') { $this->headerDetails['even'] = $Harray; }
+       else { $this->headerDetails = $Harray; }
+  }
+/*-- HTMLHEADERS-FOOTERS --*/
+  // Overwrite any HTML Header previously set
+  if ($side=='E') { $this->SetHTMLHeader('','E'); }
+  else if ($side=='O') {  $this->SetHTMLHeader(''); }
+  else {
+       $this->SetHTMLHeader('');
+       $this->SetHTMLHeader('','E');
+  }
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+  if ($write) { 
+       $save_y = $this->y;
+       $this->Header();
+       $this->SetY($save_y) ; 
+  }
+}
+
+
+
+
+function SetFooter($Farray=array(),$side='') {
+  if (is_string($Farray)) {
+    if (strlen($Farray)==0) {
+       if ($side=='O') { $this->footerDetails['odd'] = array(); }
+       else if ($side=='E') { $this->footerDetails['even'] = array(); }
+       else { $this->footerDetails = array(); }
+    }
+    else if (strpos($Farray,'|') || strpos($Farray,'|')===0) {
+       $fdet = explode('|',$Farray);
+       $this->footerDetails = array (
+               'odd' => array (
+       'L' => array ('content' => $fdet[0], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'C' => array ('content' => $fdet[1], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'R' => array ('content' => $fdet[2], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'line' => $this->defaultfooterline,
+               ),
+               'even' => array (
+       'R' => array ('content' => $fdet[0], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'C' => array ('content' => $fdet[1], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'L' => array ('content' => $fdet[2], 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'line' => $this->defaultfooterline,
+               )
+       );
+    }
+    else {
+       $this->footerDetails = array (
+               'odd' => array (
+       'R' => array ('content' => $Farray, 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'line' => $this->defaultfooterline,
+               ),
+               'even' => array (
+       'L' => array ('content' => $Farray, 'font-size' => $this->defaultfooterfontsize, 'font-style' => $this->defaultfooterfontstyle),
+       'line' => $this->defaultfooterline,
+               )
+       );
+    }
+  }
+  else if (is_array($Farray)) {
+       if ($side=='O') { $this->footerDetails['odd'] = $Farray; }
+       else if ($side=='E') { $this->footerDetails['even'] = $Farray; }
+       else { $this->footerDetails = $Farray; }
+  }
+/*-- HTMLHEADERS-FOOTERS --*/
+  // Overwrite any HTML Footer previously set
+  if ($side=='E') { $this->SetHTMLFooter('','E'); }
+  else if ($side=='O') {  $this->SetHTMLFooter(''); }
+  else {
+       $this->SetHTMLFooter('');
+       $this->SetHTMLFooter('','E');
+  }
+/*-- END HTMLHEADERS-FOOTERS --*/
+}
+
+/*-- WATERMARK --*/
+function setUnvalidatedText($txt='', $alpha=-1) {
+       if ($alpha>=0) $this->watermarkTextAlpha = $alpha;
+       $this->watermarkText = $txt;
+}
+function SetWatermarkText($txt='', $alpha=-1) {
+       if ($alpha>=0) $this->watermarkTextAlpha = $alpha;
+       $this->watermarkText = $txt;
+}
+
+function SetWatermarkImage($src, $alpha=-1, $size='D', $pos='F') {
+       if ($alpha>=0) $this->watermarkImageAlpha = $alpha;
+       $this->watermarkImage = $src;
+       $this->watermark_size = $size;
+       $this->watermark_pos = $pos;
+}
+/*-- END WATERMARK --*/
+
+
+//Page footer
+function Footer() {
+/*-- CSS-PAGE --*/
+  // PAGED MEDIA - CROP / CROSS MARKS from @PAGE
+  if ($this->show_marks == 'CROP' || $this->show_marks == 'CROPCROSS') {
+       // Show TICK MARKS
+       $this->SetLineWidth(0.1);       // = 0.1 mm
+       $this->SetDColor($this->ConvertColor(0));
+       $l = $this->cropMarkLength;
+       $m = $this->cropMarkMargin;     // Distance of crop mark from margin 
+       $b = $this->nonPrintMargin;     // Non-printable border at edge of paper sheet 
+       $ax1 = $b;
+       $bx = $this->page_box['outer_width_LR'] - $m;
+       $ax = max($ax1, $bx-$l);
+       $cx1 = $this->w - $b;
+       $dx = $this->w - $this->page_box['outer_width_LR'] + $m;
+       $cx = min($cx1, $dx+$l);
+       $ay1 = $b;
+       $by = $this->page_box['outer_width_TB'] - $m;
+       $ay = max($ay1, $by-$l);
+       $cy1 = $this->h - $b;
+       $dy = $this->h - $this->page_box['outer_width_TB'] + $m;
+       $cy = min($cy1, $dy+$l);
+
+       $this->Line($ax, $this->page_box['outer_width_TB'], $bx, $this->page_box['outer_width_TB']);
+       $this->Line($cx, $this->page_box['outer_width_TB'], $dx, $this->page_box['outer_width_TB']);
+       $this->Line($ax, $this->h - $this->page_box['outer_width_TB'], $bx, $this->h - $this->page_box['outer_width_TB']);
+       $this->Line($cx, $this->h - $this->page_box['outer_width_TB'], $dx, $this->h - $this->page_box['outer_width_TB']);
+       $this->Line($this->page_box['outer_width_LR'], $ay, $this->page_box['outer_width_LR'], $by);
+       $this->Line($this->page_box['outer_width_LR'], $cy, $this->page_box['outer_width_LR'], $dy);
+       $this->Line($this->w - $this->page_box['outer_width_LR'], $ay, $this->w - $this->page_box['outer_width_LR'], $by);
+       $this->Line($this->w - $this->page_box['outer_width_LR'], $cy, $this->w - $this->page_box['outer_width_LR'], $dy);
+
+       if ($this->printers_info) {
+               $hd = date('Y-m-d H:i').'  Page '.$this->page.' of {nb}';
+               $this->SetTColor($this->ConvertColor(0));
+               $this->SetFont('arial','',7.5,true,true);
+               $this->x = $this->page_box['outer_width_LR'] + 1.5;
+               $this->y = 1;
+               $this->Cell($headerpgwidth ,$this->FontSize,$hd,0,0,'L',0,'',0,0,0,'M');
+               $this->SetFont($this->default_font,'',$this->original_default_font_size);
+       }
+
+  }
+  if ($this->show_marks == 'CROSS' || $this->show_marks == 'CROPCROSS') {
+       $this->SetLineWidth(0.1);       // = 0.1 mm
+       $this->SetDColor($this->ConvertColor(0));
+       $l = 14 /2;     // longer length of the cross line (half)
+       $w = 6 /2;      // shorter width of the cross line (half)
+       $r = 1.2;       // radius of circle
+       $m = $this->crossMarkMargin;    // Distance of cross mark from margin 
+       $x1 = $this->page_box['outer_width_LR'] - $m;
+       $x2 = $this->w - $this->page_box['outer_width_LR'] + $m;
+       $y1 = $this->page_box['outer_width_TB'] - $m;
+       $y2 = $this->h - $this->page_box['outer_width_TB'] + $m;
+       // Left
+       $this->Circle($x1, $this->h/2, $r, 'S') ;
+       $this->Line($x1-$w, $this->h/2, $x1+$w, $this->h/2);
+       $this->Line($x1, $this->h/2-$l, $x1, $this->h/2+$l);
+       // Right
+       $this->Circle($x2, $this->h/2, $r, 'S') ;
+       $this->Line($x2-$w, $this->h/2, $x2+$w, $this->h/2);
+       $this->Line($x2, $this->h/2-$l, $x2, $this->h/2+$l);
+       // Top
+       $this->Circle($this->w/2, $y1, $r, 'S') ;
+       $this->Line($this->w/2, $y1-$w, $this->w/2, $y1+$w);
+       $this->Line($this->w/2-$l, $y1, $this->w/2+$l, $y1);
+       // Bottom
+       $this->Circle($this->w/2, $y2, $r, 'S') ;
+       $this->Line($this->w/2, $y2-$w, $this->w/2, $y2+$w);
+       $this->Line($this->w/2-$l, $y2, $this->w/2+$l, $y2);
+  }
+
+
+       // If @page set non-HTML headers/footers named, they were not read until later in the HTML code - so now set them
+       if ($this->page==1) {
+               if ($this->firstPageBoxHeader) {
+                       $this->headerDetails['odd'] = $this->pageheaders[$this->firstPageBoxHeader]; 
+                       $this->Header();
+               }
+               if ($this->firstPageBoxFooter) {
+                       $this->footerDetails['odd'] = $this->pagefooters[$this->firstPageBoxFooter];
+               }
+               $this->firstPageBoxHeader='';
+               $this->firstPageBoxFooter='';
+       }
+/*-- END CSS-PAGE --*/
+
+
+
+/*-- HTMLHEADERS-FOOTERS --*/
+  if (($this->mirrorMargins && ($this->page%2==0) && $this->HTMLFooterE) || ($this->mirrorMargins && ($this->page%2==1) && $this->HTMLFooter) || (!$this->mirrorMargins && $this->HTMLFooter)) {
+       $this->writeHTMLFooters(); 
+/*-- WATERMARK --*/
+       if (($this->watermarkText) && ($this->showWatermarkText)) {
+               $this->watermark( $this->watermarkText, 45, 120, $this->watermarkTextAlpha);    // Watermark text
+       }
+       if (($this->watermarkImage) && ($this->showWatermarkImage)) {
+               $this->watermarkImg( $this->watermarkImage, $this->watermarkImageAlpha);        // Watermark image
+       }
+/*-- END WATERMARK --*/
+       return;
+  }
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+  $this->processingHeader=true;
+  $this->ResetMargins();       // necessary after columns
+  $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+/*-- WATERMARK --*/
+  if (($this->watermarkText) && ($this->showWatermarkText)) {
+       $this->watermark( $this->watermarkText, 45, 120, $this->watermarkTextAlpha);    // Watermark text
+  }
+  if (($this->watermarkImage) && ($this->showWatermarkImage)) {
+       $this->watermarkImg( $this->watermarkImage, $this->watermarkImageAlpha);        // Watermark image
+  }
+/*-- END WATERMARK --*/
+  $h = $this->footerDetails;
+  if(count($h)) {
+
+       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
+               $this->_out(sprintf('q 0 -1 1 0 0 %.3F cm ',($this->h*_MPDFK)));
+               $headerpgwidth = $this->h - $this->orig_lMargin - $this->orig_rMargin;
+               if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
+                       $headerlmargin = $this->orig_rMargin;
+               }
+               else {
+                       $headerlmargin = $this->orig_lMargin;
+               }
+       }
+       else { 
+               $yadj = 0; 
+               $headerpgwidth = $this->pgwidth;
+               $headerlmargin = $this->lMargin;
+       }
+       $this->SetY(-$this->margin_footer);
+
+       $this->SetTColor($this->ConvertColor(0));
+       $this->SUP = false;
+       $this->SUB = false;
+       $this->bullet = false;
+
+       // only show pagenumber if numbering on
+       $pgno = $this->docPageNum($this->page, true); 
+
+       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
+                       $side = 'even';
+       }
+       else {  // ODD  // OR NOT MIRRORING MARGINS/FOOTERS = DEFAULT
+                       $side = 'odd';
+       }
+       $maxfontheight = 0;
+       foreach(array('L','C','R') AS $pos) {
+         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
+               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
+               else { $hfsz = $this->default_font_size; }
+               $maxfontheight = max($maxfontheight,$hfsz);
+         }
+       }
+       // LEFT-CENTER-RIGHT
+       foreach(array('L','C','R') AS $pos) {
+         if (isset($h[$side][$pos]['content']) && $h[$side][$pos]['content']) {
+               $hd = str_replace('{PAGENO}',$pgno,$h[$side][$pos]['content']);
+               $hd = str_replace($this->aliasNbPgGp,$this->nbpgPrefix.$this->aliasNbPgGp.$this->nbpgSuffix,$hd);
+               $hd = preg_replace('/\{DATE\s+(.*?)\}/e',"date('\\1')",$hd);
+               if (isset($h[$side][$pos]['font-family']) && $h[$side][$pos]['font-family']) { $hff = $h[$side][$pos]['font-family']; }
+               else { $hff = $this->original_default_font; }
+               if (isset($h[$side][$pos]['font-size']) && $h[$side][$pos]['font-size']) { $hfsz = $h[$side][$pos]['font-size']; }
+               else { $hfsz = $this->original_default_font_size; }
+               $maxfontheight = max($maxfontheight,$hfsz);
+               if (isset($h[$side][$pos]['font-style']) && $h[$side][$pos]['font-style']) { $hfst = $h[$side][$pos]['font-style']; }
+               else { $hfst = ''; }
+               if (isset($h[$side][$pos]['color']) && $h[$side][$pos]['color']) { 
+                       $hfcol = $h[$side][$pos]['color']; 
+                       $cor = $this->ConvertColor($hfcol);
+                       if ($cor) { $this->SetTColor($cor); }
+               }
+               else { $hfcol = ''; }
+               $this->SetFont($hff,$hfst,$hfsz,true,true);
+               $this->x = $headerlmargin ;
+               $this->y = $this->h - $this->margin_footer - ($maxfontheight/_MPDFK);
+               $hd = $this->purify_utf8_text($hd);
+               if ($this->text_input_as_HTML) {
+                       $hd = $this->all_entities_to_utf8($hd);
+               }
+               // CONVERT CODEPAGE
+               if ($this->usingCoreFont) { $hd = mb_convert_encoding($hd,$this->mb_enc,'UTF-8'); }
+               // DIRECTIONALITY RTL
+               $this->magic_reverse_dir($hd, true, $this->directionality);     // *RTL*
+               // Font-specific ligature substitution for Indic fonts
+               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($hd);        // *INDIC*
+               $align = $pos;
+               if ($this->directionality == 'rtl') { 
+                       if ($pos == 'L') { $align = 'R'; }
+                       else if ($pos == 'R') { $align = 'L'; }
+               }
+
+               if ($pos!='L' && (strpos($hd,$this->aliasNbPg)!==false || strpos($hd,$this->aliasNbPgGp)!==false)) { 
+                       if (strpos($hd,$this->aliasNbPgGp)!==false) { $type= 'nbpggp'; } else { $type= 'nbpg'; }
+                       $this->_out('{mpdfheader'.$type.' '.$pos.' ff='.$hff.' fs='.$hfst.' fz='.$hfsz.'}'); 
+                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
+                       $this->_out('Q');
+               }
+               else { 
+                       $this->Cell($headerpgwidth ,$maxfontheight/_MPDFK ,$hd,0,0,$align,0,'',0,0,0,'M');
+               }
+               if ($hfcol) { $this->SetTColor($this->ConvertColor(0)); }
+         }
+       }
+       // Return Font to normal
+       $this->SetFont($this->default_font,'',$this->original_default_font_size);
+
+       // LINE
+
+       if (isset($h[$side]['line']) && $h[$side]['line']) { 
+               $this->SetLineWidth(0.1);
+               $this->SetDColor($this->ConvertColor(0));
+               $this->Line($headerlmargin , $this->y-($maxfontheight*($this->footer_line_spacing)/_MPDFK), $headerlmargin +$headerpgwidth, $this->y-($maxfontheight*($this->footer_line_spacing)/_MPDFK));
+       }
+       if ($this->forcePortraitHeaders && $this->CurOrientation=='L' && $this->CurOrientation!=$this->DefOrientation) {
+               $this->_out('Q');
+       }
+  }
+  $this->processingHeader=false;
+
+}
+
+///////////////////
+// HYPHENATION
+///////////////////
+// mPDF 5.6.21
+// Hard hyphens
+function hardHyphenate($word, $maxWidth) {
+       // Don't hyphenate web addresses
+       if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
+
+       // Get dictionary
+       $poss = array();
+       $softhyphens = array();
+       $offset = 0;
+       $p = true;
+       if ($this->usingCoreFont) {
+               $wl = strlen($word);
+       }
+       else {
+               $wl = mb_strlen($word,'UTF-8');
+       }
+       while($offset < $wl) {
+               if (!$this->usingCoreFont) { 
+                       $p = mb_strpos($word, "-", $offset, 'UTF-8');
+               }
+               else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
+                       $p = strpos($word, "-", $offset);
+               }
+               if ($p !== false) { $poss[] = $p - count($poss); }
+               else { break; }
+               $offset = $p+1;
+       }
+       $success = false;
+       foreach($poss AS $i) {
+                       if ($this->usingCoreFont) { 
+                               $a = substr($word,0,$i);
+                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
+                               $pre = $a;
+                               $post = substr($word,$i,strlen($word));
+                               $prelength = strlen($pre);
+                       }
+                       else { 
+                               $a = mb_substr($word,0,$i,'UTF-8');
+                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
+                               $pre = $a;
+                               $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8');
+                               $prelength = mb_strlen($pre, 'UTF-8');
+                       }
+                       $success = true;
+       }
+       return array($success,$pre,$post,$prelength);
+}
+
+
+/*-- HYPHENATION --*/
+///////////////////
+///////////////////
+// HYPHENATION
+///////////////////
+// Soft hyphs
+function softHyphenate($word, $maxWidth) {
+       // Don't hyphenate web addresses
+       if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
+
+       // Get dictionary
+       $poss = array();
+       $softhyphens = array();
+       $offset = 0;
+       $p = true;
+       if ($this->usingCoreFont) {
+               $wl = strlen($word);
+       }
+       else {
+               $wl = mb_strlen($word,'UTF-8');
+       }
+       while($offset < $wl) {
+               // Soft Hyphens chr(173)
+               if (!$this->usingCoreFont) { 
+                       $p = mb_strpos($word, "\xc2\xad", $offset, 'UTF-8');
+               }
+               else if ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats') {
+                       $p = strpos($word, chr(173), $offset);
+               }
+               if ($p !== false) { $poss[] = $p - count($poss); }
+               else { break; }
+               $offset = $p+1;
+       }
+       $success = false;
+       foreach($poss AS $i) {
+                       if ($this->usingCoreFont) { 
+                               $a = substr($word,0,$i);
+                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
+                               $pre = $a;
+                               $post = substr($word,$i,strlen($word));
+                               $prelength = strlen($pre);
+                       }
+                       else { 
+                               $a = mb_substr($word,0,$i,'UTF-8');
+                               if ($this->GetStringWidth($a.'-') > $maxWidth) { break ; }
+                               $pre = $a;
+                               $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8');
+                               $prelength = mb_strlen($pre, 'UTF-8');
+                       }
+                       $success = true;
+       }
+       return array($success,$pre,$post,$prelength);
+}
+
+///////////////////
+// Word hyphenation
+function hyphenateWord($word, $maxWidth) {
+       // Do everything inside this function in utf-8
+       // Don't hyphenate web addresses
+       if (preg_match('/^(http:|www\.)/',$word)) { return array(false,'','',''); }
+
+
+       // Get dictionary
+       if (!$this->loadedSHYdictionary) {
+               if (file_exists(_MPDF_PATH.'patterns/dictionary.txt')) {
+                       $this->SHYdictionary = file(_MPDF_PATH.'patterns/dictionary.txt',FILE_SKIP_EMPTY_LINES);
+                       foreach($this->SHYdictionary as $entry) {
+                               $entry = trim($entry);
+                               $poss = array();
+                               $offset = 0;
+                               $p = true;
+                               $wl = mb_strlen($entry ,'UTF-8');
+                               while($offset < $wl) {
+                                       $p = mb_strpos($entry, '/', $offset, 'UTF-8');
+                                       if ($p !== false) { $poss[] = $p - count($poss); }
+                                       else { break; }
+                                       $offset = $p+1;
+                               }
+                               if (count($poss)) { $this->SHYdictionaryWords[str_replace('/', '', mb_strtolower($entry))] = $poss; }
+                       }
+               }
+               $this->loadedSHYdictionary = true;
+       }
+
+       if (!in_array($this->SHYlang,$this->SHYlanguages)) { return array(false,'','',''); }
+       // If no pattern loaded or not the best one
+       if (count($this->SHYpatterns) < 1  || ($this->loadedSHYpatterns && $this->loadedSHYpatterns != $this->SHYlang)) {
+               include(_MPDF_PATH."patterns/" . $this->SHYlang . ".php"); 
+               $patterns = explode(' ', $patterns);
+               $new_patterns = array();
+               for($i = 0; $i < count($patterns); $i++) {
+                       $value = $patterns[$i];
+                       $new_patterns[preg_replace('/[0-9]/', '', $value)] = $value;
+               }
+               $this->SHYpatterns = $new_patterns;
+               $this->loadedSHYpatterns = $this->SHYlang;
+       }
+
+       if ($this->usingCoreFont) { $word = mb_convert_encoding($word,'UTF-8',$this->mb_enc); }
+
+       $prepre = '';
+       $postpost = '';
+       $startpunctuation = "\xc2\xab\xc2\xbf\xe2\x80\x98\xe2\x80\x9b\xe2\x80\x9c\xe2\x80\x9f";
+       $endpunctuation = "\xe2\x80\x9e\xe2\x80\x9d\xe2\x80\x9a\xe2\x80\x99\xc2\xbb";
+       $pre = '';
+       $post = '';
+
+
+       if (preg_match('/^(["\''.$startpunctuation .'])+(.{'.$this->SHYcharmin.',})$/u',$word,$m)) {
+               $prepre = $m[1];
+               $word = $m[2];
+       }
+       if (preg_match('/^(.{'.$this->SHYcharmin.',})([\'\.,;:!?"'.$endpunctuation .']+)$/u',$word,$m)) {
+               $word = $m[1];
+               $postpost = $m[2];
+       }
+       if(mb_strlen($word,'UTF-8') < $this->SHYcharmin) {
+                       return array(false,'','','');
+       }
+       $success = false;
+
+       if(isset($this->SHYdictionaryWords[mb_strtolower($word)])) {
+          foreach($this->SHYdictionaryWords[mb_strtolower($word)] AS $i) {
+                       $a = $prepre . mb_substr($word,0,$i,'UTF-8');
+                       if ($this->usingCoreFont) { $testa = mb_convert_encoding($a,$this->mb_enc,'UTF-8'); }
+                       else { $testa = $a; }
+                       if ($this->GetStringWidth($testa.'-') > $maxWidth) { break ; }
+                       $pre = $a;
+                       $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8') . $postpost;
+                       $success = true;
+          }
+       }
+
+       if (!$success) {
+          $text_word = '_' . $word . '_';
+          $word_length = mb_strlen($text_word,'UTF-8');
+
+          $single_character = preg_split('//u', $text_word);
+
+          $text_word = mb_strtolower($text_word,'UTF-8');
+          $hyphenated_word = array();
+          $numb3rs = array('0' => true, '1' => true, '2' => true, '3' => true, '4' => true, '5' => true, '6' => true, '7' => true, '8' => true, '9' => true);
+          for($position = 0; $position <= ($word_length - $this->SHYcharmin); $position++) {
+               $maxwins = min(($word_length - $position), $this->SHYcharmax);
+               for($win = $this->SHYcharmin; $win <= $maxwins; $win++) {
+                       if(isset($this->SHYpatterns[mb_substr($text_word, $position, $win,'UTF-8')])) {
+                               $pattern = $this->SHYpatterns[mb_substr($text_word, $position, $win,'UTF-8')];
+                               $digits = 1;
+                               $pattern_length = mb_strlen($pattern,'UTF-8');
+                               for($i = 0; $i < $pattern_length; $i++) {
+                                       $char = $pattern[$i];
+                                       if(isset($numb3rs[$char])) {
+                                               $zero = ($i == 0) ? $position - 1 : $position + $i - $digits;
+                                               if(!isset($hyphenated_word[$zero]) || $hyphenated_word[$zero] != $char) $hyphenated_word[$zero] = $char;
+                                               $digits++;
+                                       }
+                               }
+                       }
+               }
+          }
+
+          for($i = $this->SHYleftmin; $i <= (mb_strlen($word,'UTF-8') - $this->SHYrightmin); $i++) {
+               if(isset($hyphenated_word[$i]) && $hyphenated_word[$i] % 2 != 0) {
+                       $a = $prepre . mb_substr($word,0,$i,'UTF-8');
+                       if ($this->usingCoreFont) { $testa = mb_convert_encoding($a,$this->mb_enc,'UTF-8'); }
+                       else { $testa = $a; }
+                       if ($this->GetStringWidth($testa.'-') > $maxWidth + 0.0001) { break ; }
+                       $pre = $a;
+                       $post = mb_substr($word,$i,mb_strlen($word,'UTF-8'),'UTF-8') . $postpost;
+                       $success = true;
+               }
+          }
+       }
+       if ($this->usingCoreFont) { 
+               $pre = mb_convert_encoding($pre,$this->mb_enc,'UTF-8'); 
+               $post = mb_convert_encoding($post,$this->mb_enc,'UTF-8'); 
+               $prelength = strlen($pre);
+       }
+       else {
+               $prelength = mb_strlen($pre);
+       }
+       return array($success,$pre,$post,$prelength);
+
+}
+/*-- END HYPHENATION --*/
+
+
+/*-- HTML-CSS --*/
+///////////////////
+/// HTML parser ///
+///////////////////
+function WriteHTML($html,$sub=0,$init=true,$close=true) {
+                               // $sub ADDED - 0 = default; 1=headerCSS only; 2=HTML body (parts) only; 3 - HTML parses only
+                               // 4 - writes HTML headers
+                               // $close Leaves buffers etc. in current state, so that it can continue a block etc.
+                               // $init - Clears and sets buffers to Top level block etc.
+
+       if (empty($html)) { $html = ''; }
+       if ($this->progressBar) { $this->UpdateProgressBar(1,0,'Parsing CSS & Headers'); }      // *PROGRESS-BAR*
+
+       if ($init) {
+               $this->headerbuffer='';
+               $this->textbuffer = array();
+               $this->fixedPosBlockSave = array();
+       }
+       if ($sub == 1) { $html = '<style> '.$html.' </style>'; }        // stylesheet only
+
+       if ($this->allow_charset_conversion) {
+               if ($sub < 1) { 
+                       $this->ReadCharset($html); 
+               }
+               if ($this->charset_in && $sub!=4) {     // mPDF 5.4.14 
+                       $success = iconv($this->charset_in,'UTF-8//TRANSLIT',$html); 
+                       if ($success) { $html = $success; }
+               }
+       }
+       $html = $this->purify_utf8($html,false);
+       if ($init) {
+               $this->blklvl = 0;
+               $this->lastblocklevelchange = 0;
+               $this->blk = array();
+               $this->initialiseBlock($this->blk[0]);
+               $this->blk[0]['width'] =& $this->pgwidth;
+               $this->blk[0]['inner_width'] =& $this->pgwidth;
+               $this->blk[0]['blockContext'] = $this->blockContext;
+       }
+
+       $zproperties = array();
+       if ($sub < 2) { 
+               $this->ReadMetaTags($html); 
+
+               // mPDF 5.6.18
+               if (preg_match('/<base[^>]*href=["\']([^"\'>]*)["\']/i', $html, $m)) {
+                       $this->SetBasePath($m[1]);
+               }
+               // NB default stylesheet now in mPDF.css - read on initialising class
+               $html = $this->cssmgr->ReadCSS($html);
+
+               if ($this->useLang && !$this->usingCoreFont && preg_match('/<html [^>]*lang=[\'\"](.*?)[\'\"]/ism',$html,$m)) { 
+                       $html_lang = $m[1]; 
+               }
+
+               if (preg_match('/<html [^>]*dir=[\'\"]\s*rtl\s*[\'\"]/ism',$html)) { 
+                       $zproperties['DIRECTION'] = 'rtl'; 
+               }
+
+               // allow in-line CSS for body tag to be parsed // Get <body> tag inline CSS
+               if (preg_match('/<body([^>]*)>(.*?)<\/body>/ism',$html,$m) || preg_match('/<body([^>]*)>(.*)$/ism',$html,$m)) { 
+                       $html = $m[2]; 
+                       // Changed to allow style="background: url('bg.jpg')"
+                       if (preg_match('/style=[\"](.*?)[\"]/ism',$m[1],$mm) || preg_match('/style=[\'](.*?)[\']/ism',$m[1],$mm)) { 
+                               $zproperties = $this->cssmgr->readInlineCSS($mm[1]); 
+                       }
+                       if (preg_match('/dir=[\'\"]\s*rtl\s*[\'\"]/ism',$m[1])) { 
+                               $zproperties['DIRECTION'] = 'rtl'; 
+                       }
+                       if (isset($html_lang) && $html_lang) { $zproperties['LANG'] = $html_lang; }
+                       if ($this->useLang && !$this->onlyCoreFonts && preg_match('/lang=[\'\"](.*?)[\'\"]/ism',$m[1],$mm)) {
+                               $zproperties['LANG'] = $mm[1]; 
+                       }
+
+               }
+       }
+       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY',''); 
+       if ($zproperties) { $properties = $this->cssmgr->array_merge_recursive_unique($properties,$zproperties); }
+
+       if (isset($properties['DIRECTION']) && $properties['DIRECTION']) {
+               $this->cssmgr->CSS['BODY']['DIRECTION'] = $properties['DIRECTION'];   
+       }
+       if (!isset($this->cssmgr->CSS['BODY']['DIRECTION'])) {
+               $this->cssmgr->CSS['BODY']['DIRECTION'] = $this->directionality;   
+       }
+       else { $this->SetDirectionality($this->cssmgr->CSS['BODY']['DIRECTION']); }   
+
+       $this->setCSS($properties,'','BODY'); 
+       $this->blk[0]['InlineProperties'] = $this->saveInlineProperties();
+
+       if ($sub == 1) { return ''; }
+       if (!isset($this->cssmgr->CSS['BODY'])) { $this->cssmgr->CSS['BODY'] = array(); }
+
+/*-- BACKGROUNDS --*/
+       if (isset($properties['BACKGROUND-GRADIENT'])) { 
+               $this->bodyBackgroundGradient = $properties['BACKGROUND-GRADIENT'];
+       }
+
+       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE']) {
+               $ret = $this->SetBackground($properties, $this->pgwidth);
+               if ($ret) { $this->bodyBackgroundImage = $ret; }
+       }
+/*-- END BACKGROUNDS --*/
+
+/*-- CSS-PAGE --*/
+       // If page-box is set
+       if ($this->state==0 && isset($this->cssmgr->CSS['@PAGE']) && $this->cssmgr->CSS['@PAGE'] ) {
+               $this->page_box['current'] = ''; 
+               $this->page_box['using'] = true;
+               list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', false, 'O');
+               $this->DefOrientation = $this->CurOrientation = $pborientation; 
+               $this->orig_lMargin = $this->DeflMargin = $pbmgl; 
+               $this->orig_rMargin = $this->DefrMargin = $pbmgr; 
+               $this->orig_tMargin = $this->tMargin = $pbmgt;
+               $this->orig_bMargin = $this->bMargin = $pbmgb;
+               $this->orig_hMargin = $this->margin_header = $pbmgh;
+               $this->orig_fMargin = $this->margin_footer = $pbmgf;
+               list($pborientation,$pbmgl,$pbmgr,$pbmgt,$pbmgb,$pbmgh,$pbmgf,$hname,$fname,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat) = $this->SetPagedMediaCSS('', true, 'O');      // first page
+               $this->show_marks = $marks;
+               if ($hname && !preg_match('/^html_(.*)$/i',$hname)) $this->firstPageBoxHeader = $hname;
+               if ($fname && !preg_match('/^html_(.*)$/i',$fname)) $this->firstPageBoxFooter = $fname;
+       }
+/*-- END CSS-PAGE --*/
+
+       $parseonly = false; 
+       $this->bufferoutput = false; 
+       if ($sub == 3) { 
+               $parseonly = true; 
+               // Close any open block tags
+               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+               // Output any text left in buffer
+               if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); }
+               $this->textbuffer=array();
+       } 
+       else if ($sub == 4) { 
+               // Close any open block tags
+               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+               // Output any text left in buffer
+               if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); }
+               $this->bufferoutput = true; 
+               $this->textbuffer=array();
+               $this->headerbuffer='';
+               $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
+               $this->setCSS($properties,'','BODY'); 
+       } 
+
+       mb_internal_encoding('UTF-8'); 
+
+       $html = $this->AdjustHTML($html, $this->tabSpaces); //Try to make HTML look more like XHTML
+
+       if ($this->autoFontGroups) { $html = $this->AutoFont($html); }
+
+/*-- HTMLHEADERS-FOOTERS --*/
+       preg_match_all('/<htmlpageheader([^>]*)>(.*?)<\/htmlpageheader>/si',$html,$h);
+       for($i=0;$i<count($h[1]);$i++) {
+               if (preg_match('/name=[\'|\"](.*?)[\'|\"]/',$h[1][$i],$n)) {
+                       $this->pageHTMLheaders[$n[1]]['html'] = $h[2][$i]; 
+                       $this->pageHTMLheaders[$n[1]]['h'] = $this->_gethtmlheight($h[2][$i]); 
+               }
+       }
+       preg_match_all('/<htmlpagefooter([^>]*)>(.*?)<\/htmlpagefooter>/si',$html,$f);
+       for($i=0;$i<count($f[1]);$i++) {
+               if (preg_match('/name=[\'|\"](.*?)[\'|\"]/',$f[1][$i],$n)) {
+                       $this->pageHTMLfooters[$n[1]]['html'] = $f[2][$i]; 
+                       $this->pageHTMLfooters[$n[1]]['h'] = $this->_gethtmlheight($f[2][$i]); 
+               }
+       }
+/*-- END HTMLHEADERS-FOOTERS --*/
+       $html = preg_replace('/<htmlpageheader.*?<\/htmlpageheader>/si','',$html);
+       $html = preg_replace('/<htmlpagefooter.*?<\/htmlpagefooter>/si','',$html);
+
+       if($this->state==0 && $sub!=1 && $sub!=3 && $sub!=4) {
+               $this->AddPage($this->CurOrientation);
+       }
+
+
+/*-- HTMLHEADERS-FOOTERS --*/
+
+       if (isset($hname) && preg_match('/^html_(.*)$/i',$hname,$n)) $this->SetHTMLHeader($this->pageHTMLheaders[$n[1]],'O',true);
+       if (isset($fname) && preg_match('/^html_(.*)$/i',$fname,$n)) $this->SetHTMLFooter($this->pageHTMLfooters[$n[1]],'O');
+
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+       $html=str_replace('<?','< ',$html); //Fix '<?XML' bug from HTML code generated by MS Word
+
+       $this->checkSIP = false;
+       $this->checkSMP = false; 
+       $this->checkCJK = false; 
+       if ($this->onlyCoreFonts) { $html = $this->SubstituteChars($html); }
+       else {
+               if (preg_match("/([".$this->pregRTLchars."])/u", $html)) { $this->biDirectional = true; }       // *RTL*
+               if (preg_match("/([\x{20000}-\x{2FFFF}])/u", $html)) { $this->checkSIP = true; }
+               if (preg_match("/([\x{10000}-\x{1FFFF}])/u", $html)) { $this->checkSMP = true; }
+/*-- CJK-FONTS --*/
+               if (preg_match("/([".$this->pregCJKchars."])/u", $html)) { $this->checkCJK = true; }
+/*-- END CJK-FONTS --*/
+       }
+
+       // Don't allow non-breaking spaces that are converted to substituted chars or will break anyway and mess up table width calc.
+       $html = str_replace('<tta>160</tta>',chr(32),$html); 
+       $html = str_replace('</tta><tta>','|',$html); 
+       $html = str_replace('</tts><tts>','|',$html); 
+       $html = str_replace('</ttz><ttz>','|',$html); 
+
+       //Add new supported tags in the DisableTags function
+       $html=strip_tags($html,$this->enabledtags); //remove all unsupported tags, but the ones inside the 'enabledtags' string
+
+       //Explode the string in order to parse the HTML code
+       $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
+       // ? more accurate regexp that allows e.g. <a name="Silly <name>">
+       // if changing - also change in fn.SubstituteChars()
+       // $a = preg_split ('/<((?:[^<>]+(?:"[^"]*"|\'[^\']*\')?)+)>/ms', $html, -1, PREG_SPLIT_DELIM_CAPTURE);
+
+       if ($this->mb_enc) { 
+               mb_internal_encoding($this->mb_enc); 
+       }
+       $pbc = 0;
+       if ($this->progressBar) { $this->UpdateProgressBar(1,0); }      // *PROGRESS-BAR*
+       $this->subPos = -1;
+       $cnt = count($a);
+       for($i=0;$i<$cnt; $i++) {
+               $e = $a[$i];
+               if($i%2==0) {
+               //TEXT
+                       if ($this->blk[$this->blklvl]['hide']) { continue; }
+                       if ($this->inlineDisplayOff) { continue; }
+                       if ($this->inMeter) { continue; }       // mPDF 5.5.09
+
+                       if ($this->inFixedPosBlock) { $this->fixedPosBlock .= $e; continue; }   // *CSS-POSITION*
+                       if (strlen($e) == 0) { continue; }
+
+                       $e = strcode2utf($e);
+                       $e = $this->lesser_entity_decode($e);
+
+                       if ($this->usingCoreFont) { 
+                               // If core font is selected in document which is not onlyCoreFonts - substitute with non-core font
+                               if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->subPos<$i && !$this->specialcontent) {
+                                       $cnt += $this->SubstituteCharsNonCore($a, $i, $e); 
+                               }
+                               // CONVERT ENCODING
+                               $e = mb_convert_encoding($e,$this->mb_enc,'UTF-8'); 
+                               // mPDF 5.6.41
+                               if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); }
+                               if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); }
+                               if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); }
+                       }
+                       else {
+                               if ($this->checkSIP && $this->CurrentFont['sipext'] && $this->subPos<$i && !$this->specialcontent) { 
+                                       $cnt += $this->SubstituteCharsSIP($a, $i, $e); 
+                               }
+
+                               if ($this->useSubstitutions && !$this->onlyCoreFonts && $this->CurrentFont['type']!='Type0' && $this->subPos<$i && !$this->specialcontent) {
+                                       // mPDF 5.6.62  removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner
+                                       $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e);
+                                       $cnt += $this->SubstituteCharsMB($a, $i, $e); 
+                               }
+                               if ($this->biDirectional)  {    // *RTL*
+                                       $e = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $e);    // *RTL*
+                               }       // *RTL*
+                               // Font-specific ligature substitution for Indic fonts
+                               if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($e); // *INDIC*
+
+                               // mPDF 5.6.62  removes U+200E/U+200F LTR and RTL mark and U+200C/U+200D Zero-width Joiner and Non-joiner
+                               $e = preg_replace("/[\xe2\x80\x8c\xe2\x80\x8d\xe2\x80\x8e\xe2\x80\x8f]/u",'',$e);
+
+                               if ($this->toupper) { $e = mb_strtoupper($e,$this->mb_enc); }
+                               if ($this->tolower) { $e = mb_strtolower($e,$this->mb_enc); }
+                               if ($this->capitalize) { $e = mb_convert_case($e, MB_CASE_TITLE, "UTF-8"); }
+                       }
+                       if (($this->tts) || ($this->ttz) || ($this->tta)) {
+                               $es = explode('|',$e);
+                               $e = '';
+                               foreach($es AS $val) {
+                                       $e .= chr($val);
+                               }
+                       }
+                       //Adjust lineheight
+
+                       //  FORM ELEMENTS
+                       if ($this->specialcontent) {
+/*-- FORMS --*/
+                          //SELECT tag (form element)
+                          if ($this->specialcontent == "type=select") { 
+                               $e = ltrim($e); 
+                               $stringwidth = $this->GetStringWidth($e);
+                               if (!isset($this->selectoption['MAXWIDTH']) || $stringwidth > $this->selectoption['MAXWIDTH']) { $this->selectoption['MAXWIDTH'] = $stringwidth; }
+                               if (!isset($this->selectoption['SELECTED']) || $this->selectoption['SELECTED'] == '') { $this->selectoption['SELECTED'] = $e; }
+                               // mPDD 1.4 Active Forms
+                               if (isset($this->selectoption['ACTIVE']) && $this->selectoption['ACTIVE']) {
+                                       $this->selectoption['ITEMS'][]=array('exportValue'=>$this->selectoption['currentVAL'], 'content'=>$e, 'selected'=>$this->selectoption['currentSEL']);
+                               }
+                          }
+                          // TEXTAREA
+                          else { 
+                               $objattr = unserialize($this->specialcontent);
+                               $objattr['text'] = $e;
+                               $te = "\xbb\xa4\xactype=textarea,objattr=".serialize($objattr)."\xbb\xa4\xac";
+                               if ($this->tdbegin) {
+                                       $this->_saveCellTextBuffer($te, $this->HREF);
+                               }
+                               else {
+                                       $this->_saveTextBuffer($te, $this->HREF);
+                               }
+                          }
+/*-- END FORMS --*/
+                     }
+
+                       // TABLE
+                       else if ($this->tableLevel) {
+/*-- TABLES --*/
+                               if ($this->tdbegin) {
+                                  if (($this->ignorefollowingspaces) && !$this->ispre) { $e = ltrim($e); }
+                                  if ($e || $e==='0') {
+                                     if (($this->blockjustfinished || $this->listjustfinished) && $this->cell[$this->row][$this->col]['s']>0) {
+                                               $this->_saveCellTextBuffer("\n");
+                                               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+                                                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+                                               }
+                                               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+                                                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];  
+                                               }
+                                               $this->cell[$this->row][$this->col]['s'] = 0;// reset
+                                     }
+                                       $this->blockjustfinished=false;
+                                       $this->listjustfinished=false;
+
+                                       $this->_saveCellTextBuffer($e, $this->HREF);
+
+                                       if (!isset($this->cell[$this->row][$this->col]['R']) || !$this->cell[$this->row][$this->col]['R']) {
+                                               if (isset($this->cell[$this->row][$this->col]['s'])) { 
+                                                       $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($e, false);
+                                               }
+                                               else { $this->cell[$this->row][$this->col]['s'] = $this->GetStringWidth($e, false); }
+                                               if (!empty($this->spanborddet)) { 
+                                                       $this->cell[$this->row][$this->col]['s'] += $this->spanborddet['L']['w'] + $this->spanborddet['R']['w'];
+                                               }
+                                       }
+
+                                       if ($this->checkCJK && preg_match("/([".$this->pregCJKchars."])/u", $e)) { $this->tableCJK = true; }    // *CJK-FONTS*
+
+                                       // mPDF 5.6.13   Decimal mark alignment
+                                       if (substr($this->cell[$this->row][$this->col]['a'],0,1) == 'D') {
+                                               $dp = $this->decimal_align[substr($this->cell[$this->row][$this->col]['a'],0,2)];
+                                               $s = preg_split('/'.preg_quote($dp,'/').'/', $e, 2);    // ? needs to be /u if not core
+                                               $s0 = $this->GetStringWidth($s[0], false);
+                                               if ($s[1]) { $s1 = $this->GetStringWidth(($s[1].$dp), false); }
+                                               else $s1 = 0;
+                                               if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'])) {
+                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = $s0;
+                                               }
+                                               else {
+                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0'] = max($s0, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs0']);
+                                               }
+                                               if (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'])) {
+                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = $s1;
+                                               }
+                                               else {
+                                                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1'] = max($s1, $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['decimal_align'][$this->col]['maxs1']);
+                                               }
+                                       }
+
+                                       if ($this->tableLevel==1 && $this->useGraphs) { 
+                                               $this->graphs[$this->currentGraphId]['data'][$this->row][$this->col] = $e;
+                                       }
+                                       $this->nestedtablejustfinished = false;
+                                       $this->linebreakjustfinished=false;
+                                  }
+                               }
+/*-- END TABLES --*/
+                       }
+                       // ALL ELSE
+                       else {
+                               if ($this->ignorefollowingspaces and !$this->ispre) { $e = ltrim($e); }
+                               if ($e || $e==='0') $this->_saveTextBuffer($e, $this->HREF);
+                       }
+               }
+
+
+               else { // TAG **
+                  
+                  if($e[0]=='/') {
+/*-- PROGRESS-BAR --*/
+                       if ($this->progressBar) {       // 10% increments
+                               if (intval($i*10/$cnt) != $pbc) { $pbc = intval($i*10/$cnt); $this->UpdateProgressBar(1,$pbc*10,$tag); }
+                       }
+/*-- END PROGRESS-BAR --*/
+
+
+                   // Check for tags where HTML specifies optional end tags,
+                   // and/or does not allow nesting e.g. P inside P, or 
+                   $endtag = trim(strtoupper(substr($e,1)));   // mPDF 5.4.20
+                   if($this->blk[$this->blklvl]['hide']) { 
+                       if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { 
+                               unset($this->blk[$this->blklvl]);
+                               $this->blklvl--; 
+                       }
+                       continue; 
+                   }
+
+/*-- CSS-POSITION --*/
+                   if ($this->inFixedPosBlock) { 
+                       if (in_array($endtag, $this->outerblocktags) || in_array($endtag, $this->innerblocktags)) { $this->fixedPosBlockDepth--; }
+                       if ($this->fixedPosBlockDepth == 0) { 
+                               $this->fixedPosBlockSave[] = array($this->fixedPosBlock, $this->fixedPosBlockBBox, $this->page);
+                               $this->fixedPosBlock = '';
+                               $this->inFixedPosBlock = false;
+                               continue; 
+                       }
+                       $this->fixedPosBlock .= '<'.$e.'>'; 
+                       continue; 
+                   }
+/*-- END CSS-POSITION --*/
+                   if ($this->allow_html_optional_endtags && !$parseonly) {
+                       if (($endtag == 'DIV' || $endtag =='FORM' || $endtag =='CENTER') && $this->lastoptionaltag == 'P') { $this->CloseTag($this->lastoptionaltag ); }
+                       if ($this->lastoptionaltag == 'LI' && $endtag == 'OL') { $this->CloseTag($this->lastoptionaltag ); }
+                       if ($this->lastoptionaltag == 'LI' && $endtag == 'UL') { $this->CloseTag($this->lastoptionaltag ); }
+                       if ($this->lastoptionaltag == 'DD' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); }
+                       if ($this->lastoptionaltag == 'DT' && $endtag == 'DL') { $this->CloseTag($this->lastoptionaltag ); }
+                       if ($this->lastoptionaltag == 'OPTION' && $endtag == 'SELECT') { $this->CloseTag($this->lastoptionaltag ); }
+/*-- TABLES --*/
+                       if ($endtag == 'TABLE') {
+                               if ($this->lastoptionaltag == 'THEAD' || $this->lastoptionaltag == 'TBODY' || $this->lastoptionaltag == 'TFOOT') { 
+                                       $this->CloseTag($this->lastoptionaltag);
+                               }
+                               if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); }
+                               if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); }
+                       }
+                       if ($endtag == 'THEAD' || $endtag == 'TBODY' || $endtag == 'TFOOT') { 
+                               if ($this->lastoptionaltag == 'TR') { $this->CloseTag('TR'); }
+                               if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); $this->CloseTag('TR'); }
+                       }
+                       if ($endtag == 'TR') {
+                               if ($this->lastoptionaltag == 'TD' || $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); }
+                       }
+/*-- END TABLES --*/
+                   }
+                   $this->CloseTag($endtag); 
+                  }
+
+                  else {       // OPENING TAG
+                       if($this->blk[$this->blklvl]['hide']) { 
+                               if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); }
+                               else { $te = strtoupper($e); } 
+                               if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { 
+                                       $this->blklvl++;
+                                       $this->blk[$this->blklvl]['hide']=true;
+                               }
+                               continue; 
+                       }
+
+/*-- CSS-POSITION --*/
+                       if ($this->inFixedPosBlock) { 
+                               if (strpos($e,' ')) { $te = strtoupper(substr($e,0,strpos($e,' '))); }
+                               else { $te = strtoupper($e); } 
+                               $this->fixedPosBlock .= '<'.$e.'>'; 
+                               if (in_array($te, $this->outerblocktags) || in_array($te, $this->innerblocktags)) { $this->fixedPosBlockDepth++; }
+                               continue; 
+                       }
+/*-- END CSS-POSITION --*/
+                       $regexp = '|=\'(.*?)\'|s'; // eliminate single quotes, if any
+               $e = preg_replace($regexp,"=\"\$1\"",$e);
+                       // changes anykey=anyvalue to anykey="anyvalue" (only do this inside [some] tags)
+                       if (substr($e,0,10)!='pageheader' && substr($e,0,10)!='pagefooter' && substr($e,0,12)!='tocpagebreak') {        // mPDF 5.6.69
+                               $regexp = '| (\\w+?)=([^\\s>"]+)|si'; 
+                       $e = preg_replace($regexp," \$1=\"\$2\"",$e);
+                       }
+
+               $e = preg_replace('/ (\\S+?)\s*=\s*"/i', " \\1=\"", $e);
+
+               //Fix path values, if needed
+                       $orig_srcpath = '';
+                       if ((stristr($e,"href=") !== false) or (stristr($e,"src=") !== false) ) {
+                               $regexp = '/ (href|src)\s*=\s*"(.*?)"/i';
+                               preg_match($regexp,$e,$auxiliararray);
+                               if (isset($auxiliararray[2])) { $path = $auxiliararray[2]; }
+                               else { $path = ''; }
+                               if (trim($path) != '' && !(stristr($e,"src=") !== false && substr($path,0,4)=='var:')) { 
+                                       $orig_srcpath = $path;
+                                       $this->GetFullPath($path); 
+                                       $regexp = '/ (href|src)="(.*?)"/i';
+                                       $e = preg_replace($regexp,' \\1="'.$path.'"',$e);
+                               }
+                       }//END of Fix path values
+
+
+                       //Extract attributes
+                       $contents=array();
+                       $contents1=array();     // mPDF 5.5.17
+                       $contents2=array();
+                       // Changed to allow style="background: url('bg.jpg')"
+                       // mPDF 5.5.17  Changed to improve performance; maximum length of \S (attribute) = 16
+                       // mPDF 5.6.30  Increase allowed attribute name to 32 - cutting off "toc-even-header-name" etc.
+                       preg_match_all('/\\S{1,32}=["][^"]*["]/',$e,$contents1);
+                       preg_match_all('/\\S{1,32}=[\'][^\']*[\']/i',$e,$contents2);
+
+                       $contents = array_merge($contents1, $contents2);
+                       preg_match('/\\S+/',$e,$a2);
+                       $tag=strtoupper($a2[0]);
+                       $attr=array();
+                       if ($orig_srcpath) { $attr['ORIG_SRC'] = $orig_srcpath; }
+                       if (!empty($contents)) {
+                               foreach($contents[0] as $v) {
+                                       // Changed to allow style="background: url('bg.jpg')"
+                                       if(preg_match('/^([^=]*)=["]?([^"]*)["]?$/',$v,$a3) || preg_match('/^([^=]*)=[\']?([^\']*)[\']?$/',$v,$a3)) {
+                                               if (strtoupper($a3[1])=='ID' || strtoupper($a3[1])=='CLASS') {  // 4.2.013 Omits STYLE
+                                                       $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2]));
+                                               }
+                                               // includes header-style-right etc. used for <pageheader>
+                                               else if (preg_match('/^(HEADER|FOOTER)-STYLE/i',$a3[1])) {
+                                                       $attr[strtoupper($a3[1])]=trim(strtoupper($a3[2]));
+                                               }
+                                               else {
+                                                       $attr[strtoupper($a3[1])]=trim($a3[2]);
+                                               }
+                                       }
+                               }
+                       }
+                       $this->OpenTag($tag,$attr);
+/*-- CSS-POSITION --*/
+                       if ($this->inFixedPosBlock) { 
+                               $this->fixedPosBlockBBox = array($tag,$attr, $this->x, $this->y); 
+                               $this->fixedPosBlock = ''; 
+                               $this->fixedPosBlockDepth = 1; 
+                       }
+/*-- END CSS-POSITION --*/
+                     // mPDF 5.5.09
+                     if (preg_match('/\/$/',$e)) { $this->closeTag($tag); }
+
+                  }
+
+               } // end TAG
+       } //end of      foreach($a as $i=>$e)
+
+       if ($close) {
+
+               // Close any open block tags
+               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+
+               // Output any text left in buffer
+               if (count($this->textbuffer) && !$parseonly) { $this->printbuffer($this->textbuffer); }
+               if (!$parseonly) $this->textbuffer=array();
+
+/*-- CSS-FLOAT --*/
+               // If ended with a float, need to move to end page
+               $currpos = $this->page*1000 + $this->y;
+               if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) {
+                       $old_page = $this->page;
+                       $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000);
+                       if ($old_page != $new_page) {
+                               $s = $this->PrintPageBackgrounds();
+                               // Writes after the marker so not overwritten later by page background etc.
+                               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+                               $this->pageBackgrounds = array();
+                               $this->page = $new_page;
+                               $this->ResetMargins();
+                               $this->Reset();
+                               $this->pageoutput[$this->page] = array();
+                       }
+                       $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000;  // mod changes operands to integers before processing
+               }
+/*-- END CSS-FLOAT --*/
+
+/*-- CSS-IMAGE-FLOAT --*/
+               $this->printfloatbuffer();
+/*-- END CSS-IMAGE-FLOAT --*/
+
+               //Create Internal Links, if needed
+               if (!empty($this->internallink) ) {
+                       foreach($this->internallink as $k=>$v) {
+                               if (strpos($k,"#") !== false ) { continue; } //ignore
+                               $ypos = $v['Y'];
+                               $pagenum = $v['PAGE'];
+                               $sharp = "#";
+                               while (array_key_exists($sharp.$k,$this->internallink)) {
+                                       $internallink = $this->internallink[$sharp.$k];
+                                       $this->SetLink($internallink,$ypos,$pagenum);
+                                       $sharp .= "#";
+                               }
+                       }
+               }
+
+               $this->linemaxfontsize = '';
+               $this->lineheight_correction = $this->default_lineheight_correction;
+
+               $this->bufferoutput = false; 
+
+/*-- CSS-POSITION --*/
+               if (count($this->fixedPosBlockSave) && $sub != 4) {
+                 foreach($this->fixedPosBlockSave AS $fpbs) {
+                       $old_page = $this->page;
+                       $this->page = $fpbs[2];
+                       $this->WriteFixedPosHTML($fpbs[0], 0, 0, 100, 100,'auto', $fpbs[1]);  // 0,0,10,10 are overwritten by bbox
+                       $this->page = $old_page;
+                 }
+               }
+/*-- END CSS-POSITION --*/
+
+       }
+}
+
+/*-- CSS-POSITION --*/
+
+function WriteFixedPosHTML($html='',$x, $y, $w, $h, $overflow='visible', $bounding=array()) {
+       // $overflow can be 'hidden', 'visible' or 'auto' - 'auto' causes autofit to size
+       // Annotations disabled - enabled in mPDF 5.0
+       // Links do work
+       // Will always go on current page (or start Page 1 if required)
+       // Probably INCOMPATIBLE WITH keep with table, columns etc.
+       // Called externally or interally via <div style="position: [fixed|absolute]">
+       // When used internally, $x $y $w $h and $overflow are all overridden by $bounding
+
+       $overflow = strtolower($overflow);
+       if($this->state==0) { 
+               $this->AddPage($this->CurOrientation);
+       }
+       $save_y = $this->y;
+       $save_x = $this->x;
+       $this->fullImageHeight = $this->h;
+       $save_cols = false;
+/*-- COLUMNS --*/
+       if ($this->ColActive) {
+               $save_cols = true;
+               $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
+               $this->SetColumns(0);
+       }
+/*-- END COLUMNS --*/
+       $save_annots = $this->title2annots;     // *ANNOTATIONS*
+       $this->writingHTMLheader = true;        // a FIX to stop pagebreaks etc.
+       $this->writingHTMLfooter = true;
+       $this->InFooter = true; // suppresses autopagebreaks
+       $save_bgs = $this->pageBackgrounds;
+       $checkinnerhtml = preg_replace('/\s/','',$html);
+
+       if ($w > $this->w) { $x = 0; $w = $this->w; }
+       if ($h > $this->h) { $y = 0; $h = $this->h; }
+       if ($x > $this->w) { $x = $this->w - $w; }
+       if ($y > $this->h) { $y = $this->h - $h; }
+
+       if (!empty($bounding)) {
+               // $cont_ containing block = full physical page (position: absolute) or page inside margins (position: fixed)
+               // $bbox_ Bounding box is the <div> which is positioned absolutely/fixed 
+               // top/left/right/bottom/width/height/background*/border*/padding*/margin* are taken from bounding
+               // font*[family/size/style/weight]/line-height/text*[align/decoration/transform/indent]/color are transferred to $inner
+               // as an enclosing <div> (after having checked ID/CLASS)
+               // $x, $y, $w, $h are inside of $bbox_ = containing box for $inner_
+               // $inner_ InnerHTML is the contents of that block to be output 
+               $tag = $bounding[0];
+               $attr = $bounding[1];
+               $orig_x0 = $bounding[2];
+               $orig_y0 = $bounding[3];
+
+               // As in WriteHTML() initialising
+               $this->blklvl = 0;
+               $this->lastblocklevelchange = 0;
+               $this->blk = array();
+               $this->initialiseBlock($this->blk[0]);
+
+               $this->blk[0]['width'] =& $this->pgwidth;
+               $this->blk[0]['inner_width'] =& $this->pgwidth;
+
+               $this->blk[0]['blockContext'] = $this->blockContext;
+
+               $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
+               $this->setCSS($properties,'','BODY'); 
+               $this->blklvl = 1;
+               $this->initialiseBlock($this->blk[1]);
+               $this->blk[1]['tag'] = $tag;
+               $this->blk[1]['attr'] = $attr;
+               $this->Reset();
+               $p = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
+               if (isset($p['ROTATE']) && ($p['ROTATE']==90 || $p['ROTATE']==-90)) { $rotate = $p['ROTATE']; }
+               else { $rotate = 0; }
+               if (isset($p['OVERFLOW'])) { $overflow = strtolower($p['OVERFLOW']); }
+               if (strtolower($p['POSITION']) == 'fixed') {
+                       $cont_w = $this->pgwidth;       // $this->blk[0]['inner_width'];
+                       $cont_h = $this->h - $this->tMargin - $this->bMargin;
+                       $cont_x = $this->lMargin;
+                       $cont_y = $this->tMargin;
+               }
+               else {
+                       $cont_w = $this->w;     // ABSOLUTE;
+                       $cont_h = $this->h;
+                       $cont_x = 0;
+                       $cont_y = 0;
+               }
+
+               // Pass on in-line properties to the innerhtml
+               $css = '';
+               if (isset($p['TEXT-ALIGN'])) { $css .= 'text-align: '.strtolower($p['TEXT-ALIGN']).'; '; }
+               if (isset($p['TEXT-TRANSFORM'])) { $css .= 'text-transform: '.strtolower($p['TEXT-TRANSFORM']).'; '; }
+               if (isset($p['TEXT-INDENT'])) { $css .= 'text-indent: '.strtolower($p['TEXT-INDENT']).'; '; }
+               if (isset($p['TEXT-DECORATION'])) { $css .= 'text-decoration: '.strtolower($p['TEXT-DECORATION']).'; '; }
+               if (isset($p['FONT-FAMILY'])) { $css .= 'font-family: '.strtolower($p['FONT-FAMILY']).'; '; }
+               if (isset($p['FONT-STYLE'])) { $css .= 'font-style: '.strtolower($p['FONT-STYLE']).'; '; }
+               if (isset($p['FONT-WEIGHT'])) { $css .= 'font-weight: '.strtolower($p['FONT-WEIGHT']).'; '; }
+               if (isset($p['FONT-SIZE'])) { $css .= 'font-size: '.strtolower($p['FONT-SIZE']).'; '; }
+               if (isset($p['LINE-HEIGHT'])) { $css .= 'line-height: '.strtolower($p['LINE-HEIGHT']).'; '; }
+               if (isset($p['TEXT-SHADOW'])) { $css .= 'text-shadow: '.strtolower($p['TEXT-SHADOW']).'; '; }
+               if (isset($p['LETTER-SPACING'])) { $css .= 'letter-spacing: '.strtolower($p['LETTER-SPACING']).'; '; }
+               if (isset($p['FONT-VARIANT'])) { $css .= 'font-variant: '.strtolower($p['FONT-VARIANT']).'; '; }
+               if (isset($p['COLOR'])) { $css .= 'color: '.strtolower($p['COLOR']).'; '; }
+               if (isset($p['Z-INDEX'])) { $css .= 'z-index: '.$p['Z-INDEX'].'; '; }   // mPDF 5.6.01
+               if ($css) {
+                       $html = '<div style="'.$css.'">'.$html.'</div>';
+               }
+               // Copy over (only) the properties to set for border and background
+               $pb = array();
+               $pb['MARGIN-TOP'] = $p['MARGIN-TOP']; 
+               $pb['MARGIN-RIGHT'] = $p['MARGIN-RIGHT']; 
+               $pb['MARGIN-BOTTOM'] = $p['MARGIN-BOTTOM']; 
+               $pb['MARGIN-LEFT'] = $p['MARGIN-LEFT']; 
+               $pb['PADDING-TOP'] = $p['PADDING-TOP']; 
+               $pb['PADDING-RIGHT'] = $p['PADDING-RIGHT']; 
+               $pb['PADDING-BOTTOM'] = $p['PADDING-BOTTOM']; 
+               $pb['PADDING-LEFT'] = $p['PADDING-LEFT']; 
+               $pb['BORDER-TOP'] = $p['BORDER-TOP']; 
+               $pb['BORDER-RIGHT'] = $p['BORDER-RIGHT']; 
+               $pb['BORDER-BOTTOM'] = $p['BORDER-BOTTOM']; 
+               $pb['BORDER-LEFT'] = $p['BORDER-LEFT']; 
+               $pb['BORDER-TOP-LEFT-RADIUS-H'] = $p['BORDER-TOP-LEFT-RADIUS-H'];
+               $pb['BORDER-TOP-LEFT-RADIUS-V'] = $p['BORDER-TOP-LEFT-RADIUS-V'];
+               $pb['BORDER-TOP-RIGHT-RADIUS-H'] = $p['BORDER-TOP-RIGHT-RADIUS-H'];
+               $pb['BORDER-TOP-RIGHT-RADIUS-V'] = $p['BORDER-TOP-RIGHT-RADIUS-V'];
+               $pb['BORDER-BOTTOM-LEFT-RADIUS-H'] = $p['BORDER-BOTTOM-LEFT-RADIUS-H'];
+               $pb['BORDER-BOTTOM-LEFT-RADIUS-V'] = $p['BORDER-BOTTOM-LEFT-RADIUS-V'];
+               $pb['BORDER-BOTTOM-RIGHT-RADIUS-H'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-H'];
+               $pb['BORDER-BOTTOM-RIGHT-RADIUS-V'] = $p['BORDER-BOTTOM-RIGHT-RADIUS-V'];
+               if (isset($p['BACKGROUND-COLOR'])) { $pb['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; }
+               if (isset($p['BOX-SHADOW'])) { $pb['BOX-SHADOW'] = $p['BOX-SHADOW']; }
+/*-- BACKGROUNDS --*/
+               if (isset($p['BACKGROUND-IMAGE'])) { $pb['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; }
+               if (isset($p['BACKGROUND-IMAGE-RESIZE'])) { $pb['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; }
+               if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $pb['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; }
+               if (isset($p['BACKGROUND-REPEAT'])) { $pb['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; }
+               if (isset($p['BACKGROUND-POSITION'])) { $pb['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; }
+               if (isset($p['BACKGROUND-GRADIENT'])) { $pb['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; }
+               if (isset($p['BACKGROUND-SIZE'])) { $pb['BACKGROUND-SIZE'] = $p['BACKGROUND-SIZE']; }   // mPDF 5.6.12
+               if (isset($p['BACKGROUND-ORIGIN'])) { $pb['BACKGROUND-ORIGIN'] = $p['BACKGROUND-ORIGIN']; }     // mPDF 5.6.12
+               if (isset($p['BACKGROUND-CLIP'])) { $pb['BACKGROUND-CLIP'] = $p['BACKGROUND-CLIP']; }   // mPDF 5.6.12
+
+/*-- END BACKGROUNDS --*/
+
+               $this->setCSS($pb,'BLOCK',$tag);
+
+               //================================================================
+               $bbox_br = $this->blk[1]['border_right']['w'];
+               $bbox_bl = $this->blk[1]['border_left']['w'];
+               $bbox_bt = $this->blk[1]['border_top']['w'];
+               $bbox_bb = $this->blk[1]['border_bottom']['w'];
+               $bbox_pr = $this->blk[1]['padding_right'];
+               $bbox_pl = $this->blk[1]['padding_left'];
+               $bbox_pt = $this->blk[1]['padding_top'];
+               $bbox_pb = $this->blk[1]['padding_bottom'];
+               $bbox_mr = $this->blk[1]['margin_right'];
+               if (strtolower($p['MARGIN-RIGHT'])=='auto') { $bbox_mr = 'auto'; }
+               $bbox_ml = $this->blk[1]['margin_left'];
+               if (strtolower($p['MARGIN-LEFT'])=='auto') { $bbox_ml = 'auto'; }
+               $bbox_mt = $this->blk[1]['margin_top'];
+               if (strtolower($p['MARGIN-TOP'])=='auto') { $bbox_mt = 'auto'; }
+               $bbox_mb = $this->blk[1]['margin_bottom'];
+               if (strtolower($p['MARGIN-BOTTOM'])=='auto') { $bbox_mb = 'auto'; }
+               if (isset($p['LEFT']) && strtolower($p['LEFT'])!='auto') { $bbox_left = $this->ConvertSize($p['LEFT'], $cont_w, $this->FontSize,false); }
+               else { $bbox_left = 'auto'; }
+               if (isset($p['TOP']) && strtolower($p['TOP'])!='auto') { $bbox_top = $this->ConvertSize($p['TOP'], $cont_h, $this->FontSize,false); }
+               else { $bbox_top = 'auto'; }
+               if (isset($p['RIGHT']) && strtolower($p['RIGHT'])!='auto') { $bbox_right = $this->ConvertSize($p['RIGHT'], $cont_w, $this->FontSize,false); }
+               else { $bbox_right = 'auto'; }
+               if (isset($p['BOTTOM']) && strtolower($p['BOTTOM'])!='auto') { $bbox_bottom = $this->ConvertSize($p['BOTTOM'], $cont_h, $this->FontSize,false); }
+               else { $bbox_bottom = 'auto'; }
+               if (isset($p['WIDTH']) && strtolower($p['WIDTH'])!='auto') { $inner_w = $this->ConvertSize($p['WIDTH'], $cont_w, $this->FontSize,false); }
+               else { $inner_w = 'auto'; }
+               if (isset($p['HEIGHT']) && strtolower($p['HEIGHT'])!='auto') { $inner_h = $this->ConvertSize($p['HEIGHT'], $cont_h, $this->FontSize,false); }
+               else { $inner_h = 'auto'; }
+
+               // If bottom or right pos are set and not left / top - save this to adjust rotated block later
+               if ($rotate) {
+                       if ($bbox_left === 'auto' && $bbox_right !== 'auto') { $rot_rpos = $bbox_right; }
+                       else { $rot_rpos = false; }
+                       if ($bbox_top === 'auto' && $bbox_bottom !== 'auto') { $rot_bpos = $bbox_bottom; }
+                       else { $rot_bpos = false; }
+               }
+
+               //================================================================
+               if ($checkinnerhtml=='' && $inner_h==='auto') { $inner_h = 0.0001; }
+               if ($checkinnerhtml=='' && $inner_w==='auto') { $inner_w = 2*$this->GetCharWidth('W',false); }
+               //================================================================
+               // Algorithm from CSS2.1  See http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-height
+               // mPD 5.3.14
+               // Special case (not CSS) if all not specified, centre vertically on page
+               if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto' && $bbox_mt==='auto' && $bbox_mb==='auto') {
+                       $bbox_top_orig = $bbox_top; 
+                       if ($bbox_mt==='auto') { $bbox_mt = 0; }
+                       if ($bbox_mb==='auto') { $bbox_mb = 0; }
+                       $bbox_top = $orig_y0 - $bbox_mt - $cont_y;
+                       // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
+               }
+               // mPD 5.3.14
+               else if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom==='auto') {
+                       $bbox_top_orig = $bbox_top = $orig_y0 - $cont_y; 
+                       if ($bbox_mt==='auto') { $bbox_mt = 0; }
+                       if ($bbox_mb==='auto') { $bbox_mb = 0; }
+                       // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
+               }
+               else if ($bbox_top!=='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') {
+                       if ($bbox_mt==='auto' && $bbox_mb==='auto') {
+                               $x = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom;
+                               $bbox_mt = $bbox_mb = ($x/2);
+                       }
+                       else if ($bbox_mt==='auto') {
+                               $bbox_mt = $cont_h - $bbox_top - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
+                       }
+                       else if ($bbox_mb==='auto') {
+                               $bbox_mb = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_bottom;
+                       }
+                       else {
+                               $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
+                       }
+               }
+               else {
+                 if ($bbox_mt==='auto') { $bbox_mt = 0; }
+                 if ($bbox_mb==='auto') { $bbox_mb = 0; }
+                 if ($bbox_top==='auto' && $inner_h==='auto' && $bbox_bottom!=='auto') {
+                       // solve for $bbox_top when content_h known - $inner_h=='auto' && $bbox_top =='auto'
+                 }
+                 else if ($bbox_top==='auto' && $bbox_bottom==='auto' && $inner_h!=='auto') {
+                       $bbox_top = $orig_y0 - $bbox_mt - $cont_y;
+                       $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
+                 }
+                 else if ($inner_h==='auto' && $bbox_bottom==='auto' && $bbox_top!=='auto') {
+                       // solve for $bbox_bottom when content_h known - $inner_h=='auto' && $bbox_bottom=='auto'
+                 }
+                 else if ($bbox_top==='auto' && $inner_h!=='auto' && $bbox_bottom!=='auto') {
+                       $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom;
+                 }
+                 else if ($inner_h==='auto' && $bbox_top!=='auto' && $bbox_bottom!=='auto') {
+                       $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mt - $bbox_bottom;
+                 }
+                 else if ($bbox_bottom==='auto' && $bbox_top!=='auto' && $inner_h!=='auto') {
+                       $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mt;
+                 }
+               }
+
+               // THEN DO SAME FOR WIDTH
+               // http://www.w3.org/TR/CSS21/visudet.html#abs-non-replaced-width
+               if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right==='auto') {
+                       if ($bbox_ml==='auto') { $bbox_ml = 0; }
+                       if ($bbox_mr==='auto') { $bbox_mr = 0; }
+                       // IF containing element RTL, should set $bbox_right
+                       $bbox_left = $orig_x0 - $bbox_ml - $cont_x;
+                       // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto'
+               }
+               else if ($bbox_left!=='auto' && $inner_w!=='auto' && $bbox_right!=='auto') {
+                       if ($bbox_ml==='auto' && $bbox_mr==='auto') {
+                               $x = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right;
+                               $bbox_ml = $bbox_mr = ($x/2);
+                       }
+                       else if ($bbox_ml==='auto') {
+                               $bbox_ml = $cont_w - $bbox_left - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right;
+                       }
+                       else if ($bbox_mr==='auto') {
+                               $bbox_mr = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_right;
+                       }
+                       else {
+                               $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
+                       }
+               }
+               else {
+                 if ($bbox_ml==='auto') { $bbox_ml = 0; }
+                 if ($bbox_mr==='auto') { $bbox_mr = 0; }
+                 if ($bbox_left==='auto' && $inner_w==='auto' && $bbox_right!=='auto') {
+                       // solve for $bbox_left when content_w known - $inner_w=='auto' && $bbox_left =='auto'
+                 }
+                 else if ($bbox_left==='auto' && $bbox_right==='auto' && $inner_w!=='auto') {
+                       // IF containing element RTL, should set $bbox_right
+                       $bbox_left = $orig_x0 - $bbox_ml - $cont_x;
+                       $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
+                 }
+                 else if ($inner_w==='auto' && $bbox_right==='auto' && $bbox_left!=='auto') {
+                       // solve for $bbox_right when content_w known - $inner_w=='auto' && $bbox_right=='auto'
+                 }
+                 else if ($bbox_left==='auto' && $inner_w!=='auto' && $bbox_right!=='auto') {
+                       $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
+                 }
+                 else if ($inner_w==='auto' && $bbox_left!=='auto' && $bbox_right!=='auto') {
+                       $inner_w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
+                 }
+                 else if ($bbox_right==='auto' && $bbox_left!=='auto' && $inner_w!=='auto') {
+                       $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
+                 }
+               }
+
+               //================================================================
+               //================================================================
+/*-- BACKGROUNDS --*/
+               if (isset($pb['BACKGROUND-IMAGE']) && $pb['BACKGROUND-IMAGE']) { 
+                       $ret = $this->SetBackground($pb, $this->blk[1]['inner_width']);
+                       if ($ret) { $this->blk[1]['background-image'] = $ret; }
+               }
+/*-- END BACKGROUNDS --*/
+
+               //================================================================
+               $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt;
+               $h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
+               $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl;
+               $w = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $bbox_pr - $bbox_br - $bbox_mr - $bbox_right;
+               // Set (temporary) values for x y w h to do first paint, if values are auto
+               if ($inner_h==='auto' && $bbox_top==='auto') {
+                       $y = $cont_y + $bbox_mt + $bbox_bt + $bbox_pt;
+                       $h = $cont_h - ($bbox_bottom + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb);
+               }
+               else if ($inner_h==='auto' && $bbox_bottom==='auto') {
+                       $y = $cont_y + $bbox_top + $bbox_mt + $bbox_bt + $bbox_pt;
+                       $h = $cont_h - ($bbox_top + $bbox_mt + $bbox_mb + $bbox_bt + $bbox_bb + $bbox_pt + $bbox_pb);
+               }
+               if ($inner_w==='auto' && $bbox_left==='auto') {
+                       $x = $cont_x + $bbox_ml + $bbox_bl + $bbox_pl;
+                       $w = $cont_w - ($bbox_right + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr);
+               }
+               else if ($inner_w==='auto' && $bbox_right==='auto') {
+                       $x = $cont_x + $bbox_left + $bbox_ml + $bbox_bl + $bbox_pl;
+                       $w = $cont_w - ($bbox_left + $bbox_ml + $bbox_mr + $bbox_bl + $bbox_br + $bbox_pl + $bbox_pr);
+               }
+               $bbox_y = $cont_y + $bbox_top + $bbox_mt;
+               $bbox_x = $cont_x + $bbox_left + $bbox_ml;
+               $saved_block1 = $this->blk[1];
+               unset($p);
+               unset($pb);
+               //================================================================
+               if ($inner_w==='auto') { // do a first write
+                       $this->lMargin=$x;
+                       $this->rMargin=$this->w - $w - $x;
+                       // SET POSITION & FONT VALUES
+                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+                       $this->pageoutput[$this->page]=array();
+                       $this->x = $x;
+                       $this->y = $y;
+                       $this->HTMLheaderPageLinks = array();
+                       $this->HTMLheaderPageAnnots = array();
+                       $this->HTMLheaderPageForms = array();
+                       $this->pageBackgrounds = array();
+                       $this->maxPosR = 0;
+                       $this->maxPosL = $this->w;      // For RTL
+                       $this->WriteHTML($html , 4);
+                       $inner_w = $this->maxPosR - $this->lMargin;
+                       if ($bbox_right==='auto') {
+                               $bbox_right = $cont_w - $bbox_left - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml;
+                       }
+                       else if ($bbox_left==='auto') {
+                               $bbox_left = $cont_w - $bbox_ml - $bbox_bl - $bbox_pl - $inner_w - $bbox_pr - $bbox_br - $bbox_ml - $bbox_right;
+                               $bbox_x = $cont_x + $bbox_left + $bbox_ml ;
+                               $inner_x = $bbox_x + $bbox_bl + $bbox_pl;
+                               $x = $inner_x;
+                       }
+                       $w = $inner_w;
+                       $bbox_y = $cont_y + $bbox_top + $bbox_mt;
+                       $bbox_x = $cont_x + $bbox_left + $bbox_ml;
+               }
+
+               if ($inner_h==='auto') { // do a first write
+                       $this->lMargin=$x;
+                       $this->rMargin=$this->w - $w - $x;
+                       // SET POSITION & FONT VALUES
+                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+                       $this->pageoutput[$this->page]=array();
+                       $this->x = $x;
+                       $this->y = $y;
+                       $this->HTMLheaderPageLinks = array();
+                       $this->HTMLheaderPageAnnots = array();
+                       $this->HTMLheaderPageForms = array();
+                       $this->pageBackgrounds = array();
+                       $this->WriteHTML($html , 4);
+                       $inner_h = $this->y - $y;
+                       if ($overflow!='hidden' && $overflow!='visible') {      // constrained
+                               if (($this->y + $bbox_pb + $bbox_bb) > ($cont_y + $cont_h)) {
+                                       $adj = ($this->y + $bbox_pb + $bbox_bb) - ($cont_y + $cont_h);
+                                       $inner_h -= $adj;
+                               }
+                       }
+                       if ($bbox_bottom==='auto' && $bbox_top_orig==='auto') {
+                               $bbox_bottom = $bbox_top = ($cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb)/2;
+                               if ($overflow!='hidden' && $overflow!='visible') {      // constrained
+                                       if ($bbox_top < 0) {
+                                               $bbox_top = 0;
+                                               $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
+                                       }
+                               }
+                               $bbox_y = $cont_y + $bbox_top + $bbox_mt;
+                               $inner_y = $bbox_y + $bbox_bt + $bbox_pt;
+                               $y = $inner_y;
+
+                       }
+                       else if ($bbox_bottom==='auto') {
+                               $bbox_bottom = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb;
+                       }
+                       else if ($bbox_top==='auto') {
+                               $bbox_top = $cont_h - $bbox_mt - $bbox_bt - $bbox_pt - $inner_h - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
+                               if ($overflow!='hidden' && $overflow!='visible') {      // constrained
+                                       if ($bbox_top < 0) {
+                                               $bbox_top = 0;
+                                               $inner_h = $cont_h - $bbox_top - $bbox_mt - $bbox_bt - $bbox_pt - $bbox_pb - $bbox_bb - $bbox_mb - $bbox_bottom;
+                                       }
+                               }
+                               $bbox_y = $cont_y + $bbox_top + $bbox_mt;
+                               $inner_y = $bbox_y + $bbox_bt + $bbox_pt;
+                               $y = $inner_y;
+                       }
+                       $h = $inner_h;
+                       $bbox_y = $cont_y + $bbox_top + $bbox_mt;
+                       $bbox_x = $cont_x + $bbox_left + $bbox_ml;
+               }
+               $inner_w = $w;
+               $inner_h = $h;
+
+       }
+       $this->lMargin=$x;
+       $this->rMargin=$this->w - $w - $x;
+       // SET POSITION & FONT VALUES
+       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+       $this->pageoutput[$this->page]=array();
+       $this->x = $x;
+       $this->y = $y;
+       $this->HTMLheaderPageLinks = array();
+       $this->HTMLheaderPageAnnots = array();
+       $this->HTMLheaderPageForms = array();
+       $this->pageBackgrounds = array();
+       $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
+       $actual_h = $this->y - $y;
+       $use_w = $w;
+       $use_h = $h;
+       $ratio = $actual_h / $use_w;
+
+       if ($overflow!='hidden' && $overflow!='visible') {
+               $target = $h/$w;
+               if (($ratio / $target ) > 1) {
+                       $nl = CEIL($actual_h / $this->lineheight);
+                       $l = $use_w * $nl;
+                       $est_w = sqrt(($l * $this->lineheight) / $target) * 0.8;
+                       $use_w += ($est_w - $use_w) - ($w/100);
+               }
+               $bpcstart = ($ratio / $target);
+               $bpcctr = 1;
+               while(($ratio / $target ) > 1) {
+
+                       if ($this->progressBar) { $this->UpdateProgressBar(4,intval(100/($ratio/$target)),('Auto-sizing fixed-position block: '.$bpcctr++)); }  // *PROGRESS-BAR*
+
+                       $this->x = $x;
+                       $this->y = $y;
+
+                       if (($ratio / $target) > 1.5 || ($ratio / $target) < 0.6) {
+                               $use_w += ($w/$this->incrementFPR1);
+                       }
+                       else if (($ratio / $target) > 1.2 || ($ratio / $target) < 0.85) {
+                               $use_w += ($w/$this->incrementFPR2);
+                       }
+                       else if (($ratio / $target) > 1.1 || ($ratio / $target) < 0.91) {
+                               $use_w += ($w/$this->incrementFPR3);
+                       }
+                       else {
+                               $use_w += ($w/$this->incrementFPR4);
+                       }
+
+                       $use_h = $use_w * $target ;
+                       $this->rMargin=$this->w - $use_w - $x;
+                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+                       $this->HTMLheaderPageLinks = array();
+                       $this->HTMLheaderPageAnnots = array();
+                       $this->HTMLheaderPageForms = array();
+                       $this->pageBackgrounds = array();
+                       $this->WriteHTML($html , 4);    // parameter 4 saves output to $this->headerbuffer
+                       $actual_h = $this->y - $y;
+                       $ratio = $actual_h / $use_w;
+               }
+               if ($this->progressBar) { $this->UpdateProgressBar(4,'100',' '); }      // *PROGRESS-BAR*
+       }
+       $shrink_f = $w/$use_w;
+
+       //================================================================
+
+       $this->pages[$this->page] .= '___BEFORE_BORDERS___';
+       $block_s = $this->PrintPageBackgrounds();       // Save to print later inside clipping path
+       $this->pageBackgrounds = array();
+
+       //================================================================
+
+       if ($rotate) {
+               $prerotw = $bbox_bl + $bbox_pl + $inner_w + $bbox_pr + $bbox_br;
+               $preroth = $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb;
+               $rot_start = " q\n";
+               if ($rotate == 90) { 
+                       if ($rot_rpos !== false) { $adjw = $prerotw; }  // width before rotation
+                       else { $adjw = $preroth; }      // height before rotation
+                       if ($rot_bpos !== false) { $adjh = -$prerotw + $preroth; }
+                       else { $adjh = 0; }
+               }
+               else { 
+                       if ($rot_rpos !== false) { $adjw = $prerotw - $preroth; }
+                       else { $adjw = 0; }
+                       if ($rot_bpos !== false) { $adjh = $preroth; }  // height before rotation
+                       else { $adjh = $prerotw; }      // width before rotation
+               }
+               $rot_start .= $this->transformTranslate($adjw, $adjh, true)."\n"; 
+               $rot_start .= $this->transformRotate($rotate, $bbox_x, $bbox_y, true)."\n";
+               $rot_end = " Q\n";
+       }
+       else {
+               $rot_start = '';
+               $rot_end = '';
+       }
+
+       //================================================================
+       if (!empty($bounding)) {
+               // WHEN HEIGHT // BOTTOM EDGE IS KNOWN and $this->y is set to the bottom
+               // Re-instate saved $this->blk[1]
+               $this->blk[1] = $saved_block1;
+
+               // These are only needed when painting border/background
+               $this->blk[1]['width'] = $bbox_w = $cont_w - $bbox_left - $bbox_ml - $bbox_mr - $bbox_right;
+               $this->blk[1]['x0'] = $bbox_x;
+               $this->blk[1]['y0'] = $bbox_y;
+               $this->blk[1]['startpage'] = $this->page;
+               $this->blk[1]['y1'] = $bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ;
+               $this->_out($rot_start);        // mPDF 5.0
+               $this->PaintDivBB('',0,1);      // Prints borders and sets backgrounds in $this->pageBackgrounds 
+               $this->_out($rot_end);
+       }
+
+       $s = $this->PrintPageBackgrounds();
+       $s = $rot_start.$s.$rot_end;
+       $this->pages[$this->page] = preg_replace('/___BEFORE_BORDERS___/', "\n".$s."\n", $this->pages[$this->page]);
+       $this->pageBackgrounds = array();
+
+       $this->_out($rot_start);
+
+       // Clipping Output
+       if ($overflow=='hidden') {
+               //Bounding rectangle to clip
+               $clip_y1 = $this->y;
+               if (!empty($bounding) && ($this->y + $bbox_pb + $bbox_bb) > ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb )) {
+                       $clip_y1 = ($bbox_y + $bbox_bt + $bbox_pt + $inner_h + $bbox_pb + $bbox_bb ) - ($bbox_pb + $bbox_bb);
+               }
+               //$op = 'W* n'; // Clipping
+               $op = 'W n';    // Clipping alternative mode
+               $this->_out("q");
+               $ch = $clip_y1 - $y;
+               $this->_out(sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op));
+               if (!empty($block_s)) {
+                       $tmp = "q\n".sprintf('%.3F %.3F %.3F %.3F re %s',$x*_MPDFK,($this->h-$y)*_MPDFK,$w*_MPDFK,-$ch*_MPDFK,$op);
+                       $tmp .= "\n".$block_s."\nQ";
+                       $block_s = $tmp ;
+               }
+       }
+
+
+       if (!empty($block_s)) {
+               if ($shrink_f != 1) {   // i.e. autofit has resized the box
+                       $tmp = "q\n".$this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y, true);
+                       $tmp .= "\n".$block_s."\nQ";
+                       $block_s = $tmp ;
+               }
+               $this->_out($block_s);
+       }
+
+
+
+       if ($shrink_f != 1) {   // i.e. autofit has resized the box
+               $this->StartTransform();
+               $this->transformScale(($shrink_f*100),($shrink_f*100), $x, $y);
+       }
+
+       $this->_out($this->headerbuffer);
+
+       if ($shrink_f != 1) {   // i.e. autofit has resized the box
+               $this->StopTransform();
+       }
+
+       if ($overflow=='hidden') {
+               //End clipping
+               $this->_out("Q");
+       }
+
+       $this->_out($rot_end);
+
+
+       // Page Links
+       foreach($this->HTMLheaderPageLinks AS $lk) {
+               if ($rotate) {
+                       $tmp = $lk[2];  // Switch h - w
+                       $lk[2] = $lk[3];
+                       $lk[3] = $tmp;
+
+                       $lx1 = (($lk[0]/_MPDFK));
+                       $ly1 = (($this->h-($lk[1]/_MPDFK)));
+                       if ($rotate == 90) {
+                               $adjx = -($lx1-$bbox_x) + ($preroth - ($ly1-$bbox_y));
+                               $adjy = -($ly1-$bbox_y) + ($lx1-$bbox_x);
+                               $lk[2] = -$lk[2];
+                       }
+                       else if ($rotate == -90) {
+                               $adjx = -($lx1-$bbox_x) + ($ly1-$bbox_y);
+                               $adjy = -($ly1-$bbox_y) - ($lx1-$bbox_x) + $prerotw;
+                               $lk[3] = -$lk[3];
+                       }
+                       if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; }
+                       if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; }
+                       $lx1 += $adjx;
+                       $ly1 += $adjy;
+
+                       $lk[0] = $lx1*_MPDFK;
+                       $lk[1] = ($this->h-$ly1)*_MPDFK;
+               }
+               if ($shrink_f != 1) {   // i.e. autofit has resized the box
+                       $lx1 = (($lk[0]/_MPDFK)-$x);
+                       $lx2 = $x + ($lx1 * $shrink_f);
+                       $lk[0] = $lx2*_MPDFK;
+                       $ly1 = (($this->h-($lk[1]/_MPDFK))-$y);
+                       $ly2 = $y + ($ly1 * $shrink_f);
+                       $lk[1] = ($this->h-$ly2)*_MPDFK;
+                       $lk[2] *= $shrink_f;    // width
+                       $lk[3] *= $shrink_f;    // height
+               }
+               $this->PageLinks[$this->page][]=$lk;
+       }
+
+       foreach($this->HTMLheaderPageForms AS $n=>$f) {
+               if ($shrink_f != 1) {   // i.e. autofit has resized the box
+                       $f['x'] = $x + (($f['x'] -$x) * $shrink_f);
+                       $f['y'] = $y + (($f['y'] -$y) * $shrink_f);
+                       $f['w'] *= $shrink_f;
+                       $f['h'] *= $shrink_f;
+                       $f['style']['fontsize'] *= $shrink_f;
+               }
+               $this->form->forms[$f['n']] = $f;
+       }
+       // Page Annotations
+       foreach($this->HTMLheaderPageAnnots AS $lk) {
+               if ($rotate) {
+                       if ($rotate == 90) {
+                               $adjx = -($lk['x']-$bbox_x) + ($preroth - ($lk['y']-$bbox_y));
+                               $adjy = -($lk['y']-$bbox_y) + ($lk['x']-$bbox_x);
+                       }
+                       else if ($rotate == -90) {
+                               $adjx = -($lk['x']-$bbox_x) + ($lk['y']-$bbox_y);
+                               $adjy = -($lk['y']-$bbox_y) - ($lk['x']-$bbox_x) + $prerotw;
+                       }
+                       if ($rot_rpos !== false) { $adjx += $prerotw - $preroth; }
+                       if ($rot_bpos !== false) { $adjy += $preroth - $prerotw; }
+                       $lk['x'] += $adjx;
+                       $lk['y'] += $adjy;
+               }
+               if ($shrink_f != 1) {   // i.e. autofit has resized the box
+                       $lk['x'] = $x + (($lk['x']-$x) * $shrink_f);
+                       $lk['y'] = $y + (($lk['y']-$y) * $shrink_f);
+               }
+               $this->PageAnnots[$this->page][]=$lk;
+       }
+
+       // Restore
+       $this->headerbuffer = '';
+       $this->HTMLheaderPageLinks = array();
+       $this->HTMLheaderPageAnnots = array();
+       $this->HTMLheaderPageForms = array();
+       $this->pageBackgrounds = $save_bgs;
+       $this->writingHTMLheader = false;
+
+       $this->writingHTMLfooter = false;
+       $this->fullImageHeight = false;
+       $this->ResetMargins();
+       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+       $this->SetXY($save_x,$save_y) ; 
+       $this->title2annots = $save_annots;     // *ANNOTATIONS*
+       $this->InFooter = false;        // turns back on autopagebreaks
+       $this->pageoutput[$this->page]=array();
+       $this->pageoutput[$this->page]['Font']='';
+/*-- COLUMNS --*/
+       if ($save_cols) {
+               $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
+       }
+/*-- END COLUMNS --*/
+}
+/*-- END CSS-POSITION --*/
+
+
+
+function initialiseBlock(&$blk) {
+       $blk['margin_top'] = 0;
+       $blk['margin_left'] = 0;
+       $blk['margin_bottom'] = 0;
+       $blk['margin_right'] = 0;
+       $blk['padding_top'] = 0;
+       $blk['padding_left'] = 0;
+       $blk['padding_bottom'] = 0;
+       $blk['padding_right'] = 0;
+       $blk['border_top']['w'] = 0;
+       $blk['border_left']['w'] = 0;
+       $blk['border_bottom']['w'] = 0;
+       $blk['border_right']['w'] = 0;
+       $blk['hide'] = false; 
+       $blk['outer_left_margin'] = 0; 
+       $blk['outer_right_margin'] = 0; 
+       $blk['cascadeCSS'] = array(); 
+       $blk['block-align'] = false; 
+       $blk['bgcolor'] = false; 
+       $blk['page_break_after_avoid'] = false; 
+       $blk['keep_block_together'] = false; 
+       $blk['float'] = false; 
+       $blk['line_height'] = ''; 
+       $blk['margin_collapse'] = false; 
+}
+
+
+function border_details($bd) {
+       $prop = preg_split('/\s+/',trim($bd));
+
+       if (isset($this->blk[$this->blklvl]['inner_width'])) { $refw = $this->blk[$this->blklvl]['inner_width']; }
+       else if (isset($this->blk[$this->blklvl-1]['inner_width'])) { $refw = $this->blk[$this->blklvl-1]['inner_width']; }
+       else { $refw = $this->w; }
+       if ( count($prop) == 1 ) { 
+               $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false);
+               if ($bsize > 0) {
+                       return array('s' => 1, 'w' => $bsize, 'c' => $this->ConvertColor(0), 'style'=>'solid');
+               }
+               else { return array('w' => 0, 's' => 0); }
+       }
+
+       else if (count($prop) == 2 ) { 
+               // 1px solid 
+               if (in_array($prop[1],$this->borderstyles) || $prop[1] == 'none' || $prop[1] == 'hidden' ) { $prop[2] = ''; }
+               // solid #000000 
+               else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { $prop[0] = ''; $prop[1] = $prop[0]; $prop[2] = $prop[1]; }
+               // 1px #000000 
+               else { $prop[1] = ''; $prop[2] = $prop[1]; }
+       }
+       else if ( count($prop) == 3 ) {
+               // Change #000000 1px solid to 1px solid #000000 (proper)
+               if (substr($prop[0],0,1) == '#') { $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $prop[2]; $prop[2] = $tmp; }
+               // Change solid #000000 1px to 1px solid #000000 (proper)
+               else if (substr($prop[0],1,1) == '#') { $tmp = $prop[1]; $prop[0] = $prop[2]; $prop[1] = $prop[0]; $prop[2] = $tmp; }
+               // Change solid 1px #000000 to 1px solid #000000 (proper)
+               else if (in_array($prop[0],$this->borderstyles) || $prop[0] == 'none' || $prop[0] == 'hidden' ) { 
+                       $tmp = $prop[0]; $prop[0] = $prop[1]; $prop[1] = $tmp; 
+               }
+       }
+       else { return array(); } 
+       // Size
+       $bsize = $this->ConvertSize($prop[0],$refw,$this->FontSize,false);
+       //color
+       $coul = $this->ConvertColor($prop[2]);  // returns array
+       // Style
+       $prop[1] = strtolower($prop[1]);
+       if (in_array($prop[1],$this->borderstyles) && $bsize > 0) { $on = 1; } 
+       else if ($prop[1] == 'hidden') { $on = 1; $bsize = 0; $coul = ''; } 
+       else if ($prop[1] == 'none') { $on = 0; $bsize = 0; $coul = ''; } 
+       else { $on = 0; $bsize = 0; $coul = ''; $prop[1] = ''; }
+       return array('s' => $on, 'w' => $bsize, 'c' => $coul, 'style'=> $prop[1] );
+}
+
+
+
+/*-- END HTML-CSS --*/
+
+
+// Return either a number (factor) - based on current set fontsize (if % or em) - or exact lineheight (with 'mm' after it)
+function fixLineheight($v) {
+       $lh = false;
+       if (preg_match('/^[0-9\.,]*$/',$v) && $v >= 0) { return ($v + 0); }
+       else if (strtoupper($v) == 'NORMAL') { 
+               return $this->normalLineheight; 
+       }
+       else { 
+               $tlh = $this->ConvertSize($v,$this->FontSize,$this->FontSize,true); 
+               if ($tlh) { return ($tlh.'mm'); }
+       }
+       return $this->normalLineheight;
+}
+
+
+/*-- BORDER-RADIUS --*/
+function _borderPadding($a, $b, &$px, &$py) {
+       // $px and py are padding long axis (x) and short axis (y)
+       $added = 0;     // extra padding
+
+       $x = $a-$px;
+       $y = $b-$py;
+       // Check if Falls within ellipse of border radius
+       if ( ( (($x+$added)*($x+$added))/($a*$a) + (($y+$added)*($y+$added))/($b*$b) ) <=1 ) { return false; }
+
+       $t = atan2($y,$x);
+
+       $newx = $b / sqrt((($b*$b)/($a*$a)) + ( tan($t) * tan($t) )  );
+       $newy = $a / sqrt((($a*$a)/($b*$b)) + ( (1/tan($t)) * (1/tan($t)) )  );
+       $px = max($px, $a - $newx + $added);
+       $py = max($py, $b - $newy + $added);
+}
+/*-- END BORDER-RADIUS --*/
+
+
+
+/*-- HTML-CSS --*/
+
+
+/*-- CSS-PAGE --*/
+function SetPagedMediaCSS($name='', $first, $oddEven) {
+       if ($oddEven == 'E') { 
+               if ($this->directionality=='rtl') { $side = 'R'; }
+               else { $side = 'L'; }
+       }
+       else  { 
+               if ($this->directionality=='rtl') { $side = 'L'; }
+               else { $side = 'R'; }
+       }
+       $name = strtoupper($name);
+       $p = array();
+       $p['SIZE'] = 'AUTO';
+
+       // Uses mPDF original margins as default
+       $p['MARGIN-RIGHT'] = strval($this->orig_rMargin).'mm';
+       $p['MARGIN-LEFT'] = strval($this->orig_lMargin).'mm';
+       $p['MARGIN-TOP'] = strval($this->orig_tMargin).'mm';
+       $p['MARGIN-BOTTOM'] = strval($this->orig_bMargin).'mm';
+       $p['MARGIN-HEADER'] = strval($this->orig_hMargin).'mm';
+       $p['MARGIN-FOOTER'] = strval($this->orig_fMargin).'mm';
+
+       // Basic page + selector
+       if (isset($this->cssmgr->CSS['@PAGE'])) { $zp = $this->cssmgr->CSS['@PAGE']; }
+       else { $zp = array(); }
+       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
+
+       if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') { 
+               $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']);
+       }
+       if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') { 
+               $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']);
+       }
+       if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') { 
+               $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']);
+       }
+       if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') { 
+               $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']);
+       }
+
+       // If right/Odd page
+       if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT']) && $side=='R') { 
+               $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>RIGHT']; 
+       }
+       else { $zp = array(); }
+       if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
+       if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
+       // Disallow margin-left or -right on :LEFT or :RIGHT
+       if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
+       if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
+       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
+
+       // If left/Even page
+       if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT']) && $side=='L') {  
+               $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>LEFT']; 
+       }
+       else { $zp = array(); }
+       if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
+       if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
+       // Disallow margin-left or -right on :LEFT or :RIGHT
+       if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
+       if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
+       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp);  }
+
+       // If first page
+       if (isset($this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>PSEUDO>>FIRST']; } 
+       else { $zp = array(); }
+       if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
+       if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
+       if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
+
+       // If named page
+       if ($name) {
+               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name])) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name]; } 
+               else { $zp = array(); }
+               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
+
+               if (isset($p['EVEN-HEADER-NAME']) && $oddEven=='E') { 
+                       $p['HEADER'] = $p['EVEN-HEADER-NAME']; unset($p['EVEN-HEADER-NAME']);
+               }
+               if (isset($p['ODD-HEADER-NAME']) && $oddEven!='E') { 
+                       $p['HEADER'] = $p['ODD-HEADER-NAME']; unset($p['ODD-HEADER-NAME']);
+               }
+               if (isset($p['EVEN-FOOTER-NAME']) && $oddEven=='E') { 
+                       $p['FOOTER'] = $p['EVEN-FOOTER-NAME']; unset($p['EVEN-FOOTER-NAME']);
+               }
+               if (isset($p['ODD-FOOTER-NAME']) && $oddEven!='E') { 
+                       $p['FOOTER'] = $p['ODD-FOOTER-NAME']; unset($p['ODD-FOOTER-NAME']);
+               }
+
+               // If named right/Odd page
+               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']) && $side=='R') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>RIGHT']; } 
+               else { $zp = array(); }
+               if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
+               if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
+               // Disallow margin-left or -right on :LEFT or :RIGHT
+               if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
+               if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
+               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
+
+               // If named left/Even page
+               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']) && $side=='L') { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>LEFT']; } 
+               else { $zp = array(); }
+               if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
+               if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); } 
+               // Disallow margin-left or -right on :LEFT or :RIGHT
+               if (isset($zp['MARGIN-LEFT'])) { unset($zp['MARGIN-LEFT']); } 
+               if (isset($zp['MARGIN-RIGHT'])) { unset($zp['MARGIN-RIGHT']); } 
+               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
+
+               // If named first page
+               if (isset($this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']) && $first) { $zp = $this->cssmgr->CSS['@PAGE>>NAMED>>'.$name.'>>PSEUDO>>FIRST']; } 
+               else { $zp = array(); }
+               if (isset($zp['SIZE'])) { unset($zp['SIZE']); } 
+               if (isset($zp['SHEET-SIZE'])) { unset($zp['SHEET-SIZE']); }
+               if (is_array($zp) && !empty($zp)) { $p = array_merge($p,$zp); }
+       }
+
+       $orientation = $mgl = $mgr = $mgt = $mgb = $mgh = $mgf = '';
+       $header = $footer = '';
+       $resetpagenum = $pagenumstyle = $suppress = '';
+       $marks = ''; 
+       $bg = array();
+       $newformat = '';
+
+       if (isset($p['SHEET-SIZE']) && is_array($p['SHEET-SIZE'])) {
+               $newformat = $p['SHEET-SIZE'];
+               if ($newformat[0] > $newformat[1]) { // landscape
+                       $newformat = array_reverse($newformat);
+                       $p['ORIENTATION'] = 'L';
+               }
+               else { $p['ORIENTATION'] = 'P'; }
+               $this->_setPageSize($newformat, $p['ORIENTATION']);
+       }
+
+       if (isset($p['SIZE']) && is_array($p['SIZE']) && !$newformat) {
+               if ($p['SIZE']['W'] > $p['SIZE']['H']) { $p['ORIENTATION'] = 'L'; }
+               else { $p['ORIENTATION'] = 'P'; }
+       }
+       if (is_array($p['SIZE'])) {
+               if ($p['SIZE']['W'] > $this->fw) { $p['SIZE']['W'] = $this->fw; }       // mPD 4.2 use fw not fPt
+               if ($p['SIZE']['H'] > $this->fh) { $p['SIZE']['H'] = $this->fh; }
+               if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) { 
+                       $outer_width_LR = ($this->fw - $p['SIZE']['W'])/2;
+                       $outer_width_TB = ($this->fh - $p['SIZE']['H'])/2;
+               }
+               else {
+                       $outer_width_LR = ($this->fh - $p['SIZE']['W'])/2;
+                       $outer_width_TB = ($this->fw - $p['SIZE']['H'])/2;
+               }
+               $pgw = $p['SIZE']['W'];
+               $pgh = $p['SIZE']['H'];
+       }
+       else {  // AUTO LANDSCAPE PORTRAIT
+               $outer_width_LR = 0;
+               $outer_width_TB = 0;
+               if (!$newformat) {
+                       if (strtoupper($p['SIZE']) == 'AUTO') { $p['ORIENTATION']=$this->DefOrientation; }
+                       else if (strtoupper($p['SIZE']) == 'LANDSCAPE') { $p['ORIENTATION']='L'; }
+                       else { $p['ORIENTATION']='P'; }
+               }
+               if (($p['ORIENTATION']==$this->DefOrientation && !$newformat) || ($newformat && $p['ORIENTATION']=='P')) { 
+                       $pgw = $this->fw;
+                       $pgh = $this->fh;
+               }
+               else {
+                       $pgw = $this->fh;
+                       $pgh = $this->fw;
+               }
+       }
+
+       if (isset($p['HEADER']) && $p['HEADER']) { $header = $p['HEADER']; }
+       if (isset($p['FOOTER']) && $p['FOOTER']) { $footer = $p['FOOTER']; }
+       if (isset($p['RESETPAGENUM']) && $p['RESETPAGENUM']) { $resetpagenum = $p['RESETPAGENUM']; }
+       if (isset($p['PAGENUMSTYLE']) && $p['PAGENUMSTYLE']) { $pagenumstyle = $p['PAGENUMSTYLE']; }
+       if (isset($p['SUPPRESS']) && $p['SUPPRESS']) { $suppress = $p['SUPPRESS']; }
+
+       if (preg_match('/cross/i', $p['MARKS']) && preg_match('/crop/i', $p['MARKS'])) { $marks = 'CROPCROSS'; }
+       else if (strtoupper($p['MARKS']) == 'CROP') { $marks = 'CROP'; }
+       else if (strtoupper($p['MARKS']) == 'CROSS') { $marks = 'CROSS'; }
+
+
+       if (isset($p['BACKGROUND-COLOR']) && $p['BACKGROUND-COLOR']) { $bg['BACKGROUND-COLOR'] = $p['BACKGROUND-COLOR']; }
+/*-- BACKGROUNDS --*/
+       if (isset($p['BACKGROUND-GRADIENT']) && $p['BACKGROUND-GRADIENT']) { $bg['BACKGROUND-GRADIENT'] = $p['BACKGROUND-GRADIENT']; }
+       if (isset($p['BACKGROUND-IMAGE']) && $p['BACKGROUND-IMAGE']) { $bg['BACKGROUND-IMAGE'] = $p['BACKGROUND-IMAGE']; }
+       if (isset($p['BACKGROUND-REPEAT']) && $p['BACKGROUND-REPEAT']) { $bg['BACKGROUND-REPEAT'] = $p['BACKGROUND-REPEAT']; }
+       if (isset($p['BACKGROUND-POSITION']) && $p['BACKGROUND-POSITION']) { $bg['BACKGROUND-POSITION'] = $p['BACKGROUND-POSITION']; }
+       if (isset($p['BACKGROUND-IMAGE-RESIZE']) && $p['BACKGROUND-IMAGE-RESIZE']) { $bg['BACKGROUND-IMAGE-RESIZE'] = $p['BACKGROUND-IMAGE-RESIZE']; }
+       if (isset($p['BACKGROUND-IMAGE-OPACITY'])) { $bg['BACKGROUND-IMAGE-OPACITY'] = $p['BACKGROUND-IMAGE-OPACITY']; }
+/*-- END BACKGROUNDS --*/
+
+       if (isset($p['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($p['MARGIN-LEFT'],$pgw) + $outer_width_LR; }
+       if (isset($p['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($p['MARGIN-RIGHT'],$pgw) + $outer_width_LR; }
+       if (isset($p['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($p['MARGIN-BOTTOM'],$pgh) + $outer_width_TB; }
+       if (isset($p['MARGIN-TOP'])) { $mgt = $this->ConvertSize($p['MARGIN-TOP'],$pgh) + $outer_width_TB; }
+       if (isset($p['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($p['MARGIN-HEADER'],$pgh) + $outer_width_TB; }
+       if (isset($p['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($p['MARGIN-FOOTER'],$pgh) + $outer_width_TB; }
+
+       if (isset($p['ORIENTATION']) && $p['ORIENTATION']) { $orientation = $p['ORIENTATION']; }
+       $this->page_box['outer_width_LR'] = $outer_width_LR;    // Used in MARKS:crop etc.
+       $this->page_box['outer_width_TB'] = $outer_width_TB;
+       return array($orientation,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$header,$footer,$bg,$resetpagenum,$pagenumstyle,$suppress,$marks,$newformat);
+}
+/*-- END CSS-PAGE --*/
+
+
+
+/*-- CSS-FLOAT --*/
+// Added mPDF 3.0 Float DIV - CLEAR
+function ClearFloats($clear, $blklvl=0) {
+       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($blklvl,true);
+       $end = $currpos = ($this->page*1000 + $this->y);
+       if ($clear == 'BOTH' && ($l_exists || $r_exists)) {
+               $this->pageoutput[$this->page] = array();
+               $end = max($l_max, $r_max, $currpos);
+       }
+       else if ($clear == 'RIGHT' && $r_exists) {
+               $this->pageoutput[$this->page] = array();
+               $end = max($r_max, $currpos);
+       }
+       else if ($clear == 'LEFT' && $l_exists ) {
+               $this->pageoutput[$this->page] = array();
+               $end = max($l_max, $currpos);
+       }
+       else { return; }
+       $old_page = $this->page;
+       $new_page = intval($end/1000);
+       if ($old_page != $new_page) {
+               $s = $this->PrintPageBackgrounds();
+               // Writes after the marker so not overwritten later by page background etc.
+               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+               $this->pageBackgrounds = array();
+               $this->page = $new_page;
+       }
+       $this->ResetMargins();
+       $this->pageoutput[$this->page] = array();
+       $this->y = (($end*1000) % 1000000)/1000;        // mod changes operands to integers before processing
+}
+
+
+// Added mPDF 3.0 Float DIV
+function GetFloatDivInfo($blklvl=0,$clear=false) {
+       // If blklvl specified, only returns floats at that level - for ClearFloats
+       $l_exists = false;
+       $r_exists = false;
+       $l_max = 0;
+       $r_max = 0;
+       $l_width = 0;
+       $r_width = 0;
+       if (count($this->floatDivs)) {
+         $currpos = ($this->page*1000 + $this->y);
+         foreach($this->floatDivs AS $f) {
+           if (($clear && $f['blockContext'] == $this->blk[$blklvl]['blockContext']) || (!$clear && $currpos >= $f['startpos'] && $currpos < ($f['endpos']-0.001) && $f['blklvl'] > $blklvl && $f['blockContext'] == $this->blk[$blklvl]['blockContext'])) {
+               if ($f['side']=='L') {
+                       $l_exists= true;
+                       $l_max = max($l_max, $f['endpos']);
+                       $l_width = max($l_width , $f['w']);
+               }
+               if ($f['side']=='R') {
+                       $r_exists= true;
+                       $r_max = max($r_max, $f['endpos']);
+                       $r_width = max($r_width , $f['w']);
+               }
+           }
+         }
+       }
+       return array($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width);
+}
+/*-- END CSS-FLOAT --*/
+
+
+
+
+function OpenTag($tag,$attr)
+{
+
+  // What this gets: < $tag $attr['WIDTH']="90px" > does not get content here </closeTag here>
+  // Correct tags where HTML specifies optional end tags,
+  // and/or does not allow nesting e.g. P inside P, or 
+  if ($this->allow_html_optional_endtags) {
+    if (($tag == 'P' || $tag == 'DIV' || $tag == 'H1' || $tag == 'H2' || $tag == 'H3' || $tag == 'H4' || $tag == 'H5' || $tag == 'H6' || $tag == 'UL' || $tag == 'OL' || $tag == 'TABLE' || $tag=='PRE' || $tag=='FORM' || $tag=='ADDRESS' || $tag=='BLOCKQUOTE' || $tag=='CENTER' || $tag=='DL' || $tag == 'HR' ) && $this->lastoptionaltag == 'P') { $this->CloseTag($this->lastoptionaltag ); }
+    if ($tag == 'DD' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); }
+    if ($tag == 'DD' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); }
+    if ($tag == 'DT' && $this->lastoptionaltag == 'DD') { $this->CloseTag($this->lastoptionaltag ); }
+    if ($tag == 'DT' && $this->lastoptionaltag == 'DT') { $this->CloseTag($this->lastoptionaltag ); }
+    if ($tag == 'LI' && $this->lastoptionaltag == 'LI') { $this->CloseTag($this->lastoptionaltag ); }
+    if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag ); }        // *TABLES*
+    if (($tag == 'TD' || $tag == 'TH') && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag ); }        // *TABLES*
+    if ($tag == 'TR' && $this->lastoptionaltag == 'TR') { $this->CloseTag($this->lastoptionaltag ); }  // *TABLES*
+    if ($tag == 'TR' && $this->lastoptionaltag == 'TD') { $this->CloseTag($this->lastoptionaltag );  $this->CloseTag('TR'); $this->CloseTag('THEAD'); }        // *TABLES*
+    if ($tag == 'TR' && $this->lastoptionaltag == 'TH') { $this->CloseTag($this->lastoptionaltag );  $this->CloseTag('TR'); $this->CloseTag('THEAD'); }        // *TABLES*
+    if ($tag == 'OPTION' && $this->lastoptionaltag == 'OPTION') { $this->CloseTag($this->lastoptionaltag ); }
+  }
+
+  $align = array('left'=>'L','center'=>'C','right'=>'R','top'=>'T','text-top'=>'TT','middle'=>'M','baseline'=>'BS','bottom'=>'B','text-bottom'=>'TB','justify'=>'J');
+
+  $this->ignorefollowingspaces=false;
+
+  //Opening tag
+  switch($tag){
+
+     case 'DOTTAB': 
+       $objattr = array();
+       $objattr['type'] = 'dottab';
+       $dots=str_repeat('.', 3)."  ";  // minimum number of dots
+       $objattr['width'] = $this->GetStringWidth($dots);
+       $objattr['margin_top'] = 0;
+       $objattr['margin_bottom'] = 0;
+       $objattr['margin_left'] = 0;
+       $objattr['margin_right'] = 0;
+       $objattr['height'] = 0;
+       $objattr['colorarray'] = $this->colorarray;
+       $objattr['border_top']['w'] = 0;
+       $objattr['border_bottom']['w'] = 0;
+       $objattr['border_left']['w'] = 0;
+       $objattr['border_right']['w'] = 0;
+
+       // mPDF 5.6.19
+       $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);     // mPDF 5.6.33
+       if (isset($properties['OUTDENT'])) {    // mPDF 5.6.33
+               $objattr['outdent'] = $this->ConvertSize($properties['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       else if (isset($attr['OUTDENT'])) {
+               $objattr['outdent'] = $this->ConvertSize($attr['OUTDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       else { $objattr['outdent'] = 0; }
+
+       $objattr['fontfamily'] = $this->FontFamily;
+       $objattr['fontsize'] = $this->FontSizePt;
+
+       $e = "\xbb\xa4\xactype=dottab,objattr=".serialize($objattr)."\xbb\xa4\xac";
+/*-- TABLES --*/
+       // Output it to buffers
+       if ($this->tableLevel) {
+               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
+               }
+               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+               }
+               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
+               $this->_saveCellTextBuffer($e);
+       }
+       else {
+/*-- END TABLES --*/
+               $this->_saveTextBuffer($e);
+       }       // *TABLES*
+       break;
+
+     case 'PAGEHEADER': 
+     case 'PAGEFOOTER':
+       $this->ignorefollowingspaces = true; 
+       if ($attr['NAME']) { $pname = $attr['NAME']; }
+       else { $pname = '_default'; }
+
+               if ($tag=='PAGEHEADER') { $p = &$this->pageheaders[$pname]; }
+               else { $p = &$this->pagefooters[$pname]; }
+
+               $p['L']=array();
+               $p['C']=array();
+               $p['R']=array();
+               $p['L']['font-style'] = ''; 
+               $p['C']['font-style'] = ''; 
+               $p['R']['font-style'] = ''; 
+
+               if (isset($attr['CONTENT-LEFT'])) {
+                       $p['L']['content'] = $attr['CONTENT-LEFT'];
+               }
+               if (isset($attr['CONTENT-CENTER'])) {
+                       $p['C']['content'] = $attr['CONTENT-CENTER'];
+               }
+               if (isset($attr['CONTENT-RIGHT'])) {
+                       $p['R']['content'] = $attr['CONTENT-RIGHT'];
+               }
+
+               if (isset($attr['HEADER-STYLE']) || isset($attr['FOOTER-STYLE'])) {     // font-family,size,weight,style,color
+                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE']); }
+                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE']); }
+                       if (isset($properties['FONT-FAMILY'])) { 
+                               $p['L']['font-family'] = $properties['FONT-FAMILY']; 
+                               $p['C']['font-family'] = $properties['FONT-FAMILY']; 
+                               $p['R']['font-family'] = $properties['FONT-FAMILY']; 
+                       }
+                       if (isset($properties['FONT-SIZE'])) { 
+                               $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; 
+                               $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; 
+                               $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; 
+                       }
+                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') {
+                               $p['L']['font-style'] = 'B'; 
+                               $p['C']['font-style'] = 'B'; 
+                               $p['R']['font-style'] = 'B'; 
+                       }
+                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { 
+                               $p['L']['font-style'] .= 'I'; 
+                               $p['C']['font-style'] .= 'I'; 
+                               $p['R']['font-style'] .= 'I'; 
+                       }
+                       if (isset($properties['COLOR'])) { 
+                               $p['L']['color'] = $properties['COLOR']; 
+                               $p['C']['color'] = $properties['COLOR']; 
+                               $p['R']['color'] = $properties['COLOR']; 
+                       }
+               }
+               if (isset($attr['HEADER-STYLE-LEFT']) || isset($attr['FOOTER-STYLE-LEFT'])) {
+                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-LEFT']); }
+                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-LEFT']); }
+                       if (isset($properties['FONT-FAMILY'])) { $p['L']['font-family'] = $properties['FONT-FAMILY']; }
+                       if (isset($properties['FONT-SIZE'])) { $p['L']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
+                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['L']['font-style'] ='B'; }
+                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['L']['font-style'] .='I'; }
+                       if (isset($properties['COLOR'])) { $p['L']['color'] = $properties['COLOR']; }
+               }
+               if (isset($attr['HEADER-STYLE-CENTER']) || isset($attr['FOOTER-STYLE-CENTER'])) {
+                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-CENTER']); }
+                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-CENTER']); }
+                       if (isset($properties['FONT-FAMILY'])) { $p['C']['font-family'] = $properties['FONT-FAMILY']; }
+                       if (isset($properties['FONT-SIZE'])) { $p['C']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
+                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['C']['font-style'] = 'B'; }
+                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['C']['font-style'] .= 'I'; }
+                       if (isset($properties['COLOR'])) { $p['C']['color'] = $properties['COLOR']; }
+               }
+               if (isset($attr['HEADER-STYLE-RIGHT']) || isset($attr['FOOTER-STYLE-RIGHT'])) {
+                       if ($tag=='PAGEHEADER') { $properties = $this->cssmgr->readInlineCSS($attr['HEADER-STYLE-RIGHT']); }
+                       else { $properties = $this->cssmgr->readInlineCSS($attr['FOOTER-STYLE-RIGHT']); }
+                       if (isset($properties['FONT-FAMILY'])) { $p['R']['font-family'] = $properties['FONT-FAMILY']; }
+                       if (isset($properties['FONT-SIZE'])) { $p['R']['font-size'] = $this->ConvertSize($properties['FONT-SIZE']) * _MPDFK; }
+                       if (isset($properties['FONT-WEIGHT']) && $properties['FONT-WEIGHT']=='bold') { $p['R']['font-style'] = 'B'; }
+                       if (isset($properties['FONT-STYLE']) && $properties['FONT-STYLE']=='italic') { $p['R']['font-style'] .= 'I'; }
+                       if (isset($properties['COLOR'])) { $p['R']['color'] = $properties['COLOR']; }
+               }
+               if (isset($attr['LINE']) && $attr['LINE']) {    // 0|1|on|off
+                       if ($attr['LINE']=='1' || strtoupper($attr['LINE'])=='ON') { $lineset=1; }
+                       else { $lineset=0; }
+                       $p['line'] = $lineset;
+               }
+       break;
+
+
+/*-- HTMLHEADERS-FOOTERS --*/
+     case 'SETHTMLPAGEHEADER': 
+     case 'SETHTMLPAGEFOOTER':
+       $this->ignorefollowingspaces = true; 
+       if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; }
+       else { $pname = '_default'; }
+       if (isset($attr['PAGE']) && $attr['PAGE']) {    // O|odd|even|E|ALL|[blank]
+               if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; }
+               else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; }
+               else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; }
+               else { $side='odd'; }
+       }
+       else { $side='odd'; }
+       if (isset($attr['VALUE']) && $attr['VALUE']) {  // -1|1|on|off
+               if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; }
+               else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; }
+               else { $set=1; }
+       }
+       else { $set=1; }
+       if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETHTMLPAGEHEADER') { $write = 1; }
+       else { $write = 0; }
+       if ($side=='odd' || $side=='both') {
+               if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'O',$write); }
+               else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'O'); }
+               else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','O'); }
+               else { $this->SetHTMLFooter('','O'); }
+       }
+       if ($side=='even' || $side=='both') {
+               if ($set && $tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader($this->pageHTMLheaders[$pname],'E',$write); }
+               else if ($set && $tag=='SETHTMLPAGEFOOTER') { $this->SetHTMLFooter($this->pageHTMLfooters[$pname],'E'); }
+               else if ($tag=='SETHTMLPAGEHEADER') { $this->SetHTMLHeader('','E'); }
+               else { $this->SetHTMLFooter('','E'); }
+       }
+       break;
+/*-- END HTMLHEADERS-FOOTERS --*/
+
+     case 'SETPAGEHEADER': 
+     case 'SETPAGEFOOTER':
+       $this->ignorefollowingspaces = true; 
+       if (isset($attr['NAME']) && $attr['NAME']) { $pname = $attr['NAME']; }
+       else { $pname = '_default'; }
+       if (isset($attr['PAGE']) && $attr['PAGE']) {    // O|odd|even|E|ALL|[blank]
+               if (strtoupper($attr['PAGE'])=='O' || strtoupper($attr['PAGE'])=='ODD') { $side='odd'; }
+               else if (strtoupper($attr['PAGE'])=='E' || strtoupper($attr['PAGE'])=='EVEN') { $side='even'; }
+               else if (strtoupper($attr['PAGE'])=='ALL') { $side='both'; }
+               else { $side='odd'; }
+       }
+       else { $side='odd'; }
+       if (isset($attr['VALUE']) && $attr['VALUE']) {  // -1|1|on|off
+               if ($attr['VALUE']=='1' || strtoupper($attr['VALUE'])=='ON') { $set=1; }
+               else if ($attr['VALUE']=='-1' || strtoupper($attr['VALUE'])=='OFF') { $set=0; }
+               else { $set=1; }
+       }
+       else { $set=1; }
+       if ($side=='odd' || $side=='both') {
+               if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = $this->pageheaders[$pname]; }
+               else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['odd'] = $this->pagefooters[$pname]; }
+               else if ($tag=='SETPAGEHEADER') { $this->headerDetails['odd'] = array(); }
+               else { $this->footerDetails['odd'] = array(); }
+               if (!$this->mirrorMargins || ($this->page)%2!=0) {      // ODD
+                       if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['odd'],$this->HTMLHeader); }
+                       if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['odd'],$this->HTMLFooter); }
+               }
+       }
+       if ($side=='even' || $side=='both') {
+               if ($set && $tag=='SETPAGEHEADER') { $this->headerDetails['even'] = $this->pageheaders[$pname]; }
+               else if ($set && $tag=='SETPAGEFOOTER') { $this->footerDetails['even'] = $this->pagefooters[$pname]; }
+               else if ($tag=='SETPAGEHEADER') { $this->headerDetails['even'] = array(); }
+               else { $this->footerDetails['even'] = array(); }
+               if ($this->mirrorMargins && ($this->page)%2==0) {       // EVEN
+                       if ($tag=='SETPAGEHEADER') { $this->_setAutoHeaderHeight($this->headerDetails['even'],$this->HTMLHeaderE); }
+                       if ($tag=='SETPAGEFOOTER') { $this->_setAutoFooterHeight($this->footerDetails['even'],$this->HTMLFooterE); }
+               }
+       }
+       if (isset($attr['SHOW-THIS-PAGE']) && $attr['SHOW-THIS-PAGE'] && $tag=='SETPAGEHEADER') {
+               $this->Header();
+       }
+       break;
+
+
+/*-- TOC --*/
+     case 'TOC': //added custom-tag - set Marker for insertion later of ToC
+       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
+       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
+       $this->tocontents->openTagTOC($attr);
+       break;
+
+
+
+     case 'TOCPAGEBREAK': // custom-tag - set Marker for insertion later of ToC AND adds PAGEBREAK
+       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
+       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
+       list($isbreak,$toc_id) = $this->tocontents->openTagTOCPAGEBREAK($attr);
+       if ($isbreak) break;
+       // No break - continues as PAGEBREAK...
+/*-- END TOC --*/
+
+
+    case 'PAGE_BREAK': //custom-tag
+    case 'PAGEBREAK': //custom-tag
+    case 'NEWPAGE': //custom-tag
+    case 'FORMFEED': //custom-tag
+
+       $save_blklvl = $this->blklvl;
+       $save_blk = $this->blk;
+       $save_silp = $this->saveInlineProperties();
+       $save_spanlvl = $this->spanlvl;
+       $save_ilp = $this->InlineProperties;
+
+       // Close any open block tags
+       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+       if(!empty($this->textbuffer))  {        //Output previously buffered content
+               $this->printbuffer($this->textbuffer);
+               $this->textbuffer=array(); 
+      }
+       $this->ignorefollowingspaces = true;
+       $save_cols = false;
+/*-- COLUMNS --*/
+       if ($this->ColActive) {
+               $save_cols = true;
+               $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
+               $this->SetColumns(0);
+       }
+/*-- END COLUMNS --*/
+
+
+       if (isset($attr['SHEET-SIZE']) && $tag != 'FORMFEED' && !$this->restoreBlockPageBreaks) { 
+               // Convert to same types as accepted in initial mPDF() A4, A4-L, or array(w,h)
+               $prop = preg_split('/\s+/',trim($attr['SHEET-SIZE']));
+               if (count($prop) == 2 ) {
+                       $newformat = array($this->ConvertSize($prop[0]), $this->ConvertSize($prop[1]));
+               }
+               else { $newformat = $attr['SHEET-SIZE']; }
+       }
+       else { $newformat = ''; }
+
+       $mgr = $mgl = $mgt = $mgb = $mgh = $mgf = '';
+       if (isset($attr['MARGIN-RIGHT'])) { $mgr = $this->ConvertSize($attr['MARGIN-RIGHT'],$this->w,$this->FontSize,false); }
+       if (isset($attr['MARGIN-LEFT'])) { $mgl = $this->ConvertSize($attr['MARGIN-LEFT'],$this->w,$this->FontSize,false); }
+       if (isset($attr['MARGIN-TOP'])) { $mgt = $this->ConvertSize($attr['MARGIN-TOP'],$this->w,$this->FontSize,false); }
+       if (isset($attr['MARGIN-BOTTOM'])) { $mgb = $this->ConvertSize($attr['MARGIN-BOTTOM'],$this->w,$this->FontSize,false); }
+       if (isset($attr['MARGIN-HEADER'])) { $mgh = $this->ConvertSize($attr['MARGIN-HEADER'],$this->w,$this->FontSize,false); }
+       if (isset($attr['MARGIN-FOOTER'])) { $mgf = $this->ConvertSize($attr['MARGIN-FOOTER'],$this->w,$this->FontSize,false); }
+       $ohname = $ehname = $ofname = $efname = '';
+       if (isset($attr['ODD-HEADER-NAME'])) { $ohname = $attr['ODD-HEADER-NAME']; }
+       if (isset($attr['EVEN-HEADER-NAME'])) { $ehname = $attr['EVEN-HEADER-NAME']; }
+       if (isset($attr['ODD-FOOTER-NAME'])) { $ofname = $attr['ODD-FOOTER-NAME']; }
+       if (isset($attr['EVEN-FOOTER-NAME'])) { $efname = $attr['EVEN-FOOTER-NAME']; }
+       $ohvalue = $ehvalue = $ofvalue = $efvalue = 0;
+       if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='1' || strtoupper($attr['ODD-HEADER-VALUE'])=='ON')) { $ohvalue = 1; }
+       else if (isset($attr['ODD-HEADER-VALUE']) && ($attr['ODD-HEADER-VALUE']=='-1' || strtoupper($attr['ODD-HEADER-VALUE'])=='OFF')) { $ohvalue = -1; }
+       if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='ON')) { $ehvalue = 1; }
+       else if (isset($attr['EVEN-HEADER-VALUE']) && ($attr['EVEN-HEADER-VALUE']=='-1' || strtoupper($attr['EVEN-HEADER-VALUE'])=='OFF')) { $ehvalue = -1; }
+       if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='ON')) { $ofvalue = 1; }
+       else if (isset($attr['ODD-FOOTER-VALUE']) && ($attr['ODD-FOOTER-VALUE']=='-1' || strtoupper($attr['ODD-FOOTER-VALUE'])=='OFF')) { $ofvalue = -1; }
+       if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='ON')) { $efvalue = 1; }
+       else if (isset($attr['EVEN-FOOTER-VALUE']) && ($attr['EVEN-FOOTER-VALUE']=='-1' || strtoupper($attr['EVEN-FOOTER-VALUE'])=='OFF')) { $efvalue = -1; }
+
+       if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='L' || strtoupper($attr['ORIENTATION'])=='LANDSCAPE')) { $orient = 'L'; }
+       else if (isset($attr['ORIENTATION']) && (strtoupper($attr['ORIENTATION'])=='P' || strtoupper($attr['ORIENTATION'])=='PORTRAIT')) { $orient = 'P'; }
+       else { $orient = $this->CurOrientation; }
+
+       if (isset($attr['PAGE-SELECTOR']) && $attr['PAGE-SELECTOR']) { $pagesel = $attr['PAGE-SELECTOR']; }
+       else { $pagesel = ''; }
+
+       $resetpagenum = '';
+       $pagenumstyle = '';
+       $suppress = '';
+       if (isset($attr['RESETPAGENUM'])) { $resetpagenum = $attr['RESETPAGENUM']; }
+       if (isset($attr['PAGENUMSTYLE'])) { $pagenumstyle = $attr['PAGENUMSTYLE']; }
+       if (isset($attr['SUPPRESS'])) { $suppress = $attr['SUPPRESS']; }
+
+       if ($tag == 'TOCPAGEBREAK') { $type = 'NEXT-ODD'; }
+       else if(isset($attr['TYPE'])) { $type = strtoupper($attr['TYPE']); }
+       else { $type = ''; }
+
+       if ($type == 'E' || $type == 'EVEN') { $this->AddPage($orient,'E', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
+       else if ($type == 'O' || $type == 'ODD') { $this->AddPage($orient,'O', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
+       else if ($type == 'NEXT-ODD') { $this->AddPage($orient,'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
+       else if ($type == 'NEXT-EVEN') { $this->AddPage($orient,'NEXT-EVEN', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
+       else { $this->AddPage($orient,'', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$newformat); }
+
+/*-- TOC --*/
+       if ($tag == 'TOCPAGEBREAK') { 
+               if ($toc_id) { $this->tocontents->m_TOC[$toc_id]['TOCmark'] = $this->page; }
+               else { $this->tocontents->TOCmark = $this->page; }
+       }
+/*-- END TOC --*/
+
+/*-- COLUMNS --*/
+       if ($save_cols) {
+               // Restore columns
+               $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
+       }
+/*-- END COLUMNS --*/
+       if (($tag == 'FORMFEED' || $this->restoreBlockPagebreaks) && !$this->tableLevel && !$this->listlvl) {
+               $this->blk = $save_blk;
+               // Re-open block tags
+               $t = $this->blk[0]['tag'];
+               $a = $this->blk[0]['attr'];
+               $this->blklvl = 0; 
+               for ($b=0; $b<=$save_blklvl;$b++) {
+                       $tc = $t;
+                       $ac = $a;
+                       $t = $this->blk[$b+1]['tag'];
+                       $a = $this->blk[$b+1]['attr'];
+                       unset($this->blk[$b+1]);
+                       $this->OpenTag($tc,$ac); 
+               }
+               $this->spanlvl = $save_spanlvl;
+               $this->InlineProperties = $save_ilp;
+               $this->restoreInlineProperties($save_silp);
+       }
+
+       break;
+
+
+/*-- TOC --*/
+     case 'TOCENTRY':
+       if (isset($attr['CONTENT']) && $attr['CONTENT']) {
+               $objattr = array();
+               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
+               $objattr['type'] = 'toc';
+               if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['toclevel'] = $attr['LEVEL']; } else { $objattr['toclevel'] = 0; }
+               if (isset($attr['NAME']) && $attr['NAME']) { $objattr['toc_id'] = $attr['NAME']; } else { $objattr['toc_id'] = 0; }
+               $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
+               if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
+               else  { // *TABLES*
+                       $this->textbuffer[] = array($e);
+               }       // *TABLES*
+       }
+       break;
+/*-- END TOC --*/
+
+/*-- INDEX --*/
+     case 'INDEXENTRY':
+       if (isset($attr['CONTENT']) && $attr['CONTENT']) {
+               if (isset($attr['XREF']) && $attr['XREF']) {
+                       $this->IndexEntry(htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES),$attr['XREF']);
+                       break;
+               }
+               $objattr = array();
+               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
+               $objattr['type'] = 'indexentry';
+               $e = "\xbb\xa4\xactype=indexentry,objattr=".serialize($objattr)."\xbb\xa4\xac";
+               if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
+               else  { // *TABLES*
+                       $this->textbuffer[] = array($e);
+               }       // *TABLES*
+       }
+       break;
+
+     
+     case 'INDEXINSERT':
+       if (isset($attr['FONT-SIZE'])) { $reffontsize = $attr['FONT-SIZE']; } else { $reffontsize = ''; }
+       if (isset($attr['LINE-SPACING']) && $attr['LINE-SPACING']) { $linespacing = $attr['LINE-SPACING']; } else { $linespacing = ''; }
+       if (isset($attr['DIV-FONT-SIZE']) && $attr['DIV-FONT-SIZE']) { $divlettfontsize = $attr['DIV-FONT-SIZE']; } else { $divlettfontsize = ''; }
+       if (isset($attr['FONT']) && $attr['FONT']) { $reffont = $attr['FONT']; } else { $reffont = ''; }
+       if (isset($attr['DIV-FONT']) && $attr['DIV-FONT']) { $divlettfont = $attr['DIV-FONT']; } else { $divlettfont = ''; }
+       if (isset($attr['COLS']) && $attr['COLS']) { $cols = $attr['COLS']; } else { $cols = 1; }
+       if (isset($attr['OFFSET']) && $attr['OFFSET']) { $offset = $attr['OFFSET']; } else { $offset = 3; }
+       if (isset($attr['GAP']) && $attr['GAP']) { $gap = $attr['GAP']; } else { $gap = 5; }
+
+       if (isset($attr['USEDIVLETTERS']) && (strtoupper($attr['USEDIVLETTERS'])=='OFF' || $attr['USEDIVLETTERS']==-1 || $attr['USEDIVLETTERS']==='0')) { $usedivletters = 0; }
+       else { $usedivletters = 1; }
+
+       if (isset($attr['LINKS']) && (strtoupper($attr['LINKS'])=='ON' || $attr['LINKS']==1)) { $links = true; }
+       else { $links = false; }
+       $this->CreateIndex($cols, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont,$divlettfont, $links);
+       break;
+/*-- END INDEX --*/
+
+/*-- WATERMARK --*/
+     
+     case 'WATERMARKTEXT':
+       if (isset($attr['CONTENT']) && $attr['CONTENT']) { $txt = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES); } else { $txt = ''; }
+       if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; }
+       $this->SetWatermarkText($txt, $alpha);
+       break;
+
+     
+     case 'WATERMARKIMAGE':
+       if (isset($attr['SRC'])) { $src = $attr['SRC']; } else { $src = ''; }
+       if (isset($attr['ALPHA']) && $attr['ALPHA']>0) { $alpha = $attr['ALPHA']; } else { $alpha = -1; }
+       if (isset($attr['SIZE']) && $attr['SIZE']) { 
+               $size = $attr['SIZE']; 
+               if (strpos($size,',')) { $size = explode(',',$size); }
+       } 
+       else { $size = 'D'; }
+       if (isset($attr['POS']) && $attr['POS']) { 
+               $pos = $attr['POS']; 
+               if (strpos($pos,',')) { $pos = explode(',',$pos); }
+       } 
+       else { $pos = 'P'; }
+       $this->SetWatermarkImage($src, $alpha, $size, $pos);
+       break;
+/*-- END WATERMARK --*/
+
+/*-- BOOKMARKS --*/
+     case 'BOOKMARK':
+       if (isset($attr['CONTENT'])) {
+               $objattr = array();
+               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
+               $objattr['type'] = 'bookmark';
+               if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; }
+               $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac";
+               if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
+               else  { // *TABLES*
+                       $this->textbuffer[] = array($e);
+               }       // *TABLES*
+       }
+       break;
+/*-- END BOOKMARKS --*/
+
+/*-- ANNOTATIONS --*/
+     case 'ANNOTATION':
+
+       //if (isset($attr['CONTENT']) && !$this->writingHTMLheader && !$this->writingHTMLfooter) {      // Stops annotations in FixedPos
+       if (isset($attr['CONTENT'])) {
+               $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+               $objattr['CONTENT'] = htmlspecialchars_decode($attr['CONTENT'],ENT_QUOTES);
+               $objattr['type'] = 'annot';
+               $objattr['POPUP'] = ''; 
+       }
+       else { break; }
+       if (isset($attr['POS-X'])) { $objattr['POS-X'] = $attr['POS-X']; } else { $objattr['POS-X'] = 0; }
+       if (isset($attr['POS-Y'])) { $objattr['POS-Y'] = $attr['POS-Y']; } else { $objattr['POS-Y'] = 0; }
+       if (isset($attr['ICON'])) { $objattr['ICON'] = $attr['ICON']; } else { $objattr['ICON'] = 'Note'; }
+       if (isset($attr['AUTHOR'])) { $objattr['AUTHOR'] = $attr['AUTHOR']; } 
+       else if (isset($attr['TITLE'])) { $objattr['AUTHOR'] = $attr['TITLE']; } else  { $objattr['AUTHOR'] = ''; }
+       if (isset($attr['FILE'])) { $objattr['FILE'] = $attr['FILE']; } else  { $objattr['FILE'] = ''; }
+       if (isset($attr['SUBJECT'])) { $objattr['SUBJECT'] = $attr['SUBJECT']; } else  { $objattr['SUBJECT'] = ''; }
+       if (isset($attr['OPACITY']) && $attr['OPACITY']>0 && $attr['OPACITY']<=1) { $objattr['OPACITY'] = $attr['OPACITY']; } 
+       else if ($this->annotMargin) { $objattr['OPACITY'] = 1; }
+       else { $objattr['OPACITY'] = $this->annotOpacity; }
+       if (isset($attr['COLOR'])) { 
+               $cor = $this->ConvertColor($attr['COLOR']);
+               if ($cor) {  $objattr['COLOR'] = $cor; }
+               else  { $objattr['COLOR'] = $this->ConvertColor('yellow'); }
+       } 
+       else  { $objattr['COLOR'] = $this->ConvertColor('yellow'); }
+
+       if (isset($attr['POPUP']) && !empty($attr['POPUP'])) { 
+               $pop = preg_split('/\s+/',trim($attr['POPUP']));
+               if (count($pop)>1) { $objattr['POPUP'] = $pop; }
+               else { $objattr['POPUP'] = true; }
+       } 
+       $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
+       if($this->tableLevel) { $this->cell[$this->row][$this->col]['textbuffer'][] = array($e); }      // *TABLES*
+       else  { // *TABLES*
+               $this->textbuffer[] = array($e);
+       }       // *TABLES*
+       break;
+/*-- END ANNOTATIONS --*/
+
+
+/*-- COLUMNS --*/
+    case 'COLUMNS': //added custom-tag
+       if (isset($attr['COLUMN-COUNT']) && ($attr['COLUMN-COUNT'] || $attr['COLUMN-COUNT']==='0')) {
+               // Close any open block tags
+               for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+               if(!empty($this->textbuffer))  {        //Output previously buffered content
+                       $this->printbuffer($this->textbuffer);
+               $this->textbuffer=array(); 
+       }
+
+               if (isset($attr['VALIGN']) && $attr['VALIGN']) { 
+                       if ($attr['VALIGN'] == 'J') { $valign = 'J'; }
+                       else { $valign = $align[$attr['VALIGN']]; }
+               }
+               else { $valign = ''; }
+               if (isset($attr['COLUMN-GAP']) && $attr['COLUMN-GAP']) { $this->SetColumns($attr['COLUMN-COUNT'],$valign,$attr['COLUMN-GAP']); }
+               else { $this->SetColumns($attr['COLUMN-COUNT'],$valign); }
+       }
+       $this->ignorefollowingspaces = true;
+       break;
+
+    case 'COLUMN_BREAK': //custom-tag
+    case 'COLUMNBREAK': //custom-tag
+    case 'NEWCOLUMN': //custom-tag
+       $this->ignorefollowingspaces = true;
+       $this->NewColumn();
+       $this->ColumnAdjust = false;    // disables all column height adjustment for the page.
+       break;
+
+/*-- END COLUMNS --*/
+
+
+    case 'BDO':
+       // $this->biDirectional = true;
+       break;
+
+
+    case 'TTZ':
+       $this->ttz = true;
+       $this->InlineProperties[$tag] = $this->saveInlineProperties();
+       $this->setCSS(array('FONT-FAMILY'=>'czapfdingbats','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE');
+       break;
+
+    case 'TTS':
+       $this->tts = true;
+       $this->InlineProperties[$tag] = $this->saveInlineProperties();
+       $this->setCSS(array('FONT-FAMILY'=>'csymbol','FONT-WEIGHT'=>'normal','FONT-STYLE'=>'normal'),'INLINE');
+       break;
+
+    case 'TTA':
+       $this->tta = true;
+       $this->InlineProperties[$tag] = $this->saveInlineProperties();
+
+       if (in_array($this->FontFamily,$this->mono_fonts)) {
+               $this->setCSS(array('FONT-FAMILY'=>'ccourier'),'INLINE');
+       }
+       else if (in_array($this->FontFamily,$this->serif_fonts)) { 
+               $this->setCSS(array('FONT-FAMILY'=>'ctimes'),'INLINE');
+       }
+       else {
+               $this->setCSS(array('FONT-FAMILY'=>'chelvetica'),'INLINE');
+       }
+       break;
+
+
+
+    // INLINE PHRASES OR STYLES
+    case 'SUB':
+    case 'SUP':
+    case 'ACRONYM':
+    case 'BIG':
+    case 'SMALL':
+    case 'INS':
+    case 'S':
+    case 'STRIKE':
+    case 'DEL':
+    case 'STRONG':
+    case 'CITE':
+    case 'Q':
+    case 'EM':
+    case 'B':
+    case 'I':
+    case 'U':
+    case 'SAMP':
+    case 'CODE':
+    case 'KBD':
+    case 'TT':
+    case 'VAR':
+    case 'FONT':
+    case 'MARK':       // mPDF 5.5.09
+    case 'TIME':
+
+    case 'SPAN':
+/*-- ANNOTATIONS --*/
+       if ($this->title2annots && isset($attr['TITLE'])) {
+               $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+
+               $objattr['CONTENT'] = $attr['TITLE'];
+               $objattr['type'] = 'annot';
+               $objattr['POS-X'] = 0;
+               $objattr['POS-Y'] = 0;
+               $objattr['ICON'] = 'Comment';
+               $objattr['AUTHOR'] = '';
+               $objattr['SUBJECT'] = '';
+               $objattr['OPACITY'] = $this->annotOpacity; 
+               $objattr['COLOR'] = $this->ConvertColor('yellow'); 
+               $annot = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
+       }
+/*-- END ANNOTATIONS --*/
+
+       if ($tag == 'SPAN') {
+               $this->spanlvl++;
+               $this->InlineProperties['SPAN'][$this->spanlvl] = $this->saveInlineProperties();
+               if (isset($annot)) { $this->InlineAnnots[$tag][$this->spanlvl] = $annot; }      // *ANNOTATIONS*
+       }
+       else { 
+               if (!isset($this->InlineProperties[$tag])) $this->InlineProperties[$tag] = $this->saveInlineProperties(); // mPDF 5.4.13
+               if (isset($annot)) { $this->InlineAnnots[$tag] = $annot; }      // *ANNOTATIONS*
+       }
+       $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);
+       if (!empty($properties)) $this->setCSS($properties,'INLINE');
+       break;
+
+
+    case 'A':
+       if (isset($attr['NAME']) and $attr['NAME'] != '') { 
+               $e = '';
+/*-- BOOKMARKS --*/
+               if ($this->anchor2Bookmark) { 
+                       $objattr = array();
+                       $objattr['CONTENT'] = htmlspecialchars_decode($attr['NAME'],ENT_QUOTES);
+                       $objattr['type'] = 'bookmark';
+                       if (isset($attr['LEVEL']) && $attr['LEVEL']) { $objattr['bklevel'] = $attr['LEVEL']; } else { $objattr['bklevel'] = 0; }
+                       $e = "\xbb\xa4\xactype=bookmark,objattr=".serialize($objattr)."\xbb\xa4\xac";
+               }
+/*-- END BOOKMARKS --*/
+               if($this->tableLevel) { // *TABLES*
+                       $this->_saveCellTextBuffer($e, '', $attr['NAME']);      // *TABLES*
+               }       // *TABLES*
+               else  { // *TABLES*
+                       $this->_saveTextBuffer($e, '', $attr['NAME']);  //an internal link (adds a space for recognition)
+               }       // *TABLES*
+       }
+       if (isset($attr['HREF'])) { 
+               $this->InlineProperties['A'] = $this->saveInlineProperties();
+               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+               if (!empty($properties)) $this->setCSS($properties,'INLINE');
+               $this->HREF=htmlspecialchars_decode(urldecode($attr['HREF']));
+       }
+       break;
+
+    case 'LEGEND':     // mPDF 5.4.18
+               $this->InlineProperties['LEGEND'] = $this->saveInlineProperties();
+               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+               if (!empty($properties)) $this->setCSS($properties,'INLINE');
+       break;
+
+
+
+    case 'PROGRESS':   // mPDF 5.5.09
+    case 'METER':      // mPDF 5.5.09
+       $this->inMeter = true;  // mPDF 5.5.09
+
+       if (isset($attr['MAX']) && $attr['MAX']) { $max = $attr['MAX']; }
+       else { $max = 1; }
+       if (isset($attr['MIN']) && $attr['MIN'] && $tag=='METER') { $min = $attr['MIN']; }
+       else { $min = 0; }
+       if ($max < $min) { $max = $min; }
+
+       if (isset($attr['VALUE']) && ($attr['VALUE'] || $attr['VALUE']==='0')) {
+               $value = $attr['VALUE']; 
+               if ($value < $min) { $value = $min; }
+               else if ($value > $max) { $value = $max; }
+       }
+       else { $value = ''; }
+
+       if (isset($attr['LOW']) && $attr['LOW']) { $low = $attr['LOW']; }
+       else { $low = $min; }
+       if ($low < $min) { $low = $min; }
+       else if ($low > $max) { $low = $max; }
+       if (isset($attr['HIGH']) && $attr['HIGH']) { $high = $attr['HIGH']; }
+       else { $high = $max; }
+       if ($high < $low) { $high = $low; }
+       else if ($high > $max) { $high = $max; }
+       if (isset($attr['OPTIMUM']) && $attr['OPTIMUM']) { $optimum = $attr['OPTIMUM']; }
+       else { $optimum = $min + (($max-$min)/2); }
+       if ($optimum < $min) { $optimum = $min; }
+       else if ($optimum > $max) { $optimum = $max; }
+       if (isset($attr['TYPE']) && $attr['TYPE']) { $type = $attr['TYPE']; }
+       else { $type = ''; }
+       $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['padding_top'] = 0;
+               $objattr['padding_bottom'] = 0;
+               $objattr['padding_left'] = 0;
+               $objattr['padding_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+
+               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
+                       return; 
+               }
+               $objattr['visibility'] = 'visible'; 
+               if (isset($properties['VISIBILITY'])) {
+                       $v = strtolower($properties['VISIBILITY']);
+                       if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { 
+                               $objattr['visibility'] = $v; 
+                       }
+               }
+
+               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
+               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
+               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
+               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
+
+               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
+               $w = 0;
+               $h = 0;
+               if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+
+               if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+
+               if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
+               if ($this->HREF) {
+                       if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
+                               $href = $this->HREF;
+                               while(array_key_exists($href,$this->internallink)) $href="#".$href;
+                               $this->internallink[$href] = $this->AddLink();
+                               $objattr['link'] = $this->internallink[$href];
+                       }
+                       else { $objattr['link'] = $this->HREF; }
+               }
+               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
+               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
+
+               // Image file
+               if (!class_exists('meter', false)) { 
+                       include(_MPDF_PATH.'classes/meter.php'); 
+               }
+               $this->meter = new meter();
+               $svg = $this->meter->makeSVG(strtolower($tag), $type, $value, $max, $min, $optimum, $low, $high);
+               //Save to local file
+               $srcpath= _MPDF_TEMP_PATH.'_tempSVG'.RAND(1,10000).'_'.strtolower($tag).'.svg';
+               file_put_contents($srcpath, $svg);
+               $orig_srcpath = $srcpath;
+               $this->GetFullPath($srcpath); 
+
+               $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
+               if(!$info) {
+                       $info = $this->_getImage($this->noImageFile);
+                       if ($info) { 
+                               $srcpath = $this->noImageFile; 
+                               $w = ($info['w'] * (25.4/$this->dpi)); 
+                               $h = ($info['h'] * (25.4/$this->dpi));
+                       }
+               }
+               if(!$info) break;
+
+               $objattr['file'] = $srcpath;
+               //Default width and height calculation if needed
+               if($w==0 and $h==0) {
+                       // SVG units are pixels
+                       $w = $this->FontSize/(10/_MPDFK) * abs($info['w'])/_MPDFK;      // mPDF 5.5.21
+                       $h = $this->FontSize/(10/_MPDFK) * abs($info['h'])/_MPDFK;
+               }
+               // IF WIDTH OR HEIGHT SPECIFIED
+               if($w==0)  $w=abs($h*$info['w']/$info['h']); 
+               if($h==0)       $h=abs($w*$info['h']/$info['w']);
+
+               // Resize to maximum dimensions of page
+               $maxWidth = $this->blk[$this->blklvl]['inner_width'];
+               $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ;
+               if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
+               if ($w + $extrawidth > $maxWidth ) {
+                       $w = $maxWidth - $extrawidth;
+                       $h=abs($w*$info['h']/$info['w']);
+               }
+
+               if ($h + $extraheight > $maxHeight ) {
+                       $h = $maxHeight - $extraheight;
+                       $w=abs($h*$info['w']/$info['h']);
+               }
+               $objattr['type'] = 'image';
+               $objattr['itype'] = $info['type'];
+
+               $objattr['orig_h'] = $info['h'];
+               $objattr['orig_w'] = $info['w'];
+               $objattr['wmf_x'] = $info['x'];
+               $objattr['wmf_y'] = $info['y'];
+               $objattr['height'] = $h + $extraheight;
+               $objattr['width'] = $w + $extrawidth;
+               $objattr['image_height'] = $h;
+               $objattr['image_width'] = $w;
+               $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
+               $properties = array();
+               if ($this->tableLevel) {
+                       $this->_saveCellTextBuffer($e, $this->HREF);
+                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
+               }
+               else {
+                       $this->_saveTextBuffer($e, $this->HREF);
+               }
+
+       break;
+
+
+    case 'BR':
+       // Added mPDF 3.0 Float DIV - CLEAR
+       if (isset($attr['STYLE'])) {
+               $properties = $this->cssmgr->readInlineCSS($attr['STYLE']);
+               if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); }        // *CSS-FLOAT*
+       }
+
+
+/*-- TABLES --*/
+       if($this->tableLevel) {
+          
+          if ($this->blockjustfinished || $this->listjustfinished) {
+               $this->_saveCellTextBuffer("\n");
+          }
+
+               $this->_saveCellTextBuffer("\n");
+               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+               }
+               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];  
+               }
+               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
+       }
+       else  {
+/*-- END TABLES --*/
+               if (count($this->textbuffer)) {
+                       $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/ $/','',$this->textbuffer[count($this->textbuffer)-1][0]);
+               }
+               $this->_saveTextBuffer("\n");
+       }       // *TABLES*
+       $this->ignorefollowingspaces = true; 
+       $this->blockjustfinished=false;
+       $this->listjustfinished=false;
+
+       $this->linebreakjustfinished=true;
+       break;
+
+
+       // *********** BLOCKS  ********************
+
+
+    case 'PRE':
+       $this->ispre=true;      // ADDED - Prevents left trim of textbuffer in printbuffer()
+
+    case 'DIV':
+    case 'FORM':
+    case 'CENTER':
+
+    case 'BLOCKQUOTE':
+    case 'ADDRESS': 
+
+    case 'CAPTION':
+    case 'P':
+    case 'H1':
+    case 'H2':
+    case 'H3':
+    case 'H4':
+    case 'H5':
+    case 'H6':
+    case 'DL':
+    case 'DT':
+    case 'DD':
+    case 'FIELDSET':
+    // mPDF 5.5.22
+    case 'DETAILS':
+    case 'SUMMARY':
+    // mPDF 5.5.09
+    case 'ARTICLE':
+    case 'ASIDE':
+    case 'FIGURE':
+    case 'FIGCAPTION':
+    case 'FOOTER':
+    case 'HEADER':
+    case 'HGROUP':
+    case 'NAV':
+    case 'SECTION':
+       $p = $this->cssmgr->PreviewBlockCSS($tag,$attr);
+       if(isset($p['DISPLAY']) && strtolower($p['DISPLAY'])=='none') { 
+               $this->blklvl++;
+               $this->blk[$this->blklvl]['hide'] = true; 
+               return; 
+       }
+       if($tag == 'CAPTION') {
+               // position is written in AdjstHTML
+               if (isset($attr['POSITION']) && strtolower($attr['POSITION'])=='bottom') { $divpos = 'B'; }
+               else { $divpos = 'T'; }
+               if (isset($attr['ALIGN']) && strtolower($attr['ALIGN'])=='bottom') { $cappos = 'B'; }
+               else if (isset($p['CAPTION-SIDE']) && strtolower($p['CAPTION-SIDE'])=='bottom') { $cappos = 'B'; }
+               else { $cappos = 'T'; }
+               if (isset($attr['ALIGN'])) { unset($attr['ALIGN']); }
+               if ($cappos != $divpos) {
+                       $this->blklvl++;
+                       $this->blk[$this->blklvl]['hide'] = true; 
+                       return; 
+               }
+       }
+
+/*-- FORMS --*/
+       if($tag == 'FORM') {
+               if (isset($attr['METHOD']) && strtolower($attr['METHOD'])=='get') { $this->form->formMethod = 'GET'; }
+               else { $this->form->formMethod = 'POST'; }
+               if (isset($attr['ACTION'])) { $this->form->formAction = $attr['ACTION']; }
+               else { $this->form->formAction = ''; }
+       }
+/*-- END FORMS --*/
+
+
+/*-- CSS-POSITION --*/
+       if ((isset($p['POSITION']) && (strtolower($p['POSITION'])=='fixed' || strtolower($p['POSITION'])=='absolute')) && $this->blklvl==0) {
+               if ($this->inFixedPosBlock) {
+                       $this->Error("Cannot nest block with position:fixed or position:absolute"); 
+               }
+               $this->inFixedPosBlock = true;
+               return;
+       }
+/*-- END CSS-POSITION --*/
+       // Start Block
+       $this->ignorefollowingspaces = true; 
+
+       if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; }
+       else { $lastbottommargin = 0; }
+       $this->lastblockbottommargin = 0;
+       $this->blockjustfinished=false;
+
+/*-- LISTS --*/
+       if ($this->listlvl>0) { return; }
+/*-- END LISTS --*/
+
+       $this->InlineProperties = array(); 
+       $this->spanlvl = 0;
+       $this->listjustfinished=false;
+       $this->divbegin=true;
+
+       $this->linebreakjustfinished=false;
+
+/*-- TABLES --*/
+       if ($this->tableLevel) {
+          
+          // If already something on the line
+          if ($this->cell[$this->row][$this->col]['s'] > 0  && !$this->nestedtablejustfinished ) {
+               $this->_saveCellTextBuffer("\n");
+               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
+               }
+               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+               }
+               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
+          }
+          // Cannot set block properties inside table - use Bold to indicate h1-h6
+          if ($tag == 'CENTER' && $this->tdbegin) { $this->cell[$this->row][$this->col]['a'] = $align['center']; }
+
+               $this->InlineProperties['BLOCKINTABLE'] = $this->saveInlineProperties();
+               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+               if (!empty($properties)) $this->setCSS($properties,'INLINE');
+
+
+          break;
+       }
+/*-- END TABLES --*/
+
+       if ($tag == 'P' || $tag == 'DT' || $tag == 'DD') { $this->lastoptionaltag = $tag; } // Save current HTML specified optional endtag
+       else { $this->lastoptionaltag = ''; }
+
+       if ($this->lastblocklevelchange == 1) { $blockstate = 1; }      // Top margins/padding only
+       else if ($this->lastblocklevelchange < 1) { $blockstate = 0; }  // NO margins/padding
+       $this->printbuffer($this->textbuffer,$blockstate);
+       $this->textbuffer=array();
+
+       $save_blklvl = $this->blklvl;
+       $save_blk = $this->blk;
+       $save_silp = $this->saveInlineProperties();
+       $save_spanlvl = $this->spanlvl;
+       $save_ilp = $this->InlineProperties;
+
+       $this->blklvl++;
+
+       $currblk =& $this->blk[$this->blklvl];
+       $this->initialiseBlock($currblk);
+       $prevblk =& $this->blk[$this->blklvl-1];
+
+       $currblk['tag'] = $tag;
+       $currblk['attr'] = $attr;
+
+       $this->Reset();
+       $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
+       $pagesel = ''; 
+/*-- CSS-PAGE --*/
+
+       if (isset($properties['PAGE'])) { $pagesel = $properties['PAGE']; } 
+/*-- END CSS-PAGE --*/
+
+       // If page-box has changed AND/OR PAGE-BREAK-BEFORE
+       $save_cols = false;
+       if (($pagesel && $pagesel != $this->page_box['current']) || (isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) {
+               if ($this->blklvl>1) {
+                       // Close any open block tags
+                       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+                       // Output any text left in buffer
+                       if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
+               }
+/*-- COLUMNS --*/
+               if ($this->ColActive) {
+                       $save_cols = true;
+                       $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
+                       $this->SetColumns(0);
+               }
+/*-- END COLUMNS --*/
+
+
+               // Must Add new page if changed page properties
+               if (isset($properties['PAGE-BREAK-BEFORE'])) {
+                       if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+                       else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+                       else if (strtoupper($properties['PAGE-BREAK-BEFORE']) == 'ALWAYS') { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+                       else if ($this->page_box['current'] != $pagesel) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }        // *CSS-PAGE*
+               }
+/*-- CSS-PAGE --*/
+               else if ($pagesel != $this->page_box['current']) { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+/*-- END CSS-PAGE --*/
+
+               // if using htmlheaders, the headers need to be rewritten when new page
+               // done by calling WriteHTML() within resethtmlheaders
+               // so block is reset to 0 - now we need to resurrect it
+               // As in WriteHTML() initialising
+               if (!($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE'])) {
+                       $this->blklvl = 0;
+                       $this->lastblocklevelchange = 0;
+                       $this->blk = array();
+                       $this->initialiseBlock($this->blk[0]);
+                       $this->blk[0]['width'] =& $this->pgwidth;
+                       $this->blk[0]['inner_width'] =& $this->pgwidth;
+                       $this->blk[0]['blockContext'] = $this->blockContext;
+                       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
+                       $this->setCSS($properties,'','BODY'); 
+                       $this->blklvl++;
+                       $currblk =& $this->blk[$this->blklvl];
+                       $prevblk =& $this->blk[$this->blklvl-1];
+
+                       $this->initialiseBlock($currblk);
+                       $currblk['tag'] = $tag;
+                       $currblk['attr'] = $attr;
+
+                       $this->Reset();
+                       $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
+               }
+/*-- COLUMNS --*/
+               if ($save_cols) {
+                       // Restore columns
+                       $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
+               }
+/*-- END COLUMNS --*/
+               if ($this->restoreBlockPagebreaks && isset($properties['PAGE-BREAK-BEFORE']) && $properties['PAGE-BREAK-BEFORE']) {
+                       $this->blk = $save_blk;
+                       // Re-open block tags
+                       $t = $this->blk[0]['tag'];
+                       $a = $this->blk[0]['attr'];
+                       $this->blklvl = 0; 
+                       for ($b=0; $b<=$save_blklvl;$b++) {
+                               $tc = $t;
+                               $ac = $a;
+                               $t = $this->blk[$b+1]['tag'];
+                               $a = $this->blk[$b+1]['attr'];
+                               unset($this->blk[$b+1]);
+                               $this->OpenTag($tc,$ac); 
+                       }
+                       $this->spanlvl = $save_spanlvl;
+                       $this->InlineProperties = $save_ilp;
+                       $this->restoreInlineProperties($save_silp);
+               }
+       }
+
+       if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE']) == 'AVOID' && !$this->ColActive && !$this->keep_block_together) {
+               $currblk['keep_block_together'] = 1;
+               $this->kt_y00 = $this->y;
+               $this->kt_p00 = $this->page;
+               $this->keep_block_together = 1;
+               $this->divbuffer = array();
+               $this->ktLinks = array();
+               $this->ktAnnots = array();
+               $this->ktForms = array();
+               $this->ktBlock = array();
+               $this->ktReference = array();
+               $this->ktBMoutlines = array();
+               $this->_kttoc = array();
+       }
+       if ($lastbottommargin && isset($properties['MARGIN-TOP']) && $properties['MARGIN-TOP'] && empty($properties['FLOAT'])) { $currblk['lastbottommargin'] = $lastbottommargin; }
+
+       // mPDF 5.6.01  - LAYERS
+       if (isset($properties['Z-INDEX']) && $this->currentlayer==0) {
+               $v = intval($properties['Z-INDEX']); 
+               if ($v > 0) {
+                       $currblk['z-index'] = $v; 
+                       $this->BeginLayer($v);
+               }
+       }
+
+       $this->setCSS($properties,'BLOCK',$tag); //name(id/class/style) found in the CSS array!
+       $currblk['InlineProperties'] = $this->saveInlineProperties();
+
+       if (isset($properties['VISIBILITY'])) {
+               $v = strtolower($properties['VISIBILITY']);
+               if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible' && !$this->tableLevel) { 
+                       $currblk['visibility'] = $v; 
+                       $this->SetVisibility($v);
+               }
+       }
+
+       if(isset($attr['DIR']) && $attr['DIR']) { $currblk['direction'] = strtolower($attr['DIR']); }
+       if(isset($attr['ALIGN']) && $attr['ALIGN']) { $currblk['block-align'] = $align[strtolower($attr['ALIGN'])]; }
+
+       if (isset($properties['HEIGHT'])) { 
+               $currblk['css_set_height'] = $this->ConvertSize($properties['HEIGHT'],($this->h - $this->tMargin - $this->bMargin),$this->FontSize,false); 
+               if (($currblk['css_set_height'] + $this->y) > $this->PageBreakTrigger && $this->y > $this->tMargin+5 && $currblk['css_set_height'] < ($this->h - ($this->tMargin + $this->bMargin))) { $this->AddPage($this->CurOrientation); }
+       }
+       else { $currblk['css_set_height'] = false; }
+
+
+       // Added mPDF 3.0 Float DIV
+       if (isset($prevblk['blockContext'])) { $currblk['blockContext'] = $prevblk['blockContext'] ; }  // *CSS-FLOAT*
+
+       if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']), $this->blklvl-1); }     // *CSS-FLOAT*
+
+       $container_w = $prevblk['inner_width'];
+       $bdr = $currblk['border_right']['w'];
+       $bdl = $currblk['border_left']['w'];
+       $pdr = $currblk['padding_right'];
+       $pdl = $currblk['padding_left'];
+
+       if (isset($currblk['css_set_width'])) { $setwidth = $currblk['css_set_width']; }
+       else { $setwidth = 0; }
+
+/*-- CSS-FLOAT --*/
+       if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'RIGHT' && !$this->ColActive) {
+               // Cancel Keep-Block-together
+               $currblk['keep_block_together'] = false;
+               $this->kt_y00 = '';
+               $this->keep_block_together = 0;
+
+               $this->blockContext++;
+               $currblk['blockContext'] = $this->blockContext;
+
+               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
+
+               // DIV is too narrow for text to fit!
+               $maxw = $container_w - $l_width - $r_width;
+               if (($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
+                       // Too narrow to fit - try to move down past L or R float
+                       if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('LEFT', $this->blklvl-1); 
+                       }
+                       else if ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)  <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('RIGHT', $this->blklvl-1); 
+                       }
+                       else { $this->ClearFloats('BOTH', $this->blklvl-1); }
+                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
+               }
+
+               if ($r_exists) { $currblk['margin_right'] += $r_width; }
+
+               $currblk['float'] = 'R';
+               $currblk['float_start_y'] = $this->y;
+               if ($currblk['css_set_width']) {
+                       $currblk['margin_left'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
+                       $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
+               }
+               else {
+                       // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width
+                       // and do borders and backgrounds - For now - just set to maximum width left
+
+                       if ($l_exists) { $currblk['margin_left'] += $l_width; }
+                       $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr);
+
+                       $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_right']);
+               }
+       }
+       else if (isset($properties['FLOAT']) && strtoupper($properties['FLOAT']) == 'LEFT' && !$this->ColActive) {
+               // Cancel Keep-Block-together
+               $currblk['keep_block_together'] = false;
+               $this->kt_y00 = '';
+               $this->keep_block_together = 0;
+
+               $this->blockContext++;
+               $currblk['blockContext'] = $this->blockContext;
+
+               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
+
+               // DIV is too narrow for text to fit!
+               $maxw = $container_w - $l_width - $r_width;
+               if (($setwidth + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
+                       // Too narrow to fit - try to move down past L or R float
+                       if ($l_max < $r_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('LEFT', $this->blklvl-1); 
+                       }
+                       else if ($r_max < $l_max && ($setwidth + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('RIGHT', $this->blklvl-1); 
+                       }
+                       else { $this->ClearFloats('BOTH', $this->blklvl-1); }
+                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
+               }
+
+               if ($l_exists) { $currblk['margin_left'] += $l_width; }
+
+               $currblk['float'] = 'L';
+               $currblk['float_start_y'] = $this->y;
+               if ($setwidth) {
+                       $currblk['margin_right'] = $container_w - ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
+                       $currblk['float_width'] = ($setwidth + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
+               }
+               else {
+                       // *** If no width set - would need to buffer and keep track of max width, then Right-align if not full width
+                       // and do borders and backgrounds - For now - just set to maximum width left
+
+                       if ($r_exists) { $currblk['margin_right'] += $r_width; }
+                       $currblk['css_set_width'] = $container_w - ($currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr);
+
+                       $currblk['float_width'] = ($currblk['css_set_width'] + $bdl + $pdl + $bdr + $pdr + $currblk['margin_left']);
+               }
+       }
+
+       else {
+               // Don't allow overlap - if floats present - adjust padding to avoid overlap with Floats
+               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
+               $maxw = $container_w - $l_width - $r_width;
+               if (($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) > $maxw || ($maxw - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) < (2*$this->GetCharWidth('W',false))) {
+                       // Too narrow to fit - try to move down past L or R float
+                       if ($l_max < $r_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $r_width) && (($container_w - $r_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('LEFT', $this->blklvl-1); 
+                       }
+                       else if ($r_max < $l_max && ($setwidth + $currblk['margin_left'] + $currblk['margin_right'] + $bdl + $pdl + $bdr + $pdr) <= ($container_w - $l_width) && (($container_w - $l_width) - ($currblk['margin_right'] + $currblk['margin_left'] + $bdl + $pdl + $bdr + $pdr)) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('RIGHT', $this->blklvl-1); 
+                       }
+                       else { $this->ClearFloats('BOTH', $this->blklvl-1); }
+                       list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl-1);
+               }
+               if ($r_exists) { $currblk['padding_right'] = max(($r_width-$currblk['margin_right']-$bdr), $pdr); }
+               if ($l_exists) { $currblk['padding_left'] = max(($l_width-$currblk['margin_left']-$bdl), $pdl); }
+       }
+/*-- END CSS-FLOAT --*/
+
+
+/*-- BORDER-RADIUS --*/
+       // Automatically increase padding if required for border-radius
+       if ($this->autoPadding && !$this->ColActive && !$this->keep_block_together) {
+         if ($currblk['border_radius_TL_H']>$currblk['padding_left'] && $currblk['border_radius_TL_V']>$currblk['padding_top']) {
+               if ($currblk['border_radius_TL_H']>$currblk['border_radius_TL_V']) {
+                       $this->_borderPadding($currblk['border_radius_TL_H'],$currblk['border_radius_TL_V'], $currblk['padding_left'], $currblk['padding_top']);
+               }
+               else {
+                       $this->_borderPadding($currblk['border_radius_TL_V'],$currblk['border_radius_TL_H'], $currblk['padding_top'], $currblk['padding_left']);
+               }
+         }
+         if ($currblk['border_radius_TR_H']>$currblk['padding_right'] && $currblk['border_radius_TR_V']>$currblk['padding_top']) {
+               if ($currblk['border_radius_TR_H']>$currblk['border_radius_TR_V']) {
+                       $this->_borderPadding($currblk['border_radius_TR_H'],$currblk['border_radius_TR_V'], $currblk['padding_right'], $currblk['padding_top']);
+               }
+               else {
+                       $this->_borderPadding($currblk['border_radius_TR_V'],$currblk['border_radius_TR_H'], $currblk['padding_top'], $currblk['padding_right']);
+               }
+         }
+         if ($currblk['border_radius_BL_H']>$currblk['padding_left'] && $currblk['border_radius_BL_V']>$currblk['padding_bottom']) {
+               if ($currblk['border_radius_BL_H']>$currblk['border_radius_BL_V']) {
+                       $this->_borderPadding($currblk['border_radius_BL_H'],$currblk['border_radius_BL_V'], $currblk['padding_left'], $currblk['padding_bottom']);
+               }
+               else {
+                       $this->_borderPadding($currblk['border_radius_BL_V'],$currblk['border_radius_BL_H'], $currblk['padding_bottom'], $currblk['padding_left']);
+               }
+         }
+         if ($currblk['border_radius_BR_H']>$currblk['padding_right'] && $currblk['border_radius_BR_V']>$currblk['padding_bottom']) {
+               if ($currblk['border_radius_BR_H']>$currblk['border_radius_BR_V']) {
+                       $this->_borderPadding($currblk['border_radius_BR_H'],$currblk['border_radius_BR_V'], $currblk['padding_right'], $currblk['padding_bottom']);
+               }
+               else {
+                       $this->_borderPadding($currblk['border_radius_BR_V'],$currblk['border_radius_BR_H'], $currblk['padding_bottom'], $currblk['padding_right']);
+               }
+         }
+       }
+/*-- END BORDER-RADIUS --*/
+
+
+       // Hanging indent - if negative indent: ensure padding is >= indent
+       if(!isset($currblk['text_indent'])) { $currblk['text_indent'] = null; }
+       if(!isset($currblk['inner_width'])) { $currblk['inner_width'] = null; }
+       $cbti = $this->ConvertSize($currblk['text_indent'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+       if ($cbti < 0) {
+         $hangind = -($cbti);
+         if ($currblk['direction'] == 'rtl') { // *RTL*
+               $currblk['padding_right'] = max($currblk['padding_right'],$hangind);    // *RTL*
+         }     // *RTL*
+         else {        // *RTL*
+               $currblk['padding_left'] = max($currblk['padding_left'],$hangind);
+         }     // *RTL*
+       }
+
+       if (isset($currblk['css_set_width'])) {
+         if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
+                 // Try to reduce margins to accomodate - if still too wide, set margin-right/left=0 (reduces width)
+                 $anyextra = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
+                 if ($anyextra>0) {
+                       $currblk['margin_left'] = $currblk['margin_right'] = $anyextra /2;
+                 }
+                 else {
+                       $currblk['margin_left'] = $currblk['margin_right'] = 0;
+                 }
+         }
+         else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
+                 // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width)
+                 $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_right']);
+                 if ($currblk['margin_left'] < 0) {
+                       $currblk['margin_left'] = 0;
+                 }
+         }
+         else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
+                 // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width)
+                 $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_left']);
+                 if ($currblk['margin_right'] < 0) {
+                       $currblk['margin_right'] = 0;
+                 }
+         }
+         else { 
+           if ($currblk['direction'] == 'rtl') {       // *RTL*
+               // Try to reduce margin-left to accomodate - if still too wide, set margin-left=0 (reduces width)
+               $currblk['margin_left'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_right']);       // *RTL*
+               if ($currblk['margin_left'] < 0) {      // *RTL*
+                       $currblk['margin_left'] = 0;    // *RTL*
+               }       // *RTL*
+           }   // *RTL*
+           else {      // *RTL*
+                 // Try to reduce margin-right to accomodate - if still too wide, set margin-right=0 (reduces width)
+                 $currblk['margin_right'] = $prevblk['inner_width'] - ($currblk['css_set_width'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right'] + $currblk['margin_left']);
+                 if ($currblk['margin_right'] < 0) {
+                       $currblk['margin_right'] = 0;
+                 }
+           }   // *RTL*
+         }
+       }
+
+       $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left'];
+       $currblk['outer_right_margin'] = $prevblk['outer_right_margin']  + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right'];
+
+       $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']);
+       $currblk['inner_width'] = $currblk['width'] - ($currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
+
+       // Check DIV is not now too narrow to fit text
+       $mw = 2*$this->GetCharWidth('W',false);
+       if ($currblk['inner_width'] < $mw) {
+               $currblk['padding_left'] = 0;
+               $currblk['padding_right'] = 0;
+               $currblk['border_left']['w'] = 0.2;
+               $currblk['border_right']['w'] = 0.2;
+               $currblk['margin_left'] = 0;
+               $currblk['margin_right'] = 0;
+               $currblk['outer_left_margin'] = $prevblk['outer_left_margin'] + $currblk['margin_left'] + $prevblk['border_left']['w'] + $prevblk['padding_left'];
+               $currblk['outer_right_margin'] = $prevblk['outer_right_margin']  + $currblk['margin_right'] + $prevblk['border_right']['w'] + $prevblk['padding_right'];
+               $currblk['width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin']);
+               $currblk['inner_width'] = $this->pgwidth - ($currblk['outer_right_margin'] + $currblk['outer_left_margin'] + $currblk['border_left']['w'] + $currblk['padding_left'] + $currblk['border_right']['w'] + $currblk['padding_right']);
+//             if ($currblk['inner_width'] < $mw) { $this->Error("DIV is too narrow for text to fit!"); }
+       }
+
+       $this->x = $this->lMargin + $currblk['outer_left_margin'];
+
+/*-- BACKGROUNDS --*/
+       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive && !$this->keep_block_together) {
+               $ret = $this->SetBackground($properties, $currblk['inner_width']);
+               if ($ret) { $currblk['background-image'] = $ret; }
+       }
+/*-- END BACKGROUNDS --*/
+
+/*-- TABLES --*/
+       if ($this->use_kwt && isset($attr['KEEP-WITH-TABLE']) && !$this->ColActive && !$this->keep_block_together) {
+               $this->kwt = true;
+               $this->kwt_y0 = $this->y;
+               $this->kwt_x0 = $this->x;
+               $this->kwt_height = 0;
+               $this->kwt_buffer = array();
+               $this->kwt_Links = array();
+               $this->kwt_Annots = array();
+               $this->kwt_moved = false;
+               $this->kwt_saved = false;
+               $this->kwt_Reference = array();
+               $this->kwt_BMoutlines = array();
+               $this->kwt_toc = array();
+       }
+       else { 
+/*-- END TABLES --*/
+               $this->kwt = false; 
+       }       // *TABLES*
+
+       //Save x,y coords in case we need to print borders...
+       $currblk['y0'] = $this->y;
+       $currblk['x0'] = $this->x;
+       $currblk['startpage'] = $this->page;
+       $this->oldy = $this->y;
+
+       $this->lastblocklevelchange = 1 ;
+
+       break;
+
+    case 'HR':
+       // Added mPDF 3.0 Float DIV - CLEAR
+       if (isset($attr['STYLE'])) {
+               $properties = $this->cssmgr->readInlineCSS($attr['STYLE']);
+               if (isset($properties['CLEAR'])) { $this->ClearFloats(strtoupper($properties['CLEAR']),$this->blklvl); }        // *CSS-FLOAT*
+       }
+
+       $this->ignorefollowingspaces = true; 
+
+       $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+       if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+       if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+       if (isset($properties['WIDTH'])) { $objattr['width'] = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']); }
+       else if(isset($attr['WIDTH']) && $attr['WIDTH'] != '') $objattr['width'] = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
+       if (isset($properties['TEXT-ALIGN'])) { $objattr['align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
+       else if(isset($attr['ALIGN']) && $attr['ALIGN'] != '') $objattr['align'] = $align[strtolower($attr['ALIGN'])];
+
+       if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
+               $objattr['align'] = 'R';
+       }
+       if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
+               $objattr['align'] = 'L';
+               if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto' && isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
+                       $objattr['align'] = 'C';
+               }
+       }
+       if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
+       else if(isset($attr['COLOR']) && $attr['COLOR'] != '') $objattr['color'] = $this->ConvertColor($attr['COLOR']);
+       if (isset($properties['HEIGHT'])) { $objattr['linewidth'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+
+/*-- TABLES --*/
+       if ($this->tableLevel) {
+               $objattr['W-PERCENT'] = 100;
+               if (isset($properties['WIDTH']) && stristr($properties['WIDTH'],'%')) { 
+                       $properties['WIDTH'] += 0;  //make "90%" become simply "90" 
+                       $objattr['W-PERCENT'] = $properties['WIDTH'];
+               }
+               if (isset($attr['WIDTH']) && stristr($attr['WIDTH'],'%')) { 
+                       $attr['WIDTH'] += 0;  //make "90%" become simply "90" 
+                       $objattr['W-PERCENT'] = $attr['WIDTH'];
+               }
+       }
+/*-- END TABLES --*/
+
+       $objattr['type'] = 'hr';
+       $objattr['height'] = $objattr['linewidth'] + $objattr['margin_top'] + $objattr['margin_bottom'];
+       $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
+
+       // Clear properties - tidy up
+       $properties = array();
+
+/*-- TABLES --*/
+       // Output it to buffers
+       if ($this->tableLevel) {
+               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
+               }
+               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+               }
+               $this->cell[$this->row][$this->col]['s'] = 0 ;// reset
+               $this->_saveCellTextBuffer($e, $this->HREF);
+       }
+       else {
+/*-- END TABLES --*/
+               $this->_saveTextBuffer($e, $this->HREF);
+       }       // *TABLES*
+
+       break;
+
+
+/*-- BARCODES --*/
+    
+    case 'BARCODE':
+       if(isset($attr['CODE']) && $attr['CODE']) {
+               $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['padding_top'] = 0;
+               $objattr['padding_bottom'] = 0;
+               $objattr['padding_left'] = 0;
+               $objattr['padding_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+               $objattr['code'] = $attr['CODE'];
+
+               if(isset($attr['TYPE'])) {
+                       $objattr['btype'] = trim(strtoupper($attr['TYPE']));
+               }
+               else { $objattr['btype'] = 'EAN13'; }   // default
+               if (preg_match('/^(EAN13|ISBN|ISSN|EAN8|UPCA|UPCE)P([25])$/',$objattr['btype'],$m)) {
+                       $objattr['btype'] = $m[1];
+                       $objattr['bsupp'] = $m[2];
+                       if (preg_match('/^(\S+)\s+(.*)$/',$objattr['code'],$mm)) {
+                               $objattr['code'] = $mm[1];
+                               $objattr['bsupp_code'] = $mm[2];
+                       }
+               }
+               else { $objattr['bsupp'] = 0; }
+
+               if(isset($attr['TEXT']) && $attr['TEXT']==1) { $objattr['showtext'] = 1; }
+               else { $objattr['showtext'] = 0; }
+               if(isset($attr['SIZE']) && $attr['SIZE']>0) { $objattr['bsize'] = $attr['SIZE']; }
+               else { $objattr['bsize'] = 1; }
+               if(isset($attr['HEIGHT']) && $attr['HEIGHT']>0) { $objattr['bheight'] = $attr['HEIGHT']; }
+               else { $objattr['bheight'] = 1; }
+               if(isset($attr['PR']) && $attr['PR']>0) { $objattr['pr_ratio'] = $attr['PR']; }
+               else { $objattr['pr_ratio'] = ''; }
+               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
+                       return; 
+               }
+               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
+               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
+               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
+               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
+
+               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
+               if (isset($properties['COLOR']) && $properties['COLOR'] != '') { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
+               else { $objattr['color'] = false; }
+               if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
+               else { $objattr['bgcolor'] = false; }
+
+               if (!class_exists('PDFBarcode', false)) { 
+                       include(_MPDF_PATH.'classes/barcode.php'); 
+               }
+               $this->barcode = new PDFBarcode();
+
+               if ($objattr['btype'] == 'EAN13' || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN' || $objattr['btype'] == 'UPCA' || $objattr['btype'] == 'UPCE' || $objattr['btype'] == 'EAN8') {
+                       $code = preg_replace('/\-/','',$objattr['code']);
+                       if ($objattr['btype'] == 'ISSN' || $objattr['btype'] == 'ISBN') {
+                               $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13');
+                       }
+                       else { $arrcode = $this->barcode->getBarcodeArray($code, $objattr['btype'] ); }
+                       if ($arrcode === false) { $this->Error('Error in barcode string.'); }
+
+                       if ($objattr['bsupp'] == 2 || $objattr['bsupp'] == 5) { // EAN-2 or -5 Supplement
+                               $supparrcode = $this->barcode->getBarcodeArray($objattr['bsupp_code'], 'EAN'.$objattr['bsupp'] ); 
+                               $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR'] + $supparrcode["maxw"] + $supparrcode['sepM']) * $arrcode['nom-X'] * $objattr['bsize'];
+                       }
+                       else {
+                               $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize'];
+                       }
+                       $h = $arrcode['nom-H'] * $objattr['bsize'] * $objattr['bheight'];
+                       // Add height for ISBN string + margin from top of bars
+                       if (($objattr['showtext'] && $objattr['btype'] == 'EAN13') || $objattr['btype'] == 'ISBN' || $objattr['btype'] == 'ISSN') { 
+                               $tisbnm = 1.5 * $objattr['bsize'];      // Top margin between TOP TEXT (isbn - if shown) & bars
+                               $isbn_fontsize = 2.1 * $objattr['bsize'];
+                               $h += $isbn_fontsize + $tisbnm  ; 
+                       }
+               }
+               // QR-code
+               else if ($objattr['btype'] == 'QR') {
+                       $w = $h = $objattr['bsize']*25; // Factor of 25mm (default)
+                       $objattr['errorlevel'] = 'L';
+                       if (isset($attr['ERROR'])) { $objattr['errorlevel'] = $attr['ERROR']; }
+               }
+               else if ($objattr['btype'] == 'IMB' || $objattr['btype'] == 'RM4SCC' || $objattr['btype'] == 'KIX' || $objattr['btype'] == 'POSTNET' || $objattr['btype'] == 'PLANET') {
+                       $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'] ); 
+                       if ($arrcode === false) { $this->Error('Error in barcode string.'); }
+                       $w = ($arrcode["maxw"] * $arrcode['nom-X'] * $objattr['bsize']) + $arrcode['quietL'] + $arrcode['quietR'];
+                       $h = ($arrcode['nom-H'] * $objattr['bsize']) + (2*$arrcode['quietTB']);
+               }
+               else if (in_array($objattr['btype'], array('C128A','C128B','C128C','EAN128A','EAN128B','EAN128C','C39','C39+','C39E','C39E+','S25','S25+','I25','I25+','I25B','I25B+','C93','MSI','MSI+','CODABAR','CODE11'))) {
+                       $arrcode = $this->barcode->getBarcodeArray($objattr['code'], $objattr['btype'], $objattr['pr_ratio'] );
+                       if ($arrcode === false) { $this->Error('Error in barcode string.'); }
+                       $w = ($arrcode["maxw"] + $arrcode['lightmL'] + $arrcode['lightmR']) * $arrcode['nom-X'] * $objattr['bsize'];
+                       $h = ((2*$arrcode['lightTB'] * $arrcode['nom-X']) + $arrcode['nom-H']) * $objattr['bsize'] * $objattr['bheight'];
+               }
+               else { break; }
+
+               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
+               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
+
+               $objattr['type'] = 'barcode';
+               $objattr['height'] = $h + $extraheight;
+               $objattr['width'] = $w + $extrawidth;
+               $objattr['barcode_height'] = $h;
+               $objattr['barcode_width'] = $w;
+/*-- CSS-IMAGE-FLOAT --*/
+               if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) {
+                 if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) {
+                       $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1);
+                 }
+               }
+/*-- END CSS-IMAGE-FLOAT --*/
+
+               $e = "\xbb\xa4\xactype=barcode,objattr=".serialize($objattr)."\xbb\xa4\xac";
+
+               // Clear properties - tidy up
+               $properties = array();
+
+/*-- TABLES --*/
+               // Output it to buffers
+               if ($this->tableLevel) {
+                       $this->_saveCellTextBuffer($e, $this->HREF);
+                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
+               }
+               else {
+/*-- END TABLES --*/
+                       $this->_saveTextBuffer($e, $this->HREF);
+
+               }       // *TABLES*
+       }
+       break;
+/*-- END BARCODES --*/
+
+
+       // *********** FORM ELEMENTS ********************
+
+/*-- FORMS --*/
+    case 'SELECT':
+       $this->lastoptionaltag = ''; // Save current HTML specified optional endtag
+       $this->InlineProperties[$tag] = $this->saveInlineProperties();
+       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+       if (isset($properties['FONT-FAMILY'])) { 
+               $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
+       }
+       if (isset($properties['FONT-SIZE'])) { 
+               $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
+               $this->SetFontSize($mmsize*_MPDFK,false);
+       }
+       if (isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') {
+               $this->selectoption['SPELLCHECK'] = true; 
+       }
+
+       if (isset($properties['COLOR'])) { $this->selectoption['COLOR'] = $this->ConvertColor($properties['COLOR']); }
+       $this->specialcontent = "type=select"; 
+       if(isset($attr['DISABLED'])) { $this->selectoption['DISABLED'] = $attr['DISABLED']; }
+       if(isset($attr['READONLY'])) { $this->selectoption['READONLY'] = $attr['READONLY']; }
+       if(isset($attr['REQUIRED'])) { $this->selectoption['REQUIRED'] = $attr['REQUIRED']; }
+       if(isset($attr['EDITABLE'])) { $this->selectoption['EDITABLE'] = $attr['EDITABLE']; }
+       if(isset($attr['TITLE'])) { $this->selectoption['TITLE'] = $attr['TITLE']; }
+       if(isset($attr['MULTIPLE'])) { $this->selectoption['MULTIPLE'] = $attr['MULTIPLE']; }
+       if(isset($attr['SIZE']) && $attr['SIZE']>1) { $this->selectoption['SIZE'] = $attr['SIZE']; }
+       if ($this->useActiveForms) {
+               if(isset($attr['NAME'])) { $this->selectoption['NAME'] = $attr['NAME']; }
+               if (isset($attr['ONCHANGE'])) { $this->selectoption['ONCHANGE'] = $attr['ONCHANGE']; }
+       }
+
+       $properties = array();
+       break;
+
+    case 'OPTION':
+       $this->lastoptionaltag = 'OPTION'; // Save current HTML specified optional endtag
+       $this->selectoption['ACTIVE'] = true;
+       $this->selectoption['currentSEL'] = false;
+       if (empty($this->selectoption)) {
+               $this->selectoption['MAXWIDTH'] = '';
+               $this->selectoption['SELECTED'] = '';
+       }
+       if (isset($attr['SELECTED'])) { 
+               $this->selectoption['SELECTED'] = '';
+               $this->selectoption['currentSEL'] = true;
+       }
+       if(isset($attr['VALUE'])) { 
+               $attr['VALUE'] = strcode2utf($attr['VALUE']);
+               $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']);
+               if ($this->onlyCoreFonts)
+                       $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8'); 
+       }
+       $this->selectoption['currentVAL'] = $attr['VALUE'];
+       break;
+
+    case 'TEXTAREA':
+       $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+       if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; }
+       if(isset($attr['READONLY'])) { $objattr['readonly'] = true; }
+       if(isset($attr['REQUIRED'])) { $objattr['required'] = true; }
+       if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; }
+       if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; }
+       if ($this->onlyCoreFonts)
+               $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8'); 
+       if ($this->useActiveForms) {
+               if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; }
+               $this->form->form_element_spacing['textarea']['outer']['v'] = 0;
+               $this->form->form_element_spacing['textarea']['inner']['v'] = 0;
+               if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; }
+               else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; }
+               if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; }
+               if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; }
+               if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; }
+       }
+       $this->InlineProperties[$tag] = $this->saveInlineProperties();
+       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+       if (isset($properties['FONT-FAMILY'])) { 
+               $this->SetFont($properties['FONT-FAMILY'],'',0,false);
+       }
+       if (isset($properties['FONT-SIZE'])) { 
+               $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
+               $this->SetFontSize($mmsize*_MPDFK,false);
+       }
+       if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
+       $objattr['fontfamily'] = $this->FontFamily;
+       $objattr['fontsize'] = $this->FontSizePt;
+       if ($this->useActiveForms) {
+               if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
+               else if(isset($attr['ALIGN'])) { $objattr['text_align'] =  $align[strtolower($attr['ALIGN'])]; }
+               if (isset($properties['OVERFLOW']) && strtolower($properties['OVERFLOW'])=='hidden') { $objattr['donotscroll'] = true; }
+               if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); }
+               if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
+       }
+       $this->SetLineHeight('',$this->form->textarea_lineheight); 
+       $formLineHeight = $this->lineheight;
+
+       $w = 0;
+       $h = 0;
+       if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
+
+       $colsize = 20; //HTML default value 
+       $rowsize = 2; //HTML default value
+       if (isset($attr['COLS'])) $colsize = intval($attr['COLS']);
+       if (isset($attr['ROWS'])) $rowsize = intval($attr['ROWS']);
+
+       $charsize = $this->GetCharWidth('w',false);
+       if ($w) { $colsize = round(($w-($this->form->form_element_spacing['textarea']['outer']['h']*2)-($this->form->form_element_spacing['textarea']['inner']['h']*2))/$charsize); }
+       if ($h) { $rowsize = round(($h-($this->form->form_element_spacing['textarea']['outer']['v']*2)-($this->form->form_element_spacing['textarea']['inner']['v']*2))/$formLineHeight); }
+
+       $objattr['type'] = 'textarea';
+       $objattr['width'] = ($colsize * $charsize) + ($this->form->form_element_spacing['textarea']['outer']['h']*2)+($this->form->form_element_spacing['textarea']['inner']['h']*2);
+       $objattr['height'] = ($rowsize * $formLineHeight) + ($this->form->form_element_spacing['textarea']['outer']['v']*2)+($this->form->form_element_spacing['textarea']['inner']['v']*2);
+       $objattr['rows'] = $rowsize;
+       $objattr['cols'] = $colsize;
+
+       $this->specialcontent = serialize($objattr); 
+
+       if ($this->tableLevel) {        // *TABLES*
+               $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES*
+       }       // *TABLES*
+
+       // Clear properties - tidy up
+       $properties = array();
+       break;
+
+
+
+       // *********** FORM - INPUT ********************
+
+    case 'INPUT':
+       if (!isset($attr['TYPE'])) $attr['TYPE'] == 'TEXT'; 
+       $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+       $objattr['type'] = 'input';
+       if(isset($attr['DISABLED'])) { $objattr['disabled'] = true; }
+       if(isset($attr['READONLY'])) { $objattr['readonly'] = true; }
+       if(isset($attr['REQUIRED'])) { $objattr['required'] = true; }
+       if(isset($attr['SPELLCHECK']) && strtolower($attr['SPELLCHECK'])=='true') { $objattr['spellcheck'] = true; }
+       if(isset($attr['TITLE'])) { $objattr['title'] = $attr['TITLE']; }
+       else if(isset($attr['ALT'])) { $objattr['title'] = $attr['ALT']; }
+       else $objattr['title'] = '';
+       $objattr['title'] = strcode2utf($objattr['title']);
+       $objattr['title'] = $this->lesser_entity_decode($objattr['title']);
+       if ($this->onlyCoreFonts)
+               $objattr['title'] = mb_convert_encoding($objattr['title'], $this->mb_enc,'UTF-8'); 
+       if ($this->useActiveForms) {
+               if(isset($attr['NAME'])) { $objattr['fieldname'] = $attr['NAME']; }
+       }
+       if(isset($attr['VALUE'])) { 
+               $attr['VALUE'] = strcode2utf($attr['VALUE']);
+               $attr['VALUE'] = $this->lesser_entity_decode($attr['VALUE']);
+               if ($this->onlyCoreFonts)
+                       $attr['VALUE'] = mb_convert_encoding($attr['VALUE'], $this->mb_enc,'UTF-8'); 
+               $objattr['value'] = $attr['VALUE']; 
+       }
+
+       $this->InlineProperties[$tag] = $this->saveInlineProperties();
+       $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+       $objattr['vertical-align'] = '';
+
+       if (isset($properties['FONT-FAMILY'])) { 
+               $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
+       }
+       if (isset($properties['FONT-SIZE'])) { 
+               $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK));
+               $this->SetFontSize($mmsize*_MPDFK,false);
+       }
+       if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
+       $objattr['fontfamily'] = $this->FontFamily;
+       $objattr['fontsize'] = $this->FontSizePt;
+       if ($this->useActiveForms) {
+               if(isset($attr['ALIGN'])) { $objattr['text_align'] = $align[strtolower($attr['ALIGN'])]; }
+               else if(isset($properties['TEXT-ALIGN'])) { $objattr['text_align'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
+               if (isset($properties['BORDER-TOP-COLOR'])) { $objattr['border-col'] = $this->ConvertColor($properties['BORDER-TOP-COLOR']); }
+               if (isset($properties['BACKGROUND-COLOR'])) { $objattr['background-col'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
+       }
+       $type = '';
+      $texto='';
+       $height = $this->FontSize;
+       $width = 0;
+       $spacesize = $this->GetCharWidth(' ',false);
+
+       $w = 0;
+       if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
+
+       if ($properties['VERTICAL-ALIGN']) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
+
+       switch(strtoupper($attr['TYPE'])){
+          case 'HIDDEN':
+               $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
+                       if ($this->useActiveForms) {
+                               $this->form->SetFormText( 0, 0, $objattr['fieldname'], $objattr['value'], $objattr['value'], '', 0, '', true );
+                       }
+                       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
+                       unset($this->InlineProperties[$tag]);
+                       break 2;
+          case 'CHECKBOX': //Draw Checkbox
+                       $type = 'CHECKBOX';
+                       if (isset($attr['CHECKED'])) { $objattr['checked'] = true; } 
+                       else { $objattr['checked'] = false; }
+                       $width = $this->FontSize;
+                       $height = $this->FontSize;
+                       break;
+
+          case 'RADIO': //Draw Radio button
+                       $type = 'RADIO';
+                       if (isset($attr['CHECKED'])) $objattr['checked'] = true;
+                       $width = $this->FontSize;
+                       $height = $this->FontSize;
+                       break;
+
+/*-- IMAGES-CORE --*/
+          case 'IMAGE': // Draw an Image button
+       if(isset($attr['SRC'])) {
+               $type = 'IMAGE';
+               $srcpath = $attr['SRC'];
+               $orig_srcpath = $attr['ORIG_SRC'];
+               // VSPACE and HSPACE converted to margins in MergeCSS
+               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+
+               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
+               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
+               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
+               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
+
+               $objattr['padding_top'] = 0;
+               $objattr['padding_bottom'] = 0;
+               $objattr['padding_left'] = 0;
+               $objattr['padding_right'] = 0;
+
+               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
+
+               $w = 0;
+               $h = 0;
+               if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width']);
+               if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width']);
+
+               $extraheight = $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
+               $extrawidth = $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
+
+               // Image file
+               $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
+               if(!$info) {
+                       $info = $this->_getImage($this->noImageFile);
+                       if ($info) { 
+                               $srcpath = $this->noImageFile; 
+                               $w = ($info['w'] * (25.4/$this->dpi)); 
+                               $h = ($info['h'] * (25.4/$this->dpi));
+                       }
+               }
+               if(!$info) break;
+               if ($info['cs']=='Indexed') { $objattr['Indexed'] = true; }
+               $objattr['file'] = $srcpath;
+               //Default width and height calculation if needed
+               if($w==0 and $h==0) {
+/*-- IMAGES-WMF --*/
+             if ($info['type']=='wmf') { 
+                               // WMF units are twips (1/20pt)
+                               // divide by 20 to get points
+                               // divide by k to get user units
+                               $w = abs($info['w'])/(20*_MPDFK);
+                               $h = abs($info['h']) / (20*_MPDFK);
+                       }
+                       else 
+/*-- END IMAGES-WMF --*/
+             if ($info['type']=='svg') { 
+                               // SVG units are pixels
+                               $w = abs($info['w'])/_MPDFK;
+                               $h = abs($info['h'])/_MPDFK;
+                       }
+                       else {
+                               //Put image at default image dpi
+                               $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
+                               $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
+                       }
+                       if (isset($properties['IMAGE-RESOLUTION'])) { 
+                               if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) {
+                                       $w *= $this->img_dpi / $info['set-dpi'];
+                                       $h *= $this->img_dpi / $info['set-dpi'];
+                               }
+                               else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) {
+                                       $dpi = $m[1]; 
+                                       if ($dpi > 0) {
+                                               $w *= $this->img_dpi / $dpi;
+                                               $h *= $this->img_dpi / $dpi;
+                                       }
+                               }
+                       }
+               }
+               // IF WIDTH OR HEIGHT SPECIFIED
+               if($w==0)       $w=$h*$info['w']/$info['h'];
+               if($h==0)       $h=$w*$info['h']/$info['w'];
+               // Resize to maximum dimensions of page
+               $maxWidth = $this->blk[$this->blklvl]['inner_width'];
+               $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 10) ;
+               if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
+               if ($w + $extrawidth > $maxWidth ) {
+                       $w = $maxWidth - $extrawidth;
+                       $h=$w*$info['h']/$info['w'];
+               }
+               if ($h + $extraheight > $maxHeight ) {
+                       $h = $maxHeight - $extraheight;
+                       $w=$h*$info['w']/$info['h'];
+               }
+               $height = $h + $extraheight;
+               $width = $w + $extrawidth;
+               $objattr['type'] = 'image';
+               $objattr['itype'] = $info['type'];
+               $objattr['orig_h'] = $info['h'];
+               $objattr['orig_w'] = $info['w'];
+/*-- IMAGES-WMF --*/
+               if ($info['type']=='wmf') {
+                       $objattr['wmf_x'] = $info['x'];
+                       $objattr['wmf_y'] = $info['y'];
+               }
+               else 
+/*-- END IMAGES-WMF --*/
+               if ($info['type']=='svg') {
+                       $objattr['wmf_x'] = $info['x'];
+                       $objattr['wmf_y'] = $info['y'];
+               }
+               $objattr['height'] = $h + $extraheight;
+               $objattr['width'] = $w + $extrawidth;
+
+               $objattr['image_height'] = $h;
+               $objattr['image_width'] = $w;
+               $objattr['ID'] = $info['i'];
+               $texto = 'X';
+               if ($this->useActiveForms) {
+                       if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; }
+                       $objattr['type'] = 'input';
+                       $type = 'IMAGE';
+               }
+               break;
+       }
+/*-- END IMAGES-CORE --*/
+
+          case 'BUTTON': // Draw a button
+          case 'SUBMIT': 
+          case 'RESET': 
+                       $type = strtoupper($attr['TYPE']);
+                       if ($type=='IMAGE') { $type = 'BUTTON'; } // src path not found
+                       if(isset($attr['NOPRINT'])) { $objattr['noprint'] = true; }
+                       if (!isset($attr['VALUE'])) {
+                               $objattr['value'] = ucfirst(strtolower($type));
+                       }
+
+                       $texto = " " . $objattr['value'] . " ";
+                       $width = $this->GetStringWidth($texto) + ($this->form->form_element_spacing['button']['outer']['h']*2)+($this->form->form_element_spacing['button']['inner']['h']*2);
+                       $height = $this->FontSize + ($this->form->form_element_spacing['button']['outer']['v']*2)+($this->form->form_element_spacing['button']['inner']['v']*2);
+                       if ($this->useActiveForms) {
+                               if (isset($attr['ONCLICK'])) { $objattr['onClick'] = $attr['ONCLICK']; }
+                       }
+                       break;
+
+          case 'PASSWORD':
+          case 'TEXT': 
+          default:
+                if ($type == '') { $type = 'TEXT'; }
+                   if(strtoupper($attr['TYPE'])=='PASSWORD') { $type = 'PASSWORD'; }
+                if (isset($attr['VALUE'])) {
+                       if ($type == 'PASSWORD') {
+                    $num_stars = mb_strlen($attr['VALUE'],$this->mb_enc );
+                    $texto = str_repeat('*',$num_stars);
+                       }
+                       else { $texto = $attr['VALUE']; }
+                }
+                   $xw = ($this->form->form_element_spacing['input']['outer']['h']*2)+($this->form->form_element_spacing['input']['inner']['h']*2);
+                   $xh = ($this->form->form_element_spacing['input']['outer']['v']*2)+($this->form->form_element_spacing['input']['inner']['v']*2);
+                   if ($w) { $width = $w + $xw; } 
+                   else { $width = (20 * $spacesize) + $xw; }  // Default width in chars
+                if (isset($attr['SIZE']) and ctype_digit($attr['SIZE']) ) $width = ($attr['SIZE'] * $spacesize) + $xw;
+                   $height = $this->FontSize + $xh;
+                if (isset($attr['MAXLENGTH']) and ctype_digit($attr['MAXLENGTH']) ) $objattr['maxlength'] = $attr['MAXLENGTH'];
+                   if ($this->useActiveForms) {
+                       if (isset($attr['ONCALCULATE'])) { $objattr['onCalculate'] = $attr['ONCALCULATE']; }
+                       else if (isset($attr['ONCHANGE'])) { $objattr['onCalculate'] = $attr['ONCHANGE']; }
+                       if (isset($attr['ONVALIDATE'])) { $objattr['onValidate'] = $attr['ONVALIDATE']; }
+                       if (isset($attr['ONKEYSTROKE'])) { $objattr['onKeystroke'] = $attr['ONKEYSTROKE']; }
+                       if (isset($attr['ONFORMAT'])) { $objattr['onFormat'] = $attr['ONFORMAT']; }
+                   }
+                break;
+       }
+
+       $objattr['subtype'] = $type;
+       $objattr['text'] = $texto;
+       $objattr['width'] = $width;
+       $objattr['height'] = $height;
+       $e = "\xbb\xa4\xactype=input,objattr=".serialize($objattr)."\xbb\xa4\xac";
+
+       // Clear properties - tidy up
+       $properties = array();
+
+/*-- TABLES --*/
+       // Output it to buffers
+       if ($this->tableLevel) {
+               $this->_saveCellTextBuffer($e, $this->HREF);
+               $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
+
+       }
+       else {
+/*-- END TABLES --*/
+               $this->_saveTextBuffer($e, $this->HREF);
+       }       // *TABLES*
+
+       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
+       unset($this->InlineProperties[$tag]);
+
+       break;  // END of INPUT
+/*-- END FORMS --*/
+
+
+       // *********** GRAPH  ********************
+     case 'JPGRAPH':
+       if (!$this->useGraphs) { break; }
+       if ($attr['TABLE']) { $gid = strtoupper($attr['TABLE']); }
+       else { $gid = '0'; }
+       if (!is_array($this->graphs[$gid]) || count($this->graphs[$gid])==0 ) { break; }
+       include_once(_MPDF_PATH.'graph.php');
+       $this->graphs[$gid]['attr'] = $attr;
+
+
+       if (isset($this->graphs[$gid]['attr']['WIDTH']) && $this->graphs[$gid]['attr']['WIDTH']) { 
+               $this->graphs[$gid]['attr']['cWIDTH']=$this->ConvertSize($this->graphs[$gid]['attr']['WIDTH'],$pgwidth); 
+       }       // mm
+       if (isset($this->graphs[$gid]['attr']['HEIGHT']) && $this->graphs[$gid]['attr']['HEIGHT']) { 
+               $this->graphs[$gid]['attr']['cHEIGHT']=$this->ConvertSize($this->graphs[$gid]['attr']['HEIGHT'],$pgwidth); 
+       }
+
+       $graph_img = print_graph($this->graphs[$gid],$this->blk[$this->blklvl]['inner_width']);
+       if ($graph_img) { 
+               if(isset($attr['ROTATE'])) {
+                  if ($attr['ROTATE']==90 || $attr['ROTATE']==-90) {
+                       $tmpw = $graph_img['w'];
+                       $graph_img['w']= $graph_img['h'];
+                       $graph_img['h']= $tmpw;
+                  }
+               }
+               $attr['SRC'] = $graph_img['file']; 
+               $attr['WIDTH'] = $graph_img['w']; 
+               $attr['HEIGHT'] = $graph_img['h']; 
+       }
+       else { break; }
+
+       // *********** IMAGE  ********************
+/*-- IMAGES-CORE --*/
+    case 'IMG':
+       if ($this->progressBar) { $this->UpdateProgressBar(1,'','IMG'); }       // *PROGRESS-BAR*
+       $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['padding_top'] = 0;
+               $objattr['padding_bottom'] = 0;
+               $objattr['padding_left'] = 0;
+               $objattr['padding_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+       if(isset($attr['SRC'])) {
+               $srcpath = $attr['SRC'];
+               $orig_srcpath = $attr['ORIG_SRC'];
+               $properties = $this->cssmgr->MergeCSS('',$tag,$attr);
+               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
+                       return; 
+               }
+               // mPDF 5.6.01  - LAYERS
+               if (isset($properties['Z-INDEX']) && $this->currentlayer==0) {
+                       $v = intval($properties['Z-INDEX']); 
+                       if ($v > 0) {
+                               $objattr['z-index'] = $v; 
+                       }
+               }
+
+               $objattr['visibility'] = 'visible'; 
+               if (isset($properties['VISIBILITY'])) {
+                       $v = strtolower($properties['VISIBILITY']);
+                       if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { 
+                               $objattr['visibility'] = $v; 
+                       }
+               }
+
+               // VSPACE and HSPACE converted to margins in MergeCSS
+               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
+               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
+               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
+               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
+
+               if (isset($properties['VERTICAL-ALIGN'])) { $objattr['vertical-align'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
+               $w = 0;
+               $h = 0;
+               if(isset($properties['WIDTH'])) $w = $this->ConvertSize($properties['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['WIDTH'])) $w = $this->ConvertSize($attr['WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               if(isset($properties['HEIGHT'])) $h = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['HEIGHT'])) $h = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               // mPDF 5.5.15          // mPDF 5.6.60
+               $maxw=$maxh=$minw=$minh=false;
+               if(isset($properties['MAX-WIDTH'])) $maxw = $this->ConvertSize($properties['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['MAX-WIDTH'])) $maxw = $this->ConvertSize($attr['MAX-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               if(isset($properties['MAX-HEIGHT'])) $maxh = $this->ConvertSize($properties['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['MAX-HEIGHT'])) $maxh = $this->ConvertSize($attr['MAX-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               if(isset($properties['MIN-WIDTH'])) $minw = $this->ConvertSize($properties['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['MIN-WIDTH'])) $minw = $this->ConvertSize($attr['MIN-WIDTH'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               if(isset($properties['MIN-HEIGHT'])) $minh = $this->ConvertSize($properties['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+               else if(isset($attr['MIN-HEIGHT'])) $minh = $this->ConvertSize($attr['MIN-HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+
+               if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
+               if ($this->HREF) {
+                       if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
+                               $href = $this->HREF;
+                               while(array_key_exists($href,$this->internallink)) $href="#".$href;
+                               $this->internallink[$href] = $this->AddLink();
+                               $objattr['link'] = $this->internallink[$href];
+                       }
+                       else { $objattr['link'] = $this->HREF; }
+               }
+               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
+               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
+
+/*-- BACKGROUNDS --*/
+               if(isset($properties['GRADIENT-MASK']) && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/',$properties['GRADIENT-MASK'])) {
+                       $objattr['GRADIENT-MASK'] = $properties['GRADIENT-MASK'];
+               }
+/*-- END BACKGROUNDS --*/
+
+               // Image file
+               $info=$this->_getImage($srcpath, true, true, $orig_srcpath);
+               if(!$info) {
+                       $info = $this->_getImage($this->noImageFile);
+                       if ($info) { 
+                               $srcpath = $this->noImageFile; 
+                               $w = ($info['w'] * (25.4/$this->dpi)); 
+                               $h = ($info['h'] * (25.4/$this->dpi));
+                       }
+               }
+               if(!$info) break;
+
+               if(isset($attr['ROTATE'])) { $image_orientation = $attr['ROTATE']; }
+               else if(isset($properties['IMAGE-ORIENTATION'])) { $image_orientation = $properties['IMAGE-ORIENTATION']; }
+               else { $image_orientation = 0; }
+               if($image_orientation) {
+                  if ($image_orientation==90 || $image_orientation==-90 || $image_orientation==270) {
+                       $tmpw = $info['w'];
+                       $info['w'] = $info['h'];
+                       $info['h'] = $tmpw;
+                  }
+                  $objattr['ROTATE'] = $image_orientation;
+               }
+
+               $objattr['file'] = $srcpath;
+               //Default width and height calculation if needed
+               if($w==0 and $h==0) {
+/*-- IMAGES-WMF --*/
+             if ($info['type']=='wmf') { 
+                               // WMF units are twips (1/20pt)
+                               // divide by 20 to get points
+                               // divide by k to get user units
+                               $w = abs($info['w'])/(20*_MPDFK);
+                               $h = abs($info['h']) / (20*_MPDFK);
+                       }
+                       else 
+/*-- END IMAGES-WMF --*/
+             if ($info['type']=='svg') { 
+                               // SVG units are pixels
+                               $w = abs($info['w'])/_MPDFK;
+                               $h = abs($info['h'])/_MPDFK;
+                       }
+                       else {
+                               //Put image at default image dpi
+                               $w=($info['w']/_MPDFK) * (72/$this->img_dpi);
+                               $h=($info['h']/_MPDFK) * (72/$this->img_dpi);
+                       }
+                       if (isset($properties['IMAGE-RESOLUTION'])) { 
+                               if (preg_match('/from-image/i', $properties['IMAGE-RESOLUTION']) && isset($info['set-dpi']) && $info['set-dpi']>0) {
+                                       $w *= $this->img_dpi / $info['set-dpi'];
+                                       $h *= $this->img_dpi / $info['set-dpi'];
+                               }
+                               else if (preg_match('/(\d+)dpi/i', $properties['IMAGE-RESOLUTION'], $m)) {
+                                       $dpi = $m[1]; 
+                                       if ($dpi > 0) {
+                                               $w *= $this->img_dpi / $dpi;
+                                               $h *= $this->img_dpi / $dpi;
+                                       }
+                               }
+                       }
+               }
+               // IF WIDTH OR HEIGHT SPECIFIED
+               if($w==0) $w=abs($h*$info['w']/$info['h']); 
+               if($h==0) $h=abs($w*$info['h']/$info['w']);
+
+               // mPDF 5.5.15
+               if ($minw && $w<$minw) { $w = $minw; $h=abs($w*$info['h']/$info['w']); }
+               if ($maxw && $w>$maxw) { $w = $maxw; $h=abs($w*$info['h']/$info['w']); }
+               if ($minh && $h<$minh) { $h = $minh; $w=abs($h*$info['w']/$info['h']); }
+               if ($maxh && $h>$maxh) { $h = $maxh; $w=abs($h*$info['w']/$info['h']); }
+
+               // Resize to maximum dimensions of page
+               $maxWidth = $this->blk[$this->blklvl]['inner_width'];
+               $maxHeight = $this->h - ($this->tMargin + $this->bMargin + 1) ;
+               if ($this->fullImageHeight) { $maxHeight = $this->fullImageHeight; }
+               if ($w + $extrawidth > $maxWidth ) {
+                       $w = $maxWidth - $extrawidth;
+                       $h=abs($w*$info['h']/$info['w']);
+               }
+
+               if ($h + $extraheight > $maxHeight ) {
+                       $h = $maxHeight - $extraheight;
+                       $w=abs($h*$info['w']/$info['h']);
+               }
+               $objattr['type'] = 'image';
+               $objattr['itype'] = $info['type'];
+
+               $objattr['orig_h'] = $info['h'];
+               $objattr['orig_w'] = $info['w'];
+/*-- IMAGES-WMF --*/
+               if ($info['type']=='wmf') {
+                       $objattr['wmf_x'] = $info['x'];
+                       $objattr['wmf_y'] = $info['y'];
+               }
+               else 
+/*-- END IMAGES-WMF --*/
+               if ($info['type']=='svg') {
+                       $objattr['wmf_x'] = $info['x'];
+                       $objattr['wmf_y'] = $info['y'];
+               }
+               $objattr['height'] = $h + $extraheight;
+               $objattr['width'] = $w + $extrawidth;
+               $objattr['image_height'] = $h;
+               $objattr['image_width'] = $w;
+/*-- CSS-IMAGE-FLOAT --*/
+               if (!$this->ColActive && !$this->tableLevel && !$this->listlvl && !$this->kwt && !$this->keep_block_together) {
+                 if (isset($properties['FLOAT']) && (strtoupper($properties['FLOAT']) == 'RIGHT' || strtoupper($properties['FLOAT']) == 'LEFT')) {
+                       $objattr['float'] = substr(strtoupper($properties['FLOAT']),0,1);
+                 }
+               }
+/*-- END CSS-IMAGE-FLOAT --*/
+
+               $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
+
+               // Clear properties - tidy up
+               $properties = array();
+
+/*-- TABLES --*/
+               // Output it to buffers
+               if ($this->tableLevel) {
+                       $this->_saveCellTextBuffer($e, $this->HREF);
+                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
+               }
+               else {
+/*-- END TABLES --*/
+                       $this->_saveTextBuffer($e, $this->HREF);
+               }       // *TABLES*
+/*-- ANNOTATIONS --*/
+               if ($this->title2annots && isset($attr['TITLE'])) {
+                       $objattr = array();
+                       $objattr['margin_top'] = 0;
+                       $objattr['margin_bottom'] = 0;
+                       $objattr['margin_left'] = 0;
+                       $objattr['margin_right'] = 0;
+                       $objattr['width'] = 0;
+                       $objattr['height'] = 0;
+                       $objattr['border_top']['w'] = 0;
+                       $objattr['border_bottom']['w'] = 0;
+                       $objattr['border_left']['w'] = 0;
+                       $objattr['border_right']['w'] = 0;
+                       $objattr['CONTENT'] = $attr['TITLE'];
+                       $objattr['type'] = 'annot';
+                       $objattr['POS-X'] = 0;
+                       $objattr['POS-Y'] = 0;
+                       $objattr['ICON'] = 'Comment';
+                       $objattr['AUTHOR'] = '';
+                       $objattr['SUBJECT'] = '';
+                       $objattr['OPACITY'] = $this->annotOpacity; 
+                       $objattr['COLOR'] = $this->ConvertColor('yellow');
+                       $e = "\xbb\xa4\xactype=annot,objattr=".serialize($objattr)."\xbb\xa4\xac";
+                       if($this->tableLevel) { // *TABLES*
+                               $this->cell[$this->row][$this->col]['textbuffer'][] = array($e);        // *TABLES*
+                       }       // *TABLES*
+                       else  { // *TABLES*
+                               $this->textbuffer[] = array($e);
+                       }       // *TABLES*
+               }
+/*-- END ANNOTATIONS --*/
+       }
+       break;
+/*-- END IMAGES-CORE --*/
+
+
+       // *********** CIRCULAR TEXT = TEXTCIRCLE  ********************
+    case 'TEXTCIRCLE':
+               $objattr = array();
+               $objattr['margin_top'] = 0;
+               $objattr['margin_bottom'] = 0;
+               $objattr['margin_left'] = 0;
+               $objattr['margin_right'] = 0;
+               $objattr['padding_top'] = 0;
+               $objattr['padding_bottom'] = 0;
+               $objattr['padding_left'] = 0;
+               $objattr['padding_right'] = 0;
+               $objattr['width'] = 0;
+               $objattr['height'] = 0;
+               $objattr['border_top']['w'] = 0;
+               $objattr['border_bottom']['w'] = 0;
+               $objattr['border_left']['w'] = 0;
+               $objattr['border_right']['w'] = 0;
+               $objattr['top-text'] = '';
+               $objattr['bottom-text'] = '';
+               $objattr['r'] = 20;     // radius (default value here for safety)
+               $objattr['space-width'] = 120;
+               $objattr['char-width'] = 100;
+
+               $this->InlineProperties[$tag] = $this->saveInlineProperties();
+               $properties = $this->cssmgr->MergeCSS('INLINE',$tag,$attr);
+
+               if(isset($properties ['DISPLAY']) && strtolower($properties ['DISPLAY'])=='none') { 
+                       return; 
+               }
+               if (isset($attr['R'])) { $objattr['r']=$this->ConvertSize($attr['R'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if(isset($attr['TOP-TEXT'])) { 
+                       $objattr['top-text'] = strcode2utf($attr['TOP-TEXT']);
+                       $objattr['top-text'] = $this->lesser_entity_decode($objattr['top-text']);
+                       if ($this->onlyCoreFonts)
+                               $objattr['top-text'] = mb_convert_encoding($objattr['top-text'], $this->mb_enc,'UTF-8'); 
+               }
+               if(isset($attr['BOTTOM-TEXT'])) { 
+                       $objattr['bottom-text'] = strcode2utf($attr['BOTTOM-TEXT']);
+                       $objattr['bottom-text'] = $this->lesser_entity_decode($objattr['bottom-text']);
+                       if ($this->onlyCoreFonts)
+                               $objattr['bottom-text'] = mb_convert_encoding($objattr['bottom-text'], $this->mb_enc,'UTF-8'); 
+               }
+               if(isset($attr['SPACE-WIDTH']) && $attr['SPACE-WIDTH']) { $objattr['space-width'] = $attr['SPACE-WIDTH']; }
+               if(isset($attr['CHAR-WIDTH']) && $attr['CHAR-WIDTH']) { $objattr['char-width'] = $attr['CHAR-WIDTH']; }
+
+               // VISIBILITY
+               $objattr['visibility'] = 'visible'; 
+               if (isset($properties['VISIBILITY'])) {
+                       $v = strtolower($properties['VISIBILITY']);
+                       if (($v == 'hidden' || $v == 'printonly' || $v == 'screenonly') && $this->visibility=='visible') { 
+                               $objattr['visibility'] = $v; 
+                       }
+               }
+               // mPDF 5.5.23
+               if (isset($properties['FONT-SIZE'])) { 
+                 if (strtolower($properties['FONT-SIZE'])=='auto') {
+                       if ($objattr['top-text'] && $objattr['bottom-text']) {
+                               $objattr['fontsize'] = -2;
+                       }
+                       else {
+                               $objattr['fontsize'] = -1;
+                       }
+                 }
+                 else {
+                       $mmsize = $this->ConvertSize($properties['FONT-SIZE'],($this->default_font_size/_MPDFK));
+                       $this->SetFontSize($mmsize*_MPDFK,false);
+                       $objattr['fontsize'] = $this->FontSizePt;
+                 }
+               }
+               // mPDF 5.5.23
+               if(isset($attr['DIVIDER'])) {
+                       $objattr['divider'] = strcode2utf($attr['DIVIDER']);
+                       $objattr['divider'] = $this->lesser_entity_decode($objattr['divider']);
+                       if ($this->onlyCoreFonts)
+                               $objattr['divider'] = mb_convert_encoding($objattr['divider'], $this->mb_enc,'UTF-8'); 
+
+               }
+
+               if (isset($properties['COLOR'])) { $objattr['color'] = $this->ConvertColor($properties['COLOR']); }
+
+               $objattr['fontstyle'] = '';
+               if (isset($properties['FONT-WEIGHT'])) {
+                       if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $objattr['fontstyle'] .= 'B'; }
+               }
+               if (isset($properties['FONT-STYLE'])) {
+                       if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $objattr['fontstyle'] .= 'I'; }
+               }
+
+               if (isset($properties['FONT-FAMILY'])) { 
+                       $this->SetFont($properties['FONT-FAMILY'],$this->FontStyle,0,false);
+               }
+               $objattr['fontfamily'] = $this->FontFamily;
+
+               // VSPACE and HSPACE converted to margins in MergeCSS
+               if (isset($properties['MARGIN-TOP'])) { $objattr['margin_top']=$this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-BOTTOM'])) { $objattr['margin_bottom'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-LEFT'])) { $objattr['margin_left'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['MARGIN-RIGHT'])) { $objattr['margin_right'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['PADDING-TOP'])) { $objattr['padding_top']=$this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-BOTTOM'])) { $objattr['padding_bottom'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-LEFT'])) { $objattr['padding_left'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+               if (isset($properties['PADDING-RIGHT'])) { $objattr['padding_right'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+               if (isset($properties['BORDER-TOP'])) { $objattr['border_top'] = $this->border_details($properties['BORDER-TOP']); }
+               if (isset($properties['BORDER-BOTTOM'])) { $objattr['border_bottom'] = $this->border_details($properties['BORDER-BOTTOM']); }
+               if (isset($properties['BORDER-LEFT'])) { $objattr['border_left'] = $this->border_details($properties['BORDER-LEFT']); }
+               if (isset($properties['BORDER-RIGHT'])) { $objattr['border_right'] = $this->border_details($properties['BORDER-RIGHT']); }
+
+               if (isset($properties['OPACITY']) && $properties['OPACITY'] > 0 && $properties['OPACITY'] <= 1) { $objattr['opacity'] = $properties['OPACITY']; }
+               if (isset($properties['BACKGROUND-COLOR']) && $properties['BACKGROUND-COLOR'] != '') { $objattr['bgcolor'] = $this->ConvertColor($properties['BACKGROUND-COLOR']); }
+               else { $objattr['bgcolor'] = false; }
+               if ($this->HREF) {
+                       if (strpos($this->HREF,".") === false && strpos($this->HREF,"@") !== 0) {
+                               $href = $this->HREF;
+                               while(array_key_exists($href,$this->internallink)) $href="#".$href;
+                               $this->internallink[$href] = $this->AddLink();
+                               $objattr['link'] = $this->internallink[$href];
+                       }
+                       else { $objattr['link'] = $this->HREF; }
+               }
+               $extraheight = $objattr['padding_top'] + $objattr['padding_bottom'] + $objattr['margin_top'] + $objattr['margin_bottom'] + $objattr['border_top']['w'] + $objattr['border_bottom']['w'];
+               $extrawidth = $objattr['padding_left'] + $objattr['padding_right'] + $objattr['margin_left'] + $objattr['margin_right'] + $objattr['border_left']['w'] + $objattr['border_right']['w'];
+
+
+               $w = $objattr['r']*2;
+               $h = $w;
+               $objattr['height'] = $h + $extraheight;
+               $objattr['width'] = $w + $extrawidth;
+               $objattr['type'] = 'textcircle';
+
+               $e = "\xbb\xa4\xactype=image,objattr=".serialize($objattr)."\xbb\xa4\xac";
+
+               // Clear properties - tidy up
+               $properties = array();
+
+/*-- TABLES --*/
+               // Output it to buffers
+               if ($this->tableLevel) {
+                       $this->_saveCellTextBuffer($e, $this->HREF);
+                       $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ;
+               }
+               else {
+/*-- END TABLES --*/
+                       $this->_saveTextBuffer($e, $this->HREF);
+               }       // *TABLES*
+
+               if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
+               unset($this->InlineProperties[$tag]);
+
+               break;
+
+
+/*-- TABLES --*/
+
+    case 'TABLE': // TABLE-BEGIN
+       $this->tdbegin = false;
+       $this->lastoptionaltag = '';
+       // Disable vertical justification in columns
+       if ($this->ColActive) { $this->colvAlign = ''; }        // *COLUMNS*
+       if ($this->lastblocklevelchange == 1) { $blockstate = 1; }      // Top margins/padding only
+       else if ($this->lastblocklevelchange < 1) { $blockstate = 0; }  // NO margins/padding
+       // called from block after new div e.g. <div> ... <table> ...    Outputs block top margin/border and padding
+       if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) {
+               $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']);
+               $this->finishFlowingBlock(true);        // true = END of flowing block
+       }
+       else if (!$this->tableLevel && count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); }
+
+       $this->textbuffer=array();
+       $this->lastblocklevelchange = -1;
+       if ($this->tableLevel) {        // i.e. now a nested table coming...
+               // Save current level table
+               // mPDF 5.4.10
+               $this->cell['PARENTCELL'] = $this->saveInlineProperties();
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties']= $this->base_table_properties;
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell;
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow'] = $this->row;
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol'] = $this->col;
+       }
+       $this->tableLevel++;
+       $this->cssmgr->tbCSSlvl++;
+
+       if ($this->tableLevel>1) {      // inherit table properties from cell in which nested
+               $this->base_table_properties['FONT-KERNING'] = $this->kerning ;
+               $this->base_table_properties['LETTER-SPACING'] = $this->lSpacingCSS ;
+               $this->base_table_properties['WORD-SPACING'] = $this->wSpacingCSS ;
+       }
+
+       if (isset($this->tbctr[$this->tableLevel])) { $this->tbctr[$this->tableLevel]++; }
+       else { $this->tbctr[$this->tableLevel] = 1; }
+
+       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['level'] = $this->tableLevel;
+       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['levelid'] = $this->tbctr[$this->tableLevel];
+
+       if ($this->tableLevel > $this->innermostTableLevel) { $this->innermostTableLevel = $this->tableLevel; }
+       if ($this->tableLevel > 1) { 
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nestedpos'] = array($this->row,$this->col,$this->tbctr[($this->tableLevel-1)]); 
+       }
+       //++++++++++++++++++++++++++++
+
+       $this->cell = array();
+       $this->col=-1; //int
+       $this->row=-1; //int
+       $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]];
+       // New table - any level
+       if ($this->cacheTables) {
+               $this->packTableData = true;    // required for cacheTables
+               $this->simpleTables = false;  // Cannot co-exist with cacheTables
+               $table['cache'] = _MPDF_TEMP_PATH.'_tempTblCache'.RAND(1,1000000).'.dat';
+               $fh = fopen($table['cache'] , "wb") or $this->Error("When using cacheTables, you must have read/write access to cache files (".$table['cache'] .")");
+               fwrite($fh, "\x00");
+               fclose($fh);
+               $table['ptr'] = 1 ;     // Must not be 0
+       }
+
+       $table['direction'] = $this->directionality;
+       $table['bgcolor'] = false;
+       $table['va'] = false;
+       $table['txta'] = false;
+       $table['topntail'] = false;
+       $table['thead-underline'] = false;
+       $table['border'] = false;
+       $table['border_details']['R']['w'] = 0;
+       $table['border_details']['L']['w'] = 0;
+       $table['border_details']['T']['w'] = 0;
+       $table['border_details']['B']['w'] = 0;
+       $table['border_details']['R']['style'] = '';
+       $table['border_details']['L']['style'] = '';
+       $table['border_details']['T']['style'] = '';
+       $table['border_details']['B']['style'] = '';
+       $table['max_cell_border_width']['R'] = 0;
+       $table['max_cell_border_width']['L'] = 0;
+       $table['max_cell_border_width']['T'] = 0;
+       $table['max_cell_border_width']['B'] = 0;
+       $table['padding']['L'] = false;
+       $table['padding']['R'] = false;
+       $table['padding']['T'] = false;
+       $table['padding']['B'] = false;
+       $table['margin']['L'] = false;
+       $table['margin']['R'] = false;
+       $table['margin']['T'] = false;
+       $table['margin']['B'] = false;
+       $table['a'] = false;
+       $table['border_spacing_H'] = false;
+       $table['border_spacing_V'] = false;
+       $table['decimal_align'] = false;        // mPDF 5.6.13
+       $this->Reset();
+       $this->InlineProperties = array();
+       $this->spanlvl = 0;
+       $table['nc'] = $table['nr'] = 0;
+       $this->tablethead = 0;
+       $this->tabletfoot = 0;
+       $this->tabletheadjustfinished = false;
+
+
+       if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins && $this->tableLevel==1) { $lastbottommargin = $this->lastblockbottommargin; }
+       else { $lastbottommargin = 0; }
+       $this->lastblockbottommargin = 0;
+       $this->blockjustfinished=false;
+
+       if ($this->tableLevel==1) { 
+               $this->tableCJK = false;
+               $this->table_lineheight = $this->normalLineheight;
+               $table['headernrows'] = 0;
+               $table['footernrows'] = 0; 
+               $this->base_table_properties = array();
+       }
+
+       // ADDED CSS FUNCIONS FOR TABLE 
+       if ($this->cssmgr->tbCSSlvl==1) {
+               $properties = $this->cssmgr->MergeCSS('TOPTABLE',$tag,$attr);
+       }
+       else {
+               $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
+       }
+       $w = '';
+       if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; }
+       else if (isset($attr['WIDTH']) && $attr['WIDTH']) { $w = $attr['WIDTH']; }
+
+
+       if(isset($properties['DIRECTION']) && $properties['DIRECTION']) { $table['direction'] = strtolower($properties['DIRECTION']); }
+       else if(isset($attr['DIR']) && $attr['DIR']) { $table['direction'] = strtolower($attr['DIR']); }
+       else if (!isset($table['direction'])){ $table['direction'] = $this->blk[$this->blklvl]['direction']; }
+
+       if (isset($properties['BACKGROUND-COLOR'])) { $table['bgcolor'][-1] = $properties['BACKGROUND-COLOR'];  }
+       else if (isset($properties['BACKGROUND'])) { $table['bgcolor'][-1] = $properties['BACKGROUND']; }
+       else if (isset($attr['BGCOLOR'])) { $table['bgcolor'][-1]       = $attr['BGCOLOR']; }
+       if (isset($properties['VERTICAL-ALIGN'])) { $table['va'] = $align[strtolower($properties['VERTICAL-ALIGN'])]; }
+       if (isset($properties['TEXT-ALIGN'])) { $table['txta'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
+       if (isset($attr['ALIGN'])) { $table['a']        = $align[strtolower($attr['ALIGN'])]; }
+       if (!$table['a']) { 
+               if ($table['direction'] == 'rtl' ) { $table['a'] = 'R'; }
+               else { $table['a'] = 'L'; }
+       }
+
+       if (isset($properties['AUTOSIZE']) && $properties['AUTOSIZE'] && $this->tableLevel ==1) { 
+               $this->shrink_this_table_to_fit = $properties['AUTOSIZE']; 
+               if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 0; }
+       }
+       if (isset($properties['ROTATE']) && $properties['ROTATE'] && $this->tableLevel ==1)     { 
+               $this->table_rotate = $properties['ROTATE']; 
+       }
+       if (isset($properties['TOPNTAIL'])) { $table['topntail'] = $properties['TOPNTAIL']; }
+       if (isset($properties['THEAD-UNDERLINE'])) { $table['thead-underline'] = $properties['THEAD-UNDERLINE']; }
+
+       if (isset($properties['BORDER'])) { 
+               $bord = $this->border_details($properties['BORDER']);
+               if ($bord['s']) {
+                       $table['border'] = _BORDER_ALL;
+                       $table['border_details']['R'] = $bord;
+                       $table['border_details']['L'] = $bord;
+                       $table['border_details']['T'] = $bord;
+                       $table['border_details']['B'] = $bord;
+               }
+       }
+       if (isset($properties['BORDER-RIGHT'])) { 
+         if ($table['direction'] == 'rtl') {   // *RTL*
+               $table['border_details']['R'] = $this->border_details($properties['BORDER-LEFT']);      // *RTL*
+         }     // *RTL*
+         else {        // *RTL*
+               $table['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']);
+         }     // *RTL*
+         $this->setBorder($table['border'], _BORDER_RIGHT, $table['border_details']['R']['s']); 
+       }
+       if (isset($properties['BORDER-LEFT'])) { 
+         if ($table['direction'] == 'rtl') {   // *RTL*
+               $table['border_details']['L'] = $this->border_details($properties['BORDER-RIGHT']);     // *RTL*
+         }     // *RTL*
+         else {        // *RTL*
+               $table['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']);
+         }     // *RTL*
+         $this->setBorder($table['border'], _BORDER_LEFT, $table['border_details']['L']['s']); 
+       }
+       if (isset($properties['BORDER-BOTTOM'])) { 
+               $table['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']);
+               $this->setBorder($table['border'], _BORDER_BOTTOM, $table['border_details']['B']['s']); 
+       }
+       if (isset($properties['BORDER-TOP'])) { 
+               $table['border_details']['T'] = $this->border_details($properties['BORDER-TOP']);
+               $this->setBorder($table['border'], _BORDER_TOP, $table['border_details']['T']['s']); 
+       }
+       if ($table['border']){
+                 $this->table_border_css_set = 1;
+       }
+       else {
+         $this->table_border_css_set = 0;
+       }
+
+       if (isset($properties['FONT-FAMILY'])) { 
+               $this->default_font = $properties['FONT-FAMILY'];
+               $this->SetFont($this->default_font,'',0,false);
+       }
+       $this->base_table_properties['FONT-FAMILY'] = $this->FontFamily;        // mPDF 5.4.10
+
+       if (isset($properties['FONT-SIZE'])) { 
+          // mPDF 5.4.10
+          if ($this->tableLevel>1) { $mmsize = $this->ConvertSize($properties['FONT-SIZE'], $this->base_table_properties['FONT-SIZE']); }
+          else { $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK); }
+          if ($mmsize) {
+               $this->default_font_size = $mmsize*(_MPDFK);
+               $this->SetFontSize($this->default_font_size,false);
+          }
+       }
+       $this->base_table_properties['FONT-SIZE'] = $this->FontSize.'mm';       // mPDF 5.4.10
+
+       if (isset($properties['FONT-WEIGHT'])) {
+               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->base_table_properties['FONT-WEIGHT'] = 'BOLD'; }
+       }
+       if (isset($properties['FONT-STYLE'])) {
+               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->base_table_properties['FONT-STYLE'] = 'ITALIC'; }
+       }
+       if (isset($properties['COLOR'])) {
+               $this->base_table_properties['COLOR'] = $properties['COLOR'];
+       }
+       if (isset($properties['FONT-KERNING'])) {
+               $this->base_table_properties['FONT-KERNING'] = $properties['FONT-KERNING'];
+       }
+       if (isset($properties['LETTER-SPACING'])) {
+               $this->base_table_properties['LETTER-SPACING'] = $properties['LETTER-SPACING'];
+       }
+       if (isset($properties['WORD-SPACING'])) {
+               $this->base_table_properties['WORD-SPACING'] = $properties['WORD-SPACING'];
+       }
+
+       if (isset($properties['PADDING-LEFT'])) { 
+               $table['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       if (isset($properties['PADDING-RIGHT'])) { 
+               $table['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       if (isset($properties['PADDING-TOP'])) { 
+               $table['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       if (isset($properties['PADDING-BOTTOM'])) { 
+               $table['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+
+       if (isset($properties['MARGIN-TOP'])) { 
+               if ($lastbottommargin) { 
+                       $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+                       if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; }
+                       else { $properties['MARGIN-TOP'] = 0; }
+               }
+               $table['margin']['T'] = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+       }
+
+       if (isset($properties['MARGIN-BOTTOM'])) { 
+               $table['margin']['B'] = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+       }
+       if (isset($properties['MARGIN-LEFT'])) {
+               $table['margin']['L'] = $this->ConvertSize($properties['MARGIN-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+       }
+
+       if (isset($properties['MARGIN-RIGHT'])) {
+               $table['margin']['R'] = $this->ConvertSize($properties['MARGIN-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+       }
+       if (isset($properties['MARGIN-LEFT']) && isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-LEFT'])=='auto' && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
+               $table['a'] = 'C'; 
+       }
+       else if (isset($properties['MARGIN-LEFT']) && strtolower($properties['MARGIN-LEFT'])=='auto') { 
+               $table['a'] = 'R'; 
+       }
+       else if (isset($properties['MARGIN-RIGHT']) && strtolower($properties['MARGIN-RIGHT'])=='auto') { 
+               $table['a'] = 'L'; 
+       }
+
+       if (isset($properties['LINE-HEIGHT']) && $this->tableLevel==1) { 
+               $this->table_lineheight = $this->fixLineheight($properties['LINE-HEIGHT']);
+               if (!$this->table_lineheight) { $this->table_lineheight = $this->normalLineheight; }
+       }
+
+       if (isset($properties['BORDER-COLLAPSE']) && strtoupper($properties['BORDER-COLLAPSE'])=='SEPARATE') { 
+               $table['borders_separate'] = true; 
+       }
+       else { 
+               $table['borders_separate'] = false; 
+       }
+
+       if (!$table['borders_separate']) { $table['border_spacing_H'] = $table['border_spacing_V'] = 0; }
+       else if (isset($attr['CELLSPACING'])) { 
+               $table['border_spacing_H'] = $table['border_spacing_V'] = $this->ConvertSize($attr['CELLSPACING'],$this->blk[$this->blklvl]['inner_width']); 
+       }
+       if (isset($properties['BORDER-SPACING-H'])) { 
+               $table['border_spacing_H'] = $this->ConvertSize($properties['BORDER-SPACING-H'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+       }
+       if (isset($properties['BORDER-SPACING-V'])) { 
+               $table['border_spacing_V'] = $this->ConvertSize($properties['BORDER-SPACING-V'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+       }
+
+       if (isset($properties['EMPTY-CELLS'])) { 
+               $table['empty_cells'] = strtolower($properties['EMPTY-CELLS']);         // 'hide'  or 'show'
+       }
+       else { $table['empty_cells'] = ''; } 
+
+       if (isset($properties['PAGE-BREAK-INSIDE']) && strtoupper($properties['PAGE-BREAK-INSIDE'])=='AVOID' && $this->tableLevel==1 && !$this->writingHTMLfooter) {
+               $this->table_keep_together = true; 
+       }
+       else if ($this->tableLevel==1) { 
+               $this->table_keep_together = false; 
+       }
+       if (isset($properties['PAGE-BREAK-AFTER']) && $this->tableLevel==1) {
+               $table['page_break_after'] = strtoupper($properties['PAGE-BREAK-AFTER']);
+       }
+
+/*-- BACKGROUNDS --*/
+       if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $table['gradient'] = $properties['BACKGROUND-GRADIENT']; }
+
+       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) {
+               $ret = $this->SetBackground($properties, $currblk['inner_width']);
+               if ($ret) { $table['background-image'] = $ret; }
+       }
+/*-- END BACKGROUNDS --*/
+
+       if (isset($properties['OVERFLOW']))     { 
+               $table['overflow'] = strtolower($properties['OVERFLOW']);       // 'hidden' 'wrap' or 'visible' or 'auto'
+               if (($this->ColActive || $this->tableLevel>1) && $table['overflow']=='visible') { unset($table['overflow']); }
+       }
+
+       $properties = array();
+
+
+
+       if (isset($attr['CELLPADDING'])) {
+               $table['cell_padding'] = $attr['CELLPADDING'];
+       }
+       else {
+               $table['cell_padding'] = false;
+       }
+
+       if (isset($attr['BORDER']) && $attr['BORDER']=='1') {   // mPDF 5.5.08
+               $this->table_border_attr_set = 1;       // mPDF 5.5.08
+               $bord = $this->border_details('#000000 1px solid');
+               if ($bord['s']) {
+                       $table['border'] = _BORDER_ALL;
+                       $table['border_details']['R'] = $bord;
+                       $table['border_details']['L'] = $bord;
+                       $table['border_details']['T'] = $bord;
+                       $table['border_details']['B'] = $bord;
+               }
+       }
+       else {
+               $this->table_border_attr_set = 0;
+       }
+
+       if ($w) {
+               $maxwidth = $this->blk[$this->blklvl]['inner_width'];
+               if ($table['borders_separate']) { 
+                       $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['border_details']['L']['w']/2 + $table['border_details']['R']['w']/2;
+               }
+               else { 
+                       $tblblw = $table['margin']['L'] + $table['margin']['R'] + $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2;
+               }
+               if (strpos($w,'%') && $this->tableLevel == 1 && !$this->ignore_table_percents ) { 
+                       // % needs to be of inner box without table margins etc.
+                       $maxwidth -= $tblblw ;
+                       $wmm = $this->ConvertSize($w,$maxwidth,$this->FontSize,false);
+                       $table['w'] = $wmm + $tblblw ;
+               }
+               if (strpos($w,'%') && $this->tableLevel > 1 && !$this->ignore_table_percents && $this->keep_table_proportions) { 
+                       $table['wpercent'] = $w + 0;    // makes 80% -> 80
+               }
+               if (!strpos($w,'%') && !$this->ignore_table_widths ) {
+                       $wmm = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+                       $table['w'] = $wmm + $tblblw ;
+               }
+               if (!$this->keep_table_proportions) {
+                       if (isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width']) { $table['w'] = $this->blk[$this->blklvl]['inner_width']; }
+               }
+       }
+
+       if (isset($attr['AUTOSIZE']) && $this->tableLevel==1)   { 
+               $this->shrink_this_table_to_fit = $attr['AUTOSIZE']; 
+               if ($this->shrink_this_table_to_fit < 1) { $this->shrink_this_table_to_fit = 1; }
+       }
+       if (isset($attr['ROTATE']) && $this->tableLevel==1)     { 
+               $this->table_rotate = $attr['ROTATE']; 
+       }
+
+       //++++++++++++++++++++++++++++
+       // keeping block together on one page
+       // Autosize is now forced therefore keep block together disabled
+       if ($this->keep_block_together) {
+               $this->keep_block_together = 0;
+               $this->printdivbuffer();
+               $this->blk[$this->blklvl]['keep_block_together'] = 0;
+       }
+       if ($this->table_rotate) {
+               $this->tbrot_Links = array();
+               $this->tbrot_Annots = array();
+               $this->tbrotForms = array();
+               $this->tbrot_Reference = array();
+               $this->tbrot_BMoutlines = array();
+               $this->tbrot_toc = array();
+       }
+
+       if ($this->kwt) {
+               if ($this->table_rotate) { $this->table_keep_together = true; }
+               $this->kwt = false;
+               $this->kwt_saved = true;
+       }
+
+       if ($this->tableLevel==1 && $this->useGraphs) { 
+               if (isset($attr['ID']) && $attr['ID']) { $this->currentGraphId = strtoupper($attr['ID']); }
+               else { $this->currentGraphId = '0'; }
+               $this->graphs[$this->currentGraphId] = array();
+       }
+       //++++++++++++++++++++++++++++
+       $this->plainCell_properties = array();
+       unset($table);
+       break;
+
+    case 'THEAD':
+       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
+       $this->cssmgr->tbCSSlvl++;
+       $this->tablethead = 1;
+       $this->tabletfoot = 0; 
+       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
+       if (isset($properties['FONT-WEIGHT'])) {
+               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->thead_font_weight = 'B'; }
+               else { $this->thead_font_weight = ''; }
+       }
+
+       if (isset($properties['FONT-STYLE'])) {
+               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->thead_font_style = 'I'; }
+               else { $this->thead_font_style = ''; }
+       }
+       if (isset($properties['FONT-VARIANT'])) {
+               if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->thead_font_smCaps = 'S'; }
+               else { $this->thead_font_smCaps = ''; }
+       }
+
+       if (isset($properties['VERTICAL-ALIGN'])) {
+               $this->thead_valign_default = $properties['VERTICAL-ALIGN'];
+       }
+       if (isset($properties['TEXT-ALIGN'])) {
+               $this->thead_textalign_default = $properties['TEXT-ALIGN'];
+       }
+       $properties = array();
+       break;
+
+    case 'TFOOT':
+       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
+       $this->cssmgr->tbCSSlvl++;
+       $this->tabletfoot = 1; 
+       $this->tablethead = 0;
+       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
+       if (isset($properties['FONT-WEIGHT'])) {
+               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->tfoot_font_weight = 'B'; }
+               else { $this->tfoot_font_weight = ''; }
+       }
+
+       if (isset($properties['FONT-STYLE'])) {
+               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->tfoot_font_style = 'I'; }
+               else { $this->tfoot_font_style = ''; }
+       }
+       if (isset($properties['FONT-VARIANT'])) {       
+               if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->tfoot_font_smCaps = 'S'; }
+               else { $this->tfoot_font_smCaps = ''; }
+       }
+
+       if (isset($properties['VERTICAL-ALIGN'])) {
+               $this->tfoot_valign_default = $properties['VERTICAL-ALIGN'];
+       }
+       if (isset($properties['TEXT-ALIGN'])) {
+               $this->tfoot_textalign_default = $properties['TEXT-ALIGN'];
+       }
+       $properties = array();
+       break;
+
+
+    case 'TBODY':
+       $this->tablethead = 0;
+       $this->tabletfoot = 0;
+       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
+       $this->cssmgr->tbCSSlvl++;
+       $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
+       break;
+
+
+    case 'TR':
+       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
+       $this->cssmgr->tbCSSlvl++;
+       $this->row++;
+       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']++;
+       $this->col = -1;
+       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
+
+       if (!$this->simpleTables && (!isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate']) || !$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['borders_separate'])) { 
+               if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row] = $properties['BORDER-LEFT']; }
+               if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row] = $properties['BORDER-RIGHT']; }
+               if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-top'][$this->row] = $properties['BORDER-TOP']; }
+               if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-bottom'][$this->row] = $properties['BORDER-BOTTOM']; }
+       }
+
+       if (isset($properties['BACKGROUND-COLOR'])) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $properties['BACKGROUND-COLOR']; }
+       else if (isset($attr['BGCOLOR'])) $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$this->row] = $attr['BGCOLOR'];
+
+/*-- BACKGROUNDS --*/
+       if (isset($properties['BACKGROUND-GRADIENT']) && !$this->kwt && !$this->ColActive) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$this->row] = $properties['BACKGROUND-GRADIENT']; }
+
+       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->kwt && !$this->ColActive) {
+               $ret = $this->SetBackground($properties, $currblk['inner_width']);
+               if ($ret) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$this->row] = $ret; }
+       }
+/*-- END BACKGROUNDS --*/
+
+
+       if (isset($properties['TEXT-ROTATE'])) {
+               $this->trow_text_rotate = $properties['TEXT-ROTATE'];
+       }
+       if (isset($attr['TEXT-ROTATE'])) $this->trow_text_rotate = $attr['TEXT-ROTATE'];
+
+       if ($this->tablethead) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true; }
+       if ($this->tabletfoot) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true; }
+       $properties = array();
+       break;
+
+
+    case 'TH':
+    case 'TD':
+       $this->ignorefollowingspaces = true; 
+       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
+       $this->cssmgr->tbCSSlvl++;
+       $this->InlineProperties = array();
+       $this->spanlvl = 0;
+       $this->tdbegin = true;
+       $this->col++;
+       while (isset($this->cell[$this->row][$this->col])) { $this->col++; }
+
+       //Update number column
+       if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] < $this->col+1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] = $this->col+1; }
+
+       $table = &$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]];
+
+       $c = array('a' => false,
+       'R' => false,
+       'nowrap' => false,
+       'bgcolor' => false,
+       'padding' => array('L' => false,
+               'R' => false,
+               'T' => false,
+               'B' => false
+               )
+       );
+
+       if ($this->simpleTables && $this->row==0 && $this->col==0){
+               $table['simple']['border'] = false;
+               $table['simple']['border_details']['R']['w'] = 0;
+               $table['simple']['border_details']['L']['w'] = 0;
+               $table['simple']['border_details']['T']['w'] = 0;
+               $table['simple']['border_details']['B']['w'] = 0;
+               $table['simple']['border_details']['R']['style'] = '';
+               $table['simple']['border_details']['L']['style'] = '';
+               $table['simple']['border_details']['T']['style'] = '';
+               $table['simple']['border_details']['B']['style'] = '';
+       }
+       else if (!$this->simpleTables) {
+       $c['border'] = false;
+       $c['border_details']['R']['w'] = 0;
+       $c['border_details']['L']['w'] = 0;
+       $c['border_details']['T']['w'] = 0;
+       $c['border_details']['B']['w'] = 0;
+       $c['border_details']['mbw']['BL'] = 0;
+       $c['border_details']['mbw']['BR'] = 0;
+       $c['border_details']['mbw']['RT'] = 0;
+       $c['border_details']['mbw']['RB'] = 0;
+       $c['border_details']['mbw']['TL'] = 0;
+       $c['border_details']['mbw']['TR'] = 0;
+       $c['border_details']['mbw']['LT'] = 0;
+       $c['border_details']['mbw']['LB'] = 0;
+       $c['border_details']['R']['style'] = '';
+       $c['border_details']['L']['style'] = '';
+       $c['border_details']['T']['style'] = '';
+       $c['border_details']['B']['style'] = '';
+       $c['border_details']['R']['s'] = 0;
+       $c['border_details']['L']['s'] = 0;
+       $c['border_details']['T']['s'] = 0;
+       $c['border_details']['B']['s'] = 0;
+       $c['border_details']['R']['c'] = $this->ConvertColor(0);
+       $c['border_details']['L']['c'] = $this->ConvertColor(0);
+       $c['border_details']['T']['c'] = $this->ConvertColor(0);
+       $c['border_details']['B']['c'] = $this->ConvertColor(0);
+       $c['border_details']['R']['dom'] = 0;
+       $c['border_details']['L']['dom'] = 0;
+       $c['border_details']['T']['dom'] = 0;
+       $c['border_details']['B']['dom'] = 0;
+       }
+
+
+       if ($table['va']) { $c['va'] = $table['va']; }
+       if ($table['txta']) { $c['a'] = $table['txta']; }
+       if ($this->table_border_attr_set) {
+         if ($table['border_details']) {
+           if (!$this->simpleTables){
+               $c['border_details']['R'] = $table['border_details']['R'];
+               $c['border_details']['L'] = $table['border_details']['L'];
+               $c['border_details']['T'] = $table['border_details']['T'];
+               $c['border_details']['B'] = $table['border_details']['B'];
+               $c['border'] = $table['border']; 
+               $c['border_details']['L']['dom'] = 1; 
+               $c['border_details']['R']['dom'] = 1; 
+               $c['border_details']['T']['dom'] = 1; 
+               $c['border_details']['B']['dom'] = 1; 
+           }
+           else if ($this->simpleTables && $this->row==0 && $this->col==0){
+               $table['simple']['border_details']['R'] = $table['border_details']['R'];
+               $table['simple']['border_details']['L'] = $table['border_details']['L'];
+               $table['simple']['border_details']['T'] = $table['border_details']['T'];
+               $table['simple']['border_details']['B'] = $table['border_details']['B'];
+               $table['simple']['border'] = $table['border']; 
+           }
+         }
+       } 
+       // INHERITED THEAD CSS Properties
+       if ($this->tablethead) { 
+               if ($this->thead_valign_default) $c['va'] = $align[strtolower($this->thead_valign_default)]; 
+               if ($this->thead_textalign_default) $c['a'] = $align[strtolower($this->thead_textalign_default)]; 
+               if ($this->thead_font_weight == 'B') { $this->SetStyle('B',true); }
+               if ($this->thead_font_style == 'I') { $this->SetStyle('I',true); }
+               if ($this->thead_font_smCaps == 'S') { $this->SetStyle('S',true); }
+       }
+
+       // INHERITED TFOOT CSS Properties
+       if ($this->tabletfoot) { 
+               if ($this->tfoot_valign_default) $c['va'] = $align[strtolower($this->tfoot_valign_default)]; 
+               if ($this->tfoot_textalign_default) $c['a'] = $align[strtolower($this->tfoot_textalign_default)]; 
+               if ($this->tfoot_font_weight == 'B') { $this->SetStyle('B',true); }
+               if ($this->tfoot_font_style == 'I') { $this->SetStyle('I',true); }
+               if ($this->tfoot_font_style == 'S') { $this->SetStyle('S',true); }
+       }
+
+
+       if ($this->trow_text_rotate){
+               $c['R'] = $this->trow_text_rotate; 
+       }
+
+       $this->cell_border_dominance_L = 0; 
+       $this->cell_border_dominance_R = 0; 
+       $this->cell_border_dominance_T = 0; 
+       $this->cell_border_dominance_B = 0; 
+
+       $properties = $this->cssmgr->MergeCSS('TABLE',$tag,$attr);
+       $properties = $this->cssmgr->array_merge_recursive_unique($this->base_table_properties, $properties);
+
+       if (isset($properties['FONT-KERNING']) && (strtoupper($properties['FONT-KERNING'])=='NORMAL' || strtoupper($properties['FONT-KERNING'])=='AUTO')) {
+               $this->kerning = true;
+       }
+       else { $this->kerning = false; }
+
+       if (isset($properties['LETTER-SPACING']) && ($properties['LETTER-SPACING'] || $properties['LETTER-SPACING']==='0') && strtoupper($properties['LETTER-SPACING']) != 'NORMAL') {
+               $this->lSpacingCSS = strtoupper($properties['LETTER-SPACING']);
+               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); 
+       }
+       else { 
+               $this->lSpacingCSS = '';
+               $this->fixedlSpacing = false; 
+       }
+       if (isset($properties['WORD-SPACING']) && strtoupper($properties['WORD-SPACING']) != 'NORMAL') { 
+               $this->wSpacingCSS = strtoupper($properties['WORD-SPACING']);
+               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); 
+       }
+       else { 
+               $this->minwSpacing = 0; 
+               $this->wSpacingCSS = '';
+       }
+       // mPDF 5.6.08
+       if (isset($properties['HYPHENS']) && $properties['HYPHENS']) {
+               if (strtoupper($properties['HYPHENS']) == 'NONE') { $this->textparam['hyphens'] = 2; }
+               else if (strtoupper($properties['HYPHENS']) == 'AUTO') { $this->textparam['hyphens'] = 1; }
+               else if (strtoupper($properties['HYPHENS']) == 'MANUAL') { $this->textparam['hyphens'] = 0; }
+       }
+
+       if (isset($properties['BACKGROUND-COLOR'])) { $c['bgcolor'] = $properties['BACKGROUND-COLOR']; }
+       else if (isset($properties['BACKGROUND'])) { $c['bgcolor'] = $properties['BACKGROUND']; }
+       else if (isset($attr['BGCOLOR'])) $c['bgcolor'] = $attr['BGCOLOR'];
+
+
+
+/*-- BACKGROUNDS --*/
+       if (isset($properties['BACKGROUND-GRADIENT'])) { $c['gradient'] = $properties['BACKGROUND-GRADIENT']; }
+       else { $c['gradient'] = false; }
+
+       if (isset($properties['BACKGROUND-IMAGE']) && $properties['BACKGROUND-IMAGE'] && !$this->keep_block_together) {
+               $ret = $this->SetBackground($properties, $this->blk[$this->blklvl]['inner_width']);
+               if ($ret) { $c['background-image'] = $ret; }
+       }
+/*-- END BACKGROUNDS --*/
+       if (isset($properties['VERTICAL-ALIGN'])) { $c['va']=$align[strtolower($properties['VERTICAL-ALIGN'])]; }
+       else if (isset($attr['VALIGN'])) $c['va'] = $align[strtolower($attr['VALIGN'])];
+
+
+       // mPDF 5.6.13
+       if (isset($properties['TEXT-ALIGN']) && $properties['TEXT-ALIGN']) {
+               if (substr($properties['TEXT-ALIGN'],0,1)=='D') { $c['a'] = $properties['TEXT-ALIGN']; }
+               else { $c['a'] = $align[strtolower($properties['TEXT-ALIGN'])]; }
+       }
+       // mPDF 5.6.13
+       if (isset($attr['ALIGN']) && $attr['ALIGN']) {
+               if (strtolower($attr['ALIGN']) == 'char') { 
+                       if (isset($attr['CHAR']) && $attr['CHAR']) {
+                               $char = html_entity_decode($attr['CHAR']);
+                               $char = strcode2utf($char);
+                               $d = array_search($char,$this->decimal_align);
+                               if ($d !== false) { $c['a'] = $d.'R'; }
+                       }
+                       else { $c['a'] = 'DPR'; }
+               }
+               else { $c['a'] = $align[strtolower($attr['ALIGN'])]; }
+       }
+
+       if (!$c['a']) {
+               if (isset($table['direction']) && $table['direction'] == 'rtl' ) { $c['a'] = 'R'; }
+               else { $c['a'] = 'L'; }
+       }
+
+
+       if (isset($properties['TEXT-ROTATE']) && ($properties['TEXT-ROTATE'] || $properties['TEXT-ROTATE']==="0")){
+               $c['R'] = $properties['TEXT-ROTATE']; 
+       }
+       if (isset($properties['BORDER'])) { 
+               $bord = $this->border_details($properties['BORDER']);
+               if ($bord['s']) {
+                  if (!$this->simpleTables){
+                       $c['border'] = _BORDER_ALL;
+                       $c['border_details']['R'] = $bord;
+                       $c['border_details']['L'] = $bord;
+                       $c['border_details']['T'] = $bord;
+                       $c['border_details']['B'] = $bord;
+                       $c['border_details']['L']['dom'] = $this->cell_border_dominance_L; 
+                       $c['border_details']['R']['dom'] = $this->cell_border_dominance_R; 
+                       $c['border_details']['T']['dom'] = $this->cell_border_dominance_T; 
+                       $c['border_details']['B']['dom'] = $this->cell_border_dominance_B; 
+                  }
+                  else if ($this->simpleTables && $this->row==0 && $this->col==0){
+                       $table['simple']['border'] = _BORDER_ALL;
+                       $table['simple']['border_details']['R'] = $bord;
+                       $table['simple']['border_details']['L'] = $bord;
+                       $table['simple']['border_details']['T'] = $bord;
+                       $table['simple']['border_details']['B'] = $bord;
+                  }
+               }
+       }
+       if (!$this->simpleTables){
+          if (isset($properties['BORDER-RIGHT']) && $properties['BORDER-RIGHT']) { 
+               $c['border_details']['R'] = $this->border_details($properties['BORDER-RIGHT']);
+               $this->setBorder($c['border'], _BORDER_RIGHT, $c['border_details']['R']['s']); 
+               $c['border_details']['R']['dom'] = $this->cell_border_dominance_R; 
+          }
+          if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { 
+               $c['border_details']['L'] = $this->border_details($properties['BORDER-LEFT']);
+               $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']); 
+               $c['border_details']['L']['dom'] = $this->cell_border_dominance_L; 
+          }
+          if (isset($properties['BORDER-BOTTOM']) && $properties['BORDER-BOTTOM']) { 
+               $c['border_details']['B'] = $this->border_details($properties['BORDER-BOTTOM']);
+               $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']); 
+               $c['border_details']['B']['dom'] = $this->cell_border_dominance_B; 
+          }
+          if (isset($properties['BORDER-TOP']) && $properties['BORDER-TOP']) { 
+               $c['border_details']['T'] = $this->border_details($properties['BORDER-TOP']);
+               $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']); 
+               $c['border_details']['T']['dom'] = $this->cell_border_dominance_T; 
+          }
+       }
+       else if ($this->simpleTables && $this->row==0 && $this->col==0){
+          if (isset($properties['BORDER-LEFT']) && $properties['BORDER-LEFT']) { 
+               $bord = $this->border_details($properties['BORDER-LEFT']);
+                       if ($bord['s']) { $table['simple']['border'] = _BORDER_ALL; }
+                       else { $table['simple']['border'] = 0; }
+                       $table['simple']['border_details']['R'] = $bord;
+                       $table['simple']['border_details']['L'] = $bord;
+                       $table['simple']['border_details']['T'] = $bord;
+                       $table['simple']['border_details']['B'] = $bord;
+          }
+       }
+
+       if ($this->simpleTables && $this->row==0 && $this->col==0 && !$table['borders_separate'] && $table['simple']['border'] ){
+               $table['border_details'] = $table['simple']['border_details'];
+               $table['border'] = $table['simple']['border']; 
+       }
+
+       // Border set on TR (if collapsed only)
+       if (!$table['borders_separate'] && !$this->simpleTables && isset($table['trborder-left'][$this->row])) {
+               if ($this->col==0) { 
+                       $left = $this->border_details($table['trborder-left'][$this->row]);
+                       $c['border_details']['L'] = $left;
+                       $this->setBorder($c['border'], _BORDER_LEFT, $c['border_details']['L']['s']); 
+               }
+               $c['border_details']['B'] = $this->border_details($table['trborder-bottom'][$this->row]);
+               $this->setBorder($c['border'], _BORDER_BOTTOM, $c['border_details']['B']['s']); 
+               $c['border_details']['T'] = $this->border_details($table['trborder-top'][$this->row]);
+               $this->setBorder($c['border'], _BORDER_TOP, $c['border_details']['T']['s']); 
+       }
+
+       if ($this->packTableData && !$this->simpleTables) {
+               $c['borderbin'] = $this->_packCellBorder($c);
+               unset($c['border']);
+               unset($c['border_details']);
+       }
+
+       if (isset($properties['PADDING-LEFT'])) { 
+               $c['padding']['L'] = $this->ConvertSize($properties['PADDING-LEFT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       if (isset($properties['PADDING-RIGHT'])) { 
+               $c['padding']['R'] = $this->ConvertSize($properties['PADDING-RIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       if (isset($properties['PADDING-BOTTOM'])) { 
+               $c['padding']['B'] = $this->ConvertSize($properties['PADDING-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+       if (isset($properties['PADDING-TOP'])) { 
+               $c['padding']['T'] = $this->ConvertSize($properties['PADDING-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+       }
+
+       $w = '';
+       if (isset($properties['WIDTH'])) { $w = $properties['WIDTH']; }
+       else if (isset($attr['WIDTH'])) { $w = $attr['WIDTH']; }
+       if ($w) { 
+               if (strpos($w,'%') && !$this->ignore_table_percents ) { $c['wpercent'] = $w + 0; }      // makes 80% -> 80
+               else if (!strpos($w,'%') && !$this->ignore_table_widths ) { $c['w'] = $this->ConvertSize($w,$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+       }
+
+       if (isset($properties['HEIGHT']) && !strpos($properties['HEIGHT'],'%')) { $c['h'] = $this->ConvertSize($properties['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+       else if (isset($attr['HEIGHT']) && !strpos($attr['HEIGHT'],'%')) $c['h'] = $this->ConvertSize($attr['HEIGHT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+
+
+       if (isset($properties['COLOR'])) {
+         $cor = $this->ConvertColor($properties['COLOR']);
+         if ($cor) { 
+               $this->colorarray = $cor;
+               $this->SetTColor($cor); 
+         }
+       }
+       if (isset($properties['FONT-FAMILY'])) {
+               $this->SetFont($properties['FONT-FAMILY'],'',0,false);
+       }
+       if (isset($properties['FONT-SIZE'])) { 
+          $mmsize = $this->ConvertSize($properties['FONT-SIZE'],$this->default_font_size/_MPDFK);
+          if ($mmsize) {
+               $this->SetFontSize($mmsize*(_MPDFK),false);
+          }
+       }
+       $c['dfs'] = $this->FontSize;    // Default Font size
+       if (isset($properties['FONT-WEIGHT'])) {
+               if (strtoupper($properties['FONT-WEIGHT']) == 'BOLD')   { $this->SetStyle('B',true); }
+       }
+       if (isset($properties['FONT-STYLE'])) {
+               if (strtoupper($properties['FONT-STYLE']) == 'ITALIC') { $this->SetStyle('I',true); }
+       }
+       if (isset($properties['FONT-VARIANT'])) {
+               if (strtoupper($properties['FONT-VARIANT']) == 'SMALL-CAPS') { $this->SetStyle('S',true); }
+       }
+       if (isset($properties['TEXT-DECORATION'])) {
+               if (strtoupper($properties['TEXT-DECORATION']) == 'LINE-THROUGH') { $this->strike = true; }
+               else if (strtoupper($properties['TEXT-DECORATION']) == 'UNDERLINE') { $this->SetStyle('U',true); }
+       }
+       if (isset($properties['TEXT-SHADOW'])) {
+               $ts = $this->cssmgr->setCSStextshadow($properties['TEXT-SHADOW']);
+               if ($ts) { $this->textshadow = $ts; }
+       }
+       if (isset($properties['TEXT-TRANSFORM'])) {
+               if (strtoupper($properties['TEXT-TRANSFORM']) == 'CAPITALIZE') { $this->capitalize = true; }
+               else if (strtoupper($properties['TEXT-TRANSFORM']) == 'UPPERCASE') { $this->toupper = true; }
+               else if (strtoupper($properties['TEXT-TRANSFORM']) == 'LOWERCASE') { $this->tolower = true; }
+       }
+       if (isset($properties['WHITE-SPACE'])) {
+               if (strtoupper($properties['WHITE-SPACE']) == 'NOWRAP') { $c['nowrap']= 1; }
+       }
+       $properties = array();
+
+       if (isset($attr['TEXT-ROTATE'])) {
+               $c['R'] = $attr['TEXT-ROTATE']; 
+       }
+       if (isset($attr['NOWRAP']) && $attr['NOWRAP']) $c['nowrap']= 1;
+
+       $this->cell[$this->row][$this->col] = $c;
+       unset($c);
+       $this->cell[$this->row][$this->col]['s'] = 0 ;
+
+       $cs = $rs = 1;
+       if (isset($attr['COLSPAN']) && $attr['COLSPAN']>1)      $cs = $this->cell[$this->row][$this->col]['colspan']    = $attr['COLSPAN'];
+       if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] < $this->col+$cs) { 
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'] = $this->col+$cs; 
+       }       // following code moved outside if...
+       for($l=$this->col; $l < $this->col+$cs ;$l++) {
+               if ($l-$this->col) $this->cell[$this->row][$l] = 0;
+       }
+       if (isset($attr['ROWSPAN']) && $attr['ROWSPAN']>1)      $rs = $this->cell[$this->row][$this->col]['rowspan']    = $attr['ROWSPAN'];
+       for ($k=$this->row ; $k < $this->row+$rs ;$k++) {
+               for($l=$this->col; $l < $this->col+$cs ;$l++) {
+                       if ($k-$this->row || $l-$this->col)     $this->cell[$k][$l] = 0;
+               }
+       }
+       unset($table);
+       break;
+/*-- END TABLES --*/
+
+
+/*-- LISTS --*/
+    // *********** LISTS ********************
+    case 'OL':
+    case 'UL':
+       $this->listjustfinished = false;
+
+       if ($this->blockjustfinished && !count($this->textbuffer) && $this->y != $this->tMargin && $this->collapseBlockMargins) { $lastbottommargin = $this->lastblockbottommargin; }
+       else { $lastbottommargin = 0; }
+       $this->lastblockbottommargin = 0;
+       $this->blockjustfinished=false;
+
+       $this->linebreakjustfinished=false;
+       $this->lastoptionaltag = ''; // Save current HTML specified optional endtag
+       $this->cssmgr->listCSSlvl++;
+       if((!$this->tableLevel) && ($this->listlvl == 0)) {
+               $blockstate = 0; 
+               //if ($this->lastblocklevelchange == 1) { $blockstate = -1; }   // Top margins/padding only
+               //else if ($this->lastblocklevelchange < 1) { $blockstate = 0; }        // NO margins/padding
+               // called from block after new div e.g. <div> ... <ol> ...    Outputs block top margin/border and padding
+               if (count($this->textbuffer) == 0 && $this->lastblocklevelchange == 1 && !$this->tableLevel && !$this->kwt) {
+                       $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,1,true, $this->blk[$this->blklvl]['direction']);
+                       $this->finishFlowingBlock(true);        // true = END of flowing block
+               }
+               else if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer,$blockstate); }
+               $this->textbuffer=array();
+               $this->lastblocklevelchange = -1;
+       }
+       // ol and ul types are mixed here
+       if ($this->listlvl == 0) {
+               $this->list_indent = array();
+               $this->list_align = array();
+               $this->list_lineheight = array();
+               $this->InlineProperties['LIST'] = array();
+               $this->InlineProperties['LISTITEM'] = array();
+       }
+
+/*-- TABLES --*/
+       // A simple list for inside a table
+       if($this->tableLevel) {
+               $this->list_indent[$this->listlvl] = 0; // mm default indent for each level
+               if ($tag == 'OL') $this->listtype = '1';
+               else if ($tag == 'UL') $this->listtype = 'disc';
+       if ($this->listlvl > 0) {
+                       $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
+               }
+               $this->listlvl++;
+               // mPDF 5.6.15
+               if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
+               else { $this->listnum = 0; }
+               $this->listlist[$this->listlvl] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
+               break;
+       }
+/*-- END TABLES --*/
+
+
+       if (($this->PDFA || $this->PDFX) && $tag == 'UL') {
+               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "List bullets cannot use core font Zapfdingbats in PDFA1-b or PDFX/1-a. (Substitute characters from current font used if available, otherwise substitutes hyphen '-')"; }
+       }
+
+       if ($this->cssmgr->listCSSlvl==1) {
+               $properties = $this->cssmgr->MergeCSS('TOPLIST',$tag,$attr);
+       }
+       else {
+               $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr);
+       }
+       if (!empty($properties)) $this->setCSS($properties,'LIST');     
+       // List-type
+
+       $this->listtype = '';
+       if (isset($properties['LIST-STYLE-TYPE'])) { 
+               $this->listtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']);
+       }
+       else if (isset($properties['LIST-STYLE'])) { 
+               $this->listtype = $this->_getListStyle($properties['LIST-STYLE']);
+       }
+       else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listtype = $attr['TYPE']; }
+       if (!$this->listtype) {
+               if ($tag == 'OL') $this->listtype = '1';
+               if ($tag == 'UL') {
+                       if ($this->listlvl % 3 == 0) $this->listtype = 'disc';
+                       elseif ($this->listlvl % 3 == 1) $this->listtype = 'circle';
+                       else $this->listtype = 'square';
+               }
+       }
+      if ($this->listlvl == 0) {
+         $this->inherit_lineheight = 0;
+         $this->listlvl++; // first depth level
+         // mPDF 5.6.15
+         if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
+         else { $this->listnum = 0; }
+         $this->listDir = (isset($this->blk[$this->blklvl]['direction']) ? $this->blk[$this->blklvl]['direction'] : null);
+         $occur = $this->listoccur[$this->listlvl] = 1;
+         $this->listlist[$this->listlvl][1] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
+      }
+      else {
+       if (!empty($this->textbuffer))
+        {
+               $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
+               $this->listnum++;
+        }
+         // Save current lineheight to inherit
+         $this->textbuffer = array();
+         $occur = $this->listoccur[$this->listlvl];
+         $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
+         $this->listlvl++;
+         // mPDF 5.6.15
+         if (isset($attr['START'])) { $this->listnum = intval($attr['START']); }
+         else { $this->listnum = 0; }
+
+
+         if (!isset($this->listoccur[$this->listlvl]) || $this->listoccur[$this->listlvl] == 0) $this->listoccur[$this->listlvl] = 1;
+         else $this->listoccur[$this->listlvl]++;
+         $occur = $this->listoccur[$this->listlvl];
+         $this->listlist[$this->listlvl][$occur] = array('TYPE'=>$this->listtype,'MAXNUM'=>$this->listnum);
+      }
+
+
+       // TOP LEVEL ONLY
+       if ($this->listlvl == 1) {
+          if (isset($properties['MARGIN-TOP'])) { 
+               if ($lastbottommargin) { 
+                       $tmp = $this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false);
+                       if ($tmp > $lastbottommargin) { $properties['MARGIN-TOP'] -= $lastbottommargin; }
+                       else { $properties['MARGIN-TOP'] = 0; }
+               }
+               $this->DivLn($this->ConvertSize($properties['MARGIN-TOP'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false),$this->blklvl,true,1);        // collapsible
+          }
+          if (isset($properties['MARGIN-BOTTOM'])) { 
+               $this->list_margin_bottom = $this->ConvertSize($properties['MARGIN-BOTTOM'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); 
+          }
+          
+          if (isset($this->blk[$this->blklvl]['line_height'])) {
+               $this->list_lineheight[$this->listlvl][$occur] = $this->blk[$this->blklvl]['line_height'];
+          }
+
+          if (isset($properties['DIRECTION']) && $properties['DIRECTION']) { $this->listDir = strtolower($properties['DIRECTION']); }
+          else if (isset($attr['DIR']) && $attr['DIR']) { $this->listDir = strtolower($attr['DIR']); }
+
+       }
+       $this->list_indent[$this->listlvl][$occur] = 5; // mm default indent for each level
+       if (isset($properties['TEXT-INDENT'])) { $this->list_indent[$this->listlvl][$occur] = $this->ConvertSize($properties['TEXT-INDENT'],$this->blk[$this->blklvl]['inner_width'],$this->FontSize,false); }
+
+       if (isset($properties['TEXT-ALIGN'])) { 
+               $this->list_align[$this->listlvl][$occur] = $align[strtolower($properties['TEXT-ALIGN'])]; 
+       }
+
+
+       if (isset($properties['LINE-HEIGHT'])) { 
+               $this->list_lineheight[$this->listlvl][$occur] = $this->fixLineheight($properties['LINE-HEIGHT']);
+       }
+       else if ($this->listlvl>1 && isset($this->list_lineheight[($this->listlvl - 1)][1])) { 
+               $this->list_lineheight[$this->listlvl][$occur] = end($this->list_lineheight[($this->listlvl - 1)]);
+       }
+       if (!isset($this->list_lineheight[$this->listlvl][$occur]) || !$this->list_lineheight[$this->listlvl][$occur]) { 
+               $this->list_lineheight[$this->listlvl][$occur] = $this->normalLineheight; 
+       }
+
+       $this->InlineProperties['LIST'][$this->listlvl][$occur] = $this->saveInlineProperties();
+       $properties = array();
+     break;
+
+
+
+    case 'LI':
+       // Start Block
+       $this->lastoptionaltag = $tag; // Save current HTML specified optional endtag
+      $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
+/*-- TABLES --*/
+       // A simple list for inside a table
+       if($this->tableLevel) {
+          $this->blockjustfinished=false;
+
+          // If already something in the Cell
+          if ((isset($this->cell[$this->row][$this->col]['maxs']) && $this->cell[$this->row][$this->col]['maxs'] > 0 ) || $this->cell[$this->row][$this->col]['s'] > 0 ) {
+                       $this->_saveCellTextBuffer("\n");
+                       if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+                               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s'];
+                       }
+                       elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+                               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+                       }
+                       $this->cell[$this->row][$this->col]['s'] = 0 ;
+               }
+               if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...)
+                       $this->listlvl++; // first depth level
+                       $this->listnum = 0; // reset
+                       $this->listlist[$this->listlvl] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum);
+               }
+
+               $this->listnum++;
+               switch($this->listlist[$this->listlvl]['TYPE']) {
+               case 'A':
+                       $blt = $this->dec2alpha($this->listnum,true).$this->list_number_suffix;
+                       break;
+               case 'a':
+                       $blt = $this->dec2alpha($this->listnum,false).$this->list_number_suffix;
+                       break;
+               case 'I':
+                       $blt = $this->dec2roman($this->listnum,true).$this->list_number_suffix;
+                       break;
+               case 'i':
+                       $blt = $this->dec2roman($this->listnum,false).$this->list_number_suffix;
+                       break;
+               case '1':
+                       $blt = $this->listnum.$this->list_number_suffix;
+               break;
+               default:
+                       if ($this->listlvl % 3 == 1 && $this->_charDefined($this->CurrentFont['cw'],8226)) { $blt = "\xe2\x80\xa2"; }   // &#8226; 
+                       else if ($this->listlvl % 3 == 2 && $this->_charDefined($this->CurrentFont['cw'],9900)) { $blt = "\xe2\x9a\xac"; } // &#9900; 
+                       else if ($this->listlvl % 3 == 0 && $this->_charDefined($this->CurrentFont['cw'],9642)) { $blt = "\xe2\x96\xaa"; } // &#9642; 
+                       else { $blt = '-'; }
+                       break;
+               }
+
+               // change to &nbsp; spaces
+               if ($this->usingCoreFont) { 
+                       $ls = str_repeat(chr(160).chr(160),($this->listlvl-1)*2) . $blt . ' '; 
+               }
+               else {
+                       $ls = str_repeat("\xc2\xa0\xc2\xa0",($this->listlvl-1)*2) . $blt . ' '; 
+               }
+
+               $this->_saveCellTextBuffer($ls, $this->HREF);
+               $this->cell[$this->row][$this->col]['s'] += $this->GetStringWidth($ls);
+               break;
+       }
+/*-- END TABLES --*/
+       //Observation: </LI> is ignored
+       if ($this->listlvl == 0) { //in case of malformed HTML code. Example:(...)</p><li>Content</li><p>Paragraph1</p>(...)
+       //First of all, skip a line
+               $this->listlvl++; // first depth level
+               $this->listnum = 0; // reset
+               $this->listoccur[$this->listlvl] = 1;
+               $this->listlist[$this->listlvl][1] = array('TYPE'=>'disc','MAXNUM'=>$this->listnum);
+       }
+       if ($this->listnum == 0) {
+               $this->listnum++;
+               $this->textbuffer = array();
+       }
+       else {
+               if (!empty($this->textbuffer)) {
+                 if (!$this->listjustfinished) {
+                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
+                       $this->listnum++;
+                 }
+                 else {
+                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype, true);
+                 }
+               }
+               $this->textbuffer = array();
+      }
+       $this->listjustfinished = false;
+
+       $this->cssmgr->listCSSlvl++;
+       $properties = $this->cssmgr->MergeCSS('LIST',$tag,$attr);
+       if (!empty($properties)) $this->setCSS($properties,'LIST');
+       $this->InlineProperties['LISTITEM'][$this->listlvl][$this->listoccur[$this->listlvl]][$this->listnum] = $this->saveInlineProperties();
+
+       // List-type
+       if (isset($properties['LIST-STYLE-TYPE'])) { 
+               $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE-TYPE']);
+       }
+       else if (isset($properties['LIST-STYLE'])) { 
+               $this->listitemtype = $this->_getListStyle($properties['LIST-STYLE']);
+       }
+       else if (isset($attr['TYPE']) && $attr['TYPE']) { $this->listitemtype = $attr['TYPE']; }
+       else $this->listitemtype = '';
+      break;
+/*-- END LISTS --*/
+
+  }//end of switch
+}
+
+/*-- LISTS --*/
+
+function _getListStyle($ls) {
+       if (stristr($ls,'decimal')) { return '1'; }
+/*  CSS3 list-styles numeric (selected) + I added tamil
+arabic-indic | bengali | devanagari | gujarati | gurmukhi | kannada | malayalam | oriya | persian | telugu | thai | urdu 
+*/
+       else if (preg_match('/(disc|circle|square|arabic-indic|bengali|devanagari|gujarati|gurmukhi|kannada|malayalam|oriya|persian|tamil|telugu|thai|urdu)/i',$ls,$m)) { 
+               return strtolower(trim($m[1])); 
+       }
+       else if (stristr($ls,'lower-roman')) { return 'i'; }
+       else if (stristr($ls,'upper-roman')) { return 'I'; }
+       else if (stristr($ls,'lower-latin')|| stristr($ls,'lower-alpha')) { return 'a'; }
+       else if (stristr($ls,'upper-latin') || stristr($ls,'upper-alpha')) { return 'A'; }
+       else if (stristr($ls,'none')) { return 'none'; }
+       else if (preg_match('/U\+([a-fA-F0-9]+)/i',$ls)) { return $ls; }
+       else { return ''; }
+}
+/*-- END LISTS --*/
+
+
+
+function CloseTag($tag)
+{
+       $this->ignorefollowingspaces = false; //Eliminate exceeding left-side spaces
+    //Closing tag
+    if($tag=='OPTION') { $this->selectoption['ACTIVE'] = false;        $this->lastoptionaltag = ''; }
+
+    if($tag=='TTS' or $tag=='TTA' or $tag=='TTZ') {
+       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
+       unset($this->InlineProperties[$tag]);
+       $ltag = strtolower($tag);
+       $this->$ltag = false;
+    }
+
+
+    if($tag=='FONT' || $tag=='SPAN' || $tag=='CODE' || $tag=='KBD' || $tag=='SAMP' || $tag=='TT' || $tag=='VAR' 
+       || $tag=='INS' || $tag=='STRONG' || $tag=='CITE' || $tag=='SUB' || $tag=='SUP' || $tag=='S' || $tag=='STRIKE' || $tag=='DEL'
+       || $tag=='Q' || $tag=='EM' || $tag=='B' || $tag=='I' || $tag=='U' | $tag=='SMALL' || $tag=='BIG' || $tag=='ACRONYM'
+       || $tag=='MARK'  || $tag=='TIME'  || $tag=='PROGRESS'  || $tag=='METER' 
+       ) {     // mPDF 5.5.09
+
+       if ($tag == 'SPAN') {
+               if (isset($this->InlineProperties['SPAN'][$this->spanlvl]) && $this->InlineProperties['SPAN'][$this->spanlvl]) { $this->restoreInlineProperties($this->InlineProperties['SPAN'][$this->spanlvl]); }
+               unset($this->InlineProperties['SPAN'][$this->spanlvl]);
+               if (isset($this->InlineAnnots['SPAN'][$this->spanlvl]) && $this->InlineAnnots['SPAN'][$this->spanlvl]) { $annot = $this->InlineAnnots['SPAN'][$this->spanlvl]; }        // *ANNOTATIONS*
+               unset($this->InlineAnnots['SPAN'][$this->spanlvl]);     // *ANNOTATIONS*
+               $this->spanlvl--;
+       }
+       else { 
+               if (isset($this->InlineProperties[$tag]) && $this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
+               unset($this->InlineProperties[$tag]);
+               if (isset($this->InlineAnnots[$tag]) && $this->InlineAnnots[$tag]) { $annot = $this->InlineAnnots[$tag]; }      // *ANNOTATIONS*
+               unset($this->InlineAnnots[$tag]);       // *ANNOTATIONS*
+       }
+
+/*-- ANNOTATIONS --*/
+       if (isset($annot)) {
+               if($this->tableLevel) { // *TABLES*
+                       $this->cell[$this->row][$this->col]['textbuffer'][] = array($annot);    // *TABLES*
+               }       // *TABLES*
+               else  { // *TABLES*
+                       $this->textbuffer[] = array($annot);
+               }       // *TABLES*
+       }
+/*-- END ANNOTATIONS --*/
+    }
+
+    if($tag=='METER' || $tag=='PROGRESS') {
+       $this->inMeter = false; // mPDF 5.5.09
+    }
+
+
+    if($tag=='A') {
+       $this->HREF=''; 
+       if (isset($this->InlineProperties['A'])) { $this->restoreInlineProperties($this->InlineProperties['A']); }
+       unset($this->InlineProperties['A']);
+    }
+
+    if($tag=='LEGEND') {       // mPDF 5.4.18
+       if (count($this->textbuffer) && !$this->tableLevel) { 
+               $leg = $this->textbuffer[(count($this->textbuffer)-1)]; 
+               unset($this->textbuffer[(count($this->textbuffer)-1)]);
+               $this->textbuffer = array_values($this->textbuffer);
+               $this->blk[$this->blklvl]['border_legend'] = $leg;
+               $this->blk[$this->blklvl]['margin_top'] += ($leg[11]/2)/_MPDFK;
+               $this->blk[$this->blklvl]['padding_top'] += ($leg[11]/2)/_MPDFK;
+       }
+       if (isset($this->InlineProperties['LEGEND'])) { $this->restoreInlineProperties($this->InlineProperties['LEGEND']); }
+       unset($this->InlineProperties['LEGEND']);
+       $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
+    }
+
+
+
+/*-- FORMS --*/
+       // *********** FORM ELEMENTS ********************
+
+    if($tag=='TEXTAREA') {
+       $this->specialcontent = '';
+       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
+       unset($this->InlineProperties[$tag]);
+    }
+
+
+    if($tag=='SELECT') {
+       $this->lastoptionaltag = '';
+       $texto = '';
+       if (isset($this->selectoption['SELECTED'])) { $texto = $this->selectoption['SELECTED']; }
+
+       if ($this->useActiveForms) { $w = $this->selectoption['MAXWIDTH']; }
+       else { $w = $this->GetStringWidth($texto); }
+       if ($w == 0) { $w = 5; }
+       $objattr['type'] = 'select';
+       $objattr['text'] = $texto;
+       if (isset($this->selectoption['NAME'])) { $objattr['fieldname'] = $this->selectoption['NAME']; }
+       if (isset($this->selectoption['READONLY'])) { $objattr['readonly'] = true; }
+       if (isset($this->selectoption['REQUIRED'])) { $objattr['required'] = true; }
+       if (isset($this->selectoption['SPELLCHECK'])) { $objattr['spellcheck'] = true; }
+       if (isset($this->selectoption['EDITABLE'])) { $objattr['editable'] = true; }
+       if (isset($this->selectoption['ONCHANGE'])) { $objattr['onChange'] = $this->selectoption['ONCHANGE']; }
+       if (isset($this->selectoption['ITEMS'])) { $objattr['items'] = $this->selectoption['ITEMS']; }
+       if (isset($this->selectoption['MULTIPLE'])) { $objattr['multiple'] = $this->selectoption['MULTIPLE']; }
+       if (isset($this->selectoption['DISABLED'])) { $objattr['disabled'] = $this->selectoption['DISABLED']; }
+       if (isset($this->selectoption['TITLE'])) { $objattr['title'] = $this->selectoption['TITLE']; }
+       if (isset($this->selectoption['COLOR'])) { $objattr['color'] = $this->selectoption['COLOR']; }
+       if (isset($this->selectoption['SIZE'])) { $objattr['size'] = $this->selectoption['SIZE']; }
+       if (isset($objattr['size']) && $objattr['size']>1) { $rows=$objattr['size']; } else { $rows = 1; }
+
+       $objattr['fontfamily'] = $this->FontFamily;
+       $objattr['fontsize'] = $this->FontSizePt;
+
+       $objattr['width'] = $w + ($this->form->form_element_spacing['select']['outer']['h']*2)+($this->form->form_element_spacing['select']['inner']['h']*2) + ($this->FontSize*1.4);
+       $objattr['height'] = ($this->FontSize*$rows) + ($this->form->form_element_spacing['select']['outer']['v']*2)+($this->form->form_element_spacing['select']['inner']['v']*2);
+       $e = "\xbb\xa4\xactype=select,objattr=".serialize($objattr)."\xbb\xa4\xac";
+
+       // Clear properties - tidy up
+       $properties = array();
+
+       // Output it to buffers
+       if ($this->tableLevel) {        // *TABLES*
+               $this->_saveCellTextBuffer($e, $this->HREF);
+               $this->cell[$this->row][$this->col]['s'] += $objattr['width'] ; // *TABLES*
+       }       // *TABLES*
+       else {  // *TABLES*
+               $this->_saveTextBuffer($e, $this->HREF);
+       }       // *TABLES*
+
+       $this->selectoption = array();
+       $this->specialcontent = '';
+
+       if ($this->InlineProperties[$tag]) { $this->restoreInlineProperties($this->InlineProperties[$tag]); }
+       unset($this->InlineProperties[$tag]);
+
+    }
+/*-- END FORMS --*/
+
+
+       // *********** BLOCKS ********************
+       // mPDF 5.4.18
+    if($tag=='P' || $tag=='DIV' || $tag=='H1' || $tag=='H2' || $tag=='H3' || $tag=='H4' || $tag=='H5' || $tag=='H6' || $tag=='PRE' 
+        || $tag=='FORM' || $tag=='ADDRESS' || $tag=='BLOCKQUOTE' || $tag=='CENTER' || $tag=='DT'  || $tag=='DD'  || $tag=='DL'  
+       || $tag=='CAPTION' || $tag=='FIELDSET' 
+       || $tag=='ARTICLE' || $tag=='ASIDE' || $tag=='FIGURE' || $tag=='FIGCAPTION' || $tag=='FOOTER' || $tag=='HEADER' || $tag=='HGROUP' 
+       || $tag=='NAV' || $tag=='SECTION'  || $tag=='DETAILS' || $tag=='SUMMARY'
+       ) {     // mPDF 5.5.09  // mPDF 5.5.22
+
+       $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
+       $this->blockjustfinished=true;
+
+       $this->lastblockbottommargin = $this->blk[$this->blklvl]['margin_bottom'];
+/*-- LISTS --*/
+       if ($this->listlvl>0) { return; }
+/*-- END LISTS --*/
+
+       // mPDF 5.6.34
+       if (preg_match('/^H\d/',$tag) && !$this->tableLevel && !$this->writingToC) {    // mPDF 5.6.38
+               if (isset($this->h2toc[$tag]) || isset($this->h2bookmarks[$tag])) {
+                       $content = '';
+                       if (count($this->textbuffer)==1) { $content = $this->textbuffer[0][0]; }
+                       else {
+                               for ($i=0;$i<count($this->textbuffer);$i++) {
+                               if (substr($this->textbuffer[$i][0],0,3) != "\xbb\xa4\xac") { //inline object
+                                               $content .= $this->textbuffer[$i][0];
+                                       }
+                               }
+                       }
+/*-- TOC --*/
+                       if (isset($this->h2toc[$tag])) {
+                               $objattr = array();
+                               $objattr['type'] = 'toc';
+                               $objattr['toclevel'] = $this->h2toc[$tag];
+                               $objattr['CONTENT'] = htmlspecialchars($content);       // mPDF 5.6.37
+                               $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
+                               array_unshift($this->textbuffer,array($e));
+                       }
+/*-- END TOC --*/
+/*-- BOOKMARKS --*/
+                       if (isset($this->h2bookmarks[$tag])) {
+                               $objattr = array();
+                               $objattr['type'] = 'bookmark';
+                               $objattr['bklevel'] = $this->h2bookmarks[$tag];
+                               $objattr['CONTENT'] = $content;
+                               $e = "\xbb\xa4\xactype=toc,objattr=".serialize($objattr)."\xbb\xa4\xac";
+                               array_unshift($this->textbuffer,array($e));
+                       }
+/*-- END BOOKMARKS --*/
+               }
+       }
+
+/*-- TABLES --*/
+       if($this->tableLevel) {
+               if ($this->linebreakjustfinished) { $this->blockjustfinished=false; }
+               if (isset($this->InlineProperties['BLOCKINTABLE'])) { 
+                       if ($this->InlineProperties['BLOCKINTABLE']) { $this->restoreInlineProperties($this->InlineProperties['BLOCKINTABLE']); }
+                       unset($this->InlineProperties['BLOCKINTABLE']);
+               }
+               if($tag=='PRE') { $this->ispre=false; }
+               return;
+       }
+/*-- END TABLES --*/
+       $this->lastoptionaltag = '';
+       $this->divbegin=false;
+
+       $this->linebreakjustfinished=false;
+
+       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
+
+/*-- CSS-FLOAT --*/
+       // If float contained in a float, need to extend bottom to allow for it
+       $currpos = $this->page*1000 + $this->y;
+       if (isset($this->blk[$this->blklvl]['float_endpos']) && $this->blk[$this->blklvl]['float_endpos'] > $currpos) {
+               $old_page = $this->page;
+               $new_page = intval($this->blk[$this->blklvl]['float_endpos'] /1000);
+               if ($old_page != $new_page) {
+                       $s = $this->PrintPageBackgrounds();
+                       // Writes after the marker so not overwritten later by page background etc.
+                       $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+                       $this->pageBackgrounds = array();
+                       $this->page = $new_page;
+                       $this->ResetMargins();
+                       $this->Reset();
+                       $this->pageoutput[$this->page] = array();
+               }
+               $this->y = (($this->blk[$this->blklvl]['float_endpos'] *1000) % 1000000)/1000;  // mod changes operands to integers before processing
+       }
+/*-- END CSS-FLOAT --*/
+
+
+       //Print content
+       if ($this->lastblocklevelchange == 1) { $blockstate = 3; }      // Top & bottom margins/padding
+       else if ($this->lastblocklevelchange == -1) { $blockstate = 2; }        // Bottom margins/padding only
+       else { $blockstate = 0; }
+       // called from after e.g. </table> </div> </div> ...    Outputs block margin/border and padding
+       if (count($this->textbuffer) && $this->textbuffer[count($this->textbuffer)-1]) {
+         if (substr($this->textbuffer[count($this->textbuffer)-1][0],0,3) != "\xbb\xa4\xac") { // not special content
+          if ($this->usingCoreFont) {
+               $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/', '', $this->textbuffer[count($this->textbuffer)-1][0]);
+          }
+          else {
+               $this->textbuffer[count($this->textbuffer)-1][0] = preg_replace('/[ ]+$/u', '', $this->textbuffer[count($this->textbuffer)-1][0]);         }
+         }
+       }
+
+       if (count($this->textbuffer) == 0 && $this->lastblocklevelchange != 0) {
+               //$this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,2,true, $this->blk[$this->blklvl]['direction']);
+               $this->newFlowingBlock( $this->blk[$this->blklvl]['width'],$this->lineheight,'',false,false,$blockstate,true, $this->blk[$this->blklvl]['direction']);
+               $this->finishFlowingBlock(true);        // true = END of flowing block
+               $this->PaintDivBB('',$blockstate);
+       }
+       else {
+               $this->printbuffer($this->textbuffer,$blockstate); 
+       }
+
+
+       $this->textbuffer=array();
+
+       if ($this->blk[$this->blklvl]['keep_block_together']) {
+               $this->printdivbuffer(); 
+       }
+
+       if ($this->kwt) {
+               $this->kwt_height = $this->y - $this->kwt_y0;
+       }
+
+/*-- CSS-IMAGE-FLOAT --*/
+       $this->printfloatbuffer();
+/*-- END CSS-IMAGE-FLOAT --*/
+
+       if($tag=='PRE') { $this->ispre=false; }
+
+/*-- CSS-FLOAT --*/
+       if ($this->blk[$this->blklvl]['float'] == 'R') {
+               // If width not set, here would need to adjust and output buffer
+               $s = $this->PrintPageBackgrounds();
+               // Writes after the marker so not overwritten later by page background etc.
+               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+               $this->pageBackgrounds = array();
+               $this->Reset();
+               $this->pageoutput[$this->page] = array();
+
+               for($i=($this->blklvl-1); $i >= 0; $i--) {
+                       if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); }
+                       else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; }
+               }
+
+               $this->floatDivs[] = array(
+                       'side'=>'R',
+                       'startpage'=>$this->blk[$this->blklvl]['startpage'] ,
+                       'y0'=>$this->blk[$this->blklvl]['float_start_y'] ,
+                       'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']),
+                       'endpage'=>$this->page ,
+                       'y1'=>$this->y ,
+                       'endpos'=> ($this->page*1000 + $this->y),
+                       'w'=> $this->blk[$this->blklvl]['float_width'],
+                       'blklvl'=>$this->blklvl,
+                       'blockContext' => $this->blk[$this->blklvl-1]['blockContext']
+               );
+
+               $this->y = $this->blk[$this->blklvl]['float_start_y'] ;
+               $this->page = $this->blk[$this->blklvl]['startpage'] ;
+               $this->ResetMargins();
+               $this->pageoutput[$this->page] = array();
+       }
+       if ($this->blk[$this->blklvl]['float'] == 'L') {
+               // If width not set, here would need to adjust and output buffer
+               $s = $this->PrintPageBackgrounds();
+               // Writes after the marker so not overwritten later by page background etc.
+               $this->pages[$this->page] = preg_replace('/(___BACKGROUND___PATTERNS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+               $this->pageBackgrounds = array();
+               $this->Reset();
+               $this->pageoutput[$this->page] = array();
+
+               for($i=($this->blklvl-1); $i >= 0; $i--) {
+                       if (isset($this->blk[$i]['float_endpos'])) { $this->blk[$i]['float_endpos'] = max($this->blk[$i]['float_endpos'], ($this->page*1000 + $this->y)); }
+                       else { $this->blk[$i]['float_endpos'] = $this->page*1000 + $this->y; }
+               }
+
+               $this->floatDivs[] = array(
+                       'side'=>'L',
+                       'startpage'=>$this->blk[$this->blklvl]['startpage'] ,
+                       'y0'=>$this->blk[$this->blklvl]['float_start_y'] ,
+                       'startpos'=> ($this->blk[$this->blklvl]['startpage']*1000 + $this->blk[$this->blklvl]['float_start_y']),
+                       'endpage'=>$this->page ,
+                       'y1'=>$this->y ,
+                       'endpos'=> ($this->page*1000 + $this->y),
+                       'w'=> $this->blk[$this->blklvl]['float_width'],
+                       'blklvl'=>$this->blklvl,
+                       'blockContext' => $this->blk[$this->blklvl-1]['blockContext']
+               );
+
+               $this->y = $this->blk[$this->blklvl]['float_start_y'] ;
+               $this->page = $this->blk[$this->blklvl]['startpage'] ;
+               $this->ResetMargins();
+               $this->pageoutput[$this->page] = array();
+       }
+/*-- END CSS-FLOAT --*/
+
+       if (isset($this->blk[$this->blklvl]['visibility']) && $this->blk[$this->blklvl]['visibility']!='visible') {
+               $this->SetVisibility('visible');
+       }
+
+       if (isset($this->blk[$this->blklvl]['page_break_after'])) { $page_break_after = $this->blk[$this->blklvl]['page_break_after']; }
+       else { $page_break_after = ''; }
+
+       //Reset values
+       $this->Reset();
+
+       // mPDF 5.6.01  - LAYERS
+       if (isset($this->blk[$this->blklvl]['z-index']) && $this->blk[$this->blklvl]['z-index'] > 0) {
+               $this->EndLayer();
+       }
+
+       if ($this->blklvl > 0) {        // ==0 SHOULDN'T HAPPEN - NOT XHTML 
+          if ($this->blk[$this->blklvl]['tag'] == $tag) {
+               unset($this->blk[$this->blklvl]);
+               $this->blklvl--;
+          }
+          //else { echo $tag; exit; }  // debug - forces error if incorrectly nested html tags
+       }
+
+       $this->lastblocklevelchange = -1 ;
+       // Reset Inline-type properties
+       if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']); }
+
+       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
+
+       if ($page_break_after) {
+               $save_blklvl = $this->blklvl;
+               $save_blk = $this->blk;
+               $save_silp = $this->saveInlineProperties();
+               $save_spanlvl = $this->spanlvl;
+               $save_ilp = $this->InlineProperties;
+               if ($this->blklvl>1) {
+                       // Close any open block tags
+                       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+                       // Output any text left in buffer
+                       if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
+               }
+/*-- COLUMNS --*/
+               $save_cols = false;
+               if ($this->ColActive) {
+                       $save_cols = true;
+                       $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
+                       $this->SetColumns(0);
+               }
+/*-- END COLUMNS --*/
+               if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+               else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+               else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+               if (!$this->restoreBlockPagebreaks) {
+                       $this->blklvl = 0;
+                       $this->lastblocklevelchange = 0;
+                       $this->blk = array();
+                       $this->initialiseBlock($this->blk[0]);
+                       $this->blk[0]['width'] =& $this->pgwidth;
+                       $this->blk[0]['inner_width'] =& $this->pgwidth;
+                       $this->blk[0]['blockContext'] = $this->blockContext;
+                       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
+                       $this->setCSS($properties,'','BODY'); 
+                       $this->blklvl++;
+                       $currblk =& $this->blk[$this->blklvl];
+                       $prevblk =& $this->blk[$this->blklvl-1];
+
+                       $this->initialiseBlock($currblk);
+                       $currblk['tag'] = $tag;
+                       $currblk['attr'] = $attr;
+
+                       $this->Reset();
+                       $properties = $this->cssmgr->MergeCSS('BLOCK',$tag,$attr);
+               }
+/*-- COLUMNS --*/
+               if ($save_cols) {
+                       // Restore columns
+                       $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
+               }
+/*-- END COLUMNS --*/
+               if ($this->restoreBlockPagebreaks && !$this->tableLevel && !$this->listlvl) {
+                       $this->blk = $save_blk;
+                       // Re-open block tags
+                       $t = $this->blk[0]['tag'];
+                       $a = $this->blk[0]['attr'];
+                       $this->blklvl = 0; 
+                       for ($b=0; $b<=$save_blklvl;$b++) {
+                               $tc = $t;
+                               $ac = $a;
+                               $t = $this->blk[$b+1]['tag'];
+                               $a = $this->blk[$b+1]['attr'];
+                               unset($this->blk[$b+1]);
+                               $this->OpenTag($tc,$ac); 
+                       }
+                       $this->spanlvl = $save_spanlvl;
+                       $this->InlineProperties = $save_ilp;
+                       $this->restoreInlineProperties($save_silp);
+               }
+       }
+
+    }
+
+
+/*-- TABLES --*/
+
+    if($tag=='TH') $this->SetStyle('B',false);
+
+    if(($tag=='TH' or $tag=='TD') && $this->tableLevel) {
+       $this->lastoptionaltag = 'TR';
+       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
+       $this->cssmgr->tbCSSlvl--;
+       if (!$this->tdbegin) { return; }
+       $this->tdbegin = false;
+       // Added for correct calculation of cell column width - otherwise misses the last line if not end </p> etc.
+       if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+               if (!is_array($this->cell[$this->row][$this->col])) { $this->Error("You may have an error in your HTML code e.g. &lt;/td&gt;&lt;/td&gt;"); }
+               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+       }
+       elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+               $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+       }
+
+       // Remove last <br> if at end of cell
+       if (isset($this->cell[$this->row][$this->col]['textbuffer'])) { $ntb = count($this->cell[$this->row][$this->col]['textbuffer']); }
+       else { $ntb = 0; }
+       if ($ntb>1 && $this->cell[$this->row][$this->col]['textbuffer'][$ntb-1][0] == "\n") {
+               unset($this->cell[$this->row][$this->col]['textbuffer'][$ntb-1]);
+       }
+
+       if ($this->cacheTables) {
+               $clen = $this->_cacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache']);
+               $this->cell[$this->row][$this->col] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr'];
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['ptr'] += $clen;
+       }
+
+       if ($this->tablethead) { 
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_thead'][$this->row] = true;
+               if ($this->tableLevel==1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] = max($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] , ($this->row+1)); }
+       }
+       if ($this->tabletfoot) { 
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$this->row] = true;
+               if ($this->tableLevel==1) { $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['footernrows'] = max($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['footernrows'] , ($this->row+1 - $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['headernrows'] )); }
+       }
+       $this->Reset();
+    }
+
+    if($tag=='TR' && $this->tableLevel) {
+       // If Border set on TR - Update right border
+       if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-left'][$this->row])) {
+               if ($this->cacheTables) {
+                       $c = $this->_uncacheCell($this->cell[$this->row][$this->col], $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], null);
+               }
+               else { $c =& $this->cell[$this->row][$this->col]; }
+               if ($c) {
+                       if ($this->packTableData) {
+                               $cell = $this->_unpackCellBorder($c['borderbin'] );
+                       }
+                       else { $cell = $c; }
+                       $cell['border_details']['R'] = $this->border_details($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trborder-right'][$this->row]);
+                       $this->setBorder($cell['border'], _BORDER_RIGHT, $cell['border_details']['R']['s']); 
+                       if ($this->packTableData) {
+                               $c['borderbin'] = $this->_packCellBorder($cell);
+                               unset($c['border']);
+                               unset($c['border_details']);
+                       }
+                       else { $c = $cell; }
+               }
+               if ($this->cacheTables) {
+                       $fh = fopen($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cache'], "r+b"); 
+                       $this->_cacheUpdateBorder($c, $fh, $this->cell[$this->row][$this->col]);
+                       fclose($fh);
+               }
+       }
+       $this->lastoptionaltag = '';
+       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
+       $this->cssmgr->tbCSSlvl--;
+       $this->trow_text_rotate = '';
+       $this->tabletheadjustfinished = false;
+   }
+
+    if($tag=='TBODY') {
+       $this->lastoptionaltag = '';
+       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
+       $this->cssmgr->tbCSSlvl--;
+    }
+
+    if($tag=='THEAD') {
+       $this->lastoptionaltag = '';
+       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
+       $this->cssmgr->tbCSSlvl--;
+       $this->tablethead = 0;
+       $this->tabletheadjustfinished = true;
+       $this->ResetStyles();
+       $this->thead_font_weight = '';
+       $this->thead_font_style = '';
+       $this->thead_font_smCaps = '';
+
+       $this->thead_valign_default = '';
+       $this->thead_textalign_default = '';
+    }
+
+    if($tag=='TFOOT') {
+       $this->lastoptionaltag = '';
+       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
+       $this->cssmgr->tbCSSlvl--;
+       $this->tabletfoot = 0;
+       $this->ResetStyles();
+       $this->tfoot_font_weight = '';
+       $this->tfoot_font_style = '';
+       $this->tfoot_font_smCaps = '';
+
+       $this->tfoot_valign_default = '';
+       $this->tfoot_textalign_default = '';
+    }
+
+    if($tag=='TABLE') { // TABLE-END (
+       if ($this->progressBar) { $this->UpdateProgressBar(1,'','TABLE'); }     // *PROGRESS-BAR*
+       if ($this->progressBar) { $this->UpdateProgressBar(7,0,''); }   // *PROGRESS-BAR*
+       $this->lastoptionaltag = '';
+       unset($this->cssmgr->tablecascadeCSS[$this->cssmgr->tbCSSlvl]);
+       $this->cssmgr->tbCSSlvl--;
+       $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
+       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = $this->cell;
+       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['wc'] = array_pad(array(),$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nc'],array('miw'=>0,'maw'=>0));
+       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['hr'] = array_pad(array(),$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr'],0);
+
+       // Move table footer <tfoot> row to end of table
+       if (isset($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot']) && count($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'])) {
+               $tfrows = array();
+               foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] AS $r=>$val) {
+                       if ($val) { $tfrows[] = $r; }
+               }
+               $temp = array();
+               $temptf = array();
+               foreach($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] AS $k=>$row) {
+                       if (in_array($k,$tfrows)) {
+                               $temptf[] = $row;
+                       }
+                       else {
+                               $temp[] = $row;
+                       }
+               }
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'] = array();
+               for($i=count($temp) ; $i<(count($temp)+count($temptf)); $i++) {
+                       $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['is_tfoot'][$i] = true;
+               }
+               // Update nestedpos row references
+               if (count($this->table[($this->tableLevel+1)])) {
+                 foreach($this->table[($this->tableLevel+1)] AS $nid=>$nested) {
+                       $this->table[($this->tableLevel+1)][$nid]['nestedpos'][0] -= count($temptf);
+                 }
+               } 
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'] = array_merge($temp, $temptf);
+
+               // Update other arays set on row number
+               // [trbackground-images] [trgradients]
+               $temptrbgi = array();
+               $temptrbgg = array();
+               $temptrbgc = array();
+               $temptrbgc[-1] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][-1];
+               for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) {
+                       if (!in_array($k,$tfrows)) {
+                               $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k];
+                               $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k];
+                               $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k];
+                       }
+               }
+               for($k=0; $k<$this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['nr']; $k++) {
+                       if (in_array($k,$tfrows)) {
+                               $temptrbgi[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'][$k];
+                               $temptrbgg[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'][$k];
+                               $temptrbgc[] = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'][$k];
+                       }
+               }
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trbackground-images'] = $temptrbgi;
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['trgradients'] = $temptrbgg;
+               $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['bgcolor'] = $temptrbgc ;
+               // Should Update all other arays set on row number, but cell properties have been set so not needed
+               // [bgcolor] [trborder-left] [trborder-right] [trborder-top] [trborder-bottom]
+       }
+
+       if ($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']=='rtl') {
+               $this->_reverseTableDir($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]);
+       }
+
+       // Fix Borders *********************************************
+       $this->_fixTableBorders($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]);
+
+       if ($this->progressBar) { $this->UpdateProgressBar(7,10,' '); } // *PROGRESS-BAR*
+
+       if ($this->ColActive) { $this->table_rotate = 0; }      // *COLUMNS*
+       if ($this->table_rotate <> 0) {
+               $this->tablebuffer = '';
+               // Max width for rotated table
+               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 1);
+               $this->tbrot_maxh = $this->blk[$this->blklvl]['inner_width'] ;          // Max width for rotated table
+               $this->tbrot_align = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['a'] ;
+       }
+       $this->shrin_k = 1;
+
+       if ($this->shrink_tables_to_fit < 1) { $this->shrink_tables_to_fit = 1; }
+       if (!$this->shrink_this_table_to_fit) { $this->shrink_this_table_to_fit = $this->shrink_tables_to_fit; }
+
+       if ($this->tableLevel>1) {
+               // deal with nested table
+
+               $this->_tableColumnWidth($this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]],true);
+
+               $tmiw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['miw'];
+               $tmaw = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['maw'];
+               $tl = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['tl'];
+
+               // Go down to lower table level
+               $this->tableLevel--;
+
+               // Reset lower level table
+               $this->base_table_properties = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['baseProperties'];
+               $this->cell = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['cells'];
+               // mPDF 5.4.10
+               if (isset($this->cell['PARENTCELL'])) { 
+                       if ($this->cell['PARENTCELL']) { $this->restoreInlineProperties($this->cell['PARENTCELL']); }
+                       unset($this->cell['PARENTCELL']);
+               }
+               $this->row = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currrow'];
+               $this->col = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['currcol'];
+               $objattr = array();
+               $objattr['type'] = 'nestedtable';
+               $objattr['nestedcontent'] = $this->tbctr[($this->tableLevel+1)];
+               $objattr['table'] = $this->tbctr[$this->tableLevel];
+               $objattr['row'] = $this->row;
+               $objattr['col'] = $this->col;
+               $objattr['level'] = $this->tableLevel;
+               $e = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac";
+               $this->_saveCellTextBuffer($e);
+               $this->cell[$this->row][$this->col]['s'] += $tl ;
+               if (!isset($this->cell[$this->row][$this->col]['maxs'])) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+               }
+               elseif($this->cell[$this->row][$this->col]['maxs'] < $this->cell[$this->row][$this->col]['s']) {
+                       $this->cell[$this->row][$this->col]['maxs'] = $this->cell[$this->row][$this->col]['s']; 
+               }
+               $this->cell[$this->row][$this->col]['s'] = 0;// reset
+               if ((isset($this->cell[$this->row][$this->col]['nestedmaw']) && $this->cell[$this->row][$this->col]['nestedmaw'] < $tmaw) || !isset($this->cell[$this->row][$this->col]['nestedmaw'])) { $this->cell[$this->row][$this->col]['nestedmaw'] = $tmaw ; }
+               if ((isset($this->cell[$this->row][$this->col]['nestedmiw']) && $this->cell[$this->row][$this->col]['nestedmiw'] < $tmiw) || !isset($this->cell[$this->row][$this->col]['nestedmiw'])) { $this->cell[$this->row][$this->col]['nestedmiw'] = $tmiw ; }
+               $this->tdbegin = true;
+               $this->nestedtablejustfinished = true;
+               $this->ignorefollowingspaces = true;
+               return;
+       }
+       $this->cMarginL = 0;
+       $this->cMarginR = 0;
+       $this->cMarginT = 0;
+       $this->cMarginB = 0;
+       $this->cellPaddingL = 0;
+       $this->cellPaddingR = 0;
+       $this->cellPaddingT = 0;
+       $this->cellPaddingB = 0;
+
+       if (isset($this->table[1][1]['overflow']) && $this->table[1][1]['overflow']=='visible') {
+               if ($this->kwt || $this->table_rotate || $this->table_keep_together || $this->ColActive) { 
+                       $this->kwt = false;
+                       $this->table_rotate = 0;
+                       $this->table_keep_together = false;
+                       //die("mPDF Warning: You cannot use CSS overflow:visible together with any of these functions: 'Keep-with-table', rotated tables, page-break-inside:avoid, or columns");
+               }
+               $this->_tableColumnWidth($this->table[1][1],true);
+               $this->_tableWidth($this->table[1][1]);
+       }
+       else {
+         if (!$this->kwt_saved) { $this->kwt_height = 0; }
+
+         list($check,$tablemiw) = $this->_tableColumnWidth($this->table[1][1],true);
+         $save_table = $this->table;   
+         if ($this->cacheTables) { $this->_backupCacheFiles(); }
+         $reset_to_minimum_width = false;
+         $added_page = false;
+
+         if ($check > 1) {
+               if ($check > $this->shrink_this_table_to_fit && $this->table_rotate) { 
+                       if ($this->y != $this->tMargin) {
+                               $this->AddPage($this->CurOrientation);
+                               $this->kwt_moved = true; 
+                       }
+                       $added_page = true;
+                       $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
+                       //$check = $tablemiw/$this->tbrot_maxw;         // undo any shrink
+                       $check = 1;     // undo any shrink
+               }
+               $reset_to_minimum_width = true;
+         }
+
+         if ($reset_to_minimum_width) {
+
+               $this->shrin_k = $check;
+
+               $this->default_font_size /= $this->shrin_k;
+               $this->SetFontSize($this->default_font_size, false );
+
+               $this->shrinkTable($this->table[1][1],$this->shrin_k);
+
+               $this->_tableColumnWidth($this->table[1][1],false);     // repeat
+
+               // Starting at $this->innermostTableLevel
+               // Shrink table values - and redo columnWidth
+               for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
+                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
+                               $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k);
+                               $this->_tableColumnWidth($this->table[$lvl][$nid],false);
+                       }
+               }
+         }
+
+         // Set table cell widths for top level table
+         // Use $shrin_k to resize but don't change again
+         $this->SetLineHeight('',$this->table_lineheight);
+
+         // Top level table
+         $this->_tableWidth($this->table[1][1]);
+
+       }
+
+
+       // Now work through any nested tables setting child table[w'] = parent cell['w']
+       // Now do nested tables _tableWidth
+       for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
+               for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
+                       // HERE set child table width = cell width
+
+                       list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos'];
+
+                       if ($this->cacheTables) {
+                               $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null);
+                       }
+                       else 
+                               $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol];
+
+                       if (isset($c['colspan']) && $c['colspan']> 1) {
+                          $parentwidth = 0;
+                          for($cs=0;$cs<$c['colspan'] ; $cs++) {
+                               $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs]; 
+                          }
+                       }
+                       else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; }
+
+
+                       //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell
+                       if (!$this->simpleTables){
+                        if ($this->packTableData) {
+                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
+                        }
+                        else { 
+                               $br = $c['border_details']['R']['w'];
+                               $bl = $c['border_details']['L']['w'];
+                        }
+                        if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
+                         $parentwidth -= $br + $bl
+                               + $c['padding']['L']
+                               + $c['padding']['R']
+                               + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
+                        }
+                        else {
+                         $parentwidth -= $br/2 + $bl/2
+                               + $c['padding']['L']
+                               + $c['padding']['R'];
+                        }
+                       }
+                       else if ($this->simpleTables){
+                        if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
+                         $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
+                               + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']
+                               + $c['padding']['L']
+                               + $c['padding']['R']
+                               + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
+                        }
+                        else {
+                         $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']/2
+                               + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']/2
+                               + $c['padding']['L']
+                               + $c['padding']['R'];
+                        }
+                       }
+                       if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) {
+                               $this->table[$lvl][$nid]['w'] = $parentwidth;
+                       }
+                       else if ($parentwidth > $this->table[$lvl][$nid]['maw']) {
+                               $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw'];
+                       }
+                       else {
+                               $this->table[$lvl][$nid]['w'] = $parentwidth;
+                       }
+                       unset($c);
+                       $this->_tableWidth($this->table[$lvl][$nid]);
+               }
+       }
+
+       // Starting at $this->innermostTableLevel
+       // Cascade back up nested tables: setting heights back up the tree
+       for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) {
+               for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
+                       list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]);                  }
+       }
+       if ($this->progressBar) { $this->UpdateProgressBar(7,20,' '); } // *PROGRESS-BAR*
+       if ($this->table[1][1]['overflow']=='visible') {
+               if ($maxrowheight > $fullpage) { die("mPDF Warning: A Table row is greater than available height. You cannot use CSS overflow:visible"); }
+               if ($maxfirstrowheight > $remainingpage) { $this->AddPage($this->CurOrientation); }
+               $r = 0; $c = 0; $p = 0; $y = 0;
+               while (!$finished) {
+                       list($finished,$r,$c,$p,$y,$y0) = $this->_tableWrite($this->table[1][1],true,$r,$c,$p,$y);
+                       if (!$finished) { 
+                               $this->AddPage($this->CurOrientation); 
+                               // If printed something on first spread, set same y
+                               if ($r==0 && $y0 > -1) { $this->y = $y0; }
+                       }
+               }
+       }
+       else {
+         $recalculate = 1;
+         $forcerecalc = false;
+         // RESIZING ALGORITHM
+         if ($maxrowheight > $fullpage) { 
+               $recalculate = $this->tbsqrt($maxrowheight / $fullpage, 1); 
+               $forcerecalc = true;
+         }
+         else if ($this->table_rotate) {       // NB $remainingpage == $fullpage == the width of the page
+               if ($tableheight > $remainingpage) { 
+                       // If can fit on remainder of page whilst respecting autsize value..
+                       if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) {
+                               $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); 
+                       }
+                       else if (!$added_page) {
+                               if ($this->y != $this->tMargin) {
+                                       $this->AddPage($this->CurOrientation);
+                                       $this->kwt_moved = true; 
+                               }
+                               $added_page = true;
+                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
+                               // 0.001 to force it to recalculate
+                               $recalculate = (1 / $this->shrin_k) + 0.001;    // undo any shrink
+                       }
+               }
+               else { $recalculate = 1; }
+         }
+         else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) {  
+               if ($tableheight > $fullpage) { 
+                       if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, 1)) <= $this->shrink_this_table_to_fit) {
+                               $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); 
+                       }
+                       else if ($this->tableMinSizePriority) {
+                               $this->table_keep_together = false; 
+                               $recalculate = 1.001; 
+                       }
+                       else {
+                               if ($this->y != $this->tMargin) {       // mPDF 5.1
+                                       $this->AddPage($this->CurOrientation);
+                                       $this->kwt_moved = true; 
+                               }
+                               $added_page = true;
+                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
+                               $recalculate = $this->tbsqrt($tableheight / $fullpage, 1); 
+                       }
+               }
+               else if ($tableheight > $remainingpage) { 
+                       // If can fit on remainder of page whilst respecting autsize value..
+                       if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, 1)) <= $this->shrink_this_table_to_fit) {
+                               $recalculate = $this->tbsqrt($tableheight / $remainingpage, 1); 
+                       }
+                       else {
+                               if ($this->y != $this->tMargin) {
+                                       $this->AddPage($this->CurOrientation);
+                                       $this->kwt_moved = true;
+                               } 
+                               $added_page = true;
+                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
+                               $recalculate = 1.001; 
+                       }
+               }
+               else { $recalculate = 1; }
+         }
+         else { $recalculate = 1; }
+
+         if ($recalculate > $this->shrink_this_table_to_fit && !$forcerecalc) { $recalculate = $this->shrink_this_table_to_fit; } 
+
+         $iteration = 1;
+
+         // RECALCULATE
+         while($recalculate <> 1) {
+               $this->shrin_k1 = $recalculate ;
+               $this->shrin_k *= $recalculate ;
+               $this->default_font_size /= ($this->shrin_k1) ;
+               $this->SetFontSize($this->default_font_size, false );
+               $this->SetLineHeight('',$this->table_lineheight);
+               $this->table = $save_table;
+               if ($this->cacheTables) { $this->_restoreCacheFiles(); }
+               if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[1][1],$this->shrin_k); }
+               $this->_tableColumnWidth($this->table[1][1],false);     // repeat
+
+               // Starting at $this->innermostTableLevel
+               // Shrink table values - and redo columnWidth
+               for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
+                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
+                               if ($this->shrin_k <> 1) { $this->shrinkTable($this->table[$lvl][$nid],$this->shrin_k); }
+                               $this->_tableColumnWidth($this->table[$lvl][$nid],false);
+                       }
+               }
+               // Set table cell widths for top level table
+
+               // Top level table
+               $this->_tableWidth($this->table[1][1]);
+
+               // Now work through any nested tables setting child table[w'] = parent cell['w']
+               // Now do nested tables _tableWidth
+               for($lvl=2;$lvl<=$this->innermostTableLevel;$lvl++) {
+                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
+                               // HERE set child table width = cell width
+
+                               list($parentrow, $parentcol, $parentnid) = $this->table[$lvl][$nid]['nestedpos'];
+                               if ($this->cacheTables) {
+                                       $c = $this->_uncacheCell($this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol], $this->table[($lvl-1)][$parentnid]['cache'], null);
+                               }
+                               else 
+                                       $c =& $this->table[($lvl-1)][$parentnid]['cells'][$parentrow][$parentcol];
+
+                               if (isset($c['colspan']) && $c['colspan']> 1) {
+                                  $parentwidth = 0;
+                                  for($cs=0;$cs<$c['colspan'] ; $cs++) {
+                                       $parentwidth += $this->table[($lvl-1)][$parentnid]['wc'][$parentcol+$cs]; 
+                                  }
+                               }
+                               else { $parentwidth = $this->table[($lvl-1)][$parentnid]['wc'][$parentcol]; }
+
+                               //$parentwidth -= ALLOW FOR PADDING ETC.in parent cell
+                               if (!$this->simpleTables){
+                                if ($this->packTableData) {
+                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
+                                }
+                                else { 
+                                       $br = $c['border_details']['R']['w'];
+                                       $bl = $c['border_details']['L']['w'];
+                                }
+                                if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
+                                 $parentwidth -= $br + $bl
+                                       + $c['padding']['L']
+                                       + $c['padding']['R']
+                                       + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
+                                }
+                                else {
+                                 $parentwidth -= $br/2 + $bl/2
+                                       + $c['padding']['L']
+                                       + $c['padding']['R'];
+                                }
+                               }
+                               else if ($this->simpleTables){
+                                if ($this->table[$lvl-1][$parentnid]['borders_separate']) {
+                                 $parentwidth -= $this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
+                                       + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']
+                                       + $c['padding']['L']
+                                       + $c['padding']['R']
+                                       + $this->table[($lvl-1)][$parentnid]['border_spacing_H'];
+                                }
+                                else {
+                                 $parentwidth -= ($this->table[($lvl-1)][$parentnid]['simple']['border_details']['L']['w']
+                                       + $this->table[($lvl-1)][$parentnid]['simple']['border_details']['R']['w']) /2
+                                       + $c['padding']['L']
+                                       + $c['padding']['R'];
+                                }
+                               }
+                               if (isset($this->table[$lvl][$nid]['wpercent']) && $this->table[$lvl][$nid]['wpercent'] && $lvl>1) {
+                                       $this->table[$lvl][$nid]['w'] = $parentwidth;
+                               }
+                               else if ($parentwidth > $this->table[$lvl][$nid]['maw']) {
+                                       $this->table[$lvl][$nid]['w'] = $this->table[$lvl][$nid]['maw'] ;
+                               }
+                               else {
+                                       $this->table[$lvl][$nid]['w'] = $parentwidth;
+                               }
+                               unset($c);
+                               $this->_tableWidth($this->table[$lvl][$nid]);
+                       }
+               }
+
+               // Starting at $this->innermostTableLevel
+               // Cascade back up nested tables: setting heights back up the tree
+               for($lvl=$this->innermostTableLevel;$lvl>0;$lvl--) {
+                       for ($nid=1; $nid<=$this->tbctr[$lvl]; $nid++) {
+                               list($tableheight,$maxrowheight,$fullpage,$remainingpage, $maxfirstrowheight) = $this->_tableHeight($this->table[$lvl][$nid]);                  }
+               }
+
+               // RESIZING ALGORITHM
+
+               if ($maxrowheight > $fullpage) { $recalculate = $this->tbsqrt($maxrowheight / $fullpage, $iteration); $iteration++; }
+               else if ($this->table_rotate && $tableheight > $remainingpage && !$added_page) { 
+                       // If can fit on remainder of page whilst respecting autosize value..
+                       if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) {
+                               $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration); $iteration++; 
+                       }
+                       else {
+                               if (!$added_page) { 
+                                       $this->AddPage($this->CurOrientation); 
+                                       $added_page = true;
+                                       $this->kwt_moved = true; 
+                                       $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
+                               }
+                               // 0.001 to force it to recalculate
+                               $recalculate = (1 / $this->shrin_k) + 0.001;    // undo any shrink
+                       }
+               }
+               else if ($this->table_keep_together || ($this->table[1][1]['nr']==1 && !$this->writingHTMLfooter)) {
+                       if ($tableheight > $fullpage) { 
+                               if (($this->shrin_k * $this->tbsqrt($tableheight / $fullpage, $iteration)) <= $this->shrink_this_table_to_fit) {
+                                       $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; 
+                               }
+                               else if ($this->tableMinSizePriority) {
+                                       $this->table_keep_together = false; 
+                                       $recalculate = (1 / $this->shrin_k) + 0.001; 
+                               }
+                               else {
+                                  if (!$added_page && $this->y != $this->tMargin) {
+                                       $this->AddPage($this->CurOrientation);
+                                       $added_page = true;
+                                       $this->kwt_moved = true; 
+                                       $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
+                                  }
+                                  $recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; 
+                               }
+                       }
+                       else if ($tableheight > $remainingpage) { 
+                               // If can fit on remainder of page whilst respecting autosize value..
+                               if (($this->shrin_k * $this->tbsqrt($tableheight / $remainingpage, $iteration)) <= $this->shrink_this_table_to_fit) {
+                                       $recalculate = $this->tbsqrt($tableheight / $remainingpage, $iteration);  $iteration++; 
+                               }
+                               else {
+                                       if (!$added_page) { 
+                                               $this->AddPage($this->CurOrientation); 
+                                               $added_page = true;
+                                               $this->kwt_moved = true; 
+                                               $this->tbrot_maxw = $this->h - ($this->y + $this->bMargin + 5) - $this->kwt_height;
+                                       }
+                                
+                                       //$recalculate = $this->tbsqrt($tableheight / $fullpage, $iteration); $iteration++; 
+                                       $recalculate = (1 / $this->shrin_k) + 0.001;    // undo any shrink
+                               }
+                       }
+                       else { $recalculate = 1; }
+               }
+               else { $recalculate = 1; }
+         }
+
+
+         if ($maxfirstrowheight > $remainingpage && !$added_page && !$this->table_rotate && !$this->ColActive && !$this->table_keep_together && !$this->writingHTMLheader && !$this->writingHTMLfooter) {
+               $this->AddPage($this->CurOrientation); 
+               $this->kwt_moved = true;
+         }
+
+         // keep-with-table: if page has advanced, print out buffer now, else done in fn. _Tablewrite()
+         if ($this->kwt_saved && $this->kwt_moved) {
+               $this->printkwtbuffer();
+               $this->kwt_moved = false;
+               $this->kwt_saved = false;
+         }
+
+         if ($this->progressBar) { $this->UpdateProgressBar(7,30,' '); }       // *PROGRESS-BAR*
+         // Recursively writes all tables starting at top level
+         $this->_tableWrite($this->table[1][1]);
+
+         if ($this->table_rotate && $this->tablebuffer) {
+               $this->PageBreakTrigger=$this->h-$this->bMargin;
+               $save_tr = $this->table_rotate;
+               $save_y = $this->y;
+               $this->table_rotate = 0;
+               $this->y = $this->tbrot_y0;
+               $h =    $this->tbrot_w;
+               $this->DivLn($h,$this->blklvl,true);
+
+               $this->table_rotate = $save_tr;
+               $this->y = $save_y;
+
+               $this->printtablebuffer();
+         }
+         $this->table_rotate = 0;
+       }
+
+
+       $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
+
+       $this->maxPosR = max($this->maxPosR , ($this->x + $this->table[1][1]['w'])); 
+
+       $this->blockjustfinished=true;
+       $this->lastblockbottommargin = $this->table[1][1]['margin']['B'];
+       //Reset values
+
+       if (isset($this->table[1][1]['page_break_after'])) { $page_break_after = $this->table[1][1]['page_break_after']; }
+       else { $page_break_after = ''; }
+
+       // Keep-with-table
+       $this->kwt = false;
+       $this->kwt_y0 = 0;
+       $this->kwt_x0 = 0;
+       $this->kwt_height = 0;
+       $this->kwt_buffer = array();
+       $this->kwt_Links = array();
+       $this->kwt_Annots = array();
+       $this->kwt_moved = false;
+       $this->kwt_saved = false;
+
+       $this->kwt_Reference = array();
+       $this->kwt_BMoutlines = array();
+       $this->kwt_toc = array();
+
+       $this->shrin_k = 1;
+       $this->shrink_this_table_to_fit = 0;
+
+       unset($this->table);
+       $this->table=array(); //array 
+       $this->tableLevel=0;
+       $this->tbctr=array();
+       $this->innermostTableLevel=0;
+       $this->cssmgr->tbCSSlvl = 0;
+       $this->cssmgr->tablecascadeCSS = array();
+
+       unset($this->cell);
+       $this->cell=array(); //array 
+
+       $this->col=-1; //int
+       $this->row=-1; //int
+       $this->Reset();
+
+       $this->cellPaddingL = 0;
+       $this->cellPaddingT = 0;
+       $this->cellPaddingR = 0;
+       $this->cellPaddingB = 0;
+       $this->cMarginL = 0;
+       $this->cMarginT = 0;
+       $this->cMarginR = 0;
+       $this->cMarginB = 0;
+       $this->default_font_size = $this->original_default_font_size;
+       $this->default_font = $this->original_default_font;
+       $this->SetFontSize($this->default_font_size, false);
+       $this->SetFont($this->default_font,'',0,false);
+       $this->SetLineHeight();
+       if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);}
+       if ($this->progressBar) { $this->UpdateProgressBar(7,100,' '); }        // *PROGRESS-BAR*
+
+       if ($page_break_after) {
+               $save_blklvl = $this->blklvl;
+               $save_blk = $this->blk;
+               $save_silp = $this->saveInlineProperties();
+               $save_spanlvl = $this->spanlvl;
+               $save_ilp = $this->InlineProperties;
+               if ($this->blklvl>1) {
+                       // Close any open block tags
+                       for ($b= $this->blklvl;$b>0;$b--) { $this->CloseTag($this->blk[$b]['tag']); }
+                       // Output any text left in buffer
+                       if (count($this->textbuffer)) { $this->printbuffer($this->textbuffer); $this->textbuffer=array(); }
+               }
+/*-- COLUMNS --*/
+               $save_cols = false;
+               if ($this->ColActive) {
+                       $save_cols = true;
+                       $save_nbcol = $this->NbCol;     // other values of gap and vAlign will not change by setting Columns off
+                       $this->SetColumns(0);
+               }
+/*-- END COLUMNS --*/
+               if ($page_break_after == 'RIGHT') { $this->AddPage($this->CurOrientation,'NEXT-ODD','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+               else if ($page_break_after == 'LEFT') { $this->AddPage($this->CurOrientation,'NEXT-EVEN','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+               else { $this->AddPage($this->CurOrientation,'','','','','','', '','', '','','','','','',0,0,0,0,$pagesel); }
+               if (!$this->restoreBlockPagebreaks) {
+                       $this->blklvl = 0;
+                       $this->lastblocklevelchange = 0;
+                       $this->blk = array();
+                       $this->initialiseBlock($this->blk[0]);
+                       $this->blk[0]['width'] =& $this->pgwidth;
+                       $this->blk[0]['inner_width'] =& $this->pgwidth;
+                       $this->blk[0]['blockContext'] = $this->blockContext;
+                       $properties = $this->cssmgr->MergeCSS('BLOCK','BODY','');
+                       $this->setCSS($properties,'','BODY'); 
+               }
+
+/*-- COLUMNS --*/
+               if ($save_cols) {
+                       // Restore columns
+                       $this->SetColumns($save_nbcol,$this->colvAlign,$this->ColGap);
+               }
+/*-- END COLUMNS --*/
+               if ($this->restoreBlockPagebreaks) {
+                       $this->blk = $save_blk;
+                       // Re-open block tags
+                       $t = $this->blk[0]['tag'];
+                       $a = $this->blk[0]['attr'];
+                       $this->blklvl = 0; 
+                       for ($b=0; $b<=$save_blklvl;$b++) {
+                               $tc = $t;
+                               $ac = $a;
+                               $t = $this->blk[$b+1]['tag'];
+                               $a = $this->blk[$b+1]['attr'];
+                               unset($this->blk[$b+1]);
+                               $this->OpenTag($tc,$ac); 
+                       }
+                       $this->spanlvl = $save_spanlvl;
+                       $this->InlineProperties = $save_ilp;
+                       $this->restoreInlineProperties($save_silp);
+               }
+       }
+
+    }
+/*-- END TABLES --*/
+
+/*-- LISTS --*/
+       // *********** LISTS ********************
+
+    if($tag=='LI') { 
+       $this->lastoptionaltag = ''; 
+       unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]);
+       $this->cssmgr->listCSSlvl--;
+       if (isset($this->listoccur[$this->listlvl]) && isset($this->InlineProperties['LIST'][$this->listlvl][$this->listoccur[$this->listlvl]])) { $this->restoreInlineProperties($this->InlineProperties['LIST'][$this->listlvl][$this->listoccur[$this->listlvl]]); } 
+    }
+
+
+    if(($tag=='UL') or ($tag=='OL')) {
+      $this->ignorefollowingspaces = true; //Eliminate exceeding left-side spaces
+       unset($this->cssmgr->listcascadeCSS[$this->cssmgr->listCSSlvl]);
+       $this->cssmgr->listCSSlvl--;
+
+       $this->lastoptionaltag = '';
+/*-- TABLES --*/
+       // A simple list for inside a table
+       if($this->tableLevel) {
+               $this->listlist[$this->listlvl]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
+               unset($this->listlist[$this->listlvl]);
+               $this->listlvl--;
+               if (isset($this->listlist[$this->listlvl]['MAXNUM'])) { $this->listnum = $this->listlist[$this->listlvl]['MAXNUM']; } // restore previous levels
+               if ($this->listlvl == 0) { $this->listjustfinished = true; }
+               return;
+       }
+/*-- END TABLES --*/
+
+       if ($this->listlvl > 1) { // returning one level
+               $this->listjustfinished=true;
+               if (!empty($this->textbuffer)) { 
+                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
+               }
+               else { 
+                       $this->listnum--;
+               }
+
+               $this->textbuffer = array();
+               $occur = $this->listoccur[$this->listlvl];
+               $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum; //save previous lvl's maxnum
+               $this->listlvl--;
+               $occur = $this->listoccur[$this->listlvl];
+               $this->listnum = $this->listlist[$this->listlvl][$occur]['MAXNUM']; // recover previous level's number
+               $this->listtype = $this->listlist[$this->listlvl][$occur]['TYPE']; // recover previous level's type
+               if ($this->InlineProperties['LIST'][$this->listlvl][$occur]) { $this->restoreInlineProperties($this->InlineProperties['LIST'][$this->listlvl][$occur]); }
+
+       }
+       else { // We are closing the last OL/UL tag
+               if (!empty($this->textbuffer)) {
+                       $this->listitem[] = array($this->listlvl,$this->listnum,$this->textbuffer,$this->listoccur[$this->listlvl],$this->listitemtype);
+               }
+               else { 
+                       $this->listnum--;
+               }
+
+               $occur = $this->listoccur[$this->listlvl]; 
+               $this->listlist[$this->listlvl][$occur]['MAXNUM'] = $this->listnum;
+               $this->textbuffer = array();
+               $this->listlvl--;
+
+               $this->printlistbuffer();
+               unset($this->InlineProperties['LIST']);
+               // SPACING AFTER LIST (Top level only)
+               $this->Ln(0);
+               if ($this->list_margin_bottom) {
+                       $this->DivLn($this->list_margin_bottom,$this->blklvl,true,1);   // collapsible
+               }
+               if (isset($this->blk[$this->blklvl]['InlineProperties'])) { $this->restoreInlineProperties($this->blk[$this->blklvl]['InlineProperties']);}
+               $this->listjustfinished = true; 
+               $this->cssmgr->listCSSlvl = 0;
+               $this->cssmgr->listcascadeCSS = array();
+               $this->blockjustfinished=true;
+               $this->lastblockbottommargin = $this->list_margin_bottom;
+       }
+    }
+/*-- END LISTS --*/
+
+
+}
+
+
+/*-- TABLES --*/
+// This function determines the shrink factor when resizing tables
+// val is the table_height / page_height_available
+// returns a scaling factor used as $shrin_k to resize the table
+// Overcompensating will be quicker but may unnecessarily shrink table too much
+// Undercompensating means it will reiterate more times (taking more processing time)
+function tbsqrt($val, $iteration=3) {
+       $k = 4; // Alters number of iterations until it returns $val itself - Must be > 2
+       // Probably best guess and most accurate
+       if ($iteration==1) return sqrt($val);
+       // Faster than using sqrt (because it won't undercompensate), and gives reasonable results
+       //return 1+(($val-1)/2);
+       $x = 2-(($iteration-2)/($k-2));
+       if ($x == 0) { $ret = $val+0.00001; }
+       else if ($x < 0) { $ret = 1 + ( pow(2, ($iteration-2-$k))/1000   ); }
+       else { $ret = 1+(($val-1)/$x); }
+       return $ret;
+}
+/*-- END TABLES --*/
+
+
+/*-- LISTS --*/
+function printlistbuffer() {
+    //Save x coordinate
+    $x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
+    $this->cMarginL = 0;
+    $this->cMarginR = 0;
+    $currIndentLvl = -1;
+    $lastIndent = array();
+    $bak_page = $this->page;
+    $indent = 0;  
+    foreach($this->listitem as $item)
+    {
+       // COLS
+       $oldcolumn = $this->CurrCol;
+
+       $this->bulletarray = array();
+       //Get list's buffered data
+       $this->listlvl = $lvl = $item[0];
+       $num = $item[1];
+       $this->textbuffer = $item[2];
+       $occur = $item[3];
+       if ($item[4]) { $type = $item[4]; }     // listitemtype
+       else { $type = $this->listlist[$lvl][$occur]['TYPE']; }
+       $maxnum = $this->listlist[$lvl][$occur]['MAXNUM'];
+       $this->restoreInlineProperties($this->InlineProperties['LIST'][$lvl][$occur]);
+       $this->SetFont($this->FontFamily,$this->FontStyle,$this->FontSizePt,true,true); // force to write
+       $clh = $this->FontSize;
+
+       $this->SetLineHeight($this->FontSizePt,$this->list_lineheight[$lvl][$occur]);
+       $this->listOcc = $occur; 
+       $this->listnum = $num; 
+
+       if (isset($this->list_align[$this->listlvl][$occur])) { $this->divalign = $this->list_align[$this->listlvl][$occur]; }
+       else { 
+               if (isset($this->blk[$this->blklvl]['direction']) && $this->blk[$this->blklvl]['direction']=='rtl') { $this->divalign = 'R'; }
+               else { $this->divalign = 'L'; }
+       }
+
+       // Set the bullet fontsize
+       $bullfs = $this->InlineProperties['LISTITEM'][$lvl][$occur][$num]['size'];
+
+       $space_width = $this->GetCharWidth(' ',false) * 1.5;
+
+       //Set default width & height values
+       $this->divwidth = $this->blk[$this->blklvl]['inner_width'];
+       $this->divheight = $this->lineheight;
+       $typefont = $this->FontFamily;
+       if (preg_match('/U\+([a-fA-F0-9]+)/i',$type,$m)) {
+               if ($this->_charDefined($this->CurrentFont['cw'],hexdec($m[1]))) { $list_item_marker = codeHex2utf($m[1]); }
+               else { $list_item_marker = '-'; }
+               $blt_width = $this->GetStringWidth($list_item_marker);
+               $typefont = '';
+               if (preg_match('/rgb\(.*?\)/',$type,$m)) {
+                       $list_item_color = $this->ConvertColor($m[0]); 
+               }
+       }
+       else {
+               $list_item_color = false; 
+
+         switch($type) //Format type
+         {
+          case '1':
+                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; }
+                 else { $list_item_marker = $num . $this->list_number_suffix; }
+               $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix);
+              break;
+          case 'none':
+                 $list_item_marker = '';
+               $blt_width = 0;
+             break;
+          case 'A':
+                 $anum = $this->dec2alpha($num,true);
+                 $maxnum = $this->dec2alpha($maxnum,true);
+                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
+                 else { $list_item_marker = $anum . $this->list_number_suffix; }
+               $blt_width = $this->GetStringWidth(str_repeat('W',strlen($maxnum)).$this->list_number_suffix);
+             break;
+          case 'a':
+              $anum = $this->dec2alpha($num,false);
+                 $maxnum = $this->dec2alpha($maxnum,false);
+                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
+                 else { $list_item_marker = $anum . $this->list_number_suffix; }
+                 $blt_width = $this->GetStringWidth(str_repeat('m',strlen($maxnum)).$this->list_number_suffix);
+             break;
+          case 'I':
+              $anum = $this->dec2roman($num,true);
+                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
+                 else { $list_item_marker = $anum . $this->list_number_suffix; }
+                 
+                 if ($maxnum>87) { $bbit = 87; }
+                 else if ($maxnum>86) { $bbit = 86; }
+                 else if ($maxnum>37) { $bbit = 38; }
+                 else if ($maxnum>36) { $bbit = 37; }
+                 else if ($maxnum>27) { $bbit = 28; }
+                 else if ($maxnum>26) { $bbit = 27; }
+                 else if ($maxnum>17) { $bbit = 18; }
+                 else if ($maxnum>16) { $bbit = 17; }
+                 else if ($maxnum>7) { $bbit = 8; }
+                 else if ($maxnum>6) { $bbit = 7; }
+                 else if ($maxnum>3) { $bbit = 4; }
+                 else { $bbit = $maxnum; }
+              $maxlnum = $this->dec2roman($bbit,true);
+               $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix);
+              break;
+          case 'i':
+              $anum = $this->dec2roman($num,false);
+                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $anum; }
+                 else { $list_item_marker = $anum . $this->list_number_suffix; }
+                 
+                 if ($maxnum>87) { $bbit = 87; }
+                 else if ($maxnum>86) { $bbit = 86; }
+                 else if ($maxnum>37) { $bbit = 38; }
+                 else if ($maxnum>36) { $bbit = 37; }
+                 else if ($maxnum>27) { $bbit = 28; }
+                 else if ($maxnum>26) { $bbit = 27; }
+                 else if ($maxnum>17) { $bbit = 18; }
+                 else if ($maxnum>16) { $bbit = 17; }
+                 else if ($maxnum>7) { $bbit = 8; }
+                 else if ($maxnum>6) { $bbit = 7; }
+                 else if ($maxnum>3) { $bbit = 4; }
+                 else { $bbit = $maxnum; }
+              $maxlnum = $this->dec2roman($bbit,false);
+                 
+               $blt_width = $this->GetStringWidth($maxlnum.$this->list_number_suffix);
+              break;
+          case 'disc':
+                 if ($this->PDFA || $this->PDFX) {
+                       if ($this->_charDefined($this->CurrentFont['cw'],8226)) { $list_item_marker = "\xe2\x80\xa2"; }         // &#8226; 
+                       else { $list_item_marker = '-'; }
+                       $blt_width = $this->GetCharWidth($list_item_marker);
+                       break;
+                 }
+              $list_item_marker = chr(108); // bullet disc in Zapfdingbats  'l'
+                 $typefont = 'czapfdingbats';
+                 $blt_width = (0.791 * $this->FontSize/2.5); 
+              break;
+          case 'circle':
+                 if ($this->PDFA || $this->PDFX) {
+                       if ($this->_charDefined($this->CurrentFont['cw'],9900)) { $list_item_marker = "\xe2\x9a\xac"; } // &#9900; 
+                       else { $list_item_marker = '-'; }
+                       $blt_width = $this->GetCharWidth($list_item_marker);
+                       break;
+                 }
+              $list_item_marker = chr(109); // circle in Zapfdingbats   'm'
+                 $typefont = 'czapfdingbats';
+                 $blt_width = (0.873 * $this->FontSize/2.5); 
+              break;
+          case 'square':
+                 if ($this->PDFA || $this->PDFX) {
+                       if ($this->_charDefined($this->CurrentFont['cw'],9642)) { $list_item_marker = "\xe2\x96\xaa"; } // &#9642; 
+                       else { $list_item_marker = '-'; }
+                       $blt_width = $this->GetCharWidth($list_item_marker);
+                       break;
+                 }
+              $list_item_marker = chr(110); //black square in Zapfdingbats font   'n'
+                 $typefont = 'czapfdingbats';
+                 $blt_width = (0.761 * $this->FontSize/2.5); 
+              break;
+
+/*  CSS3 list-styles numeric + I added tamil
+arabic-indic | bengali | cambodian | devanagari | gujarati | gurmukhi | kannada | khmer | lao | malayalam | mongolian | myanmar | oriya | persian | telugu | tibetan | thai | urdu 
+*/
+          case 'arabic-indic':
+                 $cp = 0x0660;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $this->list_number_suffix . $rnum;        // RTL
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'persian':
+          case 'urdu':
+                 $cp = 0x06F0;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $this->list_number_suffix . $rnum;        // RTL
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'bengali':
+                 $cp = 0x09E6;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'devanagari':
+                 $cp = 0x0966;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'gujarati':
+                 $cp = 0x0AE6;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'gurmukhi':
+                 $cp = 0x0A66;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'kannada':
+                 $cp = 0x0CE6;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'malayalam':
+                 $cp = 0x0D66;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(6, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'oriya':
+                 $cp = 0x0B66;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'telugu':
+                 $cp = 0x0C66;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(3, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'tamil':
+                 $cp = 0x0BE6;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(9, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+          case 'thai':
+                 $cp = 0x0E50;
+                 $rnum = $this->dec2other($num, $cp);
+                 $list_item_marker = $rnum . $this->list_number_suffix; 
+               $blt_width = $this->GetStringWidth(str_repeat($this->dec2other(5, $cp),strlen($maxnum)).$this->list_number_suffix);
+                 break;
+           default:
+                 if ($this->listDir == 'rtl') { $list_item_marker = $this->list_number_suffix . $num; }
+                 else { $list_item_marker = $num . $this->list_number_suffix; }
+               $blt_width = $this->GetStringWidth(str_repeat('5',strlen($maxnum)).$this->list_number_suffix);
+              break;
+         }
+       }
+
+       if (isset($item[5]) && $item[5]) { $list_item_marker = ''; }
+
+       if ($currIndentLvl < $lvl) {
+               if ($lvl > 1 || $this->list_indent_first_level) { 
+                       $indent += $this->list_indent[$lvl][$occur]; 
+                       $lastIndent[$lvl] = $this->list_indent[$lvl][$occur];
+               }
+       }
+       else if ($currIndentLvl > $lvl) {
+           while ($currIndentLvl > $lvl) {
+               $indent -= $lastIndent[$currIndentLvl];
+               $currIndentLvl--;
+           }
+       }
+       $currIndentLvl = $lvl;
+
+
+/*-- RTL --*/
+
+       if ($this->listDir == 'rtl') { 
+         // list_align_style  Determines alignment of numbers in numbered lists
+         if ($this->list_align_style == 'L') { $lalign = 'R'; }
+         else { $lalign = 'L';  }
+        $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ;
+        $xb = $this->blk[$this->blklvl]['inner_width'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left'] - $indent - $blt_width; //Bullet position (relative)
+        //Output bullet
+         $this->bulletarray = array('w'=>$blt_width,'h'=>$clh,'txt'=>$list_item_marker,'x'=>$xb,'align'=>$lalign,'font'=>$typefont,'level'=>$lvl, 'occur'=>$occur, 'num'=>$num, 'fontsize'=>$bullfs, 'col'=>$list_item_color );
+         $this->x = $x;
+       }
+       else {
+/*-- END RTL --*/
+         
+         if ($this->list_align_style == 'L') { $lalign = 'L'; }
+         else { $lalign = 'R';  }
+        $this->divwidth = $this->blk[$this->blklvl]['width'] - ($indent + $blt_width + $space_width) ;
+         $xb =  $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] - $blt_width - $space_width; 
+        //Output bullet
+         $this->bulletarray = array('w'=>$blt_width,'h'=>$clh,'txt'=>$list_item_marker,'x'=>$xb,'align'=>$lalign,'font'=>$typefont,'level'=>$lvl, 'occur'=>$occur, 'num'=>$num, 'fontsize'=>$bullfs, 'col'=>$list_item_color );
+         $this->x = $x + $indent + $blt_width + $space_width;
+       }       // *RTL*
+
+      //Print content
+       $this->printbuffer($this->textbuffer,'',false,true);
+      $this->textbuffer=array();
+
+       // Added to correct for OddEven Margins
+       if  ($this->page != $bak_page) {
+               if (($this->page-$bak_page) % 2 == 1) {
+                       $x += $this->MarginCorrection;
+               }
+               $bak_page = $this->page;
+       }
+/*-- COLUMNS --*/
+       // OR COLUMN CHANGE
+       if ($this->CurrCol != $oldcolumn) {
+               if ($this->directionality == 'rtl') {   // *RTL*
+                       $x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);  // *RTL*
+               }       // *RTL*
+               else {  // *RTL*
+                       $x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
+               }       // *RTL*
+               $oldcolumn = $this->CurrCol;
+       }
+/*-- END COLUMNS --*/
+
+    }
+
+    //Reset all used values
+    $this->listoccur = array();
+    $this->listitem = array();
+    $this->listlist = array();
+    $this->listlvl = 0;
+    $this->listnum = 0;
+    $this->listtype = '';
+    $this->textbuffer = array();
+    $this->divwidth = 0;
+    $this->divheight = 0;
+    $this->x = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'];
+}
+/*-- END LISTS --*/
+
+function _saveTextBuffer($t, $link = '', $intlink = '') {
+//     $this->textbuffer[] = array($t,$link,$this->currentfontstyle,$this->colorarray,$this->currentfontfamily,$this->SUP,$this->SUB,$intlink,$this->strike,$this->textparam,$this->spanbgcolorarray,$this->currentfontsize,$this->ReqFontStyle,$this->kerning,$this->lSpacingCSS,$this->wSpacingCSS,$this->spanborddet, $this->textshadow); 
+       // mPDF 5.6.14
+       $arr = array();
+       $arr[0] = $t;
+       if (isset($link) && $link) $arr[1] = $link;
+       $arr[2] = $this->currentfontstyle;
+       if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray;
+       $arr[4] = $this->currentfontfamily;
+       if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP;
+       if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB;
+       if (isset($intlink) && $intlink) $arr[7] = $intlink;
+       if (isset($this->strike) && $this->strike) $arr[8] = $this->strike;
+       if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam;
+       if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray;
+       $arr[11] = $this->currentfontsize;
+       if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle;
+       if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning;
+       if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS;
+       if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS;
+       if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet;
+       if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow;
+       $this->textbuffer[] = $arr;
+}
+
+function _saveCellTextBuffer($t, $link = '', $intlink = '') {
+//      $this->cell[$this->row][$this->col]['textbuffer'][] = array($t,$link,$this->currentfontstyle,$this->colorarray,$this->currentfontfamily,$this->SUP,$this->SUB,$intlink,$this->strike,$this->textparam,$this->spanbgcolorarray,$this->currentfontsize,$this->ReqFontStyle,$this->kerning,$this->lSpacingCSS,$this->wSpacingCSS,$this->spanborddet, $this->textshadow);
+       // mPDF 5.6.14
+       $arr = array();
+       $arr[0] = $t;
+       if (isset($link) && $link) $arr[1] = $link;
+       $arr[2] = $this->currentfontstyle;
+       if (isset($this->colorarray) && $this->colorarray) $arr[3] = $this->colorarray;
+       $arr[4] = $this->currentfontfamily;
+       if (isset($this->SUP) && $this->SUP) $arr[5] = $this->SUP;
+       if (isset($this->SUB) && $this->SUB) $arr[6] = $this->SUB;
+       if (isset($intlink) && $intlink) $arr[7] = $intlink;
+       if (isset($this->strike) && $this->strike) $arr[8] = $this->strike;
+       if (isset($this->textparam) && $this->textparam) $arr[9] = $this->textparam;
+       if (isset($this->spanbgcolorarray) && $this->spanbgcolorarray) $arr[10] = $this->spanbgcolorarray;
+       $arr[11] = $this->currentfontsize;
+       if (isset($this->ReqFontStyle) && $this->ReqFontStyle) $arr[12] = $this->ReqFontStyle;
+       if (isset($this->kerning) && $this->kerning) $arr[13] = $this->kerning;
+       if (isset($this->lSpacingCSS) && $this->lSpacingCSS) $arr[14] = $this->lSpacingCSS;
+       if (isset($this->wSpacingCSS) && $this->wSpacingCSS) $arr[15] = $this->wSpacingCSS;
+       if (isset($this->spanborddet) && $this->spanborddet) $arr[16] = $this->spanborddet;
+       if (isset($this->textshadow) && $this->textshadow) $arr[17] = $this->textshadow;
+       $this->cell[$this->row][$this->col]['textbuffer'][] = $arr;
+}
+
+
+function printbuffer($arrayaux,$blockstate=0,$is_table=false,$is_list=false)
+{
+// $blockstate = 0;    // NO margins/padding
+// $blockstate = 1;    // Top margins/padding only
+// $blockstate = 2;    // Bottom margins/padding only
+// $blockstate = 3;    // Top & bottom margins/padding
+       $this->spanbgcolorarray = '';
+       $this->spanbgcolor = false;
+       $this->spanborder = false;
+       $this->spanborddet = array();
+       $paint_ht_corr = 0;
+
+/*-- CSS-FLOAT --*/
+       if (count($this->floatDivs)) {
+               list($l_exists, $r_exists, $l_max, $r_max, $l_width, $r_width) = $this->GetFloatDivInfo($this->blklvl);
+               if (($this->blk[$this->blklvl]['inner_width']-$l_width-$r_width) < (2*$this->GetCharWidth('W',false))) {
+                       // Too narrow to fit - try to move down past L or R float
+                       if ($l_max < $r_max && ($this->blk[$this->blklvl]['inner_width']-$r_width) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('LEFT', $this->blklvl); 
+                       }
+                       else if ($r_max < $l_max && ($this->blk[$this->blklvl]['inner_width']-$l_width) > (2*$this->GetCharWidth('W',false))) {
+                               $this->ClearFloats('RIGHT', $this->blklvl); 
+                       }
+                       else { $this->ClearFloats('BOTH', $this->blklvl); }
+               }
+       }
+/*-- END CSS-FLOAT --*/
+       $bak_y = $this->y;
+       $bak_x = $this->x;
+       $align = '';
+       if (!$is_table && !$is_list) {
+               if (isset($this->blk[$this->blklvl]['align']) && $this->blk[$this->blklvl]['align']) { $align = $this->blk[$this->blklvl]['align']; }
+               // Block-align is set by e.g. <.. align="center"> Takes priority for this block but not inherited
+               if (isset($this->blk[$this->blklvl]['block-align']) && $this->blk[$this->blklvl]['block-align']) { $align = $this->blk[$this->blklvl]['block-align']; }
+               if (isset($this->blk[$this->blklvl]['direction'])) $blockdir = $this->blk[$this->blklvl]['direction'];
+               else $blockdir = "";
+               $this->divwidth = $this->blk[$this->blklvl]['width'];
+       }
+       else {
+               $align = $this->divalign;
+               if ($is_table) { $blockdir = $this->table[$this->tableLevel][$this->tbctr[$this->tableLevel]]['direction']; }
+               else { $blockdir = $this->listDir; }
+       }
+       $oldpage = $this->page;
+
+       // ADDED for Out of Block now done as Flowing Block
+       if ($this->divwidth == 0) { 
+               $this->divwidth = $this->pgwidth; 
+       }
+
+       if (!$is_table && !$is_list) { $this->SetLineHeight($this->FontSizePt,$this->blk[$this->blklvl]['line_height']); }
+       $this->divheight = $this->lineheight;
+       $old_height = $this->divheight;
+
+    // As a failsafe - if font has been set but not output to page
+    $this->SetFont($this->default_font,'',$this->default_font_size,true,true); // force output to page
+
+    $array_size = count($arrayaux);
+    $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,true,$blockdir);
+
+       // Added - Otherwise <div><div><p> did not output top margins/padding for 1st/2nd div
+    if ($array_size == 0) { $this->finishFlowingBlock(true); } // true = END of flowing block
+
+    for($i=0;$i < $array_size; $i++)
+    {
+       // COLS
+       $oldcolumn = $this->CurrCol;
+
+       $vetor = $arrayaux[$i];
+       if ($i == 0 and $vetor[0] != "\n" and !$this->ispre) {
+               $vetor[0] = ltrim($vetor[0]);
+       }
+
+       // FIXED TO ALLOW IT TO SHOW '0' 
+       if (empty($vetor[0]) && !($vetor[0]==='0') && empty($vetor[7])) { //Ignore empty text and not carrying an internal link
+               //Check if it is the last element. If so then finish printing the block
+               if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block
+               continue;
+       }
+
+
+       //Activating buffer properties
+       if(isset($vetor[11]) and $vetor[11] != '') {     // Font Size
+               if ($is_table && $this->shrin_k) {
+                       $this->SetFontSize($vetor[11]/$this->shrin_k,false); 
+               }
+               else {
+                       $this->SetFontSize($vetor[11],false); 
+               }
+       }
+
+       if(isset($vetor[17]) && !empty($vetor[17])) { //TextShadow
+               $this->textshadow = $vetor[17];
+       }
+       if(isset($vetor[16]) && !empty($vetor[16])) { //Border
+               $this->spanborddet = $vetor[16];
+               $this->spanborder = true;
+       }
+
+       if(isset($vetor[15])) {          // Word spacing
+               $this->wSpacingCSS = $vetor[15];
+               if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
+                       $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
+               }
+       }
+       if(isset($vetor[14])) {          // Letter spacing
+               $this->lSpacingCSS = $vetor[14]; 
+               if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
+                       $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); 
+               }
+       }
+       if(isset($vetor[13])) {          // Font Kerning
+               $this->kerning = $vetor[13]; 
+       }
+
+
+       if(isset($vetor[10]) and !empty($vetor[10])) //Background color
+       {
+               $this->spanbgcolorarray = $vetor[10];
+               $this->spanbgcolor = true;
+       }
+       if(isset($vetor[9]) and !empty($vetor[9])) // Text parameters - Outline + hyphens
+       {
+               $this->textparam = $vetor[9] ;                  // mPDF 5.6.14
+               $this->SetTextOutline($this->textparam);                // mPDF 5.6.07
+       }
+       if(isset($vetor[8]) and $vetor[8] === true) // strike-through the text
+       {
+           $this->strike = true;
+       }
+       if(isset($vetor[7]) and $vetor[7] != '') // internal target: <a name="anyvalue">
+       {
+         $ily = $this->y; 
+         if ($this->keep_block_together) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); }
+         else if ($this->table_rotate) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); }
+         else if ($this->kwt) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); }
+         else if ($this->ColActive) { $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); }
+         else
+               $this->internallink[$vetor[7]] = array("Y"=>$ily,"PAGE"=>$this->page );
+         if (empty($vetor[0])) { //Ignore empty text
+               //Check if it is the last element. If so then finish printing the block
+               if ($i == ($array_size-1)) { $this->finishFlowingBlock(true); } // true = END of flowing block
+               continue;
+         }
+       }
+       if(isset($vetor[6]) and $vetor[6] === true) // Subscript 
+       {
+               $this->SUB = true;
+       }
+       if(isset($vetor[5]) and $vetor[5] === true) // Superscript
+       {
+               $this->SUP = true;
+       }
+       if(isset($vetor[4]) and $vetor[4] != '') {  // Font Family
+               $font = $this->SetFont($vetor[4],$this->FontStyle,0,false); 
+       }
+       if (!empty($vetor[3])) //Font Color
+       {
+               $cor = $vetor[3];
+               $this->SetTColor($cor); 
+       }
+       if(isset($vetor[2]) and $vetor[2] != '') //Bold,Italic,Underline styles
+       {
+               $this->SetStyles($vetor[2]);
+       }
+
+       if(isset($vetor[12]) and $vetor[12] != '') { //Requested Bold,Italic,Underline
+               $this->ReqFontStyle = $vetor[12];
+       }
+       if(isset($vetor[1]) and $vetor[1] != '') //LINK
+       {
+         if (strpos($vetor[1],".") === false && strpos($vetor[1],"@") !== 0) //assuming every external link has a dot indicating extension (e.g: .html .txt .zip www.somewhere.com etc.) 
+         {
+           //Repeated reference to same anchor?
+           while(array_key_exists($vetor[1],$this->internallink)) $vetor[1]="#".$vetor[1];
+           $this->internallink[$vetor[1]] = $this->AddLink();
+           $vetor[1] = $this->internallink[$vetor[1]];
+         }
+         $this->HREF = $vetor[1];                                      // HREF link style set here ******
+       }
+
+       // SPECIAL CONTENT - IMAGES & FORM OBJECTS
+       //Print-out special content
+
+       if (substr($vetor[0],0,3) == "\xbb\xa4\xac") { //identifier has been identified!
+         
+         $objattr = $this->_getObjAttr($vetor[0]);
+
+/*-- TABLES --*/
+         if ($objattr['type'] == 'nestedtable') {
+               if ($objattr['nestedcontent']) {
+                       $level = $objattr['level'];
+                       $table = &$this->table[$level][$objattr['table']];
+                       if ($this->cacheTables) { 
+                               $fh = fopen($table['cache'], "r+b");
+                               $cell = $this->_uncacheCell($table['cells'][$objattr['row']][$objattr['col']], '', $fh);
+                       }
+                       else {
+                               $fh = null;
+                               $cell = &$table['cells'][$objattr['row']][$objattr['col']];
+                       }
+                       $this->finishFlowingBlock(false,'nestedtable');
+                       $save_dw = $this->divwidth ;
+                       $save_buffer = $this->cellBorderBuffer;
+                       $this->cellBorderBuffer = array();
+                       $ncx = $this->x;
+                       list($dummyx,$w) = $this->_tableGetWidth($table, $objattr['row'], $objattr['col'], $fh);
+                       $ntw = $this->table[($level+1)][$objattr['nestedcontent']]['w'];        // nested table width
+                       if (!$this->simpleTables){
+                               if ($this->packTableData) {
+                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cell['borderbin']);
+                               }
+                               else { 
+                                       $br = $cell['border_details']['R']['w'];
+                                       $bl = $cell['border_details']['L']['w'];
+                               }
+                               if ($table['borders_separate']) { 
+                                       $innerw = $w - $bl - $br - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H'];
+                               }
+                               else {
+                                       $innerw = $w - $bl/2 - $br/2 - $cell['padding']['L'] - $cell['padding']['R'];
+                               }
+                       }
+                       else if ($this->simpleTables){
+                               if ($table['borders_separate']) { 
+                                       $innerw = $w - $table['simple']['border_details']['L']['w'] - $table['simple']['border_details']['R']['w'] - $cell['padding']['L'] - $cell['padding']['R'] - $table['border_spacing_H'];
+                               }
+                               else {
+                                       $innerw = $w - $table['simple']['border_details']['L']['w']/2 - $table['simple']['border_details']['R']['w']/2 - $cell['padding']['L'] - $cell['padding']['R'];
+                               }
+                       }
+                       if ($cell['a']=='C' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='C') { 
+                               $ncx += ($innerw-$ntw)/2; 
+                       }
+                       elseif ($cell['a']=='R' || $this->table[($level+1)][$objattr['nestedcontent']]['a']=='R') {
+                               $ncx += $innerw- $ntw; 
+                       } 
+                       $this->x = $ncx ;
+                       if ($this->cacheTables) { fclose($fh); }
+
+                       $this->_tableWrite($this->table[($level+1)][$objattr['nestedcontent']]);
+                       $this->cellBorderBuffer = $save_buffer;
+                       $this->x = $bak_x ;
+                       $this->divwidth  = $save_dw;
+                       $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
+               }
+         }
+         else {
+/*-- END TABLES --*/
+               if ($is_table) {        // *TABLES*
+                       $maxWidth = $this->divwidth;    // *TABLES*
+               }       // *TABLES*
+               else {  // *TABLES*
+                       $maxWidth = $this->divwidth - ($this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_right'] + $this->blk[$this->blklvl]['border_right']['w']); 
+               }       // *TABLES*
+
+/*-- CSS-IMAGE-FLOAT --*/
+               // If float (already) exists at this level
+               if (isset($this->floatmargins['R']) && $this->y <= $this->floatmargins['R']['y1'] && $this->y >= $this->floatmargins['R']['y0']) { $maxWidth -= $this->floatmargins['R']['w']; }
+               if (isset($this->floatmargins['L']) && $this->y <= $this->floatmargins['L']['y1'] && $this->y >= $this->floatmargins['L']['y0']) { $maxWidth -= $this->floatmargins['L']['w']; }
+/*-- END CSS-IMAGE-FLOAT --*/
+
+               list($skipln) = $this->inlineObject($objattr['type'], '', $this->y, $objattr,$this->lMargin, ($this->flowingBlockAttr['contentWidth']/_MPDFK), $maxWidth, $this->flowingBlockAttr['height'], false, $is_table);
+               //  1 -> New line needed because of width
+               // -1 -> Will fit width on line but NEW PAGE REQUIRED because of height
+               // -2 -> Will not fit on line therefore needs new line but thus NEW PAGE REQUIRED
+               $iby = $this->y;
+               $oldpage = $this->page;
+               $oldcol = $this->CurrCol;
+               if (($skipln == 1 || $skipln == -2) && !isset($objattr['float'])) {
+                       $this->finishFlowingBlock(false,$objattr['type']);
+                       $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
+               }
+               $thispage = $this->page;
+               if ($this->CurrCol!=$oldcol) { $changedcol = true; } 
+               else { $changedcol=false; }
+
+               // the previous lines can already have triggered page break or column change
+               if (!$changedcol && $skipln <0 && $this->AcceptPageBreak() && $thispage==$oldpage) {
+
+                       $this->AddPage($this->CurOrientation); 
+
+                       // Added to correct Images already set on line before page advanced
+                       // i.e. if second inline image on line is higher than first and forces new page
+                       if (count($this->objectbuffer)) {
+                               $yadj = $iby - $this->y;
+                               foreach($this->objectbuffer AS $ib=>$val) {
+                                       if ($this->objectbuffer[$ib]['OUTER-Y'] ) $this->objectbuffer[$ib]['OUTER-Y'] -= $yadj;
+                                       if ($this->objectbuffer[$ib]['BORDER-Y']) $this->objectbuffer[$ib]['BORDER-Y'] -= $yadj;
+                                       if ($this->objectbuffer[$ib]['INNER-Y']) $this->objectbuffer[$ib]['INNER-Y'] -= $yadj;
+                               }
+                       }
+               }
+
+               // Added to correct for OddEven Margins
+               if  ($this->page != $oldpage) {
+                       if (($this->page-$oldpage) % 2 == 1) { 
+                               $bak_x += $this->MarginCorrection;
+                       }
+                       $oldpage = $this->page;
+                               $y = $this->tMargin - $paint_ht_corr ;
+                               $this->oldy = $this->tMargin - $paint_ht_corr ;
+                               $old_height = 0;
+               }
+               $this->x = $bak_x;
+/*-- COLUMNS --*/
+               // COLS
+               // OR COLUMN CHANGE
+               if ($this->CurrCol != $oldcolumn) {
+                       if ($this->directionality == 'rtl') {   // *RTL*
+                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
+                       }       // *RTL*
+                       else {  // *RTL*
+                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
+                       }       // *RTL*
+                       $this->x = $bak_x;
+                       $oldcolumn = $this->CurrCol;
+                       $y = $this->y0 - $paint_ht_corr ;
+                       $this->oldy = $this->y0 - $paint_ht_corr ;
+                       $old_height = 0;
+               }
+/*-- END COLUMNS --*/
+
+/*-- CSS-IMAGE-FLOAT --*/
+               if ($objattr['type'] == 'image' && isset($objattr['float'])) { 
+                 $fy = $this->y;
+
+                 // DIV TOP MARGIN/BORDER/PADDING
+                 if ($this->flowingBlockAttr['newblock'] && ($this->flowingBlockAttr['blockstate']==1 || $this->flowingBlockAttr['blockstate']==3) && $this->flowingBlockAttr['lineCount']== 0) { 
+                       $fy += $this->blk[$this->blklvl]['margin_top'] + $this->blk[$this->blklvl]['padding_top'] + $this->blk[$this->blklvl]['border_top']['w'];
+                 }
+
+                 if ($objattr['float']=='R') {
+                       $fx = $this->w - $this->rMargin - $objattr['width'] - ($this->blk[$this->blklvl]['outer_right_margin'] + $this->blk[$this->blklvl]['border_right']['w'] + $this->blk[$this->blklvl]['padding_right']);
+
+
+                 }
+                 else if ($objattr['float']=='L') {
+                       $fx = $this->lMargin + ($this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left']);
+                 }
+                 $w = $objattr['width'];
+                 $h = abs($objattr['height']); 
+
+                 $widthLeft = $maxWidth - ($this->flowingBlockAttr['contentWidth']/_MPDFK);
+                 $maxHeight = $this->h - ($this->tMargin + $this->margin_header + $this->bMargin + 10) ;
+                 // For Images
+                 $extraWidth = ($objattr['border_left']['w'] + $objattr['border_right']['w'] + $objattr['margin_left']+ $objattr['margin_right']);
+                 $extraHeight = ($objattr['border_top']['w'] + $objattr['border_bottom']['w'] + $objattr['margin_top']+ $objattr['margin_bottom']);
+
+                 if ($objattr['itype'] == 'wmf' || $objattr['itype'] == 'svg') {
+                       $file = $objattr['file'];
+                       $info=$this->formobjects[$file];
+                 }
+                 else {
+                       $file = $objattr['file'];
+                       $info=$this->images[$file];
+                 }
+                 $img_w = $w - $extraWidth ;
+                 $img_h = $h - $extraHeight ;
+                 if ($objattr['border_left']['w']) {
+                       $objattr['BORDER-WIDTH'] = $img_w + (($objattr['border_left']['w'] + $objattr['border_right']['w'])/2) ;
+                       $objattr['BORDER-HEIGHT'] = $img_h + (($objattr['border_top']['w'] + $objattr['border_bottom']['w'])/2) ;
+                       $objattr['BORDER-X'] = $fx + $objattr['margin_left'] + (($objattr['border_left']['w'])/2) ;
+                       $objattr['BORDER-Y'] = $fy + $objattr['margin_top'] + (($objattr['border_top']['w'])/2) ;
+                 }
+                 $objattr['INNER-WIDTH'] = $img_w;
+                 $objattr['INNER-HEIGHT'] = $img_h;
+                 $objattr['INNER-X'] = $fx + $objattr['margin_left'] + ($objattr['border_left']['w']);
+                 $objattr['INNER-Y'] = $fy + $objattr['margin_top'] + ($objattr['border_top']['w']) ;
+                 $objattr['ID'] = $info['i'];
+                 $objattr['OUTER-WIDTH'] = $w;
+                 $objattr['OUTER-HEIGHT'] = $h;
+                 $objattr['OUTER-X'] = $fx;
+                 $objattr['OUTER-Y'] = $fy;
+                 if ($objattr['float']=='R') {
+                       // If R float already exists at this level
+                       $this->floatmargins['R']['skipline'] = false;  
+                       if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) {
+                               $this->WriteFlowingBlock($vetor[0]); 
+                       }
+                       // If L float already exists at this level
+                       else if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) {
+                               // Final check distance between floats is not now too narrow to fit text
+                               $mw = 2*$this->GetCharWidth('W',false);
+                               if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['L']['w']) < $mw) {
+                                       $this->WriteFlowingBlock($vetor[0]); 
+                               }
+                               else {
+                                       $this->floatmargins['R']['x'] = $fx;
+                                       $this->floatmargins['R']['w'] = $w;
+                                       $this->floatmargins['R']['y0'] = $fy;
+                                       $this->floatmargins['R']['y1'] = $fy + $h;
+                                       if ($skipln == 1) {
+                                               $this->floatmargins['R']['skipline'] = true;
+                                               $this->floatmargins['R']['id'] = count($this->floatbuffer)+0;
+                                               $objattr['skipline'] = true;
+                                       }
+                                       $this->floatbuffer[] = $objattr;
+                               }
+                       }
+                       else {
+                               $this->floatmargins['R']['x'] = $fx;
+                               $this->floatmargins['R']['w'] = $w;
+                               $this->floatmargins['R']['y0'] = $fy;
+                               $this->floatmargins['R']['y1'] = $fy + $h;
+                               if ($skipln == 1) {
+                                       $this->floatmargins['R']['skipline'] = true;
+                                       $this->floatmargins['R']['id'] = count($this->floatbuffer)+0;
+                                       $objattr['skipline'] = true;
+                               }
+                               $this->floatbuffer[] = $objattr;
+                       }
+                 }
+                 else if ($objattr['float']=='L') {
+                       // If L float already exists at this level
+                       $this->floatmargins['L']['skipline'] = false;  
+                       if (isset($this->floatmargins['L']['y1']) && $this->floatmargins['L']['y1'] > 0 && $fy < $this->floatmargins['L']['y1']) {
+                               $this->floatmargins['L']['skipline'] = false;  
+                               $this->WriteFlowingBlock($vetor[0]); 
+                       }
+                       // If R float already exists at this level
+                       else if (isset($this->floatmargins['R']['y1']) && $this->floatmargins['R']['y1'] > 0 && $fy < $this->floatmargins['R']['y1']) {
+                               // Final check distance between floats is not now too narrow to fit text
+                               $mw = 2*$this->GetCharWidth('W',false);
+                               if (($this->blk[$this->blklvl]['inner_width'] - $w - $this->floatmargins['R']['w']) < $mw) {
+                                       $this->WriteFlowingBlock($vetor[0]); 
+                               }
+                               else {
+                                       $this->floatmargins['L']['x'] = $fx + $w;
+                                       $this->floatmargins['L']['w'] = $w;
+                                       $this->floatmargins['L']['y0'] = $fy;
+                                       $this->floatmargins['L']['y1'] = $fy + $h;
+                                       if ($skipln == 1) {
+                                               $this->floatmargins['L']['skipline'] = true;
+                                               $this->floatmargins['L']['id'] = count($this->floatbuffer)+0;
+                                               $objattr['skipline'] = true;
+                                       }
+                                       $this->floatbuffer[] = $objattr;
+                               }
+                       }
+                       else {
+                               $this->floatmargins['L']['x'] = $fx + $w;
+                               $this->floatmargins['L']['w'] = $w;
+                               $this->floatmargins['L']['y0'] = $fy;
+                               $this->floatmargins['L']['y1'] = $fy + $h;
+                               if ($skipln == 1) {
+                                       $this->floatmargins['L']['skipline'] = true;
+                                       $this->floatmargins['L']['id'] = count($this->floatbuffer)+0;
+                                       $objattr['skipline'] = true;
+                               }
+                               $this->floatbuffer[] = $objattr;
+                       }
+                 }
+               }
+               else {
+/*-- END CSS-IMAGE-FLOAT --*/
+                       $this->WriteFlowingBlock($vetor[0]); 
+/*-- CSS-IMAGE-FLOAT --*/
+               }
+/*-- END CSS-IMAGE-FLOAT --*/
+         }     // *TABLES*
+
+       }       // END If special content
+      else { //THE text
+         if ($this->tableLevel) { $paint_ht_corr = 0; }        // To move the y up when new column/page started if div border needed
+         else { $paint_ht_corr = $this->blk[$this->blklvl]['border_top']['w']; }
+
+        if ($vetor[0] == "\n") { //We are reading a <BR> now turned into newline ("\n")
+               if ($this->flowingBlockAttr['content']) {
+                       $this->finishFlowingBlock(false,'br');
+               }
+               else if ($is_table) {
+                       $this->y+= $this->_computeLineheight($this->table_lineheight);
+               }
+               else if (!$is_table) {
+                       $this->DivLn($this->lineheight); 
+                       if ($this->ColActive) { $this->breakpoints[$this->CurrCol][] = $this->y; }      // *COLUMNS*
+               }
+               // Added to correct for OddEven Margins
+               if  ($this->page != $oldpage) {
+                       if (($this->page-$oldpage) % 2 == 1) {
+                               $bak_x += $this->MarginCorrection;
+                       }
+                       $oldpage = $this->page;
+                               $y = $this->tMargin - $paint_ht_corr ;
+                               $this->oldy = $this->tMargin - $paint_ht_corr ;
+                               $old_height = 0;
+               }
+               $this->x = $bak_x;
+/*-- COLUMNS --*/
+               // COLS
+               // OR COLUMN CHANGE
+               if ($this->CurrCol != $oldcolumn) {
+                       if ($this->directionality == 'rtl') {   // *RTL*
+                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
+                       }       // *RTL*
+                       else {  // *RTL*
+                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
+                       }       // *RTL*
+                       $this->x = $bak_x;
+                       $oldcolumn = $this->CurrCol;
+                       $y = $this->y0 - $paint_ht_corr ;
+                       $this->oldy = $this->y0 - $paint_ht_corr ;
+                       $old_height = 0;
+               }
+/*-- END COLUMNS --*/
+               $this->newFlowingBlock( $this->divwidth,$this->divheight,$align,$is_table,$is_list,$blockstate,false,$blockdir);
+         }
+         else {
+               $this->WriteFlowingBlock( $vetor[0]);
+
+                 // Added to correct for OddEven Margins
+                 if  ($this->page != $oldpage) {
+                       if (($this->page-$oldpage) % 2 == 1) {
+                               $bak_x += $this->MarginCorrection;
+                               $this->x = $bak_x;
+                       }
+                       $oldpage = $this->page;
+                               $y = $this->tMargin - $paint_ht_corr ;
+                               $this->oldy = $this->tMargin - $paint_ht_corr ;
+                               $old_height = 0;
+                 }
+/*-- COLUMNS --*/
+               // COLS
+               // OR COLUMN CHANGE
+               if ($this->CurrCol != $oldcolumn) {
+                       if ($this->directionality == 'rtl') {   // *RTL*
+                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
+                       }       // *RTL*
+                       else {  // *RTL*
+                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
+                       }       // *RTL*
+                       $this->x = $bak_x;
+                       $oldcolumn = $this->CurrCol;
+                       $y = $this->y0 - $paint_ht_corr ;
+                       $this->oldy = $this->y0 - $paint_ht_corr ;
+                       $old_height = 0;
+               }
+/*-- END COLUMNS --*/
+           }
+
+
+      }
+
+      //Check if it is the last element. If so then finish printing the block
+      if ($i == ($array_size-1)) {
+               $this->finishFlowingBlock(true);        // true = END of flowing block
+                 // Added to correct for OddEven Margins
+                 if  ($this->page != $oldpage) {
+                       if (($this->page-$oldpage) % 2 == 1) {
+                               $bak_x += $this->MarginCorrection;
+                               $this->x = $bak_x;
+                       }
+                       $oldpage = $this->page;
+                               $y = $this->tMargin - $paint_ht_corr ;
+                               $this->oldy = $this->tMargin - $paint_ht_corr ;
+                               $old_height = 0;
+                 }
+
+/*-- COLUMNS --*/
+               // COLS
+               // OR COLUMN CHANGE
+               if ($this->CurrCol != $oldcolumn) {
+                       if ($this->directionality == 'rtl') {   // *RTL*
+                               $bak_x -= ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);      // *RTL*
+                       }       // *RTL*
+                       else {  // *RTL*
+                               $bak_x += ($this->CurrCol - $oldcolumn) * ($this->ColWidth+$this->ColGap);
+                       }       // *RTL*
+                       $this->x = $bak_x;
+                       $oldcolumn = $this->CurrCol;
+                       $y = $this->y0 - $paint_ht_corr ;
+                       $this->oldy = $this->y0 - $paint_ht_corr ;
+                       $old_height = 0;
+               }
+/*-- END COLUMNS --*/
+
+       }
+
+       // RESETTING VALUES
+       $this->SetTColor($this->ConvertColor(0));
+       $this->SetDColor($this->ConvertColor(0));
+       $this->SetFColor($this->ConvertColor(255));
+       $this->colorarray = ''; 
+       $this->spanbgcolorarray = '';
+       $this->spanbgcolor = false;
+       $this->spanborder = false;
+       $this->spanborddet = array();
+       $this->HREF = '';
+       $this->textparam = array();
+       $this->SetTextOutline();
+       $this->SUP = false;
+       $this->SUB = false;
+
+       $this->strike = false;
+       $this->textshadow = '';
+
+       $this->currentfontfamily = '';  
+       $this->currentfontsize = '';  
+       $this->currentfontstyle = '';  
+/*-- TABLES --*/
+       if ($this->tableLevel) {
+               $this->SetLineHeight('',$this->table_lineheight);       // *TABLES*
+       }
+       else
+/*-- END TABLES --*/
+/*-- LISTS --*/
+       if ($is_list && $this->list_lineheight[$this->listlvl][$this->listOcc]) {
+               $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->listOcc]);        // sets default line height
+       }
+       else
+/*-- END LISTS --*/
+       if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
+               $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']);      // sets default line height
+       }
+       $this->ResetStyles();
+       $this->toupper = false;
+       $this->tolower = false;
+       $this->capitalize = false;
+       $this->kerning = false; 
+       $this->lSpacingCSS = '';
+       $this->wSpacingCSS = '';
+       $this->fixedlSpacing = false;
+       $this->minwSpacing = 0;
+       $this->SetDash(); 
+       $this->dash_on = false;
+       $this->dotted_on = false;
+
+    }//end of for(i=0;i<arraysize;i++)
+
+
+    // PAINT DIV BORDER        // DISABLED IN COLUMNS AS DOESN'T WORK WHEN BROKEN ACROSS COLS??
+    if ((isset($this->blk[$this->blklvl]['border']) || isset($this->blk[$this->blklvl]['bgcolor']) || isset($this->blk[$this->blklvl]['box_shadow'])) && $blockstate  && ($this->y != $this->oldy)) {
+       $bottom_y = $this->y;   // Does not include Bottom Margin
+       if (isset($this->blk[$this->blklvl]['startpage']) && $this->blk[$this->blklvl]['startpage'] != $this->page && $blockstate != 1) {
+               $this->PaintDivBB('pagetop',$blockstate);
+       }
+
+       else if ($blockstate != 1) {
+               $this->PaintDivBB('',$blockstate);
+       }
+       $this->y = $bottom_y; 
+       $this->x = $bak_x;
+    }
+
+    // Reset Font
+    $this->SetFontSize($this->default_font_size,false); 
+
+
+}
+
+function _setDashBorder($style, $div, $cp, $side) {
+       if ($style == 'dashed' && (($side=='L' || $side=='R') || ($side=='T' && $div != 'pagetop' && !$cp) || ($side=='B' && $div!='pagebottom') )) {
+               $dashsize = 2;  // final dash will be this + 1*linewidth
+               $dashsizek = 1.5;       // ratio of Dash/Blank
+               $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2));
+       }
+       else if ($style == 'dotted' || ($side=='T' && ($div == 'pagetop' || $cp)) || ($side=='B' && $div == 'pagebottom')) {
+               //Round join and cap
+               $this->SetLineJoin(1);
+               $this->SetLineCap(1);
+               $this->SetDash(0.001,($this->LineWidth*3));
+       }
+}
+
+function _setBorderLine($b, $k=1) {
+       $this->SetLineWidth($b['w']/$k);
+       $this->SetDColor($b['c']);
+       if ($b['c'][0]==5) {    // RGBa
+               $this->SetAlpha($b['c'][4], 'Normal', false, 'S')."\n";
+       }
+       else if ($b['c'][0]==6) {       // CMYKa
+               $this->SetAlpha($b['c'][5], 'Normal', false, 'S')."\n";
+       }
+}
+
+// mPDF 5.6.52
+function PaintDivBB($divider='',$blockstate=0,$blvl=0) {
+       // Borders & backgrounds are done elsewhere for columns - messes up the repositioning in printcolumnbuffer
+       if ($this->ColActive) { return ; }      // *COLUMNS*
+       $save_y = $this->y;
+       if (!$blvl) { $blvl = $this->blklvl; }
+       $x0 = $x1 = $y0 = $y1 = 0; 
+
+       // Added mPDF 3.0 Float DIV
+       if (isset($this->blk[$blvl]['bb_painted'][$this->page]) && $this->blk[$blvl]['bb_painted'][$this->page]) { return; }    // *CSS-FLOAT*
+
+       if (isset($this->blk[$blvl]['x0'])) { $x0 = $this->blk[$blvl]['x0']; }  // left
+       if (isset($this->blk[$blvl]['y1'])) { $y1 = $this->blk[$blvl]['y1']; }  // bottom
+
+       // Added mPDF 3.0 Float DIV - ensures backgrounds/borders are drawn to bottom of page
+       if ($y1==0) { 
+               if ($divider=='pagebottom') { $y1 = $this->h-$this->bMargin; }
+               else { $y1 = $this->y; }
+       }
+
+       if (isset($this->blk[$blvl]['startpage']) && $this->blk[$blvl]['startpage'] != $this->page) { $continuingpage = true; } else { $continuingpage = false; } 
+
+       if (isset($this->blk[$blvl]['y0'])) { $y0 = $this->blk[$blvl]['y0']; }
+       $h = $y1 - $y0;
+       $w = $this->blk[$blvl]['width'];
+       $x1 = $x0 + $w;
+
+       // Set border-widths as used here
+       $border_top = $this->blk[$blvl]['border_top']['w'];
+       $border_bottom = $this->blk[$blvl]['border_bottom']['w'];
+       $border_left = $this->blk[$blvl]['border_left']['w'];
+       $border_right = $this->blk[$blvl]['border_right']['w'];
+       if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) {
+               $border_top = 0;
+       }
+       if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { 
+               $border_bottom = 0;
+       }
+
+               $brTL_H = 0;
+               $brTL_V = 0;
+               $brTR_H = 0;
+               $brTR_V = 0;
+               $brBL_H = 0;
+               $brBL_V = 0;
+               $brBR_H = 0;
+               $brBR_V = 0;
+
+       $brset = false; 
+/*-- BORDER-RADIUS --*/
+       if (isset($this->blk[$blvl]['border_radius_TL_H'])) { $brTL_H = $this->blk[$blvl]['border_radius_TL_H']; $brset = true; }
+       if (isset($this->blk[$blvl]['border_radius_TL_V'])) { $brTL_V = $this->blk[$blvl]['border_radius_TL_V']; $brset = true; }
+       if (isset($this->blk[$blvl]['border_radius_TR_H'])) { $brTR_H = $this->blk[$blvl]['border_radius_TR_H']; $brset = true; }
+       if (isset($this->blk[$blvl]['border_radius_TR_V'])) { $brTR_V = $this->blk[$blvl]['border_radius_TR_V']; $brset = true; }
+       if (isset($this->blk[$blvl]['border_radius_BR_H'])) { $brBR_H = $this->blk[$blvl]['border_radius_BR_H']; $brset = true; }
+       if (isset($this->blk[$blvl]['border_radius_BR_V'])) { $brBR_V = $this->blk[$blvl]['border_radius_BR_V']; $brset = true; }
+       if (isset($this->blk[$blvl]['border_radius_BL_H'])) { $brBL_H = $this->blk[$blvl]['border_radius_BL_H']; $brset = true; }
+       if (isset($this->blk[$blvl]['border_radius_BL_V'])) { $brBL_V = $this->blk[$blvl]['border_radius_BL_V']; $brset = true; }
+
+       // mPDF 5.4.17
+       //if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage || $this->keep_block_together) {
+       if (!$this->blk[$blvl]['border_top'] || $divider == 'pagetop' || $continuingpage) {
+               $brTL_H = 0;
+               $brTL_V = 0;
+               $brTR_H = 0;
+               $brTR_V = 0;
+       }
+       // mPDF 5.4.17
+       //if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom' || $this->keep_block_together) { 
+       if (!$this->blk[$blvl]['border_bottom'] || $blockstate == 1 || $divider == 'pagebottom') { 
+               $brBL_H = 0;
+               $brBL_V = 0;
+               $brBR_H = 0;
+               $brBR_V = 0;
+       }
+
+       // Disallow border-radius if it is smaller than the border width.
+       if ($brTL_H < min($border_left, $border_top)) { $brTL_H = $brTL_V = 0; }
+       if ($brTL_V < min($border_left, $border_top)) { $brTL_V = $brTL_H = 0; }
+       if ($brTR_H < min($border_right, $border_top)) { $brTR_H = $brTR_V = 0; }
+       if ($brTR_V < min($border_right, $border_top)) { $brTR_V = $brTR_H = 0; }
+       if ($brBL_H < min($border_left, $border_bottom)) { $brBL_H = $brBL_V = 0; }
+       if ($brBL_V < min($border_left, $border_bottom)) { $brBL_V = $brBL_H = 0; }
+       if ($brBR_H < min($border_right, $border_bottom)) { $brBR_H = $brBR_V = 0; }
+       if ($brBR_V < min($border_right, $border_bottom)) { $brBR_V = $brBR_H = 0; }
+
+       // CHECK FOR radii that sum to > width or height of div ********
+       $f = min($h/($brTL_V + $brBL_V + 0.001), $h/($brTR_V + $brBR_V + 0.001), $w/($brTL_H + $brTR_H + 0.001),  $w/($brBL_H + $brBR_H + 0.001));
+       if ($f < 1) {
+               $brTL_H *= $f;
+               $brTL_V *= $f;
+               $brTR_H *= $f;
+               $brTR_V *= $f;
+               $brBL_H *= $f;
+               $brBL_V *= $f;
+               $brBR_H *= $f;
+               $brBR_V *= $f;
+       }
+/*-- END BORDER-RADIUS --*/
+
+       $tbcol = $this->ConvertColor(255);
+       for($l=0; $l <= $blvl; $l++) {
+               if ($this->blk[$l]['bgcolor']) {
+                       $tbcol = $this->blk[$l]['bgcolorarray'];
+               }
+       }
+
+       // BORDERS
+       if (isset($this->blk[$blvl]['y0']) && $this->blk[$blvl]['y0']) { $y0 = $this->blk[$blvl]['y0']; }
+       $h = $y1 - $y0;
+       $w = $this->blk[$blvl]['width'];
+
+       //if ($this->blk[$blvl]['border_top']) {
+       // Reinstate line above for dotted line divider when block border crosses a page
+       if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
+               $tbd = $this->blk[$blvl]['border_top'];
+
+               // mPDF 5.4.18
+               $legend = '';
+               if (isset($this->blk[$blvl]['border_legend']) && $this->blk[$blvl]['border_legend']) { 
+                       $legend = $this->blk[$blvl]['border_legend'];   // Same structure array as textbuffer
+                       $txt = ltrim($legend[0]);
+
+                       //Set font, size, style, color
+                       $this->SetFont($legend[4],$legend[2],$legend[11]);
+                       if ($legend[3]) { 
+                               $cor = $legend[3];
+                               $this->SetTColor($cor);
+                       }
+                       $stringWidth = $this->GetStringWidth($txt );
+                       $save_x = $this->x;
+                       $save_y = $this->y;
+                       $save_currentfontfamily = $this->FontFamily;
+                       $save_currentfontsize = $this->FontSizePt;
+                       $save_currentfontstyle = $this->FontStyle.($this->U ? 'U' : '').($this->S ? 'S' : '');
+                       $this->y = $y0 - $this->FontSize/2  + $this->blk[$blvl]['border_top']['w']/2;
+                       $this->x = $x0 + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_left']['w'];
+
+                       // Set the distance from the border line to the text ? make configurable variable
+                       $gap = 0.2 * $this->FontSize;
+
+                       $legbreakL = $this->x - $gap;
+                       $legbreakR = $this->x + $stringWidth + $gap;
+
+                       $this->Cell( $stringWidth, $this->FontSize, $txt , '', 0, 'C', $fill, '', 0, 0,0,'M', $fill);
+                       // Reset 
+                       $this->x = $save_x;
+                       $this->y = $save_y;
+                       $this->SetFont($save_currentfontfamily,$save_currentfontstyle,$save_currentfontsize);
+                       $this->SetTColor($this->ConvertColor(0));
+               }
+
+               if (isset($tbd['s']) && $tbd['s']) {
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
+                               $this->_out('q');
+                               $this->SetLineWidth(0);
+                               $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $border_top))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK));
+                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
+                       }
+
+                       $this->_setBorderLine($tbd);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
+                               $legbreakL -= $border_top/2;    // because line cap different
+                               $legbreakR += $border_top/2;
+                               $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'T'); 
+                       }
+/*-- BORDER-RADIUS --*/
+                       else if (($brTL_V && $brTL_H) || ($brTR_V && $brTR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) {  // mPDF 5.6.58
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                       }
+                       $s = '';
+                       if ($brTR_H && $brTR_V) {
+                               $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_top/2 , $brTR_V - $border_top/2 , 1, 2, true))."\n";
+                       }
+                       else 
+/*-- END BORDER-RADIUS --*/
+                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                       }
+                       else {
+                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                       }
+/*-- BORDER-RADIUS --*/
+                       if ($brTL_H && $brTL_V ) {
+                               // mPDF 5.4.18
+                               if ($legend) {
+                                       if ($legbreakR < ($x0 + $w - $brTR_H)) {
+                                               $s .= (sprintf('%.3F %.3F l ', $legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                       }
+                                       if ($legbreakL > ($x0 + $brTL_H )) {
+                                               $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                               $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK)."\n");
+                                       }
+                                       else {
+                                               $s .= (sprintf('%.3F %.3F m ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                       }
+                               }
+                               else {
+                                       $s .= (sprintf('%.3F %.3F l ',($x0 + $brTL_H )*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                               }
+                               $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_top/2 , $brTL_V - $border_top/2 , 2, 1))."\n";
+                       }
+                       else {
+/*-- END BORDER-RADIUS --*/
+                               // mPDF 5.4.18
+                               if ($legend) {
+                                       if ($legbreakR < ($x0 + $w)) {
+                                               $s .= (sprintf('%.3F %.3F l ',$legbreakR*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                       }
+                                       if ($legbreakL > ($x0)) {
+                                               $s .= (sprintf('%.3F %.3F m ',$legbreakL*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                               if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                                                       $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                               }
+                                               else {
+                                                       $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                               }
+                                       }
+                                       else if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                                               $s .= (sprintf('%.3F %.3F m ', ($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                       }
+                                       else {
+                                               $s .= (sprintf('%.3F %.3F m ', ($x0 + $border_top/2)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                                       }
+                               }
+                               else if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                                       $s .= (sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                               }
+                               else {
+                                       $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_top/2))*_MPDFK, ($this->h-($y0 + ($border_top/2)))*_MPDFK))."\n";
+                               }
+/*-- BORDER-RADIUS --*/
+                       }
+/*-- END BORDER-RADIUS --*/
+                       $s .= 'S'."\n";
+                       $this->_out($s);
+
+                       if ($tbd['style']=='double') {
+                               $this->SetLineWidth($tbd['w']/3);
+                               $this->SetDColor($tbcol);
+                               $this->_out($s);
+                       }
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
+
+                       // Reset Corners and Dash off
+                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
+                       $this->SetDColor($this->ConvertColor(0));
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       //if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1) { 
+       // Reinstate line above for dotted line divider when block border crosses a page
+       if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
+               $tbd = $this->blk[$blvl]['border_bottom'];
+               if (isset($tbd['s']) && $tbd['s']) {
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
+                               $this->_out('q');
+                               $this->SetLineWidth(0);
+                               $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
+                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
+                       }
+
+                       $this->_setBorderLine($tbd);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'B'); }
+/*-- BORDER-RADIUS --*/
+                       else if (($brBL_V && $brBL_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) {  // mPDF 5.6.58
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                       }
+                       $s = '';
+                       if ($brBL_H && $brBL_V) {
+                               $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_bottom/2 , $brBL_V - $border_bottom/2 , 3, 2, true))."\n";
+                       }
+                       else 
+/*-- END BORDER-RADIUS --*/
+                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                               $s .= (sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
+                       }
+                       else {
+                               $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
+                       }
+/*-- BORDER-RADIUS --*/
+                       if ($brBR_H && $brBR_V ) {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2) - $brBR_H )*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
+                               $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_bottom/2 , $brBR_V - $border_bottom/2 , 4, 1))."\n";
+                       }
+                       else 
+/*-- END BORDER-RADIUS --*/
+                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
+                       }
+                       else {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_bottom/2))*_MPDFK, ($this->h-($y0 + $h - ($border_bottom/2)))*_MPDFK))."\n";
+                       }
+                       $s .= 'S'."\n";
+                       $this->_out($s);
+
+                       if ($tbd['style']=='double') {
+                               $this->SetLineWidth($tbd['w']/3);
+                               $this->SetDColor($tbcol);
+                               $this->_out($s);
+                       }
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
+
+
+                       // Reset Corners and Dash off
+                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
+                       $this->SetDColor($this->ConvertColor(0));
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($this->blk[$blvl]['border_left']) { 
+               $tbd = $this->blk[$blvl]['border_left'];
+               if (isset($tbd['s']) && $tbd['s']) {
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
+                               $this->_out('q');
+                               $this->SetLineWidth(0);
+                               $this->_out(sprintf('%.3F %.3F m ',($x0)*_MPDFK, ($this->h-($y0))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $border_left)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
+                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
+                       }
+
+                       $this->_setBorderLine($tbd);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'L'); }
+/*-- BORDER-RADIUS --*/
+                       else if (($brTL_V && $brTL_H) || ($brBL_V && $brBL_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) {  // mPDF 5.6.58
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                       }
+                       $s = '';
+                       if ($brTL_V && $brTL_H) {
+                               $s .= ($this->_EllipseArc($x0 + $brTL_H, $y0 + $brTL_V, $brTL_H - $border_left/2 , $brTL_V - $border_left/2, 2, 2, true))."\n";
+                       }
+                       else 
+/*-- END BORDER-RADIUS --*/
+                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                               $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0))*_MPDFK))."\n";
+                       }
+                       else {
+                               $s .= (sprintf('%.3F %.3F m ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + ($border_left/2)))*_MPDFK))."\n";
+                       }
+/*-- BORDER-RADIUS --*/
+                       if ($brBL_V && $brBL_H ) {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)- $brBL_V) )*_MPDFK))."\n";
+                               $s .= ($this->_EllipseArc($x0 + $brBL_H, $y0 + $h - $brBL_V, $brBL_H - $border_left/2 , $brBL_V - $border_left/2, 3, 1))."\n";
+                       }
+                       else 
+/*-- END BORDER-RADIUS --*/
+                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h) )*_MPDFK))."\n";
+                       }
+                       else {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + ($border_left/2))*_MPDFK, ($this->h-($y0 + $h - ($border_left/2)) )*_MPDFK))."\n";
+                       }
+                       $s .= 'S'."\n";
+                       $this->_out($s);
+
+                       if ($tbd['style']=='double') {
+                               $this->SetLineWidth($tbd['w']/3);
+                               $this->SetDColor($tbcol);
+                               $this->_out($s);
+                       }
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
+
+                       // Reset Corners and Dash off
+                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
+                       $this->SetDColor($this->ConvertColor(0));
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($this->blk[$blvl]['border_right']) { 
+               $tbd = $this->blk[$blvl]['border_right'];
+               if (isset($tbd['s']) && $tbd['s']) {
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { 
+                               $this->_out('q');
+                               $this->SetLineWidth(0);
+                               $this->_out(sprintf('%.3F %.3F m ',($x0 + $w)*_MPDFK, ($this->h-($y0))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0+$border_top))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w - $border_right)*_MPDFK, ($this->h-($y0 + $h - $border_bottom))*_MPDFK));
+                               $this->_out(sprintf('%.3F %.3F l ',($x0 + $w)*_MPDFK, ($this->h-($y0 + $h))*_MPDFK));
+                               $this->_out(' h W n '); // Ends path no-op & Sets the clipping path
+                       }
+
+                       $this->_setBorderLine($tbd);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],$divider,$continuingpage,'R'); }
+/*-- BORDER-RADIUS --*/
+                       else if (($brTR_V && $brTR_H) || ($brBR_V && $brBR_H) || $tbd['style']=='solid' || $tbd['style']=='double' ) { // mPDF 5.6.58
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                       }
+                       $s = '';
+                       if ($brBR_V && $brBR_H) {
+                               $s .= ($this->_EllipseArc($x0 + $w - $brBR_H, $y0 + $h - $brBR_V, $brBR_H - $border_right/2 , $brBR_V - $border_right/2, 4, 2, true))."\n";
+                       }
+                       else 
+/*-- END BORDER-RADIUS --*/
+                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h))*_MPDFK))."\n";
+                       }
+                       else {
+                               $s .= (sprintf('%.3F %.3F m ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + $h - ($border_right/2)))*_MPDFK))."\n";
+                       }
+/*-- BORDER-RADIUS --*/
+                       if ($brTR_V && $brTR_H ) {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2) + $brTR_V) )*_MPDFK))."\n";
+                               $s .= ($this->_EllipseArc($x0 + $w - $brTR_H, $y0 + $brTR_V, $brTR_H - $border_right/2 , $brTR_V - $border_right/2, 1, 1))."\n";
+                       }
+                       else 
+/*-- END BORDER-RADIUS --*/
+                       if ($tbd['style']=='solid' || $tbd['style']=='double') {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0) )*_MPDFK))."\n";
+                       }
+                       else {
+                               $s .= (sprintf('%.3F %.3F l ',($x0 + $w - ($border_right/2))*_MPDFK, ($this->h-($y0 + ($border_right/2)) )*_MPDFK))."\n";
+                       }
+                       $s .= 'S'."\n";
+                       $this->_out($s);
+
+                       if ($tbd['style']=='double') {
+                               $this->SetLineWidth($tbd['w']/3);
+                               $this->SetDColor($tbcol);
+                               $this->_out($s);
+                       }
+                       if (!$brset && $tbd['style']!='dotted' && $tbd['style']!='dashed') { $this->_out('Q'); }
+
+                       // Reset Corners and Dash off
+                       $this->SetLineWidth(0.1);       // mPDF 5.6.57
+                       $this->SetDColor($this->ConvertColor(0));
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+
+
+       $this->SetDash(); 
+       $this->y = $save_y; 
+
+
+       // BACKGROUNDS are disabled in columns/kbt/headers - messes up the repositioning in printcolumnbuffer
+       if ($this->ColActive || $this->kwt || $this->keep_block_together) { return ; }
+
+
+       $bgx0 = $x0;
+       $bgx1 = $x1;
+       $bgy0 = $y0;
+       $bgy1 = $y1;
+
+       // Defined br values represent the radius of the outer curve - need to take border-width/2 from each radius for drawing the borders
+       if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'padding-box') {
+               $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w']);
+               $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w']);
+               $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w']);
+               $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w']);
+               $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w']);
+               $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w']);
+               $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w']);
+               $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w']);
+               $bgx0 += $this->blk[$blvl]['border_left']['w'];
+               $bgx1 -= $this->blk[$blvl]['border_right']['w'];
+               if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
+                       $bgy0 += $this->blk[$blvl]['border_top']['w'];
+               }
+               if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
+                       $bgy1 -= $this->blk[$blvl]['border_bottom']['w'];
+               }
+       }
+       // mPDF 5.6.09
+       else if (isset($this->blk[$blvl]['background_clip']) && $this->blk[$blvl]['background_clip'] == 'content-box') {
+               $brbgTL_H = max(0, $brTL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']);
+               $brbgTL_V = max(0, $brTL_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']);
+               $brbgTR_H = max(0, $brTR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']);
+               $brbgTR_V = max(0, $brTR_V - $this->blk[$blvl]['border_top']['w'] - $this->blk[$blvl]['padding_top']);
+               $brbgBL_H = max(0, $brBL_H - $this->blk[$blvl]['border_left']['w'] - $this->blk[$blvl]['padding_left']);
+               $brbgBL_V = max(0, $brBL_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']);
+               $brbgBR_H = max(0, $brBR_H - $this->blk[$blvl]['border_right']['w'] - $this->blk[$blvl]['padding_right']);
+               $brbgBR_V = max(0, $brBR_V - $this->blk[$blvl]['border_bottom']['w'] - $this->blk[$blvl]['padding_bottom']);
+               $bgx0 +=  $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
+               $bgx1 -= $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right'];
+               if (($this->blk[$blvl]['border_top']['w'] || $this->blk[$blvl]['padding_top']) && $divider != 'pagetop' && !$continuingpage) {
+                       $bgy0 += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
+               }
+               if (($this->blk[$blvl]['border_bottom']['w'] || $this->blk[$blvl]['padding_bottom']) && $blockstate != 1 && $divider != 'pagebottom') { 
+                       $bgy1 -= $this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom'];
+               }
+       }
+       else {
+               $brbgTL_H = $brTL_H;
+               $brbgTL_V = $brTL_V;
+               $brbgTR_H = $brTR_H;
+               $brbgTR_V = $brTR_V;
+               $brbgBL_H = $brBL_H;
+               $brbgBL_V = $brBL_V;
+               $brbgBR_H = $brBR_H;
+               $brbgBR_V = $brBR_V;
+       }
+
+       // Set clipping path
+       $s = ' q 0 w '; // Line width=0
+       $s .= sprintf('%.3F %.3F m ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK);      // start point TL before the arc
+/*-- BORDER-RADIUS --*/
+       if ($brbgTL_H || $brbgTL_V) {
+               $s .= $this->_EllipseArc($bgx0+$brbgTL_H, $bgy0+$brbgTL_V, $brbgTL_H , $brbgTL_V , 2);  // segment 2 TL
+       }
+/*-- END BORDER-RADIUS --*/
+       $s .= sprintf('%.3F %.3F l ', ($bgx0)*_MPDFK, ($this->h-($bgy1-$brbgBL_V ))*_MPDFK);    // line to BL
+/*-- BORDER-RADIUS --*/
+       if ($brbgBL_H || $brbgBL_V) {
+               $s .= $this->_EllipseArc($bgx0+$brbgBL_H, $bgy1-$brbgBL_V, $brbgBL_H , $brbgBL_V , 3);  // segment 3 BL
+       }
+/*-- END BORDER-RADIUS --*/
+       $s .= sprintf('%.3F %.3F l ', ($bgx1-$brbgBR_H )*_MPDFK, ($this->h-($bgy1))*_MPDFK);    // line to BR
+/*-- BORDER-RADIUS --*/
+       if ($brbgBR_H || $brbgBR_V) {
+               $s .= $this->_EllipseArc($bgx1-$brbgBR_H, $bgy1-$brbgBR_V, $brbgBR_H , $brbgBR_V , 4);  // segment 4 BR
+       }
+/*-- END BORDER-RADIUS --*/
+       $s .= sprintf('%.3F %.3F l ', ($bgx1)*_MPDFK, ($this->h-($bgy0+$brbgTR_V))*_MPDFK);     // line to TR
+/*-- BORDER-RADIUS --*/
+       if ($brbgTR_H || $brbgTR_V) {
+               $s .= $this->_EllipseArc($bgx1-$brbgTR_H, $bgy0+$brbgTR_V, $brbgTR_H , $brbgTR_V , 1);  // segment 1 TR
+       }
+/*-- END BORDER-RADIUS --*/
+       $s .= sprintf('%.3F %.3F l ', ($bgx0+$brbgTL_H )*_MPDFK, ($this->h-$bgy0)*_MPDFK);      // line to TL
+
+
+       // Box Shadow
+       $shadow = '';
+       if (isset($this->blk[$blvl]['box_shadow']) && $this->blk[$blvl]['box_shadow'] && $h > 0) {
+               foreach($this->blk[$blvl]['box_shadow'] AS $sh) {
+                       // Colors
+                       if ($sh['col']{0}==1) {
+                               $colspace = 'Gray';
+                               if ($sh['col']{2}==1) { $col1 = '1'.$sh['col'][1].'1'.$sh['col'][3]; }
+                               else { $col1 = '1'.$sh['col'][1].'1'.chr(100); }
+                               $col2 = '1'.$sh['col'][1].'1'.chr(0);
+                       }
+                       else if ($sh['col']{0}==4) {    // CMYK
+                               $colspace = 'CMYK';
+                               $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(100);
+                               $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0);
+                       }
+                       else if ($sh['col']{0}==5) {    // RGBa
+                               $colspace = 'RGB';
+                               $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4];
+                               $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0);
+                       }
+                       else if ($sh['col']{0}==6) {    // CMYKa
+                               $colspace = 'CMYK';
+                               $col1 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].$sh['col'][5];
+                               $col2 = '6'.$sh['col'][1].$sh['col'][2].$sh['col'][3].$sh['col'][4].chr(0);
+                       }
+                       else {
+                               $colspace = 'RGB';
+                               $col1 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(100);
+                               $col2 = '5'.$sh['col'][1].$sh['col'][2].$sh['col'][3].chr(0);
+                       }
+
+                       // Use clipping path as set above (and rectangle around page) to clip area outside box
+                       $shadow .= $s;  // Use the clipping path with W*
+                       $shadow .= sprintf('0 %.3F m %.3F %.3F l ', $this->h*_MPDFK, $this->w*_MPDFK, $this->h*_MPDFK);
+                       $shadow .= sprintf('%.3F 0 l 0 0 l 0 %.3F l ', $this->w*_MPDFK, $this->h*_MPDFK);
+                       $shadow .= 'W n'."\n";  
+
+                       $sh['blur'] = abs($sh['blur']); // cannot have negative blur value
+                       // Ensure spread/blur do not make effective shadow width/height < 0
+                       // Could do more complex things but this just adjusts spread value
+                       if (-$sh['spread'] + $sh['blur']/2 > min($w/2, $h/2)) { 
+                               $sh['spread'] = $sh['blur']/2 - min($w/2, $h/2) + 0.01;
+                       }
+                       // Shadow Offset
+                       if ($sh['x'] || $sh['y']) $shadow .= sprintf(' q 1 0 0 1 %.4F %.4F cm', $sh['x']*_MPDFK, -$sh['y']*_MPDFK)."\n";
+                       // Set path for INNER shadow
+                       $shadow .= ' q 0 w ';
+                       $shadow .= $this->SetFColor($col1, true)."\n";
+                       if ($col1{0}==5 && ord($col1{4})<100) { // RGBa
+                               $shadow .= $this->SetAlpha(ord($col1{4})/100, 'Normal', true, 'F')."\n"; 
+                       }
+                       else if ($col1{0}==6 && ord($col1{5})<100) {    // CMYKa
+                               $shadow .= $this->SetAlpha(ord($col1{5})/100, 'Normal', true, 'F')."\n"; 
+                       }
+                       else if ($col1{0}==1 && $col1{2}==1 && ord($col1{3})<100) {     // Gray
+                               $shadow .= $this->SetAlpha(ord($col1{3})/100, 'Normal', true, 'F')."\n"; 
+                       }
+
+                       // Blur edges
+                       $mag = 0.551784;        // Bezier Control magic number for 4-part spline for circle/ellipse
+                       $mag2 = 0.551784;       // Bezier Control magic number to fill in edge of blurred rectangle
+                       $d1 = $sh['spread']+$sh['blur']/2;
+                       $d2 = $sh['spread']-$sh['blur']/2;
+                       $bl = $sh['blur'];
+                       $x00 = $x0 - $d1;
+                       $y00 = $y0 - $d1;
+                       $w00 = $w + $d1*2;
+                       $h00 = $h + $d1*2;
+
+                       // If any border-radius is greater width-negative spread(inner edge), ignore radii for shadow or screws up
+                       $flatten = false;
+                       if (max($brbgTR_H, $brbgTL_H, $brbgBR_H, $brbgBL_H) >= $w+$d2) { $flatten = true; }
+                       if (max($brbgTR_V, $brbgTL_V, $brbgBR_V, $brbgBL_V) >= $h+$d2) { $flatten = true; }
+
+
+                       // TOP RIGHT corner
+                       $p1x = $x00+$w00-$d1-$brbgTR_H; $p1c2x = $p1x +($d2+$brbgTR_H)*$mag;
+                       $p1y = $y00+$bl;
+                       $p2x = $x00+$w00-$d1-$brbgTR_H; $p2c2x = $p2x + ($d1+$brbgTR_H)*$mag;
+                       $p2y = $y00;                            $p2c1y = $p2y + $bl/2;
+                       $p3x = $x00+$w00;                               $p3c2x = $p3x - $bl/2;
+                       $p3y = $y00+$d1+$brbgTR_V;              $p3c1y = $p3y - ($d1+$brbgTR_V)*$mag;
+                       $p4x = $x00+$w00-$bl;
+                       $p4y = $y00+$d1+$brbgTR_V;              $p4c2y = $p4y - ($d2+$brbgTR_V)*$mag;
+                       if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
+                               $p1x = $x00+$w00-$bl;   $p1c2x = $p1x;
+                               $p2x = $x00+$w00-$bl;   $p2c2x = $p2x + $bl*$mag2;
+                               $p3y = $y00+$bl;                $p3c1y = $p3y - $bl*$mag2;
+                               $p4y = $y00+$bl;                $p4c2y = $p4y ;
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F m ', ($p1x )*_MPDFK, ($this->h-($p1y ))*_MPDFK);
+                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x)*_MPDFK, ($this->h-($p1y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4c2y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
+                       $patch_array[0]['f']=0;
+                       $patch_array[0]['points']=array($p1x,$p1y, $p1x,$p1y,
+                               $p2x,$p2c1y, $p2x,$p2y, $p2c2x,$p2y,
+                               $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y,
+                               $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y,
+                               $p1c2x,$p1y);
+                       $patch_array[0]['colors'] = array($col1,$col2,$col2,$col1);
+
+
+                       // RIGHT
+                       $p1x = $x00+$w00;       // control point only matches p3 preceding
+                       $p1y = $y00+$d1+$brbgTR_V;
+                       $p2x = $x00+$w00-$bl;   // control point only matches p4 preceding
+                       $p2y = $y00+$d1+$brbgTR_V;
+                       $p3x = $x00+$w00-$bl;
+                       $p3y = $y00+$h00-$d1-$brbgBR_V;
+                       $p4x = $x00+$w00;               $p4c1x = $p4x-$bl/2;
+                       $p4y = $y00+$h00-$d1-$brbgBR_V;
+                       if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
+                               $p1y = $y00+$bl;
+                               $p2y = $y00+$bl;
+                       }
+                       if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
+                               $p3y = $y00+$h00-$bl;
+                               $p4y = $y00+$h00-$bl;
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
+                       $patch_array[1]['f']=2;
+                       $patch_array[1]['points']=array($p2x,$p2y, 
+                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
+                               $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y,
+                               $p1x,$p1y);
+                       $patch_array[1]['colors'] = array($col1,$col2);
+
+
+                       // BOTTOM RIGHT corner
+                       $p1x = $x00+$w00-$bl;           // control points only matches p3 preceding
+                       $p1y = $y00+$h00-$d1-$brbgBR_V;         $p1c2y = $p1y + ($d2+$brbgBR_V)*$mag;
+                       $p2x = $x00+$w00;                                       // control point only matches p4 preceding
+                       $p2y = $y00+$h00-$d1-$brbgBR_V;         $p2c2y = $p2y + ($d1+$brbgBR_V)*$mag;
+                       $p3x = $x00+$w00-$d1-$brbgBR_H;         $p3c1x = $p3x + ($d1+$brbgBR_H)*$mag;
+                       $p3y = $y00+$h00;                                       $p3c2y = $p3y - $bl/2;
+                       $p4x = $x00+$w00-$d1-$brbgBR_H;         $p4c2x = $p4x + ($d2+$brbgBR_H)*$mag;
+                       $p4y = $y00+$h00-$bl;   
+
+                       if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
+                               $p1y = $y00+$h00-$bl;           $p1c2y = $p1y;
+                               $p2y = $y00+$h00-$bl;           $p2c2y = $p2y + $bl*$mag2;
+                               $p3x = $x00+$w00-$bl;           $p3c1x = $p3x + $bl*$mag2;
+                               $p4x = $x00+$w00-$bl;           $p4c2x = $p4x;
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x)*_MPDFK, ($this->h-($p1c2y))*_MPDFK, ($p4c2x)*_MPDFK, ($this->h-($p4y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
+                       $patch_array[2]['f']=2;
+                       $patch_array[2]['points']=array($p2x,$p2c2y,
+                               $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y,
+                               $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y,
+                               $p1x,$p1c2y);
+                       $patch_array[2]['colors'] = array($col2,$col1);
+
+
+
+                       // BOTTOM
+                       $p1x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p3 preceding
+                       $p1y = $y00+$h00;
+                       $p2x = $x00+$w00-$d1-$brbgBR_H; // control point only matches p4 preceding
+                       $p2y = $y00+$h00-$bl;
+                       $p3x = $x00+$d1+$brbgBL_H;
+                       $p3y = $y00+$h00-$bl; 
+                       $p4x = $x00+$d1+$brbgBL_H;
+                       $p4y = $y00+$h00;               $p4c1y = $p4y - $bl/2;
+
+                       if (-$d2 > min($brbgBR_H, $brbgBR_V) || $flatten) {
+                               $p1x = $x00+$w00-$bl;
+                               $p2x = $x00+$w00-$bl;
+                       }
+                       if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
+                               $p3x = $x00+$bl;
+                               $p4x = $x00+$bl;
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
+                       $patch_array[3]['f']=2;
+                       $patch_array[3]['points']=array($p2x,$p2y, 
+                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
+                               $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y,
+                               $p1x,$p1y);
+                       $patch_array[3]['colors'] = array($col1,$col2);
+
+                       // BOTTOM LEFT corner
+                       $p1x = $x00+$d1+$brbgBL_H;              $p1c2x = $p1x - ($d2+$brbgBL_H)*$mag;   // control points only matches p3 preceding
+                       $p1y = $y00+$h00-$bl;
+                       $p2x = $x00+$d1+$brbgBL_H;              $p2c2x = $p2x - ($d1+$brbgBL_H)*$mag;   // control point only matches p4 preceding
+                       $p2y = $y00+$h00;
+                       $p3x = $x00;                            $p3c2x = $p3x + $bl/2;
+                       $p3y = $y00+$h00-$d1-$brbgBL_V; $p3c1y = $p3y + ($d1+$brbgBL_V)*$mag;
+                       $p4x = $x00+$bl;
+                       $p4y = $y00+$h00-$d1-$brbgBL_V; $p4c2y = $p4y + ($d2+$brbgBL_V)*$mag;
+                       if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
+                               $p1x = $x00+$bl;                $p1c2x = $p1x;
+                               $p2x = $x00+$bl;                $p2c2x = $p2x - $bl*$mag2;
+                               $p3y = $y00+$h00-$bl;   $p3c1y = $p3y + $bl*$mag2;
+                               $p4y = $y00+$h00-$bl;   $p4c2y = $p4y;
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1c2x)*_MPDFK, ($this->h-($p1y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4c2y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
+                       $patch_array[4]['f']=2;
+                       $patch_array[4]['points']=array($p2c2x,$p2y,
+                               $p3x,$p3c1y, $p3x,$p3y, $p3c2x,$p3y,
+                               $p4x,$p4y, $p4x,$p4y, $p4x,$p4c2y,
+                               $p1c2x,$p1y);
+                       $patch_array[4]['colors'] = array($col2,$col1);
+
+
+                       // LEFT - joins on the right (C3-C4 of previous): f = 2
+                       $p1x = $x00;    // control point only matches p3 preceding
+                       $p1y = $y00+$h00-$d1-$brbgBL_V;
+                       $p2x = $x00+$bl;        // control point only matches p4 preceding
+                       $p2y = $y00+$h00-$d1-$brbgBL_V;
+                       $p3x = $x00+$bl;
+                       $p3y = $y00+$d1+$brbgTL_V; 
+                       $p4x = $x00;            $p4c1x = $p4x + $bl/2;
+                       $p4y = $y00+$d1+$brbgTL_V;      
+                       if (-$d2 > min($brbgBL_H, $brbgBL_V) || $flatten) {
+                               $p1y = $y00+$h00-$bl;
+                               $p2y = $y00+$h00-$bl;
+                       }
+                       if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
+                               $p3y = $y00+$bl; 
+                               $p4y = $y00+$bl;        
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
+                       $patch_array[5]['f']=2;
+                       $patch_array[5]['points']=array($p2x,$p2y, 
+                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
+                               $p4c1x,$p4y, $p4x,$p4y, $p4x,$p4y,
+                               $p1x,$p1y);
+                       $patch_array[5]['colors'] = array($col1,$col2);
+
+                       // TOP LEFT corner
+                       $p1x = $x00+$bl;                // control points only matches p3 preceding
+                       $p1y = $y00+$d1+$brbgTL_V;      $p1c2y = $p1y  - ($d2+$brbgTL_V)*$mag;
+                       $p2x = $x00;                    // control point only matches p4 preceding
+                       $p2y = $y00+$d1+$brbgTL_V;      $p2c2y = $p2y - ($d1+$brbgTL_V)*$mag;
+                       $p3x = $x00+$d1+$brbgTL_H;      $p3c1x = $p3x - ($d1+$brbgTL_H)*$mag;
+                       $p3y = $y00;                    $p3c2y = $p3y + $bl/2;
+                       $p4x = $x00+$d1+$brbgTL_H;      $p4c2x = $p4x - ($d2+$brbgTL_H)*$mag;
+                       $p4y = $y00+$bl;
+
+                       if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
+                               $p1y = $y00+$bl;        $p1c2y = $p1y;
+                               $p2y = $y00+$bl;        $p2c2y = $p2y - $bl*$mag2;
+                               $p3x = $x00+$bl;        $p3c1x = $p3x - $bl*$mag2;
+                               $p4x = $x00+$bl;        $p4c2x = $p4x ;
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($p1x)*_MPDFK, ($this->h-($p1c2y))*_MPDFK, ($p4c2x)*_MPDFK, ($this->h-($p4y))*_MPDFK, ($p4x)*_MPDFK, ($this->h-($p4y))*_MPDFK);
+                       $patch_array[6]['f']=2;
+                       $patch_array[6]['points']=array($p2x,$p2c2y,
+                               $p3c1x,$p3y, $p3x,$p3y, $p3x,$p3c2y,
+                               $p4x,$p4y, $p4x,$p4y, $p4c2x,$p4y,
+                               $p1x,$p1c2y);
+                       $patch_array[6]['colors'] = array($col2,$col1);
+
+
+                       // TOP - joins on the right (C3-C4 of previous): f = 2
+                       $p1x = $x00+$d1+$brbgTL_H;      // control point only matches p3 preceding
+                       $p1y = $y00;
+                       $p2x = $x00+$d1+$brbgTL_H;      // control point only matches p4 preceding
+                       $p2y = $y00+$bl;
+                       $p3x = $x00+$w00-$d1-$brbgTR_H;
+                       $p3y = $y00+$bl; 
+                       $p4x = $x00+$w00-$d1-$brbgTR_H;
+                       $p4y = $y00;            $p4c1y = $p4y + $bl/2;
+                       if (-$d2 > min($brbgTL_H, $brbgTL_V) || $flatten) {
+                               $p1x = $x00+$bl;
+                               $p2x = $x00+$bl;
+                       }
+                       if (-$d2 > min($brbgTR_H, $brbgTR_V) || $flatten) {
+                               $p3x = $x00+$w00-$bl;
+                               $p4x = $x00+$w00-$bl;
+                       }
+
+                       $shadow .= sprintf('%.3F %.3F l ', ($p3x )*_MPDFK, ($this->h-($p3y ))*_MPDFK);
+                       $patch_array[7]['f']=2;
+                       $patch_array[7]['points']=array($p2x,$p2y, 
+                               $p3x,$p3y, $p3x,$p3y, $p3x,$p3y,
+                               $p4x,$p4c1y, $p4x,$p4y, $p4x,$p4y,
+                               $p1x,$p1y);
+                       $patch_array[7]['colors'] = array($col1,$col2);
+
+                       $shadow .= ' h f Q '."\n";      // Close path and Fill the inner solid shadow
+
+                       if ($bl) $shadow .= $this->grad->CoonsPatchMesh($x00,$y00,$w00,$h00,$patch_array,$x00,$x00+$w00,$y00,$y00+$h00, $colspace, true);
+
+                       if ($sh['x'] || $sh['y']) $shadow .= ' Q'."\n";         // Shadow Offset
+                       $shadow .= ' Q'."\n";   // Ends path no-op & Sets the clipping path
+
+               }
+       }
+
+       $s .= ' W n ';  // Ends path no-op & Sets the clipping path
+
+       if ($this->blk[$blvl]['bgcolor']) {
+               $this->pageBackgrounds[$blvl][] = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h, 'col'=>$this->blk[$blvl]['bgcolorarray'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'shadow'=>$shadow, 'z-index'=>$this->current_layer);   // mPDF 5.6.01
+       }
+       else    if ($shadow) {
+               $this->pageBackgrounds[$blvl][] = array('shadowonly'=>true, 'col'=>'', 'clippath'=>'', 'visibility'=>$this->visibility, 'shadow'=>$shadow, 'z-index'=>$this->current_layer);    // mPDF 5.6.01
+       }
+
+/*-- BACKGROUNDS --*/
+       if (isset($this->blk[$blvl]['gradient'])) { 
+               $g = $this->grad->parseBackgroundGradient($this->blk[$blvl]['gradient']);
+               if ($g) {
+                       $gx = $x0;
+                       $gy = $y0;
+                       $this->pageBackgrounds[$blvl][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$w, 'h'=>$h, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer);        // mPDF 5.6.01
+               }
+       }
+       if (isset($this->blk[$blvl]['background-image'])) { 
+          if ($this->blk[$blvl]['background-image']['gradient']  && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $this->blk[$blvl]['background-image']['gradient'] )) {
+               $g = $this->grad->parseMozGradient( $this->blk[$blvl]['background-image']['gradient'] );
+               if ($g) {
+                       $gx = $x0;
+                       $gy = $y0;
+                       // mPDF 5.6.11
+                       // origin specifies the background-positioning-area (bpa)
+                       if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') {
+                               $gx += $this->blk[$blvl]['border_left']['w'];
+                               $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']);
+                               if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
+                                       $gy += $this->blk[$blvl]['border_top']['w'];
+                               }
+                               if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
+                                       $gy1 = $y1 - $this->blk[$blvl]['border_bottom']['w'];
+                               }
+                               else { $gy1 = $y1; }
+                               $h = $gy1 - $gy;
+                       }
+                       else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') {
+                               $gx += $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
+                               $w -= ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']);
+                               if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
+                                       $gy += $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
+                               }
+                               if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
+                                       $gy1 = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']);
+                               }
+                               else { $gy1 = $y1 - $this->blk[$blvl]['padding_bottom']; }
+                               $h = $gy1 - $gy;
+                       }
+
+                       if (isset($this->blk[$blvl]['background-image']['size']['w']) && $this->blk[$blvl]['background-image']['size']['w']) {
+                               $size = $this->blk[$blvl]['background-image']['size'];
+                               if ($size['w']!='contain' && $size['w']!='cover') {
+                                       if (stristr($size['w'] ,'%')) {
+                                               $size['w'] += 0; 
+                                               $size['w'] /= 100; 
+                                               $w *= $size['w'];
+                                       }
+                                       else if ($size['w']!='auto') {
+                                               $w = $size['w'];
+                                       }
+                                       if (stristr($size['h'] ,'%')) {
+                                               $size['h'] += 0; 
+                                               $size['h'] /= 100; 
+                                               $h *= $size['h'];
+                                       }
+                                       else if ($size['h']!='auto') {
+                                               $h = $size['h'];
+                                       }
+                               }
+                       }
+                       $this->pageBackgrounds[$blvl][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$w, 'h'=>$h, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer);        // mPDF 5.6.01
+               }
+          }
+          else { 
+               $image_id = $this->blk[$blvl]['background-image']['image_id'];
+               $orig_w = $this->blk[$blvl]['background-image']['orig_w'];
+               $orig_h = $this->blk[$blvl]['background-image']['orig_h'];
+               $x_pos = $this->blk[$blvl]['background-image']['x_pos'];
+               $y_pos = $this->blk[$blvl]['background-image']['y_pos'];
+               $x_repeat = $this->blk[$blvl]['background-image']['x_repeat'];
+               $y_repeat = $this->blk[$blvl]['background-image']['y_repeat'];
+               $resize = $this->blk[$blvl]['background-image']['resize'];
+               $opacity = $this->blk[$blvl]['background-image']['opacity'];
+               $itype = $this->blk[$blvl]['background-image']['itype'];
+               $size = $this->blk[$blvl]['background-image']['size'];  // mPDF 5.6.10
+               // mPDF 5.6.10
+               // origin specifies the background-positioning-area (bpa)
+               $bpa = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h);
+               if ($this->blk[$blvl]['background-image']['origin'] == 'padding-box') {
+                       $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'];
+                       $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['border_right']['w']);
+                       if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
+                               $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'];
+                       }
+                       else { $bpa['y'] = $y0; }
+                       if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
+                               $bpay = $y1 - $this->blk[$blvl]['border_bottom']['w'];
+                       }
+                       else { $bpay = $y1; }
+                       $bpa['h'] = $bpay - $bpa['y'];
+               }
+               // mPDF 5.6.09
+               else if ($this->blk[$blvl]['background-image']['origin'] == 'content-box') {
+                       $bpa['x'] = $x0 + $this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'];
+                       $bpa['w'] = $w - ($this->blk[$blvl]['border_left']['w'] + $this->blk[$blvl]['padding_left'] + $this->blk[$blvl]['border_right']['w'] + $this->blk[$blvl]['padding_right']);
+                       if ($this->blk[$blvl]['border_top'] && $divider != 'pagetop' && !$continuingpage) {
+                               $bpa['y'] = $y0 + $this->blk[$blvl]['border_top']['w'] + $this->blk[$blvl]['padding_top'];
+                       }
+                       else { $bpa['y'] = $y0 + $this->blk[$blvl]['padding_top']; }
+                       if ($this->blk[$blvl]['border_bottom'] && $blockstate != 1 && $divider != 'pagebottom') { 
+                               $bpay = $y1 - ($this->blk[$blvl]['border_bottom']['w'] + $this->blk[$blvl]['padding_bottom']);
+                       }
+                       else { $bpay = $y1 - $this->blk[$blvl]['padding_bottom']; }
+                       $bpa['h'] = $bpay - $bpa['y'];
+               }
+               $this->pageBackgrounds[$blvl][] = array('x'=>$x0, 'y'=>$y0, 'w'=>$w, 'h'=>$h, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype, 'visibility'=>$this->visibility, 'z-index'=>$this->current_layer, 'size'=>$size, 'bpa'=>$bpa );     // mPDF 5.6.01  5.6.10
+          }
+       }
+/*-- END BACKGROUNDS --*/
+
+       // Float DIV
+       $this->blk[$blvl]['bb_painted'][$this->page] = true;
+
+}
+
+/*-- BORDER-RADIUS --*/
+
+function _EllipseArc($x0, $y0, $rx, $ry, $seg = 1, $part=false, $start=false) {        // Anticlockwise segment 1-4 TR-TL-BL-BR (part=1 or 2)
+       $s = '';
+       if ($rx<0) { $rx = 0; }
+       if ($ry<0) { $ry = 0; }
+       $rx *= _MPDFK;
+       $ry *= _MPDFK;
+       $astart = 0;
+       if ($seg == 1) {        // Top Right
+               $afinish = 90;
+               $nSeg = 4; 
+       }
+       else if ($seg == 2) {   // Top Left
+               $afinish = 180;
+               $nSeg = 8; 
+       }
+       else if ($seg == 3) {   // Bottom Left
+               $afinish = 270;
+               $nSeg = 12; 
+       }
+       else {                  // Bottom Right
+               $afinish = 360;
+               $nSeg = 16; 
+       }
+       $astart = deg2rad((float) $astart);
+       $afinish = deg2rad((float) $afinish);
+       $totalAngle = $afinish - $astart;
+       $dt = $totalAngle / $nSeg;      // segment angle
+       $dtm = $dt/3;
+       $x0 *= _MPDFK;
+       $y0 = ($this->h - $y0) * _MPDFK;
+       $t1 = $astart;
+       $a0 = $x0 + ($rx * cos($t1));
+       $b0 = $y0 + ($ry * sin($t1));
+       $c0 = -$rx * sin($t1);
+       $d0 = $ry * cos($t1);
+       $op = false;
+       for ($i = 1; $i <= $nSeg; $i++) {
+               // Draw this bit of the total curve
+               $t1 = ($i * $dt) + $astart;
+               $a1 = $x0 + ($rx * cos($t1));
+               $b1 = $y0 + ($ry * sin($t1));
+               $c1 = -$rx * sin($t1);
+               $d1 = $ry * cos($t1);
+               if ($i>($nSeg-4) && (!$part || ($part == 1 && $i<=$nSeg-2) || ($part == 2 && $i>$nSeg-2))) { 
+                       if ($start && !$op) {
+                               $s .= sprintf('%.3F %.3F m ', $a0, $b0);
+                       }
+                       $s .= sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c ', ($a0 + ($c0 * $dtm)), ($b0 + ($d0 * $dtm)), ($a1 - ($c1 * $dtm)) , ($b1 - ($d1 * $dtm)), $a1 , $b1 );
+                       $op = true;
+               }
+               $a0 = $a1;
+               $b0 = $b1;
+               $c0 = $c1;
+               $d0 = $d1;
+       }
+       return $s;
+}
+/*-- END BORDER-RADIUS --*/
+
+
+
+function PaintDivLnBorder($state=0,$blvl=0,$h) {
+       // $state = 0 normal; 1 top; 2 bottom; 3 top and bottom
+       $this->ColDetails[$this->CurrCol]['bottom_margin'] = $this->y + $h; 
+
+       $save_y = $this->y;
+
+       $w = $this->blk[$blvl]['width'];
+       $x0 = $this->x;                         // left
+       $y0 = $this->y;                         // top
+       $x1 = $this->x + $w;                    // bottom
+       $y1 = $this->y + $h;                    // bottom
+
+       if ($this->blk[$blvl]['border_top'] && ($state==1 || $state==3)) {
+               $tbd = $this->blk[$blvl]['border_top'];
+               if (isset($tbd['s']) && $tbd['s']) {
+                       $this->_setBorderLine($tbd);
+                       $this->y = $y0 + ($tbd['w']/2);
+                       // mPDF 5.6.56
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
+                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'T'); 
+                               $this->Line($x0 + ($tbd['w']/2) , $this->y , $x0 + $w - ($tbd['w']/2), $this->y);
+                       }
+                       else {
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                               $this->Line($x0, $this->y , $x0 + $w, $this->y);
+                       }
+                       $this->y += $tbd['w'];
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($this->blk[$blvl]['border_left']) { 
+               $tbd = $this->blk[$blvl]['border_left'];
+               if (isset($tbd['s']) && $tbd['s']) {
+                       $this->_setBorderLine($tbd);
+                       // mPDF 5.6.56
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
+                               $this->y = $y0 + ($tbd['w']/2);
+                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'L'); 
+                               $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h -($tbd['w']/2));
+                       }
+                       else {
+                               $this->y = $y0;
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                               $this->Line($x0 + ($tbd['w']/2), $this->y, $x0 + ($tbd['w']/2), $y0 + $h);
+                       }
+                       $this->y += $tbd['w'];
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($this->blk[$blvl]['border_right']) { 
+               $tbd = $this->blk[$blvl]['border_right'];
+               if (isset($tbd['s']) && $tbd['s']) {
+                       $this->_setBorderLine($tbd);
+                       // mPDF 5.6.56
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
+                               $this->y = $y0 + ($tbd['w']/2);
+                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'R'); 
+                               $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h - ($tbd['w']/2));
+                       }
+                       else {
+                               $this->y = $y0;
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                               $this->Line($x0 + $w - ($tbd['w']/2), $this->y, $x0 + $w - ($tbd['w']/2), $y0 + $h);
+                       }
+                       $this->y += $tbd['w'];
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($this->blk[$blvl]['border_bottom'] && $state > 1) { 
+               $tbd = $this->blk[$blvl]['border_bottom'];
+               if (isset($tbd['s']) && $tbd['s']) {
+                       $this->_setBorderLine($tbd);
+                       $this->y = $y0 + $h - ($tbd['w']/2);
+                       // mPDF 5.6.56
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') {
+                               $this->_setDashBorder($tbd['style'],'',$continuingpage,'B'); 
+                               $this->Line($x0 + ($tbd['w']/2) , $this->y, $x0 + $w - ($tbd['w']/2), $this->y);
+                       }
+                       else {
+                               $this->SetLineJoin(0);
+                               $this->SetLineCap(0);
+                               $this->Line($x0, $this->y, $x0 + $w, $this->y);
+                       }
+                       $this->y += $tbd['w'];
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       $this->SetDash(); 
+       $this->y = $save_y; 
+}
+
+
+function PaintImgBorder($objattr,$is_table) {
+       // Borders are disabled in columns - messes up the repositioning in printcolumnbuffer
+       if ($this->ColActive) { return ; }      // *COLUMNS*
+       if ($is_table) { $k = $this->shrin_k; } else { $k = 1; }
+       $h = (isset($objattr['BORDER-HEIGHT']) ? $objattr['BORDER-HEIGHT'] : 0);
+       $w = (isset($objattr['BORDER-WIDTH']) ? $objattr['BORDER-WIDTH'] : 0);
+       $x0 = (isset($objattr['BORDER-X']) ? $objattr['BORDER-X'] : 0);
+       $y0 = (isset($objattr['BORDER-Y']) ? $objattr['BORDER-Y'] : 0);
+
+       // BORDERS
+       if ($objattr['border_top']) { 
+               $tbd = $objattr['border_top'];
+               if (!empty($tbd['s'])) {
+                       $this->_setBorderLine($tbd,$k);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','T'); }
+                       $this->Line($x0, $y0, $x0 + $w, $y0);
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($objattr['border_left']) { 
+               $tbd = $objattr['border_left'];
+               if (!empty($tbd['s'])) {
+                       $this->_setBorderLine($tbd,$k);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','L'); }
+                       $this->Line($x0, $y0, $x0, $y0 + $h);
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($objattr['border_right']) { 
+               $tbd = $objattr['border_right'];
+               if (!empty($tbd['s'])) {
+                       $this->_setBorderLine($tbd,$k);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','R'); }
+                       $this->Line($x0 + $w, $y0, $x0 + $w, $y0 + $h);
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       if ($objattr['border_bottom']) { 
+               $tbd = $objattr['border_bottom'];
+               if (!empty($tbd['s'])) {
+                       $this->_setBorderLine($tbd,$k);
+                       if ($tbd['style']=='dotted' || $tbd['style']=='dashed') { $this->_setDashBorder($tbd['style'],'','','B'); }
+                       $this->Line($x0, $y0 + $h, $x0 + $w, $y0 + $h);
+                       // Reset Corners and Dash off
+                       $this->SetLineJoin(2);
+                       $this->SetLineCap(2);
+                       $this->SetDash(); 
+               }
+       }
+       $this->SetDash(); 
+       $this->SetAlpha(1);
+}
+
+/*-- END HTML-CSS --*/
+
+
+
+
+function Reset() {
+       $this->SetTColor($this->ConvertColor(0));
+       $this->SetDColor($this->ConvertColor(0));
+       $this->SetFColor($this->ConvertColor(255));
+       $this->SetAlpha(1);
+       $this->colorarray = ''; 
+
+       $this->spanbgcolorarray = '';
+       $this->spanbgcolor = false;
+       $this->spanborder = false;
+       $this->spanborddet = array();
+
+       $this->ResetStyles();
+
+       $this->HREF = '';
+       $this->textparam = array();
+       $this->SetTextOutline();
+
+       $this->SUP = false;
+       $this->SUB = false;
+       $this->strike = false;
+       $this->textshadow = '';
+
+       $this->SetFont($this->default_font,'',0,false);
+       $this->SetFontSize($this->default_font_size,false);
+
+       $this->currentfontfamily = '';  
+       $this->currentfontsize = '';  
+
+/*-- TABLES --*/
+       if ($this->tableLevel) {
+               $this->SetLineHeight('',$this->table_lineheight);       // *TABLES*
+       }
+       else
+/*-- END TABLES --*/
+/*-- LISTS --*/
+
+       if ($this->listlvl && $this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]) {
+               $this->SetLineHeight('',$this->list_lineheight[$this->listlvl][$this->bulletarray['occur']]);   // sets default line height
+       }
+       else
+/*-- END LISTS --*/
+       if (isset($this->blk[$this->blklvl]['line_height']) && $this->blk[$this->blklvl]['line_height']) {
+               $this->SetLineHeight('',$this->blk[$this->blklvl]['line_height']);      // sets default line height
+       }
+
+       $this->toupper = false;
+       $this->tolower = false;
+       $this->kerning = false; 
+       $this->lSpacingCSS = '';
+       $this->wSpacingCSS = '';
+       $this->fixedlSpacing = false;   
+       $this->minwSpacing = 0;
+       $this->capitalize = false;
+       $this->SetDash(); //restore to no dash
+       $this->dash_on = false;
+       $this->dotted_on = false;
+       $this->divwidth = 0;
+       $this->divheight = 0;
+       $this->divalign = '';
+       $this->divrevert = false;
+       $this->oldy = -1;
+
+       $bodystyle = array();
+       if (isset($this->cssmgr->CSS['BODY']['FONT-STYLE'])) { $bodystyle['FONT-STYLE'] = $this->cssmgr->CSS['BODY']['FONT-STYLE']; }
+       if (isset($this->cssmgr->CSS['BODY']['FONT-WEIGHT'])) { $bodystyle['FONT-WEIGHT'] = $this->cssmgr->CSS['BODY']['FONT-WEIGHT']; }
+       if (isset($this->cssmgr->CSS['BODY']['COLOR'])) { $bodystyle['COLOR'] = $this->cssmgr->CSS['BODY']['COLOR']; }
+       if (isset($bodystyle)) { $this->setCSS($bodystyle,'BLOCK','BODY'); }
+
+}
+
+/*-- HTML-CSS --*/
+function ReadMetaTags($html) {
+       // changes anykey=anyvalue to anykey="anyvalue" (only do this when this happens inside tags)
+       $regexp = '/ (\\w+?)=([^\\s>"]+)/si'; 
+       $html = preg_replace($regexp," \$1=\"\$2\"",$html);
+       if (preg_match('/<title>(.*?)<\/title>/si',$html,$m)) {
+               $this->SetTitle($m[1]); 
+       }
+       preg_match_all('/<meta [^>]*?(name|content)="([^>]*?)" [^>]*?(name|content)="([^>]*?)".*?>/si',$html,$aux);
+       $firstattr = $aux[1];
+       $secondattr = $aux[3];
+       for( $i = 0 ; $i < count($aux[0]) ; $i++) {
+
+               $name = ( strtoupper($firstattr[$i]) == "NAME" )? strtoupper($aux[2][$i]) : strtoupper($aux[4][$i]);
+               $content = ( strtoupper($firstattr[$i]) == "CONTENT" )? $aux[2][$i] : $aux[4][$i];
+               switch($name) {
+                       case "KEYWORDS": $this->SetKeywords($content); break;
+                       case "AUTHOR": $this->SetAuthor($content); break;
+                       case "DESCRIPTION": $this->SetSubject($content); break;
+               }
+       }
+}
+
+
+function ReadCharset($html) {
+       // Charset conversion
+       if ($this->allow_charset_conversion) {
+          if (preg_match('/<head.*charset=([^\'\"\s]*).*<\/head>/si',$html,$m)) {
+               if (strtoupper($m[1]) != 'UTF-8') {
+                       $this->charset_in = strtoupper($m[1]); 
+               }
+          }
+       }
+}
+
+function setCSS($arrayaux,$type='',$tag='') {  // type= INLINE | BLOCK | LIST // tag= BODY
+       if (!is_array($arrayaux)) return; //Removes PHP Warning
+       // Set font size first so that e.g. MARGIN 0.83em works on font size for this element
+       if (isset($arrayaux['FONT-SIZE'])) {
+               $v = $arrayaux['FONT-SIZE'];
+               if(is_numeric($v[0])) {
+                       if ($type == 'BLOCK' && $this->blklvl>0 && isset($this->blk[$this->blklvl-1]['InlineProperties']) && isset($this->blk[$this->blklvl-1]['InlineProperties']['size'])) {
+                               $mmsize = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['InlineProperties']['size']);
+                       }
+                       else {
+                               $mmsize = $this->ConvertSize($v,$this->FontSize);
+                       }
+                       $this->SetFontSize( $mmsize*(_MPDFK),false ); //Get size in points (pt)
+               }
+               else{
+                       $v = strtoupper($v);
+                       if (isset($this->fontsizes[$v])) { 
+                               $this->SetFontSize( $this->fontsizes[$v]* $this->default_font_size,false);
+                       }
+               }
+               if ($tag == 'BODY') { $this->SetDefaultFontSize($this->FontSizePt); }
+       }
+
+
+       if ($this->useLang && !$this->usingCoreFont) { 
+          if (isset($arrayaux['LANG']) && $arrayaux['LANG'] && $arrayaux['LANG'] != $this->default_lang && ((strlen($arrayaux['LANG']) == 5 && $arrayaux['LANG'] != 'UTF-8') || strlen($arrayaux['LANG']) == 2)) {
+               list ($coreSuitable,$mpdf_pdf_unifonts) = GetLangOpts($arrayaux['LANG'], $this->useAdobeCJK);
+               if ($mpdf_pdf_unifonts) { $this->RestrictUnicodeFonts($mpdf_pdf_unifonts); }
+               else { $this->RestrictUnicodeFonts($this->default_available_fonts ); }
+               if ($tag == 'BODY') {
+                       $this->currentLang = $arrayaux['LANG'];
+                       $this->default_lang = $arrayaux['LANG'];
+                       if ($mpdf_pdf_unifonts) { $this->default_available_fonts = $mpdf_pdf_unifonts; }
+               }
+          }
+          else { 
+               $this->RestrictUnicodeFonts($this->default_available_fonts ); 
+          }
+       }
+
+       // FOR INLINE and BLOCK OR 'BODY'
+       if (isset($arrayaux['FONT-FAMILY'])) {
+               $v = $arrayaux['FONT-FAMILY'];
+               //If it is a font list, get all font types
+               $aux_fontlist = explode(",",$v);
+               $found = 0;
+               foreach($aux_fontlist AS $f) {
+                       $fonttype = trim($f);
+                       $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
+                       $fonttype = preg_replace('/ /','',$fonttype);
+                       $v = strtolower(trim($fonttype));
+                       if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; }
+                       if ((!$this->onlyCoreFonts && in_array($v,$this->available_unifonts)) || 
+                               in_array($v,array('ccourier','ctimes','chelvetica')) ||
+                               ($this->onlyCoreFonts && in_array($v,array('courier','times','helvetica','arial'))) || 
+                               in_array($v, array('sjis','uhc','big5','gb'))) { 
+                               $fonttype = $v; 
+                               $found = 1;
+                               break;
+                       }
+               }
+               if (!$found) {
+                  foreach($aux_fontlist AS $f) {
+                       $fonttype = trim($f);
+                       $fonttype = preg_replace('/["\']*(.*?)["\']*/','\\1',$fonttype);
+                       $fonttype = preg_replace('/ /','',$fonttype);
+                       $v = strtolower(trim($fonttype));
+                       if (isset($this->fonttrans[$v]) && $this->fonttrans[$v]) { $v = $this->fonttrans[$v]; }
+                       if (in_array($v,$this->sans_fonts) || in_array($v,$this->serif_fonts) || in_array($v,$this->mono_fonts) ) { 
+                               $fonttype = $v; 
+                               break;
+                       }
+                  }
+               }
+
+               if ($tag == 'BODY') { 
+                       $this->SetDefaultFont($fonttype); 
+               }
+               $this->SetFont($fonttype,$this->currentfontstyle,0,false);
+       }
+       else { 
+               $this->SetFont($this->currentfontfamily,$this->currentfontstyle,0,false); 
+       }
+
+   foreach($arrayaux as $k => $v) {
+       if ($type != 'INLINE' && $tag != 'BODY' && $type != 'LIST') {
+         switch($k){
+               // BORDERS
+               case 'BORDER-TOP':
+                       $this->blk[$this->blklvl]['border_top'] = $this->border_details($v);
+                       if ($this->blk[$this->blklvl]['border_top']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
+                       break;
+               case 'BORDER-BOTTOM':
+                       $this->blk[$this->blklvl]['border_bottom'] = $this->border_details($v);
+                       if ($this->blk[$this->blklvl]['border_bottom']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
+                       break;
+               case 'BORDER-LEFT':
+                       $this->blk[$this->blklvl]['border_left'] = $this->border_details($v);
+                       if ($this->blk[$this->blklvl]['border_left']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
+                       break;
+               case 'BORDER-RIGHT':
+                       $this->blk[$this->blklvl]['border_right'] = $this->border_details($v);
+                       if ($this->blk[$this->blklvl]['border_right']['s']) { $this->blk[$this->blklvl]['border'] = 1; }
+                       break;
+
+               // PADDING
+               case 'PADDING-TOP':
+                       $this->blk[$this->blklvl]['padding_top'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'PADDING-BOTTOM':
+                       $this->blk[$this->blklvl]['padding_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'PADDING-LEFT':
+                       $this->blk[$this->blklvl]['padding_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'PADDING-RIGHT':
+                       $this->blk[$this->blklvl]['padding_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+
+               // MARGINS
+               case 'MARGIN-TOP':
+                       $tmp = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       if (isset($this->blk[$this->blklvl]['lastbottommargin'])) {
+                               if ($tmp > $this->blk[$this->blklvl]['lastbottommargin']) {
+                                       $tmp -= $this->blk[$this->blklvl]['lastbottommargin'];
+                               }
+                               else { 
+                                       $tmp = 0;
+                               }
+                       }
+                       $this->blk[$this->blklvl]['margin_top'] = $tmp;
+                       break;
+               case 'MARGIN-BOTTOM':
+                       $this->blk[$this->blklvl]['margin_bottom'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'MARGIN-LEFT':
+                       $this->blk[$this->blklvl]['margin_left'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'MARGIN-RIGHT':
+                       $this->blk[$this->blklvl]['margin_right'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+
+/*-- BORDER-RADIUS --*/
+               case 'BORDER-TOP-LEFT-RADIUS-H':
+                       $this->blk[$this->blklvl]['border_radius_TL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'BORDER-TOP-LEFT-RADIUS-V':
+                       $this->blk[$this->blklvl]['border_radius_TL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'BORDER-TOP-RIGHT-RADIUS-H':
+                       $this->blk[$this->blklvl]['border_radius_TR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'BORDER-TOP-RIGHT-RADIUS-V':
+                       $this->blk[$this->blklvl]['border_radius_TR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'BORDER-BOTTOM-LEFT-RADIUS-H':
+                       $this->blk[$this->blklvl]['border_radius_BL_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'BORDER-BOTTOM-LEFT-RADIUS-V':
+                       $this->blk[$this->blklvl]['border_radius_BL_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'BORDER-BOTTOM-RIGHT-RADIUS-H':
+                       $this->blk[$this->blklvl]['border_radius_BR_H'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+               case 'BORDER-BOTTOM-RIGHT-RADIUS-V':
+                       $this->blk[$this->blklvl]['border_radius_BR_V'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false);
+                       break;
+/*-- END BORDER-RADIUS --*/
+
+               case 'BOX-SHADOW':
+                       $bs = $this->cssmgr->setCSSboxshadow($v);
+                       if ($bs) { $this->blk[$this->blklvl]['box_shadow'] = $bs; }
+                       break;
+
+               case 'BACKGROUND-CLIP':
+                       if (strtoupper($v) == 'PADDING-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'padding-box'; }
+                       else if (strtoupper($v) == 'CONTENT-BOX') { $this->blk[$this->blklvl]['background_clip'] = 'content-box'; }     // mPDF 5.6.09
+                       break;
+
+               case 'PAGE-BREAK-AFTER':
+                       if (strtoupper($v) == 'AVOID') { $this->blk[$this->blklvl]['page_break_after_avoid'] = true; }
+                       else if (strtoupper($v) == 'ALWAYS' || strtoupper($v) == 'LEFT' || strtoupper($v) == 'RIGHT') { $this->blk[$this->blklvl]['page_break_after'] = strtoupper($v) ; }
+                       break;
+
+               case 'WIDTH':
+                       if (strtoupper($v) != 'AUTO') { 
+                               $this->blk[$this->blklvl]['css_set_width'] = $this->ConvertSize($v,$this->blk[$this->blklvl-1]['inner_width'],$this->FontSize,false); 
+                       }
+                       break;
+
+               case 'TEXT-INDENT':
+                       // Left as raw value (may include 1% or 2em)
+                       $this->blk[$this->blklvl]['text_indent'] = $v;
+                       break;
+
+         }//end of switch($k)
+       }
+
+
+       if ($type != 'INLINE' && $type != 'LIST') {     // includes BODY tag
+         switch($k){
+
+               case 'MARGIN-COLLAPSE': // Custom tag to collapse margins at top and bottom of page
+                       if (strtoupper($v) == 'COLLAPSE') { $this->blk[$this->blklvl]['margin_collapse'] = true; }
+                       break;
+
+               case 'LINE-HEIGHT':
+                       $this->blk[$this->blklvl]['line_height'] = $this->fixLineheight($v);
+                       if (!$this->blk[$this->blklvl]['line_height'] ) { $this->blk[$this->blklvl]['line_height'] = $this->normalLineheight; }
+                       break;
+
+               case 'TEXT-ALIGN': //left right center justify
+                       switch (strtoupper($v)) {
+                               case 'LEFT': 
+                        $this->blk[$this->blklvl]['align']="L";
+                        break;
+                               case 'CENTER': 
+                        $this->blk[$this->blklvl]['align']="C";
+                        break;
+                               case 'RIGHT': 
+                        $this->blk[$this->blklvl]['align']="R";
+                        break;
+                               case 'JUSTIFY': 
+                        $this->blk[$this->blklvl]['align']="J";
+                        break;
+                       }
+                       break;
+
+/*-- BACKGROUNDS --*/
+               case 'BACKGROUND-GRADIENT': 
+                       if ($type  == 'BLOCK') {
+                               $this->blk[$this->blklvl]['gradient'] = $v;
+                       }
+                       break;
+/*-- END BACKGROUNDS --*/
+
+               case 'DIRECTION': 
+                       if ($v) { $this->blk[$this->blklvl]['direction'] = strtolower($v); }
+                       break;
+
+         }//end of switch($k)
+       }
+
+       // FOR INLINE ONLY
+       if ($type == 'INLINE' || $type == 'LIST') {
+         switch($k){
+               case 'DISPLAY': // Custom tag to collapse margins at top and bottom of page
+                       if (strtoupper($v) == 'NONE') { $this->inlineDisplayOff = true; }
+                       break;
+               case 'DIRECTION': 
+                       break;
+         }//end of switch($k)
+       }
+       // FOR INLINE ONLY
+       if ($type == 'INLINE') {
+         switch($k){
+               // BORDERS
+               case 'BORDER-TOP':
+                       $this->spanborddet['T'] = $this->border_details($v);
+                       $this->spanborder = true;
+                       break;
+               case 'BORDER-BOTTOM':
+                       $this->spanborddet['B'] = $this->border_details($v);
+                       $this->spanborder = true;
+                       break;
+               case 'BORDER-LEFT':
+                       $this->spanborddet['L'] = $this->border_details($v);
+                       $this->spanborder = true;
+                       break;
+               case 'BORDER-RIGHT':
+                       $this->spanborddet['R'] = $this->border_details($v);
+                       $this->spanborder = true;
+                       break;
+               // mPDF 5.6.26
+               case 'VISIBILITY':      // block is set in OpenTag
+                       $v = strtolower($v);
+                       if ($v == 'visible' || $v == 'hidden' || $v == 'printonly' || $v == 'screenonly') { 
+                               $this->textparam['visibility'] = $v;
+                       }
+                       break;
+         }//end of switch($k)
+       }
+
+
+       // FOR INLINE and BLOCK
+         switch($k){
+               case 'TEXT-ALIGN': //left right center justify
+                       if (strtoupper($v) == 'NOJUSTIFY' && $this->blk[$this->blklvl]['align']=="J") {
+                        $this->blk[$this->blklvl]['align']="";
+                       }
+                       break;
+               // bgcolor only - to stay consistent with original html2fpdf
+               case 'BACKGROUND': 
+               case 'BACKGROUND-COLOR': 
+                       $cor = $this->ConvertColor($v);
+                       if ($cor) { 
+                          if ($tag  == 'BODY') {
+                               $this->bodyBackgroundColor = $cor;
+                          }
+                          else if ($type == 'INLINE' || $type == 'LIST') {
+                               $this->spanbgcolorarray = $cor;
+                               $this->spanbgcolor = true;
+                          }
+                          else {
+                               $this->blk[$this->blklvl]['bgcolorarray'] = $cor;
+                               $this->blk[$this->blklvl]['bgcolor'] = true;
+                          }
+                       }
+                       else if ($type != 'INLINE' && $type != 'LIST') {
+                               if ($this->ColActive || $this->keep_block_together) { 
+                                       $this->blk[$this->blklvl]['bgcolorarray'] = $this->blk[$this->blklvl-1]['bgcolorarray'] ;
+                                       $this->blk[$this->blklvl]['bgcolor'] = $this->blk[$this->blklvl-1]['bgcolor'] ;
+                               }
+                       }
+                       break;
+
+               // auto | normal | none
+               case 'FONT-KERNING': 
+                       if ((strtoupper($v) == 'NORMAL' || strtoupper($v) == 'AUTO') && $this->useKerning) { $this->kerning = true; }
+                       else if (strtoupper($v) == 'NONE') { $this->kerning = false; }
+                       break;
+
+
+               // normal | <length>
+               case 'LETTER-SPACING': 
+                       $this->lSpacingCSS = $v;
+                       if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') { 
+                               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
+                       }
+                       break;
+
+               // normal | <length>
+               case 'WORD-SPACING': 
+                       $this->wSpacingCSS = $v;
+                       if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') {
+                               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
+                       }
+                       break;
+
+               case 'FONT-STYLE': // italic normal oblique
+                       switch (strtoupper($v)) {
+                               case 'ITALIC': 
+                               case 'OBLIQUE': 
+                               $this->SetStyle('I',true);
+                                       break;
+                               case 'NORMAL': 
+                               $this->SetStyle('I',false);
+                                       break;
+                       }
+                       break;
+
+               case 'FONT-WEIGHT': // normal bold //Does not support: bolder, lighter, 100..900(step value=100)
+                       switch (strtoupper($v)) {
+                               case 'BOLD': 
+                               $this->SetStyle('B',true);
+                                       break;
+                               case 'NORMAL': 
+                               $this->SetStyle('B',false);
+                                       break;
+                       }
+                       break;
+
+               case 'VERTICAL-ALIGN': //super and sub only dealt with here e.g. <SUB> and <SUP>
+                       switch (strtoupper($v)) {
+                               case 'SUPER': 
+                        $this->SUP=true;
+                        $this->SUB=false;      // mPDF 5.6.07
+                       break;
+                               case 'SUB': 
+                        $this->SUB=true;
+                        $this->SUP=false;      // mPDF 5.6.07
+                       break;
+                               case 'BASELINE':        // mPDF 5.6.07
+                        $this->SUB=false;
+                        $this->SUP=false;
+                       break;
+                       }
+                       break;
+
+               case 'TEXT-DECORATION': // none underline line-through (strikeout) //Does not support: overline, blink
+                       if (stristr($v,'LINE-THROUGH')) {
+                                       $this->strike = true;
+                       }
+                       else if (stristr($v,'UNDERLINE')) {
+                               $this->SetStyle('U',true);
+                       }
+                       else if (stristr($v,'NONE')) {
+                               $this->SetStyle('U',false);
+                                       $this->strike = false;  // mPDF 5.6.07
+                       }
+                       break;
+
+               case 'FONT-VARIANT': 
+                       switch (strtoupper($v)) {
+                               case 'SMALL-CAPS': 
+                                       $this->SetStyle('S',true);
+                                       break;
+                               case 'NORMAL': 
+                                       $this->SetStyle('S',false);
+                                       break;
+                       }
+                       break;
+
+               case 'TEXT-TRANSFORM': // none uppercase lowercase //Does support: capitalize
+                       switch (strtoupper($v)) { //Not working 100%
+                               case 'CAPITALIZE':
+                                       $this->capitalize=true; 
+                                       break;
+                               case 'UPPERCASE':
+                                       $this->toupper=true;
+                                       break;
+                               case 'LOWERCASE':
+                                       $this->tolower=true;
+                                       break;
+                               case 'NONE': break;
+                       }
+                       break;
+
+               case 'TEXT-SHADOW':
+                       $ts = $this->cssmgr->setCSStextshadow($v);
+                       if ($ts) { $this->textshadow = $ts; }
+                       break;
+
+               case 'HYPHENS': // mPDF 5.6.08
+                       if (strtoupper($v)=='NONE') {
+                               $this->textparam['hyphens'] = 2;
+                       }
+                       else if (strtoupper($v)=='AUTO') {
+                               $this->textparam['hyphens'] = 1;
+                       }
+                       else if (strtoupper($v)=='MANUAL') {
+                               $this->textparam['hyphens'] = 0;
+                       }
+                       break;
+
+               case 'TEXT-OUTLINE':    // mPDF 5.6.07
+                       if (strtoupper($v)=='NONE') {
+                               $this->textparam['outline-s'] = false;
+                       }
+                       break;
+
+               case 'TEXT-OUTLINE-WIDTH':      // mPDF 5.6.07
+               case 'OUTLINE-WIDTH': 
+                       switch(strtoupper($v)) {
+                               case 'THIN': $v = '0.03em'; break;
+                               case 'MEDIUM': $v = '0.05em'; break;
+                               case 'THICK': $v = '0.07em'; break;
+                       }
+                       $w = $this->ConvertSize($v,$this->blk[$this->blklvl]['inner_width'],$this->FontSize);
+                       if ($w) {
+                               $this->textparam['outline-WIDTH'] = $w;
+                               $this->textparam['outline-s'] = true;
+                       }
+                       else { $this->textparam['outline-s'] = false; }
+                       break;
+
+               case 'TEXT-OUTLINE-COLOR':      // mPDF 5.6.07
+               case 'OUTLINE-COLOR': 
+                       if (strtoupper($v) == 'INVERT') {
+                          if ($this->colorarray) {
+                               $cor = $this->colorarray;
+                               $this->textparam['outline-COLOR'] = $this->_invertColor($cor);
+                          }
+                          else {
+                               $this->textparam['outline-COLOR'] = $this->ConvertColor(255);
+                          }
+                       }
+                       else { 
+                         $cor = $this->ConvertColor($v);
+                         if ($cor) { $this->textparam['outline-COLOR'] = $cor ; }        
+                       }
+                       break;
+
+               case 'COLOR': // font color
+                       $cor = $this->ConvertColor($v);
+                       if ($cor) { 
+                               $this->colorarray = $cor;
+                               $this->SetTColor($cor); 
+                       }
+                 break;
+
+
+         }//end of switch($k)
+
+
+   }//end of foreach
+}
+
+/*-- END HTML-CSS --*/
+
+
+function SetStyle($tag,$enable) {
+       $this->$tag=$enable;
+       $style='';
+       foreach(array('B','I','U','S') as $s) {
+               if($this->$s) {
+                       $style.=$s;
+               }
+       }
+       if ($this->S && empty($this->upperCase)) { @include(_MPDF_PATH.'includes/upperCase.php'); }
+       $this->currentfontstyle=$style;
+       $this->SetFont('',$style,0,false);
+}
+
+// Set multiple styles at one $str e.g. "BIS"
+function SetStylesArray($arr) {
+       $style='';
+       foreach(array('B','I','U','S') as $s) {
+         if (isset($arr[$s])) {
+               if ($arr[$s]) {
+                       $this->$s = true;
+                       $style.=$s;
+               }
+               else { $this->$s = false; }
+         }
+         else if ($this->$s) { $style.=$s; }
+       }
+       $this->currentfontstyle=$style;
+       $this->SetFont('',$style,0,false);
+}
+
+// Set multiple styles at one $str e.g. "BIS"
+function SetStyles($str) {
+       $style='';
+       foreach(array('B','I','U','S') as $s) {
+               if (strpos($str,$s) !== false) {
+                       $this->$s = true;
+                       $style.=$s;
+               }
+               else { $this->$s = false; }
+       }
+       $this->currentfontstyle=$style;
+       $this->SetFont('',$style,0,false);
+}
+
+function ResetStyles() {
+       foreach(array('B','I','U','S') as $s) {
+               $this->$s = false;
+       }
+       $this->currentfontstyle='';
+       $this->SetFont('','',0,false);
+}
+
+
+function DisableTags($str='')
+{
+  if ($str == '') //enable all tags
+  {
+       //Insert new supported tags in the long string below.
+       $this->enabledtags = "<span><s><strike><del><bdo><big><small><ins><cite><acronym><font><sup><sub><b><u><i><a><strong><em><code><samp><tt><kbd><var><q><table><thead><tfoot><tbody><tr><th><td><ol><ul><li><dl><dt><dd><form><input><select><textarea><option><div><p><h1><h2><h3><h4><h5><h6><pre><center><blockquote><address><hr><img><br><indexentry><indexinsert><bookmark><watermarktext><watermarkimage><tts><ttz><tta><column_break><columnbreak><newcolumn><newpage><page_break><pagebreak><formfeed><columns><toc><tocentry><tocpagebreak><pageheader><pagefooter><setpageheader><setpagefooter><sethtmlpageheader><sethtmlpagefooter><annotation><template><jpgraph><barcode><dottab><caption><textcircle><fieldset><legend><article><aside><figure><figcaption><footer><header><hgroup><nav><section><mark><details><summary><meter><progress><time>";       // mPDF 5.5.09
+  }
+  else
+  {
+    $str = explode(",",$str);
+    foreach($str as $v) $this->enabledtags = str_replace(trim($v),'',$this->enabledtags);
+  }
+}
+
+
+/*-- TABLES --*/
+
+function finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight) {
+       $af = 0;        // Above font
+       $bf = 0;        // Below font
+       $mta = 0;       // Maximum top-aligned 
+       $mba = 0;       // Maximum bottom-aligned 
+       if ($lhxt['BS']) {
+               $af = max($af, ($lhxt['BS'] - ($maxfontsize * (0.5 + $this->baselineC))));
+       }
+       if ($lhxt['M']) { 
+               $af = max($af, ($lhxt['M'] - $maxfontsize)/2);
+               $bf = max($bf, ($lhxt['M'] - $maxfontsize)/2);
+       }
+       if ($lhxt['TT']) { 
+               $bf = max($bf, ($lhxt['TT'] - $maxfontsize));
+       }
+       if ($lhxt['TB']) { 
+               $af = max($af, ($lhxt['TB'] - $maxfontsize));
+       }
+       if ($lhxt['T']) { 
+               $mta = max($mta, $lhxt['T']);
+       }
+       if ($lhxt['B']) { 
+               $mba = max($mba, $lhxt['B']);
+       }
+       if ((!$lhfixed || !$forceExactLineheight) && ($af > (($maxlineHeight - $maxfontsize)/2) || $bf > (($maxlineHeight - $maxfontsize)/2))) {
+               $maxlineHeight = $maxfontsize + $af + $bf;
+       }
+       else if (!$lhfixed) { $af = $bf = ($maxlineHeight - $maxfontsize)/2; }
+       if ($mta > $maxlineHeight) { 
+               $bf += ($mta - $maxlineHeight);
+               $maxlineHeight = $mta;
+       }
+       if ($mba > $maxlineHeight) { 
+               $af += ($mba - $maxlineHeight);
+               $maxlineHeight = $mba;
+       }
+       return $maxlineHeight; 
+}
+
+function TableWordWrap($maxwidth, $forcewrap = 0, $textbuffer = '', $def_fontsize, $returnarray=false) {       // NB ** returnarray used in flowchart
+   $biggestword=0;
+   $toonarrow=false;
+
+   $textbuffer[0][0] = preg_replace('/^[ ]*/','',$textbuffer[0][0]);
+   if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; }
+
+   $text = '';
+   $lhfixed = false; 
+   if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; }
+   if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);}
+   else { $def_lineheight = 0; }
+   // START OF NEW LINE
+   // Initialise lineheight variables
+   $maxfontsize = 0;
+   $forceExactLineheight = true;
+   $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+   $maxlineHeight = $def_lineheight ;
+   $ch = 0;
+   $width = 0;
+   $ln = 1;    // Counts line number
+   $mxw = $this->GetCharWidth('W',false);
+   for($cctr=0;$cctr<count($textbuffer);$cctr++) {     // mPDF 5.6.22
+       $chunk = $textbuffer[$cctr];    // mPDF 5.6.22
+       $line = $chunk[0];
+       //IMAGE
+      if (substr($line,0,3) == "\xbb\xa4\xac") { //identifier has been identified!
+               $objattr = $this->_getObjAttr($line);
+               if ($objattr['type'] == 'nestedtable') {
+                       // END OF LINE
+                       // Finalise & add lineheight
+                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+                       $level = $objattr['level'];
+                       $ih = $this->table[($level+1)][$objattr['nestedcontent']]['h']; // nested table width
+                       $ch += $ih;
+                       // START OF NEW LINE
+                       // Initialise lineheight variables
+                       $ln++;
+                       $maxfontsize = 0;
+                       $forceExactLineheight = true;
+                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+                       $maxlineHeight = $def_lineheight ;
+                       $width = 0;
+                       $text = "";
+                       continue;
+               }
+
+               list($skipln,$iw,$ih) = $this->inlineObject((isset($specialcontent['type']) ? $specialcontent['type'] : null),0,0, $objattr, $this->lMargin,$width,$maxwidth,$maxlineHeight,false,true);
+               if ($objattr['type'] == 'hr') {
+                       // END OF LINE
+                       // Finalise & add lineheight 
+                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+                       // Add HR height
+                       $ch += $ih;
+                       // START OF NEW LINE
+                       // Initialise lineheight variables
+                       $ln++;
+                       $maxfontsize = 0;
+                       $forceExactLineheight = true;
+                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+                       $maxlineHeight = $def_lineheight ;
+                       $width = 0;
+                       $text = "";
+                       continue;
+               }
+
+               if ($skipln==1 || $skipln==-2) {
+                       // Finish last line
+                       // END OF LINE
+                       // Finalise & add lineheight 
+                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+                       // START OF NEW LINE
+                       // Initialise lineheight variables
+                       $maxfontsize = 0;
+                       $forceExactLineheight = true;
+                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+                       $maxlineHeight = $def_lineheight ;
+                       $ln++;
+                       $width = 0;
+                       $text = "";
+               }
+               $va = (isset($objattr['vertical-align']) ? $objattr['vertical-align'] : null); 
+               if ($va) {
+                       $lhxt[$va] = max($lhxt[$va], $ih);
+               }
+               if ($lhfixed && $ih > $def_fontsize) { $forceExactLineheight = false; }
+               $maxlineHeight = max($maxlineHeight ,$ih);
+               $width += $iw;
+               continue;
+       }
+
+       // SET FONT SIZE/STYLE from $chunk[n]
+       // FONTSIZE
+       if(isset($chunk[11]) and $chunk[11] != '') { 
+          if ($this->shrin_k) {
+               $this->SetFontSize($chunk[11]/$this->shrin_k,false); 
+          }
+          else {
+               $this->SetFontSize($chunk[11],false); 
+          }
+       }
+       if ($line == "\n") {
+               // END OF LINE
+               $maxfontsize = max($maxfontsize,$this->FontSize); 
+               $fh = $this->_computeLineheight($this->table_lineheight);
+               if ($lhfixed && $this->FontSize > $def_fontsize) {
+                       $fh = $this->FontSize;
+                       $forceExactLineheight = false; 
+               }
+               $maxlineHeight = max($maxlineHeight,$fh); 
+
+               // Finalise & add lineheight 
+               $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+               // START OF NEW LINE
+               // Initialise lineheight variables
+               $maxfontsize = 0;
+               $forceExactLineheight = true;
+               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+               $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
+               $ln++;
+               $text = "";
+               $width = 0;
+               if(isset($chunk[11]) and $chunk[11] != '') { 
+                       $this->SetFontSize($this->default_font_size,false);
+               }
+               continue;
+       }
+
+       $lbw = $rbw = 0;        // Border widths
+       if(isset($chunk[16]) && !empty($chunk[16])) {   //Border
+               $this->spanborddet = $chunk[16];
+               if (isset($this->spanborddet['L'])) $lbw = $this->spanborddet['L']['w'];
+               if (isset($this->spanborddet['R'])) $rbw = $this->spanborddet['R']['w'];
+       }
+      if(isset($chunk[15])) {   // Word spacing
+               $this->wSpacingCSS = $chunk[15]; 
+               if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
+                       $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize); 
+               }
+       }
+      if(isset($chunk[14])) {   // Letter spacing
+               $this->lSpacingCSS = $chunk[14]; 
+               if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
+                       $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize);
+               }
+       }
+      if(isset($chunk[13])) {   // Font Kerning
+               $this->kerning = $chunk[13]; 
+       }
+      if(isset($chunk[9])) {    // Text params - Outline, hyphens      // mPDF 5.6.08
+               $this->textparam = $chunk[9]; 
+       }
+       // FONTFAMILY
+       if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); }
+
+       // FONT STYLE B I U
+       if(isset($chunk[2]) and $chunk[2] != '') {
+               $this->SetStyles($chunk[2]);
+       }
+
+       $space = $this->GetCharWidth(' ',false);
+
+       if (mb_substr($line,0,1,$this->mb_enc ) == ' ') {       // line (chunk) starts with a space
+               $width += $space;
+               $text .= ' ';
+       }
+
+       if (mb_substr($line,(mb_strlen($line,$this->mb_enc )-1),1,$this->mb_enc ) == ' ') { $lsend = true; }    // line (chunk) ends with a space
+       else { $lsend = false; }
+       $line= trim($line);
+       if ($line == '') { continue; }
+
+       // mPDF ITERATION
+       if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line);
+
+       $words = explode(' ', $line);
+
+       foreach ($words as $k=>$word) {
+               $word = trim($word);
+               $wordwidth = $this->GetStringWidth($word);
+               if ($k==0) { $wordwidth += $lbw; }
+               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
+               //maxwidth is insufficient for one word
+               if ($wordwidth > $maxwidth + 0.0001) {
+                       $firstchunk=true;
+                       while($wordwidth > $maxwidth + 0.0001) {
+                               $chw = 0;       // check width
+                               $oneCJKorphan = false;
+                               $mlen = mb_strlen($word, $this->mb_enc );
+                               for ( $i = 0; $i < $mlen; $i++ ) {
+                                       $chw = $this->GetStringWidth(mb_substr($word,0,$i+1,$this->mb_enc ));
+                                       if ($k==0) { $chw += $lbw; }
+                                       if ($k==(count($words)-1)) { $chw += $rbw; }
+                                       if ($chw > $maxwidth) {
+                                               if ($i==0 && $firstchunk) {
+                                                       // If first letter of line does not fit
+                                                       $wordwidth = $maxwidth - 0.0001;
+                                                       if ($this->debug) { $this->Error("Table cell width calculated less than that needed for one character!"); }
+                                                       break;
+                                               }
+/*-- CJK-FONTS --*/
+                                               // mPDF 5.6.40  mPDF 5.6.44
+                                               if ($this->checkCJK && !$this->usingCoreFont && preg_match("/[".$this->pregCJKchars."]/u", $word)) {    // mPDF 5.6.44
+                                                       if (!$oneCJKorphan && preg_match('/['.$this->CJKoverflow.']$/u',mb_substr($word,0,$i+1,$this->mb_enc )) && $this->allowCJKorphans) {
+                                                               $wordwidth = $maxwidth - 0.0001;
+                                                               $oneCJKorphan = true; 
+                                                               continue;
+                                                       }
+                                                       $cjkfix = 0;
+                                                       // Last character that fits is not allowed to end a line - move lastchar(s) to start of next line
+                                                       if ($i>0 && preg_match("/[".$this->CJKleading."$]/u", mb_substr($word,0,$i,$this->mb_enc ))) {
+                                                               $cjkfix = 1;
+                                                       }
+                                                       // Next character is not allowed to start a new line
+                                                       else if (preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i,1,$this->mb_enc ))) {
+                                                               // try squeezing another character(s) onto this line = Oikomi
+                                                               if ($this->allowCJKorphans && !$oneCJKorphan) {
+                                                                       //if lookahead is not another following char
+                                                                       if ($i==($mlen-1) || ($i<($mlen-1) && !preg_match("/[".$this->CJKfollowing."]/u", mb_substr($word,$i+1,1,$this->mb_enc )))) {
+                                                                               $wordwidth = $maxwidth - 0.0001;
+                                                                               $oneCJKorphan = true; 
+                                                                               continue;
+                                                                       }
+                                                               }
+                                                               // or move lastchar(s) to next line
+                                                               $cjkfix = 2;
+                                                       }
+                                                       // mPDF 5.6.42
+                                                       // CJK numerals kept together
+                                                       else if (preg_match("/([".$this->pregCJKchars."]+[0-9\x{ff10}-\x{ff19}]+$)/u", mb_substr($word,0,$i,$this->mb_enc )) && preg_match("/^([0-9\x{ff10}-\x{ff19}]+[".$this->pregCJKchars."]+)/u", mb_substr($word,$i,16,$this->mb_enc ))) {
+                                                               $cjkfix = 3;
+                                                       }
+                                                       if ($cjkfix) {
+                                                               //move lastchar(s) to next line
+                                                               $m0 = mb_substr($word,$i-1,1,$this->mb_enc );   // chars to move
+                                                               $m1 = mb_substr($word,0,$i-1,$this->mb_enc );   // str after stripped chars to move
+                                                               $mi = $i - 1;
+                                                               if ($cjkfix == 3) { $match = "0-9\x{ff10}-\x{ff19}"; }
+                                                               else { $match = $this->CJKleading; }
+                                                               while(preg_match("/[".$match."$]/u", $m1) && mb_strlen($m1, $this->mb_enc)>2) {
+                                                                       $m0 = mb_substr($m1,$mi-1,1,$this->mb_enc ).$m0;        // chars to move
+                                                                       $m1 = mb_substr($m1,0,$mi-1,$this->mb_enc );   // str after stripped chars to move
+                                                                       $mi--;
+                                                               }
+                                                               // Insert $m0 into $word at $i
+                                                               $word =  mb_substr($word,0,$i,$this->mb_enc ) . $m0 .  mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
+                                                               $mlen = mb_strlen($word, $this->mb_enc );       // increment max for loop counter
+                                                       }
+
+
+
+                                               }
+/*-- END CJK-FONTS --*/
+
+                                               if ($text && $firstchunk) {
+                                                       // END OF LINE
+                                                       // Finalise & add lineheight 
+                                                       $maxfontsize = max($maxfontsize,$this->FontSize); 
+                                                       $fh = $this->_computeLineheight($this->table_lineheight);
+                                                       if ($lhfixed && $this->FontSize > $def_fontsize) {
+                                                               $fh = $this->FontSize;
+                                                               $forceExactLineheight = false; 
+                                                       }
+                                                       $maxlineHeight = max($maxlineHeight,$fh); 
+                                                       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+                                                       // START OF NEW LINE
+                                                       // Initialise lineheight variables
+                                                       $maxfontsize = $this->FontSize;
+                                                       $forceExactLineheight = true;
+                                                       $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+                                                       $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
+                                                       $ln++;
+                                               }
+                                               // END OF LINE
+                                               // Finalise & add lineheight 
+                                               $maxfontsize = max($maxfontsize,$this->FontSize); 
+                                               $fh = $this->_computeLineheight($this->table_lineheight);
+                                               if ($lhfixed && $this->FontSize > $def_fontsize) {
+                                                       $fh = $this->FontSize;
+                                                       $forceExactLineheight = false; 
+                                               }
+                                               $maxlineHeight = max($maxlineHeight,$fh); 
+                                               $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+                                               // START OF NEW LINE
+                                               // Initialise lineheight variables
+                                               $maxfontsize = $this->FontSize;
+                                               $forceExactLineheight = true;
+                                               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+                                               $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
+                                               $ln++;
+                                               $mxw = $maxwidth;
+                                               $text = mb_substr($word,0,$i,$this->mb_enc );
+                                               $word = mb_substr($word,$i,mb_strlen($word, $this->mb_enc )-$i,$this->mb_enc );
+                                               $wordwidth = $this->GetStringWidth($word);
+                                               $width = 0; 
+                                               $firstchunk=false;
+                                               break;
+                                       }
+                               }
+                               if (mb_strlen($word, $this->mb_enc )<2 && $wordwidth > $maxwidth + 0.0001) {
+                                       $wordwidth = $maxwidth - 0.0001;
+                                       if ($this->debug) { $this->Error("Table cell width calculated less than that needed for single character!"); }
+                               }
+                               $firstchunk=false;
+                       }
+               }
+               // Word fits on line...
+               if ($width + $wordwidth  < $maxwidth + 0.0001) {
+                       $mxw = max($mxw, ($width+$wordwidth));
+                       $width += $wordwidth + $space;
+                       $text .= $word.' ';
+               }
+               // Word does not fit on line...
+               else {
+                               // mPDF 5.6.21  hard hyphens
+                               if ($this->textparam['hyphens'] != 2 && preg_match('/\-/',$word)) {
+                                       list($hardsuccess,$pre,$post,$prelength) = $this->hardHyphenate($word, ($maxwidth - $width)-$this->GetCharWidth("-", false));
+                                       if ($hardsuccess) { 
+                                               $text .= $pre.'-';
+                                               $word = $post;
+                                               $wordwidth = $this->GetStringWidth($word);
+                                               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
+                                       }
+                               }
+/*-- HYPHENATION --*/
+                               // Soft Hyphens chr(173)
+                               else if ($this->textparam['hyphens'] != 2 && (!$this->usingCoreFont && preg_match("/\xc2\xad/",$word)) || ($this->usingCoreFont && preg_match("/".chr(173)."/",$word) && ($this->FontFamily!='csymbol' && $this->FontFamily!='czapfdingbats')) ) {      // mPDF 5.6.06  5.6.08
+                                       list($success,$pre,$post,$prelength) = $this->softHyphenate($word, ($maxwidth - $width));
+                                       if ($success) { 
+                                               $text .= $pre.'-';
+                                               $word = $post;
+                                               $wordwidth = $this->GetStringWidth($word);
+                                               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
+                                       }
+                               }
+                               else if ($this->textparam['hyphens'] == 1) {    // mPDF 5.6.06   5.6.08
+                                       list($success,$pre,$post,$prelength) = $this->hyphenateWord($word, ($maxwidth - $width));
+                                       if ($success) { 
+                                               $text .= $pre.'-';
+                                               $word = $post;
+                                               $wordwidth = $this->GetStringWidth($word);
+                                               if ($k==(count($words)-1)) { $wordwidth += $rbw; }
+                                       }
+                               }
+/*-- END HYPHENATION --*/
+
+
+                               // mPDF 5.6.22
+                               if (    count($textbuffer)>1 && $cctr > 0 && $k==0
+                                       && (substr($textbuffer[$cctr][0],0,3) != "\xbb\xa4\xac")
+                                       && (substr($textbuffer[$cctr-1][0],0,3) != "\xbb\xa4\xac")
+                                       && substr($textbuffer[$cctr-1][0],-1,1) != ' '
+                                       && substr($textbuffer[$cctr][0],0,1) != ' '
+                                       ) {
+                                       // Go back to find a space in a previous chunk of content
+                                       $found = false;
+                                       for ($ix=$cctr-1;$ix>=0;$ix--) {
+                                               if (preg_match('/[ ]/',$textbuffer[$ix][0])) { $found = $ix; break; }           
+                                       }
+                                       if ($found !== false) {
+                                               $charpos = strrpos($textbuffer[$found][0],' ');
+                                               // mPDF 5.6.24
+                                               $a1 = $a2 = $textbuffer[$found];
+                                               $a1[0] = "\n";
+                                               $a2[0] = substr($textbuffer[$found][0], $charpos+1, strlen($textbuffer[$found][0])-$charpos);
+                                               $textbuffer[$found][0] = substr($textbuffer[$found][0], 0, $charpos);
+                                               array_insert($textbuffer, $a1, $found+1);
+                                               array_insert($textbuffer, $a2, $found+2);
+                                               // Initialise all variables
+                                               $biggestword=0;
+                                               $toonarrow=false;
+                                               $lhfixed = false; 
+                                               if (preg_match('/([0-9.,]+)mm/',$this->table_lineheight)) { $lhfixed = true; }
+                                               if ($lhfixed) { $def_lineheight = $this->_computeLineheight($this->table_lineheight, $def_fontsize);}
+                                               else { $def_lineheight = 0; }
+                                               $maxfontsize = 0;
+                                               $forceExactLineheight = true;
+                                               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+                                               $maxlineHeight = $def_lineheight ;
+                                               $ch = 0;
+                                               $width = 0;
+                                               $ln = 1;        // Counts line number
+                                               $mxw = $this->GetCharWidth('W',false);
+                                               $text = '';
+
+                                               $cctr = -1;
+                                               break;
+                                       }
+                               }
+
+                               // END OF LINE
+                               // Finalise & add lineheight 
+                               $maxfontsize = max($maxfontsize,$this->FontSize); 
+                               $fh = $this->_computeLineheight($this->table_lineheight);
+                               if ($lhfixed && $this->FontSize > $def_fontsize) {
+                                       $fh = $this->FontSize;
+                                       $forceExactLineheight = false; 
+                               }
+                               $maxlineHeight = max($maxlineHeight,$fh); 
+                               $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+                               $mxw = $maxwidth;
+                               // START OF NEW LINE
+                               // Initialise lineheight variables
+                               $maxfontsize = $this->FontSize;
+                               $forceExactLineheight = true;
+                               $lhxt = array('BS'=>0, 'M'=>0, 'TT'=>0, 'TB'=>0, 'T'=>0, 'B'=>0);
+                               $maxlineHeight = $this->_computeLineheight($this->table_lineheight);
+                               $ln++;
+                               $width = $wordwidth + $space;
+                               $text = $word.' ';
+          }
+               $maxfontsize = max($maxfontsize,$this->FontSize); 
+               $fh = $this->_computeLineheight($this->table_lineheight);
+               if ($lhfixed && $this->FontSize > $def_fontsize) {
+                       $fh = $this->FontSize;
+                       $forceExactLineheight = false; 
+               }
+               $maxlineHeight = max($maxlineHeight,$fh); 
+       }
+
+       // End of textbuffer chunk
+       if (!$lsend) {
+               $width -= $space;
+               $text = rtrim($text);
+       }
+
+       // RESET FONT SIZE/STYLE
+       // RESETTING VALUES
+       //Now we must deactivate what we have used
+       if(isset($chunk[2]) and $chunk[2] != '') {
+               $this->ResetStyles();
+       }
+       if(isset($chunk[4]) and $chunk[4] != '') {
+               $this->SetFont($this->default_font,$this->FontStyle,0,false);
+       }
+       if(isset($chunk[11]) and $chunk[11] != '') { 
+               $this->SetFontSize($this->default_font_size,false);
+       }
+       $this->spanborddet = array();
+       $this->kerning = false; 
+       $this->lSpacingCSS = '';
+       $this->wSpacingCSS = '';
+       $this->fixedlSpacing = false;
+       $this->minwSpacing = 0; 
+   }
+   // Finalise lineheight if something output on line and add
+   if ($width) {
+       $ch += $this->finaliseCellLineHeight($lhxt, $maxfontsize, $maxlineHeight, $lhfixed, $forceExactLineheight);
+   }
+   if ($returnarray) { return array($ch,$ln,$mxw); }
+   else { return $ch; }
+
+}
+
+
+function TableCheckMinWidth($maxwidth, $forcewrap = 0, $textbuffer) {
+       $biggestword=0;
+       $toonarrow=false;
+       if ((count($textbuffer) == 0) or ((count($textbuffer) == 1) && ($textbuffer[0][0] == ''))) { return 0; }
+
+       foreach ($textbuffer as $chunk) {
+
+               $line = $chunk[0];
+               // mPDF ITERATION
+               if ($this->iterationCounter) $line = preg_replace('/{iteration ([a-zA-Z0-9_]+)}/','\\1', $line);
+
+               // IMAGES & FORM ELEMENTS
+       if (substr($line,0,3) == "\xbb\xa4\xac") { //inline object - FORM element or IMAGE!
+                       $objattr = $this->_getObjAttr($line);
+                       if ($objattr['type']!='hr' && isset($objattr['width']) && ($objattr['width']/$this->shrin_k) > ($maxwidth + 0.0001) ) { 
+                               if (($objattr['width']/$this->shrin_k) > $biggestword) { $biggestword = ($objattr['width']/$this->shrin_k); }
+                               $toonarrow=true;
+                       }
+                       continue;
+               }
+
+               if ($line == "\n") {
+                       continue;
+               }
+               $line = trim($line );
+               // SET FONT SIZE/STYLE from $chunk[n]
+
+               // FONTSIZE
+             if(isset($chunk[11]) and $chunk[11] != '') { 
+                  if ($this->shrin_k) {
+                       $this->SetFontSize($chunk[11]/$this->shrin_k,false); 
+                  }
+                  else {
+                       $this->SetFontSize($chunk[11],false); 
+                  }
+               }
+               // FONTFAMILY
+             if(isset($chunk[4]) and $chunk[4] != '') { $font = $this->SetFont($chunk[4],$this->FontStyle,0,false); }
+               // B I U
+             if(isset($chunk[2]) and $chunk[2] != '') {
+                       $this->SetStyles($chunk[2]);
+             }
+
+               $lbw = $rbw = 0;        // Border widths
+               if(isset($chunk[16]) && !empty($chunk[16])) { //Border
+                       $this->spanborddet = $chunk[16];
+                       $lbw = $this->spanborddet['L']['w'];
+                       $rbw = $this->spanborddet['R']['w'];
+               }
+             if(isset($chunk[15])) {    // Word spacing
+                       $this->wSpacingCSS = $chunk[15]; 
+                       if ($this->wSpacingCSS && strtoupper($this->wSpacingCSS) != 'NORMAL') { 
+                               $this->minwSpacing = $this->ConvertSize($this->wSpacingCSS,$this->FontSize);
+                       }
+               }
+             if(isset($chunk[14])) {    // Letter spacing
+                       $this->lSpacingCSS = $chunk[14]; 
+                       if (($this->lSpacingCSS || $this->lSpacingCSS==='0') && strtoupper($this->lSpacingCSS) != 'NORMAL') {
+                               $this->fixedlSpacing = $this->ConvertSize($this->lSpacingCSS,$this->FontSize); 
+                       }
+               }
+             if(isset($chunk[13])) {    // Font Kerning
+                       $this->kerning = $chunk[13]; 
+               }
+
+               $words = explode(' ', $line);
+               foreach ($words as $k=>$word) {
+                       $word = trim($word);
+                       $wordwidth = $this->GetStringWidth($word);
+                       if ($k==0) { $wordwidth += $lbw; }
+                       if ($k==(count($words)-1)) { $wordwidth += $rbw; }
+
+                       //Warn user that maxwidth is insufficient
+                       if ($wordwidth > $maxwidth + 0.0001) {
+                               if ($wordwidth > $biggestword) { $biggestword = $wordwidth; }
+                               $toonarrow=true;
+                       }
+               }
+
+               // RESET FONT SIZE/STYLE
+               // RESETTING VALUES
+               //Now we must deactivate what we have used
+               if(isset($chunk[2]) and $chunk[2] != '') {
+                       $this->ResetStyles();
+               }
+               if(isset($chunk[4]) and $chunk[4] != '') {
+                       $this->SetFont($this->default_font,$this->FontStyle,0,false);
+               }
+               if(isset($chunk[11]) and $chunk[11] != '') { 
+                       $this->SetFontSize($this->default_font_size,false);
+               }
+               $this->spanborddet = array();
+               $this->kerning = false;
+               $this->lSpacingCSS = '';
+               $this->wSpacingCSS = '';
+               $this->fixedlSpacing = false;
+               $this->minwSpacing = 0;
+       }
+
+       //Return -(wordsize) if word is bigger than maxwidth 
+       // ADDED
+      if (($toonarrow) && ($this->table_error_report)) {
+               $this->Error("Word is too long to fit in table - ".$this->table_error_report_param); 
+       }
+       if ($toonarrow) return -$biggestword;
+       else return 1;
+}
+
+function shrinkTable(&$table,$k) {
+               $table['border_spacing_H'] /= $k;
+               $table['border_spacing_V'] /= $k;
+
+               $table['padding']['T'] /= $k;
+               $table['padding']['R'] /= $k;
+               $table['padding']['B'] /= $k;
+               $table['padding']['L'] /= $k;
+
+               $table['margin']['T'] /= $k;
+               $table['margin']['R'] /= $k;
+               $table['margin']['B'] /= $k;
+               $table['margin']['L'] /= $k;
+
+               $table['border_details']['T']['w'] /= $k;
+               $table['border_details']['R']['w'] /= $k;
+               $table['border_details']['B']['w'] /= $k;
+               $table['border_details']['L']['w'] /= $k;
+
+               if (isset($table['max_cell_border_width']['T'])) $table['max_cell_border_width']['T'] /= $k;
+               if (isset($table['max_cell_border_width']['R'])) $table['max_cell_border_width']['R'] /= $k;
+               if (isset($table['max_cell_border_width']['B'])) $table['max_cell_border_width']['B'] /= $k;
+               if (isset($table['max_cell_border_width']['L'])) $table['max_cell_border_width']['L'] /= $k;
+
+               if ($this->simpleTables){
+                       $table['simple']['border_details']['T']['w'] /= $k;
+                       $table['simple']['border_details']['R']['w'] /= $k;
+                       $table['simple']['border_details']['B']['w'] /= $k;
+                       $table['simple']['border_details']['L']['w'] /= $k;
+               }
+
+               $table['miw'] /= $k;
+               $table['maw'] /= $k;
+
+               if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
+
+               for($j = 0 ; $j < $table['nc'] ; $j++ ) { //columns
+
+                  $table['wc'][$j]['miw'] /= $k;
+                  $table['wc'][$j]['maw'] /= $k;
+
+                  // mPDF 5.6.13
+                  if (isset($table['decimal_align'][$j]['maxs0']) && $table['decimal_align'][$j]['maxs0']) { $table['decimal_align'][$j]['maxs0'] /= $k; }
+                  if (isset($table['decimal_align'][$j]['maxs1']) && $table['decimal_align'][$j]['maxs1']) { $table['decimal_align'][$j]['maxs1'] /= $k; }
+
+                  if (isset($table['wc'][$j]['absmiw']) && $table['wc'][$j]['absmiw'] ) $table['wc'][$j]['absmiw'] /= $k;
+
+                  for($i = 0 ; $i < $table['nr']; $i++ ) { //rows
+                       if ($this->cacheTables) {
+                               $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                       }
+                       else 
+                               $c = &$table['cells'][$i][$j];
+                       if (isset($c) && $c)  {
+                               if (!$this->simpleTables){
+                                 if ($this->packTableData) {
+                                       $cell = $this->_unpackCellBorder($c['borderbin'] );
+                                       $cell['border_details']['T']['w'] /= $k;
+                                       $cell['border_details']['R']['w'] /= $k;
+                                       $cell['border_details']['B']['w'] /= $k;
+                                       $cell['border_details']['L']['w'] /= $k;
+                                       $cell['border_details']['mbw']['TL'] /= $k;
+                                       $cell['border_details']['mbw']['TR'] /= $k;
+                                       $cell['border_details']['mbw']['BL'] /= $k;
+                                       $cell['border_details']['mbw']['BR'] /= $k;
+                                       $cell['border_details']['mbw']['LT'] /= $k;
+                                       $cell['border_details']['mbw']['LB'] /= $k;
+                                       $cell['border_details']['mbw']['RT'] /= $k;
+                                       $cell['border_details']['mbw']['RB'] /= $k;
+                                       $c['borderbin'] = $this->_packCellBorder($cell);
+                                 }
+                                 else {
+                                       $c['border_details']['T']['w'] /= $k;
+                                       $c['border_details']['R']['w'] /= $k;
+                                       $c['border_details']['B']['w'] /= $k;
+                                       $c['border_details']['L']['w'] /= $k;
+                                       $c['border_details']['mbw']['TL'] /= $k;
+                                       $c['border_details']['mbw']['TR'] /= $k;
+                                       $c['border_details']['mbw']['BL'] /= $k;
+                                       $c['border_details']['mbw']['BR'] /= $k;
+                                       $c['border_details']['mbw']['LT'] /= $k;
+                                       $c['border_details']['mbw']['LB'] /= $k;
+                                       $c['border_details']['mbw']['RT'] /= $k;
+                                       $c['border_details']['mbw']['RB'] /= $k;
+                                 }
+                               }
+                               $c['padding']['T'] /= $k;
+                               $c['padding']['R'] /= $k;
+                               $c['padding']['B'] /= $k;
+                               $c['padding']['L'] /= $k;
+                               $c['maxs'] /= $k;
+                               if (isset($c['w'])) { $c['w'] /= $k; }
+                               $c['s'] /= $k;
+                               $c['maw'] /= $k;
+                               $c['miw'] /= $k;
+                               if (isset($c['absmiw'])) $c['absmiw'] /= $k;
+                               if (isset($c['nestedmaw'])) $c['nestedmaw'] /= $k;
+                               if (isset($c['nestedmiw'])) $c['nestedmiw'] /= $k;
+                               if (isset($c['textbuffer'])) {
+                                       foreach($c['textbuffer'] AS $n=>$tb) {
+                                               if (!empty($tb[16])) { 
+                                                       $c['textbuffer'][$n][16]['T']['w'] /= $k;
+                                                       $c['textbuffer'][$n][16]['B']['w'] /= $k;
+                                                       $c['textbuffer'][$n][16]['L']['w'] /= $k;
+                                                       $c['textbuffer'][$n][16]['R']['w'] /= $k;
+                                               }
+                                       }
+                               }
+                               if ($this->cacheTables) {
+                                       $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]);
+                               }
+                               unset($c);
+                       }
+                  }//rows
+               }//columns
+               if ($this->cacheTables) { fclose($fh); }
+}
+
+function _cacheCell($c, $file, $mode="A", $fh=null, $offset=0) {       // mode = Append or (over)Write (needs offset and fh)
+       // Requires either $file OR $fh (file_handle)
+       if (!is_array($c) || !isset($c)) { return ''; }
+
+       if(isset($c['w'])) { $cw = $c['w']; } else { $cw = -1; }
+       if(isset($c['w0'])) { $cw0 = $c['w0']; } else { $cw0 = -1; }
+       if(isset($c['h0'])) { $ch0 = $c['h0']; } else { $ch0 = -1; }
+
+       $data = pack("n2d19A1A1n2sA32A128",
+               $c['colspan'],          /* n  (16 bit; 2 bytes) [pos 0] */
+               $c['rowspan'],          /* n (16 bit; 2 bytes) [pos 2] */
+               $c['s'],                        /* d NB machine-dependent size (64 bit; 8 bytes on test winOS) [pos 4] */
+               $c['maxs'],                     /* d NB machine-dependent size [pos 4 + 1*D] */
+               $c['nestedmaw'],                /* d NB machine-dependent size [pos 4 + 2*D] */
+               $c['nestedmiw'],                /* d NB machine-dependent size [pos 4 + 3*D] */
+               $c['padding']['L'],     /* d NB machine-dependent size [pos 4 + 4*D] */
+               $c['padding']['R'],     /* d NB machine-dependent size [pos 4 + 5*D] */
+               $c['padding']['T'],     /* d NB machine-dependent size [pos 4 + 6*D] */
+               $c['padding']['B'],     /* d NB machine-dependent size [pos 4 + 7*D] */
+               $c['dfs'],                      /* d NB machine-dependent size [pos 4 + 8*D] */
+               $cw,                            /* d NB machine-dependent size [pos 4 + 9*D] */
+               $c['h'],                        /* d NB machine-dependent size [pos 4 + 10*D] */
+               $c['absmiw'],           /* d NB machine-dependent size [pos 4 + 11*D] */
+               $c['maw'],                      /* d NB machine-dependent size [pos 4 + 12*D] */
+               $c['miw'],                      /* d NB machine-dependent size [pos 4 + 13*D] */
+               $c['mih'],                      /* d NB machine-dependent size [pos 4 + 14*D] */
+               $c['x0'],                       /* d NB machine-dependent size [pos 4 + 15*D] */
+               $cw0,                           /* d NB machine-dependent size [pos 4 + 16*D] */
+               $c['y0'],                       /* d NB machine-dependent size [pos 4 + 17*D] */
+               $ch0,                           /* d NB machine-dependent size [pos 4 + 18*D] */
+               $c['a'],                        /* A1 (1 byte) [pos 4 + 19*D] */
+               $c['va'],                       /* A1 (1 byte) [pos 5 + 19*D] */
+               $c['nowrap'],           /* 1 or blank  n (16 bit; 2 bytes) [pos 6 + 19*D] */
+               $c['wpercent'],         /* 0 - 100  n (16 bit; 2 bytes) [pos 8 + 19*D] */
+               $c['R'],                        /* 90 or -90 s (16 bit; 2 bytes) [pos 10 + 19*D] */
+               $c['bgcolor'],          /* A32 (32 bytes) [pos 12 + 19*D] */
+               $c['gradient']          /* A128 (128 bytes) [pos 44 + 19*D] */
+       );
+
+       if ($c['background-image']) { 
+               $data .= pack("n2d2A6A6n3dA4A128",
+               strlen($data),          /* offset in main data to start of bgimage data */
+               $c['background-image']['image_id'],     /* n */
+               $c['background-image']['orig_w'],       /* d NB machine-dependent size */
+               $c['background-image']['orig_h'],       /* d NB machine-dependent size */
+               $c['background-image']['x_pos'],        /* A6 calc size or "50%" */
+               $c['background-image']['y_pos'],        /* A6 calc size or "50%" */
+               $c['background-image']['x_repeat'],     /* n true or false*/
+               $c['background-image']['y_repeat'],     /* n true or false */
+               $c['background-image']['resize'],       /* n 0 - 6 */
+               $c['background-image']['opacity'],      /* d  0-1 */
+               $c['background-image']['itype'],        /* A4 jpg etc */
+               $c['background-image']['gradient']      /* A128 CSS string */
+               );
+       }
+       else $data .= pack("n",0);
+       $tb_offset = 2 + 186 + 2 + strlen($data);
+       $stb = serialize($c['textbuffer']).'        ';  // buffer to allow updating in reverseTableDir
+       $lentb = strlen($stb);
+       $data2 = pack("nA".$lentb, $lentb, $stb);
+
+       $tempfh = true; 
+       if ($mode=="W" && $offset) {
+               if (!$fh) { $fh = fopen($file, "r+b"); }        // Overwrite (but not truncate)
+               else $tempfh = false;
+               fseek($fh, $offset);
+       }
+       else {
+               $fh = fopen($file, "ab");       // APPEND
+       }
+       fwrite($fh, pack("n",$tb_offset));              // Offset to Text buffer 2 bytes
+       fwrite($fh, $c['borderbin']);                   // border details 186 bytes
+       fwrite($fh, pack("n",strlen($data)));   // Length of Main data
+       fwrite($fh, $data);                             // Main data
+       fwrite($fh, $data2);                            // Text buffer (starts with "n" length of text buffer)
+       if ($tempfh) fclose($fh);
+       return ($tb_offset + 2 + $lentb);
+}
+
+function _cacheUpdateTxB($c, $fh, $offset) {
+       fseek($fh, $offset);
+       $tb_offset = $this->read_short($fh);            // First entry = Offset to Text buffer  2 bytes
+       fseek($fh, ($tb_offset-2), SEEK_CUR);
+       $lentb = $this->read_short($fh);                        // First entry in textbuffer = Length of serialized textbuffer - do not update
+       $stb = serialize($c['textbuffer']);
+       fwrite($fh, pack("A".$lentb, $stb)); 
+}
+
+function _cacheUpdateBorder($c, $fh, $offset) {
+       $offset += 2;
+       fseek($fh, $offset);
+       fwrite($fh, $c['borderbin']); 
+}
+
+function _cacheUpdateMtx($c, $fh, $offset, $var) {
+       if ($var=='mih') { $offset += (2 + 186 + 2 + 4 + 14*_DSIZE); }
+       else if ($var=='x0') { $offset += (2 + 186 + 2 + 4 + 15*_DSIZE); }      // x0 and w0
+       else if ($var=='y0') { $offset += (2 + 186 + 2 + 4 + 17*_DSIZE); }      // y0 and h0
+       fseek($fh, $offset);
+       if ($var=='mih') { fwrite($fh, pack("d",$c['mih'])); }
+       else if ($var=='x0') { fwrite($fh, pack("d2",$c['x0'],$c['w0'])); }
+       else if ($var=='y0') { fwrite($fh, pack("d2",$c['y0'],$c['h0'])); }
+}
+
+function _uncacheCell($ptr, $file, $fh) {
+       // Requires either $file or $fh (file_handle)
+       if ($ptr==0) { return null; }
+       if (is_array($ptr)) { $this->Error("Probable cause - missing end tag &lt;/td&gt;. You may be able to change the configurable variable: allow_html_optional_endtags "); }
+       $tempfh = true; 
+       if (!$fh) { $fh = fopen($file, "rb"); }
+       else $tempfh = false;
+       fseek($fh, $ptr);
+       $c = array();
+       $tb_offset = $this->read_short($fh);            // First entry = Offset to Text buffer  2 bytes
+       $c['borderbin'] = fread($fh,186);                       // border details 186 bytes
+       $maindatalen = $this->read_short($fh);          // Length of Main data (2 bytes)
+       $str = fread($fh,$maindatalen );                        // Main data
+       $data = unpack("ncolspan/nrowspan/ds/dmaxs/dnmaw/dnmiw/dpl/dpr/dpt/dpb/ddfs/dw/dh/dabsmiw/dmaw/dmiw/dmih/dx0/dw0/dy0/dh0/A1a/A1va/nnowrap/nwpercent/sR/A32bgcol/A128grad/nbgimage", $str);
+
+               if ($data['colspan']>0) $c['colspan'] = $data['colspan'];               /* n */
+               if ($data['rowspan']>0) $c['rowspan'] = $data['rowspan'];               /* n */
+               $c['s'] = $data['s'];                           /* d NB machine-dependent size */
+               $c['maxs'] = $data['maxs'];                     /* d NB machine-dependent size */
+               if ($data['nmaw']>0) $c['nestedmaw'] = $data['nmaw'];           /* d NB machine-dependent size */
+               if ($data['nmiw']>0) $c['nestedmiw'] = $data['nmiw'];           /* d NB machine-dependent size */
+               $c['padding']['L'] = $data['pl'];               /* d NB machine-dependent size */
+               $c['padding']['R'] = $data['pr'];               /* d NB machine-dependent size */
+               $c['padding']['T'] = $data['pt'];               /* d NB machine-dependent size */
+               $c['padding']['B'] = $data['pb'];               /* d NB machine-dependent size */
+               $c['dfs'] = $data['dfs'];                       /* d NB machine-dependent size */
+               if ($data['w']>=0) $c['w'] = $data['w'];        /* d NB machine-dependent size */
+               if ($data['h']>0) $c['h'] = $data['h']; /* d NB machine-dependent size */
+               if ($data['absmiw']>0) $c['absmiw'] = $data['absmiw'];  /* d NB machine-dependent size */
+               if ($data['maw']>0) $c['maw'] = $data['maw'];   /* d NB machine-dependent size */
+               if ($data['miw']>0) $c['miw'] = $data['miw'];   /* d NB machine-dependent size */
+               if ($data['mih']>0) $c['mih'] = $data['mih'];   /* d NB machine-dependent size */
+               if ($data['w0']>=0) { $c['w0'] = $data['w0'];   /* d NB machine-dependent size */
+                       $c['x0'] = $data['x0']; }       /* d NB machine-dependent size */
+               if ($data['h0']>=0) { $c['h0'] = $data['h0'];   /* d NB machine-dependent size */
+                       $c['y0'] = $data['y0']; }       /* d NB machine-dependent size */
+               $c['a'] = trim($data['a']);                     /* A1 */
+               $c['va'] = trim($data['va']);                   /* A1 */
+               if ($data['nowrap']) $c['nowrap'] = $data['nowrap'];            /* 1 or blank  n */
+                       else $c['nowrap'] = false; 
+               if ($data['wpercent']>0) $c['wpercent'] = $data['wpercent'];    /* 0 - 100  n */
+               if ($data['R']<>0) $c['R'] = $data['R'];                                /* 90 or -90 s */
+                       else $c['R'] = false;
+               $c['bgcolor'] = trim($data['bgcol']);                   /* A32 */
+               if (trim($data['grad'])) 
+                       $c['gradient'] = trim($data['grad']);           /* A128 */
+                 else $c['gradient'] = false;
+               if ($data['bgimage']>0) {
+                       $bgidata = substr($str, ($data['bgimage']+2));
+                       $c['background-image'] = unpack("nimage_id/dorig_w/dorig_h/A6x_pos/A6y_pos/nx_repeat/ny_repeat/nresize/dopacity/A4itype/A128gradient", $bgidata);
+               }
+
+       $tblen = $this->read_short($fh);                                // Length of Textbuffer
+       $tbsp = fread($fh,$tblen);                                      // Textbuffer (serialised and packed)
+       $tbs = unpack("A".$tblen."textbuffer",$tbsp);           // Textbuffer unpacked
+       $c['textbuffer'] = unserialize(trim($tbs['textbuffer']));       // Textbuffer unserialized
+
+       if ($tempfh) { fclose($fh); }
+       return ($c);
+}
+function read_short(&$fh) {
+               $s = fread($fh,2);
+               $a = (ord($s[0])<<8) + ord($s[1]);
+               if ($a & (1 << 15) ) { 
+                       $a = ($a - (1 << 16)); 
+               }
+               return $a;
+}
+function _backupCacheFiles() {
+       foreach($this->table AS $lvl=>$t) {
+               foreach($this->table[$lvl] AS $c=>$t2) {
+///////////////////////////if (!file_exists($t2['cache'])) { echo $lvl; echo $c; print_r($this->table); exit; }
+                       copy( $t2['cache'], $t2['cache'].'.bak');
+               }
+       }
+}
+function _restoreCacheFiles() {
+       foreach($this->table AS $lvl=>$t) {
+               foreach($this->table[$lvl] AS $c=>$t2) {
+                       copy( $t2['cache'].'.bak', $t2['cache']);
+               }
+       }
+}
+
+
+function _packCellBorder($cell) {
+       if (!is_array($cell) || !isset($cell)) { return ''; }
+
+       if (!$this->packTableData) { return $cell; }
+       // = 186 bytes
+       $bindata = pack("nnda6A10nnda6A10nnda6A10nnda6A10nd9",
+       $cell['border'],
+       $cell['border_details']['R']['s'],
+       $cell['border_details']['R']['w'],
+       $cell['border_details']['R']['c'],
+       $cell['border_details']['R']['style'],
+       $cell['border_details']['R']['dom'],
+
+       $cell['border_details']['L']['s'],
+       $cell['border_details']['L']['w'],
+       $cell['border_details']['L']['c'],
+       $cell['border_details']['L']['style'],
+       $cell['border_details']['L']['dom'],
+
+       $cell['border_details']['T']['s'],
+       $cell['border_details']['T']['w'],
+       $cell['border_details']['T']['c'],
+       $cell['border_details']['T']['style'],
+       $cell['border_details']['T']['dom'],
+
+       $cell['border_details']['B']['s'],
+       $cell['border_details']['B']['w'],
+       $cell['border_details']['B']['c'],
+       $cell['border_details']['B']['style'],
+       $cell['border_details']['B']['dom'],
+
+       $cell['border_details']['mbw']['BL'],
+       $cell['border_details']['mbw']['BR'],
+       $cell['border_details']['mbw']['RT'],
+       $cell['border_details']['mbw']['RB'],
+       $cell['border_details']['mbw']['TL'],
+       $cell['border_details']['mbw']['TR'],
+       $cell['border_details']['mbw']['LT'],
+       $cell['border_details']['mbw']['LB'],
+
+       $cell['border_details']['cellposdom']
+       );
+       return $bindata;
+}
+
+
+
+function _getBorderWidths($bindata) {
+       if (!$bindata) { return array(0,0,0,0); }
+       if (!$this->packTableData) { return array($bindata['border_details']['T']['w'], $bindata['border_details']['R']['w'], $bindata['border_details']['B']['w'], $bindata['border_details']['L']['w']); }
+
+       $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata);
+       $cell['border_details']['R']['w'] = $bd['rw'];
+       $cell['border_details']['L']['w'] = $bd['lw'];
+       $cell['border_details']['T']['w'] = $bd['tw'];
+       $cell['border_details']['B']['w'] = $bd['bw'];
+       return array($bd['tw'], $bd['rw'], $bd['bw'], $bd['lw']);
+}
+
+
+function _unpackCellBorder($bindata) {
+       if (!$bindata) { return array(); }
+       if (!$this->packTableData) { return $bindata; }
+
+       $bd = unpack("nbord/nrs/drw/a6rca/A10rst/nrd/nls/dlw/a6lca/A10lst/nld/nts/dtw/a6tca/A10tst/ntd/nbs/dbw/a6bca/A10bst/nbd/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd", $bindata);
+
+       $cell['border'] = $bd['bord'];
+       $cell['border_details']['R']['s'] = $bd['rs'];
+       $cell['border_details']['R']['w'] = $bd['rw'];
+       $cell['border_details']['R']['c'] = $bd['rca'];
+       $cell['border_details']['R']['style'] = trim($bd['rst']);
+       $cell['border_details']['R']['dom'] = $bd['rd'];
+
+       $cell['border_details']['L']['s'] = $bd['ls'];
+       $cell['border_details']['L']['w'] = $bd['lw'];
+       $cell['border_details']['L']['c'] = $bd['lca'];
+       $cell['border_details']['L']['style'] = trim($bd['lst']);
+       $cell['border_details']['L']['dom'] = $bd['ld'];
+
+       $cell['border_details']['T']['s'] = $bd['ts'];
+       $cell['border_details']['T']['w'] = $bd['tw'];
+       $cell['border_details']['T']['c'] = $bd['tca'];
+       $cell['border_details']['T']['style'] = trim($bd['tst']);
+       $cell['border_details']['T']['dom'] = $bd['td'];
+
+       $cell['border_details']['B']['s'] = $bd['bs'];
+       $cell['border_details']['B']['w'] = $bd['bw'];
+       $cell['border_details']['B']['c'] = $bd['bca'];
+       $cell['border_details']['B']['style'] = trim($bd['bst']);
+       $cell['border_details']['B']['dom'] = $bd['bd'];
+
+       $cell['border_details']['mbw']['BL'] = $bd['mbl'];
+       $cell['border_details']['mbw']['BR'] = $bd['mbr'];
+       $cell['border_details']['mbw']['RT'] = $bd['mrt'];
+       $cell['border_details']['mbw']['RB'] = $bd['mrb'];
+       $cell['border_details']['mbw']['TL'] = $bd['mtl'];
+       $cell['border_details']['mbw']['TR'] = $bd['mtr'];
+       $cell['border_details']['mbw']['LT'] = $bd['mlt'];
+       $cell['border_details']['mbw']['LB'] = $bd['mlb'];
+       $cell['border_details']['cellposdom'] = $bd['cpd'];
+
+       return($cell);
+}
+
+
+////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
+////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
+////////////////////////TABLE CODE (from PDFTable)/////////////////////////////////////
+//table                Array of (w, h, bc, nr, wc, hr, cells)
+//w                    Width of table
+//h                    Height of table
+//nc                   Number column
+//nr                   Number row
+//hr                   List of height of each row
+//wc                   List of width of each column
+//cells                List of cells of each rows, cells[i][j] is a cell in the table
+function _tableColumnWidth(&$table,$firstpass=false){
+       $cs = &$table['cells'];
+
+       $nc = $table['nc'];
+       $nr = $table['nr'];
+       $listspan = array();
+
+       if ($table['borders_separate']) { 
+               $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] +  $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H'];
+       }
+       else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; }
+
+       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
+       else { $fh = null; }
+
+       // ADDED table['l'][colno] 
+       // = total length of text approx (using $c['s']) in that column - used to approximately distribute col widths in _tableWidth
+       //
+       for($j = 0 ; $j < $nc ; $j++ ) { //columns
+               $wc = &$table['wc'][$j];
+               for($i = 0 ; $i < $nr ; $i++ ) { //rows
+                       if (isset($cs[$i][$j]) && $cs[$i][$j])  {
+                               if ($this->cacheTables) {
+                                       $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                               }
+                               else 
+                                       $c = &$cs[$i][$j];
+
+                               if ($this->simpleTables){
+                                          if ($table['borders_separate']) {    // NB twice border width
+                                               $extrcw = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
+                                          }
+                                          else {
+                                               $extrcw = $table['simple']['border_details']['L']['w']/2 + $table['simple']['border_details']['R']['w']/2 + $c['padding']['L'] + $c['padding']['R'];
+                                          }
+                               }
+                               else {
+                                  if ($this->packTableData) {
+                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
+                                  }
+                                  else { 
+                                       $br = $c['border_details']['R']['w'];
+                                       $bl = $c['border_details']['L']['w'];
+                                  }
+                                  if ($table['borders_separate']) {    // NB twice border width
+                                       $extrcw = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
+                                  }
+                                  else {
+                                       $extrcw = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R'];
+                                  }
+                               }
+
+                               //$mw = $this->GetStringWidth('W') + $extrcw ;
+                               $mw = 0;
+                               // mPDF 5.6.13  Decimal point alignment
+                               if(substr($c['a'],0,1) == 'D') {
+                                       $mw = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'] + $extrcw ;
+                               }
+
+                               $c['absmiw'] = $mw;
+
+                               if (isset($c['R']) && $c['R']) {
+                                       $c['maw'] = $c['miw'] = $this->FontSize + $extrcw ;
+                                       if (isset($c['w'])) {   // If cell width is specified
+                                               if ($c['miw'] <$c['w']) { $c['miw'] = $c['w']; }
+                                       }
+                                       if (!isset($c['colspan'])) {
+                                               if ($wc['miw'] < $c['miw']) { $wc['miw']        = $c['miw']; }
+                                               if ($wc['maw'] < $c['maw']) { $wc['maw']        = $c['maw']; }
+
+                                               if ($firstpass) { 
+                                                  if (isset($table['l'][$j]) ) { 
+                                                       $table['l'][$j] += $c['miw'] ;
+                                                  }
+                                                  else {
+                                                       $table['l'][$j] = $c['miw'] ;
+                                                  }
+                                               }
+                                       }
+                                       if ($c['miw'] > $wc['miw']) { $wc['miw'] = $c['miw']; } 
+                                       if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; }
+                                       continue;
+                               }
+
+                               if ($firstpass) {
+                                       if (isset($c['s'])) { $c['s'] += $extrcw; }
+                                       if (isset($c['maxs'])) { $c['maxs'] += $extrcw; }
+                                       if (isset($c['nestedmiw'])) { $c['nestedmiw'] += $extrcw; }
+                                       if (isset($c['nestedmaw'])) { $c['nestedmaw'] += $extrcw; }
+                               }
+
+
+                               // If minimum width has already been set by a nested table or inline object (image/form), use it
+                               if (isset($c['nestedmiw']) && $this->table[1][1]['overflow']!='visible') { $miw = $c['nestedmiw']; }
+                               else  { $miw = $mw; }
+
+                               if (isset($c['maxs']) && $c['maxs'] != '') { $c['s'] = $c['maxs']; }
+
+                               // If maximum width has already been set by a nested table, use it
+                               if (isset($c['nestedmaw'])) { $c['maw'] = $c['nestedmaw']; }
+                               else $c['maw'] = $c['s'];
+
+                               if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) {
+                                       if (($c['maw'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { 
+                                               $c['maw'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw;
+                                       }
+                               }
+
+                               if (isset($c['nowrap']) && $c['nowrap']) { $miw = $c['maw']; }
+
+                               if (isset($c['wpercent']) && $firstpass) {
+                                       if (isset($c['colspan'])) {     // Not perfect - but % set on colspan is shared equally on cols.
+                                          for($k=0;$k<$c['colspan'];$k++) {
+                                               $table['wc'][($j+$k)]['wpercent'] = $c['wpercent'] / $c['colspan'];
+                                          }
+                                       }
+                                       else {
+                                               if (isset($table['w']) && $table['w']) { $c['w'] = $c['wpercent']/100 * ($table['w'] - $tblbw ); }
+                                               $wc['wpercent'] = $c['wpercent'];
+                                       }
+                               }
+
+                               if (isset($table['overflow']) && $table['overflow']=='visible' && $table['level']==1) {
+                                       if (($c['w'] + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { 
+                                               $c['w'] = $this->blk[$this->blklvl]['inner_width'] - $tblbw;
+                                       }
+                               }
+
+
+                               if (isset($c['w'])) {   // If cell width is specified
+                                       if ($miw<$c['w'])       { $c['miw'] = $c['w']; }        // Cell min width = that specified
+                                       if ($miw>$c['w'])       { $c['miw'] = $c['w'] = $miw; } // If width specified is less than minimum allowed (W) increase it
+                                       if (!isset($wc['w'])) { $wc['w'] = 1; }         // If the Col width is not specified = set it to 1
+
+                               }
+                               else { $c['miw'] = $miw; }      // If cell width not specified -> set Cell min width it to minimum allowed (W)
+
+                               if ($c['maw']  < $c['miw']) { $c['maw'] = $c['miw']; }  // If Cell max width < Minwidth - increase it to =
+                               if (!isset($c['colspan'])) {
+                                       if ($wc['miw'] < $c['miw']) { $wc['miw']        = $c['miw']; }  // Update Col Minimum and maximum widths
+                                       if ($wc['maw'] < $c['maw']) { $wc['maw']        = $c['maw']; }
+                                       if ((isset($wc['absmiw']) && $wc['absmiw'] < $c['absmiw']) || !isset($wc['absmiw'])) { $wc['absmiw'] = $c['absmiw']; }  // Update Col Minimum and maximum widths
+
+                                       if (isset($table['l'][$j]) ) { 
+                                               $table['l'][$j] += $c['s'];
+                                       }
+                                       else {
+                                               $table['l'][$j] = $c['s'];
+                                       }
+
+                               }
+                               else { 
+                                       $listspan[] = array($i,$j);
+                               }
+
+                               //Check if minimum width of the whole column is big enough for largest word to fit
+                               if (isset($c['textbuffer']) && (!isset($table['overflow']) || $table['overflow']!='wrap')) {    // mPDF 5.5.11
+                                       $minwidth = $this->TableCheckMinWidth($wc['miw']- $extrcw ,0,$c['textbuffer']);
+                               }
+                               else { $minwidth = 0; }
+                               if ($minwidth < 0) { 
+                                       //increase minimum width
+                                       if (!isset($c['colspan'])) {
+                                               $wc['miw'] = max($wc['miw'],((-$minwidth) + $extrcw) );  
+                                       }
+                                       else {
+                                               $c['miw'] = max($c['miw'],((-$minwidth) + $extrcw) );  
+                                       }
+                               }
+                               if (!isset($c['colspan'])) {
+                                       if ($wc['miw'] > $wc['maw']) { $wc['maw'] = $wc['miw']; } //update maximum width, if needed
+                               }
+                               if ($this->cacheTables) {
+                                       $this->_cacheCell($c, '', "W", $fh, $table['cells'][$i][$j]);
+                               }
+                       }
+                       unset($c);
+               }//rows
+       }//columns
+
+
+       // COLUMN SPANS
+       $wc = &$table['wc'];
+       foreach ($listspan as $span) {
+               list($i,$j) = $span;
+               if ($this->cacheTables) {
+                       $c = $this->_uncacheCell($cs[$i][$j], '', $fh);
+               }
+               else 
+                       $c = &$cs[$i][$j];
+               $lc = $j + $c['colspan'];
+               if ($lc > $nc) { $lc = $nc; }
+               $wis = $wisa = 0;
+               $was = $wasa = 0;
+               $list = array();
+               for($k=$j;$k<$lc;$k++) {
+                       if (isset($table['l'][$k]) ) { 
+                               if ($c['R']) { $table['l'][$k] += $c['miw']/$c['colspan'] ; }
+                               else { $table['l'][$k] += $c['s']/$c['colspan']; }
+                       }
+                       else {
+                               if ($c['R']) { $table['l'][$k] = $c['miw']/$c['colspan'] ; }
+                               else { $table['l'][$k] = $c['s']/$c['colspan']; }
+                       }
+                       $wis += $wc[$k]['miw'];
+                       $was += $wc[$k]['maw'];
+                       if (!isset($c['w'])) {
+                               $list[] = $k;
+                               $wisa += $wc[$k]['miw'];
+                               $wasa += $wc[$k]['maw'];
+                       }
+               }
+               if ($c['miw'] > $wis) {
+                       if (!$wis) {
+                               for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] = $c['miw']/$c['colspan']; }
+                       }
+                       else if (!count($list)) {
+                               $wi = $c['miw'] - $wis;
+                               for($k=$j;$k<$lc;$k++) { $wc[$k]['miw'] += ($wc[$k]['miw']/$wis)*$wi; }
+                       }
+                       else {
+                               $wi = $c['miw'] - $wis;
+                               foreach ($list as $k) { $wc[$k]['miw'] += ($wc[$k]['miw']/$wisa)*$wi; }
+                       }
+               }
+               if ($c['maw'] > $was) {
+                       if (!$wis) {
+                               for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] = $c['maw']/$c['colspan']; }
+                       }
+                       else if (!count($list)) {
+                               $wi = $c['maw'] - $was;
+                               for($k=$j;$k<$lc;$k++) { $wc[$k]['maw'] += ($wc[$k]['maw']/$was)*$wi; }
+                       }
+                       else {
+                               $wi = $c['maw'] - $was;
+                               foreach ($list as $k) { $wc[$k]['maw'] += ($wc[$k]['maw']/$wasa)*$wi; }
+                       }
+               }
+               unset($c);
+       }
+
+       if ($this->cacheTables) { fclose($fh); }
+
+       $checkminwidth = 0;
+       $checkmaxwidth = 0;
+       $totallength = 0;
+
+       for( $i = 0 ; $i < $nc ; $i++ ) {
+               $checkminwidth += $table['wc'][$i]['miw'];
+               $checkmaxwidth += $table['wc'][$i]['maw'];
+               $totallength += $table['l'][$i];
+       }
+
+       if (!isset($table['w']) && $firstpass) {
+          $sumpc = 0;
+          $notset = 0;
+          for( $i = 0 ; $i < $nc ; $i++ ) {
+                 if (isset($table['wc'][$i]['wpercent']) && $table['wc'][$i]['wpercent']) {
+                       $sumpc += $table['wc'][$i]['wpercent'];
+                 }
+                 else { $notset++; }
+          }
+
+          // If sum of widths as %  >= 100% and not all columns are set
+               // Set a nominal width of 1% for unset columns
+          if ($sumpc >= 100 && $notset) {
+               for( $i = 0 ; $i < $nc ; $i++ ) {
+                 if ((!isset($table['wc'][$i]['wpercent']) || !$table['wc'][$i]['wpercent']) &&
+                       (!isset($table['wc'][$i]['w']) || !$table['wc'][$i]['w'])) {
+                       $table['wc'][$i]['wpercent'] = 1;
+                 }
+               }
+          }
+
+
+          if ($sumpc) {        // if any percents are set
+               $sumnonpc = (100 - $sumpc);
+               $sumpc = max($sumpc,100);
+             $miwleft = 0;
+               $miwleftcount = 0;
+               $miwsurplusnonpc = 0;
+               $maxcalcmiw  = 0;
+             $mawleft = 0;
+               $mawleftcount = 0;
+               $mawsurplusnonpc = 0;
+               $maxcalcmaw  = 0;
+               for( $i = 0 ; $i < $nc ; $i++ ) {
+                 if (isset($table['wc'][$i]['wpercent'])) {
+                       $maxcalcmiw = max($maxcalcmiw, ($table['wc'][$i]['miw'] * $sumpc /$table['wc'][$i]['wpercent']) );
+                       $maxcalcmaw = max($maxcalcmaw, ($table['wc'][$i]['maw'] * $sumpc /$table['wc'][$i]['wpercent']) );
+                 }
+                 else {
+                       $miwleft += $table['wc'][$i]['miw'];
+                       $mawleft += $table['wc'][$i]['maw'];
+                       if (!isset($table['wc'][$i]['w'])) { $miwleftcount++; $mawleftcount++; }
+                 }
+               }
+               if ($miwleft && $sumnonpc > 0) { $miwnon = $miwleft * 100 / $sumnonpc; }
+               if ($mawleft && $sumnonpc > 0) { $mawnon = $mawleft * 100 / $sumnonpc; }
+               if (($miwnon > $checkminwidth || $maxcalcmiw > $checkminwidth) && $this->keep_table_proportions) {
+                       if ($miwnon > $maxcalcmiw) { 
+                               $miwsurplusnonpc = round((($miwnon * $sumnonpc / 100) - $miwleft),3); 
+                               $checkminwidth = $miwnon; 
+                       }
+                       else { $checkminwidth = $maxcalcmiw; }
+                       for( $i = 0 ; $i < $nc ; $i++ ) {
+                         if (isset($table['wc'][$i]['wpercent'])) {
+                               $newmiw = $checkminwidth * $table['wc'][$i]['wpercent']/100;
+                               if ($table['wc'][$i]['miw'] < $newmiw) {
+                                 $table['wc'][$i]['miw'] = $newmiw;
+                               }
+                               $table['wc'][$i]['w'] = 1;
+                         }
+                         else if ($miwsurplusnonpc && !$table['wc'][$i]['w']) {
+                               $table['wc'][$i]['miw'] +=  $miwsurplusnonpc / $miwleftcount;
+                         }
+                       }
+               }
+               if (($mawnon > $checkmaxwidth || $maxcalcmaw > $checkmaxwidth )) {
+                       if ($mawnon > $maxcalcmaw) { 
+                               $mawsurplusnonpc = round((($mawnon * $sumnonpc / 100) - $mawleft),3); 
+                               $checkmaxwidth = $mawnon; 
+                       }
+                       else { $checkmaxwidth = $maxcalcmaw; }
+                       for( $i = 0 ; $i < $nc ; $i++ ) {
+                         if (isset($table['wc'][$i]['wpercent'])) {
+                               $newmaw = $checkmaxwidth * $table['wc'][$i]['wpercent']/100;
+                               if ($table['wc'][$i]['maw'] < $newmaw) {
+                                 $table['wc'][$i]['maw'] = $newmaw;
+                               }
+                               $table['wc'][$i]['w'] = 1;
+                         }
+                         else if ($mawsurplusnonpc && !$table['wc'][$i]['w']) {
+                               $table['wc'][$i]['maw'] +=  $mawsurplusnonpc / $mawleftcount;
+                         }
+                         if ($table['wc'][$i]['maw'] < $table['wc'][$i]['miw']) { $table['wc'][$i]['maw'] = $table['wc'][$i]['miw']; }
+                       }
+               }
+               if ($checkminwidth > $checkmaxwidth) { $checkmaxwidth = $checkminwidth; }
+          }
+       }
+
+       if (isset($table['wpercent']) && $table['wpercent']) {
+               $checkminwidth *= (100 / $table['wpercent']);
+               $checkmaxwidth *= (100 / $table['wpercent']);
+       }
+
+
+       $checkminwidth += $tblbw ;
+       $checkmaxwidth += $tblbw ;
+
+       // Table['miw'] set by percent in first pass may be larger than sum of column miw
+       if ((isset($table['miw']) && $checkminwidth > $table['miw']) || !isset($table['miw'])) {  $table['miw'] = $checkminwidth; }
+       if ((isset($table['maw']) && $checkmaxwidth > $table['maw']) || !isset($table['maw'])) { $table['maw'] = $checkmaxwidth; }
+       $table['tl'] = $totallength ;
+
+
+       if (!$this->tableCJK) {
+               if ($this->table_rotate) {
+                       $mxw = $this->tbrot_maxw;
+               }
+               else {
+                       $mxw = $this->blk[$this->blklvl]['inner_width'];
+               }
+               if(!isset($table['overflow'])) { $table['overflow'] = null; }
+               if ($table['overflow']=='visible') { 
+                       return array(0,0); 
+               }
+               else if ($table['overflow']=='hidden' && !$this->table_rotate && !$this->ColActive && $checkminwidth > $mxw) {
+                       $table['w'] = $table['miw']; 
+                       return array(0,0);
+               }
+               else if ($table['overflow']=='wrap') { return array(0,0); }
+
+               if (isset($table['w']) && $table['w'] ) {
+                       if ($table['w'] >= $checkminwidth && $table['w'] <= $mxw) { $table['maw'] = $mxw = $table['w']; }
+                       else if ($table['w'] >= $checkminwidth && $table['w'] > $mxw && $this->keep_table_proportions) { $checkminwidth = $table['w']; }
+                       else {  
+                               unset($table['w']); 
+                       }
+               }
+               $ratio = $checkminwidth/$mxw;
+               if ($checkminwidth > $mxw) { return array(($ratio +0.001),$checkminwidth); }    // 0.001 to allow for rounded numbers when resizing
+       }
+       unset($cs); 
+       return array(0,0);
+}
+
+
+
+function _tableWidth(&$table){
+       $widthcols = &$table['wc'];
+       $numcols = $table['nc'];
+       $tablewidth = 0;
+       if ($table['borders_separate']) { 
+               $tblbw = $table['border_details']['L']['w'] + $table['border_details']['R']['w'] + $table['margin']['L'] + $table['margin']['R'] +  $table['padding']['L'] + $table['padding']['R'] + $table['border_spacing_H'];
+       }
+       else { $tblbw = $table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2 + $table['margin']['L'] + $table['margin']['R']; }
+
+       if ($table['level']>1 && isset($table['w'])) { 
+               if (isset($table['wpercent']) && $table['wpercent']) { 
+                       $table['w'] = $temppgwidth = (($table['w']-$tblbw) * $table['wpercent'] / 100) + $tblbw ;  
+               }
+               else { 
+                       $temppgwidth = $table['w'] ;  
+               }
+       }
+       else if ($this->table_rotate) {
+               $temppgwidth = $this->tbrot_maxw;
+               // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin)
+               // then allow for this
+               $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'];
+               if ($enddiv/$temppgwidth <0.05) { $temppgwidth -= $enddiv; }
+       }
+       else {
+               if (isset($table['w']) && $table['w']< $this->blk[$this->blklvl]['inner_width']) { 
+                       $notfullwidth = 1;
+                       $temppgwidth = $table['w'] ;  
+               }
+               else if ($table['overflow']=='visible' && $table['level'] ==1) {
+                       $temppgwidth = null;
+               }
+               else if ($table['overflow']=='hidden' && !$this->ColActive && isset($table['w']) && $table['w'] > $this->blk[$this->blklvl]['inner_width'] && $table['w']==$table['miw']) {
+                       //$temppgwidth = $this->blk[$this->blklvl]['inner_width'];  
+                       $temppgwidth = $table['w'] ;
+               }
+               else { $temppgwidth = $this->blk[$this->blklvl]['inner_width']; }
+       }
+
+
+       $totaltextlength = 0;   // Added - to sum $table['l'][colno]
+       $totalatextlength = 0;  // Added - to sum $table['l'][colno] for those columns where width not set
+       $percentages_set = 0; 
+       for ( $i = 0 ; $i < $numcols ; $i++ ) {
+               if (isset($widthcols[$i]['wpercent']))  { $tablewidth += $widthcols[$i]['maw']; $percentages_set = 1; }
+               else if (isset($widthcols[$i]['w']))  { $tablewidth += $widthcols[$i]['miw']; }
+               else { $tablewidth += $widthcols[$i]['maw']; }
+               $totaltextlength += $table['l'][$i];
+       }
+       if (!$totaltextlength) { $totaltextlength =1; }
+       $tablewidth += $tblbw;  // Outer half of table borders
+
+       if ($tablewidth > $temppgwidth) { 
+               $table['w'] = $temppgwidth; 
+       }
+       // if any widths set as percentages and max width fits < page width
+       else if ($tablewidth < $temppgwidth && !isset($table['w']) && $percentages_set) {
+               $table['w'] = $table['maw'];
+       }
+       // if table width is set and is > allowed width
+       if (isset($table['w']) && $table['w'] > $temppgwidth) { $table['w'] = $temppgwidth; }
+       // IF the table width is now set - Need to distribute columns widths
+       if (isset($table['w'])) {
+               $wis = $wisa = 0;
+               $list = array();
+               $notsetlist = array();
+               for( $i = 0 ; $i < $numcols ; $i++ ) {
+                       $wis += $widthcols[$i]['miw'];
+                       if (!isset($widthcols[$i]['w']) || ($widthcols[$i]['w'] && $table['w'] > $temppgwidth && !$this->keep_table_proportions && !$notfullwidth )){ 
+                               $list[] = $i;  
+                               $wisa += $widthcols[$i]['miw'];
+                               $totalatextlength += $table['l'][$i];
+                       }
+               }
+               if (!$totalatextlength) { $totalatextlength =1; }
+
+               // Allocate spare (more than col's minimum width) across the cols according to their approx total text length
+               // Do it by setting minimum width here
+               if ($table['w'] > $wis + $tblbw) {
+                       // First set any cell widths set as percentages
+                       if ($table['w'] < $temppgwidth || $this->keep_table_proportions) {
+                               for($k=0;$k<$numcols;$k++) {
+                                       if (isset($widthcols[$k]['wpercent'])) {
+                                               $curr = $widthcols[$k]['miw'];
+                                               $widthcols[$k]['miw'] = ($table['w']-$tblbw) * $widthcols[$k]['wpercent']/100;
+                                               $wis += $widthcols[$k]['miw'] - $curr;
+                                               $wisa += $widthcols[$k]['miw'] - $curr;
+                                       }
+                               }
+                       }
+                       // Now allocate surplus up to maximum width of each column
+                       $surplus = 0;  $ttl = 0;        // number of surplus columns
+                       if (!count($list)) {
+                               $wi = ($table['w']-($wis + $tblbw));    //      i.e. extra space to distribute
+                               for($k=0;$k<$numcols;$k++) {
+                                       $spareratio = ($table['l'][$k] / $totaltextlength); //  gives ratio to divide up free space
+                                       // Don't allocate more than Maximum required width - save rest in surplus
+                                       if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) {
+                                               $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']);
+                                               $widthcols[$k]['miw'] = $widthcols[$k]['maw'];
+                                       }
+                                       else { 
+                                               $notsetlist[] = $k;  
+                                               $ttl += $table['l'][$k];
+                                               $widthcols[$k]['miw'] += ($wi * $spareratio); 
+                                       }
+
+                               }
+                       }
+                       else {
+                               $wi = ($table['w'] - ($wis + $tblbw));  //      i.e. extra space to distribute
+                               foreach ($list as $k) {
+                                       $spareratio = ($table['l'][$k] / $totalatextlength); //  gives ratio to divide up free space
+                                       // Don't allocate more than Maximum required width - save rest in surplus
+                                       if ($widthcols[$k]['miw'] + ($wi * $spareratio) > $widthcols[$k]['maw']) {
+                                               $surplus += ($wi * $spareratio) - ($widthcols[$k]['maw']-$widthcols[$k]['miw']);
+                                               $widthcols[$k]['miw'] = $widthcols[$k]['maw'];
+                                       }
+                                       else { 
+                                               $notsetlist[] = $k;  
+                                               $ttl += $table['l'][$k];
+                                               $widthcols[$k]['miw'] += ($wi * $spareratio); 
+                                       }
+                               }
+                       }
+                       // If surplus still left over apportion it across columns
+                       if ($surplus) { 
+                          // if some are set only add to remaining - otherwise add to all of them
+                          if (count($notsetlist) && count($notsetlist) < $numcols) {
+                               foreach ($notsetlist AS $i) {
+                                       if ($ttl) $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl ;
+                               }
+                          }
+                          // If some widths are defined, and others have been added up to their maxmum
+                          else if (count($list) && count($list) < $numcols) {
+                               foreach ($list AS $i) {
+                                       $widthcols[$i]['miw'] += $surplus / count($list) ;
+                               }
+                          }
+                          else if ($numcols) { // If all columns
+                               $ttl = array_sum($table['l']);
+                               for ($i=0;$i<$numcols;$i++) {
+                                       $widthcols[$i]['miw'] += $surplus * $table['l'][$i] / $ttl;
+                               }
+                          }
+                       }
+
+               }
+
+               // This sets the columns all to minimum width (which has been increased above if appropriate)
+               for ($i=0;$i<$numcols;$i++) {
+                       $widthcols[$i] = $widthcols[$i]['miw'];
+               }
+
+               // TABLE NOT WIDE ENOUGH EVEN FOR MINIMUM CONTENT WIDTH
+               // If sum of column widths set are too wide for table
+               $checktablewidth = 0;
+               for ( $i = 0 ; $i < $numcols ; $i++ ) {
+                       $checktablewidth += $widthcols[$i];
+               }
+               if ($checktablewidth > ($temppgwidth + 0.001 - $tblbw)) { 
+                  $usedup = 0; $numleft = 0;
+                  for ($i=0;$i<$numcols;$i++) {
+                       if ((isset($widthcols[$i]) && $widthcols[$i] > (($temppgwidth - $tblbw) / $numcols)) && (!isset($widthcols[$i]['w']))) { 
+                               $numleft++; 
+                               unset($widthcols[$i]); 
+                       }
+                       else { $usedup += $widthcols[$i]; }
+                  }
+                  for ($i=0;$i<$numcols;$i++) {
+                       if (!isset($widthcols[$i]) || !$widthcols[$i]) { 
+                               $widthcols[$i] = ((($temppgwidth - $tblbw) - $usedup)/ ($numleft)); 
+                       }
+                  }
+               }
+
+       }
+       else { //table has no width defined
+               $table['w'] = $tablewidth;  
+               for ( $i = 0 ; $i < $numcols ; $i++) {
+                       if (isset($widthcols[$i]['wpercent']) && $this->keep_table_proportions)  { $colwidth = $widthcols[$i]['maw']; }
+                       else if (isset($widthcols[$i]['w']))  { $colwidth = $widthcols[$i]['miw']; }
+                       else { $colwidth = $widthcols[$i]['maw']; }
+                       unset($widthcols[$i]);
+                       $widthcols[$i] = $colwidth;
+               }
+       }
+
+       if ($table['overflow']=='visible' && $table['level'] ==1) {
+               if ($tablewidth > $this->blk[$this->blklvl]['inner_width']) {
+                 if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
+                 else { $fh = null; }
+                 for ($j = 0 ; $j < $numcols; $j++) { //columns
+                       for ($i = 0 ; $i < $table['nr']; $i++) { //rows
+                               if (isset($table['cells'][$i][$j]) && $table['cells'][$i][$j]) {
+                                 if ($this->cacheTables) {
+                                       $cc = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                                       $colspan = $cc['colspan'];
+                                 }
+                                 else 
+                                       $colspan = $table['cells'][$i][$j]['colspan'];
+                                 if ($colspan > 1) {
+                                       $w = 0;
+                                       for ($c = $j; $c < ($j + $colspan); $c++) {
+                                               $w += $widthcols[$c];
+                                       }
+                                       if ($w > $this->blk[$this->blklvl]['inner_width']) {
+                                               $diff = $w - ($this->blk[$this->blklvl]['inner_width'] - $tblbw);
+                                               for ($c = $j; $c < ($j + $colspan); $c++) {
+                                                       $widthcols[$c] -= $diff * ($widthcols[$c]/$w);
+                                               }
+                                               $table['w'] -= $diff;
+                                               $table['csp'][$j] = $w - $diff;
+                                       }
+                                 }
+                               }
+
+                       }
+                 }
+                 if ($this->cacheTables) { fclose($fh); }
+               }
+               $pgNo = 0;
+               $currWc = 0;
+               for ($i = 0 ; $i < $numcols; $i++) { //columns
+                       if (isset($table['csp'][$i])) { 
+                               $w = $table['csp'][$i]; 
+                               unset($table['csp'][$i]);
+                       }
+                       else { $w = $widthcols[$i]; }
+                       if (($currWc + $w + $tblbw) > $this->blk[$this->blklvl]['inner_width']) { 
+                               $pgNo++;
+                               $currWc = $widthcols[$i] ;
+                       }
+                       else { $currWc += $widthcols[$i] ; }
+                       $table['colPg'][$i] = $pgNo;
+               }
+       }
+}
+
+
+
+function _tableHeight(&$table){
+       $level = $table['level'];
+       $levelid = $table['levelid'];
+       $cells = &$table['cells'];
+       $numcols = $table['nc'];
+       $numrows = $table['nr'];
+       $listspan = array();
+       $checkmaxheight = 0;
+       $headerrowheight = 0;
+       $checkmaxheightplus = 0;
+       $headerrowheightplus = 0;
+       $firstrowheight = 0;
+
+       $footerrowheight = 0;
+       $footerrowheightplus = 0;
+       if ($this->table_rotate) {
+               $temppgheight = $this->tbrot_maxh;
+               $remainingpage = $this->tbrot_maxh;
+       }
+       else {
+               $temppgheight = ($this->h - $this->bMargin - $this->tMargin) - $this->kwt_height;
+               $remainingpage = ($this->h - $this->bMargin - $this->y) - $this->kwt_height;
+
+               // If it is less than 1/20th of the remaining page height to finish the DIV (i.e. DIV padding + table bottom margin)
+               // then allow for this
+               $enddiv = $this->blk[$this->blklvl]['padding_bottom'] + $this->blk[$this->blklvl]['border_bottom']['w'] + $table['margin']['B'];
+               if ($remainingpage > $enddiv && $enddiv/$remainingpage <0.05) { $remainingpage -= $enddiv; }
+               else if ($remainingpage == 0) { $remainingpage = 0.001; }
+               if ($temppgheight > $enddiv && $enddiv/$temppgheight <0.05) { $temppgheight -= $enddiv; }
+               else if ($temppgheight == 0) { $temppgheight = 0.001; }
+       }
+       if ($remainingpage < 0) { $remainingpage = 0.001; }     // mPDF 5.6.64
+       if ($temppgheight < 0) { $temppgheight = 0.001; }       // mPDF 5.6.64
+
+       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
+       else { $fh = null; }
+
+       for( $i = 0 ; $i < $numrows ; $i++ ) { //rows
+               $heightrow = &$table['hr'][$i];
+               for( $j = 0 ; $j < $numcols ; $j++ ) { //columns
+                       if (isset($cells[$i][$j]) && $cells[$i][$j]) {
+                               if ($this->cacheTables) {
+                                       $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                               }
+                               else 
+                                       $c = &$cells[$i][$j];
+
+                               if ($this->simpleTables){
+                                  if ($table['borders_separate']) {    // NB twice border width
+                                       $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w']) + ($c['padding']['L']+$c['padding']['R'])+$table['border_spacing_H'];
+                                       $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w']) + ($c['padding']['T']+$c['padding']['B'])+$table['border_spacing_V'];
+                                  }
+                                  else {
+                                       $extraWLR = ($table['simple']['border_details']['L']['w']+$table['simple']['border_details']['R']['w'])/2 + ($c['padding']['L']+$c['padding']['R']);
+                                       $extrh = ($table['simple']['border_details']['T']['w']+$table['simple']['border_details']['B']['w'])/2 + ($c['padding']['T']+$c['padding']['B']);
+                                  }
+                               }
+                               else  {
+                                  if ($this->packTableData) {
+                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
+                                  }
+                                  else { 
+                                       $bt = $c['border_details']['T']['w'];
+                                       $bb = $c['border_details']['B']['w'];
+                                       $br = $c['border_details']['R']['w'];
+                                       $bl = $c['border_details']['L']['w'];
+                                  }
+                                  if ($table['borders_separate']) {    // NB twice border width
+                                       $extraWLR = $bl + $br + $c['padding']['L'] + $c['padding']['R'] + $table['border_spacing_H'];
+                                       $extrh = $bt + $bb + $c['padding']['T'] + $c['padding']['B'] + $table['border_spacing_V'];
+                                  }
+                                  else {
+                                       $extraWLR = $bl/2 + $br/2 + $c['padding']['L'] + $c['padding']['R'];
+                                       $extrh = $bt/2 + $bb/2 + $c['padding']['T']+$c['padding']['B'];
+                                  }
+                               }
+
+                               if ($table['overflow']=='visible' && $level==1) 
+                                       list($x,$cw) = $this->_splitTableGetWidth($table, $i,$j, $fh);
+                               else 
+                                       list($x,$cw) = $this->_tableGetWidth($table, $i,$j, $fh);
+
+                               // Get CELL HEIGHT 
+                               // ++ extra parameter forces wrap to break word
+                               if ($c['R'] && isset($c['textbuffer'])) {       // mPDF 5.4.01
+                                       $str = '';
+                                       foreach($c['textbuffer'] AS $t) { $str .= $t[0].' '; }
+                                       $str = trim($str);
+                                       $s_fs = $this->FontSizePt;
+                                       $s_f = $this->FontFamily;
+                                       $s_st = $this->FontStyle;
+                                       $this->SetFont($c['textbuffer'][0][4],$c['textbuffer'][0][2],$c['textbuffer'][0][11] / $this->shrin_k,true,true);
+                               $tempch = $this->GetStringWidth($str);
+                                       if ($c['R'] >= 45 && $c['R'] < 90) {
+                                               $tempch = ((sin(deg2rad($c['R']))) * $tempch ) + ((sin(deg2rad($c['R']))) * (($c['textbuffer'][0][11]/_MPDFK) / $this->shrin_k));
+                                       } 
+                                       $this->SetFont($s_f,$s_st,$s_fs,true,true);
+                                       $ch = ($tempch ) + $extrh ;  
+                               }
+                               else {
+                                  if (isset($c['textbuffer'])) {
+                                       $tempch = $this->TableWordWrap(($cw-$extraWLR),1,$c['textbuffer'], $c['dfs']);
+                                  }
+                                  else { $tempch = 0; }
+
+                                       // Added cellpadding top and bottom. (Lineheight already adjusted to table_lineheight)
+                                       $ch = $tempch + $extrh ;
+                               }
+                               //If height is defined and it is bigger than calculated $ch then update values
+                               if (isset($c['h']) && $c['h'] > $ch) {
+                                       $c['mih'] = $ch; //in order to keep valign working
+                                       $ch = $c['h'];
+                               }
+                               else $c['mih'] = $ch;
+                               if ($this->cacheTables) {
+                                       $this->_cacheUpdateMtx($c, $fh, $table['cells'][$i][$j], 'mih');
+                               }
+                               if (isset($c['rowspan']))       $listspan[] = array($i,$j);
+                               elseif ($heightrow < $ch) $heightrow = $ch;
+
+                               // this is the extra used in _tableWrite to determine whether to trigger a page change
+                               if ($table['borders_separate']) { 
+                                 if ($i == ($numrows-1) || (isset($c['rowspan']) && ($i+$c['rowspan']) == ($numrows)) ) {
+                                       $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
+                                 }
+                                 else {
+                                       $extra = $table['border_spacing_V']/2; 
+                                 }
+                               }
+                               else { 
+                                       if (!$this->simpleTables){
+                                               $extra = $bb/2; 
+                                       }
+                                       else if ($this->simpleTables){
+                                               $extra = $table['simple']['border_details']['B']['w'] /2; 
+                                       }
+                               }
+                               if (isset($table['is_thead'][$i]) && $table['is_thead'][$i]) {
+                                  if ($j==0) {
+                                       $headerrowheight += $ch;
+                                       $headerrowheightplus += $ch+$extra;
+                                  }
+                               }
+                               else if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) {
+                                  if ($j==0) {
+                                       $footerrowheight += $ch;
+                                       $footerrowheightplus += $ch+$extra;
+                                  }
+                               }
+                               else {
+                                       $checkmaxheight = max($checkmaxheight,$ch);
+                                       $checkmaxheightplus = max($checkmaxheightplus,$ch+$extra);
+                               }
+                               if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($ch,$firstrowheight); }
+                               unset($c);
+                       }
+               }//end of columns
+       }//end of rows
+
+       $heightrow = &$table['hr'];
+       foreach ($listspan as $span) {
+               list($i,$j) = $span;
+               if ($this->cacheTables) {
+                       $c = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+               }
+               else 
+                       $c = &$cells[$i][$j];
+               $lr = $i + $c['rowspan'];
+               if ($lr > $numrows) $lr = $numrows;
+               $hs = $hsa = 0;
+               $list = array();
+               for($k=$i;$k<$lr;$k++) {
+                       $hs += $heightrow[$k];
+                       if (!isset($c['h'])) {
+                               $list[] = $k;
+                               $hsa += $heightrow[$k];
+                       }
+               }
+
+               if ($table['borders_separate']) { 
+                 if ($i == ($numrows-1) || ($i+$c['rowspan']) == ($numrows) ) {
+                       $extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
+                 }
+                 else {
+                       $extra = $table['border_spacing_V']/2; 
+                 }
+               }
+               else { 
+                       if (!$this->simpleTables){
+                               if ($this->packTableData) {
+                                       list($bt,$br,$bb,$bl) = $this->_getBorderWidths($c['borderbin']);
+                               }
+                               else { 
+                                       $bb = $c['border_details']['B']['w'];
+                               }
+                               $extra = $bb/2; 
+                       }
+                       else if ($this->simpleTables){
+                               $extra = $table['simple']['border_details']['B']['w'] /2; 
+                       }
+               }
+               if (!empty($table['is_thead'][$i])) {
+                       $headerrowheight = max($headerrowheight,$hs);
+                       $headerrowheightplus = max($headerrowheightplus,$hs+$extra);
+               }
+               else if (!empty($table['is_tfoot'][$i])) {
+                       $footerrowheight = max($footerrowheight,$hs);
+                       $footerrowheightplus = max($footerrowheightplus,$hs+$extra);
+               }
+               else {
+                       $checkmaxheight = max($checkmaxheight,$hs);
+                       $checkmaxheightplus = max($checkmaxheightplus,$hs+$extra);
+               }
+               if ($this->tableLevel==1 && $i == $table['headernrows']) { $firstrowheight = max($hs,$firstrowheight); }
+
+               if ($c['mih'] > $hs) {
+                       if (!$hs) {
+                               for($k=$i;$k<$lr;$k++) $heightrow[$k] = $c['mih']/$c['rowspan'];
+                       }
+                       elseif (!count($list)) {
+                               $hi = $c['mih'] - $hs;
+                               for($k=$i;$k<$lr;$k++) $heightrow[$k] += ($heightrow[$k]/$hs)*$hi;
+                       }
+                       else {
+                               $hi = $c['mih'] - $hsa;
+                               foreach ($list as $k) $heightrow[$k] += ($heightrow[$k]/$hsa)*$hi;
+                       }
+               }
+               unset($c);
+
+               // If rowspans overlap so that one or more rows do not have a height set...
+               // i.e. for one or more rows, the only cells (explicit) in that row have rowspan>1
+               // so heightrow is still == 0
+               if ($heightrow[$i]==0) {
+                       // Get row extent to analyse above and below
+                       $top = $i;
+                       foreach ($listspan as $checkspan) {
+                               list($cki,$ckj) = $checkspan;
+                               if ($this->cacheTables) {
+                                       $c = $this->_uncacheCell($table['cells'][$cki][$ckj], '', $fh);
+                               }
+                               else 
+                                       $c = &$cells[$cki][$ckj];
+                               if (isset($c['rowspan']) && $c['rowspan']>1) {
+                                       if (($cki + $c['rowspan']-1) >= $i) { $top = min($top, $cki); }
+                               }
+                       }
+                       $bottom = $i + $c['rowspan']-1;
+                       // Check for overconstrained conditions
+                       for ($k=$top; $k<=$bottom; $k++) {
+                               // if ['hr'] for any of the others is also 0, then abort (too complicated)
+                               if ($k != $i && $heightrow[$k]==0) { break(1); }
+                               // check again that top and bottom are not crossed by rowspans - or abort (too complicated)
+                               if ($k==$top) {
+                                       // ???? take account of colspan as well???
+                                       for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
+                                               if (!isset($cells[$k][$m]) || $cells[$k][$m]==0) {
+                                                       break(2); 
+                                               }
+                                       }
+                               }
+                               else if ($k==$bottom) {
+                                       // ???? take account of colspan as well???
+                                       for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
+                                               if ($this->cacheTables) {
+                                                       $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh);
+                                               }
+                                               else 
+                                                       $c = &$cells[$k][$m];
+                                               if (isset($c['rowspan']) && $c['rowspan']>1) {
+                                                       break(2); 
+                                               }
+                                       }
+                               }
+                       }
+                       // By columns add up col height using ['h'] if set or ['mih'] if not
+                       // Intentionally do not substract border-spacing
+                       $colH = array();
+                       $extH = 0;
+                       $newhr = array();
+                       for( $m = 0 ; $m < $numcols ; $m++ ) { //columns
+                          for ($k=$top; $k<=$bottom; $k++) {
+                               if (isset($cells[$k][$m]) && $cells[$k][$m]!=0) { 
+                                       if ($this->cacheTables) {
+                                               $c = $this->_uncacheCell($table['cells'][$k][$m], '', $fh);
+                                       }
+                                       else 
+                                               $c = &$cells[$k][$m];
+                                       if (isset($c['h']) && $c['h']) { 
+                                               $useh = $c['h'];
+                                       }
+                                       // ???? take account of colspan as well???
+                                       else { 
+                                               $useh = $c['mih']; 
+                                       }
+                                       $colH[$m] += $useh; 
+                                       if (!isset($c['rowspan']) || $c['rowspan']<2) { $newhr[$k] = max($newhr[$k], $useh); }
+                               }
+                          }
+                          $extH = max($tabH, $colH[$m]);
+                       }
+                       $newhr[$i] = $extH - array_sum($newhr);
+                       for ($k=$top; $k<=$bottom; $k++) { $heightrow[$k] = $newhr[$k]; }
+               }
+
+
+               unset($c);
+       }
+
+       $table['h'] = array_sum($heightrow);
+       unset($heightrow);
+
+       if ($this->cacheTables) { fclose($fh); }
+
+       if ($table['borders_separate']) { 
+               $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['border_details']['T']['w'] + $table['border_details']['B']['w'] + $table['border_spacing_V'] + $table['padding']['T'] +  $table['padding']['B'];
+       }
+       else { 
+               $table['h'] += $table['margin']['T'] + $table['margin']['B'] + $table['max_cell_border_width']['T']/2 + $table['max_cell_border_width']['B']/2;
+       }
+
+       $maxrowheight = $checkmaxheightplus + $headerrowheightplus + $footerrowheightplus;
+       $maxfirstrowheight = $firstrowheight + $headerrowheightplus + $footerrowheightplus;     // includes thead, 1st row and tfoot
+       return array($table['h'],$maxrowheight,$temppgheight,$remainingpage,$maxfirstrowheight);
+}
+
+function _tableGetWidth(&$table, $i,$j, $fh){
+       if ($this->cacheTables) {
+               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+       }
+       else 
+               $cell = &$table['cells'][$i][$j];
+       if ($cell) {
+               if (isset($cell['x0'])) { return array($cell['x0'], $cell['w0']); }
+               $x = 0;
+               $widthcols = &$table['wc'];
+               for( $k = 0 ; $k < $j ; $k++ ) $x += $widthcols[$k];
+               $w = $widthcols[$j];
+               if (isset($cell['colspan'])) {
+                        for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- )    $w += $widthcols[$k];
+               }
+               $cell['x0'] = $x;
+               $cell['w0'] = $w;
+               if ($this->cacheTables) {
+                       $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0');
+               }
+               return array($x, $w);
+       }
+       return array(0,0);
+}
+
+function _splitTableGetWidth(&$table, $i,$j, $fh){
+       if ($this->cacheTables) {
+               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+       }
+       else 
+               $cell = &$table['cells'][$i][$j];
+       if ($cell) {
+               if (isset($cell['x0'])) return array($cell['x0'], $cell['w0']);
+               $x = 0;
+               $widthcols = &$table['wc'];
+               $pg = $table['colPg'][$j];
+               for( $k = 0 ; $k < $j ; $k++ ) {
+                       if ($table['colPg'][$k]==$pg) $x += $widthcols[$k];
+               }
+               $w = $widthcols[$j];
+               if (isset($cell['colspan'])) {
+                        for ( $k = $j+$cell['colspan']-1 ; $k > $j ; $k-- )    if ($table['colPg'][$k]==$pg) $w += $widthcols[$k];
+               }
+               $cell['x0'] = $x;
+               $cell['w0'] = $w;
+               if ($this->cacheTables) {
+                       $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'x0');
+               }
+               return array($x, $w);
+       }
+       return array(0,0);
+}
+
+
+function _tableGetHeight(&$table, $i,$j, $fh){
+       if ($this->cacheTables) {
+               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+       }
+       else 
+               $cell = &$table['cells'][$i][$j];
+       if ($cell){
+               if (isset($cell['y0'])) return array($cell['y0'], $cell['h0']);
+               $y = 0;
+               $heightrow = &$table['hr'];
+               for ($k=0;$k<$i;$k++) $y += $heightrow[$k];
+               $h = $heightrow[$i];
+               if (isset($cell['rowspan'])){
+                       for ($k=$i+$cell['rowspan']-1;$k>$i;$k--)
+                               $h += $heightrow[$k];
+               }
+               $cell['y0'] = $y;
+               $cell['h0'] = $h;
+               if ($this->cacheTables) {
+                       $this->_cacheUpdateMtx($cell, $fh, $table['cells'][$i][$j], 'y0');
+               }
+               return array($y, $h);
+       }
+       return array(0,0);
+}
+
+function _tableGetMaxRowHeight($table, $row, $fh) {
+       if ($row==$table['nc']-1) { return $table['hr'][$row]; }
+       $maxrowheight = $table['hr'][$row];
+       for ($i=$row+1;$i<$table['nr'];$i++) {
+               $cellsset = 0;
+               for ($j=0;$j<$table['nc'];$j++) {
+                       if ($this->cacheTables) {
+                               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                               if ($cell) {
+                                       if (isset($cell['colspan'])) {  $cellsset += $cell['colspan']; }
+                                       else $cellsset += 1; 
+                               }
+                       }
+                       else {
+                               if ($table['cells'][$i][$j]) { 
+                                       if (isset($table['cells'][$i][$j]['colspan'])) {  $cellsset += $table['cells'][$i][$j]['colspan']; }
+                                       else $cellsset += 1; 
+                               }
+                       }
+               }
+               if ($cellsset == $table['nc']) { return $maxrowheight; }
+               else { $maxrowheight += $table['hr'][$i]; }
+       }
+       return $maxrowheight;
+}
+
+
+// CHANGED TO ALLOW TABLE BORDER TO BE SPECIFIED CORRECTLY - added border_details
+function _tableRect($x, $y, $w, $h, $bord=-1, $details=array(), $buffer=false, $bSeparate=false, $cort='cell', $tablecorner='', $bsv=0, $bsh=0) {
+       $cellBorderOverlay = array();
+
+       if ($bord==-1) { $this->Rect($x, $y, $w, $h); }
+       else if ($this->simpleTables && ($cort=='cell')) {
+               $this->SetLineWidth($details['L']['w']);
+               if ($details['L']['c']) { 
+                       $this->SetDColor($details['L']['c']);
+               }
+               else { $this->SetDColor($this->ConvertColor(0)); }
+               $this->SetLineJoin(0);
+               $this->Rect($x, $y, $w, $h); 
+       }
+       else if ($bord){
+          if (!$bSeparate && $buffer) {
+               $priority = 'LRTB';
+               for($p=0;$p<strlen($priority);$p++) {
+                       $side = $priority[$p];
+                       $details['p'] = $side ;
+
+                       $dom = 0;
+                       if (isset($details[$side]['w'])) { $dom += ($details[$side]['w'] * 100000); }
+                       if (isset($details[$side]['style'])) { $dom += (array_search($details[$side]['style'],$this->borderstyles)*100) ; }
+                       if (isset($details[$side]['dom'])) { $dom += ($details[$side]['dom']*10); }
+
+                       // Precedence to darker colours at joins
+                       $coldom = 0;
+                       if (isset($details[$side]['c']) && is_array($details[$side]['c'])) { 
+                               if ($details[$side]['c']{0}==3) {       // RGB
+                                       $coldom = 10-(((ord($details[$side]['c']{1})*1.00)+(ord($details[$side]['c']{2})*1.00)+(ord($details[$side]['c']{3})*1.00))/76.5); 
+                               }
+                       } // 10 black - 0 white
+                       if ($coldom) { $dom += $coldom; }
+                       // Lastly precedence to RIGHT and BOTTOM cells at joins
+                       if (isset($details['cellposdom'])) { $dom += $details['cellposdom']; } 
+
+                       $save = false;
+                       if ($side == 'T' && $this->issetBorder($bord, _BORDER_TOP)) { $cbord = _BORDER_TOP; $save = true; }
+                       else if ($side == 'L' && $this->issetBorder($bord, _BORDER_LEFT)) { $cbord = _BORDER_LEFT; $save = true; }
+                       else if ($side == 'R' && $this->issetBorder($bord, _BORDER_RIGHT)) { $cbord = _BORDER_RIGHT; $save = true; }
+                       else if ($side == 'B' && $this->issetBorder($bord, _BORDER_BOTTOM)) { $cbord = _BORDER_BOTTOM; $save = true; }
+
+                       if ($save) {
+                               $this->cellBorderBuffer[] = pack("A16nCnda6A10d14",
+                                       str_pad(sprintf("%08.7f", $dom),16,"0",STR_PAD_LEFT),
+                                       $cbord,
+                                       ord($side),
+                                       $details[$side]['s'],
+                                       $details[$side]['w'],
+                                       $details[$side]['c'],
+                                       $details[$side]['style'], 
+                                       $x, $y, $w, $h,
+                                       $details['mbw']['BL'],
+                                       $details['mbw']['BR'],
+                                       $details['mbw']['RT'],
+                                       $details['mbw']['RB'],
+                                       $details['mbw']['TL'],
+                                       $details['mbw']['TR'],
+                                       $details['mbw']['LT'],
+                                       $details['mbw']['LB'],
+                                       $details['cellposdom'],
+                                       0
+                               );
+                          if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset' || $details[$side]['style'] == 'double' ) {
+                               $details[$side]['overlay'] = true;
+                               $this->cellBorderBuffer[] = pack("A16nCnda6A10d14",
+                                       str_pad(sprintf("%08.7f", ($dom+4)),16,"0",STR_PAD_LEFT),
+                                       $cbord,
+                                       ord($side),
+                                       $details[$side]['s'],
+                                       $details[$side]['w'],
+                                       $details[$side]['c'],
+                                       $details[$side]['style'], 
+                                       $x, $y, $w, $h,
+                                       $details['mbw']['BL'],
+                                       $details['mbw']['BR'],
+                                       $details['mbw']['RT'],
+                                       $details['mbw']['RB'],
+                                       $details['mbw']['TL'],
+                                       $details['mbw']['TR'],
+                                       $details['mbw']['LT'],
+                                       $details['mbw']['LB'],
+                                       $details['cellposdom'],
+                                       1
+                               );
+                          }
+                       }
+               }
+               return;
+          }
+
+          if (isset($details['p']) && strlen($details['p'])>1) { $priority = $details['p']; }
+          else { $priority='LTRB'; }
+          $Tw = 0; 
+          $Rw = 0; 
+          $Bw = 0; 
+          $Lw = 0; 
+               if (isset($details['T']['w'])) { $Tw = $details['T']['w']; }
+               if (isset($details['R']['w'])) { $Rw = $details['R']['w']; }
+               if (isset($details['B']['w'])) { $Bw = $details['B']['w']; }
+               if (isset($details['L']['w'])) { $Lw = $details['L']['w']; }
+
+          $x2 = $x + $w; $y2 = $y + $h;
+          $oldlinewidth = $this->LineWidth;
+
+          for($p=0;$p<strlen($priority);$p++) {
+               $side = $priority[$p];
+               $xadj = 0;
+               $xadj2 = 0;
+               $yadj = 0;
+               $yadj2 = 0;
+               $print = false;
+               if ($Tw && $side=='T' && $this->issetBorder($bord, _BORDER_TOP)) {      // TOP
+                       $ly1 = $y;
+                       $ly2 = $y;
+                       $lx1 = $x;
+                       $lx2 = $x2;
+                       $this->SetLineWidth($Tw);
+                       if ($cort == 'cell' || strpos($tablecorner,'L')!==false) {
+                               if ($Tw > $Lw) $xadj = ($Tw - $Lw)/2;
+                               if ($Tw < $Lw) $xadj = ($Tw + $Lw)/2;
+                       }
+                       else { $xadj = $Tw/2 - $bsh/2; }
+                       if ($cort == 'cell' || strpos($tablecorner,'R')!==false) {
+                               if ($Tw > $Rw) $xadj2 = ($Tw - $Rw)/2;
+                               if ($Tw < $Rw) $xadj2 = ($Tw + $Rw)/2;
+                       }
+                       else { $xadj2 = $Tw/2 - $bsh/2; }
+                       if (!$bSeparate && $details['mbw']['TL']) {
+                               $xadj = ($Tw - $details['mbw']['TL'])/2 ;
+                       }
+                       if (!$bSeparate && $details['mbw']['TR']) {
+                               $xadj2 = ($Tw - $details['mbw']['TR'])/2;
+                       }
+                       $print = true;
+               }
+               if ($Lw && $side=='L' && $this->issetBorder($bord, _BORDER_LEFT)) {     // LEFT
+                       $ly1 = $y;
+                       $ly2 = $y2;
+                       $lx1 = $x;
+                       $lx2 = $x;
+                       $this->SetLineWidth($Lw);
+                       if ($cort == 'cell' || strpos($tablecorner,'T')!==false) {
+                               if ($Lw > $Tw) $yadj = ($Lw - $Tw)/2;
+                               if ($Lw < $Tw) $yadj = ($Lw + $Tw)/2;
+                       }
+                       else { $yadj = $Lw/2 - $bsv/2; }
+                       if ($cort == 'cell' || strpos($tablecorner,'B')!==false) {
+                               if ($Lw > $Bw) $yadj2 = ($Lw - $Bw)/2;
+                               if ($Lw < $Bw) $yadj2 = ($Lw + $Bw)/2;
+                       }
+                       else { $yadj2 = $Lw/2 - $bsv/2; }
+                       if (!$bSeparate && $details['mbw']['LT']) {
+                               $yadj = ($Lw - $details['mbw']['LT'])/2;
+                       }
+                       if (!$bSeparate && $details['mbw']['LB']) {
+                               $yadj2 = ($Lw - $details['mbw']['LB'])/2;
+                       }
+                       $print = true;
+               }
+               if ($Rw && $side=='R' && $this->issetBorder($bord, _BORDER_RIGHT)) {    // RIGHT
+                       $ly1 = $y;
+                       $ly2 = $y2;
+                       $lx1 = $x2;
+                       $lx2 = $x2;
+                       $this->SetLineWidth($Rw);
+                       if ($cort == 'cell' || strpos($tablecorner,'T')!==false) {
+                               if ($Rw < $Tw) $yadj = ($Rw + $Tw)/2;
+                               if ($Rw > $Tw) $yadj = ($Rw - $Tw)/2;
+                       }
+                       else { $yadj = $Rw/2 - $bsv/2; }
+
+                       if ($cort == 'cell' || strpos($tablecorner,'B')!==false) {
+                               if ($Rw > $Bw) $yadj2 = ($Rw - $Bw)/2;
+                               if ($Rw < $Bw) $yadj2 = ($Rw + $Bw)/2;
+                       }
+                       else { $yadj2 = $Rw/2 - $bsv/2; }
+
+                       if (!$bSeparate && $details['mbw']['RT']) {
+                               $yadj = ($Rw - $details['mbw']['RT'])/2;
+                       }
+                       if (!$bSeparate && $details['mbw']['RB']) {
+                               $yadj2 = ($Rw - $details['mbw']['RB'])/2;
+                       }
+                       $print = true;
+               }
+               if ($Bw && $side=='B' && $this->issetBorder($bord, _BORDER_BOTTOM)) {   // BOTTOM
+                       $ly1 = $y2;
+                       $ly2 = $y2;
+                       $lx1 = $x;
+                       $lx2 = $x2;
+                       $this->SetLineWidth($Bw);
+                       if ($cort == 'cell' || strpos($tablecorner,'L')!==false) {
+                               if ($Bw > $Lw) $xadj = ($Bw - $Lw)/2;
+                               if ($Bw < $Lw) $xadj = ($Bw + $Lw)/2;
+                       }
+                       else { $xadj = $Bw/2 - $bsh/2; }
+                       if ($cort == 'cell' || strpos($tablecorner,'R')!==false) {
+                               if ($Bw > $Rw) $xadj2 = ($Bw - $Rw)/2;
+                               if ($Bw < $Rw) $xadj2 = ($Bw + $Rw)/2;
+                       }
+                       else { $xadj2 = $Bw/2 - $bsh/2; }
+                       if (!$bSeparate && $details['mbw']['BL']) {
+                               $xadj = ($Bw - $details['mbw']['BL'])/2;
+                       }
+                       if (!$bSeparate && $details['mbw']['BR']) {
+                               $xadj2 = ($Bw - $details['mbw']['BR'])/2;
+                       }
+                       $print = true;
+               }
+
+               // Now draw line
+               if ($print) {
+/*-- TABLES-ADVANCED-BORDERS --*/
+                if ($details[$side]['style'] == 'double') {
+                  if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) {
+                       if ($details[$side]['c']) { 
+                               $this->SetDColor($details[$side]['c']);
+                       }
+                       else { $this->SetDColor($this->ConvertColor(0)); }
+                       $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
+                  }
+                  if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) {
+                       if ($bSeparate && $cort=='table') {
+                               if ($side=='T') {
+                                  $xadj -= $this->LineWidth/2;
+                                  $xadj2 -= $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
+                                       $xadj += $this->LineWidth/2; 
+                                  }
+                                  if ($this->issetBorder($bord, _BORDER_RIGHT)) {
+                                       $xadj2 += $this->LineWidth; 
+                                  }
+                               }
+                               if ($side=='L') {
+                                  $yadj -= $this->LineWidth/2;
+                                  $yadj2 -= $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
+                                       $yadj += $this->LineWidth/2; 
+                                  }
+                                  if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
+                                       $yadj2 += $this->LineWidth; 
+                                  }
+                               }
+                               if ($side=='B') {
+                                  $xadj -= $this->LineWidth/2;
+                                  $xadj2 -= $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
+                                       $xadj += $this->LineWidth/2;
+                                  }
+                                  if ($this->issetBorder($bord, _BORDER_RIGHT)) {
+                                       $xadj2 += $this->LineWidth; 
+                                  }
+                               }
+                               if ($side=='R') {
+                                  $yadj -= $this->LineWidth/2;
+                                  $yadj2 -= $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
+                                       $yadj += $this->LineWidth/2;
+                                  }
+                                  if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
+                                       $yadj2 += $this->LineWidth; 
+                                  }
+                               }
+                       }
+
+                       $this->SetLineWidth($this->LineWidth/3);
+
+                       $tbcol = $this->ConvertColor(255);
+                       for($l=0; $l <= $this->blklvl; $l++) {
+                               if ($this->blk[$l]['bgcolor']) {
+                                       $tbcol = ($this->blk[$l]['bgcolorarray']);      // mPDF 5.6.53
+                               }
+                       }
+
+                       if ($bSeparate) {
+                          $cellBorderOverlay[] = array(
+                               'x' => $lx1 + $xadj, 
+                               'y' => $ly1 + $yadj, 
+                               'x2' => $lx2 - $xadj2, 
+                               'y2' => $ly2 - $yadj2,
+                               'col' => $tbcol, 
+                               'lw' => $this->LineWidth,
+                          );
+                       }
+                       else { 
+                               $this->SetDColor($tbcol);
+                               $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
+                       }
+                  }
+                }
+
+
+                else if (isset($details[$side]['style']) && ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'groove' || $details[$side]['style'] == 'inset' || $details[$side]['style'] == 'outset')) {
+                  if (!isset($details[$side]['overlay']) || !$details[$side]['overlay'] || $bSeparate) {
+                       if ($details[$side]['c']) { 
+                               $this->SetDColor($details[$side]['c']);
+                       }
+                       else { $this->SetDColor($this->ConvertColor(0)); }
+                       if ($details[$side]['style'] == 'outset' || $details[$side]['style'] == 'groove') {
+                               $nc = $this->_darkenColor($details[$side]['c']);
+                               $this->SetDColor($nc); 
+                       }
+                       else if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') {
+                               $nc = $this->_lightenColor($details[$side]['c']);
+                               $this->SetDColor($nc);
+                       }
+                       $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
+                  }
+                  if ((isset($details[$side]['overlay']) && $details[$side]['overlay']) || $bSeparate) {
+                       if ($details[$side]['c']) { 
+                               $this->SetDColor($details[$side]['c']);
+                       }
+                       else { $this->SetDColor($this->ConvertColor(0)); }
+                       $doubleadj = ($this->LineWidth)/3;
+                       $this->SetLineWidth($this->LineWidth/2);
+                       $xadj3 = $yadj3 = $wadj3 = $hadj3 = 0;
+
+                       if ($details[$side]['style'] == 'ridge' || $details[$side]['style'] == 'inset') {
+                          $nc = $this->_darkenColor($details[$side]['c']);
+
+                          if ($bSeparate && $cort=='table') {
+                               if ($side=='T') {
+                                  $yadj3 = $this->LineWidth/2; 
+                                  $xadj3 = -$this->LineWidth/2;
+                                  $wadj3 = $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
+                                       $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; 
+                                  }
+                                  if ($this->issetBorder($bord, _BORDER_RIGHT)) {
+                                       $wadj3 -= $this->LineWidth*2; 
+                                  }
+                               }
+                               if ($side=='L') {
+                                  $xadj3 = $this->LineWidth/2; 
+                                  $yadj3 = -$this->LineWidth/2;
+                                  $hadj3 = $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
+                                       $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; 
+                                  }
+                                  if ($this->issetBorder($bord, _BORDER_BOTTOM)) {
+                                       $hadj3 -= $this->LineWidth*2; 
+                                  }
+                               }
+                               if ($side=='B') {
+                                  $yadj3 = $this->LineWidth/2; 
+                                  $xadj3 = -$this->LineWidth/2;
+                                  $wadj3 = $this->LineWidth;
+                               }
+                               if ($side=='R') {
+                                  $xadj3 = $this->LineWidth/2; 
+                                  $yadj3 = -$this->LineWidth/2;
+                                  $hadj3 = $this->LineWidth;
+                               }
+                          }
+
+                          else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; $wadj3 = -$this->LineWidth*2; }
+                          else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; $hadj3 = -$this->LineWidth*2; }
+
+                          else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $wadj3 = $this->LineWidth/2; }
+                          else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $hadj3 = $this->LineWidth/2; }
+
+                          else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
+                          else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
+                       }
+                       else {
+                          $nc = $this->_lightenColor($details[$side]['c']);
+
+                          if ($bSeparate && $cort=='table') {
+                               if ($side=='T') {
+                                  $yadj3 = $this->LineWidth/2; 
+                                  $xadj3 = -$this->LineWidth/2;
+                                  $wadj3 = $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
+                                       $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; 
+                                  }
+                               }
+                               if ($side=='L') {
+                                  $xadj3 = $this->LineWidth/2; 
+                                  $yadj3 = -$this->LineWidth/2;
+                                  $hadj3 = $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
+                                       $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; 
+                                  }
+                               }
+                               if ($side=='B') {
+                                  $yadj3 = $this->LineWidth/2; 
+                                  $xadj3 = -$this->LineWidth/2;
+                                  $wadj3 = $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_LEFT)) {
+                                       $xadj3 += $this->LineWidth; $wadj3 -= $this->LineWidth; 
+                                  }
+                               }
+                               if ($side=='R') {
+                                  $xadj3 = $this->LineWidth/2; 
+                                  $yadj3 = -$this->LineWidth/2;
+                                  $hadj3 = $this->LineWidth;
+                                  if ($this->issetBorder($bord, _BORDER_TOP)) {
+                                       $yadj3 += $this->LineWidth; $hadj3 -= $this->LineWidth; 
+                                  }
+                               }
+                          }
+
+                          else if ($side=='T') { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
+                          else if ($side=='L') { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
+
+                          else if ($side=='B' && $bSeparate) { $yadj3 = $this->LineWidth/2; $xadj3 = $this->LineWidth/2; }
+                          else if ($side=='R' && $bSeparate) { $xadj3 = $this->LineWidth/2; $yadj3 = $this->LineWidth/2; }
+
+                          else if ($side=='B') { $yadj3 = $this->LineWidth/2; $xadj3 = -$this->LineWidth/2; $wadj3 = $this->LineWidth; }
+                          else if ($side=='R') { $xadj3 = $this->LineWidth/2; $yadj3 = -$this->LineWidth/2;  $hadj3 = $this->LineWidth; }
+
+                       }
+
+                       if ($bSeparate) {
+                          $cellBorderOverlay[] = array(
+                               'x' => $lx1 + $xadj + $xadj3, 
+                               'y' => $ly1 + $yadj + $yadj3, 
+                               'x2' => $lx2 - $xadj2 + $xadj3 + $wadj3, 
+                               'y2' => $ly2 - $yadj2 + $yadj3 + $hadj3,
+                               'col' => $nc,
+                               'lw' => $this->LineWidth,
+                          );
+                       }
+                       else { 
+                          $this->SetDColor($nc);
+                          $this->Line($lx1 + $xadj + $xadj3, $ly1 + $yadj + $yadj3, $lx2 - $xadj2 + $xadj3 + $wadj3, $ly2 - $yadj2 + $yadj3 + $hadj3);
+                       }
+                  }
+                }
+
+
+                else {
+/*-- END TABLES-ADVANCED-BORDERS --*/
+                  if ($details[$side]['style'] == 'dashed') {
+                       $dashsize = 2;  // final dash will be this + 1*linewidth
+                       $dashsizek = 1.5;       // ratio of Dash/Blank
+                       $this->SetDash($dashsize,($dashsize/$dashsizek)+($this->LineWidth*2));
+                  }
+                  else if ($details[$side]['style'] == 'dotted') {
+                       $this->SetLineJoin(1);
+                       $this->SetLineCap(1);
+                       $this->SetDash(0.001,($this->LineWidth*2));
+                  }
+                  if ($details[$side]['c']) { 
+                       $this->SetDColor($details[$side]['c']);
+                  }
+                  else { $this->SetDColor($this->ConvertColor(0)); }
+                  $this->Line($lx1 + $xadj, $ly1 + $yadj, $lx2 - $xadj2, $ly2 - $yadj2);
+/*-- TABLES-ADVANCED-BORDERS --*/
+                }
+/*-- END TABLES-ADVANCED-BORDERS --*/
+
+                 // Reset Corners
+                 $this->SetDash(); 
+                 //BUTT style line cap
+                 $this->SetLineCap(2);
+               }
+          }
+
+          if ($bSeparate && count($cellBorderOverlay)) {
+               foreach($cellBorderOverlay AS $cbo) {
+                       $this->SetLineWidth($cbo['lw']);
+                       $this->SetDColor($cbo['col']); 
+                       $this->Line($cbo['x'], $cbo['y'], $cbo['x2'], $cbo['y2']);
+               }
+          }
+
+          // $this->SetLineWidth($oldlinewidth);
+          // $this->SetDColor($this->ConvertColor(0));
+       }
+}
+
+
+/*-- TABLES --*/
+/*-- TABLES-ADVANCED-BORDERS --*/
+function _lightenColor($c) {
+       if (is_array($c)) { die('Color error in _lightencolor'); }
+       if ($c{0}==3 || $c{0}==5) {     // RGB
+               list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255);
+               $l += ((1 - $l)*0.8);
+               list($r,$g,$b) = $this->hsl2rgb($h,$s,$l);
+               $ret = array(3,$r,$g,$b);
+       }
+       else if ($c{0}==4 || $c{0}==6) {        // CMYK
+               $ret = array(4, max(0,(ord($c{1})-20)), max(0,(ord($c{2})-20)), max(0,(ord($c{3})-20)), max(0,(ord($c{4})-20)) );
+       }
+       else if ($c{0}==1) {    // Grayscale
+               $ret = array(1,min(255,(ord($c{1})+32)));
+       }
+       $c = array_pad($ret, 6, 0);
+       $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); 
+       return $cstr;
+}
+
+
+function _darkenColor($c) {
+       if (is_array($c)) { die('Color error in _darkenColor'); }
+       if ($c{0}==3 || $c{0}==5) {     // RGB
+               list($h,$s,$l) = $this->rgb2hsl(ord($c{1})/255,ord($c{2})/255,ord($c{3})/255);
+               $s *= 0.25;
+               $l *= 0.75;
+               list($r,$g,$b) = $this->hsl2rgb($h,$s,$l);
+               $ret = array(3,$r,$g,$b);
+       }
+       else if ($c{0}==4 || $c{0}==6) {        // CMYK
+               $ret = array(4, min(100,(ord($c{1})+20)), min(100,(ord($c{2})+20)), min(100,(ord($c{3})+20)), min(100,(ord($c{4})+20)) );
+       }
+       else if ($c{0}==1) {    // Grayscale
+               $ret = array(1,max(0,(ord($c{1})-32)));
+       }
+       $c = array_pad($ret, 6, 0);
+       $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); 
+       return $cstr;
+}
+
+/*-- END TABLES-ADVANCED-BORDERS --*/
+
+
+
+function setBorder(&$var, $flag, $set = true) {
+       $flag = intval($flag);
+       if ($set) { $set = true; }
+       $var = intval($var);
+       $var = $set ? ($var | $flag) : ($var & ~$flag);
+}
+function issetBorder($var, $flag) {
+       $flag = intval($flag);
+       $var = intval($var);
+       return (($var & $flag) == $flag);
+}
+
+
+function _table2cellBorder(&$tableb, &$cbdb, &$cellb, $bval) {
+       if ($tableb && $tableb['w'] > $cbdb['w']) {
+               $cbdb = $tableb;
+               $this->setBorder($cellb, $bval); 
+       }
+       else if ($tableb && $tableb['w'] == $cbdb['w'] 
+               && array_search($tableb['style'],$this->borderstyles) > array_search($cbdb['style'],$this->borderstyles)) {
+               $cbdb = $tableb;
+               $this->setBorder($cellb, $bval); 
+       }
+}
+
+// FIX BORDERS ********************************************
+function _fixTableBorders(&$table){
+       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
+       else { $fh = null; }
+
+       if (!$table['borders_separate'] && $table['border_details']['L']['w']) {
+               $table['max_cell_border_width']['L'] = $table['border_details']['L']['w']; 
+       }
+       if (!$table['borders_separate'] && $table['border_details']['R']['w']) {
+               $table['max_cell_border_width']['R'] = $table['border_details']['R']['w']; 
+       }
+       if (!$table['borders_separate'] && $table['border_details']['T']['w']) {
+               $table['max_cell_border_width']['T'] = $table['border_details']['T']['w']; 
+       }
+       if (!$table['borders_separate'] && $table['border_details']['B']['w']) {
+               $table['max_cell_border_width']['B'] = $table['border_details']['B']['w']; 
+       }
+       if ($this->simpleTables) { return; }
+       $cells = &$table['cells'];
+       $numcols = $table['nc'];
+       $numrows = $table['nr'];
+/*-- TABLES-ADVANCED-BORDERS --*/
+       if (isset($table['topntail']) && $table['topntail']) { $tntborddet = $this->border_details($table['topntail']); }
+       if (isset($table['thead-underline']) && $table['thead-underline']) { $thuborddet = $this->border_details($table['thead-underline']); } 
+/*-- END TABLES-ADVANCED-BORDERS --*/
+
+       for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows
+         for( $j = 0 ; $j < $numcols ; $j++ ) { //Columns
+               if (isset($cells[$i][$j]) && $cells[$i][$j]) {
+                       if ($this->cacheTables) {
+                               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                       }
+                       else 
+                               $cell = &$cells[$i][$j];
+                       if ($this->packTableData) {     // includes $this->cacheTables
+                               $cbord = $this->_unpackCellBorder($cell['borderbin']);
+                       }
+                       else {
+                               $cbord = &$cells[$i][$j];
+                       }
+
+                       if (!$cbord['border'] && isset($table['border']) && $table['border'] && $this->table_border_attr_set) {
+                               $cbord['border'] = $table['border'];
+                               $cbord['border_details'] = $table['border_details'];
+                       }
+
+                       if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; }
+                       else { $ccolsp = 1; }
+                       if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; }
+                       else { $crowsp = 1; }
+
+                       $cbord['border_details']['cellposdom'] = ((($i+1)/$numrows) / 10000 ) + ((($j+1)/$numcols) / 10 );
+                       // Inherit Cell border from Table border
+                       if ($this->table_border_css_set && !$table['borders_separate']) {
+                               if ($i == 0) {
+                                 $this->_table2cellBorder($table['border_details']['T'], $cbord['border_details']['T'], $cbord['border'], _BORDER_TOP);
+                               }
+                               if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) {
+                                 $this->_table2cellBorder($table['border_details']['B'], $cbord['border_details']['B'], $cbord['border'], _BORDER_BOTTOM);
+                               }
+                               if ($j == 0) {
+                                 $this->_table2cellBorder($table['border_details']['L'], $cbord['border_details']['L'], $cbord['border'], _BORDER_LEFT);
+                               }
+                               if ($j == ($numcols-1) || ($j+$ccolsp) == ($numcols) ) {
+                                 $this->_table2cellBorder($table['border_details']['R'], $cbord['border_details']['R'], $cbord['border'], _BORDER_RIGHT);
+                               }
+                       }
+
+/*-- TABLES-ADVANCED-BORDERS --*/
+                       $fixbottom = true;
+                       if (isset($table['topntail']) && $table['topntail']) {
+                               if ($i == 0) {
+                                 $cbord['border_details']['T'] = $tntborddet;
+                                 $this->setBorder($cbord['border'], _BORDER_TOP); 
+                               }
+                               if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) {
+                                       $cbord['border_details']['B'] = $tntborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
+                                       $fixbottom = false;
+                               }
+                               else if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']) {
+                                 if (!$table['borders_separate']) {
+                                       $cbord['border_details']['T'] = $tntborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
+                                 }
+                               }
+                               if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows']-1)) {
+                                 if (!$table['borders_separate']) {
+                                       $cbord['border_details']['B'] = $tntborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
+                                       $fixbottom = false;
+                                 }
+                               }
+                               else if ($this->tableLevel==1 && $table['footernrows']>0 && $i == ($numrows-$table['footernrows'])) {
+                                       $cbord['border_details']['T'] = $tntborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
+                               }
+                               if ($this->tabletheadjustfinished) {    // $this->tabletheadjustfinished called from tableheader
+                                 if (!$table['borders_separate']) {
+                                       $cbord['border_details']['T'] = $tntborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
+                                 }
+                               }
+                               if ($i == ($numrows-1) || ($i+$crowsp) == ($numrows) ) {
+                                       $cbord['border_details']['B'] = $tntborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
+                               }
+                       }
+                       if (isset($table['thead-underline']) && $table['thead-underline']) {
+                               if ($table['borders_separate']) {
+                                 if ($i == 0) {
+                                       $cbord['border_details']['B'] = $thuborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_BOTTOM); 
+                                       $fixbottom = false;
+                                 }
+                               }
+                               else  {
+                                 if ($this->tableLevel==1 && $table['headernrows']>0 && $i == $table['headernrows']-1) {
+                                       $cbord['border_details']['T'] = $thuborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
+                                 }
+                                 else if ($this->tabletheadjustfinished) {     // $this->tabletheadjustfinished called from tableheader
+                                       $cbord['border_details']['T'] = $thuborddet;
+                                       $this->setBorder($cbord['border'], _BORDER_TOP); 
+                                 }
+                               }
+                       }
+
+                       // Collapse Border - Algorithm for conflicting borders
+                       // Hidden >> Width >> double>solid>dashed>dotted... >> style set on cell>table >> top/left>bottom/right
+                       // Do not turn off border which is overridden
+                       // Needed for page break for TOP/BOTTOM both to be defined in Collapsed borders
+                       // Means it is painted twice. (Left/Right can still disable overridden border)
+                       if (!$table['borders_separate']) {
+                         if (($i < ($numrows-1)  || ($i+$crowsp) < $numrows ) && $fixbottom ) {        // Bottom
+                          for ($cspi = 0; $cspi<$ccolsp; $cspi++) {
+                               // already defined Top for adjacent cell below
+                               if (isset($cells[($i+$crowsp)][$j+$cspi])) {
+                                  if ($this->packTableData) {
+                                       if ($this->cacheTables) {
+                                               $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j+$cspi], '', $fh);
+                                       }
+                                       else { $adjc = $cells[($i+$crowsp)][$j+$cspi]; }
+                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
+                                  }
+                                  else { $celladj =& $cells[($i+$crowsp)][$j+$cspi]; }
+                               }
+                               else { $celladj = false; }
+                               if ($celladj && $celladj['border_details']['T']['s'] == 1)  {
+                                  $csadj = $celladj['border_details']['T']['w'];
+                                  $csthis = $cbord['border_details']['B']['w'];
+                                  // Hidden
+                                  if ($cbord['border_details']['B']['style']=='hidden') {
+                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
+                                       $this->setBorder($celladj['border'] , _BORDER_TOP, false); 
+                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false); 
+                                  }
+                                  else if ($celladj['border_details']['T']['style']=='hidden') {
+                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
+                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM , false); 
+                                       $this->setBorder($celladj['border'] , _BORDER_TOP, false); 
+                                  }
+                                  // Width
+                                  else if ($csthis > $csadj) {
+                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
+                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM); 
+                                   }
+                                  }
+                                  else if ($csadj > $csthis) {
+                                   if ($ccolsp < 2) {  // don't overwrite this cell if it spans
+                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
+                                       $this->setBorder($celladj['border'] , _BORDER_TOP); 
+                                   }
+                                  }
+
+                                  // double>solid>dashed>dotted... 
+                                  else if (array_search($cbord['border_details']['B']['style'],$this->borderstyles) > array_search($celladj['border_details']['T']['style'],$this->borderstyles)) {
+                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
+                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM ); 
+                                   }
+                                  }
+                                  else if (array_search($celladj['border_details']['T']['style'],$this->borderstyles) > array_search($cbord['border_details']['B']['style'],$this->borderstyles)) {
+                                   if ($ccolsp < 2) {  // don't overwrite this cell if it spans
+                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
+                                       $this->setBorder($celladj['border'] , _BORDER_TOP); 
+                                   }
+                                  }
+
+
+
+                                  // Style set on cell vs. table
+                                  else if ($celladj['border_details']['T']['dom'] > $cbord['border_details']['B']['dom']) {
+                                   if ($ccolsp < 2) {  // don't overwrite this cell if it spans
+                                       $cbord['border_details']['B'] = $celladj['border_details']['T'];
+                                       $this->setBorder($celladj['border'] , _BORDER_TOP); 
+                                   }
+                                  }
+                                  // Style set on cell vs. table  - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT
+                                  else {
+                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
+                                       $this->setBorder($cbord['border'] , _BORDER_BOTTOM ); 
+                                   }
+                                  }
+                               }
+                               else if ($celladj) {
+                                   if (!isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) || (isset($cells[($i+$crowsp)][$j+$cspi]['colspan']) && $cells[($i+$crowsp)][$j+$cspi]['colspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['T'] = $cbord['border_details']['B'];
+                                   }
+                               }
+                               if ($celladj && $this->packTableData) { 
+                                       $celladj['borderbin'] = $this->_packCellBorder($celladj); 
+                                       unset($celladj['border']);
+                                       unset($celladj['border_details']);
+                               }
+                               if ($this->cacheTables) {
+                                       $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$crowsp][$j+$cspi]);
+                               }
+                               unset($celladj);
+                          }
+                         }
+
+                         if ($j < ($numcols-1)  || ($j+$ccolsp) < $numcols ) { // Right-Left
+                          for ($cspi = 0; $cspi<$crowsp; $cspi++) {
+                               // already defined Left for adjacent cell to R
+                               if (isset($cells[($i+$cspi)][$j+$ccolsp])) {
+                                  if ($this->packTableData) {
+                                       if ($this->cacheTables) {
+                                               $adjc = $this->_uncacheCell($table['cells'][$i+$cspi][$j+$ccolsp], '', $fh);
+                                       }
+                                       else { $adjc = $cells[($i+$cspi)][$j+$ccolsp]; }
+                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
+                                  }
+                                  else { $celladj =& $cells[$i+$cspi][$j+$ccolsp]; }
+                               }
+                               else { $celladj = false; }
+                               if ($celladj && $celladj['border_details']['L']['s'] == 1) {
+                                  $csadj = $celladj['border_details']['L']['w'];
+                                  $csthis = $cbord['border_details']['R']['w'];
+                                  // Hidden
+                                  if ($cbord['border_details']['R']['style']=='hidden') {
+                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
+                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
+                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); 
+                                  }
+                                  else if ($celladj['border_details']['L']['style']=='hidden') {
+                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
+                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); 
+                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
+                                  }
+                                  // Width
+                                  else if ($csthis > $csadj) {
+                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
+                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT); 
+                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
+                                   }
+                                  }
+                                  else if ($csadj > $csthis) {
+                                   if ($crowsp < 2) {  // don't overwrite this cell if it spans
+                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
+                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT, false); 
+                                       $this->setBorder($celladj['border'] , _BORDER_LEFT); 
+                                   }
+                                  }
+
+                                  // double>solid>dashed>dotted... 
+                                  else if (array_search($cbord['border_details']['R']['style'],$this->borderstyles) > array_search($celladj['border_details']['L']['style'],$this->borderstyles)) {
+                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
+                                       $this->setBorder($celladj['border'] , _BORDER_LEFT, false); 
+                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT); 
+                                   }
+                                  }
+                                  else if (array_search($celladj['border_details']['L']['style'],$this->borderstyles) > array_search($cbord['border_details']['R']['style'],$this->borderstyles)) {
+                                   if ($crowsp < 2) {  // don't overwrite this cell if it spans
+                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
+                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT , false); 
+                                       $this->setBorder($celladj['border'] , _BORDER_LEFT); 
+                                   }
+                                  }
+
+
+                                  // Style set on cell vs. table
+                                  else if ($celladj['border_details']['L']['dom'] > $cbord['border_details']['R']['dom']) {
+                                   if ($crowsp < 2) {  // don't overwrite this cell if it spans
+                                       $cbord['border_details']['R'] = $celladj['border_details']['L'];
+                                       $this->setBorder($celladj['border'] , _BORDER_LEFT); 
+                                   }
+                                  }
+                                  // Style set on cell vs. table  - OR - LEFT/TOP (cell) in preference to BOTTOM/RIGHT
+                                  else {
+                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
+                                       $this->setBorder($cbord['border'] , _BORDER_RIGHT); 
+                                   }
+                                  }
+                               }
+                               else if ($celladj) {
+                                  // if right-cell border is not set
+                                   if (!isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) || (isset($cells[($i+$cspi)][$j+$ccolsp]['rowspan']) && $cells[($i+$cspi)][$j+$ccolsp]['rowspan']<2)) {       // don't overwrite bordering cells that span
+                                       $celladj['border_details']['L'] = $cbord['border_details']['R'];
+                                   }
+                               }
+                               if ($celladj && $this->packTableData) { 
+                                       $celladj['borderbin'] = $this->_packCellBorder($celladj); 
+                                       unset($celladj['border']);
+                                       unset($celladj['border_details']);
+                               }
+                               if ($this->cacheTables) {
+                                       $this->_cacheUpdateBorder($celladj, $fh, $table['cells'][$i+$cspi][$j+$ccolsp]);
+                               }
+                               unset($celladj);
+                          }
+                         }
+                       }
+
+
+                       // Set maximum cell border width meeting at LRTB edges of cell - used for extended cell border
+                       // ['border_details']['mbw']['LT'] = meeting border width - Left border - Top end
+                       if (!$table['borders_separate']) {
+                         $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $cbord['border_details']['L']['w']);
+                         $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $cbord['border_details']['R']['w']);
+                         $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $cbord['border_details']['T']['w']);
+                         $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $cbord['border_details']['B']['w']);
+                         $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $cbord['border_details']['L']['w']);
+                         $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $cbord['border_details']['R']['w']);
+                         $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $cbord['border_details']['T']['w']);
+                         $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $cbord['border_details']['B']['w']);
+                         if (($i+$crowsp) < $numrows && isset($cells[$i+$crowsp][$j])) {       // Has Bottom adjoining cell
+                               if ($this->packTableData) {
+                                       if ($this->cacheTables) {
+                                               $adjc = $this->_uncacheCell($table['cells'][$i+$crowsp][$j], '', $fh);
+                                       }
+                                       else { $adjc = $cells[$i+$crowsp][$j]; }
+                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
+                               }
+                               else { $celladj =& $cells[$i+$crowsp][$j]; }
+                               $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['TL']);
+                               $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['TR']);
+                               $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['mbw']['LT']);
+                               $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['mbw']['RT']);
+                               unset($celladj);
+                         }
+                         if (($j+$ccolsp) < $numcols && isset($cells[$i][$j+$ccolsp])) {       // Has Right adjoining cell
+                               if ($this->packTableData) {
+                                       if ($this->cacheTables) {
+                                               $adjc = $this->_uncacheCell($table['cells'][$i][$j+$ccolsp], '', $fh);
+                                       }
+                                       else { $adjc = $cells[$i][$j+$ccolsp]; }
+                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
+                               }
+                               else { $celladj =& $cells[$i][$j+$ccolsp]; }
+                               $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['LT']);
+                               $cbord['border_details']['mbw']['RB'] = max($cbord['border_details']['mbw']['RB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['LB']);
+                               $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['mbw']['TL']);
+                               $cbord['border_details']['mbw']['BR'] = max($cbord['border_details']['mbw']['BR'], $celladj['border_details']['mbw']['BL']);
+                               unset($celladj);
+                         }
+
+                         if ($i > 0 && isset($cells[$i-1][$j]) && (($this->packTableData && $cells[$i-1][$j]['borderbin']) || $cells[$i-1][$j]['border'])) {   // Has Top adjoining cell
+                               if ($this->packTableData) {
+                                       if ($this->cacheTables) {
+                                               $adjc = $this->_uncacheCell($table['cells'][$i-1][$j], '', $fh);
+                                       }
+                                       else { $adjc = $cells[$i-1][$j]; }
+                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
+                               }
+                               else { $celladj =& $cells[$i-1][$j]; }
+                               $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['L']['w'], $celladj['border_details']['mbw']['BL']);
+                               $cbord['border_details']['mbw']['TR'] = max($cbord['border_details']['mbw']['TR'], $celladj['border_details']['R']['w'], $celladj['border_details']['mbw']['BR']);
+                               $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['mbw']['LB']);
+                               $cbord['border_details']['mbw']['RT'] = max($cbord['border_details']['mbw']['RT'], $celladj['border_details']['mbw']['RB']);
+
+                               if ($celladj['border_details']['mbw']['BL']) {
+                                       $celladj['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['BL']);
+                               }
+                               if ($celladj['border_details']['mbw']['BR'] ) {
+                                       $celladj['border_details']['mbw']['BR'] = max($celladj['border_details']['mbw']['BR'], $cbord['border_details']['mbw']['TR']);
+                               }
+                               if ($this->packTableData) { $cells[$i-1][$j]['borderbin'] = $this->_packCellBorder($celladj); }
+                               unset($celladj);
+                         }
+                         if ($j > 0 && isset($cells[$i][$j-1]) && (($this->packTableData && $cells[$i][$j-1]['borderbin']) || $cells[$i][$j-1]['border'])) {   // Has Left adjoining cell
+                               if ($this->packTableData) {
+                                       if ($this->cacheTables) {
+                                               $adjc = $this->_uncacheCell($table['cells'][$i][$j-1], '', $fh);
+                                       }
+                                       else { $adjc = $cells[$i][$j-1]; }
+                                       $celladj = $this->_unpackCellBorder($adjc['borderbin']);
+                               }
+                               else { $celladj =& $cells[$i][$j-1]; }
+                               $cbord['border_details']['mbw']['LT'] = max($cbord['border_details']['mbw']['LT'], $celladj['border_details']['T']['w'], $celladj['border_details']['mbw']['RT']);
+                               $cbord['border_details']['mbw']['LB'] = max($cbord['border_details']['mbw']['LB'], $celladj['border_details']['B']['w'], $celladj['border_details']['mbw']['RB']);
+                               $cbord['border_details']['mbw']['BL'] = max($cbord['border_details']['mbw']['BL'], $celladj['border_details']['mbw']['BR']);
+                               $cbord['border_details']['mbw']['TL'] = max($cbord['border_details']['mbw']['TL'], $celladj['border_details']['mbw']['TR']);
+
+                               if ($celladj['border_details']['mbw']['RT']) {
+                                       $celladj['border_details']['mbw']['RT'] = max($celladj['border_details']['mbw']['RT'], $cbord['border_details']['mbw']['LT']);
+                               }
+                               if ($celladj['border_details']['mbw']['RB']) {
+                                       $celladj['border_details']['mbw']['RB'] = max($celladj['border_details']['mbw']['RB'], $cbord['border_details']['mbw']['LB']);
+                               }
+                               if ($this->packTableData) { $cells[$i][$j-1]['borderbin'] = $this->_packCellBorder($celladj); }
+                               unset($celladj);
+                         }
+
+
+                         // Update maximum cell border width at LRTB edges of table - used for overall table width
+                         if ($j == 0 && $cbord['border_details']['L']['w']) {
+                               $table['max_cell_border_width']['L'] = max($table['max_cell_border_width']['L'],$cbord['border_details']['L']['w']); 
+                         }
+                         if (($j == ($numcols-1) || ($j+$ccolsp) == $numcols ) && $cbord['border_details']['R']['w']) {
+                               $table['max_cell_border_width']['R'] = max($table['max_cell_border_width']['R'],$cbord['border_details']['R']['w']); 
+                         }
+                         if ($i == 0 && $cbord['border_details']['T']['w']) {
+                               $table['max_cell_border_width']['T'] = max($table['max_cell_border_width']['T'],$cbord['border_details']['T']['w']); 
+                         }
+                         if (($i == ($numrows-1) || ($i+$crowsp) == $numrows ) && $cbord['border_details']['B']['w']) {
+                               $table['max_cell_border_width']['B'] = max($table['max_cell_border_width']['B'],$cbord['border_details']['B']['w']); 
+                         }
+                       }
+/*-- END TABLES-ADVANCED-BORDERS --*/
+
+                       if ($this->packTableData) { $cell['borderbin'] = $this->_packCellBorder($cbord); }
+
+                       if ($this->cacheTables) {
+                               $this->_cacheUpdateBorder($cell, $fh, $table['cells'][$i][$j]);
+                       }
+                       unset($cbord );
+                       unset($cell );
+               }
+         }
+       }
+       if ($this->cacheTables) { fclose($fh); }
+       unset($cell );
+}
+// END FIX BORDERS ************************************************************************************
+
+
+function _reverseTableDir(&$table) {
+       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
+       $cells = &$table['cells'];
+       $numcols = $table['nc'];
+       $numrows = $table['nr'];
+       for( $i = 0 ; $i < $numrows ; $i++ ) { //Rows
+               $row = array();
+               for( $j = ($numcols-1) ; $j >= 0 ; $j-- ) { //Columns
+                       if (isset($cells[$i][$j]) && $cells[$i][$j]) {
+                               if ($this->cacheTables) {
+                                       $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                               }
+                               else 
+                                       $cell = &$cells[$i][$j];
+                               $col = $numcols - $j - 1;
+                               if (isset($cell['colspan']) && $cell['colspan'] > 1) { $col -= ($cell['colspan']-1); }
+                               // Nested content
+                               for ($n=0; $n < count($cell['textbuffer']); $n++) {
+                                       $t = $cell['textbuffer'][$n][0];
+                                       if (substr($t,0,19) == "\xbb\xa4\xactype=nestedtable") {
+                                               $objattr = $this->_getObjAttr($t);
+                                               $objattr['col'] = $col;
+                                               $cell['textbuffer'][$n][0] = "\xbb\xa4\xactype=nestedtable,objattr=".serialize($objattr)."\xbb\xa4\xac";
+                                               $this->table[($this->tableLevel+1)][$objattr['nestedcontent']]['nestedpos'][1] = $col;
+                                               if ($this->cacheTables) {
+                                                       $this->_cacheUpdateTxB($cell, $fh, $table['cells'][$i][$j]);
+                                               }
+                                       }
+                               }
+                               $row[$col] = $cells[$i][$j];
+                               unset($cell);
+                       }
+               }
+               for($f=0; $f < $numcols; $f++) { 
+                       if (!isset($row[$f])) { $row[$f] = 0; }
+               }
+               $table['cells'][$i] = $row;
+       }
+       if ($this->cacheTables) { fclose($fh); }
+}
+
+
+function _tableWrite(&$table, $split=false, $startrow=0, $startcol=0, $splitpg=0, $rety = 0){
+       $level = $table['level'];
+       $levelid = $table['levelid'];
+
+       $cells = &$table['cells'];
+       $numcols = $table['nc'];
+       $numrows = $table['nr'];
+
+       if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
+
+       if (!$split || ($startrow==0 && $splitpg==0) || $startrow>0){
+               // TABLE TOP MARGIN
+               if ($table['margin']['T']) {
+                  if (!$this->table_rotate && $level==1) {
+                       $this->DivLn($table['margin']['T'],$this->blklvl,true,1);       // collapsible
+                  }
+                  else {
+                       $this->y += ($table['margin']['T']);
+                  }
+               }
+               // Advance down page by half width of top border
+               if ($table['borders_separate']) { 
+                       if ($startrow>0 && (!isset($table['is_thead']) || count($table['is_thead'])==0))
+                               $adv = $table['border_spacing_V']/2; 
+                       else 
+                               $adv = $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; 
+               }
+               else { 
+                       $adv = $table['max_cell_border_width']['T']/2; 
+               }
+               if (!$this->table_rotate && $level==1) { $this->DivLn($adv); }
+               else { $this->y += $adv; }
+       }
+
+       if ($level==1) {
+               $this->x = $this->lMargin  + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'];
+               $x0 = $this->x; 
+               $y0 = $this->y;
+               $right = $x0 + $this->blk[$this->blklvl]['inner_width'];
+               $outerfilled = $this->y;        // Keep track of how far down the outer DIV bgcolor is painted (NB rowspans)
+               $this->outerfilled = $this->y;
+               $this->colsums = array();
+       }
+       else {
+               $x0 = $this->x; 
+               $y0 = $this->y;
+               $right = $x0 + $table['w'];
+       }
+
+       if ($this->table_rotate) {
+               $temppgwidth = $this->tbrot_maxw;
+               $this->PageBreakTrigger = $pagetrigger = $y0 + ($this->blk[$this->blklvl]['inner_width']);
+          if ($level==1) {
+               $this->tbrot_y0 = $this->y - $adv - $table['margin']['T'] ;
+               $this->tbrot_x0 = $this->x;
+               $this->tbrot_w = $table['w'];
+               if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; }
+               else { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['max_cell_border_width']['T']; }
+          }
+       }
+       else {
+               $this->PageBreakTrigger = $pagetrigger = ($this->h - $this->bMargin);
+               if ($level==1) {
+                       $temppgwidth = $this->blk[$this->blklvl]['inner_width'];
+                       if (isset($table['a']) and ($table['w'] < $this->blk[$this->blklvl]['inner_width'])) {
+                               if ($table['a']=='C') { $x0 += ((($right-$x0) - $table['w'])/2); }
+                               else if ($table['a']=='R') { $x0 = $right - $table['w']; }
+                       }
+               }
+               else {
+                       $temppgwidth = $table['w'];
+               }
+       }
+       if(!isset($table['overflow'])) { $table['overflow'] = null; }
+       if ($table['overflow']=='hidden' && $level==1 && !$this->table_rotate && !$this->ColActive) {
+               //Bounding rectangle to clip
+               $this->tableClipPath = sprintf('q %.3F %.3F %.3F %.3F re W n',$x0*_MPDFK,$this->h*_MPDFK,$this->blk[$this->blklvl]['inner_width']*_MPDFK,-$this->h*_MPDFK);
+               $this->_out($this->tableClipPath);
+       }
+       else { $this->tableClipPath = ''; }
+
+
+       if ($table['borders_separate']) { $indent = $table['margin']['L'] + $table['border_details']['L']['w'] + $table['padding']['L'] + $table['border_spacing_H']/2; }
+       else { $indent = $table['margin']['L'] + $table['max_cell_border_width']['L']/2; }
+       $x0 += $indent;
+
+       $returny = 0;
+       $lastCol = 0;
+       $tableheader = array();
+       $tablefooter = array();
+       $tableheaderrowheight = 0; 
+       $tablefooterrowheight = 0;
+       $footery = 0;
+
+       // mPD 3.0 Set the Page & Column where table starts
+       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
+               $tablestartpage = 'EVEN'; 
+       }
+       else if (($this->mirrorMargins) && (($this->page)%2==1)) {      // ODD
+               $tablestartpage = 'ODD'; 
+       }
+       else { $tablestartpage = ''; }
+       if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; }
+       else { $tablestartcolumn = ''; }
+
+       if ($this->cacheTables) { $fh = fopen($table['cache'], "r+b"); }
+       else { $fh = null; }
+
+       $y = $h = 0;
+       for( $i = 0; $i < $numrows ; $i++ ) { //Rows
+         if ($this->progressBar) { $this->UpdateProgressBar(7,intval(30 + ($i*40/$numrows)),' '); }    // *PROGRESS-BAR*
+         if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i] && $level==1) { 
+               $tablefooterrowheight += $table['hr'][$i]; 
+               $tablefooter[$i][0]['trbackground-images'] = $table['trbackground-images'][$i];
+               $tablefooter[$i][0]['trgradients'] = $table['trgradients'][$i];
+               $tablefooter[$i][0]['trbgcolor'] = $table['bgcolor'][$i];
+               for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns
+                       if (isset($cells[$i][$j]) && $cells[$i][$j]) {
+                               if ($this->cacheTables) {
+                                       $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                               }
+                               else 
+                                       $cell = &$cells[$i][$j];
+                               if ($split) { 
+                                       if ($table['colPg'][$j] != $splitpg) { continue; }
+                                       list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh); 
+                                       $js = $j - $startcol;
+                               }
+                               else { 
+                                       list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh); 
+                                       $js = $j;
+                               }
+
+                               list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh);  
+                               $x += $x0;
+                               $y += $y0;
+                               //Get info of tfoot ==>> table footer
+                               $tablefooter[$i][$js]['x'] = $x;
+                               $tablefooter[$i][$js]['y'] = $y;
+                               $tablefooter[$i][$js]['h'] = $h;
+                               $tablefooter[$i][$js]['w'] = $w;
+                               if (isset($cell['textbuffer'])) { $tablefooter[$i][$js]['textbuffer'] = $cell['textbuffer']; }
+                               else { $tablefooter[$i][$js]['textbuffer'] = ''; }
+                               $tablefooter[$i][$js]['a'] = $cell['a'];
+                               $tablefooter[$i][$js]['R'] = $cell['R'];
+                               $tablefooter[$i][$js]['va'] = $cell['va'];
+                               $tablefooter[$i][$js]['mih'] = $cell['mih'];
+                               $tablefooter[$i][$js]['gradient'] = $cell['gradient'];  // *BACKGROUNDS*
+                               $tablefooter[$i][$js]['background-image'] = $cell['background-image'];  // *BACKGROUNDS*
+                               //CELL FILL BGCOLOR
+                               if (!$this->simpleTables){
+                                       if ($this->packTableData) {
+                                               $c = $this->_unpackCellBorder($cell['borderbin']);
+                                               $tablefooter[$i][$js]['border'] = $c['border'];
+                                               $tablefooter[$i][$js]['border_details'] = $c['border_details'];
+                                       }
+                                       else {
+                                               $tablefooter[$i][$js]['border'] = $cell['border'];
+                                               $tablefooter[$i][$js]['border_details'] = $cell['border_details'];
+                                       }
+                               }
+                               else if ($this->simpleTables){
+                                       $tablefooter[$i][$js]['border'] = $table['simple']['border'];
+                                       $tablefooter[$i][$js]['border_details'] = $table['simple']['border_details'];
+                               }
+                               $tablefooter[$i][$js]['bgcolor'] = $cell['bgcolor'];
+                               $tablefooter[$i][$js]['padding'] = $cell['padding'];
+                               $tablefooter[$i][$js]['rowspan'] = $cell['rowspan'];
+                               $tablefooter[$i][$js]['colspan'] = $cell['colspan'];
+                       }
+               }
+         }
+       }
+
+       if ($level==1) { $this->_out('___TABLE___BACKGROUNDS'.date('jY')); }
+       $tableheaderadj = 0;
+       $tablefooteradj = 0;
+
+       $tablestartpageno = $this->page;
+
+       //Draw Table Contents and Borders
+       for( $i = 0; $i < $numrows ; $i++ ) { //Rows
+         if ($split && $startrow > 0) { 
+               $thnr = (isset($table['is_thead']) ? count($table['is_thead']) : 0);
+               if ($i >= $thnr && $i < $startrow) { continue; }
+               if ($i == $startrow){ $returny = $rety - $tableheaderrowheight; }
+         }
+
+         // Get Maximum row/cell height in row - including rowspan>1 + 1 overlapping
+         $maxrowheight = $this->_tableGetMaxRowHeight($table, $i, $fh);
+
+         $skippage = false;
+         $newpagestarted = false;
+         for( $j = $startcol ; $j < $numcols ; $j++ ) { //Columns
+               if ($split) { 
+                       if ($table['colPg'][$j] > $splitpg) { break; }
+                       $lastCol = $j; 
+               }
+               if (isset($cells[$i][$j]) && $cells[$i][$j]) {
+                       if ($this->cacheTables) {
+                               $cell = $this->_uncacheCell($table['cells'][$i][$j], '', $fh);
+                       }
+                       else 
+                               $cell = &$cells[$i][$j];
+                       if ($split) { 
+                               $lastCol = $j + (isset($cell['colspan']) ? ($cell['colspan']-1) : 0) ; 
+                               list($x,$w) = $this->_splitTableGetWidth($table, $i, $j, $fh); 
+                       }
+                       else { list($x,$w) = $this->_tableGetWidth($table, $i, $j, $fh); }
+
+                       list($y,$h) = $this->_tableGetHeight($table, $i, $j, $fh);
+                       $x += $x0;
+                       $y += $y0;
+                       $y -= $returny;
+
+                       if ($table['borders_separate']) { 
+                         if (!empty($tablefooter) || $i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)  || (!isset($cell['rowspan']) && ($i+1) == $numrows) ) {
+                               $extra = $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
+                               //$extra = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
+                         }
+                         else {
+                               $extra = $table['border_spacing_V']/2; 
+                         }
+                       }
+                       else { $extra = $table['max_cell_border_width']['B']/2; }
+
+                       if ($j==$startcol  && ((($y + $maxrowheight + $extra ) > ($pagetrigger+0.001)) || (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && ($y + $maxrowheight + $tablefooterrowheight + $extra) > $pagetrigger) && ($this->tableLevel==1 && $i < ($numrows - $table['headernrows']))) && ($y0 >0 || $x0 > 0) && !$this->InFooter && $this->autoPageBreak ) {
+
+                               if (!$skippage) {
+                                       $finalSpread = true;
+                                       $firstSpread = true; 
+                                       if ($split) {
+                                               for($t=$startcol; $t<$numcols; $t++) {
+                                                       // Are there more columns to print on a next page?
+                                                       if ($table['colPg'][$t] > $splitpg) {
+                                                               $finalSpread = false;
+                                                               break;
+                                                       }
+                                               }
+                                               if ($startcol>0) { $firstSpread = false; }
+                                       }
+
+                               if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) { 
+                                               $this->y = $y;
+                                               $ya = $this->y;
+                                               $this->TableHeaderFooter($tablefooter,$tablestartpage,$tablestartcolumn,'F',$level, $firstSpread, $finalSpread);
+                                               if ($this->table_rotate) {
+                                                       $this->tbrot_h += $this->y - $ya ;
+                                               }
+                                               $tablefooteradj = $this->y - $ya ;
+                                       }
+                                       $y -= $y0;
+                                       $returny += $y;
+
+                                       $oldcolumn = $this->CurrCol;
+                                       if ($this->AcceptPageBreak()) {
+                                               $newpagestarted = true;
+                                               $this->y = $y + $y0;
+
+                                               // Move down to account for border-spacing or 
+                                               // extra half border width in case page breaks in middle
+                                               if($i>0 && !$this->table_rotate && $level==1 && !$this->ColActive) {
+                                                       if ($table['borders_separate']) { 
+                                                               $adv = $table['border_spacing_V']/2; 
+                                                               // If table footer
+                                                               if (($this->keepColumns || !$this->ColActive) && !empty($tablefooter) && $i > 0 ) { 
+                                                                       $adv += ($table['padding']['B'] + $table['border_details']['B']['w']); 
+                                                               }
+                                                       }
+                                                       else { 
+                                                               $maxbwtop = 0;
+                                                               $maxbwbottom = 0;
+                                                               if (!$this->simpleTables){
+                                                                       if (!empty($tablefooter)) { $maxbwbottom = $table['max_cell_border_width']['B']; }
+                                                                       else { 
+                                                                          $brow = $i-1; 
+                                                                          for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
+                                                                               if (isset($cells[$brow][$ctj]) && $cells[$brow][$ctj]) {
+                                                                                       if ($this->cacheTables) {
+                                                                                               $cadj = $this->_uncacheCell($table['cells'][$brow][$ctj], '', $fh);
+                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']);
+                                                                                       }
+                                                                                       else if ($this->packTableData) {
+                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$brow][$ctj]['borderbin']);
+                                                                                       }
+                                                                                       else {
+                                                                                               $bb = $cells[$brow][$ctj]['border_details']['B']['w'];
+                                                                                       }
+                                                                                       $maxbwbottom = max($maxbwbottom , $bb); 
+                                                                               }
+                                                                          }
+                                                                       }
+                                                                       if (!empty($tableheader)) { $maxbwtop = $table['max_cell_border_width']['T']; }
+                                                                       else { 
+                                                                          $trow = $i-1; 
+                                                                          for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
+                                                                               if (isset($cells[$trow][$ctj]) && $cells[$trow][$ctj]) {
+                                                                                       if ($this->cacheTables) {
+                                                                                               $cadj = $this->_uncacheCell($table['cells'][$trow][$ctj], '', $fh);
+                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cadj['borderbin']);
+                                                                                       }
+                                                                                       else if ($this->packTableData) {
+                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$trow][$ctj]['borderbin']);
+                                                                                       }
+                                                                                       else {
+                                                                                               $bt = $cells[$trow][$ctj]['border_details']['T']['w'];
+                                                                                       }
+                                                                                       $maxbwtop = max($maxbwtop , $bt);
+                                                                               }
+                                                                          }
+                                                                       }
+                                                               }
+                                                               else if ($this->simpleTables){
+                                                                       $maxbwtop = $table['simple']['border_details']['T']['w'];
+                                                                       $maxbwbottom = $table['simple']['border_details']['B']['w']; 
+                                                               }
+                                                               $adv = $maxbwbottom /2;
+                                                       }
+                                                       $this->y += $adv;
+                                               }
+
+                                               // Rotated table split over pages - needs this->y for borders/backgrounds
+                                               if($i>0 && $this->table_rotate && $level==1) {
+                               //                      $this->y = $y0 + $this->tbrot_w;
+                                               }
+
+                                               if ($this->tableClipPath ) { $this->_out("Q"); }
+
+                                               $bx = $x0;
+                                               $by = $y0;
+
+                                               if ($table['borders_separate']) { 
+                                                       $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2); 
+                                                       if ($tablestartpageno != $this->page) { // IF already broken across a previous pagebreak
+                                                               $by += $table['max_cell_border_width']['T']/2; 
+                                                               if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); }
+                                                       }
+                                                       else { 
+                                                               $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2); 
+                                                       }
+                                               }
+
+                                               else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; }     
+       
+                                               $by -= $tableheaderadj;
+                                               $bh = $this->y - $by + $tablefooteradj;
+                                               if (!$table['borders_separate']) { $bh -= $adv ; }
+                                               if ($split) { 
+                                                       $bw = 0;
+                                                       for($t=$startcol; $t<$numcols; $t++) {
+                                                               if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; }
+                                                               if ($table['colPg'][$t] > $splitpg) { break; }
+                                                       }
+                                                       if ($table['borders_separate']) { 
+                                                               if ($firstSpread) { 
+                                                                       $bw += $table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']; 
+                                                               }
+                                                               else {
+                                                                       $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); 
+                                                                       $bw += $table['border_spacing_H']; 
+                                                               }
+                                                               if ($finalSpread) { 
+                                                                       $bw += $table['padding']['R'] + $table['border_details']['R']['w']/2 + $table['border_spacing_H']; 
+                                                               }
+                                                       }
+                                               }
+                                               else {
+                                                       $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+                                               }
+
+                                               // mPDF 5.4.16
+                                       if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tablefooter) && $i > 0 && $table['border_details']['B']['w']) {
+                                                       $prevDrawColor = $this->DrawColor;
+                                                       $lw = $this->LineWidth;
+                                                       $this->SetLineWidth($this->splitTableBorderWidth);
+                                                       $this->SetDColor($table['border_details']['B']['c']);   
+                                                       $this->SetLineJoin(0);
+                                                       $this->SetLineCap(0);
+                                                       $blx = $bx;
+                                                       $blw = $bw;
+                                                       if (!$table['borders_separate']) { 
+                                                               $blx -= ($table['max_cell_border_width']['L']/2);
+                                                               $blw += ($table['max_cell_border_width']['L']/2 + $table['max_cell_border_width']['R']/2);
+                                                       }
+                                                       $this->Line($blx,$this->y+($this->splitTableBorderWidth/2),$blx+$blw,$this->y+($this->splitTableBorderWidth/2));
+                                                       $this->DrawColor = $prevDrawColor;
+                                                       $this->_out($this->DrawColor);
+                                                       $this->SetLineWidth($lw);
+                                                       $this->SetLineJoin(2);
+                                                       $this->SetLineCap(2);
+                                               } 
+
+                                               if (!$this->ColActive && ($i > 0 || $j > 0)) {
+                                                       if (isset($table['bgcolor'][-1])) { 
+                                                               $color = $this->ConvertColor($table['bgcolor'][-1]);
+                                                               if ($color) {
+                                                                  if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; }
+                                                                  $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color);
+                                                               }
+                                                       }
+
+/*-- BACKGROUNDS --*/
+                                                       if (isset($table['gradient'])) { 
+                                                               $g = $this->grad->parseBackgroundGradient($table['gradient']);
+                                                               if ($g) {
+                                                                  $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                                               }
+                                                       }
+
+                                                       if (isset($table['background-image'])) { 
+                                                          if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) {
+                                                               $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] );
+                                                               if ($g) {
+                                                                  $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                                               }
+                                                          }
+                                                          else { 
+                                                               $image_id = $table['background-image']['image_id'];
+                                                               $orig_w = $table['background-image']['orig_w'];
+                                                               $orig_h = $table['background-image']['orig_h'];
+                                                               $x_pos = $table['background-image']['x_pos'];
+                                                               $y_pos = $table['background-image']['y_pos'];
+                                                               $x_repeat = $table['background-image']['x_repeat'];
+                                                               $y_repeat = $table['background-image']['y_repeat'];
+                                                               $resize = $table['background-image']['resize'];
+                                                               $opacity = $table['background-image']['opacity'];
+                                                               $itype = $table['background-image']['itype'];
+                                                               $this->tableBackgrounds[$level*9+2][] = array('x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
+                                                          }
+                                                       }
+/*-- END BACKGROUNDS --*/
+                                               }
+
+                                               // $this->AcceptPageBreak() has moved tablebuffer to $this->pages content
+                                               if ($this->tableBackgrounds) {
+                                                  $s = $this->PrintTableBackgrounds();
+                                                  if ($this->bufferoutput) {
+                                                       $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->headerbuffer);
+                                                       $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->headerbuffer );
+                                                  }
+                                                  else {
+                                                       $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+                                                       $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->pages[$this->page]);
+                                                  }
+                                                  $this->tableBackgrounds = array();
+                                               }
+
+                                               if ($split) {
+                                                       if ($i == 0 && $j == 0) { $y0 = -1; }
+                                                       else if ($finalSpread) { 
+                                                               $splitpg = 0;
+                                                               $startcol = 0;
+                                                               $startrow = $i;
+                                                       }
+                                                       else {
+                                                               $splitpg++;
+                                                               $startcol = $t;
+                                                               $returny -= $y;
+                                                       }
+                                                       return array(false, $startrow, $startcol, $splitpg, $returny, $y0);
+                                               }
+
+                                               $this->AddPage($this->CurOrientation);
+
+                                               $this->_out('___TABLE___BACKGROUNDS'.date('jY'));
+
+
+                                               if ($this->tableClipPath ) { $this->_out($this->tableClipPath); }
+
+                                               // Added to correct for OddEven Margins
+                                               $x= $x + $this->MarginCorrection;
+                                               $x0= $x0 + $this->MarginCorrection;
+
+                                               // mPDF 5.4.16
+                                       if ($this->splitTableBorderWidth && ($this->keepColumns || !$this->ColActive) && empty($tableheader) && $i > 0 && $table['border_details']['T']['w'] ) {
+                                                       $prevDrawColor = $this->DrawColor;
+                                                       $lw = $this->LineWidth;
+                                                       $this->SetLineWidth($this->splitTableBorderWidth);
+                                                       $this->SetDColor($table['border_details']['T']['c']);   
+                                                       $this->SetLineJoin(0);
+                                                       $this->SetLineCap(0);
+                                                       $blx += $this->MarginCorrection;
+                                                       $this->Line($blx,$this->y-($this->splitTableBorderWidth/2),$blx+$blw,$this->y-($this->splitTableBorderWidth/2));
+                                                       $this->DrawColor = $prevDrawColor;
+                                                       $this->_out($this->DrawColor);
+                                                       $this->SetLineWidth($lw);
+                                                       $this->SetLineJoin(2);
+                                                       $this->SetLineCap(2);
+                                               } 
+
+                                               // Move down to account for half of top border-spacing or 
+                                               // extra half border width in case page was broken in middle
+                                               if($i>0 && !$this->table_rotate && $level==1 && $table['headernrows']==0) {
+                                                       if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2; }
+                                                       else { 
+                                                               $maxbwtop = 0;
+                                                               for( $ctj = 0 ; $ctj < $numcols ; $ctj++ ) {
+                                                                       if (isset($cells[$i][$ctj]) && $cells[$i][$ctj]) {
+                                                                               if (!$this->simpleTables){
+                                                                                       if ($this->cacheTables) {
+                                                                                               $celltj = $this->_uncacheCell($table['cells'][$i][$ctj], '', $fh);
+                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($celltj['borderbin']);
+                                                                                       }
+                                                                                       else if ($this->packTableData) {
+                                                                                               list($bt,$br,$bb,$bl) = $this->_getBorderWidths($cells[$i][$ctj]['borderbin']);
+                                                                                       }
+                                                                                       else {
+                                                                                               $bt = $cells[$i][$ctj]['border_details']['T']['w'];
+                                                                                       }
+                                                                                       $maxbwtop = max($maxbwtop, $bt); 
+                                                                               }
+                                                                               else if ($this->simpleTables){
+                                                                                       $maxbwtop = max($maxbwtop, $table['simple']['border_details']['T']['w']); 
+                                                                               }
+                                                                       }
+                                                               }
+                                                               $adv = $maxbwtop /2;
+                                                       }
+                                                       $this->y += $adv;
+                                               }
+
+
+                                               if ($this->table_rotate) {
+                                                       $this->tbrot_x0 = $this->lMargin  + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['padding_left'] + $this->blk[$this->blklvl]['border_left']['w'];
+                                                       if ($table['borders_separate']) { $this->tbrot_h = $table['margin']['T'] + $table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2; }
+                                                       else { $this->tbrot_h = $table['margin']['T'] + $table['max_cell_border_width']['T'] ; }
+                                                       $this->tbrot_y0 = $this->y;
+                                                       $pagetrigger = $y0 - $tableheaderadj + ($this->blk[$this->blklvl]['inner_width']);
+                                               }
+                                               else {
+                                                       $pagetrigger = $this->PageBreakTrigger;
+                                               }
+
+                                               if ($this->kwt_saved && $level==1) {
+                                                       $this->kwt_moved = true;
+                                               }
+
+
+                                               // Disable Table header repeat if Keep Block together
+                                       if (!$this->keep_block_together && !empty($tableheader)) {
+                                                       $ya = $this->y;
+                                                       $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level);
+                                                       if ($this->table_rotate) {
+                                                               $this->tbrot_h = $this->y - $ya ;
+                                                       }
+                                                       $tableheaderadj = $this->y - $ya ;
+                                               }
+
+                                               else if ($i==0 && !$this->keep_block_together && !$this->table_rotate && $level==1 && !$this->ColActive) {
+                                                       // Advance down page
+                                                       if ($table['borders_separate']) { $adv = $table['border_spacing_V']/2 + $table['border_details']['T']['w'] + $table['padding']['T'];  }
+                                                       else { $adv = $table['max_cell_border_width']['T'] /2 ; }
+                                                       if ($adv) { 
+                                                          if ($this->table_rotate) {
+                                                               $this->y += ($adv);
+                                                          }
+                                                          else {
+                                                               $this->DivLn($adv,$this->blklvl,true); 
+                                                          }
+                                                       }
+                                               }
+
+                                               $outerfilled = 0;
+                                               $y = $y0 = $this->y;
+                                       }
+
+/*-- COLUMNS --*/
+                                       // COLS
+                                       // COLUMN CHANGE
+                                       if ($this->CurrCol != $oldcolumn) {
+                                               // Added to correct for Columns
+                                               $x += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+                                               $x0 += $this->ChangeColumn * ($this->ColWidth+$this->ColGap);
+                                               if ($this->CurrCol == 0) {      // just added a page - possibly with tableheader
+                                                       $y0 = $this->y;         // this->y0 is global used by Columns - $y0 is internal to tablewrite
+                                               }
+                                               else {
+                                                       $y0 = $this->y0;        // this->y0 is global used by Columns - $y0 is internal to tablewrite
+                                               }
+                                               $y = $y0;
+                                               $outerfilled = 0;
+                                       if ($this->CurrCol != 0 && ($this->keepColumns && $this->ColActive) && !empty($tableheader) && $i > 0 ) { 
+                                                       $this->x = $x; 
+                                                       $this->y = $y;
+                                                       $this->TableHeaderFooter($tableheader,$tablestartpage,$tablestartcolumn,'H',$level);
+                                                       $y0 = $y=$this->y;
+                                               }
+                                       }
+/*-- END COLUMNS --*/
+                               }
+                               $skippage = true;
+                       }
+
+                       $this->x = $x; 
+                       $this->y = $y;
+
+                       if ($this->kwt_saved && $level==1) {
+                               $this->printkwtbuffer();
+                               $x0 = $x = $this->x; 
+                               $y0 = $y = $this->y;
+                               $this->kwt_moved = false;
+                               $this->kwt_saved = false;
+                       }
+
+
+                       // Set the Page & Column where table actually starts
+                       if ($i==0 && $j==0 && $level==1) {
+                               if (($this->mirrorMargins) && (($this->page)%2==0)) {                           // EVEN
+                                       $tablestartpage = 'EVEN'; 
+                               }
+                               else if (($this->mirrorMargins) && (($this->page)%2==1)) {                              // ODD
+                                       $tablestartpage = 'ODD'; 
+                               }
+                               else { $tablestartpage = ''; }
+                               $tablestartpageno = $this->page;
+                               if ($this->ColActive) { $tablestartcolumn = $this->CurrCol; }   // *COLUMNS*
+                       }
+
+
+                       //ALIGN
+                       $align = $cell['a'];
+
+
+/*-- COLUMNS --*/
+                       // If outside columns, this is done in PaintDivBB
+                       if ($this->ColActive) {
+                        //OUTER FILL BGCOLOR of DIVS
+                        if ($this->blklvl > 0 && ($j==0) && !$this->table_rotate && $level==1) {
+                         $firstblockfill = $this->GetFirstBlockFill();
+                         if ($firstblockfill && $this->blklvl >= $firstblockfill) {
+                          $divh = $maxrowheight;
+                          // Last row
+                          if ((!isset($cell['rowspan']) && $i == $numrows-1) || (isset($cell['rowspan']) && (($i == $numrows-1 && $cell['rowspan']<2) || ($cell['rowspan']>1 && ($i + $cell['rowspan']-1) == $numrows-1)))) {  // mPDF 5.6.54
+                               if ($table['borders_separate']) { 
+                                       $adv = $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; 
+                               }
+                               else { 
+                                       $adv = $table['margin']['B'] + $table['max_cell_border_width']['B']/2; 
+                               }
+                               $divh += $adv;  //last row: fill bottom half of bottom border (y advanced at end)
+                          }
+
+                          if (($this->y + $divh) > $outerfilled ) {    // if not already painted by previous rowspan
+                               $bak_x = $this->x;
+                               $bak_y = $this->y;
+                               if ($outerfilled > $this->y) { 
+                                       $divh = ($this->y + $divh) - $outerfilled;
+                                       $this->y = $outerfilled; 
+                               }
+
+                               $this->DivLn($divh,-3,false);
+                               $outerfilled = $this->y + $divh;
+                               // Reset current block fill
+                               $bcor = $this->blk[$this->blklvl]['bgcolorarray'];
+                               if ($bcor ) $this->SetFColor($bcor);
+                               $this->x = $bak_x;
+                               $this->y = $bak_y;
+                           }
+                         }
+                        }
+                       }
+
+
+                       //TABLE BACKGROUND FILL BGCOLOR - for cellSpacing
+                       if ($this->ColActive) {
+                        if ($table['borders_separate']) { 
+                          $fill = isset($table['bgcolor'][-1]) ? $table['bgcolor'][-1] : 0;
+                          if ($fill) {
+                               $color = $this->ConvertColor($fill);
+                               if ($color) {
+                                       $xadj = ($table['border_spacing_H']/2);
+                                       $yadj = ($table['border_spacing_V']/2);
+                                       $wadj = $table['border_spacing_H'];
+                                       $hadj = $table['border_spacing_V'];
+                                       if ($i == 0) {          // Top
+                                               $yadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
+                                               $hadj += $table['padding']['T'] + $table['border_details']['T']['w'] ;
+                                       }
+                                       if ($j == 0) {          // Left
+                                               $xadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
+                                               $wadj += $table['padding']['L'] + $table['border_details']['L']['w'] ;
+                                       }
+                                       if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)  || (!isset($cell['rowspan']) && ($i+1) == $numrows)) {        // Bottom
+                                               $hadj += $table['padding']['B'] + $table['border_details']['B']['w'] ;
+                                       }
+                                       if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols)  || (!isset($cell['colspan']) && ($j+1) == $numcols)) {        // Right
+                                               $wadj += $table['padding']['R'] + $table['border_details']['R']['w'] ;
+                                       }
+                                       $this->SetFColor($color);
+                                       $this->Rect($x - $xadj, $y - $yadj, $w + $wadj, $h + $hadj, 'F');
+                               }
+                          }
+                        }
+                       }
+/*-- END COLUMNS --*/
+
+                       if ($table['empty_cells']!='hide' || !empty($cell['textbuffer']) || (isset($cell['nestedcontent']) && $cell['nestedcontent']) || !$table['borders_separate']  ) { $paintcell = true; }
+                       else { $paintcell = false; } 
+
+                       //Set Borders
+                       $bord = 0; 
+                       $bord_det = array();
+
+                       if (!$this->simpleTables){
+                               if ($this->packTableData) {
+                                  if ($cell['borderbin']) {
+                                       $c = $this->_unpackCellBorder($cell['borderbin']);
+                                       $bord = $c['border'];
+                                       $bord_det = $c['border_details'];
+                                  }
+                               }
+                               else if ($cell['border']) {
+                                       $bord = $cell['border'];
+                                       $bord_det = $cell['border_details'];
+                               }
+                       }
+                       else if ($this->simpleTables){
+                               if ($table['simple']['border']) {
+                                       $bord = $table['simple']['border'];
+                                       $bord_det = $table['simple']['border_details'];
+                               }
+                       }
+
+                       //TABLE ROW OR CELL FILL BGCOLOR
+                       $fill = 0;
+                       if (isset($cell['bgcolor']) && $cell['bgcolor'] && $cell['bgcolor']!='transparent') { 
+                               $fill = $cell['bgcolor'];
+                               $leveladj = 6;
+                       }
+                       else if (isset($table['bgcolor'][$i]) && $table['bgcolor'][$i] && $table['bgcolor'][$i]!='transparent') { // Row color
+                               $fill = $table['bgcolor'][$i];
+                               $leveladj = 3;
+                       }
+                       if ($fill && $paintcell) {
+                               $color = $this->ConvertColor($fill);
+                               if ($color) {
+                                       if ($table['borders_separate']) { 
+                                          if ($this->ColActive) {
+                                               $this->SetFColor($color);
+                                               $this->Rect($x+ ($table['border_spacing_H']/2), $y+ ($table['border_spacing_V']/2), $w- $table['border_spacing_H'], $h- $table['border_spacing_V'], 'F');
+                                          }
+                                          else {
+                                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>($x + ($table['border_spacing_H']/2)), 'y'=>($y + ($table['border_spacing_V']/2)), 'w'=>($w - $table['border_spacing_H']), 'h'=>($h - $table['border_spacing_V']), 'col'=>$color);
+                                          }
+                                       }
+                                       else { 
+                                          if ($this->ColActive) {
+                                               $this->SetFColor($color);
+                                               $this->Rect($x, $y, $w, $h, 'F');
+                                          }
+                                          else {
+                                               $this->tableBackgrounds[$level*9+$leveladj][] = array('gradient'=>false, 'x'=>$x, 'y'=>$y, 'w'=>$w, 'h'=>$h, 'col'=>$color);
+                                          }
+                                       }
+                               }
+                       }
+
+/*-- BACKGROUNDS --*/
+                       if (isset($cell['gradient']) && $cell['gradient'] && $paintcell){
+                               $g = $this->grad->parseBackgroundGradient($cell['gradient']);
+                               if ($g) {
+                                 if ($table['borders_separate']) { 
+                                       $px = $x+ ($table['border_spacing_H']/2);
+                                       $py = $y+ ($table['border_spacing_V']/2);
+                                       $pw = $w- $table['border_spacing_H'];
+                                       $ph = $h- $table['border_spacing_V'];
+                                 }
+                                 else {
+                                       $px = $x;
+                                       $py = $y;
+                                       $pw = $w;
+                                       $ph = $h;
+                                 }
+                                 if ($this->ColActive) {
+                                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
+                                 }
+                                 else {
+                                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                 }
+                               }
+                       }
+
+                       if (isset($cell['background-image']) && $paintcell) {
+                         if ($cell['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $cell['background-image']['gradient'] )) {
+                               $g = $this->grad->parseMozGradient( $cell['background-image']['gradient'] );
+                               if ($g) {
+                                 if ($table['borders_separate']) { 
+                                       $px = $x+ ($table['border_spacing_H']/2);
+                                       $py = $y+ ($table['border_spacing_V']/2);
+                                       $pw = $w- $table['border_spacing_H'];
+                                       $ph = $h- $table['border_spacing_V'];
+                                 }
+                                 else {
+                                       $px = $x;
+                                       $py = $y;
+                                       $pw = $w;
+                                       $ph = $h;
+                                 }
+                                 if ($this->ColActive) {
+                                       $this->grad->Gradient($px, $py, $pw, $ph, $g['type'], $g['stops'], $g['colorspace'], $g['coords'], $g['extend']);
+                                 }
+                                 else {
+                                       $this->tableBackgrounds[$level*9+7][] = array('gradient'=>true, 'x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                 }
+                               }
+                         }
+                         else if ($cell['background-image']['image_id']) {     // Background pattern
+                               $n = count($this->patterns)+1;
+                               if ($table['borders_separate']) { 
+                                       $px = $x+ ($table['border_spacing_H']/2);
+                                       $py = $y+ ($table['border_spacing_V']/2);
+                                       $pw = $w- $table['border_spacing_H'];
+                                       $ph = $h- $table['border_spacing_V'];
+                               }
+                               else {
+                                       $px = $x;
+                                       $py = $y;
+                                       $pw = $w;
+                                       $ph = $h;
+                               }
+                               if ($this->ColActive) {
+                                       list($orig_w, $orig_h, $x_repeat, $y_repeat) = $this->_resizeBackgroundImage($cell['background-image']['orig_w'], $cell['background-image']['orig_h'], $pw, $ph, $cell['background-image']['resize'], $cell['background-image']['x_repeat'], $cell['background-image']['y_repeat']);
+                                       $this->patterns[$n] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'pgh'=>$this->h, 'image_id'=>$cell['background-image']['image_id'], 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$cell['background-image']['x_pos'] , 'y_pos'=>$cell['background-image']['y_pos'] , 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat);
+                                       if ($cell['background-image']['opacity']>0 && $cell['background-image']['opacity']<1) { $opac = $this->SetAlpha($cell['background-image']['opacity'],'Normal',true); }
+                                       else { $opac = ''; }
+                                       $this->_out(sprintf('q /Pattern cs /P%d scn %s %.3F %.3F %.3F %.3F re f Q', $n, $opac, $px*_MPDFK, ($this->h-$py)*_MPDFK, $pw*_MPDFK, -$ph*_MPDFK));
+                               }
+                               else {
+                                       $image_id = $cell['background-image']['image_id'];
+                                       $orig_w = $cell['background-image']['orig_w'];
+                                       $orig_h = $cell['background-image']['orig_h'];
+                                       $x_pos = $cell['background-image']['x_pos'];
+                                       $y_pos = $cell['background-image']['y_pos'];
+                                       $x_repeat = $cell['background-image']['x_repeat'];
+                                       $y_repeat = $cell['background-image']['y_repeat'];
+                                       $resize = $cell['background-image']['resize'];
+                                       $opacity = $cell['background-image']['opacity'];
+                                       $itype = $cell['background-image']['itype'];
+                                       $this->tableBackgrounds[$level*9+8][] = array('x'=>$px, 'y'=>$py, 'w'=>$pw, 'h'=>$ph, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
+                               }
+                         }
+                       }
+/*-- END BACKGROUNDS --*/
+
+                        if (isset($cell['colspan']) && $cell['colspan']>1) { $ccolsp = $cell['colspan']; }
+                        else { $ccolsp = 1; }
+                        if (isset($cell['rowspan']) && $cell['rowspan']>1) { $crowsp = $cell['rowspan']; }
+                        else { $crowsp = 1; }
+
+
+                       // but still need to do this for repeated headers...
+                       if (!$table['borders_separate'] && $this->tabletheadjustfinished && !$this->simpleTables){
+                         if (isset($table['topntail']) && $table['topntail']) {
+                                       $bord_det['T'] = $this->border_details($table['topntail']);
+                                       $bord_det['T']['w'] /= $this->shrin_k;
+                                       $this->setBorder($bord, _BORDER_TOP); 
+                         }
+                         if (isset($table['thead-underline']) && $table['thead-underline']) {
+                                       $bord_det['T'] = $this->border_details($table['thead-underline']);
+                                       $bord_det['T']['w'] /= $this->shrin_k;
+                                       $this->setBorder($bord, _BORDER_TOP); 
+                         }
+                       }
+
+
+                       //Get info of first row ==>> table header
+                       //Use > 1 row if THEAD
+                       if (isset($table['is_thead'][$i]) && $table['is_thead'][$i] && $level==1) {
+                               if ($j==0) $tableheaderrowheight += $table['hr'][$i]; 
+                               $tableheader[$i][0]['trbackground-images'] = (isset($table['trbackground-images'][$i]) ? $table['trbackground-images'][$i] : null);
+                               $tableheader[$i][0]['trgradients'] = (isset($table['trgradients'][$i]) ? $table['trgradients'][$i] : null);
+                               $tableheader[$i][0]['trbgcolor'] = (isset($table['bgcolor'][$i]) ? $table['bgcolor'][$i] : null);
+                               $tableheader[$i][$j]['x'] = $x;
+                               $tableheader[$i][$j]['y'] = $y;
+                               $tableheader[$i][$j]['h'] = $h;
+                               $tableheader[$i][$j]['w'] = $w;
+                               if (isset($cell['textbuffer'])) { $tableheader[$i][$j]['textbuffer'] = $cell['textbuffer']; }
+                               else { $tableheader[$i][$j]['textbuffer'] = ''; }
+                               $tableheader[$i][$j]['a'] = $cell['a'];
+                               $tableheader[$i][$j]['R'] = $cell['R'];
+
+                               $tableheader[$i][$j]['va'] = $cell['va'];
+                               $tableheader[$i][$j]['mih'] = $cell['mih'];
+                               $tableheader[$i][$j]['gradient'] = (isset($cell['gradient']) ? $cell['gradient'] : null);       // *BACKGROUNDS*
+                               $tableheader[$i][$j]['background-image'] = (isset($cell['background-image']) ? $cell['background-image'] : null);       // *BACKGROUNDS*
+                               $tableheader[$i][$j]['rowspan'] = (isset($cell['rowspan']) ? $cell['rowspan'] : null);
+                               $tableheader[$i][$j]['colspan'] = (isset($cell['colspan']) ? $cell['colspan'] : null);
+                               $tableheader[$i][$j]['bgcolor'] = $cell['bgcolor'];
+
+                               if (!$this->simpleTables){
+                                       $tableheader[$i][$j]['border'] = $bord;
+                                       $tableheader[$i][$j]['border_details'] = $bord_det;
+                               }
+                               else if ($this->simpleTables){
+                                       $tableheader[$i][$j]['border'] = $table['simple']['border'];
+                                       $tableheader[$i][$j]['border_details'] = $table['simple']['border_details'];
+                               }
+                               $tableheader[$i][$j]['padding'] = $cell['padding'];
+                       }
+
+                       // CELL BORDER
+                       if ($bord || $bord_det) { 
+                               if ($table['borders_separate'] && $paintcell) {
+                                       $this->_tableRect($x + ($table['border_spacing_H']/2)+($bord_det['L']['w'] /2), $y+ ($table['border_spacing_V']/2)+($bord_det['T']['w'] /2), $w-$table['border_spacing_H']-($bord_det['L']['w'] /2)-($bord_det['R']['w'] /2), $h- $table['border_spacing_V']-($bord_det['T']['w'] /2)-($bord_det['B']['w']/2), $bord, $bord_det, false, $table['borders_separate']);
+                               }
+                               else if (!$table['borders_separate']) { 
+                                       $this->_tableRect($x, $y, $w, $h, $bord, $bord_det, true, $table['borders_separate']);  // true causes buffer
+                               }
+
+                       }
+
+                       //VERTICAL ALIGN
+                       if ($cell['R'] && INTVAL($cell['R']) > 0 && INTVAL($cell['R']) < 90 && isset($cell['va']) && $cell['va']!='B') { $cell['va']='B';}
+                       if (!isset($cell['va']) || $cell['va']=='M') $this->y += ($h-$cell['mih'])/2;
+                       elseif (isset($cell['va']) && $cell['va']=='B') $this->y += $h-$cell['mih'];
+
+                       // NESTED CONTENT 
+
+                       // TEXT (and nested tables)
+                       $this->divalign=$align;
+
+                       $this->divwidth=$w;
+                       if (!empty($cell['textbuffer'])) {
+                               if ($level==1) {
+                                       if (isset($table['is_tfoot'][$i]) && $table['is_tfoot'][$i]) {
+                                               if (preg_match('/{colsum([0-9]*)[_]*}/', $cell['textbuffer'][0][0], $m)) {
+                                                       $rep = sprintf("%01.".intval($m[1])."f", $this->colsums[$j]);
+                                                       $cell['textbuffer'][0][0] = preg_replace('/{colsum[0-9_]*}/', $rep ,$cell['textbuffer'][0][0]);
+                                               }
+                                       }
+                                       else if (!isset($table['is_thead'][$i])) { $this->colsums[$j] += floatval(preg_replace('/^[^0-9\.\,]*/','',$cell['textbuffer'][0][0])); }       // mPDF 5.6.66
+                               }
+                               $opy = $this->y;
+                               // mPDF ITERATION
+                               if ($this->iterationCounter) {
+                                  foreach($cell['textbuffer'] AS $k=>$t) {
+                                       if (preg_match('/{iteration ([a-zA-Z0-9_]+)}/',$t[0], $m)) {
+                                               $vname = '__'.$m[1].'_';
+                                               if (!isset($this->$vname)) { $this->$vname = 1; }
+                                               else { $this->$vname++; }
+                                               $cell['textbuffer'][$k][0] = preg_replace('/{iteration '.$m[1].'}/', $this->$vname, $cell['textbuffer'][$k][0]);
+                                       }
+                                  }
+                               }
+
+
+                               if ($cell['R']) {
+                                       $cellPtSize = $cell['textbuffer'][0][11] / $this->shrin_k;
+                                       if (!$cellPtSize) { $cellPtSize = $this->default_font_size; }
+                                       $cellFontHeight = ($cellPtSize/_MPDFK);
+                                       $opx = $this->x;
+                                       $angle = INTVAL($cell['R']);
+                                       // Only allow 45 to 89 degrees (when bottom-aligned) or exactly 90 or -90
+                                       if ($angle > 90) { $angle = 90; }
+                                       else if ($angle > 0 && $angle <45) { $angle = 45; }
+                                       else if ($angle < 0) { $angle = -90; }
+                                       $offset = ((sin(deg2rad($angle))) * 0.37 * $cellFontHeight);
+                                       if (isset($cell['a']) && $cell['a']=='R') { 
+                                               $this->x += ($w) + ($offset) - ($cellFontHeight/3) - ($cell['padding']['R'] + ($table['border_spacing_H']/2)); 
+                                       }
+                                       else if (!isset($cell['a']) || $cell['a']=='C') { 
+                                               $this->x += ($w/2) + ($offset); 
+                                       }
+                                       else { 
+                                               $this->x += ($offset) + ($cellFontHeight/3)+($cell['padding']['L'] +($table['border_spacing_H']/2)); 
+                                       }
+                                       $str = '';
+                                       foreach($cell['textbuffer'] AS $t) { $str .= $t[0].' '; }
+                                       $str = trim($str);
+                                       if (!isset($cell['va']) || $cell['va']=='M') { 
+                                               $this->y -= ($h-$cell['mih'])/2; //Undo what was added earlier VERTICAL ALIGN
+                                               if ($angle > 0) { $this->y += (($h-$cell['mih'])/2) + $cell['padding']['T'] + ($cell['mih']-($cell['padding']['T'] + $cell['padding']['B'])); }
+                                               else if ($angle < 0) { $this->y += (($h-$cell['mih'])/2)+ ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
+                                       }
+                                       elseif (isset($cell['va']) && $cell['va']=='B') { 
+                                               $this->y -= $h-$cell['mih']; //Undo what was added earlier VERTICAL ALIGN
+                                               if ($angle > 0) { $this->y += $h-($cell['padding']['B'] + ($table['border_spacing_V']/2)); }
+                                               else if ($angle < 0) { $this->y += $h-$cell['mih'] + ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
+                                       }
+                                       elseif (isset($cell['va']) && $cell['va']=='T') { 
+                                               if ($angle > 0) { $this->y += $cell['mih']-($cell['padding']['B'] + ($table['border_spacing_V']/2)); }
+                                               else if ($angle < 0) { $this->y += ($cell['padding']['T'] + ($table['border_spacing_V']/2)); }
+                                       }
+                                       $this->Rotate($angle,$this->x,$this->y);
+                                       $s_fs = $this->FontSizePt;
+                                       $s_f = $this->FontFamily;
+                                       $s_st = $this->FontStyle;
+                                       if (!empty($cell['textbuffer'][0][3])) { //Font Color
+                                               $cor = $cell['textbuffer'][0][3];
+                                               $this->SetTColor($cor); 
+                                       }
+                                       $s_str = $this->strike;
+                                       $this->strike = $cell['textbuffer'][0][8]; //Strikethrough
+                                       $this->SetFont($cell['textbuffer'][0][4],$cell['textbuffer'][0][2],$cellPtSize,true,true);
+                                       $this->Text($this->x,$this->y,$str);
+                                       $this->Rotate(0);
+                                       $this->SetFont($s_f,$s_st,$s_fs,true,true);
+                                       $this->SetTColor(0);
+                                       $this->strike = $s_str;
+                                       $this->x = $opx;
+                               }
+                               else {
+
+                                       if (!$this->simpleTables){
+                                          if ($bord_det) { 
+                                               $btlw = $bord_det['L']['w']; 
+                                               $btrw = $bord_det['R']['w']; 
+                                               $bttw = $bord_det['T']['w']; 
+                                          }
+                                          else { 
+                                               $btlw = 0; 
+                                               $btrw = 0; 
+                                               $bttw = 0; 
+                                          }
+                                          if ($table['borders_separate']) {
+                                               $xadj = $btlw + $cell['padding']['L'] +($table['border_spacing_H']/2);
+                                               $wadj = $btlw + $btrw + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H'];
+                                               $yadj = $bttw + $cell['padding']['T'] + ($table['border_spacing_H']/2);
+                                          }
+                                          else {
+                                               $xadj = $btlw/2 + $cell['padding']['L'];
+                                               $wadj = ($btlw + $btrw)/2 + $cell['padding']['L'] + $cell['padding']['R'];
+                                               $yadj = $bttw/2 + $cell['padding']['T'];
+                                          }
+                                       }
+                                       else if ($this->simpleTables){
+                                          if ($table['borders_separate']) {    // NB twice border width
+                                               $xadj = $table['simple']['border_details']['L']['w'] + $cell['padding']['L'] +($table['border_spacing_H']/2);
+                                               $wadj = $table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'] + $cell['padding']['L'] +$cell['padding']['R'] + $table['border_spacing_H'];
+                                               $yadj = $table['simple']['border_details']['T']['w'] + $cell['padding']['T'] + ($table['border_spacing_H']/2);
+                                          }
+                                          else {
+                                               $xadj = $table['simple']['border_details']['L']['w']/2 + $cell['padding']['L'];
+                                               $wadj = ($table['simple']['border_details']['L']['w'] + $table['simple']['border_details']['R']['w'])/2 + $cell['padding']['L'] + $cell['padding']['R'];
+                                               $yadj = $table['simple']['border_details']['T']['w']/2 + $cell['padding']['T'];
+                                          }
+                                       }
+                                       // mPDF 5.6.13
+                                       $this->decimal_offset = 0;
+                                       if(substr($cell['a'],0,1) == 'D') {
+                                               if ($cell['colspan'] > 1) { $this->divalign = $c['a'] = substr($cell['a'],2,1); }
+                                               else {
+                                                       $smax = $table['decimal_align'][$j]['maxs0'];
+                                                       $d_content = $table['decimal_align'][$j]['maxs0'] + $table['decimal_align'][$j]['maxs1'];
+                                                       $this->decimal_offset = $smax;
+                                                       $extra = ($w - $d_content - $wadj);
+                                                       if ($extra > 0) {
+                                                               if(substr($cell['a'],2,1) == 'R') { $this->decimal_offset += $extra; }
+                                                               else if(substr($cell['a'],2,1) == 'C') { $this->decimal_offset += ($extra)/2; }
+                                                       }
+                                               }
+                                       }
+                                       $this->divwidth=$w-$wadj;
+                                       if ($this->divwidth == 0) { $this->divwidth = 0.0001; }
+                                       $this->x += $xadj;
+                                       $this->y += $yadj;
+                                       $this->printbuffer($cell['textbuffer'],'',true);
+                               }
+                               $this->y = $opy;
+                       }
+
+/*-- BACKGROUNDS --*/
+                       if (!$this->ColActive) {
+                         if (isset($table['trgradients'][$i]) && ($j==0 || $table['borders_separate'])) {
+                               $g = $this->grad->parseBackgroundGradient($table['trgradients'][$i]);
+                               if ($g) {
+                                       $gx = $x0;
+                                       $gy = $y;
+                                       $gh = $h;
+                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+                                       if ($table['borders_separate']) { 
+                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
+                                               $s = '';
+                                               $clx = $x+ ($table['border_spacing_H']/2);
+                                               $cly = $y+ ($table['border_spacing_V']/2);
+                                               $clw = $w- $table['border_spacing_H'];
+                                               $clh = $h- $table['border_spacing_V'];
+                                               // Set clipping path
+                                               $s = ' q 0 w '; // Line width=0
+                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
+                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
+                                       }
+                                       else {
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                       }
+                               }
+                           }
+                           if (isset($table['trbackground-images'][$i]) && ($j==0 || $table['borders_separate'])) {
+                           if ($table['trbackground-images'][$i]['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['trbackground-images'][$i]['gradient'] )) {
+                               $g = $this->grad->parseMozGradient( $table['trbackground-images'][$i]['gradient'] );
+                               if ($g) {
+                                       $gx = $x0;
+                                       $gy = $y;
+                                       $gh = $h;
+                                       $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+                                       if ($table['borders_separate']) { 
+                                               $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
+                                               $s = '';
+                                               $clx = $x+ ($table['border_spacing_H']/2);
+                                               $cly = $y+ ($table['border_spacing_V']/2);
+                                               $clw = $w- $table['border_spacing_H'];
+                                               $clh = $h- $table['border_spacing_V'];
+                                               // Set clipping path
+                                               $s = ' q 0 w '; // Line width=0
+                                               $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL before the arc
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
+                                               $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
+                                               $s .= ' W n ';  // Ends path no-op & Sets the clipping path
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>$s);
+                                       }
+                                       else {
+                                               $this->tableBackgrounds[$level*9+4][] = array('gradient'=>true, 'x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                                       }
+                               }
+                           }
+                           else {
+                               $image_id = $table['trbackground-images'][$i]['image_id'];
+                               $orig_w = $table['trbackground-images'][$i]['orig_w'];
+                               $orig_h = $table['trbackground-images'][$i]['orig_h'];
+                               $x_pos = $table['trbackground-images'][$i]['x_pos'];
+                               $y_pos = $table['trbackground-images'][$i]['y_pos'];
+                               $x_repeat = $table['trbackground-images'][$i]['x_repeat'];
+                               $y_repeat = $table['trbackground-images'][$i]['y_repeat'];
+                               $resize = $table['trbackground-images'][$i]['resize'];
+                               $opacity = $table['trbackground-images'][$i]['opacity'];
+                               $itype = $table['trbackground-images'][$i]['itype'];
+                               $clippath = '';
+                               $gx = $x0;
+                               $gy = $y;
+                               $gh = $h;
+                               $gw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+                               if ($table['borders_separate']) { 
+                                       $gw -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['padding']['R'] + $table['border_details']['R']['w'] + $table['border_spacing_H']); 
+                                       $s = '';
+                                       $clx = $x + ($table['border_spacing_H']/2);
+                                       $cly = $y + ($table['border_spacing_V']/2);
+                                       $clw = $w - $table['border_spacing_H'];
+                                       $clh = $h - $table['border_spacing_V'];
+                                       // Set clipping path
+                                       $s = ' q 0 w '; // Line width=0
+                                       $s .= sprintf('%.3F %.3F m ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // start point TL 
+                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);    // line to BL
+                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly+$clh))*_MPDFK);       // line to BR
+                                       $s .= sprintf('%.3F %.3F l ', ($clx+$clw)*_MPDFK, ($this->h-($cly))*_MPDFK);    // line to TR
+                                       $s .= sprintf('%.3F %.3F l ', ($clx)*_MPDFK, ($this->h-($cly))*_MPDFK); // line to TL
+                                       $s .= ' W n ';  // Ends path no-op & Sets the clipping path
+                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx + ($table['border_spacing_H']/2), 'y'=>$gy + ($table['border_spacing_V']/2), 'w'=>$gw - $table['border_spacing_V'], 'h'=>$gh - $table['border_spacing_H'], 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>$s, 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
+                               }
+                               else {
+                                       $this->tableBackgrounds[$level*9+5][] = array('x'=>$gx, 'y'=>$gy, 'w'=>$gw, 'h'=>$gh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
+                               }
+                           }
+                          }
+                       }
+
+/*-- END BACKGROUNDS --*/
+
+                       // TABLE BORDER - if separate
+                       if (($table['borders_separate'] || ($this->simpleTables && !$table['simple']['border'])) && $table['border']) { 
+                          $halfspaceL = $table['padding']['L'] + ($table['border_spacing_H']/2);
+                          $halfspaceR = $table['padding']['R'] + ($table['border_spacing_H']/2);
+                          $halfspaceT = $table['padding']['T'] + ($table['border_spacing_V']/2);
+                          $halfspaceB = $table['padding']['B'] + ($table['border_spacing_V']/2);
+                          $tbx = $x;
+                          $tby = $y;
+                          $tbw = $w;
+                          $tbh = $h;
+                          $tab_bord = 0;
+                          
+                          $corner = '';
+                          if ($i == 0) {               // Top
+                               $tby -= $halfspaceT + ($table['border_details']['T']['w']/2);
+                               $tbh += $halfspaceT + ($table['border_details']['T']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_TOP); 
+                               $corner .= 'T';
+                          }
+                          if ($i == ($numrows-1) || (isset($cell['rowspan']) && ($i+$cell['rowspan']) == $numrows)) {  // Bottom
+                               $tbh += $halfspaceB + ($table['border_details']['B']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_BOTTOM); 
+                               $corner .= 'B';
+                          }
+                          if ($j == 0) {               // Left
+                               $tbx -= $halfspaceL + ($table['border_details']['L']['w']/2);
+                               $tbw += $halfspaceL + ($table['border_details']['L']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_LEFT); 
+                               $corner .= 'L';
+                          }
+                          if ($j == ($numcols-1) || (isset($cell['colspan']) && ($j+$cell['colspan']) == $numcols)) {  // Right
+                               $tbw += $halfspaceR + ($table['border_details']['R']['w']/2);
+                               $this->setBorder($tab_bord , _BORDER_RIGHT); 
+                               $corner .= 'R';
+                          }
+                          $this->_tableRect($tbx, $tby, $tbw, $tbh, $tab_bord , $table['border_details'], false, $table['borders_separate'], 'table', $corner, $table['border_spacing_V'], $table['border_spacing_H'] );
+                       }
+
+                       unset($cell );
+                       //Reset values
+                       $this->Reset();
+
+               }//end of (if isset(cells)...)
+         }// end of columns
+
+         $newpagestarted = false;
+         $this->tabletheadjustfinished = false;
+
+         if ($this->ColActive && $i < $numrows-1 && $level==1) { $this->breakpoints[$this->CurrCol][] = $y + $h; }     // *COLUMNS*
+
+/*-- COLUMNS --*/
+         if ($this->ColActive) {
+               if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }
+         }
+/*-- END COLUMNS --*/
+
+         if ($i == $numrows-1) { $this->y = $y + $h; } //last row jump (update this->y position)
+         if ($this->table_rotate && $level==1) {
+               $this->tbrot_h += $h;
+         }
+
+
+
+       }// end of rows
+
+       if ($this->progressBar) { $this->UpdateProgressBar(7,70,' '); } // *PROGRESS-BAR*
+
+       if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }
+
+       if ($this->tableClipPath ) { $this->_out("Q"); }
+       $this->tableClipPath = '';
+
+       // Advance down page by half width of bottom border
+       if ($table['borders_separate']) { $this->y += $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; }
+       else { $this->y += $table['max_cell_border_width']['B']/2; }
+
+       if ($table['borders_separate'] && $level==1) { $this->tbrot_h += $table['margin']['B'] + $table['padding']['B'] + $table['border_details']['B']['w'] + $table['border_spacing_V']/2; }
+       else if ($level==1) { $this->tbrot_h += $table['margin']['B'] + $table['max_cell_border_width']['B']/2; }
+
+       $bx = $x0;
+       $by = $y0;
+       if ($table['borders_separate']) { 
+               $bx -= ($table['padding']['L'] + $table['border_details']['L']['w'] + $table['border_spacing_H']/2); 
+               if ($tablestartpageno != $this->page) { // IF broken across page
+                       $by += $table['max_cell_border_width']['T']/2;
+                       if (empty($tableheader)) { $by -= ($table['border_spacing_V']/2); }
+               }
+               else if ($split && $startrow > 0 && empty($tableheader)) { 
+                       $by -= ($table['border_spacing_V']/2); 
+               }
+               else {
+                       $by -= ($table['padding']['T'] + $table['border_details']['T']['w'] + $table['border_spacing_V']/2); 
+               }
+       }
+       else if ($tablestartpageno != $this->page && !empty($tableheader)) { $by += $maxbwtop /2; }     
+       $by -= $tableheaderadj;
+       $bh = $this->y - $by;
+       if (!$table['borders_separate']) { $bh -= $table['max_cell_border_width']['B']/2; }
+
+       if ($split) {
+               $bw = 0;
+               $finalSpread = true;
+               for($t=$startcol; $t<$numcols; $t++) {
+                       if ($table['colPg'][$t] == $splitpg) { $bw += $table['wc'][$t]; }
+                       if ($table['colPg'][$t] > $splitpg) { $finalSpread = false; break; }
+               }
+               if ($startcol==0) { $firstSpread = true; }
+               else { $firstSpread = false; }
+               if ($table['borders_separate']) {
+                       $bw += $table['border_spacing_H']; 
+                       if ($firstSpread) { 
+                               $bw += $table['padding']['L'] + $table['border_details']['L']['w']; 
+                       }
+                       else {
+                               $bx += ($table['padding']['L'] + $table['border_details']['L']['w']); 
+                       }
+                       if ($finalSpread) { 
+                               $bw += $table['padding']['R'] + $table['border_details']['R']['w']; 
+                       }
+               }
+       }
+       else {
+               $bw = $table['w'] - ($table['max_cell_border_width']['L']/2) - ($table['max_cell_border_width']['R']/2) - $table['margin']['L'] - $table['margin']['R'];
+       }
+
+       if (!$this->ColActive) {
+               if (isset($table['bgcolor'][-1])) { 
+                       $color = $this->ConvertColor($table['bgcolor'][-1]);
+                       if ($color) {
+                          $this->tableBackgrounds[$level*9][] = array('gradient'=>false, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'col'=>$color);
+                       }
+               }
+
+/*-- BACKGROUNDS --*/
+               if (isset($table['gradient'])) { 
+                       $g = $this->grad->parseBackgroundGradient($table['gradient']);
+                       if ($g) {
+                          $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                       }
+               }
+
+               if (isset($table['background-image'])) { 
+                  if ($table['background-image']['gradient'] && preg_match('/(-moz-)*(repeating-)*(linear|radial)-gradient/', $table['background-image']['gradient'] )) {
+                       $g = $this->grad->parseMozGradient( $table['background-image']['gradient'] );
+                       if ($g) {
+                          $this->tableBackgrounds[$level*9+1][] = array('gradient'=>true, 'x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'gradtype'=>$g['type'], 'stops'=>$g['stops'], 'colorspace'=>$g['colorspace'], 'coords'=>$g['coords'], 'extend'=>$g['extend'], 'clippath'=>'');
+                       }
+                  }
+                  else { 
+                       $image_id = $table['background-image']['image_id'];
+                       $orig_w = $table['background-image']['orig_w'];
+                       $orig_h = $table['background-image']['orig_h'];
+                       $x_pos = $table['background-image']['x_pos'];
+                       $y_pos = $table['background-image']['y_pos'];
+                       $x_repeat = $table['background-image']['x_repeat'];
+                       $y_repeat = $table['background-image']['y_repeat'];
+                       $resize = $table['background-image']['resize'];
+                       $opacity = $table['background-image']['opacity'];
+                       $itype = $table['background-image']['itype'];
+                       $this->tableBackgrounds[$level*9+2][] = array('x'=>$bx, 'y'=>$by, 'w'=>$bw, 'h'=>$bh, 'image_id'=>$image_id, 'orig_w'=>$orig_w, 'orig_h'=>$orig_h, 'x_pos'=>$x_pos, 'y_pos'=>$y_pos, 'x_repeat'=>$x_repeat, 'y_repeat'=>$y_repeat, 'clippath'=>'', 'resize'=>$resize, 'opacity'=>$opacity, 'itype'=>$itype);
+                  }
+               }
+/*-- END BACKGROUNDS --*/
+       }
+
+       if ($this->tableBackgrounds && $level == 1) {
+          $s = $this->PrintTableBackgrounds();
+          if ($this->table_rotate && !$this->processingHeader && !$this->processingFooter) {
+               $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->tablebuffer);
+               if ($level == 1) { $this->tablebuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->tablebuffer); }
+          }
+          else if ($this->bufferoutput) {
+               $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->headerbuffer);
+               if ($level == 1) { $this->headerbuffer = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->headerbuffer ); }
+          }
+          else {
+               $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', '\\1'."\n".$s."\n", $this->pages[$this->page]);
+               if ($level == 1) { $this->pages[$this->page] = preg_replace('/(___TABLE___BACKGROUNDS'.date('jY').')/', " ", $this->pages[$this->page]); }
+          }
+          $this->tableBackgrounds = array();
+       }
+
+
+       // TABLE BOTTOM MARGIN
+       if ($table['margin']['B']) {
+         if (!$this->table_rotate && $level==1) {
+               $this->DivLn($table['margin']['B'],$this->blklvl,true);         // collapsible
+         }
+         else {
+               $this->y += ($table['margin']['B']);
+         }
+       }
+
+       if ($this->ColActive && $level==1) { $this->breakpoints[$this->CurrCol][] = $this->y; } // *COLUMNS*
+
+       if ($this->cacheTables) { fclose($fh); }
+
+       if ($split) { 
+               // Are there more columns to print on a next page?
+               if ($lastCol < $numcols-1) {
+                       $splitpg++;
+                       $startcol = $lastCol + 1;
+                       return array(false, $startrow, $startcol, $splitpg, $returny, $y0);
+               }
+               else {
+                       if ($this->cacheTables) { 
+                               unlink($table['cache']); 
+                               @unlink($table['cache'].'.bak'); 
+                       }
+                       return array(true,0,0,0);
+               }
+       }
+       if ($this->cacheTables) { 
+               unlink($table['cache']); 
+               @unlink($table['cache'].'.bak'); 
+       }
+
+}//END OF FUNCTION _tableWrite()
+
+
+/////////////////////////END OF TABLE CODE//////////////////////////////////
+/*-- END TABLES --*/
+
+function _putextgstates() {
+       for ($i = 1; $i <= count($this->extgstates); $i++) {
+            $this->_newobj();
+            $this->extgstates[$i]['n'] = $this->n;
+            $this->_out('<</Type /ExtGState');
+            foreach ($this->extgstates[$i]['parms'] as $k=>$v)
+                $this->_out('/'.$k.' '.$v);
+            $this->_out('>>');
+            $this->_out('endobj');
+       }
+}
+
+function _putocg() {
+       if ($this->hasOC) {     // mPDF 5.6.01
+               $this->_newobj();
+               $this->n_ocg_print=$this->n;
+               $this->_out('<</Type /OCG /Name '.$this->_textstring('Print only'));
+               $this->_out('/Usage <</Print <</PrintState /ON>> /View <</ViewState /OFF>>>>>>');
+               $this->_out('endobj');
+               $this->_newobj();
+               $this->n_ocg_view=$this->n;
+               $this->_out('<</Type /OCG /Name '.$this->_textstring('Screen only'));
+               $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /ON>>>>>>');
+               $this->_out('endobj');
+               $this->_newobj();
+               $this->n_ocg_hidden=$this->n;
+               $this->_out('<</Type /OCG /Name '.$this->_textstring('Hidden'));
+               $this->_out('/Usage <</Print <</PrintState /OFF>> /View <</ViewState /OFF>>>>>>');
+               $this->_out('endobj');
+       }
+       // mPDF 5.6.01  Add Layers
+       if (count($this->layers)) {
+               ksort($this->layers);
+               foreach($this->layers as $id=>$layer) {
+                       $this->_newobj();
+                       $this->layers[$id]['n'] = $this->n;
+                       // mPDF 5.6.28
+                       if (isset($this->layerDetails[$id]['name']) && $this->layerDetails[$id]['name']) {
+                               $name = $this->layerDetails[$id]['name'];
+                       }
+                       else { $name = $layer['name']; }
+                       $this->_out('<</Type /OCG /Name '.$this->_UTF16BEtextstring($name).'>>');
+                       $this->_out('endobj');
+               }
+       }
+}
+
+
+/*-- IMPORTS --*/
+
+       // from mPDFI
+       function _putimportedobjects() {
+               if (is_array($this->parsers) && count($this->parsers) > 0) {
+                       foreach($this->parsers AS $filename => $p) {
+                               $this->current_parser =& $this->parsers[$filename];
+                               if (is_array($this->_obj_stack[$filename])) {
+                                       while($n = key($this->_obj_stack[$filename])) {
+                                               $nObj = $this->current_parser->pdf_resolve_object($this->current_parser->c,$this->_obj_stack[$filename][$n][1]);
+                                               $this->_newobj($this->_obj_stack[$filename][$n][0]);
+                                               if ($nObj[0] == PDF_TYPE_STREAM) {
+                                                       $this->pdf_write_value($nObj);
+                                               } 
+                                               else {
+                                                       $this->pdf_write_value($nObj[1]);
+                                               }
+                                               $this->_out('endobj');
+                                               $this->_obj_stack[$filename][$n] = null; // free memory
+                                               unset($this->_obj_stack[$filename][$n]);
+                                               reset($this->_obj_stack[$filename]);
+                                       }
+                               }
+                       }
+               }
+       }
+
+
+       function _putformxobjects() {
+               $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+               reset($this->tpls);
+               foreach($this->tpls AS $tplidx => $tpl) {
+                       $p=($this->compress) ? gzcompress($tpl['buffer']) : $tpl['buffer'];
+                       $this->_newobj();
+                       $this->tpls[$tplidx]['n'] = $this->n;
+                       $this->_out('<<'.$filter.'/Type /XObject');
+                       $this->_out('/Subtype /Form');
+                       $this->_out('/FormType 1');
+                       // Left/Bottom/Right/Top
+                       $this->_out(sprintf('/BBox [%.2F %.2F %.2F %.2F]',
+                               $tpl['box']['x']*_MPDFK,
+                               $tpl['box']['y']*_MPDFK,
+                               ($tpl['box']['x'] + $tpl['box']['w'])*_MPDFK,
+                               ($tpl['box']['y'] + $tpl['box']['h'])*_MPDFK  )
+                       );
+
+
+                       if (isset($tpl['box']))
+                               $this->_out(sprintf('/Matrix [1 0 0 1 %.5F %.5F]',-$tpl['box']['x']*_MPDFK, -$tpl['box']['y']*_MPDFK));
+                       $this->_out('/Resources ');
+
+                       if (isset($tpl['resources'])) {
+                               $this->current_parser =& $tpl['parser'];
+                               $this->pdf_write_value($tpl['resources']);
+                       } else {
+                               $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
+                                       if (isset($this->_res['tpl'][$tplidx]['fonts']) && count($this->_res['tpl'][$tplidx]['fonts'])) {
+                                               $this->_out('/Font <<');
+                                               foreach($this->_res['tpl'][$tplidx]['fonts'] as $font)
+                                                       $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
+                                               $this->_out('>>');
+                               }
+                                       if(isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images']) || 
+                                          isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls']))
+                                       {
+                                               $this->_out('/XObject <<');
+                                               if (isset($this->_res['tpl'][$tplidx]['images']) && count($this->_res['tpl'][$tplidx]['images'])) {
+                                                       foreach($this->_res['tpl'][$tplidx]['images'] as $image)
+                                                               $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
+                                               }
+                                               if (isset($this->_res['tpl'][$tplidx]['tpls']) && count($this->_res['tpl'][$tplidx]['tpls'])) {
+                                                       foreach($this->_res['tpl'][$tplidx]['tpls'] as $i => $itpl)
+                                                               $this->_out($this->tplprefix.$i.' '.$itpl['n'].' 0 R');
+                                               }
+                                               $this->_out('>>');
+                                       }
+                                       $this->_out('>>');
+                       }
+
+                       $this->_out('/Length '.strlen($p).' >>');
+                       $this->_putstream($p);
+                       $this->_out('endobj');
+               }
+       }
+
+/*-- END IMPORTS --*/
+
+
+function _putpatterns() {
+       for ($i = 1; $i <= count($this->patterns); $i++) {
+               $x = $this->patterns[$i]['x'];
+               $y = $this->patterns[$i]['y']; 
+               $w = $this->patterns[$i]['w'];
+               $h = $this->patterns[$i]['h']; 
+               $pgh = $this->patterns[$i]['pgh']; 
+               $orig_w = $this->patterns[$i]['orig_w'];
+               $orig_h = $this->patterns[$i]['orig_h']; 
+               $image_id = $this->patterns[$i]['image_id'];
+               $itype = $this->patterns[$i]['itype'];
+               $bpa = $this->patterns[$i]['bpa'];      // mPDF 5.6.10  background positioning area
+
+               if ($this->patterns[$i]['x_repeat']) { $x_repeat = true; } 
+               else { $x_repeat = false; }
+               if ($this->patterns[$i]['y_repeat']) { $y_repeat = true; }
+               else { $y_repeat = false; }
+               $x_pos = $this->patterns[$i]['x_pos'];
+               if (stristr($x_pos ,'%') ) { 
+                       $x_pos += 0; 
+                       $x_pos /= 100; 
+                       if (isset($bpa['w']) && $bpa['w']) $x_pos = ($bpa['w'] * $x_pos) - ($orig_w/_MPDFK * $x_pos);   // mPDF 5.6.10
+                       else $x_pos = ($w * $x_pos) - ($orig_w/_MPDFK * $x_pos);
+               }
+               $y_pos = $this->patterns[$i]['y_pos'];
+               if (stristr($y_pos ,'%') ) { 
+                       $y_pos += 0; 
+                       $y_pos /= 100; 
+                       if (isset($bpa['h']) && $bpa['h']) $y_pos = ($bpa['h'] * $y_pos) - ($orig_h/_MPDFK * $y_pos);   // mPDF 5.6.10
+                       else $y_pos = ($h * $y_pos) - ($orig_h/_MPDFK * $y_pos);
+               }
+               if (isset($bpa['x']) && $bpa['x']) $adj_x = ($x_pos + $bpa['x']) *_MPDFK;       // mPDF 5.6.10
+               else $adj_x = ($x_pos + $x) *_MPDFK;
+               if (isset($bpa['y']) && $bpa['y']) $adj_y = (($pgh - $y_pos - $bpa['y'])*_MPDFK) - $orig_h ;    // mPDF 5.6.10
+               else $adj_y = (($pgh - $y_pos - $y)*_MPDFK) - $orig_h ;
+               $img_obj = false;
+               if ($itype == 'svg' || $itype == 'wmf') {
+                       foreach($this->formobjects AS $fo) {
+                               if ($fo['i'] == $image_id) { 
+                                       $img_obj = $fo['n']; 
+                                       $fo_w = $fo['w'];
+                                       $fo_h = -$fo['h'];
+                                       $wmf_x = $fo['x'];
+                                       $wmf_y = $fo['y']; 
+                                       break; 
+                               }
+                       }
+               }
+               else {
+                       foreach($this->images AS $img) {
+                               if ($img['i'] == $image_id) { $img_obj = $img['n']; break; }
+                       }
+               }
+               if (!$img_obj ) { echo "Problem: Image object not found for background pattern ".$img['i']; exit; }
+
+            $this->_newobj();
+            $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
+               if ($itype == 'svg' || $itype == 'wmf') {
+                       $this->_out('/XObject <</FO'.$image_id.' '.$img_obj.' 0 R >>');
+                       // ******* ADD ANY ExtGStates, Shading AND Fonts needed for the FormObject
+                       // Set in classes/svg array['fo'] = true
+                       // Required that _putshaders comes before _putpatterns in _putresources
+                       // This adds any resources associated with any FormObject to every Formobject - overkill but works!
+                       if (count($this->extgstates)) {
+                               $this->_out('/ExtGState <<');
+                               foreach($this->extgstates as $k=>$extgstate)
+                                  if (isset($extgstate['fo']) && $extgstate['fo']) {
+                                       if (isset($extgstate['trans']))  $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R');
+                                       else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
+                                  }
+                               $this->_out('>>');
+                       }
+/*-- BACKGROUNDS --*/
+                       if (isset($this->gradients) AND (count($this->gradients) > 0)) {
+                               $this->_out('/Shading <<');
+                               foreach ($this->gradients as $id => $grad) {
+                                  if (isset($grad['fo']) && $grad['fo']) {
+                                       $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R');
+                                  }
+                               }
+                               $this->_out('>>');
+                       }
+/*-- END BACKGROUNDS --*/
+                       $this->_out('/Font <<');
+                       foreach($this->fonts as $font) {
+                               if (!$font['used'] && $font['type']=='TTF') { continue; }
+                               if (isset($font['fo']) && $font['fo']) {
+                                  if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) {
+                                       foreach($font['n'] AS $k => $fid) {
+                                               $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R');
+                                       }
+                                  }
+                                  else { 
+                                       $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
+                                  }
+                               }
+                       }
+                       $this->_out('>>');
+               }
+               else {
+               $this->_out('/XObject <</I'.$image_id.' '.$img_obj.' 0 R >>');
+               }
+            $this->_out('>>');
+            $this->_out('endobj');
+
+               $this->_newobj();
+               $this->patterns[$i]['n'] = $this->n;
+               $this->_out('<< /Type /Pattern /PatternType 1 /PaintType 1 /TilingType 2');
+               $this->_out('/Resources '. ($this->n-1) .' 0 R');
+
+               $this->_out(sprintf('/BBox [0 0 %.3F %.3F]',$orig_w,$orig_h));
+               if ($x_repeat) { $this->_out(sprintf('/XStep %.3F',$orig_w)); }
+               else { $this->_out(sprintf('/XStep %d',99999)); }
+               if ($y_repeat) { $this->_out(sprintf('/YStep %.3F',$orig_h)); }
+               else { $this->_out(sprintf('/YStep %d',99999)); }
+
+               if ($itype == 'svg' || $itype == 'wmf') {
+                       $this->_out(sprintf('/Matrix [1 0 0 -1 %.3F %.3F]', $adj_x, ($adj_y+$orig_h)));
+                       $s = sprintf("q %.3F 0 0 %.3F %.3F %.3F cm /FO%d Do Q",($orig_w/$fo_w), (-$orig_h/$fo_h), -($orig_w/$fo_w)*$wmf_x, ($orig_w/$fo_w)*$wmf_y, $image_id);
+               }
+               else {
+                       $this->_out(sprintf('/Matrix [1 0 0 1 %.3F %.3F]',$adj_x,$adj_y));
+                       $s = sprintf("q %.3F 0 0 %.3F 0 0 cm /I%d Do Q",$orig_w,$orig_h,$image_id);
+               }
+
+            if ($this->compress) {
+                       $this->_out('/Filter /FlateDecode');
+                       $s = gzcompress($s);
+               }
+               $this->_out('/Length '.strlen($s).'>>');
+               $this->_putstream($s);
+               $this->_out('endobj');
+       }
+}
+
+/*-- BACKGROUNDS --*/
+function _putshaders() {
+                       $maxid = count($this->gradients); //index for transparency gradients
+                       foreach ($this->gradients as $id => $grad) {  
+                               if (($grad['type'] == 2 || $grad['type'] == 3) && empty($grad['is_mask'])) {
+                                       $this->_newobj();
+                                       $this->_out('<<');
+                                       $this->_out('/FunctionType 3');
+                                       $this->_out('/Domain [0 1]');
+                                       $fn = array();
+                                       $bd = array();
+                                       $en = array();
+                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
+                                               $fn[] = ($this->n+1+$i).' 0 R';
+                                               $en[] = '0 1';
+                                               if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); }
+                                       }
+                                       $this->_out('/Functions ['.implode(' ',$fn).']');
+                                       $this->_out('/Bounds ['.implode(' ',$bd).']');
+                                       $this->_out('/Encode ['.implode(' ',$en).']');
+                                       $this->_out('>>');
+                                       $this->_out('endobj');
+                                       $f1 = $this->n;
+                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
+                                               $this->_newobj();
+                                               $this->_out('<<');
+                                               $this->_out('/FunctionType 2');
+                                               $this->_out('/Domain [0 1]');
+                                               $this->_out('/C0 ['.$grad['stops'][$i]['col'].']');
+                                               $this->_out('/C1 ['.$grad['stops'][$i+1]['col'].']');
+                                               $this->_out('/N 1');
+                                               $this->_out('>>');
+                                               $this->_out('endobj');
+                                       }
+                               }
+                               if ($grad['type'] == 2 || $grad['type'] == 3) {
+                                 if (isset($grad['trans']) && $grad['trans']) {
+                                       $this->_newobj();
+                                       $this->_out('<<');
+                                       $this->_out('/FunctionType 3');
+                                       $this->_out('/Domain [0 1]');
+                                       $fn = array();
+                                       $bd = array();
+                                       $en = array();
+                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
+                                               $fn[] = ($this->n+1+$i).' 0 R';
+                                               $en[] = '0 1';
+                                               if ($i>0) { $bd[] = sprintf('%.3F', $grad['stops'][$i]['offset']); }
+                                       }
+                                       $this->_out('/Functions ['.implode(' ',$fn).']');
+                                       $this->_out('/Bounds ['.implode(' ',$bd).']');
+                                       $this->_out('/Encode ['.implode(' ',$en).']');
+                                       $this->_out('>>');
+                                       $this->_out('endobj');
+                                       $f2 = $this->n;
+                                       for($i=0; $i<(count($grad['stops'])-1); $i++) {
+                                               $this->_newobj();
+                                               $this->_out('<<');
+                                               $this->_out('/FunctionType 2');
+                                               $this->_out('/Domain [0 1]');
+                                               $this->_out(sprintf('/C0 [%.3F]', $grad['stops'][$i]['opacity']));
+                                               $this->_out(sprintf('/C1 [%.3F]', $grad['stops'][$i+1]['opacity']));
+                                               $this->_out('/N 1');
+                                               $this->_out('>>');
+                                               $this->_out('endobj');
+                                       }
+                                  }
+                               }
+
+                               if (empty($grad['is_mask'])) {
+                                       $this->_newobj();
+                                       $this->_out('<<');
+                                       $this->_out('/ShadingType '.$grad['type']);
+                                       if (isset($grad['colorspace'])) {
+                                               $this->_out('/ColorSpace /Device'.$grad['colorspace']);         // Can use CMYK if all C0 and C1 above have 4 values
+                                       } else {
+                                               $this->_out('/ColorSpace /DeviceRGB');
+                                       }
+                                       if ($grad['type'] == 2) {
+                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]));
+                                               $this->_out('/Function '.$f1.' 0 R');
+                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
+                                               $this->_out('>>');
+                                       }
+                                       else if ($grad['type'] == 3) {
+                                               //x0, y0, r0, x1, y1, r1
+                                               //at this this time radius of inner circle is 0
+                                               $ir = 0;
+                                               if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; }
+                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4]));
+                                               $this->_out('/Function '.$f1.' 0 R');
+                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
+                                               $this->_out('>>');
+                                       }
+                                       else if ($grad['type']==6) {
+                                               $this->_out('/BitsPerCoordinate 16');
+                                               $this->_out('/BitsPerComponent 8');
+                                               if ($grad['colorspace'] == 'CMYK') { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1 0 1]'); }
+                                               else if ($grad['colorspace'] == 'Gray') { $this->_out('/Decode[0 1 0 1 0 1]'); }
+                                               else { $this->_out('/Decode[0 1 0 1 0 1 0 1 0 1]'); }
+                                               $this->_out('/BitsPerFlag 8');
+                                               $this->_out('/Length '.strlen($grad['stream']));
+                                               $this->_out('>>');
+                                               $this->_putstream($grad['stream']);
+                                       }
+                                       $this->_out('endobj');
+                               }
+
+                               $this->gradients[$id]['id'] = $this->n;
+
+                               // set pattern object
+                               $this->_newobj();
+                               $out = '<< /Type /Pattern /PatternType 2';
+                               $out .= ' /Shading '.$this->gradients[$id]['id'].' 0 R';
+                               $out .= ' >>';
+                               $out .= "\n".'endobj';
+                               $this->_out($out);
+
+
+                               $this->gradients[$id]['pattern'] = $this->n;
+
+                               if (isset($grad['trans']) && $grad['trans']) {
+                                       // luminosity pattern
+                                       $transid = $id + $maxid;
+                                       $this->_newobj();
+                                       $this->_out('<<');
+                                       $this->_out('/ShadingType '.$grad['type']);
+                                       $this->_out('/ColorSpace /DeviceGray');
+                                       if ($grad['type'] == 2) {
+                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $grad['coords'][2], $grad['coords'][3]));
+                                               $this->_out('/Function '.$f2.' 0 R');
+                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
+                                               $this->_out('>>');
+                                       }
+                                       else if ($grad['type'] == 3) {
+                                               //x0, y0, r0, x1, y1, r1
+                                               //at this this time radius of inner circle is 0
+                                               $ir = 0;
+                                               if (isset($grad['coords'][5]) && $grad['coords'][5]) { $ir = $grad['coords'][5]; }
+                                               $this->_out(sprintf('/Coords [%.3F %.3F %.3F %.3F %.3F %.3F]', $grad['coords'][0], $grad['coords'][1], $ir, $grad['coords'][2], $grad['coords'][3], $grad['coords'][4]));
+                                               $this->_out('/Function '.$f2.' 0 R');
+                                               $this->_out('/Extend ['.$grad['extend'][0].' '.$grad['extend'][1].'] ');
+                                               $this->_out('>>');
+                                       }
+                                       else if ($grad['type']==6) {
+                                               $this->_out('/BitsPerCoordinate 16');
+                                               $this->_out('/BitsPerComponent 8');
+                                               $this->_out('/Decode[0 1 0 1 0 1]');
+                                               $this->_out('/BitsPerFlag 8');
+                                               $this->_out('/Length '.strlen($grad['stream_trans']));
+                                               $this->_out('>>');
+                                               $this->_putstream($grad['stream_trans']);
+                                       }
+                                       $this->_out('endobj');
+
+                                       $this->gradients[$transid]['id'] = $this->n;
+                                       $this->_newobj();
+                                       $this->_out('<< /Type /Pattern /PatternType 2');
+                                       $this->_out('/Shading '.$this->gradients[$transid]['id'].' 0 R');
+                                       $this->_out('>>');
+                                       $this->_out('endobj');
+                                       $this->gradients[$transid]['pattern'] = $this->n;
+                                       $this->_newobj();
+                                       // Need to extend size of viewing box in case of transformations
+                                       $str = 'q /a0 gs /Pattern cs /p'.$transid.' scn -'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).' re f Q'; 
+                                       $filter=($this->compress) ? '/Filter /FlateDecode ' : '';
+                                       $p=($this->compress) ? gzcompress($str) : $str;
+                                       $this->_out('<< /Type /XObject /Subtype /Form /FormType 1 '.$filter);
+                                       $this->_out('/Length '.strlen($p));
+                                       $this->_out('/BBox [-'.($this->wPt/2).' -'.($this->hPt/2).' '.(2*$this->wPt).' '.(2*$this->hPt).']');   
+                                       $this->_out('/Group << /Type /Group /S /Transparency /CS /DeviceGray >>');
+                                       $this->_out('/Resources <<');
+                                       $this->_out('/ExtGState << /a0 << /ca 1 /CA 1 >> >>');
+                                       $this->_out('/Pattern << /p'.$transid.' '.$this->gradients[$transid]['pattern'].' 0 R >>');
+                                       $this->_out('>>');
+                                       $this->_out('>>');
+                                       $this->_putstream($p);
+                                       $this->_out('endobj');
+                                       $this->_newobj();
+                                       $this->_out('<< /Type /Mask /S /Luminosity /G '.($this->n - 1).' 0 R >>'."\n".'endobj');
+                                       $this->_newobj();
+                                       $this->_out('<< /Type /ExtGState /SMask '.($this->n - 1).' 0 R /AIS false >>'."\n".'endobj');
+                                       if ($grad['fo']) { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id, 'fo'=>true); }
+                                       else { $this->extgstates[] = array('n' => $this->n, 'trans' => 'TGS'.$id); }
+                               }
+                       }
+}
+/*-- END BACKGROUNDS --*/
+
+function _putspotcolors() {
+       foreach($this->spotColors as $name=>$color) {
+               $this->_newobj();
+               $this->_out('[/Separation /'.str_replace(' ','#20',$name));
+               $this->_out('/DeviceCMYK <<');
+               $this->_out('/Range [0 1 0 1 0 1 0 1] /C0 [0 0 0 0] ');
+               $this->_out(sprintf('/C1 [%.3F %.3F %.3F %.3F] ',$color['c']/100,$color['m']/100,$color['y']/100,$color['k']/100));
+               $this->_out('/FunctionType 2 /Domain [0 1] /N 1>>]');
+               $this->_out('endobj');
+               $this->spotColors[$name]['n']=$this->n;
+       }
+}
+
+
+function _putresources() {
+       if ($this->hasOC || count($this->layers))       // mPDF 5.6.01
+               $this->_putocg();
+       $this->_putextgstates();
+       $this->_putspotcolors();
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'40','Compiling Fonts'); } // *PROGRESS-BAR*
+       $this->_putfonts();
+       if ($this->progressBar) { $this->UpdateProgressBar(2,'50','Compiling Images'); }        // *PROGRESS-BAR*
+       $this->_putimages();
+       $this->_putformobjects();       // *IMAGES-CORE*
+
+/*-- IMPORTS --*/
+       if ($this->enableImports) {
+               $this->_putformxobjects();
+               $this->_putimportedobjects();
+       }
+/*-- END IMPORTS --*/
+
+/*-- BACKGROUNDS --*/
+       $this->_putshaders();
+       $this->_putpatterns();
+/*-- END BACKGROUNDS --*/
+
+
+       //Resource dictionary
+       $this->offsets[2]=strlen($this->buffer);
+       $this->_out('2 0 obj');
+       $this->_out('<</ProcSet [/PDF /Text /ImageB /ImageC /ImageI]');
+
+       $this->_out('/Font <<');
+       foreach($this->fonts as $font) {
+               if (!$font['used'] && $font['type']=='TTF') { continue; }
+               if ($font['type']=='TTF' && ($font['sip'] || $font['smp'])) {
+                       foreach($font['n'] AS $k => $fid) {
+                               $this->_out('/F'.$font['subsetfontids'][$k].' '.$font['n'][$k].' 0 R');
+                       }
+               }
+               else { 
+                       $this->_out('/F'.$font['i'].' '.$font['n'].' 0 R');
+               }
+       }
+       $this->_out('>>');
+
+       if (count($this->spotColors)) {
+               $this->_out('/ColorSpace <<');
+               foreach($this->spotColors as $color)
+                       $this->_out('/CS'.$color['i'].' '.$color['n'].' 0 R');
+               $this->_out('>>');
+       }
+
+       if (count($this->extgstates)) {
+               $this->_out('/ExtGState <<');
+               foreach($this->extgstates as $k=>$extgstate)
+                       if (isset($extgstate['trans']))  $this->_out('/'.$extgstate['trans'].' '.$extgstate['n'].' 0 R');
+                       else $this->_out('/GS'.$k.' '.$extgstate['n'].' 0 R');
+               $this->_out('>>');
+       }
+
+/*-- BACKGROUNDS --*/
+       if (isset($this->gradients) AND (count($this->gradients) > 0)) {
+               $this->_out('/Shading <<');
+               foreach ($this->gradients as $id => $grad) {
+                       $this->_out('/Sh'.$id.' '.$grad['id'].' 0 R');
+               }
+               $this->_out('>>');
+
+/*
+               // ??? Not needed !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+               $this->_out('/Pattern <<');
+               foreach ($this->gradients as $id => $grad) {
+                       $this->_out('/P'.$id.' '.$grad['pattern'].' 0 R');
+               }
+               $this->_out('>>');
+*/
+       }
+/*-- END BACKGROUNDS --*/
+
+       if(count($this->images) || count($this->formobjects) || ($this->enableImports && count($this->tpls))) {
+               $this->_out('/XObject <<');
+               foreach($this->images as $image)
+                       $this->_out('/I'.$image['i'].' '.$image['n'].' 0 R');
+            foreach($this->formobjects as $formobject)
+                $this->_out('/FO'.$formobject['i'].' '.$formobject['n'].' 0 R');
+/*-- IMPORTS --*/
+               if ($this->enableImports && count($this->tpls)) {
+                       foreach($this->tpls as $tplidx => $tpl) {
+                               $this->_out($this->tplprefix.$tplidx.' '.$tpl['n'].' 0 R');
+                       }
+               }
+/*-- END IMPORTS --*/
+               $this->_out('>>');
+       }
+
+/*-- BACKGROUNDS --*/
+
+       if (count($this->patterns)) {
+               $this->_out('/Pattern <<');
+               foreach($this->patterns as $k=>$patterns)
+                       $this->_out('/P'.$k.' '.$patterns['n'].' 0 R');
+               $this->_out('>>');
+       }
+/*-- END BACKGROUNDS --*/
+
+       // mPDF 5.6.01
+       if ($this->hasOC || count($this->layers)) { 
+               $this->_out('/Properties <<');
+               if ($this->hasOC) { 
+                       $this->_out('/OC1 '.$this->n_ocg_print.' 0 R /OC2 '.$this->n_ocg_view.' 0 R /OC3 '.$this->n_ocg_hidden.' 0 R ');
+               }
+               if (count($this->layers)) {
+                       foreach($this->layers as $id=>$layer)
+                               $this->_out('/ZI'.$id.' '.$layer['n'].' 0 R');
+               }
+               $this->_out('>>');
+       }
+
+       $this->_out('>>');
+       $this->_out('endobj');  // end resource dictionary
+
+       $this->_putbookmarks();         // *BOOKMARKS*
+
+       if (isset($this->js) && $this->js) {
+               $this->_putjavascript();
+       }
+
+/*-- ENCRYPTION --*/
+       if ($this->encrypted) {
+               $this->_newobj();
+               $this->enc_obj_id = $this->n;
+               $this->_out('<<');
+               $this->_putencryption();
+               $this->_out('>>');
+               $this->_out('endobj');
+       }
+/*-- END ENCRYPTION --*/
+}
+
+
+function _putjavascript() {
+       $this->_newobj();
+       $this->n_js = $this->n;
+       $this->_out('<<');
+       $this->_out('/Names [(EmbeddedJS) '.(1 + $this->n).' 0 R ]');
+       $this->_out('>>');
+       $this->_out('endobj');
+
+       $this->_newobj();
+       $this->_out('<<');
+       $this->_out('/S /JavaScript');
+       $this->_out('/JS '.$this->_textstring($this->js));
+       $this->_out('>>');
+       $this->_out('endobj');
+}
+
+
+
+
+/*-- ENCRYPTION --*/
+function _putencryption()      {
+       $this->_out('/Filter /Standard');
+       if ($this->useRC128encryption) {
+               $this->_out('/V 2');
+               $this->_out('/R 3');
+               $this->_out('/Length 128');
+       }
+       else  {
+               $this->_out('/V 1');
+               $this->_out('/R 2');
+       }
+       $this->_out('/O ('.$this->_escape($this->Ovalue).')');
+       $this->_out('/U ('.$this->_escape($this->Uvalue).')');
+       $this->_out('/P '.$this->Pvalue);
+}
+/*-- END ENCRYPTION --*/
+
+function _puttrailer() {
+       $this->_out('/Size '.($this->n+1));
+       $this->_out('/Root '.$this->n.' 0 R');
+       $this->_out('/Info '.$this->InfoRoot.' 0 R');
+/*-- ENCRYPTION --*/
+       if ($this->encrypted) {
+               $this->_out('/Encrypt '.$this->enc_obj_id.' 0 R');
+               $this->_out('/ID [<'.$this->uniqid.'> <'.$this->uniqid.'>]');
+       }
+       else {
+/*-- END ENCRYPTION --*/
+               $uniqid = md5(time() .  $this->buffer);
+               $this->_out('/ID [<'.$uniqid.'> <'.$uniqid.'>]');
+/*-- ENCRYPTION --*/
+       }
+/*-- END ENCRYPTION --*/
+}
+
+/*-- ENCRYPTION --*/
+function SetProtection($permissions=array(),$user_pass='',$owner_pass=null, $length=40)        {
+               $this->encrypted=false;
+               if (is_string($permissions) && strlen($permissions)>0) { $permissions = array($permissions); }
+               else if (!is_array($permissions)) { return 0; }
+               $this->last_rc4_key='';
+               $this->padding="\x28\xBF\x4E\x5E\x4E\x75\x8A\x41\x64\x00\x4E\x56\xFF\xFA\x01\x08".
+                                               "\x2E\x2E\x00\xB6\xD0\x68\x3E\x80\x2F\x0C\xA9\xFE\x64\x53\x69\x7A";
+
+               $options = array(
+                       'print' => 4, // bit 3
+                       'modify' => 8, // bit 4
+                       'copy' => 16, // bit 5
+                       'annot-forms' => 32, // bit 6
+                       'fill-forms' => 256, // bit 9
+                       'extract' => 512, // bit 10
+                       'assemble' => 1024,// bit 11
+                       'print-highres' => 2048 // bit 12
+                       );
+               // bit 31 = 1073741824
+               // bit 32 = 2147483648
+               // bits 13-31 = 2147479552
+               // bits 13-32 = 4294963200 + 192 = 4294963392
+               $protection = 4294963392; // bits 7,8,13-32
+               foreach ($permissions as $permission) {
+                       if (!isset($options[$permission]))
+                               $this->Error('Incorrect permission: '.$permission);
+                       if ($options[$permission] > 32) { $this->useRC128encryption = true; }
+                       if (isset($options[$permission])) $protection += $options[$permission];
+               }
+               if ($length==128) { $this->useRC128encryption = true; }
+               if ($owner_pass === null)
+                       $owner_pass = uniqid(rand());
+               $this->encrypted = true;
+               $this->_generateencryptionkey($user_pass, $owner_pass, $protection);
+}
+
+
+// Compute key depending on object number where the encrypted data is stored
+function _objectkey($n) {
+       if ($this->useRC128encryption)
+               $len = 16;
+       else
+               $len = 10;
+       return substr($this->_md5_16($this->encryption_key.pack('VXxx',$n)),0,$len);
+}
+
+// RC4 is the standard encryption algorithm used in PDF format
+function _RC4($key, $text) {
+       if ($this->last_rc4_key != $key) {
+               $k = str_repeat($key, 256/strlen($key)+1);
+               $rc4 = range(0,255);
+               $j = 0;
+               for ($i=0; $i<256; $i++){
+                       $t = $rc4[$i];
+                       $j = ($j + $t + ord($k[$i])) % 256;
+                       $rc4[$i] = $rc4[$j];
+                       $rc4[$j] = $t;
+               }
+               $this->last_rc4_key = $key;
+               $this->last_rc4_key_c = $rc4;
+       } else {
+               $rc4 = $this->last_rc4_key_c;
+       }
+
+       $len = strlen($text);
+       $a = 0;
+       $b = 0;
+       $out = '';
+       for ($i=0; $i<$len; $i++){
+               $a = ($a+1)%256;
+               $t= $rc4[$a];
+               $b = ($b+$t)%256;
+               $rc4[$a] = $rc4[$b];
+               $rc4[$b] = $t;
+               $k = $rc4[($rc4[$a]+$rc4[$b])%256];
+               $out.= chr(ord($text[$i]) ^ $k);
+       }
+       return $out;
+}
+
+// Get MD5 as binary string
+function _md5_16($string) {
+       return pack('H*',md5($string));
+}
+
+// Compute O value
+function _Ovalue($user_pass, $owner_pass) {
+       $tmp = $this->_md5_16($owner_pass);
+       if ($this->useRC128encryption) {
+               for ($i = 0; $i < 50; ++$i) {
+                       $tmp = $this->_md5_16($tmp);
+               }
+       }
+       if ($this->useRC128encryption)
+               $keybytelen = (128 / 8);
+       else 
+               $keybytelen = (40 / 8);
+       $owner_RC4_key = substr($tmp,0,$keybytelen);
+       $enc = $this->_RC4($owner_RC4_key, $user_pass);
+       if ($this->useRC128encryption) {
+               $len = strlen($owner_RC4_key);
+               for ($i = 1; $i <= 19; ++$i) {
+                       $key = '';
+                       for ($j = 0; $j < $len; ++$j) {
+                               $key .= chr(ord($owner_RC4_key{$j}) ^ $i);
+                       }
+                       $enc = $this->_RC4($key, $enc);
+               }
+       }
+       return $enc;
+}
+
+// Compute U value
+function _Uvalue() {
+       if ($this->useRC128encryption) {
+               $tmp = $this->_md5_16($this->padding.$this->_hexToString($this->uniqid));
+               $enc = $this->_RC4($this->encryption_key, $tmp);
+               $len = strlen($tmp);
+               for ($i=1; $i<=19; ++$i) {
+                       $key = '';
+                       for ($j=0; $j<$len; ++$j) {
+                               $key .= chr(ord($this->encryption_key{$j}) ^ $i);
+                       }
+                       $enc = $this->_RC4($key, $enc);
+               }
+               $enc .= str_repeat("\x00", 16);
+               return substr($enc, 0, 32);
+       }
+       else {
+               return $this->_RC4($this->encryption_key, $this->padding);
+       }
+}
+
+// Compute encryption key
+function _generateencryptionkey($user_pass, $owner_pass, $protection) {
+       // Pad passwords
+       $user_pass = substr($user_pass.$this->padding,0,32);
+       $owner_pass = substr($owner_pass.$this->padding,0,32);
+       $chars = 'ABCDEF1234567890';
+       $id = '';
+       for ($i=0; $i<32; $i++) { $id .= $chars{rand(0, 15)}; }
+       $this->uniqid = md5($id);
+       // Compute O value
+       $this->Ovalue = $this->_Ovalue($user_pass,$owner_pass);
+       // Compute encyption key
+       if ($this->useRC128encryption)
+               $keybytelen = (128/8);
+       else 
+               $keybytelen = (40/8);
+       $prot = sprintf('%032b', $protection);
+       $perms = chr(bindec(substr($prot,24,8)));
+       $perms .= chr(bindec(substr($prot,16,8)));
+       $perms .= chr(bindec(substr($prot,8,8)));
+       $perms .= chr(bindec(substr($prot,0,8)));
+       $tmp = $this->_md5_16($user_pass.$this->Ovalue.$perms.$this->_hexToString($this->uniqid));
+       if ($this->useRC128encryption) {
+               for ($i=0; $i<50; ++$i) {
+                       $tmp = $this->_md5_16(substr($tmp, 0, $keybytelen));
+               }
+       }
+       $this->encryption_key = substr($tmp,0,$keybytelen);
+       // Compute U value
+       $this->Uvalue = $this->_Uvalue();
+       // Compute P value
+       $this->Pvalue = $protection;
+}
+
+
+function _hexToString($hs) {
+       $s = '';
+       $len = strlen($hs);
+       if (($len % 2) != 0) {
+               $hs .= '0';
+               ++$len;
+       }
+       for ($i = 0; $i < $len; $i += 2) {
+               $s .= chr(hexdec($hs{$i}.$hs{($i + 1)}));
+       }
+       return $s;
+}
+
+/*-- END ENCRYPTION --*/
+
+//=========================================
+/*-- BOOKMARKS --*/
+// FROM class PDF_Bookmark
+
+function Bookmark($txt,$level=0,$y=0) {
+       $txt = $this->purify_utf8_text($txt);
+       if ($this->text_input_as_HTML) {
+               $txt = $this->all_entities_to_utf8($txt);
+       }
+       if($y==-1) {
+               if (!$this->ColActive){ $y=$this->y; }
+               else { $y = $this->y0; }        // If columns are on - mark top of columns
+       }
+       // else y is used as set, or =0 i.e. top of page
+       // DIRECTIONALITY RTL
+       $bmo = array('t'=>$txt,'l'=>$level,'y'=>$y,'p'=>$this->page);
+       if ($this->keep_block_together) {
+               $this->ktBMoutlines[]= $bmo;
+       }
+/*-- TABLES --*/
+       else if ($this->table_rotate) {
+               $this->tbrot_BMoutlines[]= $bmo;
+       }
+       else if ($this->kwt) {
+               $this->kwt_BMoutlines[]= $bmo;
+       }
+/*-- END TABLES --*/
+       else if ($this->ColActive) {    // *COLUMNS*
+               $this->col_BMoutlines[]= $bmo;  // *COLUMNS*
+       }       // *COLUMNS*
+       else {
+               $this->BMoutlines[]= $bmo;
+       }
+}
+
+
+function _putbookmarks()
+{
+       $nb=count($this->BMoutlines);
+       if($nb==0)
+               return;
+
+       // mPDF 5.6.36
+       $bmo = $this->BMoutlines;
+       $this->BMoutlines = array();
+       $lastlevel = -1;
+       for($i=0;$i<count($bmo);$i++) {
+               if ($bmo[$i]['l']>0) {
+                       while($bmo[$i]['l']-$lastlevel > 1) {   // If jump down more than one level, insert a new entry
+                               $new = $bmo[$i];
+                               $new['t']="[".$new['t']."]";    // Put [] around text/title to highlight
+                               $new['l']=$lastlevel+1;
+                               $lastlevel++;
+                               $this->BMoutlines[] = $new;
+                       }
+               }
+               $this->BMoutlines[] = $bmo[$i];
+               $lastlevel = $bmo[$i]['l'];
+       }
+       $nb=count($this->BMoutlines);
+
+       $lru=array();
+       $level=0;
+       foreach($this->BMoutlines as $i=>$o) {
+               if($o['l']>0) {
+                       $parent=$lru[$o['l']-1];
+                       //Set parent and last pointers
+                       $this->BMoutlines[$i]['parent']=$parent;
+                       $this->BMoutlines[$parent]['last']=$i;
+                       if($o['l']>$level) {
+                               //Level increasing: set first pointer
+                               $this->BMoutlines[$parent]['first']=$i;
+                       }
+               }
+               else {
+                       $this->BMoutlines[$i]['parent']=$nb;
+               }
+               if($o['l']<=$level and $i>0) {
+                       //Set prev and next pointers
+                       $prev=$lru[$o['l']];
+                       $this->BMoutlines[$prev]['next']=$i;
+                       $this->BMoutlines[$i]['prev']=$prev;
+               }
+               $lru[$o['l']]=$i;
+               $level=$o['l'];
+       }
+
+
+       //Outline items
+       $n=$this->n+1;
+       foreach($this->BMoutlines as $i=>$o) {
+               $this->_newobj();
+               $this->_out('<</Title '.$this->_UTF16BEtextstring($o['t']));
+               $this->_out('/Parent '.($n+$o['parent']).' 0 R');
+               if(isset($o['prev']))
+                       $this->_out('/Prev '.($n+$o['prev']).' 0 R');
+               if(isset($o['next']))
+                       $this->_out('/Next '.($n+$o['next']).' 0 R');
+               if(isset($o['first']))
+                       $this->_out('/First '.($n+$o['first']).' 0 R');
+               if(isset($o['last']))
+                       $this->_out('/Last '.($n+$o['last']).' 0 R');
+
+
+               if (isset($this->pageDim[$o['p']]['h'])) { $h=$this->pageDim[$o['p']]['h']; }
+               else { $h = 0; }
+
+               $this->_out(sprintf('/Dest [%d 0 R /XYZ 0 %.3F null]',1+2*($o['p']),($h-$o['y'])*_MPDFK));
+               if (isset($this->bookmarkStyles) && isset($this->bookmarkStyles[$o['l']])) {
+                       // font style
+                       $bms = $this->bookmarkStyles[$o['l']]['style'];
+                       $style = 0;
+                       if (strpos($bms,'B') !== false) { $style += 2; }
+                       if (strpos($bms,'I') !== false) { $style += 1; }
+                       $this->_out(sprintf('/F %d', $style));
+                       // Colour
+                       $col = $this->bookmarkStyles[$o['l']]['color'];
+                       if (isset($col) && is_array($col) && count($col)==3) {
+                               $this->_out(sprintf('/C [%.3F %.3F %.3F]', ($col[0]/255), ($col[1]/255), ($col[2]/255)));
+                       } 
+               }
+
+               $this->_out('/Count 0>>');
+               $this->_out('endobj');
+       }
+       //Outline root
+       $this->_newobj();
+       $this->OutlineRoot=$this->n;
+       $this->_out('<</Type /BMoutlines /First '.$n.' 0 R');
+       $this->_out('/Last '.($n+$lru[0]).' 0 R>>');
+       $this->_out('endobj');
+}
+/*-- END BOOKMARKS --*/
+
+
+
+//======================================================
+
+
+// DEPRACATED but included for backwards compatability
+function startPageNums() {
+}
+
+//======================================================
+/*-- TOC --*/
+// ToC TABLE OF CONTENTS
+
+// Initiate, and Mark a place for the Table of Contents to be inserted
+function TOC($tocfont='', $tocfontsize=0, $tocindent=0, $resetpagenum='', $pagenumstyle='', $suppress='', $toc_orientation='', $TOCusePaging=true, $TOCuseLinking=false, $toc_id=0, $tocoutdent='') {  // mPDF 5.6.19
+       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
+       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
+       $this->tocontents->TOC($tocfont, $tocfontsize, $tocindent, $resetpagenum, $pagenumstyle, $suppress, $toc_orientation, $TOCusePaging, $TOCuseLinking, $toc_id, $tocoutdent);  // mPDF 5.6.19
+}
+
+
+function TOCpagebreakByArray($a) {
+       if (!is_array($a)) { $a = array(); }
+       if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
+       if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
+       $tocoutdent = (isset($a['tocoutdent']) ? $a['tocoutdent'] : (isset($a['outdent']) ? $a['outdent'] : ''));
+       $TOCusePaging = (isset($a['TOCusePaging']) ? $a['TOCusePaging'] : (isset($a['paging']) ? $a['paging'] : true));
+       $TOCuseLinking = (isset($a['TOCuseLinking']) ? $a['TOCuseLinking'] : (isset($a['links']) ? $a['links'] : ''));
+       $toc_orientation = (isset($a['toc_orientation']) ? $a['toc_orientation'] : (isset($a['toc-orientation']) ? $a['toc-orientation'] : ''));
+       $toc_mgl = (isset($a['toc_mgl']) ? $a['toc_mgl'] : (isset($a['toc-margin-left']) ? $a['toc-margin-left'] : ''));
+       $toc_mgr = (isset($a['toc_mgr']) ? $a['toc_mgr'] : (isset($a['toc-margin-right']) ? $a['toc-margin-right'] : ''));
+       $toc_mgt = (isset($a['toc_mgt']) ? $a['toc_mgt'] : (isset($a['toc-margin-top']) ? $a['toc-margin-top'] : ''));
+       $toc_mgb = (isset($a['toc_mgb']) ? $a['toc_mgb'] : (isset($a['toc-margin-bottom']) ? $a['toc-margin-bottom'] : ''));
+       $toc_mgh = (isset($a['toc_mgh']) ? $a['toc_mgh'] : (isset($a['toc-margin-header']) ? $a['toc-margin-header'] : ''));
+       $toc_mgf = (isset($a['toc_mgf']) ? $a['toc_mgf'] : (isset($a['toc-margin-footer']) ? $a['toc-margin-footer'] : ''));
+       $toc_ohname = (isset($a['toc_ohname']) ? $a['toc_ohname'] : (isset($a['toc-odd-header-name']) ? $a['toc-odd-header-name'] : ''));
+       $toc_ehname = (isset($a['toc_ehname']) ? $a['toc_ehname'] : (isset($a['toc-even-header-name']) ? $a['toc-even-header-name'] : ''));
+       $toc_ofname = (isset($a['toc_ofname']) ? $a['toc_ofname'] : (isset($a['toc-odd-footer-name']) ? $a['toc-odd-footer-name'] : ''));
+       $toc_efname = (isset($a['toc_efname']) ? $a['toc_efname'] : (isset($a['toc-even-footer-name']) ? $a['toc-even-footer-name'] : ''));
+       $toc_ohvalue = (isset($a['toc_ohvalue']) ? $a['toc_ohvalue'] : (isset($a['toc-odd-header-value']) ? $a['toc-odd-header-value'] : 0));
+       $toc_ehvalue = (isset($a['toc_ehvalue']) ? $a['toc_ehvalue'] : (isset($a['toc-even-header-value']) ? $a['toc-even-header-value'] : 0));
+       $toc_ofvalue = (isset($a['toc_ofvalue']) ? $a['toc_ofvalue'] : (isset($a['toc-odd-footer-value']) ? $a['toc-odd-footer-value'] : 0));
+       $toc_efvalue = (isset($a['toc_efvalue']) ? $a['toc_efvalue'] : (isset($a['toc-even-footer-value']) ? $a['toc-even-footer-value'] : 0));
+       $toc_preHTML = (isset($a['toc_preHTML']) ? $a['toc_preHTML'] : (isset($a['toc-preHTML']) ? $a['toc-preHTML'] : ''));
+       $toc_postHTML = (isset($a['toc_postHTML']) ? $a['toc_postHTML'] : (isset($a['toc-postHTML']) ? $a['toc-postHTML'] : ''));
+       $toc_bookmarkText = (isset($a['toc_bookmarkText']) ? $a['toc_bookmarkText'] : (isset($a['toc-bookmarkText']) ? $a['toc-bookmarkText'] : ''));
+       $resetpagenum = (isset($a['resetpagenum']) ? $a['resetpagenum'] : '');
+       $pagenumstyle = (isset($a['pagenumstyle']) ? $a['pagenumstyle'] : '');
+       $suppress = (isset($a['suppress']) ? $a['suppress'] : '');
+       $orientation = (isset($a['orientation']) ? $a['orientation'] : '');
+       $mgl = (isset($a['mgl']) ? $a['mgl'] : (isset($a['margin-left']) ? $a['margin-left'] : ''));
+       $mgr = (isset($a['mgr']) ? $a['mgr'] : (isset($a['margin-right']) ? $a['margin-right'] : ''));
+       $mgt = (isset($a['mgt']) ? $a['mgt'] : (isset($a['margin-top']) ? $a['margin-top'] : ''));
+       $mgb = (isset($a['mgb']) ? $a['mgb'] : (isset($a['margin-bottom']) ? $a['margin-bottom'] : ''));
+       $mgh = (isset($a['mgh']) ? $a['mgh'] : (isset($a['margin-header']) ? $a['margin-header'] : ''));
+       $mgf = (isset($a['mgf']) ? $a['mgf'] : (isset($a['margin-footer']) ? $a['margin-footer'] : ''));
+       $ohname = (isset($a['ohname']) ? $a['ohname'] : (isset($a['odd-header-name']) ? $a['odd-header-name'] : ''));
+       $ehname = (isset($a['ehname']) ? $a['ehname'] : (isset($a['even-header-name']) ? $a['even-header-name'] : ''));
+       $ofname = (isset($a['ofname']) ? $a['ofname'] : (isset($a['odd-footer-name']) ? $a['odd-footer-name'] : ''));
+       $efname = (isset($a['efname']) ? $a['efname'] : (isset($a['even-footer-name']) ? $a['even-footer-name'] : ''));
+       $ohvalue = (isset($a['ohvalue']) ? $a['ohvalue'] : (isset($a['odd-header-value']) ? $a['odd-header-value'] : 0));
+       $ehvalue = (isset($a['ehvalue']) ? $a['ehvalue'] : (isset($a['even-header-value']) ? $a['even-header-value'] : 0));
+       $ofvalue = (isset($a['ofvalue']) ? $a['ofvalue'] : (isset($a['odd-footer-value']) ? $a['odd-footer-value'] : 0));
+       $efvalue = (isset($a['efvalue']) ? $a['efvalue'] : (isset($a['even-footer-value']) ? $a['even-footer-value'] : 0));
+       $toc_id = (isset($a['toc_id']) ? $a['toc_id'] : (isset($a['name']) ? $a['name'] : 0));
+       $pagesel = (isset($a['pagesel']) ? $a['pagesel'] : (isset($a['pageselector']) ? $a['pageselector'] : ''));
+       $toc_pagesel = (isset($a['toc_pagesel']) ? $a['toc_pagesel'] : (isset($a['toc-pageselector']) ? $a['toc-pageselector'] : ''));
+       $sheetsize = (isset($a['sheetsize']) ? $a['sheetsize'] : (isset($a['sheet-size']) ? $a['sheet-size'] : ''));
+       $toc_sheetsize = (isset($a['toc_sheetsize']) ? $a['toc_sheetsize'] : (isset($a['toc-sheet-size']) ? $a['toc-sheet-size'] : ''));
+
+       $this->TOCpagebreak($tocfont, $tocfontsize, $tocindent, $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent);      // mPDF 5.6.19
+
+}
+
+function TOCpagebreak($tocfont='', $tocfontsize='', $tocindent='', $TOCusePaging=true, $TOCuseLinking='', $toc_orientation='', $toc_mgl='',$toc_mgr='',$toc_mgt='',$toc_mgb='',$toc_mgh='',$toc_mgf='',$toc_ohname='',$toc_ehname='',$toc_ofname='',$toc_efname='',$toc_ohvalue=0,$toc_ehvalue=0,$toc_ofvalue=0, $toc_efvalue=0, $toc_preHTML='', $toc_postHTML='', $toc_bookmarkText='', $resetpagenum='', $pagenumstyle='', $suppress='', $orientation='', $mgl='',$mgr='',$mgt='',$mgb='',$mgh='',$mgf='',$ohname='',$ehname='',$ofname='',$efname='',$ohvalue=0,$ehvalue=0,$ofvalue=0,$efvalue=0, $toc_id=0, $pagesel='', $toc_pagesel='', $sheetsize='', $toc_sheetsize='', $tocoutdent='') {     // mPDF 5.6.19) {
+               if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
+               if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
+               //Start a new page
+               if($this->state==0) $this->AddPage();
+               if ($this->y == $this->tMargin && (!$this->mirrorMargins ||($this->mirrorMargins && $this->page % 2==1))) {
+                       // Don't add a page
+                       if ($this->page==1 && count($this->PageNumSubstitutions)==0) { 
+                               if (!$suppress) { $suppress = 'off'; }
+                               if (!$resetpagenum) { $resetpagenum= 1; }
+                               //$this->PageNumSubstitutions[] = array('from'=>1, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress);
+                       }
+                       $this->PageNumSubstitutions[] = array('from'=>$this->page, 'reset'=> $resetpagenum, 'type'=>$pagenumstyle, 'suppress'=> $suppress); 
+               }
+               else {
+                       $this->AddPage($orientation,'NEXT-ODD', $resetpagenum, $pagenumstyle, $suppress,$mgl,$mgr,$mgt,$mgb,$mgh,$mgf,$ohname,$ehname,$ofname,$efname,$ohvalue,$ehvalue,$ofvalue,$efvalue,$pagesel,$sheetsize);
+               }
+
+               $this->tocontents->TOCpagebreak($tocfont, $tocfontsize, $tocindent, $TOCusePaging, $TOCuseLinking, $toc_orientation, $toc_mgl, $toc_mgr, $toc_mgt, $toc_mgb, $toc_mgh, $toc_mgf, $toc_ohname, $toc_ehname, $toc_ofname, $toc_efname, $toc_ohvalue, $toc_ehvalue, $toc_ofvalue, $toc_efvalue, $toc_preHTML, $toc_postHTML, $toc_bookmarkText, $resetpagenum, $pagenumstyle, $suppress, $orientation, $mgl, $mgr, $mgt, $mgb, $mgh, $mgf, $ohname, $ehname, $ofname, $efname, $ohvalue, $ehvalue, $ofvalue, $efvalue, $toc_id, $pagesel, $toc_pagesel, $sheetsize, $toc_sheetsize, $tocoutdent);  // mPDF 5.6.19
+}
+
+function TOC_Entry($txt, $level=0, $toc_id=0) {
+               $txt = $this->purify_utf8_text($txt);
+               if ($this->text_input_as_HTML) {
+                       $txt = $this->all_entities_to_utf8($txt);
+               }
+               if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
+               if ($this->ColActive) { $ily = $this->y0; } else { $ily = $this->y; }   // use top of columns
+
+               // mPDF 5.6.19  mPDF 5.6.25     mPDF 5.6.37
+               if (!class_exists('tocontents', false)) { include(_MPDF_PATH.'classes/tocontents.php'); }
+               if (empty($this->tocontents)) { $this->tocontents = new tocontents($this); }
+               $linkn = $this->AddLink();
+               $uid = '__mpdfinternallink_' . $linkn ;
+               if ($this->keep_block_together) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kt"=>true ); }
+               else if ($this->table_rotate) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "tbrot"=>true ); }
+               else if ($this->kwt) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "kwt"=>true ); }
+               else if ($this->ColActive) { $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page, "col"=>$this->CurrCol ); }
+               else    $this->internallink[$uid] = array("Y"=>$ily,"PAGE"=>$this->page );
+               $this->internallink['#'.$uid] = $linkn;
+               $this->SetLink($linkn,$ily,$this->page);
+
+/*-- RTL --*/
+               if ($this->biDirectional)  {
+                       $txt = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $txt );
+               }
+/*-- END RTL --*/
+               if (strtoupper($toc_id)=='ALL') { $toc_id = '_mpdf_all'; }
+               else if (!$toc_id) { $toc_id = 0; }
+               else { $toc_id = strtolower($toc_id); }
+               $btoc = array('t'=>$txt,'l'=>$level,'p'=>$this->page, 'link'=>$linkn, 'toc_id'=>$toc_id);
+               if ($this->keep_block_together) {
+                       $this->_kttoc[]= $btoc;
+               }
+/*-- TABLES --*/
+               else if ($this->table_rotate) {
+                       $this->tbrot_toc[]= $btoc;
+               }
+               else if ($this->kwt) {
+                       $this->kwt_toc[]= $btoc;
+               }
+/*-- END TABLES --*/
+               else if ($this->ColActive) {            // *COLUMNS*
+                       $this->col_toc[]= $btoc;        // *COLUMNS*
+               }                                               // *COLUMNS*
+               else {
+                       $this->tocontents->_toc[]= $btoc;
+               }
+}
+
+/*-- END TOC --*/
+
+//======================================================
+function MovePages($target_page, $start_page, $end_page=-1) {
+       // move a page/pages EARLIER in the document
+               if ($end_page<1) { $end_page = $start_page; }
+               $n_toc = $end_page - $start_page + 1;
+
+               // Set/Update PageNumSubstitutions changes before moving anything
+               if (count($this->PageNumSubstitutions)) {
+                       $tp_present = false;
+                       $sp_present = false;
+                       $ep_present = false;
+                       foreach($this->PageNumSubstitutions AS $k=>$v) {
+                         if ($this->PageNumSubstitutions[$k]['from']==$target_page) {
+                               $tp_present = true;
+                               if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { 
+                                       $this->PageNumSubstitutions[$k]['suppress']='off';
+                               }
+                         }
+                         if ($this->PageNumSubstitutions[$k]['from']==$start_page) {
+                               $sp_present = true;
+                               if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { 
+                                       $this->PageNumSubstitutions[$k]['suppress']='off';
+                               }
+                         }
+                         if ($this->PageNumSubstitutions[$k]['from']==($end_page+1)) {
+                               $ep_present = true;
+                               if ($this->PageNumSubstitutions[$k]['suppress']!='on' && $this->PageNumSubstitutions[$k]['suppress']!=1) { 
+                                       $this->PageNumSubstitutions[$k]['suppress']='off';
+                               }
+                         }
+                       }
+
+                       if (!$tp_present) { 
+                               list($tp_type, $tp_suppress, $tp_reset) = $this->docPageSettings($target_page);
+                       }
+                       if (!$sp_present) { 
+                               list($sp_type, $sp_suppress, $sp_reset) = $this->docPageSettings($start_page);
+                       }
+                       if (!$ep_present) { 
+                               list($ep_type, $ep_suppress, $ep_reset) = $this->docPageSettings($start_page-1);
+                       }
+
+               }
+
+               $last = array();
+               //store pages
+               for($i = $start_page;$i <= $end_page ;$i++)
+                       $last[]=$this->pages[$i];
+               //move pages
+               for($i=$start_page - 1;$i>=($target_page);$i--) {
+                       $this->pages[$i+$n_toc]=$this->pages[$i];
+               }
+               //Put toc pages at insert point
+               for($i = 0;$i < $n_toc;$i++) {
+                       $this->pages[$target_page + $i]=$last[$i];
+               }
+
+/*-- BOOKMARKS --*/
+               // Update Bookmarks
+               foreach($this->BMoutlines as $i=>$o) {
+                       if($o['p']>=$target_page) {
+                               $this->BMoutlines[$i]['p'] += $n_toc;
+                       }
+               }
+/*-- END BOOKMARKS --*/
+
+               // Update Page Links
+               if (count($this->PageLinks)) {
+                  $newarr = array();
+                  foreach($this->PageLinks as $i=>$o) {
+                       foreach($this->PageLinks[$i] as $key => $pl) {
+                               if (strpos($pl[4],'@')===0) {
+                                       $p=substr($pl[4],1);
+                                       if($p>=$start_page && $p<=$end_page) {
+                                               $this->PageLinks[$i][$key][4] = '@'.($p + ($target_page - $start_page));
+                                       }
+                                       else if($p>=$target_page && $p<$start_page) {
+                                               $this->PageLinks[$i][$key][4] = '@'.($p+$n_toc);
+                                       }
+                               }
+                       }
+                       if($i>=$start_page && $i<=$end_page) {
+                               $newarr[($i + ($target_page - $start_page))] = $this->PageLinks[$i];
+                       }
+                       else if($i>=$target_page && $i<$start_page) {
+                               $newarr[($i + $n_toc)] = $this->PageLinks[$i];
+                       }
+                       else {
+                               $newarr[$i] = $this->PageLinks[$i];
+                       }
+                  }
+                  $this->PageLinks = $newarr;
+               }
+
+               // OrientationChanges
+               if (count($this->OrientationChanges)) {
+                       $newarr = array();
+                       foreach($this->OrientationChanges AS $p=>$v) {
+                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->OrientationChanges[$p]; }
+                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->OrientationChanges[$p]; }
+                               else { $newarr[$p] = $this->OrientationChanges[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->OrientationChanges = $newarr;
+               }
+
+               // Page Dimensions
+               if (count($this->pageDim)) {
+                       $newarr = array();
+                       foreach($this->pageDim AS $p=>$v) {
+                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->pageDim[$p]; }
+                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->pageDim[$p]; }
+                               else { $newarr[$p] = $this->pageDim[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->pageDim = $newarr;
+               }
+
+               // HTML Headers & Footers
+               if (count($this->saveHTMLHeader)) {
+                       $newarr = array();
+                       foreach($this->saveHTMLHeader AS $p=>$v) {
+                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLHeader[$p]; }
+                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLHeader[$p]; }
+                               else { $newarr[$p] = $this->saveHTMLHeader[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->saveHTMLHeader = $newarr;
+               }
+               if (count($this->saveHTMLFooter)) {
+                       $newarr = array();
+                       foreach($this->saveHTMLFooter AS $p=>$v) {
+                               if($p>=$start_page && $p<=$end_page) { $newarr[($p + ($target_page - $start_page))] = $this->saveHTMLFooter[$p]; }
+                               else if($p>=$target_page && $p<$start_page) { $newarr[$p+$n_toc] = $this->saveHTMLFooter[$p]; }
+                               else { $newarr[$p] = $this->saveHTMLFooter[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->saveHTMLFooter = $newarr;
+               }
+
+               // Update Internal Links
+               if (count($this->internallink)) {
+                  foreach($this->internallink as $key=>$o) {
+                       if($o['PAGE']>=$start_page && $o['PAGE']<=$end_page) {
+                               $this->internallink[$key]['PAGE'] += ($target_page - $start_page);
+                       }
+                       else if($o['PAGE']>=$target_page && $o['PAGE']<$start_page) {
+                               $this->internallink[$key]['PAGE'] += $n_toc;
+                       }
+                  }
+               }
+
+               // Update Links
+               if (count($this->links)) {
+                  foreach($this->links as $key=>$o) {
+                       if($o[0]>=$start_page && $o[0]<=$end_page) {
+                               $this->links[$key][0] += ($target_page - $start_page);
+                       }
+                       if($o[0]>=$target_page && $o[0]<$start_page) {
+                               $this->links[$key][0] += $n_toc;
+                       }
+                  }
+               }
+
+               // Update Form fields
+               if (count($this->form->forms)) {
+                  foreach($this->form->forms as $key=>$f) {
+                       if($f['page']>=$start_page && $f['page']<=$end_page) {
+                               $this->form->forms[$key]['page'] += ($target_page - $start_page);
+                       }
+                       if($f['page']>=$target_page && $f['page']<$start_page) {
+                               $this->form->forms[$key]['page'] += $n_toc;
+                       }
+                  }
+               }
+
+/*-- ANNOTATIONS --*/
+               // Update Annotations
+               if (count($this->PageAnnots)) {
+                  $newarr = array();
+                  foreach($this->PageAnnots as $p=>$anno) {
+                       if($p>=$start_page && $p<=$end_page) {
+                               $np = $p + ($target_page - $start_page);
+                               foreach($anno as $o) {
+                                       $newarr[$np][] = $o;
+                               }
+                       }
+                       else if($p>=$target_page && $p<$start_page) {
+                               $np = $p + $n_toc;
+                               foreach($anno as $o) {
+                                       $newarr[$np][] = $o;
+                               }
+                     }
+                       else {
+                               $newarr[$p] = $this->PageAnnots[$p];
+                       }
+                  }
+                  $this->PageAnnots = $newarr;
+                  unset($newarr);
+               }
+/*-- END ANNOTATIONS --*/
+
+               // Update PageNumSubstitutions
+               if (count($this->PageNumSubstitutions)) {
+                       $newarr = array();
+                       foreach($this->PageNumSubstitutions AS $k=>$v) {
+                               if($this->PageNumSubstitutions[$k]['from']>=$start_page && $this->PageNumSubstitutions[$k]['from']<=$end_page) { 
+                                       $this->PageNumSubstitutions[$k]['from'] += ($target_page - $start_page); 
+                                       $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; 
+                               }
+                               else if($this->PageNumSubstitutions[$k]['from']>=$target_page && $this->PageNumSubstitutions[$k]['from']<$start_page) {
+                                       $this->PageNumSubstitutions[$k]['from'] += $n_toc;
+                                       $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; 
+                               }
+                               else {
+                                       $newarr[$this->PageNumSubstitutions[$k]['from']] = $this->PageNumSubstitutions[$k]; 
+                               }
+                       }
+
+                       if (!$sp_present) {
+                                       $newarr[$target_page] = array('from'=>$target_page, 'suppress'=>$sp_suppress, 'reset'=>$sp_reset, 'type'=>$sp_type); 
+                       }
+                       if (!$tp_present) {
+                                       $newarr[($target_page + $n_toc)] = array('from'=>($target_page+$n_toc), 'suppress'=>$tp_suppress, 'reset'=>$tp_reset, 'type'=>$tp_type); 
+                       }
+                       if (!$ep_present && $end_page>count($this->pages)) {
+                                       $newarr[($end_page+1)] = array('from'=>($end_page+1), 'suppress'=>$ep_suppress, 'reset'=>$ep_reset, 'type'=>$ep_type); 
+                       }
+                       ksort($newarr);
+                       $this->PageNumSubstitutions = array();
+                       foreach($newarr as $v) {
+                               $this->PageNumSubstitutions[] = $v;
+                       }
+               }
+}
+
+//======================================================
+function DeletePages($start_page, $end_page=-1) {
+       // move a page/pages EARLIER in the document
+               if ($end_page<1) { $end_page = $start_page; }
+               $n_tod = $end_page - $start_page + 1;
+               $last_page = count($this->pages);
+               $n_atend = $last_page - $end_page + 1;
+
+               //move pages
+               for($i=0;$i<$n_atend;$i++) {
+                       $this->pages[$start_page+$i]=$this->pages[$end_page+1+$i];
+               }
+               //delete pages
+               for($i = 0;$i < $n_tod ;$i++)
+                       unset($this->pages[$last_page-$i]);
+
+
+/*-- BOOKMARKS --*/
+               // Update Bookmarks
+               foreach($this->BMoutlines as $i=>$o) {
+                       if($o['p']>=$end_page) { $this->BMoutlines[$i]['p'] -= $n_tod; }
+                       else if($p<$start_page) { unset($this->BMoutlines[$i]); }
+               }
+/*-- END BOOKMARKS --*/
+
+               // Update Page Links
+               if (count($this->PageLinks)) {
+                  $newarr = array();
+                  foreach($this->PageLinks as $i=>$o) {
+                       foreach($this->PageLinks[$i] as $key => $pl) {
+                               if (strpos($pl[4],'@')===0) {
+                                       $p=substr($pl[4],1);
+                                       if($p>$end_page) { $this->PageLinks[$i][$key][4] = '@'.($p - $n_tod); }
+                                       else if($p<$start_page) { unset($this->PageLinks[$i][$key]); }
+                               }
+                       }
+                       if($i>$end_page) { $newarr[($i - $n_tod)] = $this->PageLinks[$i]; }
+                       else if($p<$start_page) { $newarr[$i] = $this->PageLinks[$i]; }
+                  }
+                  $this->PageLinks = $newarr;
+               }
+
+               // OrientationChanges
+               if (count($this->OrientationChanges)) {
+                       $newarr = array();
+                       foreach($this->OrientationChanges AS $p=>$v) {
+                               if($p>$end_page) { $newarr[($p - $t_tod)] = $this->OrientationChanges[$p]; }
+                               else if($p<$start_page) { $newarr[$p] = $this->OrientationChanges[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->OrientationChanges = $newarr;
+               }
+
+               // Page Dimensions
+               if (count($this->pageDim)) {
+                       $newarr = array();
+                       foreach($this->pageDim AS $p=>$v) {
+                               if($p>$end_page) { $newarr[($p - $n_tod)] = $this->pageDim[$p]; }
+                               else if($p<$start_page) { $newarr[$p] = $this->pageDim[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->pageDim = $newarr;
+               }
+
+               // HTML Headers & Footers
+               if (count($this->saveHTMLHeader)) {
+                       foreach($this->saveHTMLHeader AS $p=>$v) {
+                               if($p>end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLHeader[$p]; }
+                               else if($p<$start_page) { $newarr[$p] = $this->saveHTMLHeader[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->saveHTMLHeader = $newarr;
+               }
+               if (count($this->saveHTMLFooter)) {
+                       $newarr = array();
+                       foreach($this->saveHTMLFooter AS $p=>$v) {
+                               if($p>$end_page) { $newarr[($p - $n_tod)] = $this->saveHTMLFooter[$p]; }
+                               else if($p<$start_page) { $newarr[$p] = $this->saveHTMLFooter[$p]; }
+                       }
+                       ksort($newarr);
+                       $this->saveHTMLFooter = $newarr;
+               }
+
+               // Update Internal Links
+               foreach($this->internallink as $key=>$o) {
+                       if($o['PAGE']>$end_page) { $this->internallink[$key]['PAGE'] -= $n_tod; }
+                       else if($o['PAGE']<$start_page) { unset($this->internallink[$key]); }
+               }
+
+               // Update Links
+               foreach($this->links as $key=>$o) {
+                       if($o[0]>$end_page) { $this->links[$key][0] -= $n_tod; }
+                       else if($o[0]<$start_page) { unset($this->links[$key]); }
+               }
+
+               // Update Form fields
+               foreach($this->form->forms as $key=>$f) {
+                       if($f['page']>$end_page) { $this->form->forms[$key]['page'] -= $n_tod; }
+                       else if($f['page']<$start_page) { unset($this->form->forms[$key]); }
+               }
+
+/*-- ANNOTATIONS --*/
+               // Update Annotations
+               if (count($this->PageAnnots)) {
+                  $newarr = array();
+                  foreach($this->PageAnnots as $p=>$anno) {
+                       if($p>$end_page) { foreach($anno as $o) { $newarr[($p - $n_tod)][] = $o; } }
+                       else if($p<$start_page) { $newarr[$p] = $this->PageAnnots[$p]; }
+                  }
+                  ksort($newarr);
+                  $this->PageAnnots = $newarr;
+               }
+/*-- END ANNOTATIONS --*/
+
+               // Update PageNumSubstitutions
+               foreach($this->PageNumSubstitutions AS $k=>$v) {
+                       if($this->PageNumSubstitutions[$k]['from']>$end_page) { $this->PageNumSubstitutions[$k]['from'] -= $n_tod; }
+                       else if($this->PageNumSubstitutions[$k]['from']<$start_page) { unset($this->PageNumSubstitutions[$k]); }
+               }
+
+       unset($newarr);
+       $this->page = count($this->pages);
+}
+
+
+//======================================================
+/*-- INDEX --*/
+// FROM class PDF_Ref == INDEX
+
+function Reference($txt) {
+       $this->IndexEntry($txt);
+}
+
+
+function IndexEntry($txt, $xref='') {
+       if ($xref) { 
+               $this->IndexEntrySee($txt,$xref);
+               return;
+       }
+       $txt = strip_tags($txt);
+       $txt = $this->purify_utf8_text($txt);
+       if ($this->text_input_as_HTML) {
+               $txt = $this->all_entities_to_utf8($txt);
+       }
+       if ($this->usingCoreFont) { $txt = mb_convert_encoding($txt,$this->mb_enc,'UTF-8'); }
+
+       $Present=0;
+       $size=sizeof($this->Reference);
+
+       if ($this->directionality == 'rtl') {   // *RTL*
+               $txt = str_replace(':',' - ',$txt);     // *RTL*
+       }       // *RTL*
+       else {  // *RTL*
+               $txt = str_replace(':',', ',$txt);
+       }       // *RTL*
+
+
+       //Search the reference (AND Ref/PageNo) in the array
+       for ($i=0;$i<$size;$i++){
+               if ($this->keep_block_together) {
+                       if (isset($this->ktReference[$i]['t']) && $this->ktReference[$i]['t']==$txt){
+                               $Present=1;
+                               if (!in_array($this->page,$this->ktReference[$i]['p'])) {
+                                       $this->ktReference[$i]['op'] = $this->page;
+                               }
+                       }
+               }
+/*-- TABLES --*/
+               else if ($this->table_rotate) {
+                       if (isset($this->tbrot_Reference[$i]['t']) && $this->tbrot_Reference[$i]['t']==$txt){
+                               $Present=1;
+                               if (!in_array($this->page,$this->tbrot_Reference[$i]['p'])) {
+                                       $this->tbrot_Reference[$i]['op'] = $this->page;
+                               }
+                       }
+               }
+               else if ($this->kwt) {
+                       if (isset($this->kwt_Reference[$i]['t']) && $this->kwt_Reference[$i]['t']==$txt){
+                               $Present=1;
+                               if (!in_array($this->page,$this->kwt_Reference[$i]['p'])) {
+                                       $this->kwt_Reference[$i]['op'] = $this->page;
+                               }
+                       }
+               }
+/*-- END TABLES --*/
+/*-- COLUMNS --*/
+               else if ($this->ColActive) {
+                       if (isset($this->col_Reference[$i]['t']) && $this->col_Reference[$i]['t']==$txt){
+                               $Present=1;
+                               if (!in_array($this->page,$this->col_Reference[$i]['p'])) {
+                                       $this->col_Reference[$i]['op'] = $this->page;
+                               }
+                       }
+               }
+/*-- END COLUMNS --*/
+               else {
+                       if (isset($this->Reference[$i]['t']) && $this->Reference[$i]['t']==$txt){
+                               $Present=1;
+                               if (!in_array($this->page,$this->Reference[$i]['p'])) {
+                                       $this->Reference[$i]['p'][] = $this->page;
+                               }
+                       }
+               }
+       }
+       //If not found, add it
+       if ($Present==0) {
+               $opr = array('t'=>$txt, 'op'=>$this->page);
+               if ($this->keep_block_together) {
+                       $this->ktReference[]= $opr;
+               }
+/*-- TABLES --*/
+               else if ($this->table_rotate) {
+                       $this->tbrot_Reference[]= $opr;
+               }
+               else if ($this->kwt) {
+                       $this->kwt_Reference[]= $opr;
+               }
+/*-- END TABLES --*/
+/*-- COLUMNS --*/
+               else if ($this->ColActive) {
+                       $this->col_Reference[]= $opr;
+               }
+/*-- END COLUMNS --*/
+               else {
+                       $this->Reference[]=array('t'=>$txt,'p'=>array($this->page));
+               }
+       }
+}
+
+// Added function to add a reference "Elephants. See Chickens"
+function ReferenceSee($txta,$txtb) {
+       $this->IndexEntrySee($txta,$txtb);
+}
+
+function IndexEntrySee($txta,$txtb) {
+       $txta = strip_tags($txta);
+       $txtb = strip_tags($txtb);
+       $txta = $this->purify_utf8_text($txta);
+       $txtb = $this->purify_utf8_text($txtb);
+       if ($this->text_input_as_HTML) {
+               $txta = $this->all_entities_to_utf8($txta);
+               $txtb = $this->all_entities_to_utf8($txtb);
+       }
+       if ($this->usingCoreFont) { 
+               $txta = mb_convert_encoding($txta,$this->mb_enc,'UTF-8'); 
+               $txtb = mb_convert_encoding($txtb,$this->mb_enc,'UTF-8'); 
+       }
+       if ($this->directionality == 'rtl') {   // *RTL*
+               $txta = str_replace(':',' - ',$txta);   // *RTL*
+               $txtb = str_replace(':',' - ',$txtb);   // *RTL*
+       }       // *RTL*
+       else {  // *RTL*
+               $txta = str_replace(':',', ',$txta);
+               $txtb = str_replace(':',', ',$txtb);
+       }       // *RTL*
+       $this->Reference[]=array('t'=>$txta.' - see '.$txtb,'p'=>array());
+}
+
+function CreateReference($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) {
+       $this->CreateIndex($NbCol, $reffontsize, $linespacing, $offset, $usedivletters, $divlettfontsize, $gap, $reffont, $divlettfont, $useLinking);
+}
+
+function CreateIndex($NbCol=1, $reffontsize='', $linespacing='', $offset=3, $usedivletters=1, $divlettfontsize='', $gap=5, $reffont='',$divlettfont='', $useLinking=false) {
+       if (!$reffontsize) { $reffontsize = $this->default_font_size; }
+       if (!$divlettfontsize) { $divlettfontsize = ($this->default_font_size * 1.8); }
+       if (!$reffont) { $reffont = $this->default_font; }
+       if (!$divlettfont) { $divlettfont = $reffont; }
+       if (!$linespacing) { $linespacing= $this->default_lineheight_correction; }
+       if ($this->ColActive) { $this->SetColumns(0); } // *COLUMNS*
+       $size=sizeof($this->Reference);
+       if ($size == 0) { return false; }
+
+
+       if ($NbCol<2) { 
+               $NbCol = 1; 
+               $colWidth = $this->pgwidth;
+       }
+       else { 
+               $this->SetColumns($NbCol,'',$gap); 
+               $colWidth = $this->ColWidth;
+       }
+       if ($this->directionality == 'rtl') { $align = 'R'; }
+       else { $align = 'L'; }
+       $lett = '';
+       if (!function_exists('cmp')) {
+               function cmp ($a, $b) {
+                   return strnatcmp(strtolower($a['t']), strtolower($b['t']));
+               }
+       }
+       //Alphabetic sort of the references
+       usort($this->Reference, 'cmp');
+       $size=sizeof($this->Reference);
+       $this->breakpoints[$this->CurrCol][] = $this->y;        // *COLUMNS*
+
+       $divlettjuststarted = false;
+
+       $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; '));
+
+       $last_lett = '';
+       for ($i=0;$i<$size;$i++){
+               if ($this->Reference[$i]['t']) { 
+                       if ($usedivletters) {
+                          
+                          $lett = mb_strtoupper(mb_substr($this->Reference[$i]['t'],0,1,$this->mb_enc ),$this->mb_enc );
+                          if ($lett != $last_lett) {
+
+                               $save_bp = $this->breakpoints[$this->CurrCol];  // *COLUMNS*
+                               $divlettjuststarted = true;
+
+                               if ($i>0) { 
+                                       $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$divlettfont.'; font-size: '.$divlettfontsize.'pt; font-weight: bold; page-break-after: avoid; margin-top: 0.5em; margin-collapse: collapse; '));
+                               }
+                               else { 
+                                       $this->OpenTag('DIV',array('STYLE'=>'line-height: '.$linespacing.'; font-family: '.$divlettfont.'; font-size: '.$divlettfontsize.'pt; font-weight: bold; page-break-after: avoid; '));
+                               }
+                               $this->_saveTextBuffer($lett);
+                               $this->CloseTag('DIV');
+                          }
+                       }
+
+                       $this->OpenTag('DIV',array('STYLE'=>'text-indent: -'.$offset.'mm; line-height: '.$linespacing.'; font-family: '.$reffont.'; font-size: '.$reffontsize.'pt; '));
+
+/*-- RTL --*/
+                       // Change Arabic + Persian. to Presentation Forms
+                       if ($this->biDirectional)  {
+                               $this->Reference[$i]['t'] = preg_replace("/([".$this->pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $this->Reference[$i]['t'] );
+                       }
+/*-- END RTL --*/
+
+                       // Font-specific ligature substitution for Indic fonts
+                       if (isset($this->CurrentFont['indic']) && $this->CurrentFont['indic']) $this->ConvertIndic($this->Reference[$i]['t']);  // *INDIC*
+
+                       $this->_saveTextBuffer($this->Reference[$i]['t']);
+                       $ppp = $this->Reference[$i]['p'];       // = array of page numbers to point to
+                       if (count($ppp)) { 
+                        sort($ppp);
+                        $newarr = array();
+                        $range_start = $ppp[0];
+                        $range_end = 0;
+
+                        if (!$this->usingCoreFont) { $spacer = "\xc2\xa0 "; }
+                        else { $spacer = chr(160).' '; }
+                        $this->_saveTextBuffer($spacer);
+                        if ($this->directionality == 'rtl') { $sep = '.'; $joiner = '-'; }
+                        else { $sep = ', '; $joiner = '-'; }
+                        for ($zi=1;$zi<count($ppp);$zi++) {
+                         // RTL - Each number separately 
+                         if ($this->directionality == 'rtl') {
+/*-- RTL --*/
+                               if ($zi<count($ppp)-1) {
+                                       $txt =  $sep . $this->docPageNum($ppp[$zi]);
+                                       if ($useLinking) { $href = '@'.$ppp[$zi]; } 
+                                       else { $href = ''; }
+                                       $this->_saveTextBuffer($txt, $href);
+                               }
+/*-- END RTL --*/
+                         }
+
+                         else if ($ppp[$zi] == ($ppp[($zi-1)]+1)) {
+                               $range_end = $ppp[$zi];
+                         }
+                         else {
+                               if ($range_end) {
+                                       if ($range_end == $range_start+1) { 
+                                               if ($useLinking) { $href = '@'.$range_start; } 
+                                               else { $href = ''; }
+                                               $txt = $this->docPageNum($range_start) . $sep;
+                                               $this->_saveTextBuffer($txt, $href);
+                                               if ($useLinking) { $href = '@'.$ppp[$zi-1]; } 
+                                               else { $href = ''; }
+                                               $txt = $this->docPageNum($ppp[$zi-1]) . $sep;
+                                               $this->_saveTextBuffer($txt, $href);
+                                       }
+                                       else { 
+                                               if ($useLinking) { $href = '@'.$range_start; } 
+                                               else { $href = ''; }
+                                       }
+                               }
+                               else {
+                                       if ($useLinking) { $href = '@'.$ppp[$zi-1]; } 
+                                       else { $href = ''; }
+                                       $txt = $this->docPageNum($ppp[$zi-1]) . $sep;
+                                       $this->_saveTextBuffer($txt, $href);
+                               }
+                               $range_start = $ppp[$zi];
+                               $range_end = 0;
+                         }
+                        }
+
+                        if ($range_end) {
+                               if ($range_end == $range_start+1) { 
+                                       if ($useLinking) { $href = '@'.$range_start; } 
+                                       else { $href = ''; }
+                                       $txt = $this->docPageNum($range_start) . $sep;
+                                       $this->_saveTextBuffer($txt, $href);
+                                       if ($useLinking) { $href = '@'.$range_end; } 
+                                       else { $href = ''; }
+                                       $txt = $this->docPageNum($range_end);
+                                       $this->_saveTextBuffer($txt, $href);
+                               }
+                               else {
+                                       if ($useLinking) { $href = '@'.$range_start; } 
+                                       else { $href = ''; }
+                                       $txt = $this->docPageNum($range_start) . $joiner;
+                                       $this->_saveTextBuffer($txt, $href);
+                                       if ($useLinking) { $href = '@'.$range_end; } 
+                                       else { $href = ''; }
+                                       $txt = $this->docPageNum($range_end);
+                                       $this->_saveTextBuffer($txt, $href);
+                               }
+                        }
+                        else {
+                               if ($useLinking) { $href = '@'.$ppp[(count($ppp)-1)]; } 
+                               else { $href = ''; }
+                               $txt = $this->docPageNum($ppp[(count($ppp)-1)]);
+                               $this->_saveTextBuffer($txt, $href);
+                        }
+                       }
+               }
+               $this->CloseTag('DIV');
+
+               if ($divlettjuststarted) { $this->breakpoints[$this->CurrCol] = $save_bp; }     // *COLUMNS*
+               $divlettjuststarted = false;
+
+               $this->breakpoints[$this->CurrCol][] = $this->y;        // *COLUMNS*
+               $last_lett = $lett;
+       }
+       $this->CloseTag('DIV');
+       $this->breakpoints[$this->CurrCol][] = $this->y;        // *COLUMNS*
+       if ($this->ColActive) { $this->SetColumns(0);  }        // *COLUMNS*
+}
+/*-- END INDEX --*/
+
+
+function AcceptPageBreak() {
+       if (count($this->cellBorderBuffer)) { $this->printcellbuffer(); }       // *TABLES*
+/*-- COLUMNS --*/
+       if ($this->ColActive==1) {
+           if($this->CurrCol<$this->NbCol-1) {
+               //Go to the next column
+               $this->CurrCol++;
+               $this->SetCol($this->CurrCol);
+               $this->y=$this->y0;
+               $this->ChangeColumn=1;  // Number (and direction) of columns changed +1, +2, -2 etc.
+               // DIRECTIONALITY RTL
+               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
+               //Stay on the page
+               return false;
+          }
+          else {
+               //Go back to the first column - NEW PAGE
+               if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
+               $this->SetCol(0);
+               $this->y0 = $this->tMargin;
+               $this->ChangeColumn= -($this->NbCol-1);
+               // DIRECTIONALITY RTL
+               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
+               //Page break
+               return true;
+          }
+       }
+/*-- END COLUMNS --*/
+/*-- TABLES --*/
+       else if ($this->table_rotate) {
+               if ($this->tablebuffer) { $this->printtablebuffer(); }
+               return true;
+       }
+/*-- END TABLES --*/
+       else {  // *COLUMNS*
+               $this->ChangeColumn=0;
+               return $this->autoPageBreak;
+       }       // *COLUMNS*
+       return $this->autoPageBreak;
+}
+
+
+//----------- COLUMNS ---------------------
+/*-- COLUMNS --*/
+
+function SetColumns($NbCol,$vAlign='',$gap=5) {
+// NbCol = number of columns
+// CurrCol = Number of the current column starting at 0
+// Called externally to set columns on/off and number
+// Integer 2 upwards sets columns on to that number
+// Anything less than 2 turns columns off
+       if ($NbCol<2) { // SET COLUMNS OFF
+               if ($this->ColActive) { 
+                       $this->ColActive=0;
+                       if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
+                       $this->NbCol=1;
+                       $this->ResetMargins(); 
+                       $this->pgwidth = $this->w - $this->lMargin - $this->rMargin;
+                       $this->divwidth = 0;
+                       $this->Ln(); 
+               }
+               $this->ColActive=0;
+               $this->columnbuffer = array();
+               $this->ColDetails = array();
+               $this->columnLinks = array();
+               $this->columnAnnots = array();
+               $this->columnForms = array();
+               $this->col_Reference = array();
+               $this->col_BMoutlines = array();
+               $this->col_toc = array();
+               $this->breakpoints = array();
+       }
+       else {  // SET COLUMNS ON
+               if ($this->ColActive) { 
+                       $this->ColActive=0;
+                       if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
+                       $this->ResetMargins(); 
+               }
+               if (isset($this->y) && $this->y>$this->tMargin) $this->Ln();
+               $this->NbCol=$NbCol;
+               $this->ColGap = $gap;
+               $this->divwidth = 0;
+               $this->ColActive=1;
+               $this->ColumnAdjust = true;     // enables column height adjustment for the page
+               $this->columnbuffer = array();
+               $this->ColDetails = array();
+               $this->columnLinks = array();
+               $this->columnAnnots = array();
+               $this->columnForms = array();
+               $this->col_Reference = array();
+               $this->col_BMoutlines = array();
+               $this->col_toc = array();
+               $this->breakpoints = array();
+               if ((strtoupper($vAlign) == 'J') || (strtoupper($vAlign) == 'JUSTIFY')) { $vAlign = 'J'; } 
+               else { $vAlign = ''; }
+               $this->colvAlign = $vAlign;
+               //Save the ordinate
+               $absL = $this->DeflMargin-($gap/2);
+               $absR = $this->DefrMargin-($gap/2);
+               $PageWidth = $this->w-$absL-$absR;      // virtual pagewidth for calculation only
+               $ColWidth = (($PageWidth - ($gap * ($NbCol)))/$NbCol);
+               $this->ColWidth = $ColWidth;
+/*-- RTL --*/
+
+               if ($this->directionality == 'rtl') { 
+                       for ($i=0;$i<$this->NbCol;$i++) {
+                               $this->ColL[$i] = $absL + ($gap/2) + (($NbCol - ($i+1))*($PageWidth/$NbCol)) ;
+                               $this->ColR[$i] = $this->ColL[$i] + $ColWidth;  // NB This is not R margin -> R pos
+                       }
+               } 
+               else { 
+/*-- END RTL --*/
+                       for ($i=0;$i<$this->NbCol;$i++) {
+                               $this->ColL[$i] = $absL + ($gap/2) + ($i* ($PageWidth/$NbCol)   );
+                               $this->ColR[$i] = $this->ColL[$i] + $ColWidth;  // NB This is not R margin -> R pos
+                       }
+               }       // *RTL*
+               $this->pgwidth = $ColWidth;
+               $this->SetCol(0);
+               $this->y0=$this->y;
+       }
+       $this->x = $this->lMargin;
+}
+
+function SetCol($CurrCol) {
+// Used internally to set column by number: 0 is 1st column
+       //Set position on a column
+       $this->CurrCol=$CurrCol;
+       $x = $this->ColL[$CurrCol];
+       $xR = $this->ColR[$CurrCol];    // NB This is not R margin -> R pos
+       if (($this->mirrorMargins) && (($this->page)%2==0)) {   // EVEN
+               $x += $this->MarginCorrection ;
+               $xR += $this->MarginCorrection ;
+       }
+       $this->SetMargins($x,($this->w - $xR),$this->tMargin);
+}
+
+function AddColumn() {
+       $this->NewColumn();
+       $this->ColumnAdjust = false;    // disables all column height adjustment for the page.
+}
+function NewColumn() {
+       if ($this->ColActive==1) {
+           if($this->CurrCol<$this->NbCol-1) {
+               //Go to the next column
+               $this->CurrCol++;
+               $this->SetCol($this->CurrCol);
+               $this->y = $this->y0;
+               $this->ChangeColumn=1;
+               // DIRECTIONALITY RTL
+               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
+               //Stay on the page
+               }
+               else {
+               //Go back to the first column
+               //Page break
+               if (count($this->columnbuffer)) { $this->printcolumnbuffer(); }
+               $this->AddPage($this->CurOrientation);
+               $this->SetCol(0);
+               $this->y0 = $this->tMargin;
+               $this->ChangeColumn= -($this->NbCol-1);
+               // DIRECTIONALITY RTL
+               if ($this->directionality == 'rtl') { $this->ChangeColumn = -($this->ChangeColumn); }   // *RTL*
+               }
+               $this->x = $this->lMargin;
+       }
+       else {
+               $this->AddPage($this->CurOrientation);
+       }
+}
+
+function printcolumnbuffer() {
+   // Columns ended (but page not ended) -> try to match all columns - unless disabled by using a custom column-break
+   if (!$this->ColActive && $this->ColumnAdjust && !$this->keepColumns) {
+       // Calculate adjustment to add to each column to calculate rel_y value
+       $this->ColDetails[0]['add_y'] = 0;
+       $last_col = 0;
+       // Recursively add previous column's height
+       for($i=1;$i<$this->NbCol;$i++) { 
+               if (isset($this->ColDetails[$i]['bottom_margin']) && $this->ColDetails[$i]['bottom_margin']) { // If any entries in the column
+                       $this->ColDetails[$i]['add_y'] = ($this->ColDetails[$i-1]['bottom_margin'] - $this->y0) + $this->ColDetails[$i-1]['add_y'];
+                       $last_col = $i;         // Last column actually printed
+               }
+       }
+
+       // Calculate value for each position sensitive entry as though for one column
+       foreach($this->columnbuffer AS $key=>$s) { 
+               $t = $s['s'];
+               if ($t == 'ACROFORM') {
+                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
+                       $this->columnbuffer[$key]['s'] = '';
+               }
+               else if (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) {
+                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
+               }
+               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) {
+                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
+               }
+               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) {
+                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
+               }
+               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) {
+                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
+               }
+               else if (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) { 
+                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
+               }
+               else if (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) {
+                       $this->columnbuffer[$key]['rel_y'] = $s['y'] + $this->ColDetails[$s['col']]['add_y'] - $this->y0;
+               }
+       }
+       foreach($this->internallink AS $key => $f) {
+         if (is_array($f) && isset($f['col'])) {
+               $this->internallink[$key]['rel_y'] = $f['Y'] + $this->ColDetails[$f['col']]['add_y'] - $this->y0;
+         }
+       }
+
+       $breaks = array();
+       foreach($this->breakpoints AS $c => $bpa) { 
+               foreach($bpa AS $rely) {
+                       $breaks[] = $rely + $this->ColDetails[$c]['add_y'] - $this->y0;
+               }
+       }
+
+       if (isset($this->ColDetails[$last_col]['bottom_margin'])) { $lcbm = $this->ColDetails[$last_col]['bottom_margin']; }
+       else { $lcbm = 0; }
+       $sum_h = $this->ColDetails[$last_col]['add_y'] + $lcbm - $this->y0;
+       //$sum_h = max($this->ColDetails[$last_col]['add_y'] + $this->ColDetails[$last_col]['bottom_margin'] - $this->y0, end($breaks));
+       $target_h = ($sum_h / $this->NbCol);
+
+       $cbr = array();
+       for($i=1;$i<$this->NbCol;$i++) { 
+               $th = ($sum_h * $i / $this->NbCol);
+               foreach($breaks AS $bk=>$val) {
+                       if ($val > $th) {
+                               if (($val-$th) < ($th-$breaks[$bk-1])) { $cbr[$i-1] = $val; }
+                               else  { $cbr[$i-1] = $breaks[$bk-1]; }
+                               break;
+                       }
+               }
+       }
+       $cbr[($this->NbCol-1)] = $sum_h;
+
+       // Now update the columns - divide into columns of approximately equal value
+       $last_new_col = 0; 
+       $yadj = 0;      // mm
+       $xadj = 0;
+       $last_col_bottom = 0;
+       $lowest_bottom_y = 0;
+       $block_bottom = 0;
+       $newcolumn = 0;
+       foreach($this->columnbuffer AS $key=>$s) { 
+         if (isset($s['rel_y'])) {     // only process position sensitive data
+               if ($s['rel_y'] >= $cbr[$newcolumn]) {
+                       $newcolumn++;
+               }
+               else {
+                       $newcolumn = $last_new_col ;
+               }
+
+
+               $block_bottom = max($block_bottom,($s['rel_y']+$s['h']));
+
+               if ($this->directionality == 'rtl') {   // *RTL*
+                       $xadj = -(($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap));        // *RTL*
+               }       // *RTL*
+               else {  // *RTL*
+                       $xadj = ($newcolumn - $s['col']) * ($this->ColWidth + $this->ColGap);
+               }       // *RTL*
+
+               if ($last_new_col != $newcolumn) {      // Added new column
+                       $last_col_bottom = $this->columnbuffer[$key]['rel_y'];
+                       $block_bottom = 0;
+               }
+               $yadj = ($s['rel_y'] - $s['y']) - ($last_col_bottom)+$this->y0;
+               // callback function
+               $t = $s['s'];
+               $t = preg_replace('/BT (\d+\.\d\d+) (\d+\.\d\d+) Td/e',"\$this->columnAdjustAdd('Td',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t);
+               $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) ([\-]{0,1}\d+\.\d\d+) re/e',"\$this->columnAdjustAdd('re',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4')",$t);
+               $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) l/e',"\$this->columnAdjustAdd('l',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t);
+               $t = preg_replace('/q (\d+\.\d\d+) 0 0 (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) cm \/(I|FO)/e',"\$this->columnAdjustAdd('img',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4','\\5')",$t); 
+               $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) m/e',"\$this->columnAdjustAdd('draw',_MPDFK,$xadj,$yadj,'\\1','\\2')",$t);
+               $t = preg_replace('/(\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) (\d+\.\d\d+) c/e',"\$this->columnAdjustAdd('bezier',_MPDFK,$xadj,$yadj,'\\1','\\2','\\3','\\4','\\5','\\6')",$t);
+
+               $this->columnbuffer[$key]['s'] = $t;
+               $this->columnbuffer[$key]['newcol'] = $newcolumn;
+               $this->columnbuffer[$key]['newy'] = $s['y'] + $yadj;
+               $last_new_col = $newcolumn;
+               $clb = $s['y'] + $yadj + $s['h'] ;      // bottom_margin of current
+               if ((isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb > $this->ColDetails[$newcolumn]['max_bottom']) || (!isset($this->ColDetails[$newcolumn]['max_bottom']) && $clb)) { $this->ColDetails[$newcolumn]['max_bottom'] = $clb; }
+               if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
+               // Adjust LINKS
+               if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->PageLinks[$this->page][$ref][0] += ($xadj*_MPDFK);
+                       $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK);
+                       unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+               }
+               // Adjust FORM FIELDS
+               if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->form->forms[$ref]['x'] += ($xadj);
+                       $this->form->forms[$ref]['y'] += ($yadj);
+                       unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+               }
+/*-- ANNOTATIONS --*/
+               if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       if ($this->PageAnnots[$this->page][$ref]['x'] < 0) {
+                                $this->PageAnnots[$this->page][$ref]['x'] -= ($xadj);
+                       }
+                       else {
+                                $this->PageAnnots[$this->page][$ref]['x'] += ($xadj);
+                       }
+                       $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);   // unlike PageLinks, Page annots has y values from top in mm
+                       unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+               }
+/*-- END ANNOTATIONS --*/
+         }
+       }
+
+/*-- BOOKMARKS --*/
+       // Adjust Bookmarks
+       foreach($this->col_BMoutlines AS $v) {
+               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']);
+       }
+/*-- END BOOKMARKS --*/
+
+/*-- INDEX --*/
+       // Adjust Reference (index)
+       foreach($this->col_Reference AS $v) {
+               $Present=0;
+               //Search the reference (AND Ref/PageNo) in the array
+               for ($i=0;$i<count($this->Reference);$i++){
+                       if ($this->Reference[$i]['t']==$v['t']){
+                               $Present=1;
+                               if (!in_array($v['op'],$this->Reference[$i]['p'])) {
+                                       $this->Reference[$i]['p'][] = $v['op'];
+                               }
+                       }
+               }
+               if ($Present==0) {
+                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
+               }
+       }
+/*-- END INDEX --*/
+
+/*-- TOC --*/
+        
+        // Adjust ToC
+        foreach($this->col_toc AS $v) {
+               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+               $this->links[$v['link']][1] = $this->y0; 
+        }
+/*-- END TOC --*/
+
+       // Adjust column length to be equal
+       if ($this->colvAlign == 'J') {
+        foreach($this->columnbuffer AS $key=>$s) { 
+          if (isset($s['rel_y'])) {    // only process position sensitive data
+           // Set ratio to expand y values or heights
+           if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom']  && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) {
+               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0));
+           }
+           else { $ratio = 1; }
+           if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
+               $yadj = ($s['newy'] - $this->y0) * ($ratio - 1);
+
+               // Adjust LINKS
+               if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK);       // y value
+                       $this->PageLinks[$this->page][$ref][3] *= $ratio;       // height
+                       unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+               }
+               // Adjust FORM FIELDS
+               if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->form->forms[$ref]['x'] += ($xadj);
+                       $this->form->forms[$ref]['y'] += ($yadj);
+                       unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+               }
+/*-- ANNOTATIONS --*/
+               if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);
+                       unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+               }
+/*-- END ANNOTATIONS --*/
+           }
+         }
+        }
+       foreach($this->internallink AS $key => $f) {
+         if (is_array($f) && isset($f['col'])) {
+               $last_col_bottom = 0;
+               for ($nbc=0; $nbc<$this->NbCol; $nbc++) {
+                       if ($f['rel_y'] >= $cbr[$nbc]) { $last_col_bottom = $cbr[$nbc]; }
+               }
+               $yadj = ($f['rel_y'] - $f['Y']) - $last_col_bottom + $this->y0;
+               $f['Y'] += $yadj;
+               unset($f['col']);
+               unset($f['rel_y']);
+               $this->internallink[$key] = $f;
+         }
+       }
+
+        $last_col = -1;
+        $trans_on = false;
+        foreach($this->columnbuffer AS $key=>$s) { 
+               if (isset($s['rel_y'])) {       // only process position sensitive data
+                       // Set ratio to expand y values or heights
+                       if (isset($this->ColDetails[$s['newcol']]['max_bottom']) && $this->ColDetails[$s['newcol']]['max_bottom']  && $this->ColDetails[$s['newcol']]['max_bottom']!=$this->y0) { 
+                               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['newcol']]['max_bottom'] - ($this->y0));
+                       }
+                       else { $ratio = 1; }
+                       if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
+                               //Start Transformation
+                               $this->pages[$this->page] .= $this->StartTransform(true)."\n";
+                               $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n";
+                               $trans_on = true;
+                       }
+               }
+               // Now output the adjusted values
+               $this->pages[$this->page] .= $s['s']."\n"; 
+               if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) {     // only process position sensitive data
+                       //Stop Transformation
+                       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
+                       $trans_on = false;
+               }
+        }
+        if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; }
+       }
+       else {  // if NOT $this->colvAlign == 'J' 
+               // Now output the adjusted values
+               foreach($this->columnbuffer AS $s) { 
+                       $this->pages[$this->page] .= $s['s']."\n"; 
+               }
+       }
+       if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
+   }
+
+   // Columns not ended but new page -> align columns (can leave the columns alone - just tidy up the height)
+   else if ($this->colvAlign == 'J' && $this->ColumnAdjust && !$this->keepColumns)  {
+       // calculate the lowest bottom margin
+       $lowest_bottom_y = 0;
+       foreach($this->columnbuffer AS $key=>$s) { 
+          // Only process output data
+          $t = $s['s'];
+          if ($t == 'ACROFORM' || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) ||
+               (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) || 
+               (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) || 
+               (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) || 
+               (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) { 
+
+               $clb = $s['y'] + $s['h'];
+               if ((isset($this->ColDetails[$s['col']]['max_bottom']) && $clb > $this->ColDetails[$s['col']]['max_bottom']) || !isset($this->ColDetails[$s['col']]['max_bottom'])) { $this->ColDetails[$s['col']]['max_bottom'] = $clb; }
+               if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
+               $this->columnbuffer[$key]['rel_y'] = $s['y'];   // Marks position sensitive data to process later
+               if ($t == 'ACROFORM') { $this->columnbuffer[$key]['s'] = ''; }
+          }
+       }
+       // Adjust column length equal
+        foreach($this->columnbuffer AS $key=>$s) { 
+           // Set ratio to expand y values or heights
+           if (isset($this->ColDetails[$s['col']]['max_bottom']) && $this->ColDetails[$s['col']]['max_bottom']) { 
+               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0));
+           }
+           else { $ratio = 1; }
+           if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
+               $yadj = ($s['y'] - $this->y0) * ($ratio - 1);
+
+               // Adjust LINKS
+               if (isset($s['rel_y'])) {       // only process position sensitive data
+                  // otherwise triggers for all entries in column buffer (.e.g. formatting) and makes below adjustments more than once
+                  if (isset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->PageLinks[$this->page][$ref][1] -= ($yadj*_MPDFK);       // y value
+                       $this->PageLinks[$this->page][$ref][3] *= $ratio;       // height
+                       unset($this->columnLinks[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]); 
+                  }
+                  // Adjust FORM FIELDS
+                  if (isset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->form->forms[$ref]['x'] += ($xadj);
+                       $this->form->forms[$ref]['y'] += ($yadj);
+                       unset($this->columnForms[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+                  }
+/*-- ANNOTATIONS --*/
+                  if (isset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])])) {
+                       $ref = $this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])];
+                       $this->PageAnnots[$this->page][$ref]['y'] += ($yadj);
+                       unset($this->columnAnnots[$s['col']][INTVAL($s['x'])][INTVAL($s['y'])]);
+                  }
+/*-- END ANNOTATIONS --*/
+               }
+           }
+        }
+
+/*-- BOOKMARKS --*/
+
+       // Adjust Bookmarks
+       foreach($this->col_BMoutlines AS $v) {
+               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$this->y0,'p'=>$v['p']);
+       }
+/*-- END BOOKMARKS --*/
+
+/*-- INDEX --*/
+
+       // Adjust Reference (index)
+       foreach($this->col_Reference AS $v) {
+               $Present=0;
+               //Search the reference (AND Ref/PageNo) in the array
+               for ($i=0;$i<count($this->Reference);$i++){
+                       if ($this->Reference[$i]['t']==$v['t']){
+                               $Present=1;
+                               if (!in_array($v['op'],$this->Reference[$i]['p'])) {
+                                       $this->Reference[$i]['p'][] = $v['op'];
+                               }
+                       }
+               }
+               if ($Present==0) {
+                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
+               }
+       }
+/*-- END INDEX --*/
+
+/*-- TOC --*/
+        
+        // Adjust ToC
+        foreach($this->col_toc AS $v) {
+               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+               $this->links[$v['link']][1] = $this->y0; 
+        }
+/*-- END TOC --*/
+        $trans_on = false;
+        foreach($this->columnbuffer AS $key=>$s) { 
+               if (isset($s['rel_y'])) {       // only process position sensitive data
+                       // Set ratio to expand y values or heights
+                       if ($this->ColDetails[$s['col']]['max_bottom']) { 
+                               $ratio = ($lowest_bottom_y - ($this->y0)) / ($this->ColDetails[$s['col']]['max_bottom'] - ($this->y0));
+                       }
+                       else { $ratio = 1; }
+                       if (($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
+                               //Start Transformation
+                               $this->pages[$this->page] .= $this->StartTransform(true)."\n";
+                               $this->pages[$this->page] .= $this->transformScale(100, $ratio*100, $x='', $this->y0, true)."\n";
+                               $trans_on = true;
+                       }
+               }
+               // Now output the adjusted values
+               $this->pages[$this->page] .= $s['s']."\n"; 
+               if (isset($s['rel_y']) && ($ratio > 1) && ($ratio <= $this->max_colH_correction)) {
+                       //Stop Transformation
+                       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
+                       $trans_on = false;      // mPDF 5.1.001
+               }
+        }
+        if ($trans_on) { $this->pages[$this->page] .= $this->StopTransform(true)."\n"; }
+
+       if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
+   }
+
+
+   // Just reproduce the page as it was
+   else {
+       // If page has not ended but height adjustment was disabled by custom column-break - adjust y
+       $lowest_bottom_y = 0;
+       if (!$this->ColActive && (!$this->ColumnAdjust || $this->keepColumns)) {
+               // calculate the lowest bottom margin
+               foreach($this->columnbuffer AS $key=>$s) { 
+                  // Only process output data
+                  $t = $s['s'];
+                  if ($t == 'ACROFORM' || (preg_match('/BT \d+\.\d\d+ (\d+\.\d\d+) Td/',$t)) || (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ [\-]{0,1}\d+\.\d\d+ re/',$t)) ||
+                       (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) l/',$t)) || 
+                       (preg_match('/q \d+\.\d\d+ 0 0 \d+\.\d\d+ \d+\.\d\d+ (\d+\.\d\d+) cm \/(I|FO)\d+ Do Q/',$t)) || 
+                       (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) m/',$t)) || 
+                       (preg_match('/\d+\.\d\d+ (\d+\.\d\d+) \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ \d+\.\d\d+ c/',$t)) ) { 
+
+                       $clb = $s['y'] + $s['h'];
+                       if ($clb > $this->ColDetails[$s['col']]['max_bottom']) { $this->ColDetails[$s['col']]['max_bottom'] = $clb; }
+                       if ($clb > $lowest_bottom_y) { $lowest_bottom_y = $clb; }
+                  }
+               }
+       }
+       foreach($this->columnbuffer AS $key=>$s) { 
+               if ($s['s'] != 'ACROFORM') 
+                       $this->pages[$this->page] .= $s['s']."\n"; 
+       }
+       if ($lowest_bottom_y > 0) { $this->y = $lowest_bottom_y ; }
+/*-- INDEX --*/
+
+       // Output Reference (index)
+       foreach($this->col_Reference AS $v) {
+               $Present=0;
+               for ($i=0;$i<count($this->Reference);$i++){
+                       if ($this->Reference[$i]['t']==$v['t']){
+                               $Present=1;
+                               if (!in_array($v['op'],$this->Reference[$i]['p'])) {
+                                       $this->Reference[$i]['p'][] = $v['op'];
+                               }
+                       }
+               }
+               if ($Present==0) {
+                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
+               }
+     }
+/*-- END INDEX --*/
+/*-- BOOKMARKS --*/
+      // Output Bookmarks
+      foreach($this->col_BMoutlines AS $v) {
+               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
+      }
+/*-- END BOOKMARKS --*/
+/*-- TOC --*/
+      // Output ToC
+      foreach($this->col_toc AS $v) {
+               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+      }
+/*-- END TOC --*/
+   }
+   foreach($this->internallink AS $key => $f) {
+       if (isset($this->internallink[$key]['col'])) unset($this->internallink[$key]['col']);
+       if (isset($this->internallink[$key]['rel_y'])) unset($this->internallink[$key]['rel_y']);
+   }
+
+   $this->columnbuffer = array();
+   $this->ColDetails = array();
+   $this->columnLinks = array();
+   $this->columnAnnots = array();
+   $this->columnForms = array();
+   
+   $this->col_Reference = array();
+   $this->col_BMoutlines = array();
+   $this->col_toc = array();
+   $this->breakpoints = array();
+}
+
+/*-- END COLUMNS --*/
+
+
+//==================================================================
+/*-- TABLES --*/
+function printcellbuffer() {
+       if (count($this->cellBorderBuffer )) {
+               sort($this->cellBorderBuffer);
+               foreach($this->cellBorderBuffer AS $cbb) {
+                       $cba = unpack("A16dom/nbord/A1side/ns/dbw/a6ca/A10style/dx/dy/dw/dh/dmbl/dmbr/dmrt/dmrb/dmtl/dmtr/dmlt/dmlb/dcpd/dover/", $cbb);
+                       $side = $cba['side'];
+                       $details = array();
+                       $details[$side]['dom'] = (float) $cba['dom'];
+                       $details[$side]['s'] = $cba['s'];
+                       $details[$side]['w'] = $cba['bw'];
+                       $details[$side]['c'] = $cba['ca'];
+                       $details[$side]['style'] = trim($cba['style']);
+                       $details['mbw']['BL'] = $cba['mbl'];
+                       $details['mbw']['BR'] = $cba['mbr'];
+                       $details['mbw']['RT'] = $cba['mrt'];
+                       $details['mbw']['RB'] = $cba['mrb'];
+                       $details['mbw']['TL'] = $cba['mtl'];
+                       $details['mbw']['TR'] = $cba['mtr'];
+                       $details['mbw']['LT'] = $cba['mlt'];
+                       $details['mbw']['LB'] = $cba['mlb'];
+                       $details['cellposdom'] = $cba['cpd'];
+                       $details['p'] = $side;
+                       if ($cba['over']==1) { $details[$side]['overlay'] = true;  }
+                       else { $details[$side]['overlay'] = false; }
+                       $this->_tableRect($cba['x'],$cba['y'],$cba['w'],$cba['h'],$cba['bord'],$details, false, false);
+
+               }
+               $this->cellBorderBuffer = array();
+       }
+}
+//==================================================================
+function printtablebuffer() {
+
+       if (!$this->table_rotate) { 
+               $this->pages[$this->page] .= $this->tablebuffer;
+               foreach($this->tbrot_Links AS $p => $l) {
+                  foreach($l AS $v) {
+                       $this->PageLinks[$p][] = $v;
+                  }
+               }
+               $this->tbrot_Links = array();
+/*-- ANNOTATIONS --*/
+               foreach($this->tbrot_Annots AS $p => $l) {
+                  foreach($l AS $v) {
+                       $this->PageAnnots[$p][] = $v;
+                  }
+               }
+               $this->tbrot_Annots = array();
+/*-- END ANNOTATIONS --*/
+
+/*-- INDEX --*/
+             // Output Reference (index)
+             foreach($this->tbrot_Reference AS $v) {
+                       $Present=0;
+                       for ($i=0;$i<count($this->Reference);$i++){
+                               if ($this->Reference[$i]['t']==$v['t']){
+                                       $Present=1;
+                                       if (!in_array($v['op'],$this->Reference[$i]['p'])) {
+                                               $this->Reference[$i]['p'][] = $v['op'];
+                                       }
+                               }
+                       }
+                       if ($Present==0) {
+                               $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
+                       }
+             }
+               $this->tbrot_Reference = array();
+/*-- END INDEX --*/
+
+/*-- BOOKMARKS --*/
+             // Output Bookmarks
+             foreach($this->tbrot_BMoutlines AS $v) {
+                       $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
+             }
+               $this->tbrot_BMoutlines = array();
+/*-- END BOOKMARKS --*/
+
+/*-- TOC --*/
+             // Output ToC
+             foreach($this->tbrot_toc AS $v) {
+                       $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+             }
+               $this->tbrot_toc = array();
+/*-- END TOC --*/
+
+               return; 
+       }
+       // else if rotated
+       $lm = $this->lMargin + $this->blk[$this->blklvl]['outer_left_margin'] + $this->blk[$this->blklvl]['border_left']['w'] + $this->blk[$this->blklvl]['padding_left'];
+       $pw = $this->blk[$this->blklvl]['inner_width'];
+       //Start Transformation
+       $this->pages[$this->page] .= $this->StartTransform(true)."\n";
+
+       if ($this->table_rotate > 1) {  // clockwise
+          if ($this->tbrot_align == 'L') {
+               $xadj = $this->tbrot_h ;        // align L (as is)
+          }
+          else if ($this->tbrot_align == 'R') {
+               $xadj = $lm-$this->tbrot_x0+($pw) ;     // align R
+          }
+          else {
+               $xadj = $lm-$this->tbrot_x0+(($pw + $this->tbrot_h)/2) ;        // align C
+          }
+          $yadj = 0;
+       }
+       else {  // anti-clockwise
+          if ($this->tbrot_align == 'L') {
+               $xadj = 0 ;     // align L (as is)
+          }
+          else if ($this->tbrot_align == 'R') {
+               $xadj = $lm-$this->tbrot_x0+($pw - $this->tbrot_h) ;    // align R
+          }
+          else {
+               $xadj = $lm-$this->tbrot_x0+(($pw - $this->tbrot_h)/2) ;        // align C
+          }
+          $yadj = $this->tbrot_w;
+       }
+
+
+       $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n";
+       $this->pages[$this->page] .= $this->transformRotate($this->table_rotate, $this->tbrot_x0 , $this->tbrot_y0 , true)."\n";
+
+       // Now output the adjusted values
+       $this->pages[$this->page] .= $this->tablebuffer; 
+
+
+       foreach($this->tbrot_Links AS $p => $l) {
+           foreach($l AS $v) {
+               $w = $v[2]/_MPDFK;
+               $h = $v[3]/_MPDFK;
+               $ax = ($v[0]/_MPDFK) - $this->tbrot_x0;
+               $ay = (($this->hPt-$v[1])/_MPDFK) - $this->tbrot_y0;
+               if ($this->table_rotate > 1) {  // clockwise
+                       $bx = $this->tbrot_x0+$xadj-$ay-$h;
+                       $by = $this->tbrot_y0+$yadj+$ax;
+               }
+               else {
+                       $bx = $this->tbrot_x0+$xadj+$ay;
+                       $by = $this->tbrot_y0+$yadj-$ax-$w;
+               }
+               $v[0] = $bx*_MPDFK;
+               $v[1] = ($this->h-$by)*_MPDFK;
+               $v[2] = $h*_MPDFK;      // swap width and height
+               $v[3] = $w*_MPDFK;
+               $this->PageLinks[$p][] = $v;
+           }
+       }
+       $this->tbrot_Links = array();
+       foreach($this->internallink AS $key => $f) {
+               if (is_array($f) && isset($f['tbrot'])) {
+                       $f['Y'] = $this->tbrot_y0;
+                       $f['PAGE'] = $this->page;
+                       unset($f['tbrot']);
+                       $this->internallink[$key] = $f;
+               }
+       }
+/*-- ANNOTATIONS --*/
+       foreach($this->tbrot_Annots AS $p => $l) {
+           foreach($l AS $v) {
+               $ax = abs($v['x']) - $this->tbrot_x0;   // abs because -ve values are internally set and held for reference if annotMargin set
+               $ay = $v['y'] - $this->tbrot_y0;
+               if ($this->table_rotate > 1) {  // clockwise
+                       $bx = $this->tbrot_x0+$xadj-$ay;
+                       $by = $this->tbrot_y0+$yadj+$ax;
+               }
+               else {
+                       $bx = $this->tbrot_x0+$xadj+$ay;
+                       $by = $this->tbrot_y0+$yadj-$ax;
+               }
+               if ($v['x'] < 0) {
+                       $v['x'] = -$bx;
+               }
+               else {
+                       $v['x'] = $bx;
+               }
+               $v['y'] = ($by);
+               $this->PageAnnots[$p][] = $v;
+           }
+       }
+       $this->tbrot_Annots = array();
+/*-- END ANNOTATIONS --*/
+
+
+/*-- BOOKMARKS --*/
+
+       // Adjust Bookmarks
+       foreach($this->tbrot_BMoutlines AS $v) {
+               $v['y'] = $this->tbrot_y0;
+               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page);
+       }
+/*-- END BOOKMARKS --*/
+
+/*-- INDEX --*/
+
+       // Adjust Reference (index)
+       foreach($this->tbrot_Reference AS $v) {
+               $Present=0;
+               //Search the reference (AND Ref/PageNo) in the array
+               for ($i=0;$i<count($this->Reference);$i++){
+                       if ($this->Reference[$i]['t']==$v['t']){
+                               $Present=1;
+                               if (!in_array($this->page,$this->Reference[$i]['p'])) {
+                                       $this->Reference[$i]['p'][] = $this->page;
+                               }
+                       }
+               }
+               if ($Present==0) {
+                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page));
+               }
+       }
+/*-- END INDEX --*/
+
+/*-- TOC --*/
+
+       // Adjust ToC - uses document page number
+       foreach($this->tbrot_toc AS $v) {
+               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+               $this->links[$v['link']][1] = $this->tbrot_y0; 
+       }
+/*-- END TOC --*/
+
+
+
+       $this->tbrot_Reference = array();
+       $this->tbrot_BMoutlines = array();
+       $this->tbrot_toc = array();
+
+       //Stop Transformation
+       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
+
+
+       $this->y = $this->tbrot_y0 + $this->tbrot_w;
+       $this->x = $this->lMargin;
+
+       $this->tablebuffer = '';
+}
+
+//==================================================================
+// Keep-with-table This buffers contents of h1-6 to keep on page with table
+function printkwtbuffer() {
+       if (!$this->kwt_moved) { 
+               foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; }
+               foreach($this->kwt_Links AS $p => $l) {
+                  foreach($l AS $v) {
+                       $this->PageLinks[$p][] = $v;
+                  }
+               }
+               $this->kwt_Links = array();
+/*-- ANNOTATIONS --*/
+               foreach($this->kwt_Annots AS $p => $l) {
+                  foreach($l AS $v) {
+                       $this->PageAnnots[$p][] = $v;
+                  }
+               }
+               $this->kwt_Annots = array();
+/*-- END ANNOTATIONS --*/
+
+/*-- INDEX --*/
+             // Output Reference (index)
+             foreach($this->kwt_Reference AS $v) {
+                       $Present=0;
+                       for ($i=0;$i<count($this->Reference);$i++){
+                               if ($this->Reference[$i]['t']==$v['t']){
+                                       $Present=1;
+                                       if (!in_array($v['op'],$this->Reference[$i]['p'])) {
+                                               $this->Reference[$i]['p'][] = $v['op'];
+                                       }
+                               }
+                       }
+                       if ($Present==0) {
+                               $this->Reference[]=array('t'=>$v['t'],'p'=>array($v['op']));
+                       }
+             }
+               $this->kwt_Reference = array();
+/*-- END INDEX --*/
+
+/*-- BOOKMARKS --*/
+             // Output Bookmarks
+             foreach($this->kwt_BMoutlines AS $v) {
+                       $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
+             }
+               $this->kwt_BMoutlines = array();
+/*-- END BOOKMARKS --*/
+
+/*-- TOC --*/
+             // Output ToC
+             foreach($this->kwt_toc AS $v) {
+                       $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+             }
+               $this->kwt_toc = array();
+/*-- END TOC --*/
+
+               return; 
+       }
+
+       //Start Transformation
+       $this->pages[$this->page] .= $this->StartTransform(true)."\n";
+       $xadj = $this->lMargin - $this->kwt_x0 ;
+       //$yadj = $this->y - $this->kwt_y0 ;
+       $yadj = $this->tMargin - $this->kwt_y0 ;
+
+       $this->pages[$this->page] .= $this->transformTranslate($xadj, $yadj , true)."\n";
+
+       // Now output the adjusted values
+       foreach($this->kwt_buffer AS $s) { $this->pages[$this->page] .= $s['s']."\n"; }
+
+       // Adjust hyperLinks
+       foreach($this->kwt_Links AS $p => $l) {
+           foreach($l AS $v) {
+               $bx = $this->kwt_x0+$xadj;
+               $by = $this->kwt_y0+$yadj;
+               $v[0] = $bx*_MPDFK;
+               $v[1] = ($this->h-$by)*_MPDFK;
+               $this->PageLinks[$p][] = $v;
+           }
+       }
+       foreach($this->internallink AS $key => $f) {
+               if (is_array($f) && isset($f['kwt'])) {
+                       $f['Y'] += $yadj;
+                       $f['PAGE'] = $this->page;
+                       unset($f['kwt']);
+                       $this->internallink[$key] = $f;
+               }
+       }
+/*-- ANNOTATIONS --*/
+       foreach($this->kwt_Annots AS $p => $l) {
+           foreach($l AS $v) {
+               $bx = $this->kwt_x0+$xadj;
+               $by = $this->kwt_y0+$yadj;
+               if ($v['x'] < 0) {
+                       $v['x'] = -$bx;
+               }
+               else {
+                       $v['x'] = $bx;
+               }
+               $v['y'] = $by;
+               $this->PageAnnots[$p][] = $v;
+           }
+       }
+/*-- END ANNOTATIONS --*/
+
+/*-- BOOKMARKS --*/
+
+       // Adjust Bookmarks
+       foreach($this->kwt_BMoutlines AS $v) {
+               if ($v['y'] != 0) { $v['y'] += $yadj; }
+               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$this->page);
+       }
+/*-- END BOOKMARKS --*/
+
+/*-- INDEX --*/
+
+       // Adjust Reference (index)
+       foreach($this->kwt_Reference AS $v) {
+               $Present=0;
+               //Search the reference (AND Ref/PageNo) in the array
+               for ($i=0;$i<count($this->Reference);$i++){
+                       if ($this->Reference[$i]['t']==$v['t']){
+                               $Present=1;
+                               if (!in_array($this->page,$this->Reference[$i]['p'])) {
+                                       $this->Reference[$i]['p'][] = $this->page;
+                               }
+                       }
+               }
+               if ($Present==0) {
+                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($this->page));
+               }
+       }
+/*-- END INDEX --*/
+
+/*-- TOC --*/
+
+       // Adjust ToC
+       foreach($this->kwt_toc AS $v) {
+               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$this->page,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+               $this->links[$v['link']][0] = $this->page;
+               $this->links[$v['link']][1] += $yadj;
+       }
+/*-- END TOC --*/
+
+
+       $this->kwt_Links = array();
+       $this->kwt_Annots = array();
+
+       $this->kwt_Reference = array();
+       $this->kwt_BMoutlines = array();
+       $this->kwt_toc = array();
+       //Stop Transformation
+       $this->pages[$this->page] .= $this->StopTransform(true)."\n";
+
+       $this->kwt_buffer = array();
+
+       $this->y += $this->kwt_height;
+}
+
+/*-- END TABLES --*/
+
+
+//==================================================================
+
+function printfloatbuffer() {
+       if (count($this->floatbuffer)) {
+               $this->objectbuffer = $this->floatbuffer;
+               $this->printobjectbuffer(false);
+               $this->objectbuffer = array();
+               $this->floatbuffer = array();
+               $this->floatmargins = array();
+       }
+}
+//==================================================================
+
+function printdivbuffer() {
+       $p1 = $this->blk[$this->blklvl]['startpage'];
+       $p2 = $this->page;
+       $bottom[$p1] = $this->ktBlock[$p1]['bottom_margin'];
+       $bottom[$p2] = $this->y;        // $this->ktBlock[$p2]['bottom_margin'];
+       $top[$p1] = $this->kt_y00;
+
+       $top2 = $this->h;
+       foreach($this->divbuffer AS $key=>$s) { 
+               if ($s['page'] == $p2) {
+                       $top2 = MIN($s['y'], $top2);
+               }
+       }
+       $top[$p2] = $top2;
+       $height[$p1] = ($bottom[$p1] - $top[$p1]);
+       $height[$p2] = ($bottom[$p2] - $top[$p2]);
+       $xadj[$p1] = $this->MarginCorrection;
+       $yadj[$p1] = -($top[$p1] - $top[$p2]);
+       $xadj[$p2] = 0;
+       $yadj[$p2] = $height[$p1];
+
+       // Output without any transformation
+       if ($this->ColActive || !$this->keep_block_together || $this->blk[$this->blklvl]['startpage'] == $this->page || ($this->page - $this->blk[$this->blklvl]['startpage']) > 1 || ($height[$p1]+$height[$p2]) > $this->h) { 
+               foreach($this->divbuffer AS $s) { $this->pages[$s['page']] .= $s['s']."\n"; }
+               foreach($this->ktLinks AS $p => $l) {
+                  foreach($l AS $v) {
+                       $this->PageLinks[$p][] = $v;
+                  }
+               }
+               foreach($this->ktForms AS $key => $f) {
+                       $this->form->forms[$f['n']] = $f;
+               }
+/*-- ANNOTATIONS --*/
+               foreach($this->ktAnnots AS $p => $l) {
+                  foreach($l AS $v) {
+                       $this->PageAnnots[$p][] = $v;
+                  }
+               }
+/*-- END ANNOTATIONS --*/
+/*-- INDEX --*/
+             // Adjust Reference (index)
+             foreach($this->ktReference AS $v) {
+                       $Present=0;
+                       //Search the reference (AND Ref/PageNo) in the array
+                       for ($i=0;$i<count($this->Reference);$i++){
+                               if ($this->Reference[$i]['t']==$v['t']){
+                                       $Present=1;
+                                       if (!in_array($p2,$this->Reference[$i]['p'])) {
+                                               $this->Reference[$i]['p'][] = $p2;
+                                       }
+                               }
+                       }
+                       //If not found, add it
+                       if ($Present==0) {
+                               $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2));
+                       }
+             }
+/*-- END INDEX --*/
+
+/*-- BOOKMARKS --*/
+             // Adjust Bookmarks
+             foreach($this->ktBMoutlines AS $v) {
+                       $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$v['p']);
+             }
+/*-- END BOOKMARKS --*/
+
+/*-- TOC --*/
+             // Adjust ToC
+             foreach($this->_kttoc AS $v) {
+                       $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$v['p'],'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+             }
+/*-- END TOC --*/
+
+               $this->divbuffer = array();
+               $this->ktLinks = array();
+               $this->ktAnnots = array();
+               $this->ktForms = array();
+               $this->ktBlock = array();
+               $this->ktReference = array();
+               $this->ktBMoutlines = array();
+               $this->_kttoc = array();
+               $this->keep_block_together = 0;
+               return; 
+       }
+       else {
+       // Output with transformation
+          // mPDF 5.6.17
+          $np = '';
+          $lastpage = -1;
+          foreach($this->divbuffer AS $key=>$s) { 
+               // callback function
+               $t = $s['s'];
+               $p = $s['page'];
+               if ($p != $lastpage) {
+                       $q = '';
+                       if ($lastpage != -1) { $q =  ' Q'."\n"; }
+                       $t = $q . $this->StartTransform(true)."\n" . $this->transformTranslate($xadj[$p], $yadj[$p] , true)."\n" . $t;
+                       $lastpage = $p;
+               }
+               $np .= $t."\n";
+          }
+          if ($lastpage != -1) { $np .=  ' Q'."\n"; }
+
+          $this->pages[$this->page] .= $np;
+
+          // Adjust hyperLinks
+          foreach($this->ktLinks AS $p => $l) {
+           foreach($l AS $v) {
+               $v[0] += ($xadj[$p]*_MPDFK);
+               $v[1] -= ($yadj[$p]*_MPDFK);
+               $this->PageLinks[$p2][] = $v;
+           }
+          }
+          foreach($this->ktForms AS $key => $f) {
+               $p = $f['page'];
+               $f['x'] += ($xadj[$p]);
+               $f['y'] += ($yadj[$p]);
+               $f['page'] = $p2;
+               $this->form->forms[$f['n']] = $f;
+          }
+          foreach($this->internallink AS $key => $f) {
+               if (is_array($f) && isset($f['kt'])) {
+                       $f['Y'] += ($yadj[$f['PAGE']]);
+                       $f['PAGE'] = $p2;
+                       unset($f['kt']);
+                       $this->internallink[$key] = $f;
+               }
+          }
+/*-- ANNOTATIONS --*/
+          foreach($this->ktAnnots AS $p => $l) {
+           foreach($l AS $v) {
+               if ($v['x']>0) { $v['x'] += $xadj[$p]; }
+               else if ($v['x']<0) { $v['x'] -= $xadj[$p]; }
+               $v['y'] += $yadj[$p];
+               $this->PageAnnots[$p2][] = $v;
+           }
+          }
+/*-- END ANNOTATIONS --*/
+
+/*-- BOOKMARKS --*/
+          // Adjust Bookmarks
+          foreach($this->ktBMoutlines AS $v) {
+               if ($v['y'] != 0) { $v['y'] += ($yadj[$v['p']]); }
+               $this->BMoutlines[]=array('t'=>$v['t'],'l'=>$v['l'],'y'=>$v['y'],'p'=>$p2);
+          }
+/*-- END BOOKMARKS --*/
+
+/*-- INDEX --*/
+          // Adjust Reference (index)
+          foreach($this->ktReference AS $v) {
+               $Present=0;
+               //Search the reference (AND Ref/PageNo) in the array
+               for ($i=0;$i<count($this->Reference);$i++){
+                       if ($this->Reference[$i]['t']==$v['t']){
+                               $Present=1;
+                               if (!in_array($p2,$this->Reference[$i]['p'])) {
+                                       $this->Reference[$i]['p'][] = $p2;
+                               }
+                       }
+               }
+               //If not found, add it
+               if ($Present==0) {
+                       $this->Reference[]=array('t'=>$v['t'],'p'=>array($p2));
+               }
+          }
+/*-- END INDEX --*/
+
+/*-- TOC --*/
+          // Adjust ToC
+          foreach($this->_kttoc AS $v) {
+               $this->tocontents->_toc[]=array('t'=>$v['t'],'l'=>$v['l'],'p'=>$p2,'link'=>$v['link'],'toc_id'=>$v['toc_id']);
+               $this->links[$v['link']][0] = $p2;
+               $this->links[$v['link']][1] += $yadj[$v['p']];
+          }
+/*-- END TOC --*/
+
+          $this->y = $top[$p2] + $height[$p1] + $height[$p2];
+          $this->x = $this->lMargin;
+
+          $this->divbuffer = array();
+          $this->ktLinks = array();
+          $this->ktAnnots = array();
+          $this->ktForms = array();
+          $this->ktBlock = array();
+          $this->ktReference = array();
+          $this->ktBMoutlines = array();
+          $this->_kttoc = array();
+          $this->keep_block_together = 0;
+       }
+}
+
+
+//==================================================================
+// Added ELLIPSES and CIRCLES
+function Circle($x,$y,$r,$style='S') {
+       $this->Ellipse($x,$y,$r,$r,$style);
+}
+
+function Ellipse($x,$y,$rx,$ry,$style='S') {
+       if($style=='F') { $op='f'; }
+       elseif($style=='FD' or $style=='DF') { $op='B'; }
+       else { $op='S'; }
+       $lx=4/3*(M_SQRT2-1)*$rx;
+       $ly=4/3*(M_SQRT2-1)*$ry;
+       $h=$this->h;
+       $this->_out(sprintf('%.3F %.3F m %.3F %.3F %.3F %.3F %.3F %.3F c', ($x+$rx)*_MPDFK,($h-$y)*_MPDFK, ($x+$rx)*_MPDFK,($h-($y-$ly))*_MPDFK, ($x+$lx)*_MPDFK,($h-($y-$ry))*_MPDFK, $x*_MPDFK,($h-($y-$ry))*_MPDFK));
+       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x-$lx)*_MPDFK,($h-($y-$ry))*_MPDFK,    ($x-$rx)*_MPDFK,($h-($y-$ly))*_MPDFK,   ($x-$rx)*_MPDFK,($h-$y)*_MPDFK)); 
+       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c', ($x-$rx)*_MPDFK,($h-($y+$ly))*_MPDFK, ($x-$lx)*_MPDFK,($h-($y+$ry))*_MPDFK, $x*_MPDFK,($h-($y+$ry))*_MPDFK)); 
+       $this->_out(sprintf('%.3F %.3F %.3F %.3F %.3F %.3F c %s', ($x+$lx)*_MPDFK,($h-($y+$ry))*_MPDFK, ($x+$rx)*_MPDFK,($h-($y+$ly))*_MPDFK, ($x+$rx)*_MPDFK,($h-$y)*_MPDFK, $op));
+}
+
+/*-- DIRECTW --*/
+// Added adaptation of shaded_box = AUTOSIZE-TEXT
+function AutosizeText($text,$w,$font,$style,$szfont=72) {
+       $text = $this->purify_utf8_text($text);
+       if ($this->text_input_as_HTML) {
+               $text = $this->all_entities_to_utf8($text);
+       }
+       if ($this->usingCoreFont) { $text = mb_convert_encoding($text,$this->mb_enc,'UTF-8'); }
+       $text = ' '.$text.' ';
+       $width = $this->ConvertSize($w);
+       $loop   = 0;
+       while ( $loop == 0 ) {
+               $this->SetFont($font,$style,$szfont);
+               $sz = $this->GetStringWidth( $text );
+               if ( $sz > $w ) { $szfont --; }
+               else { $loop ++; }
+       }
+       $this->SetFont($font,$style,$szfont);
+       $this->Cell($w, 0, $text, 0, 0, "C");
+}
+/*-- END DIRECTW --*/
+
+
+
+
+
+// ====================================================
+// ====================================================
+/*-- RTL --*/
+function reverse_letters($str) {
+       $str = strtr($str, '{}[]()', '}{][)(');
+       return $this->mb_strrev($str, $this->mb_enc); 
+}
+
+function magic_reverse_dir(&$chunk, $join=true, $dir) { 
+   if ($this->usingCoreFont) { return 0; }
+   if ($this->biDirectional)  {
+       // mPDF 5.4.05 Include PUA for non-indexed Arabic glyphs
+       $pregRTLchars = $this->pregRTLchars;
+       if ($this->CurrentFont['unAGlyphs']) { $pregRTLchars .= "\x{F500}-\x{F7FF}"; }
+
+       // Change Arabic + Persian. to Presentation Forms
+       if ($join) {
+               $chunk = preg_replace("/([".$pregRTLchars."]+)/ue", '$this->ArabJoin(stripslashes(\'\\1\'))', $chunk );
+       }
+       $contains_rtl = false;
+       $all_rtl = true;
+       $initSpace = false; 
+       $endSpace = false; 
+       $nonDirchars = "\x{A0}\"\'\(\)\{\}\[\].,:\\/-=";        // mPDF 5.6.32
+       // mPDF 5.6.43
+       $bdo=array();
+       preg_match_all('/([\x{202A}\x{202B}])(.*?)([\x{202C}])/u',$chunk,$m);
+       if (count($m[0])) {
+               for($i=0;$i<count($m[0]);$i++) {
+                       if ($m[1][$i]=="\xe2\x80\xab") {        // Right-to-Left Embedding [RLE] U+202B &#8235; 
+                               $mark = code2utf(0xf800+$i);
+                               $bdo[$i] = $this->reverse_letters($m[2][$i]);
+                       }
+                       else if ($m[1][$i]=="\xe2\x80\xaa") {   // Left-to-Right Embedding [LRE] U+202A &#8234;
+                               $mark = code2utf(0xf880+$i);
+                               $bdo[$i] = $m[2][$i];
+                       }
+                       $chunk = preg_replace('/'.preg_quote($m[0][$i],'/').'/u',$mark,$chunk);
+               }
+               $pregRTLchars .= "\x{F800}-\x{F87F}";
+       }
+       if (preg_match("/[".$pregRTLchars."]/u",$chunk)) {      // Chunk contains RTL characters
+               if (preg_match("/^[ ]/",$chunk)) { $initSpace = true; $chunk = preg_replace("/^[ ]/",'',$chunk); }
+               if (preg_match("/[ ]$/",$chunk)) { $endSpace = true; $chunk = preg_replace("/[ ]$/",'',$chunk); }
+
+               if (preg_match("/[^".$pregRTLchars.$nonDirchars." ]/u",$chunk)) {       // Chunk also contains LTR characters
+                       $all_rtl = false;
+                       if ($dir == 'rtl') {
+                               $chunk = preg_replace("/([^".$pregRTLchars.$nonDirchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[^".$pregRTLchars.$nonDirchars."])/u","\\1\x07\\2",$chunk);
+                       }
+                       $chunk = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*) ([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$chunk);
+                       $bits = explode(' ',$chunk);
+                       foreach($bits AS $bitkey=>$bit) {
+                               $bit = preg_replace("/\x07/"," ",$bit);
+                               if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$bit)) {
+                                       $bits[$bitkey] = $this->reverse_letters($bit); 
+                               }
+                               else if (preg_match("/[".$pregRTLchars."]/u",$bit)) {
+                                       if ($dir == 'rtl') {
+                                               $bit = preg_replace("/([^".$pregRTLchars.$nonDirchars." ])([".$nonDirchars."]*[".$pregRTLchars."])/u","\\1\x07\\2",$bit );
+                                               $bit = preg_replace("/([".$pregRTLchars."][".$nonDirchars."]*)([^".$pregRTLchars.$nonDirchars." ])/u","\\1\x07\\2",$bit );
+                                       }
+                                       else {
+                                               $bit = preg_replace("/([^".$pregRTLchars." ][".$nonDirchars."]*)([".$pregRTLchars." ])/u","\\1\x07\\2",$bit );
+                                               $bit = preg_replace("/([".$pregRTLchars." ])([".$nonDirchars."]*[^".$pregRTLchars." ])/u","\\1\x07\\2",$bit );
+                                       }
+                                       $sbits = explode("\x07",$bit );
+                                       foreach($sbits AS $sbitkey=>$sbit) {
+                                               $sbit = preg_replace("/\x07/","",$sbit);
+                                               if (preg_match("/^[".$pregRTLchars.$nonDirchars." ]*$/u",$sbit)) {
+                                                       $sbits[$sbitkey] = $this->reverse_letters($sbit); 
+                                               }
+                                               else if (preg_match("/[".$pregRTLchars."]/u",$sbit) && $dir=='rtl') {
+                                                       $sbits[$sbitkey] = $this->reverse_letters($sbit); 
+                                               }
+                                               else { 
+                                                       // Reverse numerals only to RTL
+                                                       $sbit = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $sbit ); // mPDF 5.6.32 // mPDF 5.6.46
+                                                       $sbits[$sbitkey] = $sbit; 
+                                               }
+                                       }
+                                       if ($dir == 'rtl') { $sbits = array_reverse($sbits,false); }
+                                       $bits[$bitkey] = implode('',$sbits); 
+                               }
+                               else if (preg_match("/[".$pregRTLchars."]/u",$bit) && $dir=='rtl') {
+                                       $bits[$bitkey] = $this->reverse_letters($bit); 
+                               }
+                               else { 
+                                       // Reverse numerals only to RTL
+                                       $bit = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $bit );     // mPDF 5.6.32 // mPDF 5.6.46
+                                       $bits[$bitkey] = $bit; 
+                               }
+                       }
+                       if ($dir == 'rtl') { $bits = array_reverse($bits,false); }
+                       $chunk = implode(' ',$bits);
+               }
+               else { $chunk = $this->reverse_letters($chunk); }
+               $contains_rtl = true;
+
+               // Un-Reverse numerals back to ltr
+               $chunk = preg_replace("/([\x{0660}-\x{066C}0-9]+[\x{0660}-\x{066C}0-9\.,:\/]*[\x{0660}-\x{066C}0-9]+)/ue", '$this->reverse_letters(\'\\1\')', $chunk ); // mPDF 5.6.13 // mPDF 5.6.32 // mPDF 5.6.46
+               if ($dir == 'rtl') {
+                       if ($endSpace) { $chunk = ' '.$chunk; }
+                       if ($initSpace) { $chunk .= ' '; }
+               }
+               else {
+                       if ($initSpace) { $chunk = ' '.$chunk; }
+                       if ($endSpace) { $chunk .= ' '; }
+               }
+       }
+       else { $all_rtl = false; }
+
+       // mPDF 5.6.43
+       if (count($bdo)) {
+               for($i=0;$i<count($bdo);$i++) {
+                       $chunk = preg_replace('/[\x{'.dechex(intval(0xf800+$i)).'}\x{'.dechex(intval(0xf880+$i)).'}]/u',$bdo[$i],$chunk);
+               }
+       }
+
+       if ($all_rtl) { return 2; }
+       else if ($contains_rtl) { return 1; }
+       else { return 0; }
+   }
+   return 0;
+}
+/*-- END RTL --*/
+
+// 
+// ****************************
+// ****************************
+
+
+function SetSubstitutions() {
+       $subsarray = array();
+       @include(_MPDF_PATH.'includes/subs_win-1252.php');
+       $this->substitute = array();
+       foreach($subsarray AS $key => $val) {
+               $this->substitute[code2utf($key)] = $val;
+       }
+}
+
+
+function SubstituteChars($html) {
+       // only substitute characters between tags
+       if (count($this->substitute)) {
+               $a=preg_split('/(<.*?>)/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
+               $html = '';
+               foreach($a as $i => $e) {
+                       if($i%2==0) {
+                          $e = strtr($e, $this->substitute);
+                       }
+                       $html .= $e;
+               }
+       }
+       return $html;
+}
+
+
+function SubstituteCharsSIP(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
+       if (preg_match("/^(.*?)([\x{20000}-\x{2FFFF}]+)(.*)/u", $writehtml_e, $m)) { 
+          if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) {
+               $font = $this->CurrentFont['sipext']; 
+               if (!in_array($font, $this->available_unifonts)) { return 0; }
+               $writehtml_a[$writehtml_i] = $writehtml_e = $m[1];
+               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
+               $this->subPos = $writehtml_i;
+               return 4;
+          }
+       }
+       return 0; 
+}
+
+// If core font is selected in document which is not onlyCoreFonts - substitute with non-core font
+function SubstituteCharsNonCore(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
+       if (mb_convert_encoding(mb_convert_encoding($writehtml_e, $this->mb_enc, "UTF-8"), "UTF-8", $this->mb_enc) == $writehtml_e) {
+               return 0;
+       }
+       $cw = &$this->CurrentFont['cw'];
+       $unicode = $this->UTF8StringToArray($writehtml_e, false);
+       $start = -1;
+       $end = 0;
+       $flag = 0;
+       $ftype = '';
+       $u = array();
+       if (!$this->subArrMB) { 
+               include(_MPDF_PATH.'includes/subs_core.php'); 
+               $this->subArrMB['a'] = $aarr;
+               $this->subArrMB['s'] = $sarr;
+               $this->subArrMB['z'] = $zarr;
+       }
+       foreach($unicode AS $c => $char) {
+               if (($char> 127 || ($flag==1 && $char==32)) && $char != 173 && (!isset($this->subArrMB['a'][$char]) || ($flag==1 && $char==32)) && ($char<1536 ||  ($char>1791 && $char < 2304) || $char>3455)) { 
+                       if ($flag==0) { $start=$c; }
+                       $flag=1; 
+                       $u[] = $char;
+               }
+               else if ($flag>0) { $end=$c-1; break; }
+       }
+       if ($flag>0 && !$end) { $end=count($unicode)-1; }
+       if ($start==-1) { return 0; }
+       // TRY IN BACKUP SUBS FONT
+       if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); }
+       foreach($this->backupSubsFont AS $bsfctr=>$bsf) {
+               if ($this->fonttrans[$bsf] == 'chelvetica' || $this->fonttrans[$bsf] == 'ctimes' || $this->fonttrans[$bsf] == 'ccourier') { continue; }
+               $font = $bsf; 
+               unset($cw);
+               $cw = '';
+               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
+               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
+               else {
+
+                       $prevFontFamily = $this->FontFamily;
+                       $prevFontStyle = $this->currentfontstyle;
+                       $prevFontSizePt = $this->FontSizePt;
+                       $this->SetFont($bsf, '', '', false);
+                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
+                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
+               }
+               if (!$cw) { continue; }
+               $l = 0;
+               foreach($u AS $char) {
+                       if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) {
+                               $l++;
+                       }
+                       else {
+                               if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) {     // Not found even in last backup font
+                                       $cont = mb_substr($writehtml_e, $start+1);
+                                       $writehtml_e = mb_substr($writehtml_e, 0, $start+1, 'UTF-8');
+                                       array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont));
+                                       $this->subPos = $writehtml_i+1;
+                                       return 2;
+                               }
+                               else { break; }
+                       }
+               }
+               if ($l > 0) {
+                       $patt = mb_substr($writehtml_e, $start, $l, 'UTF-8');
+                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
+                               $writehtml_e = $m[1];
+                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
+                               $this->subPos = $writehtml_i+3;
+                               return 4;
+                       }
+               }
+       }
+
+       unset($cw); 
+       return 0;
+}
+
+
+function SubstituteCharsMB(&$writehtml_a, &$writehtml_i, &$writehtml_e) {
+       $cw = &$this->CurrentFont['cw'];
+       $unicode = $this->UTF8StringToArray($writehtml_e, false);
+       $start = -1;
+       $end = 0;
+       $flag = 0;
+       $ftype = '';
+       $u = array();
+       foreach($unicode AS $c => $char) {
+               if (($flag == 0 || $flag==2) && (!$this->_charDefined($cw,$char) || ($flag==2 && $char==32)) && $this->checkSIP && $char > 131071) {    // Unicode Plane 2 (SIP)
+                       if (in_array($this->FontFamily ,$this->available_CJK_fonts)) { return 0; }
+                       if ($flag==0) { $start=$c; }
+                       $flag=2; 
+                       $u[] = $char;
+               }
+               //else if (($flag == 0 || $flag==1) && $char != 173 && !$this->_charDefined($cw,$char) && ($char<1423 ||  ($char>3583 && $char < 11263))) { 
+               else if (($flag == 0 || $flag==1) && $char != 173 && (!$this->_charDefined($cw,$char) || ($flag==1 && $char==32)) && ($char<1536 ||  ($char>1791 && $char < 2304) || $char>3455)) { 
+                       if ($flag==0) { $start=$c; }
+                       $flag=1; 
+                       $u[] = $char;
+               }
+               else if ($flag>0) { $end=$c-1; break; }
+       }
+       if ($flag>0 && !$end) { $end=count($unicode)-1; }
+       if ($start==-1) { return 0; }
+       if ($flag == 2) {       // SIP
+               // Check if current CJK font has a ext-B related font
+          if (isset($this->CurrentFont['sipext']) && $this->CurrentFont['sipext']) {
+               $font = $this->CurrentFont['sipext']; 
+               unset($cw);
+               $cw = '';
+               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
+               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
+               else {
+                       $prevFontFamily = $this->FontFamily;
+                       $prevFontStyle = $this->currentfontstyle;
+                       $prevFontSizePt = $this->FontSizePt;
+                       $this->SetFont($font, '', '', false);
+                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
+                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
+               }
+               if (!$cw) { return 0; }
+               $l = 0;
+               foreach($u AS $char) {
+                       if ($this->_charDefined($cw,$char) || $char > 131071) {
+                               $l++;
+                       }
+                       else { break; }
+               }
+               if ($l > 0) {
+                       $patt = mb_substr($writehtml_e, $start, $l);
+                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
+                               $writehtml_e = $m[1];
+                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
+                               $this->subPos = $writehtml_i+3;
+                               return 4;
+                       }
+               }
+          }
+               // Check Backup SIP font (defined in config_fonts.php)
+          if (isset($this->backupSIPFont) && $this->backupSIPFont) {
+               if ($this->currentfontfamily != $this->backupSIPFont) { $font = $this->backupSIPFont; }
+               else { unset($cw); return 0; }
+               unset($cw);
+               $cw = '';
+               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
+               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
+               else {
+                       $prevFontFamily = $this->FontFamily;
+                       $prevFontStyle = $this->currentfontstyle;
+                       $prevFontSizePt = $this->FontSizePt;
+                       $this->SetFont($this->backupSIPFont, '', '', false);
+                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
+                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
+               }
+               if (!$cw) { return 0; }
+               $l = 0;
+               foreach($u AS $char) {
+                       if ($this->_charDefined($cw,$char) || $char > 131071) {
+                               $l++;
+                       }
+                       else { break; }
+               }
+               if ($l > 0) {
+                       $patt = mb_substr($writehtml_e, $start, $l);
+                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
+                               $writehtml_e = $m[1];
+                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
+                               $this->subPos = $writehtml_i+3;
+                               return 4;
+                       }
+               }
+          }
+          return 0; 
+       }
+
+
+       // FIRST TRY CORE FONTS
+       if (!$this->PDFA && !$this->PDFX) { 
+         $repl = array();
+         if (!$this->subArrMB) { 
+               include(_MPDF_PATH.'includes/subs_core.php'); 
+               $this->subArrMB['a'] = $aarr;
+               $this->subArrMB['s'] = $sarr;
+               $this->subArrMB['z'] = $zarr;
+         }
+         if (isset($this->subArrMB['a'][$u[0]])) { 
+               $font = 'tta'; $ftype = 'C'; 
+               foreach($u AS $char) {
+                       if ($this->subArrMB['a'][$char]) { $repl[] = $this->subArrMB['a'][$char]; }
+                       else { break; }
+               }
+         }
+         else if (isset($this->subArrMB['z'][$u[0]])) { 
+               $font = 'ttz'; $ftype = 'C'; 
+               foreach($u AS $char) {
+                       if ($this->subArrMB['z'][$char]) { $repl[] = $this->subArrMB['z'][$char]; }
+                       else { break; }
+               }
+         }
+         else if (isset($this->subArrMB['s'][$u[0]])) { 
+               $font = 'tts'; $ftype = 'C'; 
+               foreach($u AS $char) {
+                       if ($this->subArrMB['s'][$char]) { $repl[] = $this->subArrMB['s'][$char]; }
+                       else { break; }
+               }
+         }
+         if ($ftype=='C') {
+               $patt = mb_substr($writehtml_e, $start, count($repl));
+               if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
+                       $writehtml_e = $m[1];
+                       array_splice($writehtml_a, $writehtml_i+1, 0, array($font, implode('|', $repl), '/'.$font, $m[3]));     // e.g. <tts>
+                       $this->subPos = $writehtml_i+3;
+                       return 4;
+               }
+               return 0;
+         }
+       }
+
+       // FIND IN DEFAULT FONT - removed mPDF 5.0
+
+       // LASTLY TRY IN BACKUP SUBS FONT
+       if (!is_array($this->backupSubsFont)) { $this->backupSubsFont = array("$this->backupSubsFont"); }
+       foreach($this->backupSubsFont AS $bsfctr=>$bsf) {
+               if ($this->currentfontfamily != $bsf) { $font = $bsf; }
+               else { continue; }
+               unset($cw);
+               $cw = '';
+               if (isset($this->fonts[$font])) { $cw = &$this->fonts[$font]['cw']; }
+               else if (file_exists(_MPDF_TTFONTDATAPATH.$font.'.cw.dat')) { $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
+               else {
+                       $prevFontFamily = $this->FontFamily;
+                       $prevFontStyle = $this->currentfontstyle;
+                       $prevFontSizePt = $this->FontSizePt;
+                       $this->SetFont($bsf, '', '', false);
+                       $cw = @file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
+                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt, false);
+               }
+               if (!$cw) { continue; }
+               $l = 0;
+               foreach($u AS $char) {
+                       if ($char == 173 || $this->_charDefined($cw,$char) || ($char>1536 && $char<1791) || ($char>2304 && $char<3455 )) {      // Arabic and Indic 
+                               $l++;
+                       }
+                       else {
+                               if ($l==0 && $bsfctr == (count($this->backupSubsFont)-1)) {     // Not found even in last backup font
+                                       $cont = mb_substr($writehtml_e, $start+1);
+                                       $writehtml_e = mb_substr($writehtml_e, 0, $start+1);
+                                       array_splice($writehtml_a, $writehtml_i+1, 0, array('', $cont));
+                                       $this->subPos = $writehtml_i+1;
+                                       return 2;
+                               }
+                               else { break; }
+                       }
+               }
+               if ($l > 0) {
+                       $patt = mb_substr($writehtml_e, $start, $l);
+                       if (preg_match("/(.*?)(".preg_quote($patt,'/').")(.*)/u", $writehtml_e, $m)) {
+                               $writehtml_e = $m[1];
+                               array_splice($writehtml_a, $writehtml_i+1, 0, array('span style="font-family: '.$font.'"', $m[2], '/span', $m[3]));
+                               $this->subPos = $writehtml_i+3;
+                               return 4;
+                       }
+               }
+       }
+
+       unset($cw); 
+       return 0;
+}
+
+
+function setHiEntitySubstitutions() {
+       $entarr = array (
+  'nbsp' => '160',  'iexcl' => '161',  'cent' => '162',  'pound' => '163',  'curren' => '164',  'yen' => '165',  'brvbar' => '166',  'sect' => '167',
+  'uml' => '168',  'copy' => '169',  'ordf' => '170',  'laquo' => '171',  'not' => '172',  'shy' => '173',  'reg' => '174',  'macr' => '175',
+  'deg' => '176',  'plusmn' => '177',  'sup2' => '178',  'sup3' => '179',  'acute' => '180',  'micro' => '181',  'para' => '182',  'middot' => '183',
+  'cedil' => '184',  'sup1' => '185',  'ordm' => '186',  'raquo' => '187',  'frac14' => '188',  'frac12' => '189',  'frac34' => '190',
+  'iquest' => '191',  'Agrave' => '192',  'Aacute' => '193',  'Acirc' => '194',  'Atilde' => '195',  'Auml' => '196',  'Aring' => '197',
+  'AElig' => '198',  'Ccedil' => '199',  'Egrave' => '200',  'Eacute' => '201',  'Ecirc' => '202',  'Euml' => '203',  'Igrave' => '204',
+  'Iacute' => '205',  'Icirc' => '206',  'Iuml' => '207',  'ETH' => '208',  'Ntilde' => '209',  'Ograve' => '210',  'Oacute' => '211',
+  'Ocirc' => '212',  'Otilde' => '213',  'Ouml' => '214',  'times' => '215',  'Oslash' => '216',  'Ugrave' => '217',  'Uacute' => '218',
+  'Ucirc' => '219',  'Uuml' => '220',  'Yacute' => '221',  'THORN' => '222',  'szlig' => '223',  'agrave' => '224',  'aacute' => '225',
+  'acirc' => '226',  'atilde' => '227',  'auml' => '228',  'aring' => '229',  'aelig' => '230',  'ccedil' => '231',  'egrave' => '232',
+  'eacute' => '233',  'ecirc' => '234',  'euml' => '235',  'igrave' => '236',  'iacute' => '237',  'icirc' => '238',  'iuml' => '239',
+  'eth' => '240',  'ntilde' => '241',  'ograve' => '242',  'oacute' => '243',  'ocirc' => '244',  'otilde' => '245',  'ouml' => '246',
+  'divide' => '247',  'oslash' => '248',  'ugrave' => '249',  'uacute' => '250',  'ucirc' => '251',  'uuml' => '252',  'yacute' => '253',
+  'thorn' => '254',  'yuml' => '255',  'OElig' => '338',  'oelig' => '339',  'Scaron' => '352',  'scaron' => '353',  'Yuml' => '376',
+  'fnof' => '402',  'circ' => '710',  'tilde' => '732',  'Alpha' => '913',  'Beta' => '914',  'Gamma' => '915',  'Delta' => '916',
+  'Epsilon' => '917',  'Zeta' => '918',  'Eta' => '919',  'Theta' => '920',  'Iota' => '921',  'Kappa' => '922',  'Lambda' => '923',
+  'Mu' => '924',  'Nu' => '925',  'Xi' => '926',  'Omicron' => '927',  'Pi' => '928',  'Rho' => '929',  'Sigma' => '931',  'Tau' => '932',
+  'Upsilon' => '933',  'Phi' => '934',  'Chi' => '935',  'Psi' => '936',  'Omega' => '937',  'alpha' => '945',  'beta' => '946',  'gamma' => '947',
+  'delta' => '948',  'epsilon' => '949',  'zeta' => '950',  'eta' => '951',  'theta' => '952',  'iota' => '953',  'kappa' => '954',
+  'lambda' => '955',  'mu' => '956',  'nu' => '957',  'xi' => '958',  'omicron' => '959',  'pi' => '960',  'rho' => '961',  'sigmaf' => '962',
+  'sigma' => '963',  'tau' => '964',  'upsilon' => '965',  'phi' => '966',  'chi' => '967',  'psi' => '968',  'omega' => '969',
+  'thetasym' => '977',  'upsih' => '978',  'piv' => '982',  'ensp' => '8194',  'emsp' => '8195',  'thinsp' => '8201',  'zwnj' => '8204',
+  'zwj' => '8205',  'lrm' => '8206',  'rlm' => '8207',  'ndash' => '8211',  'mdash' => '8212',  'lsquo' => '8216',  'rsquo' => '8217',
+  'sbquo' => '8218',  'ldquo' => '8220',  'rdquo' => '8221',  'bdquo' => '8222',  'dagger' => '8224',  'Dagger' => '8225',  'bull' => '8226',
+  'hellip' => '8230',  'permil' => '8240',  'prime' => '8242',  'Prime' => '8243',  'lsaquo' => '8249',  'rsaquo' => '8250',  'oline' => '8254',
+  'frasl' => '8260',  'euro' => '8364',  'image' => '8465',  'weierp' => '8472',  'real' => '8476',  'trade' => '8482',  'alefsym' => '8501',
+  'larr' => '8592',  'uarr' => '8593',  'rarr' => '8594',  'darr' => '8595',  'harr' => '8596',  'crarr' => '8629',  'lArr' => '8656',
+  'uArr' => '8657',  'rArr' => '8658',  'dArr' => '8659',  'hArr' => '8660',  'forall' => '8704',  'part' => '8706',  'exist' => '8707',
+  'empty' => '8709',  'nabla' => '8711',  'isin' => '8712',  'notin' => '8713',  'ni' => '8715',  'prod' => '8719',  'sum' => '8721',
+  'minus' => '8722',  'lowast' => '8727',  'radic' => '8730',  'prop' => '8733',  'infin' => '8734',  'ang' => '8736',  'and' => '8743',
+  'or' => '8744',  'cap' => '8745',  'cup' => '8746',  'int' => '8747',  'there4' => '8756',  'sim' => '8764',  'cong' => '8773',
+  'asymp' => '8776',  'ne' => '8800',  'equiv' => '8801',  'le' => '8804',  'ge' => '8805',  'sub' => '8834',  'sup' => '8835',  'nsub' => '8836',
+  'sube' => '8838',  'supe' => '8839',  'oplus' => '8853',  'otimes' => '8855',  'perp' => '8869',  'sdot' => '8901',  'lceil' => '8968',
+  'rceil' => '8969',  'lfloor' => '8970',  'rfloor' => '8971',  'lang' => '9001',  'rang' => '9002',  'loz' => '9674',  'spades' => '9824',
+  'clubs' => '9827',  'hearts' => '9829',  'diams' => '9830',
+ );
+       foreach($entarr AS $key => $val) {
+               $this->entsearch[] = '&'.$key.';';
+               $this->entsubstitute[] = code2utf($val);
+       }
+}
+
+function SubstituteHiEntities($html) {
+       // converts html_entities > ASCII 127 to unicode
+       // Leaves in particular &lt; to distinguish from tag marker
+       if (count($this->entsearch)) {
+               $html = str_replace($this->entsearch,$this->entsubstitute,$html);
+       }
+       return $html;
+}
+
+
+// Edited v1.2 Pass by reference; option to continue if invalid UTF-8 chars
+function is_utf8(&$string) {
+       if ($string === mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) {
+               return true;
+       } 
+       else {
+         if ($this->ignore_invalid_utf8) {
+               $string = mb_convert_encoding(mb_convert_encoding($string, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") ;
+               return true;
+         }
+         else {
+               return false;
+         }
+       }
+} 
+
+
+function purify_utf8($html,$lo=true) {
+       // For HTML
+       // Checks string is valid UTF-8 encoded
+       // converts html_entities > ASCII 127 to UTF-8
+       // Only exception - leaves low ASCII entities e.g. &lt; &amp; etc.
+       // Leaves in particular &lt; to distinguish from tag marker
+       if (!$this->is_utf8($html)) { 
+               echo "<p><b>HTML contains invalid UTF-8 character(s)</b></p>"; 
+               while (mb_convert_encoding(mb_convert_encoding($html, "UTF-32", "UTF-8"), "UTF-8", "UTF-32") != $html) {
+                       $a = iconv('UTF-8', 'UTF-8', $html);
+                       echo ($a);
+                       $pos = $start = strlen($a);
+                       $err = '';
+                       while ( ord(substr($html,$pos,1)) > 128 ) {
+                               $err .= '[[#'.ord(substr($html,$pos,1)).']]';
+                               $pos++;
+                       }
+                       echo '<span style="color:red; font-weight:bold">'.$err.'</span>';
+                       $html = substr($html, $pos);
+               }
+               echo $html;
+               $this->Error(""); 
+       }
+       $html = preg_replace("/\r/", "", $html );
+
+       // converts html_entities > ASCII 127 to UTF-8 
+       // Leaves in particular &lt; to distinguish from tag marker
+       $html = $this->SubstituteHiEntities($html);
+
+       // converts all &#nnn; or &#xHHH; to UTF-8 multibyte
+       // If $lo==true then includes ASCII < 128
+       $html = strcode2utf($html,$lo);
+       return ($html);
+}
+
+function purify_utf8_text($txt) {
+       // For TEXT
+       // Make sure UTF-8 string of characters
+       if (!$this->is_utf8($txt)) { $this->Error("Text contains invalid UTF-8 character(s)"); }
+
+       $txt = preg_replace("/\r/", "", $txt );
+
+       return ($txt);
+}
+function all_entities_to_utf8($txt) {
+       // converts txt_entities > ASCII 127 to UTF-8 
+       // Leaves in particular &lt; to distinguish from tag marker
+       $txt = $this->SubstituteHiEntities($txt);
+
+       // converts all &#nnn; or &#xHHH; to UTF-8 multibyte
+       $txt = strcode2utf($txt);
+
+       $txt = $this->lesser_entity_decode($txt);
+       return ($txt);
+}
+
+
+// ====================================================
+/*-- BARCODES --*/
+// UPC/EAN barcode
+// EAN13, EAN8, UPCA, UPCE, ISBN, ISSN
+// Accepts 12 or 13 digits with or without - hyphens
+function WriteBarcode($code, $showtext=1, $x='', $y='', $size=1, $border=0, $paddingL=1, $paddingR=1, $paddingT=2, $paddingB=2, $height=1, $bgcol=false, $col=false, $btype='ISBN', $supplement='0', $supplement_code='', $k=1) {
+                       if (empty($code)) {
+                               return;
+                       }
+                       $codestr = $code;
+                       $code = preg_replace('/\-/','',$code);
+
+                       if (!class_exists('PDFBarcode', false)) { 
+                               include(_MPDF_PATH.'classes/barcode.php'); 
+                       }
+                       $this->barcode = new PDFBarcode();
+                       if ($btype == 'ISSN' || $btype == 'ISBN') {
+                               $arrcode = $this->barcode->getBarcodeArray($code, 'EAN13');
+                       }
+                       else { $arrcode = $this->barcode->getBarcodeArray($code, $btype); }
+
+                       if ($arrcode === false) { $this->Error('Error in barcode string: '.$codestr); }
+                       if((($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') && strlen($code) == 12) || ($btype=='UPCA' && strlen($code) == 11)
+                               || ($btype=='UPCE' && strlen($code) == 11) || ($btype=='EAN8' && strlen($code) == 7)) {
+                               $code .= $arrcode['checkdigit'];
+                               if (stristr($codestr,'-')) { $codestr .= '-' . $arrcode['checkdigit']; }
+                               else { $codestr .= $arrcode['checkdigit']; }
+                       }
+                       if ($btype == 'ISBN') { $codestr = 'ISBN '.$codestr; }
+                       if ($btype == 'ISSN') { $codestr = 'ISSN '.$codestr; }
+
+                       if (empty($x)) {
+                               $x = $this->x;
+                       }
+                       if (empty($y)) {
+                               $y = $this->y;
+                       }
+                       // set foreground color
+                       $prevDrawColor = $this->DrawColor;
+                       $prevTextColor = $this->TextColor;
+                       $prevFillColor = $this->FillColor;
+                       $lw = $this->LineWidth;
+                       $this->SetLineWidth(0.01);
+
+                       $size /= $k;    // in case resized in a table
+
+                       $xres = $arrcode['nom-X'] * $size;
+                       $llm = $arrcode['lightmL'] * $arrcode['nom-X'] * $size; // Left Light margin
+                       $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin
+
+                       $bcw = ($arrcode["maxw"] * $xres);      // Barcode width = Should always be 31.35mm * $size
+
+                       $fbw = $bcw + $llm + $rlm;      // Full barcode width incl. light margins
+                       $ow = $fbw + $paddingL + $paddingR;     // Full overall width incl. user-defined padding
+
+                       $fbwi = $fbw - 2;       // Full barcode width incl. light margins - 2mm - for isbn string
+
+                       // cf. http://www.gs1uk.org/downloads/bar_code/Bar coding getting it right.pdf
+                       $num_height = 3 * $size;                                        // Height of numerals
+                       $fbh = $arrcode['nom-H'] * $size * $height;             // Full barcode height incl. numerals
+                       $bch = $fbh - (1.5 * $size);                                    // Barcode height of bars        (3mm for numerals)
+
+                       if (($btype=='EAN13' && $showtext) || $btype == 'ISSN' || $btype == 'ISBN') { // Add height for ISBN string + margin from top of bars
+                               $tisbnm = 1.5 * $size;  // Top margin between isbn (if shown) & bars
+                               $codestr_fontsize = 2.1 * $size;
+                               $paddingT += $codestr_fontsize + $tisbnm  ; 
+                       }
+                       $oh = $fbh + $paddingT + $paddingB;             // Full overall height incl. user-defined padding
+
+                       // PRINT border background color
+                       $xpos = $x;
+                       $ypos = $y;
+                       if ($col) {
+                               $this->SetDColor($col);
+                               $this->SetTColor($col); 
+                       }
+                       else {
+                               $this->SetDColor($this->ConvertColor(0));
+                               $this->SetTColor($this->ConvertColor(0));
+                       }
+                       if ($bgcol) {
+                               $this->SetFColor($bgcol);
+                       }
+                       else { $this->SetFColor($this->ConvertColor(255)); }
+                       if (!$bgcol && !$col) { // fn. called directly - not via HTML
+                               if ($border) { $fillb = 'DF'; } else { $fillb = 'F'; }
+                               $this->Rect($xpos, $ypos, $ow, $oh, $fillb);
+                       }
+
+
+                       // PRINT BARS
+                       $xpos = $x + $paddingL + $llm ;
+                       $ypos = $y + $paddingT;
+                       if ($col) { $this->SetFColor($col); }
+                       else { $this->SetFColor($this->ConvertColor(0)); }
+                       if ($arrcode !== false) {
+                               foreach ($arrcode["bcode"] AS $v) {
+                                       $bw = ($v["w"] * $xres);
+                                       if ($v["t"]) {
+                                               // draw a vertical bar
+                                               $this->Rect($xpos, $ypos, $bw, $bch, 'F');
+                                       }
+                                       $xpos += $bw;
+                               }
+                       }
+
+
+                       // print text
+                       $prevFontFamily = $this->FontFamily;
+                       $prevFontStyle = $this->FontStyle;
+                       $prevFontSizePt = $this->FontSizePt;
+
+                       // ISBN string
+                       if (($btype=='EAN13' && $showtext) || $btype=='ISBN' || $btype=='ISSN') {
+                          if ($this->onlyCoreFonts) {
+                               $this->SetFont('chelvetica');
+                          }
+                          else {
+                               $this->SetFont('sans');
+                          }
+                          
+                          if ($bgcol) { $this->SetFColor($bgcol); }
+                          else { $this->SetFColor($this->ConvertColor(255)); }
+                          $this->x = $x + $paddingL + 1;       // 1mm left margin (cf. $fbwi above)
+                          // max width is $fbwi 
+                          $loop = 0;
+                          while ( $loop == 0 ) {
+                               $this->SetFontSize($codestr_fontsize*1.4*_MPDFK, false);        // don't write
+                               $sz = $this->GetStringWidth( $codestr );
+                               if ($sz > $fbwi)
+                                       $codestr_fontsize -= 0.1;
+                               else
+                                       $loop ++;
+                          }
+                          $this->SetFont('','',$codestr_fontsize*1.4*_MPDFK, true, true);      // * 1.4 because font height is only 7/10 of given mm
+                          // WORD SPACING
+                          if ($fbwi > $sz) {
+                               $xtra =  $fbwi - $sz;
+                               $charspacing = $xtra / (strlen($codestr)-1);
+                               if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); }
+                          }
+                          $this->y = $y + $paddingT - ($codestr_fontsize ) - $tisbnm ; 
+                          $this->Cell($fbw , $codestr_fontsize, $codestr);
+                          if ($charspacing) { $this->_out('BT 0 Tc ET'); }
+                       }
+
+
+                       // Bottom NUMERALS
+                       if ($this->onlyCoreFonts) {
+                               $this->SetFont('mono'); 
+                       }
+                       else {
+                               if (in_array('ocrb',$this->available_unifonts)) { $this->SetFont('ocrb'); }
+                               else { $this->SetFont('mono'); }
+                       }
+                       if (isset($this->CurrentFont['desc']['CapHeight'])) { $fh = (1000/$this->CurrentFont['desc']['CapHeight']); }
+                       else if (isset($this->CurrentFont['desc']['Ascent'])) { $fh = (1000/$this->CurrentFont['desc']['Ascent']); }
+                       else { $fh = 1.2; }
+
+                       $charRO = '';
+                       if ($btype=='EAN13' || $btype=='ISBN' || $btype=='ISSN') {
+                               $outerfontsize = 3;     // Inner fontsize = 3
+                               $outerp = $xres * 4;
+                               $innerp = $xres * 2.5;
+                               $textw = ($bcw*0.5) - $outerp - $innerp;
+                               $chars = 6; // number of numerals in each half
+                               $charLO = substr($code,0,1); // Left Outer
+                               $charLI = substr($code,1,6); // Left Inner
+                               $charRI = substr($code,7,6); // Right Inner
+                               if (!$supplement) $charRO = '>'; // Right Outer
+                       }
+                       else if ($btype=='UPCA') {
+                               $outerfontsize = 2.3;   // Inner fontsize = 3
+                               $outerp = $xres * 10;
+                               $innerp = $xres * 2.5;
+                               $textw = ($bcw*0.5) - $outerp - $innerp;
+                               $chars = 5; 
+                               $charLO = substr($code,0,1); // Left Outer
+                               $charLI = substr($code,1,5); // Left Inner
+                               $charRI = substr($code,6,5); // Right Inner
+                               $charRO = substr($code,11,1); // Right Outer
+                       }
+                       else if ($btype=='UPCE') {
+                               $outerfontsize = 2.3;   // Inner fontsize = 3
+                               $outerp = $xres * 4;
+                               $innerp = 0;
+                               $textw = ($bcw*0.5) - $outerp - $innerp;
+                               $chars = 3; 
+                               $upce_code = $arrcode['code'];
+                               $charLO = substr($code,0,1); // Left Outer
+                               $charLI = substr($upce_code,0,3); // Left Inner
+                               $charRI = substr($upce_code,3,3); // Right Inner
+                               $charRO = substr($code,11,1); // Right Outer
+                       }
+                       else if ($btype=='EAN8') {
+                               $outerfontsize = 3;     // Inner fontsize = 3
+                               $outerp = $xres * 4;
+                               $innerp = $xres * 2.5;
+                               $textw = ($bcw*0.5) - $outerp - $innerp;
+                               $chars = 4; 
+                               $charLO = '<'; // Left Outer
+                               $charLI = substr($code,0,4); // Left Inner
+                               $charRI = substr($code,4,4); // Right Inner
+                               if (!$supplement) $charRO = '>'; // Right Outer
+                       }
+
+                       $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK);      // 3mm numerals (FontSize is larger to account for space above/below characters)
+
+                       if (!$this->usingCoreFont) { $cw = $this->_getCharWidth($this->CurrentFont['cw'],32)*3*$fh*$size/1000; }        // character width at 3mm
+                       else { $cw = $this->_getCharWidth($this->CurrentFont['cw'],48)*3*$fh*$size/1000; }              // 48 == char "0"
+
+                       // Outer left character
+                       $y_text = $y + $paddingT + $bch - ($num_height/2); 
+                       $y_text_outer = $y + $paddingT + $bch - ($num_height*($outerfontsize/3)/2); 
+
+                       $this->x = $x + $paddingL - ($cw*($outerfontsize/3)*0.1); // 0.1 is correction as char does not fill full width;
+                       $this->y = $y_text_outer; 
+                       $this->Cell($cw, $num_height, $charLO );
+
+                       // WORD SPACING for inner chars
+                       $xtra =  $textw - ($cw*$chars);
+                       $charspacing = $xtra / ($chars-1);
+                       if ($charspacing) { $this->_out(sprintf('BT %.3F Tc ET',$charspacing*_MPDFK)); }
+
+                       if ($bgcol) { $this->SetFColor($bgcol); }       
+                       else { $this->SetFColor($this->ConvertColor(255)); }
+
+                       $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
+
+                       // Inner left half characters
+                       $this->x = $x + $paddingL + $llm + $outerp;
+                       $this->y = $y_text; 
+                       $this->Cell($textw, $num_height, $charLI , 0, 0, '', 1);
+
+                       // Inner right half characters
+                       $this->x = $x + $paddingL + $llm + ($bcw*0.5) + $innerp;
+                       $this->y = $y_text; 
+                       $this->Cell($textw, $num_height, $charRI , 0, 0, '', 1);
+
+                       if ($charspacing) { $this->_out('BT 0 Tc ET'); }
+
+                       // Outer Right character
+                       $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK);      // 3mm numerals (FontSize is larger to account for space above/below characters)
+
+                       $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*($outerfontsize/3)*0.9); // 0.9 is correction as char does not fill full width
+                       $this->y = $y_text_outer; 
+                       $this->Cell($cw*($outerfontsize/3), $num_height, $charRO , 0, 0, 'R');
+
+                       if ($supplement) { // EAN-2 or -5 Supplement
+                               // PRINT BARS
+                               $supparrcode = $this->barcode->getBarcodeArray($supplement_code, 'EAN'.$supplement);
+                               if ($supparrcode === false) { $this->Error('Error in barcode string (supplement): '.$codestr.' '.$supplement_code); }
+                               if(strlen($supplement_code) != $supplement) {
+                                       $this->Error('Barcode supplement incorrect: '.$supplement_code);
+                               }
+                               $llm = $fbw - (($arrcode['lightmR'] - $supparrcode['sepM'])  * $arrcode['nom-X'] * $size);      // Left Light margin
+                               $rlm = $arrcode['lightmR'] * $arrcode['nom-X'] * $size; // Right Light margin
+
+                               $bcw = ($supparrcode["maxw"] * $xres);  // Barcode width = Should always be 31.35mm * $size
+
+                               $fbw = $bcw + $llm + $rlm;      // Full barcode width incl. light margins
+                               $ow = $fbw + $paddingL + $paddingR;     // Full overall width incl. user-defined padding
+                               $bch = $fbh - (1.5 * $size) - ($num_height + 0.5);              // Barcode height of bars        (3mm for numerals)
+
+                               $xpos = $x + $paddingL + $llm ;
+                               $ypos = $y + $paddingT + $num_height + 0.5;
+                               if ($col) { $this->SetFColor($col); }
+                               else { $this->SetFColor($this->ConvertColor(0)); }
+                               if ($supparrcode !== false) {
+                                       foreach ($supparrcode["bcode"] AS $v) {
+                                               $bw = ($v["w"] * $xres);
+                                               if ($v["t"]) {
+                                                       // draw a vertical bar
+                                                       $this->Rect($xpos, $ypos, $bw, $bch, 'F');
+                                               }
+                                               $xpos += $bw;
+                                       }
+                               }
+
+                               // Characters
+                               if ($bgcol) { $this->SetFColor($bgcol); }
+                               else { $this->SetFColor($this->ConvertColor(255)); }
+                               $this->SetFontSize(3*$fh*$size*_MPDFK); // 3mm numerals (FontSize is larger to account for space above/below characters)
+                               $this->x = $x + $paddingL + $llm;
+                               $this->y = $y + $paddingT; 
+                               $this->Cell($bcw, $num_height, $supplement_code, 0, 0, 'C');
+
+                               // Outer Right character (light margin)
+                               $this->SetFontSize(($outerfontsize/3)*3*$fh*$size*_MPDFK);      // 3mm numerals (FontSize is larger to account for space above/below characters)
+                               $this->x = $x + $paddingL + $llm + $bcw + $rlm - ($cw*0.9); // 0.9 is correction as char does not fill full width
+                               $this->y = $y + $paddingT; 
+                               $this->Cell($cw*($outerfontsize/3), $num_height, '>', 0, 0, 'R');
+                       }
+
+
+
+                       // Restore **************
+                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt);
+                       $this->DrawColor = $prevDrawColor;
+                       $this->TextColor = $prevTextColor;
+                       $this->FillColor = $prevFillColor;
+                       $this->SetLineWidth($lw);
+                       $this->SetY($y);
+}
+
+
+
+// ====================================================
+// POSTAL and OTHER barcodes
+function WriteBarcode2($code, $x='', $y='', $size=1, $height=1, $bgcol=false, $col=false, $btype='IMB', $print_ratio='', $k=1) {
+                       if (empty($code)) { return; }
+                       if (!class_exists('PDFBarcode', false)) { 
+                               include(_MPDF_PATH.'classes/barcode.php'); 
+                       }
+                       $this->barcode = new PDFBarcode();
+                       $arrcode = $this->barcode->getBarcodeArray($code, $btype, $print_ratio); 
+
+                       if ($arrcode === false) { $this->Error('Error in barcode string: '.$code); }
+                       if (empty($x)) { $x = $this->x; }
+                       if (empty($y)) { $y = $this->y; }
+                       $prevDrawColor = $this->DrawColor;
+                       $prevTextColor = $this->TextColor;
+                       $prevFillColor = $this->FillColor;
+                       $lw = $this->LineWidth;
+                       $this->SetLineWidth(0.01);
+                       $size /= $k;    // in case resized in a table
+                       $xres = $arrcode['nom-X'] * $size;
+
+                       if ($btype == 'IMB' || $btype == 'RM4SCC' || $btype == 'KIX' || $btype == 'POSTNET' || $btype == 'PLANET') {
+                               $llm = $arrcode['quietL'] / $k; // Left Quiet margin
+                               $rlm = $arrcode['quietR'] / $k; // Right Quiet margin
+                               $tlm = $blm = $arrcode['quietTB'] / $k;
+                               $height=1;              // Overrides
+                       }
+                       else if (in_array($btype, array('C128A','C128B','C128C','EAN128A','EAN128B','EAN128C','C39','C39+','C39E','C39E+','S25','S25+','I25','I25+','I25B','I25B+','C93','MSI','MSI+','CODABAR','CODE11'))) {
+                               $llm = $arrcode['lightmL'] * $xres;     // Left Quiet margin
+                               $rlm = $arrcode['lightmR'] * $xres;     // Right Quiet margin
+                               $tlm = $blm = $arrcode['lightTB'] * $xres * $height;
+                       }
+
+
+                       $bcw = ($arrcode["maxw"] * $xres);
+                       $fbw = $bcw + $llm + $rlm;              // Full barcode width incl. light margins
+
+                       $bch = ($arrcode["nom-H"] * $size * $height);
+                       $fbh = $bch + $tlm + $blm;              // Full barcode height
+
+                       // PRINT border background color
+                       $xpos = $x;
+                       $ypos = $y;
+                       if ($col) {
+                               $this->SetDColor($col); 
+                               $this->SetTColor($col); 
+                       }
+                       else {
+                               $this->SetDColor($this->ConvertColor(0));       
+                               $this->SetTColor($this->ConvertColor(0));       
+                       }
+                       if ($bgcol) {
+                               $this->SetFColor($bgcol);
+                       }
+                       else { $this->SetFColor($this->ConvertColor(255)); }    
+
+                       // PRINT BARS
+                       if ($col) { $this->SetFColor($col); }
+                       else { $this->SetFColor($this->ConvertColor(0)); }
+                       $xpos = $x + $llm ;
+
+                       if ($arrcode !== false) {
+                               foreach ($arrcode["bcode"] AS $v) {
+                                       $bw = ($v["w"] * $xres);
+                                       if ($v["t"]) {
+                                               $ypos = $y + $tlm + ($bch * $v['p'] / $arrcode['maxh']);
+                                               $this->Rect($xpos, $ypos, $bw, ($v['h'] * $bch / $arrcode['maxh']), 'F');
+                                       }
+                                       $xpos += $bw;
+                               }
+                       }
+
+                       // PRINT BEARER BARS
+                       if ($btype == 'I25B' || $btype == 'I25B+') {
+                               $this->Rect($x, $y, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F');
+                               $this->Rect($x, $y+$tlm+$bch, $fbw, ($arrcode['lightTB'] * $xres * $height), 'F');
+                       } 
+
+                       // Restore **************
+                       $this->SetFont($prevFontFamily, $prevFontStyle, $prevFontSizePt);
+                       $this->DrawColor = $prevDrawColor;
+                       $this->TextColor = $prevTextColor;
+                       $this->FillColor = $prevFillColor;
+                       $this->SetLineWidth($lw);
+                       $this->SetY($y);
+}
+
+/*-- END BARCODES --*/
+
+// ====================================================
+// ====================================================
+
+function StartTransform($returnstring=false) {
+         if ($returnstring) { return('q'); }
+         else { $this->_out('q'); }
+}
+function StopTransform($returnstring=false) {
+         if ($returnstring) { return('Q'); }
+         else { $this->_out('Q'); }
+}
+function transformScale($s_x, $s_y, $x='', $y='', $returnstring=false) {
+       if ($x === '') {
+               $x=$this->x;
+       }
+       if ($y === '') {
+               $y=$this->y;
+       }
+       if (($s_x == 0) OR ($s_y == 0)) {
+               $this->Error('Please do not use values equal to zero for scaling');
+       }
+       $y = ($this->h - $y) * _MPDFK;
+       $x *= _MPDFK;
+       //calculate elements of transformation matrix
+       $s_x /= 100;
+       $s_y /= 100;
+       $tm[0] = $s_x;
+       $tm[1] = 0;
+       $tm[2] = 0;
+       $tm[3] = $s_y;
+       $tm[4] = $x * (1 - $s_x);
+       $tm[5] = $y * (1 - $s_y);
+       //scale the coordinate system
+       if ($returnstring) { return($this->_transform($tm, true)); }
+       else { $this->_transform($tm); }
+}
+function transformTranslate($t_x, $t_y, $returnstring=false) {
+       //calculate elements of transformation matrix
+       $tm[0] = 1;
+       $tm[1] = 0;
+       $tm[2] = 0;
+       $tm[3] = 1;
+       $tm[4] = $t_x * _MPDFK;
+       $tm[5] = -$t_y * _MPDFK;
+       //translate the coordinate system
+       if ($returnstring) { return($this->_transform($tm, true)); }
+       else { $this->_transform($tm); }
+}
+function transformRotate($angle, $x='', $y='', $returnstring=false) {
+       if ($x === '') {
+               $x=$this->x;
+       }
+       if ($y === '') {
+               $y=$this->y;
+       }
+       $angle = -$angle;
+       $y = ($this->h - $y) * _MPDFK;
+       $x *= _MPDFK;
+       //calculate elements of transformation matrix
+       $tm[0] = cos(deg2rad($angle));
+       $tm[1] = sin(deg2rad($angle));
+       $tm[2] = -$tm[1];
+       $tm[3] = $tm[0];
+       $tm[4] = $x + $tm[1] * $y - $tm[0] * $x;
+       $tm[5] = $y - $tm[0] * $y - $tm[1] * $x;
+       //rotate the coordinate system around ($x,$y)
+       if ($returnstring) { return($this->_transform($tm, true)); }
+       else { $this->_transform($tm); }
+}
+function _transform($tm, $returnstring=false) {
+       if ($returnstring) { return(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); }
+       else { $this->_out(sprintf('%.4F %.4F %.4F %.4F %.4F %.4F cm', $tm[0], $tm[1], $tm[2], $tm[3], $tm[4], $tm[5])); }
+}
+
+
+
+/*-- INDIC --*/
+// INDIC ============================
+// This conversion can only be done when font is set
+function ConvertIndic(&$str) {
+       if (preg_match('/^ind_([a-z]{2})_/',$this->currentfontfamily, $m)) {
+               if (!class_exists('indic', false)) { include(_MPDF_PATH.'classes/indic.php'); }
+               if (empty($this->indic)) { $this->indic = new indic($this); }
+               $earr = $this->UTF8StringToArray($str, false);
+               $str = $this->indic->substituteIndic($earr, $m[1], $this->currentfontfamily);
+       }
+}
+/*-- END INDIC --*/
+
+// AUTOFONT =========================
+function AutoFont($html) {
+       if ($this->onlyCoreFonts) { return $html; }
+       $this->useLang = true;
+       if ($this->autoFontGroupSize == 1) { $extra = $this->pregASCIIchars1; }
+       else if ($this->autoFontGroupSize == 3) { $extra = $this->pregASCIIchars3; }
+       else {  $extra = $this->pregASCIIchars2; }
+       $n = '';
+       $a=preg_split('/<(.*?)>/ms',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
+       foreach($a as $i => $e) {
+          if($i%2==0) {
+               $e = strcode2utf($e);
+               $e = $this->lesser_entity_decode($e);
+
+               // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
+               // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
+
+/*-- CJK-FONTS --*/
+               if ($this->autoFontGroups & AUTOFONT_CJK) {
+                       $e = preg_replace("/([".$this->pregCJKchars.$extra."]*[".$this->pregCJKchars."][".$this->pregCJKchars.$extra."]*)/ue", '$this->replaceCJK(stripslashes(\'\\1\'))', $e);
+               }
+/*-- END CJK-FONTS --*/
+
+/*-- RTL --*/
+               if ($this->autoFontGroups & AUTOFONT_RTL) {
+                       // HEBREW
+                       $e = preg_replace("/([".$this->pregHEBchars .$extra."]*[".$this->pregHEBchars ."][".$this->pregHEBchars .$extra."]*)/u", "\xef\xbf\xb0span lang=\"he\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e); 
+                       // All Arabic
+                       $e = preg_replace("/([".$this->pregARABICchars .$extra."]*[".$this->pregARABICchars ."][".$this->pregARABICchars .$extra."]*)/ue", '$this->replaceArabic(stripslashes(\'\\1\'))', $e);
+               }
+/*-- END RTL --*/
+
+/*-- INDIC --*/
+               // INDIC
+               if ($this->autoFontGroups & AUTOFONT_INDIC) {
+                       // Bengali
+                       $e = preg_replace("/([".$this->pregBNchars .$this->pregINDextra."]*[".$this->pregBNchars ."][".$this->pregBNchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"bn\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Devanagari (= script for Hindi, Nepali + Sindhi)
+                       $e = preg_replace("/([".$this->pregHIchars .$this->pregINDextra."]*[".$this->pregHIchars ."][".$this->pregHIchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"hi\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Gujarati
+                       $e = preg_replace("/([".$this->pregGUchars .$this->pregINDextra."]*[".$this->pregGUchars ."][".$this->pregGUchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"gu\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Malayalam
+                       $e = preg_replace("/([".$this->pregMLchars .$this->pregINDextra."]*[".$this->pregMLchars ."][".$this->pregMLchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"ml\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Kannada
+                       $e = preg_replace("/([".$this->pregKNchars .$this->pregINDextra."]*[".$this->pregKNchars ."][".$this->pregKNchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"kn\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Oriya
+                       $e = preg_replace("/([".$this->pregORchars .$this->pregINDextra."]*[".$this->pregORchars ."][".$this->pregORchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"or\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Punjabi ?= Gurmuhki 
+                       $e = preg_replace("/([".$this->pregPAchars .$this->pregINDextra."]*[".$this->pregPAchars ."][".$this->pregPAchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"pa\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Tamil
+                       $e = preg_replace("/([".$this->pregTAchars .$this->pregINDextra."]*[".$this->pregTAchars ."][".$this->pregTAchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"ta\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Telugu
+                       $e = preg_replace("/([".$this->pregTEchars .$this->pregINDextra."]*[".$this->pregTEchars ."][".$this->pregTEchars .$this->pregINDextra."]*)/u", "\xef\xbf\xb0span lang=\"te\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+               }
+/*-- END INDIC --*/
+
+
+               if ($this->autoFontGroups & AUTOFONT_THAIVIET) {
+                       // THAI
+                       $e = preg_replace("/([\x{0E00}-\x{0E7F}".$extra."]*[\x{0E00}-\x{0E7F}][\x{0E00}-\x{0E7F}".$extra."]*)/u", "\xef\xbf\xb0span lang=\"th\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+                       // Vietnamese
+                       $e = preg_replace("/([".$this->pregVIETchars .$this->pregVIETPluschars ."]*[".$this->pregVIETchars ."][".$this->pregVIETchars .$this->pregVIETPluschars ."]*)/u", "\xef\xbf\xb0span lang=\"vi\"\xef\xbf\xb1\\1\xef\xbf\xb0/span\xef\xbf\xb1", $e);
+               }
+
+               $e = preg_replace('/[&]/','&amp;',$e);
+               $e = preg_replace('/[<]/','&lt;',$e);
+               $e = preg_replace('/[>]/','&gt;',$e);
+               $e = preg_replace("/(\xef\xbf\xb0span lang=\"([a-z\-A-Z]{2,5})\"\xef\xbf\xb1)\s+/",' \\1',$e);
+               $e = preg_replace("/[ ]+(\xef\xbf\xb0\/span\xef\xbf\xb1)/",'\\1 ',$e);
+
+               $e = preg_replace("/\xef\xbf\xb0span lang=\"([a-z\-A-Z]{2,5})\"\xef\xbf\xb1/","\xef\xbf\xb0span lang=\"\\1\" class=\"lang_\\1\"\xef\xbf\xb1",$e);
+
+               $e = preg_replace("/\xef\xbf\xb0/",'<',$e);
+               $e = preg_replace("/\xef\xbf\xb1/",'>',$e);
+
+               $a[$i] = $e;
+          }
+          else {
+               $a[$i] = '<'.$e.'>'; 
+          }
+       }
+       $n = implode('',$a);
+       return $n;
+}
+
+
+/*-- CJK-FONTS --*/
+function replaceCJK($str) {
+       // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
+       // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
+       if (preg_match("/[".$this->pregUHCchars."]/u", $str)) { 
+               return "\xef\xbf\xb0span lang=\"ko\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
+       }
+       else if (preg_match("/[".$this->pregSJISchars."]/u", $str)) { 
+               return "\xef\xbf\xb0span lang=\"ja\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
+       }
+       // if in Unicode Plane 2, probably HKCS (incl in BIG5) if not Japanese
+       else if (preg_match("/[\x{20000}-\x{2FFFF}]/u", $str)) { 
+               return "\xef\xbf\xb0span lang=\"zh-HK\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
+       }
+       else{ 
+               return "\xef\xbf\xb0span lang=\"zh-CN\"\xef\xbf\xb1" . $str ."\xef\xbf\xb0/span\xef\xbf\xb1";
+       }
+       return $str;
+}
+/*-- END CJK-FONTS --*/
+
+/*-- RTL --*/
+function replaceArabic($str) {
+       // PASHTO, SINDHI, URDU, ARABIC, PERSIAN
+       $persian = "\x{067E}\x{0686}\x{0698}\x{06AF}";
+
+       $urdu = "\x{0679}\x{0688}\x{0691}\x{06BA}\x{06BE}\x{06C1}\x{06D2}";
+       $pashto = "\x{067C}\x{0681}\x{0685}\x{0689}\x{0693}\x{0696}\x{069A}\x{06BC}\x{06D0}";   // ? and U+06AB, U+06CD
+       $sindhi = "\x{067A}\x{067B}\x{067D}\x{067F}\x{0680}\x{0684}\x{068D}\x{068A}\x{068F}\x{068C}\x{0687}\x{0683}\x{0699}\x{06AA}\x{06A6}\x{06BB}\x{06B1}\x{06B3}";
+       // Use U=FFF0 and U+FFF1 to mark start and end of span tags to prevent nesting occurring
+       // "\xef\xbf\xb0" ##lthtmltag## "\xef\xbf\xb1" ##gthtmltag##
+
+       if (preg_match("/[".$this->pregNonARABICchars ."]/u", $str) ) {
+               if (preg_match("/[".$sindhi ."]/u", $str) ) {
+                       return "\xef\xbf\xb0span lang=\"sd\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
+               }
+               else if (preg_match("/[".$urdu ."]/u", $str) ) {
+                       return "\xef\xbf\xb0span lang=\"ur\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
+               }
+               else if (preg_match("/[".$pashto ."]/u", $str) ) {
+                       return "\xef\xbf\xb0span lang=\"ps\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
+               }
+               else if (preg_match("/[".$persian ."]/u", $str) ) {
+                       return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
+               }
+               else {
+                       return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
+               }
+       }
+       if (preg_match("/[".$persian ."]/u", $str) ) {
+               return "\xef\xbf\xb0span lang=\"fa\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
+       }
+       else {
+               return "\xef\xbf\xb0span lang=\"ar\"\xef\xbf\xb1".$str."\xef\xbf\xb0/span\xef\xbf\xb1";
+       }
+       return $str;
+}
+
+// ARABIC ===========================
+// mPDF 5.4.08
+function InitArabic() {
+
+       // JOIN TO FOLLOWING LETTER IN LOGICAL ORDER (i.e. AS INITIAL)
+       $this->arabPrevLink = "";
+       // U+060c; U+061b; U+061f; U+0626; U+0628;
+       $this->arabPrevLink .= "\xd8\x8c\xd8\x9b\xd8\x9f\xd8\xa6\xd8\xa8";
+       // U+062a; U+062b; U+062c; U+062d; U+062e;
+       $this->arabPrevLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae";
+       // U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063a;
+       $this->arabPrevLink .= "\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba";
+       // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0649; U+064a;
+       $this->arabPrevLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x89\xd9\x8a";
+       // U+0678; U+0679; U+067a; U+067b; U+067c; U+067d; U+067e; U+067f;
+       $this->arabPrevLink .= "\xd9\xb8\xd9\xb9\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf";
+       // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687;
+       $this->arabPrevLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87";
+       // U+069a; U+069b; U+069c; U+069d; U+069e; U+069f;
+       $this->arabPrevLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f";
+       // U+06a0; U+06a1; U+06a2; U+06a3; U+06a4; U+06a5; U+06a6; U+06A7; U+06A8;
+       $this->arabPrevLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8";
+       // U+06a9; U+06aa; U+06ab; U+06ac; U+06ad; U+06ae; U+06af;
+       $this->arabPrevLink .= "\xda\xa9\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf";
+       // U+06b0; U+06b1; U+06b2; U+06b3; U+06b4; U+06b5; U+06b6; U+06b7; U+06b8; U+06b9;
+       $this->arabPrevLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9";
+       // U+06ba; U+06bb; U+06bc; U+06be; U+06bf;
+       $this->arabPrevLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf";
+       // U+06c1; U+06cc; U+06ce; U+06d0; U+06d1;
+       $this->arabPrevLink .= "\xdb\x81\xdb\x8c\xdb\x8e\xdb\x90\xdb\x91";
+
+
+
+
+       // JOIN TO PREVIOUS LETTER IN LOGICAL ORDER (i.e. AS FINAL FORM)
+       $this->arabNextLink = "";
+       // U+0622; U+0623; U+0624; U+0625; U+0626; U+0627; U+0628; U+0629;
+       $this->arabNextLink .= "\xd8\xa2\xd8\xa3\xd8\xa4\xd8\xa5\xd8\xa6\xd8\xa7\xd8\xa8\xd8\xa9";
+       // U+062A; U+062B; U+062C; U+062D; U+062E; U+062F;
+       $this->arabNextLink .= "\xd8\xaa\xd8\xab\xd8\xac\xd8\xad\xd8\xae\xd8\xaf";
+       // U+0630; U+0631; U+0632; U+0633; U+0634; U+0635; U+0636; U+0637; U+0638; U+0639; U+063A;
+       $this->arabNextLink .= "\xd8\xb0\xd8\xb1\xd8\xb2\xd8\xb3\xd8\xb4\xd8\xb5\xd8\xb6\xd8\xb7\xd8\xb8\xd8\xb9\xd8\xba";
+       // U+0640; U+0641; U+0642; U+0643; U+0644; U+0645; U+0646; U+0647; U+0648; U+0649; U+064A;
+       $this->arabNextLink .= "\xd9\x80\xd9\x81\xd9\x82\xd9\x83\xd9\x84\xd9\x85\xd9\x86\xd9\x87\xd9\x88\xd9\x89\xd9\x8a";
+       // U+0671; U+0672; U+0675; U+0676; U+0677; U+0678; U+0679;
+       $this->arabNextLink .= "\xd9\xb1\xd9\xb2\xd9\xb5\xd9\xb6\xd9\xb7\xd9\xb8\xd9\xb9";
+       // U+067A; U+067B; U+067C; U+067D; U+067E; U+067F;
+       $this->arabNextLink .= "\xd9\xba\xd9\xbb\xd9\xbc\xd9\xbd\xd9\xbe\xd9\xbf";
+       // U+0680; U+0681; U+0682; U+0683; U+0684; U+0685; U+0686; U+0687; U+0688; U+0689;
+       $this->arabNextLink .= "\xda\x80\xda\x81\xda\x82\xda\x83\xda\x84\xda\x85\xda\x86\xda\x87\xda\x88\xda\x89";
+       // U+068A; U+068B; U+068C; U+068D;  U+068F;U+068F;
+       $this->arabNextLink .= "\xda\x8a\xda\x8b\xda\x8c\xda\x8d\xda\x8e\xda\x8f";
+       // U+0690; U+0691; U+0692; U+0693; U+0694; U+0695; U+0696; U+0697; U+0698; U+0699;
+       $this->arabNextLink .= "\xda\x90\xda\x91\xda\x92\xda\x93\xda\x94\xda\x95\xda\x96\xda\x97\xda\x98\xda\x99";
+       // U+069A; U+069B; U+069C; U+069D; U+069E; U+069F;
+       $this->arabNextLink .= "\xda\x9a\xda\x9b\xda\x9c\xda\x9d\xda\x9e\xda\x9f";
+       // U+06A0; U+06A1; U+06A2; U+06A3; U+06A4; U+06A5; U+06A6; U+06A7; U+06A8; U+06A9;
+       $this->arabNextLink .= "\xda\xa0\xda\xa1\xda\xa2\xda\xa3\xda\xa4\xda\xa5\xda\xa6\xda\xa7\xda\xa8\xda\xa9";
+       // U+06AA; U+06AB; U+06AC; U+06AD; U+06AE; U+06AF;
+       $this->arabNextLink .= "\xda\xaa\xda\xab\xda\xac\xda\xad\xda\xae\xda\xaf";
+       // U+06B0; U+06B1; U+06B2; U+06B3; U+06B4; U+06B5; U+06B6; U+06B7; U+06B8; U+06B9;
+       $this->arabNextLink .= "\xda\xb0\xda\xb1\xda\xb2\xda\xb3\xda\xb4\xda\xb5\xda\xb6\xda\xb7\xda\xb8\xda\xb9";
+       // U+06BA; U+06BB; U+06BC; U+06BE; U+06BF;
+       $this->arabNextLink .= "\xda\xba\xda\xbb\xda\xbc\xda\xbe\xda\xbf";
+       // U+06C0; U+06C1; U+06C2; U+06C3; U+06C4; U+06C5; U+06C6; U+06C7; U+06C8; U+06C9;
+       $this->arabNextLink .= "\xdb\x80\xdb\x81\xdb\x82\xdb\x83\xdb\x84\xdb\x85\xdb\x86\xdb\x87\xdb\x88\xdb\x89";
+       // U+06CA; U+06CB; U+06CC; U+06CD; U+06CE; U+06CF;
+       $this->arabNextLink .= "\xdb\x8a\xdb\x8b\xdb\x8c\xdb\x8d\xdb\x8e\xdb\x8f";
+       // U+06D0; U+06d1; U+06D2; U+06D3; 
+       $this->arabNextLink .= "\xdb\x90\xdb\x91\xdb\x92\xdb\x93";
+
+
+       // VOWELS ++
+
+       // U+064b U+064c; U+064d; U+064e; U+064f; U+0650; U+0651; U+0652;
+       $this->arabVowels = "\xd9\x8b\xd9\x8c\xd9\x8d\xd9\x8e\xd9\x8f\xd9\x90\xd9\x91\xd9\x92";
+
+       // Added chars that may not be vowels but should not interrupt joining
+       // U+0670; U+0653; 
+       $this->arabVowels .= "\xd9\xb0\xd9\x93";
+       // ? should also add - U+615, 616, 617-61A, 653-65E, 6D6-6DC, 6DF-6E4, 6E7, 6E8, 6EA-6ED
+
+
+
+       // ISOLATED FORM :: FINAL :: INITIAL :: MEDIAL
+       // FB** - FE** = Arabic presentation Forms
+       // F5** F6** F7** = Private use area used by unAGlyphs in mPDF
+       $this->arabGlyphs = array(
+       "\xd8\x8c"=>array("\xd8\x8c", "\xd8\x8c", "\xd8\x8c", "\xd8\x8c"), /* 060C, 060C, 060C, 060C */
+       "\xd8\x9b"=>array("\xd8\x9b", "\xd8\x9b", "\xd8\x9b", "\xd8\x9b"), /* 061B, 061B, 061B, 061B */
+       "\xd8\x9f"=>array("\xd8\x9f", "\xd8\x9f", "\xd8\x9f", "\xd8\x9f"), /* 061F, 061F, 061F, 061F */
+       "\xd8\xa1"=>array("\xd8\xa1", "\xd8\xa1", "\xd8\xa1", "\xd8\xa1"), /* 0621, 0621, 0621, 0621 */
+       "\xd8\xa2"=>array("\xd8\xa2", "\xef\xba\x82", "\xd8\xa2", "\xef\xba\x82"), /* 0622, FE82, 0622, FE82 */
+       "\xd8\xa3"=>array("\xd8\xa3", "\xef\xba\x84", "\xd8\xa3", "\xef\xba\x84"), /* 0623, FE84, 0623, FE84 */
+       "\xd8\xa4"=>array("\xd8\xa4", "\xef\xba\x86", "\xd8\xa4", "\xef\xba\x86"), /* 0624, FE86, 0624, FE86 */
+       "\xd8\xa5"=>array("\xd8\xa5", "\xef\xba\x88", "\xd8\xa5", "\xef\xba\x88"), /* 0625, FE88, 0625, FE88 */
+       "\xd8\xa6"=>array("\xd8\xa6", "\xef\xba\x8a", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0626, FE8A, FE8B, FE8C */
+       "\xd8\xa7"=>array("\xd8\xa7", "\xef\xba\x8e", "\xd8\xa7", "\xef\xba\x8e"), /* 0627, FE8E, 0627, FE8E */
+       "\xd8\xa8"=>array("\xd8\xa8", "\xef\xba\x90", "\xef\xba\x91", "\xef\xba\x92"), /* 0628, FE90, FE91, FE92 */
+       "\xd8\xa9"=>array("\xd8\xa9", "\xef\xba\x94", "\xd8\xa9", "\xef\xba\x94"), /* 0629, FE94, 0629, FE94 */
+       "\xd8\xaa"=>array("\xd8\xaa", "\xef\xba\x96", "\xef\xba\x97", "\xef\xba\x98"), /* 062A, FE96, FE97, FE98 */
+       "\xd8\xab"=>array("\xd8\xab", "\xef\xba\x9a", "\xef\xba\x9b", "\xef\xba\x9c"), /* 062B, FE9A, FE9B, FE9C */
+       "\xd8\xac"=>array("\xd8\xac", "\xef\xba\x9e", "\xef\xba\x9f", "\xef\xba\xa0"), /* 062C, FE9E, FE9F, FEA0 */
+       "\xd8\xad"=>array("\xd8\xad", "\xef\xba\xa2", "\xef\xba\xa3", "\xef\xba\xa4"), /* 062D, FEA2, FEA3, FEA4 */
+       "\xd8\xae"=>array("\xd8\xae", "\xef\xba\xa6", "\xef\xba\xa7", "\xef\xba\xa8"), /* 062E, FEA6, FEA7, FEA8 */
+       "\xd8\xaf"=>array("\xd8\xaf", "\xef\xba\xaa", "\xd8\xaf", "\xef\xba\xaa"), /* 062F, FEAA, 062F, FEAA */
+       "\xd8\xb0"=>array("\xd8\xb0", "\xef\xba\xac", "\xd8\xb0", "\xef\xba\xac"), /* 0630, FEAC, 0630, FEAC */
+       "\xd8\xb1"=>array("\xd8\xb1", "\xef\xba\xae", "\xd8\xb1", "\xef\xba\xae"), /* 0631, FEAE, 0631, FEAE */
+       "\xd8\xb2"=>array("\xd8\xb2", "\xef\xba\xb0", "\xd8\xb2", "\xef\xba\xb0"), /* 0632, FEB0, 0632, FEB0 */
+       "\xd8\xb3"=>array("\xd8\xb3", "\xef\xba\xb2", "\xef\xba\xb3", "\xef\xba\xb4"), /* 0633, FEB2, FEB3, FEB4 */
+       "\xd8\xb4"=>array("\xd8\xb4", "\xef\xba\xb6", "\xef\xba\xb7", "\xef\xba\xb8"), /* 0634, FEB6, FEB7, FEB8 */
+       "\xd8\xb5"=>array("\xd8\xb5", "\xef\xba\xba", "\xef\xba\xbb", "\xef\xba\xbc"), /* 0635, FEBA, FEBB, FEBC */
+       "\xd8\xb6"=>array("\xd8\xb6", "\xef\xba\xbe", "\xef\xba\xbf", "\xef\xbb\x80"), /* 0636, FEBE, FEBF, FEC0 */
+       "\xd8\xb7"=>array("\xd8\xb7", "\xef\xbb\x82", "\xef\xbb\x83", "\xef\xbb\x84"), /* 0637, FEC2, FEC3, FEC4 */
+       "\xd8\xb8"=>array("\xd8\xb8", "\xef\xbb\x86", "\xef\xbb\x87", "\xef\xbb\x88"), /* 0638, FEC6, FEC7, FEC8 */
+       "\xd8\xb9"=>array("\xd8\xb9", "\xef\xbb\x8a", "\xef\xbb\x8b", "\xef\xbb\x8c"), /* 0639, FECA, FECB, FECC */
+       "\xd8\xba"=>array("\xd8\xba", "\xef\xbb\x8e", "\xef\xbb\x8f", "\xef\xbb\x90"), /* 063A, FECE, FECF, FED0 */
+       "\xd9\x80"=>array("\xd9\x80", "\xd9\x80", "\xd9\x80", "\xd9\x80"), /* 0640, 0640, 0640, 0640 */
+       "\xd9\x81"=>array("\xd9\x81", "\xef\xbb\x92", "\xef\xbb\x93", "\xef\xbb\x94"), /* 0641, FED2, FED3, FED4 */
+       "\xd9\x82"=>array("\xd9\x82", "\xef\xbb\x96", "\xef\xbb\x97", "\xef\xbb\x98"), /* 0642, FED6, FED7, FED8 */
+       "\xd9\x83"=>array("\xd9\x83", "\xef\xbb\x9a", "\xef\xbb\x9b", "\xef\xbb\x9c"), /* 0643, FEDA, FEDB, FEDC */
+       "\xd9\x84"=>array("\xd9\x84", "\xef\xbb\x9e", "\xef\xbb\x9f", "\xef\xbb\xa0"), /* 0644, FEDE, FEDF, FEE0 */
+       "\xd9\x85"=>array("\xd9\x85", "\xef\xbb\xa2", "\xef\xbb\xa3", "\xef\xbb\xa4"), /* 0645, FEE2, FEE3, FEE4 */
+       "\xd9\x86"=>array("\xd9\x86", "\xef\xbb\xa6", "\xef\xbb\xa7", "\xef\xbb\xa8"), /* 0646, FEE6, FEE7, FEE8 */
+       "\xd9\x87"=>array("\xd9\x87", "\xef\xbb\xaa", "\xef\xbb\xab", "\xef\xbb\xac"), /* 0647, FEEA, FEEB, FEEC */
+       "\xd9\x88"=>array("\xd9\x88", "\xef\xbb\xae", "\xd9\x88", "\xef\xbb\xae"), /* 0648, FEEE, 0648, FEEE */
+
+/* 0649 Alef Maksura should only appear at end of word (in Arabic) So Initial and medial are shown as isolated/final */
+       "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xd9\x89", "\xef\xbb\xb0"), /* 0649, FEF0, 0649, FEF0 */
+
+/* 0649 Alef Maksura Initial and Medial forms as given in Unicode FBE8 and FBE9 for Uighur Kazakh (not in some fonts) */
+       "\xd9\x89"=>array("\xd9\x89", "\xef\xbb\xb0", "\xef\xaf\xa8", "\xef\xaf\xa9"), /* 0649, FEF0, FBE8, FBE9 not in most fonts */
+
+       "\xd9\x8a"=>array("\xd9\x8a", "\xef\xbb\xb2", "\xef\xbb\xb3", "\xef\xbb\xb4"), /* 064A, FEF2, FEF3, FEF4 */
+       "\xd9\x8b"=>array("\xd9\x8b", "\xd9\x8b", "\xd9\x8b", "\xd9\x8b"), /* 064B, 064B, 064B, 064B */
+       "\xd9\x8c"=>array("\xd9\x8c", "\xd9\x8c", "\xd9\x8c", "\xd9\x8c"), /* 064C, 064C, 064C, 064C */
+       "\xd9\x8d"=>array("\xd9\x8d", "\xd9\x8d", "\xd9\x8d", "\xd9\x8d"), /* 064D, 064D, 064D, 064D */
+       "\xd9\x8e"=>array("\xd9\x8e", "\xd9\x8e", "\xd9\x8e", "\xd9\x8e"), /* 064E, 064E, 064E, 064E */
+       "\xd9\x8f"=>array("\xd9\x8f", "\xd9\x8f", "\xd9\x8f", "\xd9\x8f"), /* 064F, 064F, 064F, 064F */
+       "\xd9\x90"=>array("\xd9\x90", "\xd9\x90", "\xd9\x90", "\xd9\x90"), /* 0650, 0650, 0650, 0650 */
+       "\xd9\x91"=>array("\xd9\x91", "\xd9\x91", "\xd9\x91", "\xd9\x91"), /* 0651, 0651, 0651, 0651 */
+       "\xd9\x92"=>array("\xd9\x92", "\xd9\x92", "\xd9\x92", "\xd9\x92"), /* 0652, 0652, 0652, 0652 */
+       "\xd9\xb1"=>array("\xd9\xb1", "\xef\xad\x91", "\xd9\xb1", "\xef\xad\x91"), /* 0671, FB51, 0671, FB51 */
+       "\xd9\xb2"=>array("\xd9\xb2", "\xef\x95\xb2", "\xd9\xb2", "\xef\x95\xb2"), /* 0672, F572, 0672, F572 */
+       "\xd9\xb5"=>array("\xd9\xb5", "\xef\x95\xb5", "\xd9\xb5", "\xef\x95\xb5"), /* 0675, F575, 0675, F575 */
+       "\xd9\xb8"=>array("\xd9\xb8", "\xef\x95\xb8", "\xef\xba\x8b", "\xef\xba\x8c"), /* 0678, F578, FE8B, FE8C ( as 0626 ) */
+       "\xd9\xb9"=>array("\xd9\xb9", "\xef\xad\xa7", "\xef\xad\xa8", "\xef\xad\xa9"), /* 0679, FB67, FB68, FB69 */
+       "\xd9\xba"=>array("\xd9\xba", "\xef\xad\x9f", "\xef\xad\xa0", "\xef\xad\xa1"), /* 067A, FB5F, FB60, FB61 */
+       "\xd9\xbb"=>array("\xd9\xbb", "\xef\xad\x93", "\xef\xad\x94", "\xef\xad\x95"), /* 067B, FB53, FB54, FB55 */
+       "\xd9\xbc"=>array("\xd9\xbc", "\xef\x95\xbc", "\xef\x99\xbc", "\xef\x9d\xbc"), /* 067C, F57C, F67C, F77C */
+       "\xd9\xbd"=>array("\xd9\xbd", "\xef\x95\xbd", "\xef\x99\xbd", "\xef\x9d\xbd"), /* 067D, F57D, F67D, F77D */
+       "\xd9\xbe"=>array("\xd9\xbe", "\xef\xad\x97", "\xef\xad\x98", "\xef\xad\x99"), /* 067E, FB57, FB58, FB59 */
+       "\xd9\xbf"=>array("\xd9\xbf", "\xef\xad\xa3", "\xef\xad\xa4", "\xef\xad\xa5"), /* 067F, FB63, FB64, FB65 */
+       "\xda\x80"=>array("\xda\x80", "\xef\xad\x9b", "\xef\xad\x9c", "\xef\xad\x9d"), /* 0680, FB5B, FB5C, FB5D */
+       "\xda\x81"=>array("\xda\x81", "\xef\x96\x81", "\xef\x9a\x81", "\xef\x9e\x81"), /* 0681, F581, F681, F781 */
+       "\xda\x82"=>array("\xda\x82", "\xef\x96\x82", "\xef\x9a\x82", "\xef\x9e\x82"), /* 0682, F582, F682, F782 */
+       "\xda\x83"=>array("\xda\x83", "\xef\xad\xb7", "\xef\xad\xb8", "\xef\xad\xb9"), /* 0683, FB77, FB78, FB79 */
+       "\xda\x84"=>array("\xda\x84", "\xef\xad\xb3", "\xef\xad\xb4", "\xef\xad\xb5"), /* 0684, FB73, FB74, FB75 */
+       "\xda\x85"=>array("\xda\x85", "\xef\x96\x85", "\xef\x9a\x85", "\xef\x9e\x85"), /* 0685, F585, F685, F785 */
+       "\xda\x86"=>array("\xda\x86", "\xef\xad\xbb", "\xef\xad\xbc", "\xef\xad\xbd"), /* 0686, FB7B, FB7C, FB7D */
+       "\xda\x87"=>array("\xda\x87", "\xef\xad\xbf", "\xef\xae\x80", "\xef\xae\x81"), /* 0687, FB7F, FB80, FB81 */
+       "\xda\x88"=>array("\xda\x88", "\xef\xae\x89", "\xda\x88", "\xda\x88"), /* 0688, FB89, 0688, 0688 */
+       "\xda\x89"=>array("\xda\x89", "\xef\x96\x89", "\xda\x89", "\xda\x89"), /* 0689, F589, 0689, 0689 */
+       "\xda\x91"=>array("\xda\x91", "\xef\xae\x8d", "\xda\x91", "\xef\xae\x8d"), /* 0691, FB8D, 0691, FB8D */
+       "\xda\x93"=>array("\xda\x93", "\xef\x96\x93", "\xda\x93", "\xda\x93"), /* 0693, F593, 0693, 0693 */
+       "\xda\x96"=>array("\xda\x96", "\xef\x96\x96", "\xda\x96", "\xda\x96"), /* 0696, F596, 0696, 0696 */
+       "\xda\x98"=>array("\xda\x98", "\xef\xae\x8b", "\xda\x98", "\xef\xae\x8b"), /* 0698, FB8B, 0698, FB8B */
+       "\xda\x9a"=>array("\xda\x9a", "\xef\x96\x9a", "\xef\x9a\x9a", "\xef\x9e\x9a"), /* 069A, F59A, F69A, F79A */
+       "\xda\x9b"=>array("\xda\x9b", "\xef\x96\x9b", "\xef\x9a\x9b", "\xef\x9e\x9b"), /* 069B, F59B, F69B, F79B */
+       "\xda\x9c"=>array("\xda\x9c", "\xef\x96\x9c", "\xef\x9a\x9c", "\xef\x9e\x9c"), /* 069C, F59C, F69C, F79C */
+       "\xda\x9d"=>array("\xda\x9d", "\xef\x96\x9d", "\xef\x9a\x9d", "\xef\x9e\x9d"), /* 069D, F59D, F69D, F79D */
+       "\xda\x9e"=>array("\xda\x9e", "\xef\x96\x9e", "\xef\x9a\x9e", "\xef\x9e\x9e"), /* 069E, F59E, F69E, F79E */
+       "\xda\xa0"=>array("\xda\xa0", "\xef\x96\xa0", "\xef\x9a\xa0", "\xef\x9e\xa0"), /* 06A0, F5A0, F6A0, F7A0 */
+       "\xda\xa1"=>array("\xda\xa1", "\xef\x96\xa1", "\xef\x9a\xa1", "\xef\x9e\xa1"), /* 06A1, F5A1, F6A1, F7A1 */
+       "\xda\xa2"=>array("\xda\xa2", "\xef\x96\xa2", "\xef\x9a\xa2", "\xef\x9e\xa2"), /* 06A2, F5A2, F6A2, F7A2 */
+       "\xda\xa3"=>array("\xda\xa3", "\xef\x96\xa3", "\xef\x9a\xa3", "\xef\x9e\xa3"), /* 06A3, F5A3, F6A3, F7A3 */
+       "\xda\xa4"=>array("\xda\xa4", "\xef\xad\xab", "\xef\xad\xac", "\xef\xad\xad"), /* 06A4, FB6B, FB6C, FB6D */
+       "\xda\xa5"=>array("\xda\xa5", "\xef\x96\xa5", "\xef\x9a\xa5", "\xef\x9e\xa5"), /* 06A5, F5A5, F6A5, F7A5 */
+       "\xda\xa6"=>array("\xda\xa6", "\xef\xad\xaf", "\xef\xad\xb0", "\xef\xad\xb1"), /* 06A6, FB6F, FB70, FB71 */
+       "\xda\xa9"=>array("\xda\xa9", "\xef\xae\x8f", "\xef\xae\x90", "\xef\xae\x91"), /* 06A9, FB8F, FB90, FB91 */
+       "\xda\xaa"=>array("\xda\xaa", "\xef\x96\xaa", "\xef\x9a\xaa", "\xef\x9e\xaa"), /* 06AA, F5AA, F6AA, F7AA */
+       "\xda\xab"=>array("\xda\xab", "\xef\x96\xab", "\xef\x9a\xab", "\xef\x9e\xab"), /* 06AB, F5AB, F6AB, F7AB */
+       "\xda\xac"=>array("\xda\xac", "\xef\x96\xac", "\xef\x9a\xac", "\xef\x9e\xac"), /* 06AC, F5AC, F6AC, F7AC */
+       "\xda\xad"=>array("\xda\xad", "\xef\xaf\x94", "\xef\xaf\x95", "\xef\xaf\x96"), /* 06AD, FBD4, FBD5, FBD6 */
+       "\xda\xae"=>array("\xda\xae", "\xef\x96\xae", "\xef\x9a\xae", "\xef\x9e\xae"), /* 06AE, F5AE, F6AE, F7AE */
+       "\xda\xaf"=>array("\xda\xaf", "\xef\xae\x93", "\xef\xae\x94", "\xef\xae\x95"), /* 06Af, FB93, FB94, FB95 */
+       "\xda\xb0"=>array("\xda\xb0", "\xef\x96\xb0", "\xef\x9a\xb0", "\xef\x9e\xb0"), /* 06B0, F5B0, F6B0, F7B0 */
+       "\xda\xb1"=>array("\xda\xb1", "\xef\xae\x9b", "\xef\xae\x9c", "\xef\xae\x9d"), /* 06B1, FB9B, FB9C, FB9D */
+       "\xda\xb2"=>array("\xda\xb2", "\xef\x96\xb2", "\xef\x9a\xb2", "\xef\x9e\xb2"), /* 06B2, F5B2, F6B2, F7B2 */
+       "\xda\xb3"=>array("\xda\xb3", "\xef\xae\x97", "\xef\xae\x98", "\xef\xae\x99"), /* 06B3, FB97, FB98, FB99 */
+       "\xda\xb4"=>array("\xda\xb4", "\xef\x96\xb4", "\xef\x9a\xb4", "\xef\x9e\xb4"), /* 06B4, F5B4, F6B4, F7B4 */
+       "\xda\xb5"=>array("\xda\xb5", "\xef\x96\xb5", "\xef\x9a\xb5", "\xef\x9e\xb5"), /* 06B5, F5B5, F6B5, F7B5 */
+       "\xda\xb6"=>array("\xda\xb6", "\xef\x96\xb6", "\xef\x9a\xb6", "\xef\x9e\xb6"), /* 06B6, F5B6, F6B6, F7B6 */
+       "\xda\xb7"=>array("\xda\xb7", "\xef\x96\xb7", "\xef\x9a\xb7", "\xef\x9e\xb7"), /* 06B7, F5B7, F6B7, F7B7 */
+       "\xda\xb8"=>array("\xda\xb8", "\xef\x96\xb8", "\xef\x9a\xb8", "\xef\x9e\xb8"), /* 06B8, F5B8, F6B8, F7B8 */
+       "\xda\xb9"=>array("\xda\xb9", "\xef\x96\xb9", "\xef\x9a\xb9", "\xef\x9e\xb9"), /* 06B9, F5B9, F6B9, F7B9 */
+       "\xda\xba"=>array("\xda\xba", "\xef\xae\x9f", "\xda\xba", "\xda\xba"), /* 06BA, FB9F, 06BA, 06BA */
+       "\xda\xbb"=>array("\xda\xbb", "\xef\xae\xa1", "\xef\xae\xa2", "\xef\xae\xa3"), /* 06BB, FBA1, FBA2, FBA3 */
+       "\xda\xbc"=>array("\xda\xbc", "\xef\x96\xbc", "\xef\x9a\xbc", "\xef\x9e\xbc"), /* 06BC, F5BC, F6BC, F7BC */
+       "\xda\xbe"=>array("\xda\xbe", "\xef\xae\xab", "\xef\xae\xac", "\xef\xae\xad"), /* 06BE, FBAB, FBAC, FBAD */
+       "\xda\xbf"=>array("\xda\xbf", "\xef\x96\xbf", "\xef\x9a\xbf", "\xef\x9e\xbf"), /* 06BF, F5BF, F6BF, F7BF */
+       "\xdb\x80"=>array("\xdb\x80", "\xef\xae\xa5", "\xdb\x80", "\xef\xae\xa5"), /* 06C0, FBA5, 06C0, FBA5 */
+       "\xdb\x81"=>array("\xdb\x81", "\xef\xae\xa7", "\xef\xae\xa8", "\xef\xae\xa9"), /* 06C1, FBA7, FBA8, FBA9 */
+       "\xdb\x8c"=>array("\xdb\x8c", "\xef\xaf\xbd", "\xef\xaf\xbe", "\xef\xaf\xbf"), /* 06CC, FBFD, FBFE, FBFF */
+       "\xdb\x8d"=>array("\xdb\x8d", "\xef\x97\x8d", "\xdb\x8d", "\xef\x97\x8d"), /* 06CD, F5CD, 06CD, F5CD */
+       "\xdb\x8e"=>array("\xdb\x8e", "\xef\x97\x8e", "\xef\x9b\x8e", "\xef\x9f\x8e"), /* 06CE, F5CE, F6CE, F7CE */
+       "\xdb\x90"=>array("\xdb\x90", "\xef\xaf\xa5", "\xef\xaf\xa6", "\xef\xaf\xa7"), /* 06D0, FBE5, FBE6, FBE7 */
+       "\xdb\x91"=>array("\xdb\x91", "\xef\x97\x91", "\xef\xad\x98", "\xef\xad\x99"), /* 06D1, F5D1, FB58, FB59 Fudge borrows from 067E */
+       "\xdb\x92"=>array("\xdb\x92", "\xef\xae\xaf", "\xdb\x92", "\xef\xae\xaf"), /* 06D2, FBAF, 06D2, FBAF */
+       "\xdb\x93"=>array("\xdb\x93", "\xef\xae\xb1", "\xdb\x93", "\xef\xae\xb1"), /* 06D3, FBB1, 06D3, FBB1 */
+       );
+
+
+       // LAM with ALEF ligatures (Mandatory ligatures)
+
+       // U+0644; U+0622;   U+0644; U+0623;   U+0644; U+0625;   U+0644; U+0627;
+       $this->arabLigGlyphs = "\xd9\x84\xd8\xa2\xd9\x84\xd8\xa3\xd9\x84\xd8\xa5\xd9\x84\xd8\xa7";
+       $this->arabLigHex = 'FEF5FEF6FEF5FEF6FEF7FEF8FEF7FEF8FEF9FEFAFEF9FEFAFEFBFEFCFEFBFEFC';
+
+}
+
+// mPDF 5.4.08
+function ArabJoin($str) {
+       if (!$this->arabGlyphs) { $this->InitArabic(); }
+       $crntChar = null;
+       $prevChar = null;
+       $nextChar = null;
+       $output = array();
+       $chars = preg_split('//u', $str);
+       $max = count($chars);
+       for ($i = $max - 1; $i >= 0; $i--) {
+               $crntChar = $chars[$i];
+               if ($i > 0){ $prevChar = $chars[$i - 1]; }
+               else{ $prevChar = NULL; }
+               if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) {
+                       $prevChar = $chars[$i - 2];
+                       if ($prevChar && mb_strpos($this->arabVowels, $prevChar, 0, 'utf-8') !== false) {
+                               $prevChar = $chars[$i - 3];
+                       }
+               }
+               if ($crntChar && mb_strpos($this->arabVowels, $crntChar, 0, 'utf-8') !== false) {
+                       // If next_char = nextLink && prev_char = prevLink:
+                       // Added && $prevchar (defined) else error on mb_strpos()
+                       if ($chars[$i + 1] && (mb_strpos($this->arabNextLink, $chars[$i + 1], 0, 'utf-8') !== false)  && $prevChar && (mb_strpos($this->arabPrevLink, $prevChar, 0, 'utf-8') !== false)) {
+                               $output[] = $this->get_arab_glyphs($crntChar, 1);       // <final> form
+                       } 
+                       else {
+                               $output[] = $this->get_arab_glyphs($crntChar, 0);  // <isolated> form
+                       }
+                       continue;
+               }
+               // NB = &#x622 &#x623; &#x625; &#x627;     &#x644;
+               if (isset($chars[$i + 1]) && in_array($chars[$i + 1], array("\xd8\xa2","\xd8\xa3","\xd8\xa5","\xd8\xa7")) && $crntChar == "\xd9\x84"){
+                       continue;
+               }
+               if (ord($crntChar) < 128) {
+                       $output[] = $crntChar;
+                       $nextChar = $crntChar;
+                       continue;
+               }
+               $form = 0;
+               if ($prevChar == "\xd9\x84" && ($crntChar == "\xd8\xa2" || $crntChar == "\xd8\xa3" || $crntChar == "\xd8\xa5" || $crntChar == "\xd8\xa7")) {
+                       if ($chars[$i - 2] && mb_strpos($this->arabPrevLink, $chars[$i - 2], 0, 'utf-8') !== false) {
+                               $form++;        // <final> form
+                       }
+                       $pos = mb_strpos($this->arabLigGlyphs, ($prevChar . $crntChar), 0, 'utf-8');
+                       $pos = $pos*8 + $form*4;
+                       $pres = (mb_substr($this->arabLigHex, $pos, 4, 'utf-8'));
+                       // If presentation forms for mandatory ligatures with diacritics not present (even if remapped from e.g. uni0644uni0625)
+                       // try replacing with mandatory ligature Alef/lam isolated/final FEFB/FEFC + diacritic glyph
+                       if (!$this->_charDefined($this->CurrentFont['cw'], hexdec($pres)) && $this->_charDefined($this->CurrentFont['cw'], hexdec('FEFB'))) { 
+                               if ($pres=='FEF5') { $output[] = strcode2utf('&#xFEFB;&#x0653;'); }
+                               else if ($pres=='FEF6') { $output[] = strcode2utf('&#xFEFC;&#x0653;'); }
+                               else if ($pres=='FEF7') { $output[] = strcode2utf('&#xFEFB;&#x0654;'); }
+                               else if ($pres=='FEF8') { $output[] = strcode2utf('&#xFEFC;&#x0654;'); }
+                               else if ($pres=='FEF9') { $output[] = strcode2utf('&#xFEFB;&#x0655;'); }
+                               else if ($pres=='FEFA') { $output[] = strcode2utf('&#xFEFC;&#x0655;'); }
+                       }
+                       else {
+                               $output[] = strcode2utf('&#x' . $pres . ';');
+                       }
+                       $nextChar = $prevChar;
+                       continue;
+               }
+               if ($prevChar && mb_strpos($this->arabPrevLink, $prevChar, 0, 'utf-8') !== false) {
+                       $form++;
+               }
+               if ($nextChar && mb_strpos($this->arabNextLink, $nextChar, 0, 'utf-8') !== false) {
+                       $form += 2;
+               }
+               $output[] = $this->get_arab_glyphs($crntChar, $form) ;
+               $nextChar = $crntChar;
+       }
+       $ra = array_reverse($output);
+       $s = implode($ra);
+       return $s;
+}
+
+// mPDF 5.4.08
+function get_arab_glyphs($char, $type) {
+       if ($type>0 && isset($this->arabGlyphs[$char])) {
+               // If presentation form specified FB** - FE** = Arabic presentation Forms
+               if (preg_match("/[\x{FB50}-\x{FEFF}]/u",$this->arabGlyphs[$char][$type])) {
+                       $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false);
+                       if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; }
+                       else if (isset($this->CurrentFont['unAGlyphs'])) {
+                               $uni = $this->UTF8StringToArray($char, false);
+                               $pua = $uni[0] - 1536 + 62464 + 256*$type ;
+                               if ($this->_charDefined($this->CurrentFont['cw'], $pua)) { return strcode2utf('&#x' . dechex($pua) . ';'); }
+                               else return $char;
+                       }
+                       else return $char;
+               }
+               // If PUA form specified and unAGlphs font set F5** F6** F7** = Private use area used by unAGlyphs in mPDF
+               if (preg_match("/[\x{F500}-\x{F7FF}]/u",$this->arabGlyphs[$char][$type]) && isset($this->CurrentFont['unAGlyphs'])) {
+                       $unicode = $this->UTF8StringToArray($this->arabGlyphs[$char][$type], false);
+                       if ($this->_charDefined($this->CurrentFont['cw'],$unicode[0])) { return $this->arabGlyphs[$char][$type]; }
+                       else return $char;
+               }
+               return $this->arabGlyphs[$char][$type]; 
+       }
+       else return $char;
+}
+/*-- END RTL --*/
+
+
+
+//===========================
+// Functions originally in htmltoolkit - moved mPDF 4.0
+
+// Call-back function Used for usort in fn _tableWrite
+
+function _cmpdom($a, $b) {
+    return ($a["dom"] < $b["dom"]) ? -1 : 1;
+}
+
+function mb_strrev($str, $enc = 'utf-8'){
+       $ch = array();
+       $ch = preg_split('//u',$str);
+       $revch = array_reverse($ch);
+       return implode('',$revch);
+}
+
+/*-- COLUMNS --*/
+// Callback function from function printcolumnbuffer in mpdf
+function columnAdjustAdd($type,$k,$xadj,$yadj,$a,$b,$c=0,$d=0,$e=0,$f=0) {
+   if ($type == 'Td') {        // xpos,ypos
+       $a += ($xadj * $k);
+       $b -= ($yadj * $k);
+       return 'BT '.sprintf('%.3F %.3F',$a,$b).' Td'; 
+   }
+   else if ($type == 're') {   // xpos,ypos,width,height
+       $a += ($xadj * $k);
+       $b -= ($yadj * $k);
+       return sprintf('%.3F %.3F %.3F %.3F',$a,$b,$c,$d).' re'; 
+   }
+   else if ($type == 'l') {    // xpos,ypos,x2pos,y2pos
+       $a += ($xadj * $k);
+       $b -= ($yadj * $k);
+       return sprintf('%.3F %.3F l',$a,$b); 
+   }
+   else if ($type == 'img') {  // width,height,xpos,ypos
+       $c += ($xadj * $k);
+       $d -= ($yadj * $k);
+       return sprintf('q %.3F 0 0 %.3F %.3F %.3F',$a,$b,$c,$d).' cm /'.$e;  
+   }
+   else if ($type == 'draw') {         // xpos,ypos
+       $a += ($xadj * $k);
+       $b -= ($yadj * $k);
+       return sprintf('%.3F %.3F m',$a,$b); 
+   }
+   else if ($type == 'bezier') {       // xpos,ypos,x2pos,y2pos,x3pos,y3pos
+       $a += ($xadj * $k);
+       $b -= ($yadj * $k);
+       $c += ($xadj * $k);
+       $d -= ($yadj * $k);
+       $e += ($xadj * $k);
+       $f -= ($yadj * $k);
+       return sprintf('%.3F %.3F %.3F %.3F %.3F %.3F',$a,$b,$c,$d,$e,$f).' c'; 
+   }
+}
+/*-- END COLUMNS --*/
+
+
+
+function ConvertColor($color="#000000"){
+       $color = trim(strtolower($color));
+       $c = false;
+       if ($color=='transparent') { return false; }
+       else if ($color=='inherit') { return false; }
+       else if (isset($this->SVGcolors[$color])) $color = $this->SVGcolors[$color];
+
+       if (preg_match('/^[\d]+$/',$color)) { $c = (array(1,$color)); } // i.e. integer only
+       else if ($color[0] == '#') { //case of #nnnnnn or #nnn
+               $cor = preg_replace('/\s+.*/','',$color);       // in case of Background: #CCC url() x-repeat etc.
+               if (strlen($cor) == 4) { // Turn #RGB into #RRGGBB
+                         $cor = "#" . $cor[1] . $cor[1] . $cor[2] . $cor[2] . $cor[3] . $cor[3];
+               }  
+               $r = hexdec(substr($cor, 1, 2));
+               $g = hexdec(substr($cor, 3, 2));
+               $b = hexdec(substr($cor, 5, 2));
+               $c = array(3,$r,$g,$b);
+       }
+       else if (preg_match('/(rgba|rgb|device-cmyka|cmyka|device-cmyk|cmyk|hsla|hsl|spot)\((.*?)\)/',$color,$m)) {     // mPDF 5.6.05
+               $type= $m[1];
+               $cores = explode(",", $m[2]);
+               $ncores = count($cores);
+               if (stristr($cores[0],'%') ) { 
+                       $cores[0] += 0; 
+                       if ($type=='rgb' || $type=='rgba') { $cores[0] = intval($cores[0]*255/100); }
+               }
+               if ($ncores>1 && stristr($cores[1],'%') ) { 
+                       $cores[1] += 0; 
+                       if ($type=='rgb' || $type=='rgba') { $cores[1] = intval($cores[1]*255/100); }
+                       if ($type=='hsl' || $type=='hsla') { $cores[1] = $cores[1]/100; }
+               }
+               if ($ncores>2 && stristr($cores[2],'%') ) { 
+                       $cores[2] += 0; 
+                       if ($type=='rgb' || $type=='rgba') { $cores[2] = intval($cores[2]*255/100); }
+                       if ($type=='hsl' || $type=='hsla') { $cores[2] = $cores[2]/100; }
+               }
+               if ($ncores>3 && stristr($cores[3],'%') ) { 
+                       $cores[3] += 0; 
+               }
+
+               if ($type=='rgb') { $c = array(3,$cores[0],$cores[1],$cores[2]); }
+               else if ($type=='rgba') { $c = array(5,$cores[0],$cores[1],$cores[2],$cores[3]*100); }
+               else if ($type=='cmyk' || $type=='device-cmyk') { $c = array(4,$cores[0],$cores[1],$cores[2],$cores[3]); }      // mPDF 5.6.05
+               else if ($type=='cmyka' || $type=='device-cmyka') { $c = array(6,$cores[0],$cores[1],$cores[2],$cores[3],$cores[4]*100); }      // mPDF 5.6.05
+               else if ($type=='hsl' || $type=='hsla') { 
+                       $conv = $this->hsl2rgb($cores[0]/360,$cores[1],$cores[2]);
+                       if ($type=='hsl') { $c = array(3,$conv[0],$conv[1],$conv[2]); }
+                       else if ($type=='hsla') { $c = array(5,$conv[0],$conv[1],$conv[2],$cores[3]*100); }
+               }
+               else if ($type=='spot') { 
+                       $name = strtoupper(trim($cores[0]));
+                       // mPDF 5.6.59
+                       if(!isset($this->spotColors[$name])) {
+                               if (isset($cores[5])) { $this->AddSpotColor($cores[0],$cores[2],$cores[3],$cores[4],$cores[5]); }
+                               else { $this->Error('Undefined spot color: '.$name); }
+                       }
+                       $c = array(2,$this->spotColors[$name]['i'],$cores[1]); 
+               }
+       }
+
+
+       // $this->restrictColorSpace
+       // 1 - allow GRAYSCALE only [convert CMYK/RGB->gray]
+       // 2 - allow RGB / SPOT COLOR / Grayscale [convert CMYK->RGB]
+       // 3 - allow CMYK / SPOT COLOR / Grayscale [convert RGB->CMYK]
+       if ($this->PDFA || $this->PDFX || $this->restrictColorSpace) {
+               if ($c[0]==1) { // GRAYSCALE
+               }
+               else if ($c[0]==2) {    // SPOT COLOR
+                       if (!isset($this->spotColorIDs[$c[1]])) { die('Error: Spot colour has not been defined - '.$this->spotColorIDs[$c[1]]); }
+                       if ($this->PDFA) { 
+                               if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "Spot color specified '".$this->spotColorIDs[$c[1]]."' (converted to process color)"; }
+                               if ($this->restrictColorSpace!=3) { 
+                                       $sp = $this->spotColors[$this->spotColorIDs[$c[1]]]; 
+                                       $c = $this->cmyk2rgb(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k'])); 
+                               }
+                       }
+                       else if ($this->restrictColorSpace==1) { 
+                               $sp = $this->spotColors[$this->spotColorIDs[$c[1]]]; 
+                               $c = $this->cmyk2gray(array(4,$sp['c'],$sp['m'],$sp['y'],$sp['k'])); 
+                       }
+               }
+               else if ($c[0]==3) {    // RGB
+                       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { 
+                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color specified '".$color."' (converted to CMYK)"; }
+                               $c = $this->rgb2cmyk($c); 
+                       }
+                       else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); }
+                       else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); }
+               }
+               else if ($c[0]==4) {    // CMYK
+                       if ($this->PDFA && $this->restrictColorSpace!=3) { 
+                               if ($this->PDFA && !$this->PDFAauto) { $this->PDFAXwarnings[] = "CMYK color specified '".$color."' (converted to RGB)"; }
+                               $c = $this->cmyk2rgb($c); 
+                       }
+                       else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); }
+                       else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); }
+               }
+               else if ($c[0]==5) {    // RGBa
+                       if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { 
+                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to CMYK without transparency)"; }
+                               $c = $this->rgb2cmyk($c); 
+                               $c = array(4, $c[1], $c[2], $c[3], $c[4]);
+                       }
+                       else if ($this->PDFA && $this->restrictColorSpace!=3) { 
+                               if (!$this->PDFAauto) { $this->PDFAXwarnings[] = "RGB color with transparency specified '".$color."' (converted to RGB without transparency)"; }
+                               $c = $this->rgb2cmyk($c); 
+                               $c = array(4, $c[1], $c[2], $c[3], $c[4]);
+                       }
+                       else if ($this->restrictColorSpace==1) { $c = $this->rgb2gray($c); }
+                       else if ($this->restrictColorSpace==3) { $c = $this->rgb2cmyk($c); }
+               }
+               else if ($c[0]==6) {    // CMYKa
+                       if ($this->PDFA && $this->restrictColorSpace!=3) { 
+                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to RGB without transparency)"; }
+                               $c = $this->cmyk2rgb($c); 
+                               $c = array(3, $c[1], $c[2], $c[3]);
+                       }
+                       else if ($this->PDFX || ($this->PDFA && $this->restrictColorSpace==3)) { 
+                               if (($this->PDFA && !$this->PDFAauto) || ($this->PDFX && !$this->PDFXauto)) { $this->PDFAXwarnings[] = "CMYK color with transparency specified '".$color."' (converted to CMYK without transparency)"; }
+                               $c = $this->cmyk2rgb($c); 
+                               $c = array(3, $c[1], $c[2], $c[3]);
+                       }
+                       else if ($this->restrictColorSpace==1) { $c = $this->cmyk2gray($c); }
+                       else if ($this->restrictColorSpace==2) { $c = $this->cmyk2rgb($c); }
+               }
+       }
+       if (is_array($c)) {
+               $c = array_pad($c, 6, 0);
+               $cstr = pack("a1ccccc", $c[0], ($c[1] & 0xFF), ($c[2] & 0xFF), ($c[3] & 0xFF), ($c[4] & 0xFF), ($c[5] & 0xFF) ); 
+       }
+       return $cstr;
+}
+
+function rgb2gray($c) {
+       if (isset($c[4])) { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07)), ord(1), $c[4]); }
+       else { return array(1,(($c[1] * .21) + ($c[2] * .71) + ($c[3] * .07))); }
+}
+
+function cmyk2gray($c) {
+       $rgb = $this->cmyk2rgb($c);
+       return $this->rgb2gray($rgb);
+}
+
+function rgb2cmyk($c) {
+       $cyan = 1 - ($c[1] / 255);
+       $magenta = 1 - ($c[2] / 255);
+       $yellow = 1 - ($c[3] / 255);
+       $min = min($cyan, $magenta, $yellow);
+
+       if ($min == 1) {
+               if ($c[0]==5) { return array (6,100,100,100,100, $c[4]); }
+               else { return array (4,100,100,100,100); }
+               // For K-Black
+               //if ($c[0]==5) { return array (6,0,0,0,100, $c[4]); }
+               //else { return array (4,0,0,0,100); }
+       }
+       $K = $min;
+       $black = 1 - $K;
+       if ($c[0]==5) { return array (6,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100, $c[4]); }
+       else { return array (4,($cyan-$K)*100/$black, ($magenta-$K)*100/$black, ($yellow-$K)*100/$black, $K*100); }
+}
+
+
+function cmyk2rgb($c) {
+       $rgb = array();
+       $colors = 255 - ($c[4]*2.55);
+       $rgb[0] = intval($colors * (255 - ($c[1]*2.55))/255);
+       $rgb[1] = intval($colors * (255 - ($c[2]*2.55))/255);
+       $rgb[2] = intval($colors * (255 - ($c[3]*2.55))/255);
+       if ($c[0]==6) { return array (5,$rgb[0],$rgb[1],$rgb[2], $c[5]); }
+       else { return array (3,$rgb[0],$rgb[1],$rgb[2]); }
+}
+
+function rgb2hsl($var_r, $var_g, $var_b) {
+    $var_min = min($var_r,$var_g,$var_b);
+    $var_max = max($var_r,$var_g,$var_b);
+    $del_max = $var_max - $var_min;
+    $l = ($var_max + $var_min) / 2;
+    if ($del_max == 0) {
+            $h = 0;
+            $s = 0;
+    }
+    else {
+            if ($l < 0.5) { $s = $del_max / ($var_max + $var_min); }
+            else { $s = $del_max / (2 - $var_max - $var_min); }
+            $del_r = ((($var_max - $var_r) / 6) + ($del_max / 2)) / $del_max;
+            $del_g = ((($var_max - $var_g) / 6) + ($del_max / 2)) / $del_max;
+            $del_b = ((($var_max - $var_b) / 6) + ($del_max / 2)) / $del_max;
+            if ($var_r == $var_max) { $h = $del_b - $del_g; }
+            elseif ($var_g == $var_max)  { $h = (1 / 3) + $del_r - $del_b; }
+            elseif ($var_b == $var_max)  { $h = (2 / 3) + $del_g - $del_r; };
+            if ($h < 0) { $h += 1; }
+            if ($h > 1) { $h -= 1; }
+    }
+    return array($h,$s,$l);
+}
+
+
+function hsl2rgb($h2,$s2,$l2) {
+       // Input is HSL value of complementary colour, held in $h2, $s, $l as fractions of 1
+       // Output is RGB in normal 255 255 255 format, held in $r, $g, $b
+       // Hue is converted using function hue_2_rgb, shown at the end of this code
+       if ($s2 == 0) {
+               $r = $l2 * 255;
+               $g = $l2 * 255;
+               $b = $l2 * 255;
+       }
+       else {
+               if ($l2 < 0.5) { $var_2 = $l2 * (1 + $s2); }
+               else { $var_2 = ($l2 + $s2) - ($s2 * $l2); }
+               $var_1 = 2 * $l2 - $var_2;
+               $r = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 + (1 / 3)));
+               $g = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2));
+               $b = round(255 * $this->hue_2_rgb($var_1,$var_2,$h2 - (1 / 3)));
+       }
+       return array($r,$g,$b);
+}
+
+function hue_2_rgb($v1,$v2,$vh) {
+       // Function to convert hue to RGB, called from above
+       if ($vh < 0) { $vh += 1; };
+       if ($vh > 1) { $vh -= 1; };
+       if ((6 * $vh) < 1) { return ($v1 + ($v2 - $v1) * 6 * $vh); };
+       if ((2 * $vh) < 1) { return ($v2); };
+       if ((3 * $vh) < 2) { return ($v1 + ($v2 - $v1) * ((2 / 3 - $vh) * 6)); };
+       return ($v1);
+}
+
+function _invertColor($cor) {
+       if ($cor[0]==3 || $cor[0]==5) { // RGB
+               return array(3, (255-$cor[1]), (255-$cor[2]), (255-$cor[3]));
+       }
+       else if ($cor[0]==4 || $cor[0]==6) {    // CMYK
+               return array(4, (100-$cor[1]), (100-$cor[2]), (100-$cor[3]), (100-$cor[4]));
+       }
+       else if ($cor[0]==1) {  // Grayscale
+               return array(1, (255-$cor[1]));
+       }       
+       // Cannot cope with non-RGB colors at present
+       die('Error in _invertColor - trying to invert non-RGB color');
+}
+
+function _colAtoString($cor) {
+       $s = '';
+       if ($cor{0}==1) $s = 'rgb('.ord($cor{1}).','.ord($cor{1}).','.ord($cor{1}).')';
+       else if ($cor{0}==2) $s = 'spot('.ord($cor{1}).','.ord($cor{2}).')';            // SPOT COLOR
+       else if ($cor{0}==3) $s = 'rgb('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).')';
+       else if ($cor{0}==4) $s = 'cmyk('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.ord($cor{4}).')';
+       else if ($cor{0}==5) $s = 'rgba('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.sprintf('%0.2F',ord($cor{4})/100).')';
+       else if ($cor{0}==6) $s = 'cmyka('.ord($cor{1}).','.ord($cor{2}).','.ord($cor{3}).','.ord($cor{4}).','.sprintf('%0.2F',ord($cor{5})/100).')';
+       return $s;
+}
+
+function ConvertSize($size=5,$maxsize=0,$fontsize=false,$usefontsize=true){
+// usefontsize - setfalse for e.g. margins - will ignore fontsize for % values
+// Depends of maxsize value to make % work properly. Usually maxsize == pagewidth
+// For text $maxsize = Fontsize
+// Setting e.g. margin % will use maxsize (pagewidth) and em will use fontsize
+  //Identify size (remember: we are using 'mm' units here)
+       $size = trim(strtolower($size));
+
+  if ( $size == 'thin' ) $size = 1*(25.4/$this->dpi); //1 pixel width for table borders
+  elseif ( stristr($size,'px') ) $size *= (25.4/$this->dpi); //pixels
+  elseif ( stristr($size,'cm') ) $size *= 10; //centimeters
+  elseif ( stristr($size,'mm') ) $size += 0; //millimeters
+  elseif ( stristr($size,'pt') ) $size *= 25.4/72; //72 pts/inch
+  elseif ( stristr($size,'rem') ) {    // mPDF 5.6.12
+       $size += 0; //make "0.83rem" become simply "0.83" 
+       $size *= ($this->default_font_size / _MPDFK);
+  }
+  elseif ( stristr($size,'em') ) {
+       $size += 0; //make "0.83em" become simply "0.83" 
+       if ($fontsize) { $size *= $fontsize; }
+       else { $size *= $maxsize; }
+  }
+  elseif ( stristr($size,'%') ) {
+       $size += 0; //make "90%" become simply "90" 
+       if ($fontsize && $usefontsize) { $size *= $fontsize/100; }
+       else { $size *= $maxsize/100; }
+  }
+  elseif ( stristr($size,'in') ) $size *= 25.4; //inches 
+  elseif ( stristr($size,'pc') ) $size *= 38.1/9; //PostScript picas 
+  elseif ( stristr($size,'ex') ) {     // Approximates "ex" as half of font height
+       $size += 0; //make "3.5ex" become simply "3.5" 
+       if ($fontsize) { $size *= $fontsize/2; }
+       else { $size *= $maxsize/2; }
+  }
+  elseif ( $size == 'medium' ) $size = 3*(25.4/$this->dpi); //3 pixel width for table borders
+  elseif ( $size == 'thick' ) $size = 5*(25.4/$this->dpi); //5 pixel width for table borders
+  elseif ($size == 'xx-small') {
+       if ($fontsize) { $size *= $fontsize*0.7; }
+       else { $size *= $maxsize*0.7; }
+  }
+  elseif ($size == 'x-small') {
+       if ($fontsize) { $size *= $fontsize*0.77; }
+       else { $size *= $maxsize*0.77; }
+  }
+  elseif ($size == 'small') {
+       if ($fontsize) { $size *= $fontsize*0.86; }
+       else { $size *= $maxsize*0.86; }
+  }
+  elseif ($size == 'medium') {
+       if ($fontsize) { $size *= $fontsize; }
+       else { $size *= $maxsize; }
+  }
+  elseif ($size == 'large') {
+       if ($fontsize) { $size *= $fontsize*1.2; }
+       else { $size *= $maxsize*1.2; }
+  }
+  elseif ($size == 'x-large') {
+       if ($fontsize) { $size *= $fontsize*1.5; }
+       else { $size *= $maxsize*1.5; }
+  }
+  elseif ($size == 'xx-large') {
+       if ($fontsize) { $size *= $fontsize*2; }
+       else { $size *= $maxsize*2; }
+  }
+  else $size *= (25.4/$this->dpi); //nothing == px
+  
+  return $size;
+}
+
+
+function lesser_entity_decode($html) {
+  //supports the most used entity codes (only does ascii safe characters)
+       //$html = str_replace("&nbsp;"," ",$html);      // mPDF 5.3.59
+       $html = str_replace("&lt;","<",$html);
+       $html = str_replace("&gt;",">",$html);
+
+       $html = str_replace("&apos;","'",$html);
+       $html = str_replace("&quot;",'"',$html);
+       $html = str_replace("&amp;","&",$html);
+       return $html;
+}
+
+function AdjustHTML($html, $tabSpaces=8) {
+       //Try to make the html text more manageable (turning it into XHTML)
+       if (PHP_VERSION_ID < 50307) {
+               if (strlen($html) > 100000) {
+                       if (PHP_VERSION_ID < 50200) $this->Error("The HTML code is more than 100,000 characters. You should use WriteHTML() with smaller string lengths.");
+                       else ini_set("pcre.backtrack_limit","1000000");
+               }
+       }
+
+/*-- ANNOTATIONS --*/
+       preg_match_all("/(<annotation.*?>)/si", $html, $m);
+       if (count($m[1])) { 
+               for($i=0;$i<count($m[1]);$i++) {
+                       $sub = preg_replace("/\n/si", "\xbb\xa4\xac", $m[1][$i]);
+                       $html = preg_replace('/'.preg_quote($m[1][$i], '/').'/si', $sub, $html); 
+               }
+       }
+/*-- END ANNOTATIONS --*/
+
+       preg_match_all("/(<svg.*?<\/svg>)/si", $html, $svgi);
+       if (count($svgi[0])) { 
+               for($i=0;$i<count($svgi[0]);$i++) {
+                       $file = _MPDF_TEMP_PATH.'_tempSVG'.RAND(1,10000).'_'.$i.'.svg';
+                       //Save to local file
+                       file_put_contents($file, $svgi[0][$i]);
+                       $html = str_replace($svgi[0][$i], '<img src="'.$file.'" />', $html);    // mPDF 5.5.18
+               }
+       }
+
+       //Remove javascript code from HTML (should not appear in the PDF file)
+       $html = preg_replace('/<script.*?<\/script>/is','',$html);
+
+       //Remove special comments
+       $html = preg_replace('/<!--mpdf/i','',$html);
+       $html = preg_replace('/mpdf-->/i','',$html);
+
+       //Remove comments from HTML (should not appear in the PDF file)
+       $html = preg_replace('/<!--.*?-->/s','',$html);
+
+       $html = preg_replace('/\f/','',$html); //replace formfeed by nothing
+       $html = preg_replace('/\r/','',$html); //replace carriage return by nothing
+
+       // Well formed XHTML end tags
+       $html = preg_replace('/<(br|hr)\/>/i',"<\\1 />",$html);
+       // Get rid of empty <thead></thead>
+       $html = preg_replace('/<thead>\s*<\/thead>/i','',$html);
+       $html = preg_replace('/<tfoot>\s*<\/tfoot>/i','',$html);
+       $html = preg_replace('/<table[^>]*>\s*<\/table>/i','',$html);
+       $html = preg_replace('/<tr>\s*<\/tr>/i','',$html);
+
+       // Remove spaces at end of table cells
+       $html = preg_replace("/[ \n\r]+<\/t(d|h)/",'</t\\1',$html);             // mPDF 5.5.09
+
+       $html = preg_replace("/[ ]*<dottab\s*[\/]*>[ ]*/",'<dottab />',$html);
+
+       // Concatenates any Substitute characters from symbols/dingbats
+       $html = str_replace('</tts><tts>','|',$html);
+       $html = str_replace('</ttz><ttz>','|',$html);
+       $html = str_replace('</tta><tta>','|',$html);
+
+       $html = preg_replace('/<br \/>\s*/is',"<br />",$html);
+
+       $html = preg_replace('/<wbr[ \/]*>\s*/is',"&#173;",$html);      // mPDF 5.6.04
+
+       // Preserve '\n's in content between the tags <pre> and </pre>
+       if (preg_match('/<pre/',$html)) {
+               $html_a = preg_split('/(\<\/?pre[^\>]*\>)/', $html, -1, 2);
+               $h = array();
+               $c=0;
+               foreach($html_a AS $s) {
+                       if ($c>1 && preg_match('/^<\/pre/i',$s)) { $c--; $s=preg_replace('/<\/pre/i','</innerpre',$s); }
+                       else if ($c>0 && preg_match('/^<pre/i',$s)) { $c++; $s=preg_replace('/<pre/i','<innerpre',$s); }
+                       else if (preg_match('/^<pre/i',$s)) { $c++; }
+                       else if (preg_match('/^<\/pre/i',$s)) { $c--; }
+                       array_push($h, $s);
+               }
+               $html = implode("", $h);
+       }
+       $thereispre = preg_match_all('#<pre(.*?)>(.*?)</pre>#si',$html,$temp);
+       // Preserve '\n's in content between the tags <textarea> and </textarea>
+       $thereistextarea = preg_match_all('#<textarea(.*?)>(.*?)</textarea>#si',$html,$temp2);
+       $html = preg_replace('/[\n]/',' ',$html); //replace linefeed by spaces
+       $html = preg_replace('/[\t]/',' ',$html); //replace tabs by spaces
+
+       // Converts < to &lt; when not a tag
+       $html = preg_replace('/<([^!\/a-zA-Z])/i','&lt;\\1',$html);
+       $html = preg_replace("/[ ]+/",' ',$html);
+
+       $html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li></\\1l',$html);
+       $html = preg_replace('/\/(u|o)l>\s+<\/li/i','/\\1l></li',$html);
+       $html = preg_replace('/\/li>\s+<\/(u|o)l/i','/li></\\1l',$html);
+       $html = preg_replace('/\/li>\s+<li/i','/li><li',$html);
+       $html = preg_replace('/<(u|o)l([^>]*)>[ ]+/i','<\\1l\\2>',$html);
+       $html = preg_replace('/[ ]+<(u|o)l/i','<\\1l',$html);
+
+       $iterator = 0;
+       while($thereispre) //Recover <pre attributes>content</pre>
+       {
+               $temp[2][$iterator] = preg_replace("/^([^\n\t]*?)\t/me", "stripslashes('\\1') . str_repeat(' ',  ( $tabSpaces - (mb_strlen(stripslashes('\\1')) % $tabSpaces))  )",$temp[2][$iterator]);
+               $temp[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp[2][$iterator]);
+
+               $temp[2][$iterator] = preg_replace('/\n/',"<br />",$temp[2][$iterator]);
+               $temp[2][$iterator] = str_replace('\\',"\\\\",$temp[2][$iterator]);
+               $html = preg_replace('#<pre(.*?)>(.*?)</pre>#si','<erp'.$temp[1][$iterator].'>'.$temp[2][$iterator].'</erp>',$html,1);
+               $thereispre--;
+               $iterator++;
+       }
+       $iterator = 0;
+       while($thereistextarea) //Recover <textarea attributes>content</textarea>
+       {
+               $temp2[2][$iterator] = preg_replace('/\t/',str_repeat(" ",$tabSpaces),$temp2[2][$iterator]);
+               $temp2[2][$iterator] = str_replace('\\',"\\\\",$temp2[2][$iterator]);   // mPDF 5.3.88
+               $html = preg_replace('#<textarea(.*?)>(.*?)</textarea>#si','<aeratxet'.$temp2[1][$iterator].'>'.trim($temp2[2][$iterator]) .'</aeratxet>',$html,1);
+               $thereistextarea--;
+               $iterator++;
+       }
+       //Restore original tag names
+       $html = str_replace("<erp","<pre",$html);
+       $html = str_replace("</erp>","</pre>",$html);
+       $html = str_replace("<aeratxet","<textarea",$html);
+       $html = str_replace("</aeratxet>","</textarea>",$html);
+       $html = str_replace("</innerpre","</pre",$html); 
+       $html = str_replace("<innerpre","<pre",$html); 
+
+       $html = preg_replace('/<textarea([^>]*)><\/textarea>/si','<textarea\\1> </textarea>',$html);
+       $html = preg_replace('/(<table[^>]*>)\s*(<caption)(.*?<\/caption>)(.*?<\/table>)/si','\\2 position="top"\\3\\1\\4\\2 position="bottom"\\3',$html);      // *TABLES*
+       $html = preg_replace('/<(h[1-6])([^>]*)(>(?:(?!h[1-6]).)*?<\/\\1>\s*<table)/si','<\\1\\2 keep-with-table="1"\\3',$html);        // *TABLES*
+       $html = preg_replace("/\xbb\xa4\xac/", "\n", $html);
+
+       return $html;
+}
+
+/*-- LISTS --*/
+function dec2other($num, $cp) {
+       $nstr = (string) $num;
+       $rnum = '';
+       for ($i=0;$i<strlen($nstr);$i++) { 
+               if ($this->_charDefined($this->CurrentFont['cw'],$cp+intval($nstr[$i]))) { // contains arabic-indic numbers
+                       $rnum .= code2utf($cp+intval($nstr[$i]));
+               }
+               else { $rnum .= $nstr[$i]; }
+       }
+       return $rnum;
+}
+
+function dec2alpha($valor,$toupper="true"){
+// returns a string from A-Z to AA-ZZ to AAA-ZZZ
+// OBS: A = 65 ASCII TABLE VALUE
+  if (($valor < 1)  || ($valor > 18278)) return "?"; //supports 'only' up to 18278
+  $c1 = $c2 = $c3 = '';
+  if ($valor > 702) // 3 letters (up to 18278)
+    {
+      $c1 = 65 + floor(($valor-703)/676);
+      $c2 = 65 + floor((($valor-703)%676)/26);
+      $c3 = 65 + floor((($valor-703)%676)%26);
+    }
+  elseif ($valor > 26) // 2 letters (up to 702)
+  {
+      $c1 = (64 + (int)(($valor-1) / 26));
+      $c2 = (64 + (int)($valor % 26));
+      if ($c2 == 64) $c2 += 26;
+  }
+  else // 1 letter (up to 26)
+  {
+      $c1 = (64 + $valor);
+  }
+  $alpha = chr($c1);
+  if ($c2 != '') $alpha .= chr($c2);
+  if ($c3 != '') $alpha .= chr($c3);
+  if (!$toupper) $alpha = strtolower($alpha);
+  return $alpha;
+}
+
+
+function dec2roman($valor,$toupper=true){
+ //returns a string as a roman numeral
+  $r1=$r2=$r3=$r4='';
+  if (($valor >= 5000) || ($valor < 1)) return "?"; //supports 'only' up to 4999
+  $aux = (int)($valor/1000);
+  if ($aux!==0)
+  {
+    $valor %= 1000;
+    while($aux!==0)
+    {
+       $r1 .= "M";
+       $aux--;
+    }
+  }
+  $aux = (int)($valor/100);
+  if ($aux!==0)
+  {
+    $valor %= 100;
+    switch($aux){
+       case 3: $r2="C";
+       case 2: $r2.="C";
+       case 1: $r2.="C"; break;
+         case 9: $r2="CM"; break;
+         case 8: $r2="C";
+         case 7: $r2.="C";
+       case 6: $r2.="C";
+      case 5: $r2="D".$r2; break;
+      case 4: $r2="CD"; break;
+      default: break;
+         }
+  }
+  $aux = (int)($valor/10);
+  if ($aux!==0)
+  {
+    $valor %= 10;
+    switch($aux){
+       case 3: $r3="X";
+       case 2: $r3.="X";
+       case 1: $r3.="X"; break;
+       case 9: $r3="XC"; break;
+       case 8: $r3="X";
+       case 7: $r3.="X";
+         case 6: $r3.="X";
+      case 5: $r3="L".$r3; break;
+      case 4: $r3="XL"; break;
+      default: break;
+    }
+  }
+  switch($valor){
+       case 3: $r4="I";
+       case 2: $r4.="I";
+       case 1: $r4.="I"; break;
+       case 9: $r4="IX"; break;
+       case 8: $r4="I";
+    case 7: $r4.="I";
+    case 6: $r4.="I";
+    case 5: $r4="V".$r4; break;
+    case 4: $r4="IV"; break;
+    default: break;
+  }
+  $roman = $r1.$r2.$r3.$r4;
+  if (!$toupper) $roman = strtolower($roman);
+  return $roman;
+}
+/*-- END LISTS --*/
+
+
+//===========================
+/*-- IMPORTS --*/
+function SetImportUse() {
+       $this->enableImports = true;
+       ini_set('auto_detect_line_endings',1);
+       require_once(_MPDF_PATH."mpdfi/pdf_context.php");
+       require_once(_MPDF_PATH."mpdfi/pdf_parser.php");
+       require_once(_MPDF_PATH."mpdfi/fpdi_pdf_parser.php");
+}
+
+// from mPDFI
+function hex2str($hex) {
+       return pack("H*", str_replace(array("\r","\n"," "),"", $hex));
+}
+    
+function str2hex($str) {
+       return current(unpack("H*",$str));
+}
+
+    
+function pdf_write_value(&$value) {
+       switch ($value[0]) {
+               case PDF_TYPE_NUMERIC :
+               case PDF_TYPE_TOKEN :
+                       // A numeric value or a token.
+                       // Simply output them
+                       $this->_out($value[1]." ", false);
+                       break;
+
+               case PDF_TYPE_ARRAY :
+                       // An array. Output the proper
+                       // structure and move on.
+                       $this->_out("[",false);
+                       for ($i = 0; $i < count($value[1]); $i++) {
+                               $this->pdf_write_value($value[1][$i]);
+                       }
+                       $this->_out("]");
+                       break;
+
+               case PDF_TYPE_DICTIONARY :
+                       // A dictionary.
+                       $this->_out("<<",false);
+                       reset ($value[1]);
+                       while (list($k, $v) = each($value[1])) {
+                               $this->_out($k . " ",false);
+                               $this->pdf_write_value($v);
+                       }
+                       $this->_out(">>");
+                       break;
+
+               case PDF_TYPE_OBJREF :
+                       // An indirect object reference
+                       // Fill the object stack if needed
+                       $cpfn =& $this->current_parser->filename;
+                       if (!isset($this->_don_obj_stack[$cpfn][$value[1]])) {
+                                       $this->_newobj(false,true);
+                                       $this->_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
+                                       $this->_don_obj_stack[$cpfn][$value[1]] = array($this->n, $value);
+                       }
+                       $objid = $this->_don_obj_stack[$cpfn][$value[1]][0];
+                       $this->_out("{$objid} 0 R"); //{$value[2]}
+                       break;
+
+               case PDF_TYPE_STRING :
+                       if ($this->encrypted) {
+                               $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
+                               $value[1] = $this->_escape($value[1]);
+                       } 
+                       // A string.
+                       $this->_out('('.$value[1].')');
+                       break;
+
+               case PDF_TYPE_STREAM :
+                       // A stream. First, output the
+                       // stream dictionary, then the
+                       // stream data itself.
+                       $this->pdf_write_value($value[1]);
+                       if ($this->encrypted) {
+                               $value[2][1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[2][1]);
+                       }
+                       $this->_out("stream");
+                       $this->_out($value[2][1]);
+                       $this->_out("endstream");
+                       break;
+
+               case PDF_TYPE_HEX :
+                       if ($this->encrypted) {
+                               $value[1] = $this->hex2str($value[1]);
+                               $value[1] = $this->_RC4($this->_objectkey($this->_current_obj_id), $value[1]);
+                               // remake hexstring of encrypted string
+                               $value[1] = $this->str2hex($value[1]);
+                       }
+                       $this->_out("<".$value[1].">");
+                       break;
+
+               case PDF_TYPE_NULL :
+                       // The null object.
+                       $this->_out("null");
+                       break;
+       }
+}
+
+// ========== OVERWRITE SEARCH STRING IN A PDF FILE ================
+function OverWrite($file_in, $search, $replacement, $dest="D", $file_out="mpdf" ) {
+       $pdf = file_get_contents($file_in);
+
+       if (!is_array($search)) {
+               $x = $search;
+               $search = array($x);
+       }
+       if (!is_array($replacement)) {
+               $x = $replacement;
+               $search = array($x);
+       }
+
+       if (!$this->onlyCoreFonts && !$this->usingCoreFont) {   
+         foreach($search AS $k=>$val) {
+               $search[$k] = $this->UTF8ToUTF16BE($search[$k] , false);
+               $search[$k] = $this->_escape($search[$k]); 
+               $replacement[$k] = $this->UTF8ToUTF16BE($replacement[$k], false);
+               $replacement[$k] = $this->_escape($replacement[$k]); 
+         }
+       }
+       else {
+         foreach($replacement AS $k=>$val) {
+               $replacement[$k] = mb_convert_encoding($replacement[$k],$this->mb_enc,'utf-8'); 
+               $replacement[$k] = $this->_escape($replacement[$k]); 
+         }
+       }
+
+       // Get xref into array
+       $xref = array();
+       preg_match("/xref\n0 (\d+)\n(.*?)\ntrailer/s",$pdf,$m);
+       $xref_objid = $m[1];
+       preg_match_all('/(\d{10}) (\d{5}) (f|n)/',$m[2],$x);
+       for($i=0; $i<count($x[0]); $i++) {
+               $xref[] = array(intval($x[1][$i]), $x[2][$i], $x[3][$i]);
+       }
+
+       $changes = array();
+       preg_match("/<<\s*\/Type\s*\/Pages\s*\/Kids\s*\[(.*?)\]\s*\/Count/s",$pdf,$m);
+       preg_match_all("/(\d+) 0 R /s",$m[1],$o);
+       $objlist = $o[1];
+       foreach($objlist AS $obj) {
+         if ($this->compress) {
+               preg_match("/".($obj+1)." 0 obj\n<<\s*\/Filter\s*\/FlateDecode\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
+         }
+         else {
+               preg_match("/".($obj+1)." 0 obj\n<<\s*\/Length (\d+)>>\nstream\n(.*?)\nendstream\n/s",$pdf,$m);
+         }
+         $s = $m[2];
+         if (!$s) { continue; }
+         $oldlen = $m[1];
+         if ($this->encrypted) {
+               $s = $this->_RC4($this->_objectkey($obj+1), $s);
+         }
+         if ($this->compress) {
+               $s = gzuncompress($s);
+         }
+         foreach($search AS $k=>$val) {
+               $s = str_replace($search[$k],$replacement[$k],$s);
+         }
+         if ($this->compress) {
+               $s = gzcompress($s);
+         }
+         if ($this->encrypted) {
+               $s = $this->_RC4($this->_objectkey($obj+1), $s);
+         }
+         $newlen = strlen($s);
+         $changes[($xref[$obj+1][0])] = ($newlen - $oldlen) + (strlen($newlen) - strlen($oldlen ));
+         if ($this->compress) {
+               $newstr = ($obj+1) . " 0 obj\n<</Filter /FlateDecode /Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
+         }
+         else {
+               $newstr = ($obj+1) . " 0 obj\n<</Length ".$newlen.">>\nstream\n".$s."\nendstream\n";
+         }
+         $pdf = str_replace($m[0],$newstr,$pdf);
+       }
+
+       // Update xref in PDF
+       krsort($changes);
+       $newxref = "xref\n0 ".$xref_objid."\n";
+       foreach($xref AS $v) { 
+               foreach($changes AS $ck => $cv) {
+                       if ($v[0] > $ck) { $v[0] += $cv; }
+               }
+               $newxref .= sprintf('%010d',$v[0]) . ' ' . $v[1] . ' ' .$v[2] . " \n";
+       }
+       $newxref .= "trailer";
+       $pdf = preg_replace("/xref\n0 \d+\n.*?\ntrailer/s",$newxref,$pdf);
+
+       // Update startxref in PDF
+       preg_match("/startxref\n(\d+)\n%%EOF/s", $pdf, $m);
+       $startxref = $m[1];
+       $startxref += array_sum($changes);
+       $pdf = preg_replace("/startxref\n(\d+)\n%%EOF/s","startxref\n".$startxref."\n%%EOF",$pdf);
+
+       // OUTPUT
+       switch($dest) {
+               case 'I':
+                       //Send to standard output
+                       if(isset($_SERVER['SERVER_NAME']))
+                       {
+                               //We send to a browser
+                               Header('Content-Type: application/pdf');
+                               Header('Content-Length: '.strlen($pdf));
+                               Header('Content-disposition: inline; filename='.$file_out);
+                       }
+                       echo $pdf;
+                       break;
+               case 'F':
+                       //Save to local file
+                       if (!$file_out) { $file_out = 'mpdf.pdf'; }
+                       $f=fopen($file_out,'wb');
+                       if(!$f) die('Unable to create output file: '.$file_out);
+                       fwrite($f,$pdf,strlen($pdf));
+                       fclose($f);
+                       break;
+               case 'S':
+                       //Return as a string
+                       return $pdf;
+               case 'D':
+               default:
+                       //Download file
+                       if(isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],'MSIE'))
+                               Header('Content-Type: application/force-download');
+                       else
+                               Header('Content-Type: application/octet-stream');
+                       Header('Content-Length: '.strlen($pdf));
+                       Header('Content-disposition: attachment; filename='.$file_out);
+                       echo $pdf;
+                       break;
+       }
+}
+
+
+function GetTemplateSize($tplidx, $_w=0, $_h=0) {
+       if (!$this->tpls[$tplidx])
+               return false;
+       $w = $this->tpls[$tplidx]['box']['w'];
+       $h = $this->tpls[$tplidx]['box']['h'];
+       if ($_w == 0 and $_h == 0) {
+               $_w = $w;
+               $_h = $h;
+       }
+       if($_w==0)
+               $_w=$_h*$w/$h;
+       if($_h==0)
+               $_h=$_w*$h/$w;
+       return array("w" => $_w, "h" => $_h);
+}
+
+// Thumbnails
+function Thumbnail($file, $npr=3, $spacing=10) {       //$npr = number per row
+       $w = (($this->pgwidth + $spacing)/$npr) - $spacing;
+       $oldlinewidth = $this->LineWidth;
+       $this->SetLineWidth(0.02); 
+       $this->SetDColor($this->ConvertColor(0));       
+       $h = 0;
+       $maxh = 0;
+       $x = $_x = $this->lMargin;
+       $_y = $this->tMargin;
+       if ($this->y==0) { $y = $_y; } else { $y = $this->y; }
+       $pagecount = $this->SetSourceFile($file);
+       for ($n = 1; $n <= $pagecount; $n++) {
+               $tplidx = $this->ImportPage($n);
+               $size = $this->useTemplate($tplidx, $x, $y, $w);
+               $this->Rect($x, $y, $size['w'], $size['h']);
+               $h = max($h, $size['h']);
+               $maxh = max($h, $maxh);
+               if ($n % $npr == 0) {
+                  if (($y + $h + $spacing + $maxh)>$this->PageBreakTrigger && $n != $pagecount) {
+                       $this->AddPage();  
+                       $x = $_x;
+                       $y = $_y;        
+                  }
+                  else {
+                       $y += $h+$spacing ;
+                       $x = $_x;
+                       $h = 0;
+                  }
+               }
+               else {
+                       $x += $w+$spacing ;
+               }
+       }
+       $this->SetLineWidth($oldlinewidth);
+}
+
+function SetSourceFile($filename) {
+       $this->current_filename = $filename;
+       $fn =& $this->current_filename;
+       if (!isset($this->parsers[$fn]))
+               // $this->parsers[$fn] =& new fpdi_pdf_parser($fn,$this);
+               $this->parsers[$fn] = new fpdi_pdf_parser($fn,$this);
+       if (!$this->parsers[$fn]->success) {
+               $this->Error($this->parsers[$fn]->errormsg);    // Delete this line to return false on fail
+               return false;
+       }
+       $this->current_parser =& $this->parsers[$fn];
+       return $this->parsers[$fn]->getPageCount();
+}
+function ImportPage($pageno=1, $crop_x=null, $crop_y=null, $crop_w=0, $crop_h=0, $boxName='/CropBox') {
+       $fn =& $this->current_filename;
+       $parser =& $this->parsers[$fn];
+       $parser->setPageno($pageno);
+
+       $this->tpl++;
+       $this->tpls[$this->tpl] = array();
+       $tpl =& $this->tpls[$this->tpl];
+       $tpl['parser'] =& $parser;
+       $tpl['resources'] = $parser->getPageResources();
+       $tpl['buffer'] = $parser->getContent();
+       if (!in_array($boxName, $parser->availableBoxes))
+               return $this->Error(sprintf("Unknown box: %s", $boxName));
+       $pageboxes = $parser->getPageBoxes($pageno);
+       /**
+        * MediaBox
+        * CropBox: Default -> MediaBox
+        * BleedBox: Default -> CropBox
+        * TrimBox: Default -> CropBox
+        * ArtBox: Default -> CropBox
+        */
+       if (!isset($pageboxes[$boxName]) && ($boxName == "/BleedBox" || $boxName == "/TrimBox" || $boxName == "/ArtBox"))
+               $boxName = "/CropBox";
+       if (!isset($pageboxes[$boxName]) && $boxName == "/CropBox")
+               $boxName = "/MediaBox";
+       if (!isset($pageboxes[$boxName]))
+               return false;
+       $box = $pageboxes[$boxName];
+
+       $tpl['box'] = $box;
+       // To build an array that can be used by useTemplate()
+       $this->tpls[$this->tpl] = array_merge($this->tpls[$this->tpl],$box);
+       // An imported page will start at 0,0 everytime. Translation will be set in _putformxobjects()
+       $tpl['x'] = 0;
+       $tpl['y'] = 0;
+       $tpl['w'] = $tpl['box']['w'] ;
+       $tpl['h'] = $tpl['box']['h'] ;
+       if ($crop_w) { $tpl['box']['w'] = $crop_w; }
+       if ($crop_h) { $tpl['box']['h'] = $crop_h; }
+       if (isset($crop_x)) { $tpl['box']['x'] = $crop_x; }
+       if (isset($crop_y)) {$tpl['box']['y'] = $tpl['h'] - $crop_y  - $crop_h ; }
+
+       $page =& $parser->pages[$parser->pageno];
+       // fix for rotated pages
+       $rotation = $parser->getPageRotation($pageno);
+
+       if (isset($rotation[1]) && ($angle = $rotation[1] % 360) != 0 && $tpl['box']['w'] == $tpl['w']) {
+               $steps = $angle / 90;
+
+               $_w = $tpl['w'];
+               $_h = $tpl['h'];
+               $tpl['w'] = $steps % 2 == 0 ? $_w : $_h;
+               $tpl['h'] = $steps % 2 == 0 ? $_h : $_w;
+               if ($steps % 2 != 0) {
+                       $x = $y = ($steps == 1 || $steps == -3) ? $tpl['h'] : $tpl['w'];
+               } else {
+                       $x = $tpl['w'];
+                       $y = $tpl['h'];
+               }
+               $cx=($x/2+$tpl['box']['x'])*_MPDFK;
+               $cy=($y/2+$tpl['box']['y'])*_MPDFK;
+               $angle*=-1; 
+               $angle*=M_PI/180;
+               $c=cos($angle);
+               $s=sin($angle);
+               $tpl['box']['w'] = $tpl['w'] ;
+               $tpl['box']['h'] = $tpl['h'] ;
+               $tpl['buffer'] = sprintf('q %.5F %.5F %.5F %.5F %.2F %.2F cm 1 0 0 1 %.2F %.2F cm %s Q',$c,$s,-$s,$c,$cx,$cy,-$cx,-$cy, $tpl['buffer']);
+       }
+       return $this->tpl;
+}
+function UseTemplate($tplidx, $_x=null, $_y=null, $_w=0, $_h=0) {
+       if (!isset($this->tpls[$tplidx]))
+               $this->Error("Template does not exist!");
+       if($this->state==0) { $this->AddPage(); }
+       $out = 'q 0 J 1 w 0 j 0 G'."\n"; // reset standard values
+       $x = $this->tpls[$tplidx]['x'];
+       $y = $this->tpls[$tplidx]['y'];
+       $w = $this->tpls[$tplidx]['w'];
+       $h = $this->tpls[$tplidx]['h'];
+       if ($_x == null) { $_x = $x; }
+       if ($_y == null) { $_y = $y; }
+       if ($_x === -1) { $_x = $this->x; }
+       if ($_y === -1) { $_y = $this->y; }
+
+       $wh = $this->getTemplateSize($tplidx,$_w,$_h);
+       $_w = $wh['w'];
+       $_h = $wh['h'];
+       $out .= sprintf("q %.4F 0 0 %.4F %.2F %.2F cm", ($_w/$this->tpls[$tplidx]['box']['w']), ($_h/$this->tpls[$tplidx]['box']['h']), $_x*_MPDFK, ($this->h-($_y+$_h))*_MPDFK)."\n"; 
+       $out .= $this->tplprefix.$tplidx." Do Q\n";
+
+       $s = array("w" => $_w, "h" => $_h);
+       $out .= "Q\n";
+       $this->pages[$this->page] = $out . $this->pages[$this->page];
+       return $s;
+}
+function SetPageTemplate($tplidx='') {
+       if (!isset($this->tpls[$tplidx])) {
+               $this->pageTemplate = '';
+               return false;
+       }
+       $this->pageTemplate = $tplidx;
+}
+function SetDocTemplate($file='', $continue=0) {
+       $this->docTemplate = $file;
+       $this->docTemplateContinue = $continue;
+}
+/*-- END IMPORTS --*/
+
+
+/* ---------------------------------------------- */
+/* ---------------------------------------------- */
+/* ---------------------------------------------- */
+/* ---------------------------------------------- */
+/* ---------------------------------------------- */
+
+// JAVASCRIPT
+function _set_object_javascript ($string) {
+       $this->_newobj();
+       $this->_out('<<');
+       $this->_out('/S /JavaScript ');
+       $this->_out('/JS '.$this->_textstring($string));
+       $this->_out('>>');
+       $this->_out('endobj');
+}
+
+function SetJS($script) {
+       $this->js = $script;
+}
+
+
+
+
+}//end of Class
+
+
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterASCII85.php
new file mode 100644 (file)
index 0000000..fc42d57
--- /dev/null
@@ -0,0 +1,98 @@
+<?php
+//
+//  FPDI - Version 1.3.1
+//
+//    Copyright 2004-2009 Setasign - Jan Slabon
+//
+//  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.
+//
+
+if (!defined('ORD_z'))
+       define('ORD_z',ord('z'));
+if (!defined('ORD_exclmark'))
+       define('ORD_exclmark', ord('!'));
+if (!defined('ORD_u')) 
+       define('ORD_u', ord('u'));
+if (!defined('ORD_tilde'))
+       define('ORD_tilde', ord('~'));
+
+class FilterASCII85 {
+    
+    function error($msg) {
+        die($msg);
+    }
+    
+    function decode($in) {
+        $out = '';
+        $state = 0;
+        $chn = null;
+        
+        $l = strlen($in);
+        
+        for ($k = 0; $k < $l; ++$k) {
+            $ch = ord($in[$k]) & 0xff;
+            
+            if ($ch == ORD_tilde) {
+                break;
+            }
+            if (preg_match('/^\s$/',chr($ch))) {
+                continue;
+            }
+            if ($ch == ORD_z && $state == 0) {
+                $out .= chr(0).chr(0).chr(0).chr(0);
+                continue;
+            }
+            if ($ch < ORD_exclmark || $ch > ORD_u) {
+                $this->error('Illegal character in ASCII85Decode.');
+            }
+            
+            $chn[$state++] = $ch - ORD_exclmark;
+            
+            if ($state == 5) {
+                $state = 0;
+                $r = 0;
+                for ($j = 0; $j < 5; ++$j)
+                    $r = $r * 85 + $chn[$j];
+                $out .= chr($r >> 24);
+                $out .= chr($r >> 16);
+                $out .= chr($r >> 8);
+                $out .= chr($r);
+            }
+        }
+        $r = 0;
+        
+        if ($state == 1)
+            $this->error('Illegal length in ASCII85Decode.');
+        if ($state == 2) {
+            $r = $chn[0] * 85 * 85 * 85 * 85 + ($chn[1]+1) * 85 * 85 * 85;
+            $out .= chr($r >> 24);
+        }
+        else if ($state == 3) {
+            $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + ($chn[2]+1) * 85 * 85;
+            $out .= chr($r >> 24);
+            $out .= chr($r >> 16);
+        }
+        else if ($state == 4) {
+            $r = $chn[0] * 85 * 85 * 85 * 85 + $chn[1] * 85 * 85 * 85  + $chn[2] * 85 * 85  + ($chn[3]+1) * 85 ;
+            $out .= chr($r >> 24);
+            $out .= chr($r >> 16);
+            $out .= chr($r >> 8);
+        }
+
+        return $out;
+    }
+    
+    function encode($in) {
+        $this->error("ASCII85 encoding not implemented.");
+    }
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php b/inc/3rdparty/libraries/mpdf/mpdfi/filters/FilterLZW.php
new file mode 100644 (file)
index 0000000..5867603
--- /dev/null
@@ -0,0 +1,154 @@
+<?php
+//
+//  FPDI - Version 1.3.1
+//
+//    Copyright 2004-2009 Setasign - Jan Slabon
+//
+//  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.
+//
+
+class FilterLZW {
+    
+    var $sTable = array();
+    var $data = null;
+    var $dataLength = 0;
+    var $tIdx;
+    var $bitsToGet = 9;
+    var $bytePointer;
+    var $bitPointer;
+    var $nextData = 0;
+    var $nextBits = 0;
+    var $andTable = array(511, 1023, 2047, 4095);
+
+    function error($msg) {
+        die($msg);
+    }
+    
+    /**
+     * Method to decode LZW compressed data.
+     *
+     * @param string data    The compressed data.
+     */
+    function decode($data) {
+
+        if($data[0] == 0x00 && $data[1] == 0x01) {
+            $this->error('LZW flavour not supported.');
+        }
+
+        $this->initsTable();
+
+        $this->data = $data;
+        $this->dataLength = strlen($data);
+
+        // Initialize pointers
+        $this->bytePointer = 0;
+        $this->bitPointer = 0;
+
+        $this->nextData = 0;
+        $this->nextBits = 0;
+
+        $oldCode = 0;
+
+        $string = '';
+        $uncompData = '';
+
+        while (($code = $this->getNextCode()) != 257) {
+            if ($code == 256) {
+                $this->initsTable();
+                $code = $this->getNextCode();
+
+                if ($code == 257) {
+                    break;
+                }
+
+                $uncompData .= $this->sTable[$code];
+                $oldCode = $code;
+
+            } else {
+
+                if ($code < $this->tIdx) {
+                    $string = $this->sTable[$code];
+                    $uncompData .= $string;
+
+                    $this->addStringToTable($this->sTable[$oldCode], $string[0]);
+                    $oldCode = $code;
+                } else {
+                    $string = $this->sTable[$oldCode];
+                    $string = $string.$string[0];
+                    $uncompData .= $string;
+
+                    $this->addStringToTable($string);
+                    $oldCode = $code;
+                }
+            }
+        }
+        
+        return $uncompData;
+    }
+
+
+    /**
+     * Initialize the string table.
+     */
+    function initsTable() {
+        $this->sTable = array();
+
+        for ($i = 0; $i < 256; $i++)
+            $this->sTable[$i] = chr($i);
+
+        $this->tIdx = 258;
+        $this->bitsToGet = 9;
+    }
+
+    /**
+     * Add a new string to the string table.
+     */
+    function addStringToTable ($oldString, $newString='') {
+        $string = $oldString.$newString;
+
+        // Add this new String to the table
+        $this->sTable[$this->tIdx++] = $string;
+
+        if ($this->tIdx == 511) {
+            $this->bitsToGet = 10;
+        } else if ($this->tIdx == 1023) {
+            $this->bitsToGet = 11;
+        } else if ($this->tIdx == 2047) {
+            $this->bitsToGet = 12;
+        }
+    }
+
+    // Returns the next 9, 10, 11 or 12 bits
+    function getNextCode() {
+        if ($this->bytePointer == $this->dataLength) {
+            return 257;
+        }
+
+        $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
+        $this->nextBits += 8;
+
+        if ($this->nextBits < $this->bitsToGet) {
+            $this->nextData = ($this->nextData << 8) | (ord($this->data[$this->bytePointer++]) & 0xff);
+            $this->nextBits += 8;
+        }
+
+        $code = ($this->nextData >> ($this->nextBits - $this->bitsToGet)) & $this->andTable[$this->bitsToGet-9];
+        $this->nextBits -= $this->bitsToGet;
+
+        return $code;
+    }
+    
+    function encode($in) {
+        $this->error("LZW encoding not implemented.");
+    }
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/fpdi_pdf_parser.php
new file mode 100644 (file)
index 0000000..e0f0239
--- /dev/null
@@ -0,0 +1,363 @@
+<?php
+//
+//  FPDI - Version 1.2
+//
+//    Copyright 2004-2007 Setasign - Jan Slabon
+//
+//  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.
+//
+
+
+class fpdi_pdf_parser extends pdf_parser {
+
+    /**
+     * Pages
+     * Index beginns at 0
+     *
+     * @var array
+     */
+    var $pages;
+    
+    /**
+     * Page count
+     * @var integer
+     */
+    var $page_count;
+    
+    /**
+     * actual page number
+     * @var integer
+     */
+    var $pageno;
+    
+    
+    /**
+     * FPDI Reference
+     * @var object
+     */
+    var $fpdi;
+    
+    /**
+     * Available BoxTypes
+     *
+     * @var array
+     */
+    var $availableBoxes = array("/MediaBox","/CropBox","/BleedBox","/TrimBox","/ArtBox");
+        
+    /**
+     * Constructor
+     *
+     * @param string $filename  Source-Filename
+     * @param object $fpdi      Object of type fpdi
+     */
+    function fpdi_pdf_parser($filename,&$fpdi) {
+        $this->fpdi =& $fpdi;
+         $this->filename = $filename;
+
+        parent::pdf_parser($filename);
+        if ($this->success == false) { return false; }
+
+        // resolve Pages-Dictonary
+        $pages = $this->pdf_resolve_object($this->c, $this->root[1][1]['/Pages']);
+        if ($this->success == false) { return false; }
+
+        // Read pages
+        $this->read_pages($this->c, $pages, $this->pages);
+        if ($this->success == false) { return false; }
+
+        // count pages;
+        $this->page_count = count($this->pages);
+    }
+    
+    
+    /**
+     * Get pagecount from sourcefile
+     *
+     * @return int
+     */
+    function getPageCount() {
+        return $this->page_count;
+    }
+
+
+    /**
+     * Set pageno
+     *
+     * @param int $pageno Pagenumber to use
+     */
+    function setPageno($pageno) {
+        $pageno = ((int) $pageno) - 1;
+
+        if ($pageno < 0 || $pageno >= $this->getPageCount()) {
+            $this->fpdi->error("Pagenumber is wrong!");
+        }
+
+        $this->pageno = $pageno;
+    }
+    
+    /**
+     * Get page-resources from current page
+     *
+     * @return array
+     */
+    function getPageResources() {
+        return $this->_getPageResources($this->pages[$this->pageno]);
+    }
+    
+    /**
+     * Get page-resources from /Page
+     *
+     * @param array $obj Array of pdf-data
+     */
+    function _getPageResources ($obj) { // $obj = /Page
+       $obj = $this->pdf_resolve_object($this->c, $obj);
+
+        // If the current object has a resources
+       // dictionary associated with it, we use
+       // it. Otherwise, we move back to its
+       // parent object.
+        if (isset ($obj[1][1]['/Resources'])) {
+               $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Resources']);
+               if ($res[0] == PDF_TYPE_OBJECT)
+                return $res[1];
+            return $res;
+       } else {
+               if (!isset ($obj[1][1]['/Parent'])) {
+                       return false;
+               } else {
+                $res = $this->_getPageResources($obj[1][1]['/Parent']);
+                if ($res[0] == PDF_TYPE_OBJECT)
+                    return $res[1];
+                return $res;
+               }
+       }
+    }
+
+
+    /**
+     * Get content of current page
+     *
+     * If more /Contents is an array, the streams are concated
+     *
+     * @return string
+     */
+    function getContent() {
+        $buffer = "";
+        
+        if (isset($this->pages[$this->pageno][1][1]['/Contents'])) {
+            $contents = $this->_getPageContent($this->pages[$this->pageno][1][1]['/Contents']);
+            foreach($contents AS $tmp_content) {
+                $buffer .= $this->_rebuildContentStream($tmp_content).' ';
+            }
+        }
+        
+        return $buffer;
+    }
+    
+    
+    /**
+     * Resolve all content-objects
+     *
+     * @param array $content_ref
+     * @return array
+     */
+    function _getPageContent($content_ref) {
+        $contents = array();
+        
+        if ($content_ref[0] == PDF_TYPE_OBJREF) {
+            $content = $this->pdf_resolve_object($this->c, $content_ref);
+            if ($content[1][0] == PDF_TYPE_ARRAY) {
+                $contents = $this->_getPageContent($content[1]);
+            } else {
+                $contents[] = $content;
+            }
+        } else if ($content_ref[0] == PDF_TYPE_ARRAY) {
+            foreach ($content_ref[1] AS $tmp_content_ref) {
+                $contents = array_merge($contents,$this->_getPageContent($tmp_content_ref));
+            }
+        }
+
+        return $contents;
+    }
+
+
+    /**
+     * Rebuild content-streams
+     *
+     * @param array $obj
+     * @return string
+     */
+    function _rebuildContentStream($obj) {
+        $filters = array();
+        
+        if (isset($obj[1][1]['/Filter'])) {
+            $_filter = $obj[1][1]['/Filter'];
+
+            if ($_filter[0] == PDF_TYPE_TOKEN) {
+                $filters[] = $_filter;
+            } else if ($_filter[0] == PDF_TYPE_ARRAY) {
+                $filters = $_filter[1];
+            }
+        }
+
+        $stream = $obj[2][1];
+
+        foreach ($filters AS $_filter) {
+            switch ($_filter[1]) {
+                case "/FlateDecode":
+                       if (function_exists('gzuncompress')) {
+                        $stream = (strlen($stream) > 0) ? @gzuncompress($stream) : '';                        
+                       } else {
+                        $this->fpdi->error(sprintf("To handle %s filter, please compile php with zlib support.",$_filter[1]));
+                       }
+                       if ($stream === false) { 
+                        $this->fpdi->error("Error while decompressing stream.");
+                       }
+                break;
+                       // mPDF 4.2.003
+                case '/LZWDecode': 
+                       include_once(_MPDF_PATH.'mpdfi/filters/FilterLZW.php');
+                       // mPDF 5.0 Removed pass by reference =&
+                       $decoder = new FilterLZW();
+                       $stream = $decoder->decode($stream);
+                       break;
+                case '/ASCII85Decode':
+                       include_once(_MPDF_PATH.'mpdfi/filters/FilterASCII85.php');
+                       // mPDF 5.0 Removed pass by reference =&
+                       $decoder = new FilterASCII85();
+                       $stream = $decoder->decode($stream);
+                       break;
+                case null:
+                       $stream = $stream;
+                       break;
+                default:
+                       $this->fpdi->error(sprintf("Unsupported Filter: %s",$_filter[1]));
+            }
+        }
+        
+        return $stream;
+    }
+    
+    
+    /**
+     * Get a Box from a page
+     * Arrayformat is same as used by fpdf_tpl
+     *
+     * @param array $page a /Page
+     * @param string $box_index Type of Box @see $availableBoxes
+     * @return array
+     */
+    function getPageBox($page, $box_index) {
+        $page = $this->pdf_resolve_object($this->c,$page);
+        $box = null;
+        if (isset($page[1][1][$box_index]))
+            $box =& $page[1][1][$box_index];
+        
+        if (!is_null($box) && $box[0] == PDF_TYPE_OBJREF) {
+            $tmp_box = $this->pdf_resolve_object($this->c,$box);
+            $box = $tmp_box[1];
+        }
+            
+        if (!is_null($box) && $box[0] == PDF_TYPE_ARRAY) {
+            $b =& $box[1];
+            return array("x" => $b[0][1]/_MPDFK,
+                         "y" => $b[1][1]/_MPDFK,
+                         "w" => abs($b[0][1]-$b[2][1])/_MPDFK,
+                         "h" => abs($b[1][1]-$b[3][1])/_MPDFK);        // mPDF 5.3.90
+        } else if (!isset ($page[1][1]['/Parent'])) {
+            return false;
+        } else {
+            return $this->getPageBox($this->pdf_resolve_object($this->c, $page[1][1]['/Parent']), $box_index);
+        }
+    }
+
+    function getPageBoxes($pageno) {
+        return $this->_getPageBoxes($this->pages[$pageno-1]);
+    }
+    
+    /**
+     * Get all Boxes from /Page
+     *
+     * @param array a /Page
+     * @return array
+     */
+    function _getPageBoxes($page) {
+        $boxes = array();
+
+        foreach($this->availableBoxes AS $box) {
+            if ($_box = $this->getPageBox($page,$box)) {
+                $boxes[$box] = $_box;
+            }
+        }
+
+        return $boxes;
+    }
+
+    function getPageRotation($pageno) {
+        return $this->_getPageRotation($this->pages[$pageno-1]);
+    }
+    
+    function _getPageRotation ($obj) { // $obj = /Page
+       $obj = $this->pdf_resolve_object($this->c, $obj);
+       if (isset ($obj[1][1]['/Rotate'])) {
+               $res = $this->pdf_resolve_object($this->c, $obj[1][1]['/Rotate']);
+               if ($res[0] == PDF_TYPE_OBJECT)
+                return $res[1];
+            return $res;
+       } else {
+               if (!isset ($obj[1][1]['/Parent'])) {
+                       return false;
+               } else {
+                $res = $this->_getPageRotation($obj[1][1]['/Parent']);
+                if ($res[0] == PDF_TYPE_OBJECT)
+                    return $res[1];
+                return $res;
+               }
+       }
+    }
+    
+    /**
+     * Read all /Page(es)
+     *
+     * @param object pdf_context
+     * @param array /Pages
+     * @param array the result-array
+     */
+    function read_pages (&$c, &$pages, &$result) {
+        // Get the kids dictionary
+       $kids = $this->pdf_resolve_object ($c, $pages[1][1]['/Kids']);
+
+        if (!is_array($kids)) {
+                       // mPDF 4.0
+                       $this->success = false;
+               $this->errormsg = sprintf("Cannot find /Kids in current /Page-Dictionary");
+                       return false;
+         }
+        foreach ($kids[1] as $v) {
+               $pg = $this->pdf_resolve_object ($c, $v);
+            if ($pg[1][1]['/Type'][1] === '/Pages') {
+                // If one of the kids is an embedded
+                       // /Pages array, resolve it as well.
+                $this->read_pages ($c, $pg, $result);
+               } else {
+                       $result[] = $pg;
+               }
+       }
+    }
+
+    
+    
+    
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_context.php
new file mode 100644 (file)
index 0000000..6cf4bdc
--- /dev/null
@@ -0,0 +1,78 @@
+<?php
+//
+//  FPDI - Version 1.2
+//
+//    Copyright 2004-2007 Setasign - Jan Slabon
+//
+//  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.
+//
+
+class pdf_context {
+
+       var $file;
+       var $buffer;
+       var $offset;
+       var $length;
+
+       var $stack;
+
+       // Constructor
+
+       function pdf_context($f) {
+               $this->file = $f;
+               $this->reset();
+       }
+
+       // Optionally move the file
+       // pointer to a new location
+       // and reset the buffered data
+
+       function reset($pos = null, $l = 100) {
+               if (!is_null ($pos)) {
+                       fseek ($this->file, $pos);
+               }
+
+               $this->buffer = $l > 0 ? fread($this->file, $l) : '';
+               $this->offset = 0;
+               $this->length = strlen($this->buffer);
+               $this->stack = array();
+       }
+
+       // Make sure that there is at least one
+       // character beyond the current offset in
+       // the buffer to prevent the tokenizer
+       // from attempting to access data that does
+       // not exist
+
+       function ensure_content() {
+               if ($this->offset >= $this->length - 1) {
+                       return $this->increase_length();
+               } else {
+                       return true;
+               }
+       }
+
+       // Forcefully read more data into the buffer
+
+       function increase_length($l=100) {
+               if (feof($this->file)) {
+                       return false;
+               } else {
+                       $this->buffer .= fread($this->file, $l);
+                       $this->length = strlen($this->buffer);
+                       return true;
+               }
+       }
+
+}
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php b/inc/3rdparty/libraries/mpdf/mpdfi/pdf_parser.php
new file mode 100644 (file)
index 0000000..c7d69e2
--- /dev/null
@@ -0,0 +1,690 @@
+<?php
+//
+//  FPDI - Version 1.2
+//
+//    Copyright 2004-2007 Setasign - Jan Slabon
+//
+//  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.
+//
+
+if (!defined ('PDF_TYPE_NULL'))
+    define ('PDF_TYPE_NULL', 0);
+if (!defined ('PDF_TYPE_NUMERIC'))
+    define ('PDF_TYPE_NUMERIC', 1);
+if (!defined ('PDF_TYPE_TOKEN'))
+    define ('PDF_TYPE_TOKEN', 2);
+if (!defined ('PDF_TYPE_HEX'))
+    define ('PDF_TYPE_HEX', 3);
+if (!defined ('PDF_TYPE_STRING'))
+    define ('PDF_TYPE_STRING', 4);
+if (!defined ('PDF_TYPE_DICTIONARY'))
+    define ('PDF_TYPE_DICTIONARY', 5);
+if (!defined ('PDF_TYPE_ARRAY'))
+    define ('PDF_TYPE_ARRAY', 6);
+if (!defined ('PDF_TYPE_OBJDEC'))
+    define ('PDF_TYPE_OBJDEC', 7);
+if (!defined ('PDF_TYPE_OBJREF'))
+    define ('PDF_TYPE_OBJREF', 8);
+if (!defined ('PDF_TYPE_OBJECT'))
+    define ('PDF_TYPE_OBJECT', 9);
+if (!defined ('PDF_TYPE_STREAM'))
+    define ('PDF_TYPE_STREAM', 10);
+
+
+class pdf_parser {
+       
+       /**
+     * Filename
+     * @var string
+     */
+    var $filename;
+    
+    /**
+     * File resource
+     * @var resource
+     */
+    var $f;
+    
+    /**
+     * PDF Context
+     * @var object pdf_context-Instance
+     */
+    var $c;
+    
+    /**
+     * xref-Data
+     * @var array
+     */
+    var $xref;
+
+    /**
+     * root-Object
+     * @var array
+     */
+    var $root;
+       
+    // mPDF 4.0 Added flag to show success on loading file
+    var $success;
+    var $errormsg;
+
+    /**
+     * Constructor
+     *
+     * @param string $filename  Source-Filename
+     */
+       function pdf_parser($filename) {
+        $this->filename = $filename;
+         // mPDF 4.0
+         $this->success = true;
+
+        $this->f = @fopen($this->filename, "rb");
+
+        if (!$this->f) {
+            $this->success = false;
+            $this->errormsg = sprintf("Cannot open %s !", $filename);
+               return false;
+         }
+       // mPDF 5.0 Removed pass by reference =&
+        $this->c = new pdf_context($this->f);
+        // Read xref-Data
+         $offset = $this->pdf_find_xref();
+        if ($offset===false) {
+            $this->success = false;
+            $this->errormsg = sprintf("Cannot open %s !", $filename);
+               return false;
+         }
+        $this->pdf_read_xref($this->xref, $offset);
+        if ($this->success == false) { return false; }
+
+        // Check for Encryption
+        $this->getEncryption();
+        if ($this->success == false) { return false; }
+
+        // Read root
+        $this->pdf_read_root();
+        if ($this->success == false) { return false; }
+    }
+    
+    /**
+     * Close the opened file
+     */
+    function closeFile() {
+       if (isset($this->f)) {
+           fclose($this->f);   
+               unset($this->f);
+       }       
+    }
+    
+      /**
+     * Print Error and die
+     *
+     * @param string $msg  Error-Message
+     */
+    function error($msg) {
+       die("<b>PDF-Parser Error:</b> ".$msg);  
+    }
+  
+    /**
+     * Check Trailer for Encryption
+     */
+    function getEncryption() {
+        if (isset($this->xref['trailer'][1]['/Encrypt'])) {
+               // mPDF 4.0
+               $this->success = false;
+            $this->errormsg = sprintf("File is encrypted!");
+               return false;
+        }
+    }
+    
+       /**
+     * Find/Return /Root
+     *
+     * @return array
+     */
+    function pdf_find_root() {
+        if ($this->xref['trailer'][1]['/Root'][0] != PDF_TYPE_OBJREF) {
+               // mPDF 4.0
+               $this->success = false;
+            $this->errormsg = sprintf("Wrong Type of Root-Element! Must be an indirect reference");
+               return false;
+        }
+        return $this->xref['trailer'][1]['/Root'];
+    }
+
+    /**
+     * Read the /Root
+     */
+    function pdf_read_root() {
+        // read root
+         $root = $this->pdf_find_root();
+        if ($root ===false) {
+            $this->success = false;
+               return false;
+         }
+        $this->root = $this->pdf_resolve_object($this->c, $root);
+    }
+    
+    /**
+     * Find the xref-Table
+     */
+    function pdf_find_xref() {
+               fseek ($this->f, -min(filesize($this->filename),1500), SEEK_END);
+        $data = fread($this->f, 1500);
+        
+        $pos = strlen($data) - strpos(strrev($data), strrev('startxref')); 
+        $data = substr($data, $pos);
+        
+        if (!preg_match('/\s*(\d+).*$/s', $data, $matches)) {
+               // mPDF 4.0
+               $this->success = false;
+            $this->errormsg = sprintf("Unable to find pointer to xref table");
+               return false;
+       }
+
+       return (int) $matches[1];
+    }
+
+    /**
+     * Read xref-table
+     *
+     * @param array $result Array of xref-table
+     * @param integer $offset of xref-table
+     * @param integer $start start-position in xref-table
+     * @param integer $end end-position in xref-table
+     */
+    function pdf_read_xref(&$result, $offset, $start = null, $end = null) {
+        if (is_null ($start) || is_null ($end)) {
+               fseek($this->f, $o_pos = $offset);
+            $data = trim(fgets($this->f,1024));
+
+            if (strlen($data) == 0) 
+                $data = trim(fgets($this->f,1024));
+
+            if ($data !== 'xref') {
+               fseek($this->f, $o_pos);
+               $data = trim(_fgets($this->f, true));
+               if ($data !== 'xref') {
+                   if (preg_match('/(.*xref)(.*)/m', $data, $m)) { // xref 0 128 - in one line
+                        fseek($this->f, $o_pos+strlen($m[1]));                         
+                   } elseif (preg_match('/(x|r|e|f)+/', $data, $m)) { // correct invalid xref-pointer
+                       $tmpOffset = $offset-4+strlen($m[0]);
+                       $this->pdf_read_xref($result, $tmpOffset, $start, $end);
+                       return;
+                    } else {
+                               // mPDF 4.0
+                               $this->success = false;
+                       $this->errormsg = sprintf("Unable to find xref table - Maybe a Problem with 'auto_detect_line_endings'");
+                               return;
+                   }
+               }
+               }
+
+               $o_pos = ftell($this->f);
+           $data = explode(' ', trim(fgets($this->f,1024)));
+                       if (count($data) != 2) {
+               fseek($this->f, $o_pos);
+               $data = explode(' ', trim(_fgets($this->f, true)));
+                       
+               if (count($data) != 2) {
+                   if (count($data) > 2) { // no lineending
+                       $n_pos = $o_pos+strlen($data[0])+strlen($data[1])+2;
+                       fseek($this->f, $n_pos);
+                   } else {
+                               // mPDF 4.0
+                               $this->success = false;
+                       $this->errormsg = sprintf("Unexpected header in xref table");
+                               return;
+                   }
+               }
+            }
+            $start = $data[0];
+            $end = $start + $data[1];
+        }
+
+        if (!isset($result['xref_location'])) {
+            $result['xref_location'] = $offset;
+       }
+
+       if (!isset($result['max_object']) || $end > $result['max_object']) {
+           $result['max_object'] = $end;
+       }
+
+       for (; $start < $end; $start++) {
+               $data = ltrim(fread($this->f, 20)); // Spezifications says: 20 bytes including newlines
+               $offset = substr($data, 0, 10);
+               $generation = substr($data, 11, 5);
+
+           if (!isset ($result['xref'][$start][(int) $generation])) {
+               $result['xref'][$start][(int) $generation] = (int) $offset;
+           }
+       }
+
+       $o_pos = ftell($this->f);
+        $data = fgets($this->f,1024);
+               if (strlen(trim($data)) == 0) 
+                   $data = fgets($this->f, 1024);
+
+        if (preg_match("/trailer/",$data)) {
+            if (preg_match("/(.*trailer[ \n\r]*)/",$data,$m)) {
+               fseek($this->f, $o_pos+strlen($m[1]));
+               }
+
+                       // mPDF 5.0 Removed pass by reference =&
+                       $c = new pdf_context($this->f);
+           $trailer = $this->pdf_read_value($c);
+           
+           if (isset($trailer[1]['/Prev'])) {
+               $this->pdf_read_xref($result, $trailer[1]['/Prev'][1]);
+                   $result['trailer'][1] = array_merge($result['trailer'][1], $trailer[1]);
+           } else {
+               $result['trailer'] = $trailer;
+            }
+       } else {
+           $data = explode(' ', trim($data));
+            
+               if (count($data) != 2) {
+               fseek($this->f, $o_pos);
+                       $data = explode(' ', trim (_fgets ($this->f, true)));
+
+                       if (count($data) != 2) {
+                               // mPDF 4.0
+                               $this->success = false;
+                       $this->errormsg = sprintf("Unexpected data in xref table");
+                               return;
+                       }
+                   }
+                   
+                   $this->pdf_read_xref($result, null, (int) $data[0], (int) $data[0] + (int) $data[1]);
+       }
+    }
+
+
+    /**
+     * Reads an Value
+     *
+     * @param object $c pdf_context
+     * @param string $token a Token
+     * @return mixed
+     */
+    function pdf_read_value(&$c, $token = null) {
+       if (is_null($token)) {
+           $token = $this->pdf_read_token($c);
+       }
+       
+        if ($token === false) {
+           return false;
+       }
+
+               switch ($token) {
+            case       '<':
+                       // This is a hex string.
+                       // Read the value, then the terminator
+
+                $pos = $c->offset;
+
+                       while(1) {
+
+                    $match = strpos ($c->buffer, '>', $pos);
+                               
+                               // If you can't find it, try
+                               // reading more data from the stream
+
+                               if ($match === false) {
+                                       if (!$c->increase_length()) {
+                                               return false;
+                                       } else {
+                               continue;
+                       }
+                               }
+
+                               $result = substr ($c->buffer, $c->offset, $match - $c->offset);
+                               $c->offset = $match+1;
+                               
+                               return array (PDF_TYPE_HEX, $result);
+                }
+                
+                break;
+               case    '<<':
+                       // This is a dictionary.
+
+                       $result = array();
+
+                       // Recurse into this function until we reach
+                       // the end of the dictionary.
+                       while (($key = $this->pdf_read_token($c)) !== '>>') {
+                               if ($key === false) {
+                                       return false;
+                               }
+                                       
+                               if (($value =   $this->pdf_read_value($c)) === false) {
+                                       return false;
+                               }
+                    $result[$key] = $value;
+                       }
+                               
+                       return array (PDF_TYPE_DICTIONARY, $result);
+
+               case    '[':
+                       // This is an array.
+
+                       $result = array();
+
+                       // Recurse into this function until we reach
+                       // the end of the array.
+                       while (($token = $this->pdf_read_token($c)) !== ']') {
+                    if ($token === false) {
+                                       return false;
+                               }
+                                       
+                               if (($value = $this->pdf_read_value($c, $token)) === false) {
+                        return false;
+                               }
+                                       
+                               $result[] = $value;
+                       }
+                       
+                return array (PDF_TYPE_ARRAY, $result);
+
+               case    '('             :
+                // This is a string
+
+                       $pos = $c->offset;
+
+                       while(1) {
+
+                    // Start by finding the next closed
+                               // parenthesis
+
+                               $match = strpos ($c->buffer, ')', $pos);
+
+                               // If you can't find it, try
+                               // reading more data from the stream
+
+                               if ($match === false) {
+                                       if (!$c->increase_length()) {
+                            return false;
+                                       } else {
+                            continue;
+                        }
+                               }
+
+                               // Make sure that there is no backslash
+                               // before the parenthesis. If there is,
+                               // move on. Otherwise, return the string.
+                    $esc = preg_match('/([\\\\]+)$/', $tmpresult = substr($c->buffer, $c->offset, $match - $c->offset), $m);
+                    
+                    if ($esc === 0 || strlen($m[1]) % 2 == 0) {
+                                   $result = $tmpresult;
+                        $c->offset = $match + 1;
+                        return array (PDF_TYPE_STRING, $result);
+                               } else {
+                                       $pos = $match + 1;
+
+                                       if ($pos > $c->offset + $c->length) {
+                                               $c->increase_length();
+                                       }
+                               }                               
+                }
+
+            case "stream":
+               $o_pos = ftell($c->file)-strlen($c->buffer);
+                       $o_offset = $c->offset;
+                       
+                       $c->reset($startpos = $o_pos + $o_offset);
+                       
+                       $e = 0; // ensure line breaks in front of the stream
+                       if ($c->buffer[0] == chr(10) || $c->buffer[0] == chr(13))
+                               $e++;
+                       if ($c->buffer[1] == chr(10) && $c->buffer[0] != chr(10))
+                               $e++;
+                       
+                       if ($this->actual_obj[1][1]['/Length'][0] == PDF_TYPE_OBJREF) {
+                               // mPDF 5.0 Removed pass by reference =&
+                               $tmp_c = new pdf_context($this->f);
+                               $tmp_length = $this->pdf_resolve_object($tmp_c,$this->actual_obj[1][1]['/Length']);
+                               $length = $tmp_length[1][1];
+                       } else {
+                               $length = $this->actual_obj[1][1]['/Length'][1];        
+                       }
+                       
+                       if ($length > 0) {
+                       $c->reset($startpos+$e,$length);
+                       $v = $c->buffer;
+                       } else {
+                           $v = '';   
+                       }
+                       $c->reset($startpos+$e+$length+9); // 9 = strlen("endstream")
+                       
+                       return array(PDF_TYPE_STREAM, $v);
+                       
+               default :
+               if (is_numeric ($token)) {
+                    // A numeric token. Make sure that
+                               // it is not part of something else.
+                               if (($tok2 = $this->pdf_read_token ($c)) !== false) {
+                        if (is_numeric ($tok2)) {
+
+                                               // Two numeric tokens in a row.
+                                               // In this case, we're probably in
+                                               // front of either an object reference
+                                               // or an object specification.
+                                               // Determine the case and return the data
+                                               if (($tok3 = $this->pdf_read_token ($c)) !== false) {
+                                switch ($tok3) {
+                                                               case    'obj'   :
+                                        return array (PDF_TYPE_OBJDEC, (int) $token, (int) $tok2);
+                                                               case    'R'             :
+                                                                       return array (PDF_TYPE_OBJREF, (int) $token, (int) $tok2);
+                                                       }
+                                                       // If we get to this point, that numeric value up
+                                                       // there was just a numeric value. Push the extra
+                                                       // tokens back into the stack and return the value.
+                                                       array_push ($c->stack, $tok3);
+                                               }
+                                       }
+
+                                       array_push ($c->stack, $tok2);
+                               }
+
+                               return array (PDF_TYPE_NUMERIC, $token);
+                       } else {
+
+                    // Just a token. Return it.
+                               return array (PDF_TYPE_TOKEN, $token);
+                       }
+
+         }
+    }
+    
+    /**
+     * Resolve an object
+     *
+     * @param object $c pdf_context
+     * @param array $obj_spec The object-data
+     * @param boolean $encapsulate Must set to true, cause the parsing and fpdi use this method only without this para
+     */
+    function pdf_resolve_object(&$c, $obj_spec, $encapsulate = true) {
+        // Exit if we get invalid data
+       if (!is_array($obj_spec)) {
+            return false;
+       }
+
+       if ($obj_spec[0] == PDF_TYPE_OBJREF) {
+
+               // This is a reference, resolve it
+               if (isset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]])) {
+
+                       // Save current file position
+                       // This is needed if you want to resolve
+                       // references while you're reading another object
+                       // (e.g.: if you need to determine the length
+                       // of a stream)
+
+                       $old_pos = ftell($c->file);
+
+                       // Reposition the file pointer and
+                       // load the object header.
+                               
+                       $c->reset($this->xref['xref'][$obj_spec[1]][$obj_spec[2]]);
+
+                       $header = $this->pdf_read_value($c,null,true);
+
+                       if ($header[0] != PDF_TYPE_OBJDEC || $header[1] != $obj_spec[1] || $header[2] != $obj_spec[2]) {
+                               // mPDF 4.0
+                               $this->success = false;
+                       $this->errormsg = sprintf("Unable to find object ({$obj_spec[1]}, {$obj_spec[2]}) at expected location");
+                               return false;
+                       }
+
+                       // If we're being asked to store all the information
+                       // about the object, we add the object ID and generation
+                       // number for later use
+                               $this->actual_obj =& $result;
+                       if ($encapsulate) {
+                               $result = array (
+                                       PDF_TYPE_OBJECT,
+                                       'obj' => $obj_spec[1],
+                                       'gen' => $obj_spec[2]
+                               );
+                       } else {
+                               $result = array();
+                       }
+
+                       // Now simply read the object data until
+                       // we encounter an end-of-object marker
+                       while(1) {
+                    $value = $this->pdf_read_value($c);
+                                       if ($value === false || count($result) > 4) {
+                                               // in this case the parser coudn't find an endobj so we break here
+                                               break;
+                               }
+
+                               if ($value[0] == PDF_TYPE_TOKEN && $value[1] === 'endobj') {
+                                       break;
+                               }
+
+                    $result[] = $value;
+                       }
+
+                       $c->reset($old_pos);
+
+                if (isset($result[2][0]) && $result[2][0] == PDF_TYPE_STREAM) {
+                    $result[0] = PDF_TYPE_STREAM;
+                }
+
+                       return $result;
+               }
+       } else {
+               return $obj_spec;
+       }
+    }
+
+    
+    
+    /**
+     * Reads a token from the file
+     *
+     * @param object $c pdf_context
+     * @return mixed
+     */
+    function pdf_read_token(&$c)
+    {
+       // If there is a token available
+       // on the stack, pop it out and
+       // return it.
+
+       if (count($c->stack)) {
+               return array_pop($c->stack);
+       }
+
+       // Strip away any whitespace
+
+       do {
+               if (!$c->ensure_content()) {
+                       return false;
+               }
+               $c->offset += _strspn($c->buffer, " \n\r\t", $c->offset);
+       } while ($c->offset >= $c->length - 1);
+
+       // Get the first character in the stream
+
+       $char = $c->buffer[$c->offset++];
+
+       switch ($char) {
+
+               case '['        :
+               case ']'        :
+               case '('        :
+               case ')'        :
+
+                       // This is either an array or literal string
+                       // delimiter, Return it
+
+                       return $char;
+
+               case '<'        :
+               case '>'        :
+
+                       // This could either be a hex string or
+                       // dictionary delimiter. Determine the
+                       // appropriate case and return the token
+
+                       if ($c->buffer[$c->offset] == $char) {
+                               if (!$c->ensure_content()) {
+                                   return false;
+                               }
+                               $c->offset++;
+                               return $char . $char;
+                       } else {
+                               return $char;
+                       }
+
+               default         :
+
+                       // This is "another" type of token (probably
+                       // a dictionary entry or a numeric value)
+                       // Find the end and return it.
+
+                       if (!$c->ensure_content()) {
+                               return false;
+                       }
+
+                       while(1) {
+
+                               // Determine the length of the token
+
+                               $pos = _strcspn($c->buffer, " []<>()\r\n\t/", $c->offset);
+                               if ($c->offset + $pos <= $c->length - 1) {
+                                       break;
+                               } else {
+                                       // If the script reaches this point,
+                                       // the token may span beyond the end
+                                       // of the current buffer. Therefore,
+                                       // we increase the size of the buffer
+                                       // and try again--just to be safe.
+
+                                       $c->increase_length();
+                               }
+                       }
+
+                       $result = substr($c->buffer, $c->offset - 1, $pos + 1);
+
+                       $c->offset += $pos;
+                       return $result;
+       }
+    }
+
+       
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt b/inc/3rdparty/libraries/mpdf/patterns/NOTES.txt
new file mode 100644 (file)
index 0000000..7ba83e4
--- /dev/null
@@ -0,0 +1,5 @@
+Alternative sources of Hyphenation programs or TEX files:
+
+OpenOffice: http://wiki.services.openoffice.org/wiki/Dictionaries
+
+Hyphenator4PHP- alternative PHP hyphenator scripts: http://apps.sourceforge.net/trac/hyphenator4php/
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/de.php b/inc/3rdparty/libraries/mpdf/patterns/de.php
new file mode 100644 (file)
index 0000000..2164340
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+*/
+
+$patterns="_a6 _ab3b _aben2 _ab5l _abo4 _ab3ol _ab1or _ab5r _ab3s2 _ack2 _ag4r _ag2u _ai2s _al3br _al2e _al5l4en _alt3s _amt6s3 _an3d _ang4 _an1gl _ang6li _an5go _angs4 _an3k _an3s _an4si_ _ans2p _an4tag _ap3s2 _ar3k2a _ar4m3ac _ar4s _ar4t3ei _as1t _as4ta _au3d _au4f5 _au4s1 _aus3p _\xc3\xa44 _\xc3\xa4t2s _b6 _bau1s _be1er _be3r2e _ber4g3a _ber4g3r _bi4o _boge2 _c2 _ch2 _che4f _d4 _da4r1 _dar3in _dar2m _da4te_ _da4tes _de4al _de1i _de3r4en _de1s _de3sk _de3s2t _di2a _do3b _do2mo _do1pe _d\xc3\xbc1b _e4 _ebe2 _ei3e2 _ei3k _ei4ne _ei5ner _ei5nes _ei4sp _ei4st _ei2tr _el2bi _els7t _em3m2 _en2 _end3er _en4d3r _en3du _enn2 _en3s _en4t3 _en5te_ _en3z _er4der _er1e _er1i _er8stein _es1p _es1ta _est4e _es1th _es3tr _et4s _eu3 _eu1c _f6 _fi3est _fi4le_ _fi4len _fin6s _fi2s _fs4 _fu2sc _g6 _ga4me _ga4t _gd2 _gel2d _gen4a _ge3nar _ge3ne _ge3r2a _ge3r2e _ge3s4a _ge1u _gus4s3 _h4 _ha3bi _haft5s _hal2s _hau4t1 _he2 _he3cke _he3ri _he6r5inn _he5xe _his1 _ho4met _i4 _ia4 _in3 _ink4 _inu3 _is2a _is2tr _jor5 _k6 _ka2b5l _ka2i _klan4 _ko3b _ks2 _k\xc3\xbc1b _l4 _le4ar _lo4g3in _lo3ver _m4 _ma3d _ma5ge _ma3la _ma4st _men8schw _mi2s _mi4t _n4 _n\xc3\xa4s3c _ne4s _nich2 _ni4e _nob4 _no6th _nus4 _o6 _oa3 _ob1a _obe2 _ob3l _oper4 _or2a _ort4 _orts3e _oste4 _os8t7ende _ost3r _ozo4 _\xc3\xb64 _p4 _pat4s _pf4 _ph2 _poka2 _pro1 _r4 _reb3s2 _re3cha _rein4t _reli1 _reli3e _re3sti _res4tr _ro6a _ro3be _ro2h _ro3m2a _rut2 _r\xc3\xbc1b _s6 _sch4 _sen5s _ser2u _se2t _si2e _sim3p4 _si4te _ski3e _spra2 _st6 _sto4re _t6 _ta5ge4s _ta3mi _ta2to _tehe3 _te3le _te4st _ti2s _to2n _to4ni _to4st _to2w _tri3es _tro4s _ts4 _tu3ra _tu3ri _u6 _uf2e2 _ul4mei _um3 _umo2 _un3d _un3g _uni4t _un3s _un5s4t _ur1 _urin4 _ur3o2m _uro2p _ut2a _ut3r _\xc3\xbc2 _v2 _ve4r _vol2 _voll3e _vo4r _w2 _wah6l _wa3re _we2 _weg3 _wi4e _wor2 _wor6t5en _x4 _xe1 _y4 _ya4l _z4 _zah4n _za4s _zi2e _zwe4 6a_ 2aa a1ab aa2be aa1c aa2gr aa4l\xc3\xb6 a1an aa2r1a aa3re aar3f4 aar3k4 aar3tr aas3t aat6s3 a3au a1\xc3\xa4 2aba ab1ar a2b1au ab1\xc3\xa4 1abbi 1abd a1be ab1eb abe1e abei3 ab1eil 2a3bel abe2la abe2na ab1erk ab1err ab1erz ab3esse 4abet 3abf 5abfa 1abg 1abh 2abi ab1ins ab1ir ab1iso ab1it 1abk ab3l 1a2b5la 3a2b5l\xc3\xa4 2able ab4le_ a3blis a2b7lu 3abn a2bo_ 1a2bon ab3r ab5re 1absc ab3s2i ab5sp abs4t6 ab7sta ab5st\xc3\xa4 ab3sz 1abtei 2a1bu ab3ur 2ab\xc3\xbc 1abw 2aby 1abz 2ac_ 4aca a1cem ach1a ach3ak a1chal ach3au a1che a2ch1e2c ach1ei a4ch3erf ach3erw a3ches a3chet 4achf a1chi ach5l ach3m a1cho ach1o4b ach3r achs2p acht1o 4a1chu ach1u2f ach3\xc3\xbc 4achv ach1w ac1in a1cka ack2en a3cki a4ckin ack3sl ack7sta4 acon4n 2acu a1\xc3\xa7 2a1d 4ad_ ada1b a4d1ac a2d1an 3ad5ap a3dar3 4adav 3a2d\xc3\xa4 3add adefi4 ad1ein ade1ra 4ades ade3s2p ades4s ade3st ade1u 4ad2i adi3en adi3er_ ad2ob a2dr 4ad3rec ad4res a3dro ad5ru ads2 ad3s\xc3\xa4 ad3sp ad3st ad4t1 adt3a adt5r 2ae a1e2b a1e2d a1ei a1el_ a2ela a2ele a2eli a1els a1em ae2o3 a1e2p ae1r aes1 a1e2x a2f1a a3fah a3fal af3an af2ar a3fat 2afe a2f1ec a2fent af1erl af4f3l 2a3fi af5l a3f2o af3ra af4rag af1rau af3r\xc3\xa4 af3re af3r\xc3\xb6 af3ru af2sp afs4t 2aft af2t1a af3tab af2tei af2t3r af4t5re af2tur 2a1g 4aga ag1a2b ag3a2d ag1ar ag1au ag2du a4gem a7gen_ age2na a4gent age2nu a5ger age4se age4s3p ages3s a4g5esse age4sti ag3gl 3aggr 4agi 5a2git 4a2g3l ag4lei ag7lo a3g4n a4g5na a5gnat ag6nu a2go a3gon_ a3gons a3gor a2g3re a2g3ri a3gru agsa2 ag4sam ag4set ag6s5p ag7spi ag3sta ag3ste ags3tr a2g1und 2ah_ 2a1ha 2a1he a2h1erh a1hi ahl5a4 ah2l1ei ah5len ah4l3erh ah3li ahl1o ah4l\xc3\xb6 ahl3sz ah3ma ah3me ah4n3a ah1os a2h1\xc3\xb6 ahr1a ah3r2e ah4rei ah1ri ahrta2 ahr4t3ag 2ahs aht3sp a1hu ah1w 2ai ai1a aib3l ai1er aif2 ai3g4 a3ik_ ai3ku ai2lo ai3n a1ind ain4e a3ing ain3sp ai4nu ai3o ai2sa a3isch_ ais2e ais3s a2it a3iv_ a3ivl a3ivs a1j aje4 2ak_ a2ka3d 2a3kam ak4at 2akb akbe4 2akc 2akd 4a1ke a2kef 2a1ki 2ak3l ak4li ak3n 2ako 2a1kr ak3rau 2aks 2akta ak3t2an 2aktb ak5ten 2aktm ak2t3r 2aktst 2a1ku 4a3k\xc3\xbc 1akz 2al al1ab al3abi al3abs a1lac ala5ch al3ade al1af ala6g al3age a3l4a1l al3am al5amp al1ana a1lanc al1ans al3anz a2lar a3lar_ al2arm ala4s al3asi al3ass a1lat al1au al3aug a1l\xc3\xa4 al1\xc3\xa4m al1\xc3\xa4r al4berh al4b3erw al2b3l al2boh al2br alb3ru alb3s al2da al2d\xc3\xa4 al3dri ald3s2t al3du 4ale 5a2l1e2b 5a2l1ef a4l1eh a2l1ei a2l1el a3len_ al3ends 6aler_ a2l1erb 5a2l1erf a2l1erh a2l1ert 5alerz a2l1esk ale4t al3eta al3eth a2l1eu 5alex alf2e 3algi al2gli 1algo 4ali a2lim ali4nal al1ins a2linv al2k1ar alk1l al2kla alk3s4 al2lab all1an al2l3a6r al2l1au al2lec 5allee al3lend alli5er_ alli7ers_ 3almb a2l1ob a3log al1ope al1\xc3\xb6 al2\xc3\xb6s 3alph al4schi al3sp al4spal al5s6terb al2ta alt1ak al3tam al2tel alt4ere al4t3erf 4alth al2tri 3alty a1lu al2uf a2lum al1ur a3lus 4aly 2am 4am2a amab4 ama3d ama5g 4ambiq am4e 6ame_ a2meb ame2n amer2 ame3ra a2meri ame3ru a4mese a5met a3mie a3mil amil5l 4a3mir ami3t2a ami5ti am4m\xc3\xa4 am2min ammu2 4amo 3a4m\xc3\xb6 ampf3a2 am3pr am2s am3sa am3str 3amt_ am2t1a am4t3ern am4th am2to am2t\xc3\xb6 am2t3r am4tre am2tu 4amu am3unt a1na 6ana_ ana3c a3na3d anadi1 2anan 4ana5s2 2anat an1\xc3\xa4s 4and_ ande4s an2d5r\xc3\xbc an2d1ur 4ane an1e4c an1ek 5a4n1erb an3eth anft5s 4ang_ 3angeb ang5erl ang5erz ang3l an2gla an2gl\xc3\xa4 an3go ang3ra 1angri 4angs_ ang5sc ang6s5po ang3str 3an3h 4anho 4a3n2i ani3els ani5ers_ 5a4nim a4n3ins 6anj an2kan an3k4l an4kl\xc3\xb6 an2k3no an2k1r ank3ra ank3r\xc3\xa4 ank5ti an2ky 1anl 3anli 4anmo 2ann 3an3n2a 3ann\xc3\xa4 an5ne an3od 2anom an1or a1n\xc3\xb6 3anr 3ans\xc3\xa4 1ansc an3s2en an2seu an2s1pa 1anspr an3s2t an5stei an3s2z 1ant\xc3\xa1 1antei 3antenn an3th 2anto 1antr an2tro 3antw 6anu a3nus a1n\xc3\xbc 1anw 3anw\xc3\xa4 2anx 2anz 3anzah 3anzei anz5erst an2z1i4n 3anzo 3anzu 3anz\xc3\xbc an2zwi ao1i a1op a1o4s5 a3ot_ 2ap_ 4a1pa a1p\xc3\xa4 a1pe a2pe_ ap2fa a3pfl a5ph\xc3\xa4 a1pi 2a2p3l ap2n apo5s ap3pl 2a1pr ap2sc 2apu 2ar_ 2a1ra ar2ab4 ara3d2 a2r3al ar1ans ar3anz 4arar a2r1au a1r\xc3\xa4 2arb_ 2arba ar2bau ar2bec arb3eie 2arben 2arbi ar2b5l 2arbr 2arbs2 arb3sp 2arbt 2arbu ar2b3un ar1c 2are a2rea are5b a2ref ar1eff a4reg a2rein a5ren a2rena a2rene ar2ent ar2erf a2r1erh are3u ar2ew 2arf ar2f3r ar2gl ar4gn 2arh 4a3ri ar2ia a4r1im a4r1ind a4r1int a5riu ar3kad ar2k1ar ark3aue ar2kl ark1r ar2kra ar2kr\xc3\xa4 ar6kri ark3sa ar2les arma5g arm2\xc3\xa4 3armee arm3erk 2arn ar2nan ar5n2e 2a1ro ar1ob ar3o2d a3rol a2rop a2ror 2arp ar4p3f 4arren ar2rh arr3he 4arrt 2ar2s ar4schl ar4schr ar5se ar3s2h ar3su ar2tau art2ho 2arto ar2t3r 2arts 2a1ru a4r1u4f ar3\xc3\xbc 2arv 2a1ry ar2z\xc3\xa4 2arze 1arzt ar2z1w 2as as4al as1au as3aug a2s1\xc3\xa4 6asc a6sca a4schec a2sch3l a2schm 6as2e a2seb aseli5 a2s3e2m a3ses 6ash as2hi a5si_ as3m as1o2f a3sol a3som as1or a2s1\xc3\xb6 a2s1p as3pan as5pe a4s2ph as3pi a4spl as2po as3s2a as5sac as4sei as5s2i as2s1p as2st as4sti as4sto as3str a2st a4s1ta a5s4tas as2tau as3te as3ti ast3rau as4t3re a2s\xc3\xbc 3asyl a1\xc3\x9f a\xc3\x9fe4 a\xc3\x9fen1 2a1t 4ata at1a2be at2a1f at4ag ata3go a4t1akt ata1la at1apf ata3s a2t3au2 a2t1\xc3\xa4 at2c 4a3te a4teb at2en aters4 ater3st a4tew 4atf 4atg at2he 5athl a4thr 4a3ti at1int 3atm 4atmus ato4man at1ort 4atp 4atr atra6t at3r\xc3\xa4 at3re at2s at3sc at4set ats1p 5attac at2t1ak att3ang atta3s at2tei at5th\xc3\xa4 at4t3r\xc3\xa4 4atu atu4n atu4rer at3w 4atz atz1a atz3erk at4z3erw at2z1in atzt2 atz3th a2u 2au_ au3a2 2aub au2bl 2auc auch4se auch3ta 2aud au3di au2dr 2aue aue2b aue3re au5erein aue4s au3et au2fa auf1an auf1er au5fer_ au4ferl 3aufn 2aug au5g6e 4au1i au3in au2is 4auj au2kl 2aul aule6s aul3ese aul4s au3l\xc3\xbc 4aum au2mal au2mer au2m1o aum3p2 6au3n2 au1na aun3s a4unz au1o aup4ter 2au1r4 au3re ausan8ne_ au2sau 2au2sc au3schl au3schw aus3erp au4s3erw au2so au2s1p aus3s6 3aussag aus4se_ au2st aus3tri 2aut_ au2ta au3tan au2t\xc3\xa4 2aute aut5erkr 3auto aut2o3f 2auts 2aux auz2w 2a1v av4a a2vr 2a1w awi3e a1x ax4a ax5an ax2e 2a1ya a1yeu ays2 aysi1e ay1ste 2a1z az4a a3z2i az2u \xc3\xa41a \xc3\xa43am \xc3\xa41b \xc3\xa42b3l \xc3\xa4b2s \xc3\xa41che \xc3\xa4che1e \xc3\xa41chi \xc3\xa4ch3l \xc3\xa42chr \xc3\xa4ch2sp \xc3\xa4ch4st \xc3\xa41chu \xc3\xa41ck \xc3\xa4ck4e \xc3\xa41d \xc3\xa43di \xc3\xa44d1ia \xc3\xa43do \xc3\xa42d3r 2\xc3\xa43e \xc3\xa4f2fl \xc3\xa4f5l \xc3\xa4f3r \xc3\xa4f2s \xc3\xa4ft4s3 \xc3\xa41g \xc3\xa4ge1i \xc3\xa4ges4 \xc3\xa42g3l \xc3\xa4g2n \xc3\xa44g3na \xc3\xa42g3r \xc3\xa4g3s2tr 1\xc3\xa42gy \xc3\xa4h1a 2\xc3\xa43he \xc3\xa41hi \xc3\xa4h5l2e \xc3\xa4h3li \xc3\xa4h5ne \xc3\xa4h5ri 2\xc3\xa4hs 2\xc3\xa4ht4 \xc3\xa4h3tr \xc3\xa41hu \xc3\xa4h1w \xc3\xa41im \xc3\xa43isch_ \xc3\xa41j \xc3\xa41k \xc3\xa42k3l \xc3\xa42k3r \xc3\xa41la \xc3\xa4lbe2 \xc3\xa4l2bl \xc3\xa4le3ru \xc3\xa4l2p3 \xc3\xa4l2s \xc3\xa4l3se \xc3\xa4lt4e \xc3\xa41lu \xc3\xa43me \xc3\xa4mi3en 2\xc3\xa4ml 2\xc3\xa4n_ \xc3\xa41na \xc3\xa4n2dr 2\xc3\xa43ne \xc3\xa4ne2n1 \xc3\xa4n2f5 \xc3\xa4n2gl \xc3\xa4n2gr 2\xc3\xa43n2i \xc3\xa4n5k2e \xc3\xa4n2k3l \xc3\xa4n2kr \xc3\xa4nk2s 2\xc3\xa4nn \xc3\xa4n5n4e2 2\xc3\xa4ns \xc3\xa4n4s3c \xc3\xa4nse3h \xc3\xa41on \xc3\xa41pa \xc3\xa4p2pr \xc3\xa4p2st 1\xc3\xa4q \xc3\xa42r5a2 \xc3\xa4r1\xc3\xa4 \xc3\xa4r1c 2\xc3\xa4re \xc3\xa42r1ei \xc3\xa4re2n \xc3\xa42r3ene \xc3\xa4rg5l \xc3\xa4r2gr \xc3\xa41ri \xc3\xa4r1int \xc3\xa4r2k3l \xc3\xa4rk2s \xc3\xa4r3me \xc3\xa4r1o2 \xc3\xa41r\xc3\xb6 \xc3\xa4r2s \xc3\xa4rt4e \xc3\xa4rt2s3 \xc3\xa41ru \xc3\xa4r2z1w \xc3\xa4s2a \xc3\xa4s2e \xc3\xa4se3g \xc3\xa4se3ri \xc3\xa4skop2 \xc3\xa43s2kr \xc3\xa42s1p \xc3\xa4s6s3c \xc3\xa4s4s3erk \xc3\xa4s2st \xc3\xa44s3t \xc3\xa4s5ti \xc3\xa4s4tr \xc3\xa41\xc3\x9f 2\xc3\xa4t \xc3\xa4t1a2 \xc3\xa45te \xc3\xa4te1i \xc3\xa4te2n \xc3\xa4t2ha \xc3\xa41to \xc3\xa4t1ob \xc3\xa4t1r \xc3\xa4t3ro \xc3\xa4t2s\xc3\xa4 \xc3\xa4t4schl \xc3\xa4t4schr \xc3\xa4t2s1i \xc3\xa4ts3l \xc3\xa4t3so \xc3\xa4t4sof \xc3\xa4t2s1p \xc3\xa4t4st \xc3\xa4ts3te \xc3\xa4t2tr \xc3\xa43tu \xc3\xa4t3v \xc3\xa42u \xc3\xa4u2br \xc3\xa4u1c \xc3\xa4u3el \xc3\xa44uf \xc3\xa4uf2e \xc3\xa4ug3l 2\xc3\xa4ul 2\xc3\xa4um \xc3\xa4u2ma \xc3\xa4um2s \xc3\xa4un2 \xc3\xa4u3nu 2\xc3\xa4u5r 2\xc3\xa43us_ \xc3\xa4u2sc \xc3\xa4u6sch\xc3\xa4 \xc3\xa4u4schm \xc3\xa4u5se \xc3\xa43usk \xc3\xa43usn \xc3\xa4u4sp 1\xc3\xa4u\xc3\x9f \xc3\xa4u2tr \xc3\xa41v 1\xc3\xa4x \xc3\xa41z \xc3\xa21t \xc3\xa11n 4b_ 1ba b1abs ba1cha bach5t4e backs4 2b3adr 3bah bah2nu bah5re bais4 b2ak ba2ka ba2k3er ba2k1i ba2kra 3bal ba1la bal6lerg bal3th 2b3am ban2a 3b2and ban2dr ba3n4e ba5ner 2bang ban2k1a ban4kl 2banl 2b1ans b3anz ba2ran bar3b b2ard bar3de ba2rei bar3ins b2arr bar3zw 3bas ba5sa ba4st ba2to bau3b bau1fr bau3g 3b2auk 3baur bau3s bau1s2k ba1yo 3b2\xc3\xa41c b\xc3\xa45cke 1b\xc3\xa4e 1b2\xc3\xa4r 1b2\xc3\xa4s b1\xc3\xa4ug b\xc3\xa4u3s 4b1b b5ba b5bi b2bli bb3lin b3blo b3bl\xc3\xb6 bbru2c bb2s bbu1 2b3c 2b5d bde1st bdo3 bdu3s 1be_ 5be3a be5an be4at_ be4au_ b2ebe 1be1c be2del bedi4 be1eh be3eta be3g6 2beier bei1f beil2 bei3la 3b2ein bei5na be1ind be1in2h bei3sc beis2e bei3st beit2s1 be3las be3lei be2l1en be2let be3li bel3la bel3sp belt4 bel3ta bel3tr be5lu 1bem 1ben_ be1na be2nal be2nau ben2dr be3ne be4ners be3ni ben2se ben2sp ben2su 3b2enti b1ents ben1un ben5z4 ben3ze be1o be1ra ber3am be2ran ber3as ber1\xc3\xa4 berd4 bere4s ber3esc ber4in_ ber3iss ber3na b1ernt be1rop ber3sta ber3th be3rum 1be1s2 be3sa be4s3er be3slo be3spo bes5s4e b3esst_ bes3sz 3bet be3th be1ur 3bew 2b1ex 1bez 2b5f4 bfal2 2b5g4 bge3 bges4 2b5h 1bi bi2e bi3ens bi3ent bie2s bi2ke_ bi2kes bi3ki bil4a 2b1illu bi1l\xc3\xb6 bi2lu bi1na 2b1inb bin2e 2b1inf 2b3int bi2o bi3on biri1 3bis bi5se bi2sol bis4s3c bi4st bi2t b2i3ta bi3te bi3to 2bi4tu b2i5tus biz2 bi3za 4b3j 2b5k4 b2l2 2bl_ b4la_ bla3b6 4b3lad b3lag b6lanc 6blasser b6latt bl\xc3\xa4s3c 3blea b3lee 2b5leg b3leh b5lein ble3l b4lem b4ler b5lese 3b4let 2blich 3blick b5lief 2b3lis 3blitz 1b4lo b6loc b5lok 2b3lun blu4ter 3bl\xc3\xbc 2b5m bmu2 6b5n2 bni2s1 1bo bo5as bo2b3l bo3b4r bo2c bo3ch bo3cke bo3d2 bo2e3i 2b3of bo1is bo2lan 3bon_ bon2d1e bo2ne 3bons b1op bo1r2a bor2d3i bo2rei bor2s b1ort bor4tei bor2t3r bo2sc bos5p 3bot bo3te bo3th bour4n b\xc3\xb62b3 2b3\xc3\xb6f b\xc3\xb63sc 2b3p2 bpa4g b1q b2r4 2br_ b4ra_ 2b3rad b6rah b6ra3k bra3st4 2bre_ 6brechte 2b3ref 2breg b3reif b3rek 2b3rep b6rer b6res b4ri 2b5riem bri2er 2b5rig b5ris b5roh 2b3rol b4ruc 4b1s b2s3ad b3sand bs1ang b5sat2 bsatz1 b5sc b7scha bs4cu b3se b5se_ bs1e2b b5sel b5sen bs1er b4serf b5ses b5set bs1ex b2s1of bs1op bso2r bs2pl b3spu bs5s2 bs2t bst1ac bst1ak bst3auf bs3t\xc3\xa4t bst1er bst1h b3sto b3stu b3st\xc3\xbc bs3ty b2s1un b3s\xc3\xbc bs2ze 4b1t b3ta btast3r b3t\xc3\xa4 b5te b2t1h b3to b3tr b3tu bt\xc3\xbc1 b2u bu2chi bu2e bu2f 3bui bul2la 2b3umk bu3na 2bunk b4urg bu3r4i bu2s bus3cha bu3se bu4s1er bu4s3p bus1u bu3\xc3\x9fe 1b2\xc3\xbc b\xc3\xbc1c b\xc3\xbcge2 b\xc3\xbcgel3e 2b3v 2b5w 1by by1a by1n by3p by4t 2b5z2 bzei2t1 2c_ 1c4a 2ca1b ca1ch cae3 3caf ca3g4 ca1h 3cal ca1la cal3t 3cam 3car car3n ca3s2a3 ca3th ca1y2 c\xc3\xa43 4c1c cch2 4cd c1do 1ceb 2cec ce2dr 2cef ce1i 1cen ce3nu 1cer ce1ro ce1st 1cet ce3ta ce3ty ce1u 1c\xc3\xa9 2c1f c2h 4ch_ 2chab ch3abi ch1ah ch1ak 5chanc ch3anst 4chanz 3chao ch1ap 4char_ ch5atm 3chato ch1\xc3\xa4rm ch1\xc3\xa4s 1ch\xc3\xa2 2chb 2chc 2chd che4be ch3eben ch3echt 3chef 4chei ch1eim 4chentw che3rei 2cher\xc3\xb6 ch1ess ch1ex 1ch\xc3\xa9 2chf 2chg 2chh 1chia ch1inf 2ch1inh ch1ins ch1int 2ch1inv 3chiru 2chj 2chk 2ch2l2 ch3lein 2ch2m ch4mu 2chn4 ch2na ch5ner 2chob cho2f ch1off ch1oh ch1orc 2chp ch2r2 2chre ch3rh 3chron 4chs 4cht 2chuf 2chuh 2chum 2chunt 4ch\xc3\xbc 2chv 2chw 2chz 1ci ci1c ci2s c1j c4k 4ck_ ck1a 3cka_ ck3aa 2ckac 2ck3al ck5am 2ck3an 2ckau ck1\xc3\xa4 4ckb 2ckc 2ckd 1cke 3cked 2ck1ei 3cken ck1ent cke2ra ck1erh 4ckerh\xc3\xb6 4ck3erle 2ckero 2ck1err 2ckese 2ckex 4ckf 2ckg 2ckh 1cki 2ck1id ck1im ck1in 2ckk 2ck3l 2ckm 2ck3n 2ck1o2 ck1\xc3\xb6 2ckp 2ck5r 4cks 4ckt ck5t2e ck3ther 1cku 2ck1um5 2ck1up 2ckv 4ckw 1cky 4ckz 3c4l2 cla1q clet4 clo1 c2m 3co2 co3b co3ch co3cke co4det co3di coi2 co3it co3la co5l2o co3ma co3mec com4te_ comtes4 co3mu con2n co3ra co4re co3ri co4te co3th co3v c\xc3\xb44 2c2p 2c1q c4r2 cry2 2c2s cst4 c3s2tr 2c1t cte3e c3ti4 c3to ctur6 3cu cu2p3 cussi4 1cy 2c1z 4d_ 3da_ da1a 2dab d2ab\xc3\xa4 da2ben 3d2a1b4l 3dac da2cho 4dachse da2de da3der da3dr da1er 2d1af d3ag dago3 da3gob da1ho da1is da1l4a 2d3alar dal3b4 da1l\xc3\xb6 2d3alt 2d3amma 2d3amm\xc3\xa4 damo3 d4amp 2d3amt d2an_ dan4ce_ 2d1and 2d1ang 3dank dan4kl dan5kla dan4k1o 2danl 4d1ans 2danw 3danz_ 4danzi 2d1ap d2aph da2r dar3a 2darb6 da3re 3d2arl 2darr dar3s 2dart d2arte d2arw das2 da3sh da5st 3dat date4 4d3atl 4datm 3dau3e4 2d1au2f 2d1aus 2d1\xc3\xa4h 2d1\xc3\xa4mt 2d1\xc3\xa4ng 2d1\xc3\xa4p d\xc3\xa43us 2d7b6 dbu2 2d1c 4d1d2 d3da d3de d3dh 1de de3an de5a4t de3b6 3de1c de2cka de1e2 d1eff deg4 de3gl dehe2 2d1ehr 2dei d2eic 3d2e1im de4l1\xc3\xa4n de2l1ec de3l2ei 2delem de2len 2d1elfm del4la del4lei de2l1o de3lor de2l\xc3\xb6 del4san del2s5e del2so del2s1p del5ster delt4 del3ta del3tr 2d1emp d2en_ de2nal de4n3end 4denerg den4k3li den3sc 4densem dens5tau den5th 2dentw de1on d4er_ de1ram de2r3ap der2bl 2derdb de2r1e2b der3eck de2rei de3reis de3r4erb der4erw 4d3erh\xc3\xb6h de5ric de3rik 4d3erkl\xc3\xa4 de1ro de2rop d3ersat dert2s de3ru de4ruh de4rum de2s de4s3a desa2g des1\xc3\xa4 3desc de4seh de4sei des3eil de4s3en de4s3et des1in des1or des1p des3s4 des5sen dest5alt de5stang de4sto dest5rat de3stri des1u 3det deten4t 4d3etw de1un de1us 2dexp 2d3f dfi2s 2d1g dga2 d4ge_ dge6t1e dge2tr d3gl 2d1h2 d2his 1di 3di_ di4a di5as di4\xc3\xa4 di1ce 2d1i2de di2e die3ner di3eni dien4s di3ens_ dienst5r di3ers_ die4s3c die2t5 3dig di3gn dil2s3 2d1imb di1n2a 2d1ind 2d1inf 2d1inh 2d1init 2d1ins 2d1int di2ob di3o2d di3ph di2ra di4re_ di2ren di2ris 2d1irl 2d1isr dist4 di4ste di2ta di3te di4tei di4t3erl di4t3erm di4t3ers di2t3r di2tu diz2 di3zi 2d1j 2d1k4 4d1l d3le dle2r3a 2d1m d3me 4d1n2 d3ne d3ni2 dnis1 3do_ 2dob 3doba d1o2be 3dobr 3doby do2c 3dog do3ha dol3l2 3dom do2mar do3n4a doni1e do2o 4d1opf 3dopo d2opp do3ra 4d1orc 2d1ord dor2f1a dor2fl dor2fr 4d1org 2d1ort d2os_ do3sp dos3s do4sta 3dot do3un do1y2 2d\xc3\xb6 d1\xc3\xb6f d1\xc3\xb6l1 3d\xc3\xb6r d\xc3\xb64s3c 2d3p2 2d1q d2r2 3d4ra_ 2d3rad drag4 d4rah 2d5rahm 3d4ram d3rand 2drat d3raub 3drauf d3raum 2d3r\xc3\xa4d 2d3r\xc3\xa4t 2d3r\xc3\xa4u 4dre_ d4rea d5real d4reck 3dreh 2d3reic 3d4rein drei3t d4reiv 4drem 4d3ren 2d3rep 4d3rer dre2s3t 2d3rh d4ria 2d3ric d3rieg d4rif 3d4rit 4dritu 2drob 2d3roc 2d3rod 3droh 2drol 2d3rot 2d3rov 2dr\xc3\xb6 3d4ru d5rub 4d5ruf 4d5ruh 4d5rut d4r\xc3\xbc dr\xc3\xbc1b dr\xc3\xbc5cke 2ds d4s1amt d2s3an d2s1au2 d2s1\xc3\xa4n d2s1e2b d5s4eig d2sein d2s1eng d2s1ent d2s1erf d2serh d2s1erk d2s1erz dse4t d4s3eta d3s2ha ds3han d3sho d2s1im ds2inf d3s2kan 4dsl d2s1op dso2r ds1ori d2s\xc3\xb6 d2s1par d2s1pas d2s1p\xc3\xa4 d3s2po d4spro dss2 dst2 d2s1tab d4s3t\xc3\xa4ti d5stell d3s4tern ds1th d3s2ti d4st\xc3\xb6c d5stre ds2tri d1s2tu ds1ums d2sun d1sy ds2zen 2dt d1ta dt3a2d dt3am d1t\xc3\xa4 d5tea d2thei d3ti d1to4 d1t\xc3\xb6 dt3r dtran2 dt3sa dt5sc dt5str dt3t d1t\xc3\xbc1 1du du3alv du1ar du2b3l du3e du2f 2d1ufe 2d1uh du1i 2dumd 2dumf 2dumg 4d3umk 2duml d2ump 2dumr 2d1ums 3d2ums_ 2d1umv dun3d 2d1unf dun2kl dun2st 2dunt du1os dur2 2d1url du2s du3scha du3se 3d\xc3\xbcf 3d\xc3\xbcn 3d\xc3\xbcr d\xc3\xbcrn3 2d1v2 2d1w dwa4 dwes4 dwest1 dy1 2d1z 4e_ 2e1a e5a2b ea2c eadli4 ea3g6 ea4ge eakt4 e3al_ e3alb e5alei e3alf e3alg e3al3k e3all e3aln e3alp e3als e3alta e3alv e3alw e3alz e3am eam3a e4ame eam5ti e4ano e3anz e2ap e3ar_ e3a2ra e3arb eare2 e3a6rene e3arm e3arp e3arsp e3art e3at_ e4atl e4at3s2 eat5t4 eatu4 e3auf e3aug e3\xc3\xa44 e1b 2eba e3bak ebe2i e3beng eben4s5e 2ebet eb4leu e3blie eb5lo eb2o eb\xc3\xb64s 2ebr e3b4ra eb4rea eb2s ebs1au eb3s\xc3\xa4 eb6sche eb4se ebs1i ebs3in ebs1o ebs1p ebs3pa ebs3t2h eb3str ebs1u e3bu eb3\xc3\xbcb 2e5ca e1ce ech1\xc3\xa4 2e3che ech1ei e1chi ech3l ech3m ech3n e2cho_ ech1o4b e2ch3r ech3ta ech3t4ei e1chu ech1uh ech1w eci6a e1cka eck2ar eck3se 2ecl e5cr ecs1 2ect e1d ed4am ed2dr ed4e e3dei ede3n2e eden2s ede2r ed4ge e3d2o e3d\xc3\xb6 ed2s1o ed2s1p ed2s1tr ed2su e3dy 6ee ee5a2 eeb4l ee1c ee2ce eed3a eede3 eed3s2 ee1e ee3ei e1eff e1ei eei4g ee1im ee3ing eel2e e1e2lek ee3len e1emp e1en e2en\xc3\xa4 e3end e3eng ee3ni e2eno e3ent e2e1ra e1erd ee3r2e ee4r3eng eere4s ee4ret e1erm e2e1ro ee1r2\xc3\xb6 e1ertr e1erz ees2 ee3sh ee3st ee2tat ee2th ee1u2 eewa4r e1e2x e1f 2ef_ 2efa e3fab ef3ad ef1ana ef1ank ef1aus ef1\xc3\xa4u 2efe e2f1e2b e2f1em e2fent ef2er 2eff_ 1effi ef2fl ef2fr 2e3fi e4f1i2d e4f1ins efi2s 1efku 2efl ef7l\xc3\xa4n 2e3f2o e3f4ra ef3rea ef4rie ef3rom ef3rot ef3so ef2tan ef1um e1g eg3ast eg1aus eg1d ege4n3a2 ege2ra ege1u eg3lo eg3lu eg5n eg3ni egs4pe egs2t6 eg1ste eg4sto 2e3gu egus3 e1ha eh1ach eh3aka e3hal eh1ap eh2aus e1h\xc3\xa4 e1he ehe3in ehen2t3 1e2hep ehe1ra eher4an ehe3str e3h2i eh3int eh1lam eh1l\xc3\xa4 ehl2e2 ehl3ein ehl3ent eh5ler eh3lo ehl2se eh3ma eh3mi eh3mu eh1na e3ho e5hol ehr1a ehr1\xc3\xa4 ehr1e2c eh4rei eh1ri eh1ro ehr1ob ehr5sch ehs2 eh3sh eh3sp e1hu e2hunt e1h\xc3\xbc eh3\xc3\xbcb e3h\xc3\xbct eh1w e1hy 2ei_ 2ei3a2 4eib ei2bl ei2cho eich5te e2id ei2d1a ei3de 2eidn ei1e ei3el 2eien eien3st ei3et 1eifr ei3g2a eig6e ei5gen ei5ger 2eigew ei3gl 1eig3n 2eigru 2eigt 2eigu ei3k2a ei3kla 2eil_ 2eilb eil3d eile2n1 eil3f6 eil2i eil3ins 2eiln eim3ag ei2mor e1imp ei4mun ei2n3a ei4nas ein3dr 2eindu ei5ne_ ein1g ein2i e1init ein3k ein6karn 3einna ein1ob 3einsat ei3o2 ei3p eip2p5 2eir ei3re e1irr e2is_ ei2sa ei2s\xc3\xa4 ei3so ei3sp eis2pe ei3sto ei2sum ei2t1a ei3tak 2eit\xc3\xa4 eit1h eit2sp eit3t ei4t3um 2eiu 2e1j e1k e3k2a 1ekd eke2 e3ke_ eke3ri e3kes e3key ek4l ek5lip e3k4n e3k2o ek1s eks4t 2ekt ekt3erf ekt3erg ek4t3erz e3k2w e1la el3a4ben el1af el5agi ela2h el1aho e2l1ak el3a2m el1ans e2lant e2l3anz el1ap e2l1ar ela4s el3asi el3asp e3law 2e1l\xc3\xa4 el2da el4d3erp eld5erst eld3erw el3des el3dr elds2 elea4 ele4c 2elei e3leie e6l5eier_ el3eig e2l1ein e4l3einh e2l1el 1e2lem e3lem_ 2e3len_ e2l1ent e3ler_ e2l1erd e2l1erg e4l3ern\xc3\xa4 e2lerr e3let_ e2l3eta e3lex elf4l elgi5er_ elgi5ers e2lim eli4ne el1ita elk4l el3l2an ell3\xc3\xa4nd el5le_ el2l1e2b el4l3ein el3len el3lin ell3sp 2eln 2elo el1of e2l1or elo2ri e3los e1l\xc3\xb6 el2ser el2spr els6tern el2su el2ta el3tak elt3erb el4t3in el2to el2t3r el3tri el3tro elts2 elt3sk elt3sp 2e1lu e7luc el1ur elu2s el1use e1l\xc3\xbc e2lya 2elz el3zwe 2ema e2m3ag ema2k e3mann em1ans e2m1arc e5m\xc3\xa4 em4d3a2 2eme eme2n emen4t3h e2m1erw eme2s em1im em1int emi5ti 2emm emma3u em2mei e3mon e2mop emo5s 3empf em3pfl em2p3le em2sa em5se em3spo em2spr emt2 em3th 2em\xc3\xbc 4ena_ ena2b e1nac enadi4 4enah e2nak en3al ena3l2i en3am en5ana e2nand e3nann en3anz en1ap e2nar en3arr 4enat e3nati en3att e1naue en3auf e2n\xc3\xa4 e3n\xc3\xa4c en1\xc3\xa4r en1\xc3\xa4u en2ce_ en3del end3ess en3do end4ort end3ras end7si end3s2p end3sz en3d2um 2ene e3ne4c en1ech e2nef en1ehr e4nein e2n1el e4nelt e2n3ema 4enen e4n1ent en1epo 4e3n4er_ e4n1erd 3e4nerg e4n3erh 4eneri e2nerk e2n1erl 4enern en3erne ene2ro 4en1ers e4nerst e2n3ert e2n3eru e4n1erw en3erwe en3erz e4n3ess en3eta en3eth en1eup e4nex en3fa en3ga 1engad 1engag en3gi 1engp eng5sc en3gue 2eni e4n1id e5nie eni3er_ eni5ers_ e5nik e2n1im e5nis e3nit enks2 en3k2\xc3\xbc 1enniu en1ob enob4le e2n3oh e3nol eno2ma en1on e2n1op en1o2r e3not e3now 2e1n\xc3\xb6 4enpe en2san en3sec 1ensem ens3eng en3sho en2sid en3s2po enst5alt en4s3t\xc3\xa4t 4ensto ent4ag 1entd ente2n en6t5erb 1entla 1entna 1entsp 1entw 1entz e2n1uf e2n1um e4nums en1unf en1ur e3nus 2enut e1n\xc3\xbc 4enw\xc3\xbc e1ny en4z3erf enz3erg enz3ert en3z2i e1\xc3\xb1 eo5a e1o2b1 eo3ben eo3bi e1of eo3g e1oh e1on_ eo3na e1ond e1onf e1onl e1onr e1ons e1ope e3opf eop2t e1or e3or_ e3ord e3ort eo3s4 e3os_ eo1st eo3u e1o2v e1\xc3\xb62 e1p e3pa epa4g e3p2f4 ep2pa ep4pl ep2pr ept2 ep3ta ep4tal ep5ti 2e1q er1a e5ra_ era2be e1rabi er3abs er3abt e3rad_ er3adm er3adr era3f4a era1fr era2g er5agi e1rai er3aic e2rak er3akr e3rald er3all er3ana er3and e3rane e1rap er3apf er3ar e3rari e1ras e2r3a4si era2\xc3\x9f e2r5atm e1raub er3aue er3aug e1raum e1raz 2e1r\xc3\xa4 e3r\xc3\xa4d er1\xc3\xa4h er1\xc3\xa4m er3\xc3\xa4tz erb2e er3br er3bu er1c erd3anz 1erdb erd3erw er4d3inn 2ere 4e5re_ e3rech er3echs ere4ck er1eff er1e2h 4e3rei_ e3reie er1eig e3reih e2rein er3eis_ ere2l e2r1ele e3rem e5rem_ er3emu 4e5ren_ e5rena e4rense e4r3entf e3reo 4e5rer_ e4r3erf e2r1erh e2rerk er1err er1ers e4rersc e2r1erw 4eres e5res_ er1ess er3e4ti er1eul ere3us 4erf\xc3\xbcr 3ergebn 4ergeh\xc3\xa4 4erget erg3ise er3gl erg3s2 e2r3h 3erhab 2erh\xc3\xbc 4e1ri e2riat e3rib e3rie eri5e4n1 erien5e e5rif erik4 e3rin_ er1ind e4r1ini er1ink er1ins er1int e3rio er1ita erk5te erk5tr 4erlag er3le 4erln erm2a erm3ers er2n1os e1ro_ er3oa er1ob er1of e1rog e2r1oh ero2l e3role er3oly e1rom e5ron er1o2p e4ro2r e1ros e1rou e1row er1\xc3\xb62 er\xc3\xb64d e1r\xc3\xb6h 2er\xc3\xb6k er5p 2err\xc3\xbc er3s2a ers2e er5sen ers3ers er3sk er3smo er3sn er5s4to er3ta er3t\xc3\xa4 er6terei er4tho 4erti ert3ins er3t2o 2e1ru er1uhr er1um er1uns e3rus er1uz e1r\xc3\xbc er3\xc3\xbc2b e5r\xc3\xbcg 3erweck 4erweis e1ry 2erzy e5saa e4s3ab es3ad es3ak e5s4as esa2t es3aus es3av e4s1\xc3\xa42c e3sc es3cap e5s4ce esch4 e6schan e4scu e3se e5se_ e4seb es1ebe es3ehr es3ein es3erz es3eva 2esf 6es3h es1il es1imm es1ini e3sir es3k es5ke es5ki es5kor e4s5ky es3l es4log es3m e3sof e3sol es1op es1ori es2ort es6pei e3s2pek e3s2por e5s4pra 2esr es5sac es3sc es5sec 6essem ess4e3re es4s3erg es2sof es2sp ess1pa es2st ess3tie es3str est1ak e3star es2tau e3stec est5eink e3stel est3erh es4t3ess e1stil est3o4ri es2tri es2tu es3tus e3st\xc3\xbc e2s1um es3umf es3ums es3w e3sy es3z e1\xc3\x9f e\xc3\x9fer2 e\xc3\x9fe3re 2et e1ta eta3b et4ag et3am et4at e1t\xc3\xa4 et1\xc3\xa4h e3te e5te_ et1ein e5t2en etend4 e1t2h et3hai et3hal et3h\xc3\xa4 et3h\xc3\xbc e3ti e4t1i2m e3to eto4b e4t1of eto4s e1t\xc3\xb6 4e1tr et3rah e4t3raum et3rec et3res et4ri et2s et3sc et5schu etsch5wu et3se et3so et3sp ets3t et3sto et3s4tr et2ta et4t3au et2tei ette4n1 ett1h et4t3r et1ups e1t\xc3\xbc etz1a et3zo eu1a eub4 eude3s eu3erei eu3err eu3erz eu2esc eu2g1a euge4n eug6er eugs4 euho2 euil4 eu1in3 eu2k\xc3\xa4 e1um e3um_ eu3ma e3uml e3um4s eums1p eum5st 2eun eu3n2e eu4nei e3ung eu4nio eun3k eu1o2 eu3p eu2rau eu3r2e 1eu3ro e4ust 2eut eu5te eut6schn 2eux eu2zw e3\xc3\xbc 2e1v 4eve e2vela e1w 2e3wa ewa3s e3w\xc3\xa4 2ewe e2we_ ew3et_ ewi2s e3wit e5wo ew2s 4ex_ 1exam 1e6xem e4x1er 3exp ex2tin 2exu 4ey e1z e3z2a ez2\xc3\xa4 ezen3 ezin4 ezi2s \xc3\xa91b \xc3\xa91c \xc3\xa91h \xc3\xa91l \xc3\xa9lu2 \xc3\xa91o \xc3\xa91p \xc3\xa91r \xc3\xa91t \xc3\xa91u4 \xc3\xa91v \xc3\xa91z2 \xc3\x8b1c \xc3\x8b1m \xc3\x8b1n \xc3\xaa1p \xc3\xaa4t 6f_ 1fa 3fa_ fa1b f2abr 3fac fa2ch3i fa2cho 2fad fa2da fade4s 3fa1e fa3fa fa3g f2ah fa1la fal6l5erk fal2s fal3te falt4s fal2z1 2fanb 2fanr 2fanw 2f3anz 2f1ap farr3s 3f2art f1arz 3fas fa3s2a fa3sh 2fat 2f1auf f3aug 3fav 1f\xc3\xa4 f\xc3\xa41c f\xc3\xa4h2r1u 2f1\xc3\xa4rm f1\xc3\xa4rz 2f\xc3\xa4u 2f1b4 2f1c 2f1d f3dr 1fe 3fe_ fe4c fe5che fe2dr fe2ei fe1em f4eie 2feinh fei2nu 2feinw fek2ta fe2l1a fel4dr f1e2lek fe2l1er fe2l1es fe2l1o fel4soh fel3to 3f2em_ 2femi fem4me_ fen3a fe4n\xc3\xa4 3fend fe2no fenst2 f1ent f2er_ fe1r2a fe4rang fe4ranz fe2r3au 3ferei fer3eis fer2er fer3erz f1erfa f2ern 4f3erneu fe1ro f4erpa f2ers_ f2ert f1erw 3fe2s fe4st1a fes3tat fest3ei 4f3e4ta fet4t1a 2f3ex 3f\xc3\xa9 4f1f \xc3\x9f1au \xc3\x9f2e \xc3\x9fe2e f2f3ef \xc3\x9f3ei \xc3\x9fe3in \xc3\x9fe2m \xc3\x9f3emi \xc3\x9fi3k \xc3\x9f5li f3flu f3fl\xc3\xbc f3f4r\xc3\xa4 \xc3\x9f3r\xc3\xb6 \xc3\x9f3ru \xc3\x9f2s \xc3\x9f3s2h 2f3g4 fge1 2f1h 1fi 3fi_ fi3at fi1erf fi2ki fi3kl fi2k1o fi2l3an fil3d fi2les fi5li fi6lin fil2ip 5fin_ f2i1n4a fi3ni 5finn fin4s3 2f1int fi3ol fi2r fis2a fi5s2p fi4s3t fi3te fito2 fi2t1or 5fiz 2f1j 2f1k4 f2l4 2fl_ f3lad 1f6l\xc3\xa4 3fl\xc3\xa4c 2fl\xc3\xa4d f5l\xc3\xa4n 2f3leb 2f3lein f3ler f4li f6lim fli4n f3lon 1f6lot flo2w f6lug flug1a f6l\xc3\xbc 2f1m 2f3n2 fni2s 1fo 2f1ob fob4l fo2na fo2nu 2f1op fo1ra 4f3org fo3rin 3form for4m3a4g forni7er_ for4st for2t for4te for4th fort3r for3tu 2f1\xc3\xb6f f1\xc3\xb6k f\xc3\xb6rs3 2f3p2 fper1 2f1q f2r4 f4rac f5rad f1rah fra4m f3rand 2f5re_ f5ref 2freg frei3ba f3rep f3ric fri3d fri2e 2frig fri3k 1f4ris f3roc f4ron fro2s fr\xc3\xb65s4c fru2 4fs f5saa fs3all f2s1an f2s3as fs1auf f2saut f3sc f5schl fs1e2b f2s1em f3send fs1ent f2s1er fse4t f4s3eta f3si fsi2d f2s1o2 fs3ol f3span f2s1pas f3s2pl f3s2por f2s1pr fs2pra fs2pri fs3s2 f1s2t fs3tak f2stas fs3t\xc3\xa4t f4st\xc3\xa4ti f4stech f3stei f5stel f3str fs4tro f3st\xc3\xbc f4s3t\xc3\xbcte f2s1un f2s\xc3\xbc f5sy 4f1t f4ta_ ft1a2be ft1af ft3al ft1an ft3anz ft1ar f3tat ft1e2h ft1eig ft1ein ft1eis f4t1ent f2t3eti f2t1h ft3hei f3ti ft3rau ft3ro ft3r\xc3\xb6 f3t4ru ft2s1 ft4s3a ft3sc ft6sche ftse2 fts3i ft3st ft4s3t\xc3\xa4 ft5sti f2tum ft1url ft3z 1fu 2fum 2f1unf fun4ko fun2k3r 2funt furch2 fu4re_ fus2sa fus2s1p fus2st fu2\xc3\x9f1er 3fut 1f\xc3\xbc 2f\xc3\xbcb f\xc3\xbc2r 2f1v 2f1w fwa3s 1fy 2f1z fz2a fz2s 6g_ 1ga 7ga_ gabe4n 2gabf gab5l ga1br ga3bu 2gabz ga1c ga3di gadi4e ga1e 3ga5g ga1k ga2ka ga1la 5gamo 2g3amt 2g1anb gan3d g1anf gan2g1a gan2gr gang4st 2ganh 2g3ank 2ganl g3anla 3gano ga1ny ga3pe 2g1arb 2g1arc 3gard ga3re 2g1arm ga3r2o g1arti ga2s1a gas3ei ga2s1i ga2so gas3s ga4ste gas4t3el ga3th 2gatm gat4r gau1c 2g1auf g2auk 2g1aut 1g\xc3\xa4 2g1\xc3\xa4p g\xc3\xa4s5 6g1b4 g5be gber4 2g1c 2gd g1da g2d1au g2d1er g1do g3d\xc3\xb6 gd3r gds2 gd3sz gd1ur 3g4e ge3a2 ge3ba gebe4am ge1c ge3d ge1e2 ge2es geg4 ge3gl ge2ig ge1im ge1ins ge1ir ge2is 6geise2 gei3sh gel6ders ge4l3ers gels2t gel3sz gel3t2a ge3l\xc3\xbc gel3z2 gem4 5gema 5gem\xc3\xa4 5gem\xc3\xb6 ge1na gen2au gen2d3r gen3eid ge4ners gen3g gen3k ge3nor 5gens gens4ei gen7stern gen3sz g1entf gen3th ge3ou 5ger_ ge1ra ge2rab ger3amp ger2an g5ereig ge4reng ge4rens ger2er germ4 ger3no ge1ro ge1r2\xc3\xb6 5gerw ges2 ges4am ges3auf ge5s4c ges3elt ge5sen ge4ser ge5si ge3sp gess4t ge1st2 ge3ste ge5stei ges4tem ge4s3ter get2a 4getap ge1ul 4g5ex 2g1f 2g1g g5ge gge3n2e g2g3l gg4lo gg3n gg4r g3gr\xc3\xa4 2g1h 4gh_ 3g2hi gh3l 3gh2r gh3te g2hu gh1w 1gi gie3f gie3g gi2e1i gie3l4 gi2m gi4mes 2g1ind gi3ne gin2ga 2g1ins gi2o gi3os gi3ro 2gisel git4a gi3tu gi2us 2g1j 2g5k g2l 4gl_ 1gla 3g4lad 2g3lag 5glanz 3g4laub 4g5lauf 1gl\xc3\xa4 gl\xc3\xa4s3c 2gl\xc3\xa4uf 1gl4e 2g5le_ 2g3leb g5lec g3leg 2g3leh g4leic 4g5lein glei4t5r g3lenk 4g5ler g3lese g3lev g3li g4lia 2glib 5g4lie 4g5lif 1g4lik g4lim g5lis 1g4lit 1g4liz 2glo 3g4loa 3g6loc g7loch 3g4lok g6lom 3g4lot 2gls 2glu glu2t 1gl\xc3\xbc 3gly 2g1m2 2g1n2 4gn_ 3g2na g6na_ 4gnah g6nat 3g2n\xc3\xa4 g5neh 4g3neu 4gn3g gni2 g2nie g2nif 4g5nis1 g2no g3not 4gns 4gnt g5nu g6n\xc3\xbc g2ny 4gn3z 1go 3go_ go6a goa3li 2gob 2g1of 4g1oh go1i go3in go3l4a 2g1opf g2o1ra 3gos go3t2h go3tr 3gou 3go1y 1g\xc3\xb6 g1\xc3\xb6f 2g3p2 2g5q 1g2r4 gra2bi g3rah 3grai 2g3rak gram8m7end 3gran g3r\xc3\xa4d 2gr\xc3\xa4u 2g5re_ g4reb g3rec g3rede g4ree 2g3reic g3reit g3rek g4rem 2g3renn gre3no gren6z5ei 2gret 2g3ric gri2e 2grig 2g3ring gro3be gron4 g4ros gros6s5el 2g3r\xc3\xb6h g4ruf 2g3rui 2grum 3g4runs 3g4rup 2g3rut gr\xc3\xbc1b 2g3r\xc3\xbcc 3g4r\xc3\xbcn 6g2s1 g4s3ac gs3ad g4s3a4g g3s2ah gs5a2k gs3all gs5ama gs3amb gs3an gs3as gs3aug g3sc g6sca gsch4 g4schan g6schef gs3cr gse2 g3s2eil gs3en g4s3er gse4t gs3eta gsi2d gs3in g4sl gso2 g5soz gs3p gs5pal gs4pi gs6pie g4s5pin g4s5pl g5s4por gsr\xc3\xbc2 gs5s4 g3stan g3star gs2t1au gs3tauf g4st\xc3\xa4 g5st\xc3\xa4m g3stel gst3err g3s2to g4s3tor gs2t\xc3\xb6 gs2tro gst3ros gs3tr\xc3\xbc g3stu gs2t\xc3\xbcc g4sw g3sy 2g1t2 g5te g2t3h g5ti gti2m gt4s3 gt3w 1gu gu1an_ gu1ant gu2e guet4 2g1uh gu1ins gu1is gu5me gun2e 2g1unf g2ung_ g2unge 2g1ungl 3g2uns 4gunt gu4s gus3a gu5sc gu5se gus5se_ gus2sp gus2st 5gu2t1 1g\xc3\xbc 2g\xc3\xbcb g\xc3\xbcr1 g\xc3\xbcs1 2g1v 4g1w 1gy 2g3z2 6h_ 2ha_ hab2a hab2e hade2 ha2del h3adle ha3dri ha1el haft4s hafts3p ha3go ha3ha hai1es h2aka haki3 4hal_ hal1a halan4c hal2ba halb5s 2ha3le ha3li hal2la h3alp halt3r h3amt h2an_ 2hana h2and h1angr 2h5anr 2hant 2hap ha2pr ha3ra 2h1arb h2ard har3ma har5te h1arti 2has_ 4ha3sa hasi1 h4at hatt2 hau3f6li 2h1aufm h1aukt hau2sa hau4sc hau4spa hau2tr h1\xc3\xa4ff h1\xc3\xa4rz h\xc3\xa46s5chen h\xc3\xa4u4s3c h\xc3\xa43usp 2h5b6 hba2r3a 2h1c h1d 2hea 1heb he3be he2bl he3br he5che he1cho he2el hee3le hee2s he2f he3fe hef3erm hef3ing hef3l hef3r he3fri he2i h1eie h1eif h1eig heine2 hei4neh h1eink he3ism he3ist heit6s3 h1eiw hekt5a he2l3au he2l1ec he3l2ei he3len he3li hel4l3au he3lo he4l\xc3\xb6 he3ma he3mi 1hemm 2h1emp h2en_ he6n3a he4n\xc3\xa4 h4ene he2n1e2b hen3end he2no h1ents he2nu hen3z 2he2o he3on he3op her3a2b her3al her3an 2herap he3ras her4eig he4r3eis he2rel he6r5innu h1erke 2herm he3ro h1er\xc3\xb6 her5th her2z1w he2str he3th he5ti he3t6s he2u heu3g he3x he1x4a he1y2 1h\xc3\x8b 2h5f4 hfel2l1 hfi2s 2h3g2 h5ga hge1 hgin4s 2h1h 2hi_ 2hia h1iat hi1ce 2hi3d h1i4di hi2e hi3ens hie4r3in hif3f6r h2ig hi2kr h2il hi2l5a4 hil2fr hi2n hi3nat hi3nel hin2en hi3n2i hin5n hi3no hin2t5a 2hio hi4on hi3or hi3os 2hip hi2p1h hi2r hi3ra 2hi3re hi3ri hir4ner hi3ro his2a hi4se hi3sp hi4st hi1th hit2s h1j 2h1k4 2hl h3lad h4laf h3lai hl3anz hl1ar h3las h3laug h3laut h3law h3l\xc3\xa4d h3l\xc3\xa4s h3l\xc3\xa4u hl3d4 h5le_ h3leb hle3e h3leh h2lein hle3l h7len_ h2lent h3ler hle2r3a h4l1erg h6l3ern\xc3\xa4 h4l1erw h3les h4lesi hle5ta h3lex h2li h3lik hl1ind h2lo h5loc hl1of hl1op h6lor h3losi h3l\xc3\xb6 h5l\xc3\xb6c h4l\xc3\xb6s hl2san hl2ser hl3slo hl3sp h3luf h3l\xc3\xbcf 2h1m h2ma h3mag h3man h3mar h4m\xc3\xa4c h4m\xc3\xa4h h4m\xc3\xa4l h4m\xc3\xa4u h3me_ hme1e hmen2s h2mi h3mir_ h2mo h3mot hm2s1p h2mu h5musi h2m\xc3\xbc 2hn hn2a h3nac hn3ad h3nam hn3an h3nati h2n\xc3\xa4 hn1\xc3\xa4r h3n\xc3\xa4s hn3d4 hn2e hn3eig hn3ein hne3k h2nel hne4n h2nep h3ner hn4erg h5nerz h2neu hn1g h2nic h2nie hn3im h2nip hn3kl hn2k3n hn3s2k hn4th hnts2 h2nul h3nunge ho3be ho2bl ho2c ho4ch3 ho3ck hoe4 ho2ef ho2fa ho2f3r hohen3 hol2au ho2l1ei 2holo ho4lor 1hols 3holz hom2e ho2med ho5mu h2on 2hop ho1ra hor3d h1org ho3sl ho4sp ho4st 2hot_ ho5th 2hots 1hou2 4ho2w how1e h1o2x ho1y2 1h\xc3\xb6 h\xc3\xb62c h\xc3\xb63ck h2\xc3\xb6r h\xc3\xb64s h\xc3\xb6s3c 2h3p2 h1q 2hr hr1ac hr3a2d h1rai h1rane h3rat h3raum h3r\xc3\xa4u hr1c hr3d h2rec h3rech h3red h3ref h4rei_ h3reic hr3eig h3rel h3ren hr2erg hr2erk hr2erm hr2erz h3re6s3 hre2t hr3eta h3ric hri4e h3riesl h3rin hr1ind h4rine hr1ins h4ris h2rob h3roh h4rom h4ron h2ror h3rou hrr4 hr4s3ac hr2s3an hrs1au hr4s1en hr4ser hr6s1in hr4s1of hr2su hr4sw hrs3z hr4tab hr2t3r hr3tra hrt2s h1ru h3ruh h3rut h3r\xc3\xbc hr3\xc3\xbcb 4hs h4s3ach h2s1an h2s1au hs1e4c hs2ein hs3eins hs1eis h3sel hse4ler h3sen h3ser h2s3ing h2s1of h2s1par h3spen h2spr\xc3\xa4 h2spu hs3s2 hst2a hst3alt h2stau h1stec h3s4terb h4steu hs1the h1s2ti h2s3tie hs4tief h2stor hs2tr h1stun h2s1un h1sy 4h1t h2t1a htab2s h3t4akt_ h3takts h3tal h4t3am ht3a4n ht5ane h4t3ass h4tasy ht3a2t h5te_ h2t1e4c h3tech h2t1ef ht1e2h h2teif h2t1eim ht1ein h2t1eis h4t3elit h4temp h4t3entf h4tents ht3erf\xc3\xbc h4t3ergr h2t1erh h2t1erk ht4erko ht3erre ht3ersc h4t3ersp h4t3erst h2t1erz hte2s h4t3ese h4t3ess h5tet ht1eu h2t1ex h4t1h h3ti h4t1in hti2s hto2 h2t3oly h2top h2torg h2t\xc3\xb6 h3t\xc3\xb6p ht5rak ht3rand h2t3rat ht3rel h3t4ri h2t3ro h3t4roc h3trom h2t3r\xc3\xb6 h2t3ru h2t3r\xc3\xbc ht2sen ht4s3ess ht2sp ht3spa ht4s3par ht4stab ht4s5tur ht3t htue3 ht1und htwa5r ht3z4 hu2b hub1a hu4b3ei hu4b1en hub3l hub5r hu1c hu2h1a hu2h1i huko3 hu2l3a hu2l\xc3\xa4 hu2l3ei hu2ler hu2let hu2l3in hu2lo h1ums h1una huni1 h1up_ h1ups 2hur hur4e hu3sa hu2sc hu2st hu3t2h hu2ti hut4zen hut4z3er h2\xc3\xbc h\xc3\xbc1bel h\xc3\xbch3 h\xc3\xbchne4 h\xc3\xbcs3 2h1v hvil4 2hw hwe1c h1weib 1hyp hy2pe_ hy2t h1z hz2s 2i_ i4aa ia1b4 iab5s i1ach_ i5ad_ i3adn ia1f6 ia3g i5ak_ i1akt i3al i5al_ i5al3a ia2l\xc3\xa4 i5al3b ial3d i5alei i5alent i5a4l3erm i5a2let i5alf i5alg i5alh i5a2lia i5al3k i5all i5alm i5aln ia2lor i5alp i5alr i5als i5al3t4 ia2lu i5alv i5alz i5an_ i1ana i1anc i5and i6a3n2e i6ani i3ann i2ano i5ans i5ant i3anz ia3p2f ia1q i5ar ia2ra iard2 i6ari i3as i5as_ ia3sh i4asi i6a3sp iat2 i5at_ i3ath 1iatr i5ats i5au ia3un i1\xc3\xa4m i5\xc3\xa4r_ i1\xc3\xa4rs i5\xc3\xa4t_ i5\xc3\xa4t3s i1b i2b1ar i2b1auf ib2bl i2b1ei ibe2n1 ibi4k i3bla i3b4le i2b1\xc3\xb6 ib1ra i2b3r\xc3\xa4 ib3ren ib2s ib3sa ib3sp i2b3unt ibus3 4ic ich1a ich3al ich3\xc3\xa4 i1che ich3ei i3cher i1chi i2chin ich3l ich5m i1cho i2ch3r ich2t3r i1chu ich1w i2cka ick2e i1cr i5cu i1d id2an i2d1au i2dee ide5l2\xc3\xa4 ide3le iden3g ide1ra ide3re ide3so 1i2dio 1i2dol i2d3r i3d4ra id1t4 1i2dy ie3a4 ie2b\xc3\xa4 ie2b3l ie2b3r ieb4sto ie1c ie4ck ie2dr ie1e2 ie2f1ak ie2f1an ie2fau ief3f6 ie2f5l ie2f1r ie2ga ie2g5l ie2g3r iegs3c ie3he i1ei i2e2l3a2 iel3d i2ele ie2l1ec i2eli i1ell i2els iel3sp iel3sz ielt4 iel3ta i3e2met i1en i3en_ i3ena i3e4n\xc3\xa4 i3end ie2n1e2b ien2er ien3ere ie3nern ie3ners i3enf i3en1g i3enh i3enj i3enk i3enm i3enn i3e2no i3en\xc3\xb6 i3enp i3enr ien5sc ien3s2e ien5sp ien2st ienst5r\xc3\xa4 ien5sz i3env i3enw i3enz ie1o2 ier3a2 ie2rap ie2r1ec ie3rel ie3r2er ie4r3erz i3ereu i1ergr ier3k2 i1ern i3ern_ ier5ni ier4s3eh ier3sta ier3sz iesen3s4 ies5ser i1esti ie1stu ie3su ie2t1a ie4tei ie4t3erh ie2t3ho ie4t1o ie2t3\xc3\xb64 iet4se iets4t i3ett ie1un i1eura 2if if1ab i2f1arm if1au i5f2en if1erh ife4s if2fl i3fi if5l i1f6la if1l\xc3\xb6 i1flug i1fl\xc3\xbc if3r if4ra i1frau i1f4re if4r\xc3\xbc if2s if3se if2ta ift3erk if2tro ift3s2p i1g iga1i i2g1ang ig1art iga5s i4g5ei ig7eise ige2na i4g5erz ig2gr i2g1im i2g3l ig4le i4gli ig1l\xc3\xb6 ig1lu 2igm i4gn\xc3\xa4 ig4no i3g4ra ig4sal ig5s\xc3\xa4 ig4s3e ig3so ig3s4p ig4spa ig3stei ig4s3to ig4st\xc3\xb6 ig3str ig5stu i1h i2h1ar ihe1e ihe4n ihis3 ih3l ih3m ih1n ih1r i2h1um ihu3s ih1w 2i1i4 ii6g i2i5t i1j i1k i4k3a4k ik5amt i2k1ano i2k3anz i2k1ar ik3att i2k1au ik3aufr i2k1\xc3\xa4r 2ike i2k1ei i2k1erz i2k3eta i2k1in i2k3l ik4lan i2k3n ik2o3p6 i4k\xc3\xb6l ik3ra ik3r\xc3\xa4 ik3re i3kri ik1s2 ik3sh ik3so ik3sz ikt3erk ik2t3r i2kun i3kus i1la i2l5ab il3a2d i2l1ak i2l5a4m il1ans i2lant il3asp i2l1au il4aufb il5aus i1l\xc3\xa43 il2c il2da il4d3ent il2d1o ild5r i2l1e4c ile2h il1ehe il1ein i2l1el i2l1ent i2l1erf i2l1erg i2lerr il2f5l ilf3le il2f3re ilf4s ilg4r ili3en il1ind i2l1ip i3lip_ i3lips ill2a il3l4an il5l2er il3l2i il2mak il2m5at il2m1au il2min 2ilo i2l1or il1\xc3\xb6f il2san il3tr i1lu2 i2lum il3v2 2im_ i2mag ima4ge ima2to ima4tur 2ime i2m1elf i2m1erf i2m1erz 2imi i2m1ins im2mei im4m3ent 1immo im1org 1impo 1impu im2str 2imt 2imu im3unt 2in_ in3ab in1a4c in3ad in2af i4n5a2m i3nara i6narb ina4s i2n3au inau4s in1\xc3\xa4s in1\xc3\xa4u in3dau 3index in3do in2dro 1indus 4ine i2n1e2be i3nec in1ehe in3ei i5nen_ i5nend in1eng i5ner_ i4n3erbe i3n2erh i3nerl i4n3erl\xc3\xb6 i5ners i2n1eu ine3un ine2x inf4 2ing ing1af in4g3a6g ing5sc ing3ska 1inhab 2inhar 2inhau 2inhe i3ni3d i5nie 2inig 2inis i3nitz 3inkarn ink4ste in4nei in4n3erm 1innta 2ino in3od in1or ino3st ino3t i1n\xc3\xb6 in1\xc3\xb62d 2inr ins2 ins4am ins3\xc3\xa4n insch4 in7schl 2insen ins3ent ins3ert ins3h in3sku in5spe in3st 3instal in4s3t\xc3\xa4t in5s4tr 1insuf in3sze int4 1integ in3t2h i2n1uf i3n2um in1unz invil4 i1ny in3ze in3z4w i1\xc3\xb1 4i1o io5a io1c io3e4 i2o3h i3ol_ i3om_ i3oms ion4 i3on_ io3na i3ons3 i2ony i2o1p i3opt i2or i3or_ i3orc i3orp i3ors i2os i3os_ io5se io3sp io3st i3ot_ i3ots i2ov io2x i3oz_ i1\xc3\xb64k i3\xc3\xb6n i1\xc3\xb6s_ 2ip_ i1pa i1p\xc3\xa4 i1pe i3per ipf2 ip3fa iph6 2i1pi ipi3el ipi2s ip4l i1pr 2ips 2ipu i1q i1r4a i3ra_ i3ras i1r\xc3\xa4 ir2bl ir1c ir2e i5ree 2irek i5r\xc3\xa9 irg4 ir2gl i1r2i 2irig 2irk ir2k5l irli4n ir2mau ir4m\xc3\xa4 irme4 ir2m1ei ir2mum ir4m3unt irn3ers i1ro i2ron iro2s i1r\xc3\xb6 irpla4 ir4s ir5se ir5sh i1ru iru2s1 i4s3amt is1an is1au is1\xc3\xa4n 2isb i2sca isch3ar i4sch3e4h i4sch3ei isch6er i4schin i5sching i2sch3l i2schm isch3ob isch3ot isch3re isch3ru isch3wu is3chy i2s3cr 2i3se ise3e ise3ha ise5hi ise2n ise1ra i4serh i4s1erm iser2u i4s1erw i5ses i4s1ex isi2a i2s1id i2s1of iso2n iso6nend is1op 3i2sot i2sp is1pa i4spar is1pe is2ph is3pic i4spo i4spro is3sa is4sau is4s3che is4s1pe is2spr is2st iss1tr is2sum i2st is1t2a is2t3ab i3star is2tat i3stel iste2n is1th i1stil is1to is1tr is2t3re i3st\xc3\xbc isum3p i2s\xc3\xbc i1sy i1\xc3\x9f i\xc3\x9f3ersc 2it_ i1ta it1ac it4akte ital1a it3alt it3am it1ang i3tat it1au i4t1ax 4i3t\xc3\xa4 i4t1\xc3\xa4s it\xc3\xa4t2 2ite i2t1eig it1ein 4itel ite4la itens2 iten3st i4tex it1he i5thr i3ti 1itia i4t1id 1itii i4t1in i1to i5toc i2t1of i1t\xc3\xb6 i1tr it3raf it3rah i2t3ran it3ras it3rau it3r\xc3\xa4u it3re it3ric it4ron i3tru it3run it4s3a2g it2s\xc3\xa4 it2s1e2 it4s5er1 it2s1id it2s1pe it2sti its3tie it2sto it2tar it2teb it2tr it1uh i2t1um i2tuns itu5re_ i1t\xc3\xbc i3t\xc3\xbcl i3ty 2i1u4 ium2s iu5se i1\xc3\xbc 2i1v iv1ang i2veb i2v1ei iv1elt ive4n i2v3ene i2v1ent i3vol i2vr i2v1ur 2i1w ix2em i3xi i1xo ix3tu i1z i2zan iz1ap iz1au ize2n i2z3ene i3zer i2z1ir iz1ob i2z1\xc3\xb6 izt2 iz3th i2z1w \xc3\xad1l 2j_ ja1c jahr3ei jahr4s ja3la ja3ne ja3st 2jat 5j\xc3\xa4 je2a jean4s je1c je2g jek4ter jek2t1o2 jek2tr je2p jes1t je2t jet1a jet5r jets4 jet3st jet5t jet1u4 je5v ji2v j2o joa3 jo2b1 jo2i joni1 jo1ra jord2 jo2sc jou4 joy1 4j\xc3\xb6 j2u ju2bl juden3 jugen6 jugend5 ju2k jung5s jur2o ju2s jute1 2j1v 4k_ 1ka 3ka_ ka2a ka3ar kab2bl ka2ben 2kabh ka1bl 2kabla 2kabl\xc3\xa4 kab4le 2k1a2bo ka3b6r 4k3abs ka1c k4ade 3kadi k3adr ka1fr kaf3t ka3g kai5 ka1in ka3ka ka1la ka2lan kal3bl ka3lei ka4lens kal5eri kal2ka 2kall kal4tr k4am k5a2ma kamp2 ka2nau k1anb kan3d4 2kanda kan2e 2k1ang 2kanl 2k1ans 6kantenn ka3nu 2kanw k4anz_ ka2o 2kapf 3kara k2ard 3ka3re k2arg kari3es 2karm k2arr kar3t 2karti k2arw ka3se kasi1 ka4sp kas1t ka4sti ka3ta ka3th ka2t3r 2katt kau2f1o 4kaufr 2kaus k1ausg k1ausw kau3t4 2kauto 1k\xc3\xa4 k1\xc3\xa4mi k\xc3\xa4r2 k\xc3\xa44s3c k\xc3\xa43se k\xc3\xa41th 2k1b4 k5be kbo4n 2k3c 2k3d kdamp2 ke1c ke3d kefi4 kege2 ke2gl kehr4s 2k1eic 4kein ke1ind keit2 ke2la ke3lag kel1au ke2l\xc3\xa4 4k1e2lek ke3let kel3sk kelt4e 4k1emp ken3a ke4n3ei 4kengag ken3s2k ken5stei ken3sz k2ente k3enten ken3th 4k1ents 2kentw 2keo 4ke2p3 k2er_ ke1ra ke2ran ke2rau ke3reig k3erh\xc3\xb6 ke6r5innu k2erl k4erl_ k2ern ker4neu k1ero k2ers_ ker3z2 k1e4se ke5sen ke4t3a keten3 ke2t3h ket3z2 2k1e2x 2k5f kfi2s kfr\xc3\xb65 2k1g4 kge1 2k1h4 kho3m ki3a6 ki1c ki2d ki3da ki3d4r ki2e ki3ern ki1f6l ki1fr ki3k4 ki3l2a ki3lo 3kin_ 2kinh k2ini ki3n4o 2k1inse kin3sh 2k1int ki3o 3kirc ki5s2p kis2to 2kiz ki3zi 2k5j 2k1k k2l4 4kl_ 2kla_ klan2 k4lar k5last 2k5le_ kle5ari 4k5leh 4k5leit k3lem_ 2k3ler kle2r3a 2k3leu kle3us k5lich 3klim klit2s 4k5liz klo2i3 k3lu k3l\xc3\xbcc k3ly 2k1m k2n2 k4nei kni4en_ kno2bl 2knor 3k4n\xc3\xbc 1ko ko5a ko4al 2kobj koff4 koh3lu ko1i2 3kom ko2min k2on kon3s2 ko3nu ko1pe kop4f3en kopf5err kop2t ko1r2a ko3ran 4k1orc kor4d3er ko3ri kor3m kor4ner ko3str 3kot ko3ta kots2 kot3sp k3ou 3kow k1o2x 3k\xc3\xb6 k\xc3\xb62f 2k3p4 k1q k2r4 2k3rad k3rats 2k1raum k4raz 2kr\xc3\xa4t 4k5re_ 2krea 2k3rec 2krede k3reic kre1i2e k3reih 2k3rh k3ric 4krip k4ron kr\xc3\xbc1b 4ks ks3all ks3amt k2s1an k2s1au ksch4 ks1e2b k2s1em k2s1ers ks1ex k2s1in k2s1o2 k3sof k5son ks1pa k3spe ks5s4 ks2t2 k4s3tanz kstat4 k3stau k1ste k2stea k5stei ks3ter k1sti ks3tie k2stor k2str\xc3\xa4 k1stu k2stum k2s1u k1sy ks2zen 4k1t kt1abs k2t3ad k3taf kt1akt k3tal kt3am kt1an kt3anz k2t3a2r kta4re k2t1au k3te kte3en k4t1ei k4temp k4tent k4t3erfo k4tex k2t1h k2t1id kt1im k2t3ing kt1ins k2t1of k3top kt1ope kt4ran kt3ras kt3run kts4 kt3se kt3st kt3t2 k2tuns kt3z ku1c ku3la 4kulp 2k3uml kum4s k2u3n2a kun6s4 kunst3 2kunt 2k1up_ kuri2 kuri4er ku2ro kur4sp kur4zen ku4schl ku2so ku2sp ku2s1t 1k\xc3\xbc 2k\xc3\xbcb k\xc3\xbc1bel k\xc3\xbc1c k\xc3\xbcr4s 2k1v 2k1w 2k5z2 kze3l 6l_ 5la_ la3ba 2laben 2labf 2labg 2labh 2l1abl lab2o l2a1b4r la3bra 2l1abs 3labu 2labw la3che 1lad la7den la3di l3adl 4ladm 2l3adr 5ladu l3adv 1lae la2ga la5ge lag5eis la4gl la4gn lag1ob la2gr lag5se lahn3 2la1ho 1lai 1laj la2k1i la1k4l 2l3al la3ma l4ami l4amp 2l3amt 1lamu la4mun la2na l2anc 5l4and lan2d3a lan6d5erw lan6d5erz lan4d3in lan2dr 2l1anf langs4 2lanh 4lanl 2l3ann l1ano l1anp 2lans 1lanx lan2z1w la1or l1a2po6 lap4pl la2r1an 2l1arb la2r1ei la6rene 2larm lar3st 2l1art lar3th la3ru la2sau la3se 2lash la2so 2la4sp 5lasseri 5lassern 5lassers lat2a 2l3ath la2t3ra lat4s lat4tan lat4t3r lau4fer lau2fo l2aufz l1ausg 2l1ausl 2l1ausr 2l1auss l1ausz 2lauto 2law lawa4 1lax l\xc3\xa41c 7l\xc3\xa4ds 7l\xc3\xa4dt 4l\xc3\xa4f 2l1\xc3\xa4hn 3l\xc3\xa4nd l2\xc3\xa4r_ l\xc3\xa4r2ma l\xc3\xa44sc l\xc3\xa43se2 4l\xc3\xa4t 4l\xc3\xa4ub 4l\xc3\xa4uc 4l\xc3\xa4ue 7l\xc3\xa4uf 1l\xc3\xa0 4l1b2 l3bac lb3ang lb3arb lb3b l2b3ede l2b3id l2b3ins lb4lat l3bl\xc3\xa4 l2bli l4bre_ lb4ro l3br\xc3\xbc lbs4 lb3sp lbst1e lb4sti lb4sto lb4stu l2b3uf 4l1c l3che l5chi lch3l lch3r lch3\xc3\xbc lch1w 4l1d ld3a2b ld3ad l2d1ak l3dam l2d1an ld1a4r ld5ari ld1au ld1\xc3\xa4r l3de_ ld1ei l3der_ lde3re l3dern l2d1e4se l2dex l2d1im ldo2r l3d\xc3\xb64 l2d3r ld1ra l4dran ld1r\xc3\xa4 l4dre ld1ri ld1ro ld1r\xc3\xb6 ld3sa ld3ska ld3sp ld1st ld1t4 l2d1um l2d\xc3\xbc 1le 3le_ le2au le3ba le3ben_ leben4s3 le2bl lech1a le2chi lech5t4e 3led 4ledd le3de le2e le3ei le3en_ le3f4a le2gas le2gau le2gl le3gr 3lehr leh3r2e 3lei_ lei2br l2eid 4l1eig l2ein_ lei2no l2eint lei2s leis6s5er lei3su lei4\xc3\x9fer l2eit lei8t7ersc leit3st lekt2a 3l2ela le2le 2l1elek le3len le3ler le3les 3l2eli lel3s le2m1o2 2lemp l4en_ le2nal le4n\xc3\xa4 3lene le4n3end 4lenerg l2enf le3ni len3kl l2e2no len3st len3sz l1ents 2l3entw le2nu le1os 2lepo lepositi8 l4er_ l2e1r2a le2r3a6g le2r3au ler5b4 4l3ereig le4r3eim l4erem l4eren l4erer le4rers 4l3erfas 4l1erfo 3lergeh 3l4ergew 2l1ergi ler3k 3lerm le1ro l1err l4ers_ lers4k ler3sz le2ru le3rung 4l1erz les4am le5s4e 2lesel le3sh lesi1 le3s4k les2t le3ste3 4lesw 2lesy le4tag le2tat 2le3th 2leto lets4 le2u 4leud 3leut 2lex 4le5xe l1exz 3ley 2l1f l3fa l2f1ec lfe1e lf1ein lfen2s l3fl\xc3\xa4 lf3lo lf3ram lfr\xc3\xb65 lf2s lfs3tau lfs3tr lf2tr lf4u lfur1 2l1g lg1d lge3ra lg3lo lg3re l3gro 2l1h 3lhi_ 1li 5li_ li1ac li1ak 3lib 3li1c 5lichem 5licher li3chi 4lick li3da 2lido liebe4s lie2n li3ene li5enp lien3st lie4s3c lie2st li3fa li4fe 5lig li2g1a2b li3ke li3ki li3kli li2kr lik4ter li3li li3m2a 2limb 2limp li3n4a 2l1indu li4nef li2nep li4nes 2l1inf ling4s 2l1inh li3ni li4nit 2l1inj lin2ka li2n3ol l2ins_ l2insc 2linsp 2linst 2l1int l1inv li2o lione2 li2p5a 5lipt li3s2a li4schu 2l1isl liss2 3list li2tal li3te li1t2h lits2 lit3sz li3tu 3liu2 2lixi 2l1j 2l1k lk3alp l3k2an l3kar_ lk1arm l3ke lkir5 lk3lo l3k4ra lk3ro l2k3ru lk2s3 l3k2\xc3\xbc lk\xc3\xbc1b 4l1l ll1a2be ll3aben l2l1abt ll1akt l2l3a4m ll5ama ll2anw l2l3anz l3lap ll1arm ll3aug l2l1aus l2l1\xc3\xa4m ll3b ll3d ll1ech l2l1ef ll1eim ll3eise l3l4em l5len_ ll3endl ll3endu l4lents l3ler_ lle2r3a l6l5ergen ll3ernt ll2err l3l4es llg4 ll1imb ll1imp l2l1ind lli5ne l2l1ins ll3l4 ll5m lln2 l2l1ob ll1of ll1opf l2l1o2r l2l3ou ll1ov l3low l4l1\xc3\xb6f ll3\xc3\xb64se ll3s2k ll2spr llt4 ll3th llti2 ll3tr llt5s2 ll1ur llust6 llus5tr ll3z2 2l1m lm3a2b lm1aka l2m1arc lm1ind lm1ins l4m\xc3\xb6l lm3p lmpf6 lm3s2z lm3th 2ln l1na lna6r ln3are l3n2e l3ni l3no l1n\xc3\xbc 1lo 3lobb 2lobj lo2bl l2obr lo3bri 2lof4 4lo2fe 3logi loh2e l1oh4r 3lok lol2a lo2min lo4n1o lo2o 2lopf 2lopt lo1ra lo4r\xc3\xa4 l2orc 4l1or5g6 lo3ro 3lorq l2os 3los_ lo4sa 3lose lost4 lo4ste lo4s1tr lo3sze lo2ta lo3th loti4o lot2s 2lo2v lo3vi 2lox l\xc3\xb62b l\xc3\xb63du 3l\xc3\xb62f 4l1\xc3\xb6fe l3\xc3\xb6hr 2l1\xc3\xb6l 5l\xc3\xb6sc 6l\xc3\xb6\xc3\x9f 2l1p lpe2n1 l3p2f l2p1ho l3prei l3pro lpt4 lp3tr 2l1q lque3r 2l5r2 lru3t2 lr\xc3\xbc1b 4ls l2s3a2d l5s4al ls1anf ls1ang ls1ann l2s1au ls1ec l2s1em ls3ere ls1erg l2serh l2s1ers l3ses l3sex lsho2 l2s1imp ls2kal ls2log ls3ohne l3s2po l2spro l3spu ls5s4 lst2a lst2e l1stec l5stei l5stel l1sti ls2tie l2stit ls2tr l1s2tu ls1um l3sur l1sy ls2zen 4l1t lt1abs lt3ala lt3all lt3alt lt3am l4tame lt3and lt1ang l3tar lt3art l3tat l4t3ato lt1au l5tef lt1eh l2t1eig lt1ein l2t1eis l5t2en lter3a lt3erei l3t2erg lter4sp lte3str lt3e2th l2t1h lt5hei lt2hem l3ti ltimo4 l3toc lt1of l2t1\xc3\xb6 l3t\xc3\xb6r lt3\xc3\xb6t ltra1l l3tr\xc3\xa4 lt3r\xc3\xa4u l2t3re l2tro lt3roc lt3ros l2t3r\xc3\xb6 lt5sc lt2s1e lt4stab lt4stoc lt2s3t\xc3\xbc lt3t lt1uh l2t1um ltu4rer ltu2ri lt3z2w 1lu_ lu1an 4lu2b1 lub3l lub3sz 6luc lu2dr lu2es luf2 2l1ufe luft1a luft1e 4lug lu2ga lu4g5e2b lu4ger lug5erp lu4g3l lu2go lu2g3r lug3sa lug3sp lu2gu 2l1uh lu1is_ lume2 2lumf 2luml l1ums l1umw 1lu4n 2l1una l1unf 2l1uni 4lunt 2lunw lu4pf 2lur lur1c l1urn l1urt 2luse lu2sp lus4ser lus2s1o lus2s3p lus4st lu2st lus2t3a lust3re lu2s1u lu2t1a lu4tal lu2t\xc3\xa4 lut3erg lu2top lu4t5r 3lux 2l\xc3\xbcb 7l\xc3\xbcd l\xc3\xbch1l l\xc3\xbc2s 2l1v l3vo l2vr 2l1w l5wa 1ly ly1ar lye2 ly3et 2lymp 3lyn ly3no ly1o ly3u 2l1z l3z2an lz1ar lz1erz lz1ind lz1o2f lzt2 lz3th l2z1w lz2w\xc3\xa4 lz2wec l4zwer 4m_ 1ma 2m1ab m2abe ma1bl 3m2a1b4r ma2ci mad4 ma3de ma1e2 ma1f ma4ge_ ma4geg ma4gek ma4gep ma4ges ma4get ma4gev ma4gew 2magg magi5er_ magi5ers ma5g6n 3mah ma3ha 2m1akt ma1la ma4l3akt ma2lan ma2lau ma3law mal3d ma3l2er mali3er mal3lo 2m1anal ma2nau 2m1anb man2ce mand4 man3ds ma2net 3mang2 4mangr m4anh 2manl 2mans\xc3\xa4 manu3 m2anw 2manz 2m1arb mar3g2 ma5ri 3m2ark 4mar4o maro3d 4marr mar3st mart2 mar5te ma3ru 3mas ma3s2p ma3sto ma3s2tr 3ma\xc3\x9f m4at ma2tab ma2tan mat4c ma4tel mat3sp 2m1auf ma3un 2mausg ma1yo ma3zu 3m\xc3\xa4 m1\xc3\xa4hn 6m1\xc3\xa4nd 5m\xc3\xa4nn m\xc3\xa41t m\xc3\xa4u4s3c 2m1b4 mb2a mbe2e mbe2n m3br 2m3c 2m1d md1ar m2d1\xc3\xa4 md1ei md3s2e m2d1um 1me meb6 me1c 2meco medi3 medie4 me3e2n meg4 mega5 3meh 2m1eif 2mej me3lant 3meld me2lek 2m1elf_ mell2 melt4 6m5eltern mel3tr 3men men3au me3nor m2ens men3st men6tanz 4m1entn ment6sc 4mentsp 4mentw me1o 3mer_ me1ra me2rab me2r3ap mer2e mer3ein me4r3ens 4m3erg\xc3\xa4n me5ric 3merin mer2kl 3mers mer3z4en 3mes me5si mes2sa messe4r mes2s1o mess1p meste2 me3ta mete2 me3th me5ti 3metr meu1 2mew 2mex 1m\xc3\xa9 2m3f mfan2 mfi4l 4m3g mge1 2m1h 1mi mi1ak mi1an mibi3e 3mi1c mi3da mi2e1i mi2er 3mig mi3gn mi2ki mi2ku mi3l2a 3mil4c milch1 mil4len 2m1imp mi1n2a mi3nal min2e min2ga ming3st mi3ni 3minik mi3n2o 3mirs mir5sc 3mirw mi2sa mise1 mi3sp mis2s3c mi4ste 3mi2t1 mit3es mit3s4 mit5sa mi5tsu 4mitz 2m1j 2m1k4 2m1l m3la m3le ml\xc3\xb63 2m1m m2m1ak m2m1ans mm1anz mma3s4t m2m1au mm1\xc3\xa4n mm1ein mm1eis mme2ra mmer3k mm1inb mm1ins mm1int mmi3sc mmi3s2t mmm2 mm3p mm3sp m2m3um mm\xc3\xbcl2 2m1n m4nesi m3ni 1mo mo4a3 2mobj 3mod mo2dr 2mog_ mo2gal 3moh mo2i moi5r mo2k1l 3mom m2on mo3ne mo4n1er mon2s1 mon4st mon3su mont4a 3mo2o 2mo1pe mo2per 2mopt mo1ra mor4d3a mo2rer morgens6 mo4sk mo3sp mo5s2ta moster4 mo3ti mo1y 3m\xc3\xb6 m\xc3\xb6be2 m\xc3\xb62c 4m\xc3\xb6k 6m1p mpf3erg mpf3erp mpf3err mpf3erz mp2fl mpf7l\xc3\xa4 mpf5li mpf1or mp3lu mp3ta mp3te 2m1q 4m3r 4ms m2s3an m4s1ap ms3as m2s1au m3se m6s1ef ms1erf ms1erw m4s1ex m3so m3spa m2sp\xc3\xa4 ms2po ms3s2 m2stal m1stec m1s2ti ms2tr m2str\xc3\xa4 m1s2tu m3s2t\xc3\xbc ms1um m2s\xc3\xbc m1sy 4m1t mt1ab mt1ak mt3alt m3tam mt1ar mt3are mt1ein m2t1erf m2t1erg m2t1erl m2t1ers m4t1ert m4t3eta mt1eu m2t1h m3ti m4t1im m4t1in mti2s mt1\xc3\xb6s mt2s mt3sc mts1e mt3s2k mts1p mt3spa mt3st mt4s3t\xc3\xa4 mt3su mt3t mt1um mt1urt mt3z 1m2u mu3a mu3cke 2m3uh mu3la 2muls m3umg 3mun mu3na mund3a mu3ne 4m3ungeb mu3no mu3ra mu5ru 5musk mu2s1o mu2s1t mu2su mut1au mut2s3 1m\xc3\xbc 2m\xc3\xbcb m\xc3\xbcl4len 3m\xc3\xbcn 3m\xc3\xbct 2m1v mvol2 mvoll1 2m1w2 mwa4 mwel4 1my my4s3 2m1z 6n_ 3na_ 2n1ab 3n4aba na3ber n3abh n2abo n3abs n3abt 4nabw na2c nach1 nach5s na3cke 1nade na2der 1nadi n3adr 1na1e n1af na1f4r 3nag 5n4ah na2h1a n5ahn n3aig n3air 1nais n1ak 3nako n3akt 1nal n4al_ nal1a2 na2lad na2l\xc3\xa4 3n4ald n6ale na4lent na2lin nal3k nal3l2a nalmo2 2nalo na2lop n4als_ nal5sc nal3t4 na2lu 2naly n6am_ 3n4ame 5na3me_ 5n6amen na3m4n 3namo 2n3amt n1an 2nan_ 2n3a2na n3anb n2anc 2n3ang4 2nank 2n3anl na3no 2nanr 2n3ans 2n3antr 2n3anw n1ar 3n4ar_ 2n3a2ra 1n4ard 3nare 3nari n2ark 2n3arm n2arr 2n3art n4arta na3ru 3nas na4schw 4n3asp n3asy 1nat 3nat_ na3t2h nats1 nat4sa nat6sc 2natt n1au 2nauf n3aug 5naui 1naul 2n3ausb nau3sc 2n3ausg n3ausl 2n3auss 2n3ausw nau5te 1nav navi5er_ navi5ers 1nax 1n\xc3\xa4 n2\xc3\xa4c 3n\xc3\xa4e 3n\xc3\xa4h n1\xc3\xa4hn 2n1\xc3\xa42m n3\xc3\xa4n n\xc3\xa4r4s 2n\xc3\xa4s n\xc3\xa44sc 2n\xc3\xa4u 4n7b4 nber2e 4n1c nc5ab n3cen n3ces n3che nch3m n3chu n2ck 6n1d nd1ab n3daf nd4ag n2d1ak n4dakt nd1ann n2d1anz nd1arb nd1arr nd1art nda3ru n2d1au n3de_ nde3alt nd1ei nd3ei_ ndel4st n3den nden3sk n4d3ents n5der_ n5deri nde2ro nder5ste n3des_ nde4se n3dest ndi2a ndo3c n2d1op ndo3st nd3rat n2d3re n4dres nd3rob nd3rol nd3ros nd3r\xc3\xb6 n4drui n4d5run nd2sor nd2spr nds3tau nd2sum nd3te nd1th nd1t4r n2d1und n2d\xc3\xbc 1ne 3ne_ ne2a ne3an ne3as ne3at ne3au ne2bl 2n1ebn 2nec 5neca 4nech 2ne2e1 neei6 ne3en nee3t n1ef 3nefe 4neff ne3g6 3n2eh n3ehe 4ne2he_ 6n3ehr 2n1ei 3nei_ n2eid 4neif 3neigt 5neigu 4n3eing ne2k nek3t ne2l nel3b 4n1ele ne3len ne3li nel4la 3ne3lo ne3lu 5n2em_ 2n1emb nem2e n1e2mi 2n3emp 2n1ems 3nen n2en_ ne2n3a 4n1endb n1endg 4n1endh 4n1endu 4n1endw ne2n1e2b nen3ei ne4nene nen3erb 4nengu nen3k ne2no nen5s4e 5n2en3ta n1entb 4n1entn nen2tr 4n3ents 4n3entw 4nentz ne2n1u n2env ne1op ne1os ne4p3f 2nepo ne2pos n2er_ ne1ra ne5r4al ne2r3am ne2r3ap ne2rau 2n1erbi ner5eier 2n1erf 4nerfo nerfor4 4n3erf\xc3\xbc n3erg 2n1erh 4n3erh\xc3\xb6 3ne3ri n1erk n3erm\xc3\xa4 2n1ermo 2n1ernt ne1r\xc3\xb6s 2n1err n2ers_ 4n3ersa 3n4ert_ 2n1ertr ne2rup 4n1erwa 4n1erz 3n2es n4es_ ne2s\xc3\xa4 nes4c 4nesia nesi1e 4ne3s4k ne2s1o ne2s1p 4n3essi 5ne2st ne3sta ne2t1an ne2tap ne2t1au ne2th ne2tre nett6sc 2n3e2tu ne2u neu3c neu3g 2neup 5n2ew 2n1ex 3nez 1n\xc3\xa9 4n1f nf1anb n3f\xc3\xa4 n3f2er n5fi nfi3le nf5lin n3f2o nfo3s nft4s3 4ng n2g1ac n2g3ad nga4ge n2g1ak n2g3a2m ng1anz n3gap n4garb n3gas n3g\xc3\xa4 n4g1\xc3\xa4l ng1d4 n4g5ein nge3le n5gen nge5nerw nge4ram n4g5erse n5ges6 ng5hu n2glan ng3lo ng3l\xc3\xb6 ng3lu n4gm ng3ne n4g1or ng3rat ng3r\xc3\xa4u ng3rein ng4sc ng4s3e4h ng4spo ng5s4tel ng3ts n2gue 6n1h n3ha_ n3har n3hau n3h\xc3\xa4 n3he nhe2r n3ho 1ni 3ni_ 3ni4a ni5as ni3ba nib3b 2nid ni2de ni3de_ n2ie nie3b4 ni1el nie3l4a nie4n ni3fa nifi3 3nig nig2a 4n3i4gel ni2g3r nig4s5p nik3ing ni3k4l ni2kr ni3lo n2imm nim2o 2n3imp 2n1in 4n3ind 3ning 4n3inh nin1i n2ins_ 4n3inse n3int n3inv 3nio ni3ok ni3ol ni3os 3n2is ni4schw ni4s1e ni5se_ niso2 nis3s2 nis3th nis3tr ni2s1u 2nit ni1th ni4ti ni3t4r 2n1j 4n1k n2k3ad n2k1ak n3kal n4k3alg nk3anz nk1apf nk1arb nk1arm nk3arti nk1aus n2k1\xc3\xa4h n2k1\xc3\xa4r n3ke nk1ein n4k3erfa n2k1id nk1inh n2k1ins n3kir n3kla nk3len nk3les n2kli nk3lie n3klin nk4lu nk5lun n2k3ne nk3nor n3ko nk1ort nk3r\xc3\xa4t nk3rede n3kri nk3ro nk4sal nks2ei nk2spa nk3spo nk2ta nk4t3it nk4top nk2t3ri nk2tru 4n3l 4n3m6 nmen2 4n1n nna2b n2nada n2nan nn2ar n2nau nn3d n3n2e nn3ein n4n3eis nn3ele nne2r\xc3\xb6 nn3erwa nn3erz nne4s nnes1e n5neu nn3f nn3g n3n2i n3no3b nn1o2r nn3se nn3s2p nn3ste nns2tr nn4th nn1ur 1no 5no_ 2nob no2bla n2oble 3noblo n3obs 3noby no1c 2no2d no3dr 2n1of no2fe 4n3o4ke no2leu n4om nom4e n2on_ no3n4a 2nonk 3n2opa 2nopt 2nor 3nor_ no1r4a nor2d3r 3norh 3nors n1ort 3n2os_ no3sh 3n2oste n1osth no5tab no2t\xc3\xa4 no4t1ei no5th no6tha no2t1op no2tr 3nov 4n1o4x 2n\xc3\xb6d 2n1\xc3\xb62f 4n1\xc3\xb6l 4n5p2 npir5 npsy3 2n3q 4n3r4 nre2s3t nre3sz n5ru 6n1s ns3ab n2s3ad ns3ak n4s3all ns1an n3sand ns3ans n2s1ap ns3art ns1au ns3auf ns3aus n2s1\xc3\xa4n n2s1\xc3\xa4us n6schlic n3schr n4schro nsch7werd ns1e2d n3sem nsen4sp n2s1ent n2s1e2p ns1erf n2s1erg n2s3erh n2s1erk ns1erw n3sex ns3ha ns3he nsho2f ns1id n2simp ns1ini ns3int n3s2kal ns3ki ns3ko ns3ky ns3l ns3m ns3ob n2s1op nsp4 n3spal ns6pei ns3ph n2spr\xc3\xa4 n2spro nsr\xc3\xbc2 ns5s4 n5stad nst1ak n5star n4s3tate n5stati ns2t1au n2ste n3stei nst3eif n3stel n4stem n3step n5s6terbe n5s6terne n5s6terns n5steu ns2tie n5stif ns2tin ns2to n3stoc nst3ort n4strie ns2tu n4s3ty n3suf ns1uh ns2um n2s1un n3sung ns2unr ns3w 4n1t nta3c n3t4al ntal1a nta3m nt2an nt3ang nt3ant n3t2arb nt1ark n3tarz nt4at n2t1auf nt1\xc3\xa4m nt1\xc3\xa4u n3te nte3a nte5au n5t4eb nte1e nte3g6 nt1eh n4teig n4t1ein ntem3p4 n5t4en nten4te nt5ents n5t4er nte3ru n4t5ess nte3v n2th n3the nt1hi nt1ho n3t2hol n5t4hu n3ti nti3c n4tinf n4t1inh ntini1 n5ti3t ntmo2 n5to nto5me nton2s3 n3t\xc3\xb6 nt3rec n5tree nt3reif n5trep nt3rin n5trop nt3r\xc3\xbc nt3sa nt3s2o nts2p nt4s3par nt5sta nt3t n3tu nt3z2 1nu nu1a nu3ar nubi3 2nu1c 3nue nu2es nu3et nuf2 nu2fe 2n1uh nu3k4 n2um_ 2n1umb 2numf 3numm 2numr 2n1um1s 2numz nu4n n1una 2n1und 3nung_ n1ungl 2n1uni 2nunt 2nup 2nur n2u2s nu3sc nu3se 3nut nu2t1a nu5te nu2t3r 3n\xc3\xbc_ 2n\xc3\xbc2b n\xc3\xbcr1c 1n\xc3\xbct 4n1v2 n3vi 4n3w 1ny_ 2nymu n1yo 1nyr 1nys 1nyw 4n1z n2zad n2zan n2z1au n2z\xc3\xa4n n2z1\xc3\xa4r n2z1ec n4zense n4zentz n3zep nz3erha nz3erwe nzi2ga nz3imp nz1of n2z1or nz3th n2z3wa n2z1w\xc3\xa4 nz1wer nzzol3 \xc3\xb1o1 4o_ 2o3a2 o5abs o4ac oa3che oa3chi o4ad oa3de o4ah o4a3i oa3ke oa4kl o5al o6a3la o4a3mi oanne4 o4ar o4as oa3se o4at o1b 2oban 2o3b2\xc3\xa4 2obb ob2e 2o3be_ ob3ein 2oben oben3se o2ber ober3in obe4sp 2ob2i 1obj ob1l ob3la o2b3li 2oblo 1obm 2obo o3bra o2b3re ob6ri ob3ro ob2s2 ob3sh ob3sk ob3so ob3sp 2o3bu 2ob\xc3\xbc 2oc o3ca o1ce och1a ocha2b o1che o2ch1ec och1ei och3l och5m och1o och1\xc3\xb62 och3r och5te och3to o1ch2u och1w o1ck ock2e o3cki ock3sz o1cr o1\xc3\xa7 2o1d od2dr o3deb o3de3i ode2n oden1e odes1e ode3sp o3dex o3dir 4odr o2dre 4o3du 2o1e2 o2ec o3en1 o2es oe3t o3et_ o3ets o1\xc3\x8e 2ofa of3am o2f1ei of2en o3fer ofes3 of2f1a of2f1in of2f3l of2f3r of2fu 2ofi ofi3k of3l of1la of5li 2ofo 2o1fr of3ra of2s of4s3a of4s1p of3st 2oft of2tei of3th 2o1g o2g1ab og3ala oga4t3 o2g1au o4g5ei o3gh ogi2er o2gl o3glo o3g4n ogs4 og3sp o1h4a o1h\xc3\xa4 o1he o3he_ oh1eis o3heit o3hem o3hen o3her_ o3here oh1ert oh1erz o3hes o1hi ohl1a ohl1ei oh3lem oh3len oh4l3erh oh3li oh3lo ohls2e oh2lu oh3m 2ohn ohn3a oh2ni 3ohnm o3ho o2h1\xc3\xb6 ohr1a oh4rin oh1s oh3ta o1hu oh1w o1hy 2oi o1i2d o3ie o1im o1in oi4r o2isc o3isch_ o1ism oi1th 2o1j 2o1k oka3i oka2la okale2 ok2e o3ki oki4o ok3lau ok3l\xc3\xa4 okna3 ok2s1p okt2 2ol o1la o2lab o2l1ak ol1ant ol2ar olars4 ol1auf o1l\xc3\xa4 ol4d5r ol1eie ol1eis o1l\xc3\xa9 ol4fa ol2f3l olf1r ol2fra olf3sp ol2gl ol2gr olib6 oli5en oli5f olik4 ol2kl ol2k3r olk4s ol2lak ol2l1au ol2l1ei ol3ler ol4l3erk ol3lo o3lo o5lof olo3p2 ol1ort o1l\xc3\xb6 ol2pr ol2str o3lu olu2th ol2z1a ol2zin olz3w 2om om1art o2m1au ombe4n o3me_ o2meb ome3c o2m1ei o3m2eis o2mel om3ene o2mep o2meru om1erz omie4t1 o2m1ind om3ing om1int om3ma om1org om3pf omp6l oms2 om3sp o4m3un 2o1n2a on3ab o2nae on3ak o3nal on3ap o2n3ar o3nat on3aus 2o3n\xc3\xa4 onbe3 2one on4eh onens2 onen3st o2n1erb on1erd on1er\xc3\xb6 on5f 4ong4 on3gl ong5sc 4o3n2i o5ni_ oni3d o5nik o4n3im on3ing onli4 onlo2c on3nan onn4e o3no3 ons3a onsa2g onse2l onsi2 ons1p on3ta on6t5end ont5erw on2t1ri on5v 1ony o1o2b oof4 oo2k ook3l o1op o1or oo2tr oot2st 2o1\xc3\xb6 o1pa opa1b4 opa3u4 o1p\xc3\xa4 o1ped o1pei o1pen op2f1a opf3l op1flu op1fl\xc3\xbc 4oph2 o1pi opi3er_ opi5ers_ opin2 op3le op3li 2o3po op4pl 1oppo op2pr 2o1pr 1opsi op3sz 1opt4 op3tr o1q 2or_ or1a or3a2b o1rad 2orak o2r3alm o2r3alp o2ram orani1 or3arb or5att o2rau o3r2\xc3\xa4 or3\xc3\xa4nd or3\xc3\xa4t orb4 or2bar or1c 2orca or2ce 4or2da ord3am or4d3eng or2deu or2d1ir 1ordn or2do ord3s2t 2ordw 4ore ore4a o2r1eck o2r1ef ore2h or1eig o3r\xc3\xa9 orf3ein or2fle or3g4a 2orget 2orgia or2g5l or3gle or4gn 2orgr 2orh o1ri 4o5ril 2orin or1ins 2orit or3k2a or4k3ar ork2s 2orm or2mor or3na or5ne_ or3no orn3st o1ro 2o1r\xc3\xb6 2orq or3rh 2ors2 or5sa orsch5li or3sz ort3an or2t1au ort3eig ort3ein or4tem or4tent or4t3ere or4t3erf or3th or4the or4t3off or2t\xc3\xb6 ort3rau or4t3r\xc3\xa4u ort3re ort3ric ort5sch or2t1um o3ru o4r3un o5rus or3\xc3\xbc o1ry o3s2a os3ad os4an osa3s os4co 2o3se ose3ei o4s1ei ose2ne os4er os2hi o3sho 4o3s2i osi3tr o3s2k os3ka os3ke os3ki os2lo o2s3p o4sper os4po os4pr os2sa os4s\xc3\xa4 os4sei os4s3enk os4s3o os4s3p os4st oss1ta o2st os4ta ost1ab ost3all ost3am ost3ang os5tarr os2t1au o3stei oste2n oster3e os6t5er6we os4t1h os3til o6s1to ost3ran ost3rat ost3r\xc3\xa4 ost3re ost1uf osu4 o1sy os2ze o2\xc3\x9f1el o2\xc3\x9f1enk o\xc3\x9fe2r o2\xc3\x9f3ere o2\xc3\x9f1erf 2o1t o5tari o3tark o5tat o2t1au ot1\xc3\xa4r 4ote o2teb o3tei ote3in_ ote3ins ote4l1a ote5ner o2t1erw ot2he ot3hel o6t1hi o4thr ot2i ot3im otli4 4oto ot1opf ot2or o3tra o2t3re o2t3ri ot3se ot3s2o ot2s1p ot2tau ot3te ot4t3erk ot2t3r ott3se ot3z2e 2o2u oub4 ou2ce ou3e ou1f6l ou4ge o3uh ou4le_ o3um oun4ge_ ouri4 our2ne ou5s2i outu4 2o1\xc3\xbc o1v ove3s oviso3 o3vo 2o1w o3wec owe2r1 o1x ox2e o2xu 1oxy o3xy_ o1yo oys2 oy1st 2o1z2 o3zi ozon3a \xc3\xb4r3 \xc3\xb61b \xc3\xb6be4li \xc3\xb62ble \xc3\xb62b3r \xc3\xb6b2s3 2\xc3\xb61c \xc3\xb64ch3l \xc3\xb62chr \xc3\xb6ch2s \xc3\xb6chst3r \xc3\xb6chs4tu \xc3\xb61d \xc3\xb6de1r \xc3\xb6di3en \xc3\xb62du \xc3\xb61e \xc3\xb6f2fl \xc3\xb6f5l \xc3\xb6g3 \xc3\xb6ge3le \xc3\xb6gen4s1 \xc3\xb62gl \xc3\xb62gr \xc3\xb6g4s \xc3\xb6g4u 2\xc3\xb6h \xc3\xb61he \xc3\xb6h3m \xc3\xb6h1ri \xc3\xb61hu \xc3\xb62k \xc3\xb63ke \xc3\xb6ko3 \xc3\xb6k3r \xc3\xb66l 3\xc3\xb6l_ \xc3\xb6l1a \xc3\xb6l1ei \xc3\xb6l1em \xc3\xb6l2fei \xc3\xb6l1im \xc3\xb6l1in \xc3\xb6l2k3l \xc3\xb6l4nar \xc3\xb6l1o2 \xc3\xb6ls2 \xc3\xb6l1st \xc3\xb6l3sz 2\xc3\xb6n \xc3\xb6n2e \xc3\xb63ni \xc3\xb6n2s \xc3\xb6n3sc \xc3\xb6o1 \xc3\xb61pe \xc3\xb6pf5l \xc3\xb6p2s3t \xc3\xb6r3a2 \xc3\xb6r1c \xc3\xb6r2dr \xc3\xb62r3ec \xc3\xb62r1ei \xc3\xb62r1e2l \xc3\xb6r2erg \xc3\xb6r2f5l \xc3\xb6r2gl \xc3\xb61ri \xc3\xb62r1im \xc3\xb6r2kl \xc3\xb6r1o2 \xc3\xb6rs2e \xc3\xb6r3sk \xc3\xb6r2st \xc3\xb6r5t2e \xc3\xb6r2tr \xc3\xb61ru6 \xc3\xb62r1une \xc3\xb62sa \xc3\xb62sc \xc3\xb6sch3ei \xc3\xb6sch1w 2\xc3\xb6se \xc3\xb62s1ei \xc3\xb62sp \xc3\xb6s4s3c \xc3\xb6s2st \xc3\xb62st \xc3\xb6s3te \xc3\xb6s1tr \xc3\xb61\xc3\x9f 2\xc3\xb61t \xc3\xb64t3a \xc3\xb63te \xc3\xb6t2sc \xc3\xb6t2tr \xc3\xb61v \xc3\xb61w \xc3\xb61z \xc3\xb6ze3 \xc3\xb6zes4 4p_ p4a 1pa_ 5paa 3pack pa3da pa1fra pa3g2 pa1ho 1pak pak2to 1pa1la palat5 1pal\xc3\xa4 2palt pan3d pan4ds pa2neu pan3k4 pans4 pan3sl 3pan3z4 3pap papie8r7end 1parad 1parco pa5reg pa3r2er 1park_ par4kau par4k3l 1pa2ro par5p4 1partn par3z pa4s pa5sa pa5sc pa5se pa5si pa5s2p pa5str pa5su 2pa\xc3\x9f pat4c 1pat4r 1pau3 p5auf pau4st p\xc3\xa42 p\xc3\xa43cke 1p\xc3\xa4d p\xc3\xa43de p\xc3\xa43\xc3\x9f p\xc3\xa46t1e2h p\xc3\xa4t1h p\xc3\xa4t5s 2p1b 2p3c 4p1d pda4 1pe_ pe4a pea4r 1ped4a peed1 2pef pei1 pe1im 5peit 4pek pekt2s 1pel pe2l3a6 pel5d pe2let pe3lin pe4l3ink pel3l2e 1pem pen4al pen3da pe4nen 3pensi pe2nu pen3z4 pe1ra per4an pere2 per4na per4r3a 5pers perwa4 pe3sa pes5s2 pe2st 3pet 1p\xc3\xa9 2pf 4pf_ p2f1ab p2faf p2f1ak pf1ans p2fa6r pf3are p2f1au p2fei pf1eim pf1ein p2fent p3fer_ pf2erw pff6 pf5l\xc3\xa4 pf3lei pf3li pf5lie pf3lo pf3l\xc3\xb6 pf3lu p2for pf3r pf1ra pf1ri pfs2 pf3sp pf3sz pft2 pf3th 2p1g pgra2 1ph 6ph_ ph4a 4ph\xc3\xa4 2phb 2p1hei 2ph1ers 2phf 4phg phi2ka 4phk ph2l 2ph3m 2phn p3hop ph4r 2phs 2ph5t2 4ph7the phu4s 2p1h\xc3\xbc 2phz pi4a5 pi2e pi3en 5pier pi3gn 1pil pin2e 3pinse pi2o pi2pe pi5ri 1pis pit4a pi1th pit2s p1je 2p1k4 pku2 pkur1 1p2l4 4pl_ 3p4la p5lad plan3g 3pl\xc3\xa4 2ple_ ple1c ple4e ple3n 2plerm p5lic p5lif 4plig p4lis p4lo 2p1m 2p1n 1p2o po1c po2i po3id 3pol po2lau po2p5ak po1pe po2pl po3pt po1ral 2porn por3s por4tra por4tri po5s2e po3sp po4st post3ag po6ste pos4tr po3ta 3pote pot2h po2t1u po2w po3x p\xc3\xb62bl p\xc3\xb62c 4p1p p2p5ab ppe1e ppe2n1 pp1f4 p2p1h p3p2ho p2p3l p4ple pp4li p2p3re p2pri pp3sa pp3sp ppt2 pp3ta pp3to p2r4 3prak 3prax 1pr\xc3\xa4d 3pr\xc3\xa4m 3pr\xc3\xa4s 4pre_ 2prec 1pred pre2e1 1prei 2p3rer 3pres pri4e 1prinz 1priv 1pro 3prob pro3be 2proc 3prod 3prog 3proj pro3st 3prot 1pr\xc3\xbcf 2pr\xc3\xbcn 2ps 4ps_ ps2a3n p3s2h p2s1id p2s1\xc3\xb6 ps2po p1stea p1s2ti ps2tu 3psy ps2ze 2p1t p2t1a pt3alb pt3am pt3as pt3at5 p2t3ec p2t1ei p4t1ent pt3erei p2t1erw p2t1erz p2t1h p3ti p4t1in pto5me p2tos p2t3r pt5re pts2 pt3so pt3sp pt3su pt3t pt1um pt1urs p2t\xc3\xbc 3p2ty pt3z2 1pu 3pub4 pu2dr 3puf 2p1uh pu3la 3pulv 3pum 3pun 4pund pun2k pun2s 3pup pu2s pu4s3t 3put put2s 1p\xc3\xbcf 2p1v 2p1w pwa4r 3py1 py3t 4p1z q2u4 que3rel quer5n 4r_ 1ra_ 2r3aac r3aal ra1ar r1ab rab2bl 2rabd ra3ber 2rabf ra1bl rab4le ra2bli rab5r 2rabs 2rabt 2r3abw 1raby ra1ce ra3che_ ra4cheb ra3chen rach4t3r ra2chu r2ack 2radap 3radf ra3di ra4d3r 1rae ra1er r2af raf3ar ra2fer raf1r ra2ga ra5ge ra3gle ra4g5n ra3go r2ahm 2raic rail4l r3air 3ra1k4l ra2kro 3rak\xc3\xbc r4al_ rala2 ral3ab r3alar ral3b 1r4ald 4r1alg rali5er_ rali5ers rall2e 2r3alm_ ra2lo ra3lop r4als r3alt ra2lu 3raly ra3ma ra2mer ram4man ram6m5ers ram4m3u r3amn ram3ste 4r3amt ramt6s r2an_ 2rana 6ranc r2and r4anda r4ande ran4d3er 2r3anf r3angr 4r3anl 2r3anm 2r1anp 2ranr 2rans r4ans_ ran3skr r2ansp ran4th 2ranw ra1or r2ap 2rapf 2r1ar ra4r3in r2ar3k r4as_ ras4a ra3sp 2ra\xc3\x9f 1r4at ra2t1a ra4t3\xc3\xa4 ra5te 2ratta 4rau_ 3raub_ rau2br 4raud rau3en 2rau2f 2raug rau4m3ag rau4man rau2mi ra3umsa 2rausg rau4sp raus5se rau2th raut5s r2ax r2\xc3\xa4d 4r\xc3\xa4f 4r\xc3\xa4g r\xc3\xa43gn 4r\xc3\xa4h 2r\xc3\xa4m 3r\xc3\xa4n_ 3r\xc3\xa4ni 2r1\xc3\xa4r r\xc3\xa44s3c 4r\xc3\xa4ut 2r1b rba2l3a rba3re rb5art rb1auf rb3b4 rb1ech r2b1ent rbe3r2e r3bla rbla2d rb7lasser r4b3last r2ble_ rb5ler rb2o rb6ri rb2s rb4sei rb3ska rbs1o rbst3a rb4st\xc3\xa4 4rc r1ce rcha2 r1che_ r1chen r1chi rch3l rch3m rch3r rch1s4 rch1w r2ck r1cr 2r1d rd1ab rd5achse rd3al r3dan rdani1 r4d1ant r2danz rd1arb rd1ei r2d1elb r2d1e2le r3den rde3nar r5der_ rde3re rd3ernt rde3sp rde3sta rd1ira rd1iri r2d1it r3don rd1os rd1\xc3\xb6s rd3rat rd3rau rdt4 rd1th rd1tr rdvi3 1re 3re_ re3ad rea5g re5aler re4am re3as re2b1a re2b3l reb1r re4b5ra re2b\xc3\xbc r2ech rech3ar 4rechs 3rechte 2reck_ 3rede_ re1el re2en re3er 5refe 2reff 5refl 5refo 3reg 5reg_ rege4l3\xc3\xa4 4reh re2hac re4h3ent re4h1o r2eie 2reig rei5ge rei3l2a rei5mu r1ein re1ind 4reing 4reinn 4reinr rein6sta rein8s7tre re1in2v 2reis_ re2ke re3la 2r1elb re3lei 2r1elf re3lo 2r1elt relu2 r2em re3m4a 4rempf rem2sp 4remu r2en_ r2ena re1nad re3n\xc3\xa4u 3rendit ren3dr ren4gl 2rengp ren3sa ren4sei 2r1entl 2rentn 2r1ents 2rentw 2rentz r2enz re3or 5repe 5repo 3r2er_ re2ra 2r1erb r2erbr 2r1erd 3rere 2r1erf r1erg r1erk 4r3erken 2r1erl 4r3erla 5rerlag 2r1erm r1ern\xc3\xa4 4r3erns 4r3ernt 3re1ro r1er\xc3\xb6 3r2ers_ 2r1ersa r2erse 2rersp r1ert r2erte 2rertr 2r1erz 3r2es_ re2sa res1au 3rese re3s2p 2ress ress2e res5sei 3resu 2reta re2u reu3g2 2reul re3uni 2r1eur r1e2w 2rewa4 re3we 4r3e2x1 3rez 4rezi 1r\xc3\xa9 2r1f r3f\xc3\xa4 r2fent rfi4le_ rfin6s rf5lic r3fl\xc3\xbc r3f4re rfr\xc3\xb65 rf2s rfs1\xc3\xa4 rf4s1id rfs3pr rf3sto rf2ta rf3tau rft4r r3fu 4r1g r2g1ah r2g1ak rg2an rge4an rge2bl rge4ral rg5e4tap r4geto rgi3er_ rgi4sel rg4l r3gla r4glan rg6lei r4g5leu rg5lo r4g5lu r3gn rg2ne r4gno rg1ob r2greg r2g3res rg3ret rg3rin rgs2p rg3str rgt4 rg3th r1h4 2rh_ 2r3ha r4ha_ 2r3h\xc3\xa4 3r4he_ 3r4hen r3hof rho2i3 2r3hol 2rh\xc3\xb6 2rhs 1r2hy ri3am ri1an ri3at ri1ce ri1cha ri3chl 4rick rid4 ri2d5an 2ridol ri1el ri3els ri4em riene4 ri3eni rie2nu ri1er_ ri4e3re ri3ers_ ri1eu ri2fa ri2f1ei ri2fer ri2f1o ri2f5r rif3st rif4ter 3r2ig ri4g5ene 4rigg 5rigj 7rigk 4rigr r2ik ri3kle ri3le ri3ma r2imb ri2met 2rimp rim2s ri5n4a r1inb 2rind r2inde ri5n4e rine1i 2r1inf rin2g3l rin2gr 4r1inh r3init 2rink 1rinn 4r3inner 2rins 3r4ins_ 4rinse r4inspi 2rint rin2t5r 4r1ir r2is ris4a ri4scho ri4schw 3risik ri3so ri4s1p 3riss ris4sa 4rissi ris4st ri4st r2it r3i2tal ri5ti ri3t4r 5ritu ri2x1 1r\xc3\xad 2r1j rjo1 2r1k r2k3ad rk3all r3kla rk4lo rk4lu rk3nor r2k3nu rk3rau rk3r\xc3\xa4u rk3rea r5kri rk3rin rk2s1e rk3sen rk3shi rk2sp rkstati6 rk4stec rk2ta rk4t3eng rk4t3erf rk4t3erw rk2tin rk2t1o2 rkto4b rk2t3r rk3tra rk4tre r2k1uh rk2um rku4n rk1uni 2r1l r3la rla5m rle2a r3l2i rli2s rl\xc3\xb6s3s rl2s1p rl2sto rl3th r5lu 4r1m r2m3ald rm3anz rma2p r2m3aph rm1arm rm1aus r2m1ef rmen2s r2m1ide rm1ope rm1o2ri rmo3s rmt2 rmt3h rm3ums 4rn r1n2a rn3a2b r2n3anz rna4r rn5ari r2n3au rn4aue rnd4 rn3dr r3ne r4nef rn4eh rn2ei rn3eif r4n3eis rne2n r4n3ene r4nerf r4nerg rn4erhi r4nerk r4n1ert r5nes rn4et r4nex rn1g r3ni r4nin r3nod r2n1op rn1or rn1\xc3\xb6 rn3s2\xc3\xa4 rn3s2z rn5t2e rn3th r1n\xc3\xbc r1ny ro5ar ro5as ro4bei 2robj 1robo ro2br ro1c 3rock_ r4o3de roe4 ro3et 2rof roh1l 3r2ohr 1roi ro3in ro3le roll4en 2roly ro2mad ro2mer 4romm r2on 3ronn ron4tan ro1ny ro1pe 2ropf ro5ph rop2s r1or r2ora ro2rat ro3rau ro2r1o ror5th ro1s\xc3\xa9 ro3sh ro5si ro5sk ro3smo ro3sp ros4s3c ro3stu 4ro\xc3\x9f ro4ta ro3tu 3rout ro3z r\xc3\xb63ch r1\xc3\xb6f 4r\xc3\xb6g r1\xc3\xb6k r2\xc3\xb6l r\xc3\xb67le r1\xc3\xb6r r2\xc3\xb6s_ r\xc3\xb64s3c r\xc3\xb63se 2r3p2 rpe2re rpf4 r5p4fl r4pli rpro1 r4ps rp3se r4p3t r1q 2r1r r3r2a rr1amt r5r\xc3\xa4 rrb6 rr1c r3r2e rrer4s rre2st r4rew rr2h rr3h\xc3\xb6 rri3k2 rr2o r2r3ob rro3m rr2st r3ru r5r\xc3\xbc rr\xc3\xbc1b 4r1s r2s3a2d r4s3amt rs1ang r4s3ar r3sc r5sch2e r6scherl rsch4l r5schu r3se rse4ne rs3ere rs1er\xc3\xb6 rs1ers rs1erz r4sex r3sho r5si rs2ka r5skal rs3kat rs2kie rs2kis rs2kl r4sko r4skr r4sku rs3l rs4no r3so r4s1op r4s3ort_ r3s2p rs5s2 rs2t rs4temp rs3ter r3s4terb r3stie r2stin r3sto r4stot r3str r4st3ran r3stu r5st\xc3\xbc r3s2wi r3sy rs2zen r4szi 4r1t r3tab rt3aben rt1abs r2t1ac r2t3ad rt2akt rtal2 rtals1 rt3am r2t1an r2t1ar rt3a6re rt3att rt1auf r2t1\xc3\xa4r r3te r5te_ rtee2 r5teh rt2ei rtei3la rtei3s2 rte5m2e rte2n1 rtens2 rten3st rte1ra rte4ran rt3erei r4t1erh r4t1erk r4t1erl rter4re r4t3ersc rte3s4k r2th r4tha rt1he r4t1hi r3tho rt1hol r3thy r3ti rto3p r2t1o2r rt4rad rt5rak rt3rec r2t3res rtr\xc3\xbc2 r4ts rt4sam rt3sc rts1pa rt2spr rtt4 r2t1urt r3t\xc3\xbcn rt5w r3ty rt3z2 rtz4w ru1a ru3a2r rube2 ru3che ru3cker ru2cku ru2dr 3ruf ru2fa ru3fe ruf4s rufs1p ru3ga 2ruhr 5ruin ru1ins ru1is 2rum 4rumf 4ruml r2ums_ ru4n r1una run2d1a run4d3er 2rundz ru5ne 2r1unf 2rungl 2r1uni r1unm 4runn ru5no 2runs 4runt ru3pr 4r1ur r3u2r1e ru2si rus2s1p rus4st ru4st ru2t1h ru2to ru2t3r rut2s 6ruz ru2z1w r2\xc3\xbc 4r\xc3\xbcb r\xc3\xbc1ben r\xc3\xbc1ch 4r\xc3\xbcg 4r\xc3\xbcmm 2r1v 2r3w 2r1x ry2c 2r1z rz2a rz3a2c rz4ach r2z3ar r2z3as r2z1eng r2z1erf rz1erg r2z1erk rz1erq rz1id r3zof r2z1op rz1or r2z1os rz5te rz4th rzu3gu rz1urs rz1wa r3z2w\xc3\xa4 r3z2wec 6s_ 1sa 5sa_ 3s4aa 2s1ab sa2be 3sabet sa1b4le 4sabs 3s2ac 5saca sa1cr 2sada 2s3adr sa3fa sa4fe 4s3aff sa1f4r 3sag s3a2gr 5s4ai sa1ik sail4 2s1ak sa2ka 3saki s4akr 4sakt 3sal sa1la 5s4alo 4s3alt 5s4alz 3sam 5s4amm 6s5amma 4s3amp s2an_ 2s1a2na sa3nat 2s3anb san2c s2and san4d3ri 3sang_ 2sanh 5sani 2s3anl 2s1anp 2s1ans san3sp 4s3anw s3anz sa2po 2sapp 3sapr 2s1ar 3sar_ 3sara 4s3arb 3s2ard s4are 3sari s3arm 3sars 4sart s3arz s3a4sp sa3stu 3sat sat2a 4s3ath 4s3atl 4satm sa2tr 5satz sat4z3en 3saue 2sauf 4s3aufb 3saum 3saur sauri1 2s1aus s4ause s1au\xc3\x9f sa2vo 3s2ax 1s\xc3\xa4 3s\xc3\xa4c s3\xc3\xa4hn 3s2\xc3\xa4l 2s1\xc3\xa4m 2s1\xc3\xa4nd 5s\xc3\xa4nge 2s1\xc3\xa4r 3s\xc3\xa4t 3s\xc3\xa4ul 2s\xc3\xa4u\xc3\x9f 4s5b6 sba4n sber2 sbe3re sby5 1s2c 2sc_ sca2 4scar 4s3ce 6sch_ 2schak sch4al 5schanz 6schao 5sch\xc3\xa4 6schb 4schc 3sche s4che_ 4schef sch3ei_ 5scheib 4schemp sch5erla 4schess 4schex 4schf 4schg 2schh 3schi s3chia schi4e s4chim 4schk 4schle_ 6schlein 4schmus 4schn_ 5sch\xc3\xb6 6sch\xc3\xb6l 2schp 4schre_ sch5rom 6schs schs4e sch3s2k sch3sti 6scht sch3t4a sch5te 3s4chu 4schunt 5sch\xc3\xbc 4schz 2scj 4scl 4sco 5s4cop 2scs 2scu 6s3d sda3me sde3s 1se 3se_ se3a 4s1e2ben 2sec s1echo sech2s 4s1echt se2ck 5secl 4sede 5see se2e1i4 se1er 3sefa 3seg se2gal se2gl seg4r 3s2eh se2h1a4 seh3ag se3he se4h3erk se4hin seh1l seh3re seh1s se2h\xc3\xbc 2s3ei_ 3sei3b 4s3eig s1ein 7s4ein_ 4seinb sei5n2e 2seing 2s3einh 2s3eink 2seinl 2s3einn s4eins_ 4seinst 4seint 2seinw 4seis 5s2eit 5sek 3s2el_ se2l1a6 sel3ag se3lam se2l1ec 4selem sel3erk se4l3erl sel3ers s1elix 3seln se4l1\xc3\xb6 3s2els sel3sz sel3tr s4e3ma 4s1emp s2en_ 3s2ena se3nac se4nag 4s1endl se4n1ec se4ners 5s4eni 3senk 3s4ens s2ent_ sent4a 4s1entf 2s3entg s2enti 4s1ents 4s3entw 4s3entz se2n1u seo2 3seq 5s2er_ ser3a2d se2r3al se3ref 4s3ereig se4r3eim se4r3enk ser2er 4s3erfo 4s3erf\xc3\xbc ser5g s2ergr s1erh 4serh\xc3\xb6 3seri s1erm\xc3\xa4 s1ern\xc3\xa4 4s3ernt se1rol se1rot s4ers_ 2s1ersa ser5sk seru4 se4r1uf se3rum 5s2erv 4s3erwei se1stu se3su 3set 4s3e4tap se2tat 4s3e2th se1u4n 2sex 5sex_ 4sexa se2xe 4sexp 4s3f4 sfi3le 4s3g4 sge3s4a 2s1h 3sha_ sha2k 4shan 1shas s3h\xc3\xa4 sh2i 3shi_ 3shid 1shi4r sh1n 4shof 3s4hop sho4r shor4n1 shorn3e 3show s3h\xc3\xb6 sh4r s3hy 1si 5siak si3am_ si3b4 3si1c s2ide_ si2deo s2ido 3s2ie si3ene si3err sie2s 3si1f6 3s2ig si3g6n si2g3r sig4s si2k1ab si4k3erl si2ki siko3b si4kr sik3t4 si2ku 3si3lo si3n4a 4s1ind 6s1inf sin2g1a sin3gh sin3g6l sin2gr sing3sa 2s1inh 2sin1i1 4s1inq 4s1ins 2s1int 4s1inv 3sio si3os 3s2is si2sa si4s1e si2so sis1p sis3s 7s2it si2tau si3te si2t3r si3tu six3 1s\xc3\xad 4s5j 2s1k4 4sk_ s2kala s3kam 4s3kas ska4te_ ska4tes 4skb 4sk2e 4ski 5s4ki_ 5skiz s3klas s3kn skna3 4skom 4skor 4s5k\xc3\xb6 s5kra 4sks 4sk5t s7kun 2s1l4 3s4lal 4slan s3l\xc3\xa4 sl5b s3le s3li 3s4lip s3lo_ slo3be s3loe s5l2u s3ly 2s1m2 s3me s3mi s3mu s3m\xc3\xbc 2s3n2 4sna sna1b4 sni1er 4s5not 4sn\xc3\xb6 1so 3so_ 4s1o2b so1c 3soft 3sog so3gl so2h s1ohe 4s5ohng 2s1ohr so3la so4l3ei so3li 4s3oly 3s2on son3au son5ende so2ny so3o 3sor_ so1ral s1orc 4s3ord so2rei s1orga 2s1o2rie so2r1o 3sors so4ru 3sos 5s4os_ s1ost 5sota so3tr so3unds so3unt s1o2ve s1ox s4oz 1s\xc3\xb6 s\xc3\xb62f 2s1\xc3\xb6k 2s\xc3\xb6l s1\xc3\xb6s 1sp2 4sp_ 4spaa 4spak s2pan spani7er_ 4spap 2spara spar5sc 3spa\xc3\x9f 2spat 4s3pau s2paz 3spee 3s4pei 4spel 2s1peri 3s4perr 2spers 2spet 3s6pez 4s3pf 2sph 3s2ph\xc3\xa4 s3phe 3s2pi s4pi4e 5spiel spier4 spi2k 4s5pil 4spip 4s5pis 2spl 4spla 4spl\xc3\xa4 3s2pli 2spo 4s3pod 3s2poi 4s5pok 4spol 4s3pos 4spr_ 3s4prac 2sprax 4spr\xc3\xa4m 4spr\xc3\xa4s 5s4prec 2spred 2sprob 2sprop 2sprot 3spru 5sprun 2spr\xc3\xbcf 3spr\xc3\xbcn 4s3ps s4p3t s2pu 4spun 3s4pur 4sput 4spy 2s1q 6s3r4 srat6s sret3 sr\xc3\xbc2d 4s1s ssa3bo s4s3ac ss1aj s4s3ala s4s3ang ss1ano s4sanz ss1app s3sas2 ss3att ss1au s3s2\xc3\xa4 s3se s4s1ec s4s1ega sse3ha s4sein sse3inf sse3int ss1eis s5sen_ ss2er sser5att ss3erh\xc3\xb6 s4s3er\xc3\xb6 s4s3erse s5s4es sse3ta s3si s5sie s4sint ss3la ss1off s2s1ori s3spe s5s2pek s3s2po ss5re ss5s4 s3sta s5stad sst6e s3stel ss2ti s3sto s3stu ss2tur s3st\xc3\xbc ss1ums 4st_ 1sta 2sta_ 3staa sta2bl stab6s 3s2tad 3staff 6stag 3stah 2stak s5tal_ 2stale st3alp 2s3tan_ st3ana 5s4tand 2stani 2stans 2stanw s2tar 3s4tar_ 3s4tars st3a2s sta4si 3stat 4stat_ s2tati 2st1auf 2staum 2staus 3st\xc3\xa4 4st\xc3\xa4g 4stb 2stc st3ch 2std 4ste_ 3steck ste5cke 1s2teg ste2g5r 3steh 1s2te2i 3steig 4steil 4steing 1s2tel 2stel_ 2s3tele 2stels 2stem 4stem_ 4sten s4t3ends s4t3engl s5tens s4t3entf 2ster 6ster_ s3tera st6erb s3ters 4stes stes6se_ ste4st 2stet 4stet_ 3steti 3s4tett 3steu 5steue st3ev 4s3tex 2stf 2stg 4sth st3ha st1hi st1ho s4t1hu 2stia 2stib 2stie_ 3s2tiel 2stien 3sties 3stie\xc3\x9f 3s2tif 4stig 2stik 3s2til 4stilg 3s4tim st1ins st1int 2stio 2stip 3s2tir st1iro 2stis 2stiv 2stj 2stk 4stl st3le 4stm 2stn 1sto 4sto_ 4stod sto3de s2t3om 4ston 2stopo 2stor_ 2store 2storg 2stori sto1s2t 3sto\xc3\x9f 4stou 4stow 3st\xc3\xb6 4st\xc3\xb6n 4s3t\xc3\xb6t 2stp 1str 2strad 5straf 3s2trah 6strai 4stral 4strans 3strap 3s2tras 3stra\xc3\x9f 4str\xc3\xa4g 4str\xc3\xa4ne 3streb 4stref 3streif st3renn s2tric 4s2trig 3s2tri2k 2s3tris st3roll 3stro2m 2strop 3stru 4strua 4strun 4strup 4sts4 st5sa st3se st3sl st3so st3st st3su st3sz 2st3t 5stub 2stuc 3stud 3stuf 3stuh stum4sc stu4n 4stun_ 3stund s2t1uni 4stunt stu5re st1url stur4s 4st1urt 2stus 1st2\xc3\xbc 4st\xc3\xbcb 3st\xc3\xbcc 4st\xc3\xbcch 2st\xc3\xbcr_ s2t\xc3\xbct 4stv 4stw 5styl 2st3z2 1su 3su_ su1an 3su2b3 4su3bi 5su1c 2s1u2f su3fi 2suh 3sui su3it_ su3la sul2i su2mau 3sume su2m1el 3summ s3umsa s3umst su4n 3sun_ sun6derh s1unf 2s1uni 2s3unt 3s2up su2ra 2s1url s1urs s1urt 3su2s1 su3sa su3sh su3si 3suv 1s\xc3\xbc 4s3\xc3\xbc2b 3s\xc3\xbcc 3s\xc3\xbc2d1 3s\xc3\xbcn 2s3v 2s1w s3we sweh2 4s3wie 4s3wil s3wir s3wo s2y 3sy_ sy2l syl1a sy4n3 1sy2s5 2s1z s3za s3zei 5s4zene s3zent 4s3zet s2zis s3z\xc3\xb6 4s3zu s3z\xc3\xbc 2\xc3\x9f_ 2\xc3\x9f3a2 2\xc3\x9f1b 4\xc3\x9f1c 2\xc3\x9f1d 1\xc3\x9fe 2\xc3\x9f1ec 2\xc3\x9f1e2g 2\xc3\x9f1ei \xc3\x9fe2la \xc3\x9fe2n3a \xc3\x9fen3st \xc3\x9fen3sz \xc3\x9fe2nu \xc3\x9fe3rin 2\xc3\x9f1erk 2\xc3\x9f1erse 2\xc3\x9f1f 2\xc3\x9f3g2 \xc3\x9fge2bl 2\xc3\x9f1h 1\xc3\x9fi \xc3\x9fig4s 2\xc3\x9f1in \xc3\x9f1j 2\xc3\x9f1k4 2\xc3\x9f1l 2\xc3\x9f1m 2\xc3\x9f1n \xc3\x9f1o2 2\xc3\x9f3p2 2\xc3\x9f1r2 2\xc3\x9f3s2 2\xc3\x9f1t 2\xc3\x9f1um 2\xc3\x9f1\xc3\xbc 2\xc3\x9f1v 2\xc3\x9f1w \xc3\x9fwa3 2\xc3\x9f1z 6t_ 3ta_ 2taa 3taan tab4 2tab_ ta2b5an 3tabel 4taben ta4bend 4tabf 4tabg 4tabk ta1bl 2tabn 4tabs t1abst 4t1abt 4tabz ta1c tach3te 3tacu 2t3ada 2t3adr 1taf_ taf2e 3tafel 4taff t1af4r 3tag 5tag_ ta2ga ta4g5ei 4t3agent ta3gl t3ago ta2gr tag4s tag5sc tah4 3tai ta1i2k tai2l ta1ins tai4r 4t1a2ka tak4ta 3taktb 3t2aktu 2takz 3tal_ tal3d 1t6ale tal2en ta4l3ens 5talis tal2l\xc3\xb6 1talo ta2lop ta2lu 2ta2m 3tam_ ta3ma 3tame 3tamg t3amin_ ta3mo t3ampl t3amt 1t2an_ t1a2na t1anb 2t2and tan3da tand4st ta3ne 4t1anf 3tani t2ank tan4k5l tan3kr 4t3anl 2t3anm 2t1anna t4anr t1ans 1tans_ 4t3ansi 2t3ansp t4ant_ 2tantr ta2nu 2tanw\xc3\xa4 t4anz_ 2tanza t5anzu ta3o ta2pes 2tapf t4ar_ 2t1arb 3tard ta6rens 3tari 2tark t1arm t1arti ta2ru 5tary 2t1arz 3tas t4as_ ta3sa 1ta3sc 2ta3se 1t4ast ta3sta ta4ste 1tat_ ta4t1ei ta4tem ta4t1er ta2th tat3he t3atl ta2tom 2tatt tat4t3r t2aufe 2taufw 3taug 3taume 1taus t1ausb tau6schw t1ausd 3t2ause t1ausg t1ausk 2t1auss 2t1ausw 1tav ta3va 3tax 1taz t\xc3\xa41c 1t\xc3\xa4g 2t\xc3\xa4gy 2t\xc3\xa4h 4t1\xc3\xa4lt 2t\xc3\xa4m t1\xc3\xa4mt 3t\xc3\xa4nz 3t2\xc3\xa4p t2\xc3\xa4r_ t\xc3\xa42s4 4t\xc3\xa4tt t1\xc3\xa4ug 1t\xc3\xa4u3s 4t\xc3\xa4x 1t\xc3\xa0 4t3b4 tbe3r2e tblock7en 4t1c t3cha t3che tch2i tch3l t2chu tch1w t2ck t3cr 2t3d4 tdun2 1te 3te_ te4a4 2teak te5al 3team te5an 2t1e2ben t2ech 3techn 2teck te2cka teck4e te2cki te2di 3tee te1ele te1em te2en 4tefe 4teff te2fl teg4 teg3re 4teh 5tei_ teik4 3teil 4teilhe 2tein t1eing 4t1einn 4teinr 4teinz t1eisb teit2 t2ek tek5te 3tel_ 3te2la tel1ab tel1ac te3lan tel1au 3telb tel1e2b 3telei tel1en 3telf 4t1elf_ 3telg tel1in te2lit 3telk tel4l\xc3\xa4n tel3l2e 4tellu 3teln te4l3ost te2l1\xc3\xb6 3telp 3tels 3telt tel3ta te3lu 3tem 5tem_ te2man te2m1ei te2mi te3mis 4temm te2m1o2r 5temper 4tempf tem1st te4m3u 3ten 7t6en_ te2n3a2 te3nac te4nag te4nas t2enb 6t5endf 4t1endl 6t5endp ten3dr te2n1e2b te4n1ec ten3eid 4tenerg ten4erw t1eng_ ten3im ten3in tenk4 t2enl t2eno t2ens tens2e ten3si tens3th 4tentd 4t1entg t1entn t1ents 4t3entw te2nu ten4zer ten3zw te2o te3ob 2teph 5t6er_ te1ral ter3am te3ran_ te2r3as t2erb 6t5erbs 6t5erbt ter3d te2r1e2b te2rel ter3end 4terf\xc3\xbcl ter5g t4ergru te5ria 3t2erka 4t3erkl\xc3\xa4 t2erlu 3term ter4mer ter4n3ar t3erneu t1er\xc3\xb6 ter4re_ t6ers_ t6erscha ter4ser ter4sk 5t4erspr t4erst_ 5t4erstu 3tert2 teru4 te4r1uf ter3z4a 2t1erzb 3t2es tesa2 tes3ac te5sc te4sel te2spr 5te2st tes3tan tes3t\xc3\xa4t test3ei tes6terg 3tet te2tat 4teth 4teti te4tik 6tetl 2teu teu3ere 3teuf 3teum te1un 3teur_ t5euro te2vi te2x te3xa 4t1exe 4texp 3t2ext tex2tr 2t1exz 1t\xc3\xa9 2t5f tfi4l 2t1g4 t3gl 4th_ 2t1h4a 5tha_ 5t2hag t2hak 3thal_ thalt2 t3hap t2har t3hau 4t1h\xc3\xa4 2thc t2he_ 5thea 4theb t2hec 4t1hei t2hein t1hel 3them t2hema 5t2heme 1then 3theni 3theo t1herd t1herr t1herz 1these 3thia 2t1hil t1him t1hin 4th3l 4th3m 2th3n 4t1hoc 4t3hot thou4 t3hov 4t3h\xc3\xb6 3thr2 5thrine 4ths 3thu 4t1hub 4thun 4t1h\xc3\xbc 4thv 1ti 3ti4a ti5a2m ti5an ti6are ti5as tib4 3tibe 3tibl 2tic ti1ce ti6chent ti2d1en t2ie 3tie_ tie3br 3tief_ tieg4 ti1el ti2el_ 3ti3e2n1 ti2er 3tiera 4tie\xc3\x9f ti3et ti1eu ti3fa ti3fe ti1fr 3tig 3tik ti2kam ti3k2an tiko2 ti2kr ti2lei 3tilg ti2lin ti4l\xc3\xb6 tilt4 2tim 3tim_ tim2ma t1imp 5tin_ ti1na t1inb 4t1ind ti5n4e t1inf tin2g1a tin2g3l tings2 ting3st t1init t2inn 3t2ins_ 4tint 4t1inv 5tio ti3or 3tip_ ti3pl 3tipp 3tips ti4que_ 3ti3ra 5t2is tisch3w t2it tit2a 3tite ti2ter tit2h 2ti3tu 5tiv ti2van ti2vel ti2v1o ti4v1r ti2za 2t1j 2t3k4 tk\xc3\xbc1b 4t1l2 t3la 6t5li tlings3 t3lo tl\xc3\xb63s 2t1m2 t5me tmen2s tmen6t tmin4s tmo4de_ tmo4des tm\xc3\xbcll4s3 2t5n4 tna5me tnes4s 3to_ toa4 to5ar to5at 1tob to3be 2tobj tob4l to1c 3tocht to6ckent 3tod tode4 to2d1er todes1 t1o2fe 1tok to3la 3tole tome2 to4men to5men_ 3ton tons4t to3ny to2pat to3phe to2pl 1topo 2topp 1tor 3tor_ to1ra to4r\xc3\xa4n t1ord 3tore to3ren t1org 3torh tor3int to2r\xc3\xb6 3tors to4ru 2tory to5sc to4sk to3s4p 2toss 1to3st to7sto to1stu 2to\xc3\x9f to1\xc3\x9fu 3tote to2tho 1totr 5t4ou to3un 3tow 3t\xc3\xb6ch 2t1\xc3\xb6f 3t\xc3\xb6n t2\xc3\xb6r t\xc3\xb6r3ste t1\xc3\xb6st 1t\xc3\xb6t 4t3p2 tpf4 tport4 2t1q t2r4 2tr_ 5tra_ tra3bl t4rac 3trach tra3cha 3trag 5t4rai t4rak 1tral 3t4ran_ 2trand 3trank t3rann 1trans t3rase 2tra\xc3\x9f 3tr\xc3\xa4c t3r\xc3\xa4d 3tr\xc3\xa4g 1tr\xc3\xa4ne 2tr\xc3\xa4s 2tr\xc3\xa4\xc3\x9f t3r\xc3\xa4ts t4r\xc3\xa4ts_ 4t5re_ 2treb 2trec t3rech t4reck 2t3red t4ree 3t4ref 4trefe 2treg t4rei_ 3t4reib 2treic 2treif 2t3reih t3rein 2t3reis t3reiz 2t3rek 2trel t4rem t4ren_ 3trend_ t3rent t4rep 2trepe 2trepo t4rer 3t4res_ t4ret tre2t3r t4reu 3treuh t3rev 2trez 5t4r\xc3\xa9 2t3rh 1tri 3tri4er 3trigg t3rind 2tring 3trio t4rip trizi1 1tro_ tro3b 3t4rog 1troi tro2ke 2troml 1tron 2t3roo t4rop 3tropf 1tros 1troy 3tr\xc3\xb6g 1tr\xc3\xb6s 1trua 2truk trum4 trums1 t3rund 3trunk 3t4rup tr\xc3\xbc1be tr\xc3\xbc1bu 2t3r\xc3\xbcc try1 2ts 4ts_ t2s1a t4sab ts3ad t3saf t4s3al t4s3amt t4sar ts3as t4sau t5sau_ ts1\xc3\xa4n t4s3char t5sche t6schef tsch4li t6schro ts1e2b t4s3e4h t3seil t4seind ts1em t3sen_ ts1eng ts1ent t2s1er ts3eta ts1ex tsi2d ts1ini t2s1ir t3skala ts3ke t4s3ko ts5kr t2s1o2 t3sol t3som t3soz t2s\xc3\xb6 t3span t3spas t2sp\xc3\xa4 t3s2pon t3s2por t2spu ts5s4 t1s2t ts3taf ts3tak t2stea t5steu ts3th t6stit ts4top ts3tor ts3trad ts3trak t4s3trau t4str\xc3\xa4 t3strec t2s3tri ts3tr\xc3\xbc t3s4tu t2s3t\xc3\xbcr t2s1u 1tsub t4sun t3sy 4t1t t2t1a2b tt3ad t3tal t3tan t4tanb tt1art tt1auf tt1ebe tt1eif tt1ein tt1eis t3te2l tte4la tte4s t2teti t3teu t2th tt3ha tt2h\xc3\xa4u tt1ho t3ti tto1p t3tra tt3ras t3tr\xc3\xa4 t3tro tt3ru tt3r\xc3\xbc tt2se tt3so tt2s1pa tt2spe tt2spr tt2s3ti ttt4 t3tu tt3z4 1tu tu1an 2tub 3tuch tu2chi 2tud tue3re tu3et 2tuf t1u2fer 2tuh 2tu2k t1ukr 3t2um_ 5tume 2tumf 2tumg 2tumk tum2sp 2t1umt 5tun_ 2t1una 2tund 3tu3ne 2t1unf 3tung tun2gl 2tunif 2t1u4nio 2tunt t1up_ tu2ra tu3rat tur3b tur1c tu4re_ tu2rei tu2r1er tu4res ture4t 3turn tu2ro tu3rol tur3s tu2ru t2us tu2sa tu4schl tu2so 2t\xc3\xbcb t3\xc3\xbcbe 3t\xc3\xbcch t\xc3\xbcck2s 1t\xc3\xbcf 1t\xc3\xbcm 1t\xc3\xbcr_ t\xc3\xbcr1c 1t\xc3\xbcre t\xc3\xbcr3s 2t1v t5ve 2t1w twa4r twi4e 1ty 2tyl ty4le ty2pa ty1st 2t1z t2za4 tz3ag tz3al tz3an tz1ar t2z1\xc3\xa4 t3ze_ t2z1e2c t2z1eie tze2n tz4ene tz3ents tz1erg t3ze4s tz1imp tz1ind t2zo tz1of t3zon tz1or tz2tin t2z1w tz3wa 2u_ u1a2b u1a2c ua3d uad4r u3al_ u5alet u3alf u3alr u3als ua2lu u3am u1ans u3ar_ uara2 uar3ab u3ars ua3sa ua2t3h u3au u1ay u1\xc3\xa4m u1\xc3\xa4u 2u1b u3be u4bent ub4i ub5los u3bl\xc3\xb6 ub3lu ub3ra ub3r\xc3\xa4 ub5rit ub2san ub2s1o ub2s1p ub3um u2b3\xc3\xbcb 4uc u1ce2 u2ch1a uch3an uch1\xc3\xa4 u1che u2ch1e2c uch1ei u3ches u1chi uch1in uch3l uch5m uch3n u2ch3r uch2so uch2sp uch2tr u1chu uch3\xc3\xbc uch1w u2ckem u4ckent uck2er u4ck3erl u2cki u1cr u1d u5d2a ude2a udens2 ude3r2e udi3en u2don ud3ra u1e ue4ck u2ed ue2en u4ela ue2le ueli4 ue2mi uen2gl u3eni uen3k ue2nu uen2zu u2ep ue2r5a u3ereh ue2rei uer5eife u3erer ue4rerg u3erex uer3g2 u5erinf u5erint uerk4 uer4ne uern3s4t uer3o uert2 u3erum u3erunt u3erur ue2ta ue4tek uet4s uf1ab u3fah uf1ak uf1ar uf1au u2f1\xc3\xa4s u2f1\xc3\xa42\xc3\x9f u2f1ei u2f1em u3fen_ u2fent u2f1erh 2uff uf3fe uff6l uf5l uf7l\xc3\xa4d ufo2r uf1ori u1f\xc3\xb6 uf3r uf5s\xc3\xa4 uft1eb uft3s2 2u1g u4gabte ug1af ug1ak u2g1ap ug1au ug3d u6g7e2i uge3ne u4g5ent ug5erf ug5erl uge7sc ugge4st u2g1l ug3la ug3l\xc3\xa4 ug5lo u3gl\xc3\xb6 u4g3lu u4g3n ugo3 ug1or u2g\xc3\xb6 u2g3ro ug3rum ug5sc ug3s2e ug3si ug3s4pa ugs2t ug3str ug3st\xc3\xbc u1h uhe1ra uhe1s uhe3st uh1la uh1l\xc3\xa4 uh3ma uh3mi uhr1a uh1ri uh4rin uh2ru uh1w 4ui u1ie ui1em u1ig u2ige u3in_ u3isch_ u3ischs uisi4n ui4s3t u1j uk\xc3\xa42 u3k\xc3\xa4u u1ke u1ki u1kl u3kla ukle1i u3klo u3kl\xc3\xb6 uk4n ukni4 u1kr uk2ta uk2t3in u1ku uku2s u1l ul1ab ul3am ul2ar ula2s ul1\xc3\xa4m ulb4 u2l1el ule4n ul1erf ule2t ul3eta ulg4 uli2k uli5ne ul1ins ul3ka ul4les ull1s ulm3ein ulo2i ul3or ul\xc3\xb63s ul2p1h ul2sa ul2sei ul3sp ult2a ul4tar ul3th ul2to ul2tri ul3tro u2l\xc3\xbc ul3zw um3all uman4s um1anz u2m1ar u2m1aus 1umd 2ume um2en umer2a um1erg um1erw 1umf 3umfe 1umg um1ins 1umk 1uml 2umm u3mon umpf6li um2pl ump3le 1umr 1umsat um3sc um4ser um2sim um2spe um2su umt2 um3th u2m3ur 1umz u2n 2un_ 2u5na_ 1unab un1ac u5nam u4n3an un1ap 2u5nas un3at unau2 un1\xc3\xa4 4unc un4dei und3erf und5erha un2d3r 4unds_ und3se und3sp un2d1um 1undzw un1e2 un3eid un3ein une3re unes4 un3et un1gl 1ungl\xc3\xbc un2g1r ung3ra ung4s3 u3ni 1u4nif 1u4niv un2k1a unks2 unk3sp unk2tr 3unku un2n3ad un1o un2os 1unr uns2 un3se 1unsi un3sk un3sp un2stu 1unt un3ta unte2 un3th unt4r 2untu un1u unvol2 unvoll3 1unw u1o2b u3of u3or_ u1or3c u1os_ u1pa up5ab u1pe2 uper1 upf2e up2f1i u3pfl u1pi up2pr u1pr upra3 up1sl up4t3a2 up2tel up2t1o up4tr up2tu u1q 2ur_ u1ra u3ra_ u3raba u3ral u2r3am ur1ana ur2anb u3rand ur1ang ur1ans u3rant ur5atm ur1au ur1\xc3\xa4n urb2 ur3ba ur2ble urch1 ur3di 2ure ur1eff u2rele ure2n u5ren_ ur3erei ur1erh ur1erw ure2t ur3eta ur2gri urgros4 urgs2 u1r2i uri2c u2r3im ur3ind ur1ini ur3ins ur3int u2r3inv urk2s 1urlau ur3no 2u1ro u1r\xc3\xb6 ur5p ur2san urs1au ur4sei ur4s1er ur2st ur3sta ur5st4r ur3s2z urt2 ur5t4e ur3th u1ru ur\xc3\xbc2 u1ry ur2za urz3ent ur2zi ur2zo ur2z1w u4saf us1ang us4ann u2s1ap us1au u6schent usch5wer usch3wi us1ec u2s1ef u2s1ei u3seid use1ra u2serp usi3er_ usi5ers_ u3soh u3sol us1op us3ou u3sov u3sow u3s2pa us3part us3pas us1pe u3s2pek us3pic us4sat us4sei usse2n uss5erfa uss3erk uss5ersu us4sez us2sof uss3t\xc3\xa4t ust1a2b u3stal u3stein u3stel ust2i us1tr us4tris u3stu u4stun u4stur us2ur u2s\xc3\xbc u1sy u1\xc3\x9f 4u1t u3taf u3tal ut3alk ut5a4m u2t1ap ut1ar ut1\xc3\xa4r u3t\xc3\xa4t u3te u5te_ u4t1e4g ute2l ut2em ute2n1 uten3e u4tent ut2er ute5r4er u5tet u2thei u2t1hi u2t1ho u4t1hu uto4ber ut1opf u2tops u3tos ut3r\xc3\xbc ut5sa ut2s1\xc3\xa4 ut4schl ut4schm ut3so ut3sp ut5t2l utt4le utu3ru utz1a utz3eng ut2z1in u1u4 uufe2 u1\xc3\xbc2 u1v4 u2ve_ uve3r\xc3\xa4 u1w uwa3s u1x2 ux5t u1ya u1z u3ze uzi5n uz1we uzz4 1\xc3\xbcb 2\xc3\xbcbd \xc3\xbcbe2 \xc3\xbcbe3c \xc3\xbcbe4r1 \xc3\xbc2b5l 3\xc3\xbcb5r \xc3\xbcb2st 3\xc3\xbcbu 2\xc3\xbcc \xc3\xbc1che \xc3\xbcch3l \xc3\xbcch4s3c \xc3\xbcch5t4e \xc3\xbcck1e2r \xc3\xbc4ck5eri \xc3\xbc4ckerk \xc3\xbc4ckers \xc3\xbc4d3a4 \xc3\xbc3den_ \xc3\xbc3d2ens \xc3\xbcd1o4 \xc3\xbcd1\xc3\xb6 \xc3\xbc4d5r \xc3\xbcd3s2 \xc3\xbcdsa1 \xc3\xbcd1t4 \xc3\xbc2f3a \xc3\xbc2f1ei \xc3\xbc2f1erg \xc3\xbcf2fl \xc3\xbc2f3i \xc3\xbcf5l \xc3\xbcf2t1o \xc3\xbc1g \xc3\xbc2g3l \xc3\xbcg3s \xc3\xbcg4st \xc3\xbch1a \xc3\xbc1he \xc3\xbc2h1ei \xc3\xbc2h1eng \xc3\xbc2h1erk \xc3\xbc2h1erz \xc3\xbch1i \xc3\xbchla2 \xc3\xbchl1ac \xc3\xbch5l2e \xc3\xbch3li \xc3\xbch3mi \xc3\xbch3mo \xc3\xbch5ne \xc3\xbch3r2e \xc3\xbchr3ei_ \xc3\xbch5ro \xc3\xbchr5ta \xc3\xbch1s \xc3\xbch3s2p \xc3\xbc1hu \xc3\xbch1w \xc3\xbc1k 2\xc3\xbcl \xc3\xbcl1a \xc3\xbcl2c \xc3\xbc5l2e \xc3\xbcl2la \xc3\xbcll1au \xc3\xbcl2l1ei \xc3\xbcl2lo \xc3\xbcl4l\xc3\xb6 \xc3\xbc1lu \xc3\xbc4ment 2\xc3\xbcn \xc3\xbc2n3a \xc3\xbcn2c \xc3\xbcn2da \xc3\xbcn2dr \xc3\xbcnd1s \xc3\xbcn2f1 \xc3\xbcn3fl \xc3\xbcn4fli \xc3\xbcnf3r \xc3\xbcn2g3l \xc3\xbcnn4s \xc3\xbcnn5sc \xc3\xbcn4s \xc3\xbcn5sc \xc3\xbcn5se \xc3\xbcn5sp \xc3\xbcn5sta \xc3\xbcn5str \xc3\xbcn3th \xc3\xbc1pe \xc3\xbc1pi \xc3\xbcr1a \xc3\xbc2r1ei \xc3\xbcr2fl \xc3\xbcr4g5eng \xc3\xbc1ri \xc3\xbc1r2o \xc3\xbc3rofe \xc3\xbcro3r \xc3\xbcrr2 \xc3\xbcr2s \xc3\xbcrs3tin \xc3\xbcrt2h \xc3\xbcr3the \xc3\xbc1ru \xc3\xbc2schl \xc3\xbcse3h \xc3\xbcse3l \xc3\xbcs4s3c \xc3\xbcs2st \xc3\xbc2st \xc3\xbcste3ne \xc3\xbc1\xc3\x9f \xc3\xbc1ta \xc3\xbc2t3al \xc3\xbcte3d \xc3\xbct3r \xc3\xbct2s1 \xc3\xbct2tr \xc3\xbc1v \xc3\xbc1z 2v_ 2v1ab va5g val2s 2vang 2v1arb va3st v4at va2t3a6 va4t1ei va2t3h va4t1in vati8ons_ va2t3r vat3s vat3t va2t1u 2v1au 2v1b 2v1d ve2 3vea ve3b ve3d ve3g ve3h veit4 veits3 ve3la ve3le ve3li veli5ne ve3lo ve3ma ve3mu ven2c ve3ne ve3ni ven3k ve3n\xc3\xb6 ve3nu ve3o ver1 ver3a ve3rad ve5rand ve5ras ver3b4 ver3d2 vere2 ve3ren verf6 verg4 ve3ri ve5rit ver3sta 2vese ves1p ves3ti ve3ta vete1 ve3tr 2ve\xc3\xbc ve3v ve5x2 ve7xe 2v1f4 2v1g 2v1h vi1an vi4a3t vi2c vid3s2t vi2e vie2h3a vi3en vie2w1 vi3g2 vi3k vi2leh vin2s 2v1int 3vio vise4 vi3s2o vis2u 2v1k 2v1l2 2v1m 2v1n 2v1ob vo2gu vol2a voll1a vo2n 2v1op vo2r1 vor3a vor3d vor3e vor3g6 vo3ri vo5rig vor3o vo4ru v\xc3\xb62c 2v1p v1ra 3vri 2vs vs2e 2v1t 2v1v 2v1w 2v1z 2w_ w4a wab2bl wa5che wa3d wa5ge wa4g5n wa2gr wa3gra 1wah wahl5ent wai2b 1wald wal2t1o wa5na wan4s wa2p wa2r 1war2e ware1i war3ste wart4e wa3ru 1wa2s wa3sa wa3se wa3sh wa3si was5s4 1w\xc3\xa4h 1w\xc3\xa4s w\xc3\xa4s4c w\xc3\xa45sche 2w1b 2w1c wco3 2w1d we3be web3l we3cke we5cke_ we5cken_ we5ckes we3d we2e2 we2fl 3weg we2g3l we4gn we4g3r wegs2 weg3s4p 1weh we3he wei4bl 2weie wei3k4 wei4tr weit3s wel6schl wel6schr wel3se wel2t1 wel4ta wel6t5end wel4tr we3ni wen4k3ri we2r5a wer2bl 1werbu 5werdens 1werdu wer2fl 2werg 1werk_ 1werke wer2kl wer2ku wer2s wer4t3a wer6t5erm 1werts 1wese wes1p we4st west3a wes2t1o2 west3r wet4s wet4ta wett3s 2w1g 2wh w5ho wi3cka wi2e wie3l wien2 wie5ne wie2st wi3k wim2ma wim4m3u win4d3e4c win2e wi2r 1wirt wi5s2e 1wiss wi3th 3wj 2wk 2w1l 2w1m 2wn wn3sh w4o 1wo1c wo2cha woche4 1woh woh2l 1wolf wol4ler wor3a wo2r3i wor2tr wo4r3u wot2 1w\xc3\xb6c w\xc3\xb6rt2h w\xc3\xb6r3the 2w1p w1ro 2ws w3s2k w1s2t 2w1t w3ti2 w2u 1wuc wul2 wul3se wun2s wur4s 1wurst wus2 wus3te wu4t1 1w\xc3\xbch w\xc3\xbcl2 w\xc3\xbcn5 2w1w 6x_ x3a 1xa_ 1x4ad 1x4a3g xa4m xa3me xa5mer 2xan 3x4as x4at 2x1b x1c 4x1d 1xe x1e4g xe2l xe3lei x1em 7x2em_ 3x2en xe3no x2er_ 5xere xers2 3xes 2x3eu 2x1f 2x1g xge1 2x3h 1xi xib4 xi1c xich2 2xid xide2 xi2d1em x1i2do xie3l xi3g4 xi2l xi3la xi3le xi3li xil1u x2i2s1 xi3sc xi4se xiso2 xis3s xis2t\xc3\xa4 x1i2tu x1j 2x1k4 2x3l 2x1m 2x1n x1or 4x3p x1q 2x1r 2x3s2 4x1t x2t3a x2t1\xc3\xa4 x3t\xc3\xa4t xtblo4 x2t1ed x2t1ei x2t1erf xt3ran xts4 xt5sa x2t1u x3tur 1xu xu3a x1u4n xu2s1 2x1v 2x1w 2xy x1z 2y1ab 1yac y3al_ y3a2m y1b yb6r y1c y2chi y3chis ych3n y1d y3dr y1e yen4n y2es_ y1f y1g ygie3 y3gl y1ha yhr2 y1hu y3i4 y1j y1k4 y1l yl5a2m y3l4ant_ y3l4ante y5len y5ler yli4n yloni1 y2l1u yma4t ym3p4 ympi3e y2n3o yn3t y1of yom4 yon4i y3ou y1p ypa2 yp5an ype2 y5ph y2p1in ypo3 y4ps yp3t y1r y3r2e y3ri yri1e y5s4c y1s\xc3\xa9 y3s2p yst4 y1s2ty y3s2z y1t yt2h yu2r yure3 y1w y1z2 6z_ 2z3a2b za1c z3a2d za3de 2z3af za3gr 3z2ah 2z3a2k 2z3am 3zambiq z1an za2na 2z3anf z3anl za3re 2z1arz za3st4 2z3at 3zaub z3auf z3aug 3zaun z1aut 2z1\xc3\xa42c z2\xc3\xa4h 2z1\xc3\xa4m z1\xc3\xa4n z1\xc3\xa4rg 4z3b6 zbe2st zb\xc3\xbc1b zb\xc3\xbcbe5 4z3c 2z3d zd\xc3\xa41 ze3a ze1e 2z1eff zeik4 3zeil zei3la zeile4 2z1ein zei3s2 zeist4 zei4ta zei4t3er zei2tr zeit3sp 3zel ze2l3a2 ze2len ze2l1er ze2l1in zel5la ze2lo ze5m2e 5zen_ ze2n1ac zens2e zen2ta 5z4entr zent3sk 2zentw zen4zer zer3a ze2r1e2b z1erfo 2zerg z3ergeb z1erh\xc3\xb6 zer3k 2z1erke 2zerkl 2z1erl\xc3\xb6 zer4n3ei 2zerq 5zerr 2z1ersa 4zerste zer3sz zer2t2a2 zer4t3ag zer4ter zer4tin 2zerz z2es ze2s\xc3\xa4 ze5sc ze2s1i ze3sku ze2sp ze5sta zes1tr ze2tr 2z1ex 2z1f 2z1g 2z1h z2hen zhir5 3zia 3zie zi1erh zi1es_ zig4s 4zimp 3zin4e 4z3inf 4z3inh zin4ser 4zinsuf 2z1int 2z1inv zi2o zi3op zirk4 zirk6s zi3s2z zi1t2h 2z1j 2z1k4 2z1l2 z3la 4z3ly 2z1m 2z3n2 2zob 2zof z1oh 3zol zon6ter zo2r zo3re zor4ne zo5se 2z1\xc3\xb6f z\xc3\xb67li 2z3p2 2z1q 4z3r2 2z1s2 z3sh z3sk z3sp z3ste z3sz 2z1t z2t1au z6tehe zte3o zte3str z2t1h zt3hei z5t2her zt1ins z2t3ro zt3so zu1 zu3a zub4 zu5cke zud4 zu2el zu3f6 zu2g1ar zu3gl zu3gr zu2g1un 2z1uhr zuk4 2z1um_ zu3ma zumen2 2zumf 2zumg 2z1ums zu3n\xc3\xa4 zu3n2e 2zunt zu3n\xc3\xbc 2z1urk 2z1url 2zurs 2z1urt zu3s4 zuz2 2z\xc3\xbcb z\xc3\xbcr1c 2z1v zw2 z2wan zwan2d1 4z3w\xc3\xa4l 2zweg z2weig 2z1wel 2z1wen 2zwer 2z1wes 2zwir z2wit 2z1wo 2zw\xc3\xb6 z1wur z1w\xc3\xbc 3zy zy1ank 6z1z z3z4a z3zi zzi3s2 z3z2l zzoll2";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt b/inc/3rdparty/libraries/mpdf/patterns/dictionary.txt
new file mode 100644 (file)
index 0000000..e9a1bce
--- /dev/null
@@ -0,0 +1 @@
+dis/es/tab/lish/men/tar/i/an/ism
diff --git a/inc/3rdparty/libraries/mpdf/patterns/en.php b/inc/3rdparty/libraries/mpdf/patterns/en.php
new file mode 100644 (file)
index 0000000..a02b63f
--- /dev/null
@@ -0,0 +1,10 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+*/
+
+$patterns="_ach4 _ad4der _af1t _al3t _am5at _an5c _ang4 _ani5m _ant4 _an3te _anti5s _ar5s _ar4tie _ar4ty _as3c _as1p _as1s _aster5 _atom5 _au1d _av4i _awn4 _ba4g _ba5na _bas4e _ber4 _be5ra _be3sm _be5sto _bri2 _but4ti _cam4pe _can5c _capa5b _car5ol _ca4t _ce4la _ch4 _chill5i _ci2 _cit5r _co3e _co4r _cor5ner _de4moi _de3o _de3ra _de3ri _des4c _dictio5 _do4t _du4c _dumb5 _earth5 _eas3i _eb4 _eer4 _eg2 _el5d _el3em _enam3 _en3g _en3s _eq5ui5t _er4ri _es3 _eu3 _eye5 _fes3 _for5mer _ga2 _ge2 _gen3t4 _ge5og _gi5a _gi4b _go4r _hand5i _han5k _he2 _hero5i _hes3 _het3 _hi3b _hi3er _hon5ey _hon3o _hov5 _id4l _idol3 _im3m _im5pin _in1 _in3ci _ine2 _in2k _in3s _ir5r _is4i _ju3r _la4cy _la4m _lat5er _lath5 _le2 _leg5e _len4 _lep5 _lev1 _li4g _lig5a _li2n _li3o _li4t _mag5a5 _mal5o _man5a _mar5ti _me2 _mer3c _me5ter _mis1 _mist5i _mon3e _mo3ro _mu5ta _muta5b _ni4c _od2 _odd5 _of5te _or5ato _or3c _or1d _or3t _os3 _os4tl _oth3 _out3 _ped5al _pe5te _pe5tit _pi4e _pio5n _pi2t _pre3m _ra4c _ran4t _ratio5na _ree2 _re5mit _res2 _re5stat _ri4g _rit5u _ro4q _ros5t _row5d _ru4d _sci3e _self5 _sell5 _se2n _se5rie _sh2 _si2 _sing4 _st4 _sta5bl _sy2 _ta4 _te4 _ten5an _th2 _ti2 _til4 _tim5o5 _ting4 _tin5k _ton4a _to4p _top5i _tou5s _trib5ut _un1a _un3ce _under5 _un1e _un5k _un5o _un3u _up3 _ure3 _us5a _ven4de _ve5ra _wil5i _ye4 4ab_ a5bal a5ban abe2 ab5erd abi5a ab5it5ab ab5lat ab5o5liz 4abr ab5rog ab3ul a4car ac5ard ac5aro a5ceou ac1er a5chet 4a2ci a3cie ac1in a3cio ac5rob act5if ac3ul ac4um a2d ad4din ad5er_ 2adi a3dia ad3ica adi4er a3dio a3dit a5diu ad4le ad3ow ad5ran ad4su 4adu a3duc ad5um ae4r aeri4e a2f aff4 a4gab aga4n ag5ell age4o 4ageu ag1i 4ag4l ag1n a2go 3agog ag3oni a5guer ag5ul a4gy a3ha a3he ah4l a3ho ai2 a5ia a3ic_ ai5ly a4i4n ain5in ain5o ait5en a1j ak1en al5ab al3ad a4lar 4aldi 2ale al3end a4lenti a5le5o al1i al4ia_ ali4e al5lev 4allic 4alm a5log_ a4ly_ 4alys 5a5lyst 5alyt 3alyz 4ama am5ab am3ag ama5ra am5asc a4matis a4m5ato am5era am3ic am5if am5ily am1in ami4no a2mo a5mon amor5i amp5en a2n an3age 3analy a3nar an3arc anar4i a3nati 4and ande4s an3dis an1dl an4dow a5nee a3nen an5est_ a3neu 2ang ang5ie an1gl a4n1ic a3nies an3i3f an4ime a5nimi a5nine an3io a3nip an3ish an3it a3niu an4kli 5anniz ano4 an5ot anoth5 an2sa an4sco an4sn an2sp ans3po an4st an4sur antal4 an4tie 4anto an2tr an4tw an3ua an3ul a5nur 4ao apar4 ap5at ap5ero a3pher 4aphi a4pilla ap5illar ap3in ap3ita a3pitu a2pl apoc5 ap5ola apor5i apos3t aps5es a3pu aque5 2a2r ar3act a5rade ar5adis ar3al a5ramete aran4g ara3p ar4at a5ratio ar5ativ a5rau ar5av4 araw4 arbal4 ar4chan ar5dine ar4dr ar5eas a3ree ar3ent a5ress ar4fi ar4fl ar1i ar5ial ar3ian a3riet ar4im ar5inat ar3io ar2iz ar2mi ar5o5d a5roni a3roo ar2p ar3q arre4 ar4sa ar2sh 4as_ as4ab as3ant ashi4 a5sia_ a3sib a3sic 5a5si4t ask3i as4l a4soc as5ph as4sh as3ten as1tr asur5a a2ta at3abl at5ac at3alo at5ap ate5c at5ech at3ego at3en_ at3era ater5n a5terna at3est at5ev 4ath ath5em a5then at4ho ath5om 4ati_ a5tia at5i5b at1ic at3if ation5ar at3itu a4tog a2tom at5omiz a4top a4tos a1tr at5rop at4sk at4tag at5te at4th a2tu at5ua at5ue at3ul at3ura a2ty au4b augh3 au3gu au4l2 aun5d au3r au5sib aut5en au1th a2va av3ag a5van ave4no av3era av5ern av5ery av1i avi4er av3ig av5oc a1vor 3away aw3i aw4ly aws4 ax4ic ax4id ay5al aye4 ays4 azi4er azz5i 5ba_ bad5ger ba4ge bal1a ban5dag ban4e ban3i barbi5 bari4a bas4si 1bat ba4z 2b1b b2be b3ber bbi4na 4b1d 4be_ beak4 beat3 4be2d be3da be3de be3di be3gi be5gu 1bel be1li be3lo 4be5m be5nig be5nu 4bes4 be3sp be5str 3bet bet5iz be5tr be3tw be3w be5yo 2bf 4b3h bi2b bi4d 3bie bi5en bi4er 2b3if 1bil bi3liz bina5r4 bin4d bi5net bi3ogr bi5ou bi2t 3bi3tio bi3tr 3bit5ua b5itz b1j bk4 b2l2 blath5 b4le_ blen4 5blesp b3lis b4lo blun4t 4b1m 4b3n bne5g 3bod bod3i bo4e bol3ic bom4bi bon4a bon5at 3boo 5bor_ 4b1ora bor5d 5bore 5bori 5bos4 b5ota both5 bo4to bound3 4bp 4brit broth3 2b5s2 bsor4 2bt bt4l b4to b3tr buf4fer bu4ga bu3li bumi4 bu4n bunt4i bu3re bus5ie buss4e 5bust 4buta 3butio b5uto b1v 4b5w 5by_ bys4 1ca cab3in ca1bl cach4 ca5den 4cag4 2c5ah ca3lat cal4la call5in 4calo can5d can4e can4ic can5is can3iz can4ty cany4 ca5per car5om cast5er cas5tig 4casy ca4th 4cativ cav5al c3c ccha5 cci4a ccompa5 ccon4 ccou3t 2ce_ 4ced_ 4ceden 3cei 5cel_ 3cell 1cen 3cenc 2cen4e 4ceni 3cent 3cep ce5ram 4cesa 3cessi ces5si5b ces5t cet4 c5e4ta cew4 2ch 4ch_ 4ch3ab 5chanic ch5a5nis che2 cheap3 4ched che5lo 3chemi ch5ene ch3er_ ch3ers 4ch1in 5chine_ ch5iness 5chini 5chio 3chit chi2z 3cho2 ch4ti 1ci 3cia ci2a5b cia5r ci5c 4cier 5cific_ 4cii ci4la 3cili 2cim 2cin c4ina 3cinat cin3em c1ing c5ing_ 5cino cion4 4cipe ci3ph 4cipic 4cista 4cisti 2c1it cit3iz 5ciz ck1 ck3i 1c4l4 4clar c5laratio 5clare cle4m 4clic clim4 cly4 c5n 1co co5ag coe2 2cog co4gr coi4 co3inc col5i 5colo col3or com5er con4a c4one con3g con5t co3pa cop3ic co4pl 4corb coro3n cos4e cov1 cove4 cow5a coz5e co5zi c1q cras5t 5crat_ 5cratic cre3at 5cred 4c3reta cre4v cri2 cri5f c4rin cris4 5criti cro4pl crop5o cros4e cru4d 4c3s2 2c1t cta4b ct5ang c5tant c2te c3ter c4ticu ctim3i ctu4r c4tw cud5 c4uf c4ui cu5ity 5culi cul4tis 3cultu cu2ma c3ume cu4mi 3cun cu3pi cu5py cur5a4b cu5ria 1cus cuss4i 3c4ut cu4tie 4c5utiv 4cutr 1cy cze4 1d2a 5da_ 2d3a4b dach4 4daf 2dag da2m2 dan3g dard5 dark5 4dary 3dat 4dativ 4dato 5dav4 dav5e 5day d1b d5c d1d4 2de_ deaf5 deb5it de4bon decan4 de4cil de5com 2d1ed 4dee_ de5if deli4e del5i5q de5lo d4em 5dem_ 3demic dem5ic_ de5mil de4mons demor5 1den de4nar de3no denti5f de3nu de1p de3pa depi4 de2pu d3eq d4erh 5derm dern5iz der5s des2 d2es_ de1sc de2s5o des3ti de3str de4su de1t de2to de1v dev3il 4dey 4d1f d4ga d3ge4t dg1i d2gy d1h2 5di_ 1d4i3a dia5b di4cam d4ice 3dict 3did 5di3en d1if di3ge di4lato d1in 1dina 3dine_ 5dini di5niz 1dio dio5g di4pl dir2 di1re dirt5i dis1 5disi d4is3t d2iti 1di1v d1j d5k2 4d5la 3dle_ 3dled 3dles_ 4dless 2d3lo 4d5lu 2dly d1m 4d1n4 1do 3do_ do5de 5doe 2d5of d4og do4la doli4 do5lor dom5iz do3nat doni4 doo3d dop4p d4or 3dos 4d5out do4v 3dox d1p 1dr drag5on 4drai dre4 drea5r 5dren dri4b dril4 dro4p 4drow 5drupli 4dry 2d1s2 ds4p d4sw d4sy d2th 1du d1u1a du2c d1uca duc5er 4duct_ 4ducts du5el du4g d3ule dum4be du4n 4dup du4pe d1v d1w d2y 5dyn dy4se dys5p e1a4b e3act ead1 ead5ie ea4ge ea5ger ea4l eal5er eal3ou eam3er e5and ear3a ear4c ear5es ear4ic ear4il ear5k ear2t eart3e ea5sp e3ass east3 ea2t eat5en eath3i e5atif e4a3tu ea2v eav3en eav5i eav5o 2e1b e4bel_ e4bels e4ben e4bit e3br e4cad ecan5c ecca5 e1ce ec5essa ec2i e4cib ec5ificat ec5ifie ec5ify ec3im eci4t e5cite e4clam e4clus e2col e4comm e4compe e4conc e2cor ec3ora eco5ro e1cr e4crem ec4tan ec4te e1cu e4cul ec3ula 2e2da 4ed3d e4d1er ede4s 4edi e3dia ed3ib ed3ica ed3im ed1it edi5z 4edo e4dol edon2 e4dri e4dul ed5ulo ee2c eed3i ee2f eel3i ee4ly ee2m ee4na ee4p1 ee2s4 eest4 ee4ty e5ex e1f e4f3ere 1eff e4fic 5efici efil4 e3fine ef5i5nite 3efit efor5es e4fuse_ 4egal eger4 eg5ib eg4ic eg5ing e5git5 eg5n e4go_ e4gos eg1ul e5gur 5egy e1h4 eher4 ei2 e5ic ei5d eig2 ei5gl e3imb e3inf e1ing e5inst eir4d eit3e ei3th e5ity e1j e4jud ej5udi eki4n ek4la e1la e4la_ e4lac elan4d el5ativ e4law elaxa4 e3lea el5ebra 5elec e4led el3ega e5len e4l1er e1les el2f el2i e3libe e4l5ic_ el3ica e3lier el5igib e5lim e4l3ing e3lio e2lis el5ish e3liv3 4ella el4lab ello4 e5loc el5og el3op_ el2sh el4ta e5lud el5ug e4mac e4mag e5man em5ana em5b e1me e2mel e4met em3ica emi4e em5igra em1in2 em5ine em3i3ni e4mis em5ish e5miss em3iz 5emniz emo4g emoni5o em3pi e4mul em5ula emu3n e3my en5amo e4nant ench4er en3dic e5nea e5nee en3em en5ero en5esi en5est en3etr e3new en5ics e5nie e5nil e3nio en3ish en3it e5niu 5eniz 4enn 4eno eno4g e4nos en3ov en4sw ent5age 4enthes en3ua en5uf e3ny_ 4en3z e5of eo2g e4oi4 e3ol eop3ar e1or eo3re eo5rol eos4 e4ot eo4to e5out e5ow e2pa e3pai ep5anc e5pel e3pent ep5etitio ephe4 e4pli e1po e4prec ep5reca e4pred ep3reh e3pro e4prob ep4sh ep5ti5b e4put ep5uta e1q equi3l e4q3ui3s er1a era4b 4erand er3ar 4erati_ 2erb er4bl er3ch er4che 2ere_ e3real ere5co ere3in er5el_ er3emo er5ena er5ence 4erene er3ent ere4q er5ess er3est eret4 er1h er1i e1ria4 5erick e3rien eri4er er3ine e1rio 4erit er4iu eri4v e4riva er3m4 er4nis 4ernit 5erniz er3no 2ero er5ob e5roc ero4r er1ou er1s er3set ert3er 4ertl er3tw 4eru eru4t 5erwau e1s4a e4sage_ e4sages es2c e2sca es5can e3scr es5cu e1s2e e2sec es5ecr es5enc e4sert_ e4serts e4serva 4esh e3sha esh5en e1si e2sic e2sid es5iden es5igna e2s5im es4i4n esis4te esi4u e5skin es4mi e2sol es3olu e2son es5ona e1sp es3per es5pira es4pre 2ess es4si4b estan4 es3tig es5tim 4es2to e3ston 2estr e5stro estruc5 e2sur es5urr es4w eta4b eten4d e3teo ethod3 et1ic e5tide etin4 eti4no e5tir e5titio et5itiv 4etn et5ona e3tra e3tre et3ric et5rif et3rog et5ros et3ua et5ym et5z 4eu e5un e3up eu3ro eus4 eute4 euti5l eu5tr eva2p5 e2vas ev5ast e5vea ev3ell evel3o e5veng even4i ev1er e5verb e1vi ev3id evi4l e4vin evi4v e5voc e5vu e1wa e4wag e5wee e3wh ewil5 ew3ing e3wit 1exp 5eyc 5eye_ eys4 1fa fa3bl fab3r fa4ce 4fag fain4 fall5e 4fa4ma fam5is 5far far5th fa3ta fa3the 4fato fault5 4f5b 4fd 4fe_ feas4 feath3 fe4b 4feca 5fect 2fed fe3li fe4mo fen2d fend5e fer1 5ferr fev4 4f1f f4fes f4fie f5fin_ f2f5is f4fly f2fy 4fh 1fi fi3a 2f3ic_ 4f3ical f3ican 4ficate f3icen fi3cer fic4i 5ficia 5ficie 4fics fi3cu fi5del fight5 fil5i fill5in 4fily 2fin 5fina fin2d5 fi2ne f1in3g fin4n fis4ti f4l2 f5less flin4 flo3re f2ly5 4fm 4fn 1fo 5fon fon4de fon4t fo2r fo5rat for5ay fore5t for4i fort5a fos5 4f5p fra4t f5rea fres5c fri2 fril4 frol5 2f3s 2ft f4to f2ty 3fu fu5el 4fug fu4min fu5ne fu3ri fusi4 fus4s 4futa 1fy 1ga gaf4 5gal_ 3gali ga3lo 2gam ga5met g5amo gan5is ga3niz gani5za 4gano gar5n4 gass4 gath3 4gativ 4gaz g3b gd4 2ge_ 2ged geez4 gel4in ge5lis ge5liz 4gely 1gen ge4nat ge5niz 4geno 4geny 1geo ge3om g4ery 5gesi geth5 4geto ge4ty ge4v 4g1g2 g2ge g3ger gglu5 ggo4 gh3in gh5out gh4to 5gi_ 1gi4a gia5r g1ic 5gicia g4ico gien5 5gies_ gil4 g3imen 3g4in_ gin5ge 5g4ins 5gio 3gir gir4l g3isl gi4u 5giv 3giz gl2 gla4 glad5i 5glas 1gle gli4b g3lig 3glo glo3r g1m g4my gn4a g4na_ gnet4t g1ni g2nin g4nio g1no g4non 1go 3go_ gob5 5goe 3g4o4g go3is gon2 4g3o3na gondo5 go3ni 5goo go5riz gor5ou 5gos_ gov1 g3p 1gr 4grada g4rai gran2 5graph_ g5rapher 5graphic 4graphy 4gray gre4n 4gress_ 4grit g4ro gruf4 gs2 g5ste gth3 gu4a 3guard 2gue 5gui5t 3gun 3gus 4gu4t g3w 1gy 2g5y3n gy5ra h3ab4l hach4 hae4m hae4t h5agu ha3la hala3m ha4m han4ci han4cy 5hand_ han4g hang5er hang5o h5a5niz han4k han4te hap3l hap5t ha3ran ha5ras har2d hard3e har4le harp5en har5ter has5s haun4 5haz haz3a h1b 1head 3hear he4can h5ecat h4ed he5do5 he3l4i hel4lis hel4ly h5elo hem4p he2n hena4 hen5at heo5r hep5 h4era hera3p her4ba here5a h3ern h5erou h3ery h1es he2s5p he4t het4ed heu4 h1f h1h hi5an hi4co high5 h4il2 himer4 h4ina hion4e hi4p hir4l hi3ro hir4p hir4r his3el his4s hith5er hi2v 4hk 4h1l4 hlan4 h2lo hlo3ri 4h1m hmet4 2h1n h5odiz h5ods ho4g hoge4 hol5ar 3hol4e ho4ma home3 hon4a ho5ny 3hood hoon4 hor5at ho5ris hort3e ho5ru hos4e ho5sen hos1p 1hous house3 hov5el 4h5p 4hr4 hree5 hro5niz hro3po 4h1s2 h4sh h4tar ht1en ht5es h4ty hu4g hu4min hun5ke hun4t hus3t4 hu4t h1w h4wart hy3pe hy3ph hy2s 2i1a i2al iam4 iam5ete i2an 4ianc ian3i 4ian4t ia5pe iass4 i4ativ ia4tric i4atu ibe4 ib3era ib5ert ib5ia ib3in ib5it_ ib5ite i1bl ib3li i5bo i1br i2b5ri i5bun 4icam 5icap 4icar i4car_ i4cara icas5 i4cay iccu4 4iceo 4ich 2ici i5cid ic5ina i2cip ic3ipa i4cly i2c5oc 4i1cr 5icra i4cry ic4te ictu2 ic4t3ua ic3ula ic4um ic5uo i3cur 2id i4dai id5anc id5d ide3al ide4s i2di id5ian idi4ar i5die id3io idi5ou id1it id5iu i3dle i4dom id3ow i4dr i2du id5uo 2ie4 ied4e 5ie5ga ield3 ien5a4 ien4e i5enn i3enti i1er_ i3esc i1est i3et 4if_ if5ero iff5en if4fr 4ific_ i3fie i3fl 4ift 2ig iga5b ig3era ight3i 4igi i3gib ig3il ig3in ig3it i4g4l i2go ig3or ig5ot i5gre igu5i ig1ur i3h 4i5i4 i3j 4ik i1la il3a4b i4lade i2l5am ila5ra i3leg il1er ilev4 il5f il1i il3ia il2ib il3io il4ist 2ilit il2iz ill5ab 4iln il3oq il4ty il5ur il3v i4mag im3age ima5ry imenta5r 4imet im1i im5ida imi5le i5mini 4imit im4ni i3mon i2mu im3ula 2in_ i4n3au 4inav incel4 in3cer 4ind in5dling 2ine i3nee iner4ar i5ness 4inga 4inge in5gen 4ingi in5gling 4ingo 4ingu 2ini i5ni_ i4nia in3io in1is i5nite_ 5initio in3ity 4ink 4inl 2inn 2i1no i4no4c ino4s i4not 2ins in3se insur5a 2int_ 2in4th in1u i5nus 4iny 2io 4io_ ioge4 io2gr i1ol io4m ion3at ion4ery ion3i io5ph ior3i i4os io5th i5oti io4to i4our 2ip ipe4 iphras4 ip3i ip4ic ip4re4 ip3ul i3qua iq5uef iq3uid iq3ui3t 4ir i1ra ira4b i4rac ird5e ire4de i4ref i4rel4 i4res ir5gi ir1i iri5de ir4is iri3tu 5i5r2iz ir4min iro4g 5iron_ ir5ul 2is_ is5ag is3ar isas5 2is1c is3ch 4ise is3er 3isf is5han is3hon ish5op is3ib isi4d i5sis is5itiv 4is4k islan4 4isms i2so iso5mer is1p is2pi is4py 4is1s is4sal issen4 is4ses is4ta_ is1te is1ti ist4ly 4istral i2su is5us 4ita_ ita4bi i4tag 4ita5m i3tan i3tat 2ite it3era i5teri it4es 2ith i1ti 4itia 4i2tic it3ica 5i5tick it3ig it5ill i2tim 2itio 4itis i4tism i2t5o5m 4iton i4tram it5ry 4itt it3uat i5tud it3ul 4itz_ i1u 2iv iv3ell iv3en_ i4v3er_ i4vers_ iv5il_ iv5io iv1it i5vore iv3o3ro i4v3ot 4i5w ix4o 4iy 4izar izi4 5izont 5ja jac4q ja4p 1je jer5s 4jestie 4jesty jew3 jo4p 5judg 3ka_ k3ab k5ag kais4 kal4 k1b k2ed 1kee ke4g ke5li k3en4d k1er kes4 k3est_ ke4ty k3f kh4 k1i 5ki_ 5k2ic k4ill kilo5 k4im k4in_ kin4de k5iness kin4g ki4p kis4 k5ish kk4 k1l 4kley 4kly k1m k5nes 1k2no ko5r kosh4 k3ou kro5n 4k1s2 k4sc ks4l k4sy k5t k1w lab3ic l4abo laci4 l4ade la3dy lag4n lam3o 3land lan4dl lan5et lan4te lar4g lar3i las4e la5tan 4lateli 4lativ 4lav la4v4a 2l1b lbin4 4l1c2 lce4 l3ci 2ld l2de ld4ere ld4eri ldi4 ld5is l3dr l4dri le2a le4bi left5 5leg_ 5legg le4mat lem5atic 4len_ 3lenc 5lene_ 1lent le3ph le4pr lera5b ler4e 3lerg 3l4eri l4ero les2 le5sco 5lesq 3less 5less_ l3eva lev4er_ lev4era lev4ers 3ley 4leye 2lf l5fr 4l1g4 l5ga lgar3 l4ges lgo3 2l3h li4ag li2am liar5iz li4as li4ato li5bi 5licio li4cor 4lics 4lict_ l4icu l3icy l3ida lid5er 3lidi lif3er l4iff li4fl 5ligate 3ligh li4gra 3lik 4l4i4l lim4bl lim3i li4mo l4im4p l4ina 1l4ine lin3ea lin3i link5er li5og 4l4iq lis4p l1it l2it_ 5litica l5i5tics liv3er l1iz 4lj lka3 l3kal lka4t l1l l4law l2le l5lea l3lec l3leg l3lel l3le4n l3le4t ll2i l2lin4 l5lina ll4o lloqui5 ll5out l5low 2lm l5met lm3ing l4mod lmon4 2l1n2 3lo_ lob5al lo4ci 4lof 3logic l5ogo 3logu lom3er 5long lon4i l3o3niz lood5 5lope_ lop3i l3opm lora4 lo4rato lo5rie lor5ou 5los_ los5et 5losophiz 5losophy los4t lo4ta loun5d 2lout 4lov 2lp lpa5b l3pha l5phi lp5ing l3pit l4pl l5pr 4l1r 2l1s2 l4sc l2se l4sie 4lt lt5ag ltane5 l1te lten4 ltera4 lth3i l5ties_ ltis4 l1tr ltu2 ltur3a lu5a lu3br luch4 lu3ci lu3en luf4 lu5id lu4ma 5lumi l5umn_ 5lumnia lu3o luo3r 4lup luss4 lus3te 1lut l5ven l5vet4 2l1w 1ly 4lya 4lyb ly5me ly3no 2lys4 l5yse 1ma 2mab ma2ca ma5chine ma4cl mag5in 5magn 2mah maid5 4mald ma3lig ma5lin mal4li mal4ty 5mania man5is man3iz 4map ma5rine_ ma5riz mar4ly mar3v ma5sce mas4e mas1t 5mate math3 ma3tis 4matiza 4m1b mba4t5 m5bil m4b3ing mbi4v 4m5c 4me_ 2med 4med_ 5media me3die m5e5dy me2g mel5on mel4t me2m mem1o3 1men men4a men5ac men4de 4mene men4i mens4 mensu5 3ment men4te me5on m5ersa 2mes 3mesti me4ta met3al me1te me5thi m4etr 5metric me5trie me3try me4v 4m1f 2mh 5mi_ mi3a mid4a mid4g mig4 3milia m5i5lie m4ill min4a 3mind m5inee m4ingl min5gli m5ingly min4t m4inu miot4 m2is mis4er_ mis5l mis4ti m5istry 4mith m2iz 4mk 4m1l m1m mma5ry 4m1n mn4a m4nin mn4o 1mo 4mocr 5mocratiz mo2d1 mo4go mois2 moi5se 4mok mo5lest mo3me mon5et mon5ge moni3a mon4ism mon4ist mo3niz monol4 mo3ny_ mo2r 4mora_ mos2 mo5sey mo3sp moth3 m5ouf 3mous mo2v 4m1p mpara5 mpa5rab mpar5i m3pet mphas4 m2pi mpi4a mp5ies m4p1in m5pir mp5is mpo3ri mpos5ite m4pous mpov5 mp4tr m2py 4m3r 4m1s2 m4sh m5si 4mt 1mu mula5r4 5mult multi3 3mum mun2 4mup mu4u 4mw 1na 2n1a2b n4abu 4nac_ na4ca n5act nag5er_ nak4 na4li na5lia 4nalt na5mit n2an nanci4 nan4it nank4 nar3c 4nare nar3i nar4l n5arm n4as nas4c nas5ti n2at na3tal nato5miz n2au nau3se 3naut nav4e 4n1b4 ncar5 n4ces_ n3cha n5cheo n5chil n3chis nc1in nc4it ncour5a n1cr n1cu n4dai n5dan n1de nd5est_ ndi4b n5d2if n1dit n3diz n5duc ndu4r nd2we 2ne_ n3ear ne2b neb3u ne2c 5neck 2ned ne4gat neg5ativ 5nege ne4la nel5iz ne5mi ne4mo 1nen 4nene 3neo ne4po ne2q n1er nera5b n4erar n2ere n4er5i ner4r 1nes 2nes_ 4nesp 2nest 4nesw 3netic ne4v n5eve ne4w n3f n4gab n3gel nge4n4e n5gere n3geri ng5ha n3gib ng1in n5git n4gla ngov4 ng5sh n1gu n4gum n2gy 4n1h4 nha4 nhab3 nhe4 3n4ia ni3an ni4ap ni3ba ni4bl ni4d ni5di ni4er ni2fi ni5ficat n5igr nik4 n1im ni3miz n1in 5nine_ nin4g ni4o 5nis_ nis4ta n2it n4ith 3nitio n3itor ni3tr n1j 4nk2 n5kero n3ket nk3in n1kl 4n1l n5m nme4 nmet4 4n1n2 nne4 nni3al nni4v nob4l no3ble n5ocl 4n3o2d 3noe 4nog noge4 nois5i no5l4i 5nologis 3nomic n5o5miz no4mo no3my no4n non4ag non5i n5oniz 4nop 5nop5o5li nor5ab no4rary 4nosc nos4e nos5t no5ta 1nou 3noun nov3el3 nowl3 n1p4 npi4 npre4c n1q n1r nru4 2n1s2 ns5ab nsati4 ns4c n2se n4s3es nsid1 nsig4 n2sl ns3m n4soc ns4pe n5spi nsta5bl n1t nta4b nter3s nt2i n5tib nti4er nti2f n3tine n4t3ing nti4p ntrol5li nt4s ntu3me nu1a nu4d nu5en nuf4fe n3uin 3nu3it n4um nu1me n5umi 3nu4n n3uo nu3tr n1v2 n1w4 nym4 nyp4 4nz n3za 4oa oad3 o5a5les oard3 oas4e oast5e oat5i ob3a3b o5bar obe4l o1bi o2bin ob5ing o3br ob3ul o1ce och4 o3chet ocif3 o4cil o4clam o4cod oc3rac oc5ratiz ocre3 5ocrit octor5a oc3ula o5cure od5ded od3ic odi3o o2do4 odor3 od5uct_ od5ucts o4el o5eng o3er oe4ta o3ev o2fi of5ite ofit4t o2g5a5r og5ativ o4gato o1ge o5gene o5geo o4ger o3gie 1o1gis og3it o4gl o5g2ly 3ogniz o4gro ogu5i 1ogy 2ogyn o1h2 ohab5 oi2 oic3es oi3der oiff4 oig4 oi5let o3ing oint5er o5ism oi5son oist5en oi3ter o5j 2ok o3ken ok5ie o1la o4lan olass4 ol2d old1e ol3er o3lesc o3let ol4fi ol2i o3lia o3lice ol5id_ o3li4f o5lil ol3ing o5lio o5lis_ ol3ish o5lite o5litio o5liv olli4e ol5ogiz olo4r ol5pl ol2t ol3ub ol3ume ol3un o5lus ol2v o2ly om5ah oma5l om5atiz om2be om4bl o2me om3ena om5erse o4met om5etry o3mia om3ic_ om3ica o5mid om1in o5mini 5ommend omo4ge o4mon om3pi ompro5 o2n on1a on4ac o3nan on1c 3oncil 2ond on5do o3nen on5est on4gu on1ic o3nio on1is o5niu on3key on4odi on3omy on3s onspi4 onspir5a onsu4 onten4 on3t4i ontif5 on5um onva5 oo2 ood5e ood5i oo4k oop3i o3ord oost5 o2pa ope5d op1er 3opera 4operag 2oph o5phan o5pher op3ing o3pit o5pon o4posi o1pr op1u opy5 o1q o1ra o5ra_ o4r3ag or5aliz or5ange ore5a o5real or3ei ore5sh or5est_ orew4 or4gu 4o5ria or3ica o5ril or1in o1rio or3ity o3riu or2mi orn2e o5rof or3oug or5pe 3orrh or4se ors5en orst4 or3thi or3thy or4ty o5rum o1ry os3al os2c os4ce o3scop 4oscopi o5scr os4i4e os5itiv os3ito os3ity osi4u os4l o2so os4pa os4po os2ta o5stati os5til os5tit o4tan otele4g ot3er_ ot5ers o4tes 4oth oth5esi oth3i4 ot3ic_ ot5ica o3tice o3tif o3tis oto5s ou2 ou3bl ouch5i ou5et ou4l ounc5er oun2d ou5v ov4en over4ne over3s ov4ert o3vis oviti4 o5v4ol ow3der ow3el ow5est ow1i own5i o4wo oy1a 1pa pa4ca pa4ce pac4t p4ad 5pagan p3agat p4ai pain4 p4al pan4a pan3el pan4ty pa3ny pa1p pa4pu para5bl par5age par5di 3pare par5el p4a4ri par4is pa2te pa5ter 5pathic pa5thy pa4tric pav4 3pay 4p1b pd4 4pe_ 3pe4a pear4l pe2c 2p2ed 3pede 3pedi pedia4 ped4ic p4ee pee4d pek4 pe4la peli4e pe4nan p4enc pen4th pe5on p4era_ pera5bl p4erag p4eri peri5st per4mal perme5 p4ern per3o per3ti pe5ru per1v pe2t pe5ten pe5tiz 4pf 4pg 4ph_ phar5i phe3no ph4er ph4es_ ph1ic 5phie ph5ing 5phisti 3phiz ph2l 3phob 3phone 5phoni pho4r 4phs ph3t 5phu 1phy pi3a pian4 pi4cie pi4cy p4id p5ida pi3de 5pidi 3piec pi3en pi4grap pi3lo pi2n p4in_ pind4 p4ino 3pi1o pion4 p3ith pi5tha pi2tu 2p3k2 1p2l2 3plan plas5t pli3a pli5er 4plig pli4n ploi4 plu4m plum4b 4p1m 2p3n po4c 5pod_ po5em po3et5 5po4g poin2 5point poly5t po4ni po4p 1p4or po4ry 1pos pos1s p4ot po4ta 5poun 4p1p ppa5ra p2pe p4ped p5pel p3pen p3per p3pet ppo5site pr2 pray4e 5preci pre5co pre3em pref5ac pre4la pre3r p3rese 3press pre5ten pre3v 5pri4e prin4t3 pri4s pris3o p3roca prof5it pro3l pros3e pro1t 2p1s2 p2se ps4h p4sib 2p1t pt5a4b p2te p2th pti3m ptu4r p4tw pub3 pue4 puf4 pul3c pu4m pu2n pur4r 5pus pu2t 5pute put3er pu3tr put4ted put4tin p3w qu2 qua5v 2que_ 3quer 3quet 2rab ra3bi rach4e r5acl raf5fi raf4t r2ai ra4lo ram3et r2ami rane5o ran4ge r4ani ra5no rap3er 3raphy rar5c rare4 rar5ef 4raril r2as ration4 rau4t ra5vai rav3el ra5zie r1b r4bab r4bag rbi2 rbi4f r2bin r5bine rb5ing_ rb4o r1c r2ce rcen4 r3cha rch4er r4ci4b rc4it rcum3 r4dal rd2i rdi4a rdi4er rdin4 rd3ing 2re_ re1al re3an re5arr 5reav re4aw r5ebrat rec5oll rec5ompe re4cre 2r2ed re1de re3dis red5it re4fac re2fe re5fer_ re3fi re4fy reg3is re5it re1li re5lu r4en4ta ren4te re1o re5pin re4posi re1pu r1er4 r4eri rero4 re5ru r4es_ re4spi ress5ib res2t re5stal re3str re4ter re4ti4z re3tri reu2 re5uti rev2 re4val rev3el r5ev5er_ re5vers re5vert re5vil rev5olu re4wh r1f rfu4 r4fy rg2 rg3er r3get r3gic rgi4n rg3ing r5gis r5git r1gl rgo4n r3gu rh4 4rh_ 4rhal ri3a ria4b ri4ag r4ib rib3a ric5as r4ice 4rici 5ricid ri4cie r4ico rid5er ri3enc ri3ent ri1er ri5et rig5an 5rigi ril3iz 5riman rim5i 3rimo rim4pe r2ina 5rina_ rin4d rin4e rin4g ri1o 5riph riph5e ri2pl rip5lic r4iq r2is r4is_ ris4c r3ish ris4p ri3ta3b r5ited_ rit5er_ rit5ers rit3ic ri2tu rit5ur riv5el riv3et riv3i r3j r3ket rk4le rk4lin r1l rle4 r2led r4lig r4lis rl5ish r3lo4 r1m rma5c r2me r3men rm5ers rm3ing r4ming_ r4mio r3mit r4my r4nar r3nel r4ner r5net r3ney r5nic r1nis4 r3nit r3niv rno4 r4nou r3nu rob3l r2oc ro3cr ro4e ro1fe ro5fil rok2 ro5ker 5role_ rom5ete rom4i rom4p ron4al ron4e ro5n4is ron4ta 1room 5root ro3pel rop3ic ror3i ro5ro ros5per ros4s ro4the ro4ty ro4va rov5el rox5 r1p r4pea r5pent rp5er_ r3pet rp4h4 rp3ing r3po r1r4 rre4c rre4f r4reo rre4st rri4o rri4v rron4 rros4 rrys4 4rs2 r1sa rsa5ti rs4c r2se r3sec rse4cr rs5er_ rs3es rse5v2 r1sh r5sha r1si r4si4b rson3 r1sp r5sw rtach4 r4tag r3teb rten4d rte5o r1ti rt5ib rti4d r4tier r3tig rtil3i rtil4l r4tily r4tist r4tiv r3tri rtroph4 rt4sh ru3a ru3e4l ru3en ru4gl ru3in rum3pl ru2n runk5 run4ty r5usc ruti5n rv4e rvel4i r3ven rv5er_ r5vest r3vey r3vic rvi4v r3vo r1w ry4c 5rynge ry3t sa2 2s1ab 5sack sac3ri s3act 5sai salar4 sal4m sa5lo sal4t 3sanc san4de s1ap sa5ta 5sa3tio sat3u sau4 sa5vor 5saw 4s5b scan4t5 sca4p scav5 s4ced 4scei s4ces sch2 s4cho 3s4cie 5scin4d scle5 s4cli scof4 4scopy scour5a s1cu 4s5d 4se_ se4a seas4 sea5w se2c3o 3sect 4s4ed se4d4e s5edl se2g seg3r 5sei se1le 5self 5selv 4seme se4mol sen5at 4senc sen4d s5ened sen5g s5enin 4sentd 4sentl sep3a3 4s1er_ s4erl ser4o 4servo s1e4s se5sh ses5t 5se5um 5sev sev3en sew4i 5sex 4s3f 2s3g s2h 2sh_ sh1er 5shev sh1in sh3io 3ship shiv5 sho4 sh5old shon3 shor4 short5 4shw si1b s5icc 3side_ 5sides 5sidi si5diz 4signa sil4e 4sily 2s1in s2ina 5sine_ s3ing 1sio 5sion sion5a si2r sir5a 1sis 3sitio 5siu 1siv 5siz sk2 4ske s3ket sk5ine sk5ing s1l2 s3lat s2le slith5 2s1m s3ma small3 sman3 smel4 s5men 5smith smol5d4 s1n4 1so so4ce soft3 so4lab sol3d2 so3lic 5solv 3som 3s4on_ sona4 son4g s4op 5sophic s5ophiz s5ophy sor5c sor5d 4sov so5vi 2spa 5spai spa4n spen4d 2s5peo 2sper s2phe 3spher spho5 spil4 sp5ing 4spio s4ply s4pon spor4 4spot squal4l s1r 2ss s1sa ssas3 s2s5c s3sel s5seng s4ses_ s5set s1si s4sie ssi4er ss5ily s4sl ss4li s4sn sspend4 ss2t ssur5a ss5w 2st_ s2tag s2tal stam4i 5stand s4ta4p 5stat_ s4ted stern5i s5tero ste2w stew5a s3the st2i s4ti_ s5tia s1tic 5stick s4tie s3tif st3ing 5stir s1tle 5stock stom3a 5stone s4top 3store st4r s4trad 5stratu s4tray s4trid 4stry 4st3w s2ty 1su su1al su4b3 su2g3 su5is suit3 s4ul su2m sum3i su2n su2r 4sv sw2 4swo s4y 4syc 3syl syn5o sy5rin 1ta 3ta_ 2tab ta5bles 5taboliz 4taci ta5do 4taf4 tai5lo ta2l ta5la tal5en tal3i 4talk tal4lis ta5log ta5mo tan4de tanta3 ta5per ta5pl tar4a 4tarc 4tare ta3riz tas4e ta5sy 4tatic ta4tur taun4 tav4 2taw tax4is 2t1b 4tc t4ch tch5et 4t1d 4te_ tead4i 4teat tece4 5tect 2t1ed te5di 1tee teg4 te5ger te5gi 3tel_ teli4 5tels te2ma2 tem3at 3tenan 3tenc 3tend 4tenes 1tent ten4tag 1teo te4p te5pe ter3c 5ter3d 1teri ter5ies ter3is teri5za 5ternit ter5v 4tes_ 4tess t3ess_ teth5e 3teu 3tex 4tey 2t1f 4t1g 2th_ than4 th2e 4thea th3eas the5at the3is 3thet th5ic_ th5ica 4thil 5think 4thl th5ode 5thodic 4thoo thor5it tho5riz 2ths 1tia ti4ab ti4ato 2ti2b 4tick t4ico t4ic1u 5tidi 3tien tif2 ti5fy 2tig 5tigu till5in 1tim 4timp tim5ul 2t1in t2ina 3tine_ 3tini 1tio ti5oc tion5ee 5tiq ti3sa 3tise tis4m ti5so tis4p 5tistica ti3tl ti4u 1tiv tiv4a 1tiz ti3za ti3zen 2tl t5la tlan4 3tle_ 3tled 3tles_ t5let_ t5lo 4t1m tme4 2t1n2 1to to3b to5crat 4todo 2tof to2gr to5ic to2ma tom4b to3my ton4ali to3nat 4tono 4tony to2ra to3rie tor5iz tos2 5tour 4tout to3war 4t1p 1tra tra3b tra5ch traci4 trac4it trac4te tras4 tra5ven trav5es5 tre5f tre4m trem5i 5tria tri5ces 5tricia 4trics 2trim tri4v tro5mi tron5i 4trony tro5phe tro3sp tro3v tru5i trus4 4t1s2 t4sc tsh4 t4sw 4t3t2 t4tes t5to ttu4 1tu tu1a tu3ar tu4bi tud2 4tue 4tuf4 5tu3i 3tum tu4nis 2t3up_ 3ture 5turi tur3is tur5o tu5ry 3tus 4tv tw4 4t1wa twis4 4two 1ty 4tya 2tyl type3 ty5ph 4tz tz4e 4uab uac4 ua5na uan4i uar5ant uar2d uar3i uar3t u1at uav4 ub4e u4bel u3ber u4bero u1b4i u4b5ing u3ble_ u3ca uci4b uc4it ucle3 u3cr u3cu u4cy ud5d ud3er ud5est udev4 u1dic ud3ied ud3ies ud5is u5dit u4don ud4si u4du u4ene uens4 uen4te uer4il 3ufa u3fl ugh3en ug5in 2ui2 uil5iz ui4n u1ing uir4m uita4 uiv3 uiv4er_ u5j 4uk u1la ula5b u5lati ulch4 5ulche ul3der ul4e u1len ul4gi ul2i u5lia ul3ing ul5ish ul4lar ul4li4b ul4lis 4ul3m u1l4o 4uls uls5es ul1ti ultra3 4ultu u3lu ul5ul ul5v um5ab um4bi um4bly u1mi u4m3ing umor5o um2p unat4 u2ne un4er u1ni un4im u2nin un5ish uni3v un3s4 un4sw unt3ab un4ter_ un4tes unu4 un5y un5z u4ors u5os u1ou u1pe uper5s u5pia up3ing u3pl up3p upport5 upt5ib uptu4 u1ra 4ura_ u4rag u4ras ur4be urc4 ur1d ure5at ur4fer ur4fr u3rif uri4fic ur1in u3rio u1rit ur3iz ur2l url5ing_ ur4no uros4 ur4pe ur4pi urs5er ur5tes ur3the urti4 ur4tie u3ru 2us u5sad u5san us4ap usc2 us3ci use5a u5sia u3sic us4lin us1p us5sl us5tere us1tr u2su usur4 uta4b u3tat 4ute_ 4utel 4uten uten4i 4u1t2i uti5liz u3tine ut3ing ution5a u4tis 5u5tiz u4t1l ut5of uto5g uto5matic u5ton u4tou uts4 u3u uu4m u1v2 uxu3 uz4e 1va 5va_ 2v1a4b vac5il vac3u vag4 va4ge va5lie val5o val1u va5mo va5niz va5pi var5ied 3vat 4ve_ 4ved veg3 v3el_ vel3li ve4lo v4ely ven3om v5enue v4erd 5vere_ v4erel v3eren ver5enc v4eres ver3ie vermi4n 3verse ver3th v4e2s 4ves_ ves4te ve4te vet3er ve4ty vi5ali 5vian 5vide_ 5vided 4v3iden 5vides 5vidi v3if vi5gn vik4 2vil 5vilit v3i3liz v1in 4vi4na v2inc vin5d 4ving vio3l v3io4r vi1ou vi4p vi5ro vis3it vi3so vi3su 4viti vit3r 4vity 3viv 5vo_ voi4 3vok vo4la v5ole 5volt 3volv vom5i vor5ab vori4 vo4ry vo4ta 4votee 4vv4 v4y w5abl 2wac wa5ger wag5o wait5 w5al_ wam4 war4t was4t wa1te wa5ver w1b wea5rie weath3 wed4n weet3 wee5v wel4l w1er west3 w3ev whi4 wi2 wil2 will5in win4de win4g wir4 3wise with3 wiz5 w4k wl4es wl3in w4no 1wo2 wom1 wo5ven w5p wra4 wri4 writa4 w3sh ws4l ws4pe w5s4t 4wt wy4 x1a xac5e x4ago xam3 x4ap xas5 x3c2 x1e xe4cuto x2ed xer4i xe5ro x1h xhi2 xhil5 xhu4 x3i xi5a xi5c xi5di x4ime xi5miz x3o x4ob x3p xpan4d xpecto5 xpe3d x1t2 x3ti x1u xu3a xx4 y5ac 3yar4 y5at y1b y1c y2ce yc5er y3ch ych4e ycom4 ycot4 y1d y5ee y1er y4erf yes4 ye4t y5gi 4y3h y1i y3la ylla5bl y3lo y5lu ymbol5 yme4 ympa3 yn3chr yn5d yn5g yn5ic 5ynx y1o4 yo5d y4o5g yom4 yo5net y4ons y4os y4ped yper5 yp3i y3po y4poc yp2ta y5pu yra5m yr5ia y3ro yr4r ys4c y3s2e ys3ica ys3io 3ysis y4so yss4 ys1t ys3ta ysur4 y3thin yt3ic y1w za1 z5a2b zar2 4zb 2ze ze4n ze4p z1er ze3ro zet4 2z1i z4il z4is 5zl 4zm 1zo zo4m zo5ol zte4 4z1z2 z4zy";
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/es.php b/inc/3rdparty/libraries/mpdf/patterns/es.php
new file mode 100644 (file)
index 0000000..da8f756
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+       
+       Created by Luis Pabon (lpabon at metagrama dot es)
+*/
+
+$patterns="_a2 _an2a2 _an2\xc3\xa12 _an3aero _ana3li _an\xc3\xa13li _an2e2 _an2\xc3\xa92 _an3e2pigr _ane3xa _ane3x\xc3\xa1 _ane3xe _ane3x\xc3\xa9 _ane3xio _ane3xi\xc3\xb3 _an3h _an2i2 _an2\xc3\xad2 _ani3dar _ani3ll _ani3m _ani3mad _ani3m\xc3\xa1d _ani\xc3\xb1a _ani3q _an3i2so _an3i2s\xc3\xb3 _ani3vel _an2o2 _an2\xc3\xb32 _ano5che _ano5din _ano5mal _an\xc3\xb35mal _ano5nad _ano5nim _an\xc3\xb33nim _ano5ta _ano3t\xc3\xa1 _ante2o3je _anti1a2 _anti1\xc3\xa12 _anti1e2 _anti1\xc3\xa92 _anti1h _anti1i2 _anti1\xc3\xad2 _anti1o2 _anti1\xc3\xb32 _anti1u2 _anti1\xc3\xba2 _an2u2 _an2\xc3\xba2_ _anua3l _anua4lm _anu3bl _anu3da _anu3l _bi1anual _bi1aur _bien1and _bien1apa _bien1ave _bien1est _bien1int _bi1ox _bi1\xc3\xb32x _bi1un _co2a2 _co2\xc3\xa12 _co2e2 _co2\xc3\xa92 _co2i2 _co2\xc3\xad2 _co3o4 _co2\xc3\xb32 _co2u2 _co2\xc3\xba2 _de2s2a2 _de2s2\xc3\xa12 _de2s2e2 _de2s2\xc3\xa92 _de2s2i2 _de2s2\xc3\xad2 _de3s4in3ter2e3sa _de3s4in3ter2e3s\xc3\xa1 _de3s4in3ter2e3se _de3s4in3ter2e3s\xc3\xa9 _de3s4in3ter2e3so _de3s4in3ter2e3s\xc3\xb3 _de2s2o2 _de2s2\xc3\xb32 _de2s2u2 _de2s2\xc3\xba2 _dieci1o2 _en2a2 _en2\xc3\xa12 _en1aceit _en1aciy _en1aguach _en1aguaz _en1anch _en1apa _en1arb _en1art _en2artr _en2e2 _en2\xc3\xa92 _en1ej _en2i2 _en2\xc3\xad2 _en2o2 _en2\xc3\xb32 _eno3jar _en2u2 _en2\xc3\xba2 _enu3mera _enu3mer\xc3\xa1 _enu3mere _he4mee _hepta1e _hu4mea _hu4meo _in2a2 _in2\xc3\xa12 _in3abarc _in3abord _in3acent _in3adapt _in3aguant _ina3movib _in3analiz _ina3nic _in3anim _in\xc3\xa13nim _in3apel _in3aplic _in3apreci _in3aprens _in3arrug _in3asist _in2e2 _in2\xc3\xa92 _in\xc3\xa93dit _in3efic _in3efici _in3eludi _ine3narr _in2i2 _in2\xc3\xad2 _ini3cia _ini3ci\xc3\xa1 _ini3cie _in2o2 _in2\xc3\xb32 _ino3cua _ino3cula _ino3cul\xc3\xa1 _ino3cule _ino3cuo _inte2r1a2 _inte2r1\xc3\xa12 _inte2r1e2 _inte2r1\xc3\xa92 _in3ter2e3sa _in3ter2e3s\xc3\xa1 _in3ter2e3se _in3ter2e3s\xc3\xa9 _in3ter2e3so _in3ter2e3s\xc3\xb3 _inte2r1i2 _inte2r1\xc3\xad2 _inte2r1o2 _inte2r1\xc3\xb32 _inte2r3r _in3te3r4rog _in3te3r4rump _in3te3r4rupc _in3te3r4rupt _inte2r1u2 _inte2r1\xc3\xba2 _intra1o _intra1u _in2u2 _in2\xc3\xba2 _in\xc3\xba3til _inu3tiliz _mal1acon _mal1acos _mala1e _mal1andant _mal1andanz _ma4l3e4du _mal1est _mal1int _pa4n1afri _pa4n1a4meri _pa4n1europ _pa4n1\xc3\xb3pti _pos2t2a2 _pos2t2\xc3\xa12 _pos2t2e2 _pos2t2\xc3\xa92 _post3elec _pos3terg _pos3te3ri _pos2t2i2 _pos2t2\xc3\xad2 _pos3ti3go _pos3ti3la _post3impr _pos3tin _pos3t\xc3\xadn _post3ind _pos3ti3ne _pos3ti3za _pos3ti3zo _pos2t2o2 _pos2t2\xc3\xb32 _pos3t\xc3\xb33ni _post3ope _post3rev _pos2t2u2 _pos2t2\xc3\xba2 _pos3tu3la _pos3tu3l\xc3\xa1 _pos3tu3le _pos3tu3l\xc3\xa9 _pos3tu3ra _pre2a2 _pre2\xc3\xa12 _pre2e2 _pre2\xc3\xa92 _pre2h2 _pre2i2 _pre2\xc3\xad2 _pre2o2 _pre2\xc3\xb32 _pre2u2 _pre2\xc3\xba2 _pro2a2 _pro2\xc3\xa12 _pro2e2 _pro2\xc3\xa92 _pro2h2 _pro2i2 _pro2\xc3\xad2 _pro2o2 _pro2\xc3\xb32 _pro2u2 _pro2\xc3\xba2 _re2a2 _re2\xc3\xa12 _re3abr _re3\xc3\xa1br _re3a2eg _re3afirm _re3af\xc3\xadrm _re3a2grup _re3ajust _rea3j\xc3\xbast _re3alim _rea3lism _rea3list _rea3liza _rea3liz\xc3\xa1 _rea3l\xc3\xadza _re3anim _re3an\xc3\xadm _re3aparec _re3a2q _re3a2z _re3e4 _re2\xc3\xa92 _re2i2 _re2\xc3\xad2 _re3i2m _re3inc _re3ing _re3ins _re3int _re2o2 _re2\xc3\xb32 _re3o2b _re1oc _re1oj _re3orga _retro1a _re2u2 _re2\xc3\xba2 _re3ubica _re3ub\xc3\xadca _reu3mati _reu3m\xc3\xa1ti _re3unir _re3un\xc3\xadr _re1unt _re3usar _re3us\xc3\xa1r _re3utiliz _re3util\xc3\xadz _so3a4s _su2b2a2 _su2b2\xc3\xa12 _sub3aflue _sub3arr _su2b2e2 _su2b2\xc3\xa92 _sub3enten _sub3estim _sub3est\xc3\xadm _su2b2i2 _su2b2\xc3\xad2 _su3b4ien _sub2i3ll _sub3\xc3\xadmi _sub2i3mien _sub3\xc3\xadnd _su2b2o2 _su2b2\xc3\xb32 _sub3ofici _su4b3ray _su2b2u2 _su2b2\xc3\xba2 _sub3urba _su2d1a2fr _su2d1a2me _su2d1est _sur1a2me _sur1est _sur1oes _tele1imp _tele1obj _tran2s1alp _tran2s1and _tran2s1atl _tran2s1oce _tran2s1ur _tra2s1a _tra2s1o _tra2s2o\xc3\xb1 _tri1\xc3\xb32x 4a3ba_ 4a3bais_ 4\xc3\xa13bamos_ 4a3ban_ 4a3bas_ acante2 4a3ci\xc3\xb3n_ 4a3ciones_ acto1a2 acto1\xc3\xa12 acto1e2 acto1\xc3\xa92 acto1h acto1i2 acto1\xc3\xad2 acto1o2 acto1\xc3\xb32 acto1u2 acto1\xc3\xba2 4ad_ 4a3da_ 4a3das_ 4adlas_ 4adle_ 4adles_ 4adlo_ 4adlos_ 4adme_ 4\xc3\xa1d3mela_ 4\xc3\xa1d3melas_ 4\xc3\xa1dmele_ 4\xc3\xa1dmeles_ 4\xc3\xa1dmelo_ 4\xc3\xa1dmelos_ 4adnos_ 4\xc3\xa1dnosla_ 4\xc3\xa1dnoslas_ 4\xc3\xa1dnosle_ 4\xc3\xa1dnosles_ 4\xc3\xa1dnoslo_ 4\xc3\xa1dnoslos_ 4a3do_ 4a3dor_ 4a3dora_ 4a3doras_ 4a3dores_ 4a3dos_ 4\xc3\xa1dsela_ 4\xc3\xa1dselas_ 4\xc3\xa1dsele_ 4\xc3\xa1dseles_ 4\xc3\xa1dselo_ 4\xc3\xa1dselos_ 4adte_ 4\xc3\xa1d3tela_ 4\xc3\xa1d3telas_ 4\xc3\xa1dtele_ 4\xc3\xa1dteles_ 4\xc3\xa1dtelo_ 4\xc3\xa1dtelos_ aero1a2 aero1\xc3\xa12 aero1e2 aero1\xc3\xa92 aero1h aero1i2 aero1\xc3\xad2 aero1o2 aero1\xc3\xb32 aero1u2 aero1\xc3\xba2 afro1a2 afro1\xc3\xa12 afro1e2 afro1\xc3\xa92 afro1h afro1i2 afro1\xc3\xad2 afro1o2 afro1\xc3\xb32 afro1u2 afro1\xc3\xba2 4a4i3gan_ 4\xc3\xa1is_ a\xc3\xad5so_ a\xc3\xad5sos_ 2al_ 2ales_ 4a3mos_ 4an_ ana3l\xc3\xad 4ando 4\xc3\xa1ndola_ 4\xc3\xa1ndolas_ 4\xc3\xa1ndole_ 4\xc3\xa1ndoles_ 4\xc3\xa1ndolo_ 4\xc3\xa1ndolos_ 4\xc3\xa1ndome_ 4\xc3\xa1ndomela_ 4\xc3\xa1ndomelas_ 4\xc3\xa1ndomele_ 4\xc3\xa1ndomeles_ 4\xc3\xa1ndomelo_ 4\xc3\xa1ndomelos_ 4\xc3\xa1ndonos_ 4\xc3\xa1ndoos_ 4\xc3\xa1ndose_ 4\xc3\xa1ndosela_ 4\xc3\xa1ndoselas_ 4\xc3\xa1ndosele_ 4\xc3\xa1ndoseles_ 4\xc3\xa1ndoselo_ 4\xc3\xa1ndoselos_ 4\xc3\xa1ndoseme_ 4\xc3\xa1ndosenos_ 4\xc3\xa1ndote_ 4\xc3\xa1ndotela_ 4\xc3\xa1ndotelas_ 4\xc3\xa1ndotele_ 4\xc3\xa1ndoteles_ 4\xc3\xa1ndotelo_ 4\xc3\xa1ndotelos_ 4\xc3\xa1ndoteme_ 4\xc3\xa1ndotenos_ anfi1a2 anfi1\xc3\xa12 anfi1e2 anfi1\xc3\xa92 anfi1h anfi1i2 anfi1\xc3\xad2 anfi1o2 anfi1\xc3\xb32 anfi1u2 anfi1\xc3\xba2 anglo1a2 anglo1\xc3\xa12 anglo1e2 anglo1\xc3\xa92 anglo1h anglo1i2 anglo1\xc3\xad2 anglo1o2 anglo1\xc3\xb32 anglo1u2 anglo1\xc3\xba2 ante1a2 ante1\xc3\xa12 ante1e2 ante1\xc3\xa92 ante1h ante1i2 ante1\xc3\xad2 ante1o2 ante1\xc3\xb32 ante1u2 ante1\xc3\xba2 4aos_ 4\xc3\xa1osla_ 4\xc3\xa1oslas_ 4\xc3\xa1osle_ 4\xc3\xa1osles_ 4\xc3\xa1oslo_ 4\xc3\xa1oslos_ 4ar_ 4a3ra_ 4a3r\xc3\xa1_ 4a3rais_ 4\xc3\xa13ramos_ 4a3ran_ 4a3r\xc3\xa1n_ 4a3ras_ 4a3r\xc3\xa1s_ archi1a2 archi1\xc3\xa12 archi1e2 archi1\xc3\xa92 archi1h archi1i2 archi1\xc3\xad2 archi1o2 archi1\xc3\xb32 archi1u2 archi1\xc3\xba2 4a3re_ 4a3r\xc3\xa9_ 4a3reis_ 4a3r\xc3\xa9is_ 4a3remos_ 4\xc3\xa13remos_ 4a3ren_ 4a3res_ 4a3r\xc3\xa9s_ 4a3r\xc3\xada_ 4a3r\xc3\xadais 4a3r\xc3\xadamos_ 4a3r\xc3\xadan_ 4a3r\xc3\xadas_ a3rio_ a3rios_ 4a3r\xc3\xads_ 4a4r3la_ 4a4r3las_ 4a4r3le_ 4a4r3les_ 4a4r3lo_ 4a4r3los_ 4a4rme_ 4\xc3\xa14r3mela_ 4\xc3\xa14r3melas_ 4\xc3\xa14rmele_ 4\xc3\xa14r3meles_ 4\xc3\xa14rmelo_ 4\xc3\xa14r3melos_ 4a4r3nos_ 4\xc3\xa14r3nosla_ 4\xc3\xa14r3noslas_ 4\xc3\xa14r3nosle_ 4\xc3\xa14r3nosles_ 4\xc3\xa14r3noslo_ 4\xc3\xa14r3noslos_ 4a3ron_ 4a3ros_ 4\xc3\xa1rosla_ 4\xc3\xa1roslas_ 4\xc3\xa1rosle_ 4\xc3\xa1rosles_ 4\xc3\xa1roslo_ 4\xc3\xa1roslos_ 4a4r3se_ 4\xc3\xa14r3sela_ 4\xc3\xa14r3selas_ 4\xc3\xa14r3sele_ 4\xc3\xa14r3seles_ 4\xc3\xa14r3selo_ 4\xc3\xa14r3selos_ 4a4r3te_ 4\xc3\xa14r3tela_ 4\xc3\xa14r3telas_ 4\xc3\xa14r3tele_ 4\xc3\xa14r3teles_ 4\xc3\xa14r3telo_ 4\xc3\xa14r3telos_ 4as_ 4\xc3\xa1s_ 4a3se_ 4a3seis_ 4\xc3\xa13semos_ 4a3sen_ 4a3ses_ 4aste_ 4asteis_ 4astes_ asu3b2 4ates_ auto1a2 auto1\xc3\xa12 auto1e2 auto1\xc3\xa92 auto1h auto1i2 auto1\xc3\xad2 auto1o2 auto1\xc3\xb32 auto1u2 auto1\xc3\xba2 1b 2bb 2bc 2b3c2n 2b3c2t 2b3c2z 2bd 2bf 2b3f2t 2bg 2b3g2n 2b1h biblio1a2 biblio1\xc3\xa12 biblio1e2 biblio1\xc3\xa92 biblio1h biblio1i2 biblio1\xc3\xad2 biblio1o2 biblio1\xc3\xb32 biblio1u2 biblio1\xc3\xba2 bien2 b4ien3das_ b4ien3do_ bien3h bien3m bien3q bien3t bien3v bio1a2 bio1\xc3\xa12 bio1e2 bio1\xc3\xa92 bio1h bio1i2 bio1\xc3\xad2 bio1o2 bio1\xc3\xb32 bio1u2 bio1\xc3\xba2 bi1u2n\xc3\xad 2bj 2bk b2l 2bl_ 2bm 2b3m2n 2bn 2bp 2b3p2n 2b3p2s 2b3p2t 2bq b2r 2br_ 2bs 2bt 2b3t2s 2b3t2z 2bv 2bw 2bx 2by 2bz 1c 4caca4 4caga4 4cagas_ 4cago4 cardio1a2 cardio1\xc3\xa12 cardio1e2 cardio1\xc3\xa92 cardio1h cardio1i2 cardio1\xc3\xad2 cardio1o2 cardio1\xc3\xb32 cardio1u2 cardio1\xc3\xba2 2cb 2cc 2c3c2n 2c3c2t 2c3c2z 2cd cefalo1a2 cefalo1\xc3\xa12 cefalo1e2 cefalo1\xc3\xa92 cefalo1h cefalo1i2 cefalo1\xc3\xad2 cefalo1o2 cefalo1\xc3\xb32 cefalo1u2 cefalo1\xc3\xba2 centi1a2 centi1\xc3\xa12 centi5\xc3\xa1rea centi1e2 centi1\xc3\xa92 centi1h centi1i2 centi1\xc3\xad2 centi1o2 centi1\xc3\xb32 centi1u2 centi1\xc3\xba2 2cf 2c3f2t 2cg 2c3g2n c4h 2ch_ ciclo1a2 ciclo1\xc3\xa12 ciclo1e2 ciclo1\xc3\xa92 ciclo1h ciclo1i2 ciclo1\xc3\xad2 ciclo1o2 ciclo1\xc3\xb32 ciclo1u2 ciclo1\xc3\xba2 cito1a2 cito1\xc3\xa12 cito1e2 cito1\xc3\xa92 cito1h cito1i2 cito1\xc3\xad2 cito1o2 cito1\xc3\xb32 cito1u2 cito1\xc3\xba2 2cj c2k c2l 2cl_ 2cm 2c3m2n 2cn 4cn_ 3c2neor cnico1a2 cnico1\xc3\xa12 cnico1e2 cnico1\xc3\xa92 cnico1h cnico1i2 cnico1\xc3\xad2 cnico1o2 cnico1\xc3\xb32 cnico1u2 cnico1\xc3\xba2 co4acci co4acti co4adju co4a3dun co4adyu co3agen co4a3gul co4\xc3\xa13gul co4a3lic co4aptac co4art co4\xc3\xa1rt co4e3fic co4erc co4erz co4e3t\xc3\xa1 co3exis co4imbr co4inci co4i3to con1imbr co3n4imbri contra1a2 contra1\xc3\xa12 contra1e2 contra1\xc3\xa92 contra1h contra1i2 contra1\xc3\xad2 contra1o2 contra1\xc3\xb32 contra1u2 contra1\xc3\xba2 con1urb co4o3per co4o3p\xc3\xa9r co4opt co4ord 2cp 2c3p2n 2c3p2s 2c3p2t 2cq c2r 2cr_ cripto1a2 cripto1\xc3\xa12 cripto1e2 cripto1\xc3\xa92 cripto1h cripto1i2 cripto1\xc3\xad2 cripto1o2 cripto1\xc3\xb32 cripto1u2 cripto1\xc3\xba2 crono1a2 crono1\xc3\xa12 crono1e2 crono1\xc3\xa92 crono1h crono1i2 crono1\xc3\xad2 crono1o2 crono1\xc3\xb32 crono1u2 crono1\xc3\xba2 2cs 2ct 4ct_ 2c3t2s 2c3t2z 4culo4 2cv 2cw 2cx 2cy 2cz 4cz_ 1d 2db 2dc 2d3c2n 2d3c2t 2d3c2z 2dd deca1a2 deca1\xc3\xa12 deca1e2 deca1\xc3\xa92 deca1h deca1i2 deca1\xc3\xad2 deca2i3mient deca1o2 deca1\xc3\xb32 deca1u2 deca1\xc3\xba2 decimo1 de4s3abast de4s3aboll de4s3aboto de4s3abr desa3brid de4s3abroch de4s3aceit de4s3aceler desa3cert desa3ciert de4s3acobar de4s3acomod de4s3acomp de4s3acons de4s3acopl de4s3acorr de4s3acostum de4s3acot desa3craliz de4s3acredit de4s3activ de4s3acuart de4s3aderez de4s3adeud de4s3adorar de4s3adormec de4s3adorn de4s3advert de4s3aferr desa3fi desa3f\xc3\xad de4s3afic de4s3afil de4s3afin de4s3afor desa3garr de4s3agraci de4s3agrad de4s3agravi de4s3agreg de4s3agrup de4s3agu desa3g\xc3\xbc desa3guisado de4s3aherr de4s3ahij de4s3ajust de4s3alagar de4s3alent de4s3alfom de4s3alfor de4s3alien desa3lin de4s3aline de4s3ali\xc3\xb1 desa3liv de4s3alm de4s3almid desa3loj de4s3alquil de4s3alter de4s3alumbr desa3marr desa3mobl de4s3amold de4s3amort de4s3amuebl de4s3and de4s3angel de4s3anid de4s3anim de4s3an\xc3\xadm de4s3anud desa3pacib de4s3apadr desa3pa\xc3\xb1 de4s3apare desa3parec desa3paric desa3peg desa3percib de4s3aplic de4s3apolill de4s3apoy de4s3aprend desa3prensi de4s3apret de4s3apriet de4s3aprob de4s3apropi de4s3aprovech de4s3arbol de4s3aren de4s3arm des4arme de4s3arraig de4s3arregl de4s3arrend de4s3arrim desa3rroll de4s3arrop de4s3arrug de4s3articul de4s3asent de4s3asist de4s3asn desa3soseg desa3sosieg de4s3atenc de4s3atend de4s3atent de4s3atiend desa3tin de4s3atorn de4s3atranc de4s3autor de4s3avis desa3yun desa3zon desa3z\xc3\xb3n de4s3embal de4s3emb\xc3\xa1l de4s3embar de4s3emb\xc3\xa1r de4s3embarg de4s3embols de4s3emborr de4s3embosc de4s3embot de4s3embrag de4s3embr\xc3\xa1g de4s3embrave de4s3embr\xc3\xa1ve de4s3embroll de4s3embr\xc3\xb3ll de4s3embruj de4s3embr\xc3\xbaj de3semej de4s3empac de4s3empa\xc3\xb1 de4s3emp\xc3\xa1\xc3\xb1 de4s3empaquet de4s3empaqu\xc3\xa9t de4s3emparej de4s3empar\xc3\xa9j de4s3emparent de4s3empat de4s3emp\xc3\xa9 de4s3empedr de4s3empeg de4s3empeor de4s3emperez de4s3empern de4s3emple de4s3empolv de4s3empotr de4s3empoz de4s3enam de4s3encab de4s3encad de4s3encaj de4s3enc\xc3\xa1j de4s3encall de4s3enc\xc3\xa1ll de4s3encam de3sencant de4s3encap de4s3encar de4s3enc\xc3\xa1r de4s3ench de4s3encl de4s3enco de4s3encr de4s3encu de4s3end de3senfad de3senf\xc3\xa1d de4s3enfi de4s3enfo de4s3enf\xc3\xb3 de3senfren de4s3enfund de4s3enfur de4s3enganch de3senga\xc3\xb1 de3seng\xc3\xa1\xc3\xb1 de4s3engar de4s3engas de4s3engom de4s3engoz de4s3engra de4s3enhebr de4s3enj de4s3enlad de4s3enlaz de4s3enlo de4s3enm de4s3enr de4s3ens de4s3enta de3sentend de4s3enter de3sentien de3senti\xc3\xa9n de4s3entier de4s3enti\xc3\xa9r de4s3ento de4s3entr de4s3entu de4s3envain de3senvolvim de3seo de4s3eq de3s4erci de3s4ert de3s4\xc3\xa9rt de4s3espa de3sesper de3sesperac de4s3esperanz de4s3estabil de4s3estim de3sider de3sidia de3sidio de3siert de3sign de3sigual de3silusi de4s3imagin de4s3iman de4s3impon de4s3impres de4s3impresX de4s3incent de4s3inclin de4s3incorp de4s3incrust de3sinenc de3sinfec de4s3infl de4s3inflam de4s3inform de4s3inhib de4s3insect de4s3instal de3s4integr de3s4inter de4s3intox de4s3inver de3sisten de4s3obedec de4s3oblig de4s3obstr de3socup de4s3odor de3solac de3solad de3soll de3sonce de4s3orde de4s3\xc3\xb3rde de4s3orej de3s4oseg de4s3ova de4s3ovi de4s3oxi de4s3oye de4s3oy\xc3\xa9 de4s3ub4ic de3s4ubstan de3su3dan de3su3dar de3su3das de3suell de4s3unier de4s3unim de4s3unir de3s4ustan 2df 2d3f2t 2dg 2d3g2n 2d1h 2dj 2dk 2dl 2dm 2d3m2n 2dn dodeca1a2 dodeca1\xc3\xa12 dodeca1e2 dodeca1\xc3\xa92 dodeca1h dodeca1i2 dodeca1\xc3\xad2 dodeca1o2 dodeca1\xc3\xb32 dodeca1u2 dodeca1\xc3\xba2 2dp 2d3p2n 2d3p2s 2d3p2t 2dq d2r 2dr_ 2ds 2dt 2d3t2s 2d3t2z 2dv 2dw 2dx 2dy 2dz 4e_ 4\xc3\xa9_ ea3cia_ ea3cias_ ea3cio_ ea3cios_ 4eadla_ e4a3miento ecano1a2 ecano1\xc3\xa12 ecano1e2 ecano1\xc3\xa92 ecano1h ecano1i2 ecano1\xc3\xad2 ecano1o2 ecano1\xc3\xb32 ecano1u2 ecano1\xc3\xba2 eco1a2 eco1\xc3\xa12 eco1e2 eco1\xc3\xa92 eco1h eco1i2 eco1\xc3\xad2 eco1o2 eco1\xc3\xb32 eco1u2 eco1\xc3\xba2 ectro1a2 ectro1\xc3\xa12 ectro1e2 ectro1\xc3\xa92 ectro1h ectro1i2 ectro1\xc3\xad2 ectro1o2 ectro1\xc3\xb32 ectro1u2 ectro1\xc3\xba2 4ed_ 4edlas_ 4edle_ 4edles_ 4edlo_ 4edlos_ 4edme_ 4\xc3\xa9d3mela_ 4\xc3\xa9d3melas_ 4\xc3\xa9dmele_ 4\xc3\xa9dmeles_ 4\xc3\xa9dmelo_ 4\xc3\xa9dmelos_ 4ednos_ 4\xc3\xa9dnosla_ 4\xc3\xa9dnoslas_ 4\xc3\xa9dnosle_ 4\xc3\xa9dnosles_ 4\xc3\xa9dnoslo_ 4\xc3\xa9dnoslos_ 4\xc3\xa93drica_ 4\xc3\xa93dricas_ 4\xc3\xa93drico_ 4\xc3\xa93dricos_ 4e3dro_ 4e3dros_ 4\xc3\xa9dsela_ 4\xc3\xa9dselas_ 4\xc3\xa9dsele_ 4\xc3\xa9dseles_ 4\xc3\xa9dselo_ 4\xc3\xa9dselos_ 4edte_ 4\xc3\xa9d3tela_ 4\xc3\xa9d3telas_ 4\xc3\xa9dtele_ 4\xc3\xa9dteles_ 4\xc3\xa9dtelo_ 4\xc3\xa9dtelos_ 4eedla_ 4\xc3\xa9is_ 4emboca emi2o2 4e3mos_ 4en_ endo1a2 endo1\xc3\xa12 endo1e2 endo1\xc3\xa92 endo1h endo1i2 endo1\xc3\xad2 endo1o2 endo1\xc3\xb32 endo1u2 endo1\xc3\xba2 ento1a2 ento1\xc3\xa12 ento1e2 ento1\xc3\xa92 ento1h ento1i2 ento1\xc3\xad2 ento1o2 ento1\xc3\xb32 ento1u2 ento1\xc3\xba2 entre1a2 entre1\xc3\xa12 entre1e2 entre1\xc3\xa92 entre1h entre1i2 entre1\xc3\xad2 entre1o2 entre1\xc3\xb32 entre1u2 entre1\xc3\xba2 4eos_ 4\xc3\xa9osla_ 4\xc3\xa9oslas_ 4\xc3\xa9osle_ 4\xc3\xa9osles_ 4\xc3\xa9oslo_ 4\xc3\xa9oslos_ 4er_ 4e3r\xc3\xa1_ e5r4a3ba_ e5r4a3bais_ e5r4\xc3\xa13bamos_ e5r4a3ban_ e5r4a3bas_ 4e3ra3ble_ 4e3ra3blemente_ 4e3ra3bles_ e5r4ad_ e5r4a3da_ e5r4a3das_ e5r4a3do_ e5r4a3dor_ e5r4a3dora_ e5r4a3doras_ e5r4a3dores_ e5r4a3dos_ e5r4\xc3\xa1is_ e5r4a3mos_ e5r4an_ 4e3r\xc3\xa1n_ e5r4a3ra_ e5r4a3r\xc3\xa1_ e5r4a3rais_ e5r4\xc3\xa13ramos_ e5r4a3ran_ e5r4a3r\xc3\xa1n_ e5r4a3ras_ e5r4a3r\xc3\xa1s_ e5r4a3re_ e5r4a3r\xc3\xa9_ e5r4a3reis_ e5r4a3r\xc3\xa9is_ e5r4a3remos_ e5r4\xc3\xa13remos_ e5r4a3ren_ e5r4a3res_ e5r4a3r\xc3\xa9s_ e5r4a3r\xc3\xada_ e5r4a3r\xc3\xadais e5r4a3r\xc3\xadamos_ e5r4a3r\xc3\xadan_ e5r4a3r\xc3\xadas_ e5r4a3r\xc3\xads_ e5r4a3ron_ e5r4as_ 4e3r\xc3\xa1s_ e5r4a3se_ e5r4a3seis_ e5r4\xc3\xa13semos_ e5r4a3sen_ e5r4a3ses_ e5r4aste_ e5r4asteis_ e5r4astes_ e5r4ates_ 4e3r\xc3\xa9_ 4e3r\xc3\xa9is_ 4e3re3mos_ 4e3r\xc3\xa9s_ 4e3r\xc3\xada_ 4e3r\xc3\xadais_ 4e3r\xc3\xadamos_ 4e3r\xc3\xadan_ 4e3r\xc3\xadas_ 4e3rior_ 4e3riora_ 4e3rioras_ 4e3riores_ 4e3rioridad_ 4e3rioridades_ 4e3riormente_ 4e3r\xc3\xads_ 4erla_ 4erlas_ 4erle_ 4erles_ 4erlo_ 4erlos_ 4erme_ 4\xc3\xa9r3mela_ 4\xc3\xa9r3melas_ 4\xc3\xa9rmele_ 4\xc3\xa9rmeles_ 4\xc3\xa9rmelo_ 4\xc3\xa9rmelos_ 4ernos_ 4\xc3\xa9rnosla_ 4\xc3\xa9rnoslas_ 4\xc3\xa9rnosle_ 4\xc3\xa9rnosles_ 4\xc3\xa9rnoslo_ 4\xc3\xa9rnoslos_ 4e3ros_ 4\xc3\xa93rosla_ 4\xc3\xa93roslas_ 4\xc3\xa93rosle_ 4\xc3\xa93rosles_ 4\xc3\xa93roslo_ 4\xc3\xa93roslos_ 4erse_ 4\xc3\xa9rsela_ 4\xc3\xa9rselas_ 4\xc3\xa9rsele_ 4\xc3\xa9rseles_ 4\xc3\xa9rselo_ 4\xc3\xa9rselos_ 4erte_ 4\xc3\xa9r3tela_ 4\xc3\xa9r3telas_ 4\xc3\xa9rtele_ 4\xc3\xa9rteles_ 4\xc3\xa9rtelo_ 4\xc3\xa9rtelos_ 4\xc3\xa9s 4es_ euco1a2 euco1\xc3\xa12 euco1e2 euco1\xc3\xa92 euco1h euco1i2 euco1\xc3\xad2 euco1o2 euco1\xc3\xb32 euco1u2 euco1\xc3\xba2 euro1a2 euro1\xc3\xa12 euro1e2 euro1\xc3\xa92 euro1h euro1i2 euro1\xc3\xad2 euro1o2 euro1\xc3\xb32 euro1u2 euro1\xc3\xba2 expoli4 extra1a2 extra1\xc3\xa12 extra1e2 extra1\xc3\xa92 extra1h extra1i2 extra1\xc3\xad2 extra1o2 extra1\xc3\xb32 extra1u2 extra1\xc3\xba2 1f familia3ri 2fb 2fc 2fd 2ff 2fg 2f1h 2fj 2fk f2l 2fl_ 2fm 2fn fono1a2 fono1\xc3\xa12 fono1e2 fono1\xc3\xa92 fono1h fono1i2 fono1\xc3\xad2 fono1o2 fono1\xc3\xb32 fono1u2 fono1\xc3\xba2 foto1a2 foto1\xc3\xa12 foto1e2 foto1\xc3\xa92 foto1h foto1i2 foto1\xc3\xad2 foto1o2 foto1\xc3\xb32 foto1u2 foto1\xc3\xba2 2fp 2fq f2r 2fr_ 2fs 2ft 4ft_ 2fv 2fw 2fx 2fy 2fz 1g gastro1a2 gastro1\xc3\xa12 gastro1e2 gastro1\xc3\xa92 gastro1h gastro1i2 gastro1\xc3\xad2 gastro1o2 gastro1\xc3\xb32 gastro1u2 gastro1\xc3\xba2 2gb 2gc 2gd geo1a2 geo1\xc3\xa12 geo1e2 geo1\xc3\xa92 geo1h geo1i2 geo1\xc3\xad2 geo1o2 geo1\xc3\xb32 geo1u2 geo1\xc3\xba2 2gf 2gg 2g2h 2gj 2gk g2l 2gl_ gluco1a2 gluco1\xc3\xa12 gluco1e2 gluco1\xc3\xa92 gluco1h gluco1i2 gluco1\xc3\xad2 gluco1o2 gluco1\xc3\xb32 gluco1u2 gluco1\xc3\xba2 2gm 2gn 4gn_ 2gp 2gq g2r 2gr_ 2gs 2gt 2gv 2gw 2gx 2gy 2gz 2hb 2hc 2hd hecto1a2 hecto1\xc3\xa12 hecto1e2 hecto1\xc3\xa92 hecto1h hecto1i2 hecto1\xc3\xad2 hecto1o2 hecto1\xc3\xb32 hecto1u2 hecto1\xc3\xba2 helio1a2 helio1\xc3\xa12 helio1e2 helio1\xc3\xa92 helio1h helio1i2 helio1\xc3\xad2 helio1o2 helio1\xc3\xb32 helio1u2 helio1\xc3\xba2 hemato1a2 hemato1\xc3\xa12 hemato1e2 hemato1\xc3\xa92 hemato1h hemato1i2 hemato1\xc3\xad2 hemato1o2 hemato1\xc3\xb32 hemato1u2 hemato1\xc3\xba2 hemi1a2 hemi1\xc3\xa12 hemi1e2 hemi1\xc3\xa92 hemi1h hemi1i2 hemi1\xc3\xad2 hemi1o2 hemi1\xc3\xb32 hemi1u2 hemi1\xc3\xba2 hemo1a2 hemo1\xc3\xa12 hemo1e2 hemo1\xc3\xa92 hemo1h hemo1i2 hemo1\xc3\xad2 hemo1o2 hemo1\xc3\xb32 hemo1u2 hemo1\xc3\xba2 hexa1a2 hexa1\xc3\xa12 hexa1e2 hexa1\xc3\xa92 hexa1h hexa1i2 hexa1\xc3\xad2 hexa1o2 hexa1\xc3\xb32 hexa1u2 hexa1\xc3\xba2 2hf 2hg 2h1h hidro1a2 hidro1\xc3\xa12 hidro1e2 hidro1\xc3\xa92 hidro1h hidro1i2 hidro1\xc3\xad2 hidro1o2 hidro1\xc3\xb32 hidro1u2 hidro1\xc3\xba2 hipe2r1a2 hipe2r1\xc3\xa12 hipe2r1e2 hipe2r1\xc3\xa92 hipe2r1i2 hipe2r1\xc3\xad2 hipe2r1o2 hipe2r1\xc3\xb32 hipe2r3r hipe2r1u2 hipe2r1\xc3\xba2 histo1a2 histo1\xc3\xa12 histo1e2 histo1\xc3\xa92 histo1h histo1i2 histo1\xc3\xad2 histo1o2 histo1\xc3\xb32 histo1u2 histo1\xc3\xba2 2hj 2hk 2hl 2hm 2hn homo1a2 homo1\xc3\xa12 homo1e2 homo1\xc3\xa92 homo1h homo1i2 homo1\xc3\xad2 homo1o2 homo1\xc3\xb32 homo1u2 homo1\xc3\xba2 2hp 2hq 2hr 2hs 2ht 2hv 2hw 2hx 2hy 2hz 4\xc3\xad_ i2a_ 4\xc3\xada_ 4\xc3\xadais_ 4\xc3\xada3mos_ 4\xc3\xadan_ ia5res_ i2as_ 4\xc3\xadas_ 2i3ca_ 2i3cas_ 2i3co_ icono1a2 icono1\xc3\xa12 icono1e2 icono1\xc3\xa92 icono1h icono1i2 icono1\xc3\xad2 icono1o2 icono1\xc3\xb32 icono1u2 icono1\xc3\xba2 2i3cos_ 4\xc3\xad3da_ 4i2dal_ 4i2dales_ 4\xc3\xad3das_ 4i3deo_ 4i3deos_ 4\xc3\xad3do_ 4\xc3\xad3dos_ 4i4er_ 4i3ga_ 4i3g\xc3\xa1is_ 4i3g\xc3\xa13monos_ 4i3g\xc3\xa13monosla_ 4i3g\xc3\xa13monoslas_ 4i3g\xc3\xa13monosle_ 4i3g\xc3\xa13monosles_ 4i3g\xc3\xa13monoslo_ 4i3g\xc3\xa13monoslos_ 4i3g\xc3\xa13moos_ 4i3g\xc3\xa13moosla_ 4i3g\xc3\xa13mooslas_ 4i3g\xc3\xa13moosle_ 4i3g\xc3\xa13moosles_ 4i3g\xc3\xa13mooslo_ 4i3g\xc3\xa13mooslos_ 4i3gamos_ 4i3g\xc3\xa13mosela_ 4i3g\xc3\xa13moselas_ 4i3g\xc3\xa13mosele_ 4i3g\xc3\xa13moseles_ 4i3g\xc3\xa13moselo_ 4i3g\xc3\xa13moselos_ 4i3g\xc3\xa13mosla_ 4i3g\xc3\xa13moslas_ 4i3g\xc3\xa13mosle_ 4i3g\xc3\xa13mosles_ 4i3g\xc3\xa13moslo_ 4i3g\xc3\xa13moslos_ 4i3g\xc3\xa13mosme_ 4i3g\xc3\xa13mos3mela_ 4i3g\xc3\xa13mos3melas_ 4i3g\xc3\xa13mosmele_ 4i3g\xc3\xa13mosmeles_ 4i3g\xc3\xa13mosmelo_ 4i3g\xc3\xa13mosmelos_ 4i3g\xc3\xa13moste_ 4i3g\xc3\xa13mos3tela_ 4i3g\xc3\xa13mos3telas_ 4i3g\xc3\xa13mostele_ 4i3g\xc3\xa13mosteles_ 4i3g\xc3\xa13mostelo_ 4i3g\xc3\xa13mostelos_ 4i3gas_ 4i3g\xc3\xa1s_ 4i3go_ 4\xc3\xad3mos_ infra1a2 infra1\xc3\xa12 infra1e2 infra1\xc3\xa92 infra1h infra1i2 infra1\xc3\xad2 infra1o2 infra1\xc3\xb32 infra1u2 infra1\xc3\xba2 inter4\xc3\xa9s inter4esar inter4in inter4ino inter4ior intra1a2 intra1\xc3\xa12 intra1e2 intra1\xc3\xa92 intra1h intra1i2 intra1\xc3\xad2 intra1o2 intra1\xc3\xb32 intra1u2 intra1\xc3\xba2 i2o_ i2os_ 4\xc3\xadsmo_ 4\xc3\xadsmos_ iso1a2 iso1\xc3\xa12 iso1e2 iso1\xc3\xa92 iso1h iso1i2 iso1\xc3\xad2 iso1o2 iso1\xc3\xb32 iso1u2 iso1\xc3\xba2 4\xc3\xadsta_ 4\xc3\xadstas_ 4\xc3\xad4s3te_ 4\xc3\xads3teis_ 4\xc3\xad4s3tes_ 4\xc3\xadstica_ 4\xc3\xadsticas_ 4\xc3\xadstico_ 4\xc3\xadsticos_ 4\xc3\xad3tes_ 1j 2jb 2jc 2jd 2jf 2jg 2j1h 2jj 2jk 2jl 2jm 2jn 2jp 2jq 2jr 2js 2jt 2jv 2jw 2jx 2jy 2jz 1k 2kb 2kc 2kd 2kf 2kg 2k2h kilo1a2 kilo1\xc3\xa12 kilo1e2 kilo1\xc3\xa92 kilo1h kilo1i2 kilo1\xc3\xad2 kilo1o2 kilo1\xc3\xb32 kilo1u2 kilo1\xc3\xba2 2kj 2kk k2l 2kl_ 2km 2kn 2kp 2kq k2r 2kr_ 2ks 2kt 2kv 2kw 2kx 2ky 2kz 1l 2lb 2lc 2l3c2n 2l3c2t 2l3c2z 2ld 2lf 2l3f2t 2lg 2l3g2n 2l1h li5\xc3\xa1rea 2lj 2lk l4l 2ll_ 2lm 2l3m2n 2ln 2lp 2l3p2n 2l3p2s 2l3p2t 2lq 2lr 2ls 2lt 2l3t2s 2l3t2z 2lv 2lw 2lx 2ly 2lz 1m macro1a2 macro1\xc3\xa12 macro1e2 macro1\xc3\xa92 macro1h macro1i2 macro1\xc3\xad2 macro1o2 macro1\xc3\xb32 macro1u2 macro1\xc3\xba2 mal2 mal3b mal3c mal3d mal3f mal3g ma4l3h mal3m mal3p mal3q mal3s mal3t mal3v mante4a maxi1a2 maxi1\xc3\xa12 maxi1e2 maxi1\xc3\xa92 maxi1h maxi1i2 maxi1\xc3\xad2 maxi1o2 maxi1\xc3\xb32 maxi1u2 maxi1\xc3\xba2 2mb 2mc 2m3c2n 2m3c2t 2m3c2z 2md 4meable_ 4meables_ mega1a2 mega1\xc3\xa12 mega1e2 mega1\xc3\xa92 mega1h mega1i2 mega1\xc3\xad2 megalo1a2 megalo1\xc3\xa12 megalo1e2 megalo1\xc3\xa92 megalo1h megalo1i2 megalo1\xc3\xad2 megalo1o2 megalo1\xc3\xb32 megalo1u2 megalo1\xc3\xba2 mega1o2 mega1\xc3\xb32 mega1u2 mega1\xc3\xba2 melano1a2 melano1\xc3\xa12 melano1e2 melano1\xc3\xa92 melano1h melano1i2 melano1\xc3\xad2 melano1o2 melano1\xc3\xb32 melano1u2 melano1\xc3\xba2 3mente_ 4meo_ 2mf 2m3f2t 2mg 2m3g2n 2m1h micro1a2 micro1\xc3\xa12 micro1e2 micro1\xc3\xa92 micro1h micro1i2 micro1\xc3\xad2 micro1o2 micro1\xc3\xb32 micro1u2 micro1\xc3\xba2 mili1a2 mili1\xc3\xa12 mili4ar mili4ario mili1e2 mili1\xc3\xa92 mili1h mili1i2 mili1\xc3\xad2 mili1o2 mili1\xc3\xb32 mili1u2 mili1\xc3\xba2 mini1a2 mini1\xc3\xa12 mini4a5tur mini1e2 mini1\xc3\xa92 mini1h mini1i2 mini1\xc3\xad2 mini1o2 mini1\xc3\xb32 mini1u2 mini1\xc3\xba2 miria1a2 miria1\xc3\xa12 miria1e2 miria1\xc3\xa92 miria1h miria1i2 miria1\xc3\xad2 miria1o2 miria1\xc3\xb32 miria1u2 miria1\xc3\xba2 2mj 2mk 2ml 2mm 2m3m2n 2mn 4mn_ mono1a2 mono1\xc3\xa12 mono1e2 mono1\xc3\xa92 mono1h mono1i2 mono1\xc3\xad2 mono1o2 mono1\xc3\xb32 mono1u2 mono1\xc3\xba2 2mp 2m3p2n 2m3p2s 2m3p2t 2mq 2mr 2ms 2mt 2m3t2s 2m3t2z multi1a2 multi1\xc3\xa12 multi1e2 multi1\xc3\xa92 multi1h multi1i2 multi1\xc3\xad2 multi1o2 multi1\xc3\xb32 multi1u2 multi1\xc3\xba2 2mv 2mw 2mx 2my 2mz 1n namo1a2 namo1\xc3\xa12 namo1e2 namo1\xc3\xa92 namo1h namo1i2 namo1\xc3\xad2 namo1o2 namo1\xc3\xb32 namo1u2 namo1\xc3\xba2 2nb 2nc 2n3c2n 2n3c2t 2n3c2z 2nd necro1a2 necro1\xc3\xa12 necro1e2 necro1\xc3\xa92 necro1h necro1i2 necro1\xc3\xad2 necro1o2 necro1\xc3\xb32 necro1u2 necro1\xc3\xba2 neo1a2 neo1\xc3\xa12 neo1e2 neo1\xc3\xa92 neo1h neo1i2 neo1\xc3\xad2 neo1o2 neo1\xc3\xb32 neo1u2 neo1\xc3\xba2 neto1a2 neto1\xc3\xa12 neto1e2 neto1\xc3\xa92 neto1h neto1i2 neto1\xc3\xad2 neto1o2 neto1\xc3\xb32 neto1u2 neto1\xc3\xba2 2nf 2n3f2t 2ng 2n3g2n 2n1h 2nj 2nk 2nl 2nm 2n3m2n 2nn 2no_ norte1a2 norte1\xc3\xa12 norte1e2 norte1\xc3\xa92 norte1h norte1i2 norte1\xc3\xad2 norte1o2 norte1\xc3\xb32 norte1u2 norte1\xc3\xba2 2np 2n3p2n 2n3p2s 2n3p2t 2nq 2nr 2ns 2nt 2n3t2s 2n3t2z 2nv 2nw 2nx 2ny 2nz 1\xc3\xb1 2o_ octa1a2 octa1\xc3\xa12 octa1e2 octa1\xc3\xa92 octa1h octa1i2 octa1\xc3\xad2 octa1o2 octa1\xc3\xb32 octa1u2 octa1\xc3\xba2 octo1a2 octo1\xc3\xa12 octo1e2 octo1\xc3\xa92 octo1h octo1i2 octo1\xc3\xad2 octo1o2 octo1\xc3\xb32 octo1u2 octo1\xc3\xba2 4o2ica_ 4o2icas_ 4o2ico_ 4o2icos_ o4i3dal_ o4i3dales_ 4o2i3de_ o4i3dea_ o4i3deas_ 4o2i3des_ oligo1a2 oligo1\xc3\xa12 oligo1e2 oligo1\xc3\xa92 oligo1h oligo1i2 oligo1\xc3\xad2 oligo1o2 oligo1\xc3\xb32 oligo1u2 oligo1\xc3\xba2 4\xc3\xb33loga_ 4\xc3\xb33logas_ 4o3log\xc3\xada_ 4o3log\xc3\xadas_ 4o3l\xc3\xb3gica_ 4o3l\xc3\xb3gicamente_ 4o3l\xc3\xb3gicas_ 4o3l\xc3\xb3gico_ 4o3l\xc3\xb3gicos_ 4\xc3\xb33logo_ 4\xc3\xb33logos_ omni1a2 omni1\xc3\xa12 omni1e2 omni1\xc3\xa92 omni1h omni1i2 omni1\xc3\xad2 omni1o2 omni1\xc3\xb32 omni1u2 omni1\xc3\xba2 4\xc3\xb3n_ 4ones_ o2os_ 2os_ 2o3sa_ 2o3samente_ 2o3sas_ 2o3so_ 2o3sos_ 4\xc3\xb3steo_ 4\xc3\xb3steos_ 2\xc3\xb3tic 1p paleo1a2 paleo1\xc3\xa12 paleo1e2 paleo1\xc3\xa92 paleo1h paleo1i2 paleo1\xc3\xad2 paleo1o2 paleo1\xc3\xb32 paleo1u2 paleo1\xc3\xba2 para1a2 para1\xc3\xa12 para1e2 para1\xc3\xa92 para1h para1i2 para1\xc3\xad2 para2is_ para4\xc3\xadso para1o2 para1\xc3\xb32 para1u2 para1\xc3\xba2 para4ulata 2pb 2pc 4pc_ 2pd 4pedo4 penta1a2 penta1\xc3\xa12 penta1e2 penta1\xc3\xa92 penta1h penta1i2 penta1\xc3\xad2 penta1o2 penta1\xc3\xb32 penta1u2 penta1\xc3\xba2 pe5r4ante pe3r4e3mia perpon5d6r 2pf 2pg 2p1h piezo1a2 piezo1\xc3\xa12 piezo1e2 piezo1\xc3\xa92 piezo1h piezo1i2 piezo1\xc3\xad2 piezo1o2 piezo1\xc3\xb32 piezo1u2 piezo1\xc3\xba2 2pj 2pk p2l 2pl_ plan4c5t pluri1a2 pluri1\xc3\xa12 pluri1e2 pluri1\xc3\xa92 pluri1h pluri1i2 pluri1\xc3\xad2 pluri1o2 pluri1\xc3\xb32 pluri1u2 pluri1\xc3\xba2 2pm 2pn 4pn_ poi3de_ poi3des_ poli1a2 poli1\xc3\xa12 poli4andr poli4antea poli4arq poli4\xc3\xa1rq poli1e2 poli1\xc3\xa92 poli4\xc3\xa9ste poli1h poli1i2 poli1\xc3\xad2 poli1o2 poli1\xc3\xb32 poli4o5mie poli1u2 poli1\xc3\xba2 poli4u3r pos3ta_ pos3tas_ 2pp 2pq p2r 2pr_ pre3elig pre3elij pre3emin pre3exis preo3cup preo2c\xc3\xbap pre3ol\xc3\xad pre3opin proto1a2 proto1\xc3\xa12 proto1e2 proto1\xc3\xa92 proto1h proto1i2 proto1\xc3\xad2 proto1o2 proto1\xc3\xb32 proto1u2 proto1\xc3\xba2 2ps 3p2sic 3p2siq 2pt 4pt_ 4puta4 4puto4 2pv 2pw 2px 2py 2pz 1q 2qb 2qc 2qd 2qf 2qg 2q1h 2qj 2qk 2ql 2qm 2qn 2qp 2qq 2qr 2qs 2qt 2qv 2qw 2qx 2qy 2qz 1r radio1a2 radio1\xc3\xa12 radio1e2 radio1\xc3\xa92 radio1h radio1i2 radio1\xc3\xad2 radio1o2 radio1\xc3\xb32 radio1u2 radio1\xc3\xba2 ranco1a2 ranco1\xc3\xa12 ranco1e2 ranco1\xc3\xa92 ranco1h ranco1i2 ranco1\xc3\xad2 ranco1o2 ranco1\xc3\xb32 ranco1u2 ranco1\xc3\xba2 2rb 2rc 2r3c2n 2r3c2t 2r3c2z 2rd retro1a2 retro1\xc3\xa12 retro1e2 retro1\xc3\xa92 retro1h retro1i2 retro1\xc3\xad2 retro1o2 retro1\xc3\xb32 retro1u2 retro1\xc3\xba2 2rf 2r3f2t 2rg 2r3g2n 2r1h 2rj 2rk 2rl 2rm rmano1a2 rmano1\xc3\xa12 rmano1e2 rmano1\xc3\xa92 rmano1h rmano1i2 rmano1\xc3\xad2 rmano1o2 rmano1\xc3\xb32 rmano1u2 rmano1\xc3\xba2 2r3m2n 2rn romo1a2 romo1\xc3\xa12 romo1e2 romo1\xc3\xa92 romo1h romo1i2 romo1\xc3\xad2 romo1o2 romo1\xc3\xb32 romo1u2 romo1\xc3\xba2 2rp 2r3p2n 2r3p2s 2r3p2t 2rq r2r 2rr_ 2rs 2rt 2r3t2s 2r3t2z 2rv 2rw 2rx 2ry 2rz 1s 3sa_ san4c5t 3sas_ 2sb 2sc 2s3c2n 2s3c2t 2s3c2z 2sd semi1a2 semi1\xc3\xa12 semi1e2 semi1\xc3\xa92 semi1h semi1i2 semi1\xc3\xad2 semi1o2 semi1\xc3\xb32 semi1u2 semi1\xc3\xba2 seudo1a2 seudo1\xc3\xa12 seudo1e2 seudo1\xc3\xa92 seudo1h seudo1i2 seudo1\xc3\xad2 seudo1o2 seudo1\xc3\xb32 seudo1u2 seudo1\xc3\xba2 2sf 2s3f2t 2sg 2s3g2n 2s1h 2sj 2sk 2sl 2sm 2s3m2n 2sn sobre1a2 sobre1\xc3\xa12 sobre1e2 sobre1\xc3\xa92 sobre1h sobre1i2 sobre1\xc3\xad2 sobre1o2 sobre1\xc3\xb32 sobre1u2 sobre1\xc3\xba2 socio1a2 socio1\xc3\xa12 socio1e2 socio1\xc3\xa92 socio1h socio1i2 socio1\xc3\xad2 socio1o2 socio1\xc3\xb32 socio1u2 socio1\xc3\xba2 2sp 2s3p2n 2s3p2s 2s3p2t 2sq 2sr 2ss 2st s3tal_ s3ta3les_ s3te_ s3tes_ s3ti3lla_ s3ti3llas_ s3ti3ll\xc3\xb3n_ s3ti3llones_ s3tor_ s3tora_ s3toras_ s3tores_ 2s3t2s 2s3t2z su4d3oes sup6ra supe2r1a2 supe2r1\xc3\xa12 super4able super4aci\xc3\xb3n supe4r4a3r supe4r4\xc3\xa13r supe3r4\xc3\xa13vit_ supe3r4\xc3\xa13vits_ supe2r1e2 supe2r1\xc3\xa92 supe2r1i2 supe2r1\xc3\xad2 super4ior supe2r1o2 supe2r1\xc3\xb32 supe2r3r supe2r1u2 supe2r1\xc3\xba2 supra1a2 supra1\xc3\xa12 supra1e2 supra1\xc3\xa92 supra1h supra1i2 supra1\xc3\xad2 supra1o2 supra1\xc3\xb32 supra1u2 supra1\xc3\xba2 2sv 2sw 2sx 2sy 2sz 1t talmo1a2 talmo1\xc3\xa12 talmo1e2 talmo1\xc3\xa92 talmo1h talmo1i2 talmo1\xc3\xad2 talmo1o2 talmo1\xc3\xb32 talmo1u2 talmo1\xc3\xba2 2tb 2tc 2t3c2n 2t3c2t 2t3c2z 2td tele1a2 tele1\xc3\xa12 tele1e2 tele1\xc3\xa92 tele1h tele1i2 tele1\xc3\xad2 tele1o2 tele1\xc3\xb32 tele1u2 tele1\xc3\xba2 t4eo3nes_ 3te3ri3n 4te4r5i4nsu termo1a2 termo1\xc3\xa12 termo1e2 termo1\xc3\xa92 termo1h termo1i2 termo1\xc3\xad2 termo1o2 termo1\xc3\xb32 termo1u2 termo1\xc3\xba2 4teta_ 4tetas_ tetra1a2 tetra1\xc3\xa12 tetra1e2 tetra1\xc3\xa92 tetra1h tetra1i2 tetra1\xc3\xad2 tetra1o2 tetra1\xc3\xb32 tetra1u2 tetra1\xc3\xba2 2tf 2t3f2t 2tg 2t3g2n 2t1h ti2o3co ti2o3qu 2tj 2tk 2t2l 2tm 2t3m2n 2tn topo1a2 topo1\xc3\xa12 topo1e2 topo1\xc3\xa92 topo1h topo1i2 topo1\xc3\xad2 topo1o2 topo1\xc3\xb32 topo1u2 topo1\xc3\xba2 2tp 2t3p2n 2t3p2s 2t3p2t 2tq t2r 2tr_ tran4sacc trans4ar trans4e\xc3\xbante trans4iber trans4ici\xc3\xb3n trans4ido trans4igen trans4igir trans4istor trans4it trans4itab trans4itorio trans4ubsta tropo1a2 tropo1\xc3\xa12 tropo1e2 tropo1\xc3\xa92 tropo1h tropo1i2 tropo1\xc3\xad2 tropo1o2 tropo1\xc3\xb32 tropo1u2 tropo1\xc3\xba2 2ts 4ts_ 2tt 2t3t2s 2t3t2z 2tv 2tw t2x 2ty 2tz 4tz_ ultra1a2 ultra1\xc3\xa12 ultra1e2 ultra1\xc3\xa92 ultra1h ultra1i2 ultra1\xc3\xad2 ultra4\xc3\xadsmo ultra1o2 ultra1\xc3\xb32 ultra1u2 ultra1\xc3\xba2 u4teri 1v 2vb 2vc 2vd 2vf 2vg 2v1h 2vj 2vk v2l 2vl_ 2vm 2vn 2vp 2vq v2r 2vr_ 2vs 2vt 2vv 2vw 2vx 2vy 2vz 1w wa3s4h 2wb 2wc 2wd 2wf 2wg 2w1h 2wj 2wk w2l 2wl_ 2wm 2wn 2wp 2wq w2r 2wr_ 2ws 2wt 2wv 2ww 2wx 2wy 2wz 1x 2xb 2xc 2x3c2n 2x3c2t 2x3c2z 2xd xeno1a2 xeno1\xc3\xa12 xeno1e2 xeno1\xc3\xa92 xeno1h xeno1i2 xeno1\xc3\xad2 xeno1o2 xeno1\xc3\xb32 xeno1u2 xeno1\xc3\xba2 2xf 2x3f2t 2xg 2x3g2n 2x1h 2xj 2xk 2xl 2xm 2x3m2n 2xn 2xp 2x3p2n 2x3p2s 2x3p2t 2xq 2xr 2xs 2xt 2x3t2s 2x3t2z 2xv 2xw 2xx 2xy 2xz 1y 2yb 2yc 2y3c2n 2y3c2t 2y3c2z 2yd 2yf 2y3f2t 2yg 2y3g2n 2y1h 2yj 2yk 2yl 2ym 2y3m2n 2yn 2yp 2y3p2n 2y3p2s 2y3p2t 2yq 2yr 2ys 2yt 2y3t2s 2y3t2z 2yv 2yw 2yx 2yy 2yz 1z 2zb 2zc 2zd 2zf 2zg 2z1h 2zj 2zk 2zl 2zm 2zn 2zp 2zq 2zr 2zs 2zt 2zv 2zw 2zx 2zy 2zz";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/fi.php b/inc/3rdparty/libraries/mpdf/patterns/fi.php
new file mode 100644 (file)
index 0000000..5be3124
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/    
+*/
+
+$patterns="1ba 1be 1bi 1bo 1bu 1by 1da 1de 1di 1do 1du 1dy 1d\xc3\xa4 1d\xc3\xb6 1fa 1fe 1fi 1fo 1fu 1fy 1ga 1ge 1gi 1go 1gu 1gy 1g\xc3\xa4 1g\xc3\xb6 1ha 1he 1hi 1ho 1hu 1hy 1h\xc3\xa4 1h\xc3\xb6 1ja 1je 1ji 1jo 1ju 1jy 1j\xc3\xa4 1j\xc3\xb6 1ka 1ke 1ki 1ko 1ku 1ky 1k\xc3\xa4 1k\xc3\xb6 1la 1le 1li 1lo 1lu 1ly 1l\xc3\xa4 1l\xc3\xb6 1ma 1me 1mi 1mo 1mu 1my 1m\xc3\xa4 1m\xc3\xb6 1na 1ne 1ni 1no 1nu 1ny 1n\xc3\xa4 1n\xc3\xb6 1pa 1pe 1pi 1po 1pu 1py 1p\xc3\xa4 1p\xc3\xb6 1ra 1re 1ri 1ro 1ru 1ry 1r\xc3\xa4 1r\xc3\xb6 1sa 1se 1si 1so 1su 1sy 1s\xc3\xa4 1s\xc3\xb6 1ta 1te 1ti 1to 1tu 1ty 1t\xc3\xa4 1t\xc3\xb6 1va 1ve 1vi 1vo 1vu 1vy 1v\xc3\xa4 1v\xc3\xb6 1st2r \xc3\xa42y y1a2 y1o2 o1y \xc3\xb62y u1y2 y1u2 \xc3\xb63a2 \xc3\xb63o2 \xc3\xa43a2 \xc3\xa43o2 \xc3\xa41u2 \xc3\xb61u2 a1\xc3\xa4 a1\xc3\xb6 o1\xc3\xa4 o1\xc3\xb6 u1\xc3\xa42 u1\xc3\xb62 \xc3\xa42\xc3\xa4 \xc3\xb62\xc3\xb6 \xc3\xa42\xc3\xb6 \xc3\xb62\xc3\xa4 aa1i2 aa1e2 aa1o2 aa1u2 ee1a2 ee1i2 ee1u2 ee1y2 ii1a2 ii1e2 ii1o2 uu1a2 uu1e2 uu1o2 uu1i2 e1aa i1aa o1aa u1aa u1ee a1uu i1uu e1uu o1uu \xc3\xa4\xc3\xa41i \xc3\xa4\xc3\xa41e \xc3\xa4\xc3\xa43y i1\xc3\xa4\xc3\xa4 e1\xc3\xa4\xc3\xa4 y1\xc3\xa4\xc3\xa4 i1\xc3\xb6\xc3\xb6 a1ei a1oi e1ai i1au y1ei ai1a ai1e ai1o ai1u au1a au1e eu1a ie1a ie1o ie1y io1a2 io1e2 iu1a iu1e iu1o oi1a oi1e oi1o oi1u o1ui ou1e ou1o ue1a ui1e uo1a uo1u e1\xc3\xb62 \xc3\xb61e2 _\xc3\xa42 u2s yli1o2p ali1a2v 1sp2li alous1 keus1 rtaus1 2s1ohje 2s1a2sia 1a2sian 1a2siat 1a2sioi r2as l2as 2s1o2pisk 2n1o2pet 2s1a2loi 2n1o2pist 2s1o2pist 2s1o2sa 2n1o2sa alkei2s1 perus1 2s1i2dea_ 2s1i2dean 2s1e2sity 2n1e2dus 2s1ajatu 2s1ase 2s1apu 2s1y2rit _ydi2n1 _suu2r1a2 2s1y2hti 2n1otto 2n1oton 2n1anto 2n1anno 2n1a2jan 2n1aika 2n1o2mai 2n1y2lit 2s1a2len 2n1a2len 1a2siaka2s1 ulo2s1 2n1a2jo 2s1a2jo b2l 1b2lo bib3li b2r 1b2ri 1b2ro 1b2ru d2r 1d2ra f2l 1f2la f2r 1f2ra 1f2re g2l 1g2lo g2r 1g2ra k2l 1k2ra 1k2re 1k2ri 1k2v 1k2va p2l p2r 1p2ro c2l q2v 1q2vi sc2h ts2h ch2r";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/fr.php b/inc/3rdparty/libraries/mpdf/patterns/fr.php
new file mode 100644 (file)
index 0000000..335f85b
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+       
+       Retrieved from http://extensions.services.openoffice.org/project/french-dictionary-reform1990
+       License: LGPL
+*/
+
+$patterns="'a1b2r 'a1g2n 'a1mi 'a1na 'a1po 'a2g3nat 'a4 'ab1r\xc3\xa9 'ab3r\xc3\xa9a 'ae3s4c2h 'ag1na 'ami1no 'amino1a2c 'an1ti 'ana3s4t2r 'anti1a2 'anti1e2 'anti1s2 'anti1\xc3\xa92 'anti2en1ne 'apo2s3ta 'ar1ge 'ar1pe 'ar3gent_ 'ar3pent_ 'as2ta 'e1n1a2 'e1n1o2 'e4 'eu2r1a2 'i1g2n 'i1n1a2 'i1n1e2 'i1n1i2 'i1n1o2 'i1n1u2 'i1n1\xc3\xa92 'i2g3ni 'i2g3n\xc3\xa9 'i2g4no 'i4 'in1s2tab 'in1te 'in2a3nit 'in2augur 'in2effab 'in2ept 'in2er 'in2exo1ra 'in2i3mi1ti 'in2i3q 'in2i3t 'in2o3cul 'in2ond 'in2u3l 'in2uit 'in2\xc3\xa93luc1ta 'in2\xc3\xa93nar1ra 'ina1ni 'inau1gu 'inef1fa 'ini1mi 'ino1cu 'ins1ta 'inte1ra2 'inte1re2 'inte1ri2 'inte1ro2 'inte1ru2 'inte1r\xc3\xa92 'inte4r3 'inters2 'in\xc3\xa91lu 'in\xc3\xa91na 'o1vi 'o4 'on1gu 'on3guent_ 'oua1ou 'ovi1s2c 'u4 'y4 '\xc3\xa24 '\xc3\xa84 '\xc3\xa94 '\xc3\xaa4 '\xc3\xae4 '\xc3\xb44 '\xc3\xbb4 _1ba _1bi _1c2h4 _1ci _1co _1cu _1da _1di _1do _1dy _1d\xc3\xa9 _1d\xc3\xa93s2o3d\xc3\xa9 _1ge _1k2h4 _1la _1ma _1mi _1mo _1m\xc3\xa9 _1no _1p2h4 _1p2l _1p2r _1p2sy1c2h _1pa _1pe _1po _1pu _1p\xc3\xa9 _1re _1r\xc3\xa9 _1s2c2h4 _1s2h4 _1sa _1se _1so _1su _1sy _1t2h4 _1t2r _1ta _a1b2r _a1g2n _a1mi _a1na _a1po _a2g3nat _a4 _ab1r\xc3\xa9 _ab3r\xc3\xa9a _ae3s4c2h _ag1na _ami1no _amino1a2c _an1ti _ana3s4t2r _anti1a2 _anti1e2 _anti1s2 _anti1\xc3\xa92 _anti2en1ne _apo2s3ta _ar1de _ar1ge _ar1pe _ar3dent_ _ar3gent_ _ar3pent_ _as2ta _bai1se _bai2se3main _baise1ma _bi1a2c _bi1a2t _bi1au _bi1u2 _bi2s1a2 _bio1a2 _c2h\xc3\xa8 _ch\xc3\xa81v2r _ch\xc3\xa82vre3feuil1le _ch\xc3\xa8v1re _ch\xc3\xa8vre1fe _ch\xc3\xa8vrefeuil2l _ci1sa _ci2s1alp _co1o2 _co2o3lie _com1me _com3ment_ _con1t2r _con4 _cons4 _cont1re _cont1re3ma\xc3\xaet1re _contre1ma _contre1s2c _contrema\xc3\xae1t2r _coo1li _cul4 _da1c2r _dac1ry _dacryo1a2 _di1a2cid _di1a2c\xc3\xa9 _di1a2mi _di1a2tom _di1ald _di1e2n _di2s3h _dia1ci _dia1to _do1le _do3lent_ _dy2s1a2 _dy2s1i2 _dy2s1o2 _dy2s1u2 _dy2s3 _d\xc3\xa91a2 _d\xc3\xa91io _d\xc3\xa91o2 _d\xc3\xa91sa _d\xc3\xa91se _d\xc3\xa91so _d\xc3\xa91su _d\xc3\xa92s _d\xc3\xa92s1i2 _d\xc3\xa92s1u2n _d\xc3\xa92s1\xc2\xbd _d\xc3\xa92s1\xc3\xa92 _d\xc3\xa93s2a3c2r _d\xc3\xa93s2a3tell _d\xc3\xa93s2as1t2r _d\xc3\xa93s2c _d\xc3\xa93s2ensib _d\xc3\xa93s2ert _d\xc3\xa93s2exu _d\xc3\xa93s2i3d _d\xc3\xa93s2i3g2n _d\xc3\xa93s2i3li _d\xc3\xa93s2i3nen _d\xc3\xa93s2i3r _d\xc3\xa93s2in1vo _d\xc3\xa93s2ist _d\xc3\xa93s2o3l _d\xc3\xa93s2o3pil _d\xc3\xa93s2orm _d\xc3\xa93s2orp _d\xc3\xa93s2ou1f2r _d\xc3\xa93s2p _d\xc3\xa93s2t _d\xc3\xa93s2\xc3\xa93g2r _d\xc3\xa9s2a3m _d\xc3\xa9sa1te _d\xc3\xa9sen1si _d\xc3\xa9si1ne _d\xc3\xa9so1pi _e1n1a2 _e1n1o2 _e4 _eu2r1a2 _gem1me _gem2ment_ _i1g2n _i1n1a2 _i1n1e2 _i1n1i2 _i1n1o2 _i1n1u2 _i1n1\xc3\xa92 _i2g3ni _i2g3n\xc3\xa9 _i2g4no _i4 _in1s2tab _in1te _in2a3nit _in2augur _in2effab _in2ept _in2er _in2exo1ra _in2i3mi1ti _in2i3q _in2i3t _in2o3cul _in2ond _in2u3l _in2uit _in2\xc3\xa93luc1ta _in2\xc3\xa93nar1ra _ina1ni _inau1gu _inef1fa _ini1mi _ino1cu _ins1ta _inte1ra2 _inte1re2 _inte1ri2 _inte1ro2 _inte1ru2 _inte1r\xc3\xa92 _inte4r3 _inters2 _in\xc3\xa91lu _in\xc3\xa91na _la1te _la3tent_ _ma1c2r _ma1g2n _ma1la _ma1le _ma1li _ma1lo _ma2c3k _ma2g3nici1de _ma2g3nificat _ma2g3num _ma2l1a2d1ro _ma2l1a2dres _ma2l1a2v _ma2l1ai1s\xc3\xa9 _ma2l1ap _ma2l1en _ma2l1int _ma2l1o2d _ma2l1oc _ma2r1x _mac1ro _macro1s2c _mag1ni _mag1nu _magni1ci _magni1fi _magnifi1ca _mala1d2r _malad1re _mil1li _mil3l _milli1am _mo1no _mono1a2 _mono1e2 _mono1i2 _mono1o2 _mono1s2 _mono1u2 _mono1\xc3\xa92 _mono1\xc3\xaf2d\xc3\xa9 _m\xc3\xa91go _m\xc3\xa91se _m\xc3\xa91su _m\xc3\xa91ta _m\xc3\xa91ta1s2ta _m\xc3\xa92g1oh _m\xc3\xa92s1es _m\xc3\xa92s1i _m\xc3\xa92s1u2s _m\xc3\xa92sa _m\xc3\xa93san _no1no _no2n1obs _o1vi _o4 _on1gu _on3guent_ _oua1ou _ovi1s2c _p1ha _p1lu _p1ro _p1r\xc3\xa9 _p1sy _pa1na _pa1ni _pa1no _pa1r2h _pa1ra _pa1re _pa1te _pa2n1a2f _pa2n1a2m\xc3\xa9 _pa2n1a2ra _pa2n1is _pa2n1o2p2h _pa2n1opt _pa2r1a2c2he _pa2r1a2c2h\xc3\xa8 _pa2r3h\xc3\xa9 _pa3rent_ _pa3tent_ _para1c2h _para1s2 _pe1r1a2 _pe1r1e2 _pe1r1i2 _pe1r1o2 _pe1r1u2 _pe1r1\xc3\xa92 _pe4r _pen2ta _pha1la _phalan3s2t _plu1ri _pluri1a _pon1te _pon2tet _pos1ti _pos2t1in _pos2t1o2 _pos2t3h _pos2t3r _post1s2 _pro1g2n _pro1s2c\xc3\xa9 _pro1\xc3\xa92 _pro2g3na1t2h _prog1na _prou3d2h _pr\xc3\xa91a2 _pr\xc3\xa91e2 _pr\xc3\xa91i2 _pr\xc3\xa91o2 _pr\xc3\xa91s2 _pr\xc3\xa91u2 _pr\xc3\xa91\xc3\xa92 _pr\xc3\xa92a3la _pr\xc3\xa92au _psyc2ho _psycho1a2n _pud1d2l _p\xc3\xa91ri _p\xc3\xa9ri1os _p\xc3\xa9ri1s2 _p\xc3\xa9ri1u2 _p\xc3\xa9ri2s3s _p\xc3\xa9ri2s3ta _re1s2 _re2s3c1ri _re2s3cap _re2s3ci1si _re2s3ci1so _re2s3cou _re2s3pect _re2s3pir _re2s3plend _re2s3pons _re2s3quil _re2s3s _re2s3t _re3s4t2r _re3s4tab _re3s4tag _re3s4tand _re3s4tat _re3s4tim _re3s4tip _re3s4toc _re3s4top _re3s4tu _re3s4ty _re3s4t\xc3\xa9n _re3s4t\xc3\xa9r _re4s5trein _re4s5trict _re4s5trin _res1c2r _res1ca _res1ci _res1co _res1p2l _res1pe _res1pi _res1po _res1q _res1se _res1ta _res1ti _res1to _res1t\xc3\xa9 _res3sent_ _resp1le _rest1re _rest1ri _r\xc3\xa91a2 _r\xc3\xa91e2 _r\xc3\xa91i2 _r\xc3\xa91o2 _r\xc3\xa91t2r _r\xc3\xa91\xc3\xa92 _r\xc3\xa92a3le _r\xc3\xa92a3lis _r\xc3\xa92a3lit _r\xc3\xa92aux _r\xc3\xa92el _r\xc3\xa92er _r\xc3\xa92i3fi _r\xc3\xa92uss _r\xc3\xa92\xc3\xa8r _r\xc3\xa9a1li _r\xc3\xa9t1ro _r\xc3\xa9tro1a2 _r\xc3\xa9u2 _s1ta _s1ti _sar1me _sar3ment_ _ser1me _ser3ment_ _seu2le _sou1ve _sou3vent_ _sta2g3n _stil3l _su1b2l _su1bi _su1bu _su1ri _su1ro _su2b1a2 _su2b1in _su2b1ur _su2b1\xc3\xa92 _su2b3limin _su2b3lin _su2b3lu _su2r1a2 _su2r1e2 _su2r1i2m _su2r1inf _su2r1int _su2r1of _su2r1ox _su2r1\xc3\xa92 _su2r3h _su3b2alt _su3b2\xc3\xa93r _su3r2a3t _su3r2eau _su3r2ell _su3r2et _sub1li _subli1mi _syn1g2n _syn2g3na1t2h _syng1na _t1ri _ta1le _ta3lent_ _tri1a2c _tri1a2n _tri1a2t _tri1o2n _u4 _y4 _\xc3\xa24 _\xc3\xa84 _\xc3\xa91mi _\xc3\xa94 _\xc3\xa9mi1ne _\xc3\xa9mi3nent_ _\xc3\xaa4 _\xc3\xae4 _\xc3\xb44 _\xc3\xbb4 1a2nesth\xc3\xa91si 1alcool 1b2l 1b2r 1ba 1be 1bi 1bo 1bu 1by 1b\xc3\xa2 1b\xc3\xa8 1b\xc3\xa9 1b\xc3\xaa 1b\xc3\xae 1b\xc3\xb4 1b\xc3\xbb 1c2h 1c2k 1c2l 1c2r 1ca 1ce 1ci 1co 1cu 1cy 1c\xc2\xbd0 1c\xc3\xa2 1c\xc3\xa8 1c\xc3\xa9 1c\xc3\xaa 1c\xc3\xae 1c\xc3\xb4 1c\xc3\xbb 1d2'2 1d2r 1da 1de 1di 1do 1du 1dy 1d\xc3\xa2 1d\xc3\xa8 1d\xc3\xa9 1d\xc3\xaa 1d\xc3\xae 1d\xc3\xb4 1d\xc3\xbb 1f2l 1f2r 1fa 1fe 1fi 1fo 1fu 1fy 1f\xc3\xa2 1f\xc3\xa8 1f\xc3\xa9 1f\xc3\xaa 1f\xc3\xae 1f\xc3\xb4 1f\xc3\xbb 1g2ha 1g2he 1g2hi 1g2ho 1g2hy 1g2l 1g2n 1g2r 1ga 1ge 1gi 1go 1gu 1gy 1g\xc3\xa2 1g\xc3\xa8 1g\xc3\xa9 1g\xc3\xaa 1g\xc3\xae 1g\xc3\xb4 1g\xc3\xbb 1ha 1he 1hi 1ho 1hu 1hy 1h\xc3\xa2 1h\xc3\xa8 1h\xc3\xa9 1h\xc3\xaa 1h\xc3\xae 1h\xc3\xb4 1h\xc3\xbb 1informat 1j 1k2h 1k2r 1ka 1ke 1ki 1ko 1ku 1ky 1k\xc3\xa2 1k\xc3\xa8 1k\xc3\xa9 1k\xc3\xaa 1k\xc3\xae 1k\xc3\xb4 1k\xc3\xbb 1la 1le 1li 1lo 1lu 1ly 1l\xc3\xa0 1l\xc3\xa2 1l\xc3\xa8 1l\xc3\xa9 1l\xc3\xaa 1l\xc3\xae 1l\xc3\xb4 1l\xc3\xbb 1m2n\xc3\xa8s 1m2n\xc3\xa91mo 1m2n\xc3\xa91si 1ma 1me 1mi 1mo 1mu 1my 1m\xc2\xbd0 1m\xc3\xa2 1m\xc3\xa8 1m\xc3\xa9 1m\xc3\xaa 1m\xc3\xae 1m\xc3\xb4 1m\xc3\xbb 1na 1ne 1ni 1no 1nu 1ny 1n\xc2\xbd0 1n\xc3\xa2 1n\xc3\xa8 1n\xc3\xa9 1n\xc3\xaa 1n\xc3\xae 1n\xc3\xb4 1n\xc3\xbb 1octet 1p2h 1p2l 1p2neu 1p2n\xc3\xa9 1p2r 1p2sy1c2h 1p2t\xc3\xa8r 1p2t\xc3\xa9r 1pa 1pe 1pi 1po 1pu 1py 1p\xc3\xa2 1p\xc3\xa8 1p\xc3\xa9 1p\xc3\xaa 1p\xc3\xae 1p\xc3\xb4 1p\xc3\xbb 1q 1r2h 1ra 1re 1ri 1ro 1ru 1ry 1r\xc3\xa2 1r\xc3\xa8 1r\xc3\xa9 1r\xc3\xaa 1r\xc3\xae 1r\xc3\xb4 1r\xc3\xbb 1s2c2h 1s2ca1p2h 1s2cl\xc3\xa9r 1s2cop 1s2h 1s2lav 1s2lov 1s2patia 1s2perm 1s2ph\xc3\xa8r 1s2ph\xc3\xa9r 1s2piel 1s2piros 1s2por 1s2tandard 1s2tein 1s2tigm 1s2to1c2k 1s2tomos 1s2tro1p2h 1s2truc1tu 1s2ty1le 1sa 1se 1si 1so 1su 1sy 1s\xc2\xbd0 1s\xc3\xa2 1s\xc3\xa8 1s\xc3\xa9 1s\xc3\xaa 1s\xc3\xae 1s\xc3\xb4 1s\xc3\xbb 1t2h 1t2r 1ta 1te 1ti 1to 1tu 1ty 1t\xc3\xa0 1t\xc3\xa2 1t\xc3\xa8 1t\xc3\xa9 1t\xc3\xaa 1t\xc3\xae 1t\xc3\xb4 1t\xc3\xbb 1v2r 1va 1ve 1vi 1vo 1vu 1vy 1v\xc3\xa2 1v\xc3\xa8 1v\xc3\xa9 1v\xc3\xaa 1v\xc3\xae 1v\xc3\xb4 1v\xc3\xbb 1w2r 1wa 1we 1wi 1wo 1wu 1za 1ze 1zi 1zo 1zu 1zy 1z\xc3\xa8 1z\xc3\xa9 1\xc3\xa7 1\xc3\xa92drie 1\xc3\xa92drique 1\xc3\xa92lec1t2r 1\xc3\xa92l\xc3\xa9ment 1\xc3\xa92nerg 2'2 2b2lent_ 2b2rent_ 2bent_ 2c1k3h 2c2kent_ 2c2lent_ 2c2rent_ 2cent_ 2chb 2chent_ 2chg 2chm 2chn 2chp 2chs 2cht 2chw 2ckb 2ckf 2ckg 2ckp 2cks 2ckt 2d2lent_ 2d2rent_ 2dent_ 2f2lent_ 2f2rent_ 2fent_ 2g2lent_ 2g2nent_ 2g2rent_ 2gent_ 2guent_ 2jent_ 2jk 2kent_ 2lent_ 2nent_ 2p2lent_ 2p2rent_ 2pent_ 2phent_ 2phn 2phs 2pht 2quent_ 2r3heur 2r3hy1d2r 2rent_ 2s2chs 2s3hom 2sent_ 2shent_ 2shm 2shr 2shs 2t2rent_ 2t3heur 2tent_ 2thl 2thm 2thn 2ths 2v2rent_ 2vent_ 2went_ 2xent_ 2zent_ 3d2hal 3d2houd 3ph2ta1l\xc3\xa9 3ph2tis 4b4le_ 4b4les_ 4b4re_ 4b4res_ 4be_ 4bes_ 4c4he_ 4c4hes_ 4c4ke_ 4c4kes_ 4c4le_ 4c4les_ 4c4re_ 4c4res_ 4ce_ 4ces_ 4ch_ 4ch4le_ 4ch4les_ 4ch4re_ 4ch4res_ 4ck_ 4d4re_ 4d4res_ 4de_ 4des_ 4f4le_ 4f4les_ 4f4re_ 4f4res_ 4fe_ 4fes_ 4g4le_ 4g4les_ 4g4ne_ 4g4nes_ 4g4re_ 4g4res_ 4ge_ 4ges_ 4gue_ 4gues_ 4he_ 4hes_ 4je_ 4jes_ 4ke_ 4kes_ 4kh_ 4le_ 4les_ 4me_ 4mes_ 4ne_ 4nes_ 4p4he_ 4p4hes_ 4p4le_ 4p4les_ 4p4re_ 4p4res_ 4pe_ 4pes_ 4ph_ 4ph4le_ 4ph4les_ 4ph4re_ 4ph4res_ 4que_ 4ques_ 4r4he_ 4r4hes_ 4re_ 4res_ 4s4c4he_ 4s4c4hes_ 4s4ch_ 4s4he_ 4s4hes_ 4se_ 4ses_ 4sh_ 4t4he_ 4t4hes_ 4t4re_ 4t4res_ 4te_ 4tes_ 4th_ 4th4re_ 4th4res_ 4v4re_ 4v4res_ 4ve_ 4ves_ 4we_ 4wes_ 4ze_ 4zes_ a1b\xc3\xae a1la a1ma a1ne a1ni a1po a1vi a1\xc3\xa82d1re a2l1al1gi a2s3t1ro ab1se ab2h ab3sent_ abs1ti absti1ne absti3nent_ ab\xc3\xae1me ab\xc3\xae2ment_ ac1ce ac1q ac3cent_ acquies1ce acquies4cent_ ad2h ai1me ai2ment_ al1co amal1ga amalga1me amalga2ment_ an1ti anes1t2h anest1h\xc3\xa9 ani1me ani2ment_ anti1fe antifer1me antifer3ment_ ap1pa apo2s3t2r appa1re appa3rent_ ar1c ar1c2h ar1me ar1mi ar2ment_ arc2hi archi1\xc3\xa92pis archi\xc3\xa91pi armil5l as1me as1t2r as2ment_ au1me au2ment_ avil4l a\xc3\xa81d2r b1le b1re b1ru bou1me bou1ti bou2ment_ boutil3l bru1me bru2ment_ c1ci c1ke c1la c1le c1re c2ha c2he c2hi c2ho c2hu c2hy c2h\xc3\xa2 c2h\xc3\xa8 c2h\xc3\xa9 c2h\xc3\xaa c2h\xc3\xae c2h\xc3\xb4 c2h\xc3\xbb ca1pi ca1r\xc3\xaa ca3ou3t2 capil3l car\xc3\xaa1me car\xc3\xaa2ment_ cci1de cci3dent_ ch1le ch1lo ch1re ch1ro ch2l ch2r che1vi chevil4l chien1de chien3dent_ chlo1ra chlo1r\xc3\xa9 chlo2r3a2c chlo2r3\xc3\xa92t chro1me chro2ment_ cil3l cla1me cla2ment_ co1a2d co1ac1q co1acc co1ap co1ar co1assoc co1assur co1au co1ax co1ef co1en co1ex co1g2n co1nu co1\xc3\xa92 co2g3ni1ti co2nurb coas1so coas1su cog1ni com1p\xc3\xa9 comp\xc3\xa91te comp\xc3\xa93tent_ con1fi con1ni con1ti confi1de confi3dent_ conni1ve conni3vent_ conti1ne conti3nent_ contin1ge contin3gent_ cor1pu corpu1le corpu3lent_ cur1re cur3rent_ cy1ri cyril3l d1d2h d1ha d1ho d1le d1re d1s2 da1me da2ment_ di1li di2s3cop dia1p2h diaph1ra diaph2r diaphrag1me diaphrag2ment_ dili1ge dili3gent_ dis1co dis1si dis1ti dissi1de dissi3dent_ distil3l d\xc3\xa91ca d\xc3\xa91t2r d\xc3\xa9ca1de d\xc3\xa9ca3dent_ d\xc3\xa9t1ri d\xc3\xa9tri1me d\xc3\xa9tri3ment_ e1ni e2n1i2v2r e2s3c2h e2s3cop en1t2r ent1re entre1ge entre3gent_ er1me er2ment_ es1ce es1co es1ti es3cent_ esti1me esti2ment_ eu1s2tat eus1ta ex1t2r ext1ra1 extra2c extra2i f1la f1le f1re f1ri f1s2 fa1me fa2ment_ fi1c2h fic2hu fichu1me fichu3ment_ fir1me fir2ment_ flam1me flam2ment_ fri1ti fritil3l fu1me fu2ment_ f\xc3\xa91cu f\xc3\xa9cu1le f\xc3\xa9cu3lent_ g1le g1ne g1ra g1re g1s2 gil3l gram1me gram2ment_ gran1di grandi1lo grandilo1q grandilo3quent_ hil3l hu1me hu2ment_ hy1pe hy1po hype1ra2 hype1re2 hype1ri2 hype1ro2 hype1ru2 hype1r\xc3\xa92 hype4r1 hypers2 hypo1a2 hypo1e2 hypo1i2 hypo1o2 hypo1s2 hypo1u2 hypo1\xc3\xa92 h\xc3\xa91mi h\xc3\xa91mo h\xc3\xa9mi1\xc3\xa9 h\xc3\xa9mo1p2t i1al1gi i1arth2r i1b2r i1oxy i1s2c2h i1s2tat i1va i1\xc3\xa82d1re i2s3c2h\xc3\xa9 i2s3chia i2s3chio iar1t2h ib1ri ibril3l il2l im1ma im1mi im1po im1pu imma1ne imma3nent_ immi1ne immi3nent_ immis1ce immis4cent_ impo1te impo3tent_ impu1de impu3dent_ in1ci in1di in1do in1du in1fo in1no in1so in1te in1ti inci1de inci3dent_ indi1ge indi3gent_ indo1le indo3lent_ indul1ge indul3gent_ infor1ma inno1ce inno3cent_ ins1ti inso1le inso3lent_ instil3l intel1li intelli1ge intelli3gent_ inti1me inti2ment_ io1a2ct is1ce is1ta is3cent_ isc2hi iva1le iva3lent_ i\xc3\xa81d2r ja1ce ja3cent_ l1li l1lu l1me l1s2t l2ment_ l3lion la1w2r la2w3re lil3l llu1me llu2ment_ m1n\xc3\xa8 m1n\xc3\xa9 m1s2 mi1me mi2ment_ mil1le mil3l mil4let mit1te mit3tent_ mo1no mon1t2r mon2t3r\xc3\xa9al mono1va monova1le monova3lent_ mont1r\xc3\xa9 moye1n\xc3\xa2 moye2n1\xc3\xa22g mu1ni muni1fi munifi1ce munifi3cent_ m\xc3\xa91co m\xc3\xa9con1te m\xc3\xa9con3tent_ n1sa n1x n3s2at_ n3s2ats_ nu1t2r nut1ri nutri1me nutri3ment_ o1b2l o1d2l o1g2n o1io1ni o1pu o1s2tas o1s2tat o1s2tim o1s2tom o1s2tra1tu o1s2trad o1s2triction o1s2t\xc3\xa91ro o1\xc3\xa82d1re o2b3long o2g3no1si o2g3nomo1ni ob1lo oc1te og1no ogno1mo om1bu om1me om1ni om2ment_ ombud2s3 omni1po omni1s2 omnipo1te omnipo3tent_ opu1le opu3lent_ or1me or2ment_ os1t2r os1ta os1ti os1to os1t\xc3\xa9 ost1ra ost1ri ostric1ti oxy1a2 o\xc3\xa81d2r p1he p1ho p1le p1lu p1ne p1re p1ri p1ro p1ru p1r\xc3\xa9 p1sy p1t\xc3\xa8 p1t\xc3\xa9 pa1l\xc3\xa9 pa1pi pal\xc3\xa9o1\xc3\xa92 papil1lo papil2l papil3la papil3le papil3li papil3lom pe1r3h per1ma per1ti perma1ne perma3nent_ perti1ne perti3nent_ ph1le ph1re ph1ta ph1ti ph2l ph2r pho1to photo1s2 pi1ri piril3l plu1me plu2ment_ po1ast1re po1ly poas1t2r poly1a2 poly1e2 poly1i2 poly1o2 poly1s2 poly1u2 poly1va poly1\xc3\xa82 poly1\xc3\xa92 polyva1le polyva3lent_ pri1va privat1do privatdo1ce privatdo1ze privatdo3cent_ privatdo3zent_ pro2s3tat pros1ta pro\xc3\xa91mi pro\xc3\xa9mi1ne pro\xc3\xa9mi3nent_ pru1de pru3dent_ pr\xc3\xa91se pr\xc3\xa93sent_ pr\xc3\xa9\xc3\xa91mi pr\xc3\xa9\xc3\xa9mi1ne pr\xc3\xa9\xc3\xa9mi3nent_ pu1g2n pu1pi pu1si pu2g3nab1le pu2g3nac pug1na pugna1b2l pupil3l pusil3l p\xc3\xa91nu p\xc3\xa91r2\xc3\xa92q p\xc3\xa91r\xc3\xa9 p\xc3\xa92nul qua1me qua2ment_ r1ci r1he r1hy r1mi ra1di ra1me ra2ment_ radio1a2 rai1me rai3ment_ rcil4l re1le re1li re1pe re3lent_ re3pent_ reli1me reli2ment_ ri1me ri2ment_ rin1ge rin3gent_ rmil4l ru1le ru3lent_ ry1t2h ry2thm ryth1me ryth2ment_ r\xc3\xa91ge r\xc3\xa91ma r\xc3\xa91su r\xc3\xa91ti r\xc3\xa93gent_ r\xc3\xa9ma1ne r\xc3\xa9ma3nent_ r\xc3\xa9sur1ge r\xc3\xa9sur3gent_ r\xc3\xa9ti1ce r\xc3\xa9ti3cent_ s1c2l s1ca s1co s1he s1ho s1la s1lo s1p2h s1pa s1pe s1pi s1po s1t2r s1ta s1te s1ti s1to s1ty s1t\xc3\xa9 sc1l\xc3\xa9 sc2he se1mi semil4l ser1ge ser1pe ser3gent_ ser3pent_ ses1q sesqui1a2 sla1lo slalo1me slalo2ment_ sp1h\xc3\xa8 sp1h\xc3\xa9 spa1ti spi1ro spo1ru sporu1le sporu4lent_ st1ro st1ru stan1da sto1mo st\xc3\xa91r\xc3\xa9 st\xc3\xa9r\xc3\xa9o1s2 su1b2l su1me su1pe su1ra su1r\xc3\xa9 su2ment_ su3r2ah sub1li sub1s2 subli1me subli2ment_ suc1cu succu1le succu3lent_ supe1ro2 supe4r1 supers2 sur\xc3\xa91mi sur\xc3\xa9mi1ne sur\xc3\xa9mi3nent_ t1c2h t1he t1ra t1re t1ri t1ru t1t2l ta1c2h ta1me ta2ment_ tac2hy tachy1a2 tan1ge tan3gent_ tc2hi tchin3t2 tem1p\xc3\xa9 temp\xc3\xa91ra temp\xc3\xa9ra1me temp\xc3\xa9ra3ment_ ter1ge ter3gent_ tes1ta testa1me testa3ment_ th1re th1ri th2r ther1mo thermo1s2 thril3l to1me to2ment_ tor1re tor3rent_ tran2s1a2 tran2s1o2 tran2s1u2 tran2s3h tran2s3p tran3s2act tran3s2ats trans1pa transpa1re transpa3rent_ tri1de tri3dent_ tru1cu trucu1le trucu3lent_ tu1me tu2ment_ tung2s3 tur1bu turbu1le turbu3lent_ t\xc3\xa91l\xc3\xa9 t\xc3\xa9l\xc3\xa91e2 t\xc3\xa9l\xc3\xa91i2 t\xc3\xa9l\xc3\xa91o2b t\xc3\xa9l\xc3\xa91o2p t\xc3\xa9l\xc3\xa91s2 u1ci u1ni u1vi u2s3t2r ucil4l ue1vi uevil4l uni1a2x uni1o2v uvil4l v1re va1ci va1ni vacil4l vanil1li vanil2l vanil3lin vanil3lis ve1ni ven1t2r veni1me veni2ment_ vent1ri ventri1po ventripo1te ventripo3tent_ vi1di vidi1me vidi2ment_ vil3l vol1ta vol2t1amp v\xc3\xa91lo v\xc3\xa9lo1s2ki wa2g3n xil3l y1al1gi y1as1t2h y1s2tom ys1to \xc3\xa21me \xc3\xa22ment_ \xc3\xa81me \xc3\xa82ment_ \xc3\xa91ce \xc3\xa91ci \xc3\xa91cu \xc3\xa91d2r \xc3\xa91de \xc3\xa91le \xc3\xa91li \xc3\xa91lo \xc3\xa91l\xc3\xa9 \xc3\xa91mi \xc3\xa91ne \xc3\xa91ni \xc3\xa91pi \xc3\xa91q \xc3\xa91re \xc3\xa93cent_ \xc3\xa93dent_ \xc3\xa93quent_ \xc3\xa93rent_ \xc3\xa9ci1me \xc3\xa9ci2ment_ \xc3\xa9cu1me \xc3\xa9cu2ment_ \xc3\xa9d1ri \xc3\xa9d2hi \xc3\xa9dri1q \xc3\xa9li1me \xc3\xa9li2ment_ \xc3\xa9lo1q \xc3\xa9lo3quent_ \xc3\xa9l\xc3\xa91me \xc3\xa9mil4l \xc3\xa9ni1te \xc3\xa9ni3tent_ \xc3\xa9pi2s3cop \xc3\xa9pi3s4co1pe \xc3\xa9pis1co \xc3\xa9qui1po \xc3\xa9qui1va \xc3\xa9quipo1te \xc3\xa9quipo3tent_ \xc3\xa9quiva1le \xc3\xa9quiva4lent_ \xc3\xb41me \xc3\xb42ment_";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/it.php b/inc/3rdparty/libraries/mpdf/patterns/it.php
new file mode 100644 (file)
index 0000000..bdda023
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+       
+       Retrieved from http://www.ctan.org/tex-archive/language/hyphenation/ithyph.tex
+*/
+
+$patterns="_a3p2n _anti1 _anti3m2n _bio1 _ca4p3s _circu2m1 _contro1 _di2s3cine _e2x1eu _fran2k3 _free3 _li3p2sa _narco1 _opto1 _orto3p2 _para1 _poli3p2 _pre1 _p2s _re1i2scr _sha2re3 _tran2s3c _tran2s3d _tran2s3l _tran2s3n _tran2s3p _tran2s3r _tran2s3t _su2b3lu _su2b3r _wa2g3n _wel2t1 2'2 a1ia a1ie a1io a1iu a1uo a1ya 2at_ e1iu e2w o1ia o1ie o1io o1iu 1b 2bb 2bc 2bd 2bf 2bm 2bn 2bp 2bs 2bt 2bv b2l b2r 2b_ 2b' 1c 2cb 2cc 2cd 2cf 2ck 2cm 2cn 2cq 2cs 2ct 2cz 2chh c2h 2chb ch2r 2chn c2l c2r 2c_ 2c' _c2 1d 2db 2dd 2dg 2dl 2dm 2dn 2dp d2r 2ds 2dt 2dv 2dw 2d_ 2d' _d2 1f 2fb 2fg 2ff 2fn f2l f2r 2fs 2ft 2f_ 2f' 1g 2gb 2gd 2gf 2gg g2h g2l 2gm g2n 2gp g2r 2gs 2gt 2gv 2gw 2gz 2gh2t 2g_ 2g' 1h 2hb 2hd 2hh hi3p2n h2l 2hm 2hn 2hr 2hv 2h_ 2h' 1j 2j_ 2j' 1k 2kg 2kf k2h 2kk k2l 2km k2r 2ks 2kt 2k_ 2k' 1l 2lb 2lc 2ld 2l3f2 2lg l2h 2lk 2ll 2lm 2ln 2lp 2lq 2lr 2ls 2lt 2lv 2lw 2lz 2l_ 2l'_ 2l'' 1m 2mb 2mc 2mf 2ml 2mm 2mn 2mp 2mq 2mr 2ms 2mt 2mv 2mw 2m_ 2m' 1n 2nb 2nc 2nd 2nf 2ng 2nk 2nl 2nm 2nn 2np 2nq 2nr 2ns n2s3fer 2nt 2nv 2nz n2g3n 2nheit 2n_ 2n' 1p 2pd p2h p2l 2pn 3p2ne 2pp p2r 2ps 3p2sic 2pt 2pz 2p_ 2p' 1q 2qq 2q_ 2q' 1r 2rb 2rc 2rd 2rf r2h 2rg 2rk 2rl 2rm 2rn 2rp 2rq 2rr 2rs 2rt r2t2s3 2rv 2rx 2rw 2rz 2r_ 2r' 1s2 2shm 2sh_ 2sh' 2s3s s4s3m 2s3p2n 2stb 2stc 2std 2stf 2stg 2stm 2stn 2stp 2sts 2stt 2stv 2sz 4s_ 4s'_ 4s'' 1t 2tb 2tc 2td 2tf 2tg t2h t2l 2tm 2tn 2tp t2r t2s 3t2sch 2tt t2t3s 2tv 2tw t2z 2tzk tz2s 2t_ 2t'_ 2t'' 1v 2vc v2l v2r 2vv 2v_ 2v'_ 2v'' 1w w2h wa2r 2w1y 2w_ 2w' 1x 2xb 2xc 2xf 2xh 2xm 2xp 2xt 2xw 2x_ 2x' y1ou y1i 1z 2zb 2zd 2zl 2zn 2zp 2zt 2zs 2zv 2zz 2z_ 2z'_ 2z'' _z2";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/nl.php b/inc/3rdparty/libraries/mpdf/patterns/nl.php
new file mode 100644 (file)
index 0000000..06a342d
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+       
+       Created by Remco Bloemen (remco dot bloemen at gmail dot com)
+*/
+
+$patterns="_a4 _aan5 _aarts5 _aat5 _ab5l _acht5end _ac5re _adi5 _af3 _af5l _af5s _aftu5re _al3ee _al3f _alk4 _al5ko _alko5v _al5ma _al3om _al4st _ana3s _an3d2 _an3en _an3gl _an5th _ar5d _ar5tr _as5h _as5l _as3t _as5tra _as3u _at4a _ave5n _b4 _be3la _be5ra _be5ri _bos1 _c4 _coo5 _co3ro _cus5 _d4 _daar5 _da4gi _dag5r _da2k _dan2 _debe4 _de2k _dek5l _dek5s _den4k5r _de5od _de3ro _de5sta _di4a _die4p _di3o _doet3 _do3v _du4w _e4 _ede2 _edel5a _ed3w _ee4n _eer5ste _eest3 _eesto4 _eet3 _ei3l _ei5sc _ei3sp _ei5t _el4s5 _en5s _en5th _ep4a _ere5s _er2f _erf3l _er3in _ert4 _erts3 _es3 _es5c _es5pe _es5tr _eten4 _et4h _ets5te_ _eu3 _eus5 _\xc3\xa92 _f4 _fel4s _g4 _gaat5 _gang5s _gea5v _ge3l4a _ge5le _gelo5v _ge3n4a _gena5z _ge5ne _ge5no _ge3ra _ge5r4e _ge5r4o _gerst5a _ge3s _ge5sk _ge5ta _ge5tj _ge5to _gid4 _go4m _goot3 _h2 _handels5 _her5in _hits5t _ho4lo _houd5s _i4 _ide5o _ij4s _ijs5l _ijs3p _ijs3t _ik3 _in1 _in5d4 _in3g4 _in5gr _ink2 _in5kr _in5kw _in3s4 _in5sl _in5st _in5ta _is5c _j4 _jor5 _k4 _ka3d _ka5g _ka4taa _kerk5l _kerk5r _kerk5u _ker5sten _ke4s _koot5 _ko5pe _kop5l _ko3v _kun2 _l4 _laat5ste _le4b5 _leg3o _le4g3r _leid5st _len4s3 _le5r4 _le4s3 _le5th _lin5d _lof5 _loot3 _lo4s1 _lu3e _lui5t4j _lu4s _m4 _ma5d _ma5\xc3\xaf _meel5d _me5la _me5ni _merk5l _me2s _me4st _met5ee _mij4n5i _moot3 _mor5sten _mo4s _n4 _naat5 _na3d _na3n _na3s4 _nee5s _ne2p _nep3a _ne4s _ne5te _ne4t3j _neu4t5j _nie4t5j _noot5 _nos5t _no5v _o4 _oe4r5 _oe4s5 _oeve4 _ol3f _om1 _omme3 _on3a _on3d _onde4r _on1e _on5g _on3i _on5k _on1o _ono5v _on2t3 _on4tee _on4ter _ont5s _ooi5tj _oot5jes _op5ee _opi5 _op5l _op3r _op5s _org4 _os5 _ove4 _p4 _pee5tj _peri5 _pers5te_ _piet5j _pits5te_ _poort5j _po4st _puit4 _pui5tj _pu2t _r4 _raads5le _ran4d _rand5a _re4men _ren4o _reno5v _re5o _rie4t3 _rij5sp _ring5s4 _roe5tj _ro4l _ro4st _ro4t3h _ro5v _s4 _sap3 _sa5v _sci3 _see3 _seks5te _se5re _set3 _se5v _side3 _ski3s4 _sneu3 _sno2 _so2k3 _song5 _spoor5tj _st4 _ste4m _t4 _taart5j _tan4da _te4a _te4f _tek2 _te3le _ten5ac _te3no _ten4t5j _te3ra _ter4p5a _ter5s _te4s _ti2n _tin3a _tin3e _toe5pr _to4lo _to4p _to5v _tri3s4 _ts4 _tsa3 _tuit5j _ty2r _u4 _ui2 _ui5s _uit1 _uit4je _uke5 _ur4a _vaat5j _ven4t5j _ve4r3 _ves5p _vet3j _vie4r _vol5s _w4 _wals5te_ _wee4ko _wee4t3 _we4l3 _wen4s5t _west5r _win4s _xe3 _y2 _z4 _zes5 _zit5 _zooi5 4a_ a4a4 4aad aad1a aad1o aad1r aad5sap aaf5a 4aag aag1a aag3e aag3o aag5r aags4 aag3sa aag5so aag3sp aai3l aak1a aak3e2 aak1o aak5r aak3sp aal5a2 aal1e aal5f4o aalfo5l aal1i aal5k aal5m aal1o2 aal3sl aal5so aal5spe aal5ste aal1u aam1a aam3o aam4sta aam4ste aan1a 5aandee aand4r aan1e2 aan5g aan5i 3aanj aan5k4 3aann aan3o aan3sp aans4po aant4 3aanta 3aanv aap1a aap3i aap3o2 aap3r aar3a aar4d5as aar3e4 aar1i 4aarn aar1o2 aar5spel aar4t5on aarts5l aar3u aas3e aas3i 4aast aas5tr aat3a aat5e aat3h aat3i aat1o aat5r abak4s5 aba4l abat4s ab5eun ab3ijz a2bon aboot4j abot4j 2abr ab3ru 4ac_ a3cal a3car 4ace ace3st 4ach_ a3cha 2a1che 4a1chi ach3l a1cho a3chr 4achs ach5tec a1chu achuut5 4ack ac3kl 2acl 2a3co 2acr ac5res 4acta 4acu 4ad_ a5da_ ad3ac ada2d ada4l ada2r3 adas5 2add a5de_ ad3ei ade5re a5des a3det a5deta ad3e4te 2adh 4ad4i adi3al adi4oc adi4od 4adk 2adl 4ado_ a3doo 2adp ad3rei a3d4ri ad3rol 2ads ad5se ad3so ad1s4t ad5sta ad3ui ad3w 2ady 4ae aege4 ae5k4 a3e2p ae3r ae2s3 ae4s5t a3eu a2\xc3\xab a4\xc3\xabr 4afa af3aa a2f3ac af4as af4at afd4i afd2r af5d4w 4afe afee4 4afi af3l 4afo a5fo_ a2foe afon4d af3op af5org af1r af3s4 afs2c af5se 3afsl 3afsp aft4a af5tr af3ui 2afy 4ag_ ag1a2d ag3af ag3a2m ag3ar ag3di a5ge_ agee5t 4a5gen_ ager4s ag3ex a4gil ag3ind a4g3ins agi5ot 4ag1l ag3of a4g3or ag4o3v a2gr ag4ra ag5rap ag3ru ag3sl ag4sle ag5slu ags2p ag3spe ag3spi ag1st ag3sta ag5str 2agt agu5a a2g3ui ag3u4r a2g3uu 2ah 4a1ha 4a5he ahe5ri a1hi ah3l a3ho ah5r ah5t2 a3hu a3hy ai5a2 ai4dr ai1e a1ij ai5k ail3m ai2lo a2in aio4 ai3ov ai3s4 ai5sc ai4s5l ai5sn ai1so ai1st ai5tj ai3tr aiu4 a\xc3\xafn4 a\xc3\xafns5 a\xc3\xafs3o4 2a1j ajaars5 aka2 ak3af ak3ag a4k3ar a4k3ed ak3emi ake2t ak3id ak3ink ak5is 1akko 4a2k3l a2k3n ak5ne ak4ni a3kof ak3on ak3o2p a2kr ak5ru 2aks ak4so ak5spe ak1st ak5to ak5t4w a2k3u4 ak1w ak3wi a1la a4l3ach al3adr a3l4ag a3lal a5lapr al3art 4ald a1le a5le_ al3eff 2aleg a2l3el ale5ro ale5ste ale4tj a3l\xc3\xa8 al4fen alf3l al5fon alfu4 al2gl a3lie al3int alk5ei al5kle alk3s al4kui al5le al4mac al5me a1lo a4l3ol alo2n al3ou a4l3o4v 2alp al3s4ag al3san al3scr als5j al2sl als5li als5m al4sn al4s3oo al4stem al5sten als5tou altaar5 al3tha al4t3ro alt4st a1lu a2lui al3uit al3u4r alu2s5 4am_ a4m3ac am3adr ama4f 4amag am3art 5ambt ament4j ame4ran ame5tj a2meu am4i 4amm am3oli a2m3o4v 3amp\xc3\xa8 am2pl am4ple am4sm am4s3o am4spr ams5te_ a2m3ui a3nad an3alg an4a3n an3arc 2anc 4anda anda4d and5ank an4d3e4d an4dex 2andj an4dom an5d4ri and5roo ands5lo an4d3ul a4nem a3nen anen3i 4aner an3est ane3us 4ang_ an4gan anga5p ange5st ang5le an2gr ang5sna angs4te aniet3 anij4 3anima an5ion a4n5isl ani5t 4aniv 4ank_ an4kaa anka4n an4k3as an2k3j an4klu ank3of an2k3r a1no an3och a4n3oor an3ork ano3s ano3t4 a4n3ou ano5v 4ans an3san ans3cr an4seg an4serv an4sid an2so4 ans5or ans3pi ans5pir an1st an4s5te_ an5stru an4tac ante4n an3th 2anti ant5sl ant3w 4a1nu a5nuf an3ui an3ur an3uu anze5s 2a1o ao4g ao2l a4om a2op2 aor5t a3os aos3p aos5t 4ap_ a1pa a4pak a4pas ap3as_ ap3ass a1pe ap5eten 4a1pi apij4t5j ap3ijz ap1j 2apl ap3le ap3li ap3lo a1plu apon5 ap3oo apo3p apo5sta ap3o4v 1appa 4appen 4apr ap3ra a3pre a4prem a5p4ris ap3ru ap2sa ap4si ap2s3l ap3sn ap4ste_ 2apt ap3tj 2apu a2q 4ar_ a1ra araat5j a4r3app ara3s4 ar2da ard3ac ard3ak ardo4 ar4d3om ar4d3op ar4d3ov ar2d1r ar4dra ard3re ar4du ard3w a1re 5a2rea a3reg a3rem ar4en are4no are3sp a3rev ar3gh ar2gl a1ri arie4tj arij3s ar3ins ark2 ark3ac ar3k4l ar4map arm3u a1ro a2r3ob ar3oge a3rok aro4ko ar3oog a2r1o2p a3rot arpi4 ar2s ar5sch ar3scr ars2e ar5see ar3si ars3l ar4sla ars5m ar3sni ar4so ar4sp ar5spo ars3ta ars5tal ar4s5tek ar4str ar4su art4aa ar4t3ak ar4tan art5ank ar4tap ar3tar 4arte ar4tei ar2th ar5tij 4ar4tj art5jesv 4arto ar5tof art5o4ge art5oog ar4t3o4v ar2t3r ar4tro art5ru art4sl art5ste a3ru ar3ui 4arw arwe3s a1ry 4asa as3ad as4ag as3ak as1ap a2sc as5ce 2ase a4sec a4s3eg aser5a ase5tj aseve4 as5ha asis1 a4sj as5ja as3ji as3k as5ka as5ki as3l as4lu as3m as5mi as3n as4ne as4ni 4aso as3ob aso2l aso4r as1p as3pl a4s5q as5sa 4assm 3assu a2st 4as3ta a4sta_ as5tag as4tas as4tat as3te a3stek a3stem as5ten as3t\xc3\xa8 asting5sp as1to as3tob ast3op 4astr ast5rem as5tro_ as4tu a1t ataart5j at1ac at3ade at3af_ at3ank ata3s 2atek a5tell ate2n ate3no aten4t5r ater5ad ater5sl at4eu 2atg at3hu ati5ni a2t3j at4je atjes5 at5jesb at5jesh at5jesm at5jesp 2atm 2atn a2too at3oog atos5f ato3st at3rac at3rei at3rib at4roe at5ru at4s3a2 at4s3ec atsi4 at4s3id at2s3l at4slo ats5m ats3n at4sne ats3pr at2st at4staa at4s5tak at4ste_ at5sten at5stij ats5tol ats5top_ ats5trek at4t3u4 a2t3ui at3w aua4 au3ch au3co au5de aud4j 1aug au3na aun3t aup2 aur4 au5re aure3u 4aus au3so au4s5p au3sto au3t4 4aut_ 1auto auto3p 2auts3 auw3a 4auz a4\xc3\xbc avast4 ave3c avee4 ave4n3i aven5sp aver3a ave3re ave3r4u 4avi a2vo 1a4von a5voo a5vor 4avy 2a1w axis4 ay2a 4azif \xc3\xa43h \xc3\xa4mme3 \xc3\xa43r 1b 4b_ 3ba baar5ste baar5tj ba4da bad3ar ba4d3r bad3s ba3g4h ba3gl 5b2ak ba4k3o4 bak4sp ba3lan ba4lar bal3dw bale4 bal3ev ba3li\xc3\xab bal4kl ba3lo bals4 bal3sf ba4me ba5n2a ban4k3a ban4kl ban4k3o ban4kr bank3w ba3sa ba4st ba2tr ba3tro 4bb bbe4l5ag bbe4l5ee bbe2n bben3a 4b1c 4b1d4 b5de bdi5a 3b4e be1a be3as be2au be3ch be5dwe be5dwi be5dwo bee4 beet1 be5g beie4 bei3s bei5tj be5ki be3k4l be1kw be3lar be5l4as bel5dr be3le be4l3ec be4lex bel5f be3li be4l5int bel3k bel4o be3lo5v bel3sc bel3sp belt4 bemen4s be3nep be5n4o be5ot be1ra bere5s4 ber4g5af ber4g5et ber4gl ber4gr ber4i be1r4o bero5v be3ru be3ry be1s4 bes5ac be4sh be4sje be3so be5sp bes5s bes5te_ bes5ten_ be5stie bet2 be3t4h be5ton bet5ren be3tw be5twi be3und beur4s 4b3f 2b1g 4b3h 3b2i bid3s bi2du bie4li bi4en bie4t3j bij5d bij3f bij3g4 bij5k4 bij1p bij1s2 bik4a 5bil bi3lo bil3s2 bin4dr bin4st bin4t3j bi5ob bi3ok bi5om bi3oso bi5ow bir3 bi4st bis5troo bi1tr bit4se bit4s3p 4b1j 4b1k 3b4l blad5ij 2b5lap b5led bles3 ble5spe ble2t3 b5lid blijs4 blij5ste bli2k 4b5loi blok5l bloot5j blu2s 2b1m 4b1n b4o bo4d3ec body3 boe4g3a boe4kn boe4ko boes4 boe3st boet5st bo3f4l bo2k bok3an bokje5 bok4st bolk4 bo2m3a4 bo2m3o bo5na bond2 bond4s5 3bone bo3no bon4t3j bon4t5o4 boot3j boots5te_ bo3p2 bor4sta borst5o bor4st5r bo4s bos3a bo5sco bo5si bo5so bos5p bos5to bot3j bo4to bot3r bot4sp bot4st bo2tu bou5ta bouw5s bo3v bove4 4b1p 3br4 braad5s bran4da bra5str brei5s4 brie4t brie5tje_ bri4l bro2n bron3o4 bru2l 4b1s4 b2s5a b5sc b3si bsi3d bs5je b2s5la b2s5m bs5s b4stij 4bt4 b3ta b1tr bts5 3b4u buit4j bul4k bu4lu bune5t b5urb bu5ri bus5c bus3o but4a but3j bu2to but4s buts5te buur4tj 4bv 2b3w by3 4bz 4c_ 1ca 3ca_ ca3b ca1ch 5cada ca3do ca3dr cae3 ca3g2 cal4l3 ca3lo came5r ca3na cant4 ca2of ca1pr ca4pra ca5pri ca3ra car4u ca5se ca3s2p cas3t cas5tr ca3ta cate4n ca3t4h cau3 cau4st ca3v 2cb 4c1c cca3 cces5 c4d c5do 1ce 3ced cee4 3ceel 3cel cel3d celes5 ce5li cel5k ce4l3o 2ce3n4a 2cene ce3no 5cent cen4t3j ceo4 ce3ra cer2n ce5ro cer4t3r ce2s ce3s2a ce5sc ce3s2h ce3sta ce3s4ti cesu5r ce3ta ce4t3j ceto4 cet3og cet3oo 1c\xc3\xa9 c3g 4ch_ 3cha\xc3\xaf 5chao 3chas 1chau 5chauf 2chc 1chef 5chef_ 5chefs 5chemi 5cheq che5ri che3ru 5ches che3us 1ch\xc3\xa9 5chir 4chn 2chp 5chromo 4cht 4chw 1chy 3ci ci5ab ci3am cie3k cier4s5 ci1eu 5cij 5cil ci5le cil3m 4cind ci3o ci5om 5cir ci3t2 ci5ta c3j c2k3a c4k3ed ck3ef cke5re c5k4et ck3id c2k3l ck4le c2k3n c2k3o4 c4k3r ck5se ck3so ck5st c3ky 1c4l cla2n cle3u 5clu 2c1n 1co co3ad co3d co4i coin5 co3k4 co3la 5com 5cond con1g 2co1no 5cons 3con5t4 2coo 2co1p2 3copa 4copi cor4dr co4rel co5ri cor2o 5corr cors4 co3ru co5sc co5se co5sp co3th co3tr 5coun 2cout co5v c3p4 1c4r2 3cras cre5d 2crip 3cris cro5f cro5k croo3 cro5v crus5 c3so c3sp c3ste 2c1t ct3act ct3ad ct5c ctee5t cte2n3 c2t1h c2t3j c4t3of c3tol c2t1on ct4or ct3rap c4t3re ct3sl ct3sp 1c2u cu5d4 cu3en cu3\xc3\xa9s cui5s cui2t cuit5e cu3k4 cula5p cu3ra 5cur3s cus3o c3w 1cy 1\xc3\xa7 \xc3\xa7a4o 4d_ 1da 3da_ 3daag d4aal d3aap daar5e 5daat 4dabo 2d3acc da4ce da5den 4dadr 3dae 2d1af 3dag da2g3a4 da3ge da4g3ed da4g3e4t da4g3on da4g3r dag4s3t da2gu 3dai da3\xc3\xaf da3ke da4ker 2dakk da4k1r 4dala d3alar d3alc da3le 4dalf da3li 2dalm da2l3u d4am dam4a da5mac d3a4mat d2a5me4 dames3 dam4pl 2da2na dan3as dank3l danoot5 dan4si dan4sm dan4s3p dan4st dans5ta 4d3antw 2d1ap 4d3a2pe 5dapu da2r3a d3arb 3dare 3dari dar4mo darm5on 3daro dar3s dar5st 3das3 5dasa da3stu 3d4at da3ta dat5j 4d5atl 4d5atm da2t3r 5daue 4d1aut 3dauw 2db dbei5 dbou4w5i 2d5c 4d3d4 ddags4 ddag5sp ddel5ev dde2n dden5a ddera4 dder5al ddere4 dder5ee dder5ep dder3o ddi3a d5dles d5do ddo3p 1de 3de_ de2al de1ch d4e5den 5dedir de4dit dee4g3 dee4l deel3i 4d3een dee4r 4d3eff de3g 4d5eg_ 4d5egg 2d5egy 2dei d3eie d3eig d3eil d1eis d3eiw 5dek de3ke dek3lu dek3w del4aa del5da del5dr del5eek 4d3e4lek 4delem de4lev 4d3e4lit del3k del2s del4s3e dels3i del4so 4d3e4mai 2demh 5demi dem5ond d2en_ den4ac den5ate den3ei den3e4p den3ev 4d3engt den4k5of de4noc den3o4r den3sh den5str de3nu 5denvl de4o de5ofo de5ol deo4li deo3v de3rab de4r3ad der3a4g de3rak de3ram de3ran de3rap de3ras de4r5as_ de4r5ass der2e der5ede der5egd de4r3ei de4r3em de5re4n de4rep de4ret de5rij de4r3im der3k4 der3on dero4r 4d3eros der4s3a der4s5om der5ste der5sto der5stra der5th 4d3erts der5tw de2r3u de3rup de2s de3sav des3m des3n des3p de3spe de5spel de4spl des5sm de3st des5tak de5stal de4s3te de4sti de5stic des5top de3t4 4d3e4tap de5tw deu4r3o4 de3us_ deu4tj deve4 2dex 4d1exa 4dexp 3d\xc3\xa8 2d1f 2d3g d4gaf dge3la dge2t dgeto4 dget5on dget5ov dge4tr dg4l 2d1h d5he dheer4 3d4hi_ 1di di2a di5ae di4ak di4ano dia3s4 di4atr 5dich di4do die2f die4r3o di3esr die3st die2t diet3r di1eu 3dig di2ga dig5aa diges5 dijk3r di3jo 2d3ijz di2k3o4 5dil 2d3imp di5n2a 2d3ind 2dinf 3d4ing_ 4d5ingel 4d3inj 4d3inko 2d5inr 2d3ins 4d3int dintel5 2d3inv 2d3inw 2d3inz di2o di5ofon di4ol di4one di4oni dio1s dio5sc 2d3i2ro 2d3irr 3di4s dis5ag di5se di5si dis4kr dis5p dis1t dis5tr di3th dit3j dit3r 5div 2d1j 2d3k2 4d3l d5le_ dli4n dlot4s 2d1m 2d3n2 d5ne dni3s 1do 3do_ do3a 2dobj 4d3obs 3d4oe 5doe_ doe5d 4doef d5oefe 5doek 5doen 5doet 4d5oev 3doi d4ole 2do2li d4olin dolk5s 5dol5s 3d4om_ 5domi do4m3o4 d3omr dom4sn 5domu d3omv 4domz 5don_ d4ona 5done do5ni 5d4onn 5do3n4o do3nu do5ny 5donz 2dop do3pa d3opb d3opd do3pee 5dopj 4d1opl 3dopo d3ops d3opz 4d5org do4ri\xc3\xab d3ork dors5m do3sp do3sta dot3j 5dou 2dov dover5s 3dovl 3dovo 2d3p dpren4 1dr4 3dra 5dra_ d3raam d3raap d4rac d5race 5drach d3rad_ d3rada 5draf 5d4rag d4rama d3rame 4d3rand 4drap 4dras 4d3raz 2dre 4d1rec d5reco d1red d2ree 4d3reek 4drend d4ress 4dret 3d2rev 5dreve d3ric dries4 5d2rif dri5ga d3rijd d3rijk d3rijm d3rijs 5d4rin 3dris 4d3rit 4d3roei d3roer 5d2rog 4d3rok d3roma d3rond 3droog 4droos 5drop 2drou 2d3ro5v 2droz drug4s d3ruim d3ruit 5d4ru4k 4d3rus 2ds d2s1a2 d4saa dsa4b d3sal ds4ate ds2ch d5schi dse2 ds3eco d4s3ed d4s5ee d4sef d4sei ds3eis ds3elf dse4li d5sen d4s3es d4set d2sh ds3ho d2s1i2 d4s5id dsig5a ds2im ds4ing ds5is d4s3j ds4jo ds5jon ds4l d1sla ds5las ds5lic d4s5lie ds5lim d3slin d2sm ds4mak d3smij ds5mo ds3n ds4ne ds5neu d3snu ds1o4 ds3ob ds3om d4son ds2oo ds3op d4spa d5span ds5pati d5spec d5s4pel d4s3pet d1spi d4s3pl d5spoe d5spok d5spor ds5s dst4 d1sta d5staat d4stab ds3tak d4s3tal ds4tan d3s4tat d5stav d3ste ds4te_ d5stee d4stek ds4ter d4sterr d4stev ds3th d3s4ti d4stit d1sto ds5tram ds5trekk ds5ty d2su4 ds3ure ds3uu d1sy 2dt d1ta dtaart5j d1th d2tj d1to d1tr d1tu 1du 2duca 5due du3en du3et 5duid 5duif 5duik d3uil 2duit 4duit_ d3uitd 5duite 4duitg d3uitv 5duiv du4n dun5i du2o du4ol 3durf 3durv 5du1s dut3j du5wen 2dv dvaat5 dvee3 dve5na dvies5 2dw d3wac d3was d3wat d1we 3d2wei d3wek d3wet d3wez d1wi 4d1wo d3wor d3wr 1dy 4d3yo dy4sp dy2s4t 2dz 4e_ 4ea e3aa e1ab ea3bo e3ac ea4ca eac5t e1ad ea3da e5adem ea3do ead3s2 ead5sh e1af e1ag e3ai ea4k3o4 e1al ea3la e3ali e4als ea5mi e3an e4an_ eang3 ean4s e5ap ea3pr e3aq e1ar ear2c e1as e2asc ea5s4e ease5t ea3so e1at e4at_ eat3s eau3s4t e1av e3bo ebots5te_ e5br 3ecd e3ce e1che e1chi echt5ec echts5o e3chu 4eck ec5le 4ecor 4ect ec3ta ec4taa 3ecz e1d ed4ag e3dam e3d4an e4d4as ede3a ed3ei_ ede5le edem4 ede5nac ede5o ed4er e4d5erns ede5rog edi3al edi3am e5die 4edir edoe5tj e3d4oo ed3opv edors5te ed3ov e3d2r ed3rod ed3rol ed1s ed5se ed2sl ed4so ed5sp ed3su ed3uit e4d2w e5dwan e4e eea4 ee5b ee5ca ee5che ee2d3a eed4ac eed5as ee5de ee5do eed3ru eed3si eed3w ee2f ee3fa eef3ac ee3fi eef3l eef3r ee4gap eeg3l ee3i ee2k ee3ka ee5kaa eek3ak eek5all eek1e ee5ket ee3ki ee3kl ee4k3lo eek3n eek3re ee3kri eek3ro eek5st eek3w ee2l eel3a ee3lad eel4as_ eel5d4u ee3le eel4ee ee3li ee5lij eel5k4 ee3lob eel3og eelo4ge ee3lu4 eel3ur eel3uu 4eem eema4 ee2n een3a eena4r een3e2 een5g ee3ni een5ie een5k ee5o2 ee2pa eep3an ee3pl eepo4 ee4p3re eep3ru ee2r eer1a eer3aa ee4rad eera4l ee3ram ee3ran ee3re ee4ree ee5rei ee4r3i ee5ric eer5k eer3og eer5oom ee3rot eer5ston eer5str ee2s3 ee5sch ee4s5em ees5et ee3sj ees5lo ee3sn ee3s4p ees5pl ees5pot ees5ten ee3stu ee2t eet5aa ee3tal ee3tan ee5te eet5h ee3tj eetna4 ee3to eet3og eeto4ge eet3oo eeto4r ee3tr ee4tro eet5rok eet3sp eet5ste ee5v ee5z e\xc3\xabn3 e5\xc3\xabr ef3ad efa4z efde5l ef3do ef3ei e5fer 4efi efie4t efiet5j ef3ins e3fis5 e1fl ef3li ef3loo e3flu ef3om e3foo ef3op e1fr ef3rij e5fron ef3sf 4e1g egas4 eg3as_ ega5sk eg3ebb e4ge4c eg3eig egel5ei_ ege4l5ov ege4net egen5of ege4ra eger5eng ege4ro eger5on e3g4i eg3ijz egip4 egiste4 e2gl e4go_ eg3org e2gos eg3oud e5graf eg3s4 eg5sle eg5so e2g3u4r egut4 e4g3uu e1h4 e5ha eheis5 ehit4 e2i ei5a 4eid ei3do eid4sc ei1e 4eien eien5s eie5re ei3f4 ei3gl 4eign e3ij eik4l ei3kn ei5kr eiks4 4eil_ eil5ant 4eild4 eil5dr 4eile ei4lev eil5m ei2l3o ei4n3ab ei3n4ac ein4do eind5oo ein4d3r ein5gr ein5k ei2no ein5sl ei3o ei2sa ei5sha ei3s4la ei3slo eis4p ei3s4ta 4eit2 ei4too eit4s3 eits5c eits5n eits5te_ eit5sten eits5tr eive4 4eiz e1j2 e3je ek3aan ekaart5j ekaat4 ek3af_ e4k3a4g ek3al_ ek3alt e5kam ek3ang ek4ee ek1ei e3kem e5ker_ e5kers ekes3 ekes4t ekes5tr e3ket ek5eter e5kic e4kil e5kis ekla4m eklam5a ek3lev e5klim ek5loos ek4ni e3ko e4k3ob e5kof ek3oli ek3opz e5kor ek5os_ ek5oss e5kran ek3roz eks4e eks5erv ek5set ek4str eks5tra ek5t4e ek3to eku4 ek3uit ek3ur ek1uu ekwet5ste ek3win e1la el3aan el5aand el1ac el4ade el3adj el3adm el3adr el3adv el1a4f el1al e3lan el5ana e3lap e5lap_ e4lapp el3arb el3arc el3arm el3art e4l3as_ el3asi e4l3asp e4l3ass el1au e4laut e3laz el5azi el4dec el4dr el4du e1le e3le_ el3eeu el5eff e5leid el5eier el3eig el3ei5s e4lel 3e2lem el3emp e5l4en e3ler ele5r4a eler4s el3erv e3les eles4t e4l3eta ele4tr e4l3etu el3exc e3l\xc3\xa9 elfi4d el1fl elf3s4 el3gu 2eli e5lie e5lig eli5kw el3imp e4l3ind e3ling e4l5inkt el5inz 3elix el4kee elk3s el4k3u4r el4kw 4e1lo e5loep el3oes e3lok el3ol el3oms el5ond el5ont e3loo e5lood e5loos el3ops el5opt el5opv el3o2r el5org elot4j e5lou el3o4ve e5loz elp4o el4ps el4s5em el4s3k el5smed el5twe 4e1lu el3uit eluks5 2ema e4mana ema3sc ema5to emees5 emens5te emer4s emes3 emie4tj e5mok em3oli em3op em3org emor5sten e4mo4v em3sa em5sc em4sli em4sm em1st em3su em3uit emut4 en3aap e3naar e4n3aas en1ac e5n4acc en5af e2n1ak e2nal en3al_ en3als en3amb en4ame e2nan e4n3ang en1a2p e5nari en3ars e2n3a2s enas3p e3nat ena4tel e4n3att en1av e2n3a2z enci4 3ency_ en3da en5daa end5ama 5enderti en3d4o en3dr en5drek e2n3e2c enede4 e3nee en3eed enee5t en5eg_ en5egg en3ela en3elf en3ema e4n3en5t e2ne2p en3epo e5nere 5energ e4nerv en3eta en3ete ene4ten e3neu 4enf en5ga en3gl en4g5le eng4r en5gri engs4 eng5se eng3sm e3nie e5nijd e2n3im e4ninga e4n3ink e3niv e4n3i4vo en3k2a e4n3och en3off e4n3oli e2n1on e4n3oor enoot5 e2n1o2p e3nor_ en3ord eno3s en3ou e2n1ov 3enq en5sce en4sei ens5ein ensek5 3ensem ens4fe en4sin en5slak en4s3on en1s2p ens5pot en5stan en5sten enst5ijv en4stin en4stu4r en3su en4tac en5tee en5tei ente5re en4terv 3ent\xc3\xa8 en1t2h en5tom ent4r en3tre ent5rol ent4sl ents3m ent4s3p en3tw e1nu e4n1ui e2nun en3ur en3uu 5envelo eny4 e3o eo3d eodo3 e5oe eoes3 e5off eo3fr e4o3k4 e5on eo5ni e5oo eo3pa eo3pe eo3pl eop4la eo3p2r e5ops eor5d e5org e5ori eo3ro eo3s4 eo5st e4ot eo5te e5o3t4h e1pa e3paa ep3aak ep3ac e4paf epa4k ep5ake e3pal e3pap e4p3app e3par ep3asp e1pe e5pe_ ep5een e5per epers5te_ e1pi 3epid ep3ijs ep3ijz ep5ingr ep3ins epit4s epits5te ep1j e1pl ep3led e4p3lod e5ploe ep3lus e1po e4p5o4ge epoort5j epoot4j 3e4pos_ e3pot epou4 e1pr ep4ra e3pri ep5rode eprot4 ep2s ep4s5ee ep4ser eps3l eps5n eps3p eps3ta eps5taa eps5tal eps5to eps3tr eps5tro ep4tak ep2tj ep4tr ept3ra ep5tro ep3uit 4equa e3ra_ e1raa e5raad e4raak_ er3aan er5aanp e4raap_ e5raat e4r1ac e5rac_ e5race e5raco e3rad e5rad_ er3ado er3af e3raff era4gen e1rai e4r3all er3ama er3ana e5randa e5rane e5ra3pl er3arc e3rare e3rari e1rat4 er3a4tr er3azi er3d2a er3d4i erd4o er3d2r erd5uit_ er3d4w e1re er5eat 4erec er5editi er3een e5reep er5eers er3eet er3ef er5eff er5eg_ er3egd er5egg er5egt er3eie er3eig er3eil er5eind ere3kl er3elk e4r3emm er3emp e3rend e5rendel ere4ne eren5eg er5enen_ e3renm e3rent er5enth e5rento eren5tw ere2o ere4og er3epi er3e2q er3eri e3res_ er3esk e3ress ere4st ere4t3j er3etn e4r3ets e4r5ex erg2l e3ri eri5ab e5rif e5rig erig5a er3ijl er3ijs e4rijs_ er3ijv e4r3ijz e5rik er5ind e4r3ini er5inkt er3ins er3int e5rio e5ris erkeers5 er2kn er3m4i er5mo er5nu e1ro_ e3rob er3oc e4r3oed er3oef e5roep eroe5tj er3oev er3of ero2g e3rok e1ro2l e5rol_ er3oli e5roll er3om er1on e3ron_ e3rone er3onv er3oog er3oor e5roos e4r3op erop3a ero5pen e2r3or er1ov er3oxi e3roz e3r\xc3\xb6 er4plu errie5tj er3scr er3sj er5slag er5span ers4pot er5stem er5te er3t2h er5t4i er5t4o er3tr ert5se erts5l er3t4u er3t4w e1ru e3rub e3rug5 e2rui er3uit erui5t4j e2run e3runs e4r3ur e3rus er5uu 3ervar 3erwt e4saf e4s3a2g e3sam e5san es3ap es3arr e3sa3s e3scop e3s2cr es4e e5sec es5een e5sel es5ene e4s5eng es5ex es2fe es5he e4shi e3sid e3sie es1in e4sir es5je_ es5jes e3s4jo es5jon e4s3ka es5kr e3sl es4la e5sla_ e5slag es3lak es5lat es4le es5leg es2m es4mui e5smuil_ e1sn e3s4ne e1so e3sol es4oo es5oor_ eso4p es3ore e1sp es5pas es4pel espit5ste e3spl e4sprie esp5riem es4sm e3stak e3s4tal e3stap es4tar es5tatie e4s3te_ es4tea es4teel est5ei_ e4steka es5tekam e3s4tem es5temo es3ten e4sten_ es5tenb es3ter estere5o es5tes es4tet e3steu es4tic e4stie e3stot es5tra_ es5trac es5trak e5stral est5rap es5trei est4sc es4tur e3sty e3su esu4r e3sy e1ta e3ta_ et3aan et3ac et3ad et3afz 3e2tag e3tak e5tak_ et4ana e5tand e2tap e4tapp e5tat e4tau e2tav e3te e5tea et3edi e5tek 4etel e5tel_ e4t5elf e5tels et5emb et5emm etens5u eten5tj ete5r4a ete3ro eters5la eter5sm e5tes e1th et3ha et3hor et5hu e4t5i4d e5tie e4t3inc e4tiq e5tis e4tja e1to e5toc e3toe e5toev e3tol eto4p et3ope et3opl e4t3ork eto3sf e1tr et3rec e4t5res e3troe e5tron e5troo etros4 e4t3ru et4sl ets5lap et5slu ets3n et4s3oo et3spe ets3pr et3spu et4ste ets5tek et5sten et5sti ets4u et5su5r et5suu e1tu etui5tj etu4r et3we et2wi 1eua4 1euc eudi5o eu5dr eu3e eugd3r eu3g2r eu4ler eu4li e1um e3um_ e2umd eu2na eun3t 1eu1o eu2po eu4rad eu4rec eu3ren eu4res eu4rij eur5k euro5v eur4sta eurs5taa eurs5te_ eur4s5tr eur4su eu5sch eus4p eu3spa eu4st eu5str eu3tj eu1tr e3uu 2euw eu4wa eu5win euw4str evaar5tj eval4s evari5 eve4lo evel5op eve5n4aa 4ever eve3ra 4e1w e5wa e5we ewen4s ewens5te_ ewest5r ew2h e5wi ewo3v 4ex_ 2ex3aa ex3af 4exco 3exeg 3exem 4exi ex3in ex5op 1exp e3y4o eys4 ey3st e5za e3zee 4e3zen ezers5 e3zo ezz4 \xc3\xa93a \xc3\xa91d \xc3\xa9dee4 \xc3\xa9di3 \xc3\xa91g \xc3\xa9gee5 \xc3\xa93h \xc3\xa93j \xc3\xa93n \xc3\xa93p \xc3\xa93r \xc3\xa91t \xc3\xa81 4\xc3\xa8c \xc3\xa82l \xc3\xa82s \xc3\xa85t \xc3\xa8ta5 \xc3\xaa1 \xc3\xaa2p \xc3\xaa3per \xc3\xaa5t 3\xc3\xab 4\xc3\xab_ \xc3\xab2b \xc3\xab3c \xc3\xab3d \xc3\xabe2 \xc3\xaben3 \xc3\xab3j \xc3\xab1l 5\xc3\xabn \xc3\xabnce3 \xc3\xabn4e \xc3\xabns2 \xc3\xabn5sc \xc3\xabnt2 \xc3\xabn5th \xc3\xabn5tw \xc3\xab3p \xc3\xab1ra \xc3\xab1re \xc3\xab1ri \xc3\xab1ro \xc3\xabro1g2 \xc3\xabro3s \xc3\xab2s \xc3\xab3si \xc3\xabs3t \xc3\xab1t \xc3\xabt4s \xc3\xabts3te \xc3\xabve5 \xc3\xabven4 4\xc3\xabzu 4f_ 1fa f3aanb f4aat 3fab fa2bo f3acc face4 f1ach 2fad 2f1af fa3g fal3s fa3m f3ang fant2 fan4t3j fant4s5 2f3a2p f4arm 3fa5se fa2to fa3v 4fb fbe5dw f1c 4fd f3da fda4g f5dan fd1ar fde4k fdek3l fde4s3 fdes5e fdes5l fde5sm fdes5t f2d3in fd3of fdors5te fd4ra f3d4ru fd5se fd3si fd3so fd3sp f4d2w fd3wo 1fe fe2a fec4tr fede3 fe4del f3een 5fees feest5r fel5dr fe4l3ee 3feli fe4lom fe4l3op fel3sp fe3no f4er fe3rab fe3ran fe4r3et fe3rom fe3ron 3fes3 fe4t3j fetu5r 2f3ex 1f\xc3\xa9 3f\xc3\xa8 3f\xc3\xaa 4f1f f5fe f5fi ffs2 ff3sh ff3si f3fu f3g2 fge3 fge5r4 fge5t 4f5h 1fi fi5ac fi4al fi3am fi3apa fi3apo fia4s 3fib fi1ch 5fie 5fig f3ijs 2f1ijz fik4st 3f2il fil4m3a film5on fi3lo 4find 3fini f3inj 4fink 2finr fi3o fi4r fi4s fi5se f5iso f1j fjes5 4f1k4 f3ke f2l2 4f3laa f1laf f4lam f3lei flen4st flens5te_ f4les fle2t flet3j 4flev f4lex f3lez 2flie 2flij f4lik f4lip f4lit f3lok 3f4lor flu4t3 4f1m f1n 1fo 3fob 5foc foe5d foe5ta 2f3of 5fok 2foms fo5na fond5en fonds5l fon5eng fo1no 4font fon5te foo4 fooi5 f3oom 5foon 2fo4p fop5s4 f4or 3fo5re fo5ri 5form for4t3j fo1ru fo3t 2f3oud 4f1ov 3f\xc3\xb6 4f5p4 fpers5te_ fpits5te_ fr4 f4raak_ fraam5 5frac f3rad f2ras 5frau f1rec f3rek 5freq frie4s frie4t friet5j f4rik f4rod 4f3rol f4rolo f3roma frus3 4f1s f2sa4 fs3ad fs3an fs3ar f3sc f5sch f4scr fse2 f4s3ec f4s5ee f4sei f4s3eth fs4fe f2sh fs5he f2si f3sie fs3im fs1in f5slaa f5slac f5slag fs3lap fs2m fs3ma fs4mi fs3mo fs3mu f2s1o4 fs3ob fs3om fs4oo fs2p fs4pre fs4t fst3as f3ste fs5tec f5stell fste4m3 f4sterr f3sti f5stif f3sto f4st3oc f4ston f3str f3stu f3sy 4ft f1ta ft1ac fta4kl fta4p ft3art fter5sh ft3h f1to f5tond f4tont f1tr ft2s3l ft4sm fts3n ft4so fts3p f1tu ftu4r 1fu 2fuit fu4ma fum3ac 3f2un fur4o 3fus 2fuu 4fv fva2 fval3 4f1w4 3fy1 2fz fzet5 4g_ 1ga 3ga_ gaar5tj g4aat 2g1ac 4g3adm g4af_ g3afd ga3fr 4g3afs 4g3afw 2g3a4h 4gal_ ga3la ga4l3ap ga5ler gal3s 4gamb g4a3mi 3gan gan5d 5gane gan4s5t ga3pl 3gar_ 4g3arb ga3re g1arm 3gars 2g3art gar5tj ga4s gas5c gas3i ga5sla_ ga3sli ga5slo gas3o gas3p gas3tr gas5tra gast5rol 3gat gat5j gat3s 4gaut ga5ve g1avo 2g5b 2g1c 4gd g5dac g5dag gd3art gd3at gd5ate g3de g4d3elf g5der_ gd3erv g4d3id gd3im g2din g3dr g5dru gd3sa gd5sp g3du 1ge 3ge_ ge3a gea3dr gea5na gea3q ge4ari ge5au 4g3eb_ 2gebb ge3c ge3d4 gedi3a ge4dit ge5dr ge5dw 3gee4 geest5r geet3a ge3f4 2g3eff ge5g4 gege4s 4geig 2g3eik gei4l5a 5geit geit3j ge3k4a ge3ke ge5ki ge5k4l ge3kr gek4st gek4u ge3k4w ge3lau gel4d3a4 ge3l4e 4ge4lem gel5f gel5k 5ge3l4o gel5si gel3sl gel3sp gel5ste ge5ma 4gemb 4g3emf ge5mo 2g3emp gems3 ge3m4u g4en_ ge3nak gen4az 3ge3ne ge4n3ed ge4nend 4g3engt 3geni gen5k ge1no ge4n4of ge4nog gen5sfe gen5ston gen5stu genstu5r 5genw ge5om geo5pe georke5 ge5os ge5ot ge5p4 ge1ra ger5aal ger5aap_ ge4r3a4l gera4p ger5ape ger5as_ ge5reg ge3rem ge5ren_ ger4i ger5ini ge1r2o ger4of ge5rol ger5slan ger4sli gers5lij ger4sp 4g3erts ge3r4u 3ge1s4 ge3sa ge3sc ge5se ge3si 4ge3sk ge5sl ge3sn ge3so ge5spend ge5sper ge5spo ge5stan ges5te_ ges5ten_ ge3str ge5sw ge3ta get4aa ge5tam ge2th ge5t4i ge3t4j get4o ge3tr ge5tra ge5tro ge5tru ge5tsj ge5tu ge5t4w ge3ui 5g4ev 4gex 5g4ez 1g\xc3\xa9 g\xc3\xa9di4 3g\xc3\xa8 4g1f gfijn5ste 4g3g4 g5ge gge3la gge4r5on gges5ti g4g5h g5gi ggings5 g5gl 2g1h g2het ght4 gh5te g2hum 1gi gids5te gie5ra gier4s gi1eu gi2f gif5r gi3ga 5gigere 5gigste 2gij g3ijs 4gijz gi2m gi3na 4g3inb 4g3inf g5infe g5infr 5ging 2g3inh gin3o 2ginr gi4oc gi2od gi4onet gi2or gip4st 5gir 3gis 4g1j 4g1k gl4 g5lab 3glai 1gla4s glas3e g5lat 3g4laz 3gle_ g5leer glee5t g3len 2g5lep 4g5ler g3les 3gle4t glet3j g5lev g5lice g5lich 3gli\xc3\xab g2lif g5lijs g2lim 3g4lio g2lob 3glof g5log 3glom 4g3lon g3loon g3lop 3g2los g5loz 3g2ly 4g1m gmaat5j 2g1n g3na gn4e gne5g gne5m gne4t3j gnie4tj 4gnu 1go 3go_ 3go2a 3gob 2goc g1och go4d3a god4s3 gods5t 4goef goe1r 2gof go3f2r g4og 4goh go2k 5gom_ go2ma g3oml 4gomz go4n3az 2g3ong go5no 2g1ont g2oo 2g3oor 3goot 2g1op go3pa g4opr g4ora 4go4re go5re_ 5g4ori gor2s gos1 go3tr gou4d5ee 2g3ov 2g5p gpes3 1gr4 3gra 5gra_ graat5j g5rak gra2m g4ram_ gram3a g3ramp gra4s3 5grav 2g3rec 2g3red 5gredi g5redu g3reek g3reel g4reep g3reis 4g3rek 2g3rem gren4s gre4s g4reu g3rev 5gria grie4t5j g5rijd g5rijk g5rijm g5ring 5g4ris grit5s 2g3riv groet5j grof5 g3rok g3rook g3room groot5j 2grou gro5v 2g3rug g3ruim g3rup 4gs gs1a2 gsa4g gs5alar gs3alt g2sc gse4 gs3eco g4s3ed gs5een gs3ei gs3en gs5ene gs3erv gs3et gs3ev gs5he g2s1i2 g3sie gs5is gs1j g3s4ke_ gs3l gs4la gs5laag gs5lam gs5las gs1le g3slep g4sleu gs5lie gs4lin g5sling gs4lo gs5log gs5lok gs5lon gs4lu g4s5ma gs3n g4sna g3snij g4s1o4 g5sol g5som_ gs5ons gs3op gs3p gs5pand g3spec g3s4pel g3s4pet gs4pi g3spie g3spil g5spin_ g5spinn gs5pir gs5pol g3s4pon gs5ps gs5q gs5sc gst2a gs5taal gst5aang gs5tac g5stad g5s4tan g4st3ap g5stat g1ste g5s4te_ g5sted g5stee g3stei gs3tek g5stel g3sten g3ster g5ster_ gs5terr g5sters gs3th g5s4tic g3s4tig gs5tijg g5stof g5stop g5stor gst3o4v g4s3tra gs5trad gs5trak gst5ram gs5trap g5strat gst5res gs5troe gs5tron g4stru g5struc g3stu gs5ty g2s1u4 gsver3 gs5w g5sy 4gt g1ta g2t3ap g3te gte3ro gtes4 gte3st g1to g3tr g1tu 1gu 5gu_ 3gue gu4eu 2guit gu4ni gu2s3 gut4st guts5te_ 4gv g5vo 4g1w g5wa 1gy 4gyp 2gz 4h_ haams5ta haar5sl haar5sp haars5te haar5tj haats5te_ h3afd haf4t3u ha3g ha5ge hal2f1 5hals hal4sto 5halz 2hamp 4han_ han4dr hand5sl han3ga hang5l hang5s han4s3l han3so han4st hap2s hap4se har4ta harte5l hart3j har4t3o4 har5tre hart5sl hat5j ha2t3r hat3s ha3v 4have_ 4hb 2hd h4e 2hea he2ar 3hech he3co 4hee_ hee3g4 hee4k heek3a heek5l hee4l3o heep4s heeps5c heers5tak hee5sto hee5tjes he2f he4i heids5p heis4 hei5tj he2k3a he2kl hek4st heks5te_ hek5sten hek3w he3le he4l3ee he3li hel4m3a helo4 hel4p3a hel3sm he5mo he5ne hen4kr he3n4o 4he5o he4pij he2p3l he2pr he1ra her4aa he4r3ad he3r4au he4r3i herm5eng he3ros hero5v her4p5aa 3herst hert4 herts5te he2ru he5se he2sp he2s5t hets5te_ heu5le 2h3f 4h5g h3h hi5d hie4f3 hielsges5 hie4r3 hie5ren hier5u hie4t5o hie4tr hiet5s hij4sl hik4s5 hi3kw hil3m him4pl him4pr hin5d h3ins hin4t3j hi2p5l 2hir2 his5p hi3tr hit4st hits5te_ hit5sten h3j 2hl h3la h4lag h3lep h3loc 2h2m h3ma h3me h4mer h1n h2na hno3 2ho_ ho3a hoa3n hoboot4 ho3ch hoe4ker hoe4s hoes5l hoe3t ho2f hof5d hof3e ho3g2 ho2ka ho5mo hon3dr hond4s hon3g honi4 ho1no hool3e 4hoom hoort4 hoor5tr 2hoot ho3pa ho1pe ho2p3o hop3r hop4str hor5de 5horl ho3ro hor4st hors5te_ hor5sten hor4t3j ho3ru ho3sa hot3j ho3tr ho4t3re hot4st hots5te_ ho3v 2ho4w how3o 2h1p hpi4 2hr hra4b h4re h5rea hri4 hro2k hrok3o hroot3 4hs h3sa h3sp h3st 2ht h4t1a2 ht3ac h3tal ht3ala h5tans h3te_ h4t3ec ht4eco h2t3ee h2t3ef h2t3ei ht5em h3ten h4ten5t ht5entw hter3a hte4r5o h4t3esk h4tev ht5eve h5tevo ht3ex h2t5h h4t3int h2t1j ht1o4 ht5oef ht5op h4t1r ht5roo ht4sap htse4 ht4ser ht2si ht4sl ht5sla ht5slot ht3sme ht5smij ht4s3o ht3spe hts3pl ht3spr hts5taal ht4s5tak ht4s5tek ht4sti hts5tore hts5trekk ht1u2 ht3w hu4ba 3huiz hul4der hur4t5 hut3j huts5te_ huur5s 4h1w hy4la 3hyp hypo1 4i_ i1a i3aa i4ab i5abi i4ac i3ady i3ae i5ae_ i2a3f4 i2a3g2 i3agr i3ai i5ak_ i3ake4 ia4kem ia3kl ia3kr i3al_ i4a3la i3ali i2am i5am_ i3ami i3an ian4o ia3o i2a1p4 ia5pa i5api ia3sc ia5se ia3so ia4s5po ia3sta i3at ia3t2h i5atri iave4 i5ble iboot4 4ic i3ce 5i4cepa i1cha i1che ichee4t i1chi i1cho i3chr ick5l icos4 ic4t3op ict4s5c i3dam idde4r5a ide3a i4dee_ ider4sp ider4st ides4 idi3a idi5ab i2di5o id4mak i3dok i2dr id3ran id3ru id2s1 id4s3a id4ser ids5i ids5j ids5l id4sm ids5ma id5s4mee id4s3o ids3ta ids5tak ids5tek id4stem id4sti ids5tr id3u4r id3uu idu3w id3w 4ie ie1a2 ie4d3ac ie3de ie4dro ied3w i1ee4 ie\xc3\xab2 ie3fi ie2fl ie3fle ie3fon ie4fr ie4gas ie3ge ie4g5ins i2ek iek3e4v ie4kl iek3li ie5klu ie2kn iek5ond iek4s5n iek4sp ie2ku ie3kwa ie5lan ie5lap iel5do iel5d4r iel4e iel5ei_ iel5k iel3sc ie3ma iem3ov ien4dr ien3ij i3enn i5enne_ ien3s4m ien5sp ien4sta ien4st5o ien4str ienst5ur ieo4 i4ep ie5pen iepiet5 iep5oog iepou5 iep5rel iepro4s iep3s4 iep5st iep5tr ie4pui ie5r4ad ier3a4l ie3ram ie3rap ier3as ie4rat ier5el_ ier5els ie5ren_ ie5ring ierk4 ie3r2o ie4rof ier4sl ier5slu ie3ru ier4ui ie3sf ie2si ie4sl ie5sle ies3li ies3m ie2s3n ie2so4 ie4s3pl ie3sta ies5te_ ie5stel ies5tere ie3sto ie4taa ie5tal iet5ant ie5ten ie3tj ie3to4 ie4t3og ie4too ie4top ie4tor ieto5re ie4t3ov ie5troe iets5te_ iet3ur iet3uu ie3twi i3ety ie2u ieu3k i1eur ieu5r4e i1eus ieu3sp i1euz ie3v ie3z iezel5a i3\xc3\xa9s i1\xc3\xa9t i1\xc3\xa8 i4\xc3\xabg i4\xc3\xabva 4if if3aa if3ad if3l if3r if4ra if4taa if4tar if4tre iftu5r if3ui ig4a ig3aa ig5ac i5gal i4g5av i3ge ige2s ig3esk ig3ij i4gind igi3o ig5no i3g4om ig4op igs4 ig3sk ig3sl ig3sp ig3sto ig3un i1h i3i i5ie ii2n i5is i2j 4ij_ ij5a ija4d 4ijd 4ije ij3ef ij3ei ij3el ij5e4n3 ij1er ij3i 4ijn ij3o4 i3jou 4ijso 4ijsp 4ijst ij5te ij4tr ij5u 4ijvo 4ijzo 4ik ik3aar i4kam i3ke ik3ef ike4ra iket3 i2kij i3kl ik3la i4k3lo i4k3lu i2k4n i4k5na ik5o2g i3kom i2koo iko2p ik3ope ik3ord i4kr ik3re ik3ri ik3ro ik5se ik5si ik3s4l iks3n ik3sno ik3sp ik4spa ik1st ik5sta iks5te_ ik1w ik5war i1la i3la_ il4aa il5aan il3ac il4act il3ad il3af i3lak il3al i5land il2da il4d3r ilds4 4i3le il3een ile3l i4l3erv ile4t ilet5r ile3u il3e4ve ilevin4 i4l3e2z i3l\xc3\xa9 il5f i3li ilie5g ilie5t il3ink ilk4l ilk3s2 illa3s 1illu il2m ilme2 il4min il4mo i1lo ilo4ge il3ond i3loo i5loon il3oor il1or ilo4re ilo4ve il3s2h ils5j il4sti il2th i1lu 4im_ i2mag i4mago im5au imee4 im3een i4m3em im3enc im3ex 4imf i2m3of im3op im3org im5pa im4s3oo im1st i3mu in1ac i2nau ind4aa in4dene ind3sc ind5ste 1indu in3e4de in3edi in3eed inek4 ineo2 inet4s i5neu 1inf in2ga4 ing3aa ing3ag ing3al 3ingan ing5lo in2go in4gr ing4st 4ini_ i3nie ini5on ini5sl ini5sta 4inkj in2kn 3inkom in4kri 3inno i1no i3noc i3nod in4o2g in1on ino5pe ino3s4t in3ov 1inri 4ins_ in5sch in5se in3sl in3smi in3so in1sp in5spo in5sten in5swi in4t3ap in5te intes5 in3th 1int4r i1nu inuut3 4i1o io5a ioas5 io5b i3o1c i3ode ioes3 io3f io3g2 i3ol i5ol_ i5olen i5olus i3on ioneel4 i5ong ion4s3 ions5c i5oo i2op4 io3pa io3pr i3opt io3ra i3ori io3ru io4s i3os_ ios3c i3o5se i3o5sf io5sh io5si i5osi_ io5so io5sp io5s4t i5o5su i3osy i5othek i3oti iot3j i5otorens io3tr i2o3v i3ox i2oz i1pa i2p1ac ip3af i3pap i1pe i4perw ipe4t3j i1pi ip1j i1pl ip3lu i1po ipo4g i1pr i2pri ip3ru i4ps ipse4 ip4si ip4sle ips5te_ ip5sten i3ra ira3k i1r2e ires4 ire3st i3r\xc3\xa9 i1ri irk4s i1ro iro3p iro5v ir2s ir4sc ir3sp ir5ste irt3r i1ru 4is i1sa i2saa i4s3ad is3a2g is3ap i2s1ar i2s3as i4sc i5scha i5schr is5col i5scoo i5scope ise2d i4s3ei is3ell is5eng i4s3erv ise3st iset3j is4fee is4fer i4sh is5ho isi2d i2sij i2s3im is3ja i4sk is3ka is3ke is3l is5lag is5las is5le i4s5m i4s3n is5ned is5nij is5no 5isol i4soo is4oor iso3s i2sot is3ott is3p is5pas is2pi is5pl is5q is5sa is5so i2s3t is1ta i3stak ist3ap i4s5tas is4tat is5terd is5tere is4th is1to ist5ong i3str is5tri i5stro_ i3sty isu2m i5sy 4it i1ta it3ac ita5d it3een i3ten i3ter ite5rei ites4 ite3st ite4t it3hie it1ho it1hu it2i itie5st i4tj i1to it5oef it3oog i3t2ou i4to4v itper5st it3red it1ru it3sje it3sli it3sop it1sp its4te it4ste_ it4too i3tu it3w 4i3u2 iu4m ium3a4 ium3e ium3o iu3r i3ve iven5s ive3re i5w iwi2 iwie2 iwit3 4iz i3ze ize3t \xc3\xae3 \xc3\xaet4 1\xc3\xaf 2\xc3\xaf_ \xc3\xaf5a \xc3\xaf1c \xc3\xaf1d \xc3\xafe4n3 \xc3\xafe5nen_ \xc3\xaf2n3a \xc3\xafns5m \xc3\xafn3sp \xc3\xafn3u \xc3\xaf3n4ur \xc3\xaf3o \xc3\xaf3ri \xc3\xaf3ro 4\xc3\xafs_ \xc3\xafs3a \xc3\xaf4sc \xc3\xaf5sche \xc3\xafs3l \xc3\xaf3so \xc3\xafs3t \xc3\xaf1t \xc3\xaf5z 4j_ 1jaar jaar5tj ja3b 2jaf 1jag jagers5 ja3kn ja3mi jan4s3l jan4st ja3pl ja1po 1jar jare4 1jas3 jas5p 3jaw jaz4 j3b jba4l jbe4l3i j1c jda2 j2d3aa jd3an j4d3ar j2d3ee jde4n3e jden4s jdens5p j4d3erv jdes4 jde3sp jde5st jdi3a j2do4 j3dom jd5on jd3op j3dr j4d3re j4d1ri j4d3ro j4d3ru jd5sei jd3spo jd1st j2d3u jd3w j3d4wan jea4 3jeba je3ch jec4ta 2j1ee jel4 je3la j1en je2na2 je3n4o 5jep jepiet5 je3ro jers4 jer3sp je4s3 3jesa 5jesal je5sch 3jeskn jes5l jes5m jeso2 jes5pa jes4pr 3jesr jes5tr 5jesvo 3jeswa 3jeswi je2t jet3er jeto4v jet5st 5jeu 3jevr 2jew j3ex j2f1a j2f3ei j2f1en5 j4f3ij jf3ink jf3l j3f4lat jf5le j2f3o4 jf3r j3f4ra j3f4ro jf2s jfs3a jf4sc jf4s3er jfs5f jfs3l jfs5m jfs3n jfs3p jfs5pa jf3st jf4sta jfs5tak jf5stan jf4stel jf4sti jf4s5to jft2 jf5ti jf5tw j1g j3ge jger5sl j2g3l jg4s5e jg3sn jg2st jg3s4te j3h jif3 j3ig jin3g ji5t2j j3j 2jk j3ka j4kaa jk5aard j4kar jk3arb j4kau j4kav j2kij j2k4l j3klaa jk5lak jk5lap jk5las j4kle j5kled jk5les jk5li j3klon jk5lop jk5luc j2kna j2k3of j4k3o4l j2k3on j2ko4p jk3opb jk3ope jk3opl j3kops j2kr j4kra jk3raa j5kran jk3re jk3ro j4k5ru jk3slo jks3pl jk4sta jks5taak jks5taal jks5tak jk5stan j2k3ui jk3w j3k4was j1la j3laa jl5ana j1le j2l3ef j2l3el jl5f jl3ink j1lo j2loe j3lu j2m3af j5m4ar j3mi jm3op jm3s j2n1a4 j4naa jn5ac j3na5g jn3ak jn2am jna5me j3n4an jn5d2r j2nef jne4n j4n3erk j4n3erv jn3gl j4n3im j4n3ink jn3k4 j2n1o4 jn4si jn2s3l jns5lac jn3slu jns5or jn2sp jns3pl jn1st jn4ste_ jnt4 jn3tr joet3 4joi jol4e jo5lij j3om 1j4on jone2 j3op jo3pe jo3ra jo3ru j4ou 1jour jou5re joy3 j3pa j4p3ac jp3arm j1pe j2p3em jp3ij j1pin j3pio jp1j j1pla jp3li j1po j2p3or j4pre jp3ri jp3rok jps4 j3r jraads5 2js js1a j4sef j4s3ela j5seli j4s5em j4s3e4r j2s1i js5in js4ir js4le js3lee js3li js5lie js4me js5mel js5met js3n j4s1o4 j5soe js3ol js3pac js3par j3spe js3pl j4spo js3poo jspoort5j j5spor j1sta j4star j2s3te j3stee j3s4tek j3s4tel j5s4teng js3th js4tij j5stond j4stoo js3tou jst5ran j5strok j2su j3sy j3taal jt3aar jt1ac j1tag j3tak j3tan j3te_ jt1h j3toe jt3opt j3tr jt3ra j5tred j5tree jt3rei j5trek jt3ri j5trok jt3rot jt1s j1tu 1j4u ju3d 4jum jus3 juve5 j3v jve2n jver4s jvers5p jve3t jvie5s j1w jze4r5o 4k_ 1ka k3aanb k3aanl 5kaart kaart5jes kaats5te_ kabe2 ka3bo 2k1ac kade4t5 4k3adm ka3do k3adv 2kaf k3afd k4aff ka3fl 3k4aft ka4ga k3a4gen k3ah ka3i 2k3alb ka3le 5kalf kalf4s5 ka3l4i kal2k kalk3a 4kalt 5kalv 3kam 4kamb kamen4 kame4re kam4pa kam4pl kam4pr ka5naa kan5d 4kang kan4sl kan4st kan4t3j kao3 5kap_ ka3pe kap3l ka1po 4kappa ka3pr kap3s k3arc k4a3ro kart4 4k3arti kar3tr ka4s kas5c 4k3asi kast3o4 ka3str kast5ra ka5stro kas3u4r kat5aal ka4t5a4le ka4tan kati4 ka4t5io kat5j k3atl kato4 ka4t3og ka5tr kat3s 2k1aut 2kavo 2k3b 2k1c k3ca 2k5d kdi3a 1ke k4eb 2k3ec ke4di 2k3een kee4p5l kee4r keer4s keers5to 2kef 4keff k4ei_ k4eie k2eil kei3s4 kei5t ke4lap kel5da kel5dr ke5lel 4kelem kel5f ke4l5int ke4lom ke4l3op kel3sp 5k4ema 2kemm 2kemp ke4n3an ke4nau ken4ei_ ke5nen ken5k ke2n1o kens5po kepie5t 4k3e4q ke3ram ke4r5enk ker3kl ker4kle ker4kn ker4k3r ker4ku ker4kw ker4n3a ker4no ker3o4 ke3ros ker4sm ker5spe ker4spr ker4sta ker5ste_ ker4sti 4k3erts 4kerva 4kerwt ke2s ke3s4p ke3sta kes5ten ke3sto ke5straa k2et 5ketel ke2t3j ke3to ke2t3r kets5te_ ketting5s 4k3e2tu ket3w 3k2eu keviet5 ke4vl 4k1ex 2k3e2z 2k1f 2k3g 2k1h4 k3ho khoud5s 1ki 2ki2d 4kied kie4sp kie4s4t kie5ste kie4tj kieze4 2ki\xc3\xab kijk5l k3ijs 4kijv 4k1ijz ki3lo kilo5v ki3na 4kinb 4k5indel kinds5te_ 4kindu kin3en 5king kings5l 2k3inh kinie4 k3inko 4k1inr 2k1ins 2k3int 4k3inv ki3o ki2p3l ki5se ki3s4p kit4s kits5te k1j 2k3ja k3jew k3jo 2k3ju 4k5k4 kke5nei kker4s kkers5ten kke3st 1k2l4 5klac k3ladi kla2p1 k4las 5klas_ 5klass k3last k3lat_ k3latt 3k4lav 3k4led 5kledi 5kleed k5leer_ 4k5leg 5klem 4k5len k3ler_ 4klera k3lers k3les 5k4le4u k5lic 4klid k3lig 2k3lij 4klijs k4lim kli4me 3k4lin k5lob 4klod 3klok 5klok_ k5loka k3loke k3lood 5kloof k3lope 5klos klots5te_ 2k5loz 4kluc 4kluih 2k1m k3ma 1k2n4 4knam k4nap 3k4nar 5knec k5nem kni2 5knie_ knip1 4k5niv 3knol k3note 2knum 1ko ko4bl k4oc 2k5oct 4k1oef 5koek koe4ket koers5p koes3 koe3tj koets5te_ koge4 5ko5gr 3k4ok ko5ko kol2e2 kolen3 2kolm 5kolo ko4ly ko2m3a 4komg kom5p k3omsl kom4str 4komz konge4 k4oni k3ontb kon4t3j kon4t3r koo4 2k1oog kooi5tj koot3 koot4j ko3pa 4kopb 4k3opd ko1pe ko5pen_ 4kopg 3ko5pi 5kopj ko2pl 2kops 4kopz 2kord kor5do 2k1org 2k3ork kors5te_ kor4ta kor4t3o4 kor4tr ko3ru 3k4o4s3 4k3os_ kos4j ko5sjere koso4 4koss kot4st kots5te_ 4k1ov 4k3ox 2k3p kpi3s k4plam kpren4 1kr4 3kra k5raad kraads5 kra4b 4k5rad k5rand 2k1rea 2k3rec 4k3rede k4ree4 k5reep kreet3 k3ref k2reg 2k3rel 2k1ric k3rijk k3rijp krij4t krijt5j k4rit k5ritm kroet5j 2krol k4ron kron3t 5kroon krop3a kro4to 2krou k3ro5v 3k4ru k5rub 5kruis kru4l krul5a 2ks k3sal ks3alm ks3an ks3ap ks1ar ks3as ks2e2 k5sec ks3ed ks5ei_ ks3ep k4serv ks3et kse3v ksges5t k4si k5sil ks1in k5sis k5sit ks1j k1sla ks3lab k4slan ks3le ks3li k4smo ks3na ks3no ks3nu kso4 ks3om k5song k2s3pa ks5pand k4spar k1spe k3spi ks3poo k5spor ks3pot ks3pru k3spu ks5s ks4t k1sta k5staan k5staat k1ste ks5tec k4st3ed k3sten ks5tent kste4r kster5a k4sterr ks3th k3sti k3sto ks5ton k5stoo k4stop k5stot ks5trek ks3tri k3stue kst5uit k1sy 4kt k1ta kt3aan k3taar ktaat5 kt3ac kt3art k3te kte2c kt3eco k4tex kt1h k5tij kt3im kt3in k5tit kt3j k1to kt3om kto4p kt4or kt5ord kt5org kt5ori kt3o4v k1tr kt3res k5troll ktro3s k3tu 1ku ku5be kui2f 2kuit ku5k ku5me 3k4u2n 4k5uni 5kuns ku2r ku3ra ku3re kur3s 3ku2s kut3 2k\xc3\xbb 2kv k3ve kven4t3 5k4waal 2k3wac k2wad k1wag 5k2wal 5k2wam 3k4war k5ware 4kwat k3weer 2kweg k1wei 5kwel kwen4st kwens5te_ 4k1wer 5k2wes1 kwes5tr 5kwets k2wie k3wijz k4wik 2kwil 2kwin k3wind 4k1wo ky3 2kz 4l_ 2laan 4laand l3aanh laa5re laar5tj laat5sta l3abon 2lac la4ca 5lach_ la4cha 5lache lach5te lacht4s l4aci la2d5a la4det 2ladj 4ladm la2d3o 4la2dr lad5s la2du 4ladv 3lae3 2laf la2fa la3fl lafo2 4l3afs la2g3a la4gent la2go lag3r lags4 lag5sa la2k3a la4ki la3kr 2lal 3lald lal4o lam4p3j lam4p5l lam4po4 lam4s3p l4an 4la2na lan3ac 3land lan4da land5aa lan4d5oo lan4d3r lands5te_ la4n3ec lanel5 5lange_ lang5l lang5sp lang5sta lan4k3a lan4k3l lank3w 4lann la4nor lan2s lans3l lan4st lan4t3j lap3ac la3pi lap3l lap3o4 la5pre la2p3u la3q lar3da 2larm 4larm_ lar5st las3a4 lase4 la2si las3to 5lastt la3te la4t3he lat5j la4t3ro 4lats4 lat3sl 2lau 5lauf lau4st l2auw la3v lava3 la4vo 5law l4az 4lazi la4zij 2lb4 lber4t lbert5j lboot4 2l1c lce4l5 4ld ldaat5 l2d3ac ldak4 ld3alf l4da4r ld3arc ld3ari ld3art l2dau ld3eco ldeks5 l4d3e4z ldi3a ld5oef ld3oli l2d3om l2d3on ld3oog l4do4p ld3opi ld3ord ld1ov l3dr l5drade ld3ram ld5rang ld3rat ld1re l5dree ld3rij ld3roe ld3rol ld3rom ld3rui ld3sa ld3sl ld3sma ld5sp ld5ste l3du ld3uit ld3uu ld1w le2a le4ane le3at leba4l lecht5st lee4 leeg3 leege4 leeg5i 4leekh lee5l leem3 3leen 4leep leep3o lees5e lees5l lees5po 2leeu 2leff lega5s leg3ec leg3l le4go le5go_ leg5s 3leidi 4leier 4leig lei5tj leit5s le4ko4 4leks lek5str 5leld le2le 5leli l3elp le4n3a4d len3a4k 3lene le4n3e4m len5kw le2no len3op len3sf len3sm 4l3en5th le5o 4lep_ 3le1ra le4r3a4k le5rei le4r3e4v ler5g4 le3r4o le4ron ler4sl ler5spo 4l3erts le2s le4sa le3sc les5et le3s4h les3m le4sp le3spe 4l3essa les3t les4ta les5taa le5s4tel le3str le4s3u le4t4h le3tha let4i le5tin le4top le2t3r le3t4re let4st lets5te_ le2t3u leu3ko leum3a leur4o leus4 leu5ste 5leuz leven4s levink5j 4lexc 4lexp l2fac l3f4ag lfa3s l2fau lfe4n l4f3end lf3ene l2fe2z lf3li l3f4lo lf3lu l4fo l5foe lf3o4l lf1op lf5ord lf5org l5fou l1fra l3fru lfs5ei lf4sl lfs3le lf2s3m lf4so lft4 lf5ta lf5tw lf3uu 2l1g l5gaar l4gap lge4n5a l3gla l3g4oe l3gog l3goo lg3s4 lgse5 4l1h 1li li3ag li3am licht5st 3lid 5lid_ 5lidm lid3s4 lie4g3a lie4gr lie3ka lie4sp lie3s4t lie4to li3eu 3li\xc3\xa8 3lift l4ig li3go lijk3a lij4m3a 4lijmv 5lijn 4lijp 3lij2s lijst5a 4lijt 4l3ijz li5kr lik5sp li4kw li3kwi lim4a li3mi 2limp lim4p3j lin4da 4linf 4l3inh li5ni lin4k3a 3linn l3inna 2linr 2l3ins lin4t3j l3inv 4linz li3ob li5om li5o5s4 li3ot li2pa li3pi li2p3l li5see 2liso l5isw li1t2h lit3r lit4sa lit4sl lit4st lits5te_ lit5sten 2lix 4l1j2 lk3af l4k3ank lk3arm lk3art l3ke l4k3ei l4k3em lken5e lken4s l4k3ep l3ki lking4 lk3laa lk3lag l5klas l4k3lev l5klim l3ko l5koe lk3ont lkooi5 lk3opb l5kor l5kou l5kra l2kre lk3rep lk3res lk3rij l2k3ro lk2s lk4se lk4so lk3son lks3oo lks5taa lk3ste lks5tel lks5tr l4k3uu l3kw lk3wi l3ky 2l1l l5la lla3d lla3g4 lla5tr ll3eig lle3k ll4el lleo4 ller5on lle3s4m lle5th llevie5 l3l4i l3lo llo5f l5lon ll3sh 2lm l3maa lmaat5 lm3a4ca lm3af lma5\xc3\xaf l3mak lm3arc lm3art lma3s2 lm3au l3me l4med lm3edi l4m3ep lme2s lme5te l3mi l3mo l5mog lm3oli lm3or lmro4z lm5sc lm3sh lm3su 2l3n lni4s lo3a 2lobj lo4boo loe4d5a loed3r 4loeg loe4gr loen4st loens5te_ 4loes l3oeu 5loev lo4faa lof5d2 lof4s4 log4 log5l lo3go 5logr log2s3 lo4k3ar lo2k3o2 lo4kr lo2ku 2lo2l lo3la l3oml lom4p3j lom4p3l l3omt l3omv 4lomz 3lon_ 4lond 5long lon4gaa lon4g3o lon4gr lon3o 2lont lon4t3j 3look loo5pi 3loosh loot3e lo3pa 4lopb l3opd lo1pe 2l3oph 2l3opl lop4la 2lopn lo3p2r 4lopt 4l3opv 4l3opw 2lor 3l4or_ lo3re 4l1org lo3ri l4o1r2o3 3l4ors lo3ru lo3spe lost4 los5to lo4s5tr lo5s2u lo2ta lot3a4l lo4tet lo2t3h lot3j lo4tof lot3r lou3s lo3v 2love 3lo5z 4lp l1pa l3paa lp3aan lp3a4g lp3am l3par l3pas l1pe lpe2n l2pex l3pi l5ping lp3ins lp3j l1pl l3p4la l4plam l1po lp3of l3pom lp3on lp3ope l3pos l3pot l1pr lp3ram 4l3r lraads5 lrus5 4ls l4saa ls1a2d ls3a2g l1sam ls3an l3sap ls3as l2sat ls4cor ls4cu ls3eco l4s3e2d l4sef l5sen l4s3e2p lsge4st l3s2hi l3si l4s3im l4sin ls3inj ls3ink ls3int ls4j ls5ja l3s4kel l3s2ki l1sl l3sla l2s4le ls5led ls5lee ls5leg ls5len l2s3li ls4lin l3slo ls4maak ls4med ls4mee l3smid ls3na l3sne l3sno ls3nor l3soc ls3of l3sol ls3op ls3o4r ls1ov l1sp l2spa ls3pac l3span ls3par ls4pe l3spi ls3pli l3spoo l4s5poot l3spor l2spr ls3pra l1st l3sta l4staf l4stak ls5tak_ l3ste l4stek l4stev ls4ti l3sto l5straa ls5trak l5strat l3stu ls5ty l2su l3sur ls3us l3sy 4l1t lt4aa lt1ac l4tam l5tame l5t4an lt4han l4t3hi l2t3ho l3thu lto4l lt3oli l2t3o4v l3tr ltra3s lt3rug lt3sl lt3sp lts5te_ l3tu lu4b1 lub5e lub5l lu1en 3lui_ 5luia 5luid luids3 5luie_ 2luit luk2s luks3t lu3na 3lunc 2l3u2ni lu3sta lu3ta lut3j lut4st luts5te_ lu3wi lven5s lvera4 l1w 1ly ly5i ly3st 4lz lzooi5 4m_ 1ma maas3 maat5st m3act 2m3adv ma5esto m3afl ma3fr 2m3afs 4m3afw m4ag ma3gl ma5go ma3gr ma\xc3\xaf4 ma5ka ma5ke 5ma3k4r ma3kw ma3l4a ma5lac ma4l5ent mal5st 5m4an_ man3ac m3anal man5da man5do mand4s 5m4ann ma5no 5man2s man4se mans5ee man4so mans3p man4s3t mans5ta man4th mant4r ma5pa ma3pr ma3q m4a5ri mariet5 5m4ark mar3sh mar4s5t mar5ti ma1so ma3s4po 5mass ma4ste ma3str ma5ta 5mater mat5j ma4tom ma3tr mat4st mats5te_ ma3v 4mb m5bl mboot4j mbo5st mb4r 2m1c 2m1d m5da mdi3a mdis5 m3do mdo3p m3dr m3dw 1me me1c me5de 5media 5mediu mee5g mee3k4r mee5las mee3lo mee5re mee5ri 5mees meest5al mee5stov mee5str m5eg_ me3g2a mega5s m5egd m5egg m5egt me4i mei2n mei5tj m2el me4l4as mel5as_ mel5dr mel4ko mel4kr 5melo mel3s4m me4mi 3men m4en_ me3na men4as meng5ra men5k me5nor 4menq men4s5uu men4t3j ment3w me5nu me3p2j 2m3e2q me1ra me4r5aak me4r3a4k me4r4am mer5ante me4rap me3rau me4rav mer3ei 5merk mer4kl mer4kn mer4kw mer5oc me5rong me3roo 4m3eros me3rot mer4si mer4sl mers5m mers5ta me2ru4 m4es me3s4h me4s4l mes5li me5slo mes3m me3so me4sp mes3pa me5spe me5spot me5stel mesto4 mest5ov me3stu me5ta5n me3t4h 3meti me5tr mets5te_ meve4 m3e4ven 2mex 3m\xc3\xa9 3m\xc3\xa8 3m\xc3\xaa 2m1f mfa3t mf4l mf3li mf5lie m5fo 2m5g mger4 2m1h 1mi 3mid 4mid_ 5midd mie5kl mie3st 4m3ijs 4m3ijz mi3kn 5mili mi3lo mimie4 m3imp mi5nar 2minf 5ming 4minh 2m5inr 2m3ins mi5nu 4m3inw m2is mis5f mi2s3i mi3s4la mi4st mi5stra mis5tro mi3t4a mi1tr mit4st mits5te_ mit5sten 2m1j 2m3k2 mkaart5j 2m3l 2m1m 2m1n m5na 1mo 5mo_ mo3a 5moda 5mode moed4s 2moef 5moei moers5t moe2s moes3p moes4te mog2 5moge mogen4s mo3gl 4mok 5mole 2moli mo4lie mol4m3a 4molt 3mom 4m3omv mond3r mo5no 5mons mon4so mon5ta 3mooi 2mop mo3pa m1ope m4opp mop4s mo3ra mo3r4e mo3ro mor4sp mor4st mors5te_ 5mos mo5sc mo4s5l mo3sta mo3t2h mot3j mot3ol mot4st mots5te_ 2m3oud 5mouw mou4wi mo3v m3ox 2m1p mp3ach m4p3af m5pan mp3arm mp5arts m4p3ec m5pen m4p3erv mp3ins m3pl mp3lam m5plan mp3leg mp3lei mp3lev mp3lie m4plu mp5olie m5pon mpon4g mp3ope mp2r mp3rec mp3red m5pres m4ps2 mp5sc m5p4se mp3sh mp5su 2m1r 2ms m3sam ms3ana ms3ap ms2c ms3co ms3cu ms2j m3sje m1sl m2sle ms3len ms3lie m3s2m ms3ma m1sn ms3nee mso4 m3sol ms3or m3s2p ms4t m3sta m1ste ms5tec m5stel m5sten m1sti m1sto ms5toc m4s5ton mst5s m3sy 2mt m1ta mte5re mtes4 mte5sta m1th m1to m3tr m1tu 1mu mu5da mue4 5muilde_ 2muit 2muk mul3p mu2m3 mu3no munt3j mu3sa mus5ta 5mut mut3j muts2 muts5te 3muu 5muz 2mv mvari5 mve4 mvee3 mver3e 2m1w 1my my3e 2mz mze4 mzet5 4n_ 1na 3na_ 3naal 5n4aam 4n1aan 2naap n4aar_ 4n3aard 5naars naars5tr naar5tj 5naast 5naat n3abd 5nabe 2nac na2ca nacee5t n2aci 3naco 4n3act na5d4a nad4e 3nade_ 5n4a5den 3nades 3nadi 4n3adm na5dra 2n1adv 5nae n3a\xc3\xab 4n1af na3f4lu n2a3g4 na1h 3nai 3na\xc3\xaf n2ake na3k4l na3kr n3alb 3n4ale 5nalen 4n3alf n3alm 2naly 4nalys 3nam 4namb name5st n4ami n3amp n3a2na n3ank 3nant 5nant_ 5nante n5antenn nan4t3j 2nap nap3ac 3na3p4l na3p4r nap3s nap5st 2n1arb 5nares 2n3arg narie5t 2n1arm 3naro 4nars nar4st nars5te_ nar5sten 4n1art nas2 3na3sa na1s4l na1sp na3sta na3stu n4at_ 3n4ati nat5j 4n3atl na3to nats4 nat3sp 5nau_ 5naus 2na3v 5naven 3navi 3nazif na4zij 2nb nbe5st nbe5t nbots5te_ 2n1c n3ce nces4t n3che ncht2 nch5tr nch3u n5co 4nd n5da_ nd3aan nd5aas nd3abo nd3act nd5adel nd3adr ndags5p nd3alf nd3alm n4d3ana n4dap n2dar nd3art n4das nd3ass nda3st n4dav n4d3a4z n3de n4d3edi n4d1ei nde5laa n4d3emm n5den_ ndera4 nder5aal nder5al nde4r5an n4d5e4rec nder5in_ nder5og nde4ten ndi3a ndie4tj n4dijs nd5ijs_ n4d3ink ndi3o n3d2ji n5do_ n5doc n4d5of nd3oli nd3omd n4don n5dona nd5ond n5dons nd3ont nd3oog nd3ope nd3opp nd3ov nd5rap nd3rat nd1re nd4rek n4dres nd3rot nd3rug nd3s4cu nd4sec nd5set nd3s4i nd3sjo nd4sm nd3sp nd4spo nd4spra nds5taal nd3su nd3uit n2d3u4r nd5ure n4d3uu nd1w n3dy 1ne 3ne_ ne5ac ne3am nebe4s 3neck ne2cl ne4dit ne3do n3edu ne5dw nee4 4need nee5k neel5d neel3o 3neem 4n1een nee5ri nee5se neet3a neet5o neet3r neet5s 4n1eff ne3g2 ne4gel negen5en nege4re 4n1ei 5neien n5eier n2eig 5neigd 5nei5t ne4k3r ne2la 4nelem 4nelf 3nem 4n3emb 5n4eme 4n3e4mig 4n3emm 4n3emp ne2n 3n4en_ 5nenb 5n4end_ nen5do ne4n5enk ne4ni ne5nig nen5k4 nen1o4 5nenp nen5t4a ne5oc ne5ok ne5om neo5p ne5os ne5ot nep3ag ne3pe nepi3s ne1ra nera4d 3n2e5re n3erfe 2nerg ne4r3id ne3ros ner4sl ner4sp ner4st ners5te ner3u ne3ry 3nes ness5a ness5t ne3sta nes3te nes4tei ne5s4tek ne4ter net3on net4si ne2u 4neum ne3ums neu5ste 2nex 3n\xc3\xa9 2n3f 2ng ngaat5j n2g1a2d ng3af ng3ana n4ga4p n2gar nga5sl n3gav nge4ad n4g3een ngels5te_ ng3emb n5gen nge4rap nge4ras n4giger n4gigs ng3ij n4gind ng3ink n4g3ins ng4l ng5lad ng5lam ng5lan ng5led ng5leu ng2li ng5lin ng5lop n3goe ng3of n3go\xc3\xaf n2g1on ng5oor ng5op ng3ore ng3org n3got n3gr ng3rac ng3rad ng3rai n4gras ng5rass ng4red n4g4ri ng5rie ng3rij n5gron ng3rui ng2s ng4se ngs5lop ngs5lu ng4s5ne ngs5tak_ ngs5take ngs5trek ng5stri ng3uit 4n3h nhek5 1ni n4i2d nie5kle ni3eri nie4s3p nie4tr 3nieu ni4g3ee nig3ra nij3f nij3k 2n3ijz ni5kr nik4s niks3p 3nil 3nim_ 5nimf n3imp 2n3in_ n3inb 2n1ind 2ninf ning3r 2n3inh n3inj 2ninr 2n1ins 2n1int 2n3inv ni3o ni4on_ ni4one ni5or ni5o5s4 nip3l 3nis ni4sau ni4sel ni4s3ev ni3sfe ni2s3i ni4sl nis5n ni3sot ni5stel nis5to ni3t2h ni1tr nits4 n1j4 n3je njes4 nje5sp nje5st nje3t 4n1k nk3aan nk5aard nkaart5j nk3af n5k4am n4k3arb nkar5s n4k3asp n3kef nk3eff nk3emp n3ken nken4e nker5ku nk3id nk2j nk3lad nk3lod nk3luc nk3lus n2k3na n3kne n4ko4g nk3oge nkoot5 nk4ra n4krim nk3rol nk5se nk5si nk3sl nk3s4m nk3sn nk4s5o nk1sp nk1st n4kw nk3waa nk3wez nk3wi 2n3l 2n3m4 n3n n5n2e nnee5t nne3ne nnepo4 nne4p5ol nne5te nnet4j nn4i nning5r nnoot5 nno5v 3no_ 1noc 1no3d 2noef noen5s noes3 noet5s n5offi n3o2ge n5ogi 1nogr 3no\xc3\xaf no3kl no3k2w no2li 1nolo 1nom 4n3om_ n2oma n3oml n1oms n3omv 2n3omw 2nomz 3n2on_ 3n4onb 3nonc 4n5ond n4o5ni 4nont 3nood 4n5oof 4n1oog nooi5tj 3noot3 noot4j 3no3pa no4p3as 4n3opb no1pe n1opg n5opleidi no4poo no4por 2nops 2n3opz 2nord no3re 2n1org 1norm 4norr 3nors 3norz 1nos no3sf no3sn no3sp 1not 3nota not5a4p 5noti not3j not3r 3nou_ no3v 3nova no4ve 3nox 3noz 2n1p npers5te_ npi4s5 npoor4 npoort5j n3ps 2n3r nraads5l n5re n5ri 2ns ns3a4d n3sag n1sal ns3alp n1sam ns3an n3sanc n1sap n3s4cal n5scho ns4ci n4sco nsee5t n4sef nse4g ns5ege ns3eis ns5emp n3si ns3idi n2sin n5sing ns3inj ns3ink ns3int n1sjo n1sl n5sla_ n3s4laa ns5laag n5slag ns5lap_ ns5lapp n4sle n5slep ns4let n5sleu n5slib ns3lie n5s4liep n5slim n5slip ns5lot_ ns3m ns5mac n3s4me n3smij n3smol n4smu n1sn n2sna n5sne ns3nod n4snoo n4snot n1so n2s3ob n2sof n3sol n2son ns3ong ns3onz ns4opp ns4or n2s3ou ns1ov n4s3paa ns3pad n1spe n5spee n5spel ns3per n4spet ns4pi ns1po ns3pol n4spot n1spr ns5q ns5s ns4t n1sta nst5aang nst5aans nst3a4g n3stal n3ste ns5tec n4st3ei n4s5teko ns5teks n5sten_ ns5tent n5ster_ ns5tes ns3the n1sti n3stig n4stijv n1sto nst5oef n4ston n3stor nst5rade n5stree ns5trekk ns5troe ns5trog nst5roos ns5ty ns3uil n3sy 2nt n3ta n5taal n4t5aard ntaar5tj n5tab nt3ach nt4act nt1ad nt3aga n4t3art nt4as n5t4at n3te n5tec n4t3ei nte4lo n5tem n5te2n nte5nach ntene5ten nte5rad nte4rof n3t\xc3\xa8 nt3ha n4tho n5thol n5tig nt3inw nt4jo n3to nt4og nt4ol n4t5oli n5ton nt4oo nt5oog n4top nt3opl nt3opm nt3opt n1tr nt3rec nt3rei nt3rel ntre4s nt5ribb nt5rij n5troos nt4rou nt3rus n5try nts3a nt5slu nt1sn nt4sno nt1sp nt4spr nts5pre nt1st nt5ste n3tu n4t3uit ntu4n n5twijf n5t4wis 3nu_ 3nuc 3nue nu3en nu3et 4nuf 2nui 4n3uil nu2lo 3num nu2m3a 5numm nu2n 3nunc n3uni 2nu4r 3n4u5ri nu5ro 1nus nu4s3o nu3tr nut4st 4nuu 5nuut nuw5a nu2w3i 2nv nve5na 2n1w nx3 n3xe nxo4 1ny 4n3yi 4n3yo 2nz nzet5s 3\xc3\xb1 4o_ 4oa o3aa o2ad o3af o1ag o3ah o3ai o1al oa2m o1a2n oa4tiev o3au o3av o3ax 2o3b 4ob_ obal4 obalt3 3obj 1o4bli ob5oor o4b5o4r 4obr 4oca ocaat5 5o2cea o3cha o1che o3chi o3cho o3chr ocke4 4o3co oco3a oco3s4 oc3t4 od5ac oda3g ode4m5ar ode4mo ode5re odes4 odi3a o5dru od5sc od5sei od3s4i od2sl ods5lam od5slan od3sli od5smak od4s3o od3spo od4spr ods4t od5sta od4ste ods5te_ od5stek od5sten od3w o4e oe5an oe3as oe2d3a oeda4d oede4n oe2d3o2 oe4dr oed3re oed3ri oed3ro oe2d3u oed3w oe3e oe5er oe4f1a 1oefe oe2fi oe2fl oef3la oef5le oef3lo oe4f5o4 oe2f3r oege3l oeg5ij oeg1l oe4gou oeii4 oei3n oei5s4 oei5tj oei3tr oe4kaa oek5erk oeke4t oe2k3l oe4k3op oe4k3r oe2ku oek1w oe4lap oe4lar oel5dr oe4l3ei oe3lem oel5f oelo4 oe5loe oelo5p oel3sp oe4m3ac oem3o4 oen3al oe5n4e oen5gr oen3o oen4sn 2oep oep5ind oe4pl oe5plo oe4p3r oe3pra oe4ps oeps3e oe2p3u 4oer oe1ra oe4raa oer5aal oe4r3a4l oer4e oer5ei_ oer5eie oero2 oe3roe oer3og oer5om oer4sl oer4sp oer4sta oers5tak oers5te_ 4oes_ oe3sfe oe3si oe4sli oe4s3o4 oes4ta oes4th oe3sto oe4taa oe2t3h oe5t4i oe2tj oe4t3o4 oe5toe oe4t3ra oet4s3p oet3w 2o\xc3\xab of3ar of3at o4fav of4d1a4 ofd3ei of2d3o of2d3r ofd3w of3l o4fli o4flo 4ofo of3om o3foo of3op o3for of3ox of1r o3f2ra of5se of4sl of5sla ofs3le of2sp of3spe ofs3pl of3spo ofs3pr ofs3tr ofs5tra 4oft of4tu oft3ur oft3uu of3ui og5ac oga4l og3al_ og5de og3di oge4d oge5laa ogel5ei 2ogem o3ger oge4ro oger5on oge4s3t 2og5h 1ogig og1l og5ne og3op og3sp og3sta og4st5ei og3sto og4ston og4str ogs5tro og3ui o3gy 2o1h 3ohm 4oi oi3do oi1e oi3j oi5k o3ing oi3o4 oi3s4 oi5sc ois2p oist2 ois5tj o3\xc3\xaf 2o1j 2ok o3ka_ o3kaa o4k3aas ok3ab ok3ag o3kal ok3ank o4k3a4z ok3ef o2k4l ok5let o4kli ok5lu o2k3n ok3o2l ok3op_ ok3o4pe okos5 o2k3ou o2k3r ok4ra ok1sa ok3s4l ok3sn ok5spri ok1st4 oks5te_ ok5sten ok4s5tr ok5te okter4s oku4 ok3ur ok3uu ok1w ok2wi o1la o3l4ab ol3ac o3lal ol3a2p ol3arm ola3s4m 4old ol3d4o ol3d2w o1le o3le_ ole5g ol1ei ol3eks ol3emm o3len o5ler oleu2 ole3um ol3exa ol2fa olf3l ol3fr olf5sl ol2gl ol2g1o olg5rap ol4gre ol4g3ri ol2g3u o3lia o3lic o5lid o3lik o3lin o5ling ol3int o3lit ol3kaf ol5ke ol2kr olk4s olk2v ollie4 o3lo o5loc olo3k ol4om o4lop ol3op_ ol3opp olo3s4t olo4ve ol4pra 4ols ol5se ol4s5h ol5si ol1sj ol3s4l ol3s4n ol3so ol3sp ol5ster 4o1lu ol3uit olu4r 4oma om2aa om1ac om1af o3man 4ome o4m3ef om3ela omen4s omen5ste_ ome5ren omer5kl ome5sp ome5t om2i o4m3int 4omm 4omo omo5l omo3s om4p5ei 5omro om3sl om4ste_ om3ui 3omz on1ac on4ag o4n3am on4an on3ap ona3th 2onc on4d3ac on5d4as on5der ond5ete on4d3id ond5ijs ond5om_ on2dr ond3re ond3ro ond5sj ond5slo on3d4u on4dur o5ne_ o3neb o2n1e2c on3ei on3erf on3erv one3st 4onet_ on1e3v ong5aan ong5aap ong3ap 4ongen ong5le ong2r ongs4 ong5se ong3sp ong3st on5id o5nig on4k3ap onke5lap on3k2i on4k3lo on3kn on5kw onnes4 onne5st o4n3of ono3l on1on o2n1ov on3sc ons4e on5sei ons2f on3s4m on2s3n ons5op on3sor on1s2p ons4pe on3spl on1st on5sten on5str 4ont_ on4taa 3ont1h on4tid 3ont1s4 ont5sp 3ontv 1ont3w on1ui on3ur o4o2 4oo_ oo3c 4oo4d ood1a ood1e4 oo5de_ ood1o ood1r ood3sl ood3sp 4oof oo3fi oo4g oog1a oog3e oo5gi oog1r oogs4 oog3sh oog3sl ook3a oo3ke ook5l ook3s4 ook5st oo4k5w oo4l ool5a2 oole2 ool3ed ool5f ool5g oo5lig ool3ij ool3k ool1o4 ool1u oom5a4 oo3me oom3i oom1o4 ooms5te_ 4oon oon5a oon5du oon3in5 oon5k4 oon1o oon5ta oo4p1 oopa2 oop5ee oop3o4 oop3r oop4sp oor3a oord5aa oor5dop oor1e4 oor3g4 oor5i oor5k oor5m oor1o oor3sm oor5ste oor5sto 4oort oor4th oo4s oos3a oo5se oos5n oo4t oot1a oot3es oot3h oot5o oot3r oot4sl o1\xc3\xb6 2opa o4p3ac op3ad o4p3af o4p3ak op3am o3pan op3and op3at_ op3att 3opbre 3opdr o3pe_ op3ee op5eet op3ei o1pel o3pen_ 3o4peni o5per_ o4pera op3e4te op3e4v 4opf o1pi o5pic op3i2d opie5t op3ijz op3in_ o5pina o5pis 4op1j op3l op5los 1opn o1po opoe3 op1of o5pog o5poi o5pol op3ond o5poni op3ont op3ord op3o4re op3o4v op1r op3ric o4pru o4ps op5s2c op5se op5si 3ops4l ops4m op3sma op3sn op3so op3sp op3sta op3su 2opt 4opt_ op5tr op3ui o2p3u2n o1ra or3ach or3act or3adm or1af ora4g o4r3alg or3ana o5rate or4daa or4d3as or4denv or4do ord5ond ord3or ord3o4v or3dr or4drad ord3w o1re ore5ad 4orec oree4 ore4no or2gl o1ri o5ria 3ori\xc3\xab o5rig_ o5rigere o4r3ink or3ins ork2a or5k4e or3kl or5kn or3kw or4m3ac or4mas or4m3ei or4n3ac or3ni orno3s4 or3oe o3rol or1on or3ont or1oo or1o2p or3or o3ros or5ov 4orp or4p3ac orp4s5c or3sag or5sc or5se or3sli or3smi or3so or4son or3sp or5s4pa or5spu or4t3ak ort5een or4t5ijl or2to or4tof or4t3oo or4tred ort5sp ort5ste or1u o3ry orzet5 2os o4sac o5sas o3sau 4o3s2c osca4 o4sci o5s4cl os3cu o5sed os4el o5ser os3f os4fe o4sha o3shi os2ho o3si o4sj os5jer_ o4sk os5ko os3l os5li4 o4s3m os4n os5no o3s2o os3pa os3per os1pi os4pir o4spr os4s5m o2s3t os4ta os5taal os5taar osta3c ost3a4g os5tan os5tar o3stas o3stat os5te_ os4tem o5stero\xc3\xaf os4th os4to os5toli os5tou ost3o4v os5tra_ os5traa ost3re ost3ri o3stro os5trum os1tu o3sty o3su o5sy 4o1ta ot3aar ot1ac ot3af o3tag ot3akt ot3app ot3art otas4 o5tat o3te ot3e2d o5tee_ o5tees o5teg ot3ei ote4lan o5ten o5ter oter5sp ote4st ote4t ot3eta o1th o2t1ho ot3hu o4tj otje5sp otli2 o1to ot3off ot3olv o5tom ot3ont ot3opm oto5po ot3opr o5t4or oto3s 2otr o1t4ro ot3ru ot5s4i ot2sl ot3sla ots3li ot3smo ot3sn ot3sp ot4s3pa ot4ste_ ots5tek ot5sten ot4stu o1tu ot3ui o3tul ot5w 4ou_ ou5a ou1c ou4d1a ou4des ou2do ou1e oue2t3 ou3k4 ou4ren ou5ren_ ou5renn ou2r3o2 4ous ou3sa ous5c oust4 ou2ta out3h out1j ou2t3o out1r out5sp out5ste ouw3a ouw5do ouw5ins o2v 2o3va o5ve_ 2o5vee 3o4verg over5sp over5ste o5ves 2ovi ovi5so 4ovl 4o3vo 4ovr ovu3 4ow o1wa o1we o5wen ow3h o1wi ow2n o3wo ow3r o4x oys4 ozet5 \xc3\xb63l \xc3\xb61p \xc3\xb6pe1 \xc3\xb64r \xc3\xb6s4 \xc3\xb6s5t \xc3\xb65su 4p_ 4paan paar5du paar5tj 5paas 3pab p3acc 2pach pacht5s p4aci 5pacu 3pad_ pa4da 4padv pa3e 4p3afd 1pag pag2a pa4gen pa3gh p4a5gi 3pak pa2k3a 4p4ake pa4ki pa4k5l 2p3alb 3pale pal3f pa3li paling5s palle4 palm5ac pal4mo pa4m pa3na pa4n3a4d 5panee 5panel 4pank pan5sp pan4tr 1pap pa4pe4t 5papi pap3l pa3po pa3pr 4par_ 3pa3ra p3arb pard4 par3da 3park par4ka par4k5l 3parl 4parm pa5ro 4parr par5ta 3parti part3j 3partn pa5ru paru5r 1pa4s3 pa5sa pas5c pa5se pa5so pas4th pas5to pas5tr pa5te 1path p3atl 3pa3tr pats5te_ 2paut 5pauz pa4vl 5paz 2pb4 2p1c 2p3d2 pe4al 4peci p3e2co 3pectu 1ped pe3de pe3do p4ee4 3pee_ 3pee\xc3\xab pee5li 4peen 5pees 3peg 1p4eil pei4l3a 4peis pek5ee pe2k3l pe2k3n pek5s p4el pe3l4aa pe4l3ak pel5dr pe3le pe4l3ee pe4l3e4t pe3l4i pe3l4or pel5si pel3so pel3sp 2p3emm pe3na pe4nak pe4nap pe4nau pe4naz p3ency pen5d4r penge5 pen5k 5penn pen3sa pen5sl pen3sm pen5sp pent4 pen5to 2p3epi pep3o pep5s p4er_ pe1ra pera3s4 per4at 3perc pe4r5eg pe5req 1peri peri3s per1o pe3ron pe5ros 3pers per4sm per5sti per4str p2ert 3pes pe3sa 3pet_ pe5ta 5pe5ter 3peti pe4t3ra pets5te petu5 3peuk 5peut 1p\xc3\xa9 3p\xc3\xaa 2p1f 2p1g pge5s 2p1h4 4p3ha 3p4hec p4his 4pho pi3am pi5an pi4at 2pid piek5la 5piep pie4r3o pie4s3p pie4tj pi2g5a pi3gl 3pij_ pij3k pij5ke pij4li 3pijn 5pijp pij4p3a 2pijz pi4k3l pilo5g pi5nam 2pind 3pinda 3p4ing 5ping_ pin4ga pin5gri 4p3inj pink3r pink5s 4pinr 2pins pin4ta pi5o pis5n pis5ta pi3th pit3j pit3r pit4sp 2p1ja pjes5 p3ji p1jo 2p1k pkaart5j p2l2 p3la_ plaat5j 2p3lad pla3di 4p3lamp 4p3lang p4lant p3lap 1p4las 3p4lat pla4t3r 5p4lay p4lec plee5tj p3leid 3p4len p3lep pleu5ro p4lex 2p3lig 4plij p4lom p3lone p5lood plooi5tj p3loon p3luie 2p1m pmans5t 2p1n p3na 3pneum 3po_ poda5 3poei poe2s3 poes5t poets5te_ 3poez 3po\xc3\xab p2ofa 3pogi po5gr po2k3i2 po4kol 1pol po5l4o polo3p pol4s pols5te_ 1pom 2p3oml 3ponds pon4sm pon4st pons5te_ pon5ta 5pony poo3d poo5de 4poog_ 3pool poo5len 4poor_ poor4tj poot3 po4p3a 4popd 2pope pop5h 2p3org 2p3ork po3ro p4ort 5portef por4to por4t5ra po3ru 1pos po1sa po3sf po4taa po4t3as po5te potes5t pot1j pot3r 3poul po3v 4p3p p5pa p5pe ppe4l3o ppe5ni pper5ste ppie5k ppij5p p4ps pr4 p2ra 3pra_ p5raad praat5j p5rad 3prakt 4pram p5rand 3prao 4p3rap p4rat p4rax 4preeku 1prem p3remm 3prent pren4t5j 3pres p3reso 3pret pre4t3j pret3r 4pric 4p3riek 4priet prie4t5j 1prij 3prik 3princ pring5s4 5prins 3p4rio 3p4riu 5priv 5p4rob 3p2roc 1p2rod p3roed 3proef proet5j 3proev 5p4rof 5p2rog 1proj pro3la 3prom p3rood prooi5 pro5pa p4roq 3pros pro5sc pro4s5t pro3t4a 3proto 3pro5v 4proy pru2t prut3o4 2ps p3sab ps3a2g p3sak ps3ar ps3ass 4pse ps3erk p4s3et p3si p4s3i2d p4sin p5sis p1sl ps3le ps2me ps5mi p4s3na ps3neu p4sof p3sol ps3opt pso4r p1sp ps2pl ps3ple p1s4t p3stat p3ste ps5tent ps5tes ps5th ps3tor ps5tron p3stu ps5ty 3psy 5psyc p3sys 4p1t pt3ad pt3alb p3te p2t1h p5ti pt3j p4t3o4v p3tr pt3ric 1p2u 3pub pu3ch pu3e puil3o pul4st 3pun 4pun_ punt3j 3put_ puter5in put1j pu2t3o put3r put4st puts5te_ 2pv pvan4 pvari5 2p1w 1py1 2p5z 1q 5qe qu4 que4s 5quo 4r_ r2aa 2raan 4raand 3raar 5raar_ 4r3aard 5raars raar5tj 2rac ra4ca ra3ce 5racl rad4a 3radb ra5den ra3di 5radia 3radio 4radm 4r3adr 3rad3s 4radv 2rafd r4aff raf5ond ra3fra 3ragez ra5gi ra3g2n ra5go rag4s 3rais raket3 ra3k4l rak5r 4r3a2la ra4l3ee 4r3alf r3a4lim r3alt ra4man r5ameu ra3mi r2amp 4rana ran4dr ran4g3o ran4gr r5angst_ ra4nim 4ranj ran4kl rank3w ran4sa ran4st ran4t3j r3antw ra3o 4rap_ ra3po 4rappa rap5roe ra3q 2r3arb r4a5re 4rarit 2r1arm 4r3arr 2r1art ra5sei ra4sk ra4sl ra1so ra2sp ras3po rast5ri r4ati rat5j ra4tom ra4tra ra5tri rat3sp rat4st rats5te_ ra3t4u 2rau 3raus r1aut 5ravr ra4zij rbe4ti r1c r3ce rces3 r3chi r3co 2r1d r4d3act rd3alk rda2m rd5ama r3dan r2d3ar rd3ei r4d5e4las rden5dr rde5o4 r4derva rde5s4t rdi3a rdi5o rd5l r3do r5doc r4d3ol rd5olie rd3ont rd3oos rdo3pe rdo3v rd3ras rd3res rd5roos rd2ru rd3sa rd3s4c rd3so rd1sp rds4t rd5sta rd5ste rd3su r3du rd2wi rd5wo 3re_ 1reac re4ade 4reak re3amb 4re5at re3co 3recr rec5ta 3reda 3redd rede4s3 4re4diti 3redu re5dw ree4k 2r1een ree3n4e r5eenh ree2p reeps5 ree5r4ad 4reers reer5ste r3eerw ree4s ree5sh r4ef 4refb 2reff 3refl re3fu 1reg 4reg_ 4regd rege5ne rege4s 4regg 3regi re3gl 4regt 4reie 4reil 4reind rei5tj 5reiz re4kap 5rekeni re2k3l re2k5n re4ko re4k3re rek3sp re4ku re1kw rel4di rel4d3o reld3r re4l3ei rel5k re4lu4r 3rem_ re4mai remie5tj re5mo5v 2remp 3r4en_ re2na re4naa ren5aar re5nade re3nal re4n3an ren3a4r r4end 5rendee r5endert re5ne_ re4nel re5nen_ ren5enk ren3e4p re5ner_ ren5erf ren5erv 5renf 2r1eni 5r4enkl r4enn re4noc ren4og ren4opl re3nov 5r4enp 4renq ren4sl r4ento r3entw r5enveer re4of re4op4 re5pa 3repet re4pie 4req re3qua 4r1erf 2r1erg re3r2o rer4s 2r3ert 4r5erv 2rerw re3sa re5se re4sl res5le res3m re2s1p res3t re4tem re3t4h ret4i re4tik re5tin 2retn re4t3o4g re4t3oo rets5te_ re2u reur5es reus4t reu5ste 3revis 3revo 2r3ex r4f3aa rf3act r2f3a4g rf3al r3fas r3fe r4f3eng r1fl r4f3lag rf3lev r2f3li rf3lus r4f3op r1fr r4f3re r5frea rf2s2 rf3sm rf3sp r4f3u4r rf3uu r1g r4g3ab rg3amb r4g3een rg3ei rg4eis rgel5dr r5gen_ rge4ra rge5rap r4g3ins r5glas r3glo r4g3lu rg4o3v r5grij rg3rit r3g4ro rg1s4 rg2sm rg5so rg4s5pr r3h ri5abel ri4ag ri2ak ri5an rias4 ri4av ri4bl 4rice ri3co ridde4 ri3di ri4dol ri4doo rie5dr rie4k5ap rie5kl rie3kw rie4la riel5aa rie4lei rie4ro rie4ta riet3o ri1eu ri3fl ri3fr r4ig ri4gaa ri3gl 5rigste r4ijl 4r5ijl_ r5ijld r5ijlt rij5o rij3pl rij3pr rij3sp rij5ster rij4str 4rijv ri4k5l rik5n ri3k4o ril5m ri3ma rim4pr 4r3inb 4rind ri5ne 4r5inf r4ing 4r5ingan r5ingeni ring5l 4r3inh ri4nit rin4k3l r3inko 4rinkt r3inl 4r3inna 4r1inr 4rins r3inst 4rint 4r1inv ri5on ri3o5s ri4sam ri3sc ri3sot ris5to rit3j rit3ov rit4st rits5te_ rit5sten 3ritt r5j4 rjaars5 r5ka_ rkaart5j rk3adr rk3af r2kah rk3ang r4k3art r2k3ei rke4n rken4s rker4sl r4k3erv rke4s rke5stree rke5strer rk5iep rk3ijv rk3inb r4k3ink rkjes5 rk3lag r4k3lat rk5leid r2klo rk3loo rk3lus r3kn r4kne r2kob rk3olm rk3omg rkoot5 rk3opg rk3ord rk5os_ rk5oss rk2r r5k4ran rk4ri r5kris r5kron rk1s rk3s4f rk5si rks4p rk4t5e4v rkt3h rk4ti rkt3o rkt1r rk3uit r1kwa rk3waa rk5wat rk3wee r1kwi rk3win r3l rlaat5ste rle4g3r rlink4s rlinks5te rlofs5 rlui5t4 r1m rmaf4r r4m3art r2m3eb r2m5eg rme4r3a4 rmes3 rme4t3j rmet5st rm3inh rmi2s r3mo r5moe r4mop rm3opm rmors5te rmos5f rm3s4a rm1st rm3uit rmun4 2r1n r3na r5n4am r4n3ap rn3ars rnee5t r4n3ene rnes3 rne5te rne4t3j r2n5id r2nin r2n1on rn3oor r5noot rn3ops r5not rn3ove rns4 rn3sm rn3sp rn1st rn3sta rn3th rn5tj rn5to r3nu rnu5r ro1a ro5ac r4oc ro1ch ro3d4o 3roe_ 4roef 4roeg roe4g3r 3roem roens4 roen5sm roep3l roe4rei roet4j 4roev 3ro\xc3\xab r5offi r4ofi ro3fl roges5 1ro\xc3\xaf ro3kl 3rokm rok3sp r4ol_ ro2l3a role5st rol3g2 2roli rol3ov ro5ma ro3mo 4romz r2on_ ron3a4d 5r4onal ron4da ron4d3o ron4d3r ron4d5u r2one r2oni r2onk ron4ka r2onn r2o1no r2ons ron4ste rons5te_ 4ron2t ront3j ront3r ro3nu 4ronv 3roof 2roog 4roon 2r1oor root5ste ro3pa ro4paa ro4pan 4ropb ro1pe ro5pee ro4pin ro3p4la 4ropn r4opo rop5rak rop3sh r4opte ro4pu ror5d ro3ro ro3sa ro5se ro3sf ro3sh r4o5si ro3sp ros4s5t ro5stel ros5tra ro5te ro3t2h rot3j ro5ton ro3tr rot4ste rots5te_ r1oud 3rou5t4 ro3v ro4ve ro5veri 4roxi 3roy r1p r3pa rp3aan rp3adv rp3ank r5pee rp3eis rpi3s r2p3j rp4lo rp5lod rpoort5j r4p3o4v r4p3rec rp3ric rp4ro r3psa rp4si rp2sl rp3sli rp5spe rp4s5to 2r5r rre4l3u rren5s4 rre5o rreu2 rri5er_ rrie4t rron5k rrot4j 4rs rs3a2d rs3a2g r3sal rs3alm rs3amb r3san rs3ana rs3ap rs3ar rs3as rs4asse rsa4te r5schi rs2cr r4s3eis rsek5ste rs4et rseve3 r2s3ez rs4fer rs4hal r3s2hi r3s4hoc rs3hot rs3ini rs3int r4sj4 r5sjac r5sjou r5sjt r3s4kat r1sl r4slan r5slec r5slep r5sleu r5slib rs4lie r5sling rs3lob rs5loep r4s3loo r5sluis rs4m r5smaak rs5maal rs5mak r3sme r3smij rs5mis r5smit rs5mu r1sn r2s3na rs3neu r2s3no r1so r5sol rs3ong r2sor rsorkes5 rs1ov r1sp r3spaa rs3pad r4s3par rs4pare r3spe r5spec r5spee r5spek rs4pene r4s3pet r5spit r5spoe r5spog r5spon r5spoo rs3pot r5spraa r4spu r5spul rs3put r1s4t r4s5taak rst5aang rs5tas r5stat r3ste r4s3te_ r5ster_ r5sterk rs5term r5sters r5stes rste5st r4steva r3sti r4stit r3sto rs5toma r4ston rst5ora r3str rs5trap r4st5red rs5trei r5stren rs5trog rst5roz r3sty r3su rs3usa r3sy 4rt r1ta r5ta_ r4t3aan rt5aand rt5aanv r4t1ac rt1ad rt3af_ rt3aff rt3am r5tans r2tar rt3art r4tau r2tav rt5c r5teco rt3eig rt3eil rte4lei rt5emb r5ten_ rte5nach rte3no rte3ro rtes4 rte5sta r2t5e2v r4tha rt1he r3ther rt3hi r1tho rt3hol rt3hu rt3hy rt4ij rtij3k r4t3ini r4t3ink rt5jesc r3to rt3off r5tofo r5tok rt3om_ rt3ond r4t3op r5tori r1tr r3tra rt4rap r4t3ras rt3rec r5treden_ r3t4rek r4t3res rt3ri r4t3rol r2t4ru rt5ruk rt5rus rt4s5eco rt5sei rt2s3l rt3sle rts5li rt4slu rts5m rts5no rt4soo rt1sp rt4s3pr rts5ten r1tu rt3ui4t rt3w rt2wi 5rubr rude3r ru1e 4ruf ru2g ru4gr r5uitr ru2k 4ru3ke ruk3i rul3aa rul3ap ru2li ru4l3ij ru3lin rul5s r2um ru2mi 3run_ r2und runet3 4r5u2ni ru3niv ru4r ru5ra ru5re_ ru5res r2u4s rus3e rus5tr 4rut rut3j rut4st ruts5te_ 4ruu ru3wa rvaat5 rval4st rvals5te_ rvers5te_ rves4 rve3sp rvloot5 r1w rwen4st rwens5te_ r4wh rw2t3j r3x r3yu 4rz rzet5st 4s_ 5sa_ s1aa 1saag 5s2aai saai4s 3s2aal 3s4aat 1sab sa3bo 2s1ac sa2ca 3sacr s1adv 2s1af 3safe 3safo sa3fr s5agg s4a3gi 3sagn sa3go 3sah 3sai 3saj 2sak 3saks s1akt s2al 5sal_ 3sa3la 3sald 5salh s3all 4salm sal5ma s3aln 3s4a3lo 3s2ame 5samm sam5p 4sa2na sa3nat s4anc s2a3ne s4ant san4t3j sa2p 3sap_ sa3pa 2s3ape sa4pr sa5pro sa3ra s1arb 3sard sa2re s1arm saro4 sar3ol s4ars 4s1art sart5se 4sas_ 3sasa sa3sc 3s4ast 1sat 3sa3te 5sati 2s3atl 2s1att s3aud 1saur 3s2aus s1aut 3sauz 1sax 4s3b s5ba s5be s5bo 1sc 2sca 4sce 5scena 5sc\xc3\xa8 3s4ch2 4sch_ sch4a 5schak 5schap 4schau 5sche_ s5chec 4schef 5schen 4scheq 5scher 5schev 5schew s2chi 4schir 5schol 5schoo 5schot sch5ta 2sci 4scl 2sco 3s4cola 3scoo 3scope 5scopi 3s4co5re 3scout 2scr 4scris 2scu 2scy 4s1d s5de s4dh sdi5a sdis5 s3do s5dr s3dw 3se 5se_ se2a se3ak se3al sear4 se3au s4eb 4s3ech se3cr 5sect 4secz s4ee 4s5eed 5seei 4s1een s5eenh see4t see5ts 4seev s1eff se3ge 2s5e2go seg2r 4s3ei_ 4s3eig s4ein 5sein_ 5seine 2seis seis4t sei5tj 5seiz sek4st seks5ten se1kw s2el 5s4el_ sel3ad se4l3a4g se4lak se4las se3le 4s3e4lek sel3el 4se4lem 4self se5ling 4s3elit sel5k 5selm selo4 5selp 5s4els sel3sp 5selt se2l3u s4em se4m3ac s5emm sem3oo s4en 5sen_ se4n3a4g se5nan se4net 5sengr 5senh sen5k se4n3o 4s5enq sen5tw 5s4er_ se1r4a ser5au 5se3r4e se4ree se5ren s4erg 5sergl s5ergo 5sergr ser4i se5rij 4s3ern se3ro se5rop ser2s sers3p ser3st sert5w se3ru s4es se5sc se3sf 2s5esk 5sess se4t se5ta 4s3ete se5ti se3tj set3r se5t4ra set5st 4s5etu set3w se3um se4ven 4s1ex 4sez se2ze 3s\xc3\xa9 3s\xc3\xa8 2s1f 4sfed s5fei 4sfi 4s5fr 4sfu sfu5m 4s5g sgue4 s1h s4ha_ sha4g s5hal_ 3shamp 4she sheid4 sheids5 s5hie 5s4hir sh3l 4shm s3hoe s3hoo 3s4hop s2hot s3hote 3show s5hul 1si 5si_ 5s4ia si5ac si3am si5an 5sic sici4 si3co 3sie_ 3sie\xc3\xab sie5fr sie5kl siep4 sies4 sie5sl sie3so sie3st sie5ta sie5to si5\xc3\xa8 si1f4 5s2ig si5go5 s3ijv 4s1ijz 5sile 4s5imper 3simu 5sina s3inb 4s3inc 4s1ind 2sinf sing4 3sing_ s3inga s5ingeni sin3gl s3in5gr s3inh 4si2ni 4s3inko sin5kr 4s3inm s4inn 4sinr 2s1ins 2sint 4s5inv 4s3inz 3sir 5siro s3irr si4s sis3e4 sis5ee sis3i sis5tr 3sit si5to sito5v si3tr si4tru si5tu 3siu 3siz sj2 4sj_ 3s4ja_ 5sjab 4sj3d s1je 2s3je_ s5jeb 3sjee 3s2jei 1sjer sje4ri s3jes 3sjew 3s4jez 4sj5k4 5sjof 4s3jon sj3s2 sjt4 s5ju 2s1k2 skaart5j s5kad s4kele s5ken 3s2kes sk4i 3s2ki_ 3skied skie3s 3ski\xc3\xab ski5sc s2k3j s3ko s5kre sk5ruim sk3ste 4sku s3k4w s2l4 3s4la_ 5s4laan 5slaap 4s5laar 4slab s4lac 4s3lad 3s4lag 5slagm sla4me s5lamp_ s5lampe 4s5land 3slang 3slap 5slape sla3pl 4s3las 2s3lat 3s4la5v 4slaw 3s4laz s3led 3s4lee_ 5sleep 4s5leer s4leet slee5tj 4s3leg 2s5lei s5leng s3leni slen4st slens5te_ 3slent s4lep 4s5ler s5les sle4t3j 3s4leu s5leug s5leus 5sleut 2s5lev s3li_ 4s3lic 4slid 2slie s5lied s3lief 3s4lier s3lif s5lig 4s3lijf 5slijp 4s5lijs s4li4k sli2m slim5a s5lini 4slinn s4lip 4s3lit slo4b5 2s3loc 3s4loe 3slof 4s3log s3lol s3lood s5loon s5loos 5s4loot3 s3los 3slot slo4tr 4s3lou 4s5loz 4s5luc 1s4lui 4s5lui_ 4sluid 5sluis_ sluis4t slui5ste 5sluit 5sluiz 4slun 2s5lus 4s3ly s1m 4s5maat 3smad 3smak_ 3smal 2s5man s5map s4mart 4s5mat 4s5mec 5smeden 3smeed 5s4meet 4s5mei 4smelo 4s5men 4s5mes3 5smid_ smie2 smies5 s4mij s5min 5smok s3mon 5smuilden s5muile 5smuilt s2n4 s5nam 5s4nap s4nar 3snau 3s4nav 3s4ned 3snee snee5t s5neg 5s4nel 2s5nes 4s5net sneus4 sneu5st s5neuz s3nie 1s4nij s5nim 3s4nip 4s5niv 4snod 3s4noe s3nog 2snoo s4nor_ s3norm sno5v 3snuf s4nui 2snum 3so_ so4bl so1c s3oce 3s4o3d 1soe 2soef 3soep soes3 2s1off 3soft 2so2g 3so3ga s1oge so3gl 3sogy 5soi 3so\xc3\xaf 3sok s2ol 5sol_ so3la so3le so3lis 3so5l4o3 solo5v 5sols s2om 3s4om_ 5somm 2s3oms s3omv 2somz 5s4on_ 3sona so5nar s3onb 2s1ond 2song 3sonn 3so3no s4ons 2s1on4t3 4s3onv s3onw 3soo 4s5oog 4s3ook 4s3oor_ s3oord 4s3oorl 5soort 2s1op 3s4op_ 4s5ope so3phi s2o5po so3pr 3s4opra sop4re s2orb s3ord 2s1or3g 4s5ork sor4o so3ror sor4st 3s2ort sos4 so3sf s4ot s3oud sou2l sou3t 2sov s1ove 3so5z 4sp_ sp4a 5spaak s3paal 5spaan 5spaat 2spad 2spak 5spake s4pan 3spann 4s5pap 5spar_ s4pari 5sparr 2spas5 5spatt s3pau 5s4pea 4spectu 3s4pee speet3 4s3pei s4pek 5spell 4s3pen s5pen_ spe4na s5pep 4sper s4per_ s5peri s4perm 5s4perr 4spes s3pez s3pid 1s4pie spie5tj 4spijn 4spijp s5ping 5s2pio s3pis spi5sto 2s1p4l 4s5pla s4plet s2pli4 5splin 3split s3plo s3plu sp4o s2poe s3poes 4spo\xc3\xab 4spog 4spol 2s3pom s4pon_ s4ponn s2poo s3pop 5s4pore s4pori 4s3pos 5spots 4spou 4sprakt 5spray s5pred 5sprei s4prek 4sprem 4spres 5spreu 5spriet 4s5prij 4sprik 4sprob 4sproc 4s5prod 4sprof 4sprog 5s4pron s4proo 4spros 4s3ps 4spt s2p4u 4spub 5s4pui 4spun s4pur 5spuw s4q 4s5r sraads5l sro5v 4s3s4 ssa1s2 s4sco s4s5cu s5se ssei3s sseo4 s5si s5sl s4spa s5spaa ss5pas s5su s5sy s2t 4st_ 5staaf 5staan_ 4staang 4staanw staart5j s4taat staat5j st3abo 2s4t1ac 3stad 5stads 2staf 5staf_ sta4fo s4tag s4tak 5staki 4stakk st3akt 4s3tali 5stam_ 5stamm 3stamp 3s4tand stan4s s4tap 4stapo s4t3arc 4stari 2stas stasie4 5statio 4stau st3aut s4tav 4stavo 4s5tax 4staz 2stb 2st5c 2std 4stea 5steak 4stec s5tech 5steco 3s4ted 4stedu 3steek 3steen 4steenh s5teer stee5t 5stein 5stekar 5stekk 5steldh ste4lee st5elem 3stell 5stem_ 5stemd 5stemm 4stemo 4stent 4stenu ste5ran 4sterm ster5og st5e4ros 5sterren s5teru 4ste4s 4s4t3ex s4t3e2z 2stf 4stg 4sth s4tha st3hed st5heer st3hek s5them s3ther st1hi s4t1ho s4t1hu s4t3hy 2stia 2stib 4sticu s4t3id 5stiefe s5tiev 4stijd 3s4tijg 5s4tijl st3ijs 3stils s4tim st3imp sti5ni 4stins 4s5tint 4stite 2stiv st3ivo 4s4t1j 2stk 4stl 2stm 2stn 2stob 2stoc 4stoef 3stoel 5stoel_ 5stoele 4stoen 4stoer 4stoes 4stoez 3s4tof st3o4ge 5s4tok s4tol sto5li 4stoma 4stomz s4tong 3s4too 4st3oog stoot5j s4top st3o5pe st5opto 4stora sto4rat 4stord sto5ri 4s5tos s4tov 2stp 1s4tr 4stra_ straat5j 4st4rad 3stra4f 5straf_ s5trag 4strai 4st3rec s5tref 4streg 4s3trei 5strel 3strep st3rif st5rijp s5tris 4s3troe s5troep st4rom 5strook 5stroom 4stroos st5roos_ 4s5trou 4stroz 3stru 4strui_ 5struik 4st1s4 st3sc st5se st3sf st3sk st3sl st3so st5sp st5st 2st5t2 1stu 4stub 4stuc 5s4tud 4stuin stui5tj st5uitk 5stuk 2s4tun st3uni stu4nie 4stus 2stv 2st3w 2s4ty 1styl s5typ 2stz 1su 5su_ 5sua 5su4b1 suba4 sub5e su5bl 5suc 5sud 3sug 2sui 5suik 4s1uit 5suit_ s5uitl 5suits_ 5suk 3sul 5sum 4s1u2n 5sup 5surv su4s sus3e suur5 4s5v svaat5 svari5 sve4r sve5ri 4s1w s5wo s4y 3sy_ 4syc 3syn sy4n3e 1sys5 4s5z 4t_ 3taak_ t4aal t5aando t3aank taan4st t3aanw t3aap taar5sp 4t3aas taat4st taats5ta 3tabe 3tabl 2tac ta2ca 3t4aci 4tad ta4de t3ader 5tado t3adr tad4s3 t3adve 2taf_ 2t3afd 5ta3fe 4taff t3afha t4afr ta3fro 4t1afs 2t3afw 4tafz ta4gaa 5tagee 5ta5g4l tag3r 5taka 5takg 5takken ta3kl 5takn 5takp 5tak3r 5taks t2al ta3laa ta5lact 4talb 5tale_ 5talent ta3li 5talig t5allia talm3a 4talt ta4mak 4tamb t3amba 5tamen tament5j 4tamp t3ampu 5tan_ 4t3a2na ta3nag ta3nat tan4d3r tan4k5r ta3o t4ape 5tapi ta3pl 5tapo ta3q ta3ra 4t3arb 5tari 4t1arm ta2ro4 tar5sp tar5taa t3arti 3tarw 3tas 5tasa 5tasj 5taso ta3s2p ta3sta ta3str ta3sy 4tata 4tatio tat5j 4t3atl 3tatr 3tau 4taut 2t1avo 3tax t3a2z 4t3b tba2l 4t3c t4ch t5cha t5che t5chi t5chu 4t3d2 tdor5st tdo3v 1te 3tea te3akt 5tea4m 3tec 4t3echt 4teco te4dit t3edu tee2 teeds5te_ tee4g 4teek tee4k3l teem1 4tee4n t5eenhe 3teer tee5rin tee4t 4t3eeu t4ef t5eff 3tefl 3teh 4t3eier 4teig tei4lo t4ein t5eind 5teit tei5tj 2t3eiw 5tekene 5tekens 4teker 4tekk 3teko te4k3om 3teks te3kw te4k3wi t4el tel5ant te4lap tel5da 4telec 5teleco t5elect tel5een 5telef 5teleg tel5ei_ tel5eie tel5eit te5lel 5telev 5te5lex tel3f tel5k te4loe te4l3o4g tel5oog te4l3op telo4r tels4 4telse tel3so tel5su te4l3uu t4em 2temb 4temm te4mor tem3ov 5temper 5tempo t4en ten4ach ten3a4g te3nak te5nare te4nau tene2 ten3ed ten3el tene4t 3tenh ten5k4 te5nore 4t5enq ten5scr ten3sn ten3sp tensu4 tens5uu 3tent 5tenta 5tenten_ ten5to t3entw 5tenu t2er teraads5 te4r5aak ter3a4b tera5ca te4rad tera4de te4r5af ter3ag te3ral te4ran ter3ap ter3as 5terec te4rei ter5eik te4rel te4rem te5ren_ te4r5enk te4r5env 4t4erf_ 4terfd ter3fr 4t4erft te4r5in_ 3terj 4terk_ 4terkt ter3k4w 3term 5term_ 5termi ter5oc te3rod te3rof te3rog 5teron te5rons tero5pe tero4r te3ros 5terrei 5terreu 5terror ter4spr ter5ste_ ter5ston 3tes te3s4ap tes3m te3so tes3ta te5stel tes5ten test5op test5ri test3u te3ta te5tr 4t3euv t4ev t5e4van teve4r 5tevl 3tevr 2tex 3tex_ 4t3exe 4texp 1t\xc3\xa9 t\xc3\xa83 4t3f 4t3g2 tgaat5 t5ge tge3la tger4 4th_ 2t1ha t3haa t4haan t4had t3hak t5ham t4hans t3har t3hav 5thea t3heb 5thee_ 4t3hei 4t3hel 3t2hen 5theo 1t2her 5the3ra 4t3here 3thes 3thet t4hin 4thm t1hoe t2hog t3hok t1hoo thoof5di 4t1hou t3houd 5thous 4t3hov 3thr 2thu t1hul 4thum t4hur 3ti 5ti_ 5tia ti5ab ti5ae ti3ap 5tib 5tica 5tice 5tici 5ticu ti3d4 5tie_ tie5d4 5tiefs tie3kn tie4kon ti3enc tien5st 5tiep 5ties tie5s4l tie5ta tie5to tie5tw ti1eu 5tieven ti3fe ti3fr ti2ga tig5aa 4tigm ti4gu4 tig3ur 5tijd tije4 tij5ka tij4kl 5tijn tij5p t3ijs_ tij3st tij3t2 tij5tr tij5tw 4t1ijz ti3ko ti5kr t4il 4tils 5timm 5timo tina4d tin3as 4t3incu 4t1ind 4tinf tin4g3i ting4sa t3inh ti4nit 4t3inj t3inko 4t3inl t3inq 4tinr 4t3ins ti3nu 4t3inv 4tinw ti5om ti3o4p5 t2is ti5sa ti3s4j ti3sl ti3so ti4son ti3s4p ti3sta 5tite ti3th ti1t2r 5tivi ti4vo 1tj2 2t1ja t5jaa t5jee t5jek t3jen t5jet 4tjeu 2tjo t1jou 2tju 4t3k2 tkars3 4t3l t5le_ 5tleb t5les tli4n 4t3m tmen4st tmens5te tmos5 4t3n tna4m3o tne4r tnes4 5to_ toa2 to3ac to3ar to5bl 3toc 1toch 3tod to3da t4oe toe5d4 3toej toe5k 5toe3l4a toe5le 5toelic toemaat5 5toen to5ende toe5pl 3toer 5toeri 5toern 5toe1s4 toe5st toe3tj 3toets 5toets_ 5toetse toets5te_ 3toev 5toez to2f tof5ar tof5d to4fr tof3th 3togn 5togr 3toi to4kan tok3s t2ol to3la 5tolaa to5le 5tolet t3olf 2toli 5tolic to4lie tolk5s 5tolo tolp3r t3oly 4tom_ 5tomaa tomaat5 t3oml to3mo tom4p3j 4t3om5s 5ton_ 4tond 3t2one 5tonee 5to5nen to5ner 3t4ong 5tong_ 3t4oni 5t4onn to3no 5tons ton3sk too4m toom3e 5toon t4op_ top5art top3as to3pen to3pet to3pi 2topm to4po to5pos t4opp to4pu to5pus t3opva 5tor_ to3ra to4r3ag t3ord to5rec 5torens 4t1org t5orga t4ori 3toria to4ri\xc3\xab tor3k tor4m3a toro4 to4r5oli to3rom 5torr 3tors tors5te_ to3r2u 3tos4 to3sa to1sl to1s2p tos5te 5tota to3tr 2t3oud 3tour tou4r3e to3v tove5na to4vens 4toverg to3w4 4t3p4 tpe4t3 tpi3s tr4 3tra_ 4t3raad 5trac\xc3\xa9 5trafo_ 3trag 4tragez 3t4rai 5train 5traka t3rake 3trakt 3trans 5transa 5trap_ 5trau 4t3raz 3t4re_ 4trea 2trec 5tred_ 4treda t5redes 4tredu 3tref 4t5reg 4t3reis 4treiz 4trel t3rese t3resu tre2t3 t4reu t3rib_ 5tribu 5trico trie5ta trig2 2trij 5t4ril tri5ni 5t4rio4 t3risi t3rit_ 5t4riti 5trody t3roed t3roes 5trofy 3trog t4ro\xc3\xaf 5troj 4trol_ 5trola 5trolo 5tromm 5tron_ 5trona t5rond 3trone 5tronn 5trono 5trons tront5j t3rood 5troon t4roos tro5pi t4ros 5trotu 3trou 4t5rout tro5v 5truc_ 5truf 4trug 5trui_ 5truie t3ruim trui5t4 t3ruk t4rum 4ts ts3a2d tsa4g ts1am t3sap ts3as tse4d ts5een t4s3ei ts5eind t4s5ene t4s3eng t4s3erg ts5erge t4s3e2v t2sij t4s3ink ts3int ts2j ts3ja t3sjen 3tsji t1sl ts4laa t3slac t5slag_ ts3lam t2s3le t5slib t5sloe t3s4lu ts2me ts4moe ts3neu ts4no ts5nor ts5not ts3nu ts3ob tso2l ts3oli ts3om ts1on ts4opp ts1o4r ts1ov ts3pad t3span t5spec t4s3pet t3spi t4s3pil t3spoe t3spoo t5s4por ts3pot t4spro ts4pru ts5q ts5s t3sta t4staak t4s5tank ts5tant t4star t4stas t3ste t5sted t5stee ts5teko t5stell t5stels t5stem t5ster_ t4sterr t5sters t5s4tes_ t5steu ts3th t1s4ti t3stij t5stijg t5stil ts5tin ts5t4j t1sto ts5toep ts5tong t4store ts5trad ts5trei t3stri ts5troe ts5ty t4su4 ts3ur ts3us ts3uu t1sy 4t3t t5t4a t5te tte5loe tte5l4op tte2n tten4t5j tte5ri t5tlet tt3oog ttop2 t5t4r t5tum tt3uu 3tua 3tub 3tuch 3tu3e 5tueu tu3\xc3\xa9s 3tuig 5tuin 4tuip 2tuit tuit4j 4tuk tu4k3i tul5pi t4um 5tune 5tunn tu1o 5turb tu3ri 3tu4s3 tut3j tuurs5la tu3wa 4tv tvaat5 t3ve 4t1w 3t4wijf t2win 1ty1 3typ tys4 4tz t3za t3zi t5zw u1a u3ac u3an ua5ne ua3p u5ar_ uar5t ua3sa uat4 2u2b ub3ac ube4li ub5em u5bi u3bo ub5or 4uc u1che ucht5sl uc4ki ucle3 uc4t3a uc4tin u1d uda2 u5da_ ud5am ud3ei ud3ess u4de4z ud3eze udi4o udi5ologe udi3om udoe2 ud3ond ud3oo ud3ov u4d1r uds5lo uds4m uds5ma ud3sme ud3smi ud1st ud4sta uds5tak ud4sti ud1w u3ec ue2co u1ee4 u3ef u3ei u1el u4ene u1er uer3il ue3st u1eu u5eul u3ez u3\xc3\xa8 u4f3an u1fl u1f4r uf2s u5ga ug4da2 ug4der ug2do ug4dr uge4l5o ug3ij ug1l u2go ug3or u2g1r ug5sce ug4sec ugs4p ugs5pa ug1s4t ugs5tra u1h u2i ui5ac ui2d3a ui2d1o uid4s uid3sp uid5spre uid5ste_ uid3u ui3e uien4t ui2fa uif1l uif5r ui2fu 4uig ui4g5aa uig1l ui2g3o ui4g3r ui4gu 4uik ui2k3a ui4k3l ui2ko ui2ku ui2la uil5aa ui4l3em uil5m ui4l3og ui4loo uil3ov 4uim ui2m3a ui3mag ui4n1a uin5g ui2no uin5og uin3or uin4s5lo uin5to ui2p3l ui4p3o4 ui2p3r 4uis ui2s3a uis5c ui4sl ui5slu uis5p ui4st ui4t3a4 uit5aa uit5al ui5tar 1uitg uit1j 3uitl ui2t1o 1uit5r uit3sl uit3sn uit5sp uits5te_ 3uitw 3uitz ui3v 4u3j 2uk u2k3al uk3as ukkers5 u2k3l u3klas u2k3n u2k3o u3koc uko2p uk4o3pl u4k3r uk3s2m uk3spa uk3spl uk4sti uk1w u1la ul3ac ulam4 ula4p ul4d3a uld5erk ul5dop ul4d3u u1le ule5sp ul3fl ul5fo ul3fr ul3in_ u5ling ul3inn ul3k2a ul5ke ul2k3l u1lo ul3o2p u3los ul2pa ulp3ac ul4pi ul2p3l ul2po ul4p3r ul3sa ul3so ul2s3p uls5te_ uls5tel u3lu um3af um3ar 3umda 2ume umee4 umes4 ume3st um3om um3op um3so um3st u2m3ui un3ac un2c unch3r un4dra und4s unds5ta und5ste une4t un3g 1univ un4k3r un4o uno3g un5o2p unst3a un4ste_ unst3o un4st5r unst5ui un4tag unt5een un2tj un4t5o4 unt3s4m un4t3u u3ol u3on u3oo u1or uo3ru u3os uota3 4up u1pa u1pe upe3k upe4ro uper5st u3ph u3pi u1pl u4p3lei u1po u3pol up3om up3op u1pr up4tr u1ra ur3aan ur1ac ur3ada ur3adv u2r3a4r uras3 u4r3a2z urd4o u1r2e ur3ech ur3een uree5s ure5lu urelu5r u4rem ur3emb ure4n u3res ur3ess ure3st ur3eta 4urf ur2fa ur3gi u1ri uri4gl ur3ijz ur3ind ur3int 4urk urken5s ur4kie ur3k4l urk4s5t u1ro ur5opb ur3or uro5s ur5pr ur4serv ur4s3ev ur3s4fe ur2sl urs5laa urs5li ur4s5m ur2sn ur4sp urs5pa ur5spel ur5spor urs5take urs5th ur4sti urs5tik ur3ta ur4tro ur5troe u3ru ur3ui 4urv u1r4y 4usaa us3ad us3a2m us1ap u4sc u5s2cr use5tj u5sie u4sj u4s5l u4sm u2s5n uso2 us3o\xc3\xaf us3os u2s3p us5pi us5pu us4ta us5tag ust3al u2s3te us4t3ei u4sti ust3oo us5tra_ us5tre_ us5tro us5tru ustu4 ust3ur ust3uu u1ta ut3aan utaar5 ut1ac ut3af u3tan uta3s4 ut5c u4t3ees u4tek ut3eks ut3em ut5emm uter5an ut3ex ut2h ut3ho u2tj u1to uto5f ut3oog uto3pe utop4l uto5po utop4r uto5s ut3saa ut3s2c uts5eng uts2m ut1sn ut3sp ut4spa ut4spo ut2st uts5tak ut4ste_ ut5sten ut3str ut5su utt4 u1tu ut5w u4u4 uur3a4 uur3e4 uur5i uur3k uur1o2 uur5ste uur5sti 4uut uut3a uut3r uvel4s uve5na uw1a u3wag uw3ar uw5art u1we uw3ec uwe5d uw3een u2w3ei uwe4nen uwes4 u1wi u2w3ij uw5ijz u4wind u3wing u4wins uw3inz uw1o u3woe uwo4ge uw1r uw3u uxa3 u3ya 4uz uze3t4 uzie2 \xc3\xbbt3s4 1\xc3\xbc \xc3\xbc4b \xc3\xbc1n \xc3\xbc3ri \xc3\xbcs3l 1v2 2v_ vaar4ta vaart5r va3de va3g4 va2ki va4kl va2ko va2l3a val5m va3lo va4loe val5si val4s5p vals5tek valu5 va2n van3ac vand4 vang3a van4gr va3no va4noc va1p va3re va5se va3s4o vast3r va3su va3te va2t3h vat5j va3z v4b 4v3c v4e 3ve_ 5veb vee4l veel5e vee3p4 vees4 ve3g4h vei3s4 vei5tj 3vek 5vel ve4l3a4g vel4d3o ve3le vel3k 5vem vem4a ve4na ve5nare 5vend ven5k ve2n3o 2venr ven4s3e ven4sl vens5lan vens5lo ven4sp vens5taak vens5take vens5tek ven4s3u4 ve2r ver1a ver5aas ve4rad vera4g ve4rand ver5do ve3rec ver3ed ve3reg ve3rei ver5eis ve5ren_ ve5rend ver3e4t ver5ijd ver5ijl ver5ijs ve5ring ver5k4 ver3o ve3rom vero5v ver5p ver5spe ver5sta ver5sto ver5tw ver1u ve3ry ve2s3 ves5ti ve2tj ve2to4 vet3og vet3oo ve3tor ve2t3r vet4roe vet5ste 5ve5z 3vi 4vicepa vid5st vie4r3a vie4s3 vies5n vie4tj vi3eu vijf5 vik4s vil4t3j ving4 vings3 vi3o vi5om vi4s3an vi1so vis5ot vis5p vi4st vis5tr vi1tr v3j vje4 vjet1 3vl v3lar vlei3s4 vlie4s5 vlot5s v3lov 5vo_ 3voe voe4t3a voe4t3r voet5sp 3vog voge4 3voi vo2le vol4g3a vol4gra vo2li vol3ij vol5p von4det vond5u 3voo voo5d vooi5t voorn4 voor5na vo3ra vorm3a vors5te_ vor5sten vos3 3vot vot3j 3vou vous5 3v4r2 vrei5 vrie4s vrij5k4 vrijs4 vrij5ste v3t vues4 vu2l vul5p vuur5s vy3 2w_ waad3 w2aar waar5e waar5ste wa4b3 wa2ba wa5bl w2ad wa3dr w4ag wa2la wa3lan 4wam wan4d5r wan4gr wang5sl wa2n1o wan3s4 3wap w4ar w5arc 5ward war4st wars5te wart3j war4to wa2si wa4s5l wa4s5p was5tr 1wate wat5j wa3tr 3way 2wb w1c 2w1d w4doo wd3oom we2a 2we2c 3wed wede4 we2d3i we4d3r wee4ki wee4k3r wee3lo wee3s4t wee5ste 3weg we4g1a we4gerv weg3l we2g3o we4g5r wei3s wei5tj we4k3r we4le2 4welem we3li we2lo wel3s we2m wem3a we3me we2n wena4 wen3ad we3ne4 we4nem we5nen_ wen5enk we3ni wen4k3a wen3o wen5to wer2f 4werg wer4ka wer4k5l wer4kn wer4k3o wer4k3r werk5ru wer4k3u4 wer4k3w wer4p3a wer4p3l wer4pr wer4s wer5ste we2s3 we3spo wes4t5o 3wet_ we2th we2t3j wet4st we2t3u 2wex wezen4s5 2w1f w1g w1h wie4la wie4t w4ij 3wijd wij4ka wij4s wijs3l wijs3p wijs5ta wi4k 3wil wind3a win4d3r w4ing 2winr win2s winst5aa winst5r wi4t3h wit3j wi2t3o4 wit3r w1j 2w1k 2w1l 4w1m 2wn wn3ac w3ne w3ni w3no w3ob w2oe woes3 woest5a wo4l wol3a wolf4s5 woon5sf woor4d5r wor4g3e w1p wren4st wrens5te_ 2ws ws3a2 w3sc w1sl w2s3le w3som w3sp ws2pl w4spr w5spra w1s4t w4stij 2wt wtes3 wtje5sp w1to w1tr wu2 wva2 w1w xaf4 xa3g xamen5t xan3 xan5t x1c x4e xen4d xe3ro x1f x1h xie4t xi3g xi5o xi3sta xi3sto xi4t3i x3l x1m xo3no x4op xo3s4 x1p xpre2 xpres5 x3r x3so x3sp x1t x2tak xtie2 x3w xy3 y1a ya3s4 ya4s5p y3at yba2l3 yber4t3 y1c ycho3 y3co y1d4 ydi3a y5dr ydro3 y1e yes3 y3\xc3\xa9s y3\xc3\xa8 y1f y1g ygu2 y1h y1i y4in y5is yksge4 y3la yl3al y3le y4l3et y3lo ylo3l ym2f5l ym5pa y3na yn3er y3no yn1t y1o y3on y3os yo3t y1p y3p4h ypo3 ypot4 yp3s yp5si y1r y3r4e y5ri ys3 y1s4a y3s4c y5s4e yse5t y3s4f y3s4h ys4i y3s4o y3s4p ys5pl ys4ta ys5tr y3sy y1t yt3hu yto3 y2tof ytop4 yu5a y3ui y3u2r yvari5 y1w4 1z 4z_ zaar5t za3f2 zags4t za2k3a zak3r zan2d zand5a4 zan3di zan4dr zang3s za3po za3s4 4zb 4zc 4zd z4e zee3k zeel5d zee3r4o zeero5v zeer5s zee3s4 ze5ge zeg4sl zei3sp ze5k zel5dr ze3lem zel2f1 zel4so zen4d3a ze4nin zen5k zen3o4 zen4og ze3non ze4r3a ze3ro zer2s zer4s5e ze4s3 ze5sch zes5e zes5l ze5ste ze2t3a ze2t3h ze4ti ze2t3j ze2t3r zeve2 zeven3 4zf 4zg 2z3h z2i ziek3l zie4k3o ziek3w ziel4s zie5sl 3zif zi2g5a zij5kl zij3po zij5s4 zik2w zi4n3a4 zings3 zin4k3l zin4s zins3t zins5ta zin5str zi3o5 zipi3 zi4t zit3e zit3j zit3u4 4z3k 4z3l 4zm zodi5 zoet3j zoet5ste zo3f2 zoi4 zo5ie zo3la zome4 zo2na zon3sf zon5ta zooi5tj zo1p zor4g3a zor4gl zor4gr zo2t zot3h zo3tr zo3v 4z3p 4z3r 2zs 4z5t zui4d3i zui4dr zus3 2zv z4w zwets5te_ 5zy 2z3z zz3in zz3or z4z5w";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/pl.php b/inc/3rdparty/libraries/mpdf/patterns/pl.php
new file mode 100644 (file)
index 0000000..f531105
--- /dev/null
@@ -0,0 +1,9 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/    
+*/
+
+$patterns="_a1 _a2b1s _a2b2s3t _a2d3 _a1d4a1 _ad4e1 _ad4i1 _ad4o1 _ad4u1 _ad4y1 _ad5a2p1t _ad5i2u1 _ad5op _ad5or _ae2 _ae3ro1 _a1eroa2 _ae1roe2 _aeroi2 _aero1o2 _aerou2 _a2n1t _anty1 _a1ntya2 _antye2 _antyi2 _antyo2 _antyu2 _a2r1c _arcy1 _arcy3b2 _arcy3b1z2 _arcy3k2 _arcy3\xc5\x822 _arcy3m2 _a1rcya2 _arcye2 _arcyi2 _arcyo2 _arcyu2 _a2u1 _au3g2 _au3k2 _au3t2 _auto1 _auto3c4h2 _a1utoa2 _autoe2 _autoi2 _auto1o2 _a1utotra1 _autotra2n2s3 _au1tou2 _b8 _4b3b8 _2b1c8 _2b1\xc4\x878 _2b1d8 _be1 _be2z3 _beza1 _be3z4an _be1ze1 _be3z4ec _bezi1 _be3z4ik _be2z1c _bezc4h2 _bezm2 _bezo2 _bezo2b1j _bezw2 _be4z3z _bezzw2 _2b1f8 _2b1g8 _bh8 _bj8 _2b1k8 _bl8 _b\xc5\x828 _2b1m8 _2b1n8 _2b1\xc5\x848 _2b1p8 _br8 _br4z8 _2b1s8 _2b1\xc5\x9b8 _2b1t8 _bv8 _bw8 _bx8 _2b1z8 _2b1\xc5\xba8 _2b1\xc5\xbc8 _c8 _ca1 _ca\xc5\x82o1 _ca\xc5\x82o3k2 _ca\xc5\x82o3\xc5\x9b2 _2c1b8 _4c3c8 _2c1\xc4\x878 _2c1d8 _2c1f8 _2c1g8 _c4h8 _c2h2r _chr4z8 _ci1 _ci2e1 _cie2n1k _cienko1 _cienko3w2 _ciep\xc5\x82o1 _ciep\xc5\x82o3kr2 _cj8 _2c1k8 _2c1l8 _c\xc5\x828 _2c1m8 _2c1n8 _2c1\xc5\x848 _2c1p8 _cr8 _2c1s8 _2c1\xc5\x9b8 _2c1t8 _cv8 _cw8 _cx8 _c4z8 _cza1 _cza2r1n _czarno1 _czarno3k2 _2c2z1k8 _2c2z1t _czte1 _czte1re1 _cztere2c4h3 _cztere2c2h1s _czte1re1chse1 _czterechse2t3 _cztero1 _cztero3\xc5\x9b2 _czw\xc3\xb31 _czw\xc3\xb32r3 _czw\xc3\xb33r4a1 _czw\xc3\xb33r4\xc4\x851 _czw\xc3\xb33r4e1 _czw\xc3\xb33r4\xc4\x991 _czw\xc3\xb33r4o1 _2c1\xc5\xba8 _2c1\xc5\xbc8 _\xc4\x878 _2\xc4\x871b8 _2\xc4\x871c8 _4\xc4\x873\xc4\x878 _2\xc4\x871d8 _2\xc4\x871f8 _2\xc4\x871g8 _\xc4\x87h8 _\xc4\x87j8 _2\xc4\x871k8 _\xc4\x87l8 _\xc4\x87\xc5\x828 _2\xc4\x871m8 _2\xc4\x871n8 _2\xc4\x871\xc5\x848 _2\xc4\x871p8 _\xc4\x87r8 _2\xc4\x871s8 _2\xc4\x871\xc5\x9b8 _2\xc4\x871t8 _\xc4\x87v8 _\xc4\x87w8 _\xc4\x87wi1 _\xc4\x87wi2e1 _\xc4\x87wie2r2\xc4\x873 _\xc4\x87x8 _2\xc4\x871z8 _2\xc4\x871\xc5\xba8 _2\xc4\x871\xc5\xbc8 _d8 _da1 _dale1 _daleko1 _daleko3w2 _2d1b8 _2d1c8 _2d1\xc4\x878 _4d3d8 _de1 _de2z3 _deza2 _dezabi1 _de3z4a3bil _de3z4a3wu1 _de1ze1 _de3z4el _de3z4er _de3z4y1 _dezo2 _2d1f8 _2d1g8 _dh8 _dj8 _2d1k8 _dl8 _d\xc5\x828 _d\xc5\x82u1 _d\xc5\x82ugo1 _d\xc5\x82ugo3tr2 _d\xc5\x82ugo3w2 _2d1m8 _2d1n8 _2d1\xc5\x848 _do1 _do3b2 _do3c2 _do3\xc4\x872 _do3d2 _do3f2 _do3g2 _do3h2 _do3k2 _do3l2 _do3\xc5\x822 _do3m2 _do3p2 _do3r2 _do3s2 _do3\xc5\x9b2 _do3t2 _do3w2 _do3z2 _do3\xc5\xba2 _do3\xc5\xbc2 _do4k3t _do4l3n _do4\xc5\x823k _do4m3k _do4r3s _do4w3c _do5m4k2n _dobr2 _dobr4z2 _doc4h2 _doc4z2 _dod4z2 _dod4\xc5\xba2 _dod4\xc5\xbc2 _dogr4z2 _do2p1c _dopc4h2 _dopr4z2 _dor4z2 _do2r1\xc5\xbc2 _dosc4h2 _dosm2 _dos4z2 _do2t1k2 _dotr2 _2d1p8 _dr8 _dro1 _dro1go1 _drogo3w2 _dr4z8 _2d1s8 _2d1\xc5\x9b8 _2d1t8 _dv8 _dw8 _dw\xc3\xb31 _dw\xc3\xb32j3 _dw\xc3\xb33j4a1 _dw\xc3\xb33j4\xc4\x851 _dw\xc3\xb33j4e1 _dw\xc3\xb33j4\xc4\x991 _dw\xc3\xb33j4o1 _dx8 _dy1 _dy2s3 _dy2z3 _dy3s4e1 _dy3s4o1 _dy3s4ta1 _dy3s4y1 _dy3s4z _dy3z4e1 _dyzu2 _d4z8 _dzi1 _dzi2e1 _dzi1esi1 _dziesi2\xc4\x991 _dzi1esi1\xc4\x99ci1 _dziesi\xc4\x99ci2o1 _dziesi\xc4\x99cio3\xc5\x9b2 _dzi1ewi1 _dziewi2\xc4\x991 _dziewi\xc4\x992\xc4\x873 _dzi1ewi1\xc4\x99ci1 _dziewi\xc4\x99ci2o1 _dziewi\xc4\x99cio3\xc5\x9b2 _dziewi\xc4\x992\xc4\x871s _dzie1wi\xc4\x99\xc4\x87se1 _dziewi\xc4\x99\xc4\x87se2t3 _d4\xc5\xba8 _d4\xc5\xbc8 _e1 _e2k2s3 _e1me1 _emes4z _e1me1sze1 _e2m3e2s5ze2t _e1se1 _e2s1e2s1ma1 _e2s1ha1 _e2s1t _ego1 _egoa2 _e1goe2 _egoi2 _ego1o2 _egou2 _eks4y1 _e1le1 _ele2k1t _elektro1 _elektroa2 _e1le1ktroe2 _elektroi2 _elektro1o2 _elektrou2 _f8 _fb8 _2f1c8 _f\xc4\x878 _fd8 _4f3f8 _fg8 _fh8 _fj8 _2f1k8 _fl8 _f\xc5\x828 _2f1m8 _2f1n8 _f\xc5\x848 _fp8 _fr8 _fs8 _f\xc5\x9b8 _ft8 _fv8 _fw8 _fx8 _fz8 _f\xc5\xba8 _f\xc5\xbc8 _g8 _2g1b8 _2g1c8 _2g1\xc4\x878 _2g1d8 _ge1 _ge2o3 _2g1f8 _4g3g8 _gh8 _gj8 _2g1k8 _gl8 _g\xc5\x828 _2g1m8 _gn8 _2g1\xc5\x848 _go1 _go2u3 _2g1p8 _gr8 _gru1 _grubo1 _grubo3w2 _gr4z8 _2g1s8 _2g1\xc5\x9b8 _2g1t8 _gv8 _gw8 _gx8 _2g1z8 _2g1\xc5\xba8 _2g1\xc5\xbc8 _h8 _2h1b8 _2h1c8 _2h1\xc4\x878 _2h1d8 _2h1f8 _2h1g8 _4h3h8 _hi1 _hipe1 _hipe2r3 _hipe3r4o1 _hipera2 _hipe1re2 _2h1j8 _2h1k8 _2h1l8 _2h1\xc5\x828 _2h1m8 _2h1n8 _2h1\xc5\x848 _2h1p8 _2h1r8 _2h1s8 _2h1\xc5\x9b8 _2h1t8 _hv8 _2h1w8 _hx8 _2h1z8 _2h1\xc5\xba8 _2h1\xc5\xbc8 _i1 _i2n3 _i2s3l _i1ni1 _i3n4ic _i3n4o1 _i3n4u1 _i4n5o2k _i2n1f _infla1 _in4f3lan _ino3w2 _izo1 _izoa2 _izoe2 _i1zoi2 _izo1o2 _izou2 _j8 _ja1 _jad\xc5\x82o1 _jad\xc5\x82o3w2 _2j1b8 _2j1c8 _2j1\xc4\x878 _2j1d8 _2j1f8 _2j1g8 _2j1h8 _4j3j8 _2j1k8 _2j1l8 _2j1\xc5\x828 _2j1m8 _2j1n8 _2j1\xc5\x848 _2j1p8 _2j1r8 _2j1s8 _2j1\xc5\x9b8 _2j1t8 _jv8 _2j1w8 _jx8 _2j1z8 _2j1\xc5\xba8 _2j1\xc5\xbc8 _k8 _2k1b8 _2k1c8 _2k1\xc4\x878 _2k1d8 _2k1f8 _2k1g8 _kh8 _ki1 _ki2l1k _kilku1 _kilkuse1 _kilkuse2t3 _kilkuseto2 _kj8 _4k3k8 _kl8 _k\xc5\x828 _2k1m8 _2k1n8 _2k1\xc5\x848 _ko1 _ko1\xc5\x82o1 _ko\xc5\x82o3w2 _ko2n1t _kon2t2r3 _kon3tr4a1 _kon3tr4e1 _ko1ntro2 _kon3tr4o3l _kon3tr4o3w _kon3tr4y1 _kon4tr5a2gi1 _kon4tr5a2se1 _kon4tr5a2sy1 _kon4tr5a2ta1 _kon4tr5a2d1m _kon4tr5a2k1c _kon4tr5a2l1t _kon4tr5a2r1g _kontru2 _2k1p8 _kr8 _kro1 _kro2\xc4\x873 _kr\xc3\xb31 _kr\xc3\xb32t1k _kr\xc3\xb3tko1 _kr\xc3\xb3tko3tr2 _kr\xc3\xb3tko3w2 _kr4z8 _2k1s8 _2k1\xc5\x9b8 _2k1t8 _kv8 _kw8 _kx8 _2k1z8 _2k1\xc5\xba8 _2k1\xc5\xbc8 _l8 _2l1b8 _2l1c8 _2l1\xc4\x878 _2l1d8 _2l1f8 _2l1g8 _2l1h8 _2l1j8 _2l1k8 _4l3l8 _2l1\xc5\x828 _2l1m8 _2l1n8 _2l1\xc5\x848 _2l1p8 _2l1r8 _2l1s8 _2l1\xc5\x9b8 _2l1t8 _lu1 _ludo1 _ludo3w2 _lv8 _2l1w8 _lx8 _2l1z8 _2l1\xc5\xba8 _2l1\xc5\xbc8 _\xc5\x828 _2\xc5\x821b8 _2\xc5\x821c8 _2\xc5\x821\xc4\x878 _2\xc5\x821d8 _2\xc5\x821f8 _2\xc5\x821g8 _2\xc5\x821h8 _2\xc5\x821j8 _2\xc5\x821k8 _2\xc5\x821l8 _4\xc5\x823\xc5\x828 _2\xc5\x821m8 _2\xc5\x821n8 _2\xc5\x821\xc5\x848 _2\xc5\x821p8 _2\xc5\x821r8 _2\xc5\x821s8 _2\xc5\x821\xc5\x9b8 _2\xc5\x821t8 _\xc5\x82v8 _2\xc5\x821w8 _\xc5\x82x8 _2\xc5\x821z8 _2\xc5\x821\xc5\xba8 _2\xc5\x821\xc5\xbc8 _m8 _2m1b8 _2m1c8 _2m1\xc4\x878 _2m1d8 _2m1f8 _2m1g8 _2m1h8 _mi1 _mi1li1 _mili2a1 _mili3a2m1p _2m1j8 _2m1k8 _2m1l8 _2m1\xc5\x828 _4m3m8 _2m1n8 _2m1\xc5\x848 _mo1 _mo2\xc5\xbc1n _mo1\xc5\xbcno1 _mo\xc5\xbcno3w2 _2m1p8 _2m1r8 _2m1s8 _2m1\xc5\x9b8 _2m1t8 _mv8 _2m1w8 _mx8 _2m1z8 _2m1\xc5\xba8 _2m1\xc5\xbc8 _n8 _na1 _na2d2 _na2j _na3b2 _na3c2 _na3\xc4\x872 _nad3i2 _na3d4ir _nad3\xc5\x822 _nad\xc5\x82u1 _na3d4\xc5\x82ub _na2d3m2 _nadmu1 _na3d4muc4h _nad3r2 _na3d4r2w _nadre1 _nadre2p1c _na3d4repc4z _na3d4re2p1t _nadr\xc4\x991 _na3d4r\xc4\x99c4z _nadru1 _na3d4ruk _na3d4r4z _nad3w2 _nadwo1 _na3d4wo2r1n _na1da1 _na3daj _na3d\xc4\x851 _na3de1 _na3d\xc4\x991 _na3do1 _na3dy1 _nad4z2 _na3dzi1 _na3d4\xc5\xba2 _na3f2 _na3g2 _na3h2 _na1ja1 _na3ja2z1d _na3j\xc4\x851 _na3je1 _na3j\xc4\x991 _na3k2 _na3l2 _na3\xc5\x822 _na3m2 _na3p2 _na3r2 _na3s2 _na3\xc5\x9b2 _na3t2 _na3u2 _na3w2 _na3z2 _na3\xc5\xba2 _na3\xc5\xbc2 _na4d3o2b2\xc5\x82 _nado1bo1 _nadobo2j1c _na4d3o2bojc4z _na4d3o2bowi1 _nado1bro1 _na4d3o2brot _na4d3o2dr4z _nadoki1 _nadoki2e1 _na4d3o2kien _nado2l1b _na4d3olbr4z _na4d5rz\xc4\x851 _nadrze1 _na4d5rzec4z _na4d5rz\xc4\x991 _na4d5rzy1 _nadzi2e1 _na4d5ziem _na4f3c _na4f3t _na4j3e2f _na4j3e2g _na4j3e2k2s _na4j3e2ko1 _na4j3e2n _na4j3e2r _na4j3e2s _na4j3e2w _na4j3e2m1f _na4j3e2u1 _na4r3c _na4r3d _na4r3k _na4r3r _na4r3t _nabr4z2 _nac4h2 _nac4z2 _na2d3b2 _na2d3c2 _na2d3\xc4\x872 _na4d3d2 _nade3t2 _na1deta1 _nad3e2tat _na2d3f2 _na2d3g2 _nad3h2 _nad3j2 _na2d3k2 _nad3l2 _na2d3n2 _na2d3p2 _na2d3s2 _na2d3\xc5\x9b2 _na2d3t2 _nad3u2 _na2dz1m _nadzmy1 _nad5z2mys _nad5zo1 _nad5z\xc3\xb31 _nadzwy1 _nad5zwyc4z _nad5\xc5\xbc2 _nadc4h2 _nadc4z2 _nadd4\xc5\xba2 _nade3b2 _nade3c2 _nade3\xc4\x872 _nade3d2 _nade3f2 _nade3g2 _nade3h2 _nade3k2 _nade3l2 _nade3\xc5\x822 _nade3m2 _nade3p2 _nade3r2 _nade3s2 _nade3\xc5\x9b2 _nade3w2 _nade3z2 _nade3\xc5\xba2 _nade3\xc5\xbc2 _nade4p3c _nade4p3n _nade4p3t _nadec4h2 _nadec4z2 _naded4z2 _naded4\xc5\xba2 _naded4\xc5\xbc2 _nader4z2 _nade2r1\xc5\xbc2 _nades4z2 _nads4z2 _nad\xc5\x9bro1 _nad\xc5\x9brod4z _nad\xc5\x9brodzi1 _nad\xc5\x9brodzi2e1 _nad\xc5\x9brod5ziem _nadtr2 _nagr4z2 _naj3a2k1t _naj3a2u1 _na2j3b2 _na2j3c2 _na2j3\xc4\x872 _na2j3d2 _na2j3f2 _na2j3g2 _na2j3h2 _naj3i2 _na2j3k2 _na2j3l2 _na2j3\xc5\x822 _na2j3m2 _naj3o2 _naj3o2b2 _naj3o2c2 _naj3o2\xc4\x872 _naj3o2d2 _naj3o2f2 _naj3o2g2 _naj3o2h2 _naj3o2k2 _naj3o2l2 _naj3o2\xc5\x822 _naj3o2m2 _naj3o2p2 _naj3o2r2 _naj3o2s2 _naj3o2\xc5\x9b2 _naj3o2t2 _naj3o2w2 _naj3o2z2 _naj3o2\xc5\xba2 _naj3o2\xc5\xbc2 _na2j3p2 _na2j3r2 _najro1 _naj3ro2z3 _na2j3s2 _na2j3\xc5\x9b2 _na2j3t2 _naj3u2 _na2j3w2 _na2j3z2 _na2j3\xc5\xba2 _na2j3\xc5\xbc2 _najbe1 _najbe2z3 _najbezw2 _najc4h2 _najc4z2 _najdo1 _najdo3b2 _najdo3c2 _najdo3\xc4\x872 _najdo3d2 _najdo3f2 _najdo3g2 _najdo3h2 _najdo3k2 _najdo3l2 _najdo3\xc5\x822 _najdo3m2 _najdo3p2 _najdo3r2 _najdo3s2 _najdo3\xc5\x9b2 _najdo3t2 _najdo3w2 _najdo3z2 _najdo3\xc5\xba2 _najdo3\xc5\xbc2 _najdoc4h2 _najdoc4z2 _najdod4z2 _najdod4\xc5\xba2 _najdod4\xc5\xbc2 _najdor4z2 _najdos4z2 _najdo2t1k2 _najd4z2 _najd4\xc5\xba2 _najd4\xc5\xbc2 _najkr2 _najo2b3c2 _najo2b3\xc4\x872 _najo2b3d2 _najo2b3f2 _najo2b3g2 _najob3h2 _najob3j2 _najo2b3k2 _najob3l2 _najob3\xc5\x822 _najo2b3m2 _najo2b3n2 _najo2b3p2 _najo2b3s2 _najo2b3\xc5\x9b2 _najo2b3t2 _najob3w2 _najo2b3\xc5\xba2 _najo2b3\xc5\xbc2 _najobc4h2 _najobc4z2 _najobd4z2 _najobd4\xc5\xba2 _najobd4\xc5\xbc2 _najobr4z2 _najobs4z2 _najoc4h2 _najoc4z2 _najo2d3c2 _najo2d3\xc4\x872 _najo4d3d2 _najo2d3f2 _najo2d3g2 _najod3h2 _najod3j2 _najo2d3k2 _najod3l2 _najo2d3m2 _najo2d3n2 _najo2d3p2 _najo2d3s2 _najo2d3\xc5\x9b2 _najo2d3t2 _najod3w2 _najod5\xc5\xbc2 _najodc4h2 _najodc4z2 _najodd4z2 _najodd4\xc5\xba2 _najodd4\xc5\xbc2 _najods4z2 _najod4z2 _najod4\xc5\xba2 _najor4z2 _najos4z2 _najro3z4u1 _najr4z2 _najsm2 _najs4z2 _naj2t1k2 _naj2t1r2 _najuc4z2 _najzw2 _nakr2 _napo1 _napo2d2 _napo3b2 _napo3c2 _napo3\xc4\x872 _napo3f2 _napo3g2 _napo3h2 _napo3k2 _napo3l2 _napo3\xc5\x822 _napo3m2 _napo3p2 _napo3r2 _napo3s2 _napo3\xc5\x9b2 _napo3t2 _napo3w2 _napo3z2 _napo3\xc5\xba2 _napo3\xc5\xbc2 _napo4m3p _napoc4h2 _napoc4z2 _napo4d3d _napod4\xc5\xba2 _napod4\xc5\xbc2 _napo2m1k2 _napor4z2 _napos4z2 _napr4z2 _naro1 _naro2z3 _nar4z2 _na2r1\xc5\xbc2 _nasm2 _nas4z2 _na2t1c _natc4h2 _na2t1k2 _naz3m2 _nazw2 _2n1b8 _2n1c8 _2n1\xc4\x878 _2n1d8 _ne1 _ne2o3 _2n1f8 _2n1g8 _2n1h8 _ni1 _ni2e1 _nie3b2 _nie3c2 _nie3\xc4\x872 _nie3d2 _nie3f2 _nie3g2 _nie3h2 _nie3k2 _nie3l2 _nie3\xc5\x822 _nie3m2 _nie3p2 _nie3r2 _nie3s2 _nie3\xc5\x9b2 _nie3t2 _nie3u2 _nie3w2 _nie3z2 _nie3\xc5\xba2 _nie3\xc5\xbc2 _nie4c3c _nie4c3k _nie4d4\xc5\xba3 _nie4m3c _nie4m3k _niec4h2 _niec4z2 _niedo1 _niedo3b2 _niedo3c2 _niedo3\xc4\x872 _niedo3d2 _niedo3f2 _niedo3g2 _niedo3h2 _niedo3k2 _niedo3l2 _niedo3\xc5\x822 _niedo3m2 _niedo3p2 _niedo3r2 _niedo3s2 _niedo3\xc5\x9b2 _niedo3t2 _niedo3w2 _niedo3z2 _niedo3\xc5\xba2 _niedo3\xc5\xbc2 _niedobr4z2 _niedoc4h2 _niedoc4z2 _niedod4z2 _niedod4\xc5\xba2 _niedod4\xc5\xbc2 _niedokr2 _niedo2m1k2 _niedo2p1c _niedopc4h2 _niedor4z2 _niedos4z2 _niedo2t1k2 _nied4z2 _nied4\xc5\xbc2 _nieo2 _nieob2 _nieo2b3c2 _nieo2b3\xc4\x872 _nieo2b3d2 _nieo2b3f2 _nieo2b3g2 _nieob3h2 _nieob3j2 _nieo2b3k2 _nieo2b3m2 _nieo2b3p2 _nieo2b3s2 _nieo2b3\xc5\x9b2 _nieob3w2 _nieo2b3\xc5\xba2 _nieo2b3\xc5\xbc2 _nieobc4h2 _nieobc4z2 _nieobd4z2 _nieobd4\xc5\xba2 _nieobd4\xc5\xbc2 _nieobs4z2 _nieoc2 _nieoc4h2 _nieoc4z2 _nieo\xc4\x872 _nieod2 _nieo2d3c2 _nieo2d3\xc4\x872 _nieo4d3d2 _nieo2d3f2 _nieo2d3g2 _nieod3h2 _nieod3j2 _nieo2d3k2 _nieod3l2 _nieod3\xc5\x822 _nieo2d3n2 _nieo2d3p2 _nieo2d3s2 _nieo2d3\xc5\x9b2 _nieo2d3t2 _nieodw2 _nieod3w1r _nieod5\xc5\xbc2 _nieodc4h2 _nieodc4z2 _nieodd4z2 _nieodd4\xc5\xba2 _nieodd4\xc5\xbc2 _nieods4z2 _nieod4z2 _nieod4\xc5\xba2 _nieof2 _nieog2 _nieoh2 _nieok2 _nieol2 _nieo\xc5\x822 _nieom2 _nieop2 _nieor2 _nieor4z2 _nieos2 _nieos4z2 _nieo\xc5\x9b2 _nieot2 _nieow2 _nieoz2 _nieo\xc5\xba2 _nieo\xc5\xbc2 _niepo1 _niepo2d2 _niepo3b2 _niepo3c2 _niepo3\xc4\x872 _niepod3\xc5\x822 _niepo3d4\xc5\x82u1 _niepo2d3m2 _niepodmu1 _niepo3d4muc4h _niepod3r2 _niepodra1 _niepo3d4rap _niepo3d4ra\xc5\xbc _nie1podre1 _niepodre2p1c _niepo3d4repc4z _niepo3d4re2p1t _niepodr\xc4\x991 _niepo3d4r\xc4\x99c4z _niepod3w2 _niepodwa1 _niepo3d4waj _niepo1dwo1 _niepo3d4woj _niepo3do1 _niepo3du1 _niepo3d4z2 _niepo3d4\xc5\xba2 _niepo3f2 _niepo3g2 _niepo3h2 _niepo3k2 _niepo3l2 _niepo3\xc5\x822 _niepo3m2 _niepo3p2 _niepo3r2 _niepo3s2 _niepo3\xc5\x9b2 _niepo3t2 _niepo3w2 _niepo3z2 _niepo3\xc5\xba2 _niepo3\xc5\xbc2 _niepodoc4h _niepo1do1cho1 _niepo4d3o2choc _niepo4d3o2str4z _niepoc4h2 _niepoc4z2 _niepo2d3b2 _niepo2d3c2 _niepo2d3\xc4\x872 _niepo4d3d2 _niepo2d3f2 _niepo2d3g2 _niepod3h2 _niepod3j2 _niepo2d3k2 _niepod3l2 _niepo2d3n2 _niepo2d3p2 _niepo2d3s2 _niepo2d3\xc5\x9b2 _niepo2d3t2 _niepod5\xc5\xbc _niepodc4h2 _niepodc4z2 _niepodd4\xc5\xba2 _niepodd4\xc5\xbc2 _niepodsm2 _niepods4z2 _niepor4z2 _nieposm2 _niepos4z2 _niepr4z _nie1prze1 _nieprze2d2 _nieprze3b2 _niepr4ze3br4z2 _nieprze3c2 _nieprze3\xc4\x872 _nieprzed3\xc5\x822 _nieprzed\xc5\x82u1 _nieprze3d4\xc5\x82u\xc5\xbc _nieprze2d3m2 _nieprzedmu1 _nieprze3d4muc4h _nieprzed3r2 _nieprzedra1 _nieprzedra1ma1 _nieprze3d4ramat _nieprzedru1 _nieprze3d4ruk _nieprzedry1 _nieprze3d4ryl _niepr4ze3d4r4z2 _nieprzed3u2 _nieprze3d4um _nieprze3dy1 _nieprze3d4z2 _nieprze3d4\xc5\xba2 _nie1prze1e2 _nieprze3e2k2s3 _nieprze3f2 _nieprze3g2 _nieprze3h2 _nieprze3k2 _nieprze3l2 _nieprze3\xc5\x822 _nieprze3m2 _nieprze3n2 _nieprze3p2 _nieprze3r2 _nieprze3s2 _nieprze3\xc5\x9b2 _nieprze3t2 _nieprze3w2 _nieprze3z2 _nieprze3\xc5\xba2 _nieprze3\xc5\xbc2 _nieprzed\xc5\x82u\xc5\xbcy1 _nieprze4d5\xc5\x82u\xc5\xbcyc _nieprze4d5z2a1 _nieprze4d5z1g2 _ni1eprzedzi1 _nieprze4d5zim _nieprze4d5zj _nieprze4d5z1l _nieprze4d5z2w2r _nieprzedzwo1 _nieprze4d5zwoj _nieprze4d5\xc5\xbc2 _nieprzec4h2 _nieprzec4z2 _nieprze2d3c2 _nieprze2d3\xc4\x872 _nieprze4d3d2 _nieprze2d3f2 _nieprze2d3g2 _nieprzed3h2 _ni1eprzed3i2 _nieprzed3j2 _nieprze2d3k2 _nieprzed3l2 _nieprze2d3n2 _nieprze2d3p2 _nieprze2d3s2 _nieprzed3s4z2 _nieprze2d3\xc5\x9b2 _nieprze2d3t2 _nieprzed3w2 _nieprzedc4h2 _nieprzedc4z2 _nieprzedd4z2 _nieprzedd4\xc5\xba2 _nieprzedd4\xc5\xbc2 _niepr4zegr4z2 _nieprzekl2 _nieprzekr2 _nieprze2\xc5\x821k2 _nieprze2p1c _nieprzepc4h2 _niepr4zer4z2 _nieprze2r1\xc5\xbc2 _nieprzesc4h2 _nieprzesm2 _nieprzes4z2 _nieprze2t1k2 _nieprzetr2 _niero1 _niero2z3 _nie1ro3z4e1 _niero3z4u1 _nierozbr4z2 _nieroze3r2 _nierozm2 _niero2z1\xc5\x9b2 _niero2z1t _nieroztr2 _nier4z2 _niesu1 _niesu2b3 _ni1esubi1 _ni2e1su3b4i2e1 _nies4z2 _nie2t1k2 _nietr2 _nieuc4z2 _nieuw2 _niewy1 _niewy3b2 _niewy3c2 _niewy3\xc4\x872 _niewy3d2 _niewy3f2 _niewy3g2 _niewy3h2 _niewy3k2 _niewy3l2 _niewy3\xc5\x822 _niewy3m2 _niewy3p2 _niewy3r2 _niewy3s2 _niewy3\xc5\x9b2 _niewy3t2 _niewy3w2 _niewy3z2 _niewy3\xc5\xba2 _niewy3\xc5\xbc2 _niewybr4z2 _niewyc4h2 _niewyc4z2 _niewyd4z2 _niewyd4\xc5\xba2 _niewyd4\xc5\xbc2 _niewyr4z2 _niewys4z2 _niewy2t1k2 _niewytr2 _niezw2 _2n1j8 _2n1k8 _2n1l8 _2n1\xc5\x828 _2n1m8 _4n3n8 _2n1\xc5\x848 _2n1p8 _2n1r8 _2n1s8 _2n1\xc5\x9b8 _2n1t8 _nv8 _2n1w8 _nx8 _2n1z8 _2n1\xc5\xba8 _2n1\xc5\xbc8 _\xc5\x848 _2\xc5\x841b8 _2\xc5\x841c8 _2\xc5\x841\xc4\x878 _2\xc5\x841d8 _2\xc5\x841f8 _2\xc5\x841g8 _2\xc5\x841h8 _2\xc5\x841j8 _2\xc5\x841k8 _2\xc5\x841l8 _2\xc5\x841\xc5\x828 _2\xc5\x841m8 _2\xc5\x841n8 _2\xc5\x841\xc5\x848 _2\xc5\x841p8 _2\xc5\x841r8 _2\xc5\x841s8 _2\xc5\x841\xc5\x9b8 _2\xc5\x841t8 _\xc5\x84v8 _2\xc5\x841w8 _\xc5\x84x8 _2\xc5\x841z8 _2\xc5\x841\xc5\xba8 _2\xc5\x841\xc5\xbc8 _o1 _o2b2 _o2d2 _ot2 _o2t1c _otc4h _o2t3c2h2\xc5\x82 _ob3l2 _oblu1 _o3b4luzg _ob3\xc5\x822 _o3b4\xc5\x82\xc4\x851 _o3b4\xc5\x82\xc4\x991 _o1b\xc5\x82o1 _o3b4\xc5\x82oc _ob3r _obra1 _o3b4ra\xc4\x87 _o3b4raso1 _o1bro1 _o3b4ron _o3b4ro\xc5\x84 _obry1 _o3b4ryz _o3b4ry\xc5\xba _o3b4r4z2 _o3be1 _o3bi1 _od3i2 _o3d4i2u1 _od3r2 _odra1 _o3d4rap _odr\xc4\x991 _o3d4r\xc4\x99t _o1dro1 _odrobi1 _o3d4robin _odru1 _o3d4rut _od2r1w _o3d4rwi1 _odr4z2 _odrze1 _o3d4rze\xc4\x87 _o3d4rz2w _od5z2 _odzi1 _o3d6zi2a1 _o3d6zi2e1 _o3de1 _o2l1\xc5\x9b _o3l2\xc5\x9bn _o4b5\xc5\x82oc4z _o4b5rz\xc4\x851 _obrze1 _o4b5rzez _obrz\xc4\x991 _o4b5rz\xc4\x99d _obrzu1 _o4b5rzuc _o4b5rzut _obrzy1 _o4b5rzyn _o4d7ziar _o4d7ziem _oa2 _oa3z _o2b3c2 _o2b3\xc4\x872 _o2b3d2 _o2b3f2 _o2b3g2 _ob3h2 _ob3j2 _o2b3k2 _o2b3m2 _o2b3n2 _o1bo1 _ob3o2str4z _o2b3p2 _o2b3s2 _o2b3\xc5\x9b2 _o2b3t2 _obu1 _ob3u2m2 _ob3w2 _o2b3\xc5\xba2 _o2b3\xc5\xbc2 _obc4h2 _obc4z2 _obd4z2 _obd4\xc5\xba2 _obd4\xc5\xbc2 _obe3b2 _obe3c2 _obe3\xc4\x872 _obe3d2 _obe3f2 _obe3g2 _obe3h2 _obe3k2 _obe3l2 _obe3\xc5\x822 _obe3m2 _obe3p2 _obe3r2 _obe3r3t _obe3s2 _obe3\xc5\x9b2 _obe3t2 _obe3w2 _obe3z2 _obe3\xc5\xba2 _obe3\xc5\xbc2 _obe4c3n _obe4z3w _obec4h2 _obec4z2 _obed4z2 _obed4\xc5\xba2 _obed4\xc5\xbc2 _obe2r3m _ober4z2 _obe2r1\xc5\xbc2 _obesc4h2 _obes4z2 _obe2t1k2 _obi3b2 _obs4z2 _oc2 _oc4h2 _oc2h2r _ochr4z2 _oc4z2 _o\xc4\x872 _oda1 _od3a2u1 _o2d3b2 _o2d3c2 _o2d3\xc4\x872 _o4d3d2 _o2d3f2 _o2d3g2 _od3h2 _o1d3i2zo1 _od3j2 _o2d3k2 _od3l2 _o2d3m2 _o2d3n2 _o1do1 _od3o2s _o2d3p2 _o2d3s2 _o2d3\xc5\x9b2 _o2d3t2 _odu1 _od3u2c4z _od3u2m2 _od3w2 _od5\xc5\xbc2 _odbe1 _odbe2z3 _odc4h2 _odc4z2 _odd4z2 _odd4\xc5\xba2 _odd4\xc5\xbc2 _ode3b2 _ode3c2 _ode3\xc4\x872 _ode3d2 _ode3f2 _ode3g2 _ode3h2 _ode3k2 _ode3l2 _ode3\xc5\x822 _ode3m2 _ode3m1k2 _ode3p2 _ode3r2 _ode3s2 _ode3\xc5\x9b2 _ode3t2 _ode3w2 _ode3z2 _ode3\xc5\xba2 _ode3\xc5\xbc2 _odec4h2 _odec4z2 _oded4z2 _oded4\xc5\xba2 _oded4\xc5\xbc2 _ode2p1c _odepc4h2 _oder4z2 _ode2r1\xc5\xbc2 _odes4z2 _ode2t1c _odetc4h2 _ode2t1k2 _odkr4z2 _ods4z2 _od4\xc5\xba2 _of2 _og2 _ogni1 _o1gni2o1 _ognio3tr2 _og\xc3\xb31 _og\xc3\xb32l1n _o1g\xc3\xb3lno1 _og\xc3\xb3lno3k2 _oh2 _ok2 _oka1 _oka3m2 _okr2 _ole1 _o1le2o3 _om2 _op2 _o2p1c _opc4h2 _o2r1t _or2t\xc4\x991 _or4z2 _o2r2\xc5\xbc2 _os2 _osi1 _osi2e1 _osie2m3 _osie2m1s _osie1mse1 _osiemse2t3 _os4z2 _o\xc5\x9b2 _o\xc5\x9bmi1 _o1\xc5\x9bmi2o1 _o\xc5\x9bmio3\xc5\x9b2 _ow2 _oz2 _o\xc5\xba2 _o\xc5\xbc2 _p8 _2p1b8 _2p1c8 _pc4h8 _2p1\xc4\x878 _2p1d8 _pe1 _pe2r3 _pe3c2k _pe3r4e1 _pe3r4i1 _pe3r4o1 _pe3r4u1 _pe3r4y1 _pe4r5i2n _pe1e2 _pe1e1se1 _pee2se2l _pe2\xc5\x821n _pe\xc5\x82no1 _pe\xc5\x82no3kr2 _pe1pe1 _pe1pe1e2 _pepee2r _pepee2s _pe1ze1 _peze2t1p _pe1ze1tpe1 _pe1ze1tpe1e2 _peze2t1pee2r _2p1f8 _2p1g8 _ph8 _pi1 _pi2e1 _pie2r1w _pierwo1 _pierwo3w2 _pi2\xc4\x991 _pi\xc4\x992\xc4\x873 _pi1\xc4\x99ci1 _pi\xc4\x99ci2o1 _pi\xc4\x99cio3\xc5\x9b2 _pi\xc4\x992\xc4\x871s _pi\xc4\x99\xc4\x87se1 _pi\xc4\x99\xc4\x87se2t3 _pi2o1 _pio1no1 _piono3w2 _pj8 _2p1k8 _pl8 _p\xc5\x828 _p\xc5\x82a1 _p\xc5\x82asko1 _p\xc5\x82asko3w2 _2p1m8 _2p1n8 _2p1\xc5\x848 _po1 _po2d2 _po3b2 _po3c2 _po3\xc4\x872 _pod3\xc5\x822 _po3d4\xc5\x82u1 _po2d3m2 _podmu1 _po3d4muc4h _po2d3n2 _podna1 _po3d4naw _pod3r2 _pod2r1w _po3d4r2wi1 _podra1 _po3d4rap _po3d4ra\xc5\xbc _podre1 _podre2p1c _po3d4repc4z _po3d4re2p1t _podr\xc4\x991 _po3d4r\xc4\x99c4z _po3d4r\xc4\x99tw _po1dro1 _po3d4roba1 _po3d4ro1bo1 _po3d4rob\xc3\xb31 _po3d4roby1 _po3d4roc4z _po3d4ro\xc5\xbc _podr\xc3\xb31 _po3d4r\xc3\xb3\xc5\xbc _podru1 _po3d4ruzg _podry1 _po3d4ryg _podr4z _po3d4rze1 _pod3w2 _podwa1 _po3d4waj _po1dwo1 _po3d4woi2 _po3d4woj _po3d4wor4z _podw\xc3\xb31 _po3d4w\xc3\xb32j1n _po3d4w\xc3\xb3r _po3da1 _po3d\xc4\x851 _po3de1 _po3dej _po3d\xc4\x991 _podi1 _po3di2u1 _po3do1 _po3du1 _po3dy1 _po3d4z2 _po3d4\xc5\xba2 _poe2 _po3e2k2s3 _po3f2 _po3g2 _po3h2 _po3k2 _po3l2 _po3\xc5\x822 _po3m2 _po3p2 _po3r2 _po3r1\xc5\xbc _po3s2 _po3\xc5\x9b2 _po3t2 _po3w2 _po3z2 _po3\xc5\xba2 _po3\xc5\xbc2 _poc4z2 _po4c2z3d _po4c2z3t _pode3k2 _po4d3e4k2s3 _podobi1 _podobi2a1 _po4d3o2biad _po1do1bo1 _podobo2j1c _po4d3o2bojc4z _podob\xc3\xb31 _po4d3o2b\xc3\xb3z _podobra1 _po4d3o2braz _podoc4h _po1do1cho1 _po4d3o2choc _po4d3o2d1m _po4d3o2f _po4d3o2g _podoki1 _podoki2e1 _po4d3o2kien _po4d3o2k1n _podokre1 _po4d3o2kres _podokr\xc4\x991 _po4d3o2kr\xc4\x99g _podopi1 _podopi2e1 _po4d3o2piec4z _podory1 _po4d3o2ryw _podosi1 _podosi1ni1 _podosini2a1 _po4d3o2siniak _po4d3o2str4z _podo2b1s _po4d3obs4z _po4d3o4d3d _podo2l1b _po4d3olbr4z _pod\xc3\xb31 _po4d3\xc3\xb3w _po4d3u2c4z _po4d3u2d4z _po4d3u2pa1 _podura1 _po4d3u2ral _po4d3u2sta1 _podus4z _podu2s2z1c _po4d3u2szc4z _po4d5r\xc4\x992cz1n _podza1 _po4d5zakr _po4d5zam _po4d5zast _po2dz1b _po4d5zbi1 _po4d5ze1 _podzi1 _podzi2e1 _podzie1le1 _podzi1eleni1 _po4d5zieleni2\xc4\x851 _po4d5zielenic _po4d5zieleni\xc4\x87 _podzi2e1le1ni2e1 _po4d5zielenien _po4d5zieleni2\xc4\x991 _po4d5zielenil _po4d5zieleni\xc5\x82 _po4d5zielenim _po4d5zieleni2o1 _po4d5zielenis _po4d5ziem _po1dzi2o1 _po4d5ziom _po4d5z2w2r _po4l3s _po4m3p _po4\xc5\x843c _po4r3c _po4r3f _po4r3n _po4r3t _po4s2t3d _po4s2t3f _po4s2t3g _po4st3h _po4st3i2 _po4s2t3k _po4st3l _po4s2t3m _po4s2t3p _po1stro1 _po4st3rom _po4s2t3s _poduszczy1 _po5d4uszczyn _po5r4t\xc4\x991 _pobr2 _pobr4z2 _poc4h2 _poc2h2r _pochr4z2 _pod3a2l1p _po2d3b2 _po2d3c2 _po2d3\xc4\x872 _po4d3d2 _po2d3f2 _po2d3g2 _pod3h2 _pod3i2n _pod3j2 _po2d3k2 _pod3l2 _po2d3p2 _po2d3s2 _po2d3\xc5\x9b2 _pod\xc5\x9br\xc3\xb31 _pod3\xc5\x9br\xc3\xb32d5 _po2d3t2 _pod5\xc5\xbc2 _podc4h2 _podc4z2 _podd4\xc5\xba2 _podd4\xc5\xbc2 _pode3b2 _pode3c2 _pode3\xc4\x872 _pode3d2 _pode3f2 _pode3g2 _pode3h2 _pode3l2 _pode3\xc5\x822 _pode3m2 _pode3p2 _pode3r2 _pode3s2 _pode3\xc5\x9b2 _pode3t2 _pode3t1k2 _pode3w2 _pode3z2 _pode3\xc5\xba2 _pode3\xc5\xbc2 _podec4h2 _podec4z2 _poded4z2 _poded4\xc5\xba2 _poded4\xc5\xbc2 _pode2p1c _podepc4h2 _poder4z2 _pode2r1\xc5\xbc2 _podesc4h2 _podes4z2 _podro2z3 _podsm2 _pods4z2 _pogr4z2 _pokl2 _pokr2 _po2\xc5\x821k2 _pom4p1k _po2m1k2 _pona1 _pona2d2 _pona3b2 _pona3c2 _pona3c4z2 _pona3\xc4\x872 _po1na3do1 _pona3d4\xc5\xba2 _pona3f2 _pona3g2 _pona3h2 _pona3k2 _pona3l2 _pona3\xc5\x822 _pona3m2 _pona3p2 _pona3r2 _pona3s2 _pona3\xc5\x9b2 _pona3t2 _pona3w2 _pona3z2 _pona3\xc5\xba2 _pona3\xc5\xbc2 _pona4f3t _ponabr4z2 _ponac4h2 _pona2d3c2 _ponad3c4h2 _ponad3c4z2 _pona2d3\xc4\x872 _pona4d3d _ponad3d4\xc5\xba2 _pona2d3f2 _pona2d3g2 _ponad3h2 _ponad3j2 _pona2d3k2 _ponad3l2 _pona2d3p2 _pona2d3s2 _pona2d3\xc5\x9b2 _pona2d3t2 _ponad4z2 _ponar4z2 _ponasm2 _ponas4z2 _ponaz3m2 _ponazw2 _poni1 _poni2e1 _ponie3k2 _ponie3w2 _po2p1c _popc4h2 _po1po1 _popo3w2 _popr4z2 _por4t1w _por4t1f _por4t1m _po1ro1 _poro2z3 _poro3z4u1 _por4z2 _posc4h2 _posm2 _pos4z2 _po2t1k2 _potr2 _poz4m2 _poza1 _poza3u2 _pozw2 _p\xc3\xb31 _p\xc3\xb32\xc5\x823 _p\xc3\xb33\xc5\x824\xc4\x851 _p\xc3\xb3\xc5\x82e1 _p\xc3\xb33\xc5\x824ec4z _p\xc3\xb33\xc5\x824\xc4\x991 _p\xc3\xb33\xc5\x824y1 _p\xc3\xb32\xc5\x821k2 _p\xc3\xb3\xc5\x82kr2 _p\xc3\xb32\xc5\x821m2 _p\xc3\xb3\xc5\x82o2 _p\xc3\xb3\xc5\x82ob3r _p\xc3\xb3\xc5\x82o2m2d _p\xc3\xb32\xc5\x821p _p\xc3\xb3\xc5\x82pr4z _p\xc3\xb3\xc5\x82przy1 _p\xc3\xb3\xc5\x82przy3m2k _4p3p8 _pr8 _pra1 _pra3s2 _pra2w1n _pra3w2nu1 _pra3w2z _pra1pra1 _prapra2w1n _prapra3w2nu1 _pre1 _predy1 _predy2s3po1 _pr4z8 _prze1 _prze2d2 _prze3b2 _prze3c2 _prze3\xc4\x872 _przed3\xc5\x822 _przed\xc5\x82u1 _prze3d4\xc5\x82u\xc5\xbc _prze2d3m2 _przedmu1 _prze3d4muc4h _przed3o2 _prze3d4o3br _prze3d4o3st _prze3d4o3zo1 _przed3r2 _przedra1 _przedra1ma1 _prze3d4ramat _przedru1 _prze3d4ruk _przedry1 _prze3d4ryl _pr4ze3d4r4z2 _przed3u2 _prze3d4um _prze3d\xc4\x851 _prze3d\xc4\x991 _prze3dy1 _prze3d4z2 _prze3d4\xc5\xba2 _prze1e2 _prze3e2k2s3 _prze3f2 _prze3g2 _prze3h2 _prze3k2 _prze3l2 _prze3\xc5\x822 _prze3m2 _prze3n2 _prze3p2 _prze3r2 _prze3s2 _prze3\xc5\x9b2 _prze3t2 _prze3u2 _prze3w2 _prze3z2 _prze3\xc5\xba2 _prze3\xc5\xbc2 _przed\xc5\x82u\xc5\xbcy1 _prze4d5\xc5\x82u\xc5\xbcyc _przedosta1 _prze4d5o4stat _prze4d5za1 _prze4d5z1g2 _przedzi1 _prze4d5zim _prze4d5zj _prze4d5z1l _prze4d5z2w2r _przedzwo1 _prze4d5zwoj _prze4d5\xc5\xbc2 _przebr2 _pr4zebr4z2 _przec4h2 _przec2h2r _pr4zechr4z2 _przeci1 _przeci2w3 _przeci1wi1 _prze1ci3w4i2e1 _przeciwa2 _przeci4w3w2 _przec4z2 _przeda1 _przedago1 _przed3a2gon _przed3a2k1c _przed3a2l1p _prze2d3b2 _prze2d3c2 _prze2d3\xc4\x872 _prze4d3d2 _prze1de1 _przed3e2g1z _prze1de1me1 _przed3e2mer _prze2d3f2 _prze2d3g2 _przed3h2 _przed3i2 _przed3j2 _prze2d3k2 _przed3l2 _prze2d3n2 _prze2d3p2 _prze2d3s2 _przedsi1 _przedsi2\xc4\x991 _przed3si\xc4\x993w2 _przed3s4z2 _prze2d3\xc5\x9b2 _prze2d3t2 _przed3w2 _przedc4h2 _przedc4z2 _przedd4z2 _przedd4\xc5\xba2 _przedd4\xc5\xbc2 _pr4zedgr4z2 _przedy2s3ku1 _pr4zegr4z2 _przekl2 _przekr2 _prze2\xc5\x821k2 _prze2m1k2 _prze2p1c _przepc4h2 _pr4zer4z2 _prze2r1\xc5\xbc2 _przesc4h2 _przesm2 _przes4z2 _prze2t1k2 _przetr2 _przetra1 _przetra2n2s3 _przy1 _przy3b2 _przy3c2 _przy3\xc4\x872 _przy3d2 _przy3f2 _przy3g2 _przy3h2 _przy3k2 _przy3l2 _przy3\xc5\x822 _przy3m2 _przy3p2 _przy3r2 _przy3s2 _przy3\xc5\x9b2 _przy3t2 _przy3w2 _przy3z2 _przy3\xc5\xba2 _przy3\xc5\xbc2 _przybr2 _przyc4h2 _przyc4z2 _przyd4z2 _przyd4\xc5\xba2 _przyd4\xc5\xbc2 _pr4zygr4z2 _przy2m1k2 _przyo2 _przyoz2 _przy2p1c _przypc4h2 _pr4zyr4z2 _przy2r1\xc5\xbc2 _przysc4h2 _przys4z2 _przy2t1k2 _2p1s8 _2p1\xc5\x9b8 _2p1t8 _pv8 _pw8 _px8 _2p1z8 _2p1\xc5\xba8 _2p1\xc5\xbc8 _r8 _2r1b8 _2r1c8 _2r1\xc4\x878 _2r1d8 _re1 _retra1 _retra2n2s3 _2r1f8 _2r1g8 _2r1h8 _2r1j8 _2r1k8 _2r1l8 _2r1\xc5\x828 _2r1m8 _2r1n8 _2r1\xc5\x848 _ro1 _ro2z3 _ro3z4a1 _ro3z4e1 _ro3z4e3b2 _ro3z4e3c2 _ro3z4e3\xc4\x872 _ro3z4e3d2 _ro3z4e3f2 _ro3z4e3g2 _ro3z4e3h2 _ro3z4e3k2 _ro3z4e3l2 _ro3z4e3\xc5\x822 _ro3z4e3m2 _ro3z4e3p2 _ro3z4e3r2 _ro3z4e3s2 _ro3z4e3\xc5\x9b2 _ro3z4e3t2 _ro3z4e3w2 _ro3z4e3z2 _ro3z4e3\xc5\xba2 _ro3z4e3\xc5\xbc2 _ro3z4ej _ro3z4u1 _ro4z5a2gi1 _rozani1 _ro4z5a2ni2e1 _ro4z5e2mo1 _ro4z5e4g3z _ro4z5e4n3t _rozbr4z2 _ro2z1d2 _rozec4h2 _rozec4z2 _rozed4z2 _rozed4\xc5\xba2 _rozed4\xc5\xbc2 _roze2p1c _rozepc4h2 _rozer4z2 _roze2r1\xc5\xbc2 _rozesc4h2 _rozes4z2 _rozi2 _rozm2 _ro1zo2 _ro2z1p _ro1zpo1 _rozpo3w2 _ro2z1\xc5\x9b2 _ro2z1t2 _roztr2 _rozw2 _2r1p8 _4r3r8 _2r1s8 _2r1\xc5\x9b8 _2r1t8 _rv8 _2r1w8 _rx8 _r4z8 _2r1\xc5\xba8 _2r1\xc5\xbc8 _s8 _sa1 _samo1 _samo3c4h2 _samo3k2 _samo3p2 _samo3w2 _samo1ro1 _samoro2z3 _2s1b8 _sc8 _sc4h8 _s\xc4\x878 _2s1d8 _2s1f8 _2s1g8 _sh8 _si1 _si2e1 _sie1de1 _siede2m3 _siede2m1s _sie1de1mse1 _siedemse2t3 _sie2d1m _si1edmi1 _siedmi2o1 _siedmio3\xc5\x9b2 _sj8 _sk8 _sk\xc4\x851 _sk\xc4\x85d4\xc5\xbc _sk\xc4\x852d5\xc5\xbce1 _skl8 _skr8 _sl8 _s\xc5\x828 _sm8 _sn8 _s\xc5\x848 _so1 _so1bo1 _sobo3w2 _sp8 _spo1 _spo2d2 _spo3b2 _spo3c2 _spo3\xc4\x872 _spo3d4z2 _spo3f2 _spo3g2 _spo3h2 _spo3k2 _spo3l2 _spo3\xc5\x822 _spo3m2 _spo3p2 _spo3r2 _spo3s2 _spo3\xc5\x9b2 _spo3t2 _spo3w2 _spo3z2 _spo3\xc5\xba2 _spo3\xc5\xbc2 _spo4r3n _spo4r3t _spoc4h2 _spoc4z2 _spo4d3d _spod4\xc5\xba2 _spod4\xc5\xbc2 _spor4z2 _spos4z2 _sp\xc3\xb31 _sp\xc3\xb32\xc5\x823 _sr8 _2s1s8 _s\xc5\x9b8 _st8 _ste1 _ste1re1 _stere2o3 _stereoa2 _ste1re1oe2 _stereoi2 _stereo1o2 _stereou2 _su1 _su2b3 _subi1 _su3b4i2e1 _subo1 _su3b4o2t1n _supe1 _supe2r3 _supera1 _supe3r4at _superi1 _supe3r4i2o1 _supe4r5a2tr _super4z _supe2r5z2b _supe1re2 _supero1 _superodr4z _su1perodrzu1 _supero2d1rzut _sv8 _sw8 _sx8 _s4z8 _sze1 _sze2s3 _sze4\xc5\x9b2\xc4\x873 _sze\xc5\x9b1c _sze1\xc5\x9b2ci1 _sze\xc5\x9bci2o1 _sze\xc5\x9bcio3\xc5\x9b2 _sze\xc5\x9b2\xc4\x871s _sze1\xc5\x9b\xc4\x87se1 _sze\xc5\x9b\xc4\x87se2t3 _2s1\xc5\xba8 _2s1\xc5\xbc8 _\xc5\x9b8 _2\xc5\x9b1b8 _\xc5\x9b1c8 _\xc5\x9b\xc4\x878 _2\xc5\x9b1d8 _2\xc5\x9b1f8 _2\xc5\x9b1g8 _\xc5\x9bh8 _\xc5\x9bj8 _2\xc5\x9b1k8 _\xc5\x9bl8 _\xc5\x9b\xc5\x828 _\xc5\x9bm8 _\xc5\x9bn8 _\xc5\x9b\xc5\x848 _2\xc5\x9b1p8 _\xc5\x9br8 _\xc5\x9br\xc3\xb31 _\xc5\x9br\xc3\xb32d5 _\xc5\x9br\xc3\xb3dr2 _2\xc5\x9b1s8 _2\xc5\x9b1\xc5\x9b8 _2\xc5\x9b1t8 _\xc5\x9bv8 _\xc5\x9bw8 _\xc5\x9bwi1 _\xc5\x9bwi2a1 _\xc5\x9bwiat\xc5\x82o1 _\xc5\x9bwiat\xc5\x82o3w2 _\xc5\x9bx8 _2\xc5\x9b1z8 _2\xc5\x9b1\xc5\xba8 _2\xc5\x9b1\xc5\xbc8 _t8 _ta1 _ta2o3 _tar4z _ta1rza1 _ta2r7zan _2t1b8 _2t1c8 _tc4h8 _2t1\xc4\x878 _2t1d8 _te1 _te2o3 _2t1f8 _2t1g8 _th8 _tj8 _2t1k8 _tl8 _t\xc5\x828 _2t1m8 _2t1n8 _2t1\xc5\x848 _to1 _toa3 _2t1p8 _tr8 _tra1 _tra2n2s3 _tran3s4e1 _transi1 _tran3s4i2e1 _tran3s4y1 _tran3s4z _tran4s5e2u1 _tra1nsa2 _transo2 _tr\xc3\xb31 _tr\xc3\xb32j3 _tr\xc3\xb33j4\xc4\x851 _tr\xc3\xb3je1 _tr\xc3\xb33j4ec4z _tr\xc3\xb33j4\xc4\x991 _tr4z8 _trze1 _trze2c4h3 _trze2c2h1s _trze1chse1 _trzechse2t3 _2t1s8 _2t1\xc5\x9b8 _4t3t8 _tv8 _tw8 _tx8 _ty1 _tysi1 _tysi2\xc4\x851 _tysi\xc4\x852c3 _tysi\xc4\x853c4a1 _tysi\xc4\x853c4e1 _tysi\xc4\x853c4z _tysi\xc4\x854c5z\xc5\x82 _2t1z8 _2t1\xc5\xba8 _2t1\xc5\xbc8 _u1 _u3b2 _u3c2 _u3d2 _u3f2 _u3g2 _u3h2 _u3k2 _u3l2 _u3\xc5\x822 _u3m2 _u3n2 _u3p2 _u3r2 _u3s2 _u3t2 _u3w2 _u3z2 _u3\xc5\xba2 _u3\xc5\xbc2 _u4d3k _u4f3n _ukle1 _u4k3lej _u4l3s _u4l3t _u2m1b _u4m3br _u4n3c _u4n3d _u4p3p _u4p3p2s _u4r3s _u4s2t3n _u4s2t1c _u4s2t1k _u4z3be1 _ube1 _ube2z3 _ubezw2 _ubr2 _uc4h2 _uc4z2 _u\xc4\x872 _ud4z2 _ud4\xc5\xba2 _ud4\xc5\xbc2 _ukr2 _u2m1k2 _u2p1c _upc4h2 _upo1 _upo2d2 _upo3b2 _upo3c2 _upo3\xc4\x872 _upo3da1 _upo3f2 _upo3g2 _upo3h2 _upo3k2 _upo3l2 _upo3\xc5\x822 _upo3m2 _upo3p2 _upo3r2 _upo3s2 _upo3\xc5\x9b2 _upo3t2 _upo3w2 _upo3z2 _upo3\xc5\xba2 _upo3\xc5\xbc2 _upoc4h2 _upoc4z2 _upo4d3d _upod4\xc5\xba2 _upod4\xc5\xbc2 _upor4z2 _upos4z2 _uro1 _uro2z3 _ur4z2 _u2r1\xc5\xbc2 _usc4h2 _us4z2 _u\xc5\x9b2 _u2t1k2 _utr2 _uze1 _uze3w2 _v8 _vb8 _vc8 _v\xc4\x878 _vd8 _vf8 _vg8 _vh8 _vj8 _vk8 _vl8 _v\xc5\x828 _vm8 _vn8 _v\xc5\x848 _vp8 _vr8 _vs8 _v\xc5\x9b8 _vt8 _vv8 _vw8 _vx8 _vz8 _v\xc5\xba8 _v\xc5\xbc8 _w8 _2w1b8 _2w1c8 _2w1\xc4\x878 _2w1d8 _we1 _we3b2 _we3c2 _we3\xc4\x872 _we3d2 _we3f2 _we3g2 _we3h2 _we3k2 _we3l2 _we3\xc5\x822 _we3m2 _we3n2 _we3p2 _we3r2 _we3s2 _we3\xc5\x9b2 _we3t2 _we3w2 _we3z2 _we3\xc5\xbc2 _we4k3t _we4l3w _we4\xc5\x823n _we4n3d _we4n3t _we4r3b _we4r3d _we4r3n _we4r3s _we4r3t _we4s3pr4z _wes2t1c _we4s3tc4h2 _we4z3br _we4z3g\xc5\x82 _wec4h2 _wec4z2 _wed4z2 _wed4\xc5\xba2 _wed4\xc5\xbc2 _we2m1k2 _we2p1c _wepc4h2 _wer4z2 _wes4z2 _we2t1k2 _we2w1n _wewn\xc4\x851 _wewn\xc4\x852tr4z3 _2w1f8 _2w1g8 _wh8 _wi1 _wi2e1 _wielo1 _wielo3d2 _wielo3k2 _wielo3\xc5\x9b2 _wielu1 _wie1luse1 _wieluse2t3 _wi2l1c _wilc4z _wilczo1 _wilczo3m2 _2w1j8 _2w1k8 _2w1l8 _2w1\xc5\x828 _2w1m8 _2w1n8 _wni1 _wni2e1 _wniebo1 _wniebo3w2 _2w1\xc5\x848 _wo1 _wo1do1 _wodo3w2 _2w1p8 _2w1r8 _2w1s8 _wsp\xc3\xb31 _wsp\xc3\xb32\xc5\x823 _wsp\xc3\xb3\xc5\x82i2 _wsp\xc3\xb3\xc5\x82o1 _wsp\xc3\xb3\xc5\x82o2b3w _wsp\xc3\xb3\xc5\x82u2 _wsp\xc3\xb32\xc5\x821w2 _ws4z _wsze1 _wsze2c4h3 _wszecho2 _wszec2h2w2 _2w1\xc5\x9b8 _2w1t8 _wv8 _4w3w8 _wx8 _wy1 _wy3b2 _wy3c2 _wy3\xc4\x872 _wy3d2 _wy3f2 _wy3g2 _wy3h2 _wy3k2 _wy3l2 _wy3\xc5\x822 _wy3m2 _wyo2 _wy3o2d3r _wy3p2 _wy3r2 _wy3s2 _wy3\xc5\x9b2 _wy3t2 _wy3w2 _wy3z2 _wy3\xc5\xba2 _wy3\xc5\xbc2 _wyc4z2 _wy4cz3ha1 _wy2\xc5\xbc1s _wy4\xc5\xbc3s4z _wybr2 _wybr4z2 _wyc4h2 _wydr2 _wyd4z2 _wyd4\xc5\xba2 _wyd4\xc5\xbc2 _wye2 _wye2k2s3 _wygr4z2 _wyi2 _wyi2zo1 _wykl2 _wykr2 _wykr4z2 _wy2m1k2 _wy2p1c _wypc4h2 _wypr4z2 _wyr4z2 _wy2r1\xc5\xbc2 _wysc4h2 _wysm2 _wys4z2 _wy2t1c _wytc4h2 _wy2t1k2 _wytr2 _2w1z8 _2w1\xc5\xba8 _2w1\xc5\xbc8 _x8 _xb8 _xc8 _x\xc4\x878 _xd8 _xf8 _xg8 _xh8 _xj8 _xk8 _xl8 _x\xc5\x828 _xm8 _xn8 _x\xc5\x848 _xp8 _xr8 _xs8 _x\xc5\x9b8 _xt8 _xv8 _xw8 _xx8 _xz8 _x\xc5\xba8 _x\xc5\xbc8 _z8 _za1 _za3b2 _za3c2 _za3\xc4\x872 _za3d2 _za3f2 _za3g2 _za3h2 _za3k2 _za3l2 _za3\xc5\x822 _za3m2 _zao2 _za3o2b3r _za3o2b3s _za3p2 _za3r2 _za3s2 _za3\xc5\x9b2 _za3t2 _za3u2 _za3w2 _za3z2 _za3\xc5\xba2 _za3\xc5\xbc2 _za4k3t _za4l3g _za4l3k _za4l3t _za4m3k _za2r1c _za4r3c4h _za4uto1 _za5m4k2n _zabr2 _zabr4z2 _zac4h2 _zac4z2 _zado1 _zado2\xc5\x9b\xc4\x873 _zado\xc5\x9b\xc4\x87u4 _zadr2 _zady1 _zady2s3po1 _zad4z2 _zad4\xc5\xba2 _zad4\xc5\xbc2 _zagr4z2 _zai2 _zai2n3 _zai2zo1 _zai1ni1 _zain4ic _zakl2 _zakr2 _zakr4z2 _zani1 _zani2e1 _zanie3d2 _zar4z2 _za2r1\xc5\xbc2 _zasc4h2 _zasm2 _zas4z2 _za2t1k2 _zatr2 _zb8 _2z1c8 _2z1\xc4\x878 _2z1d8 _zde1 _zde2z3 _zdeza1 _zde3z4awu1 _zde1ze1 _zde3z4el _zde3z4er _zde3z4y1 _zdy1 _zdysko1 _zdy2s3ko2n1t _zdyskre1 _zdy2s3kred _zdyskwa1 _zdy2s3kwal _ze1 _ze3b2 _ze3c2 _ze3\xc4\x872 _ze3d2 _ze3f2 _ze3g2 _ze3h2 _ze3k2 _ze3l2 _ze3\xc5\x822 _ze3m2 _ze3p2 _ze3r2 _ze3s2 _ze3\xc5\x9b2 _ze3t2 _ze3t1k2 _ze3w2 _ze3z2 _ze3\xc5\xba2 _ze3\xc5\xbc2 _ze4r3k _ze1te1 _ze1te1me1 _ze4t3e2m1e2s _ze1te1se1 _ze4t3e2s1e2l _ze4t3e2m1p _zetha1 _ze4t3hap _zec4h2 _zec4z2 _zed4z2 _zed4\xc5\xba2 _zed4\xc5\xbc2 _zekl2 _ze2p1c _zepc4h2 _zer4z2 _ze2r1\xc5\xbc2 _zesc4h2 _zesm4 _zes4z2 _2z1f8 _zg8 _zh8 _zi1 _zi2m1n _zimno1 _zimno3kr2 _zj8 _2z1k8 _zl8 _z\xc5\x828 _z\xc5\x82o1 _z\xc5\x82o3w2 _zm8 _zma1 _zma2r1t _zmartwy1 _zmartwy2c4h3 _zmartwyc2h2w2 _zn8 _zni1 _zni2e1 _znie3b2 _znie3c2 _znie3\xc4\x872 _znie3d2 _znie3f2 _znie3g2 _znie3h2 _znie3k2 _znie3l2 _znie3\xc5\x822 _znie3m2 _znie3n2 _znie3\xc5\x842 _znie3p2 _znie3r2 _znie3s2 _znie3\xc5\x9b2 _znie3t2 _znie3w2 _znie3z2 _znie3\xc5\xba2 _znie3\xc5\xbc2 _znie4d4\xc5\xba3 _znie4m3c _zniec4h2 _zniec4z2 _znied4z2 _znied4\xc5\xbc2 _znier4z2 _znies4z2 _z\xc5\x848 _zo1 _zo2o3 _2z1p8 _zr8 _zro1 _zro2z3 _zro3z4u1 _2z1s8 _2z1\xc5\x9b8 _2z1t8 _zv8 _zw8 _zx8 _4z3z8 _z\xc5\xba8 _z\xc5\xbc8 _\xc5\xba8 _2\xc5\xba1b8 _2\xc5\xba1c8 _2\xc5\xba1\xc4\x878 _2\xc5\xba1d8 _\xc5\xba2d4\xc5\xba8 _2\xc5\xba1f8 _2\xc5\xba1g8 _\xc5\xbah8 _\xc5\xbaj8 _2\xc5\xba1k8 _2\xc5\xba1l8 _\xc5\xba\xc5\x828 _2\xc5\xba1m8 _2\xc5\xba1n8 _\xc5\xba\xc5\x848 _2\xc5\xba1p8 _\xc5\xbar8 _2\xc5\xba1s8 _2\xc5\xba1\xc5\x9b8 _2\xc5\xba1t8 _\xc5\xbav8 _2\xc5\xba1w8 _\xc5\xbax8 _2\xc5\xba1z8 _4\xc5\xba3\xc5\xba8 _2\xc5\xba1\xc5\xbc8 _\xc5\xbc8 _2\xc5\xbc1b8 _2\xc5\xbc1c8 _2\xc5\xbc1\xc4\x878 _2\xc5\xbc1d8 _2\xc5\xbc1f8 _2\xc5\xbc1g8 _\xc5\xbch8 _2\xc5\xbc1j8 _2\xc5\xbc1k8 _2\xc5\xbc1l8 _2\xc5\xbc1\xc5\x828 _2\xc5\xbc1m8 _2\xc5\xbc1n8 _2\xc5\xbc1\xc5\x848 _2\xc5\xbc1p8 _2\xc5\xbc1r8 _2\xc5\xbc1s8 _2\xc5\xbc1\xc5\x9b8 _2\xc5\xbc1t8 _\xc5\xbcv8 _2\xc5\xbc1w8 _\xc5\xbcx8 _2\xc5\xbc1z8 _2\xc5\xbc1\xc5\xba8 _4\xc5\xbc3\xc5\xbc8 \xc5\x9b1c 1\xc5\x9b2ci1 2b1c 2b1\xc4\x87 2b1d 2b1f 2b1g 2b1k 2b1m 2b1n 2b1\xc5\x84 2b1p 2b1s 2b1\xc5\x9b 2b1t 2b1z 2b1\xc5\xba 2b1\xc5\xbc 2b2\xc5\x821k 2b2r1n 2c1b 2c1\xc4\x87 2c1d 2c1f 2c1g 2c1k 2c1l 2c1m 2c1n 2c1\xc5\x84 2c1p 2c1s 2c1\xc5\x9b 2c1t 2c1\xc5\xba 2c1\xc5\xbc c4h 2c2h1b 2c2h1c 2c2h1\xc4\x87 2c2h1d 2c2h1f 2c2h1g 2c2h1k 2c2h1m 2c2h1n 2c2h1\xc5\x84 2c2h1p 2c2h1s 2c2h1\xc5\x9b 2c2h1t 2c2h1z 2c2h1\xc5\xba 2c2h1\xc5\xbc c4z 2cz1b 2c2z1c 2c2z1\xc4\x87 2c2z1d 2c2z1f 2cz1g 2c2z1k 2cz1l 2cz1m 2cz1n 2cz1\xc5\x84 2c2z1p 2c2z1s 2c2z1\xc5\x9b 2c2z1t 2c4z3z 2cz1\xc5\xba 2cz1\xc5\xbc 2\xc4\x871b 2\xc4\x871c 2\xc4\x871d 2\xc4\x871f 2\xc4\x871g 2\xc4\x871k 2\xc4\x871m 2\xc4\x871n 2\xc4\x871\xc5\x84 2\xc4\x871p 2\xc4\x871s 2\xc4\x871\xc5\x9b 2\xc4\x871t 2\xc4\x871z 2\xc4\x871\xc5\xba 2\xc4\x871\xc5\xbc 2d1b 2d1c 2d1\xc4\x87 2d1f 2d1g 2d1k 2d1m 2d1n 2d1\xc5\x84 2d1p 2d1s 2d1\xc5\x9b 2d1t 2d2\xc5\x821b d2\xc5\x821s 2d\xc5\x82s4z 2d2r1n d4z 2dz1b 2d2z1c 2d2z1\xc4\x87 2d2z1d 2d2z1f 2dz1g 2d2z1k 2dz1l 2dz1m 2dz1n 2dz1\xc5\x84 2d2z1p 2d2z1s 2d2z1\xc5\x9b 2d2z1t 2d4z3z 2dz1\xc5\xba 2dz1\xc5\xbc d4\xc5\xba 2d2\xc5\xba1b 2d2\xc5\xba1c 2d2\xc5\xba1\xc4\x87 2d2\xc5\xba1d 2d2\xc5\xba1f 2d2\xc5\xba1g 2d2\xc5\xba1k 2d2\xc5\xba1m 2d2\xc5\xba1n 2d\xc5\xba1\xc5\x84 2d2\xc5\xba1p 2d2\xc5\xba1s 2d2\xc5\xba1\xc5\x9b 2d2\xc5\xba1t 2d2\xc5\xba1z 2d4\xc5\xba3\xc5\xba 2d2\xc5\xba1\xc5\xbc d4\xc5\xbc 2d2\xc5\xbc1b 2d2\xc5\xbc1c 2d2\xc5\xbc1\xc4\x87 2d2\xc5\xbc1d 2d2\xc5\xbc1f 2d2\xc5\xbc1g 2d2\xc5\xbc1k 2d2\xc5\xbc1m 2d2\xc5\xbc1n 2d2\xc5\xbc1\xc5\x84 2d2\xc5\xbc1p 2d2\xc5\xbc1s 2d2\xc5\xbc1\xc5\x9b 2d2\xc5\xbc1t 2d2\xc5\xbc1z 2d2\xc5\xbc1\xc5\xba 2d4\xc5\xbc3\xc5\xbc 2f1c 2f1k 2f1m 2f1n 2g1b 2g1c 2g1\xc4\x87 2g1d 2g1f 2g1k 2g1m 2g1\xc5\x84 2g1p 2g1s 2g1\xc5\x9b 2g1t 2g1z 2g1\xc5\xba 2g1\xc5\xbc 2g2\xc5\x821b 2h1b 2h1c 2h1\xc4\x87 2h1d 2h1f 2h1g 2h1j 2h1k 2h1l 2h1\xc5\x82 2h1m 2h1n 2h1\xc5\x84 2h1p 2h1r 2h1s 2h1\xc5\x9b 2h1t 2h1w 2h1z 2h1\xc5\xba 2h1\xc5\xbc 2j1b 2j1c 2j1\xc4\x87 2j1d 2j1f 2j1g 2j1h 2j1k 2j1l 2j1\xc5\x82 2j1m 2j1n 2j1\xc5\x84 2j1p 2j1r 2j1s 2j1\xc5\x9b 2j1t 2j1w 2j1z 2j1\xc5\xba 2j1\xc5\xbc 2k1b 2k1c 2k1\xc4\x87 2k1d 2k1f 2k1g 2k1m 2k1n 2k1\xc5\x84 2k1p 2k1s 2k1s4z 2k1\xc5\x9b 2k1t 2k1z 2k1\xc5\xba 2k1\xc5\xbc 2k2\xc5\x821b 2l1b 2l1c 2l1\xc4\x87 2l1d 2l1f 2l1g 2l1h 2l1j 2l1k 2l1\xc5\x82 2l1m 2l1n 2l1\xc5\x84 2l1p 2l1r 2l1s 2l1\xc5\x9b 2l1t 2l1w 2l1z 2l1\xc5\xba 2l1\xc5\xbc 2\xc5\x821b 2\xc5\x821c 2\xc5\x821\xc4\x87 2\xc5\x821d 2\xc5\x821f 2\xc5\x821g 2\xc5\x821h 2\xc5\x821j 2\xc5\x821k 2\xc5\x821l 2\xc5\x821m 2\xc5\x821n 2\xc5\x821\xc5\x84 2\xc5\x821p 2\xc5\x821r 2\xc5\x821s 2\xc5\x821\xc5\x9b 2\xc5\x821t 2\xc5\x821w 2\xc5\x821z 2\xc5\x821\xc5\xba 2\xc5\x821\xc5\xbc 2m1b 2m1c 2m1\xc4\x87 2m1d 2m1f 2m1g 2m1h 2m1j 2m1k 2m1l 2m1\xc5\x82 2m1n 2m1\xc5\x84 2m1p 2m1r 2m1s 2m1\xc5\x9b 2m1t 2m1w 2m1z 2m1\xc5\xba 2m1\xc5\xbc 2n1b 2n1c 2n1\xc4\x87 2n1d 2n1f 2n1g 2n1h 2n1j 2n1k 2n1l 2n1\xc5\x82 2n1m 2n1\xc5\x84 2n1p 2n1r 2n1s 2n1\xc5\x9b 2n1t 2n1w 2n1z 2n1\xc5\xba 2n1\xc5\xbc 2n2t1n 2\xc5\x841b 2\xc5\x841c 2\xc5\x841\xc4\x87 2\xc5\x841d 2\xc5\x841f 2\xc5\x841g 2\xc5\x841h 2\xc5\x841j 2\xc5\x841k 2\xc5\x841l 2\xc5\x841\xc5\x82 2\xc5\x841m 2\xc5\x841n 2\xc5\x841\xc5\x84 2\xc5\x841p 2\xc5\x841r 2\xc5\x841s 2\xc5\x841\xc5\x9b 2\xc5\x841t 2\xc5\x841w 2\xc5\x841z 2\xc5\x841\xc5\xba 2\xc5\x841\xc5\xbc 2p1b 2p1c 2p1\xc4\x87 2p1d 2p1f 2p1g 2p1k 2p1m 2p1n 2p1\xc5\x84 2p1s 2p1s4z 2p1\xc5\x9b 2p1t 2p1z 2p1\xc5\xba 2p1\xc5\xbc 2p2l1n 2r1b 2r1c 2r1\xc4\x87 2r1d 2r1f 2r1g 2r1h 2r1j 2r1k 2r1l 2r1\xc5\x82 2r1m 2r1n 2r1\xc5\x84 2r1p 2r1s 2r1\xc5\x9b 2r1t 2r1w 2r1\xc5\xba 2r1\xc5\xbc r4z 2rz1b 2r2z1c 2r2z1\xc4\x87 2r2z1d 2r2z1f 2rz1g 2rz1h 2rz1j 2r2z1k 2rz1l 2rz1\xc5\x82 2rz1m 2rz1n 2rz1\xc5\x84 2r2z1p 2rz1r 2r2z1s 2r2z1\xc5\x9b 2r2z1t 2rz1w 2rz1\xc5\xba 2rz1\xc5\xbc 2s1b 2s1d 2s1f 2s1g 2s1s 2s1\xc5\xba 2s1\xc5\xbc 2s2\xc5\x821b 2s2n1k 2s2t1k 2s2t1n s2t1s 2sts4z s4z 2s2z1c 2s2z1\xc4\x87 2s2z1f 2s2z1k 2sz1l 2sz1m 2sz1n 2s2z1p 2s2z1s 2s2z1\xc5\x9b 2s2z1t 2sz1w 2s4z3z 2sz2l1n 2\xc5\x9b1b 2\xc5\x9b1d 2\xc5\x9b1f 2\xc5\x9b1g 2\xc5\x9b1k 2\xc5\x9b1p 2\xc5\x9b1s 2\xc5\x9b1\xc5\x9b 2\xc5\x9b1t 2\xc5\x9b1z 2\xc5\x9b1\xc5\xba 2\xc5\x9b1\xc5\xbc 2\xc5\x9b2\xc4\x871c 2\xc5\x9b2l1m 2\xc5\x9b2l1n 2t1b 2t1c 2t1\xc4\x87 2t1d 2t1f 2t1g 2t1k 2t1m 2t1n 2t1\xc5\x84 2t1p 2t1s 2t1\xc5\x9b 2t1z 2t1\xc5\xba 2t1\xc5\xbc 2t2l1n 2t2r1k tr4z 2t2rz1n 2w1b 2w1c 2w1\xc4\x87 2w1d 2w1f 2w1g 2w1j 2w1k 2w1l 2w1\xc5\x82 2w1m 2w1n 2w1\xc5\x84 2w1p 2w1r 2w1s 2w1\xc5\x9b 2w1t 2w1z 2w1\xc5\xba 2w1\xc5\xbc 2z1c 2z1\xc4\x87 2z1d 2z1f 2z1k 2z1p 2z1s 2z1\xc5\x9b 2z1t 2z2d1k 2z2d1n 2\xc5\xba1b 2\xc5\xba1c 2\xc5\xba1\xc4\x87 2\xc5\xba1d 2\xc5\xba1f 2\xc5\xba1g 2\xc5\xba1k 2\xc5\xba1l 2\xc5\xba1m 2\xc5\xba1n 2\xc5\xba1p 2\xc5\xba1s 2\xc5\xba1\xc5\x9b 2\xc5\xba1t 2\xc5\xba1w 2\xc5\xba1z 2\xc5\xba1\xc5\xbc 2\xc5\xbc1b 2\xc5\xbc1c 2\xc5\xbc1\xc4\x87 2\xc5\xbc1d 2\xc5\xbc1f 2\xc5\xbc1g 2\xc5\xbc1j 2\xc5\xbc1k 2\xc5\xbc1l 2\xc5\xbc1\xc5\x82 2\xc5\xbc1m 2\xc5\xbc1n 2\xc5\xbc1\xc5\x84 2\xc5\xbc1p 2\xc5\xbc1r 2\xc5\xbc1s 2\xc5\xbc1\xc5\x9b 2\xc5\xbc1t 2\xc5\xbc1w 2\xc5\xbc1z 2\xc5\xbc1\xc5\xba dni1 dni2o1 3d2niow 3k2s2z2t 3m2k2n mne1 3m2nest 3m2nezj 3m2s2k2n pne1 3p2ne2u1 wc4z wcza1 3w2czas w\xc5\x82a1 3w2\xc5\x82ad w\xc5\x82o1 3w2\xc5\x82os 4b3b 4c3c 4\xc4\x873\xc4\x87 4d3d 4f3f 4g3g 4h3h 4j3j 4k3k 4l3l 4\xc5\x823\xc5\x82 4m3m 4n3n 4p3p 4r3r 4t3t 4w3w 4z3z 4\xc5\xba3\xc5\xba 4\xc5\xbc3\xc5\xbc 8b_ 8b8b_ 8b8c_ 8b8\xc4\x87_ 8b8d_ 8b8f_ 8b8g_ 8b8h_ 8b8j_ 8b8k_ 8b8l_ 8b8\xc5\x82_ 8b8m_ 8b8n_ 8b8\xc5\x84_ 8b8p_ 8b8r_ br4z 8b8r8z_ 8b8s_ 8b8\xc5\x9b_ 8b8t_ 8b8v_ 8b8w_ 8b8x_ 8b8z_ 8b8\xc5\xba_ 8b8\xc5\xbc_ 8c_ 8c8b_ 8c8c_ 8c8\xc4\x87_ 8c8d_ 8c8f_ 8c8g_ 8c8h_ c2h2\xc5\x82 8c8h8\xc5\x82_ c2h2r chr4z 8ch8r8z_ c2h2w 8c8h8w_ 8c8j_ 8c8k_ 8c8l_ 8c8\xc5\x82_ 8c8m_ 8c8n_ 8c8\xc5\x84_ 8c8p_ 8c8r_ 8c8s_ 8c8\xc5\x9b_ 8c8t_ 8c8v_ 8c8w_ 8c8x_ 8c8z_ 8c8z8t_ 8c8\xc5\xba_ 8c8\xc5\xbc_ 8\xc4\x87_ 8\xc4\x878b_ 8\xc4\x878c_ 8\xc4\x878\xc4\x87_ 8\xc4\x878d_ 8\xc4\x878f_ 8\xc4\x878g_ 8\xc4\x878h_ 8\xc4\x878j_ 8\xc4\x878k_ 8\xc4\x878l_ 8\xc4\x878\xc5\x82_ 8\xc4\x878m_ 8\xc4\x878n_ 8\xc4\x878\xc5\x84_ 8\xc4\x878p_ 8\xc4\x878r_ 8\xc4\x878s_ 8\xc4\x878\xc5\x9b_ 8\xc4\x878t_ 8\xc4\x878v_ 8\xc4\x878w_ 8\xc4\x878x_ 8\xc4\x878z_ 8\xc4\x878\xc5\xba_ 8\xc4\x878\xc5\xbc_ 8d_ 8d8b_ 8d8c_ 8d8\xc4\x87_ 8d8d_ 8d8f_ 8d8g_ 8d8h_ 8d8j_ 8d8k_ 8d8l_ 8d8\xc5\x82_ 8d8m_ 8d8n_ 8d8\xc5\x84_ 8d8p_ 8d8r_ dr4z 8d8r8z_ 8d8s_ 8d8\xc5\x9b_ 8d8t_ 8d8v_ 8d8w_ 8d8x_ 8d8z_ 8d8\xc5\xba_ 8d8\xc5\xbc_ 8f_ 8f8b_ 8f8c_ 8f8\xc4\x87_ 8f8d_ 8f8f_ 8f8g_ 8f8h_ 8f8j_ 8f8k_ 8f8l_ 8f8\xc5\x82_ 8f8m_ 8f8n_ 8f8\xc5\x84_ 8f8p_ 8f8r_ 8f8s_ 8f8\xc5\x9b_ 8f8t_ 8f8v_ 8f8w_ 8f8x_ 8f8z_ 8f8\xc5\xba_ 8f8\xc5\xbc_ 8g_ 8g8b_ 8g8c_ 8g8\xc4\x87_ 8g8d_ 8g8f_ 8g8g_ 8g8h_ 8g8j_ 8g8k_ 8g8l_ 8g8\xc5\x82_ 8g8m_ 8g8n_ 8g8\xc5\x84_ 8g8p_ 8g8r_ 8g8s_ 8g8\xc5\x9b_ 8g8t_ 8g8v_ 8g8w_ 8g8x_ 8g8z_ 8g8\xc5\xba_ 8g8\xc5\xbc_ 8h_ 8h8b_ 8h8c_ 8h8\xc4\x87_ 8h8d_ 8h8f_ 8h8g_ 8h8h_ 8h8j_ 8h8k_ 8h8l_ 8h8\xc5\x82_ 8h8m_ 8h8n_ 8h8\xc5\x84_ 8h8p_ 8h8r_ 8h8s_ 8h8\xc5\x9b_ 8h8t_ 8h8v_ 8h8w_ 8h8x_ 8h8z_ 8h8\xc5\xba_ 8h8\xc5\xbc_ 8j_ 8j8b_ 8j8c_ 8j8\xc4\x87_ 8j8d_ 8j8f_ 8j8g_ 8j8h_ 8j8j_ 8j8k_ 8j8l_ 8j8\xc5\x82_ 8j8m_ 8j8n_ 8j8\xc5\x84_ 8j8p_ 8j8r_ 8j8s_ 8j8\xc5\x9b_ 8j8t_ 8j8v_ 8j8w_ 8j8x_ 8j8z_ 8j8\xc5\xba_ 8j8\xc5\xbc_ 8k_ 8k8b_ 8k8c_ 8k8\xc4\x87_ 8k8d_ 8k8f_ 8k8g_ 8k8h_ 8k8j_ 8k8k_ 8k8l_ 8k8\xc5\x82_ 8k8m_ 8k8n_ 8k8\xc5\x84_ 8k8p_ 8k8r_ 8k8s_ 8k8s8t_ 8k8\xc5\x9b_ 8k8t_ 8k8v_ 8k8w_ 8k8x_ 8k8z_ 8k8\xc5\xba_ 8k8\xc5\xbc_ 8l_ 8l8b_ 8l8c_ 8l8\xc4\x87_ 8l8d_ 8l8f_ 8l8g_ 8l8h_ 8l8j_ 8l8k_ 8l8l_ 8l8\xc5\x82_ 8l8m_ 8l8n_ 8l8\xc5\x84_ 8l8p_ 8l8r_ 8l8s_ 8l8\xc5\x9b_ 8l8t_ 8l8v_ 8l8w_ 8l8x_ 8l8z_ 8l8\xc5\xba_ 8l8\xc5\xbc_ 8\xc5\x82_ 8\xc5\x828b_ 8\xc5\x828c_ 8\xc5\x828\xc4\x87_ 8\xc5\x828d_ 8\xc5\x828f_ 8\xc5\x828g_ 8\xc5\x828h_ 8\xc5\x828j_ 8\xc5\x828k_ 8\xc5\x828l_ 8\xc5\x828\xc5\x82_ 8\xc5\x828m_ 8\xc5\x828n_ 8\xc5\x828\xc5\x84_ 8\xc5\x828p_ 8\xc5\x828r_ 8\xc5\x828s_ 8\xc5\x828\xc5\x9b_ 8\xc5\x828t_ 8\xc5\x828v_ 8\xc5\x828w_ 8\xc5\x828x_ 8\xc5\x828z_ 8\xc5\x828\xc5\xba_ 8\xc5\x828\xc5\xbc_ 8m_ 8m8b_ 8m8c_ 8m8\xc4\x87_ 8m8d_ 8m8f_ 8m8g_ 8m8h_ 8m8j_ 8m8k_ 8m8l_ 8m8\xc5\x82_ 8m8m_ 8m8n_ 8m8\xc5\x84_ 8m8p_ 8m8r_ 8m8s_ 8m8s8t_ 8m8\xc5\x9b_ 8m8t_ 8m8v_ 8m8w_ 8m8x_ 8m8z_ 8m8\xc5\xba_ 8m8\xc5\xbc_ 8n_ 8n8b_ 8n8c_ 8n8\xc4\x87_ 8n8d_ 8n8f_ 8n8g_ 8n8h_ 8n8j_ 8n8k_ 8n8l_ 8n8\xc5\x82_ 8n8m_ 8n8n_ 8n8\xc5\x84_ 8n8p_ 8n8r_ 8n8s_ 8n8\xc5\x9b_ 8n8t_ 8n8v_ 8n8w_ 8n8x_ 8n8z_ 8n8\xc5\xba_ 8n8\xc5\xbc_ 8\xc5\x84_ 8\xc5\x848b_ 8\xc5\x848c_ 8\xc5\x848\xc4\x87_ 8\xc5\x848d_ 8\xc5\x848f_ 8\xc5\x848g_ 8\xc5\x848h_ 8\xc5\x848j_ 8\xc5\x848k_ 8\xc5\x848l_ 8\xc5\x848\xc5\x82_ 8\xc5\x848m_ 8\xc5\x848n_ 8\xc5\x848\xc5\x84_ 8\xc5\x848p_ 8\xc5\x848r_ 8\xc5\x848s_ 8\xc5\x848\xc5\x9b_ 8\xc5\x848t_ 8\xc5\x848v_ 8\xc5\x848w_ 8\xc5\x848x_ 8\xc5\x848z_ 8\xc5\x848\xc5\xba_ 8\xc5\x848\xc5\xbc_ 8p_ 8p8b_ 8p8c_ 8p8\xc4\x87_ 8p8d_ 8p8f_ 8p8g_ 8p8h_ 8p8j_ 8p8k_ 8p8l_ 8p8\xc5\x82_ 8p8m_ 8p8n_ 8p8\xc5\x84_ 8p8p_ 8p8r_ pr4z 8p8r8z_ 8p8s_ 8p8\xc5\x9b_ 8p8t_ 8p8v_ 8p8w_ 8p8x_ 8p8z_ 8p8\xc5\xba_ 8p8\xc5\xbc_ 8r_ 8r8b_ 8r8c_ 8r8\xc4\x87_ 8r8d_ 8r8f_ 8r8g_ 8r8h_ 8r8j_ 8r8k_ 8r8l_ 8r8\xc5\x82_ 8r8m_ 8r8n_ 8r8\xc5\x84_ 8r8p_ 8r8r_ 8r8s_ rs4z 8r8s8z_ 8r8\xc5\x9b_ 8r8t_ 8r8v_ 8r8w_ 8r8x_ 8r8z_ 8r8z8\xc5\x82_ 8r8\xc5\xba_ 8r8\xc5\xbc_ 8s_ 8s8b_ 8s8c_ sc4h 8s8c8h_ 8s8\xc4\x87_ 8s8d_ 8s8f_ 8s8g_ 8s8h_ 8s8j_ 8s8k_ skr4z 8sk8r8z_ 8s8l_ 8s8\xc5\x82_ 8s8m_ 8s8n_ 8s8\xc5\x84_ 8s8p_ 8s8r_ 8s8s_ 8s8\xc5\x9b_ 8s8t_ 8s8t8r_ str4z 8s8t8r8z_ 8s8t8w_ 8s8v_ 8s8w_ 8s8x_ 8s8z_ szc4z 8sz8c8z_ sz2cz1b 8szc8z8b_ 8s8z8k_ 8s8z8n_ 8s8z8t_ 8sz8t8r_ 8s8\xc5\xba_ 8s8\xc5\xbc_ 8\xc5\x9b_ 8\xc5\x9b8b_ 8\xc5\x9b8c_ 8\xc5\x9b8\xc4\x87_ 8\xc5\x9b8d_ 8\xc5\x9b8f_ 8\xc5\x9b8g_ 8\xc5\x9b8h_ 8\xc5\x9b8j_ 8\xc5\x9b8k_ 8\xc5\x9b8l_ 8\xc5\x9b8\xc5\x82_ 8\xc5\x9b8m_ 8\xc5\x9b8n_ 8\xc5\x9b8\xc5\x84_ 8\xc5\x9b8p_ 8\xc5\x9b8r_ 8\xc5\x9b8s_ 8\xc5\x9b8\xc5\x9b_ 8\xc5\x9b8t_ 8\xc5\x9b8v_ 8\xc5\x9b8w_ 8\xc5\x9b8x_ 8\xc5\x9b8z_ 8\xc5\x9b8\xc5\xba_ 8\xc5\x9b8\xc5\xbc_ 8t_ 8t8b_ 8t8c_ 8t8\xc4\x87_ 8t8d_ 8t8f_ 8t8g_ 8t8h_ 8t8j_ 8t8k_ 8t8l_ 8t8\xc5\x82_ 8t8m_ 8t8n_ 8t8\xc5\x84_ 8t8p_ 8t8r_ 8t8r8z_ 8t8s_ 8t8\xc5\x9b_ 8t8t_ 8t8v_ 8t8w_ 8t8x_ 8t8z_ 8t8\xc5\xba_ 8t8\xc5\xbc_ 8v_ 8v8b_ 8v8c_ 8v8\xc4\x87_ 8v8d_ 8v8f_ 8v8g_ 8v8h_ 8v8j_ 8v8k_ 8v8l_ 8v8\xc5\x82_ 8v8m_ 8v8n_ 8v8\xc5\x84_ 8v8p_ 8v8r_ 8v8s_ 8v8\xc5\x9b_ 8v8t_ 8v8v_ 8v8w_ 8v8x_ 8v8z_ 8v8\xc5\xba_ 8v8\xc5\xbc_ 8w_ 8w8b_ 8w8c_ 8w8\xc4\x87_ 8w8d_ 8w8f_ 8w8g_ 8w8h_ 8w8j_ 8w8k_ 8w8l_ 8w8\xc5\x82_ 8w8m_ 8w8n_ 8w8\xc5\x84_ 8w8p_ 8w8r_ 8w8s_ 8w8\xc5\x9b_ 8w8t_ 8w8v_ 8w8w_ 8w8x_ 8w8z_ 8w8\xc5\xba_ 8w8\xc5\xbc_ 8x_ 8x8b_ 8x8c_ 8x8\xc4\x87_ 8x8d_ 8x8f_ 8x8g_ 8x8h_ 8x8j_ 8x8k_ 8x8l_ 8x8\xc5\x82_ 8x8m_ 8x8n_ 8x8\xc5\x84_ 8x8p_ 8x8r_ 8x8s_ 8x8\xc5\x9b_ 8x8t_ 8x8v_ 8x8w_ 8x8x_ 8x8z_ 8x8\xc5\xba_ 8x8\xc5\xbc_ 8z_ 8z8b_ 8z8c_ 8z8\xc4\x87_ 8z8d_ 8z8d8r_ zdr4z 8z8d8r8z_ 8z8f_ 8z8g_ 8z8h_ 8z8j_ 8z8k_ 8z8l_ 8z8\xc5\x82_ 8z8m_ 8z8n_ 8z8\xc5\x84_ 8z8p_ 8z8r_ 8z8s_ 8z8\xc5\x9b_ 8z8t_ 8z8v_ 8z8w_ 8z8x_ 8z8z_ 8z8\xc5\xba_ 8z8\xc5\xbc_ 8\xc5\xba_ 8\xc5\xba8b_ 8\xc5\xba8c_ 8\xc5\xba8\xc4\x87_ 8\xc5\xba8d_ 8\xc5\xba8f_ 8\xc5\xba8g_ 8\xc5\xba8h_ 8\xc5\xba8j_ 8\xc5\xba8k_ 8\xc5\xba8l_ 8\xc5\xba8\xc5\x82_ 8\xc5\xba8m_ 8\xc5\xba8n_ 8\xc5\xba8\xc5\x84_ 8\xc5\xba8p_ 8\xc5\xba8r_ 8\xc5\xba8s_ 8\xc5\xba8\xc5\x9b_ 8\xc5\xba8t_ 8\xc5\xba8v_ 8\xc5\xba8w_ 8\xc5\xba8x_ 8\xc5\xba8z_ 8\xc5\xba8\xc5\xba_ 8\xc5\xba8\xc5\xbc_ 8\xc5\xbc_ 8\xc5\xbc8b_ 8\xc5\xbc8c_ 8\xc5\xbc8\xc4\x87_ 8\xc5\xbc8d_ 8\xc5\xbc8f_ 8\xc5\xbc8g_ 8\xc5\xbc8h_ 8\xc5\xbc8j_ 8\xc5\xbc8k_ 8\xc5\xbc8l_ 8\xc5\xbc8\xc5\x82_ 8\xc5\xbc8m_ 8\xc5\xbc8n_ 8\xc5\xbc8\xc5\x84_ 8\xc5\xbc8p_ 8\xc5\xbc8r_ 8\xc5\xbc8s_ 8\xc5\xbc8\xc5\x9b_ 8\xc5\xbc8t_ 8\xc5\xbc8v_ 8\xc5\xbc8w_ 8\xc5\xbc8x_ 8\xc5\xbc8z_ 8\xc5\xbc8\xc5\xba_ 8\xc5\xbc8\xc5\xbc_ a1 a2u1 a2y1 a1a2 ae2 ai2 ao2 \xc4\x851 be1 be1e2 be2eth be2f3s4z2 be1khe1 be2k1he2n1d bi1 bino1 bi2n3o2ku1 bis4z bi2s2z1k biszko1 bi2sz3kop bizne1 bi2z3nes bi2z3ne2s3m bi2r1m bi1rmi1 birmi2n1g birmingha1 birmin2g1ham blo1 blokha1 blokha2u1 blo2k1hauz bo1 bo2s3ma1 b2r2d bro1 broa2 broa1dwa1 bro2a2d3wa2y1 bu1 bus4z bu2sz1m bu2sz3me1 bu2k1s bu2k1s4z buk2s2z1p bukszpa1 buk2sz3pan busi1 busine1 busine2s2s busine2ss3m ca1 ca2l1d caldwe1 cal2d1we4l3l c2h2j c2h2l chu1 chus1t cu1 cur4z curzo1 cu2r7zon de1 de2u1 deu2t1s deutsc4h deutsc2h2l deutschla1 deut4sch3la2n1d d2rz2w du1 dus4z du2s2z1p duszpa1 du2sz3past d2\xc5\xbc2j d2\xc5\xbc2l d2\xc5\xbc2\xc5\x82 d2\xc5\xbc2r d2\xc5\xbc2w d\xc5\xbce1 d\xc5\xbce4z3b d\xc5\xbce4z3m e1 er4z erza1 e2r5zac e2u1 e2y1 e3u2s4z ea2 e1e2 ei2 eo2 \xc4\x991 fi1 fisha1 fi2s3ha2r1m fis4z fi1szbi1 fi2sz3bin fo1 fo2k1s fo2k2s3t for4z forza1 fo2r5zac fo2l1k fo1lklo1 fol2k1lor fo2s1f fosfa1 fo1sfazo1 fos2f1a2zot ga1 ga2d1g gadge1 ga3d2get gado1 gado2p1t ga1do3p2ta1 go1 go2l1f gol2f3s golfs4z2 gra1 gra2n1d grandi1 gran2d1ilo1 gro1 gro4t3r hi1 his4z hi2s2z3p hu1 huc4z hu2cz1w huxle1 hu2x3le2y1 i1 i2a1 i2\xc4\x851 i2e1 i2\xc4\x991 i2i1 i2o1 i2\xc3\xb31 i2u1 i2y1 i4n3n in2n1s inn2s1b innsbru1 in4nsbru2c1k i2n1s in2s1b insbru1 in4sbruc j2t1\xc5\x82 j2t1r ja1 ja4z3z ja4z4z3b ja4z4z3m ka1 ka2r1l kar2l1s karlskro1 karl2s1kron karlsru1 karl2s1ruhe1 ki1 ki2r1c kirc4h kirc4h3h kirchho1 kir2chho4f3f ko1 ko2n1g kongre1 kongre2s3m le1 led1w lu1 luftwa1 luftwa4f3f lu2ft3waffe1 lu2k1s luk2s1f luksfe1 lu2ks1fer ly1 ly2o2 ma1 mar4z ma2r5z1l ma2r5z1\xc5\x82 ma2r5z1n mi1 mis4z mi2sz1m miszma1 mi2s4z1mas4z mi2e1 mier4z mi1e2r5zi1 mie2r5z1\xc5\x82 mo1 mo2n1t montre1 montrea2 mon2t3real moza1 mozai2 moza2i3k mu1 mur4z murza1 murzasi1 murzasic4h mu2r7zasic2h3l na1 na2\xc5\x821k na\xc5\x82ko1 na4\xc5\x823ko2w1s na4r3v o1 o2y1 oa2 oc4h o2c2h1m ochmi1 och3mistr4z oe2 o4f3f offse1 of2f3set oi2 o1o2 ou2 \xc3\xb31 \xc3\xb32w1c \xc3\xb34w3c4z pa1 pa1na1 paname1 pa2n3a2mer pa1sca1 pa2s3cal pa2s3c4h po1 po2d1n podni1 podni2e1 po3d4niepr4z po2m1n po3m2n\xc4\x851 po3m2n\xc4\x991 po3m2ni1 po2r1t por2t1s po1rtsmo1 portsmou2 po4rt2s3mo2uth portla1 po4rt3la2n1d poli1 poli2e1 poli3e2t poli2u1 poli3u2re1 po\xc5\x82u1 po\xc5\x82u2d1n po\xc5\x82u3d2ni1 po2w1s pows4z powsze1 powsze2d1n powsze3d2ni1 p2r1c prc4h prcha1 pr2chal pre1 pres4z pre2s2z1p pre2sz3pa1 ro1 roe2 roe2n1t roen2t1g roe1ntge1 ro2e3nt2gen ro1kro1 ro2k3roc4z ro1sto1 ro2s3to3c2k se1 se2t3le1 sko1 skor4z sko1rzo1 skorzone1 sko2r5zoner s2m2r so1 sowi1 sowi3z2 sy1 syno1 sy2n3o2p1t syste1 sy2s1tem sza1 s4zas4z sza2sz1\xc5\x82y1 sze1 szezlo1 sze2z1lo2n1g sze4\xc5\x9b\xc4\x87 szto1 szto1kho1 szto2k1ho2l1m szy1 szy2n1k szynkwa1 szyn2k1was to1 to2y1 to1yo2 to3y2o3t tu1 tu2r1b turbo1 turbo1o2 turboodr4z tu1rboodrzu1 turboo2d3rzut ty1 tygo1 tygo2d1n tygo3d2ni1 u1 u2y1 ua2 ue2 ui2 uo2 u1u2 vo1 vo2l1k vo2l2k2s3 we1 we1e2 we1e1ke1 we2e2k1e2n1d we4s2t3f we4s2t3m y1 ya2 ye2 yi2 yo2 yu2 ze1 ze4p3p \xc5\xba2d4\xc5\xba _by1 _byna1 _byna2j1m _bynaj2m1n _bynajmni1 _bynajmni2e1 _by9naj9m8nie8j_ _bezac4h _be9z8a8c8h_ _bezami1 _be9z8ami_ _gd4z _gdzi1 _gdzi2e1 _gdzi1eni1 _gdzi2e1ni2e1 _2g1dzienie2g1d _gd4zieniegd4z _gdzi1eni1egdzi1 _gdzi2e1ni2e1gdzi2e1 _gdzienie9g8dzie_ _ina1 _inac4z _inacze1 _in8a9cze8j_ _n8a9da8l_ _ni2g1d _nigdy1 _n8i9gdy_ _nigd4z _ni1gdzi1 _nigdzi2e1 _n8i9gdzie_ _nie2c2h1\xc5\xbc _nie1ch\xc5\xbce1 _nie8ch9\xc5\xbce_ _nie2c2h1b _niechby1 _nie8ch9by_ _o2w1s _ows4z _owsze1 _ow9sze8m_ _p\xc3\xb3\xc5\x82a1 _p\xc3\xb3\xc5\x82ac4h _p\xc3\xb39\xc5\x828a8c8h_ _p\xc3\xb3\xc5\x82ami1 _p\xc3\xb39\xc5\x828ami_ _p\xc3\xb39\xc5\x828e8k_ _przyna1 _przyna2j1m _przynaj2m1n _przynajmni1 _przynajmni2e1 _przy9naj9m8nie8j_ _sk\xc4\x85di1 _sk\xc4\x851din\xc4\x851 _sk\xc4\x85d9i8n\xc4\x858d_ _tr\xc3\xb3ja1 _tr\xc3\xb3jac4h _tr\xc3\xb39j8a8c8h_ _tr\xc3\xb3jami1 _tr\xc3\xb39j8ami_ _tr\xc3\xb39j8e8k_ _pod\xc3\xb32w1c _pod\xc3\xb34w3c4z _pod\xc3\xb3wcza1 _pod\xc3\xb33w2czas _po8d9\xc3\xb38w9cza8s_";
+
+?>
diff --git a/inc/3rdparty/libraries/mpdf/patterns/ru.php b/inc/3rdparty/libraries/mpdf/patterns/ru.php
new file mode 100644 (file)
index 0000000..6202773
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+       
+       Created by crymos at yandex dot ru
+       Вопросы по русскоязычным таблицам переноса отправлять на адрес.
+*/
+
+$patterns="_\xd0\xb0\xd0\xb11\xd1\x80 _\xd0\xb0\xd0\xb31\xd1\x80\xd0\xbe _\xd0\xb0\xd0\xb4\xd0\xb82 _\xd0\xb0\xd0\xb82 _\xd0\xb0\xd0\xba1\xd1\x80 _\xd0\xb0\xd0\xbb\xd1\x8c3\xd1\x8f _\xd0\xb0\xd1\x802\xd1\x821\xd0\xbe2 _\xd0\xb0\xd1\x811\xd1\x82\xd0\xbe _\xd0\xb0\xd1\x81\xd1\x821\xd1\x80 _\xd0\xb0\xd1\x832 _\xd0\xb1\xd0\xb82\xd0\xbe _\xd0\xb2\xd0\xbe2\xd0\xb13\xd0\xbb _\xd0\xb2\xd0\xbe3\xd0\xb62\xd0\xb4 _\xd0\xb3\xd0\xbe2\xd1\x84 _\xd0\xb4\xd0\xb5\xd0\xba2 _\xd0\xb4\xd0\xb51\xd0\xba\xd0\xb2 _\xd0\xb4\xd0\xb82\xd0\xb0\xd0\xba _\xd0\xb4\xd0\xb81\xd0\xbe _\xd0\xb4\xd0\xbe3\xd0\xbf _\xd0\xb4\xd0\xbe3\xd1\x822 _\xd0\xb5\xd0\xbf\xd0\xb83 _\xd0\xb7\xd0\xb0\xd0\xb22\xd1\x80 _\xd0\xb7\xd0\xb03\xd0\xbc2\xd0\xbd _\xd0\xb7\xd0\xb03\xd0\xbf _\xd0\xb8\xd0\xb31\xd1\x80 _\xd0\xb8\xd0\xb7\xd0\xb32 _\xd0\xb8\xd0\xb73\xd0\xbd _\xd0\xb8\xd0\xb82 _\xd0\xb8\xd0\xba1\xd1\x80 _\xd0\xb8\xd0\xbe2 _\xd0\xb8\xd0\xbe4\xd0\xbd\xd0\xb0 _\xd0\xb8\xd1\x813 _\xd0\xbb\xd0\xb52\xd0\xbe _\xd0\xbb\xd0\xb52\xd0\xbf3\xd1\x80 _\xd0\xbb\xd0\xb5\xd1\x811\xd0\xba _\xd0\xbb\xd1\x8c2 _\xd0\xbb\xd1\x8e\xd1\x81\xd1\x821 _\xd0\xbc\xd0\xb52\xd0\xb61\xd1\x832 _\xd0\xbc\xd0\xb81\xd0\xbe\xd0\xbc _\xd0\xbc\xd0\xbe2\xd0\xba1 _\xd0\xbc\xd1\x832\xd1\x88\xd1\x821 _\xd0\xbd\xd0\xb01\xd0\xb2 _\xd0\xbd\xd0\xb03\xd1\x82 _\xd0\xbd\xd0\xb03\xd1\x882 _\xd0\xbd\xd0\xb53\xd0\xb2\xd0\xbd _\xd0\xbd\xd0\xb51\xd0\xb4\xd1\x80 _\xd0\xbd\xd0\xb51\xd0\xb72 _\xd0\xbd\xd0\xb51\xd1\x81\xd0\xbb _\xd0\xbd\xd0\xb51\xd1\x812\xd1\x86 _\xd0\xbd\xd0\xb53\xd1\x82 _\xd0\xbd\xd0\xbe\xd1\x811\xd0\xba _\xd0\xbd\xd1\x83\xd0\xba1\xd0\xbb _\xd0\xbe\xd0\xb1\xd0\xbe3\xd0\xb62 _\xd0\xbe\xd0\xb2\xd0\xbe1 _\xd0\xbe\xd0\xb33\xd0\xbd _\xd0\xbe\xd0\xb74 _\xd0\xbe\xd1\x812\xd0\xba\xd0\xb0 _\xd0\xbe\xd1\x812\xd0\xbf _\xd0\xbe\xd1\x813\xd0\xbf\xd0\xb8 _\xd0\xbe\xd1\x821\xd0\xb2 _\xd0\xbe\xd1\x821\xd1\x80\xd0\xbe _\xd0\xbe\xd1\x821\xd1\x80\xd1\x83 _\xd0\xbe\xd1\x821\xd1\x83\xd0\xb6 _\xd0\xbf\xd0\xbe3\xd0\xb22 _\xd0\xbf\xd0\xbe3\xd0\xb62 _\xd0\xbf\xd0\xbe\xd0\xb72\xd0\xbd _\xd0\xbf\xd1\x80\xd0\xbe\xd1\x812 _\xd1\x80\xd0\xb02\xd1\x813\xd1\x82 _\xd1\x80\xd0\xb52\xd0\xb1\xd1\x80 _\xd1\x80\xd0\xb52\xd0\xb73\xd0\xb2 _\xd1\x80\xd0\xb82\xd1\x81\xd0\xba _\xd1\x80\xd0\xb82\xd1\x87 _\xd1\x80\xd0\xbe2\xd0\xb73\xd0\xb2 _\xd1\x80\xd0\xbe2\xd1\x813\xd0\xbb _\xd1\x80\xd0\xbe2\xd1\x85 _\xd1\x81\xd0\xb5\xd0\xbf\xd1\x822 _\xd1\x81\xd0\xba2 _\xd1\x81\xd1\x822 _\xd1\x81\xd1\x832\xd0\xb6 _\xd1\x82\xd0\xb52\xd0\xbe3 _\xd1\x82\xd0\xb8\xd0\xb03 _\xd1\x82\xd0\xb82\xd0\xb3 _\xd1\x82\xd0\xb8\xd0\xb31\xd1\x80 _\xd1\x82\xd0\xb82\xd0\xbe _\xd1\x83\xd0\xb12 _\xd1\x83\xd0\xb42 _\xd1\x83\xd0\xb52 _\xd1\x83\xd0\xb72\xd0\xbd\xd0\xb0 _\xd1\x83\xd0\xba2 _\xd1\x83\xd0\xbc2\xd1\x87 _\xd1\x83\xd0\xbe3 _\xd1\x83\xd0\xbf2 _\xd1\x83\xd1\x802\xd0\xb2 _\xd1\x83\xd1\x812 _\xd1\x83\xd1\x822\xd1\x80 _\xd1\x83\xd1\x8e2 _\xd1\x85\xd0\xbe2\xd1\x803\xd0\xb2 _\xd1\x87\xd0\xb52\xd1\x811\xd0\xba _\xd1\x8e\xd1\x811 4\xd0\xb03\xd0\xb0 \xd0\xb0\xd0\xb02\xd0\xbf \xd0\xb0\xd0\xb02\xd1\x80 \xd0\xb0\xd0\xb02\xd1\x86 \xd0\xb01\xd0\xb1 \xd0\xb0\xd0\xb1\xd0\xb53\xd1\x81\xd1\x82 \xd0\xb03\xd0\xb1\xd0\xbb\xd0\xb0 \xd0\xb0\xd0\xb12\xd0\xbb\xd1\x8e \xd0\xb0\xd0\xb11\xd1\x80\xd0\xb8 \xd0\xb03\xd0\xb1\xd1\x83 \xd0\xb0\xd0\xb21\xd0\xb2 \xd0\xb01\xd0\xb2\xd0\xb5 \xd0\xb0\xd0\xb23\xd0\xb7\xd0\xbe \xd0\xb01\xd0\xb2\xd0\xb8 \xd0\xb0\xd0\xb2\xd0\xb82\xd0\xb0 \xd0\xb01\xd0\xb2\xd0\xbe \xd0\xb0\xd0\xb2\xd0\xbe1\xd1\x81 \xd0\xb02\xd0\xb2\xd0\xbe\xd1\x82 \xd0\xb0\xd0\xb21\xd1\x80\xd0\xb0 \xd0\xb0\xd0\xb22\xd1\x81\xd0\xb5 \xd0\xb02\xd0\xb2\xd1\x82 \xd0\xb01\xd0\xb2\xd1\x83 \xd0\xb02\xd0\xb2\xd1\x85 \xd0\xb03\xd0\xb22\xd1\x87\xd0\xb5 2\xd0\xb0\xd0\xb3\xd0\xb0 \xd0\xb0\xd0\xb3\xd0\xb01\xd1\x812 \xd0\xb02\xd0\xb3\xd0\xb4 \xd0\xb02\xd0\xb3\xd0\xb8\xd1\x82\xd0\xb8 \xd0\xb02\xd0\xb3\xd0\xbb\xd0\xb5 \xd0\xb0\xd0\xb32\xd0\xbb\xd0\xb8 \xd0\xb02\xd0\xb3\xd0\xbb\xd0\xbe\xd1\x81 \xd0\xb0\xd0\xb32\xd0\xbb\xd0\xbe\xd1\x82 2\xd0\xb0\xd0\xb3\xd0\xbe \xd0\xb03\xd0\xb3\xd1\x83 \xd0\xb01\xd0\xb4 2\xd0\xb0\xd0\xb4\xd0\xb2 \xd0\xb02\xd0\xb4\xd0\xb2\xd0\xb5 \xd0\xb0\xd0\xb42\xd0\xb6\xd0\xb8 \xd0\xb0\xd0\xb4\xd0\xb82\xd0\xbe\xd0\xb4 \xd0\xb02\xd0\xb4\xd0\xbb \xd0\xb02\xd0\xb41\xd0\xbe\xd0\xb1\xd0\xbb \xd0\xb0\xd0\xb41\xd1\x80\xd0\xbe \xd0\xb02\xd0\xb41\xd1\x80\xd1\x83 \xd0\xb0\xd0\xb4\xd1\x833\xd1\x87 \xd0\xb0\xd0\xb42\xd1\x86 \xd0\xb02\xd0\xb4\xd1\x8b\xd0\xbd \xd0\xb01\xd0\xb5 \xd0\xb0\xd0\xb52\xd0\xb3\xd0\xbe \xd0\xb0\xd0\xb52\xd0\xb4\xd0\xb8 \xd0\xb0\xd0\xb52\xd0\xbb \xd0\xb02\xd0\xb5\xd0\xbf \xd0\xb0\xd0\xb52\xd1\x80\xd0\xb5 \xd0\xb0\xd0\xb52\xd1\x81 \xd0\xb0\xd0\xb7\xd0\xb04\xd1\x883 \xd0\xb0\xd0\xb7\xd0\xb22 \xd0\xb0\xd0\xb73\xd0\xb2\xd0\xb5\xd0\xb7 \xd0\xb0\xd0\xb71\xd0\xb2\xd0\xbb \xd0\xb0\xd0\xb7\xd0\xb32 \xd0\xb0\xd0\xb71\xd0\xb4\xd1\x80 \xd0\xb0\xd0\xb71\xd0\xbe\xd0\xb1 \xd0\xb0\xd0\xb72\xd0\xbe1\xd0\xb1\xd1\x80 \xd0\xb02\xd0\xb7\xd0\xbe\xd0\xb2\xd1\x8c \xd0\xb02\xd0\xb7\xd0\xbe\xd0\xbb\xd1\x8c \xd0\xb01\xd0\xb7\xd0\xbe\xd1\x80\xd0\xb8 \xd0\xb0\xd0\xb72\xd0\xbe1\xd1\x81 \xd0\xb0\xd0\xb71\xd1\x80 \xd0\xb01\xd0\xb8 \xd0\xb0\xd0\xb82\xd0\xb31 \xd0\xb0\xd0\xb83\xd0\xb3\xd0\xbb \xd0\xb02\xd0\xb8\xd1\x85 \xd0\xb01\xd0\xba \xd0\xb0\xd0\xba1\xd0\xb2 1\xd0\xb0\xd0\xba\xd0\xba \xd0\xb0\xd0\xba2\xd0\xbb \xd0\xb0\xd0\xba3\xd0\xbb\xd0\xb5\xd0\xbc \xd0\xb0\xd0\xba\xd0\xbe1\xd0\xb12 2\xd0\xb0\xd0\xba\xd0\xbe\xd0\xbd\xd1\x81 \xd0\xb0\xd0\xba\xd0\xbe3\xd1\x82 2\xd0\xb0\xd0\xba\xd1\x80\xd0\xb8 \xd0\xb0\xd0\xba1\xd1\x81 \xd0\xb01\xd0\xbb\xd0\xb0 \xd0\xb03\xd0\xbb\xd0\xb0\xd0\xb3 \xd0\xb01\xd0\xbb\xd0\xb5 2\xd0\xb0\xd0\xbb\xd0\xb5\xd0\xba \xd0\xb03\xd0\xbb\xd0\xb8 \xd0\xb0\xd0\xbb\xd0\xbe1\xd0\xb7 \xd0\xb01\xd0\xbb\xd1\x83 \xd0\xb0\xd0\xbb\xd1\x832\xd1\x88 \xd0\xb0\xd0\xbb\xd1\x83\xd1\x881\xd1\x82 \xd0\xb01\xd0\xbb\xd1\x8b \xd0\xb02\xd0\xbb\xd1\x8c\xd1\x89 \xd0\xb01\xd0\xbb\xd1\x8e 2\xd0\xb0\xd0\xbc\xd0\xb0 \xd0\xb0\xd0\xbc\xd0\xb14 2\xd0\xb0\xd0\xbc\xd0\xb5\xd1\x82 \xd0\xb02\xd0\xbc\xd0\xb8\xd0\xbd\xd1\x82 \xd0\xb0\xd0\xbc2\xd0\xbd\xd0\xb5\xd1\x82 2\xd0\xb0\xd0\xbc\xd0\xbe \xd0\xb0\xd0\xbc\xd0\xbe1\xd0\xb72 \xd0\xb0\xd0\xbc\xd0\xbe\xd0\xb82 \xd0\xb02\xd0\xbc\xd1\x87 \xd0\xb0\xd0\xbd\xd0\xb02\xd0\xb4\xd1\x86 \xd0\xb02\xd0\xbd1\xd0\xb02\xd0\xbc\xd0\xb5 \xd0\xb02\xd0\xbd\xd0\xb0\xd1\x84 \xd0\xb0\xd0\xbd2\xd0\xb4\xd1\x80\xd0\xb0 \xd0\xb02\xd0\xbd1\xd0\xbe2\xd0\xb1 \xd0\xb0\xd0\xbd1\xd0\xbe2\xd1\x85\xd1\x80 \xd0\xb0\xd0\xbd1\xd1\x80 \xd0\xb0\xd0\xbd2\xd1\x81\xd0\xbf \xd0\xb0\xd0\xbd\xd1\x811\xd1\x83 \xd0\xb0\xd0\xbd2\xd1\x81\xd1\x83\xd1\x80 \xd0\xb02\xd0\xbd1\xd1\x83\xd0\xb7 \xd0\xb01\xd0\xbd\xd1\x8c 2\xd0\xb01\xd0\xbe \xd0\xb0\xd0\xbe2\xd0\xb4 \xd0\xb0\xd0\xbe2\xd0\xba \xd0\xb0\xd0\xbe2\xd1\x80 \xd0\xb0\xd0\xbe2\xd1\x81 \xd0\xb0\xd0\xbe\xd1\x81\xd1\x821 \xd0\xb03\xd0\xbf\xd0\xbb\xd0\xb0 \xd0\xb0\xd0\xbf2\xd0\xbb\xd0\xbe\xd0\xbc 2\xd0\xb0\xd0\xbf\xd0\xbe \xd0\xb0\xd0\xbf\xd0\xbe4\xd0\xb2\xd1\x81 \xd0\xb0\xd0\xbf\xd0\xbe3\xd1\x872\xd1\x82 \xd0\xb0\xd0\xbf2\xd1\x80\xd0\xb0 \xd0\xb0\xd0\xbf1\xd1\x80\xd0\xb5\xd0\xbb \xd0\xb01\xd1\x80\xd0\xb0 \xd0\xb0\xd1\x80\xd0\xb02\xd1\x81\xd1\x82 \xd0\xb0\xd1\x802\xd0\xb1\xd0\xbe\xd0\xba \xd0\xb0\xd1\x802\xd0\xb2\xd0\xb0\xd0\xbb 1\xd0\xb0\xd1\x80\xd0\xb3\xd1\x83 \xd0\xb01\xd1\x80\xd0\xb5 \xd0\xb0\xd1\x80\xd0\xb51\xd0\xb4\xd0\xb2 \xd0\xb0\xd1\x80\xd0\xb51\xd0\xbe\xd0\xbb \xd0\xb0\xd1\x802\xd0\xb6\xd0\xb0 \xd0\xb01\xd1\x80\xd0\xb8 \xd0\xb01\xd1\x80\xd0\xbe \xd0\xb0\xd1\x802\xd1\x82\xd0\xbe\xd1\x80 \xd0\xb0\xd1\x802\xd1\x821\xd1\x80 \xd0\xb01\xd1\x80\xd1\x83 \xd0\xb0\xd1\x801\xd1\x85 \xd0\xb01\xd1\x80\xd1\x8b \xd0\xb01\xd1\x80\xd1\x8e \xd0\xb01\xd1\x80\xd1\x8f 2\xd0\xb0\xd1\x811\xd0\xba \xd0\xb0\xd1\x813\xd0\xbc\xd0\xb8 \xd0\xb0\xd1\x813\xd0\xbd\xd0\xbe 1\xd0\xb0\xd1\x81\xd1\x81\xd0\xb8\xd0\xb3 \xd0\xb0\xd1\x81\xd1\x821\xd0\xb2\xd1\x83 \xd0\xb0\xd1\x813\xd1\x82\xd0\xb5\xd0\xbc \xd0\xb0\xd1\x812\xd1\x82\xd0\xb8\xd0\xbd \xd0\xb0\xd1\x812\xd1\x82\xd0\xb8\xd1\x8f \xd0\xb0\xd1\x811\xd1\x82\xd0\xbe\xd0\xbe \xd0\xb0\xd1\x811\xd1\x82\xd1\x83\xd1\x85 \xd0\xb01\xd1\x81\xd1\x82\xd1\x8c\xd0\xb5 \xd0\xb0\xd1\x812\xd1\x88\xd0\xb5\xd0\xb4 \xd0\xb0\xd1\x812\xd1\x88\xd0\xb5\xd1\x81 \xd0\xb01\xd1\x81\xd1\x8c\xd0\xb8 \xd0\xb01\xd1\x82\xd0\xb0 1\xd0\xb0\xd1\x82\xd0\xb0\xd0\xba \xd0\xb0\xd1\x823\xd0\xb2\xd0\xb0 \xd0\xb0\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xb0\xd1\x821\xd0\xb2\xd1\x83 2\xd0\xb0\xd1\x82\xd0\xb5\xd0\xb7 \xd0\xb01\xd1\x82\xd0\xb8 \xd0\xb01\xd1\x82\xd0\xbe \xd0\xb0\xd1\x821\xd0\xbe\xd0\xb1\xd0\xb5 \xd0\xb02\xd1\x82\xd0\xbe\xd0\xbc\xd0\xbd \xd0\xb0\xd1\x82\xd0\xbe2\xd1\x88 \xd0\xb0\xd1\x821\xd1\x80\xd0\xb0\xd1\x85 \xd0\xb0\xd1\x821\xd1\x80\xd0\xb8 \xd0\xb01\xd1\x82\xd1\x83 \xd0\xb0\xd1\x822\xd1\x85 \xd0\xb01\xd1\x82\xd1\x8b \xd0\xb01\xd1\x82\xd1\x8c\xd0\xb5 \xd0\xb03\xd1\x82\xd1\x8c\xd1\x8e \xd0\xb03\xd1\x82\xd1\x8c\xd1\x8f \xd0\xb01\xd1\x82\xd1\x8e \xd0\xb01\xd1\x82\xd1\x8f \xd0\xb01\xd1\x83 \xd0\xb02\xd1\x83\xd0\xb1 \xd0\xb0\xd1\x832\xd0\xb4 \xd0\xb0\xd1\x833\xd0\xb4\xd0\xbe \xd0\xb02\xd1\x83\xd0\xbb\xd0\xb5 \xd0\xb0\xd1\x83\xd1\x821\xd1\x80 \xd0\xb0\xd1\x832\xd1\x85 \xd0\xb0\xd1\x832\xd1\x87 \xd0\xb0\xd1\x833\xd1\x87\xd1\x8c \xd0\xb0\xd1\x83\xd1\x8d1 \xd0\xb02\xd1\x841\xd0\xbb \xd0\xb0\xd1\x852\xd0\xb0 \xd0\xb0\xd1\x85\xd0\xbc\xd0\xb82 \xd0\xb0\xd1\x853\xd1\x81 \xd0\xb01\xd1\x87 2\xd0\xb0\xd1\x87\xd0\xb0 \xd0\xb02\xd1\x87\xd0\xbb \xd0\xb0\xd1\x871\xd1\x82 \xd0\xb02\xd1\x88\xd0\xbb \xd0\xb0\xd1\x8d2\xd0\xbb\xd0\xb8 \xd0\xb02\xd1\x8d\xd1\x80 \xd0\xb0\xd1\x8e1\xd1\x82\xd0\xb0 \xd0\xb01\xd1\x8f \xd0\xb0\xd1\x8f2\xd0\xb1 \xd0\xb0\xd1\x8f2\xd0\xb2 \xd0\xb0\xd1\x8f2\xd0\xb7 1\xd0\xb1\xd0\xb0 \xd0\xb1\xd0\xb02\xd0\xb1\xd0\xb2 \xd0\xb1\xd0\xb02\xd0\xb31\xd1\x80 \xd0\xb1\xd0\xb02\xd0\xb4\xd1\x80 \xd0\xb1\xd0\xb01\xd0\xb7 \xd0\xb1\xd0\xb03\xd0\xb7\xd1\x83 \xd0\xb1\xd0\xb0\xd0\xbb\xd1\x8e1 \xd0\xb1\xd0\xb02\xd0\xbe \xd0\xb1\xd0\xb0\xd1\x813\xd0\xbc \xd0\xb1\xd0\xb01\xd1\x81\xd1\x82 \xd0\xb1\xd0\xb01\xd1\x82\xd1\x80 2\xd0\xb11\xd0\xb1 \xd0\xb11\xd0\xb2 \xd0\xb1\xd0\xb2\xd1\x8b2 \xd0\xb1\xd0\xb32 2\xd0\xb11\xd0\xb4 1\xd0\xb1\xd0\xb5 3\xd0\xb1\xd0\xb5\xd0\xb2 \xd0\xb1\xd0\xb52\xd0\xb3\xd0\xbb \xd0\xb1\xd0\xb52\xd0\xb3\xd0\xbd \xd0\xb1\xd0\xb52\xd0\xb41\xd1\x80 3\xd0\xb1\xd0\xb5\xd0\xb5 3\xd0\xb1\xd0\xb52\xd0\xb7 \xd0\xb1\xd0\xb5\xd0\xb71\xd0\xb02 \xd0\xb1\xd0\xb5\xd0\xb75\xd0\xb44 \xd0\xb1\xd0\xb53\xd0\xb7\xd0\xb8 \xd0\xb1\xd0\xb5\xd0\xb73\xd0\xbd \xd0\xb1\xd0\xb5\xd0\xb71\xd0\xbe2 \xd0\xb1\xd0\xb5\xd0\xb71\xd1\x80 \xd0\xb1\xd0\xb52\xd1\x811\xd0\xba \xd0\xb1\xd0\xb5\xd1\x813\xd0\xbf \xd0\xb1\xd0\xb52\xd1\x811\xd1\x82 \xd0\xb1\xd0\xb5\xd1\x813\xd1\x82\xd0\xb5 \xd0\xb1\xd0\xb5\xd1\x813\xd1\x82\xd0\xb8 3\xd0\xb1\xd0\xb5\xd1\x86 2\xd0\xb1\xd0\xb5\xd1\x89 2\xd0\xb1\xd0\xb6 \xd0\xb11\xd0\xb72 1\xd0\xb12\xd0\xb8 3\xd0\xb1\xd0\xb8\xd0\xb0 \xd0\xb1\xd0\xb82\xd0\xb1 2\xd0\xb1\xd0\xb8\xd0\xb6 3\xd0\xb1\xd0\xb8\xd0\xba \xd0\xb1\xd0\xb8\xd0\xbb\xd0\xb83\xd1\x822 3\xd0\xb1\xd0\xb8\xd0\xbe \xd0\xb1\xd0\xb82\xd0\xbe\xd0\xb1 \xd0\xb1\xd0\xb82\xd0\xbe\xd0\xb4 \xd0\xb1\xd0\xb82\xd0\xbe\xd0\xbd \xd0\xb1\xd0\xb82\xd0\xbe\xd1\x80 \xd0\xb1\xd0\xb82\xd1\x82\xd0\xb2 \xd0\xb1\xd0\xb81\xd1\x85 2\xd0\xb13\xd0\xba \xd0\xb11\xd0\xbb 1\xd0\xb1\xd0\xbb\xd0\xb0\xd0\xb3 1\xd0\xb12\xd0\xbb\xd0\xb0\xd0\xb7 \xd0\xb13\xd0\xbb\xd0\xb0\xd0\xb7\xd0\xb8 \xd0\xb12\xd0\xbb\xd0\xb0\xd0\xbd 1\xd0\xb12\xd0\xbb\xd0\xb5\xd0\xb5 \xd0\xb13\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xb12\xd0\xbb\xd0\xb5\xd1\x811\xd0\xba 1\xd0\xb12\xd0\xbb\xd0\xb5\xd1\x8f \xd0\xb12\xd0\xbb\xd1\x83\xd0\xb4 1\xd0\xb12\xd0\xbb\xd1\x83\xd0\xb6 2\xd0\xb1\xd0\xbb\xd1\x8b 2\xd0\xb12\xd0\xbb\xd1\x8c 2\xd0\xb13\xd0\xbb\xd1\x8e_ \xd0\xb12\xd0\xbb\xd1\x8e\xd0\xb4 \xd0\xb12\xd0\xbb\xd1\x8e\xd0\xb5 \xd0\xb12\xd0\xbb\xd1\x8e\xd0\xbb 2\xd0\xb13\xd0\xbb\xd1\x8e\xd1\x81\xd1\x8c 2\xd0\xb1\xd0\xbb\xd1\x8f 2\xd0\xb13\xd0\xbd 1\xd0\xb1\xd0\xbe \xd0\xb1\xd0\xbe1\xd0\xb1\xd1\x80\xd0\xb0 \xd0\xb1\xd0\xbe3\xd0\xb2\xd1\x88 \xd0\xb1\xd0\xbe2\xd0\xb3\xd0\xb4 \xd0\xb1\xd0\xbe1\xd0\xb4\xd1\x80\xd0\xb0 \xd0\xb1\xd0\xbe1\xd0\xb72 \xd0\xb1\xd0\xbe1\xd0\xbb2\xd0\xb6 \xd0\xb1\xd0\xbe1\xd0\xbb\xd1\x8c\xd1\x81 \xd0\xb1\xd0\xbe3\xd0\xbc2\xd0\xbb \xd0\xb1\xd0\xbe2\xd0\xbc\xd1\x87 \xd0\xb1\xd0\xbe3\xd0\xbc\xd1\x88 \xd0\xb1\xd0\xbe\xd0\xbd\xd1\x831 \xd0\xb1\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xb1\xd0\xbe2\xd1\x81\xd0\xb0 \xd0\xb1\xd0\xbe1\xd1\x81\xd0\xba \xd0\xb1\xd0\xbe3\xd1\x81\xd0\xba\xd0\xbe \xd0\xb1\xd0\xbe3\xd1\x81\xd1\x82\xd0\xb8 3\xd0\xb1\xd0\xbe\xd1\x82 \xd0\xb1\xd0\xbe2\xd1\x82\xd0\xb2 \xd0\xb1\xd0\xbe\xd1\x822\xd1\x80 \xd0\xb1\xd0\xbe\xd1\x8f2\xd1\x80 2\xd0\xb1\xd1\x80_ \xd0\xb13\xd1\x80\xd0\xb0\xd0\xb1 \xd0\xb12\xd1\x80\xd0\xb0\xd0\xb2 \xd0\xb1\xd1\x80\xd0\xb01\xd0\xb7\xd0\xbe 1\xd0\xb12\xd1\x80\xd0\xb0\xd0\xbb 2\xd0\xb11\xd1\x80\xd0\xb0\xd0\xbc \xd0\xb12\xd1\x80\xd0\xb0\xd0\xbd 1\xd0\xb1\xd1\x80\xd0\xb0\xd1\x81 \xd0\xb12\xd1\x80\xd0\xb0\xd1\x82\xd1\x8c \xd0\xb11\xd1\x80\xd0\xb0\xd1\x85 1\xd0\xb12\xd1\x80\xd0\xb0\xd1\x87 2\xd0\xb13\xd1\x80\xd0\xb0\xd1\x8f 1\xd0\xb12\xd1\x80\xd0\xb5\xd0\xb4 \xd0\xb11\xd1\x80\xd0\xb5\xd0\xb9 \xd0\xb11\xd1\x80\xd0\xb5\xd0\xba \xd0\xb12\xd1\x80\xd0\xb5\xd0\xbc \xd0\xb12\xd1\x80\xd0\xb5\xd1\x85 \xd0\xb12\xd1\x80\xd0\xb8\xd0\xb4 \xd0\xb12\xd1\x80\xd0\xb8\xd1\x82\xd0\xbe \xd0\xb12\xd1\x80\xd0\xb8\xd1\x82\xd1\x8b 1\xd0\xb12\xd1\x80\xd0\xbe\xd0\xb4\xd0\xb8 \xd0\xb11\xd1\x80\xd0\xbe\xd0\xbb \xd0\xb11\xd1\x80\xd0\xbe\xd0\xbc_ 1\xd0\xb12\xd1\x80\xd0\xbe\xd1\x81\xd0\xb8 \xd0\xb1\xd1\x80\xd0\xbe2\xd1\x811\xd0\xba 2\xd0\xb1\xd1\x80\xd1\x81 \xd0\xb11\xd1\x80\xd1\x83 3\xd0\xb1\xd1\x80\xd1\x83\xd0\xba\xd1\x81 2\xd0\xb1\xd1\x80\xd1\x8c 1\xd0\xb12\xd1\x80\xd1\x8e 2\xd0\xb13\xd1\x80\xd1\x8e_ \xd0\xb11\xd1\x80\xd1\x8f 2\xd0\xb11\xd1\x812 \xd0\xb13\xd1\x81\xd0\xba \xd0\xb1\xd1\x814\xd0\xbb \xd0\xb11\xd1\x82 1\xd0\xb12\xd1\x83 \xd0\xb1\xd1\x832\xd0\xb31\xd1\x80 \xd0\xb1\xd1\x83\xd0\xba1\xd0\xbb \xd0\xb1\xd1\x831\xd1\x81 2\xd0\xb1\xd1\x84 2\xd0\xb11\xd1\x85 2\xd0\xb1\xd1\x86 2\xd0\xb11\xd1\x87 2\xd0\xb1\xd1\x88 2\xd0\xb1\xd1\x89 1\xd0\xb1\xd1\x8b \xd0\xb1\xd1\x8b2\xd0\xb31 \xd0\xb1\xd1\x8b2\xd1\x81 \xd0\xb1\xd1\x8b\xd1\x811\xd0\xba \xd0\xb1\xd1\x8b\xd1\x81\xd1\x821 1\xd0\xb1\xd1\x8c 2\xd0\xb1\xd1\x8c_ 2\xd0\xb1\xd1\x8c\xd1\x81 2\xd0\xb1\xd1\x8c\xd1\x82 \xd0\xb1\xd1\x8d1\xd1\x80 3\xd0\xb12\xd1\x8e \xd0\xb1\xd1\x8e1\xd1\x82\xd0\xb0 1\xd0\xb1\xd1\x8f 1\xd0\xb2\xd0\xb0 \xd0\xb2\xd0\xb02\xd0\xb1\xd1\x80 3\xd0\xb2\xd0\xb0\xd0\xb3 \xd0\xb2\xd0\xb02\xd0\xb41\xd1\x80 \xd0\xb2\xd0\xb0\xd0\xb4\xd1\x8c2 \xd0\xb2\xd0\xb03\xd0\xb62\xd0\xb4 \xd0\xb2\xd0\xb01\xd0\xb7 \xd0\xb2\xd0\xb0\xd0\xbd\xd1\x812 \xd0\xb2\xd0\xb01\xd1\x81\xd1\x82 \xd0\xb2\xd0\xb02\xd1\x81\xd1\x82\xd1\x80 \xd0\xb2\xd0\xb01\xd1\x82\xd1\x80 \xd0\xb2\xd0\xb0\xd1\x851 3\xd0\xb2\xd0\xb0\xd1\x86 3\xd0\xb2\xd0\xb0\xd1\x8f 2\xd0\xb21\xd0\xb1 \xd0\xb21\xd0\xb2\xd0\xb8 \xd0\xb21\xd0\xb2\xd1\x80 2\xd0\xb2\xd0\xb32 \xd0\xb21\xd0\xb4 \xd0\xb22\xd0\xb4\xd0\xbe\xd1\x85 1\xd0\xb2\xd0\xb5\xd0\xb2 3\xd0\xb2\xd0\xb5\xd0\xb3 \xd0\xb2\xd0\xb5\xd0\xb41\xd1\x80 \xd0\xb2\xd0\xb53\xd0\xb4\xd1\x83 1\xd0\xb2\xd0\xb5\xd0\xb5 1\xd0\xb2\xd0\xb5\xd0\xb7 3\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb5 3\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xbb \xd0\xb2\xd0\xb5\xd0\xb72\xd1\x83 1\xd0\xb2\xd0\xb5\xd0\xb9_ \xd0\xb2\xd0\xb52\xd0\xbf1 2\xd0\xb2\xd0\xb5\xd1\x80\xd0\xb4 1\xd0\xb2\xd0\xb5\xd1\x81 \xd0\xb2\xd0\xb52\xd1\x811\xd0\xba \xd0\xb2\xd0\xb52\xd1\x81\xd1\x821\xd0\xb2 \xd0\xb2\xd0\xb5\xd1\x823\xd1\x80 1\xd0\xb2\xd0\xb5\xd1\x86 1\xd0\xb2\xd0\xb5\xd1\x8e 1\xd0\xb2\xd0\xb5\xd1\x8f 1\xd0\xb22\xd0\xb72 \xd0\xb2\xd0\xb7\xd0\xb32 \xd0\xb2\xd0\xb7\xd0\xb42 \xd0\xb2\xd0\xb7\xd0\xbe1\xd0\xb1 \xd0\xb2\xd0\xb7\xd1\x8a2 \xd0\xb2\xd0\xb7\xd1\x8a\xd0\xb53\xd0\xb4 \xd0\xb2\xd0\xb82\xd0\xb0\xd0\xb7 \xd0\xb2\xd0\xb82\xd0\xb0\xd0\xba \xd0\xb2\xd0\xb82\xd0\xb0\xd1\x80 \xd0\xb2\xd0\xb82\xd0\xb01\xd1\x812 \xd0\xb2\xd0\xb8\xd0\xb01\xd1\x82 \xd0\xb2\xd0\xb83\xd0\xb0\xd1\x84 \xd0\xb2\xd0\xb82\xd0\xb3\xd0\xb2 \xd0\xb2\xd0\xb82\xd0\xb3\xd0\xbb 1\xd0\xb2\xd0\xb8\xd0\xb7 1\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x82 1\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x87 \xd0\xb2\xd0\xb81\xd0\xbe \xd0\xb2\xd0\xb81\xd1\x812\xd0\xbd\xd0\xb8 \xd0\xb2\xd0\xb8\xd1\x833 \xd0\xb2\xd0\xb82\xd1\x84 2\xd0\xb21\xd0\xba \xd0\xb2\xd0\xba2\xd0\xbb 3\xd0\xb22\xd0\xba\xd1\x83\xd1\x81 \xd0\xb21\xd0\xbb \xd0\xb22\xd0\xbb\xd0\xb0 2\xd0\xb23\xd0\xbb\xd0\xb0\xd0\xb1 \xd0\xb22\xd0\xbb\xd0\xb5\xd0\xb2 \xd0\xb22\xd0\xbb\xd0\xb5\xd0\xba \xd0\xb22\xd0\xbb\xd0\xb5\xd1\x82 \xd0\xb22\xd0\xbb\xd0\xb5\xd1\x87 2\xd0\xb2\xd0\xbb\xd0\xb8 \xd0\xb22\xd0\xbb\xd0\xb8\xd1\x8f 2\xd0\xb2\xd0\xbb\xd1\x8e \xd0\xb22\xd0\xbb\xd1\x8e\xd0\xb1 2\xd0\xb2\xd0\xbb\xd1\x8f 2\xd0\xb2\xd0\xbc 1\xd0\xb2\xd0\xbc\xd0\xb5 2\xd0\xb21\xd0\xbd 4\xd0\xb23\xd0\xbd\xd0\xb0 \xd0\xb22\xd0\xbd\xd0\xb5\xd1\x81 \xd0\xb2\xd0\xbd\xd0\xbe1 \xd0\xb23\xd0\xbd\xd1\x83_ 3\xd0\xb22\xd0\xbd\xd1\x83\xd0\xba 3\xd0\xb22\xd0\xbd\xd1\x83\xd1\x87 \xd0\xb23\xd0\xbd\xd1\x8b \xd0\xb2\xd0\xbe1\xd0\xb12 \xd0\xb2\xd0\xbe2\xd0\xb13\xd0\xbb\xd0\xb0 \xd0\xb2\xd0\xbe\xd0\xb22 \xd0\xb2\xd0\xbe3\xd0\xb2\xd0\xba 1\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xb2\xd0\xbe1\xd0\xb4\xd0\xb2 \xd0\xb2\xd0\xbe1\xd0\xb4\xd1\x80 \xd0\xb2\xd0\xbe2\xd0\xb5\xd1\x80 \xd0\xb2\xd0\xbe2\xd0\xb6\xd0\xb6 \xd0\xb2\xd0\xbe\xd0\xb82\xd1\x811 1\xd0\xb2\xd0\xbe\xd0\xba \xd0\xb2\xd0\xbe3\xd0\xbc2 \xd0\xb2\xd0\xbe\xd0\xbf2 \xd0\xb2\xd0\xbe1\xd1\x80\xd1\x83 2\xd0\xb2\xd0\xbe\xd1\x80\xd1\x86 2\xd0\xb2\xd0\xbe\xd1\x80\xd1\x8c \xd0\xb2\xd0\xbe\xd1\x811\xd0\xba \xd0\xb2\xd0\xbe1\xd1\x81\xd0\xbc \xd0\xb2\xd0\xbe1\xd1\x81\xd0\xbd \xd0\xb2\xd0\xbe\xd1\x813\xd0\xbf\xd0\xb5 \xd0\xb2\xd0\xbe2\xd1\x81\xd1\x82\xd1\x80 \xd0\xb2\xd0\xbe\xd1\x822\xd1\x80 1\xd0\xb2\xd0\xbe\xd1\x85 \xd0\xb2\xd0\xbe1\xd1\x85\xd0\xbb \xd0\xb2\xd0\xbe3\xd1\x852\xd1\x82 1\xd0\xb2\xd0\xbe\xd1\x8e 2\xd0\xb2\xd0\xbf2 2\xd0\xb2\xd1\x80_ 2\xd0\xb2\xd1\x80\xd0\xb0_ \xd0\xb22\xd1\x80\xd0\xb0\xd0\xb2 2\xd0\xb21\xd1\x80\xd0\xb0\xd0\xbc \xd0\xb21\xd1\x80\xd0\xb0\xd1\x81 2\xd0\xb21\xd1\x80\xd0\xb0\xd1\x85 2\xd0\xb2\xd1\x80\xd0\xb0\xd1\x86 2\xd0\xb2\xd1\x80\xd0\xb5_ 2\xd0\xb21\xd1\x80\xd0\xb5\xd0\xbd 1\xd0\xb2\xd1\x80\xd0\xb8\xd0\xb4 1\xd0\xb22\xd1\x80\xd0\xb8\xd0\xb7 \xd0\xb21\xd1\x80\xd0\xb8\xd0\xb8 \xd0\xb21\xd1\x80\xd0\xb8\xd0\xba \xd0\xb21\xd1\x80\xd0\xb8\xd0\xbb \xd0\xb21\xd1\x80\xd0\xb8\xd1\x81 \xd0\xb21\xd1\x80\xd0\xb8\xd1\x82 2\xd0\xb21\xd1\x80\xd0\xbe \xd0\xb2\xd1\x80\xd0\xbe3\xd1\x822 2\xd0\xb21\xd1\x80\xd1\x8b 1\xd0\xb2\xd1\x80\xd1\x8e \xd0\xb21\xd1\x80\xd1\x8f 2\xd0\xb21\xd1\x812 3\xd0\xb2\xd1\x81\xd0\xb53 \xd0\xb23\xd1\x81\xd0\xba\xd0\xb0\xd1\x8f 4\xd0\xb23\xd1\x81\xd0\xba\xd0\xb8 4\xd0\xb23\xd1\x81\xd0\xba\xd1\x83 3\xd0\xb22\xd1\x81\xd0\xbf 3\xd0\xb22\xd1\x81\xd1\x8e \xd0\xb21\xd1\x822 \xd0\xb2\xd1\x82\xd0\xbe1\xd0\xb12 \xd0\xb2\xd1\x82\xd0\xbe3\xd1\x88 1\xd0\xb2\xd1\x83\xd0\xb0 \xd0\xb2\xd1\x833\xd0\xb3 1\xd0\xb2\xd1\x831\xd0\xb7 2\xd0\xb2\xd1\x83\xd0\xb8 2\xd0\xb2\xd1\x831\xd0\xba \xd0\xb2\xd1\x833\xd0\xbf \xd0\xb2\xd1\x831\xd1\x812 \xd0\xb2\xd1\x832\xd1\x851\xd0\xb0 \xd0\xb2\xd1\x83\xd1\x853\xd0\xb2 \xd0\xb2\xd1\x831\xd1\x87\xd0\xbb \xd0\xb2\xd1\x842 1\xd0\xb2\xd1\x85\xd0\xbe 2\xd0\xb2\xd1\x86 2\xd0\xb21\xd1\x87 2\xd0\xb2\xd1\x88 3\xd0\xb22\xd1\x88\xd0\xb8\xd0\xb2 2\xd0\xb2\xd1\x89 \xd0\xb2\xd1\x8a2 1\xd0\xb2\xd1\x8b \xd0\xb2\xd1\x8b3\xd0\xb32 \xd0\xb2\xd1\x8b3\xd0\xb7\xd0\xbd \xd0\xb2\xd1\x8b\xd0\xbf2 \xd0\xb2\xd1\x8b3\xd1\x822 \xd0\xb2\xd1\x8b\xd1\x852 \xd0\xb2\xd1\x8b3\xd1\x882\xd0\xbb 2\xd0\xb2\xd1\x8c_ 1\xd0\xb2\xd1\x8c\xd0\xb5 1\xd0\xb2\xd1\x8c\xd0\xb8\xd0\xbd 2\xd0\xb2\xd1\x8c\xd1\x81 2\xd0\xb2\xd1\x8c\xd1\x82 1\xd0\xb2\xd1\x8c\xd1\x8e 1\xd0\xb2\xd1\x8c\xd1\x8f 1\xd0\xb22\xd1\x8d1 1\xd0\xb22\xd1\x8e 1\xd0\xb2\xd1\x8f 1\xd0\xb3 \xd0\xb32\xd0\xb0 \xd0\xb3\xd0\xb01\xd0\xb7 \xd0\xb3\xd0\xb01\xd1\x81\xd1\x822 \xd0\xb3\xd0\xb02\xd1\x83 2\xd0\xb33\xd0\xb1 \xd0\xb3\xd0\xb1\xd0\xb02 \xd0\xb31\xd0\xb2\xd0\xb8 2\xd0\xb3\xd0\xb3 \xd0\xb33\xd0\xb4\xd0\xb0\xd0\xbd 2\xd0\xb33\xd0\xb4\xd0\xb8 3\xd0\xb3\xd0\xb5_ \xd0\xb3\xd0\xb52\xd0\xb11 \xd0\xb3\xd0\xb5\xd0\xbd\xd0\xbe1 \xd0\xb3\xd0\xb52\xd0\xbe\xd0\xb1 \xd0\xb3\xd0\xb52\xd0\xbe\xd0\xb4 \xd0\xb3\xd0\xb51\xd0\xbe\xd1\x80 2\xd0\xb33\xd0\xb6 2\xd0\xb31\xd0\xb7 \xd0\xb32\xd0\xb8 \xd0\xb3\xd0\xb82\xd0\xb1\xd0\xbb \xd0\xb3\xd0\xb83\xd0\xb1\xd1\x80 \xd0\xb3\xd0\xb82\xd0\xb3\xd1\x80 \xd0\xb3\xd0\xb81\xd1\x81\xd0\xbb \xd0\xb3\xd0\xb8\xd1\x81\xd1\x822 2\xd0\xb31\xd0\xba 2\xd0\xb3\xd0\xbb\xd0\xb0_ \xd0\xb32\xd0\xbb\xd0\xb0\xd0\xb2 \xd0\xb31\xd0\xbb\xd0\xb0\xd0\xb9 \xd0\xb31\xd0\xbb\xd0\xb0\xd0\xbc\xd0\xb8 2\xd0\xb3\xd0\xbb\xd0\xb0\xd1\x81\xd1\x8c 2\xd0\xb3\xd0\xbb\xd0\xb0\xd1\x8f \xd0\xb31\xd0\xbb\xd0\xb5 \xd0\xb32\xd0\xbb\xd0\xb5\xd1\x82 2\xd0\xb3\xd0\xbb\xd0\xb8_ \xd0\xb32\xd0\xbb\xd0\xb8\xd0\xbd 3\xd0\xb32\xd0\xbb\xd0\xb8\xd1\x84 2\xd0\xb3\xd0\xbb\xd0\xbe_ \xd0\xb33\xd0\xbb\xd0\xbe\xd0\xb1\xd0\xbb 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb2 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb3 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb5 2\xd0\xb3\xd0\xbb\xd0\xbe\xd0\xb9 2\xd0\xb3\xd0\xbb\xd0\xbe\xd1\x8e 2\xd0\xb3\xd0\xbb\xd1\x83\xd1\x8e 2\xd0\xb31\xd0\xbb\xd1\x8b \xd0\xb32\xd0\xbb\xd1\x8f\xd0\xb6 2\xd0\xb3\xd0\xbb\xd1\x8f\xd0\xba 2\xd0\xb33\xd0\xbc \xd0\xb32\xd0\xbd\xd0\xb0\xd0\xb2 \xd0\xb32\xd0\xbd\xd0\xb0\xd0\xbd \xd0\xb33\xd0\xbd\xd0\xb5_ \xd0\xb32\xd0\xbd\xd0\xb5\xd0\xb2 \xd0\xb33\xd0\xbd\xd0\xb5\xd0\xbd \xd0\xb33\xd0\xbd\xd0\xb5\xd0\xbf \xd0\xb33\xd0\xbd\xd0\xb5\xd1\x81 \xd0\xb32\xd0\xbd\xd0\xb8\xd1\x80 \xd0\xb3\xd0\xbd\xd0\xb8\xd1\x822\xd1\x80 \xd0\xb32\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xb32\xd0\xbd\xd0\xbe\xd0\xb8 \xd0\xb32\xd0\xbd\xd0\xbe\xd1\x81 \xd0\xb33\xd0\xbd\xd1\x8f \xd0\xb3\xd0\xbe1\xd0\xb12 \xd0\xb3\xd0\xbe2\xd0\xb2\xd0\xbb \xd0\xb3\xd0\xbe3\xd0\xb62\xd0\xb4 \xd0\xb3\xd0\xbe1\xd0\xb7 \xd0\xb3\xd0\xbe2\xd0\xb7\xd0\xbb \xd0\xb3\xd0\xbe\xd0\xb72\xd0\xbd \xd0\xb3\xd0\xbe\xd0\xb8\xd0\xb32 3\xd0\xb3\xd0\xbe\xd0\xb9 \xd0\xb32\xd0\xbe\xd0\xbb \xd0\xb3\xd0\xbe\xd0\xbc\xd0\xb82 \xd0\xb3\xd0\xbe2\xd1\x811\xd0\xb0 \xd0\xb3\xd0\xbe2\xd1\x81\xd0\xb4 \xd0\xb3\xd0\xbe1\xd1\x81\xd0\xba\xd0\xbb \xd0\xb3\xd0\xbe1\xd1\x81\xd0\xbd \xd0\xb3\xd0\xbe1\xd1\x81\xd0\xbf\xd0\xb0 2\xd0\xb3\xd0\xbe\xd1\x82\xd0\xb4 \xd0\xb3\xd0\xbe\xd1\x833\xd1\x82 \xd0\xb3\xd0\xbe1\xd1\x87\xd0\xbb 3\xd0\xb3\xd0\xbe\xd1\x8e 2\xd0\xb3\xd0\xbf 2\xd0\xb3\xd1\x80_ \xd0\xb31\xd1\x80\xd0\xb0\xd0\xb5 \xd0\xb31\xd1\x80\xd0\xb0\xd0\xb9 \xd0\xb31\xd1\x80\xd0\xb0\xd1\x80 \xd0\xb31\xd1\x80\xd0\xb5\xd0\xb3 \xd0\xb31\xd1\x80\xd0\xb5\xd0\xba \xd0\xb31\xd1\x80\xd0\xb5\xd1\x86 \xd0\xb3\xd1\x80\xd0\xb84\xd0\xb23\xd0\xbd \xd0\xb31\xd1\x80\xd0\xb8\xd0\xba \xd0\xb31\xd1\x80\xd0\xb8\xd0\xbb \xd0\xb31\xd1\x80\xd0\xb8\xd0\xbd \xd0\xb31\xd1\x80\xd0\xb8\xd1\x81 \xd0\xb31\xd1\x80\xd0\xb8\xd1\x87 \xd0\xb31\xd1\x80\xd0\xbe\xd0\xb2 \xd0\xb32\xd1\x80\xd0\xbe\xd0\xb7 \xd0\xb31\xd1\x80\xd0\xbe\xd0\xba \xd0\xb31\xd1\x80\xd0\xbe\xd0\xbd \xd0\xb31\xd1\x80\xd0\xbe\xd0\xbf \xd0\xb31\xd1\x80\xd0\xbe\xd1\x82 \xd0\xb31\xd1\x80\xd0\xbe\xd1\x84 \xd0\xb3\xd1\x80\xd1\x832\xd0\xbf \xd0\xb31\xd1\x80\xd1\x8b\xd0\xb2 2\xd0\xb3\xd1\x80\xd1\x8e \xd0\xb31\xd1\x80\xd1\x8f\xd0\xb5 \xd0\xb31\xd1\x80\xd1\x8f\xd0\xbb \xd0\xb31\xd1\x80\xd1\x8f\xd1\x82 2\xd0\xb33\xd1\x812 \xd0\xb34\xd1\x81\xd0\xb0 \xd0\xb34\xd1\x81\xd0\xb1 2\xd0\xb33\xd1\x82 \xd0\xb3\xd1\x831\xd0\xb2 \xd0\xb3\xd1\x831\xd1\x81 \xd0\xb3\xd1\x832\xd1\x811\xd0\xba 2\xd0\xb3\xd1\x84 2\xd0\xb31\xd1\x87 2\xd0\xb33\xd1\x88 2\xd0\xb33\xd1\x8d 1\xd0\xb4\xd0\xb0 \xd0\xb4\xd0\xb02\xd0\xb11 \xd0\xb4\xd0\xb02\xd0\xb3\xd0\xb5\xd0\xbd \xd0\xb4\xd0\xb02\xd0\xb3\xd1\x80 \xd0\xb4\xd0\xb01\xd0\xb7 \xd0\xb4\xd0\xb02\xd0\xbe \xd0\xb4\xd0\xb0\xd1\x81\xd1\x821\xd1\x80 \xd0\xb4\xd0\xb0\xd1\x821\xd1\x80 2\xd0\xb41\xd0\xb1 \xd0\xb4\xd0\xb22 \xd0\xb41\xd0\xb2\xd0\xb5 1\xd0\xb4\xd0\xb2\xd0\xb8 2\xd0\xb41\xd0\xb2\xd0\xb8\xd0\xb4 2\xd0\xb4\xd0\xb2\xd0\xb8\xd0\xb7 2\xd0\xb4\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x82 2\xd0\xb4\xd0\xb2\xd0\xb8\xd0\xbd\xd1\x87 2\xd0\xb41\xd0\xb2\xd0\xb8\xd1\x81 2\xd0\xb41\xd0\xb2\xd0\xb8\xd1\x82 \xd0\xb43\xd0\xb2\xd0\xba \xd0\xb41\xd0\xb2\xd0\xbb 2\xd0\xb4\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xb41\xd0\xb2\xd0\xbe\xd0\xb7 1\xd0\xb4\xd0\xb2\xd0\xbe\xd1\x80\xd1\x8c 2\xd0\xb4\xd0\xb2\xd1\x8f 2\xd0\xb4\xd0\xb32 2\xd0\xb41\xd0\xb42 1\xd0\xb4\xd0\xb5 \xd0\xb4\xd0\xb51\xd0\xb12\xd0\xbb \xd0\xb4\xd0\xb51\xd0\xb12\xd1\x80 3\xd0\xb4\xd0\xb5\xd0\xb2\xd1\x80 3\xd0\xb4\xd0\xb5\xd0\xb7 \xd0\xb4\xd0\xb52\xd0\xb71\xd0\xb02 \xd0\xb4\xd0\xb52\xd0\xb7\xd0\xb8 \xd0\xb4\xd0\xb5\xd0\xb71\xd0\xbe2 \xd0\xb4\xd0\xb52\xd0\xb7\xd1\x83 \xd0\xb4\xd0\xb5\xd0\xb8\xd0\xbe2 \xd0\xb4\xd0\xb51\xd0\xba\xd0\xbb 3\xd0\xb4\xd0\xb5\xd0\xbc\xd0\xb5 \xd0\xb4\xd0\xb52\xd0\xbe\xd0\xb4 \xd0\xb4\xd0\xb5\xd0\xbe3\xd0\xbf \xd0\xb4\xd0\xb53\xd0\xbf\xd0\xbb \xd0\xb4\xd0\xb5\xd1\x80\xd0\xb0\xd1\x812 \xd0\xb4\xd0\xb52\xd1\x813\xd0\xb2 \xd0\xb4\xd0\xb5\xd1\x812\xd0\xba \xd0\xb4\xd0\xb52\xd1\x81\xd1\x80 \xd0\xb4\xd0\xb51\xd1\x85\xd0\xbb 2\xd0\xb4\xd0\xb6_ \xd0\xb42\xd0\xb6\xd0\xb0\xd0\xbc \xd0\xb42\xd0\xb63\xd0\xbc 2\xd0\xb4\xd0\xb6\xd1\x81 2\xd0\xb41\xd0\xb72 1\xd0\xb4\xd0\xb8 \xd0\xb4\xd0\xb82\xd0\xb0\xd0\xb4 \xd0\xb4\xd0\xb8\xd0\xb02\xd0\xb7 \xd0\xb4\xd0\xb82\xd0\xb0\xd0\xbb\xd0\xb8 \xd0\xb4\xd0\xb82\xd0\xb0\xd0\xbb\xd0\xbe \xd0\xb4\xd0\xb82\xd0\xb0\xd1\x80 \xd0\xb4\xd0\xb82\xd0\xb0\xd1\x81 \xd0\xb4\xd0\xb82\xd0\xbe\xd0\xb1 \xd0\xb4\xd0\xb8\xd0\xbe3\xd0\xb4\xd0\xb5 \xd0\xb4\xd0\xb82\xd0\xbe\xd1\x80 \xd0\xb4\xd0\xb8\xd0\xbe1\xd1\x81 \xd0\xb4\xd0\xb81\xd0\xbe\xd1\x82\xd0\xb8 \xd0\xb4\xd0\xb8\xd0\xbf2 \xd0\xb4\xd0\xb82\xd0\xbf\xd0\xb8 \xd0\xb4\xd0\xb83\xd0\xbf\xd1\x82 \xd0\xb4\xd0\xb82\xd1\x811\xd1\x82\xd1\x80 \xd0\xb4\xd0\xb8\xd1\x833 \xd0\xb4\xd0\xb83\xd1\x84\xd1\x80 \xd0\xb4\xd0\xb83\xd1\x84\xd1\x82\xd0\xbe \xd0\xb4\xd0\xb81\xd1\x85 2\xd0\xb41\xd0\xba \xd0\xb41\xd0\xbb \xd0\xb42\xd0\xbb\xd0\xb5\xd0\xb2 2\xd0\xb43\xd0\xbc2 2\xd0\xb41\xd0\xbd \xd0\xb43\xd0\xbd\xd0\xb0 \xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb02 3\xd0\xb4\xd0\xbd\xd0\xb5\xd0\xb2\xd0\xbd 4\xd0\xb43\xd0\xbd\xd0\xbe1 \xd0\xb4\xd0\xbd\xd0\xbe3\xd0\xb42 \xd0\xb4\xd0\xbd\xd0\xbe\xd1\x812 4\xd0\xb43\xd0\xbd\xd1\x8b 3\xd0\xb42\xd0\xbd\xd1\x8f\xd1\x88 1\xd0\xb4\xd0\xbe 2\xd0\xb41\xd0\xbe2\xd0\xb1\xd0\xb5\xd0\xb4 \xd0\xb4\xd0\xbe2\xd0\xb1\xd0\xbb 2\xd0\xb41\xd0\xbe\xd0\xb1\xd0\xbb\xd0\xb0 \xd0\xb4\xd0\xbe1\xd0\xb12\xd1\x80\xd0\xb0 \xd0\xb4\xd0\xbe\xd0\xb22\xd0\xbb \xd0\xb4\xd0\xbe3\xd0\xb22\xd0\xbc \xd0\xb4\xd0\xbe1\xd0\xb42 \xd0\xb4\xd0\xbe3\xd0\xb4\xd0\xbd \xd0\xb4\xd0\xbe3\xd0\xb62\xd0\xb4 \xd0\xb4\xd0\xbe1\xd0\xb7 \xd0\xb4\xd0\xbe\xd0\xb72\xd0\xbd \xd0\xb4\xd0\xbe\xd0\xb82\xd1\x80 2\xd0\xb4\xd0\xbe\xd0\xba\xd1\x82 2\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xbc \xd0\xb4\xd0\xbe2\xd0\xbc1\xd1\x80 \xd0\xb4\xd0\xbe\xd0\xbf2 \xd0\xb4\xd0\xbe3\xd0\xbf\xd0\xbb 2\xd0\xb4\xd0\xbe\xd0\xbf\xd0\xbb\xd0\xb5 \xd0\xb4\xd0\xbe2\xd0\xbf\xd1\x80\xd0\xb5 \xd0\xb4\xd0\xbe2\xd1\x80\xd1\x83\xd0\xb1 \xd0\xb4\xd0\xbe1\xd1\x81 \xd0\xb41\xd0\xbe2\xd1\x81\xd0\xb5\xd0\xbd \xd0\xb41\xd0\xbe2\xd1\x81\xd0\xb8\xd0\xbd 2\xd0\xb41\xd0\xbe\xd1\x81\xd0\xbd\xd0\xbe \xd0\xb4\xd0\xbe\xd1\x812\xd0\xbf 2\xd0\xb4\xd0\xbe\xd1\x82\xd0\xb4 2\xd0\xb4\xd0\xbe\xd1\x82\xd0\xbb \xd0\xb4\xd0\xbe\xd1\x822\xd1\x80\xd0\xb8 2\xd0\xb41\xd0\xbe\xd1\x82\xd1\x80\xd1\x8f 2\xd0\xb4\xd0\xbe\xd1\x82\xd1\x8a \xd0\xb4\xd0\xbe3\xd1\x82\xd1\x8c 3\xd0\xb4\xd0\xbe\xd1\x85\xd0\xbb \xd0\xb4\xd0\xbe2\xd1\x883\xd0\xb2 \xd0\xb4\xd0\xbe3\xd1\x882\xd0\xba \xd0\xb4\xd0\xbe2\xd1\x88\xd0\xbb\xd1\x8b \xd0\xb4\xd0\xbe2\xd1\x89\xd1\x83 2\xd0\xb4\xd0\xbf 2\xd0\xb4\xd1\x80_ \xd0\xb41\xd1\x80\xd0\xb0\xd0\xb1 1\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb2\xd1\x88 2\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb7\xd0\xb2 1\xd0\xb42\xd1\x80\xd0\xb0\xd0\xb7\xd0\xbd \xd0\xb41\xd1\x80\xd0\xb0\xd0\xbd\xd0\xb5 \xd0\xb41\xd1\x80\xd0\xb0\xd1\x80 \xd0\xb41\xd1\x80\xd0\xb02\xd1\x813 \xd0\xb41\xd1\x80\xd0\xb0\xd1\x85 \xd0\xb41\xd1\x80\xd0\xb0\xd1\x87 \xd0\xb42\xd1\x80\xd0\xb0\xd1\x8e \xd0\xb41\xd1\x80\xd0\xb5 \xd0\xb42\xd1\x80\xd0\xb5\xd0\xb1 2\xd0\xb43\xd1\x80\xd0\xb5\xd0\xb6 2\xd0\xb4\xd1\x80\xd0\xb5\xd0\xb7 \xd0\xb42\xd1\x80\xd0\xb5\xd0\xbb \xd0\xb42\xd1\x80\xd0\xb5\xd0\xbc 1\xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc\xd0\xb0 1\xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc\xd0\xbb \xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc3\xd0\xbd 1\xd0\xb4\xd1\x80\xd0\xb5\xd0\xbc\xd1\x8b 2\xd0\xb43\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb4\xd1\x80\xd0\xb52\xd1\x81\xd0\xba \xd0\xb42\xd1\x80\xd0\xb5\xd1\x81\xd1\x81 \xd0\xb41\xd1\x80\xd0\xb8 \xd0\xb42\xd1\x80\xd0\xb8\xd0\xb9 2\xd0\xb4\xd1\x80\xd0\xb8\xd0\xbd \xd0\xb42\xd1\x80\xd0\xb8\xd0\xbf \xd0\xb42\xd1\x80\xd0\xb8\xd1\x85 \xd0\xb4\xd1\x80\xd0\xbe2\xd0\xb33\xd0\xbd \xd0\xb41\xd1\x80\xd0\xbe\xd0\xb4 \xd0\xb41\xd1\x80\xd0\xbe\xd0\xb5 1\xd0\xb42\xd1\x80\xd0\xbe\xd0\xb6 2\xd0\xb43\xd1\x80\xd0\xbe\xd0\xb7 \xd0\xb41\xd1\x80\xd0\xbe\xd0\xb9 \xd0\xb41\xd1\x80\xd0\xbe\xd0\xbb \xd0\xb41\xd1\x80\xd0\xbe\xd0\xbd \xd0\xb41\xd1\x80\xd0\xbe\xd1\x81 \xd0\xb41\xd1\x80\xd0\xbe\xd1\x82 \xd0\xb41\xd1\x80\xd0\xbe\xd1\x8e \xd0\xb41\xd1\x80\xd1\x83\xd0\xb1 1\xd0\xb4\xd1\x80\xd1\x83\xd0\xb3 1\xd0\xb4\xd1\x80\xd1\x83\xd0\xb6 \xd0\xb41\xd1\x80\xd1\x83\xd0\xbc \xd0\xb41\xd1\x80\xd1\x83\xd1\x8e \xd0\xb41\xd1\x80\xd1\x8b 2\xd0\xb4\xd1\x80\xd1\x8b\xd0\xb2 1\xd0\xb42\xd1\x80\xd1\x8b\xd0\xb3 \xd0\xb41\xd1\x80\xd1\x8f \xd0\xb42\xd1\x80\xd1\x8f\xd0\xb1 1\xd0\xb42\xd1\x80\xd1\x8f\xd0\xb3 \xd0\xb42\xd1\x80\xd1\x8f\xd1\x85 2\xd0\xb41\xd1\x812 \xd0\xb4\xd1\x81\xd0\xba2 \xd0\xb4\xd1\x813\xd0\xba\xd0\xbd 2\xd0\xb41\xd1\x82 1\xd0\xb4\xd1\x83 \xd0\xb4\xd1\x83\xd0\xb13\xd1\x80 \xd0\xb4\xd1\x833\xd0\xb3 2\xd0\xb41\xd1\x83\xd0\xb4 \xd0\xb4\xd1\x832\xd0\xb4\xd0\xb0 \xd0\xb4\xd1\x832\xd0\xbe \xd0\xb4\xd1\x83\xd0\xbf1\xd0\xbb \xd0\xb4\xd1\x83\xd1\x811\xd0\xba \xd0\xb41\xd1\x83\xd1\x81\xd0\xbb \xd0\xb4\xd1\x831\xd1\x81\xd1\x82 \xd0\xb4\xd1\x832\xd1\x81\xd1\x82\xd0\xb0 2\xd0\xb4\xd1\x83\xd1\x821\xd1\x80 \xd0\xb4\xd1\x831\xd1\x85 \xd0\xb4\xd1\x832\xd1\x87\xd0\xb8 \xd0\xb4\xd1\x83\xd1\x8d1\xd1\x82 2\xd0\xb4\xd1\x84 \xd0\xb41\xd1\x85 2\xd0\xb43\xd1\x86\xd0\xb5 2\xd0\xb4\xd1\x86\xd1\x83 2\xd0\xb4\xd1\x86\xd1\x8b 2\xd0\xb41\xd1\x87 2\xd0\xb43\xd1\x882 2\xd0\xb4\xd1\x89 2\xd0\xb4\xd1\x8a \xd0\xb4\xd1\x8a\xd0\xb52\xd0\xbc 1\xd0\xb4\xd1\x8b 2\xd0\xb4\xd1\x8b\xd0\xb3 \xd0\xb4\xd1\x8b2\xd0\xb31\xd1\x80 2\xd0\xb4\xd1\x8b\xd0\xb4 2\xd0\xb4\xd1\x8b\xd0\xbc\xd0\xb5 2\xd0\xb4\xd1\x8b2\xd1\x811 2\xd0\xb4\xd1\x8b\xd1\x82 2\xd0\xb4\xd1\x8b\xd1\x89 2\xd0\xb4\xd1\x8c_ 1\xd0\xb4\xd1\x8c\xd0\xb5 2\xd0\xb4\xd1\x8c\xd0\xba 2\xd0\xb4\xd1\x8c\xd1\x82 1\xd0\xb4\xd1\x8c\xd1\x8e 1\xd0\xb4\xd1\x8c\xd1\x8f \xd0\xb4\xd1\x8c3\xd1\x8f\xd1\x80 1\xd0\xb42\xd1\x8e 1\xd0\xb4\xd1\x8f \xd0\xb51\xd0\xb0 \xd0\xb5\xd0\xb02\xd0\xb4 \xd0\xb5\xd0\xb0\xd0\xb4\xd0\xb83 \xd0\xb5\xd0\xb03\xd0\xb4\xd0\xbe \xd0\xb5\xd0\xb02\xd0\xb7 \xd0\xb5\xd0\xb0\xd0\xbd2\xd0\xb41\xd1\x80 \xd0\xb5\xd0\xb0\xd1\x821\xd1\x80 2\xd0\xb5\xd0\xb1 \xd0\xb5\xd0\xb1\xd0\xb02\xd1\x81 \xd0\xb51\xd0\xb1\xd1\x80\xd0\xb0 \xd0\xb5\xd0\xb11\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb5\xd0\xb11\xd1\x80\xd0\xb8 \xd0\xb51\xd0\xb1\xd1\x80\xd0\xbe \xd0\xb5\xd0\xb11\xd1\x80\xd0\xbe\xd0\xb2 \xd0\xb5\xd0\xb11\xd1\x80\xd1\x8b \xd0\xb52\xd0\xb13\xd1\x80\xd1\x8e \xd0\xb51\xd0\xb2\xd0\xb5 2\xd0\xb5\xd0\xb2\xd0\xb5\xd1\x80 \xd0\xb51\xd0\xb2\xd0\xb8 \xd0\xb53\xd0\xb22\xd0\xbc\xd0\xb5 \xd0\xb5\xd0\xb22\xd0\xbd\xd0\xb8\xd0\xbc \xd0\xb5\xd0\xb22\xd0\xbd\xd1\x8f\xd1\x82 \xd0\xb51\xd0\xb2\xd0\xbe 2\xd0\xb5\xd0\xb2\xd0\xbe\xd0\xbb \xd0\xb5\xd0\xb2\xd1\x80\xd0\xb01\xd1\x81 2\xd0\xb51\xd0\xb2\xd1\x80\xd0\xb5 \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb5\xd0\xb5 \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb5\xd0\xb9 \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb5\xd1\x8f \xd0\xb5\xd0\xb21\xd1\x80\xd0\xb8 \xd0\xb52\xd0\xb2\xd1\x82 \xd0\xb51\xd0\xb2\xd1\x83 \xd0\xb51\xd0\xb2\xd1\x85 \xd0\xb5\xd0\xb22\xd1\x85\xd0\xbe \xd0\xb51\xd0\xb2\xd1\x8c \xd0\xb5\xd0\xb3\xd0\xb01\xd1\x812 \xd0\xb5\xd0\xb32\xd0\xb4 \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xb0\xd0\xbd \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xb5 \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xb8 \xd0\xb52\xd0\xb3\xd0\xbb\xd0\xbe \xd0\xb5\xd0\xb32\xd0\xbd\xd0\xb0 \xd0\xb5\xd0\xb32\xd0\xbd\xd0\xbe 2\xd0\xb5\xd0\xb32\xd1\x80 \xd0\xb5\xd0\xb41\xd0\xb2\xd0\xbe \xd0\xb5\xd0\xb42\xd0\xb6 \xd0\xb51\xd0\xb4\xd0\xb6\xd0\xb5 \xd0\xb51\xd0\xb42\xd0\xbb\xd0\xb8\xd0\xbd \xd0\xb5\xd0\xb4\xd0\xbd\xd0\xbe\xd1\x833 \xd0\xb5\xd0\xb41\xd0\xbe\xd0\xbf\xd1\x80 \xd0\xb52\xd0\xb4\xd0\xbe\xd1\x82\xd0\xb2 \xd0\xb52\xd0\xb4\xd0\xbe\xd1\x85 \xd0\xb52\xd0\xb41\xd0\xbe\xd1\x89 \xd0\xb51\xd0\xb4\xd1\x80\xd1\x83 \xd0\xb52\xd0\xb4\xd1\x80\xd1\x83_ \xd0\xb52\xd0\xb4\xd1\x832\xd0\xb1 \xd0\xb5\xd0\xb41\xd1\x83\xd0\xb1\xd0\xbe \xd0\xb52\xd0\xb4\xd1\x83\xd0\xb2\xd0\xb5 \xd0\xb52\xd0\xb4\xd1\x83\xd0\xb3 \xd0\xb52\xd0\xb4\xd1\x83\xd1\x81 \xd0\xb5\xd0\xb41\xd1\x83\xd1\x81\xd1\x82 2\xd0\xb53\xd0\xb4\xd1\x83\xd1\x88 \xd0\xb52\xd0\xb4\xd1\x8b\xd0\xbd \xd0\xb51\xd0\xb5 \xd0\xb52\xd0\xb5\xd0\xb2\xd0\xb8\xd0\xb4 \xd0\xb5\xd0\xb52\xd0\xb21\xd1\x80 \xd0\xb5\xd0\xb52\xd0\xb3\xd0\xb8 \xd0\xb5\xd0\xb51\xd1\x812 \xd0\xb5\xd0\xb52\xd1\x81\xd1\x82 \xd0\xb5\xd0\xb5\xd1\x81\xd1\x821\xd1\x80 \xd0\xb5\xd0\xb52\xd1\x85 \xd0\xb52\xd0\xb6\xd0\xb3 \xd0\xb54\xd0\xb6\xd0\xb4\xd0\xb5\xd0\xb2 \xd0\xb5\xd0\xb63\xd0\xb4\xd0\xb8 2\xd0\xb5\xd0\xb6\xd0\xb5 \xd0\xb52\xd0\xb61\xd1\x80 \xd0\xb5\xd0\xb7\xd0\xb02\xd0\xb2\xd1\x80 \xd0\xb5\xd0\xb7\xd0\xb0\xd1\x833 \xd0\xb51\xd0\xb72\xd0\xb2\xd0\xb0 \xd0\xb5\xd0\xb7\xd0\xb41\xd1\x80 \xd0\xb53\xd0\xb7\xd0\xb5 \xd0\xb5\xd0\xb7\xd0\xb7\xd1\x833 \xd0\xb53\xd0\xb7\xd0\xb8\xd1\x82 \xd0\xb5\xd0\xb71\xd0\xbe\xd0\xb1 \xd0\xb5\xd0\xb71\xd0\xbe2\xd0\xb3 \xd0\xb51\xd0\xb7\xd0\xbe\xd0\xbc \xd0\xb5\xd0\xb71\xd0\xbe\xd0\xbf \xd0\xb5\xd0\xb71\xd0\xbe2\xd1\x80 \xd0\xb5\xd0\xb71\xd0\xbe\xd1\x82 \xd0\xb5\xd0\xb71\xd0\xbe\xd1\x88 \xd0\xb5\xd0\xb72\xd1\x80\xd1\x8f \xd0\xb5\xd0\xb71\xd1\x832\xd0\xb4 \xd0\xb5\xd0\xb71\xd1\x832\xd0\xba \xd0\xb5\xd0\xb71\xd1\x83\xd0\xbf \xd0\xb5\xd0\xb71\xd1\x83\xd1\x81 \xd0\xb5\xd0\xb7\xd1\x832\xd1\x81\xd0\xbe \xd0\xb5\xd0\xb7\xd1\x832\xd1\x81\xd1\x8b \xd0\xb5\xd0\xb71\xd1\x832\xd1\x85 \xd0\xb5\xd0\xb71\xd1\x83\xd1\x87\xd0\xb0 \xd0\xb53\xd0\xb7\xd1\x8f \xd0\xb51\xd0\xb8 \xd0\xb5\xd0\xb82\xd0\xb31 \xd0\xb5\xd0\xb82\xd0\xb4 \xd0\xb5\xd0\xb82\xd0\xbc \xd0\xb5\xd0\xb82\xd0\xbe \xd0\xb5\xd0\xb8\xd1\x811\xd0\xbb \xd0\xb5\xd0\xb8\xd1\x811\xd1\x82\xd1\x80 \xd0\xb51\xd0\xba\xd0\xb0 \xd0\xb5\xd0\xba\xd0\xb02\xd0\xb1 \xd0\xb5\xd0\xba2\xd0\xb7 \xd0\xb51\xd0\xba\xd0\xb8 2\xd0\xb51\xd0\xba\xd0\xbe 2\xd0\xb51\xd0\xba\xd1\x80 \xd0\xb5\xd0\xba2\xd1\x80\xd0\xbe \xd0\xb5\xd0\xba1\xd1\x81\xd0\xba \xd0\xb5\xd0\xba1\xd1\x81\xd1\x82\xd0\xb5 \xd0\xb51\xd0\xba\xd1\x83 \xd0\xb51\xd0\xbb\xd0\xb0 \xd0\xb51\xd0\xbb\xd0\xb5 \xd0\xb5\xd0\xbb\xd0\xb53\xd1\x81\xd0\xba \xd0\xb5\xd0\xbb\xd0\xb51\xd1\x81\xd1\x86 \xd0\xb51\xd0\xbb\xd1\x83 \xd0\xb51\xd0\xbb\xd1\x8b \xd0\xb51\xd0\xbb\xd1\x8e \xd0\xb53\xd0\xbb\xd1\x8f \xd0\xb5\xd0\xbc\xd0\xb83\xd0\xb42 \xd0\xb5\xd0\xbc\xd0\xb83\xd0\xba \xd0\xb5\xd0\xbc\xd0\xbe1\xd1\x81 2\xd0\xb5\xd0\xbc\xd1\x83\xd0\xb6 \xd0\xb52\xd0\xbc\xd1\x87 2\xd0\xb5\xd0\xbc\xd1\x8b\xd1\x81 \xd0\xb53\xd0\xbd\xd0\xb0 \xd0\xb5\xd0\xbd2\xd0\xb41\xd1\x80 2\xd0\xb51\xd0\xbd\xd1\x80 \xd0\xb5\xd0\xbd\xd1\x812 \xd0\xb5\xd0\xbd3\xd1\x882 \xd0\xb51\xd0\xbd\xd1\x8d 2\xd0\xb5\xd0\xbe \xd0\xb51\xd0\xbe2\xd0\xb1 \xd0\xb5\xd0\xbe\xd0\xb12\xd1\x80\xd0\xbe \xd0\xb52\xd0\xbe3\xd0\xb3\xd0\xbb \xd0\xb5\xd0\xbe2\xd0\xb3\xd1\x80\xd0\xbe \xd0\xb51\xd0\xbe\xd0\xb4 \xd0\xb5\xd0\xbe3\xd0\xb4\xd0\xb0 \xd0\xb5\xd0\xbe2\xd0\xb4\xd0\xb5 \xd0\xb5\xd0\xbe\xd0\xb4\xd0\xb53\xd0\xb7 \xd0\xb5\xd0\xbe2\xd0\xb4\xd0\xbe \xd0\xb51\xd0\xbe2\xd0\xb6 \xd0\xb52\xd0\xbe\xd0\xb8 \xd0\xb5\xd0\xbe3\xd0\xba\xd0\xbb \xd0\xb51\xd0\xbe\xd0\xbb_ \xd0\xb51\xd0\xbe\xd0\xbb\xd0\xb0 \xd0\xb5\xd0\xbe3\xd0\xbb\xd0\xb8 \xd0\xb51\xd0\xbe\xd0\xbb\xd0\xba \xd0\xb51\xd0\xbe\xd0\xbb\xd1\x8b \xd0\xb51\xd0\xbe\xd0\xbb\xd1\x8c \xd0\xb52\xd0\xbe\xd0\xbc \xd0\xb51\xd0\xbe\xd0\xbd_ \xd0\xb52\xd0\xbe\xd0\xbd\xd0\xb0 \xd0\xb52\xd0\xbe\xd0\xbd\xd0\xb8 \xd0\xb5\xd0\xbe3\xd0\xbd\xd0\xbe \xd0\xb51\xd0\xbe\xd0\xbd\xd1\x81 \xd0\xb5\xd0\xbe\xd0\xbf2 \xd0\xb51\xd0\xbe\xd0\xbf\xd0\xb5 \xd0\xb5\xd0\xbe2\xd0\xbf\xd1\x80 \xd0\xb5\xd0\xbe4\xd0\xbf\xd1\x83 \xd0\xb52\xd0\xbe3\xd1\x80\xd0\xbe \xd0\xb5\xd0\xbe\xd1\x812 \xd0\xb51\xd0\xbe2\xd1\x81\xd0\xb2\xd0\xb8 \xd0\xb5\xd0\xbe1\xd1\x81\xd0\xba \xd0\xb51\xd0\xbe\xd1\x81\xd0\xbc \xd0\xb51\xd0\xbe\xd1\x81\xd0\xbd \xd0\xb5\xd0\xbe\xd1\x81\xd1\x821\xd1\x80 \xd0\xb5\xd0\xbe3\xd1\x81\xd1\x85 \xd0\xb51\xd0\xbe\xd1\x82\xd0\xbb \xd0\xb5\xd0\xbe\xd1\x822\xd1\x80\xd1\x83 \xd0\xb51\xd0\xbe2\xd1\x87 \xd0\xb51\xd0\xbe2\xd1\x89 \xd0\xb5\xd0\xbf\xd0\xb0\xd1\x822 \xd0\xb5\xd0\xbf\xd0\xb01\xd1\x82\xd1\x80 2\xd0\xb5\xd0\xbf\xd0\xb5 \xd0\xb5\xd0\xbf\xd0\xb8\xd1\x812\xd0\xba \xd0\xb52\xd0\xbf\xd0\xbb \xd0\xb53\xd0\xbf\xd0\xbb\xd0\xb0 \xd0\xb5\xd0\xbf1\xd0\xbb\xd0\xb5\xd1\x88 \xd0\xb53\xd0\xbf2\xd0\xbb\xd0\xbe\xd0\xb4 \xd0\xb5\xd0\xbf1\xd0\xbb\xd1\x83 \xd0\xb53\xd0\xbf\xd0\xbb\xd1\x8b \xd0\xb5\xd0\xbf1\xd0\xbb\xd1\x8e\xd1\x89 \xd0\xb54\xd0\xbf\xd0\xbd 2\xd0\xb5\xd0\xbf\xd0\xbe \xd0\xb54\xd0\xbf3\xd1\x81 \xd0\xb54\xd0\xbf\xd1\x82 \xd0\xb51\xd1\x80\xd0\xb0 \xd0\xb5\xd1\x801\xd0\xb0\xd0\xba\xd1\x82 \xd0\xb52\xd1\x80\xd0\xb2 \xd0\xb5\xd1\x801\xd0\xb2\xd0\xb5 \xd0\xb51\xd1\x80\xd0\xb5 \xd0\xb53\xd1\x80\xd0\xb5_ \xd0\xb5\xd1\x80\xd0\xb53\xd0\xb4\xd0\xbe \xd0\xb5\xd1\x80\xd0\xb51\xd0\xb4\xd1\x80 \xd0\xb5\xd1\x80\xd0\xb51\xd0\xba2 \xd0\xb5\xd1\x80\xd0\xb53\xd0\xbc2\xd0\xbd \xd0\xb5\xd1\x80\xd0\xb53\xd0\xbf \xd0\xb5\xd1\x80\xd0\xb51\xd1\x854 \xd0\xb51\xd1\x80\xd0\xb8 \xd0\xb5\xd1\x80\xd0\xb8\xd0\xbe3\xd0\xb7 \xd0\xb51\xd1\x80\xd0\xbe \xd0\xb5\xd1\x80\xd0\xbe2\xd0\xb1 \xd0\xb5\xd1\x801\xd0\xbe\xd0\xb1\xd0\xbb 2\xd0\xb5\xd1\x80\xd0\xbe\xd0\xb2\xd0\xb8 2\xd0\xb5\xd1\x80\xd0\xbe\xd0\xba\xd1\x80 2\xd0\xb5\xd1\x80\xd0\xbe\xd0\xbb \xd0\xb5\xd1\x80\xd0\xbe3\xd1\x842 \xd0\xb5\xd1\x803\xd1\x81\xd0\xba \xd0\xb51\xd1\x80\xd1\x83 \xd0\xb52\xd1\x801\xd1\x832\xd0\xbf \xd0\xb51\xd1\x80\xd1\x8b \xd0\xb51\xd1\x80\xd1\x8e \xd0\xb51\xd1\x80\xd1\x8f \xd0\xb53\xd1\x812\xd0\xb0 \xd0\xb5\xd1\x812\xd0\xb1\xd0\xb0 \xd0\xb51\xd1\x81\xd0\xb3 \xd0\xb51\xd1\x81\xd0\xba \xd0\xb52\xd1\x811\xd0\xba\xd0\xb0_ \xd0\xb5\xd1\x811\xd0\xba\xd0\xb0\xd0\xbb \xd0\xb52\xd1\x81\xd0\xba\xd0\xb5 \xd0\xb52\xd1\x81\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xb54\xd1\x811\xd0\xba\xd1\x83_ 2\xd0\xb5\xd1\x81\xd0\xbb \xd0\xb5\xd1\x811\xd0\xbb\xd0\xb0\xd1\x81 \xd0\xb5\xd1\x812\xd0\xbb\xd0\xb8\xd0\xbd \xd0\xb5\xd1\x812\xd0\xbb\xd0\xbe\xd0\xb2 \xd0\xb5\xd1\x812\xd0\xbb\xd0\xbe\xd0\xbc \xd0\xb51\xd1\x81\xd0\xbb\xd1\x83 \xd0\xb51\xd1\x81\xd0\xbb\xd1\x8b \xd0\xb51\xd1\x814\xd0\xbc \xd0\xb53\xd1\x81\xd0\xbe 2\xd0\xb5\xd1\x81\xd0\xbf \xd0\xb5\xd1\x812\xd0\xbf\xd0\xb5\xd0\xba \xd0\xb5\xd1\x813\xd0\xbf\xd0\xbe\xd0\xbb \xd0\xb52\xd1\x81\xd0\xbf\xd1\x83 \xd0\xb51\xd1\x81\xd1\x82 \xd0\xb5\xd1\x812\xd1\x82\xd0\xb0\xd0\xbd \xd0\xb52\xd1\x81\xd1\x82\xd0\xbb \xd0\xb53\xd1\x81\xd1\x82\xd1\x83 \xd0\xb5\xd1\x812\xd1\x87\xd0\xb5\xd1\x82 \xd0\xb51\xd1\x82\xd0\xb0 \xd0\xb5\xd1\x821\xd0\xb2\xd0\xb5 \xd0\xb5\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xb51\xd1\x82\xd0\xb2\xd0\xbe 2\xd0\xb5\xd1\x82\xd0\xb5\xd1\x87 \xd0\xb51\xd1\x82\xd0\xb8 \xd0\xb51\xd1\x82\xd0\xbe \xd0\xb5\xd1\x82\xd0\xbe1\xd1\x81 \xd0\xb5\xd1\x821\xd1\x80 \xd0\xb5\xd1\x822\xd1\x80\xd1\x8f \xd0\xb51\xd1\x82\xd1\x83 \xd0\xb51\xd1\x82\xd1\x8b \xd0\xb51\xd1\x82\xd1\x8c\xd0\xb5 \xd0\xb53\xd1\x82\xd1\x8c\xd1\x8e \xd0\xb53\xd1\x82\xd1\x8c\xd1\x8f \xd0\xb51\xd1\x82\xd1\x8e \xd0\xb51\xd1\x82\xd1\x8f \xd0\xb51\xd1\x832 2\xd0\xb5\xd1\x83\xd0\xb1 \xd0\xb5\xd1\x83\xd0\xb13\xd1\x80 \xd0\xb5\xd1\x83\xd0\xb72 \xd0\xb5\xd1\x83\xd0\xba2\xd0\xbb\xd0\xbe \xd0\xb5\xd1\x84\xd0\xb83\xd0\xb12 \xd0\xb5\xd1\x842\xd0\xbb \xd0\xb5\xd1\x841\xd1\x80\xd0\xb5 \xd0\xb5\xd1\x85\xd0\xb02\xd1\x82 \xd0\xb5\xd1\x851\xd0\xb0\xd1\x82\xd0\xbe \xd0\xb5\xd1\x853\xd0\xb2\xd0\xb0\xd0\xbb \xd0\xb5\xd1\x853\xd0\xbb\xd0\xbe\xd0\xbf \xd0\xb5\xd1\x851\xd0\xbe\xd0\xb1 \xd0\xb5\xd1\x851\xd0\xbe\xd0\xbf\xd0\xbe \xd0\xb5\xd1\x851\xd1\x80\xd0\xb5 \xd0\xb5\xd1\x851\xd1\x80\xd1\x83 \xd0\xb5\xd1\x851\xd1\x832\xd1\x87 2\xd0\xb5\xd1\x86\xd0\xb2 \xd0\xb51\xd1\x87\xd0\xbb \xd0\xb52\xd1\x88\xd0\xbb \xd0\xb5\xd1\x8d2 \xd0\xb5\xd1\x8e2\xd0\xb3 \xd0\xb51\xd1\x8f \xd0\xb5\xd1\x8f2\xd0\xb7 1\xd0\xb6 \xd0\xb6\xd0\xb02\xd0\xb1\xd0\xbb \xd0\xb6\xd0\xb02\xd0\xb1\xd1\x80 \xd0\xb6\xd0\xb01\xd0\xb7 \xd0\xb6\xd0\xb0\xd1\x821\xd0\xb2 2\xd0\xb61\xd0\xb12 2\xd0\xb61\xd0\xb2 \xd0\xb6\xd0\xb32 2\xd0\xb6\xd0\xb3\xd0\xb0 \xd0\xb62\xd0\xb3\xd0\xb8 3\xd0\xb62\xd0\xb3\xd0\xbb \xd0\xb62\xd0\xb3\xd1\x83 2\xd0\xb61\xd0\xb4 \xd0\xb62\xd0\xb4\xd0\xb0\xd0\xba \xd0\xb62\xd0\xb4\xd0\xb0\xd1\x87 3\xd0\xb62\xd0\xb4\xd0\xb5\xd0\xbb 4\xd0\xb6\xd0\xb4\xd0\xb5\xd0\xbc\xd0\xb5 \xd0\xb62\xd0\xb4\xd0\xb5\xd0\xbf \xd0\xb62\xd0\xb4\xd0\xb8 4\xd0\xb62\xd0\xb4\xd0\xbb \xd0\xb6\xd0\xb4\xd0\xbe3 \xd0\xb6\xd0\xb4\xd1\x831 4\xd0\xb6\xd0\xb4\xd1\x8c 3\xd0\xb62\xd0\xb4\xd1\x8f 3\xd0\xb6\xd0\xb5\xd0\xb2 \xd0\xb6\xd0\xb53\xd0\xb42 \xd0\xb6\xd0\xb51\xd0\xba2\xd0\xb2 \xd0\xb6\xd0\xb51\xd0\xba\xd0\xbb \xd0\xb6\xd0\xb51\xd0\xbe2 \xd0\xb6\xd0\xb53\xd0\xbf2 \xd0\xb6\xd0\xb51\xd1\x812 \xd0\xb6\xd0\xb53\xd1\x81\xd0\xba 2\xd0\xb6\xd0\xb6\xd0\xb0 \xd0\xb62\xd0\xb6\xd0\xb5 2\xd0\xb6\xd0\xb6\xd0\xb5\xd0\xb2 2\xd0\xb61\xd0\xb72 \xd0\xb6\xd0\xb81\xd0\xbe 2\xd0\xb6\xd0\xb8\xd1\x80\xd1\x80 2\xd0\xb61\xd0\xba 2\xd0\xb61\xd0\xbb \xd0\xb62\xd0\xbc \xd0\xb63\xd0\xbc\xd0\xb0 2\xd0\xb63\xd0\xbc\xd0\xbe 2\xd0\xb61\xd0\xbd \xd0\xb6\xd0\xbd\xd0\xbe1 2\xd0\xb61\xd0\xbe\xd0\xb1 2\xd0\xb61\xd0\xbe2\xd1\x821 \xd0\xb6\xd0\xbe\xd1\x833 \xd0\xb6\xd0\xbe\xd1\x831\xd1\x81 2\xd0\xb6\xd0\xbf2 \xd0\xb6\xd0\xbf\xd0\xbe1 \xd0\xb62\xd1\x80\xd1\x83 2\xd0\xb61\xd1\x81 2\xd0\xb6\xd1\x84 2\xd0\xb6\xd1\x86 2\xd0\xb61\xd1\x87 2\xd0\xb6\xd1\x8a 2\xd0\xb6\xd1\x8c_ 2\xd0\xb6\xd1\x8c\xd1\x81 2\xd0\xb6\xd1\x8c\xd1\x82 1\xd0\xb7\xd0\xb01 \xd0\xb7\xd0\xb0\xd0\xb02 \xd0\xb7\xd0\xb0\xd0\xb12 \xd0\xb7\xd0\xb02\xd0\xb21\xd1\x80\xd0\xb8 \xd0\xb7\xd0\xb02\xd0\xb2\xd1\x80\xd1\x83 \xd0\xb71\xd0\xb0\xd0\xb2\xd1\x83 \xd0\xb7\xd0\xb0\xd0\xb34 \xd0\xb71\xd0\xb0\xd0\xb4\xd1\x80 \xd0\xb7\xd0\xb0\xd0\xb52\xd0\xb4 \xd0\xb7\xd0\xb0\xd0\xb52\xd1\x85 \xd0\xb7\xd0\xb03\xd0\xb62\xd0\xb4 \xd0\xb7\xd0\xb03\xd0\xb72 \xd0\xb71\xd0\xb0\xd0\xba\xd1\x82 \xd0\xb7\xd0\xb03\xd0\xbc\xd0\xbd\xd0\xb5 3\xd0\xb72\xd0\xb0\xd0\xbd \xd0\xb7\xd0\xb03\xd0\xbd\xd0\xb0 \xd0\xb7\xd0\xb0\xd0\xbd\xd1\x812 \xd0\xb7\xd0\xb0\xd0\xbf2 \xd0\xb7\xd0\xb0\xd1\x802\xd0\xb2 \xd0\xb7\xd0\xb03\xd1\x802\xd0\xb4 \xd0\xb7\xd0\xb0\xd1\x802\xd0\xb6 \xd0\xb7\xd0\xb0\xd1\x812 \xd0\xb7\xd0\xb0\xd1\x81\xd1\x822 \xd0\xb7\xd0\xb0\xd1\x822 \xd0\xb7\xd0\xb03\xd1\x82\xd0\xba \xd0\xb7\xd0\xb0\xd1\x832 \xd0\xb7\xd0\xb0\xd1\x852 \xd0\xb7\xd0\xb0\xd1\x872\xd1\x82 \xd0\xb7\xd0\xb03\xd1\x882 \xd0\xb7\xd0\xb0\xd1\x8f2 \xd0\xb71\xd0\xb12 2\xd0\xb73\xd0\xb2\xd0\xb0_ \xd0\xb72\xd0\xb2\xd0\xb0\xd0\xb2 \xd0\xb73\xd0\xb2\xd0\xb0\xd0\xbb\xd1\x8c \xd0\xb72\xd0\xb2\xd0\xb0\xd0\xbd 2\xd0\xb7\xd0\xb2\xd0\xb0\xd1\x8f \xd0\xb71\xd0\xb2\xd0\xb5 \xd0\xb72\xd0\xb2\xd0\xb5\xd0\xb7 \xd0\xb71\xd0\xb2\xd0\xb8 \xd0\xb73\xd0\xb22\xd0\xba \xd0\xb71\xd0\xb2\xd0\xbb\xd0\xb0 \xd0\xb71\xd0\xb2\xd0\xbe 2\xd0\xb7\xd0\xb2\xd0\xbe\xd0\xbb 1\xd0\xb72\xd0\xb2\xd0\xbe\xd0\xbd \xd0\xb71\xd0\xb2\xd1\x80 1\xd0\xb7\xd0\xb2\xd1\x83 2\xd0\xb71\xd0\xb2\xd1\x83\xd1\x8e \xd0\xb71\xd0\xb2\xd1\x8c 2\xd0\xb7\xd0\xb3 \xd0\xb73\xd0\xb3\xd0\xb0 \xd0\xb72\xd0\xb3\xd0\xbb\xd0\xb8 \xd0\xb7\xd0\xb32\xd0\xbd\xd0\xb0 \xd0\xb72\xd0\xb3\xd0\xbd\xd1\x83 \xd0\xb71\xd0\xb42\xd0\xb2 \xd0\xb72\xd0\xb4\xd0\xb5\xd1\x88 \xd0\xb7\xd0\xb4\xd0\xbe\xd0\xb63 1\xd0\xb7\xd0\xb5 \xd0\xb7\xd0\xb52\xd0\xb11 \xd0\xb7\xd0\xb52\xd0\xb5\xd0\xb2 \xd0\xb7\xd0\xb52\xd0\xbe\xd0\xb4 2\xd0\xb7\xd0\xb62 \xd0\xb73\xd0\xb72 1\xd0\xb7\xd0\xb8 3\xd0\xb7\xd0\xb8_ 3\xd0\xb7\xd0\xb8\xd0\xb9_ \xd0\xb71\xd0\xb8\xd0\xbd\xd1\x82 \xd0\xb7\xd0\xb82\xd0\xbe\xd0\xb7 \xd0\xb7\xd0\xb82\xd0\xbe\xd0\xbd\xd0\xbe \xd0\xb7\xd0\xb81\xd0\xbe\xd0\xbf 3\xd0\xb7\xd0\xb8\xd1\x81 \xd0\xb7\xd0\xb83\xd1\x822\xd1\x80 \xd0\xb7\xd0\xb8\xd1\x833\xd0\xbc 3\xd0\xb7\xd0\xb8\xd1\x87 2\xd0\xb71\xd0\xba \xd0\xb7\xd0\xba\xd0\xbe1 \xd0\xb7\xd0\xba\xd0\xbe3\xd0\xbf2 \xd0\xb71\xd0\xbb \xd0\xb72\xd0\xbb\xd0\xb0\xd1\x89 \xd0\xb72\xd0\xbb\xd0\xbe\xd0\xb1 \xd0\xb72\xd0\xbb\xd0\xbe\xd0\xbf \xd0\xb72\xd0\xbb\xd0\xbe\xd1\x80 \xd0\xb72\xd0\xbb\xd1\x8e\xd1\x89 2\xd0\xb7\xd0\xbc2 \xd0\xb73\xd0\xbc\xd0\xbd \xd0\xb71\xd0\xbd 2\xd0\xb7\xd0\xbd\xd0\xb0_ \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xb2 \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xb5 \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xb9 \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xba \xd0\xb72\xd0\xbd\xd0\xb0\xd0\xbd \xd0\xb72\xd0\xbd\xd0\xb0\xd1\x82 \xd0\xb72\xd0\xbd\xd0\xb0\xd1\x8e 2\xd0\xb7\xd0\xbd\xd0\xb0\xd1\x8f 2\xd0\xb7\xd0\xbd\xd0\xb5 2\xd0\xb73\xd0\xbd\xd0\xb8 2\xd0\xb7\xd0\xbd\xd0\xbe 2\xd0\xb7\xd0\xbd\xd1\x83 2\xd0\xb73\xd0\xbd\xd1\x8b \xd0\xb72\xd0\xbe\xd0\xb1\xd0\xb5 \xd0\xb7\xd0\xbe2\xd0\xb1\xd0\xb8 1\xd0\xb7\xd0\xbe\xd0\xb2 \xd0\xb7\xd0\xbe3\xd0\xb22\xd0\xbc \xd0\xb7\xd0\xbe2\xd0\xb3\xd0\xbb \xd0\xb7\xd0\xbe1\xd0\xb4\xd1\x80 1\xd0\xb7\xd0\xbe\xd0\xb5 \xd0\xb7\xd0\xbe1\xd0\xb72 1\xd0\xb7\xd0\xbe\xd0\xb8 1\xd0\xb7\xd0\xbe\xd0\xb9_ 1\xd0\xb7\xd0\xbe\xd0\xba_ \xd0\xb71\xd0\xbe\xd0\xba\xd1\x81 1\xd0\xb7\xd0\xbe\xd0\xbb2 \xd0\xb7\xd0\xbe1\xd0\xbb\xd0\xb3 \xd0\xb7\xd0\xbe1\xd0\xbb\xd0\xb6 \xd0\xb7\xd0\xbe3\xd0\xbc2 1\xd0\xb7\xd0\xbe\xd0\xbc_ 2\xd0\xb7\xd0\xbe\xd0\xbc\xd0\xbd 1\xd0\xb7\xd0\xbe\xd0\xbd 2\xd0\xb7\xd0\xbe\xd0\xbd\xd1\x80 1\xd0\xb7\xd0\xbe\xd0\xbe \xd0\xb7\xd0\xbe2\xd0\xbe3\xd0\xbf \xd0\xb7\xd0\xbe2\xd0\xbe\xd1\x81 \xd0\xb7\xd0\xbe2\xd0\xbf\xd0\xb0 \xd0\xb72\xd0\xbe\xd0\xbf\xd0\xbb \xd0\xb72\xd0\xbe\xd0\xbf\xd1\x80 \xd0\xb71\xd0\xbe\xd1\x80\xd0\xb3 1\xd0\xb72\xd0\xbe3\xd1\x80\xd0\xb5 \xd0\xb7\xd0\xbe\xd1\x812 \xd0\xb71\xd0\xbe\xd1\x81\xd0\xbd \xd0\xb7\xd0\xbe1\xd1\x81\xd0\xbf \xd0\xb7\xd0\xbe2\xd1\x82\xd0\xb2 \xd0\xb72\xd0\xbe\xd1\x82\xd0\xb5 \xd0\xb71\xd0\xbe\xd1\x82\xd0\xba \xd0\xb72\xd0\xbe\xd1\x82\xd0\xbe \xd0\xb7\xd0\xbe\xd1\x822\xd1\x80\xd0\xb5 \xd0\xb7\xd0\xbe\xd1\x822\xd1\x80\xd0\xb8 1\xd0\xb7\xd0\xbe\xd1\x85 \xd0\xb7\xd0\xbe\xd1\x882 \xd0\xb7\xd0\xbe2\xd1\x88\xd0\xb8 1\xd0\xb7\xd0\xbe\xd1\x8d 1\xd0\xb7\xd0\xbe\xd1\x8e \xd0\xb71\xd1\x80\xd0\xb0 \xd0\xb72\xd1\x80\xd0\xb0\xd0\xba \xd0\xb7\xd1\x80\xd0\xb02\xd1\x81 \xd0\xb72\xd1\x80\xd0\xb0\xd1\x87 \xd0\xb72\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb71\xd1\x80\xd0\xb5\xd1\x81 \xd0\xb72\xd1\x80\xd0\xb8\xd1\x88 \xd0\xb71\xd1\x80\xd0\xbe \xd0\xb7\xd1\x80\xd0\xbe2\xd1\x813 \xd0\xb71\xd1\x80\xd1\x83 \xd0\xb72\xd1\x80\xd1\x8e \xd0\xb71\xd1\x80\xd1\x8f 2\xd0\xb71\xd1\x81 2\xd0\xb7\xd1\x82 \xd0\xb71\xd1\x82\xd0\xb8 1\xd0\xb7\xd1\x83 3\xd0\xb7\xd1\x83_ 2\xd0\xb71\xd1\x832\xd0\xb1\xd0\xb5 \xd0\xb7\xd1\x832\xd0\xb13\xd1\x80 \xd0\xb7\xd1\x831\xd0\xb2 2\xd0\xb7\xd1\x83\xd0\xb2\xd0\xb5 2\xd0\xb7\xd1\x832\xd0\xb3 3\xd0\xb7\xd1\x83\xd0\xb5 2\xd0\xb71\xd1\x83\xd0\xb73 2\xd0\xb7\xd1\x831\xd0\xba 3\xd0\xb7\xd1\x83\xd0\xbc\xd0\xb5 \xd0\xb71\xd1\x832\xd0\xbc\xd0\xbe 2\xd0\xb7\xd1\x83\xd0\xbf \xd0\xb7\xd1\x832\xd0\xbf\xd1\x80 \xd0\xb71\xd1\x83\xd1\x80\xd0\xb1 \xd0\xb71\xd1\x832\xd1\x82\xd0\xb5 \xd0\xb7\xd1\x832\xd1\x87\xd0\xb0\xd1\x81 2\xd0\xb7\xd1\x86 \xd0\xb71\xd1\x87 2\xd0\xb7\xd1\x88 \xd0\xb7\xd1\x8a\xd0\xb52\xd0\xbc 1\xd0\xb7\xd1\x8b 2\xd0\xb7\xd1\x8b2\xd0\xb31 \xd0\xb7\xd1\x8b2\xd0\xb7 2\xd0\xb7\xd1\x8b\xd0\xbc\xd0\xb5 2\xd0\xb7\xd1\x8b\xd0\xbc\xd1\x87 2\xd0\xb7\xd1\x8b2\xd1\x811 2\xd0\xb7\xd1\x8b\xd1\x89 1\xd0\xb7\xd1\x8c\xd0\xb5 1\xd0\xb7\xd1\x8c\xd0\xb8 1\xd0\xb7\xd1\x8c\xd1\x8e 3\xd0\xb7\xd1\x8c\xd1\x8f 1\xd0\xb72\xd1\x8e 1\xd0\xb7\xd1\x8f \xd0\xb81\xd0\xb0 \xd0\xb82\xd0\xb0\xd0\xb1 \xd0\xb82\xd0\xb0\xd0\xb2 \xd0\xb8\xd0\xb0\xd0\xb32 \xd0\xb82\xd0\xb0\xd0\xb3\xd1\x80 \xd0\xb82\xd0\xb0\xd0\xb4\xd0\xb5 \xd0\xb82\xd0\xb0\xd0\xb4\xd0\xb8 \xd0\xb8\xd0\xb02\xd0\xb7\xd0\xbe\xd0\xb2 \xd0\xb8\xd0\xb02\xd0\xbc\xd1\x83 \xd0\xb83\xd0\xb0\xd0\xbd\xd0\xb0 \xd0\xb8\xd0\xb02\xd0\xbd\xd0\xb0\xd0\xbb \xd0\xb8\xd0\xb0\xd0\xbd\xd0\xb42 \xd0\xb8\xd0\xb0\xd0\xbe2 \xd0\xb82\xd0\xb0\xd0\xbf \xd0\xb8\xd0\xb01\xd1\x812\xd0\xba \xd0\xb8\xd0\xb01\xd1\x81\xd1\x82\xd0\xb0 \xd0\xb8\xd0\xb01\xd1\x81\xd1\x82\xd0\xbe \xd0\xb8\xd0\xb0\xd1\x821\xd1\x80\xd0\xbe \xd0\xb83\xd0\xb0\xd1\x82\xd1\x83 \xd0\xb82\xd0\xb0\xd1\x84 \xd0\xb82\xd0\xb01\xd1\x85 \xd0\xb8\xd0\xb02\xd1\x86\xd0\xb5 2\xd0\xb81\xd0\xb1 \xd0\xb82\xd0\xb11\xd1\x80 2\xd0\xb8\xd0\xb2\xd0\xb0\xd0\xb6 2\xd0\xb81\xd0\xb2\xd0\xb5 \xd0\xb82\xd0\xb23\xd0\xb7 \xd0\xb81\xd0\xb2\xd0\xb8 2\xd0\xb81\xd0\xb2\xd0\xbe \xd0\xb81\xd0\xb22\xd1\x80 \xd0\xb83\xd0\xb22\xd1\x81 \xd0\xb81\xd0\xb2\xd1\x83 \xd0\xb8\xd0\xb22\xd1\x85\xd0\xbe 2\xd0\xb8\xd0\xb2\xd1\x8b \xd0\xb8\xd0\xb32\xd0\xb4 \xd0\xb83\xd0\xb3\xd0\xb5 2\xd0\xb8\xd0\xb3\xd0\xbb \xd0\xb82\xd0\xb3\xd0\xbb\xd0\xb5 \xd0\xb82\xd0\xb3\xd0\xbb\xd0\xb8 \xd0\xb82\xd0\xb3\xd0\xbd \xd0\xb8\xd0\xb3\xd0\xbd\xd0\xb83 \xd0\xb8\xd0\xb31\xd1\x80\xd0\xb5\xd0\xbd \xd0\xb8\xd0\xb31\xd1\x80\xd0\xbe \xd0\xb8\xd0\xb31\xd1\x80\xd1\x83 \xd0\xb8\xd0\xb31\xd1\x80\xd1\x8b \xd0\xb82\xd0\xb31\xd1\x80\xd1\x8f \xd0\xb81\xd0\xb4\xd0\xb2 \xd0\xb82\xd0\xb4\xd0\xb5\xd0\xb9 \xd0\xb81\xd0\xb42\xd0\xb6 \xd0\xb8\xd0\xb4\xd0\xb81\xd0\xbe\xd0\xbc \xd0\xb8\xd0\xb4\xd0\xb81\xd0\xbe\xd1\x82 \xd0\xb8\xd0\xb41\xd1\x80 \xd0\xb81\xd0\xb4\xd1\x8c \xd0\xb81\xd0\xb5 \xd0\xb82\xd0\xb5\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xb8\xd0\xb52\xd0\xb3 \xd0\xb8\xd0\xb52\xd0\xb4 \xd0\xb8\xd0\xb53\xd0\xb4\xd0\xb5 \xd0\xb8\xd0\xb52\xd0\xb7\xd1\x83 \xd0\xb83\xd0\xb5\xd0\xbd\xd0\xb8 \xd0\xb8\xd0\xb51\xd0\xbe2 \xd0\xb8\xd0\xb5\xd0\xbf\xd0\xb81 \xd0\xb8\xd0\xb52\xd1\x80 \xd0\xb83\xd0\xb62\xd0\xb4 \xd0\xb8\xd0\xb71\xd0\xb22 \xd0\xb8\xd0\xb72\xd0\xb3\xd0\xbd\xd0\xb5 1\xd0\xb8\xd0\xb71\xd0\xb4 \xd0\xb8\xd0\xb72\xd0\xbd\xd0\xb0\xd0\xbb \xd0\xb81\xd0\xb7\xd0\xbe \xd0\xb8\xd0\xb7\xd0\xbe2\xd0\xbe \xd0\xb8\xd0\xb71\xd1\x80 \xd0\xb81\xd0\xb8 \xd0\xb8\xd0\xb9\xd1\x812 \xd0\xb81\xd0\xba \xd0\xb83\xd0\xba2\xd0\xb0 \xd0\xb8\xd0\xba\xd0\xb01\xd1\x812 \xd0\xb8\xd0\xba2\xd0\xb2\xd0\xb0 \xd0\xb82\xd0\xba\xd0\xb2\xd0\xb8 \xd0\xb82\xd0\xba\xd0\xbb\xd1\x8f \xd0\xb83\xd0\xba\xd0\xbe \xd0\xb8\xd0\xba1\xd1\x80\xd0\xbe \xd0\xb8\xd0\xba1\xd1\x81\xd0\xba \xd0\xb8\xd0\xba2\xd1\x811\xd1\x82 \xd0\xb83\xd0\xba\xd1\x83 \xd0\xb81\xd0\xbb \xd0\xb82\xd0\xbb1\xd0\xb02\xd1\x86 \xd0\xb8\xd0\xbb\xd0\xbe1\xd1\x81\xd0\xba \xd0\xb8\xd0\xbb\xd0\xbf2 \xd0\xb82\xd0\xbb1\xd1\x832\xd0\xbf \xd0\xb82\xd0\xbb\xd1\x8c \xd0\xb8\xd0\xbb\xd1\x8c\xd1\x822 2\xd0\xb8\xd0\xbc\xd0\xb0 \xd0\xb82\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xbe \xd0\xb82\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x83 2\xd0\xb8\xd0\xbc\xd0\xb5\xd0\xbd\xd1\x8c \xd0\xb83\xd0\xbc\xd0\xb8 \xd0\xb8\xd0\xbc\xd0\xbe\xd0\xb82 \xd0\xb8\xd0\xbc3\xd0\xbf\xd0\xbb \xd0\xb82\xd0\xbc1\xd1\x80 \xd0\xb82\xd0\xbc\xd1\x87 \xd0\xb8\xd0\xbc2\xd1\x87\xd0\xb0 \xd0\xb8\xd0\xbd\xd0\xb42 1\xd0\xb8\xd0\xbd\xd0\xb6 \xd0\xb8\xd0\xbd\xd0\xbe2\xd0\xba3\xd0\xbb \xd0\xb8\xd0\xbd\xd0\xbe3\xd0\xbf2\xd0\xbb \xd0\xb8\xd0\xbd\xd0\xbe1\xd1\x81 \xd0\xb8\xd0\xbd\xd1\x812 1\xd0\xb8\xd0\xbd\xd1\x81\xd0\xbf 1\xd0\xb8\xd0\xbd\xd1\x81\xd1\x82\xd0\xb8 1\xd0\xb8\xd0\xbd\xd1\x81\xd1\x83 1\xd0\xb8\xd0\xbd\xd1\x84 1\xd0\xb8\xd0\xbd\xd1\x8a \xd0\xb81\xd0\xbe\xd0\xb1 \xd0\xb8\xd0\xbe2\xd0\xb1\xd0\xbe \xd0\xb8\xd0\xbe2\xd0\xb2\xd1\x80 \xd0\xb82\xd0\xbe\xd0\xb3 \xd0\xb81\xd0\xbe\xd0\xb4 \xd0\xb8\xd0\xbe2\xd0\xb4\xd0\xb5 \xd0\xb81\xd0\xbe\xd0\xb7 \xd0\xb8\xd0\xbe3\xd0\xb7\xd0\xbe \xd0\xb81\xd0\xbe\xd0\xba\xd1\x81 \xd0\xb81\xd0\xbe\xd0\xbb\xd0\xb5 \xd0\xb81\xd0\xbe\xd0\xbd \xd0\xb83\xd0\xbe\xd0\xbd\xd0\xbe\xd0\xb2 \xd0\xb81\xd0\xbe\xd0\xbf\xd1\x82 \xd0\xb81\xd0\xbe\xd1\x80 \xd0\xb83\xd0\xbe\xd1\x80\xd0\xb0 \xd0\xb8\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xb8\xd0\xbe2\xd1\x81\xd0\xb0 \xd0\xb8\xd0\xbe3\xd1\x81\xd0\xba\xd0\xbb \xd0\xb8\xd0\xbe1\xd1\x812\xd0\xbf \xd0\xb81\xd0\xbe\xd1\x82\xd0\xb0 \xd0\xb8\xd0\xbe2\xd1\x821\xd0\xb2 \xd0\xb81\xd0\xbe\xd1\x82\xd0\xba \xd0\xb81\xd0\xbe\xd1\x82\xd1\x81 \xd0\xb8\xd0\xbe\xd1\x83\xd0\xb32 \xd0\xb8\xd0\xbe2\xd1\x85\xd0\xbe \xd0\xb81\xd0\xbe\xd1\x88 2\xd0\xb8\xd0\xbf \xd0\xb8\xd0\xbf\xd0\xb0\xd1\x822 \xd0\xb8\xd0\xbf\xd0\xb01\xd1\x82\xd1\x80 \xd0\xb8\xd0\xbf2\xd0\xbb\xd1\x8f \xd0\xb8\xd0\xbf3\xd0\xbd \xd0\xb8\xd0\xbf\xd0\xbe3\xd0\xba2 \xd0\xb81\xd1\x80 \xd0\xb8\xd1\x80\xd0\xb02\xd1\x81\xd1\x82 \xd0\xb82\xd1\x801\xd0\xb0\xd1\x83 \xd0\xb82\xd1\x80\xd0\xb2 \xd0\xb82\xd1\x80\xd0\xb6 \xd0\xb8\xd1\x80\xd0\xb82\xd1\x81\xd0\xba \xd0\xb8\xd1\x80\xd0\xb8\xd1\x833 \xd0\xb8\xd1\x80\xd0\xbe1\xd0\xb72 1\xd0\xb8\xd1\x80\xd1\x80 \xd0\xb8\xd1\x81\xd0\xb0\xd0\xbd2\xd0\xb41 \xd0\xb82\xd1\x81\xd0\xb1 \xd0\xb82\xd1\x81\xd0\xb4 \xd0\xb8\xd1\x811\xd0\xba \xd0\xb8\xd1\x813\xd0\xba\xd0\xb0_ \xd0\xb8\xd1\x813\xd0\xba\xd0\xb0\xd0\xbc \xd0\xb8\xd1\x813\xd0\xba\xd0\xb0\xd1\x85 \xd0\xb8\xd1\x813\xd0\xba\xd0\xb5 \xd0\xb8\xd1\x813\xd0\xba\xd0\xb8 \xd0\xb8\xd1\x813\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xb8\xd1\x813\xd0\xba\xd1\x83_ \xd0\xb82\xd1\x81\xd0\xbb\xd0\xb0\xd0\xbc \xd0\xb8\xd1\x811\xd0\xbb\xd1\x8b \xd0\xb8\xd1\x813\xd0\xbc\xd0\xb5 \xd0\xb8\xd1\x813\xd0\xbc\xd1\x83 \xd0\xb8\xd1\x813\xd0\xbd\xd0\xbe \xd0\xb8\xd1\x81\xd0\xbe2\xd1\x81\xd0\xba \xd0\xb82\xd1\x813\xd0\xbf\xd1\x80 \xd0\xb84\xd1\x81\xd1\x81 \xd0\xb81\xd1\x81\xd1\x82 \xd0\xb82\xd1\x81\xd1\x821\xd0\xb2 \xd0\xb82\xd1\x81\xd1\x82\xd0\xbb \xd0\xb8\xd1\x811\xd1\x82\xd1\x8f\xd0\xb7 \xd0\xb81\xd1\x81\xd1\x8c\xd0\xb8 \xd0\xb81\xd1\x82 \xd0\xb8\xd1\x82\xd0\xb02\xd0\xb2 \xd0\xb8\xd1\x823\xd0\xb2\xd0\xb0 \xd0\xb82\xd1\x821\xd0\xb2\xd0\xb5 \xd0\xb8\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xb8\xd1\x821\xd0\xb2\xd1\x83 \xd0\xb82\xd1\x82\xd0\xbc \xd0\xb82\xd1\x821\xd1\x80 \xd0\xb8\xd1\x822\xd1\x80\xd0\xb5\xd1\x81 \xd0\xb8\xd1\x823\xd1\x80\xd0\xbe\xd0\xbc \xd0\xb82\xd1\x821\xd1\x83\xd1\x87 \xd0\xb83\xd1\x82\xd1\x8c\xd1\x8e \xd0\xb83\xd1\x82\xd1\x8c\xd1\x8f \xd0\xb81\xd1\x832 \xd0\xb8\xd1\x833\xd0\xbf \xd0\xb8\xd1\x841\xd0\xbb \xd0\xb8\xd1\x842\xd0\xbb\xd1\x8e \xd0\xb82\xd1\x84\xd1\x80 \xd0\xb8\xd1\x85\xd0\xb03\xd0\xb4 \xd0\xb82\xd1\x851\xd0\xb0\xd1\x81 \xd0\xb8\xd1\x852\xd0\xbb\xd0\xbe2 \xd0\xb8\xd1\x85\xd0\xbb\xd0\xbe\xd1\x801 \xd0\xb83\xd1\x852\xd0\xbe \xd0\xb8\xd1\x85\xd0\xbe3\xd0\xba \xd0\xb8\xd1\x851\xd1\x80\xd0\xb5 \xd0\xb8\xd1\x851\xd1\x80\xd0\xb8 \xd0\xb81\xd1\x85\xd1\x83 \xd0\xb81\xd1\x87 \xd0\xb8\xd1\x882\xd0\xbb\xd0\xb8 \xd0\xb82\xd1\x88\xd0\xbb\xd1\x8b \xd0\xb82\xd1\x88\xd1\x82 \xd0\xb8\xd1\x8e4\xd0\xbb \xd0\xb8\xd1\x8e2\xd0\xbd \xd0\xb8\xd1\x8e2\xd1\x82 \xd0\xb8\xd1\x8e3\xd1\x82\xd0\xb0 \xd0\xb81\xd1\x8f \xd0\xb8\xd1\x8f2\xd0\xb4 2\xd0\xb91 \xd0\xb9\xd0\xb42 \xd0\xb92\xd0\xb43\xd0\xb2 \xd0\xb9\xd0\xbd\xd0\xbe1 \xd0\xb92\xd0\xbe1\xd1\x81 \xd0\xb9\xd0\xbe2\xd1\x82\xd1\x80 \xd0\xb9\xd0\xbf2\xd0\xbb \xd0\xb92\xd1\x81\xd0\xb1 \xd0\xb93\xd1\x81\xd0\xba\xd0\xb0 \xd0\xb9\xd1\x812\xd0\xba\xd0\xb5 \xd0\xb9\xd1\x814\xd0\xbc\xd0\xbe \xd0\xb92\xd1\x813\xd0\xbc\xd1\x83 \xd0\xb92\xd1\x81\xd0\xbd \xd0\xb92\xd1\x813\xd1\x84 \xd0\xb92\xd1\x81\xd1\x88 \xd0\xb92\xd1\x82\xd0\xbc \xd0\xb92\xd1\x85\xd0\xbc \xd0\xb9\xd1\x852\xd1\x813 \xd0\xb9\xd1\x8f1 \xd0\xba\xd0\xb02\xd0\xb1\xd0\xbb \xd0\xba\xd0\xb02\xd0\xb1\xd1\x80\xd0\xb8 1\xd0\xba\xd0\xb0\xd0\xb2 \xd0\xba2\xd0\xb0\xd0\xb4 \xd0\xba\xd0\xb03\xd0\xb4\xd0\xbd\xd0\xb5 \xd0\xba\xd0\xb02\xd0\xb41\xd1\x80 1\xd0\xba\xd0\xb0\xd0\xb5 \xd0\xba\xd0\xb0\xd0\xb73\xd0\xbd \xd0\xba\xd0\xb01\xd0\xb7\xd0\xbe 1\xd0\xba\xd0\xb0\xd0\xb9 1\xd0\xba\xd0\xb0\xd0\xbb_ 1\xd0\xba\xd0\xb0\xd0\xbb\xd0\xbe 1\xd0\xba\xd0\xb0\xd0\xbb\xd1\x81 1\xd0\xba\xd0\xb0\xd0\xbc 1\xd0\xba\xd0\xb0\xd0\xbd \xd0\xba\xd0\xb02\xd0\xbf1\xd0\xbb \xd0\xba\xd0\xb02\xd0\xbf\xd1\x80\xd0\xb5 \xd0\xba\xd0\xb0\xd1\x803\xd1\x82\xd1\x80 3\xd0\xba2\xd0\xb0\xd1\x81 \xd0\xba\xd0\xb01\xd1\x81\xd1\x82 1\xd0\xba\xd0\xb0\xd1\x82 \xd0\xba\xd0\xb01\xd1\x822\xd1\x80 1\xd0\xba\xd0\xb0\xd1\x85 \xd0\xba\xd0\xb02\xd1\x881\xd1\x82 1\xd0\xba\xd0\xb0\xd1\x8e 2\xd0\xba1\xd0\xb1 \xd0\xba2\xd0\xb2\xd0\xb0\xd0\xba \xd0\xba2\xd0\xb2\xd0\xb0\xd1\x81 \xd0\xba2\xd0\xb2\xd0\xb0\xd1\x88 \xd0\xba1\xd0\xb2\xd0\xb8 \xd0\xba2\xd0\xb2\xd0\xbe\xd0\xb7 \xd0\xba1\xd0\xb2\xd1\x83 2\xd0\xba\xd0\xb3 2\xd0\xba1\xd0\xb4 \xd0\xba\xd0\xb4\xd0\xb02 1\xd0\xba\xd0\xb5 2\xd0\xba\xd0\xb5\xd0\xb0 \xd0\xba\xd0\xb52\xd0\xb3\xd0\xbb \xd0\xba\xd0\xb5\xd0\xb41\xd1\x80 \xd0\xba\xd0\xb52\xd1\x811\xd0\xba \xd0\xba\xd0\xb52\xd1\x81\xd1\x821 2\xd0\xba1\xd0\xb7 1\xd0\xba\xd0\xb8\xd0\xb2 \xd0\xba\xd0\xb81\xd0\xbe \xd0\xba\xd0\xb8\xd0\xbe\xd1\x811 \xd0\xba\xd0\xb82\xd0\xbf\xd0\xbb \xd0\xba\xd0\xb81\xd1\x812\xd0\xbd\xd0\xb8 1\xd0\xba\xd0\xb8\xd1\x82 2\xd0\xba1\xd0\xba2 \xd0\xba\xd0\xba3\xd1\x81 2\xd0\xba3\xd0\xbb\xd0\xb0_ 2\xd0\xba3\xd0\xbb\xd0\xb0\xd1\x81\xd1\x8c 2\xd0\xba3\xd0\xbb\xd0\xb5_ 2\xd0\xba\xd0\xbb\xd0\xb5\xd0\xbc \xd0\xba3\xd0\xbb\xd0\xb5\xd0\xbc_ \xd0\xba3\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xba1\xd0\xbb\xd0\xb5\xd0\xbe 2\xd0\xba3\xd0\xbb\xd0\xb8_ 2\xd0\xba3\xd0\xbb\xd0\xb8\xd0\xb2 \xd0\xba2\xd0\xbb\xd0\xb8\xd0\xba \xd0\xba2\xd0\xbb\xd0\xb8\xd0\xbd 2\xd0\xba3\xd0\xbb\xd0\xb8\xd1\x81 \xd0\xba3\xd0\xbb\xd0\xb8\xd1\x8f 2\xd0\xba3\xd0\xbb\xd0\xbe_ \xd0\xba2\xd0\xbb\xd0\xbe\xd0\xb7 \xd0\xba3\xd0\xbb\xd0\xbe\xd0\xbc 2\xd0\xba3\xd0\xbb\xd0\xbe\xd1\x81 \xd0\xba\xd0\xbb\xd0\xbe3\xd1\x82 1\xd0\xba\xd0\xbb\xd1\x83\xd0\xba \xd0\xba3\xd0\xbb\xd1\x8b 2\xd0\xba\xd0\xbb\xd1\x8c 1\xd0\xba\xd0\xbb\xd1\x8e 2\xd0\xba3\xd0\xbb\xd1\x8e_ 2\xd0\xba\xd0\xbb\xd1\x8f_ 2\xd0\xba\xd0\xbb\xd1\x8f\xd0\xbc 2\xd0\xba\xd0\xbb\xd1\x8f\xd1\x85 2\xd0\xba\xd0\xbc 2\xd0\xba1\xd0\xbd 3\xd0\xba2\xd0\xbd\xd0\xb8\xd0\xb6 \xd0\xba2\xd0\xbd\xd0\xbe\xd0\xbf 3\xd0\xba2\xd0\xbd\xd1\x8f\xd0\xb6 \xd0\xba2\xd0\xbe \xd0\xba\xd0\xbe1\xd0\xb12\xd1\x80\xd0\xb8 1\xd0\xba\xd0\xbe\xd0\xb2 3\xd0\xba\xd0\xbe\xd0\xb2\xd0\xb0 1\xd0\xba\xd0\xbe\xd0\xb4 \xd0\xba\xd0\xbe1\xd0\xb4\xd1\x80 1\xd0\xba\xd0\xbe\xd0\xb7 1\xd0\xba\xd0\xbe\xd0\xbb\xd1\x8c\xd1\x81 2\xd0\xba\xd0\xbe\xd0\xbc\xd0\xb8\xd0\xbd 3\xd0\xba\xd0\xbe\xd0\xbd\xd1\x81 \xd0\xba\xd0\xbe\xd0\xbf2\xd1\x80 \xd0\xba\xd0\xbe2\xd1\x803\xd0\xb2 \xd0\xba\xd0\xbe1\xd1\x80\xd1\x83 1\xd0\xba\xd0\xbe\xd1\x81 \xd0\xba\xd0\xbe1\xd1\x81\xd0\xba \xd0\xba\xd0\xbe\xd1\x813\xd0\xbc \xd0\xba\xd0\xbe1\xd1\x81\xd0\xbf 1\xd0\xba\xd0\xbe\xd1\x82\xd0\xbd \xd0\xba\xd0\xbe2\xd1\x84\xd1\x80 \xd0\xba\xd0\xbe\xd1\x85\xd0\xbe2\xd1\x803 1\xd0\xba\xd0\xbe\xd1\x88 2\xd0\xba\xd0\xbf 2\xd0\xba\xd1\x80_ \xd0\xba1\xd1\x80\xd0\xb5\xd0\xbb \xd0\xba\xd1\x80\xd0\xb51\xd0\xbe \xd0\xba\xd1\x80\xd0\xb52\xd1\x81\xd0\xbb \xd0\xba1\xd1\x80\xd0\xb5\xd1\x87 1\xd0\xba\xd1\x80\xd0\xb8\xd0\xb1 \xd0\xba1\xd1\x80\xd0\xb8\xd0\xb4 \xd0\xba2\xd1\x80\xd0\xb8\xd0\xb7 \xd0\xba\xd1\x80\xd0\xb82\xd0\xbe3 \xd0\xba2\xd1\x80\xd0\xb8\xd1\x82 \xd0\xba1\xd1\x80\xd0\xb8\xd1\x85 \xd0\xba1\xd1\x80\xd0\xbe\xd0\xb0 \xd0\xba1\xd1\x80\xd0\xbe\xd0\xb1 \xd0\xba2\xd1\x80\xd0\xbe\xd0\xb5 \xd0\xba1\xd1\x80\xd0\xbe\xd0\xba \xd0\xba1\xd1\x80\xd0\xbe\xd0\xbe \xd0\xba1\xd1\x80\xd0\xbe\xd1\x80 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x81 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x84 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x85 \xd0\xba1\xd1\x80\xd0\xbe\xd1\x8d \xd0\xba\xd1\x80\xd1\x831\xd1\x81 \xd0\xba1\xd1\x80\xd1\x8f\xd0\xb4 2\xd0\xba\xd1\x81 \xd0\xba\xd1\x81\xd0\xb0\xd0\xbd\xd0\xb42 \xd0\xba2\xd1\x813\xd0\xb2 \xd0\xba\xd1\x813\xd0\xb3 \xd0\xba2\xd1\x813\xd0\xb4 \xd0\xba2\xd1\x81\xd0\xb8\xd0\xb1 \xd0\xba1\xd1\x81\xd0\xba\xd0\xb8 \xd0\xba\xd1\x811\xd0\xba\xd0\xbb \xd0\xba1\xd1\x81\xd0\xba\xd0\xbe \xd0\xba\xd1\x813\xd0\xbc \xd0\xba3\xd1\x81\xd0\xbe \xd0\xba1\xd1\x81\xd1\x82\xd0\xb0\xd0\xbc \xd0\xba1\xd1\x81\xd1\x82\xd0\xb0\xd0\xbd \xd0\xba\xd1\x813\xd1\x82\xd0\xb5 \xd0\xba1\xd1\x81\xd1\x82\xd0\xbe \xd0\xba\xd1\x811\xd1\x82\xd1\x80 \xd0\xba1\xd1\x81\xd1\x82\xd1\x83 \xd0\xba3\xd1\x81\xd1\x83 2\xd0\xba1\xd1\x82 \xd0\xba\xd1\x82\xd0\xb02\xd0\xba 3\xd0\xba2\xd1\x82\xd0\xbe_ \xd0\xba\xd1\x82\xd0\xbe1\xd1\x81 \xd0\xba\xd1\x822\xd1\x80 \xd0\xba2\xd1\x83 \xd0\xba\xd1\x831\xd0\xb2\xd0\xb5 3\xd0\xba\xd1\x83\xd0\xb5 1\xd0\xba\xd1\x83\xd0\xb9 1\xd0\xba\xd1\x83\xd0\xbb\xd1\x8f 3\xd0\xba\xd1\x83\xd0\xbc \xd0\xba\xd1\x83\xd0\xbf1\xd0\xbb \xd0\xba\xd1\x832\xd0\xbf1\xd1\x80 1\xd0\xba\xd1\x83\xd1\x80 \xd0\xba\xd1\x833\xd1\x80\xd0\xbe \xd0\xba\xd1\x83\xd1\x811\xd0\xba \xd0\xba\xd1\x831\xd1\x81\xd1\x82 1\xd0\xba\xd1\x83\xd1\x82 \xd0\xba\xd1\x833\xd1\x82\xd1\x8c 1\xd0\xba\xd1\x83\xd1\x87\xd0\xb5 1\xd0\xba\xd1\x83\xd1\x8e\xd1\x82 3\xd0\xba\xd1\x83\xd1\x8e\xd1\x89 2\xd0\xba\xd1\x84 2\xd0\xba1\xd1\x852 2\xd0\xba\xd1\x86 2\xd0\xba1\xd1\x87 2\xd0\xba\xd1\x88 1\xd0\xba\xd1\x8c \xd0\xba2\xd1\x8e 1\xd0\xbb\xd0\xb0_ 2\xd0\xbb\xd0\xb0\xd0\xb1\xd0\xb5 \xd0\xbb\xd0\xb02\xd0\xb1\xd0\xbb 2\xd0\xbb\xd0\xb0\xd0\xb3\xd0\xbe \xd0\xbb\xd0\xb02\xd0\xb3\xd1\x80 \xd0\xbb\xd0\xb02\xd0\xb41\xd0\xb0\xd0\xb3 1\xd0\xbb\xd0\xb0\xd0\xb5 \xd0\xbb\xd0\xb03\xd0\xb62\xd0\xb4 \xd0\xbb\xd0\xb01\xd0\xb7\xd0\xbe \xd0\xbb2\xd0\xb0\xd0\xba \xd0\xbb\xd0\xb0\xd0\xba2\xd1\x80 1\xd0\xbb\xd0\xb0\xd0\xbc_ 1\xd0\xbb\xd0\xb0\xd0\xbc\xd0\xb8_ \xd0\xbb\xd0\xb0\xd0\xbd2\xd0\xb41\xd1\x80 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd0\xb0 \xd0\xbb\xd0\xb0\xd1\x81\xd1\x821\xd0\xb2 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd0\xb5 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd0\xbe \xd0\xbb\xd0\xb02\xd1\x81\xd1\x821\xd1\x80 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd1\x83 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd1\x8f \xd0\xbb\xd0\xb01\xd1\x822\xd1\x80 \xd0\xbb\xd0\xb0\xd1\x831 \xd0\xbb\xd0\xb02\xd1\x83\xd1\x81 \xd0\xbb\xd0\xb02\xd1\x84\xd1\x80 1\xd0\xbb\xd0\xb01\xd1\x85 1\xd0\xbb\xd0\xb0\xd1\x8f 2\xd0\xbb\xd0\xb1 \xd0\xbb1\xd0\xb1\xd1\x80 \xd0\xbb1\xd0\xb2\xd0\xb5 \xd0\xbb1\xd0\xb2\xd0\xb8 \xd0\xbb1\xd0\xb2\xd0\xbe \xd0\xbb1\xd0\xb2\xd1\x83 1\xd0\xbb2\xd0\xb3\xd0\xb0\xd0\xbb \xd0\xbb2\xd0\xb3\xd0\xbb \xd0\xbb\xd0\xb3\xd0\xbe1 2\xd0\xbb3\xd0\xb42 1\xd0\xbb\xd0\xb5_ \xd0\xbb\xd0\xb51\xd0\xb2\xd0\xbb \xd0\xbb\xd0\xb5\xd0\xb21\xd1\x80\xd0\xb0 \xd0\xbb\xd0\xb52\xd0\xb31\xd0\xbb \xd0\xbb\xd0\xb51\xd0\xb4\xd0\xb6 \xd0\xbb\xd0\xb53\xd0\xb4\xd0\xbe \xd0\xbb\xd0\xb51\xd0\xb72\xd0\xbe3 \xd0\xbb\xd0\xb51\xd0\xb7\xd1\x80 \xd0\xbb\xd0\xb5\xd0\xba1\xd0\xbb 2\xd0\xbb\xd0\xb5\xd0\xbc\xd0\xbd 1\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xbb\xd0\xb51\xd0\xbe\xd0\xbd\xd1\x82 \xd0\xbb\xd0\xb51\xd0\xbe2\xd1\x81 \xd0\xbb\xd0\xb52\xd1\x81\xd0\xb1 \xd0\xbb\xd0\xb52\xd1\x81\xd0\xba \xd0\xbb\xd0\xb54\xd1\x81\xd0\xba\xd0\xb0 \xd0\xbb\xd0\xb51\xd1\x812\xd0\xbb \xd0\xbb\xd0\xb51\xd1\x81\xd0\xbf\xd0\xb5 \xd0\xbb\xd0\xb51\xd1\x82\xd0\xb2 \xd0\xbb\xd0\xb51\xd1\x822\xd1\x80 1\xd0\xbb\xd0\xb5\xd1\x85 \xd0\xbb\xd0\xb51\xd1\x85\xd1\x80 \xd0\xbb1\xd0\xb7\xd0\xbe 1\xd0\xbb\xd0\xb8 \xd0\xbb\xd0\xb8\xd0\xb02\xd0\xbc 3\xd0\xbb\xd0\xb8\xd0\xb2\xd0\xbe 3\xd0\xbb\xd0\xb8\xd0\xb2\xd1\x8b \xd0\xbb\xd0\xb8\xd0\xb32\xd0\xbb \xd0\xbb\xd0\xb82\xd0\xb3\xd1\x80\xd0\xbe \xd0\xbb\xd0\xb8\xd0\xb53\xd1\x80 \xd0\xbb\xd0\xb82\xd0\xba\xd0\xb2 2\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xbf \xd0\xbb\xd0\xb8\xd0\xbe1\xd1\x81 \xd0\xbb\xd0\xb82\xd0\xbf\xd0\xbb \xd0\xbb\xd0\xb8\xd1\x813\xd0\xbc 2\xd0\xbb1\xd0\xb8\xd1\x81\xd0\xbf \xd0\xbb\xd0\xb82\xd1\x82\xd0\xb2 \xd0\xbb\xd0\xb8\xd1\x833\xd0\xbc \xd0\xbb\xd0\xb82\xd1\x853\xd0\xb2 \xd0\xbb\xd0\xb81\xd1\x85\xd0\xbb \xd0\xbb\xd0\xb81\xd1\x85\xd1\x80 2\xd0\xbb1\xd0\xba \xd0\xbb\xd0\xba2\xd0\xb2 \xd0\xbb2\xd0\xba1\xd0\xbb 2\xd0\xbb1\xd0\xbb \xd0\xbb2\xd0\xbb\xd1\x8c \xd0\xbb\xd0\xbb\xd1\x8e1 2\xd0\xbb\xd0\xbc 2\xd0\xbb1\xd0\xbd \xd0\xbb\xd0\xbd\xd0\xb82\xd0\xb5 1\xd0\xbb\xd0\xbe \xd0\xbb\xd0\xbe2\xd0\xb1\xd0\xbb \xd0\xbb\xd0\xbe1\xd0\xb12\xd1\x80 2\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xb8\xd1\x8f \xd0\xbb\xd0\xbe2\xd0\xb2\xd0\xbb 3\xd0\xbb\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xb4 \xd0\xbb\xd0\xbe2\xd0\xb33\xd0\xb4 \xd0\xbb\xd0\xbe\xd0\xb3\xd0\xbe1\xd1\x81 \xd0\xbb\xd0\xbe1\xd0\xb4\xd1\x80 2\xd0\xbb\xd0\xbe\xd0\xb5\xd0\xbd \xd0\xbb\xd0\xbe1\xd0\xb7\xd0\xb2 \xd0\xbb\xd0\xbe2\xd0\xba1\xd0\xb02\xd1\x83 \xd0\xbb\xd0\xbe2\xd0\xba\xd0\xbb \xd0\xbb\xd0\xbe\xd0\xba3\xd0\xbb\xd0\xb0 3\xd0\xbb\xd0\xbe\xd0\xbf\xd0\xb0\xd1\x81 \xd0\xbb\xd0\xbe2\xd1\x80\xd0\xb2 2\xd0\xbb1\xd0\xbe\xd1\x80\xd0\xb3 \xd0\xbb\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbb\xd0\xbe\xd1\x811\xd0\xba \xd0\xbb\xd0\xbe1\xd1\x812\xd0\xbf 2\xd0\xbb\xd0\xbe\xd1\x82\xd0\xb4 \xd0\xbb\xd0\xbe\xd1\x822\xd1\x80 \xd0\xbb\xd0\xbe2\xd1\x88\xd0\xbb 2\xd0\xbb\xd0\xbf 2\xd0\xbb1\xd1\x812 \xd0\xbb\xd1\x813\xd0\xb1 \xd0\xbb1\xd1\x82 1\xd0\xbb\xd1\x83_ \xd0\xbb\xd1\x831\xd0\xb1\xd1\x80 \xd0\xbb\xd1\x831\xd0\xb2 \xd0\xbb\xd1\x833\xd0\xb3 \xd0\xbb\xd1\x831\xd0\xb44\xd1\x80 1\xd0\xbb\xd1\x83\xd0\xb5 \xd0\xbb\xd1\x831\xd0\xb7\xd0\xbd \xd0\xbb\xd1\x831\xd0\xba\xd1\x80 1\xd0\xbb\xd1\x83\xd0\xbd \xd0\xbb\xd1\x83\xd0\xbe2\xd0\xb4 \xd0\xbb\xd1\x833\xd0\xbf2\xd0\xbb\xd0\xbe \xd0\xbb\xd1\x831\xd1\x81 \xd0\xbb\xd1\x833\xd1\x82\xd1\x8c 1\xd0\xbb\xd1\x83\xd1\x8e 2\xd0\xbb3\xd1\x842 2\xd0\xbb1\xd1\x852 \xd0\xbb2\xd1\x853\xd0\xb2 2\xd0\xbb\xd1\x86 \xd0\xbb1\xd1\x87 1\xd0\xbb\xd1\x8b_ 1\xd0\xbb\xd1\x8b\xd0\xb5 1\xd0\xbb\xd1\x8b\xd0\xb6 1\xd0\xbb\xd1\x8b\xd0\xb9 1\xd0\xbb\xd1\x8b\xd0\xbc 1\xd0\xbb\xd1\x8b\xd1\x85_ 4\xd0\xbb\xd1\x8c_ 2\xd0\xbb\xd1\x8c\xd0\xb4 3\xd0\xbb\xd1\x8c\xd0\xb5 3\xd0\xbb\xd1\x8c\xd0\xb8 2\xd0\xbb\xd1\x8c\xd0\xba 2\xd0\xbb\xd1\x8c\xd0\xbc 2\xd0\xbb\xd1\x8c\xd0\xbd 3\xd0\xbb\xd1\x8c\xd0\xbe 2\xd0\xbb\xd1\x8c\xd1\x81\xd0\xba 1\xd0\xbb\xd1\x8c\xd1\x81\xd1\x82\xd0\xb8 1\xd0\xbb\xd1\x8c\xd1\x81\xd1\x82\xd1\x8f 2\xd0\xbb\xd1\x8c\xd1\x82 2\xd0\xbb\xd1\x8c\xd1\x86 2\xd0\xbb\xd1\x8c\xd1\x87 1\xd0\xbb\xd1\x8c\xd1\x89\xd0\xb0 1\xd0\xbb\xd1\x8c\xd1\x89\xd0\xb5 1\xd0\xbb\xd1\x8c\xd1\x89\xd1\x83 3\xd0\xbb\xd1\x8c\xd1\x8e 3\xd0\xbb\xd1\x8c\xd1\x8f \xd0\xbb2\xd1\x8e 1\xd0\xbb\xd1\x8e_ 1\xd0\xbb\xd1\x8e\xd0\xb6 1\xd0\xbb\xd1\x8e\xd1\x81\xd1\x8c \xd0\xbb\xd1\x8e1\xd1\x82\xd0\xb0 1\xd0\xbb\xd1\x8f 3\xd0\xbb\xd1\x8f_ \xd0\xbb\xd1\x8f1\xd0\xb2\xd0\xb8 3\xd0\xbb\xd1\x8f\xd0\xb2\xd0\xbe 3\xd0\xbb\xd1\x8f\xd0\xb2\xd1\x8b 2\xd0\xbb\xd1\x8f\xd0\xb4 3\xd0\xbb\xd1\x8f\xd0\xbc \xd0\xbb\xd1\x8f1\xd1\x80\xd0\xb5 \xd0\xbb\xd1\x8f1\xd1\x80\xd1\x83 3\xd0\xbb\xd1\x8f\xd1\x85 1\xd0\xbc \xd0\xbc\xd0\xb02\xd0\xb2\xd0\xb7 3\xd0\xbc\xd0\xb0\xd0\xb3 \xd0\xbc\xd0\xb02\xd0\xb3\xd0\xbd \xd0\xbc\xd0\xb02\xd0\xb4\xd1\x80 \xd0\xbc\xd0\xb02\xd0\xb4\xd1\x8c \xd0\xbc\xd0\xb01\xd0\xb7\xd0\xbe \xd0\xbc\xd0\xb02\xd0\xba1\xd1\x80 2\xd0\xbc1\xd0\xb0\xd0\xbb\xd0\xbb \xd0\xbc\xd0\xb0\xd0\xbd2\xd0\xb41\xd1\x80 \xd0\xbc\xd0\xb0\xd1\x813\xd0\xbb \xd0\xbc\xd0\xb01\xd1\x814\xd1\x82 \xd0\xbc\xd0\xb02\xd1\x82\xd0\xbe\xd0\xb1 \xd0\xbc\xd0\xb02\xd1\x821\xd1\x80 \xd0\xbc\xd0\xb02\xd1\x83 \xd0\xbc\xd0\xb0\xd1\x842 3\xd0\xbc\xd0\xb0\xd1\x87 \xd0\xbc\xd0\xb02\xd1\x87\xd1\x82 4\xd0\xbc1\xd0\xb1 \xd0\xbc3\xd0\xb1\xd0\xb8 \xd0\xbc\xd0\xb12\xd0\xbb \xd0\xbc3\xd0\xb1\xd0\xbb\xd1\x8f 2\xd0\xbc3\xd0\xb22 2\xd0\xbc\xd0\xb32 3\xd0\xbc2\xd0\xb3\xd0\xbb 2\xd0\xbc1\xd0\xb4 \xd0\xbc\xd0\xb5\xd0\xb0\xd0\xbd2 \xd0\xbc\xd0\xb52\xd0\xb5\xd0\xb3 \xd0\xbc\xd0\xb52\xd0\xb5\xd0\xbb \xd0\xbc\xd0\xb52\xd0\xb61\xd0\xb0\xd1\x82 \xd0\xbc\xd0\xb51\xd0\xb7\xd0\xbe \xd0\xbc\xd0\xb52\xd1\x811\xd0\xba \xd0\xbc\xd0\xb52\xd1\x81\xd1\x821\xd1\x80 \xd0\xbc\xd0\xb5\xd1\x871\xd1\x82 2\xd0\xbc\xd0\xb6 2\xd0\xbc1\xd0\xb72 \xd0\xbc\xd0\xb82\xd0\xb3\xd1\x80\xd0\xb5 \xd0\xbc\xd0\xb81\xd0\xb7\xd0\xb2 2\xd0\xbc\xd0\xb8\xd0\xb7\xd0\xb4 \xd0\xbc\xd0\xb81\xd0\xb7\xd0\xbd \xd0\xbc\xd0\xb82\xd0\xba\xd1\x80 \xd0\xbc\xd0\xb8\xd0\xba1\xd1\x80\xd0\xb8 \xd0\xbc\xd0\xb82\xd0\xbe\xd0\xb7 \xd0\xbc\xd0\xb81\xd0\xbe\xd0\xbf\xd0\xb8 \xd0\xbc\xd0\xb82\xd0\xbe\xd1\x80 \xd0\xbc\xd0\xb81\xd1\x812\xd0\xbb 2\xd0\xbc1\xd0\xba2 3\xd0\xbc\xd0\xba\xd0\xbd 2\xd0\xbc1\xd0\xbb \xd0\xbc2\xd0\xbb\xd0\xb5\xd0\xb5 \xd0\xbc2\xd0\xbb\xd0\xb5\xd0\xbb 2\xd0\xbc\xd0\xbc 2\xd0\xbc1\xd0\xbd 4\xd0\xbc3\xd0\xbd\xd0\xb0 \xd0\xbc\xd0\xbd\xd0\xb51\xd0\xb4 3\xd0\xbc2\xd0\xbd\xd0\xb5\xd1\x88 4\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xb5 \xd0\xbc2\xd0\xbd\xd0\xbe\xd0\xb6 4\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xb9 4\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbc \xd0\xbc2\xd0\xbd\xd0\xbe\xd1\x80 4\xd0\xbc\xd0\xbd\xd0\xbe\xd1\x8e \xd0\xbc2\xd0\xbd\xd1\x83\xd1\x82 4\xd0\xbc3\xd0\xbd\xd1\x8b \xd0\xbc\xd0\xbe1\xd0\xb12 \xd0\xbc\xd0\xbe3\xd0\xb2\xd0\xbb 3\xd0\xbc\xd0\xbe\xd0\xb4 \xd0\xbc\xd0\xbe1\xd0\xb4\xd1\x80 \xd0\xbc\xd0\xbe2\xd0\xb6\xd0\xb6 \xd0\xbc\xd0\xbe1\xd0\xb7\xd0\xb2 \xd0\xbc\xd0\xbe1\xd0\xb7\xd1\x80 \xd0\xbc\xd0\xbe\xd0\xb8\xd1\x811\xd1\x82 \xd0\xbc\xd0\xbe2\xd0\xba3\xd0\xb2 \xd0\xbc\xd0\xbe3\xd0\xbc2 3\xd0\xbc\xd0\xbe\xd0\xbd 3\xd0\xbc\xd0\xbe\xd0\xbf \xd0\xbc\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbc\xd0\xbe\xd1\x811\xd0\xba\xd0\xb0 \xd0\xbc\xd0\xbe1\xd1\x81\xd0\xbc \xd0\xbc\xd0\xbe1\xd1\x81\xd0\xbd \xd0\xbc\xd0\xbe1\xd1\x812\xd0\xbf 3\xd0\xbc\xd0\xbe\xd1\x82\xd0\xb8 \xd0\xbc\xd0\xbe2\xd1\x821\xd1\x80 3\xd0\xbc\xd0\xbe\xd1\x84 2\xd0\xbc\xd0\xbf \xd0\xbc\xd0\xbf2\xd0\xbb \xd0\xbc1\xd1\x80\xd0\xb0\xd0\xb1 2\xd0\xbc\xd1\x80\xd0\xb8 2\xd0\xbc1\xd1\x80\xd0\xbe \xd0\xbc1\xd1\x80\xd1\x8b 2\xd0\xbc1\xd1\x81 \xd0\xbc\xd1\x812\xd0\xba \xd0\xbc\xd1\x812\xd0\xbd \xd0\xbc2\xd1\x811\xd0\xbe\xd1\x80 3\xd0\xbc2\xd1\x81\xd1\x82\xd0\xb8 2\xd0\xbc1\xd1\x82 \xd0\xbc\xd1\x831\xd1\x812\xd0\xba \xd0\xbc\xd1\x831\xd1\x814\xd0\xbb \xd0\xbc\xd1\x831\xd1\x81\xd1\x82 \xd0\xbc\xd1\x83\xd1\x821\xd1\x80 \xd0\xbc\xd1\x833\xd1\x82\xd1\x8c 2\xd0\xbc\xd1\x84 \xd0\xbc\xd1\x84\xd0\xb83 2\xd0\xbc1\xd1\x85 2\xd0\xbc\xd1\x86 \xd0\xbc2\xd1\x87\xd0\xb0\xd0\xb2 \xd0\xbc2\xd1\x87\xd0\xb0\xd0\xbb \xd0\xbc2\xd1\x87\xd0\xb8\xd1\x82 \xd0\xbc2\xd1\x87\xd0\xb8\xd1\x88 2\xd0\xbc\xd1\x882 2\xd0\xbc\xd1\x89 3\xd0\xbc2\xd1\x89\xd0\xb5 \xd0\xbc\xd1\x8b\xd0\xbc1 \xd0\xbc\xd1\x8b2\xd0\xbc\xd1\x80 \xd0\xbc\xd1\x8b2\xd1\x81 2\xd0\xbc\xd1\x8c_ 2\xd0\xbc\xd1\x8c\xd1\x81 \xd0\xbc\xd1\x8c\xd1\x8e1 2\xd0\xbc\xd1\x8d \xd0\xbc\xd1\x8d1\xd1\x80 \xd0\xbc2\xd1\x8e \xd0\xbc\xd1\x8f1\xd1\x80 \xd0\xbc\xd1\x8f1\xd1\x81\xd1\x82 1\xd0\xbd\xd0\xb0 \xd0\xbd\xd0\xb0\xd0\xb1\xd0\xb81\xd0\xbe \xd0\xbd\xd0\xb0\xd0\xb12\xd1\x80 \xd0\xbd\xd0\xb01\xd0\xb22\xd1\x80 \xd0\xbd\xd0\xb0\xd0\xb32\xd0\xbd \xd0\xbd\xd0\xb03\xd0\xb6\xd0\xb4 \xd0\xbd\xd0\xb01\xd0\xb72 \xd0\xbd\xd0\xb02\xd0\xb8\xd0\xbb \xd0\xbd\xd0\xb02\xd0\xb8\xd0\xbd \xd0\xbd\xd0\xb02\xd0\xb81\xd1\x812 4\xd0\xbd\xd0\xb0\xd0\xba\xd0\xba \xd0\xbd\xd0\xb03\xd0\xbc2\xd0\xbd \xd0\xbd\xd0\xb0\xd0\xbf2\xd0\xbb \xd0\xbd\xd0\xb01\xd1\x80\xd0\xb2\xd0\xb0 \xd0\xbd\xd0\xb01\xd1\x802\xd0\xb2\xd0\xb8 \xd0\xbd\xd0\xb01\xd1\x812 \xd0\xbd\xd0\xb01\xd1\x82\xd0\xb2 \xd0\xbd\xd0\xb01\xd1\x822\xd1\x80 \xd0\xbd1\xd0\xb02\xd1\x84\xd1\x80 \xd0\xbd\xd0\xb01\xd1\x852 2\xd0\xbd\xd0\xb0\xd1\x87 \xd0\xbd\xd0\xb03\xd1\x882\xd0\xbb 2\xd0\xbd\xd0\xb0\xd1\x89 \xd0\xbd\xd0\xb0\xd1\x8d1\xd1\x80 3\xd0\xbd\xd0\xb0\xd1\x8f 2\xd0\xbd1\xd0\xb12 2\xd0\xbd1\xd0\xb2 2\xd0\xbd\xd0\xb3 \xd0\xbd2\xd0\xb31\xd0\xb2 \xd0\xbd\xd0\xb3\xd0\xb82\xd0\xbe \xd0\xbd\xd0\xb34\xd0\xbb \xd0\xbd\xd0\xb3\xd0\xbe1\xd1\x81 \xd0\xbd\xd0\xb32\xd1\x80 2\xd0\xbd1\xd0\xb4 \xd0\xbd2\xd0\xb4\xd0\xb0\xd0\xba \xd0\xbd2\xd0\xb41\xd0\xb2 \xd0\xbd\xd0\xb4\xd0\xb53\xd0\xb7 \xd0\xbd\xd0\xb4\xd0\xb52\xd1\x81 \xd0\xbd\xd0\xb42\xd0\xb6 \xd0\xbd3\xd0\xb42\xd0\xb7 \xd0\xbd2\xd0\xb4\xd0\xbb \xd0\xbd\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb3 \xd0\xbd\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb6 \xd0\xbd\xd0\xb42\xd1\x80\xd0\xb5 \xd0\xbd\xd0\xb42\xd1\x80\xd0\xb8\xd0\xb0 \xd0\xbd2\xd0\xb4\xd1\x80\xd1\x8f \xd0\xbd\xd0\xb42\xd1\x81\xd0\xbf \xd0\xbd2\xd0\xb4\xd1\x86 1\xd0\xbd\xd0\xb5 \xd0\xbd\xd0\xb51\xd0\xb12 \xd0\xbd\xd0\xb51\xd0\xb22\xd0\xb4 2\xd0\xbd\xd0\xb5\xd0\xb2\xd0\xbd \xd0\xbd\xd0\xb53\xd0\xb2\xd0\xbd\xd1\x8f \xd0\xbd\xd0\xb5\xd0\xb32 3\xd0\xbd\xd0\xb5\xd0\xb4 \xd0\xbd\xd0\xb51\xd0\xb42\xd0\xbb \xd0\xbd\xd0\xb5\xd0\xb42\xd0\xbe \xd0\xbd\xd0\xb52\xd0\xb4\xd1\x80\xd0\xb0 \xd0\xbd\xd0\xb51\xd0\xb4\xd1\x80\xd0\xbe \xd0\xbd\xd0\xb53\xd0\xb4\xd1\x83 \xd0\xbd\xd0\xb53\xd0\xb5 \xd0\xbd\xd0\xb5\xd0\xb52\xd0\xb4 \xd0\xbd\xd0\xb53\xd0\xb62\xd0\xb4 \xd0\xbd\xd0\xb51\xd0\xb7\xd0\xb2 \xd0\xbd\xd0\xb51\xd0\xb72\xd0\xbb \xd0\xbd\xd0\xb51\xd0\xb7\xd0\xbd \xd0\xbd\xd0\xb51\xd0\xb7\xd0\xbe \xd0\xbd\xd0\xb51\xd0\xb7\xd1\x80 \xd0\xbd\xd0\xb5\xd0\xb82 \xd0\xbd\xd0\xb51\xd0\xba2\xd0\xb2 \xd0\xbd\xd0\xb51\xd0\xba\xd0\xbb \xd0\xbd\xd0\xb53\xd0\xbc2\xd0\xbd 3\xd0\xbd\xd0\xb51\xd0\xbe2 \xd0\xbd\xd0\xb52\xd0\xbe\xd0\xb4\xd0\xb0 \xd0\xbd\xd0\xb52\xd0\xbe\xd0\xbb \xd0\xbd\xd0\xb53\xd0\xbf2 \xd0\xbd\xd0\xb51\xd1\x802\xd0\xb6 \xd0\xbd\xd0\xb52\xd1\x801\xd0\xbe\xd1\x82 \xd0\xbd\xd0\xb5\xd1\x812\xd0\xba \xd0\xbd\xd0\xb53\xd1\x812\xd0\xbd \xd0\xbd\xd0\xb51\xd1\x812\xd0\xbf \xd0\xbd\xd0\xb5\xd1\x81\xd1\x822 \xd0\xbd\xd0\xb51\xd1\x812\xd1\x85 \xd0\xbd\xd0\xb51\xd1\x812\xd1\x87 \xd0\xbd\xd0\xb51\xd1\x822\xd0\xb2 \xd0\xbd\xd0\xb53\xd1\x822\xd0\xbb \xd0\xbd\xd0\xb51\xd1\x822\xd1\x80 3\xd0\xbd\xd0\xb5\xd1\x83 \xd0\xbd\xd0\xb52\xd1\x84\xd1\x80 \xd0\xbd\xd0\xb51\xd1\x85\xd1\x80 \xd0\xbd\xd0\xb53\xd1\x88\xd0\xba \xd0\xbd\xd0\xb5\xd1\x8f2 2\xd0\xbd1\xd0\xb72 \xd0\xbd\xd0\xb7\xd0\xbe1\xd1\x81 1\xd0\xbd\xd0\xb8 \xd0\xbd\xd0\xb83\xd0\xb12 \xd0\xbd\xd0\xb82\xd0\xb5\xd0\xbd 3\xd0\xbd\xd0\xb8\xd0\xb9 \xd0\xbd\xd0\xb82\xd0\xba\xd0\xbb \xd0\xbd\xd0\xb8\xd0\xbb\xd0\xb02 \xd0\xbd\xd0\xb82\xd0\xbb1\xd0\xb0\xd0\xbb \xd0\xbd\xd0\xb82\xd0\xbb1\xd0\xb0\xd0\xbc 2\xd0\xbd\xd0\xb8\xd0\xbd\xd1\x81\xd0\xbf 2\xd0\xbd1\xd0\xb8\xd0\xbd\xd1\x81\xd1\x82 \xd0\xbd\xd0\xb81\xd1\x81\xd0\xbb \xd0\xbd\xd0\xb8\xd1\x813\xd0\xbf \xd0\xbd\xd0\xb8\xd1\x81\xd1\x822\xd1\x80 \xd0\xbd\xd0\xb8\xd1\x833 \xd0\xbd\xd0\xb81\xd1\x85 3\xd0\xbd\xd0\xb8\xd1\x86 3\xd0\xbd\xd0\xb8\xd1\x89 2\xd0\xbd1\xd0\xba \xd0\xbd\xd0\xba2\xd0\xb2 \xd0\xbd\xd0\xba2\xd0\xbb \xd0\xbd\xd0\xba\xd0\xbe\xd0\xb12 \xd0\xbd\xd0\xba\xd0\xbe3\xd0\xbf2 \xd0\xbd2\xd0\xba1\xd1\x80\xd0\xbe \xd0\xbd\xd0\xba1\xd1\x81 \xd0\xbd1\xd0\xbb 2\xd0\xbd1\xd0\xbd \xd0\xbd\xd0\xbd\xd0\xbe3\xd0\xbf2 1\xd0\xbd\xd0\xbe \xd0\xbd\xd0\xbe\xd0\xb12 \xd0\xbd\xd0\xbe1\xd0\xb1\xd1\x80 \xd0\xbd\xd0\xbe2\xd0\xb2\xd0\xbb \xd0\xbd\xd0\xbe1\xd0\xb4\xd0\xb2 \xd0\xbd\xd0\xbe1\xd0\xb4\xd1\x80 \xd0\xbd\xd0\xbe2\xd0\xb5\xd1\x80 \xd0\xbd\xd0\xbe1\xd0\xb7\xd0\xb2 \xd0\xbd\xd0\xbe2\xd0\xb7\xd0\xb4 \xd0\xbd\xd0\xbe3\xd0\xb72\xd0\xbe \xd0\xbd\xd0\xbe1\xd0\xb7\xd1\x80 \xd0\xbd\xd0\xbe3\xd0\xba\xd0\xbd 3\xd0\xbd\xd0\xbe\xd0\xbc\xd0\xb5 \xd0\xbd\xd0\xbe\xd0\xbc3\xd1\x88 \xd0\xbd\xd0\xbe2\xd1\x80\xd0\xb2 \xd0\xbd\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbd\xd0\xbe1\xd1\x81\xd0\xba\xd0\xbb \xd0\xbd\xd0\xbe2\xd1\x81\xd0\xbb\xd0\xb8 \xd0\xbd\xd0\xbe1\xd1\x812\xd0\xbf \xd0\xbd\xd0\xbe2\xd1\x81\xd1\x87 2\xd0\xbd\xd0\xbe\xd1\x82\xd0\xb4 \xd0\xbd\xd0\xbe3\xd1\x842 \xd0\xbd\xd0\xbe\xd1\x8d2 \xd0\xbd3\xd0\xbf2 2\xd0\xbd1\xd1\x80\xd0\xb5 2\xd0\xbd1\xd1\x80\xd0\xb8 \xd0\xbd1\xd1\x80\xd0\xbe 2\xd0\xbd1\xd1\x81 \xd0\xbd2\xd1\x813\xd0\xb2 \xd0\xbd2\xd1\x81\xd0\xb3 \xd0\xbd\xd1\x812\xd0\xba\xd0\xb5 \xd0\xbd2\xd1\x81\xd0\xba\xd0\xbe\xd0\xbd \xd0\xbd2\xd1\x81\xd0\xbb \xd0\xbd3\xd1\x81\xd0\xbb\xd0\xb0 \xd0\xbd2\xd1\x813\xd0\xbc \xd0\xbd2\xd1\x81\xd0\xbd \xd0\xbd2\xd1\x811\xd0\xbe\xd0\xba \xd0\xbd3\xd1\x812\xd0\xbf\xd0\xb5 \xd0\xbd\xd1\x81\xd1\x822\xd1\x80 \xd0\xbd\xd1\x81\xd1\x832\xd1\x80 \xd0\xbd2\xd1\x813\xd1\x84 \xd0\xbd2\xd1\x81\xd1\x8a3 2\xd0\xbd1\xd1\x82 \xd0\xbd2\xd1\x821\xd0\xb2 \xd0\xbd\xd1\x82\xd0\xb81\xd0\xbe2\xd0\xba \xd0\xbd2\xd1\x82\xd0\xbc \xd0\xbd\xd1\x822\xd1\x80\xd0\xb0 \xd0\xbd2\xd1\x82\xd1\x801\xd0\xb02\xd0\xb3 \xd0\xbd\xd1\x82\xd1\x801\xd0\xb0\xd0\xb6 \xd0\xbd2\xd1\x82\xd1\x80\xd0\xb0\xd1\x80 \xd0\xbd\xd1\x82\xd1\x80\xd0\xb0\xd1\x812 \xd0\xbd\xd1\x822\xd1\x80\xd0\xb5 \xd0\xbd2\xd1\x82\xd1\x80\xd0\xb8\xd0\xb2 \xd0\xbd2\xd1\x82\xd1\x80\xd0\xbe\xd0\xba \xd0\xbd\xd1\x822\xd1\x80\xd1\x83 \xd0\xbd\xd1\x82\xd1\x801\xd1\x83\xd0\xb4 \xd0\xbd\xd1\x822\xd1\x80\xd1\x8b \xd0\xbd2\xd1\x821\xd1\x80\xd1\x8f 1\xd0\xbd\xd1\x83 \xd0\xbd\xd1\x83\xd1\x821\xd1\x80 \xd0\xbd\xd1\x831\xd1\x85 3\xd0\xbd\xd1\x83\xd1\x8e 2\xd0\xbd\xd1\x842 \xd0\xbd1\xd1\x85 \xd0\xbd\xd1\x85\xd0\xbe1 2\xd0\xbd\xd1\x86 2\xd0\xbd1\xd1\x87 \xd0\xbd2\xd1\x87\xd0\xbb 2\xd0\xbd\xd1\x88 \xd0\xbd\xd1\x882\xd1\x82 2\xd0\xbd\xd1\x89 1\xd0\xbd\xd1\x8b 3\xd0\xbd\xd1\x8b_ 2\xd0\xbd\xd1\x8c_ 1\xd0\xbd\xd1\x8c\xd0\xb5 1\xd0\xbd\xd1\x8c\xd0\xb8 2\xd0\xbd\xd1\x8c\xd0\xba 1\xd0\xbd\xd1\x8c\xd0\xbe 2\xd0\xbd\xd1\x8c\xd1\x81 2\xd0\xbd\xd1\x8c\xd1\x82 2\xd0\xbd\xd1\x8c\xd1\x87 1\xd0\xbd\xd1\x8c\xd1\x8e 1\xd0\xbd\xd1\x8c\xd1\x8f \xd0\xbd2\xd1\x8d 1\xd0\xbd2\xd1\x8e 2\xd0\xbd3\xd1\x8e2\xd1\x80 1\xd0\xbd\xd1\x8f \xd0\xbd\xd1\x8f1\xd0\xb2\xd0\xb8 2\xd0\xbe1\xd0\xb02 \xd0\xbe3\xd0\xb0\xd0\xb2 \xd0\xbe\xd0\xb0\xd0\xbf1 2\xd0\xbe\xd0\xb1\xd0\xb0 2\xd0\xbe\xd0\xb1\xd0\xb8\xd0\xbe \xd0\xbe\xd0\xb12\xd0\xbb\xd0\xb5\xd0\xb2 \xd0\xbe\xd0\xb12\xd0\xbb\xd0\xb5\xd0\xbc \xd0\xbe1\xd0\xb1\xd0\xbb\xd1\x8e 1\xd0\xbe\xd0\xb1\xd0\xbc \xd0\xbe\xd0\xb1\xd0\xbe1\xd0\xbb2\xd0\xb3 \xd0\xbe\xd0\xb1\xd0\xbe3\xd0\xbc2 \xd0\xbe\xd0\xb1\xd0\xbe2\xd1\x81 2\xd0\xbe\xd0\xb1\xd0\xbe\xd1\x82 \xd0\xbe\xd0\xb11\xd1\x80 \xd0\xbe2\xd0\xb1\xd1\x80\xd0\xb0_ \xd0\xbe1\xd0\xb1\xd1\x80\xd0\xb0\xd0\xb2 \xd0\xbe1\xd0\xb1\xd1\x80\xd0\xb0\xd0\xbd 1\xd0\xbe\xd0\xb1\xd1\x8a 2\xd0\xbe\xd0\xb1\xd1\x8c \xd0\xbe1\xd0\xb2 \xd0\xbe3\xd0\xb2\xd0\xbb\xd0\xb0 \xd0\xbe3\xd0\xb22\xd0\xbb\xd0\xbe \xd0\xbe\xd0\xb23\xd0\xbd\xd0\xbe \xd0\xbe3\xd0\xb22\xd0\xbd\xd1\x83\xd1\x88 \xd0\xbe2\xd0\xb21\xd1\x80\xd0\xb8 \xd0\xbe\xd0\xb22\xd1\x81\xd0\xb5 \xd0\xbe\xd0\xb23\xd1\x81\xd0\xba\xd0\xbe \xd0\xbe\xd0\xb22\xd1\x82 \xd0\xbe2\xd0\xb2\xd1\x85 \xd0\xbe\xd0\xb32 2\xd0\xbe3\xd0\xb3\xd0\xb5 \xd0\xbe\xd0\xb33\xd0\xbb\xd0\xb0_ \xd0\xbe\xd0\xb33\xd0\xbb\xd0\xb8_ \xd0\xbe\xd0\xb33\xd0\xbb\xd0\xbe_ \xd0\xbe3\xd0\xb3\xd1\x80\xd1\x8f 2\xd0\xbe\xd0\xb4\xd0\xb0\xd0\xbd \xd0\xbe\xd0\xb41\xd0\xb2\xd0\xbe\xd0\xb5 \xd0\xbe3\xd0\xb4\xd0\xb5_ 1\xd0\xbe2\xd0\xb4\xd0\xb5\xd1\x8f\xd0\xbb 2\xd0\xbe\xd0\xb4\xd0\xb83\xd0\xb0 2\xd0\xbe3\xd0\xb4\xd0\xb8\xd0\xbc \xd0\xbe\xd0\xb42\xd0\xbb\xd0\xb8\xd1\x82 \xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xbf\xd0\xb5 \xd0\xbe\xd0\xb4\xd0\xbe3\xd0\xbf\xd1\x80 \xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xbf\xd1\x8b \xd0\xbe2\xd0\xb4\xd0\xbe\xd1\x81\xd0\xb8 \xd0\xbe2\xd0\xb41\xd0\xbe\xd1\x82\xd1\x87 \xd0\xbe1\xd0\xb4\xd1\x80\xd0\xb0\xd0\xb3 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb6 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xb0\xd0\xb7 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xb0\xd0\xba \xd0\xbe1\xd0\xb4\xd1\x80\xd0\xb0\xd0\xbb \xd0\xbe\xd0\xb43\xd1\x80\xd0\xb5\xd0\xb1 \xd0\xbe1\xd0\xb4\xd1\x80\xd0\xbe\xd0\xb1 \xd0\xbe\xd0\xb41\xd1\x80\xd0\xbe\xd0\xb2 \xd0\xbe2\xd0\xb41\xd1\x832\xd1\x87 \xd0\xbe2\xd0\xb4\xd1\x8b\xd0\xbc\xd0\xb0 \xd0\xbe2\xd0\xb4\xd1\x8b\xd0\xbc\xd1\x83 \xd0\xbe2\xd0\xb4\xd1\x8b\xd0\xbd \xd0\xbe1\xd0\xb4\xd1\x8c \xd0\xbe2\xd0\xb4\xd1\x8c\xd0\xb1 \xd0\xbe1\xd0\xb5 \xd0\xbe\xd0\xb51\xd0\xb1 \xd0\xbe2\xd0\xb51\xd0\xb2\xd0\xbb \xd0\xbe\xd0\xb52\xd0\xb4 \xd0\xbe3\xd0\xb5\xd0\xb6\xd0\xb5\xd0\xba \xd0\xbe\xd0\xb52\xd0\xb6\xd0\xb8 \xd0\xbe\xd0\xb51\xd0\xbe \xd0\xbe\xd0\xb51\xd1\x812 \xd0\xbe\xd0\xb52\xd1\x81\xd1\x82 \xd0\xbe2\xd0\xb5\xd1\x82\xd0\xbe \xd0\xbe\xd0\xb52\xd1\x86 \xd0\xbe3\xd0\xb6\xd0\xb4\xd0\xb8 \xd0\xbe3\xd0\xb62\xd0\xb4\xd1\x83 \xd0\xbe\xd0\xb7\xd0\xb02\xd0\xb13\xd0\xb2 2\xd0\xbe\xd0\xb7\xd0\xb0\xd0\xb2 \xd0\xbe1\xd0\xb72\xd0\xb2\xd0\xb0 \xd0\xbe\xd0\xb72\xd0\xb2\xd0\xb5\xd0\xbd \xd0\xbe\xd0\xb72\xd0\xb2\xd0\xb8 \xd0\xbe1\xd0\xb72\xd0\xb2\xd1\x8f \xd0\xbe\xd0\xb72\xd0\xb3\xd0\xbb\xd0\xbe \xd0\xbe\xd0\xb72\xd0\xb4\xd0\xbe\xd1\x80 \xd0\xbe1\xd0\xb7\xd0\xb4\xd1\x80 \xd0\xbe\xd0\xb7\xd0\xb51\xd0\xbe \xd0\xbe\xd0\xb73\xd0\xbd\xd0\xbe \xd0\xbe1\xd0\xb7\xd0\xbe \xd0\xbe2\xd0\xb71\xd0\xbe\xd0\xb1 2\xd0\xbe\xd0\xb7\xd0\xbe\xd0\xbd \xd0\xbe2\xd0\xb7\xd0\xbe\xd0\xbf \xd0\xbe\xd0\xb7\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbe\xd0\xb71\xd1\x83\xd0\xb3 \xd0\xbe2\xd0\xb7\xd1\x8b\xd0\xbc \xd0\xbe3\xd0\xb7\xd1\x8b\xd1\x81 \xd0\xbe3\xd0\xb8 \xd0\xbe\xd0\xb82\xd0\xb31 \xd0\xbe\xd0\xb8\xd0\xb32\xd0\xbd \xd0\xbe\xd0\xb8\xd0\xb53 \xd0\xbe\xd0\xb82\xd0\xb7 \xd0\xbe\xd0\xb82\xd0\xbc \xd0\xbe\xd0\xb83\xd0\xbc\xd0\xbe \xd0\xbe\xd0\xb82\xd0\xbe 2\xd0\xbe\xd0\xb9 \xd0\xbe\xd0\xb9\xd1\x812 \xd0\xbe1\xd0\xba 2\xd0\xbe3\xd0\xba\xd0\xb0\xd0\xbd \xd0\xbe\xd0\xba2\xd0\xb2 2\xd0\xbe\xd0\xba2\xd0\xbb \xd0\xbe3\xd0\xba\xd0\xbb\xd1\x8e \xd0\xbe\xd0\xba\xd0\xbe1\xd0\xb1 2\xd0\xbe3\xd0\xba\xd0\xbe\xd0\xbb \xd0\xbe\xd0\xba\xd0\xbe3\xd0\xbf2\xd0\xbb \xd0\xbe\xd0\xba1\xd1\x81\xd0\xba 1\xd0\xbe\xd0\xba\xd1\x82 2\xd0\xbe\xd0\xba\xd1\x82\xd0\xb8 2\xd0\xbe\xd0\xba\xd1\x83\xd0\xbc \xd0\xbe3\xd0\xbb\xd0\xb0 \xd0\xbe\xd0\xbb2\xd0\xb3\xd0\xb0\xd0\xbd \xd0\xbe1\xd0\xbb\xd0\xb5 1\xd0\xbe\xd0\xbb\xd0\xb8\xd0\xbc\xd0\xbf \xd0\xbe3\xd0\xbb\xd0\xbe \xd0\xbe1\xd0\xbb\xd1\x83 \xd0\xbe\xd0\xbb\xd1\x833\xd0\xb42 \xd0\xbe1\xd0\xbb\xd1\x8b \xd0\xbe1\xd0\xbb\xd1\x8e \xd0\xbe3\xd0\xbb\xd1\x8f \xd0\xbe3\xd0\xbc\xd0\xb0 \xd0\xbe\xd0\xbc2\xd0\xb1\xd0\xbb 2\xd0\xbe\xd0\xbc\xd0\xb5 \xd0\xbe3\xd0\xbc2\xd0\xbd\xd0\xb5\xd0\xbc \xd0\xbe3\xd0\xbc2\xd0\xbd\xd0\xb5\xd1\x82 \xd0\xbe3\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xb6 \xd0\xbe\xd0\xbc1\xd1\x80\xd0\xb8 \xd0\xbe\xd0\xbc2\xd1\x87 \xd0\xbe\xd0\xbc2\xd1\x88\xd0\xb5 \xd0\xbe2\xd0\xbc\xd1\x8c \xd0\xbe3\xd0\xbc\xd1\x8c\xd1\x8f \xd0\xbe3\xd0\xbd\xd0\xb0 \xd0\xbe\xd0\xbd\xd0\xb42 \xd0\xbe\xd0\xbd\xd0\xb53\xd1\x842 \xd0\xbe\xd0\xbd\xd0\xbe1\xd0\xb1 \xd0\xbe1\xd0\xbd\xd1\x80 \xd0\xbe\xd0\xbd\xd1\x812 \xd0\xbe\xd0\xbd2\xd1\x82\xd1\x80\xd1\x83 \xd0\xbe1\xd0\xbe2 \xd0\xbe2\xd0\xbe\xd0\xbb \xd0\xbe\xd0\xbe3\xd0\xbf\xd1\x81 \xd0\xbe\xd0\xbe\xd1\x813\xd0\xbc \xd0\xbe\xd0\xbe\xd1\x81\xd1\x821\xd1\x80 \xd0\xbe2\xd0\xbe\xd1\x82\xd0\xb8 \xd0\xbe2\xd0\xbe\xd1\x84 \xd0\xbe3\xd0\xbf\xd0\xb0\xd0\xba \xd0\xbe3\xd0\xbf\xd0\xb0\xd1\x80 \xd0\xbe2\xd0\xbf\xd0\xbb\xd0\xb5_ \xd0\xbe2\xd0\xbf1\xd0\xbb\xd0\xb5\xd0\xb9 \xd0\xbe2\xd0\xbf\xd0\xbb\xd0\xb8 \xd0\xbe\xd0\xbf2\xd0\xbb\xd0\xb8\xd1\x82 \xd0\xbe\xd0\xbf2\xd0\xbb\xd0\xbe \xd0\xbe\xd0\xbf3\xd0\xbb\xd1\x8e_ \xd0\xbe2\xd0\xbf\xd0\xbb\xd1\x8f \xd0\xbe3\xd0\xbf\xd0\xbb\xd1\x8f\xd1\x81 \xd0\xbe\xd0\xbf\xd0\xbe4\xd0\xb2\xd1\x81 \xd0\xbe\xd0\xbf\xd0\xbe\xd0\xb72\xd0\xbd \xd0\xbe\xd0\xbf\xd0\xbe2\xd1\x883\xd0\xbb \xd0\xbe\xd0\xbf2\xd1\x80\xd0\xb8 \xd0\xbe3\xd0\xbf2\xd1\x82\xd0\xb5 \xd0\xbe\xd0\xbf2\xd1\x82\xd0\xbe \xd0\xbe1\xd1\x80\xd0\xb0 \xd0\xbe\xd1\x80\xd0\xb02\xd1\x813 \xd0\xbe\xd1\x802\xd0\xb13\xd0\xbb \xd0\xbe1\xd1\x802\xd0\xb2 \xd0\xbe1\xd1\x80\xd0\xb5 2\xd0\xbe3\xd1\x80\xd0\xb5\xd0\xb3 \xd0\xbe\xd1\x80\xd0\xb52\xd1\x81\xd0\xba \xd0\xbe1\xd1\x80\xd0\xb8 \xd0\xbe\xd1\x801\xd0\xb8\xd1\x81\xd0\xbf \xd0\xbe1\xd1\x80\xd0\xbe \xd0\xbe\xd1\x80\xd0\xbe2\xd1\x813\xd0\xbb \xd0\xbe\xd1\x802\xd1\x82\xd1\x80 \xd0\xbe1\xd1\x80\xd1\x83\xd0\xb5 \xd0\xbe1\xd1\x80\xd1\x83\xd0\xba \xd0\xbe\xd1\x801\xd1\x83\xd0\xba\xd1\x81 \xd0\xbe1\xd1\x80\xd1\x83\xd1\x81 2\xd0\xbe\xd1\x80\xd1\x86 \xd0\xbe1\xd1\x80\xd1\x8b \xd0\xbe1\xd1\x80\xd1\x8e \xd0\xbe1\xd1\x80\xd1\x8f \xd0\xbe3\xd1\x81\xd0\xb0\xd0\xb4 \xd0\xbe\xd1\x81\xd0\xb03\xd0\xb62 \xd0\xbe\xd1\x812\xd0\xb1 \xd0\xbe2\xd1\x813\xd0\xb1\xd0\xb0 \xd0\xbe2\xd1\x811\xd0\xba\xd0\xb0_ \xd0\xbe\xd1\x813\xd0\xba\xd0\xb0\xd1\x80 \xd0\xbe\xd1\x81\xd0\xba1\xd0\xb2\xd0\xbe \xd0\xbe2\xd1\x81\xd0\xba\xd0\xb5 \xd0\xbe\xd1\x811\xd0\xba\xd0\xb8 \xd0\xbe2\xd1\x81\xd0\xba\xd0\xb8_ \xd0\xbe2\xd1\x81\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xbe\xd1\x811\xd0\xba\xd0\xbe\xd0\xb9 \xd0\xbe\xd1\x811\xd0\xba\xd0\xbe\xd0\xbc \xd0\xbe1\xd1\x812\xd0\xba\xd0\xbe\xd0\xbf \xd0\xbe\xd1\x811\xd0\xba\xd0\xbe\xd1\x8e \xd0\xbe2\xd1\x811\xd0\xba\xd1\x83_ \xd0\xbe\xd1\x811\xd0\xba\xd1\x83\xd1\x8e \xd0\xbe1\xd1\x812\xd0\xbb \xd0\xbe\xd1\x813\xd0\xbb\xd0\xb5\xd0\xb9 \xd0\xbe\xd1\x813\xd0\xbb\xd0\xbe\xd0\xb3 \xd0\xbe\xd1\x813\xd0\xbb\xd1\x8b\xd1\x85 \xd0\xbe\xd1\x813\xd0\xbc\xd0\xb8 \xd0\xbe\xd1\x813\xd0\xbc\xd0\xbe\xd1\x81 \xd0\xbe1\xd1\x812\xd0\xbd\xd0\xb8\xd0\xbc \xd0\xbe\xd1\x812\xd0\xbd\xd1\x8f\xd0\xbb \xd0\xbe\xd1\x812\xd0\xbf\xd0\xb0\xd1\x81 \xd0\xbe1\xd1\x812\xd0\xbf\xd1\x83 \xd0\xbe\xd1\x812\xd0\xbf\xd1\x8f \xd0\xbe\xd1\x812\xd1\x81\xd0\xb2 \xd0\xbe\xd1\x812\xd1\x813\xd0\xbc \xd0\xbe1\xd1\x81\xd1\x82 \xd0\xbe\xd1\x812\xd1\x82\xd0\xb0 \xd0\xbe3\xd1\x81\xd1\x82\xd1\x80\xd0\xb0 \xd0\xbe2\xd1\x81\xd1\x83\xd1\x87 2\xd0\xbe\xd1\x81\xd1\x85 \xd0\xbe\xd1\x812\xd1\x86\xd0\xb5\xd0\xbd \xd0\xbe1\xd1\x812\xd1\x87 \xd0\xbe1\xd1\x812\xd1\x88\xd0\xb8\xd0\xb2 \xd0\xbe1\xd1\x82 \xd0\xbe\xd1\x82\xd0\xb22 \xd0\xbe\xd1\x823\xd0\xb2\xd0\xb0 \xd0\xbe\xd1\x821\xd0\xb2\xd0\xb5 \xd0\xbe\xd1\x821\xd0\xb2\xd0\xb8 \xd0\xbe\xd1\x821\xd0\xb2\xd0\xbb 1\xd0\xbe\xd1\x82\xd0\xb3 1\xd0\xbe\xd1\x82\xd0\xb4 2\xd0\xbe3\xd1\x82\xd0\xb5\xd0\xba \xd0\xbe3\xd1\x82\xd0\xb5\xd1\x80 2\xd0\xbe3\xd1\x82\xd0\xb5\xd1\x85 \xd0\xbe3\xd1\x82\xd0\xb8 \xd0\xbe3\xd1\x82\xd0\xba\xd0\xb0\xd0\xbb \xd0\xbe2\xd1\x82\xd0\xbc \xd0\xbe\xd1\x821\xd1\x80\xd0\xb0\xd0\xb1 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb0\xd0\xb4 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb0\xd0\xb7 \xd0\xbe\xd1\x82\xd1\x80\xd0\xb02\xd1\x81 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd0\xb6 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd0\xba \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd1\x87 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb5\xd1\x88 \xd0\xbe\xd1\x821\xd1\x80\xd0\xb8 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd0\xb4 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd0\xb5 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd0\xba \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd1\x81 \xd0\xbe\xd1\x821\xd1\x80\xd0\xbe\xd1\x87 \xd0\xbe\xd1\x821\xd1\x80\xd1\x83\xd0\xb3 \xd0\xbe\xd1\x823\xd1\x81\xd0\xbc \xd0\xbe\xd1\x82\xd1\x832\xd0\xb0 \xd0\xbe\xd1\x821\xd1\x832\xd1\x87 1\xd0\xbe\xd1\x82\xd1\x85 \xd0\xbe3\xd1\x82\xd1\x8c\xd1\x8e \xd0\xbe3\xd1\x82\xd1\x8c\xd1\x8f \xd0\xbe1\xd1\x832 \xd0\xbe\xd1\x83\xd0\xbf2 \xd0\xbe\xd1\x83\xd1\x812\xd0\xba \xd0\xbe\xd1\x833\xd1\x82\xd0\xb0 \xd0\xbe\xd1\x833\xd1\x82\xd0\xbe 2\xd0\xbe\xd1\x84\xd0\xb0\xd1\x88 \xd0\xbe3\xd1\x84\xd0\xb5 2\xd0\xbe\xd1\x84\xd0\xb8\xd1\x82 2\xd0\xbe\xd1\x84\xd0\xbe\xd0\xbd \xd0\xbe2\xd1\x84\xd0\xbe\xd1\x80\xd0\xb8 2\xd0\xbe\xd1\x84\xd0\xbe\xd1\x82 \xd0\xbe2\xd1\x84\xd1\x80\xd0\xb8 2\xd0\xbe\xd1\x85\xd0\xb8 \xd0\xbe\xd1\x851\xd0\xbb\xd1\x8b \xd0\xbe2\xd1\x85\xd0\xbb\xd1\x8f \xd0\xbe\xd1\x852\xd0\xbc\xd0\xb5 2\xd0\xbe\xd1\x85\xd0\xbe\xd1\x80 \xd0\xbe1\xd1\x85\xd1\x80 \xd0\xbe1\xd1\x85\xd1\x83 \xd0\xbe2\xd1\x86\xd0\xbe \xd0\xbe\xd1\x87\xd0\xb01\xd1\x81 \xd0\xbe\xd1\x872\xd0\xbb \xd0\xbe\xd1\x871\xd0\xbb\xd0\xb5 \xd0\xbe3\xd1\x87\xd0\xbb\xd0\xb8 \xd0\xbe1\xd1\x87\xd1\x82 \xd0\xbe2\xd1\x871\xd1\x82\xd0\xbe \xd0\xbe\xd1\x883\xd0\xb2\xd0\xb0 \xd0\xbe\xd1\x882\xd0\xbb\xd0\xb0 \xd0\xbe\xd1\x88\xd0\xbf\xd0\xb02\xd0\xba3 \xd0\xbe\xd1\x882\xd1\x82 \xd0\xbe\xd1\x8d1\xd1\x82\xd0\xb8 2\xd0\xbe\xd1\x8e \xd0\xbe1\xd1\x8f \xd0\xbe\xd1\x8f2\xd0\xb2 \xd0\xbe\xd1\x8f2\xd0\xb4 \xd0\xbe\xd1\x8f2\xd0\xb7 \xd0\xbe\xd1\x8f2\xd1\x80\xd0\xb8 1\xd0\xbf \xd0\xbf\xd0\xb0\xd0\xb2\xd0\xb83 \xd0\xbf\xd0\xb0\xd0\xb23\xd0\xbb \xd0\xbf\xd0\xb02\xd0\xb2\xd1\x8c \xd0\xbf\xd0\xb02\xd0\xb4\xd1\x80 \xd0\xbf\xd0\xb02\xd0\xb5\xd0\xbd \xd0\xbf\xd0\xb01\xd0\xb7\xd0\xbe \xd0\xbf\xd0\xb0\xd1\x811\xd0\xbb \xd0\xbf\xd0\xb0\xd1\x811\xd1\x82\xd0\xb0 \xd0\xbf\xd0\xb01\xd1\x81\xd1\x82\xd0\xb5 \xd0\xbf\xd0\xb0\xd1\x811\xd1\x82\xd0\xbe \xd0\xbf\xd0\xb0\xd1\x811\xd1\x82\xd1\x83 \xd0\xbf\xd0\xb02\xd1\x811\xd1\x82\xd1\x8b \xd0\xbf\xd0\xb01\xd1\x82\xd1\x80\xd0\xbe \xd0\xbf\xd0\xb02\xd1\x83\xd0\xbd \xd0\xbf\xd0\xb03\xd1\x84 \xd0\xbf\xd0\xb01\xd1\x85\xd1\x83 \xd0\xbf\xd0\xb02\xd1\x88\xd1\x82 2\xd0\xbf1\xd0\xb22 2\xd0\xbf1\xd0\xb4 \xd0\xbf\xd0\xb51 \xd0\xbf\xd0\xb52\xd0\xb4\xd0\xb2 \xd0\xbf\xd0\xb52\xd0\xb41\xd0\xb8\xd0\xbd \xd0\xbf\xd0\xb52\xd0\xb7 \xd0\xbf\xd0\xb53\xd0\xb7\xd0\xb0 \xd0\xbf\xd0\xb53\xd0\xb7\xd0\xbe \xd0\xbf\xd0\xb52\xd0\xba1\xd0\xbb\xd0\xb0 \xd0\xbf\xd0\xb52\xd0\xbb\xd1\x8c \xd0\xbf\xd0\xb54\xd0\xbf\xd0\xbb \xd0\xbf\xd0\xb5\xd1\x80\xd0\xb81\xd0\xbe \xd0\xbf\xd0\xb52\xd1\x811\xd0\xba \xd0\xbf\xd0\xb52\xd1\x81\xd0\xbd \xd0\xbf\xd0\xb52\xd1\x81\xd1\x821\xd1\x80 \xd0\xbf\xd0\xb52\xd1\x81\xd1\x86 \xd0\xbf\xd0\xb52\xd1\x81\xd1\x87 \xd0\xbf\xd0\xb52\xd1\x82\xd1\x80 \xd0\xbf\xd0\xb52\xd1\x88\xd1\x82 \xd0\xbf\xd0\xb8\xd0\xb0\xd1\x81\xd1\x821 \xd0\xbf\xd0\xb82\xd0\xb63\xd0\xbc \xd0\xbf\xd0\xb82\xd0\xba1\xd1\x80 3\xd0\xbf\xd0\xb8\xd0\xbd\xd0\xba 3\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8f 4\xd0\xbf3\xd0\xba 2\xd0\xbf\xd0\xbb_ 4\xd0\xbf\xd0\xbb\xd0\xb0_ \xd0\xbf\xd0\xbb\xd0\xb01\xd1\x81 \xd0\xbf1\xd0\xbb\xd0\xb5\xd0\xbc_ \xd0\xbf1\xd0\xbb\xd0\xb5\xd0\xbc\xd1\x81 2\xd0\xbf\xd0\xbb\xd0\xb5\xd0\xbd \xd0\xbf2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xba \xd0\xbf1\xd0\xbb\xd0\xb52\xd0\xbe \xd0\xbf\xd0\xbb\xd0\xb5\xd1\x811\xd0\xba \xd0\xbf1\xd0\xbb\xd0\xb5\xd1\x8e 2\xd0\xbf\xd0\xbb\xd0\xb8\xd0\xb2 3\xd0\xbf2\xd0\xbb\xd0\xb8\xd0\xba 2\xd0\xbf\xd0\xbb\xd0\xbe_ 2\xd0\xbf\xd0\xbb\xd0\xbe\xd0\xb2 2\xd0\xbf\xd0\xbb\xd0\xbe\xd0\xb3 2\xd0\xbf\xd0\xbb\xd1\x8b\xd0\xb9 2\xd0\xbf\xd0\xbb\xd1\x8b\xd0\xbc \xd0\xbf1\xd0\xbb\xd1\x8b\xd0\xbd \xd0\xbf1\xd0\xbb\xd1\x8b\xd1\x85 2\xd0\xbf\xd0\xbb\xd1\x8e_ \xd0\xbf1\xd0\xbb\xd1\x8e\xd1\x82 \xd0\xbf2\xd0\xbb\xd1\x8f\xd1\x81 \xd0\xbf2\xd0\xbb\xd1\x8f\xd1\x88 2\xd0\xbf1\xd0\xbd \xd0\xbf3\xd0\xbd\xd0\xb0 \xd0\xbf3\xd0\xbd\xd0\xbe1 \xd0\xbf3\xd0\xbd\xd1\x8b \xd0\xbf\xd0\xbe1\xd0\xb12 \xd0\xbf\xd0\xbe3\xd0\xb2\xd0\xbb \xd0\xbf\xd0\xbe3\xd0\xb22\xd1\x81 \xd0\xbf\xd0\xbe\xd0\xb41\xd0\xb2\xd0\xbe \xd0\xbf\xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xba \xd0\xbf\xd0\xbe\xd0\xb4\xd0\xbe3\xd0\xbc2 \xd0\xbf\xd0\xbe\xd0\xb52\xd0\xbb \xd0\xbf\xd0\xbe\xd0\xb52\xd1\x85 \xd0\xbf\xd0\xbe1\xd0\xb7\xd0\xb2\xd0\xb5 \xd0\xbf\xd0\xbe1\xd0\xb7\xd0\xb4\xd0\xbe \xd0\xbf\xd0\xbe1\xd0\xb72\xd0\xbb \xd0\xbf\xd0\xbe1\xd0\xb7\xd0\xbd \xd0\xbf\xd0\xbe\xd0\xb82\xd1\x89 3\xd0\xbf\xd0\xbe\xd0\xb9 3\xd0\xbf\xd0\xbe\xd0\xbb\xd0\xba \xd0\xbf\xd0\xbe3\xd0\xbc\xd0\xbd\xd0\xbe \xd0\xbf\xd0\xbe3\xd0\xbc\xd0\xbd\xd1\x83 3\xd0\xbf\xd0\xbe3\xd0\xbf2 \xd0\xbf1\xd0\xbe\xd1\x80\xd0\xb3 \xd0\xbf\xd0\xbe\xd1\x802\xd0\xb6 \xd0\xbf\xd0\xbe1\xd1\x80\xd1\x83 \xd0\xbf\xd0\xbe1\xd1\x814 3\xd0\xbf\xd0\xbe\xd1\x81\xd0\xbb \xd0\xbf\xd0\xbe3\xd1\x81\xd1\x81 \xd0\xbf\xd0\xbe\xd1\x822\xd0\xb2 \xd0\xbf\xd0\xbe\xd1\x822\xd1\x80 \xd0\xbf\xd0\xbe1\xd1\x852 \xd0\xbf\xd0\xbe2\xd1\x88\xd0\xbb\xd0\xbe \xd0\xbf\xd0\xbe2\xd1\x88\xd0\xbb\xd1\x8b \xd0\xbf\xd0\xbe2\xd1\x88\xd0\xbb\xd1\x8f \xd0\xbf\xd0\xbe\xd1\x8d3\xd0\xbc 2\xd0\xbf\xd0\xbf2 \xd0\xbf\xd0\xbf\xd0\xbe1\xd0\xb4 2\xd0\xbf\xd1\x80_ 3\xd0\xbf\xd1\x80\xd0\xb5\xd0\xb2 \xd0\xbf\xd1\x80\xd0\xb51\xd0\xb7 \xd0\xbf\xd1\x80\xd0\xb5\xd0\xb92 \xd0\xbf\xd1\x80\xd0\xb51\xd0\xbb \xd0\xbf\xd1\x80\xd0\xb51\xd0\xbe\xd0\xb3 3\xd0\xbf\xd1\x80\xd0\xb5\xd1\x82 \xd0\xbf\xd1\x80\xd0\xb81 \xd0\xbf\xd1\x80\xd0\xb83\xd0\xb2 \xd0\xbf\xd1\x80\xd0\xb8\xd0\xb32 \xd0\xbf\xd1\x80\xd0\xb83\xd0\xb42 \xd0\xbf\xd1\x80\xd0\xb83\xd0\xba \xd0\xbf\xd1\x80\xd0\xb83\xd0\xbb \xd0\xbf\xd1\x80\xd0\xb8\xd0\xbb\xd1\x8c2 \xd0\xbf\xd1\x80\xd0\xb8\xd0\xbf2 \xd0\xbf2\xd1\x80\xd0\xb8\xd1\x86 \xd0\xbf\xd1\x80\xd0\xbe1\xd0\xb1\xd0\xbb \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb42\xd0\xbb \xd0\xbf\xd1\x80\xd0\xbe3\xd0\xb62 \xd0\xbf\xd1\x80\xd0\xbe1\xd0\xb72 \xd0\xbf1\xd1\x80\xd0\xbe\xd0\xb7\xd0\xbe 3\xd0\xbf\xd1\x80\xd0\xbe\xd0\xb8 \xd0\xbf\xd1\x80\xd0\xbe3\xd0\xbf \xd0\xbf\xd1\x80\xd0\xbe\xd1\x84\xd0\xbe2 2\xd0\xbf\xd1\x80\xd1\x81 \xd0\xbf2\xd1\x80\xd1\x83 2\xd0\xbf1\xd1\x812 3\xd0\xbf2\xd1\x81\xd0\xb0\xd0\xbb \xd0\xbf3\xd1\x81\xd0\xb8\xd0\xbd 3\xd0\xbf2\xd1\x81\xd0\xb8\xd1\x85 \xd0\xbf3\xd1\x81\xd0\xbe 2\xd0\xbf1\xd1\x82 \xd0\xbf2\xd1\x823\xd0\xb2 3\xd0\xbf2\xd1\x82\xd0\xb8\xd1\x85 \xd0\xbf3\xd1\x82\xd1\x83 3\xd0\xbf\xd1\x83\xd0\xb1 \xd0\xbf\xd1\x83\xd0\xb33\xd0\xbd \xd0\xbf\xd1\x83\xd1\x811\xd0\xba\xd1\x83 \xd0\xbf\xd1\x831\xd1\x81\xd1\x82 \xd0\xbf\xd1\x833\xd1\x82\xd1\x8c 2\xd0\xbf\xd1\x842 \xd0\xbf\xd1\x852 2\xd0\xbf\xd1\x86 4\xd0\xbf3\xd1\x87 2\xd0\xbf\xd1\x88 2\xd0\xbf\xd1\x89 2\xd0\xbf\xd1\x8c_ 2\xd0\xbf\xd1\x8c\xd1\x82 \xd0\xbf\xd1\x8d1\xd1\x80\xd0\xb0 \xd0\xbf2\xd1\x8e1 1\xd1\x80\xd0\xb0_ \xd1\x80\xd0\xb0\xd0\xb02 \xd1\x80\xd0\xb02\xd0\xb1\xd0\xbb 1\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe \xd1\x80\xd0\xb02\xd0\xb11\xd1\x80 1\xd1\x80\xd0\xb0\xd0\xb2\xd0\xbd\xd1\x8f \xd1\x80\xd0\xb02\xd0\xb3\xd0\xb2 \xd1\x80\xd0\xb02\xd0\xb3\xd0\xbb \xd1\x80\xd0\xb0\xd0\xb42\xd0\xb6 \xd1\x80\xd0\xb0\xd0\xb4\xd0\xbe1\xd0\xb12 \xd1\x80\xd0\xb02\xd0\xb4\xd1\x86 \xd1\x80\xd0\xb02\xd0\xb6\xd1\x83\xd1\x80 \xd1\x80\xd0\xb02\xd0\xb7\xd0\xb8\xd0\xb9 \xd1\x80\xd0\xb02\xd0\xb7\xd1\x83\xd0\xb1 \xd1\x80\xd0\xb0\xd0\xba2\xd0\xb2 1\xd1\x80\xd0\xb0\xd0\xba\xd0\xb8\xd0\xb7 \xd1\x80\xd0\xb02\xd0\xba3\xd0\xbb 1\xd1\x80\xd0\xb0\xd0\xbb\xd0\xb3 1\xd1\x80\xd0\xb0\xd0\xbc\xd0\xba 1\xd1\x80\xd0\xb0\xd0\xbc\xd0\xbd \xd1\x80\xd0\xb02\xd0\xbd\xd0\xbe\xd1\x85 \xd1\x80\xd0\xb0\xd0\xbd2\xd1\x81\xd1\x86 \xd1\x80\xd0\xb02\xd0\xbf1\xd0\xbb \xd1\x80\xd0\xb0\xd1\x813\xd0\xba2 1\xd1\x80\xd0\xb0\xd1\x81\xd0\xbb \xd1\x80\xd0\xb0\xd1\x813\xd0\xbf \xd1\x80\xd0\xb0\xd1\x811\xd1\x82 1\xd1\x80\xd0\xb0\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb0\xd1\x813\xd1\x822\xd0\xbb \xd1\x80\xd0\xb02\xd1\x82\xd0\xb0\xd0\xba \xd1\x80\xd0\xb0\xd1\x821\xd0\xb2 \xd1\x80\xd0\xb01\xd1\x822\xd1\x80 2\xd1\x80\xd0\xb0\xd1\x85\xd0\xb8 1\xd1\x80\xd0\xb0\xd1\x89\xd0\xb8 1\xd1\x80\xd0\xb0\xd1\x8e 1\xd1\x80\xd0\xb0\xd1\x8f 2\xd1\x80\xd0\xb0\xd1\x8f\xd1\x82 2\xd1\x801\xd0\xb1 \xd1\x80\xd0\xb12\xd0\xbb\xd0\xb0 \xd1\x802\xd0\xb1\xd0\xbb\xd0\xb5 \xd1\x80\xd0\xb12\xd0\xbb\xd0\xbe \xd1\x80\xd0\xb12\xd0\xbb\xd1\x8e \xd1\x80\xd0\xb1\xd0\xbe3\xd1\x81 1\xd1\x802\xd0\xb2\xd0\xb0\xd0\xb2 \xd1\x803\xd0\xb2\xd0\xb0\xd0\xba \xd1\x803\xd0\xb2\xd0\xb0\xd1\x80 \xd1\x803\xd0\xb2\xd0\xb0\xd1\x82\xd0\xb0 \xd1\x803\xd0\xb2\xd0\xb5\xd0\xb6 \xd1\x802\xd0\xb2\xd0\xb5\xd0\xbe 1\xd1\x80\xd0\xb2\xd0\xb5\xd1\x82 \xd1\x801\xd0\xb2\xd0\xb8 \xd1\x803\xd0\xb2\xd0\xb8\xd0\xbd \xd1\x802\xd0\xb2\xd0\xb8\xd1\x82 \xd1\x801\xd0\xb2\xd0\xbe \xd1\x80\xd0\xb2\xd0\xbe1\xd0\xb72\xd0\xb4 \xd1\x801\xd0\xb2\xd1\x8c 2\xd1\x80\xd0\xb3 \xd1\x802\xd0\xb3\xd0\xb2 \xd1\x802\xd0\xb31\xd0\xbb \xd1\x802\xd0\xb3\xd0\xbd \xd1\x80\xd0\xb32\xd1\x80 2\xd1\x801\xd0\xb4 \xd1\x80\xd0\xb4\xd0\xb01\xd1\x81 \xd1\x802\xd0\xb41\xd0\xb2 \xd1\x80\xd0\xb42\xd0\xb6 \xd1\x80\xd0\xb4\xd0\xb82\xd0\xb0 \xd1\x802\xd0\xb4\xd0\xbb \xd1\x80\xd0\xb4\xd0\xbe\xd1\x812 \xd1\x802\xd0\xb4\xd1\x86 1\xd1\x80\xd0\xb5_ \xd1\x80\xd0\xb51\xd0\xb2\xd1\x80 \xd1\x80\xd0\xb5\xd0\xb32\xd0\xbb\xd1\x8f \xd1\x80\xd0\xb5\xd0\xb32\xd0\xbd \xd1\x80\xd0\xb52\xd0\xb41\xd0\xbe2\xd0\xbf \xd1\x80\xd0\xb52\xd0\xb4\xd0\xbe\xd1\x81 \xd1\x80\xd0\xb5\xd0\xb52\xd0\xb2 \xd1\x80\xd0\xb5\xd0\xb52\xd0\xb4 \xd1\x80\xd0\xb5\xd0\xb52\xd0\xbb \xd1\x80\xd0\xb53\xd0\xb62\xd0\xb4 1\xd1\x80\xd0\xb5\xd0\xb7\xd0\xba \xd1\x80\xd0\xb51\xd0\xb72\xd0\xbb \xd1\x80\xd0\xb51\xd0\xb7\xd0\xbd\xd0\xb0 1\xd1\x80\xd0\xb51\xd0\xb7\xd0\xbe \xd1\x80\xd0\xb51\xd0\xb7\xd1\x80 \xd1\x80\xd0\xb5\xd0\xb72\xd1\x83 1\xd1\x80\xd0\xb5\xd0\xb9\xd1\x88 \xd1\x80\xd0\xb51\xd0\xba2\xd0\xbb 1\xd1\x80\xd0\xb5\xd0\xba\xd1\x88 \xd1\x80\xd0\xb53\xd0\xbc\xd0\xbd\xd0\xbe 3\xd1\x80\xd0\xb5\xd0\xbc\xd0\xbe \xd1\x80\xd0\xb5\xd0\xbc\xd0\xbe2\xd0\xb33 1\xd1\x80\xd0\xb5\xd0\xbd\xd0\xba 1\xd1\x80\xd0\xb5\xd0\xbd\xd1\x8c \xd1\x80\xd0\xb51\xd0\xbe\xd0\xbd \xd1\x80\xd0\xb51\xd0\xbe\xd0\xbf \xd1\x80\xd0\xb51\xd0\xbe2\xd1\x80 \xd1\x80\xd0\xb51\xd0\xbe2\xd1\x84 \xd1\x80\xd0\xb51\xd0\xbe\xd1\x85 \xd1\x80\xd0\xb51\xd0\xbe2\xd1\x86 1\xd1\x80\xd0\xb5\xd0\xbf\xd1\x8c \xd1\x80\xd0\xb53\xd1\x802 \xd1\x80\xd0\xb5\xd1\x811\xd0\xba\xd0\xb8 \xd1\x80\xd0\xb51\xd1\x81\xd0\xbb \xd1\x80\xd0\xb51\xd1\x812\xd0\xbf \xd1\x80\xd0\xb5\xd1\x812\xd1\x813\xd0\xbc \xd1\x80\xd0\xb53\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd0\xb53\xd1\x81\xd1\x82\xd0\xbe \xd1\x80\xd0\xb51\xd1\x81\xd1\x87 \xd1\x80\xd0\xb51\xd1\x82\xd0\xb2 \xd1\x80\xd0\xb51\xd1\x822\xd1\x80 \xd1\x80\xd0\xb5\xd1\x83\xd1\x873\xd1\x82 \xd1\x80\xd0\xb51\xd1\x87\xd1\x82 \xd1\x80\xd0\xb53\xd1\x88\xd0\xbb \xd1\x803\xd0\xb6\xd0\xb0_ \xd1\x803\xd0\xb6\xd0\xb0\xd0\xbc \xd1\x803\xd0\xb6\xd0\xb0\xd0\xbd \xd1\x803\xd0\xb62\xd0\xb4 2\xd1\x80\xd0\xb7 \xd1\x801\xd0\xb72\xd0\xb2 \xd1\x801\xd0\xb7\xd0\xbe \xd1\x80\xd0\xb83\xd0\xb0 \xd1\x80\xd0\xb8\xd0\xb12 \xd1\x80\xd0\xb83\xd0\xb1\xd1\x80 \xd1\x80\xd0\xb83\xd0\xb22\xd0\xbd 2\xd1\x80\xd0\xb8\xd0\xb3\xd0\xb8 \xd1\x80\xd0\xb82\xd0\xb3\xd0\xbb\xd0\xbe \xd1\x80\xd0\xb83\xd0\xb32\xd0\xbd 2\xd1\x80\xd0\xb8\xd0\xb4\xd0\xb6 \xd1\x80\xd0\xb81\xd0\xb42\xd1\x80 \xd1\x80\xd0\xb8\xd0\xb52\xd0\xbb \xd1\x80\xd0\xb8\xd0\xb53\xd1\x80 \xd1\x80\xd0\xb8\xd0\xb72\xd0\xb2 \xd1\x80\xd0\xb8\xd0\xba2\xd1\x80 \xd1\x80\xd0\xb83\xd0\xbc2\xd0\xbd \xd1\x80\xd0\xb83\xd0\xbc2\xd1\x87 \xd1\x802\xd0\xb8\xd0\xbd 1\xd1\x80\xd0\xb8\xd0\xbd\xd1\x81 \xd1\x80\xd0\xb8\xd0\xbe2\xd0\xb7 \xd1\x80\xd0\xb8\xd0\xbe2\xd1\x81 \xd1\x80\xd0\xb81\xd0\xbe\xd1\x82 \xd1\x80\xd0\xb83\xd1\x802 \xd1\x80\xd0\xb81\xd1\x812 \xd1\x80\xd0\xb83\xd1\x81\xd0\xb1 2\xd1\x80\xd0\xb8\xd1\x81\xd0\xbf \xd1\x80\xd0\xb83\xd1\x81\xd1\x82\xd0\xb2 \xd1\x80\xd0\xb83\xd1\x822\xd1\x80 1\xd1\x80\xd0\xb8\xd1\x83 \xd1\x80\xd0\xb82\xd1\x84\xd0\xbb \xd1\x80\xd0\xb83\xd1\x84\xd1\x80 \xd1\x80\xd0\xb81\xd1\x85\xd0\xbb 1\xd1\x80\xd0\xb8\xd1\x86 1\xd1\x80\xd0\xb8\xd1\x88 \xd1\x80\xd0\xb8\xd1\x8d\xd1\x82\xd0\xb82 2\xd1\x801\xd0\xba \xd1\x802\xd0\xba\xd0\xb2 \xd1\x802\xd0\xba1\xd0\xbb \xd1\x80\xd0\xba1\xd1\x81 2\xd1\x801\xd0\xbb2 \xd1\x802\xd0\xbb\xd1\x8c \xd1\x80\xd0\xbb\xd1\x8e1 \xd1\x803\xd0\xbb\xd1\x8f 2\xd1\x80\xd0\xbc \xd1\x802\xd0\xbc\xd1\x87 2\xd1\x801\xd0\xbd \xd1\x80\xd0\xbd\xd0\xb0\xd1\x814 \xd1\x80\xd0\xbd\xd0\xb53\xd0\xbe \xd1\x80\xd0\xbd\xd0\xb51\xd1\x812 \xd1\x80\xd0\xbd\xd0\xbe3\xd1\x81\xd0\xbb 1\xd1\x80\xd0\xbe_ \xd1\x80\xd0\xbe2\xd0\xb1\xd0\xbb\xd1\x8e \xd1\x80\xd0\xbe1\xd0\xb12\xd1\x80 \xd1\x80\xd0\xbe2\xd0\xb2\xd0\xbb 1\xd1\x80\xd0\xbe\xd0\xb3\xd0\xbe\xd0\xbb 1\xd1\x80\xd0\xbe\xd0\xb3\xd1\x80\xd1\x83 \xd1\x80\xd0\xbe1\xd0\xb4\xd0\xb2 \xd1\x80\xd0\xbe3\xd0\xb42\xd0\xb7 \xd1\x80\xd0\xbe1\xd0\xb4\xd0\xbb \xd1\x80\xd0\xbe\xd0\xb42\xd0\xbb\xd0\xb5 \xd1\x80\xd0\xbe2\xd0\xb41\xd0\xbe\xd1\x82 \xd1\x80\xd0\xbe1\xd0\xb4\xd1\x80 1\xd1\x80\xd0\xbe\xd0\xb4\xd1\x8c \xd1\x80\xd0\xbe\xd0\xb52\xd0\xbb \xd1\x80\xd0\xbe\xd0\xb52\xd0\xbc \xd1\x80\xd0\xbe\xd0\xb52\xd1\x85 1\xd1\x80\xd0\xbe\xd0\xb7\xd0\xb0\xd1\x80 \xd1\x80\xd0\xbe1\xd0\xb72\xd0\xb2 \xd1\x80\xd0\xbe1\xd0\xb7\xd1\x80 3\xd1\x80\xd0\xbe\xd0\xb7\xd1\x8b\xd1\x81 \xd1\x80\xd0\xbe\xd0\xb82\xd1\x813 1\xd1\x80\xd0\xbe\xd0\xba\xd0\xbe\xd0\xbd 1\xd1\x80\xd0\xbe\xd0\xba\xd1\x80 1\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb8\xd1\x81 1\xd1\x80\xd0\xbe\xd0\xbb\xd0\xb8\xd1\x86 1\xd1\x80\xd0\xbe\xd0\xbc\xd0\xbe\xd1\x80 1\xd1\x80\xd0\xbe\xd0\xbd\xd0\xb0\xd0\xb6 1\xd1\x80\xd0\xbe\xd0\xbd\xd0\xb0\xd0\xbf 1\xd1\x80\xd0\xbe\xd0\xbd\xd0\xbe\xd1\x81 \xd1\x80\xd0\xbe\xd0\xbe\xd0\xbf1\xd1\x80 \xd1\x80\xd0\xbe2\xd0\xbf\xd0\xbb\xd1\x8e \xd1\x80\xd0\xbe3\xd0\xbf\xd1\x81 2\xd1\x801\xd0\xbe\xd1\x80\xd0\xb3 \xd1\x80\xd0\xbe1\xd1\x802\xd0\xb6 \xd1\x80\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x80\xd0\xbe1\xd1\x81\xd0\xba \xd1\x80\xd0\xbe2\xd1\x81\xd0\xba\xd0\xb8 \xd1\x80\xd0\xbe2\xd1\x81\xd0\xba\xd1\x83 1\xd1\x80\xd0\xbe\xd1\x81\xd0\xbb \xd1\x80\xd0\xbe1\xd1\x81\xd0\xbc \xd1\x80\xd0\xbe1\xd1\x812\xd0\xbf \xd1\x80\xd0\xbe\xd1\x812\xd1\x84 1\xd1\x80\xd0\xbe\xd1\x81\xd1\x88 1\xd1\x80\xd0\xbe\xd1\x81\xd1\x8e 1\xd1\x80\xd0\xbe\xd1\x822\xd0\xb2 1\xd1\x80\xd0\xbe\xd1\x82\xd0\xba \xd1\x80\xd0\xbe\xd1\x822\xd1\x80\xd0\xb8 1\xd1\x80\xd0\xbe\xd1\x83 \xd1\x80\xd0\xbe\xd1\x83\xd0\xb32 \xd1\x80\xd0\xbe2\xd1\x841\xd0\xb0\xd0\xba \xd1\x80\xd0\xbe2\xd1\x84\xd1\x80 \xd1\x80\xd0\xbe1\xd1\x85\xd0\xbb \xd1\x80\xd0\xbe\xd1\x882\xd0\xbb \xd1\x80\xd0\xbe3\xd1\x88\xd0\xbd 1\xd1\x80\xd0\xbe\xd1\x8f\xd0\xb7 2\xd1\x80\xd0\xbf \xd1\x80\xd0\xbf2\xd0\xbb\xd0\xbe \xd1\x802\xd0\xbf\xd0\xbb\xd1\x8e 2\xd1\x801\xd1\x80 4\xd1\x801\xd1\x81 \xd1\x80\xd1\x812\xd0\xba \xd1\x802\xd1\x81\xd0\xbd \xd1\x80\xd1\x812\xd0\xbf \xd1\x80\xd1\x81\xd1\x82\xd0\xb22 \xd1\x803\xd1\x81\xd1\x82\xd0\xb2\xd0\xbb 2\xd1\x801\xd1\x82 \xd1\x802\xd1\x82\xd0\xb0\xd0\xba\xd0\xba \xd1\x802\xd1\x821\xd0\xb0\xd0\xba\xd1\x82 \xd1\x802\xd1\x821\xd0\xb2 \xd1\x80\xd1\x823\xd0\xb2\xd0\xb0 \xd1\x80\xd1\x822\xd0\xb2\xd0\xbb \xd1\x802\xd1\x82\xd0\xbc \xd1\x802\xd1\x821\xd0\xbe\xd0\xb1 \xd1\x80\xd1\x821\xd0\xbe\xd1\x80\xd0\xb3 \xd1\x80\xd1\x821\xd1\x80\xd0\xb0 \xd1\x80\xd1\x822\xd1\x80\xd0\xb0\xd0\xbd \xd1\x80\xd1\x821\xd1\x80\xd0\xb5 \xd1\x80\xd1\x821\xd1\x80\xd0\xb8 \xd1\x80\xd1\x82\xd1\x83\xd1\x811 \xd1\x802\xd1\x821\xd1\x832\xd1\x87\xd0\xb8 \xd1\x803\xd1\x82\xd1\x8c\xd1\x8e \xd1\x80\xd1\x821\xd1\x8f\xd1\x87 1\xd1\x80\xd1\x83_ 1\xd1\x80\xd1\x83\xd0\xb1\xd0\xb0 \xd1\x80\xd1\x83\xd0\xb33\xd0\xbd \xd1\x80\xd1\x832\xd0\xb4\xd0\xb0\xd1\x80 1\xd1\x80\xd1\x83\xd0\xb6\xd0\xb5\xd0\xb9 2\xd1\x80\xd1\x83\xd0\xba\xd1\x81 1\xd1\x80\xd1\x83\xd0\xbb \xd1\x80\xd1\x83\xd1\x811\xd0\xba \xd1\x80\xd1\x83\xd1\x813\xd0\xbb \xd1\x80\xd1\x831\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd1\x83\xd1\x81\xd1\x821\xd1\x80 \xd1\x80\xd1\x833\xd1\x82\xd1\x8c 1\xd1\x80\xd1\x83\xd1\x85\xd0\xb0 1\xd1\x80\xd1\x83\xd1\x85\xd0\xbe 1\xd1\x80\xd1\x83\xd1\x87\xd0\xbd 2\xd1\x80\xd1\x84 \xd1\x80\xd1\x842\xd0\xbb 2\xd1\x80\xd1\x85 \xd1\x802\xd1\x85\xd0\xb2 \xd1\x802\xd1\x851\xd0\xb8\xd0\xbd \xd1\x80\xd1\x851\xd0\xbb \xd1\x801\xd1\x852\xd0\xbb\xd0\xbe \xd1\x802\xd1\x851\xd0\xbe\xd0\xbf \xd1\x80\xd1\x851\xd1\x80 2\xd1\x80\xd1\x86 \xd1\x802\xd1\x86\xd0\xb2 2\xd1\x801\xd1\x87 \xd1\x802\xd1\x87\xd0\xbb \xd1\x802\xd1\x87\xd0\xbc 2\xd1\x80\xd1\x88 \xd1\x803\xd1\x882\xd0\xbc \xd1\x80\xd1\x882\xd1\x82 2\xd1\x80\xd1\x89 2\xd1\x80\xd1\x8a 1\xd1\x80\xd1\x8b_ 1\xd1\x80\xd1\x8b\xd0\xb1 \xd1\x80\xd1\x8b2\xd0\xb4\xd0\xb2 2\xd1\x80\xd1\x8b\xd0\xb7 \xd1\x80\xd1\x8b2\xd0\xba\xd0\xbb 1\xd1\x80\xd1\x8b\xd0\xbc \xd1\x80\xd1\x8b2\xd1\x811\xd0\xba \xd1\x80\xd1\x8b2\xd1\x851 2\xd1\x80\xd1\x8c_ 1\xd1\x80\xd1\x8c\xd0\xb5 1\xd1\x80\xd1\x8c\xd0\xb8 2\xd1\x80\xd1\x8c\xd0\xba 2\xd1\x80\xd1\x8c\xd1\x81 2\xd1\x80\xd1\x8c\xd1\x82 1\xd1\x80\xd1\x8c\xd1\x8e 1\xd1\x80\xd1\x8c\xd1\x8f \xd1\x80\xd1\x8d1\xd0\xbb \xd1\x802\xd1\x8e 1\xd1\x80\xd1\x8e_ 1\xd1\x80\xd1\x8e\xd1\x81 \xd1\x80\xd1\x8f1\xd0\xb2\xd0\xb8 1\xd1\x80\xd1\x8f\xd1\x8e 1\xd1\x81\xd0\xb0 \xd1\x81\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x81\xd0\xb02\xd0\xb4\xd1\x8c \xd1\x81\xd0\xb02\xd0\xba\xd0\xb2 \xd1\x81\xd0\xb02\xd0\xba\xd0\xbb 2\xd1\x811\xd0\xb0\xd0\xbb\xd1\x8c\xd0\xbf \xd1\x811\xd0\xb0\xd0\xbf\xd0\xbf 2\xd1\x811\xd0\xb0\xd1\x80\xd0\xba 2\xd1\x811\xd0\xb0\xd1\x82\xd0\xbb \xd1\x81\xd0\xb01\xd1\x82\xd1\x80 \xd1\x81\xd0\xb02\xd1\x83\xd0\xbd \xd1\x81\xd0\xb02\xd1\x841\xd1\x80 \xd1\x81\xd0\xb01\xd1\x852 1\xd1\x81\xd0\xb12 2\xd1\x81\xd0\xb1\xd0\xb53\xd0\xb72 \xd1\x81\xd0\xb1\xd0\xb5\xd0\xb7\xd0\xbe3 \xd1\x81\xd0\xb1\xd0\xb53\xd1\x812 2\xd1\x813\xd0\xb1\xd1\x83 \xd1\x812\xd0\xb1\xd1\x8b 2\xd1\x81\xd0\xb1\xd1\x8e 1\xd1\x812\xd0\xb2 2\xd1\x813\xd0\xb2\xd0\xb5\xd0\xbd \xd1\x81\xd0\xb32 \xd1\x812\xd0\xb3\xd0\xb8 \xd1\x812\xd0\xb3\xd0\xbd \xd1\x812\xd0\xb3\xd0\xbe 1\xd1\x81\xd0\xb42 \xd1\x812\xd0\xb4\xd0\xb0 \xd1\x812\xd0\xb4\xd0\xb5 \xd1\x813\xd0\xb4\xd0\xb8 \xd1\x812\xd0\xb4\xd0\xbe 1\xd1\x812\xd0\xb5 \xd1\x81\xd0\xb5\xd0\xb32\xd0\xbd \xd1\x81\xd0\xb51\xd0\xb72 \xd1\x81\xd0\xb51\xd0\xba\xd0\xb2 \xd1\x81\xd0\xb5\xd0\xba1\xd0\xbb \xd1\x81\xd0\xb52\xd0\xba1\xd1\x80 \xd1\x81\xd0\xb5\xd0\xba\xd1\x814 \xd1\x81\xd0\xb5\xd0\xbc\xd0\xb81 \xd1\x81\xd0\xb5\xd1\x80\xd0\xb52\xd0\xb1 \xd1\x81\xd0\xb52\xd1\x81\xd0\xba \xd1\x81\xd0\xb52\xd1\x81\xd1\x82 \xd1\x81\xd0\xb53\xd1\x81\xd1\x82\xd0\xb0 \xd1\x81\xd0\xb53\xd1\x81\xd1\x82\xd0\xb5 \xd1\x81\xd0\xb5\xd1\x81\xd1\x821\xd1\x80 1\xd1\x812\xd0\xb6 \xd1\x811\xd0\xb7 1\xd1\x812\xd0\xb8 3\xd1\x81\xd0\xb8\xd0\xb7 \xd1\x81\xd0\xb81\xd0\xbe\xd0\xbc \xd1\x81\xd0\xb81\xd0\xbe\xd0\xbf \xd1\x81\xd0\xb82\xd0\xbf\xd0\xbb \xd1\x81\xd0\xb81\xd1\x85 4\xd1\x81\xd0\xba_ 2\xd1\x81\xd0\xba\xd0\xb0\xd0\xbc \xd1\x812\xd0\xba\xd0\xb0\xd0\xbd\xd0\xb4 1\xd1\x812\xd0\xba\xd0\xb0\xd1\x84 2\xd1\x81\xd0\xba\xd0\xb0\xd1\x85 \xd1\x81\xd0\xba2\xd0\xb2\xd0\xb0 \xd1\x812\xd0\xba\xd0\xb2\xd0\xb8 3\xd1\x81\xd0\xba\xd0\xb8\xd0\xbd\xd0\xbe \xd1\x81\xd0\xba2\xd0\xbb \xd1\x812\xd0\xba\xd0\xbb\xd1\x8f \xd1\x81\xd0\xba3\xd0\xbb\xd1\x8f\xd0\xb2 2\xd1\x81\xd0\xba\xd0\xbd \xd1\x811\xd0\xba\xd0\xbe\xd0\xbd 2\xd1\x81\xd0\xba\xd0\xbe\xd0\xbd\xd0\xb0 \xd1\x812\xd0\xba\xd0\xbe\xd0\xbf\xd1\x81 2\xd1\x81\xd0\xba\xd0\xbe\xd1\x88 \xd1\x81\xd0\xba2\xd1\x80 \xd1\x811\xd0\xba\xd1\x80\xd0\xb0 2\xd1\x81\xd0\xba\xd1\x80\xd0\xb8\xd0\xb1 \xd1\x81\xd0\xba1\xd1\x81 2\xd1\x81\xd0\xba\xd1\x83\xd0\xb5 2\xd1\x813\xd0\xbb\xd0\xb0_ 1\xd1\x81\xd0\xbb\xd0\xb0\xd0\xb2 1\xd1\x81\xd0\xbb\xd0\xb0\xd0\xb4 \xd1\x811\xd0\xbb\xd0\xb0\xd0\xbc 2\xd1\x813\xd0\xbb\xd0\xb0\xd1\x8f \xd1\x813\xd0\xbb\xd0\xb5\xd0\xb2 \xd1\x813\xd0\xbb\xd0\xb5\xd0\xb5 \xd1\x811\xd0\xbb\xd0\xb5\xd0\xb9 \xd1\x81\xd0\xbb\xd0\xb5\xd0\xbe2 \xd1\x811\xd0\xbb\xd0\xb5\xd1\x82 \xd1\x813\xd0\xbb\xd0\xb5\xd1\x8e 2\xd1\x813\xd0\xbb\xd0\xb8_ 2\xd1\x81\xd0\xbb\xd0\xb8\xd1\x86 2\xd1\x813\xd0\xbb\xd0\xbe_ \xd1\x812\xd0\xbb\xd0\xbe\xd0\xb6 \xd1\x813\xd0\xbb\xd0\xbe\xd0\xbc\xd1\x83 2\xd1\x813\xd0\xbb\xd0\xbe\xd1\x81 2\xd1\x813\xd0\xbb\xd1\x83\xd1\x8e 2\xd1\x813\xd0\xbb\xd1\x8b\xd0\xb5 2\xd1\x813\xd0\xbb\xd1\x8b\xd0\xb9 2\xd1\x813\xd0\xbb\xd1\x8b\xd0\xbc 2\xd1\x81\xd0\xbb\xd1\x8c \xd1\x811\xd0\xbb\xd1\x8e\xd1\x81 2\xd1\x813\xd0\xbb\xd1\x8f \xd1\x812\xd0\xbc 1\xd1\x81\xd0\xbc\xd0\xb5\xd1\x81 \xd1\x814\xd0\xbc\xd0\xb5\xd1\x8f \xd1\x813\xd0\xbc\xd1\x83\xd1\x80 \xd1\x811\xd0\xbd 1\xd1\x812\xd0\xbd\xd0\xb0\xd0\xb1 \xd1\x812\xd0\xbd\xd0\xb0\xd1\x81 2\xd1\x81\xd0\xbd\xd0\xb0\xd1\x8f 1\xd1\x812\xd0\xbd\xd0\xb5\xd0\xb6 2\xd1\x813\xd0\xbd\xd0\xb8\xd0\xba 2\xd1\x81\xd0\xbd\xd0\xbe \xd1\x81\xd0\xbd\xd0\xbe1\xd0\xb72 2\xd1\x81\xd0\xbd\xd1\x83\xd1\x8e 2\xd1\x813\xd0\xbd\xd1\x8b 1\xd1\x81\xd0\xbe \xd1\x81\xd0\xbe1\xd0\xb12\xd1\x80 \xd1\x812\xd0\xbe\xd0\xb2 \xd1\x81\xd0\xbe\xd0\xb22\xd1\x80 \xd1\x81\xd0\xbe1\xd0\xb4 \xd1\x81\xd0\xbe1\xd0\xb72 \xd1\x81\xd0\xbe1\xd0\xbb2\xd0\xb3 \xd1\x81\xd0\xbe3\xd0\xbc2 \xd1\x81\xd0\xbe2\xd1\x80\xd0\xb8\xd0\xb5 \xd1\x81\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x81\xd0\xbe1\xd1\x81\xd0\xba \xd1\x81\xd0\xbe1\xd1\x812\xd0\xbf \xd1\x81\xd0\xbe2\xd1\x81\xd1\x8c \xd1\x81\xd0\xbe\xd1\x822\xd1\x80 \xd1\x81\xd0\xbe1\xd1\x87\xd0\xbb \xd1\x81\xd0\xbe\xd1\x882\xd0\xbb \xd1\x81\xd0\xbf2 \xd1\x812\xd0\xbf\xd0\xb0\xd0\xb2 \xd1\x812\xd0\xbf\xd0\xb5\xd0\xb5 \xd1\x812\xd0\xbf\xd0\xb5\xd0\xbb \xd1\x812\xd0\xbf\xd0\xb5\xd0\xbd \xd1\x812\xd0\xbf\xd0\xb5\xd1\x85 1\xd1\x812\xd0\xbf\xd0\xb5\xd1\x86 \xd1\x812\xd0\xbf\xd0\xb5\xd1\x88 \xd1\x812\xd0\xbf\xd0\xb5\xd1\x8e \xd1\x812\xd0\xbf\xd0\xb8\xd0\xbc 2\xd1\x81\xd0\xbf\xd0\xb8\xd1\x81\xd1\x8f \xd1\x813\xd0\xbf\xd0\xbd \xd1\x81\xd0\xbf\xd0\xbe1\xd0\xb72 2\xd1\x81\xd0\xbf\xd0\xbe\xd0\xbb \xd1\x812\xd0\xbf\xd0\xbe\xd1\x81 2\xd1\x81\xd0\xbf\xd1\x8c 1\xd1\x81\xd1\x80 2\xd1\x81\xd1\x80_ \xd1\x812\xd1\x80\xd0\xb0\xd0\xb1 \xd1\x81\xd1\x80\xd0\xb02\xd1\x81 \xd1\x811\xd1\x80\xd0\xb0\xd1\x82 \xd1\x81\xd1\x80\xd0\xb52\xd0\xb11 \xd1\x81\xd1\x80\xd0\xb53\xd0\xb4\xd0\xbe 2\xd1\x811\xd1\x81 \xd1\x81\xd1\x81\xd0\xb0\xd0\xbd\xd0\xb42 \xd1\x812\xd1\x81\xd0\xb1 \xd1\x81\xd1\x813\xd0\xb2\xd0\xbe 4\xd1\x815\xd1\x81\xd0\xb8 \xd1\x813\xd1\x812\xd0\xba \xd1\x81\xd1\x812\xd0\xbb \xd1\x812\xd1\x81\xd0\xbd \xd1\x813\xd1\x812\xd0\xbd\xd0\xb5 \xd1\x812\xd1\x81\xd0\xbe\xd1\x80\xd0\xb8 \xd1\x81\xd1\x812\xd0\xbf \xd1\x81\xd1\x81\xd1\x822 \xd1\x81\xd1\x812\xd1\x87 2\xd1\x81\xd1\x82_ 1\xd1\x81\xd1\x82\xd0\xb0_ 2\xd1\x81\xd1\x82\xd0\xb1 4\xd1\x81\xd1\x82\xd0\xb2_ \xd1\x81\xd1\x821\xd0\xb2\xd0\xb5\xd1\x80 2\xd1\x81\xd1\x82\xd0\xb2\xd0\xbb \xd1\x81\xd1\x822\xd0\xb2\xd0\xbe\xd0\xbb \xd1\x81\xd1\x822\xd0\xb2\xd1\x8f \xd1\x812\xd1\x82\xd0\xb5 1\xd1\x814\xd1\x82\xd0\xb5_ 1\xd1\x81\xd1\x82\xd0\xb5\xd0\xb9 1\xd1\x81\xd1\x82\xd0\xb5\xd0\xbb 1\xd1\x81\xd1\x82\xd0\xb5\xd0\xbd_ \xd1\x813\xd1\x82\xd0\xb5\xd1\x82_ \xd1\x813\xd1\x82\xd0\xb5\xd1\x82\xd0\xb5 \xd1\x81\xd1\x82\xd0\xb53\xd1\x85 \xd1\x813\xd1\x82\xd0\xb5\xd1\x88 1\xd1\x81\xd1\x82\xd0\xb8 \xd1\x812\xd1\x82\xd0\xb8\xd0\xb5 \xd1\x812\xd1\x82\xd0\xb8\xd0\xb8 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbc\xd0\xbf 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd0\xb4 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd1\x84 2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd\xd1\x8a \xd1\x812\xd1\x82\xd0\xb8\xd1\x87 \xd1\x812\xd1\x82\xd0\xb8\xd1\x88\xd0\xba \xd1\x812\xd1\x82\xd0\xb8\xd1\x8e 2\xd1\x81\xd1\x82\xd0\xba \xd1\x81\xd1\x822\xd0\xbb\xd0\xb0 \xd1\x813\xd1\x822\xd0\xbb\xd0\xb5 2\xd1\x81\xd1\x82\xd0\xbb\xd0\xb8 \xd1\x81\xd1\x822\xd0\xbb\xd0\xb8\xd0\xbb \xd1\x81\xd1\x822\xd0\xbb\xd0\xb8\xd1\x82 2\xd1\x81\xd1\x82\xd0\xbb\xd1\x8f 2\xd1\x81\xd1\x82\xd0\xbc 2\xd1\x81\xd1\x82\xd0\xbd 1\xd1\x81\xd1\x82\xd0\xbe_ \xd1\x812\xd1\x82\xd0\xbe1\xd0\xb1 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb2 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb3 \xd1\x81\xd1\x82\xd0\xbe2\xd0\xb33\xd0\xbd 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb4 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xb5 3\xd1\x812\xd1\x82\xd0\xbe\xd0\xb8 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xba 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xbc 1\xd1\x81\xd1\x82\xd0\xbe\xd0\xbd 2\xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xb3 2\xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd0\xb6 2\xd1\x81\xd1\x82\xd0\xbe\xd1\x80\xd1\x81 1\xd1\x81\xd1\x82\xd0\xbe\xd1\x81 1\xd1\x81\xd1\x82\xd0\xbe\xd1\x82 \xd1\x812\xd1\x82\xd0\xbe\xd1\x86 1\xd1\x81\xd1\x82\xd0\xbe\xd1\x8e 2\xd1\x81\xd1\x82\xd0\xbf 2\xd1\x81\xd1\x82\xd1\x80_ \xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd1\x812 4\xd1\x81\xd1\x82\xd1\x80\xd0\xb0\xd1\x8f 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb5\xd0\xb4 \xd1\x81\xd1\x821\xd1\x80\xd0\xb5\xd0\xb9 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd0\xb2 \xd1\x81\xd1\x821\xd1\x80\xd0\xb8\xd0\xb7 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd0\xbb 2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd1\x89 \xd1\x81\xd1\x821\xd1\x80\xd0\xbe\xd0\xb0 \xd1\x814\xd1\x821\xd1\x80\xd0\xbe\xd0\xb2 \xd1\x81\xd1\x821\xd1\x80\xd0\xbe\xd0\xb4 \xd1\x81\xd1\x821\xd1\x80\xd0\xbe\xd1\x85 \xd1\x81\xd1\x822\xd1\x80\xd1\x83\xd0\xb1 \xd1\x81\xd1\x821\xd1\x80\xd1\x83\xd1\x88 2\xd1\x81\xd1\x82\xd1\x81 \xd1\x811\xd1\x82\xd1\x83\xd1\x82 1\xd1\x81\xd1\x82\xd1\x83\xd1\x8e 2\xd1\x81\xd1\x82\xd1\x84 2\xd1\x81\xd1\x82\xd1\x86 1\xd1\x81\xd1\x82\xd1\x8b \xd1\x812\xd1\x82\xd1\x8b\xd0\xb2 \xd1\x814\xd1\x82\xd1\x8c 2\xd1\x81\xd1\x82\xd1\x8c_ 2\xd1\x81\xd1\x82\xd1\x8c\xd1\x81 3\xd1\x81\xd1\x82\xd1\x8c\xd1\x8e 1\xd1\x81\xd1\x82\xd1\x8c\xd1\x8f 1\xd1\x81\xd1\x82\xd1\x8f\xd0\xbc 1\xd1\x81\xd1\x82\xd1\x8f\xd1\x85 1\xd1\x81\xd1\x83 \xd1\x81\xd1\x832\xd0\xb1 \xd1\x81\xd1\x83\xd0\xb11\xd0\xb02 \xd1\x81\xd1\x83\xd0\xb11\xd0\xbe \xd1\x81\xd1\x831\xd0\xb2 \xd1\x81\xd1\x833\xd0\xb3\xd0\xbb \xd1\x81\xd1\x832\xd0\xb5\xd0\xb2 \xd1\x81\xd1\x832\xd0\xb7 \xd1\x81\xd1\x831\xd0\xba\xd1\x80 \xd1\x81\xd1\x83\xd0\xbc\xd0\xb01 \xd1\x81\xd1\x83\xd0\xbf\xd0\xb52 \xd1\x81\xd1\x83\xd1\x813\xd0\xbb \xd1\x81\xd1\x83\xd1\x813\xd0\xbf \xd1\x81\xd1\x831\xd1\x81\xd1\x82 \xd1\x81\xd1\x83\xd1\x821\xd1\x80 \xd1\x81\xd1\x832\xd1\x843 \xd1\x81\xd1\x831\xd1\x85 1\xd1\x812\xd1\x84\xd0\xb5 \xd1\x811\xd1\x852 1\xd1\x812\xd1\x85\xd0\xb5 2\xd1\x81\xd1\x86\xd0\xb0 \xd1\x812\xd1\x86\xd0\xb5\xd0\xbd\xd0\xb0 2\xd1\x813\xd1\x86\xd0\xb8 2\xd1\x81\xd1\x86\xd0\xbe \xd1\x81\xd1\x872 1\xd1\x81\xd1\x87\xd0\xb0 \xd1\x812\xd1\x87\xd0\xb0\xd1\x81 \xd1\x81\xd1\x87\xd0\xb52\xd1\x811\xd0\xba \xd1\x813\xd1\x87\xd0\xb8\xd0\xb2 2\xd1\x81\xd1\x87\xd0\xb8\xd0\xba \xd1\x812\xd1\x87\xd0\xb8\xd1\x82 \xd1\x811\xd1\x87\xd0\xbb 2\xd1\x81\xd1\x87\xd0\xbe \xd1\x81\xd1\x882 \xd1\x813\xd1\x88\xd0\xbd 1\xd1\x81\xd1\x8a2 \xd1\x81\xd1\x8a\xd0\xb53\xd0\xb4 \xd1\x81\xd1\x8a\xd0\xb53\xd0\xbb 1\xd1\x81\xd1\x8b \xd1\x81\xd1\x8b2\xd0\xb31 \xd1\x81\xd1\x8b2\xd0\xb7 \xd1\x81\xd1\x8b2\xd0\xbf1\xd0\xbb \xd1\x81\xd1\x8b2\xd1\x81 \xd1\x81\xd1\x8b\xd1\x811\xd0\xba\xd0\xb0 2\xd1\x81\xd1\x8c_ 1\xd1\x81\xd1\x8c\xd0\xb5 2\xd1\x81\xd1\x8c\xd0\xba 2\xd1\x81\xd1\x8c\xd1\x82 1\xd1\x81\xd1\x8c\xd1\x8e 1\xd1\x81\xd1\x8c\xd1\x8f \xd1\x81\xd1\x8d1\xd1\x80 \xd1\x812\xd1\x8d\xd1\x81 1\xd1\x812\xd1\x8e \xd1\x81\xd1\x8e1\xd1\x81 1\xd1\x81\xd1\x8f 2\xd1\x81\xd1\x8f\xd0\xb7 \xd1\x81\xd1\x8f3\xd1\x82\xd1\x8c \xd1\x82\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x82\xd0\xb0\xd0\xb12\xd1\x80 \xd1\x82\xd0\xb01\xd0\xb2\xd1\x80\xd0\xb8 1\xd1\x82\xd0\xb0\xd0\xb3 \xd1\x82\xd0\xb02\xd0\xb3\xd0\xbd \xd1\x82\xd0\xb01\xd0\xb72 \xd1\x82\xd0\xb0\xd0\xba3\xd0\xbb\xd0\xb5 \xd1\x822\xd0\xb0\xd0\xbd \xd1\x82\xd0\xb02\xd0\xbf\xd0\xbb 1\xd1\x82\xd0\xb0\xd1\x81 \xd1\x82\xd0\xb01\xd1\x81\xd1\x82 \xd1\x82\xd0\xb01\xd1\x82\xd1\x80 1\xd1\x82\xd0\xb0\xd1\x89 2\xd1\x821\xd0\xb12 2\xd1\x82\xd0\xb2_ 2\xd1\x822\xd0\xb2\xd0\xb0 \xd1\x821\xd0\xb2\xd0\xb5\xd0\xb9 \xd1\x821\xd0\xb2\xd0\xb5\xd0\xbb \xd1\x821\xd0\xb2\xd0\xb5\xd1\x82 2\xd1\x82\xd0\xb2\xd0\xb8 \xd1\x821\xd0\xb2\xd0\xbe\xd0\xb5 \xd1\x821\xd0\xb2\xd0\xbe1\xd0\xb7 2\xd1\x821\xd0\xb2\xd0\xbe\xd0\xb9 \xd1\x821\xd0\xb2\xd0\xbe\xd1\x81 2\xd1\x82\xd0\xb2\xd0\xbe\xd1\x8e 2\xd1\x821\xd0\xb2\xd1\x80 2\xd1\x82\xd0\xb2\xd1\x83 2\xd1\x82\xd0\xb2\xd1\x8b 2\xd1\x82\xd0\xb2\xd1\x8f 2\xd1\x82\xd0\xb3 2\xd1\x821\xd0\xb4 1\xd1\x822\xd0\xb5 \xd1\x82\xd0\xb52\xd0\xb3\xd0\xbd \xd1\x82\xd0\xb51\xd0\xb4 \xd1\x82\xd0\xb51\xd0\xb7\xd0\xbe 3\xd1\x82\xd0\xb5\xd0\xba\xd0\xb0 \xd1\x82\xd0\xb5\xd0\xba1\xd0\xbb 3\xd1\x82\xd0\xb5\xd0\xba\xd1\x88 \xd1\x82\xd0\xb5\xd0\xbb\xd0\xb51\xd0\xbe \xd1\x82\xd0\xb5\xd0\xbc2\xd0\xb11 \xd1\x82\xd0\xb52\xd0\xbe3\xd0\xb4 \xd1\x82\xd0\xb51\xd0\xbe\xd1\x85 \xd1\x82\xd0\xb54\xd0\xbf1\xd0\xbb \xd1\x82\xd0\xb52\xd1\x80\xd0\xb0\xd0\xba \xd1\x82\xd0\xb5\xd1\x80\xd0\xb52\xd0\xbe 3\xd1\x82\xd0\xb5\xd1\x80\xd0\xb7 \xd1\x82\xd0\xb5\xd1\x803\xd0\xba 3\xd1\x82\xd0\xb5\xd1\x80\xd1\x8f \xd1\x82\xd0\xb52\xd1\x81\xd0\xba\xd0\xb0 \xd1\x82\xd0\xb52\xd1\x811\xd0\xba\xd0\xb8 \xd1\x82\xd0\xb52\xd1\x811\xd0\xba\xd0\xbe \xd1\x82\xd0\xb52\xd1\x81\xd0\xba\xd1\x83 \xd1\x82\xd0\xb5\xd1\x81\xd1\x822 \xd1\x82\xd0\xb52\xd1\x85\xd0\xbe 2\xd1\x82\xd0\xb6 2\xd1\x821\xd0\xb7 \xd1\x82\xd0\xb8\xd0\xb02\xd0\xbc \xd1\x82\xd0\xb82\xd0\xb1\xd0\xbb \xd1\x82\xd0\xb83\xd0\xb42 \xd1\x82\xd0\xb81\xd0\xb7\xd0\xbd\xd0\xb0 \xd1\x82\xd0\xb8\xd0\xb82 \xd1\x82\xd0\xb8\xd0\xb8\xd1\x811 \xd1\x82\xd0\xb8\xd0\xba2 \xd1\x82\xd0\xb8\xd0\xbb\xd0\xb02\xd0\xbc \xd1\x821\xd0\xb8\xd0\xbc\xd0\xbf 2\xd1\x821\xd0\xb8\xd0\xbd\xd0\xb2 \xd1\x821\xd0\xb8\xd0\xbd\xd0\xb4 2\xd1\x82\xd0\xb8\xd0\xbd\xd0\xb6 2\xd1\x82\xd0\xb8\xd0\xbd\xd1\x84 \xd1\x82\xd0\xb81\xd1\x812\xd0\xbb \xd1\x82\xd0\xb83\xd1\x81\xd1\x82\xd0\xb2 \xd1\x82\xd0\xb83\xd1\x842\xd1\x80 \xd1\x82\xd0\xb81\xd1\x85\xd1\x80 2\xd1\x821\xd0\xba2 3\xd1\x822\xd0\xba\xd0\xb0\xd0\xb2 3\xd1\x822\xd0\xba\xd0\xb0\xd0\xbd 3\xd1\x822\xd0\xba\xd0\xb5\xd1\x82 3\xd1\x82\xd0\xba\xd0\xbd 2\xd1\x821\xd0\xbb \xd1\x82\xd0\xbb\xd0\xbe2\xd0\xb1 \xd1\x822\xd0\xbb\xd1\x8c \xd1\x82\xd0\xbc2 \xd1\x82\xd0\xbc\xd0\xb82\xd1\x81 \xd1\x82\xd0\xbc\xd0\xb8\xd1\x81\xd1\x821 \xd1\x823\xd0\xbc\xd1\x89 2\xd1\x821\xd0\xbd \xd1\x82\xd0\xbe2\xd0\xb1\xd0\xb5\xd1\x81 \xd1\x82\xd0\xbe1\xd0\xb12\xd0\xbb 2\xd1\x82\xd0\xbe\xd0\xb1\xd1\x8a \xd1\x82\xd0\xbe2\xd0\xb2\xd0\xbb \xd1\x82\xd0\xbe1\xd0\xb4 \xd1\x82\xd0\xbe3\xd0\xb42\xd1\x80 \xd1\x82\xd0\xbe1\xd0\xb72 \xd1\x82\xd0\xbe\xd0\xba2\xd1\x80 2\xd1\x821\xd0\xbe\xd0\xbc\xd0\xbc 2\xd1\x82\xd0\xbe\xd0\xbc\xd1\x81 2\xd1\x82\xd0\xbe\xd0\xbd\xd0\xb3 1\xd1\x82\xd0\xbe\xd1\x80\xd0\xb3 1\xd1\x82\xd0\xbe\xd1\x80\xd0\xb6 1\xd1\x82\xd0\xbe\xd1\x80\xd1\x81 \xd1\x82\xd0\xbe1\xd1\x80\xd1\x83 1\xd1\x82\xd0\xbe\xd1\x80\xd1\x88 \xd1\x82\xd0\xbe1\xd1\x812\xd0\xbd \xd1\x82\xd0\xbe1\xd1\x812\xd0\xbf \xd1\x82\xd0\xbe1\xd1\x812\xd1\x86 2\xd1\x82\xd0\xbe\xd1\x82\xd0\xb4 \xd1\x82\xd0\xbe3\xd1\x82\xd0\xba 1\xd1\x82\xd0\xbe\xd1\x89 2\xd1\x82\xd0\xbf2 \xd1\x82\xd0\xbf\xd0\xb01\xd1\x82 \xd1\x821\xd1\x80\xd0\xb0\xd0\xb3\xd0\xb0 2\xd1\x821\xd1\x80\xd0\xb0\xd0\xb6 2\xd1\x82\xd1\x80\xd0\xb1 2\xd1\x82\xd1\x80\xd0\xb2 2\xd1\x82\xd1\x80\xd0\xb3 2\xd1\x82\xd1\x80\xd0\xb4 \xd1\x82\xd1\x80\xd0\xb4\xd0\xbe2 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb0 1\xd1\x82\xd1\x80\xd0\xb5\xd0\xb1\xd0\xbe 1\xd1\x82\xd1\x80\xd0\xb5\xd0\xb1\xd1\x83 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb1\xd1\x8c \xd1\x821\xd1\x80\xd0\xb5\xd0\xb2\xd0\xb5 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb2\xd1\x88 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb3 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb4 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb5 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb7\xd0\xb0 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb7\xd0\xbd \xd1\x82\xd1\x80\xd0\xb5\xd0\xbf1\xd0\xbb 3\xd1\x82\xd1\x80\xd0\xb52\xd1\x81 \xd1\x82\xd1\x80\xd0\xb5\xd1\x811\xd0\xba \xd1\x821\xd1\x80\xd0\xb5\xd1\x81\xd1\x82 \xd1\x821\xd1\x80\xd0\xb5\xd1\x82\xd1\x83 3\xd1\x822\xd1\x80\xd0\xb52\xd1\x85 \xd1\x821\xd1\x80\xd0\xb5\xd1\x86 \xd1\x822\xd1\x80\xd0\xb5\xd1\x88\xd1\x8c \xd1\x821\xd1\x80\xd0\xb5\xd1\x8e 1\xd1\x82\xd1\x80\xd0\xb8\xd0\xb1 \xd1\x821\xd1\x80\xd0\xb8\xd0\xb2 \xd1\x82\xd1\x80\xd0\xb82\xd0\xb31\xd0\xbb \xd1\x821\xd1\x80\xd0\xb8\xd0\xbb \xd1\x821\xd1\x80\xd0\xb8\xd0\xbc 4\xd1\x82\xd1\x80\xd0\xb8\xd0\xbd\xd1\x81 \xd1\x82\xd1\x80\xd0\xb81\xd0\xbe \xd1\x821\xd1\x80\xd0\xb8\xd1\x82 \xd1\x82\xd1\x80\xd0\xb83\xd1\x84 \xd1\x821\xd1\x80\xd0\xb8\xd1\x89 2\xd1\x82\xd1\x80\xd0\xbc 2\xd1\x82\xd1\x80\xd0\xbd \xd1\x821\xd1\x80\xd0\xbe\xd0\xb3\xd0\xbb \xd1\x821\xd1\x80\xd0\xbe\xd0\xb8\xd0\xb4 2\xd1\x82\xd1\x80\xd0\xbe\xd0\xb9 \xd1\x82\xd1\x80\xd0\xbe3\xd0\xbf\xd0\xbb \xd1\x821\xd1\x80\xd0\xbe\xd1\x80 \xd1\x821\xd1\x80\xd0\xbe\xd1\x81\xd0\xbe \xd1\x82\xd1\x80\xd0\xbe3\xd1\x82 4\xd1\x823\xd1\x80\xd0\xbe\xd1\x86 2\xd1\x82\xd1\x80\xd0\xbe\xd1\x8e 2\xd1\x82\xd1\x80\xd0\xbf 2\xd1\x82\xd1\x80\xd1\x80 1\xd1\x82\xd1\x80\xd1\x83\xd0\xb1 \xd1\x822\xd1\x80\xd1\x83\xd0\xb4 2\xd1\x82\xd1\x80\xd1\x83\xd0\xba \xd1\x822\xd1\x80\xd1\x83\xd0\xbc \xd1\x822\xd1\x80\xd1\x83\xd1\x82 2\xd1\x82\xd1\x80\xd1\x84 2\xd1\x82\xd1\x80\xd1\x89 2\xd1\x82\xd1\x80\xd1\x8a \xd1\x821\xd1\x80\xd1\x8b \xd1\x821\xd1\x80\xd1\x8f_ \xd1\x821\xd1\x80\xd1\x8f\xd0\xb2 2\xd1\x821\xd1\x80\xd1\x8f\xd0\xb4 \xd1\x821\xd1\x80\xd1\x8f\xd0\xb5 \xd1\x821\xd1\x80\xd1\x8f\xd0\xb6 \xd1\x821\xd1\x80\xd1\x8f\xd0\xb9 \xd1\x823\xd1\x80\xd1\x8f\xd0\xba \xd1\x821\xd1\x80\xd1\x8f\xd1\x82 \xd1\x821\xd1\x80\xd1\x8f\xd1\x89 \xd1\x821\xd1\x80\xd1\x8f\xd1\x8f 4\xd1\x821\xd1\x812 \xd1\x822\xd1\x81\xd0\xb1 \xd1\x822\xd1\x813\xd0\xb4 \xd1\x82\xd1\x81\xd0\xb5\xd0\xbf2 \xd1\x822\xd1\x813\xd0\xbc \xd1\x822\xd1\x813\xd0\xbf 2\xd1\x821\xd1\x82 \xd1\x822\xd1\x82\xd0\xbc \xd1\x82\xd1\x832\xd0\xb3\xd1\x80 \xd1\x82\xd1\x832\xd0\xb6\xd0\xb8\xd0\xbd 2\xd1\x821\xd1\x832\xd0\xbf\xd1\x80 \xd1\x82\xd1\x831\xd1\x81\xd0\xbb \xd1\x82\xd1\x831\xd1\x81\xd1\x82 \xd1\x82\xd1\x832\xd1\x84\xd0\xbb 1\xd1\x82\xd1\x83\xd1\x88\xd0\xb0 1\xd1\x82\xd1\x83\xd1\x88\xd0\xbe 1\xd1\x82\xd1\x83\xd1\x88\xd1\x8c 1\xd1\x82\xd1\x83\xd1\x89 2\xd1\x82\xd1\x84 2\xd1\x821\xd1\x85 4\xd1\x82\xd1\x86 2\xd1\x821\xd1\x87 2\xd1\x82\xd1\x882 2\xd1\x82\xd1\x89 2\xd1\x82\xd1\x8a \xd1\x82\xd1\x8b2\xd0\xb31 \xd1\x82\xd1\x8b2\xd1\x811\xd0\xba 2\xd1\x82\xd1\x8c 4\xd1\x82\xd1\x8c_ 3\xd1\x82\xd1\x8c\xd0\xb5 3\xd1\x82\xd1\x8c\xd0\xb8 \xd1\x82\xd1\x8c2\xd0\xbc 4\xd1\x82\xd1\x8c\xd1\x82 \xd1\x82\xd1\x8c\xd1\x8e1 2\xd1\x82\xd1\x8d \xd1\x822\xd1\x8e \xd1\x82\xd1\x8e1\xd1\x82 1\xd1\x82\xd1\x8f\xd0\xb3 1\xd1\x82\xd1\x8f\xd0\xb6 1\xd1\x82\xd1\x8f\xd0\xbf 2\xd1\x82\xd1\x8f2\xd1\x87 \xd1\x831\xd0\xb0 \xd1\x832\xd0\xb0\xd0\xbb\xd0\xb5 \xd1\x832\xd0\xb0\xd1\x81 \xd1\x833\xd0\xb1\xd0\xb5\xd0\xbb \xd1\x83\xd0\xb1\xd0\xbe1\xd0\xb4 \xd1\x83\xd0\xb1\xd0\xbe\xd1\x812 \xd1\x83\xd0\xb11\xd1\x80 1\xd1\x83\xd0\xb1\xd1\x80\xd0\xb0 \xd1\x83\xd0\xb13\xd1\x80\xd1\x8e 1\xd1\x832\xd0\xb1\xd1\x8b\xd1\x82 \xd1\x831\xd0\xb2\xd0\xb5_ \xd1\x831\xd0\xb2\xd0\xb8 \xd1\x83\xd0\xb22\xd0\xbb \xd1\x831\xd0\xb2\xd0\xbe \xd1\x831\xd0\xb2\xd1\x83 \xd1\x832\xd0\xb3\xd0\xb2 \xd1\x832\xd0\xb3\xd0\xbb \xd1\x832\xd0\xb3\xd0\xbd \xd1\x83\xd0\xb32\xd0\xbd\xd0\xb0 \xd1\x83\xd0\xb32\xd0\xbd\xd0\xb5 \xd1\x83\xd0\xb31\xd1\x80\xd0\xb5 \xd1\x83\xd0\xb31\xd1\x80\xd1\x8f \xd1\x83\xd0\xb4\xd0\xb01\xd1\x81 \xd1\x83\xd0\xb42\xd0\xb2 \xd1\x83\xd0\xb41\xd1\x80\xd0\xb0\xd0\xbc \xd1\x83\xd0\xb41\xd1\x80\xd0\xbe \xd1\x833\xd0\xb4\xd1\x83 \xd1\x831\xd0\xb5 \xd1\x83\xd0\xb52\xd0\xb4 \xd1\x83\xd0\xb52\xd0\xbb \xd1\x83\xd0\xb51\xd1\x81 \xd1\x83\xd0\xb52\xd1\x811\xd0\xba \xd1\x83\xd0\xb5\xd1\x812\xd0\xbb \xd1\x83\xd0\xb52\xd1\x85 \xd1\x832\xd0\xb6\xd0\xb6 \xd1\x831\xd0\xb72\xd0\xb2 \xd1\x831\xd0\xb7\xd0\xbe \xd1\x83\xd0\xb7\xd0\xbe3\xd0\xbf \xd1\x831\xd0\xb8 \xd1\x831\xd0\xba\xd0\xb0 \xd1\x83\xd0\xba1\xd0\xb2 \xd1\x831\xd0\xba\xd0\xb8 \xd1\x831\xd0\xba\xd0\xbe \xd1\x83\xd0\xba\xd0\xbe1\xd0\xb1 \xd1\x831\xd0\xba\xd1\x831 \xd1\x831\xd0\xbb\xd0\xb0 \xd1\x831\xd0\xbb\xd0\xb5 \xd1\x831\xd0\xbb\xd1\x83 \xd1\x831\xd0\xbb\xd1\x8b\xd1\x85 \xd1\x831\xd0\xbb\xd1\x8e \xd1\x832\xd0\xbc\xd1\x87 \xd1\x833\xd0\xbd\xd0\xb0 \xd1\x83\xd0\xbd2\xd0\xb41\xd1\x80 \xd1\x831\xd0\xbd\xd1\x8c \xd1\x831\xd0\xbe \xd1\x83\xd0\xbe2\xd0\xb1 \xd1\x83\xd0\xbe2\xd0\xb2 \xd1\x832\xd0\xbe\xd0\xb7\xd0\xb0 \xd1\x83\xd0\xbe2\xd0\xba \xd1\x83\xd0\xbe2\xd0\xbf \xd1\x83\xd0\xbe2\xd1\x81 \xd1\x83\xd0\xbe\xd1\x81\xd1\x821 \xd1\x83\xd0\xbe2\xd1\x821 \xd1\x83\xd0\xbe2\xd1\x84 \xd1\x832\xd0\xbf\xd0\xbb \xd1\x83\xd0\xbf1\xd0\xbb\xd1\x8e \xd1\x833\xd0\xbf\xd1\x80\xd0\xbe \xd1\x831\xd1\x80\xd0\xb0 \xd1\x831\xd1\x80\xd0\xb5 \xd1\x83\xd1\x80\xd0\xb52\xd1\x823\xd1\x80 \xd1\x831\xd1\x80\xd0\xb8 \xd1\x83\xd1\x80\xd0\xba\xd0\xb53 \xd1\x831\xd1\x80\xd0\xbe \xd1\x832\xd1\x80\xd0\xbe\xd0\xb4 \xd1\x83\xd1\x80\xd0\xbe2\xd0\xb4\xd0\xbb \xd1\x83\xd1\x80\xd1\x822\xd1\x80 \xd1\x833\xd1\x80\xd1\x83 \xd1\x831\xd1\x80\xd1\x8b \xd1\x831\xd1\x80\xd1\x8e \xd1\x831\xd1\x80\xd1\x8f \xd1\x832\xd1\x81\xd0\xb0\xd0\xb4 \xd1\x831\xd1\x81\xd0\xb3 \xd1\x83\xd1\x811\xd0\xba\xd0\xb0 \xd1\x83\xd1\x811\xd0\xba\xd0\xb8 \xd1\x83\xd1\x81\xd0\xba3\xd0\xbb \xd1\x83\xd1\x811\xd0\xba\xd0\xbe\xd0\xbc \xd1\x831\xd1\x81\xd0\xba\xd1\x80 \xd1\x83\xd1\x811\xd0\xba\xd1\x83_ \xd1\x83\xd1\x812\xd0\xbb \xd1\x83\xd1\x81\xd0\xbb\xd0\xb04\xd0\xb63 \xd1\x83\xd1\x813\xd0\xbb\xd0\xb8 \xd1\x831\xd1\x81\xd0\xbc \xd1\x832\xd1\x81\xd0\xbd \xd1\x83\xd1\x812\xd0\xbf \xd1\x83\xd1\x813\xd1\x81 \xd1\x831\xd1\x81\xd1\x82\xd0\xb5 \xd1\x831\xd1\x81\xd1\x82\xd1\x8f \xd1\x831\xd1\x81\xd1\x84 2\xd1\x83\xd1\x81\xd1\x86 \xd1\x832\xd1\x81\xd1\x87 \xd1\x832\xd1\x81\xd1\x8c \xd1\x833\xd1\x81\xd1\x8c\xd1\x8f \xd1\x831\xd1\x82\xd0\xb0 \xd1\x833\xd1\x82\xd0\xb5\xd1\x80 \xd1\x831\xd1\x82\xd0\xb8 \xd1\x83\xd1\x822\xd0\xbb\xd1\x8f \xd1\x831\xd1\x82\xd0\xbe \xd1\x83\xd1\x82\xd0\xbe3\xd0\xbf2\xd1\x81 \xd1\x83\xd1\x821\xd1\x80\xd0\xb8 \xd1\x831\xd1\x82\xd1\x83 \xd1\x831\xd1\x82\xd1\x8b \xd1\x831\xd1\x82\xd1\x8c\xd0\xb5 \xd1\x833\xd1\x82\xd1\x8c\xd1\x8e 1\xd1\x83\xd1\x82\xd1\x8e \xd1\x831\xd1\x82\xd1\x8f \xd1\x831\xd1\x83 \xd1\x83\xd1\x83\xd0\xb32 \xd1\x83\xd1\x832\xd1\x81 \xd1\x833\xd1\x84\xd0\xb8 \xd1\x83\xd1\x841\xd0\xbb \xd1\x83\xd1\x842\xd0\xbb\xd1\x8f \xd1\x832\xd1\x84\xd1\x80 \xd1\x83\xd1\x851\xd0\xb0\xd0\xb4 \xd1\x83\xd1\x85\xd0\xb02\xd1\x82 \xd1\x832\xd1\x85\xd0\xb2 \xd1\x833\xd1\x854\xd0\xb2\xd0\xbe \xd1\x83\xd1\x851\xd0\xbb \xd1\x83\xd1\x853\xd0\xbb\xd1\x8f \xd1\x83\xd1\x851\xd1\x80 \xd1\x832\xd1\x87\xd0\xb5\xd0\xb1 1\xd1\x83\xd1\x87\xd1\x80 \xd1\x831\xd1\x87\xd1\x8c \xd1\x833\xd1\x88\xd0\xb5 \xd1\x833\xd1\x88\xd0\xb8 \xd1\x832\xd1\x88\xd0\xbb \xd1\x83\xd1\x881\xd0\xbb\xd0\xb0 \xd1\x832\xd1\x88\xd0\xbf 2\xd1\x83\xd1\x8d \xd1\x831\xd1\x8f \xd1\x83\xd1\x8f2\xd0\xb7 1\xd1\x84 \xd1\x84\xd0\xb02\xd0\xb11 \xd1\x84\xd0\xb02\xd0\xb3\xd0\xbd \xd1\x84\xd0\xb01\xd0\xb7\xd0\xbe \xd1\x84\xd0\xb0\xd0\xbd2\xd0\xb4 \xd1\x84\xd0\xb0\xd0\xbd\xd0\xb41\xd1\x80 \xd1\x84\xd0\xb01\xd1\x82\xd1\x80 \xd1\x84\xd0\xb02\xd1\x85 3\xd1\x84\xd0\xb0\xd1\x88 \xd1\x84\xd0\xb0\xd1\x8d1 2\xd1\x841\xd0\xb1 2\xd1\x841\xd0\xb2 2\xd1\x84\xd0\xb3 2\xd1\x841\xd0\xb4 \xd1\x84\xd0\xb5\xd0\xb21\xd1\x80 \xd1\x84\xd0\xb5\xd0\xb41\xd1\x80 \xd1\x84\xd0\xb51\xd0\xbe3 \xd1\x84\xd0\xb52\xd1\x811\xd0\xba \xd1\x844\xd0\xb8 \xd1\x84\xd0\xb8\xd0\xb02\xd0\xba1 \xd1\x84\xd0\xb82\xd0\xb3\xd0\xbb \xd1\x84\xd0\xb82\xd0\xb6 \xd1\x84\xd0\xb82\xd0\xb7\xd0\xbe \xd1\x84\xd0\xb82\xd0\xbd\xd0\xb8\xd0\xbd \xd1\x84\xd0\xb81\xd0\xbe 3\xd1\x84\xd0\xb8\xd1\x82 2\xd1\x841\xd0\xba \xd1\x842\xd0\xbb\xd0\xb0 \xd1\x842\xd0\xbb\xd0\xb8 \xd1\x842\xd0\xbb\xd0\xbe 2\xd1\x84\xd0\xbc 2\xd1\x841\xd0\xbd 2\xd1\x84\xd0\xbe\xd0\xb1\xd1\x8a 3\xd1\x84\xd0\xbe\xd0\xbd \xd1\x84\xd0\xbe2\xd1\x80\xd0\xb2 2\xd1\x841\xd0\xbe\xd1\x80\xd0\xb3 \xd1\x84\xd0\xbe\xd1\x803\xd1\x82\xd1\x80 \xd1\x84\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x84\xd0\xbe\xd1\x811\xd0\xba 3\xd1\x84\xd0\xbe\xd1\x82 \xd1\x84\xd0\xbe\xd1\x82\xd0\xbe3\xd0\xbf \xd1\x841\xd1\x80\xd0\xb0\xd0\xb1 \xd1\x84\xd1\x80\xd0\xb01\xd0\xb7 \xd1\x84\xd1\x80\xd0\xb01\xd1\x81 \xd1\x841\xd1\x80\xd0\xb0\xd1\x82 \xd1\x842\xd1\x80\xd0\xb5\xd0\xbd \xd1\x84\xd1\x80\xd0\xb52\xd1\x81 \xd1\x841\xd1\x80\xd0\xb8 \xd1\x842\xd1\x80\xd0\xb8\xd0\xb6 \xd1\x842\xd1\x80\xd0\xb8\xd0\xb7 \xd1\x841\xd1\x80\xd0\xbe \xd1\x842\xd1\x80\xd0\xbe\xd0\xbd \xd1\x841\xd1\x80\xd1\x83 2\xd1\x843\xd1\x81 2\xd1\x841\xd1\x82 \xd1\x842\xd1\x82\xd0\xbc \xd1\x842\xd1\x82\xd0\xbe\xd1\x80 2\xd1\x841\xd1\x832\xd0\xbf \xd1\x84\xd1\x833\xd1\x82\xd0\xbb 2\xd1\x84\xd1\x83\xd1\x84 2\xd1\x84\xd1\x84 2\xd1\x841\xd1\x87 2\xd1\x84\xd1\x882 2\xd1\x84\xd1\x8c_ \xd1\x842\xd1\x8e1 1\xd1\x85\xd0\xb0 \xd1\x85\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x85\xd0\xb02\xd0\xb4 2\xd1\x851\xd0\xb0\xd0\xba \xd1\x85\xd0\xb0\xd0\xbd2\xd0\xb4 \xd1\x85\xd0\xb0\xd0\xbe3 \xd1\x851\xd0\xb0\xd1\x80\xd1\x88 2\xd1\x851\xd0\xb1 1\xd1\x852\xd0\xb2 2\xd1\x853\xd0\xb2\xd0\xb5 2\xd1\x853\xd0\xb2\xd0\xb8 \xd1\x853\xd0\xb2\xd1\x8b 2\xd1\x85\xd0\xb3 \xd1\x853\xd0\xb42 1\xd1\x85\xd0\xb5 \xd1\x85\xd0\xb5\xd0\xbe3 \xd1\x851\xd0\xb72 1\xd1\x85\xd0\xb8 \xd1\x85\xd0\xb8\xd0\xb0\xd1\x821 \xd1\x85\xd0\xb8\xd0\xb52 2\xd1\x851\xd0\xb8\xd0\xb7\xd1\x8b \xd1\x85\xd0\xb81\xd1\x812 \xd1\x851\xd0\xba2 \xd1\x851\xd0\xbb\xd0\xb0\xd0\xb2 \xd1\x851\xd0\xbb\xd0\xb0\xd1\x81 \xd1\x851\xd0\xbb\xd0\xb0\xd1\x82 \xd1\x851\xd0\xbb\xd0\xb0\xd1\x86 1\xd1\x85\xd0\xbb\xd0\xb5\xd0\xb1 \xd1\x852\xd0\xbb\xd0\xb5\xd1\x81 \xd1\x851\xd0\xbb\xd0\xb5\xd1\x82 \xd1\x853\xd0\xbb\xd0\xbe_ \xd1\x852\xd0\xbb\xd0\xbe\xd0\xbf 1\xd1\x852\xd0\xbb\xd0\xbe\xd1\x80 \xd1\x851\xd0\xbb\xd1\x83 1\xd1\x852\xd0\xbc\xd1\x83 2\xd1\x851\xd0\xbd 3\xd1\x852\xd0\xbd\xd1\x8b 1\xd1\x85\xd0\xbe 2\xd1\x851\xd0\xbe2\xd0\xba \xd1\x85\xd0\xbe\xd0\xbf2 \xd1\x85\xd0\xbe2\xd0\xbf\xd0\xb5 \xd1\x85\xd0\xbe2\xd0\xbf\xd0\xbe\xd1\x80 \xd1\x85\xd0\xbe1\xd1\x80\xd1\x83 \xd1\x851\xd0\xbe\xd1\x81\xd0\xbc 2\xd1\x851\xd0\xbe\xd1\x81\xd0\xbd \xd1\x85\xd0\xbe\xd1\x842 \xd1\x85\xd0\xbe\xd1\x851\xd0\xbb \xd1\x85\xd0\xbe\xd1\x8f2 \xd1\x85\xd0\xbf2 \xd1\x851\xd1\x80\xd0\xb0\xd0\xb7 1\xd1\x85\xd1\x80\xd0\xb0\xd0\xbd \xd1\x851\xd1\x80\xd0\xb01\xd1\x812 \xd1\x851\xd1\x80\xd0\xb5\xd0\xb9 \xd1\x85\xd1\x80\xd0\xb82\xd0\xbf\xd0\xbb \xd1\x852\xd1\x80\xd0\xb8\xd1\x81 \xd1\x851\xd1\x80\xd0\xbe\xd0\xb2 1\xd1\x85\xd1\x80\xd0\xbe\xd0\xbc \xd1\x85\xd1\x80\xd0\xbe2\xd0\xbc\xd1\x87 \xd1\x851\xd1\x80\xd1\x8b \xd1\x851\xd1\x80\xd1\x8f 2\xd1\x851\xd1\x812 2\xd1\x851\xd1\x82 1\xd1\x85\xd1\x83_ \xd1\x851\xd1\x832\xd0\xb3 2\xd1\x85\xd1\x83\xd0\xb5 2\xd1\x85\xd1\x83\xd0\xb9 1\xd1\x85\xd1\x83\xd0\xbd \xd1\x851\xd1\x832\xd1\x80 \xd1\x85\xd1\x833\xd1\x80\xd0\xb0 1\xd1\x85\xd1\x83\xd1\x81 1\xd1\x85\xd1\x83\xd1\x88 2\xd1\x85\xd1\x83\xd1\x8e \xd1\x851\xd1\x852 2\xd1\x851\xd1\x872 2\xd1\x85\xd1\x88 \xd1\x85\xd1\x8c\xd1\x8e1 1\xd1\x86 \xd1\x86\xd0\xb01 3\xd1\x86\xd0\xb0_ 3\xd1\x86\xd0\xb0\xd0\xbc \xd1\x86\xd0\xb02\xd0\xbf\xd0\xbb 3\xd1\x86\xd0\xb0\xd1\x85 2\xd1\x861\xd0\xb1 \xd1\x862\xd0\xb2\xd0\xb5 2\xd1\x86\xd0\xb2\xd1\x8b 2\xd1\x86\xd0\xb3 2\xd1\x861\xd0\xb4 \xd1\x86\xd0\xb51\xd0\xb7 \xd1\x86\xd0\xb51\xd0\xba \xd1\x86\xd0\xb51\xd0\xbe\xd1\x82 \xd1\x86\xd0\xb5\xd0\xbf1\xd0\xbb \xd1\x86\xd0\xb5\xd1\x812\xd0\xbb \xd1\x86\xd0\xb51\xd1\x82 2\xd1\x86\xd0\xb5\xd1\x82\xd0\xb0\xd1\x82 2\xd1\x861\xd0\xb7 \xd1\x86\xd0\xb81 \xd1\x86\xd0\xb82\xd0\xba1 \xd1\x86\xd0\xb8\xd0\xba3\xd0\xbb \xd1\x86\xd0\xb82\xd0\xbe\xd0\xbb \xd1\x86\xd0\xb8\xd0\xbf2 \xd1\x86\xd0\xb82\xd1\x81\xd0\xba \xd1\x86\xd0\xb8\xd1\x833 \xd1\x86\xd0\xb8\xd1\x841\xd1\x80 2\xd1\x861\xd0\xba2 2\xd1\x861\xd0\xbb 2\xd1\x86\xd0\xbc 2\xd1\x861\xd0\xbd \xd1\x861\xd0\xbe2\xd0\xb1 2\xd1\x861\xd0\xbe2\xd0\xb4 2\xd1\x861\xd0\xbe\xd1\x82 2\xd1\x86\xd0\xbf2 2\xd1\x861\xd1\x80 2\xd1\x861\xd1\x81 2\xd1\x861\xd1\x82 3\xd1\x86\xd1\x83 2\xd1\x86\xd1\x86 2\xd1\x863\xd1\x882 3\xd1\x86\xd1\x8b \xd1\x86\xd1\x8b2\xd0\xbf \xd1\x86\xd1\x8b\xd0\xbf3\xd0\xbb \xd1\x86\xd1\x8e1 1\xd1\x87\xd0\xb0 \xd1\x87\xd0\xb02\xd0\xb4\xd1\x80 \xd1\x87\xd0\xb02\xd0\xb4\xd1\x86 \xd1\x87\xd0\xb02\xd0\xb5\xd0\xb2\xd0\xbe \xd1\x87\xd0\xb02\xd0\xb5\xd0\xb2\xd1\x8b \xd1\x87\xd0\xb02\xd0\xb5\xd1\x80 \xd1\x87\xd0\xb0\xd1\x81\xd1\x821\xd0\xb2 \xd1\x87\xd0\xb01\xd1\x81\xd1\x82\xd0\xb5 \xd1\x87\xd0\xb01\xd1\x81\xd1\x82\xd1\x83 \xd1\x87\xd0\xb01\xd1\x81\xd1\x82\xd1\x8f 3\xd1\x87\xd0\xb0\xd1\x82\xd0\xbe 3\xd1\x87\xd0\xb0\xd1\x82\xd1\x8b 2\xd1\x871\xd0\xb1 \xd1\x871\xd0\xb2 2\xd1\x871\xd0\xb4 1\xd1\x87\xd0\xb5 \xd1\x87\xd0\xb51\xd0\xb2\xd0\xbb \xd1\x87\xd0\xb52\xd0\xb3\xd0\xbb \xd1\x87\xd0\xb51\xd0\xbe \xd1\x87\xd0\xb5\xd1\x802\xd1\x81 \xd1\x87\xd0\xb5\xd1\x80\xd1\x81\xd1\x821 \xd1\x87\xd0\xb51\xd1\x81\xd0\xbb \xd1\x872\xd0\xb6 \xd1\x87\xd0\xb6\xd0\xbe2 1\xd1\x87\xd0\xb8 3\xd1\x87\xd0\xb8\xd0\xba 3\xd1\x87\xd0\xb8\xd1\x86 2\xd1\x871\xd0\xba 1\xd1\x872\xd0\xbb\xd0\xb0 \xd1\x872\xd0\xbb\xd0\xb5 \xd1\x873\xd0\xbb\xd0\xb5\xd0\xb3 \xd1\x873\xd0\xbb\xd0\xb5\xd0\xb6 2\xd1\x87\xd0\xbb\xd0\xb8 \xd1\x872\xd0\xbb\xd0\xb8_ 1\xd1\x872\xd0\xbb\xd0\xbe 1\xd1\x87\xd0\xbc 2\xd1\x87\xd0\xbc\xd0\xb0 2\xd1\x87\xd0\xbc\xd0\xb5 \xd1\x872\xd0\xbc\xd0\xbe 2\xd1\x871\xd0\xbd 3\xd1\x87\xd0\xbe 2\xd1\x871\xd1\x81 2\xd1\x871\xd1\x82\xd0\xb0 \xd1\x872\xd1\x82\xd0\xb5 2\xd1\x87\xd1\x82\xd0\xbc 1\xd1\x87\xd1\x83 3\xd1\x87\xd1\x83\xd0\xba \xd1\x872\xd1\x85 2\xd1\x871\xd1\x87 2\xd1\x87\xd1\x8c_ 1\xd1\x87\xd1\x8c\xd0\xb5 1\xd1\x87\xd1\x8c\xd0\xb8 2\xd1\x87\xd1\x8c\xd1\x81 2\xd1\x87\xd1\x8c\xd1\x82 1\xd1\x87\xd1\x8c\xd1\x8e 1\xd1\x87\xd1\x8c\xd1\x8f 1\xd1\x88 \xd1\x88\xd0\xb02\xd0\xb1\xd0\xbb \xd1\x88\xd0\xb02\xd0\xb3\xd0\xbd \xd1\x88\xd0\xb02\xd0\xb31\xd1\x80 \xd1\x88\xd0\xb02\xd0\xb4\xd1\x80 \xd1\x88\xd0\xb0\xd0\xbd2\xd0\xba\xd1\x80 \xd1\x88\xd0\xb0\xd1\x803\xd1\x822 \xd1\x88\xd0\xb01\xd1\x81\xd1\x82 \xd1\x88\xd0\xb01\xd1\x82\xd1\x80\xd0\xbe 2\xd1\x881\xd0\xb1 \xd1\x882\xd0\xb2 \xd1\x883\xd0\xb2\xd0\xb5\xd0\xbd \xd1\x88\xd0\xb52\xd0\xb3\xd0\xbb \xd1\x88\xd0\xb51\xd0\xba \xd1\x88\xd0\xb51\xd0\xbe2 \xd1\x88\xd0\xb53\xd0\xbf\xd0\xbb \xd1\x88\xd0\xb51\xd1\x812 \xd1\x88\xd0\xb82\xd0\xb1\xd0\xbb \xd1\x88\xd0\xb82\xd0\xbf\xd0\xbb \xd1\x88\xd0\xb8\xd1\x841\xd1\x80 2\xd1\x881\xd0\xba2 3\xd1\x882\xd0\xba\xd0\xbe\xd0\xbb 2\xd1\x881\xd0\xbb\xd0\xb5\xd0\xb9 2\xd1\x88\xd0\xbb\xd0\xb5\xd0\xbd \xd1\x882\xd0\xbb\xd0\xb8_ 2\xd1\x88\xd0\xbb\xd0\xb8\xd0\xb2 2\xd1\x88\xd0\xbb\xd0\xb8\xd0\xbb \xd1\x882\xd0\xbb\xd0\xb8\xd0\xbd \xd1\x882\xd0\xbb\xd0\xb8\xd1\x81 \xd1\x882\xd0\xbb\xd0\xb8\xd1\x82\xd0\xb5 \xd1\x882\xd0\xbb\xd0\xb8\xd1\x84 \xd1\x882\xd0\xbb\xd0\xbe_ 2\xd1\x88\xd0\xbb\xd0\xbe\xd0\xb2 \xd1\x882\xd0\xbb\xd0\xbe\xd0\xb3 \xd1\x881\xd0\xbb\xd1\x8b \xd1\x882\xd0\xbb\xd1\x8e 2\xd1\x88\xd0\xbb\xd1\x8f\xd0\xb5 2\xd1\x88\xd0\xbb\xd1\x8f\xd0\xba \xd1\x882\xd0\xbb\xd1\x8f\xd0\xbf 2\xd1\x88\xd0\xbb\xd1\x8f\xd1\x82 2\xd1\x88\xd0\xbb\xd1\x8f\xd1\x87 2\xd1\x88\xd0\xbb\xd1\x8f\xd1\x8e 2\xd1\x88\xd0\xbc 3\xd1\x882\xd0\xbc\xd1\x8b 4\xd1\x883\xd0\xbc\xd1\x8b_ 2\xd1\x881\xd0\xbd 4\xd1\x88\xd0\xbd\xd0\xb8 \xd1\x882\xd0\xbd\xd1\x83\xd1\x80 \xd1\x882\xd0\xbf2 \xd1\x883\xd0\xbf\xd1\x80 2\xd1\x881\xd1\x80 2\xd1\x881\xd1\x81 \xd1\x881\xd1\x82\xd0\xb8 2\xd1\x88\xd1\x82\xd1\x81 \xd1\x88\xd1\x832\xd0\xb5\xd0\xb2 \xd1\x88\xd1\x83\xd1\x81\xd1\x821 2\xd1\x88\xd1\x84 \xd1\x881\xd1\x85 2\xd1\x88\xd1\x86 2\xd1\x881\xd1\x87 2\xd1\x88\xd1\x8c 4\xd1\x88\xd1\x8c_ 3\xd1\x88\xd1\x8c\xd0\xb5 3\xd1\x88\xd1\x8c\xd0\xb8 3\xd1\x88\xd1\x8c\xd1\x8e 3\xd1\x88\xd1\x8c\xd1\x8f \xd1\x882\xd1\x8e1 1\xd1\x89 2\xd1\x893\xd0\xb22 \xd1\x89\xd0\xb51\xd0\xb12\xd0\xbb \xd1\x89\xd0\xb52\xd0\xb3\xd0\xbb \xd1\x89\xd0\xb5\xd0\xb41\xd1\x80 \xd1\x89\xd0\xb5\xd0\xb82 \xd1\x89\xd0\xb5\xd0\xb8\xd1\x811 \xd1\x89\xd0\xb51\xd1\x81 \xd1\x89\xd0\xb51\xd1\x85 \xd1\x89\xd0\xb5\xd1\x882 \xd1\x89\xd0\xb53\xd1\x88\xd0\xba \xd1\x89\xd0\xb82\xd0\xbf1\xd0\xbb 2\xd1\x89\xd0\xbc 2\xd1\x891\xd0\xbd 2\xd1\x891\xd1\x80 2\xd1\x89\xd1\x8c_ \xd1\x8a1 \xd1\x8a\xd0\xb52\xd0\xb3 \xd1\x8a\xd0\xb52\xd0\xb4 \xd1\x8a\xd0\xb53\xd0\xb4\xd0\xbe \xd1\x8a\xd0\xb52\xd0\xbb \xd1\x8a2\xd0\xb52\xd1\x80 \xd1\x8a\xd0\xb52\xd1\x81 \xd1\x8a\xd0\xb52\xd1\x85\xd0\xb8 \xd1\x8a\xd1\x8e2 \xd1\x8a\xd1\x8f2 \xd1\x8a\xd1\x8f3\xd0\xbd \xd1\x8b1 \xd1\x8b2\xd0\xb1\xd0\xbb \xd1\x8b3\xd0\xb3\xd0\xb0 \xd1\x8b3\xd0\xb3\xd0\xb8 \xd1\x8b\xd0\xb32\xd0\xbb \xd1\x8b2\xd0\xb3\xd0\xbd \xd1\x8b2\xd0\xb4\xd0\xbb \xd1\x8b\xd0\xb42\xd1\x80\xd0\xb5 \xd1\x8b2\xd0\xb41\xd1\x80\xd0\xbe \xd1\x8b2\xd0\xb4\xd1\x80\xd1\x8f \xd1\x8b\xd0\xb52 \xd1\x8b3\xd0\xb62\xd0\xb4 \xd1\x8b\xd0\xb72\xd0\xb2\xd0\xb0 \xd1\x8b\xd0\xb72\xd0\xb4 \xd1\x8b2\xd0\xb7\xd0\xbb \xd1\x8b2\xd0\xb7\xd0\xbd \xd1\x8b\xd0\xb72\xd0\xbd\xd0\xb0 \xd1\x8b\xd0\xb82 \xd1\x8b\xd0\xb8\xd0\xb31 \xd1\x8b2\xd0\xba1\xd0\xb2 \xd1\x8b\xd0\xba2\xd0\xbb \xd1\x8b2\xd0\xba3\xd0\xbb\xd0\xbe \xd1\x8b\xd0\xba\xd0\xbe1\xd0\xb7 \xd1\x8b\xd0\xba1\xd1\x81 \xd1\x8b2\xd0\xbb\xd1\x8c \xd1\x8b2\xd0\xbc\xd1\x87 \xd1\x8b\xd0\xbd\xd0\xbe\xd1\x813\xd0\xbb \xd1\x8b3\xd0\xbf\xd0\xbe \xd1\x8b\xd1\x80\xd0\xb02\xd1\x813 \xd1\x8b\xd1\x802\xd0\xb2 \xd1\x8b\xd1\x80\xd0\xb52\xd1\x85 \xd1\x8b3\xd1\x81\xd0\xb0 \xd1\x8b3\xd1\x81\xd0\xb5 \xd1\x8b\xd1\x811\xd0\xba\xd0\xb8 \xd1\x8b\xd1\x811\xd0\xba\xd1\x83 \xd1\x8b2\xd1\x81\xd0\xbd \xd1\x8b3\xd1\x81\xd0\xbe \xd1\x8b\xd1\x812\xd0\xbf \xd1\x8b2\xd1\x81\xd1\x85 \xd1\x8b\xd1\x812\xd1\x87 \xd1\x8b2\xd1\x81\xd1\x88 \xd1\x8b\xd1\x821\xd0\xb2\xd0\xb8 \xd1\x8b\xd1\x822\xd1\x80 \xd1\x8b3\xd1\x82\xd1\x8c\xd1\x8e \xd1\x8b3\xd1\x82\xd1\x8c\xd1\x8f \xd1\x8b\xd1\x832 \xd1\x8b2\xd1\x881\xd0\xbb \xd1\x8b3\xd1\x88\xd1\x8c \xd1\x8c1 \xd1\x8c\xd0\xb12 \xd1\x8c2\xd0\xb2\xd1\x8f \xd1\x8c2\xd0\xb4\xd1\x86 \xd1\x8c2\xd0\xb5 \xd1\x8c\xd0\xb51\xd0\xb7\xd0\xbe \xd1\x8c\xd0\xb51\xd0\xba \xd1\x8c\xd0\xb52\xd1\x811\xd0\xba \xd1\x8c2\xd0\xb7\xd0\xbd \xd1\x8c2\xd0\xb81 \xd1\x8c2\xd0\xba\xd0\xbb \xd1\x8c\xd0\xbc\xd0\xb83\xd0\xb4 \xd1\x8c\xd0\xbc\xd0\xb83\xd0\xba \xd1\x8c\xd0\xbc\xd0\xbe1 \xd1\x8c\xd0\xbd\xd0\xb52\xd0\xbe \xd1\x8c2\xd0\xbe \xd1\x8c2\xd0\xbf1\xd0\xbb \xd1\x8c3\xd0\xbf2\xd1\x82\xd0\xbe \xd1\x8c\xd1\x812\xd0\xba \xd1\x8c2\xd1\x81\xd0\xbd \xd1\x8c2\xd1\x81\xd1\x82\xd0\xb8 \xd1\x8c2\xd1\x81\xd1\x82\xd1\x8f \xd1\x8c2\xd1\x821\xd0\xb0\xd0\xbc\xd0\xbf \xd1\x8c\xd1\x82\xd0\xb83\xd0\xbc \xd1\x8c2\xd1\x82\xd0\xbc \xd1\x8c2\xd1\x82\xd0\xbe\xd1\x82 \xd1\x8c2\xd1\x82\xd1\x80\xd0\xb0\xd0\xb1 \xd1\x8c\xd1\x822\xd1\x80\xd0\xb5 \xd1\x8c\xd1\x822\xd1\x80\xd1\x83 \xd1\x8c\xd1\x822\xd1\x80\xd1\x8b \xd1\x8c\xd1\x85\xd0\xbe2 \xd1\x8c\xd1\x85\xd0\xbe\xd0\xb71 \xd1\x8c2\xd1\x89\xd0\xb0 \xd1\x8c2\xd1\x89\xd0\xb5 \xd1\x8c2\xd1\x89\xd1\x83 \xd1\x8c2\xd1\x8e \xd1\x8c2\xd1\x8f \xd1\x8c\xd1\x8f1\xd0\xb2 \xd1\x8c3\xd1\x8f\xd0\xb3\xd1\x81 1\xd1\x8d \xd1\x8d1\xd0\xb2 \xd1\x8d\xd0\xb21\xd1\x80 2\xd1\x8d\xd0\xb3 \xd1\x8d\xd0\xb41\xd1\x80 \xd1\x8d\xd0\xba1\xd0\xbb \xd1\x8d\xd0\xba\xd1\x811 \xd1\x8d\xd0\xba2\xd1\x81\xd1\x82 \xd1\x8d\xd0\xbb\xd0\xb51\xd0\xbe \xd1\x8d2\xd0\xbc \xd1\x8d3\xd0\xbc\xd0\xb0 \xd1\x8d2\xd0\xbd \xd1\x8d3\xd0\xbd\xd1\x8c \xd1\x8d\xd0\xbe2\xd0\xb7 \xd1\x8d2\xd0\xbf \xd1\x8d\xd0\xbf\xd0\xb83\xd0\xba \xd1\x8d1\xd1\x80\xd0\xb5 \xd1\x8d1\xd1\x80\xd0\xb8 \xd1\x8d\xd1\x80\xd0\xb84\xd1\x82\xd1\x80 \xd1\x8d\xd1\x80\xd0\xbe1\xd1\x812 \xd1\x8d1\xd1\x80\xd1\x83 \xd1\x8d1\xd1\x80\xd1\x8b \xd1\x8d\xd1\x811 \xd1\x8d\xd1\x81\xd0\xba2 \xd1\x8d\xd1\x813\xd0\xbc \xd1\x8d2\xd1\x81\xd0\xbe \xd1\x8d\xd1\x813\xd1\x82\xd0\xb5 \xd1\x8d\xd1\x812\xd1\x821\xd1\x80 \xd1\x8d2\xd1\x82\xd0\xb5 \xd1\x8d\xd1\x82\xd0\xb8\xd0\xbb1\xd0\xb0 \xd1\x8d\xd1\x821\xd1\x80\xd0\xb0 \xd1\x8d2\xd1\x84 \xd1\x8d\xd1\x852 \xd1\x8d\xd1\x85\xd0\xbe3 \xd1\x8d2\xd1\x86 \xd1\x8d\xd1\x8f2 1\xd1\x8e \xd1\x8e1\xd0\xb0 \xd1\x8e1\xd0\xb1 \xd1\x8e2\xd0\xb1\xd0\xb2 \xd1\x8e2\xd0\xb1\xd0\xbb \xd1\x8e2\xd0\xb11\xd1\x80\xd0\xb5 \xd1\x8e1\xd0\xb2 \xd1\x8e1\xd0\xb4\xd1\x8c \xd1\x8e1\xd0\xb5 \xd1\x8e\xd0\xb72\xd0\xb3 \xd1\x8e\xd0\xb7\xd0\xb82\xd0\xba \xd1\x8e1\xd0\xb7\xd0\xbe \xd1\x8e1\xd0\xb8 \xd1\x8e2\xd0\xb8\xd0\xb4\xd0\xb0\xd0\xbb \xd1\x8e1\xd0\xba \xd1\x8e2\xd0\xba1\xd0\xb2 \xd1\x8e1\xd0\xbb\xd0\xb0 \xd1\x8e1\xd0\xbb\xd0\xb5 \xd1\x8e2\xd0\xbb\xd0\xb8 \xd1\x8e1\xd0\xbb\xd1\x8e 2\xd1\x8e\xd0\xbc \xd1\x8e2\xd0\xbc\xd1\x87 \xd1\x8e2\xd0\xbd\xd1\x8c \xd1\x8e1\xd0\xbe1 \xd1\x8e1\xd1\x80\xd0\xb0 \xd1\x8e1\xd1\x80\xd0\xb5 \xd1\x8e\xd1\x80\xd0\xb54\xd0\xbc \xd1\x8e1\xd1\x80\xd0\xb8 \xd1\x8e\xd1\x80\xd0\xb82\xd1\x81\xd0\xba \xd1\x8e1\xd1\x80\xd0\xbe \xd1\x8e1\xd1\x80\xd1\x83 \xd1\x8e1\xd1\x80\xd1\x8b \xd1\x8e2\xd1\x811\xd0\xba \xd1\x8e1\xd1\x81\xd1\x82\xd0\xb0 \xd1\x8e1\xd1\x81\xd1\x82\xd0\xb5 \xd1\x8e1\xd1\x81\xd1\x82\xd0\xbe \xd1\x8e1\xd1\x81\xd1\x82\xd1\x8f \xd1\x8e1\xd1\x82\xd0\xb8 \xd1\x8e1\xd1\x82\xd0\xbe \xd1\x8e1\xd1\x82\xd1\x83 \xd1\x8e1\xd1\x82\xd1\x8b \xd1\x8e1\xd1\x85 \xd1\x8e\xd1\x85\xd0\xb01\xd1\x81 \xd1\x8e1\xd1\x87 \xd1\x8e2\xd1\x89\xd1\x8c \xd1\x8e1\xd1\x8f \xd1\x8f2\xd0\xb1\xd1\x80 \xd1\x8f\xd0\xb11\xd1\x80\xd0\xb0 \xd1\x8f\xd0\xb13\xd1\x80\xd0\xb5 \xd1\x8f\xd0\xb11\xd1\x80\xd0\xb8 \xd1\x8f\xd0\xb13\xd1\x80\xd1\x8e 3\xd1\x8f\xd0\xb2\xd0\xb8\xd0\xba\xd1\x81 \xd1\x8f1\xd0\xb2\xd0\xbe \xd1\x8f1\xd0\xb2\xd1\x83 \xd1\x8f1\xd0\xb22\xd1\x85 \xd1\x8f2\xd0\xb31\xd0\xbb \xd1\x8f2\xd0\xb3\xd0\xbd \xd1\x8f\xd0\xb41\xd0\xb2 \xd1\x8f\xd0\xb41\xd1\x80 \xd1\x8f1\xd0\xb5 \xd1\x8f\xd0\xb72\xd0\xb3\xd0\xbd \xd1\x8f1\xd0\xb7\xd0\xbe \xd1\x8f1\xd0\xb8 \xd1\x8f1\xd0\xba \xd1\x8f2\xd0\xba1\xd0\xb2 \xd1\x8f2\xd0\xba1\xd0\xbb \xd1\x8f\xd0\xba1\xd1\x81 \xd1\x8f1\xd0\xbb \xd1\x8f2\xd0\xbb\xd1\x8c \xd1\x8f\xd0\xbc2\xd0\xb13\xd0\xbb \xd1\x8f2\xd0\xbc\xd1\x8c \xd1\x8f3\xd0\xbd\xd0\xb0 \xd1\x8f\xd0\xbd\xd1\x812 \xd1\x8f1\xd1\x80\xd0\xb0 \xd1\x8f1\xd1\x80\xd0\xb8 \xd1\x8f1\xd1\x80\xd0\xbe \xd1\x8f1\xd1\x80\xd1\x8c \xd1\x8f\xd1\x811\xd0\xba \xd1\x8f\xd1\x811\xd0\xbb \xd1\x8f\xd1\x812\xd1\x82 \xd1\x8f\xd1\x81\xd1\x823\xd0\xb2 \xd1\x8f1\xd1\x81\xd1\x82\xd0\xbe \xd1\x8f\xd1\x81\xd1\x821\xd1\x80 \xd1\x8f1\xd1\x82\xd0\xb0 \xd1\x8f\xd1\x823\xd0\xb2 \xd1\x8f3\xd1\x82\xd0\xb8 \xd1\x8f\xd1\x82\xd0\xb81\xd0\xb7 \xd1\x8f1\xd1\x82\xd0\xbe \xd1\x8f1\xd1\x82\xd1\x83 \xd1\x8f1\xd1\x82\xd1\x8b \xd1\x8f3\xd1\x82\xd1\x8c\xd1\x8e \xd1\x8f3\xd1\x82\xd1\x8c\xd1\x8f \xd1\x8f1\xd1\x82\xd1\x8f \xd1\x8f1\xd1\x83 \xd1\x8f\xd1\x851\xd0\xbb \xd1\x8f1\xd1\x85\xd1\x83 \xd1\x8f\xd1\x86\xd0\xb51 \xd1\x8f2\xd1\x88\xd0\xbb 2\xd1\x8f\xd1\x8e_ 2\xd1\x8f1\xd1\x8f % _\xd0\xb1\xd0\xbe2\xd0\xb4\xd1\x80\xd0\xb0 _\xd0\xb2\xd1\x81\xd1\x822\xd1\x80 _\xd0\xb4\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd0\xbb _\xd0\xb4\xd0\xbe1\xd0\xb12\xd1\x80\xd0\xb8 _\xd0\xbe\xd0\xb12\xd0\xbb\xd1\x8e\xd1\x8e _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd0\xb5 _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd0\xb9 _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb5\xd1\x8e _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb8\xd0\xb2 _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb8\xd0\xbb _\xd0\xbe\xd0\xb12\xd1\x80\xd0\xb8\xd1\x82 _\xd0\xbf\xd0\xb02\xd0\xbd1\xd0\xb8\xd1\x81 _\xd0\xbf\xd0\xbe\xd0\xbc2\xd0\xbd\xd1\x83 _\xd1\x80\xd0\xb5\xd0\xb02\xd0\xbd _\xd1\x80\xd0\xbe2\xd1\x813\xd0\xbf\xd0\xb8 _\xd1\x81\xd0\xbe2\xd0\xbf\xd0\xbb\xd0\xb0 \xd0\xb02\xd0\xbd\xd1\x8c\xd1\x88 \xd0\xb0\xd1\x82\xd1\x80\xd0\xbe2\xd1\x81\xd0\xba \xd0\xb1\xd0\xb5\xd0\xb7\xd1\x832\xd1\x81 \xd0\xb1\xd0\xb8\xd0\xbd\xd0\xbe2\xd1\x81\xd0\xba \xd0\xb2\xd0\xb8\xd0\xb72\xd0\xb3\xd0\xbd \xd0\xb2\xd1\x8b\xd0\xb12\xd1\x80\xd0\xb5 \xd0\xb3\xd1\x81\xd1\x824\xd1\x80 \xd0\xb4\xd0\xb81\xd1\x812\xd0\xbb\xd0\xbe\xd0\xb2 \xd0\xb4\xd0\xbe\xd1\x812\xd0\xbd\xd1\x8f \xd0\xb4\xd1\x80\xd0\xbe2\xd0\xb63\xd0\xb6 2\xd0\xb4\xd1\x80\xd1\x83\xd0\xb6\xd0\xb5\xd0\xb9 \xd0\xb52\xd0\xbc\xd1\x8c\xd0\xb4 \xd0\xb52\xd0\xbe3\xd0\xbf\xd0\xbb\xd0\xb0\xd1\x82\xd0\xbe \xd0\xb52\xd0\xbe3\xd0\xbf\xd0\xbe\xd0\xb7\xd0\xb8 \xd0\xb5\xd1\x80\xd0\xb53\xd1\x812\xd1\x81\xd0\xbe 4\xd0\xb63\xd0\xb4\xd0\xb8\xd0\xba 4\xd0\xb63\xd0\xb4\xd0\xb8\xd1\x87 \xd0\xb7\xd0\xb0\xd0\xb82\xd0\xbb \xd0\xb7\xd0\xb0\xd0\xbe2\xd0\xb7 2\xd0\xb71\xd0\xb02\xd1\x85\xd0\xb0\xd0\xb2 \xd0\xb7\xd0\xb0\xd1\x8e2\xd0\xbb \xd0\xb72\xd1\x80\xd1\x8f\xd1\x82 \xd0\xb7\xd1\x832\xd0\xbc\xd1\x8c 6\xd0\xb7\xd1\x8c_ \xd0\xb82\xd0\xbb1\xd0\xb02\xd0\xbc\xd0\xb8\xd0\xbd \xd0\xb8\xd0\xbb\xd0\xbb\xd0\xbe3\xd0\xba2 \xd0\xb92\xd0\xba\xd1\x8c \xd0\xbb\xd0\xb02\xd0\xb11\xd1\x80 \xd0\xbb\xd1\x833\xd1\x814\xd0\xbd \xd0\xbc\xd0\xb52\xd0\xb4\xd0\xb8\xd0\xbd\xd1\x81 \xd0\xbc\xd0\xb52\xd0\xb41\xd0\xbe2\xd1\x81\xd0\xbc \xd0\xbc\xd0\xb5\xd1\x82\xd0\xb82\xd0\xbb1\xd0\xb0\xd0\xbc \xd0\xbc\xd0\xb8\xd1\x814\xd1\x813\xd0\xbd \xd0\xbd\xd0\xb0\xd1\x802\xd0\xb2\xd0\xb0\xd1\x82 \xd0\xbd\xd0\xb52\xd0\xbe3\xd1\x80\xd0\xb5 \xd0\xbd\xd0\xb81\xd1\x812\xd0\xba\xd0\xbe\xd0\xbb \xd0\xbd\xd0\xb84\xd1\x81\xd1\x8c_ \xd0\xbd\xd0\xbe4\xd0\xbb1\xd0\xb02\xd0\xbc\xd0\xb8\xd0\xbd \xd0\xbd2\xd1\x82\xd1\x80\xd0\xb0\xd1\x81\xd1\x81 \xd0\xbe2\xd0\xb41\xd0\xbe2\xd0\xb1\xd0\xbe\xd0\xbb \xd0\xbe4\xd0\xb63\xd0\xb4\xd0\xb5\xd0\xb2 \xd0\xbe1\xd0\xb82\xd1\x811\xd1\x82\xd1\x80 \xd0\xbe\xd0\xb9\xd1\x814\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xbe2\xd0\xbc3\xd1\x87\xd0\xb5_ \xd0\xbe\xd0\xbd\xd0\xb83\xd0\xbb2\xd0\xb0\xd0\xbc \xd0\xbe\xd0\xbd2\xd1\x82\xd1\x80\xd0\xb0\xd1\x82 \xd0\xbe2\xd0\xbf\xd0\xbb\xd1\x8e\xd1\x81 \xd0\xbe\xd1\x81\xd0\xbe4\xd0\xbc3\xd0\xbd \xd0\xbe\xd1\x82\xd0\xb84\xd0\xb4\xd0\xbd \xd0\xbf\xd0\xb5\xd1\x80\xd0\xb51\xd1\x812\xd0\xbd \xd0\xbf\xd0\xbe2\xd0\xb4\xd0\xbe\xd0\xb4\xd0\xb5 \xd0\xbf\xd0\xbe2\xd0\xb41\xd1\x832\xd1\x80\xd0\xbe \xd0\xbf\xd0\xbe\xd0\xb52\xd0\xb6 \xd0\xbf\xd0\xbe2\xd1\x81\xd1\x82\xd0\xb8\xd0\xbd \xd0\xbf\xd1\x80\xd0\xb5\xd0\xbc2\xd0\xbd\xd0\xbe \xd0\xbf\xd1\x80\xd0\xb8\xd1\x87\xd0\xb52\xd1\x811\xd0\xba \xd0\xbf\xd1\x82\xd0\xb84\xd0\xb4\xd0\xbd \xd1\x80\xd0\xb5\xd0\xb4\xd0\xbe4\xd0\xbf\xd0\xbb \xd1\x80\xd0\xb5\xd0\xb64\xd0\xb4\xd0\xb8 \xd1\x80\xd0\xbd\xd0\xb83\xd0\xbb2\xd0\xb03\xd0\xbc \xd1\x80\xd0\xbe\xd0\xb12\xd0\xbb\xd0\xb5\xd1\x8e 2\xd1\x81\xd0\xb1\xd1\x80\xd1\x83\xd0\xba1 \xd1\x81\xd0\xbe2\xd1\x81\xd1\x82\xd1\x80\xd0\xb8\xd1\x82 \xd1\x81\xd0\xbe3\xd1\x822\xd0\xba\xd0\xb0\xd0\xbb 2\xd1\x81\xd1\x82\xd1\x87\xd0\xb5_ 2\xd1\x81\xd1\x82\xd1\x8c\xd1\x82 \xd1\x81\xd1\x8b2\xd0\xbc\xd0\xb8\xd1\x82 2\xd1\x81\xd1\x8c\xd1\x81\xd1\x8f_ 6\xd1\x82\xd1\x80_ \xd1\x82\xd1\x80\xd0\xbe2\xd0\xb5\xd1\x82\xd0\xb5\xd1\x81 6\xd1\x85\xd1\x83\xd1\x8f_ \xd1\x8b2\xd1\x80\xd1\x8c\xd0\xbc \xd1\x8b\xd1\x8f2\xd0\xb2\xd1\x8f \xd1\x8c\xd0\xb1\xd0\xb0\xd1\x822 \xd0\xb01\xd0\xb2\xd1\x91 \xd0\xb02\xd0\xb4\xd0\xb2\xd1\x91 \xd0\xb01\xd1\x91 \xd0\xb0\xd0\xb73\xd0\xb2\xd1\x91\xd0\xb7 \xd0\xb01\xd0\xbb\xd1\x91 2\xd0\xb0\xd0\xbb\xd1\x91\xd0\xba 2\xd0\xb0\xd0\xbc\xd1\x91\xd1\x82 \xd0\xb0\xd0\xbc2\xd0\xbd\xd1\x91\xd1\x82 \xd0\xb01\xd1\x80\xd1\x91 \xd0\xb0\xd1\x813\xd1\x82\xd1\x91\xd0\xbc \xd0\xb01\xd1\x82\xd1\x8c\xd1\x91 1\xd0\xb1\xd1\x91 \xd0\xb1\xd1\x912\xd0\xb41\xd1\x80 \xd0\xb13\xd0\xbb\xd1\x91\xd0\xbd \xd0\xb12\xd0\xbb\xd1\x91\xd1\x811\xd0\xba \xd0\xb12\xd0\xbb\xd1\x8e\xd1\x91 \xd0\xb11\xd1\x80\xd1\x91\xd0\xba \xd0\xb12\xd1\x80\xd1\x91\xd0\xbc \xd0\xb12\xd1\x80\xd1\x91\xd1\x85 1\xd0\xb2\xd0\xb5\xd1\x91 3\xd0\xb2\xd0\xb5\xd0\xb7\xd1\x91 \xd0\xb2\xd1\x91\xd0\xb41\xd1\x80 1\xd0\xb2\xd1\x91\xd0\xb7 2\xd0\xb2\xd1\x91\xd1\x80\xd0\xb4 1\xd0\xb2\xd1\x91\xd1\x81 \xd0\xb22\xd0\xbb\xd1\x91\xd0\xba \xd0\xb22\xd0\xbb\xd1\x91\xd1\x82 1\xd0\xb2\xd0\xbc\xd1\x91 \xd0\xb22\xd0\xbd\xd1\x91\xd1\x81 2\xd0\xb21\xd1\x80\xd1\x91\xd0\xbd 3\xd0\xb2\xd1\x81\xd1\x913 1\xd0\xb2\xd1\x8c\xd1\x91 \xd0\xb31\xd0\xbb\xd1\x91 \xd0\xb32\xd0\xbb\xd1\x91\xd1\x82 \xd0\xb32\xd0\xbd\xd1\x91\xd0\xb2 \xd0\xb33\xd0\xbd\xd1\x91\xd0\xbd \xd0\xb32\xd0\xbd\xd0\xbe\xd1\x91 \xd0\xb41\xd0\xb2\xd1\x91 1\xd0\xb4\xd1\x91 _\xd0\xb4\xd0\xbe\xd0\xb12\xd1\x80\xd1\x91\xd0\xbb 2\xd0\xb4\xd0\xbe\xd0\xbf\xd0\xbb\xd1\x91 \xd0\xb4\xd0\xbe2\xd0\xbf\xd1\x80\xd1\x91 \xd0\xb41\xd1\x80\xd1\x91 \xd0\xb42\xd1\x80\xd1\x91\xd0\xb1 2\xd0\xb43\xd1\x80\xd1\x91\xd0\xb6 \xd0\xb42\xd1\x80\xd1\x91\xd0\xbc 1\xd0\xb4\xd1\x80\xd1\x91\xd0\xbc\xd0\xb0 1\xd0\xb4\xd1\x80\xd1\x91\xd0\xbc\xd1\x8b 2\xd0\xb43\xd1\x80\xd1\x91\xd0\xbd \xd0\xb4\xd1\x8a\xd1\x912\xd0\xbc 1\xd0\xb4\xd1\x8c\xd1\x91 \xd0\xb5\xd0\xb11\xd1\x80\xd1\x91\xd0\xbd \xd0\xb51\xd0\xb2\xd1\x91 2\xd0\xb5\xd0\xb2\xd1\x91\xd1\x80 2\xd0\xb51\xd0\xb2\xd1\x80\xd1\x91 \xd0\xb52\xd0\xb3\xd0\xbb\xd1\x91 \xd0\xb51\xd1\x91 2\xd0\xb5\xd0\xb6\xd1\x91 \xd0\xb53\xd0\xb7\xd1\x91 \xd0\xb51\xd0\xbb\xd1\x91 2\xd0\xb5\xd0\xbf\xd1\x91 \xd0\xb5\xd1\x801\xd0\xb2\xd1\x91 \xd0\xb51\xd1\x80\xd1\x91 \xd0\xb5\xd1\x80\xd1\x913\xd0\xb4\xd0\xbe \xd0\xb5\xd1\x80\xd1\x911\xd0\xba2 \xd0\xb5\xd1\x812\xd1\x87\xd1\x91\xd1\x82 \xd0\xb5\xd1\x821\xd0\xb2\xd1\x91 \xd0\xb51\xd1\x82\xd1\x8c\xd1\x91 2\xd1\x91\xd0\xb1 \xd1\x911\xd0\xb1\xd1\x80\xd0\xb0 \xd1\x91\xd0\xb11\xd1\x80\xd1\x8b \xd1\x911\xd0\xb2\xd0\xb5 \xd1\x911\xd0\xb2\xd0\xbe 2\xd1\x911\xd0\xb2\xd1\x80\xd0\xb5 \xd1\x911\xd0\xb2\xd1\x83 \xd1\x911\xd0\xb4\xd1\x80\xd1\x83 2\xd1\x913\xd0\xb4\xd1\x83\xd1\x88 2\xd1\x91\xd0\xb6\xd0\xb5 \xd1\x913\xd0\xb7\xd0\xb5 \xd1\x91\xd0\xb71\xd0\xbe2\xd0\xb3 \xd1\x911\xd0\xb7\xd0\xbe\xd0\xbc \xd1\x911\xd0\xba\xd0\xb0 \xd1\x911\xd0\xba\xd0\xb8 2\xd1\x911\xd0\xba\xd0\xbe 2\xd1\x911\xd0\xba\xd1\x80 \xd1\x91\xd0\xba2\xd1\x80\xd0\xbe \xd1\x911\xd0\xba\xd1\x83 \xd1\x911\xd0\xbb\xd0\xb0 \xd1\x911\xd0\xbb\xd0\xb5 \xd1\x911\xd0\xbb\xd1\x83 \xd1\x911\xd0\xbb\xd1\x8b 2\xd1\x91\xd0\xbc\xd1\x83\xd0\xb6 \xd1\x912\xd0\xbc\xd1\x87 \xd1\x913\xd0\xbd\xd0\xb0 \xd1\x91\xd0\xbd2\xd0\xb41\xd1\x80 \xd1\x91\xd0\xbd\xd1\x812 \xd1\x91\xd0\xbf\xd0\xb0\xd1\x822 2\xd1\x91\xd0\xbf\xd0\xb5 \xd1\x912\xd0\xbf\xd0\xbb \xd1\x913\xd0\xbf\xd0\xbb\xd0\xb0 \xd1\x91\xd0\xbf1\xd0\xbb\xd1\x83 \xd1\x913\xd0\xbf\xd0\xbb\xd1\x8b \xd1\x914\xd0\xbf\xd0\xbd 2\xd1\x91\xd0\xbf\xd0\xbe \xd1\x914\xd0\xbf\xd1\x82 \xd1\x911\xd1\x80\xd0\xb0 \xd1\x911\xd1\x80\xd0\xb5 \xd1\x913\xd1\x80\xd0\xb5_ \xd1\x911\xd1\x80\xd0\xb8 \xd1\x911\xd1\x80\xd0\xbe \xd1\x91\xd1\x803\xd1\x81\xd0\xba \xd1\x911\xd1\x80\xd1\x83 \xd1\x911\xd1\x80\xd1\x8b \xd1\x913\xd1\x812\xd0\xb0 \xd1\x911\xd1\x81\xd0\xba \xd1\x912\xd1\x811\xd0\xba\xd0\xb0_ \xd1\x912\xd1\x81\xd0\xba\xd0\xb5 \xd1\x914\xd1\x811\xd0\xba\xd1\x83_ 2\xd1\x91\xd1\x81\xd0\xbb \xd1\x913\xd1\x81\xd0\xbe \xd1\x911\xd1\x81\xd1\x82 \xd1\x91\xd1\x812\xd1\x82\xd0\xb0\xd0\xbd \xd1\x913\xd1\x81\xd1\x82\xd1\x83 \xd1\x911\xd1\x82\xd0\xb0 2\xd1\x91\xd1\x82\xd0\xb5\xd1\x87 \xd1\x911\xd1\x82\xd0\xb8 \xd1\x911\xd1\x82\xd0\xbe \xd1\x91\xd1\x82\xd0\xbe1\xd1\x81 \xd1\x91\xd1\x821\xd1\x80 \xd1\x911\xd1\x82\xd1\x83 \xd1\x911\xd1\x82\xd1\x8b \xd1\x911\xd1\x82\xd1\x8e \xd1\x911\xd1\x82\xd1\x8f \xd1\x91\xd1\x85\xd0\xb02\xd1\x82 \xd1\x91\xd1\x851\xd0\xb0\xd1\x82\xd0\xbe \xd1\x91\xd1\x853\xd0\xb2\xd0\xb0\xd0\xbb \xd1\x91\xd1\x853\xd0\xbb\xd0\xbe\xd0\xbf \xd1\x91\xd1\x851\xd0\xbe\xd0\xbf\xd0\xbe \xd1\x91\xd1\x851\xd1\x80\xd1\x83 3\xd0\xb6\xd1\x91\xd0\xb2 \xd0\xb6\xd1\x911\xd1\x812 \xd0\xb62\xd0\xb6\xd1\x91 \xd0\xb7\xd0\xb03\xd0\xbc\xd0\xbd\xd1\x91 \xd0\xb71\xd0\xb2\xd1\x91 \xd0\xb72\xd0\xb2\xd1\x91\xd0\xb7 1\xd0\xb7\xd1\x91 \xd0\xb72\xd0\xbd\xd0\xb0\xd1\x91 2\xd0\xb7\xd0\xbd\xd1\x91 1\xd0\xb72\xd0\xbe3\xd1\x80\xd1\x91 \xd0\xb72\xd0\xbe\xd1\x82\xd1\x91 \xd0\xb7\xd0\xbe\xd1\x822\xd1\x80\xd1\x91 3\xd0\xb7\xd1\x83\xd1\x91 \xd0\xb7\xd1\x8a\xd1\x912\xd0\xbc 2\xd0\xb7\xd1\x8b\xd0\xbc\xd1\x91 2\xd0\xb81\xd0\xb2\xd1\x91 \xd0\xb8\xd0\xb31\xd1\x80\xd1\x91\xd0\xbd \xd0\xb81\xd1\x91 \xd0\xb8\xd1\x851\xd1\x80\xd1\x91 1\xd0\xba\xd0\xb0\xd1\x91 1\xd0\xba\xd1\x91 \xd0\xba3\xd0\xbb\xd1\x91\xd0\xbd \xd0\xba2\xd1\x80\xd0\xbe\xd1\x91 3\xd0\xba\xd1\x83\xd1\x91 \xd0\xbb\xd0\xb01\xd1\x81\xd1\x82\xd1\x91 \xd0\xbb\xd1\x913\xd0\xb4\xd0\xbe \xd0\xbb\xd1\x911\xd0\xb72\xd0\xbe3 \xd0\xbb\xd1\x91\xd0\xba1\xd0\xbb 1\xd0\xbb\xd1\x91\xd0\xbd \xd0\xbb\xd1\x912\xd1\x81\xd0\xba \xd0\xbb\xd1\x914\xd1\x81\xd0\xba\xd0\xb0 1\xd0\xbb\xd1\x91\xd1\x85 2\xd0\xbb\xd0\xbe\xd1\x91\xd0\xbd 1\xd0\xbb\xd1\x83\xd1\x91 3\xd0\xbb\xd1\x8c\xd1\x91 1\xd0\xbb\xd1\x8c\xd1\x89\xd1\x91 3\xd0\xbc2\xd0\xbd\xd1\x91\xd1\x88 3\xd0\xbc2\xd1\x89\xd1\x91 \xd0\xbd\xd0\xb42\xd1\x80\xd1\x91 \xd0\xbd\xd0\xb53\xd1\x91 1\xd0\xbd\xd1\x91 \xd0\xbd\xd1\x911\xd0\xb12 3\xd0\xbd\xd0\xbe\xd0\xbc\xd1\x91 1\xd0\xbd\xd1\x8c\xd1\x91 \xd0\xbe\xd0\xb43\xd1\x80\xd1\x91\xd0\xb1 \xd0\xbe1\xd1\x91 \xd0\xbe\xd1\x912\xd0\xb6\xd0\xb8 \xd0\xbe1\xd0\xbb\xd1\x91 2\xd0\xbe\xd0\xbc\xd1\x91 \xd0\xbe3\xd0\xbc2\xd0\xbd\xd1\x91\xd0\xbc \xd0\xbe3\xd0\xbc2\xd0\xbd\xd1\x91\xd1\x82 \xd0\xbe2\xd0\xbf1\xd0\xbb\xd1\x91\xd0\xb9 \xd0\xbe1\xd1\x80\xd1\x91 \xd0\xbe2\xd1\x81\xd0\xba\xd1\x91 \xd0\xbe\xd1\x821\xd0\xb2\xd1\x91 2\xd0\xbe3\xd1\x82\xd1\x91\xd0\xba \xd0\xbe3\xd1\x82\xd1\x91\xd1\x80 \xd0\xbe\xd1\x821\xd1\x80\xd1\x91\xd0\xba \xd0\xbe\xd1\x821\xd1\x80\xd1\x91\xd1\x88 \xd0\xbe3\xd1\x84\xd1\x91 \xd0\xbf\xd1\x911 \xd0\xbf\xd1\x912\xd1\x81\xd1\x821\xd1\x80 \xd0\xbf\xd1\x912\xd1\x82\xd1\x80 2\xd0\xbf\xd0\xbb\xd1\x91\xd0\xbd \xd0\xbf2\xd0\xbb\xd1\x91\xd0\xbd\xd0\xba \xd0\xbf\xd0\xbb\xd1\x91\xd1\x811\xd0\xba \xd0\xbf1\xd0\xbb\xd1\x91\xd1\x8e \xd0\xbf\xd0\xbe\xd1\x912\xd0\xb6 3\xd0\xbf\xd1\x80\xd1\x91\xd1\x82 \xd0\xbf\xd1\x80\xd0\xb8\xd1\x87\xd1\x912\xd1\x811\xd0\xba \xd1\x802\xd0\xb1\xd0\xbb\xd1\x91 1\xd1\x80\xd0\xb2\xd1\x91\xd1\x82 _\xd1\x80\xd1\x912\xd0\xb1\xd1\x80 1\xd1\x80\xd1\x91\xd0\xb7\xd0\xba \xd1\x80\xd1\x911\xd0\xb7\xd0\xbd\xd0\xb0 1\xd1\x80\xd1\x911\xd0\xb7\xd0\xbe \xd1\x80\xd1\x91\xd0\xb72\xd1\x83 1\xd1\x80\xd1\x91\xd0\xba\xd1\x88 3\xd1\x80\xd1\x91\xd0\xbc\xd0\xbe 1\xd1\x80\xd1\x91\xd0\xbd\xd0\xba \xd1\x80\xd1\x913\xd1\x81\xd1\x82\xd0\xb0 \xd1\x80\xd1\x913\xd1\x81\xd1\x82\xd0\xbe \xd1\x80\xd0\xbe\xd0\xb42\xd0\xbb\xd1\x91 \xd1\x80\xd0\xbe\xd1\x912\xd0\xbc 1\xd1\x80\xd1\x8c\xd1\x91 \xd1\x812\xd0\xb4\xd1\x91 \xd1\x81\xd0\xb53\xd1\x81\xd1\x82\xd1\x91 1\xd1\x812\xd1\x91 \xd1\x81\xd1\x91\xd0\xba\xd1\x814 \xd1\x81\xd1\x912\xd1\x81\xd1\x82 \xd1\x81\xd1\x91\xd1\x81\xd1\x821\xd1\x80 2\xd1\x81\xd0\xba\xd1\x83\xd1\x91 \xd1\x811\xd0\xbb\xd1\x91\xd1\x82 \xd1\x812\xd1\x82\xd1\x91 1\xd1\x81\xd1\x82\xd1\x91\xd0\xbb 1\xd1\x81\xd1\x82\xd1\x91\xd0\xbd_ \xd1\x813\xd1\x82\xd1\x91\xd1\x82_ \xd1\x813\xd1\x82\xd1\x91\xd1\x82\xd0\xb5 \xd1\x81\xd1\x82\xd1\x913\xd1\x85 \xd1\x813\xd1\x82\xd1\x91\xd1\x88 \xd1\x813\xd1\x822\xd0\xbb\xd1\x91 \xd1\x81\xd1\x87\xd1\x912\xd1\x811\xd0\xba 1\xd1\x81\xd1\x8c\xd1\x91 \xd1\x821\xd0\xb2\xd1\x91\xd0\xbb \xd1\x821\xd0\xb2\xd0\xbe\xd1\x91 1\xd1\x822\xd1\x91 \xd1\x82\xd1\x912\xd0\xb3\xd0\xbd \xd1\x82\xd1\x911\xd0\xb7\xd0\xbe 3\xd1\x82\xd1\x91\xd0\xba\xd0\xb0 \xd1\x82\xd1\x91\xd0\xba1\xd0\xbb 3\xd1\x82\xd1\x91\xd0\xba\xd1\x88 \xd1\x82\xd1\x914\xd0\xbf1\xd0\xbb \xd1\x82\xd1\x91\xd1\x803\xd0\xba \xd1\x82\xd1\x912\xd1\x81\xd0\xba\xd0\xb0 \xd1\x82\xd1\x912\xd1\x811\xd0\xba\xd0\xb8 \xd1\x82\xd1\x912\xd1\x811\xd0\xba\xd0\xbe \xd1\x82\xd1\x912\xd1\x81\xd0\xba\xd1\x83 \xd1\x82\xd1\x912\xd1\x85\xd0\xbe 3\xd1\x822\xd0\xba\xd1\x91\xd1\x82 \xd1\x821\xd1\x80\xd0\xb5\xd0\xb2\xd1\x91 3\xd1\x822\xd1\x80\xd1\x912\xd1\x85 \xd1\x822\xd1\x80\xd1\x91\xd1\x88\xd1\x8c \xd1\x82\xd1\x80\xd0\xbe2\xd0\xb5\xd1\x82\xd1\x91\xd1\x81 3\xd1\x82\xd1\x8c\xd1\x91 \xd1\x83\xd0\xb32\xd0\xbd\xd1\x91 \xd1\x83\xd0\xb31\xd1\x80\xd1\x91 _\xd1\x83\xd1\x912 \xd1\x831\xd1\x91 \xd1\x831\xd0\xbb\xd1\x91 \xd1\x831\xd1\x80\xd1\x91 \xd1\x831\xd1\x81\xd1\x82\xd1\x91 \xd1\x833\xd1\x82\xd1\x91\xd1\x80 \xd1\x831\xd1\x82\xd1\x8c\xd1\x91 \xd1\x832\xd1\x87\xd1\x91\xd0\xb1 \xd1\x833\xd1\x88\xd1\x91 2\xd1\x853\xd0\xb2\xd1\x91 1\xd1\x85\xd0\xbb\xd1\x91\xd0\xb1 \xd1\x852\xd0\xbb\xd1\x91\xd1\x81 \xd1\x862\xd0\xb2\xd1\x91 1\xd1\x87\xd1\x91 \xd1\x87\xd1\x91\xd1\x802\xd1\x81 \xd1\x87\xd1\x91\xd1\x80\xd1\x81\xd1\x821 _\xd1\x87\xd1\x912\xd1\x811\xd0\xba \xd1\x872\xd1\x82\xd1\x91 1\xd1\x87\xd1\x8c\xd1\x91 2\xd1\x88\xd0\xbb\xd1\x91\xd0\xbd 3\xd1\x88\xd1\x8c\xd1\x91 \xd1\x8a2\xd1\x912\xd1\x80 \xd1\x8b\xd0\xb42\xd1\x80\xd1\x91 \xd1\x8b\xd1\x80\xd1\x912\xd1\x85 \xd1\x8b3\xd1\x81\xd1\x91 \xd1\x8c2\xd1\x91 \xd1\x8c\xd1\x911\xd0\xb7\xd0\xbe \xd1\x8c2\xd1\x89\xd1\x91 \xd1\x8e1\xd1\x91 \xd1\x8f\xd0\xb13\xd1\x80\xd1\x91 _\xd0\xbd\xd0\xb58 8\xd0\xbd\xd0\xb5_ 8\xd0\xb1\xd1\x8a_ 8\xd0\xb2\xd1\x8a_ 8\xd0\xb3\xd1\x8a_ 8\xd0\xb4\xd1\x8a_ 8\xd0\xb6\xd1\x8a_ 8\xd0\xb7\xd1\x8a_ 8\xd0\xba\xd1\x8a_ 8\xd0\xbb\xd1\x8a_ 8\xd0\xbc\xd1\x8a_ 8\xd0\xbd\xd1\x8a_ 8\xd0\xbf\xd1\x8a_ 8\xd1\x80\xd1\x8a_ 8\xd1\x81\xd1\x8a_ 8\xd1\x82\xd1\x8a_ 8\xd1\x84\xd1\x8a_ 8\xd1\x85\xd1\x8a_ 8\xd1\x86\xd1\x8a_ 8\xd1\x87\xd1\x8a_ 8\xd1\x88\xd1\x8a_ 8\xd1\x89\xd1\x8a_";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/patterns/sv.php b/inc/3rdparty/libraries/mpdf/patterns/sv.php
new file mode 100644 (file)
index 0000000..b01ce72
--- /dev/null
@@ -0,0 +1,12 @@
+<?php
+/*
+       Adapted from Hyphenator 1.0.2
+       http://code.google.com/p/hyphenator/
+       
+       Original created by Jan Michael Rynning, jmr@nada.kth.se
+       Modified for Hyphenator by Andreas Johansson, andreas@ibuypink.com
+*/
+
+$patterns="_a4b _ab5i _ab5ol _ab3r _ac3 _a4d _a3dr _ad3s _a5g4ra _a5gre _a5kl _a5le _al4pr _a3lu _am4br _amp3l _a5mu _and4rar _a2n5es _ang4er _an5go _an5s _ap1p _as2k _a3sket _as4t _a5sten _a3sti _a5ta _at3t _au3st _a4val _av3s4 _b4 _bak5s _ben5s _bild3s _bo2k _bort1 _cis4 _cy5klop _d4 _d\xc3\xa4r3 _ek1v _e3l4a _e2l5in _en5st _e4n\xc3\xa4 _e2r3i _e2s _e5skad _es3kal _es5kap _es4t _e5strad _e3tr _evan5 _ex3 _f4 _feb3r _fram3 _fres5 _f\xc3\xa5gel3 _f\xc3\xb6r1a _f\xc3\xb6r1en _g2 _gu4l\xc3\xa4 _gus3 _he2m _hu5sa _ib4 _ik4 _im3p _i2n1 _i4na _in3d _in4ger _ink2 _in3s2 _in3t _is5ka _i3so _k4 _kans4k _ko5li _kort5s _kring3 _krings2 _k\xc3\xb6p5s _l2 _lak5r _lek5tr _lu2st _m2 _mas2ke _ma5skeri _me4re _minis4 _mj\xc3\xb6lk5s _mon2s _m\xc3\xa5n3s _m\xc3\xa54st _m\xc3\xa4n5sko _m\xc3\xb6rk5r _n4 _ner1 _no4n _n\xc3\xb6d5r _oc1ku _ok3t _o3kv _o2ma _o2mo _om3s4 _o3mu _on4k _o3o _ord3s _o5sc _o1s4k _o3sl _o3stra _o3sv _o3tr _o1u _p4 _papp5s _pa3ste _pa5sti _pi5sti _pres2s _pub3lika _r2 _re4gr _re2ste _runs4 _rym2d _r\xc3\xb6ve5 _s4 _sa2k _seg3r _si5o _sj\xc3\xb61 _sk4 _skott3s _slut3s _st4 _sta2m _sten3s _string4 _sup3p _t4 _ta3bl _ta4k _tak5l _tes3ta _tig3r _til4l _ti3o _topp5s _tred2s _tre3s _tr\xc3\xa45k _u3k _ult5r _ung2e _up2 _u4ra _ur3s _u2t1 _u4ta _u5trer _ut5s _v2 _var4t _vatten3 _ved5s _v\xc3\xa42g _v\xc3\xa4g3s _x2 _y2a _y4e _\xc3\xa5ng3 _\xc3\xa5r4s5 _\xc3\xa53st _\xc3\xa5ter1 _\xc3\xa43ro _\xc3\xb63ro a2b ab4bu a5be abel4s abe2s ab1l ab3la ab3ort ab5ric ab3rio ab4sc ab4sk a5bu ac4kes ac4kis ack3sk ack3u4p a5dag a5dek a5del ad5ep ad3j ad3op a5dran a3dre 1adres ad3ril ad3ru ad2s a5ed af4fo 3aff\xc3\xa4 1af3ri af4tor a1ga aga4ra a1ge a2ge_ ag1gr ag1l ag5ord ag3ro a4gur a4hj aib4 a3iv a1j a3ka a4kart a5ke a1ki ak3n a1ko ak5ram akri5s ak3rob ak4sta 1aktig ak3tri a1ku a5kvari ak3ve a5k\xc3\xa5r ak5\xc3\xa5t 4ak\xc3\xb6 a1la al5adm ali2br a2lin a5lin_ a3line al3ins ali5stik a4lj alk3ak al2kv al4k\xc3\xa4 all3st al3l\xc3\xa5 alms4k a1lo al5ort als5pa al3tr al4tu al4t\xc3\xa4 a1lu alu5s alv3s a1ly a4maf am4i am4pr am1s am3\xc3\xa5t a3m\xc3\xb6 ana4bo an3alf an3ark an3c anci5 an5dak andel2s an4dun an4d\xc3\xa4n a4nef ang4es an3gi an1gr aniu4 ank3r ano2i a4nok a4nop an5sce ansis3t an4sj ans5ku ans3li ans3par an1st an4sto an4sty 1ansvar an4tj an4tre a1nu a5ny a3n\xc3\xb6 a1o a1pe a2pe_ ape4n3 a1pi ap4lan apo3str 1appara apps4k ap3ric ap3rif a5pris ap2s ap3se aps5l aps3p apu5s a5py a5p\xc3\xa4 2ara a4rann a4rarv 1arb 4arbi 2arbo 4arbr ar3dr ard5st a4rend arg5si 2arh a1ri a4rigen ar3ka ark3lan ar5kr 4arl 4arn_ ar4nal a1ro a2rob 4arp ar2sa ar5skal arsk5l ar2sv ar4tro arts5p ar4tur 4aru a4rur a5rus ar4v\xc3\xa4g a3ry a3r\xc3\xa4 2asa asbe4 a1sc as2h asis5t as3kis a2sko a4skr as3ku as5l as3pa as3pig as2sk as2s5op as2sp as2st ass5up as3ta a5stard as5ter as5tiker asti5o as3to as4tr ast5rak a5stral ast3rol as5t\xc3\xb6r a3su a4sul a4sund as2ut as3v a1sy a2s5\xc3\xa5 a2s\xc3\xb6 a1t ata5ra a5te ati5\xc3\xb6 a4tj a2tr a3tral 4atrar a4t3re at3ria a3tric at3rie a5trik a3tris a3t4ro a4tro_ at4ska 1attac at2tak at4tj at4tos att3s a4tung 2au au5b au2t5a 3autom aut5s 2a1va a4vart 1avg 2a1vi av3r 4a3v\xc3\xa4 a5\xc3\xa5 1b2 3ba ba4di ba4do bad3s4 bak5l ba4ko ba4ku bank5l bas4ta ba5stu 4bb b4bak b4batt bbb4 bb3l bb4ler b4b3r bb4so 4b3d 3be be3d4r be5e be1k 4beld be5lu be3ly be3l\xc3\xa5 be5l\xc3\xb6 beng4 be3n\xc3\xa5 be1r\xc3\xb6 be1s be3sl bes5s be4sta be4ste be5su be3tr be3tv be3u 4bex 2b3f 2b5h 3bi bi3d4 4binv bis3ko bi5skv b3je b3k b5lar b5lat ble4mo b5len 5blera 3bles 5blid 3blikr 3bliks 4b3m 2b3n 3bo bo4gr bo2kl bo1mu 5bon bors5te bor4ti bort3r borts2 bort3sl bo1s bo4sc boy5 4b3p 2b5raf 4brar 2b5rati 3brik_ b3rika 3brike 3briks b5rik\xc3\xb6 bru4st 3bry 3br\xc3\xb6 4b3s b5sce bs3ch b4slan b4sof b4sp bst4 b4stj 4b3t 3bu bund4s bus2st b3v 3by by5r 3b\xc3\xa5 b\xc3\xa5ng3 b\xc3\xa5t2s 3b\xc3\xa4 3b\xc3\xb6 b\xc3\xb6r2s c2 5cap c3c 1c4e cens3t 3centr ceu4s 4ch_ 3chau 3chef 5choc 4cht ch\xc3\xa4s3 ch\xc3\xb6r4 1ci ci4lu cim2 cipp4 4ck c3ka c3ke c3ki ck5j ck1l ck5lis ck3n c3ko c4kordn ck3org c4kort ck3r ck4re ck3sla ckus2 ck3va ck3ve ck3v\xc3\xa4 ck5\xc3\xa4 ck3\xc3\xb6 cle2a co2a co4m 4cr cros2 4cs 1cy 1d 3da 5da_ 4dadr dags3 2dak 5dako da3li 5dam da3m\xc3\xa5 4dand_ 4d1ap 4darb 4dart da4tr dat5t 4dax 2db 4dc dcen3 2dd ddd4 ddi4s d3dj d4dos dd3ra dd3re dd3ri d3dr\xc3\xa4 dd2s dds3v 3d2e de1k4 4deko 4deld del2sa dels5ti de5lut d4en denti5\xc3\xb6 den2to de3pr 5der der1k de2ro de5rol der5sti de4ru de2s de3se de3sp des3ti d4et de3tr 4dex 2d1f df\xc3\xb63ra 2d1g d3gl 2d5h 3di dias4 di5el di2gr di3ka di5ku 4dinf din3g4o 4dinr 4dins 2dinsp 4dint di1o di4od di3sc di4sj dis3ko dis1kr dis1p dis5to dis3tra di4tre 2dj d3jor djup5p 3djur 2d3k2 4d5l 2d1m 2d1n 3do d2ol do5lo 4domr dom2sk 5don do4pak 4d5ord 4dori 4dort d5ost do3y 2d1p 2d2r2 d3rad 3d4rag d3rand d5rarb d5rassera d5ratu 3drej d3ren 5dres d3ret d4ric 3drif d3rig 4d5rik d3rin 3d4riv d5roc 3dropp d3ror 4drot drotts3 d3r\xc3\xa4kn 3dr\xc3\xa4kt 5dr\xc3\xa4n d3r\xc3\xa4t d5r\xc3\xb6d 4ds d2s1an d2se ds5enh d4sf d2si ds3ins d2sj dsk2 d3skef ds4ken d3ski ds3kl ds5kn ds1l ds4lot ds4mo d4sm\xc3\xa5 ds5n\xc3\xa5 d2so ds3pl ds3s4 ds3tal d5stat ds4te dste4a d5stig ds3tin ds5tro d2su ds1v d2s\xc3\xb6 2d3t 3du dub3ble 4dup du1s du2sc du4ste du5s\xc3\xb6 4dut du4vu 2d1v d3vr 2d3w 3dy dy4kan dy4ro 4dz 5d\xc3\xa5g 2d\xc3\xa5s 4d\xc3\xa5t 4d\xc3\xa4g d\xc3\xa42r 3d\xc3\xb6 d\xc3\xb6ds1 4d\xc3\xb6g 4d\xc3\xb6p d5\xc3\xb6st d\xc3\xa94 e1a e2ake e4am 4eb e2br eb3ril 4ec e3ch echiff5 ecis4 e3co e2d e4dans edd4r edi4u ed3j e5dral ed1sk ed2sko ed3s2l edso4 e3d\xc3\xa5 e1e e2ed e4ei ee2k5 e4en_ e4ene e1f ef4s 3efte e1g e3ga e3ge ege2l eg1l eg2ler e3glera e5gleri e4gran eg5rat eg3rin e5gru egs3 e5g\xc3\xa5 eig2 ei5gn e3ik e1in ei5sh e1isk e1jo e3ju e3j\xc3\xa4 e5j\xc3\xb6 e3ka e1ki e1kl ek3lat ek4le ek3n e1ko ekord5s ek3orr ek4ret_ ek5ro e1ku e1kve ek5vis e1ky e1k\xc3\xa4 e1la el1akt el4arb 3eld_ eleb3r elekt3ri el4fra eli5ku el3k4 el3li ell3s el3l\xc3\xa4 e1lo e4lob el3p el2si el5ug e5luv 2e1l\xc3\xa4 e1m e5mat e5mis emon1s em5ort emp5le en5art e2nav en4ce e4ned e4nek ene3r\xc3\xb6 2enj en5klo en3kn en5kr en5k\xc3\xa4 enning5 ennings2 eno2m en3si ens5ke ens2m en2sp ens4te ens4vin en4s\xc3\xa5 ent4ha en2t1r ent4rat_ ent3rati ent3ri ent5ru e5nus 2eny 2e1n\xc3\xa4 e1o e2og eo4i e5or 2ep e1pe e1pi e3pla ep5le epp2s3 epps5t e1pr ep3s ep4tr epu3b e3p\xc3\xa5 er1ak 4eras er3d4 erg4l er4gu er4g\xc3\xa5s e1ri e5rib e4rinf erings3 eri5stik erk4lin erl\xc3\xa44 er5na e1ro e3rob e2rom erp4 er3ra er5sc ers4ken er3sl ers4le er4sta er2ste er3str er3sv e1ru e5rum e3ry e5r\xc3\xa5d e1r\xc3\xa4 e2sal es5all es3arm e1sc 2ese es4hi esi4u es2k e4skan es5kar e4s3ken es3ker es5kul e1sl e5slag es2mi e1sp es3pl es2sk ess5l\xc3\xa4 es2st e3stal es5ten_ esti2ge es3tin es5tor_ es4tr est5rer e3stru est4r\xc3\xb6 e3st\xc3\xa5 es2u e1sy eta3b e5ti eti3\xc3\xb6 e1to e5tri_ et3ris e5tr\xc3\xa4 et2s ets2ad ets3kr ets1l ets3m ets5pa et4sv ett3r e1tu etu4ri et4va et5vu e1ty 2etz e1t\xc3\xa4 et\xc3\xa4c4 euk4 e5um_ e5up4 4eur eu4se_ eu5tro e1v e4varm e4vj ev3r 3exp ext4r 4e\xc3\xa4 f2 3fa fac4 fac5ke 4fans 4farb fa3sh fa4st fa4t\xc3\xb6 4fav 4f3b f3d 3fe 4fef fe2l fes5ta fe3sto 4fex 2f1f fff4 ff3l ff3n f3fo ff3r ffs4 f3f\xc3\xa4 ff\xc3\xb65re f3g2 f5h 3fi fi2br fib5rig fi3li fin5sm fi3skal fisk3r fi2ti 2f3k 1fl flo4da 4f3m fma4 1fo 4fof fol2 folk1 2f5om fo2na for4mo fost3r 4f3p fra2m fram5p f4rer 5freri fre4s f4ri_ fri5sp 5frit fros5ta fru5str fr\xc3\xa5n5 2f3s fs2k f4sl f4sm f4sn f4sp f4st f4sv 2ft f3ta f4taf f4tak f4tap f4tarm fte4r f4tex f3ti f4tin f3to f4t3r ft2sa ft4set ft2s5i ft4sj fts4t fts5v\xc3\xa4 ft5t ft1v 3fu furs5te fu5ru fu3tu 4fv 5fy fy4ma f\xc3\xa53t\xc3\xb6 1f\xc3\xa4 f\xc3\xa4s5ti 3f\xc3\xb6 f\xc3\xb62ra f\xc3\xb62ren f\xc3\xb62ri f\xc3\xb6r3k f\xc3\xb6r3sm f\xc3\xb6r3su f\xc3\xb6rt4 f\xc3\xb6r1\xc3\xb6 ga5br 3g2ag 4gakt 3g2al gall3s ga5l\xc3\xa4 ga4no 2garb 4garm ga2ro 4gart ga4st ga4su 5g2ati gaus4 g4av g5avsn 4gax 2gb 2gd g3d4r ge2a ge5b4 2gef 2ge4j g2eli 3gelis gel5st gel5y 3gel\xc3\xa4 gel5\xc3\xa4n g4em ge4nap gen5g 3g2eni 3genj 4genm genom5 gen4sa g4ense 1g2ent 4genv ge5ny 3gen\xc3\xa4 ge2o 1g2era 4gerarb 3g2eri gers5n 5gese ge4to get5s 5g2ett 2g1f 2gg g1ga g4gap g1ge gg5g gg1l g4gos ggs4la ggs4m gg3s4t gg3s4v g4gu 2gh gh4te 1g2i gi1o gi5sn gi4ste gis4tr gi5stral gi5st4rat 3giv gi2\xc3\xb6 g2jo 3gjor g3j\xc3\xa4 2g3k2 2gl g4lans g1lar g2las 5glase glas5k 5glas\xc3\xb6 g4lid 4glj g4l\xc3\xb6g 5gl\xc3\xb6m 2g1m 2g1n g4nag g2no 1g2o 3go_ 3gol gon3s4 4gont 2gord 4gorm 4gort go3sl 2g1p g2r4 3graf 5gral gra2m5 5grans 4gras 5grec 5grett g3rig 4g5rik 5grip 3gris g5roi gro2v 4grum grus5t g4r\xc3\xa5 5gr\xc3\xa5_ gr\xc3\xa44n 5gr\xc3\xa4ns 2g2s gs1an g5satt g3sel g4sf gsi4d g3sju g5skaf gs4ki gs3kn gs4kot g3sky gs1l gs1m g4sme gs3n gs4ni gs4n\xc3\xb6 gs1or gs3pl gs3po gs4por gs5pre gs3pu gs3s gs3tak gs3tal g3stark gs4ten g3stif gs3till gs3tj g3stol gs3tra gst4re g3st\xc3\xa4m g4sug gs1v g4s3ve gs3vi gs3v\xc3\xa5 gs3yt gs1\xc3\xa4 2g1t g3tr 1g2u 4gug guld3 gul4da 4gul\xc3\xa4 gu2ma 4gup gu5ru gus4k 2gut g3utb 2g1v 4gw 3gy gytt3j 1g2\xc3\xa5 g\xc3\xa5rds5 2g5\xc3\xa5ri g4\xc3\xa4l g2\xc3\xa4r g\xc3\xa44s 1g2\xc3\xb6 4g\xc3\xb6g g\xc3\xb65ro 2g5\xc3\xb6rt 1h ha3bl ha5ge ha4li hal4so halv3\xc3\xa5 ham4st handels3 hands4l han5g2a ha5ra ha4sc ha4sp hasp5l has3t hav2 havs3 h5c 4hd he4at he4fr he4l\xc3\xa4 hets1 hets3t hets3v h3g h2i 4hir his2sk hi4t hj\xc3\xa4l3s h1k 2hl h4le 2hm 4hn h2na h2nit ho5nu hop5plo hop3s hos3p hos5ti 4how h3p h5ru h1s 2ht hu2s hust5r hyg5r hys4t hys5ta hy3ster h\xc3\xa5rd5s4 h\xc3\xa4ll2 h\xc3\xa4lls1 h\xc3\xa4lso3 h\xc3\xa44ri h\xc3\xa44s h\xc3\xa44var h2\xc3\xb6 h\xc3\xb62g h\xc3\xb65gen h\xc3\xb6g5r h\xc3\xb6rn5s h\xc3\xb64s h\xc3\xb6st5r i1a ia3fr ia3g ia4lu ia4sk ia3tr i2b3l i5bril i3ca i4ce_ i5cha ic4kord ick3u4 i5co i2d iden3s id4ge i4dom id1r id3ro id2s ids3v i4dun i3d\xc3\xa5 i4d\xc3\xb6 2i1e ifes4 i5fn i1fr 3ifr\xc3\xa5n i1g 4igan i2geb ig5ej ig1l ig3no i3i i4kart i1ki i3klo ik5l\xc3\xa4n ik3n i1ko ik3re i5krob ik5rof ik5ros ik5s2h ik5skor i3kul i3kum ik5u4t ik1v i3ky i3k\xc3\xa5 i3k\xc3\xb6 i1la il4dan i2lin il1j\xc3\xb6 il5k il5lak il4lik ill3s2 3illu il5l\xc3\xa4r il2min i1lo il2tj i3lu ilufts5 i4lup i5l\xc3\xa4 im2b3r im5sm im4so i1mu i5m\xc3\xa5 i3m\xc3\xa4 i5m\xc3\xb6 i4nau ind5sk\xc3\xa4 ind5sti 1indu in4ga in4ge_ ing4es_ ing5is in5glas ings5te i3ni i4nif in5j in5kve 1inneh 5inre 1inri 3inr\xc3\xa4 in4sem in3skr\xc3\xa4 in3sl ins4m in3sn 1inspe 5inspeln in5spr 3instink 3instru in4st\xc3\xa5 in5te 1intr in4tra int3s i1nu i4nun in3ym i1n\xc3\xa4 i5oc i1og i3ok io4kr i1ol io5li i5om ion2 i3ono ions3 i1op i1or i1os i1ot i1pe i1pi ipos4 ip5pi i3ra i4res i1ri irk5l i1ro iro3p i1ru i5sce isel4 is2h i2sk is5kep isk5na is3kopa is3ku is4kun is3ky i5slam is3l\xc3\xa4n is3m is3n i2s3p is4pri is3sa is3se iss5n is4s3tr iss3t\xc3\xa4 i1stal i1stans ist5att is5ten_ i1stent is4tes is3tig is5ting is5tor_ is5tore ist5ro ist\xc3\xa54 is5v i3sy i4s\xc3\xa5 i1t it5c i4tei i4tex i4tj it5ran i5trin i3tris it2t5op it4t3r it4tu i2t5\xc3\xa5 4i1u i1va i2vak i1vi i4vin iv3r iv2s i1v\xc3\xa5 ix2t ix5tu i1\xc3\xb6 1ja 3jakt_ 4jarb jas5p 2jb 2jd jd3r jd4sty j4du 1je je2a 5jef je5sta 2j1f 4j3g 4jh 1ji 4jin 4jk j4kl j3ko jk3v 2j1l 2jm 2j1n j2o 3job jo4kr 4jolj jo5l\xc3\xb6 jor4din jord3s4 3jou 4jp j5pl 2j3r 2j1s j5sa j4sk js4me js4te 2jt jts4 2j2u ju4kos juk3s jul3k 4jur jus5kr juss4 jus4t jus5ta jut4sta j\xc3\xa45lo j\xc3\xa4l4p5r j\xc3\xa4l4sa j\xc3\xa4rn3sk j\xc3\xa4r5s j\xc3\xb6r2s j\xc3\xb6s4t 5j\xc3\xa9 1k2a 3ka_ 3kad_ 3kade_ ka4dr 2kaf 5kaf\xc3\xa4 ka3i ka5ju 2kak k3akti 4kalf 4kalg kal4lo kall3s 3kamp 3kamr 3kan_ 4kand_ 5kano 2kap 3kapi ka5pla kap4pr kaps5t 5kapten 3kar_ ka3ra 4karb k5arbet ka5ri 4kark 3karna 4karp karp5s 4kart_ 4karte 4karv 3kas ka4sk kas3ti 3kat_ 3kats_ 4kau 2kb 4kc 2k3d4 kdom4 1k2e 3ke_ 2ked_ 2keda ke3dr ked4s ke4er 2kefu 4keld kels4 4kense ke5n\xc3\xa5 2kep 3kern ke2s kes3s 4kex 2k1f kf\xc3\xb62 kf\xc3\xb63ri 2k5g4 2kh4 kid3s 4kif 1kig kik4s kilt4 5kim\xc3\xa5 king3r 4kinne 4kins 2kint ki4nu ki4tr kiv3s 4kj 5kjol k3j\xc3\xa4 2k3k kl2 1klag k2lama kla4mi 3klang_ 3klass 2klat 5klav 2kle k2lej 2klig k2lim 3klip k2lis 5klist3r k5lock_ 5klocka 3klos 1klub 4kluk 1kl\xc3\xa4d 2k3l\xc3\xa4g 2k1m 2k2n k4nal 3k4nap 5knip 3k4niv 3k4nu k4ny k5nyk k2o 4koc ko5de k5odl kog3n ko4gr kog4s3 4kola ko2lin 4kolj kol5tr 5kolv_ 1kom 3komm 5komp 2k3omr kom4s 1kon 3konf 3konst 3kont ko3nu 1kor 3korg ko3ri 2korr 3korres 5kortera ko5s4k ko3sl 3kost ko4str 4k3ou 2k1p k2r4 3kraf 5kra3ge 4krang 5krera k4reten krid5s2 1krig krigs3 krings2k 4kriv 3kropp kropps5 kru5stad k3ryg kr\xc3\xa5k5s kr\xc3\xa54pa k5r\xc3\xa4dd_ kr\xc3\xa4k5l 4kr\xc3\xa4l k3r\xc3\xa4t 2ks ksaks5 k2s5as ks3ch k4ser ks2k4 ks3kl ks5kra ks5kv k3sk\xc3\xa4 k3sk\xc3\xb6 k5slag_ ks2li k5sly k2so ks3pl k1s4t kstavs3 ks5tid k2su 4k1t k4tex kti5ge k4tinn k2tins k2tod k2tom k2tr kt3re kt3rin k5trod kt5rog kt3rol kt5r\xc3\xa4t kt2st kt5t4 k4tug k2tut k4t\xc3\xa4l 4kug k5ugn ku5la 4kuld 3kul\xc3\xb6 kum5pl kungs5 5kunn ku4pen ku4ro 3kurs 3kus kust3a kv4 3kvali k5vare 3kvarn kvar3s 3kvart k4vato k2ve 2kvente 1kvinn 5kvire k4vo k1v\xc3\xa5 3kv\xc3\xa4ll k1v\xc3\xa4r kydds3 ky4lin 3kyrk k\xc3\xa4l4m 5k\xc3\xa4mp 5k\xc3\xa4nn 3k\xc3\xa4ns 3k\xc3\xa4rl 4k\xc3\xb6g k\xc3\xb6ks5t 5k\xc3\xb6p_ k\xc3\xb6r4l k\xc3\xb6r4sl 3la_ 1lade_ 2ladm 4ladr 2laf 3lagd_ la4gin 5lagm lag3r 2lak 5lakan_ 5laki 3laktis la5lo 3lande_ lan4di 2lappara 2larb 1larn lar5s 4lart las3h 4lask la4st 5laste_ 1lat_ la5tr lat4tis 2lau 2lav la5vu 2lb4 4l1c 2l2d lder4s l3dj ld3ra l5dry lds4an 1le 3le_ le4ge_ le5ig le2kl le4kv lem4s\xc3\xb6 2l5enl 3ler_ ler5k 3lern ler3ste le5s2l le5t\xc3\xa5 le3um le4vu 2lex 2l1f 2l1g l2gj l3g2l lgs4 lg5st 2lh 1li li5ch 3lif 3lig li4go lig3s lik2l li5kli lik3s 5limer 2lind 2linga_ ling5o 4lingr lings5t 2lini 5linj 2lint li1o 2lip lis3c li4sta li3str\xc3\xb6 li4vo livs1 l2jak 4l1jo 1lju l5j\xc3\xa5 l1j\xc3\xa4 l3j\xc3\xb6r 2l1k l3ke l5kju l2kl lk5lag l5kl\xc3\xa4 l2kr l3k4ra lk3t l1la lld4 ll3dr lle5b ll3k ll1l l1lo llok5v ll3p ll4san ll2se ll3ska ll2so ll4sva ll4tig ll3tr l1lu ll5un llust3ra ll5v l5ly ll\xc3\xa4ggs5 l5l\xc3\xb6d ll\xc3\xb6r4 ll5\xc3\xb6rt 4l1m l4mol lm3st l1n lo2af loc4ku 4lodl lo4do lod3st lo2ge_ 2lolj 2lom 4lord 2lorg lor4s lo4vo l4pak l1pe l1pi l5pla lp5l\xc3\xb6 lp4st 4l3r 2l1s l2sc l4sjo l4sj\xc3\xa4 l2sk l4skensv l3ski lsk3n l5skot l3skr\xc3\xa4 l3sky l3sk\xc3\xa5 lsk\xc3\xa54p l3sk\xc3\xa4 l3slu l4sm ls4mo ls5nyt l2sp l3spe ls3pl ls3pol ls5s l2st l3sta l4stak ls4te ls5ter l3sto l3sty l4styg l3st\xc3\xa5 l3st\xc3\xa4 l5st\xc3\xb6 l2su l5sur l2sv l4svi ls5vid l4s\xc3\xa5 4l1t lta2tu l4tef l4tif l4tih l4tos lt5rati l4tret l4tr\xc3\xb6 lt5sk ltu4 lu5i luk4to 4lull_ 2lun lung3 2lupp lu4pu lus2s5p 5lust_ 4lutb 4luts 2lv l1va l4varm lvers4 l1vi l4vos lv3ri lv3sp l1v\xc3\xa4 lv\xc3\xa4v4 lycks5t ly4gat lyg3r lyg3s2 3lyste 5lystn ly4str 2l\xc3\xa5_ l\xc3\xa5g3s 1l\xc3\xa5ng l\xc3\xa5ng3s l\xc3\xa54sk l\xc3\xa5s5te l\xc3\xa54st\xc3\xa5 4l\xc3\xa4c l\xc3\xa4g5r 1l\xc3\xa4nds 5l\xc3\xa4ngder l\xc3\xa44san l\xc3\xa44sp l\xc3\xa4tt3s 4l\xc3\xb6l 4l\xc3\xb6m 3l\xc3\xb6n 3l\xc3\xb6rer 1l\xc3\xb6s l\xc3\xb64v\xc3\xa4 3l\xc3\xa9 1ma ma5fr mag5n mag5s ma5ju mak3r ma3li mand4 mang2a man5g4o ma5ni mani1k 5ma3ri mash5 mas3ko mask3ro ma5sk\xc3\xb6 mas3ti mas4v 2mb mb4sk 2mc 2md m4dat m4di m4do m3d4r 1me 2meds me4du me4kl me4ko 4meld melo5 me5lu men5k me5nu me5ny mer2sko me4so mes4t me3sti 2meta me5trin met3ro meu4 2mex 2m1f m4fes m4fn 2m1g4 2mh 1mi mid3s mi4lu 2mind ming4o 4mink min4kr 4minv mi3n\xc3\xb6 mis2 mi5sf mi4sp miss3t mi4te_ mi4tr mitt3s 2m1k 2m3l 2m1m2 mme5d mm3s4 m4mul 2m1n m2nam mnas3t m4nav mn5dr mn3g4 mn5st mn5tu m2n3\xc3\xa5 1mo m4od mo4i 2momr mo3na mos3k mo2ta mo4tin mo4tu mot3v 2m1p m2pak m4part m2pl mp3lad m5plane mp3lat mp3lin mpos4 mp5p4 mps4k mp5sp m4p\xc3\xa5 2m1r 4ms m4sal m4ske m3slag ms3l\xc3\xa4 ms2m mste2 m1sto m2str mst3rin ms5\xc3\xa4p 2m1t 4mud mulls3 mult5r 5mum 4mun3g4 mun4ko 3mur 3musi mu3sta mut4sl 2m3v 1myn mys4te m\xc3\xa5g4 1m\xc3\xa5l_ 5m\xc3\xa5let_ 5m\xc3\xa5n_ 4m\xc3\xa5r m\xc3\xa51s 4m\xc3\xa4g m\xc3\xa4k3 1m\xc3\xa4n m\xc3\xa4ns4 3m\xc3\xa4rk 1m\xc3\xa4s m\xc3\xa4s5ta 1m\xc3\xa4t m\xc3\xb64bl m\xc3\xb64gen_ 3m\xc3\xb6j m\xc3\xb6r4kl 3m\xc3\xb6s 4m\xc3\xb6v 1na 3na_ 3nad nads3 2naf na5gr 2nak 3nako 3nakr na3kro n1akt 2nalf 5nalfl 4nalg nal3s na2lu n5amb 5namn 4nand_ 4nanv na4rap 2narb 2nark 4narm 2nart nast3r 2nb4 2n1c n2ch n3cha n3che n3chi ncis4 ncyk3l 2nd n4dak n4dav nd3d4 n5de nde3s n4dil nd5rak nd5ras nd3rat nd3ri n5dril n3drop nd5ros nd5skal nd3sn nds3or nds5v\xc3\xa4 nd5\xc3\xa5s 1ne 3ne_ ne4di 5nedl ne4d3r ned3s ne4d\xc3\xb6 ne2gr ne5gres 4nek_ ne5ly 4nenl ner5sm nes3s4 ne4sta ne5s4ti ne3tre ne1ut 2nex 2n1f4 nfalls5 nfis3 2ng1 n4gar n4gen_ n4gend n4gens n4genti n4germ n4get n2gi ng3ig ngi4s ng4ly n2go ng5om ng3or ng3rad n4gr\xc3\xb6 ng4ser ngs1k ngs3pa ngs5tim ngs3val n4g\xc3\xb6d 2nh 1n2i 4nid ni5ec ni4ki ni5li 3nin nings1 nings3k nings5v ni1o 4nip nip4pr ni5steri nist3ra ni3t4r niv5sk niv5st 2n1j n4jar n3jun nju4s n3j\xc3\xa4 2nk n4kart n1ki n4kis_ n3kny n1ko nkrafts5 nk3ri n1kro nkrus4 nk5sl nk3sp nk4tin n1ku n1k\xc3\xb6 2n1l 2n1m 2n1n nn3d n3ne nnis4 nn3k nn3s4t 1no 2nodl no4kl 2nolj 2nomr nom3s4 2nord 2norg no5sa no5sc no4tu 2n1p 2n1r 4ns ns2i n4sint n4sis_ n4sise ns2k ns3kan n1ski ns3kor nslags5 ns5las ns5mit n4soc n1spi ns3pl ns3po ns3s4 n3stans n3stap ns4tel n3stif ns3tig ns4tra n2strik nst5up nst5vil n3s4ty n1sva ns3vi ns3v\xc3\xa4r 2n1t n4tark nter5s4 n4tinf n2t5omb nt3rad n3trah n3trak n5trala nt3rali n5tram nt3rep n3trer nt3ria nt3rin nt3ris n4tropin n4tror n4tr\xc3\xb6 nts3c nt4se nts5kor nt4str n4tut n3tv\xc3\xa5 nufts4 4nug n5ugn 3nui 3num nums5 2nup n3upp 2nutb 2n1v ny5gr n5z 4n\xc3\xa5r 4n\xc3\xa4_ 4n\xc3\xa4c 3n\xc3\xa4m 3n\xc3\xa4t 4n\xc3\xb6g4 3n\xc3\xb6j n\xc3\xb62ja n\xc3\xb65kr 4n\xc3\xb6l n\xc3\xb6s4 n\xc3\xb6s5ke o1a o2ard o2b 5o4bj o4bli oby4 oc4k5r ock3sk oc3ku o2d ode4k odi4a 1odli o5dral o3dro ods4k od2st ods4ti od5stu o3d\xc3\xa4 o1e offs5t o4fl o3fr of\xc3\xb6rm\xc3\xa54 o1g o4gav og3gr o4gj o5glo o5gly ognos4 ogno5st o4gri o4gr\xc3\xb6 og3se og4s3t o4g\xc3\xa4 o1i o4il o1j o1k o4kli ok3n ok3sl ok4su o2kv o1la o5lak ol5au olf\xc3\xb64 1olj ol3ka olk3r ol4ku ol4k\xc3\xa4 oll4si oll5sl\xc3\xa4 ol3l\xc3\xa4 olm4s oln3s o1lo olo5kv ol4sa ol4t\xc3\xa5 o1lu o4lug o4lur o1ly ol5\xc3\xa5r o1l\xc3\xa4 om4br\xc3\xa4 o3men o4mord om5pa om3pl 1omr 4omra om1sk om4ste 3oms\xc3\xa4t om4tr om3tv on3c on5gi on1gr ongs4l o4nins on3j on1k4 ons3c onsi3s ons3m on5stel ons4ter on3tras on4tre ont4s o1ny on5\xc3\xa5 o1n\xc3\xa4 o3n\xc3\xb6 oo4d oom5s o3or o1pe o1pi o5pline op4pl opp3le op4pr op4pu o3pri op4st o3p\xc3\xa5 o5q 4ora o3rak oran3g4 o2rap 1ordn or4d5\xc3\xa4 o4reh 1orga 5organi or4gr or4g\xc3\xa5 o1ri 3orient 4ork or4m\xc3\xb6 or4nu or4n\xc3\xa4 o1ro or4pl or5pr or4spa ors5tig or5te or2tr ort3re ort3ro o1ru o3ry o1r\xc3\xa4 o1r\xc3\xb6 o3s2f\xc3\xa4 osk4l o1skop o3som os5pig os4sk os4s4t os3tig os5tiker o5still os4tr ost5ron ost5r\xc3\xb6 os3tul ota2lan 4oti_ 4otie 4otin o1to o5tro ot5run ot3sv ot5ti ot4tr\xc3\xa4 ott2s o1tu o5tun otvin4 o1ty o5t\xc3\xa5 o3t\xc3\xa4 oun4 oup4 4our ou3r\xc3\xb6 ou4s o3ut3t o1va ova4n o1vi ov3r ov4si ov3sl ovs4me o1v\xc3\xa4 o3we ox5 oy2 o3\xc3\xa5 o3\xc3\xa4n o3\xc3\xb6 1pa 4paf pag4 paki3 pakis4 pa5la pals5 pa5l\xc3\xa4 4pand_ pan4tr 3pap 2parb 4parm par3s 2pask pa5ski pa2st 3patr pa3u 2pb4 2pc 2p3d4 pek5tri pekt3ro 4peld pel3s4i 4pem 5peng 3penn pent5r per4bl 3perio 3pers per4sl pe5tro 4pex 2p1f 4p3g 2ph pi4el 1pig pi1o 3pip pi5so pi5sta pi5sto p2j 3pj\xc3\xa4s 4p3k2 p2l p4lac 5plan_ p4lane p3larn p3lev 3plex 3plic 1plik 4plit p3lj 1plom p3lop 2p1m 4p1n p3ni 1po 5poa 2poc 2pof po2i 3polit 4polj poly3 2porg 3pos pos4ter 4pov po4v\xc3\xa4 2pp p4part pp5ask p4pax p3pe p1pi p4pins pp3j pp1l pp3la pp3lin pp5lis pp5lu pp3ly pp3l\xc3\xa5n pp3l\xc3\xa5t pp3l\xc3\xa4 pp3l\xc3\xb6 pp5oc pp3of pp3p4 pp1r pp3ra pp3ri pp3ru pp3ry pp3r\xc3\xa4 pp3tr p2pu p5py pp3\xc3\xa5 p2r2 2pra 5prax 1pres pres4t pre3sta pres5to p3rig p3rik 5pril 3princ pring3 p5riol 3pro pro3g p3ror 4pr\xc3\xa5 3pr\xc3\xa4s 3pr\xc3\xb6v 2ps p2sal 3psalm p5s2ho ps4ken ps2li p3sna 4pso p3sod p1s4t p4stak p4st\xc3\xa4v p2s\xc3\xb6 2p1t p3tri 1pu 4pug pul2l5ov pul5tr 5pung 3punk pus3t 2p1v p\xc3\xa53dr 3p\xc3\xa4l p\xc3\xa45ro 4p\xc3\xb6r 3p\xc3\xa9 qu4 3que 1ra 3ra_ raci4t 3rade_ 4radr ra4du 5ra1e 2raff\xc3\xa4 ra3fr ra5is 2rak ra2lo r4ande 3rande_ 4ran4d3r rand3s 2ransv ra3pl 3rar r4ar_ 4rarb r4are 4rarg r4ark 4rarm r4arn r4ars 4rart r3arta ra5r\xc3\xb6 r4as ras3h ra2st 3raste_ 3rativ ra3tri 2rav ra5yo 2rb 2r1c 2r2d r4daf rda5gr r3dj r4dos rd3ran rd3rat r4dul r3d\xc3\xa5 r3d\xc3\xa4 r4d\xc3\xb6s 1re 3re_ 4reaus re3b 4rec 5reco re3d4r re5du 4reft 4regg 3regn_ re1kr rek5tri 4reld re3lu rem5p 3rems r4en_ 2reni 2renk 2renl re3n\xc3\xb6 re3o 3rer_ 3rern 3reso ress5k re1sti 3ret_ 4retet ret3ro 4rety re5t\xc3\xa5 2revig 4rex 2r1f rf\xc3\xb63ri 2r1g rg3g2 rgs5top 2rh rhands5 3rial 4rib 3rifi 2rifr r3ifr\xc3\xa5 3rifu 3rigt rik2s 3riktn ri4mo 2rind rind3s 5ringen_ ring3r 2rinr 2rins 2rint ri1o 3riot ri5ple ri2st\xc3\xa4 ri4tut ri4vis riv3s 4rj r4jis r3jo r5ju r5j\xc3\xb6 2rk rk3akt r4kek rkes3 r1ki r3klas rk2le r4kl\xc3\xb6 rk3n rk4ne r1ko r4kod rk3tr r1ku r4kup r1k\xc3\xa4 r5k\xc3\xb6r 2r1l r5laka r5lav rld2 rlds3 rl5sp 2r1m r4marb r4mil rm2s5j rm5tr 2r1n rnal4 rn3g4 rn1k r2nom rns4k rns4t rn3t ro3b ro4gro ro2kr 2rolj rol4li rom4a 5roman 5ronau 5rond_ ron4v ro3pl ropp2s ro4ra 2rord 2rorg 2rorie 3rorn ro4sin ro4sn ros3v ro5te 2r1p r4pl\xc3\xb6 r4p\xc3\xb6 4r1r rra4n rrd4 rreligi5 rres4 r5rib rr5k4 r4rob r4rom rr1s rrs2k r4rur 2rs r4seld r4sex r2sin r1ski r4skid rsk3na rs5koll rs4kos rskotts3 r2sku r3sk\xc3\xb6 rslags4v r4sle r4slo r4s5l\xc3\xb6 rs4mo rs5nat rs5n\xc3\xa4 r1sp r2spl r2spo rs3s4 rs5tak rs4te r5stek rs5tend r5steni rs5till r1sto r4ston rst4r r3str\xc3\xb6 r3stu r1sv rs4vag r2sv\xc3\xa4 r1sy 2r1t r2taf r2takti rt4an r4tins r4tom r5trit r3tr\xc3\xa4 rt3t r4tut rubb5l ru3br ru4dan ruks1 ruks3v 5rullera 3rum_ runn2 runns5 4rupp rus2h ru5sha 2rut 5rutig rut4ra ru4vi 5ru\xc3\xb6 2r1v rv4sj rv2s5k\xc3\xa4 r3w rydd5s ry5o r\xc3\xa5ge5l 4r\xc3\xa5l r\xc3\xa5ng3s r\xc3\xa55ra r\xc3\xa53st r\xc3\xa4ck5s 4r\xc3\xa4kt 4r\xc3\xa4m r\xc3\xa4ng3s r\xc3\xa4ns5t 4r\xc3\xa4s r\xc3\xa44san r\xc3\xa4s3s r\xc3\xa45sti r\xc3\xa4v5s r\xc3\xb6d5el r\xc3\xb6d5r r\xc3\xb6d3s 2r\xc3\xb6g r3\xc3\xb6i r\xc3\xb6k3s r\xc3\xb6ns4t 4r\xc3\xb6p 3r\xc3\xb6r r\xc3\xb6r4s r\xc3\xb64st r\xc3\xb6st3r r1\xc3\xb6vr 1sa 3sa_ 3sad_ 3sade 4sadj 2sa3dr sad5s 2saf sa3i sak5ri 2s1akt sa5lo 3s2am sa2ma samman3 sa2mor sand3s 4sang 2sanl s3anl\xc3\xa4 san3sla 2sap 3s4ar_ 2sarb 2sarm s5arm_ 3sarn 2sart 4sarv 4sass 5sat_ sa4tu 2sau s3auk 2s1av 4sb s2c 2sch_ 1scha 2schau 4schb 1schen 1scher 1schet 1schi 4schk 4schm 4schp 3schy 3sch\xc3\xb6 sci3p 4s3d 1se se4at_ se2g 2s3egg 3segl seg3ra sek5le sek3r sek5tr 3sel_ se5ly sem2 3sen_ s5ers\xc3\xa4 3set_ 2sexp 2s1f s4f\xc3\xa4r_ sf\xc3\xb62 4s3g2 2sh 5s2haw shi1s s5h\xc3\xb6 1si sid5s 5sie si4eri si4esk si2ett 3s2ig 3sik sikts3 5sill_ silver3 silv3r 2s1ind 2s1inf sinne2s3 3sinni 4sinr 2sin1s s1inst 5sint_ 2sintr 3sio sis4t siu4 1s2j 2sjak s3jakt 4sjn 4sjt s4ju 5sjuk 4sjur sj\xc3\xa4ls3 3sj\xc3\xb6 4sk_ 2ska_ 3s2kada s2kado 3skaffn 1skaft s4kag s2kal 3skal_ 1skap 5skap_ 5skapet 4skapi skaps1 4skar s4kara 5skarv 4skas s2kat s4kav 4ske_ 3sked_ s4kene 3skepp 4skh sk4i 3skif 5skin 4skis_ 5skiv 5skjor 3skju 4skl sk5lap s3klas 4skn 3s4ko_ 1s4kog 4skogsg 1skol 3skola s4kolo s4korp skor1st 1skot s5kran_ 3skrat sk4ret 3skrev 1skri 3skrif s3krig 5skrin 3skrip s5kris 3skriv s5kron s4kru 5skrub 3skruv 5skr\xc3\xa4c sk3s 2skt 3skulp s3kup 2skv s4kve 1s2ky s4kyn 2skyrk 1sk\xc3\xa5 s4k\xc3\xa5l 5sk\xc3\xa5p_ 4sk\xc3\xa5r 5sk\xc3\xa4nk 3sk\xc3\xa4rv 2sl2 4sla_ s5lad_ s3land 3s2lang s4lant s3lar_ 4slas s1lat s2lev 3slev_ s4lic slins3 4slis s2lit s5lor slotts3 s2lu s3luc s3luf 4slus s3lust 3slut slu4to 3sl\xc3\xa5_ 5s4l\xc3\xa5r s4l\xc3\xa4k s5l\xc3\xa4m s5l\xc3\xa4nn 3s4l\xc3\xa4p 4s3l\xc3\xa4r s2l\xc3\xa4t 3s2l\xc3\xb6j 2sm s2mak 3smak_ s3makt s2mal s2met_ s2mid s2mit 3smitta s3mj 5smug 5smyg sm\xc3\xa55g sm\xc3\xa53k sm\xc3\xa53s 3sm\xc3\xa4d 3sm\xc3\xa4l 4sm\xc3\xa4s 3sm\xc3\xb6r 2s2n4 3snab 3s4nac s3nam s5nare s3nast s5ner 3snib 3snil 3snit 1snitt s3niv 3snut s4n\xc3\xa5 5sn\xc3\xa5r 5sn\xc3\xa4c s4n\xc3\xa4r 3sn\xc3\xb6_ sn\xc3\xb65g 3sn\xc3\xb6r sn\xc3\xb63s 1so 3soc 5sock 2sod 5soi 2solj sol3s2 2som 5somm 3son son4st so5pra so4pu 3sor_ 2sord s5ord_ 2sorg 3sorn 3sot 4sott s2p2 5spann_ s4park 5sparv 4spas s3pass spa5tr 1spe 4sped 3s4pek 3s4pel 4spelsl 2spen 2sper 5spets 3spill 3spir 4spl s1pla s3plan s3plats spli4 s4plin 5split s5pl\xc3\xa4 4spre s3pres 4s3pris 3sprit 2spro s3pry 3spr\xc3\xa5 5spr\xc3\xa4n s3ps 1s4p\xc3\xa5 3sp\xc3\xa5n 3sp\xc3\xa5r 5sp\xc3\xa4n 3sp\xc3\xb6 4s1r 4s1s s5sad sse4lin s5sil ss2k ss5kl ss3kun ss1l ss2lag_ ss2l\xc3\xa4 ss2l\xc3\xb6 ss3na sss4 ss3unn s2sv ss3vi s2t 2st_ 4sta_ 5stac 3stadi s4taf 5stalgis 3stalla 2stalli 5stam_ 5stamm 1stant 5stark_ 5startad 1state 3statl 1stau st3c 2s5te_ 4stea 5steg_ s4tek_ 2stekn 5stekt s4tell 3stem_ 3steme 5stenar 3s4tene 3stense 5stensm 1stera 1stering s4teriu 3sterne 5stetis 2stia 2stib 3stick 2stid s4tiken 2stil 3stil_ 3stink 3stisc 1stit 2stj s5tju 3stj\xc3\xa4l 3stj\xc3\xa4r 2stm 5stoc 1stol 4stolk 4stom stori4eu 5storis stor3s 3straff 4strativ 3strato 3strec 3strej st3ren 1strer 2stria 1strid 5stride 2striel st4rif 1strikt st5risk 1stru 3struk 2strumm s3tryc 5stryk 5str\xc3\xa5k 3str\xc3\xa5l 3str\xc3\xa4c 4str\xc3\xa4d 3str\xc3\xa4ng 5str\xc3\xa4v 3str\xc3\xb6m 2st3s4 st3t 4stv s3tvis 1sty 2styp 1st\xc3\xa5 4st\xc3\xa5g 5st\xc3\xa5l 1st\xc3\xa4 3st\xc3\xa4l 1st\xc3\xb6 1su su4b 3sug su3i 3sum 2sun 5sun_ s1under 5sune s5ung 2sup 5supa su2pu 5sus 2s1ut su4to su4tr s2v2 5svag_ s3vagn 4s3vak 5svam 4svap svars3 3svart 4svas s3vat 4svec 3sven 5svep 4s3ver s5ves 4s3vil s4vine 4svis s5vitt s5v\xc3\xa5d 3sv\xc3\xa5ri 3sv\xc3\xa4ng 5sv\xc3\xa4rm_ s3v\xc3\xa4s s3v\xc3\xa4t 4syk 5syl 3syn syn3k s3yrk 3sys sys4t sys5ter syt2 sy5th 1s\xc3\xa5 5s\xc3\xa5g 4s\xc3\xa5k 2s\xc3\xa5lde s\xc3\xa5ng3 1s\xc3\xa4 s4\xc3\xa4d 2s5\xc3\xa4gg s4\xc3\xa4l 2s\xc3\xa4p 5s\xc3\xa4s 3s\xc3\xa4t 4s\xc3\xa4ta 1s\xc3\xb6 4s\xc3\xb6d 2s\xc3\xb6g s5\xc3\xb6ga s\xc3\xb64ko 4s\xc3\xb6l 4s\xc3\xb6p s\xc3\xb6r2s 2s3\xc3\xb6rt 1ta 3ta_ ta1ch 3tade_ 4tadi 4tads5 2taff 3taga 5tak_ ta5kre 2taktig tak4to 4talf 5tallise tall5s 4talv 3tame 3tami 3tan_ ta4nab 3tande_ 2t3anfa 4tanl t4ap3l 2tappar 3tar_ 4tarb tar4mi 3tarn tars4 4tart 5tartavl 4tarv 4task 3tast ta1str tat2 ta4tan tats3 2tatt 2tav 4tave 5tavla_ 3tavlan 3tavlo tav2s 3tax 2tb4 2tc t3cha t3che 2t3d4 3t2e te4as te3b4 5tec 4teg te2g1r te3gre te3i te4int 4tej tej2s te4kl 5teknik 5teknis 4teld 5te5l\xc3\xb6 5tema 4temo te4mu ten3g4 5tensi ten3tr te4n\xc3\xa4 te5n\xc3\xb6r 5ter_ 5teri\xc3\xb6 ter3k4 5term 5terna 5ters ter3t te4ru 5tes_ 5test tes4te te5stik te5stu 5tetik tets3 4texa 2texp 2t1f4 2t3g4 2th t4hen 1ti 3tial 5tib 5tici 3tid 5tide ti4du 4tid\xc3\xb6 ti4ed tifts5 ti2gel 3tigh ti4go ti2gr 3tigt tik3l 3tiks 5tikul t2il 5tilj 3tillst 3tillv 3till\xc3\xa4 5time 2tind 2tinr 2tint ti4od 3tion ti2os 3tis 4tisc 5tisk 3tiva ti4van 5tivite ti2\xc3\xb6 t2j 4tje 4tjob 2tjou 4tj\xc3\xa4l 4tj\xc3\xa4m 3tj\xc3\xa4n 2t3k2 2t3l 2t1m 2t5n4 tne4r 4todl 3tok 4tol_ 4tolj 2tomr 4toms t2op 5torap t5ord_ 5toriett 4torm torm3s 3torn tor1st 4tort_ tos4k t5ost_ t4ov 2t1p t2r4 2tra t4raf 3trafi 3t4ral_ t4rala 3t4rale 5tralo 3trals t4ralt 3trans tran2s5a 4trar t3ras_ t3rat_ t4rato 4treg 4tren 4trer_ 4trern t3rets_ 2tri 3tribu 5trick trids3 t5riel t1ring t3ring_ 2troc t3rock t4rog t5ronik t3rono 4tropi_ 5tross 5trotn t4rump t4rup 3trupp trus5ta 1tryc 5tryck_ 5tryggh 4tr\xc3\xa5k 5tr\xc3\xa4_ 3tr\xc3\xa4d tr\xc3\xa4ds4 3tr\xc3\xa4f 3tr\xc3\xa4g 4tr\xc3\xa4k t3r\xc3\xa4kn t4r\xc3\xa4n 5tr\xc3\xa4ni 5tr\xc3\xb6ja t4r\xc3\xb6t 5tr\xc3\xa9 2ts t5s4and ts5art t3s4at t3se t4seg ts4en t4sex ts2k t5skall t3skatt t1ski ts3kl tskotts5 t5slot ts5l\xc3\xa4k ts3n\xc3\xa4 t3sn\xc3\xb6 t2so ts3ord ts3pl tss4 t1st ts4te ts5ter ts5tillf ts3tj t3stol t4ston t2stra t4stry t4stur t5styr t2su t3sud t5sy 2tt t3tac t4tau t4ted tte5g4 t4tem tte2n ttes4 t4tex t4tins t4tip tt3ja t1to tt3rad tt3rand tt3rat tt3re tt3ri tt4ry tt4se tt2si tt4sta t3tu t4tug tt1v tt4v\xc3\xa5 t3ty t3t\xc3\xa4 t3t\xc3\xb6r 4t5ugn 2tund 3tunga tung3s 5tunn 2tupp tu5re 2tutb t3utv t3ut\xc3\xb6 tu4vu 5tu\xc3\xb6 2tv t1va 4tve t3vig 3tving t3vit 3tviv t3v\xc3\xa5g 3tv\xc3\xa5n t3v\xc3\xa4n tv\xc3\xa4r3s 3tv\xc3\xa4tt ty5da 5tyg_ 3tyngd 3typ ty3pi 5tys 2tz 3t\xc3\xa5g t\xc3\xa5s4 4t\xc3\xa5t t\xc3\xa4c4ko 4t5\xc3\xa4g 4t\xc3\xa4m 4t\xc3\xa4rm 3t\xc3\xa4vl 4t\xc3\xb64d t\xc3\xb65de 4t\xc3\xb6g 4t\xc3\xb6p t\xc3\xb64pi 3t\xc3\xb6rer t\xc3\xb6rs3t t\xc3\xb64vas 5t\xc3\xa9 u1a u2b ub5al ubb4le ub3lic u4bo u3cha u5cl u2d u4dak u5de ud3r ud4ret uds4a u4du u4dy u1e u2es uf4f\xc3\xa4 uf4tan uf4to 4u1ga u1ge ugg3s ugn4 ugns5 ug3s4 u5ie u1in u3is u3itet u3j u2keb u5ki u4kl uk5la uk3n u1ko ukos4 uk2s uks5ko uk3tris ukt5s uk4t\xc3\xa4 u3ku uk3v u1la ul4di ulds2m ul4du ul4d\xc3\xb6 ull3ste ull3\xc3\xa4n u1lo uls5ti ul2tr u3lu u1l\xc3\xa4 u1l\xc3\xb6 um4f\xc3\xa4 um4so ums4t u1mu u3m\xc3\xb6r 5underl 1unders\xc3\xb6 1underv un4dom und3r un4d\xc3\xa5 un5g2ef un3gersk ung5it ung3r ungs4p 3unif unk3l unk3n un4kr un1sk un4tr un5trati u5nu u1o u1pe u4pern u1pi u2pl u3plet up3lik 3uppfa 1uppg up4pin 1uppla 5uppl\xc3\xa4 up4p3r upp3s upp5sp up5ut ur5ak ur5arv u3re u1ri u1ro u4rob u4rom urs5tin ur4st\xc3\xa4 u5ry u2sak us5anl u3scha u3se usen3 u2s1k us3ka us4kla us4kr u5sky us4k\xc3\xa5 us5l\xc3\xa4 us3n u2sp us3pen us5tat us3tig u3stik us5tin ust5ro u4st\xc3\xa5 u4st\xc3\xa4 us3v u4s\xc3\xa5 u4s\xc3\xa4 u2s\xc3\xb6 u4tak 1utb u4tef ute3s utik2 u5til uti3\xc3\xb6 ut3j 3utj\xc3\xa4m utlands3 u1to u3top uto5s ut3r ut4rer ut4ro ut5rop 1utru 2utsid ut3sl 3utsl\xc3\xa4 2utt utt4j ut1v 3utvec u5ty ut3\xc3\xb6v u5u 2u1v u2vak u4vj u4v\xc3\xa4 u5\xc3\xa5 u3\xc3\xb6 va5dro 1vagn 2v1akti val3k val4li val4st 5valv 5vama 4vand_ 4vanp van4st van5tr 5vap 2varb va4res va4ri_ 4vark var2s vart5r va1ru vas5ti 5vattn 4vau 4vav 5vavi 2vb4 2v1c 2v3d4 1ve 5vec ve2k ve3ke 4veld vensk3\xc3\xa4 5ventera ve3ny ve5n\xc3\xb6 4vep ver5g 3verk ves4 ve2s5p ve1st 3veta 3vete vet5sa vett5s 2v1f 2v1g 2vh v4i vi4c vid3s vild3s vil4t 3vind_ ving3s4 3vinkl vi2no 5vinst_ 5vinste vi5ny 3vis_ vi5sa vis5h vis5ko vi4st vis3ta vi2tr vi4var 4vjo 2v3k2 2v1l 2v1m vm\xc3\xb6rk4 2v1n4 1vo 4vok_ 2vom 4vord 2vorg vos4 2v1p 2v2r 5vrak 3vrera v3ru 2vs v4sc v1s2k v2skri vs4mi v3sni v2so v1st vs4te vs5tr\xc3\xa5 v5styc vs3v\xc3\xa5 v2s\xc3\xb6 2v1t vu4d1 v1und 4v5up 4vut 2v1v 3vy 5v\xc3\xa5ld v\xc3\xa5ngs3 3v\xc3\xa5rd 4v\xc3\xa5ri v\xc3\xa53ru 3v\xc3\xa4g v\xc3\xa4gg5s v\xc3\xa44l v\xc3\xa4ll4s3 3v\xc3\xa4nl 3v\xc3\xa4rde v\xc3\xa44ril 4v\xc3\xa4rj 5v\xc3\xa4rk 3v\xc3\xa4rld 2v\xc3\xa4t 3v\xc3\xa4x 4v\xc3\xb6g 4v\xc3\xb6p 3v\xc3\xb6r 1wa we2 w2h whi2 wi2e w4na x1 xan5d4 xem3pla xis4 xk2 xli4 xs4 xti2 x4t\xc3\xa5 2y y1a y4bris yb4s y2d y4da y5dan y4do yd3r yds4 y4du y4d\xc3\xb6 y1e y1ga y1ge ygg3r yg4g\xc3\xa5 ygs4p y1i y1ki y5klist yk5lon yk3n y1ko y1la yl4gj y3li yl5k yl5l\xc3\xa4 y1lo yl4tr ym2fl ym4for y3m\xc3\xa5 yng3r ynk5l yn4sa yns4t y3or y5ou y1pe y5po yp3ri yre4s y1ri yr4ku yrk5v y1ro yrs4k yr5st yr5tu y1r\xc3\xa53 y5scho ys2st ys3ta ys3ti ys4tik_ yst3ra y2tak y4te_ y4tea y1to ytt3r yt5v y3va y3vi y3v\xc3\xa4 y5w y5\xc3\xa5 1za 1ze ze4ro 1zi 1zo zo4nal 4zp z5s 3zu z4zin \xc3\xa51a \xc3\xa53dj \xc3\xa5ds4l \xc3\xa51e \xc3\xa51f \xc3\xa51ga \xc3\xa51ge \xc3\xa5ge2l \xc3\xa5g3l \xc3\xa5g3s4k \xc3\xa5g3st \xc3\xa5g\xc3\xa54 \xc3\xa53i \xc3\xa51ki 5\xc3\xa5klag \xc3\xa5k4str\xc3\xa4 \xc3\xa51la 1\xc3\xa5lder \xc3\xa52lin \xc3\xa5l3k \xc3\xa5ll4sp \xc3\xa5l2s5e \xc3\xa5l3st \xc3\xa51l\xc3\xa4 \xc3\xa51m \xc3\xa5man4s \xc3\xa5nd4r \xc3\xa5n4du \xc3\xa5ns4t \xc3\xa5ns4v \xc3\xa53o \xc3\xa51p \xc3\xa52pl \xc3\xa55pla \xc3\xa54p\xc3\xb6 \xc3\xa5r4do \xc3\xa5rd4ra \xc3\xa5rd2s \xc3\xa5rd4s3t \xc3\xa54rel \xc3\xa51ri \xc3\xa55ror 5\xc3\xa5rsav \xc3\xa5r5s2li \xc3\xa5r2sv \xc3\xa5r5\xc3\xb6 \xc3\xa5s4ke \xc3\xa5s3n \xc3\xa5ss4 \xc3\xa5s4skr \xc3\xa5s4t \xc3\xa5te2 \xc3\xa5t3ri \xc3\xa53tr\xc3\xa5 \xc3\xa5t2sj \xc3\xa5tt5s \xc3\xa51v \xc3\xa41a \xc3\xa42b 2\xc3\xa4c \xc3\xa4ck5v \xc3\xa42d \xc3\xa4dd3s \xc3\xa4d4du \xc3\xa4de4s \xc3\xa4d3r \xc3\xa4d5se \xc3\xa4d3st \xc3\xa43e \xc3\xa41ga \xc3\xa41ge \xc3\xa4g4go \xc3\xa4g1l \xc3\xa4g3r \xc3\xa4g4re \xc3\xa4g3se \xc3\xa43i \xc3\xa45jo 4\xc3\xa4k \xc3\xa41ki \xc3\xa4k3n \xc3\xa4k3r \xc3\xa41la \xc3\xa4l4pap \xc3\xa4l4seg \xc3\xa4ls5kog \xc3\xa4l4slu \xc3\xa4l2t3r \xc3\xa4l2tu \xc3\xa4l4vin \xc3\xa4mp3l 4\xc3\xa4ndligh \xc3\xa4nd3r \xc3\xa4nd1st \xc3\xa4ng5r \xc3\xa4nni3s \xc3\xa4nn3s \xc3\xa44no \xc3\xa4ns1l \xc3\xa4n4st \xc3\xa4ns5te \xc3\xa4n4sv \xc3\xa4n2t3r \xc3\xa43pe \xc3\xa4pp3l \xc3\xa44pr \xc3\xa4p4st \xc3\xa44rap \xc3\xa4r2bre \xc3\xa4rg5l \xc3\xa4r4gr \xc3\xa41ri \xc3\xa4rib4 \xc3\xa4r4k\xc3\xa4 \xc3\xa4r4nis \xc3\xa4rn3st \xc3\xa4r2n\xc3\xa5 \xc3\xa4r4n\xc3\xb6 \xc3\xa4r5ob \xc3\xa45rol \xc3\xa43rop \xc3\xa45ror \xc3\xa45ros \xc3\xa4r2si \xc3\xa4r4sko \xc3\xa4r2so \xc3\xa4r4sp \xc3\xa4r2sv \xc3\xa4r4tand \xc3\xa4r2tr \xc3\xa4rt3s 4\xc3\xa4s \xc3\xa4s3pa \xc3\xa4s5pi \xc3\xa4s4sk \xc3\xa4s4sp \xc3\xa4s3ta \xc3\xa4st3r \xc3\xa44st\xc3\xa4 \xc3\xa44s\xc3\xa5 2\xc3\xa4t \xc3\xa43to \xc3\xa45tre \xc3\xa4t4s3k \xc3\xa4t5te \xc3\xa4t4top \xc3\xa4tt3r \xc3\xa4t4tu \xc3\xa4t4tv \xc3\xa41va \xc3\xa42vak \xc3\xa43vi \xc3\xa45vu \xc3\xb61a \xc3\xb62d \xc3\xb64dak \xc3\xb64dal \xc3\xb64darv \xc3\xb6de4s5 \xc3\xb64dis \xc3\xb6d3ra \xc3\xb6d2s \xc3\xb6d3se \xc3\xb64du \xc3\xb64d\xc3\xb6 \xc3\xb61e \xc3\xb61ga \xc3\xb6g5ak \xc3\xb65gar 1\xc3\xb6gd \xc3\xb61ge \xc3\xb65ger \xc3\xb6gg4 \xc3\xb6g1l \xc3\xb6g2n \xc3\xb6gn3e 1\xc3\xb6go \xc3\xb6g3si \xc3\xb6g3sk \xc3\xb61i \xc3\xb63jo \xc3\xb6j4sv \xc3\xb64karm \xc3\xb61ki \xc3\xb6k3n \xc3\xb6k2s \xc3\xb6k3sl \xc3\xb61la \xc3\xb6l4kv \xc3\xb6l4k\xc3\xb6 \xc3\xb6l2p \xc3\xb65l\xc3\xa4 \xc3\xb6man4 \xc3\xb6m2kl \xc3\xb64nal \xc3\xb62nom \xc3\xb6ns3ke \xc3\xb6n4so \xc3\xb6nst3r \xc3\xb63pe \xc3\xb64pel \xc3\xb63pi \xc3\xb6p5li \xc3\xb65plo 1\xc3\xb6ppn \xc3\xb64pr \xc3\xb63rande \xc3\xb63ras \xc3\xb64rask \xc3\xb6rb4 \xc3\xb6r3d4r \xc3\xb6r1eni \xc3\xb63res \xc3\xb64restr \xc3\xb63ret \xc3\xb6r5evig \xc3\xb6r3g \xc3\xb61ri \xc3\xb65rig \xc3\xb63ring \xc3\xb6r3int \xc3\xb6r5ir \xc3\xb6r5iv \xc3\xb6r4kal \xc3\xb6r1k2l \xc3\xb6r5kli \xc3\xb6r4nis \xc3\xb6r3ol \xc3\xb6r1or \xc3\xb6r2p5la \xc3\xb6r1s2k \xc3\xb6r3sl \xc3\xb6r4sl\xc3\xa4 \xc3\xb6r5te \xc3\xb6rt5s \xc3\xb6r1u \xc3\xb6r3vr \xc3\xb6r3y \xc3\xb6r1\xc3\xa4 \xc3\xb6r\xc3\xb64d \xc3\xb62sak \xc3\xb6s3n \xc3\xb6s4sj \xc3\xb6s2sk \xc3\xb6s4sp \xc3\xb6s3ta \xc3\xb6st3v \xc3\xb62tak \xc3\xb6ts5ko \xc3\xb6t4st \xc3\xb61v \xc3\xb6ve4 \xc3\xb6ver1 5\xc3\xb6vere \xc3\xb62vj \xc3\xb6v3ra \xc3\xb6v3ri \xc3\xb6v4sk \xc3\xa93e";
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/progbar.css b/inc/3rdparty/libraries/mpdf/progbar.css
new file mode 100644 (file)
index 0000000..78afc31
--- /dev/null
@@ -0,0 +1,66 @@
+body {
+       margin : 0 auto;
+       width:100%;
+       font-family: "Verdana";
+       color: #40454b;
+       font-size: 12px;
+       text-align:center;
+}
+.main {
+       width:540px;
+       margin: 0 auto;
+       text-align:left;
+}
+.heading {
+       font-size:14px;
+       font-weight:bold;
+       color:#CC0000;
+       padding:5px;
+       margin-left:10px;
+       border-bottom:solid;
+       border-bottom-width:1px;
+       border-bottom-color:#333333;
+       /* Use this to suppress the horizontal line under the heading */
+       /* border-bottom: 0px solid #000000; */
+}
+table {
+       font-family: "Verdana";
+       color: #40454b;
+       font-size: 12px;
+}
+.demo {
+       margin : 0 auto;
+       width:100%;
+       margin:20px;
+       /* Use this to suppress all the bars and text */
+       /* display: none; */
+}
+td {
+       vertical-align: top;
+       padding: 0 0.5em 0 0;
+}
+.code {
+       font-family: "Courier New", Courier, monospace;
+       font-size: 10px;
+}
+.code2 {
+       font-family: "Courier New", Courier, monospace;
+       font-size: 11px; font-weight: bold; color: red;
+}
+.barheading {
+       color:#006600;
+       font-weight:bold;
+}
+.progressBar { 
+       border: 1px solid #000000;
+       background-color: #EEEEEE;
+       width: 200px;
+       font-size: 6px; 
+}
+.innerBar { 
+       background-color:#00CC00; 
+       width: 0%; 
+}
+#box3 { 
+       font-weight: bold; 
+}
diff --git a/inc/3rdparty/libraries/mpdf/tmp/dummy.txt b/inc/3rdparty/libraries/mpdf/tmp/dummy.txt
new file mode 100644 (file)
index 0000000..4123496
--- /dev/null
@@ -0,0 +1,2 @@
+This is just a placeholder file so that the folder is created on install.
+It can be deleted once installed.
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt b/inc/3rdparty/libraries/mpdf/ttfontdata/dummy.txt
new file mode 100644 (file)
index 0000000..4123496
--- /dev/null
@@ -0,0 +1,2 @@
+This is just a placeholder file so that the folder is created on install.
+It can be deleted once installed.
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Bold.ttf
new file mode 100644 (file)
index 0000000..7b29acc
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Bold.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf
new file mode 100644 (file)
index 0000000..b5440d9
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-BoldOblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Oblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Oblique.ttf
new file mode 100644 (file)
index 0000000..e233295
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans-Oblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans.ttf
new file mode 100644 (file)
index 0000000..a36615b
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSans.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf
new file mode 100644 (file)
index 0000000..36b3060
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Bold.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf
new file mode 100644 (file)
index 0000000..4bb3ae1
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-BoldOblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf
new file mode 100644 (file)
index 0000000..1f680bd
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed-Oblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed.ttf
new file mode 100644 (file)
index 0000000..2b0b7fe
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansCondensed.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Bold.ttf
new file mode 100644 (file)
index 0000000..98bb6f6
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Bold.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-BoldOblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-BoldOblique.ttf
new file mode 100644 (file)
index 0000000..42bbcde
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-BoldOblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Oblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Oblique.ttf
new file mode 100644 (file)
index 0000000..d6ab522
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono-Oblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono.ttf
new file mode 100644 (file)
index 0000000..b464c52
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSansMono.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Bold.ttf
new file mode 100644 (file)
index 0000000..8c53b1a
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Bold.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf
new file mode 100644 (file)
index 0000000..688c2b7
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-BoldItalic.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Italic.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Italic.ttf
new file mode 100644 (file)
index 0000000..b2ed04a
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif-Italic.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif.ttf
new file mode 100644 (file)
index 0000000..19eba33
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerif.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Bold.ttf
new file mode 100644 (file)
index 0000000..c4b00b7
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Bold.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-BoldItalic.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-BoldItalic.ttf
new file mode 100644 (file)
index 0000000..4d4c7a6
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-BoldItalic.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Italic.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Italic.ttf
new file mode 100644 (file)
index 0000000..04bfc35
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed-Italic.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed.ttf
new file mode 100644 (file)
index 0000000..c9935e1
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuSerifCondensed.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuinfo.txt b/inc/3rdparty/libraries/mpdf/ttfonts/DejaVuinfo.txt
new file mode 100644 (file)
index 0000000..050adc2
--- /dev/null
@@ -0,0 +1,99 @@
+Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. 
+Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
+
+Bitstream Vera Fonts Copyright
+------------------------------
+
+Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
+a trademark of Bitstream, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of the fonts accompanying this license ("Fonts") and associated
+documentation files (the "Font Software"), to reproduce and distribute the
+Font Software, including without limitation the rights to use, copy, merge,
+publish, distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to the
+following conditions:
+
+The above copyright and trademark notices and this permission notice shall
+be included in all copies of one or more of the Font Software typefaces.
+
+The Font Software may be modified, altered, or added to, and in particular
+the designs of glyphs or characters in the Fonts may be modified and
+additional glyphs or characters may be added to the Fonts, only if the fonts
+are renamed to names not containing either the words "Bitstream" or the word
+"Vera".
+
+This License becomes null and void to the extent applicable to Fonts or Font
+Software that has been modified and is distributed under the "Bitstream
+Vera" names.
+
+The Font Software may be sold as part of a larger software package but no
+copy of one or more of the Font Software typefaces may be sold by itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
+TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
+FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
+ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
+FONT SOFTWARE.
+
+Except as contained in this notice, the names of Gnome, the Gnome
+Foundation, and Bitstream Inc., shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this Font Software
+without prior written authorization from the Gnome Foundation or Bitstream
+Inc., respectively. For further information, contact: fonts at gnome dot
+org. 
+
+Arev Fonts Copyright
+------------------------------
+
+Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the fonts accompanying this license ("Fonts") and
+associated documentation files (the "Font Software"), to reproduce
+and distribute the modifications to the Bitstream Vera Font Software,
+including without limitation the rights to use, copy, merge, publish,
+distribute, and/or sell copies of the Font Software, and to permit
+persons to whom the Font Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright and trademark notices and this permission notice
+shall be included in all copies of one or more of the Font Software
+typefaces.
+
+The Font Software may be modified, altered, or added to, and in
+particular the designs of glyphs or characters in the Fonts may be
+modified and additional glyphs or characters may be added to the
+Fonts, only if the fonts are renamed to names not containing either
+the words "Tavmjong Bah" or the word "Arev".
+
+This License becomes null and void to the extent applicable to Fonts
+or Font Software that has been modified and is distributed under the 
+"Tavmjong Bah Arev" names.
+
+The Font Software may be sold as part of a larger software package but
+no copy of one or more of the Font Software typefaces may be sold by
+itself.
+
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
+TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
+
+Except as contained in this notice, the name of Tavmjong Bah shall not
+be used in advertising or otherwise to promote the sale, use or other
+dealings in this Font Software without prior written authorization
+from Tavmjong Bah. For further information, contact: tavmjong @ free
+. fr.
+
+$Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/GNUFreeFontinfo.txt b/inc/3rdparty/libraries/mpdf/ttfonts/GNUFreeFontinfo.txt
new file mode 100644 (file)
index 0000000..c9511a6
--- /dev/null
@@ -0,0 +1,108 @@
+-*-text-*- 
+                          GNU FreeFont
+
+The GNU FreeFont project aims to provide a useful set of free scalable
+(i.e., OpenType) fonts covering as much as possible of the ISO 10646/Unicode
+UCS (Universal Character Set).
+
+Statement of Purpose
+--------------------
+
+The practical reason for putting glyphs together in a single font face is
+to conveniently mix symbols and characters from different writing systems,
+without having to switch fonts.
+
+Coverage
+--------
+
+FreeFont covers the following character sets
+
+* ISO 8859 parts 1-15
+* CEN MES-3 European Unicode Subset
+  http://www.evertype.com/standards/iso10646/pdf/cwa13873.pdf
+* IBM/Microsoft code pages 437, 850, 852, 1250, 1252 and more
+* Microsoft/Adobe Windows Glyph List 4 (WGL4)
+  http://www.microsoft.com/typography/otspec/WGL4.htm
+* KOI8-R and KOI8-RU
+* DEC VT100 graphics symbols
+* International Phonetic Alphabet
+* Arabic, Hebrew, Armenian, Georgian, Ethiopian and Thai alphabets,
+  including Arabic presentation forms A/B
+* mathematical symbols, including the whole TeX repertoire of symbols
+* APL symbols
+  etc.
+
+Editing
+-------
+
+The free outline font editor, George Williams's FontForge
+<http://fontforge.sourceforge.net/> is used for editing the fonts.
+
+Design Issues
+-------------
+
+Which font shapes should be made?  Historical style terms like Renaissance
+or Baroque letterforms cannot be applied beyond Latin/Cyrillic/Greek
+scripts to any greater extent than Kufi or Nashki can be applied beyond
+Arabic script; "italic" is really only meaningful for Latin letters. 
+
+However, most modern writing systems have typographic formulations for
+contrasting uniform and modulated character stroke widths, and have some
+history with "oblique", faces.  Since the advent of the typewriter, most
+have developed a typographic style with uniform-width characters.
+
+Accordingly, the FreeFont family has one monospaced - FreeMono - and two
+proportional faces (one with uniform stroke - FreeSans - and one with
+modulated stroke - FreeSerif).
+
+To make text from different writing systems look good side-by-side, each
+FreeFont face is meant to contain characters of similar style and weight.
+
+Licensing
+---------
+
+Free UCS scalable fonts is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as published
+by the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+The fonts are distributed in the hope that they will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+As a special exception, if you create a document which uses this font, and
+embed this font or unaltered portions of this font into the document, this
+font does not by itself cause the resulting document to be covered by the
+GNU General Public License. This exception does not however invalidate any
+other reasons why the document might be covered by the GNU General Public
+License. If you modify this font, you may extend this exception to your
+version of the font, but you are not obligated to do so.  If you do not
+wish to do so, delete this exception statement from your version.
+
+
+Files and their suffixes
+------------------------
+
+The files with .sfd (Spline Font Database) are in FontForge's native format. 
+Please use these if you plan to modify the font files.
+
+TrueType fonts for immediate consumption are the files with the .ttf
+(TrueType Font) suffix.  These are ready to use in Xwindows based
+systems using FreeType, on Mac OS, and on older Windows systems.
+
+OpenType fonts (with suffix .otf) are for use in Windows Vista. 
+Note that although they can be installed on Linux, but many applications
+in Linux still don't support them.
+
+
+--------------------------------------------------------------------------
+Primoz Peterlin, <primoz.peterlin@biofiz.mf.uni-lj.si>
+Steve White <stevan.white@googlemail.com>
+
+Free UCS scalable fonts: http://savannah.gnu.org/projects/freefont/
+$Id: README,v 1.6 2008/12/25 12:51:41 Stevan_White Exp $
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Bold.ttf
new file mode 100644 (file)
index 0000000..c2aa87e
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Bold.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-BoldOblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-BoldOblique.ttf
new file mode 100644 (file)
index 0000000..889be70
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-BoldOblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Oblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Oblique.ttf
new file mode 100644 (file)
index 0000000..7d12199
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda-Oblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Garuda.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda.ttf
new file mode 100644 (file)
index 0000000..b9fcdfd
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Garuda.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Bold.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Bold.ttf
new file mode 100644 (file)
index 0000000..6c241fa
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Bold.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-BoldOblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-BoldOblique.ttf
new file mode 100644 (file)
index 0000000..70d0417
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-BoldOblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Oblique.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Oblique.ttf
new file mode 100644 (file)
index 0000000..54e19b0
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi-Oblique.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Norasi.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi.ttf
new file mode 100644 (file)
index 0000000..ec9e549
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/Norasi.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/Thai Fonts License.txt b/inc/3rdparty/libraries/mpdf/ttfonts/Thai Fonts License.txt
new file mode 100644 (file)
index 0000000..b7b5f53
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB Riyaz.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB Riyaz.ttf
new file mode 100644 (file)
index 0000000..80e1580
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB Riyaz.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBd.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBd.ttf
new file mode 100644 (file)
index 0000000..e6cf58f
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBd.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBdIt.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBdIt.ttf
new file mode 100644 (file)
index 0000000..19fba78
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazBdIt.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazIt.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazIt.ttf
new file mode 100644 (file)
index 0000000..cc9cc3a
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB RiyazIt.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar Bd.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar Bd.ttf
new file mode 100644 (file)
index 0000000..52a2e38
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar Bd.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar BdIt.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar BdIt.ttf
new file mode 100644 (file)
index 0000000..a7f19d9
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar BdIt.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar It.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar It.ttf
new file mode 100644 (file)
index 0000000..4365d1d
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar It.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar.ttf
new file mode 100644 (file)
index 0000000..7a168b6
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/XB Zar.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/XW Zar Font Info.txt b/inc/3rdparty/libraries/mpdf/ttfonts/XW Zar Font Info.txt
new file mode 100644 (file)
index 0000000..d42e454
--- /dev/null
@@ -0,0 +1,92 @@
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_bn_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_bn_1_001.ttf
new file mode 100644 (file)
index 0000000..893ab7e
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_bn_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_gu_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_gu_1_001.ttf
new file mode 100644 (file)
index 0000000..20ccb60
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_gu_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_hi_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_hi_1_001.ttf
new file mode 100644 (file)
index 0000000..1f62e32
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_hi_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_kn_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_kn_1_001.ttf
new file mode 100644 (file)
index 0000000..2fd1b1b
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_kn_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_ml_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_ml_1_001.ttf
new file mode 100644 (file)
index 0000000..bd78fb3
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_ml_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_or_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_or_1_001.ttf
new file mode 100644 (file)
index 0000000..56bd422
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_or_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_pa_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_pa_1_001.ttf
new file mode 100644 (file)
index 0000000..b10436a
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_pa_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_ta_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_ta_1_001.ttf
new file mode 100644 (file)
index 0000000..fa18c96
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_ta_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ind_te_1_001.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ind_te_1_001.ttf
new file mode 100644 (file)
index 0000000..ae641e2
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ind_te_1_001.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ocrb10.ttf b/inc/3rdparty/libraries/mpdf/ttfonts/ocrb10.ttf
new file mode 100644 (file)
index 0000000..34980b8
Binary files /dev/null and b/inc/3rdparty/libraries/mpdf/ttfonts/ocrb10.ttf differ
diff --git a/inc/3rdparty/libraries/mpdf/ttfonts/ocrbinfo.txt b/inc/3rdparty/libraries/mpdf/ttfonts/ocrbinfo.txt
new file mode 100644 (file)
index 0000000..c2dd995
--- /dev/null
@@ -0,0 +1,60 @@
+Mostly-free OCR B
+This font is used in UPC bar code symbols, including the ISBN symbols on
+most published books.
+
+A freely distributable version seems to be sorely needed.  Until now, it's
+been very difficult to find the font in computer-usable format except by
+paying a high fee to a commercial font vendor.  Even many serious commercial
+publishers have so much trouble getting it right that they just go ahead and
+use Helvetica instead, or even (shudder) Arial.  Since the OCR B font is
+required by an international standard, it seems like it ought to be free. 
+So here it is.  The font in this package is not a "ripped", pirated, or
+shadily reverse engineered version; every effort has been made to ensure
+that it genuinely derives from free sources and all the creators involved
+have actually intended it for free public use.
+
+Converted by Matthew Skala from Metafont format to Postscript and TrueType
+formats, July 28, 2006, using mftrace 1.2.4 by Paul Vojta, which is
+available from
+   http://www.xs4all.nl/~hanwen/mftrace/
+and Autotrace 0.31.1 available from
+   http://autotrace.sourceforge.net/
+
+The Metafont files (not included - see notes below) were coded by Norbert
+Schwarz in the 1980s, based on German standards documents.  He has attached
+a notice, notably not actually claiming any copyright - see the file
+"ocrbinfo" - saying that the fonts are "given to free non commercial use",
+but commenting that he is only free to grant rights to his own work on the
+digitization, because he did not design the original letter forms.  He
+suggests that there may be other copyright claims attached to the letter
+forms themselves, which Schwarz credits as being originally designed by
+"Adam Frutiger" [sic], almost certainly a mistake for Adrian Frutiger.  My
+(Matthew Skala's) understanding of copyright law, at least in the USA and
+Canada, is that in fact typefaces per se cannot be subject to copyright
+claims, so the software embodiment is the only thing subject to copyright
+and Schwarz's release makes it available for whatever "non commercial use"
+means.
+
+To avoid muddying the waters further, any copyright claims by Matthew Skala
+on these files are hereby released to the public domain.  I'd like for these
+fonts to be freely usable even in marginally commercial applications, such
+as to generate UPC labels for books that will be sold for profit, but it may
+not be within my power to grant that myself because I didn't write the
+Metafont files although I did do considerable, and probably copyrightable,
+work on the translation to Postscript and TrueType.  It was *not* a purely
+automated process; try using the tools I used and see how far you get
+without human editing!  I'd also like for these fonts (the fonts themselves
+as opposed to documents made with them) not to be sold, not even indirectly
+by those Web sites that advertise "free downloads" but make it difficult to
+actually download fonts without paying a fee.
+
+NOTE:  This ZIP archive is a stripped-down version containing just the
+essential files for using the main OCR B font on most systems.  If you want
+the much larger complete package, which contains Metafont sources and several
+variant fonts (reverse-video, outline, and slanted), look for a ZIP archive
+called ocrb-complete.zip wherever you found this one.
+
+Matthew Skala
+mskala@ansuz.sooke.bc.ca
+http://ansuz.sooke.bc.ca/
diff --git a/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt b/inc/3rdparty/libraries/mpdf/utils/UnicodeData.txt
new file mode 100644 (file)
index 0000000..1dc7335
--- /dev/null
@@ -0,0 +1,21488 @@
+0000;<control>;Cc;0;BN;;;;;N;NULL;;;;
+0001;<control>;Cc;0;BN;;;;;N;START OF HEADING;;;;
+0002;<control>;Cc;0;BN;;;;;N;START OF TEXT;;;;
+0003;<control>;Cc;0;BN;;;;;N;END OF TEXT;;;;
+0004;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION;;;;
+0005;<control>;Cc;0;BN;;;;;N;ENQUIRY;;;;
+0006;<control>;Cc;0;BN;;;;;N;ACKNOWLEDGE;;;;
+0007;<control>;Cc;0;BN;;;;;N;BELL;;;;
+0008;<control>;Cc;0;BN;;;;;N;BACKSPACE;;;;
+0009;<control>;Cc;0;S;;;;;N;CHARACTER TABULATION;;;;
+000A;<control>;Cc;0;B;;;;;N;LINE FEED (LF);;;;
+000B;<control>;Cc;0;S;;;;;N;LINE TABULATION;;;;
+000C;<control>;Cc;0;WS;;;;;N;FORM FEED (FF);;;;
+000D;<control>;Cc;0;B;;;;;N;CARRIAGE RETURN (CR);;;;
+000E;<control>;Cc;0;BN;;;;;N;SHIFT OUT;;;;
+000F;<control>;Cc;0;BN;;;;;N;SHIFT IN;;;;
+0010;<control>;Cc;0;BN;;;;;N;DATA LINK ESCAPE;;;;
+0011;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL ONE;;;;
+0012;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL TWO;;;;
+0013;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL THREE;;;;
+0014;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL FOUR;;;;
+0015;<control>;Cc;0;BN;;;;;N;NEGATIVE ACKNOWLEDGE;;;;
+0016;<control>;Cc;0;BN;;;;;N;SYNCHRONOUS IDLE;;;;
+0017;<control>;Cc;0;BN;;;;;N;END OF TRANSMISSION BLOCK;;;;
+0018;<control>;Cc;0;BN;;;;;N;CANCEL;;;;
+0019;<control>;Cc;0;BN;;;;;N;END OF MEDIUM;;;;
+001A;<control>;Cc;0;BN;;;;;N;SUBSTITUTE;;;;
+001B;<control>;Cc;0;BN;;;;;N;ESCAPE;;;;
+001C;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR FOUR;;;;
+001D;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR THREE;;;;
+001E;<control>;Cc;0;B;;;;;N;INFORMATION SEPARATOR TWO;;;;
+001F;<control>;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;<control>;Cc;0;BN;;;;;N;DELETE;;;;
+0080;<control>;Cc;0;BN;;;;;N;;;;;
+0081;<control>;Cc;0;BN;;;;;N;;;;;
+0082;<control>;Cc;0;BN;;;;;N;BREAK PERMITTED HERE;;;;
+0083;<control>;Cc;0;BN;;;;;N;NO BREAK HERE;;;;
+0084;<control>;Cc;0;BN;;;;;N;;;;;
+0085;<control>;Cc;0;B;;;;;N;NEXT LINE (NEL);;;;
+0086;<control>;Cc;0;BN;;;;;N;START OF SELECTED AREA;;;;
+0087;<control>;Cc;0;BN;;;;;N;END OF SELECTED AREA;;;;
+0088;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION SET;;;;
+0089;<control>;Cc;0;BN;;;;;N;CHARACTER TABULATION WITH JUSTIFICATION;;;;
+008A;<control>;Cc;0;BN;;;;;N;LINE TABULATION SET;;;;
+008B;<control>;Cc;0;BN;;;;;N;PARTIAL LINE FORWARD;;;;
+008C;<control>;Cc;0;BN;;;;;N;PARTIAL LINE BACKWARD;;;;
+008D;<control>;Cc;0;BN;;;;;N;REVERSE LINE FEED;;;;
+008E;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT TWO;;;;
+008F;<control>;Cc;0;BN;;;;;N;SINGLE SHIFT THREE;;;;
+0090;<control>;Cc;0;BN;;;;;N;DEVICE CONTROL STRING;;;;
+0091;<control>;Cc;0;BN;;;;;N;PRIVATE USE ONE;;;;
+0092;<control>;Cc;0;BN;;;;;N;PRIVATE USE TWO;;;;
+0093;<control>;Cc;0;BN;;;;;N;SET TRANSMIT STATE;;;;
+0094;<control>;Cc;0;BN;;;;;N;CANCEL CHARACTER;;;;
+0095;<control>;Cc;0;BN;;;;;N;MESSAGE WAITING;;;;
+0096;<control>;Cc;0;BN;;;;;N;START OF GUARDED AREA;;;;
+0097;<control>;Cc;0;BN;;;;;N;END OF GUARDED AREA;;;;
+0098;<control>;Cc;0;BN;;;;;N;START OF STRING;;;;
+0099;<control>;Cc;0;BN;;;;;N;;;;;
+009A;<control>;Cc;0;BN;;;;;N;SINGLE CHARACTER INTRODUCER;;;;
+009B;<control>;Cc;0;BN;;;;;N;CONTROL SEQUENCE INTRODUCER;;;;
+009C;<control>;Cc;0;BN;;;;;N;STRING TERMINATOR;;;;
+009D;<control>;Cc;0;BN;;;;;N;OPERATING SYSTEM COMMAND;;;;
+009E;<control>;Cc;0;BN;;;;;N;PRIVACY MESSAGE;;;;
+009F;<control>;Cc;0;BN;;;;;N;APPLICATION PROGRAM COMMAND;;;;
+00A0;NO-BREAK SPACE;Zs;0;CS;<noBreak> 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;<compat> 0020 0308;;;;N;SPACING DIAERESIS;;;;
+00A9;COPYRIGHT SIGN;So;0;ON;;;;;N;;;;;
+00AA;FEMININE ORDINAL INDICATOR;Ll;0;L;<super> 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;<compat> 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;<super> 0032;;2;2;N;SUPERSCRIPT DIGIT TWO;;;;
+00B3;SUPERSCRIPT THREE;No;0;EN;<super> 0033;;3;3;N;SUPERSCRIPT DIGIT THREE;;;;
+00B4;ACUTE ACCENT;Sk;0;ON;<compat> 0020 0301;;;;N;SPACING ACUTE;;;;
+00B5;MICRO SIGN;Ll;0;L;<compat> 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;<compat> 0020 0327;;;;N;SPACING CEDILLA;;;;
+00B9;SUPERSCRIPT ONE;No;0;EN;<super> 0031;;1;1;N;SUPERSCRIPT DIGIT ONE;;;;
+00BA;MASCULINE ORDINAL INDICATOR;Ll;0;L;<super> 006F;;;;N;;;;;
+00BB;RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK;Pf;0;ON;;;;;Y;RIGHT POINTING GUILLEMET;;;;
+00BC;VULGAR FRACTION ONE QUARTER;No;0;ON;<fraction> 0031 2044 0034;;;1/4;N;FRACTION ONE QUARTER;;;;
+00BD;VULGAR FRACTION ONE HALF;No;0;ON;<fraction> 0031 2044 0032;;;1/2;N;FRACTION ONE HALF;;;;
+00BE;VULGAR FRACTION THREE QUARTERS;No;0;ON;<fraction> 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;;;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;;;;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;;;;00FE;
+00DF;LATIN SMALL LETTER SHARP S;Ll;0;L;;;;;N;;;;;
+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;;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;;;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;;;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;<compat> 0049 004A;;;;N;LATIN CAPITAL LETTER I J;;;0133;
+0133;LATIN SMALL LIGATURE IJ;Ll;0;L;<compat> 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;;;;;
+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;<compat> 004C 00B7;;;;N;;;;0140;
+0140;LATIN SMALL LETTER L WITH MIDDLE DOT;Ll;0;L;<compat> 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;<compat> 02BC 006E;;;;N;LATIN SMALL LETTER APOSTROPHE N;;;;
+014A;LATIN CAPITAL LETTER ENG;Lu;0;L;;;;;N;;;;014B;
+014B;LATIN SMALL LETTER ENG;Ll;0;L;;;;;N;;;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;<compat> 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;;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;;;01A3;
+01A3;LATIN SMALL LETTER OI;Ll;0;L;;;;;N;LATIN SMALL LETTER O I;;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;<compat> 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;<compat> 0044 017E;;;;N;LATIN LETTER CAPITAL D SMALL Z HACEK;;01C4;01C6;01C5
+01C6;LATIN SMALL LETTER DZ WITH CARON;Ll;0;L;<compat> 0064 017E;;;;N;LATIN SMALL LETTER D Z HACEK;;01C4;;01C5
+01C7;LATIN CAPITAL LETTER LJ;Lu;0;L;<compat> 004C 004A;;;;N;LATIN CAPITAL LETTER L J;;;01C9;01C8
+01C8;LATIN CAPITAL LETTER L WITH SMALL LETTER J;Lt;0;L;<compat> 004C 006A;;;;N;LATIN LETTER CAPITAL L SMALL J;;01C7;01C9;01C8
+01C9;LATIN SMALL LETTER LJ;Ll;0;L;<compat> 006C 006A;;;;N;LATIN SMALL LETTER L J;;01C7;;01C8
+01CA;LATIN CAPITAL LETTER NJ;Lu;0;L;<compat> 004E 004A;;;;N;LATIN CAPITAL LETTER N J;;;01CC;01CB
+01CB;LATIN CAPITAL LETTER N WITH SMALL LETTER J;Lt;0;L;<compat> 004E 006A;;;;N;LATIN LETTER CAPITAL N SMALL J;;01CA;01CC;01CB
+01CC;LATIN SMALL LETTER NJ;Ll;0;L;<compat> 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;;;01E3;
+01E3;LATIN SMALL LETTER AE WITH MACRON;Ll;0;L;00E6 0304;;;;N;LATIN SMALL LETTER A E MACRON;;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;<compat> 0044 005A;;;;N;;;;01F3;01F2
+01F2;LATIN CAPITAL LETTER D WITH SMALL LETTER Z;Lt;0;L;<compat> 0044 007A;;;;N;;;01F1;01F3;01F2
+01F3;LATIN SMALL LETTER DZ;Ll;0;L;<compat> 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;;;;01FD;
+01FD;LATIN SMALL LETTER AE WITH ACUTE;Ll;0;L;00E6 0301;;;;N;;;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;;;2C7E;;2C7E
+0240;LATIN SMALL LETTER Z WITH SWASH TAIL;Ll;0;L;;;;;N;;;2C7F;;2C7F
+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;;;2C6F;;2C6F
+0251;LATIN SMALL LETTER ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER SCRIPT A;;2C6D;;2C6D
+0252;LATIN SMALL LETTER TURNED ALPHA;Ll;0;L;;;;;N;LATIN SMALL LETTER TURNED SCRIPT A;;2C70;;2C70
+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;;2C6E;;2C6E
+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;<super> 0068;;;;N;;;;;
+02B1;MODIFIER LETTER SMALL H WITH HOOK;Lm;0;L;<super> 0266;;;;N;MODIFIER LETTER SMALL H HOOK;;;;
+02B2;MODIFIER LETTER SMALL J;Lm;0;L;<super> 006A;;;;N;;;;;
+02B3;MODIFIER LETTER SMALL R;Lm;0;L;<super> 0072;;;;N;;;;;
+02B4;MODIFIER LETTER SMALL TURNED R;Lm;0;L;<super> 0279;;;;N;;;;;
+02B5;MODIFIER LETTER SMALL TURNED R WITH HOOK;Lm;0;L;<super> 027B;;;;N;MODIFIER LETTER SMALL TURNED R HOOK;;;;
+02B6;MODIFIER LETTER SMALL CAPITAL INVERTED R;Lm;0;L;<super> 0281;;;;N;;;;;
+02B7;MODIFIER LETTER SMALL W;Lm;0;L;<super> 0077;;;;N;;;;;
+02B8;MODIFIER LETTER SMALL Y;Lm;0;L;<super> 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;;;;
+02C8;MODIFIER LETTER VERTICAL LINE;Lm;0;ON;;;;;N;;;;;
+02C9;MODIFIER LETTER MACRON;Lm;0;ON;;;;;N;;;;;
+02CA;MODIFIER LETTER ACUTE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER ACUTE;;;;
+02CB;MODIFIER LETTER GRAVE ACCENT;Lm;0;ON;;;;;N;MODIFIER LETTER GRAVE;;;;
+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;<compat> 0020 0306;;;;N;SPACING BREVE;;;;
+02D9;DOT ABOVE;Sk;0;ON;<compat> 0020 0307;;;;N;SPACING DOT ABOVE;;;;
+02DA;RING ABOVE;Sk;0;ON;<compat> 0020 030A;;;;N;SPACING RING ABOVE;;;;
+02DB;OGONEK;Sk;0;ON;<compat> 0020 0328;;;;N;SPACING OGONEK;;;;
+02DC;SMALL TILDE;Sk;0;ON;<compat> 0020 0303;;;;N;SPACING TILDE;;;;
+02DD;DOUBLE ACUTE ACCENT;Sk;0;ON;<compat> 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;<super> 0263;;;;N;;;;;
+02E1;MODIFIER LETTER SMALL L;Lm;0;L;<super> 006C;;;;N;;;;;
+02E2;MODIFIER LETTER SMALL S;Lm;0;L;<super> 0073;;;;N;;;;;
+02E3;MODIFIER LETTER SMALL X;Lm;0;L;<super> 0078;;;;N;;;;;
+02E4;MODIFIER LETTER SMALL REVERSED GLOTTAL STOP;Lm;0;L;<super> 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;Lm;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;;;;
+0301;COMBINING ACUTE ACCENT;Mn;230;NSM;;;;;N;NON-SPACING ACUTE;;;;
+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;;;;
+0307;COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;NON-SPACING DOT ABOVE;;;;
+0308;COMBINING DIAERESIS;Mn;230;NSM;;;;;N;NON-SPACING DIAERESIS;;;;
+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;;;;
+0314;COMBINING REVERSED COMMA ABOVE;Mn;230;NSM;;;;;N;NON-SPACING REVERSED COMMA ABOVE;;;;
+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;;;;
+0341;COMBINING ACUTE TONE MARK;Mn;230;NSM;0301;;;;N;NON-SPACING ACUTE TONE MARK;;;;
+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;;;;;
+0370;GREEK CAPITAL LETTER HETA;Lu;0;L;;;;;N;;;;0371;
+0371;GREEK SMALL LETTER HETA;Ll;0;L;;;;;N;;;0370;;0370
+0372;GREEK CAPITAL LETTER ARCHAIC SAMPI;Lu;0;L;;;;;N;;;;0373;
+0373;GREEK SMALL LETTER ARCHAIC SAMPI;Ll;0;L;;;;;N;;;0372;;0372
+0374;GREEK NUMERAL SIGN;Lm;0;ON;02B9;;;;N;GREEK UPPER NUMERAL SIGN;;;;
+0375;GREEK LOWER NUMERAL SIGN;Sk;0;ON;;;;;N;;;;;
+0376;GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA;Lu;0;L;;;;;N;;;;0377;
+0377;GREEK SMALL LETTER PAMPHYLIAN DIGAMMA;Ll;0;L;;;;;N;;;0376;;0376
+037A;GREEK YPOGEGRAMMENI;Lm;0;L;<compat> 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;;;;;
+0384;GREEK TONOS;Sk;0;ON;<compat> 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
+03CF;GREEK CAPITAL KAI SYMBOL;Lu;0;L;;;;;N;;;;03D7;
+03D0;GREEK BETA SYMBOL;Ll;0;L;<compat> 03B2;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392
+03D1;GREEK THETA SYMBOL;Ll;0;L;<compat> 03B8;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398
+03D2;GREEK UPSILON WITH HOOK SYMBOL;Lu;0;L;<compat> 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;<compat> 03C6;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6
+03D6;GREEK PI SYMBOL;Ll;0;L;<compat> 03C0;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0
+03D7;GREEK KAI SYMBOL;Ll;0;L;;;;;N;;;03CF;;03CF
+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;<compat> 03BA;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A
+03F1;GREEK RHO SYMBOL;Ll;0;L;<compat> 03C1;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1
+03F2;GREEK LUNATE SIGMA SYMBOL;Ll;0;L;<compat> 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;<compat> 0398;;;;N;;;;03B8;
+03F5;GREEK LUNATE EPSILON SYMBOL;Ll;0;L;<compat> 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;<compat> 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;;;;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;;;;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;;;;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;;;;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;;;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;;;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;;;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;;;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;;;;
+0487;COMBINING CYRILLIC POKRYTIE;Mn;230;NSM;;;;;N;;;;;
+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;;;04A7;
+04A7;CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER PE HOOK;;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;;;04B5;
+04B5;CYRILLIC SMALL LIGATURE TE TSE;Ll;0;L;;;;;N;CYRILLIC SMALL LETTER TE TSE;;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
+0514;CYRILLIC CAPITAL LETTER LHA;Lu;0;L;;;;;N;;;;0515;
+0515;CYRILLIC SMALL LETTER LHA;Ll;0;L;;;;;N;;;0514;;0514
+0516;CYRILLIC CAPITAL LETTER RHA;Lu;0;L;;;;;N;;;;0517;
+0517;CYRILLIC SMALL LETTER RHA;Ll;0;L;;;;;N;;;0516;;0516
+0518;CYRILLIC CAPITAL LETTER YAE;Lu;0;L;;;;;N;;;;0519;
+0519;CYRILLIC SMALL LETTER YAE;Ll;0;L;;;;;N;;;0518;;0518
+051A;CYRILLIC CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;051B;
+051B;CYRILLIC SMALL LETTER QA;Ll;0;L;;;;;N;;;051A;;051A
+051C;CYRILLIC CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;051D;
+051D;CYRILLIC SMALL LETTER WE;Ll;0;L;;;;;N;;;051C;;051C
+051E;CYRILLIC CAPITAL LETTER ALEUT KA;Lu;0;L;;;;;N;;;;051F;
+051F;CYRILLIC SMALL LETTER ALEUT KA;Ll;0;L;;;;;N;;;051E;;051E
+0520;CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0521;
+0521;CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0520;;0520
+0522;CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;0523;
+0523;CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;0522;;0522
+0524;CYRILLIC CAPITAL LETTER PE WITH DESCENDER;Lu;0;L;;;;;N;;;;0525;
+0525;CYRILLIC SMALL LETTER PE WITH DESCENDER;Ll;0;L;;;;;N;;;0524;;0524
+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;<compat> 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;;;;
+05BD;HEBREW POINT METEG;Mn;22;NSM;;;;;N;;;;;
+05BE;HEBREW PUNCTUATION MAQAF;Pd;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;AN;;;;;N;;;;;
+0601;ARABIC SIGN SANAH;Cf;0;AN;;;;;N;;;;;
+0602;ARABIC FOOTNOTE MARKER;Cf;0;AN;;;;;N;;;;;
+0603;ARABIC SIGN SAFHA;Cf;0;AN;;;;;N;;;;;
+0606;ARABIC-INDIC CUBE ROOT;Sm;0;ON;;;;;N;;;;;
+0607;ARABIC-INDIC FOURTH ROOT;Sm;0;ON;;;;;N;;;;;
+0608;ARABIC RAY;Sm;0;AL;;;;;N;;;;;
+0609;ARABIC-INDIC PER MILLE SIGN;Po;0;ET;;;;;N;;;;;
+060A;ARABIC-INDIC PER TEN THOUSAND SIGN;Po;0;ET;;;;;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;;;;;
+0616;ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH;Mn;230;NSM;;;;;N;;;;;
+0617;ARABIC SMALL HIGH ZAIN;Mn;230;NSM;;;;;N;;;;;
+0618;ARABIC SMALL FATHA;Mn;30;NSM;;;;;N;;;;;
+0619;ARABIC SMALL DAMMA;Mn;31;NSM;;;;;N;;;;;
+061A;ARABIC SMALL KASRA;Mn;32;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;;;;;
+063B;ARABIC LETTER KEHEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063C;ARABIC LETTER KEHEH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+063D;ARABIC LETTER FARSI YEH WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+063E;ARABIC LETTER FARSI YEH WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
+063F;ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE;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;<compat> 0627 0674;;;;N;ARABIC LETTER HIGH HAMZAH ALEF;;;;
+0676;ARABIC LETTER HIGH HAMZA WAW;Lo;0;AL;<compat> 0648 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW;;;;
+0677;ARABIC LETTER U WITH HAMZA ABOVE;Lo;0;AL;<compat> 06C7 0674;;;;N;ARABIC LETTER HIGH HAMZAH WAW WITH DAMMAH;;;;
+0678;ARABIC LETTER HIGH HAMZA YEH;Lo;0;AL;<compat> 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;AN;;;;;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;;;;;
+076E;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH BELOW;Lo;0;AL;;;;;N;;;;;
+076F;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0770;ARABIC LETTER SEEN WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0771;ARABIC LETTER REH WITH SMALL ARABIC LETTER TAH AND TWO DOTS;Lo;0;AL;;;;;N;;;;;
+0772;ARABIC LETTER HAH WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
+0773;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0774;ARABIC LETTER ALEF WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0775;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0776;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+0777;ARABIC LETTER FARSI YEH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+0778;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+0779;ARABIC LETTER WAW WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077A;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT TWO ABOVE;Lo;0;AL;;;;;N;;;;;
+077B;ARABIC LETTER YEH BARREE WITH EXTENDED ARABIC-INDIC DIGIT THREE ABOVE;Lo;0;AL;;;;;N;;;;;
+077C;ARABIC LETTER HAH WITH EXTENDED ARABIC-INDIC DIGIT FOUR BELOW;Lo;0;AL;;;;;N;;;;;
+077D;ARABIC LETTER SEEN WITH EXTENDED ARABIC-INDIC DIGIT FOUR ABOVE;Lo;0;AL;;;;;N;;;;;
+077E;ARABIC LETTER SEEN WITH INVERTED V;Lo;0;AL;;;;;N;;;;;
+077F;ARABIC LETTER KAF WITH TWO DOTS 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;;;;;
+0800;SAMARITAN LETTER ALAF;Lo;0;R;;;;;N;;;;;
+0801;SAMARITAN LETTER BIT;Lo;0;R;;;;;N;;;;;
+0802;SAMARITAN LETTER GAMAN;Lo;0;R;;;;;N;;;;;
+0803;SAMARITAN LETTER DALAT;Lo;0;R;;;;;N;;;;;
+0804;SAMARITAN LETTER IY;Lo;0;R;;;;;N;;;;;
+0805;SAMARITAN LETTER BAA;Lo;0;R;;;;;N;;;;;
+0806;SAMARITAN LETTER ZEN;Lo;0;R;;;;;N;;;;;
+0807;SAMARITAN LETTER IT;Lo;0;R;;;;;N;;;;;
+0808;SAMARITAN LETTER TIT;Lo;0;R;;;;;N;;;;;
+0809;SAMARITAN LETTER YUT;Lo;0;R;;;;;N;;;;;
+080A;SAMARITAN LETTER KAAF;Lo;0;R;;;;;N;;;;;
+080B;SAMARITAN LETTER LABAT;Lo;0;R;;;;;N;;;;;
+080C;SAMARITAN LETTER MIM;Lo;0;R;;;;;N;;;;;
+080D;SAMARITAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+080E;SAMARITAN LETTER SINGAAT;Lo;0;R;;;;;N;;;;;
+080F;SAMARITAN LETTER IN;Lo;0;R;;;;;N;;;;;
+0810;SAMARITAN LETTER FI;Lo;0;R;;;;;N;;;;;
+0811;SAMARITAN LETTER TSAADIY;Lo;0;R;;;;;N;;;;;
+0812;SAMARITAN LETTER QUF;Lo;0;R;;;;;N;;;;;
+0813;SAMARITAN LETTER RISH;Lo;0;R;;;;;N;;;;;
+0814;SAMARITAN LETTER SHAN;Lo;0;R;;;;;N;;;;;
+0815;SAMARITAN LETTER TAAF;Lo;0;R;;;;;N;;;;;
+0816;SAMARITAN MARK IN;Mn;230;NSM;;;;;N;;;;;
+0817;SAMARITAN MARK IN-ALAF;Mn;230;NSM;;;;;N;;;;;
+0818;SAMARITAN MARK OCCLUSION;Mn;230;NSM;;;;;N;;;;;
+0819;SAMARITAN MARK DAGESH;Mn;230;NSM;;;;;N;;;;;
+081A;SAMARITAN MODIFIER LETTER EPENTHETIC YUT;Lm;0;R;;;;;N;;;;;
+081B;SAMARITAN MARK EPENTHETIC YUT;Mn;230;NSM;;;;;N;;;;;
+081C;SAMARITAN VOWEL SIGN LONG E;Mn;230;NSM;;;;;N;;;;;
+081D;SAMARITAN VOWEL SIGN E;Mn;230;NSM;;;;;N;;;;;
+081E;SAMARITAN VOWEL SIGN OVERLONG AA;Mn;230;NSM;;;;;N;;;;;
+081F;SAMARITAN VOWEL SIGN LONG AA;Mn;230;NSM;;;;;N;;;;;
+0820;SAMARITAN VOWEL SIGN AA;Mn;230;NSM;;;;;N;;;;;
+0821;SAMARITAN VOWEL SIGN OVERLONG A;Mn;230;NSM;;;;;N;;;;;
+0822;SAMARITAN VOWEL SIGN LONG A;Mn;230;NSM;;;;;N;;;;;
+0823;SAMARITAN VOWEL SIGN A;Mn;230;NSM;;;;;N;;;;;
+0824;SAMARITAN MODIFIER LETTER SHORT A;Lm;0;R;;;;;N;;;;;
+0825;SAMARITAN VOWEL SIGN SHORT A;Mn;230;NSM;;;;;N;;;;;
+0826;SAMARITAN VOWEL SIGN LONG U;Mn;230;NSM;;;;;N;;;;;
+0827;SAMARITAN VOWEL SIGN U;Mn;230;NSM;;;;;N;;;;;
+0828;SAMARITAN MODIFIER LETTER I;Lm;0;R;;;;;N;;;;;
+0829;SAMARITAN VOWEL SIGN LONG I;Mn;230;NSM;;;;;N;;;;;
+082A;SAMARITAN VOWEL SIGN I;Mn;230;NSM;;;;;N;;;;;
+082B;SAMARITAN VOWEL SIGN O;Mn;230;NSM;;;;;N;;;;;
+082C;SAMARITAN VOWEL SIGN SUKUN;Mn;230;NSM;;;;;N;;;;;
+082D;SAMARITAN MARK NEQUDAA;Mn;230;NSM;;;;;N;;;;;
+0830;SAMARITAN PUNCTUATION NEQUDAA;Po;0;R;;;;;N;;;;;
+0831;SAMARITAN PUNCTUATION AFSAAQ;Po;0;R;;;;;N;;;;;
+0832;SAMARITAN PUNCTUATION ANGED;Po;0;R;;;;;N;;;;;
+0833;SAMARITAN PUNCTUATION BAU;Po;0;R;;;;;N;;;;;
+0834;SAMARITAN PUNCTUATION ATMAAU;Po;0;R;;;;;N;;;;;
+0835;SAMARITAN PUNCTUATION SHIYYAALAA;Po;0;R;;;;;N;;;;;
+0836;SAMARITAN ABBREVIATION MARK;Po;0;R;;;;;N;;;;;
+0837;SAMARITAN PUNCTUATION MELODIC QITSA;Po;0;R;;;;;N;;;;;
+0838;SAMARITAN PUNCTUATION ZIQAA;Po;0;R;;;;;N;;;;;
+0839;SAMARITAN PUNCTUATION QITSA;Po;0;R;;;;;N;;;;;
+083A;SAMARITAN PUNCTUATION ZAEF;Po;0;R;;;;;N;;;;;
+083B;SAMARITAN PUNCTUATION TURU;Po;0;R;;;;;N;;;;;
+083C;SAMARITAN PUNCTUATION ARKAANU;Po;0;R;;;;;N;;;;;
+083D;SAMARITAN PUNCTUATION SOF MASHFAAT;Po;0;R;;;;;N;;;;;
+083E;SAMARITAN PUNCTUATION ANNAAU;Po;0;R;;;;;N;;;;;
+0900;DEVANAGARI SIGN INVERTED CANDRABINDU;Mn;0;NSM;;;;;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;;;;;
+094E;DEVANAGARI VOWEL SIGN PRISHTHAMATRA E;Mc;0;L;;;;;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;;;;;
+0955;DEVANAGARI VOWEL SIGN CANDRA LONG E;Mn;0;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;;;;;
+0971;DEVANAGARI SIGN HIGH SPACING DOT;Lm;0;L;;;;;N;;;;;
+0972;DEVANAGARI LETTER CANDRA A;Lo;0;L;;;;;N;;;;;
+0979;DEVANAGARI LETTER ZHA;Lo;0;L;;;;;N;;;;;
+097A;DEVANAGARI LETTER HEAVY YA;Lo;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;;;;;
+09F1;BENGALI LETTER RA WITH LOWER DIAGONAL;Lo;0;L;;;;;N;BENGALI LETTER VA WITH LOWER DIAGONAL;;;;
+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/16;N;;;;;
+09F5;BENGALI CURRENCY NUMERATOR TWO;No;0;L;;;;1/8;N;;;;;
+09F6;BENGALI CURRENCY NUMERATOR THREE;No;0;L;;;;3/16;N;;;;;
+09F7;BENGALI CURRENCY NUMERATOR FOUR;No;0;L;;;;1/4;N;;;;;
+09F8;BENGALI CURRENCY NUMERATOR ONE LESS THAN THE DENOMINATOR;No;0;L;;;;3/4;N;;;;;
+09F9;BENGALI CURRENCY DENOMINATOR SIXTEEN;No;0;L;;;;16;N;;;;;
+09FA;BENGALI ISSHAR;So;0;L;;;;;N;;;;;
+09FB;BENGALI GANDA MARK;Sc;0;ET;;;;;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;;;;;
+0A51;GURMUKHI SIGN UDAAT;Mn;0;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;;;;;
+0A75;GURMUKHI SIGN YAKASH;Mn;0;NSM;;;;;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;;;;;
+0B44;ORIYA VOWEL SIGN VOCALIC RR;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;;;;;
+0B62;ORIYA VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0B63;ORIYA VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
+0BD0;TAMIL OM;Lo;0;L;;;;;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;;;;;
+0BF4;TAMIL MONTH SIGN;So;0;ON;;;;;N;;;;;
+0BF5;TAMIL YEAR SIGN;So;0;ON;;;;;N;;;;;
+0BF6;TAMIL DEBIT SIGN;So;0;ON;;;;;N;;;;;
+0BF7;TAMIL CREDIT SIGN;So;0;ON;;;;;N;;;;;
+0BF8;TAMIL AS ABOVE SIGN;So;0;ON;;;;;N;;;;;
+0BF9;TAMIL RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+0BFA;TAMIL NUMBER SIGN;So;0;ON;;;;;N;;;;;
+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;;;;;
+0C3D;TELUGU SIGN AVAGRAHA;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;;;;;
+0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
+0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
+0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0C63;TELUGU VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
+0C78;TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR;No;0;ON;;;;0;N;;;;;
+0C79;TELUGU FRACTION DIGIT ONE FOR ODD POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7A;TELUGU FRACTION DIGIT TWO FOR ODD POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7B;TELUGU FRACTION DIGIT THREE FOR ODD POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7C;TELUGU FRACTION DIGIT ONE FOR EVEN POWERS OF FOUR;No;0;ON;;;;1;N;;;;;
+0C7D;TELUGU FRACTION DIGIT TWO FOR EVEN POWERS OF FOUR;No;0;ON;;;;2;N;;;;;
+0C7E;TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR;No;0;ON;;;;3;N;;;;;
+0C7F;TELUGU SIGN TUUMU;So;0;L;;;;;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;;;;;
+0D3D;MALAYALAM SIGN AVAGRAHA;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;;;;;
+0D44;MALAYALAM VOWEL SIGN VOCALIC RR;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;;;;;
+0D62;MALAYALAM VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
+0D63;MALAYALAM VOWEL SIGN VOCALIC LL;Mn;0;NSM;;;;;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;;;;;
+0D70;MALAYALAM NUMBER TEN;No;0;L;;;;10;N;;;;;
+0D71;MALAYALAM NUMBER ONE HUNDRED;No;0;L;;;;100;N;;;;;
+0D72;MALAYALAM NUMBER ONE THOUSAND;No;0;L;;;;1000;N;;;;;
+0D73;MALAYALAM FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
+0D74;MALAYALAM FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
+0D75;MALAYALAM FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
+0D79;MALAYALAM DATE MARK;So;0;L;;;;;N;;;;;
+0D7A;MALAYALAM LETTER CHILLU NN;Lo;0;L;;;;;N;;;;;
+0D7B;MALAYALAM LETTER CHILLU N;Lo;0;L;;;;;N;;;;;
+0D7C;MALAYALAM LETTER CHILLU RR;Lo;0;L;;;;;N;;;;;
+0D7D;MALAYALAM LETTER CHILLU L;Lo;0;L;;;;;N;;;;;
+0D7E;MALAYALAM LETTER CHILLU LL;Lo;0;L;;;;;N;;;;;
+0D7F;MALAYALAM LETTER CHILLU K;Lo;0;L;;;;;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;;;;
+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;<compat> 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;;;;
+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;;;;
+0E44;THAI CHARACTER SARA AI MAIMALAI;Lo;0;L;;;;;N;THAI VOWEL SIGN SARA MAI MALAI;;;;
+0E45;THAI CHARACTER LAKKHANGYAO;Lo;0;L;;;;;N;THAI LAK KHANG YAO;;;;
+0E46;THAI CHARACTER MAIYAMOK;Lm;0;L;;;;;N;THAI MAI YAMOK;;;;
+0E47;THAI CHARACTER MAITAIKHU;Mn;0;NSM;;;;;N;THAI VOWEL SIGN MAI TAI KHU;;;;
+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;;;;
+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;<compat> 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;<compat> 0EAB 0E99;;;;N;;;;;
+0EDD;LAO HO MO;Lo;0;L;<compat> 0EAB 0EA1;;;;N;;;;;
+0F00;TIBETAN SYLLABLE OM;Lo;0;L;;;;;N;;;;;
+0F01;TIBETAN MARK GTER YIG MGO TRUNCATED A;So;0;L;;;;;N;;;;;
+0F02;TIBETAN MARK GTER YIG MGO -UM RNAM BCAD MA;So;0;L;;;;;N;;;;;
+0F03;TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA;So;0;L;;;;;N;;;;;
+0F04;TIBETAN MARK INITIAL YIG MGO MDUN MA;Po;0;L;;;;;N;TIBETAN SINGLE ORNAMENT;;;;
+0F05;TIBETAN MARK CLOSING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;
+0F06;TIBETAN MARK CARET YIG MGO PHUR SHAD MA;Po;0;L;;;;;N;;;;;
+0F07;TIBETAN MARK YIG MGO TSHEG SHAD MA;Po;0;L;;;;;N;;;;;
+0F08;TIBETAN MARK SBRUL SHAD;Po;0;L;;;;;N;TIBETAN RGYANSHAD;;;;
+0F09;TIBETAN MARK BSKUR YIG MGO;Po;0;L;;;;;N;;;;;
+0F0A;TIBETAN MARK BKA- SHOG YIG MGO;Po;0;L;;;;;N;;;;;
+0F0B;TIBETAN MARK INTERSYLLABIC TSHEG;Po;0;L;;;;;N;TIBETAN TSEG;;;;
+0F0C;TIBETAN MARK DELIMITER TSHEG BSTAR;Po;0;L;<noBreak> 0F0B;;;;N;;;;;
+0F0D;TIBETAN MARK SHAD;Po;0;L;;;;;N;TIBETAN SHAD;;;;
+0F0E;TIBETAN MARK NYIS SHAD;Po;0;L;;;;;N;TIBETAN DOUBLE SHAD;;;;
+0F0F;TIBETAN MARK TSHEG SHAD;Po;0;L;;;;;N;;;;;
+0F10;TIBETAN MARK NYIS TSHEG SHAD;Po;0;L;;;;;N;;;;;
+0F11;TIBETAN MARK RIN CHEN SPUNGS SHAD;Po;0;L;;;;;N;TIBETAN RINCHANPHUNGSHAD;;;;
+0F12;TIBETAN MARK RGYA GRAM SHAD;Po;0;L;;;;;N;;;;;
+0F13;TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN;So;0;L;;;;;N;;;;;
+0F14;TIBETAN MARK GTER TSHEG;So;0;L;;;;;N;TIBETAN COMMA;;;;
+0F15;TIBETAN LOGOTYPE SIGN CHAD RTAGS;So;0;L;;;;;N;;;;;
+0F16;TIBETAN LOGOTYPE SIGN LHAG RTAGS;So;0;L;;;;;N;;;;;
+0F17;TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS;So;0;L;;;;;N;;;;;
+0F18;TIBETAN ASTROLOGICAL SIGN -KHYUD PA;Mn;220;NSM;;;;;N;;;;;
+0F19;TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS;Mn;220;NSM;;;;;N;;;;;
+0F1A;TIBETAN SIGN RDEL DKAR GCIG;So;0;L;;;;;N;;;;;
+0F1B;TIBETAN SIGN RDEL DKAR GNYIS;So;0;L;;;;;N;;;;;
+0F1C;TIBETAN SIGN RDEL DKAR GSUM;So;0;L;;;;;N;;;;;
+0F1D;TIBETAN SIGN RDEL NAG GCIG;So;0;L;;;;;N;;;;;
+0F1E;TIBETAN SIGN RDEL NAG GNYIS;So;0;L;;;;;N;;;;;
+0F1F;TIBETAN SIGN RDEL DKAR RDEL NAG;So;0;L;;;;;N;;;;;
+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;;;;;
+0F35;TIBETAN MARK NGAS BZUNG NYI ZLA;Mn;220;NSM;;;;;N;TIBETAN HONORIFIC UNDER RING;;;;
+0F36;TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN;So;0;L;;;;;N;;;;;
+0F37;TIBETAN MARK NGAS BZUNG SGOR RTAGS;Mn;220;NSM;;;;;N;TIBETAN UNDER RING;;;;
+0F38;TIBETAN MARK CHE MGO;So;0;L;;;;;N;;;;;
+0F39;TIBETAN MARK TSA -PHRU;Mn;216;NSM;;;;;N;TIBETAN LENITION MARK;;;;
+0F3A;TIBETAN MARK GUG RTAGS GYON;Ps;0;ON;;;;;Y;;;;;
+0F3B;TIBETAN MARK GUG RTAGS GYAS;Pe;0;ON;;;;;Y;;;;;
+0F3C;TIBETAN MARK ANG KHANG GYON;Ps;0;ON;;;;;Y;TIBETAN LEFT BRACE;;;;
+0F3D;TIBETAN MARK ANG KHANG GYAS;Pe;0;ON;;;;;Y;TIBETAN RIGHT BRACE;;;;
+0F3E;TIBETAN SIGN YAR TSHES;Mc;0;L;;;;;N;;;;;
+0F3F;TIBETAN SIGN MAR TSHES;Mc;0;L;;;;;N;;;;;
+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;;;;;
+0F6B;TIBETAN LETTER KKA;Lo;0;L;;;;;N;;;;;
+0F6C;TIBETAN LETTER RRA;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;<compat> 0FB2 0F81;;;;N;;;;;
+0F78;TIBETAN VOWEL SIGN VOCALIC L;Mn;0;NSM;0FB3 0F80;;;;N;;;;;
+0F79;TIBETAN VOWEL SIGN VOCALIC LL;Mn;0;NSM;<compat> 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;;;;
+0F7F;TIBETAN SIGN RNAM BCAD;Mc;0;L;;;;;N;TIBETAN VISARGA;;;;
+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;;;;
+0F83;TIBETAN SIGN SNA LDAN;Mn;230;NSM;;;;;N;TIBETAN CANDRABINDU;;;;
+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;;;;;
+0F87;TIBETAN SIGN YANG RTAGS;Mn;230;NSM;;;;;N;;;;;
+0F88;TIBETAN SIGN LCE TSA CAN;Lo;0;L;;;;;N;;;;;
+0F89;TIBETAN SIGN MCHU CAN;Lo;0;L;;;;;N;;;;;
+0F8A;TIBETAN SIGN GRU CAN RGYINGS;Lo;0;L;;;;;N;;;;;
+0F8B;TIBETAN SIGN GRU MED RGYINGS;Lo;0;L;;;;;N;;;;;
+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;;;;;
+0FBF;TIBETAN KU RU KHA BZHI MIG CAN;So;0;L;;;;;N;;;;;
+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;;;;;
+0FC3;TIBETAN CANTILLATION SIGN SBUB -CHAL;So;0;L;;;;;N;;;;;
+0FC4;TIBETAN SYMBOL DRIL BU;So;0;L;;;;;N;;;;;
+0FC5;TIBETAN SYMBOL RDO RJE;So;0;L;;;;;N;;;;;
+0FC6;TIBETAN SYMBOL PADMA GDAN;Mn;220;NSM;;;;;N;;;;;
+0FC7;TIBETAN SYMBOL RDO RJE RGYA GRAM;So;0;L;;;;;N;;;;;
+0FC8;TIBETAN SYMBOL PHUR PA;So;0;L;;;;;N;;;;;
+0FC9;TIBETAN SYMBOL NOR BU;So;0;L;;;;;N;;;;;
+0FCA;TIBETAN SYMBOL NOR BU NYIS -KHYIL;So;0;L;;;;;N;;;;;
+0FCB;TIBETAN SYMBOL NOR BU GSUM -KHYIL;So;0;L;;;;;N;;;;;
+0FCC;TIBETAN SYMBOL NOR BU BZHI -KHYIL;So;0;L;;;;;N;;;;;
+0FCE;TIBETAN SIGN RDEL NAG RDEL DKAR;So;0;L;;;;;N;;;;;
+0FCF;TIBETAN SIGN RDEL NAG GSUM;So;0;L;;;;;N;;;;;
+0FD0;TIBETAN MARK BSKA- SHOG GI MGO RGYAN;Po;0;L;;;;;N;;;;;
+0FD1;TIBETAN MARK MNYAM YIG GI MGO RGYAN;Po;0;L;;;;;N;;;;;
+0FD2;TIBETAN MARK NYIS TSHEG;Po;0;L;;;;;N;;;;;
+0FD3;TIBETAN MARK INITIAL BRDA RNYING YIG MGO MDUN MA;Po;0;L;;;;;N;;;;;
+0FD4;TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA;Po;0;L;;;;;N;;;;;
+0FD5;RIGHT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;
+0FD6;LEFT-FACING SVASTI SIGN;So;0;L;;;;;N;;;;;
+0FD7;RIGHT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;
+0FD8;LEFT-FACING SVASTI SIGN WITH DOTS;So;0;L;;;;;N;;;;;
+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;;;;;
+1022;MYANMAR LETTER SHAN 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;;;;;
+1028;MYANMAR LETTER MON E;Lo;0;L;;;;;N;;;;;
+1029;MYANMAR LETTER O;Lo;0;L;;;;;N;;;;;
+102A;MYANMAR LETTER AU;Lo;0;L;;;;;N;;;;;
+102B;MYANMAR VOWEL SIGN TALL AA;Mc;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;;;;;
+1033;MYANMAR VOWEL SIGN MON II;Mn;0;NSM;;;;;N;;;;;
+1034;MYANMAR VOWEL SIGN MON O;Mn;0;NSM;;;;;N;;;;;
+1035;MYANMAR VOWEL SIGN E ABOVE;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;;;;;
+103A;MYANMAR SIGN ASAT;Mn;9;NSM;;;;;N;;;;;
+103B;MYANMAR CONSONANT SIGN MEDIAL YA;Mc;0;L;;;;;N;;;;;
+103C;MYANMAR CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
+103D;MYANMAR CONSONANT SIGN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+103E;MYANMAR CONSONANT SIGN MEDIAL HA;Mn;0;NSM;;;;;N;;;;;
+103F;MYANMAR LETTER GREAT SA;Lo;0;L;;;;;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;;;;;
+105A;MYANMAR LETTER MON NGA;Lo;0;L;;;;;N;;;;;
+105B;MYANMAR LETTER MON JHA;Lo;0;L;;;;;N;;;;;
+105C;MYANMAR LETTER MON BBA;Lo;0;L;;;;;N;;;;;
+105D;MYANMAR LETTER MON BBE;Lo;0;L;;;;;N;;;;;
+105E;MYANMAR CONSONANT SIGN MON MEDIAL NA;Mn;0;NSM;;;;;N;;;;;
+105F;MYANMAR CONSONANT SIGN MON MEDIAL MA;Mn;0;NSM;;;;;N;;;;;
+1060;MYANMAR CONSONANT SIGN MON MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
+1061;MYANMAR LETTER SGAW KAREN SHA;Lo;0;L;;;;;N;;;;;
+1062;MYANMAR VOWEL SIGN SGAW KAREN EU;Mc;0;L;;;;;N;;;;;
+1063;MYANMAR TONE MARK SGAW KAREN HATHI;Mc;0;L;;;;;N;;;;;
+1064;MYANMAR TONE MARK SGAW KAREN KE PHO;Mc;0;L;;;;;N;;;;;
+1065;MYANMAR LETTER WESTERN PWO KAREN THA;Lo;0;L;;;;;N;;;;;
+1066;MYANMAR LETTER WESTERN PWO KAREN PWA;Lo;0;L;;;;;N;;;;;
+1067;MYANMAR VOWEL SIGN WESTERN PWO KAREN EU;Mc;0;L;;;;;N;;;;;
+1068;MYANMAR VOWEL SIGN WESTERN PWO KAREN UE;Mc;0;L;;;;;N;;;;;
+1069;MYANMAR SIGN WESTERN PWO KAREN TONE-1;Mc;0;L;;;;;N;;;;;
+106A;MYANMAR SIGN WESTERN PWO KAREN TONE-2;Mc;0;L;;;;;N;;;;;
+106B;MYANMAR SIGN WESTERN PWO KAREN TONE-3;Mc;0;L;;;;;N;;;;;
+106C;MYANMAR SIGN WESTERN PWO KAREN TONE-4;Mc;0;L;;;;;N;;;;;
+106D;MYANMAR SIGN WESTERN PWO KAREN TONE-5;Mc;0;L;;;;;N;;;;;
+106E;MYANMAR LETTER EASTERN PWO KAREN NNA;Lo;0;L;;;;;N;;;;;
+106F;MYANMAR LETTER EASTERN PWO KAREN YWA;Lo;0;L;;;;;N;;;;;
+1070;MYANMAR LETTER EASTERN PWO KAREN GHWA;Lo;0;L;;;;;N;;;;;
+1071;MYANMAR VOWEL SIGN GEBA KAREN I;Mn;0;NSM;;;;;N;;;;;
+1072;MYANMAR VOWEL SIGN KAYAH OE;Mn;0;NSM;;;;;N;;;;;
+1073;MYANMAR VOWEL SIGN KAYAH U;Mn;0;NSM;;;;;N;;;;;
+1074;MYANMAR VOWEL SIGN KAYAH EE;Mn;0;NSM;;;;;N;;;;;
+1075;MYANMAR LETTER SHAN KA;Lo;0;L;;;;;N;;;;;
+1076;MYANMAR LETTER SHAN KHA;Lo;0;L;;;;;N;;;;;
+1077;MYANMAR LETTER SHAN GA;Lo;0;L;;;;;N;;;;;
+1078;MYANMAR LETTER SHAN CA;Lo;0;L;;;;;N;;;;;
+1079;MYANMAR LETTER SHAN ZA;Lo;0;L;;;;;N;;;;;
+107A;MYANMAR LETTER SHAN NYA;Lo;0;L;;;;;N;;;;;
+107B;MYANMAR LETTER SHAN DA;Lo;0;L;;;;;N;;;;;
+107C;MYANMAR LETTER SHAN NA;Lo;0;L;;;;;N;;;;;
+107D;MYANMAR LETTER SHAN PHA;Lo;0;L;;;;;N;;;;;
+107E;MYANMAR LETTER SHAN FA;Lo;0;L;;;;;N;;;;;
+107F;MYANMAR LETTER SHAN BA;Lo;0;L;;;;;N;;;;;
+1080;MYANMAR LETTER SHAN THA;Lo;0;L;;;;;N;;;;;
+1081;MYANMAR LETTER SHAN HA;Lo;0;L;;;;;N;;;;;
+1082;MYANMAR CONSONANT SIGN SHAN MEDIAL WA;Mn;0;NSM;;;;;N;;;;;
+1083;MYANMAR VOWEL SIGN SHAN AA;Mc;0;L;;;;;N;;;;;
+1084;MYANMAR VOWEL SIGN SHAN E;Mc;0;L;;;;;N;;;;;
+1085;MYANMAR VOWEL SIGN SHAN E ABOVE;Mn;0;NSM;;;;;N;;;;;
+1086;MYANMAR VOWEL SIGN SHAN FINAL Y;Mn;0;NSM;;;;;N;;;;;
+1087;MYANMAR SIGN SHAN TONE-2;Mc;0;L;;;;;N;;;;;
+1088;MYANMAR SIGN SHAN TONE-3;Mc;0;L;;;;;N;;;;;
+1089;MYANMAR SIGN SHAN TONE-5;Mc;0;L;;;;;N;;;;;
+108A;MYANMAR SIGN SHAN TONE-6;Mc;0;L;;;;;N;;;;;
+108B;MYANMAR SIGN SHAN COUNCIL TONE-2;Mc;0;L;;;;;N;;;;;
+108C;MYANMAR SIGN SHAN COUNCIL TONE-3;Mc;0;L;;;;;N;;;;;
+108D;MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE;Mn;220;NSM;;;;;N;;;;;
+108E;MYANMAR LETTER RUMAI PALAUNG FA;Lo;0;L;;;;;N;;;;;
+108F;MYANMAR SIGN RUMAI PALAUNG TONE-5;Mc;0;L;;;;;N;;;;;
+1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+109A;MYANMAR SIGN KHAMTI TONE-1;Mc;0;L;;;;;N;;;;;
+109B;MYANMAR SIGN KHAMTI TONE-3;Mc;0;L;;;;;N;;;;;
+109C;MYANMAR VOWEL SIGN AITON A;Mc;0;L;;;;;N;;;;;
+109D;MYANMAR VOWEL SIGN AITON AI;Mn;0;NSM;;;;;N;;;;;
+109E;MYANMAR SYMBOL SHAN ONE;So;0;L;;;;;N;;;;;
+109F;MYANMAR SYMBOL SHAN EXCLAMATION;So;0;L;;;;;N;;;;;
+10A0;GEORGIAN CAPITAL LETTER AN;Lu;0;L;;;;;N;;;;2D00;
+10A1;GEORGIAN CAPITAL LETTER BAN;Lu;0;L;;;;;N;;;;2D01;
+10A2;GEORGIAN CAPITAL LETTER GAN;Lu;0;L;;;;;N;;;;2D02;
+10A3;GEORGIAN CAPITAL LETTER DON;Lu;0;L;;;;;N;;;;2D03;
+10A4;GEORGIAN CAPITAL LETTER EN;Lu;0;L;;;;;N;;;;2D04;
+10A5;GEORGIAN CAPITAL LETTER VIN;Lu;0;L;;;;;N;;;;2D05;
+10A6;GEORGIAN CAPITAL LETTER ZEN;Lu;0;L;;;;;N;;;;2D06;
+10A7;GEORGIAN CAPITAL LETTER TAN;Lu;0;L;;;;;N;;;;2D07;
+10A8;GEORGIAN CAPITAL LETTER IN;Lu;0;L;;;;;N;;;;2D08;
+10A9;GEORGIAN CAPITAL LETTER KAN;Lu;0;L;;;;;N;;;;2D09;
+10AA;GEORGIAN CAPITAL LETTER LAS;Lu;0;L;;;;;N;;;;2D0A;
+10AB;GEORGIAN CAPITAL LETTER MAN;Lu;0;L;;;;;N;;;;2D0B;
+10AC;GEORGIAN CAPITAL LETTER NAR;Lu;0;L;;;;;N;;;;2D0C;
+10AD;GEORGIAN CAPITAL LETTER ON;Lu;0;L;;;;;N;;;;2D0D;
+10AE;GEORGIAN CAPITAL LETTER PAR;Lu;0;L;;;;;N;;;;2D0E;
+10AF;GEORGIAN CAPITAL LETTER ZHAR;Lu;0;L;;;;;N;;;;2D0F;
+10B0;GEORGIAN CAPITAL LETTER RAE;Lu;0;L;;;;;N;;;;2D10;
+10B1;GEORGIAN CAPITAL LETTER SAN;Lu;0;L;;;;;N;;;;2D11;
+10B2;GEORGIAN CAPITAL LETTER TAR;Lu;0;L;;;;;N;;;;2D12;
+10B3;GEORGIAN CAPITAL LETTER UN;Lu;0;L;;;;;N;;;;2D13;
+10B4;GEORGIAN CAPITAL LETTER PHAR;Lu;0;L;;;;;N;;;;2D14;
+10B5;GEORGIAN CAPITAL LETTER KHAR;Lu;0;L;;;;;N;;;;2D15;
+10B6;GEORGIAN CAPITAL LETTER GHAN;Lu;0;L;;;;;N;;;;2D16;
+10B7;GEORGIAN CAPITAL LETTER QAR;Lu;0;L;;;;;N;;;;2D17;
+10B8;GEORGIAN CAPITAL LETTER SHIN;Lu;0;L;;;;;N;;;;2D18;
+10B9;GEORGIAN CAPITAL LETTER CHIN;Lu;0;L;;;;;N;;;;2D19;
+10BA;GEORGIAN CAPITAL LETTER CAN;Lu;0;L;;;;;N;;;;2D1A;
+10BB;GEORGIAN CAPITAL LETTER JIL;Lu;0;L;;;;;N;;;;2D1B;
+10BC;GEORGIAN CAPITAL LETTER CIL;Lu;0;L;;;;;N;;;;2D1C;
+10BD;GEORGIAN CAPITAL LETTER CHAR;Lu;0;L;;;;;N;;;;2D1D;
+10BE;GEORGIAN CAPITAL LETTER XAN;Lu;0;L;;;;;N;;;;2D1E;
+10BF;GEORGIAN CAPITAL LETTER JHAN;Lu;0;L;;;;;N;;;;2D1F;
+10C0;GEORGIAN CAPITAL LETTER HAE;Lu;0;L;;;;;N;;;;2D20;
+10C1;GEORGIAN CAPITAL LETTER HE;Lu;0;L;;;;;N;;;;2D21;
+10C2;GEORGIAN CAPITAL LETTER HIE;Lu;0;L;;;;;N;;;;2D22;
+10C3;GEORGIAN CAPITAL LETTER WE;Lu;0;L;;;;;N;;;;2D23;
+10C4;GEORGIAN CAPITAL LETTER HAR;Lu;0;L;;;;;N;;;;2D24;
+10C5;GEORGIAN CAPITAL LETTER HOE;Lu;0;L;;;;;N;;;;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;<super> 10DC;;;;N;;;;;
+1100;HANGUL CHOSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+1101;HANGUL CHOSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+1102;HANGUL CHOSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+1103;HANGUL CHOSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+1104;HANGUL CHOSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
+1105;HANGUL CHOSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+1106;HANGUL CHOSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+1107;HANGUL CHOSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+1108;HANGUL CHOSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;
+1109;HANGUL CHOSEONG SIOS;Lo;0;L;;;;;N;;;;;
+110A;HANGUL CHOSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;
+110B;HANGUL CHOSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+110C;HANGUL CHOSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+110D;HANGUL CHOSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;
+110E;HANGUL CHOSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+110F;HANGUL CHOSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+1110;HANGUL CHOSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+1111;HANGUL CHOSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+1112;HANGUL CHOSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+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;;;;;
+115A;HANGUL CHOSEONG KIYEOK-TIKEUT;Lo;0;L;;;;;N;;;;;
+115B;HANGUL CHOSEONG NIEUN-SIOS;Lo;0;L;;;;;N;;;;;
+115C;HANGUL CHOSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;
+115D;HANGUL CHOSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;
+115E;HANGUL CHOSEONG TIKEUT-RIEUL;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;;;;;
+11A3;HANGUL JUNGSEONG A-EU;Lo;0;L;;;;;N;;;;;
+11A4;HANGUL JUNGSEONG YA-U;Lo;0;L;;;;;N;;;;;
+11A5;HANGUL JUNGSEONG YEO-YA;Lo;0;L;;;;;N;;;;;
+11A6;HANGUL JUNGSEONG O-YA;Lo;0;L;;;;;N;;;;;
+11A7;HANGUL JUNGSEONG O-YAE;Lo;0;L;;;;;N;;;;;
+11A8;HANGUL JONGSEONG KIYEOK;Lo;0;L;;;;;N;;;;;
+11A9;HANGUL JONGSEONG SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+11AA;HANGUL JONGSEONG KIYEOK-SIOS;Lo;0;L;;;;;N;;;;;
+11AB;HANGUL JONGSEONG NIEUN;Lo;0;L;;;;;N;;;;;
+11AC;HANGUL JONGSEONG NIEUN-CIEUC;Lo;0;L;;;;;N;;;;;
+11AD;HANGUL JONGSEONG NIEUN-HIEUH;Lo;0;L;;;;;N;;;;;
+11AE;HANGUL JONGSEONG TIKEUT;Lo;0;L;;;;;N;;;;;
+11AF;HANGUL JONGSEONG RIEUL;Lo;0;L;;;;;N;;;;;
+11B0;HANGUL JONGSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;
+11B1;HANGUL JONGSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;
+11B2;HANGUL JONGSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;
+11B3;HANGUL JONGSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;
+11B4;HANGUL JONGSEONG RIEUL-THIEUTH;Lo;0;L;;;;;N;;;;;
+11B5;HANGUL JONGSEONG RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;
+11B6;HANGUL JONGSEONG RIEUL-HIEUH;Lo;0;L;;;;;N;;;;;
+11B7;HANGUL JONGSEONG MIEUM;Lo;0;L;;;;;N;;;;;
+11B8;HANGUL JONGSEONG PIEUP;Lo;0;L;;;;;N;;;;;
+11B9;HANGUL JONGSEONG PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+11BA;HANGUL JONGSEONG SIOS;Lo;0;L;;;;;N;;;;;
+11BB;HANGUL JONGSEONG SSANGSIOS;Lo;0;L;;;;;N;;;;;
+11BC;HANGUL JONGSEONG IEUNG;Lo;0;L;;;;;N;;;;;
+11BD;HANGUL JONGSEONG CIEUC;Lo;0;L;;;;;N;;;;;
+11BE;HANGUL JONGSEONG CHIEUCH;Lo;0;L;;;;;N;;;;;
+11BF;HANGUL JONGSEONG KHIEUKH;Lo;0;L;;;;;N;;;;;
+11C0;HANGUL JONGSEONG THIEUTH;Lo;0;L;;;;;N;;;;;
+11C1;HANGUL JONGSEONG PHIEUPH;Lo;0;L;;;;;N;;;;;
+11C2;HANGUL JONGSEONG HIEUH;Lo;0;L;;;;;N;;;;;
+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;;;;;
+11FA;HANGUL JONGSEONG KIYEOK-NIEUN;Lo;0;L;;;;;N;;;;;
+11FB;HANGUL JONGSEONG KIYEOK-PIEUP;Lo;0;L;;;;;N;;;;;
+11FC;HANGUL JONGSEONG KIYEOK-CHIEUCH;Lo;0;L;;;;;N;;;;;
+11FD;HANGUL JONGSEONG KIYEOK-KHIEUKH;Lo;0;L;;;;;N;;;;;
+11FE;HANGUL JONGSEONG KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;
+11FF;HANGUL JONGSEONG SSANGNIEUN;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;;;;;
+1400;CANADIAN SYLLABICS HYPHEN;Pd;0;ON;;;;;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;;;;;
+1677;CANADIAN SYLLABICS WOODS-CREE THWEE;Lo;0;L;;;;;N;;;;;
+1678;CANADIAN SYLLABICS WOODS-CREE THWI;Lo;0;L;;;;;N;;;;;
+1679;CANADIAN SYLLABICS WOODS-CREE THWII;Lo;0;L;;;;;N;;;;;
+167A;CANADIAN SYLLABICS WOODS-CREE THWO;Lo;0;L;;;;;N;;;;;
+167B;CANADIAN SYLLABICS WOODS-CREE THWOO;Lo;0;L;;;;;N;;;;;
+167C;CANADIAN SYLLABICS WOODS-CREE THWA;Lo;0;L;;;;;N;;;;;
+167D;CANADIAN SYLLABICS WOODS-CREE THWAA;Lo;0;L;;;;;N;;;;;
+167E;CANADIAN SYLLABICS WOODS-CREE FINAL TH;Lo;0;L;;;;;N;;;;;
+167F;CANADIAN SYLLABICS BLACKFOOT W;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;;;;;
+16EF;RUNIC TVIMADUR SYMBOL;Nl;0;L;;;;18;N;;;;;
+16F0;RUNIC BELGTHOR SYMBOL;Nl;0;L;;;;19;N;;;;;
+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;;;;;
+18AA;MONGOLIAN LETTER MANCHU ALI GALI LHA;Lo;0;L;;;;;N;;;;;
+18B0;CANADIAN SYLLABICS OY;Lo;0;L;;;;;N;;;;;
+18B1;CANADIAN SYLLABICS AY;Lo;0;L;;;;;N;;;;;
+18B2;CANADIAN SYLLABICS AAY;Lo;0;L;;;;;N;;;;;
+18B3;CANADIAN SYLLABICS WAY;Lo;0;L;;;;;N;;;;;
+18B4;CANADIAN SYLLABICS POY;Lo;0;L;;;;;N;;;;;
+18B5;CANADIAN SYLLABICS PAY;Lo;0;L;;;;;N;;;;;
+18B6;CANADIAN SYLLABICS PWOY;Lo;0;L;;;;;N;;;;;
+18B7;CANADIAN SYLLABICS TAY;Lo;0;L;;;;;N;;;;;
+18B8;CANADIAN SYLLABICS KAY;Lo;0;L;;;;;N;;;;;
+18B9;CANADIAN SYLLABICS KWAY;Lo;0;L;;;;;N;;;;;
+18BA;CANADIAN SYLLABICS MAY;Lo;0;L;;;;;N;;;;;
+18BB;CANADIAN SYLLABICS NOY;Lo;0;L;;;;;N;;;;;
+18BC;CANADIAN SYLLABICS NAY;Lo;0;L;;;;;N;;;;;
+18BD;CANADIAN SYLLABICS LAY;Lo;0;L;;;;;N;;;;;
+18BE;CANADIAN SYLLABICS SOY;Lo;0;L;;;;;N;;;;;
+18BF;CANADIAN SYLLABICS SAY;Lo;0;L;;;;;N;;;;;
+18C0;CANADIAN SYLLABICS SHOY;Lo;0;L;;;;;N;;;;;
+18C1;CANADIAN SYLLABICS SHAY;Lo;0;L;;;;;N;;;;;
+18C2;CANADIAN SYLLABICS SHWOY;Lo;0;L;;;;;N;;;;;
+18C3;CANADIAN SYLLABICS YOY;Lo;0;L;;;;;N;;;;;
+18C4;CANADIAN SYLLABICS YAY;Lo;0;L;;;;;N;;;;;
+18C5;CANADIAN SYLLABICS RAY;Lo;0;L;;;;;N;;;;;
+18C6;CANADIAN SYLLABICS NWI;Lo;0;L;;;;;N;;;;;
+18C7;CANADIAN SYLLABICS OJIBWAY NWI;Lo;0;L;;;;;N;;;;;
+18C8;CANADIAN SYLLABICS NWII;Lo;0;L;;;;;N;;;;;
+18C9;CANADIAN SYLLABICS OJIBWAY NWII;Lo;0;L;;;;;N;;;;;
+18CA;CANADIAN SYLLABICS NWO;Lo;0;L;;;;;N;;;;;
+18CB;CANADIAN SYLLABICS OJIBWAY NWO;Lo;0;L;;;;;N;;;;;
+18CC;CANADIAN SYLLABICS NWOO;Lo;0;L;;;;;N;;;;;
+18CD;CANADIAN SYLLABICS OJIBWAY NWOO;Lo;0;L;;;;;N;;;;;
+18CE;CANADIAN SYLLABICS RWEE;Lo;0;L;;;;;N;;;;;
+18CF;CANADIAN SYLLABICS RWI;Lo;0;L;;;;;N;;;;;
+18D0;CANADIAN SYLLABICS RWII;Lo;0;L;;;;;N;;;;;
+18D1;CANADIAN SYLLABICS RWO;Lo;0;L;;;;;N;;;;;
+18D2;CANADIAN SYLLABICS RWOO;Lo;0;L;;;;;N;;;;;
+18D3;CANADIAN SYLLABICS RWA;Lo;0;L;;;;;N;;;;;
+18D4;CANADIAN SYLLABICS OJIBWAY P;Lo;0;L;;;;;N;;;;;
+18D5;CANADIAN SYLLABICS OJIBWAY T;Lo;0;L;;;;;N;;;;;
+18D6;CANADIAN SYLLABICS OJIBWAY K;Lo;0;L;;;;;N;;;;;
+18D7;CANADIAN SYLLABICS OJIBWAY C;Lo;0;L;;;;;N;;;;;
+18D8;CANADIAN SYLLABICS OJIBWAY M;Lo;0;L;;;;;N;;;;;
+18D9;CANADIAN SYLLABICS OJIBWAY N;Lo;0;L;;;;;N;;;;;
+18DA;CANADIAN SYLLABICS OJIBWAY S;Lo;0;L;;;;;N;;;;;
+18DB;CANADIAN SYLLABICS OJIBWAY SH;Lo;0;L;;;;;N;;;;;
+18DC;CANADIAN SYLLABICS EASTERN W;Lo;0;L;;;;;N;;;;;
+18DD;CANADIAN SYLLABICS WESTERN W;Lo;0;L;;;;;N;;;;;
+18DE;CANADIAN SYLLABICS FINAL SMALL RING;Lo;0;L;;;;;N;;;;;
+18DF;CANADIAN SYLLABICS FINAL RAISED DOT;Lo;0;L;;;;;N;;;;;
+18E0;CANADIAN SYLLABICS R-CREE RWE;Lo;0;L;;;;;N;;;;;
+18E1;CANADIAN SYLLABICS WEST-CREE LOO;Lo;0;L;;;;;N;;;;;
+18E2;CANADIAN SYLLABICS WEST-CREE LAA;Lo;0;L;;;;;N;;;;;
+18E3;CANADIAN SYLLABICS THWE;Lo;0;L;;;;;N;;;;;
+18E4;CANADIAN SYLLABICS THWA;Lo;0;L;;;;;N;;;;;
+18E5;CANADIAN SYLLABICS TTHWE;Lo;0;L;;;;;N;;;;;
+18E6;CANADIAN SYLLABICS TTHOO;Lo;0;L;;;;;N;;;;;
+18E7;CANADIAN SYLLABICS TTHAA;Lo;0;L;;;;;N;;;;;
+18E8;CANADIAN SYLLABICS TLHWE;Lo;0;L;;;;;N;;;;;
+18E9;CANADIAN SYLLABICS TLHOO;Lo;0;L;;;;;N;;;;;
+18EA;CANADIAN SYLLABICS SAYISI SHWE;Lo;0;L;;;;;N;;;;;
+18EB;CANADIAN SYLLABICS SAYISI SHOO;Lo;0;L;;;;;N;;;;;
+18EC;CANADIAN SYLLABICS SAYISI HOO;Lo;0;L;;;;;N;;;;;
+18ED;CANADIAN SYLLABICS CARRIER GWU;Lo;0;L;;;;;N;;;;;
+18EE;CANADIAN SYLLABICS CARRIER DENE GEE;Lo;0;L;;;;;N;;;;;
+18EF;CANADIAN SYLLABICS CARRIER GAA;Lo;0;L;;;;;N;;;;;
+18F0;CANADIAN SYLLABICS CARRIER GWA;Lo;0;L;;;;;N;;;;;
+18F1;CANADIAN SYLLABICS SAYISI JUU;Lo;0;L;;;;;N;;;;;
+18F2;CANADIAN SYLLABICS CARRIER JWA;Lo;0;L;;;;;N;;;;;
+18F3;CANADIAN SYLLABICS BEAVER DENE L;Lo;0;L;;;;;N;;;;;
+18F4;CANADIAN SYLLABICS BEAVER DENE R;Lo;0;L;;;;;N;;;;;
+18F5;CANADIAN SYLLABICS CARRIER DENTAL S;Lo;0;L;;;;;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;L;;;;;N;;;;;
+192A;LIMBU SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+192B;LIMBU SUBJOINED LETTER WA;Mc;0;L;;;;;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;;;;;
+19AA;NEW TAI LUE LETTER HIGH SUA;Lo;0;L;;;;;N;;;;;
+19AB;NEW TAI LUE LETTER LOW SUA;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;;;;;
+19DA;NEW TAI LUE THAM DIGIT ONE;Nd;0;L;;1;1;1;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;;;;;
+1A20;TAI THAM LETTER HIGH KA;Lo;0;L;;;;;N;;;;;
+1A21;TAI THAM LETTER HIGH KHA;Lo;0;L;;;;;N;;;;;
+1A22;TAI THAM LETTER HIGH KXA;Lo;0;L;;;;;N;;;;;
+1A23;TAI THAM LETTER LOW KA;Lo;0;L;;;;;N;;;;;
+1A24;TAI THAM LETTER LOW KXA;Lo;0;L;;;;;N;;;;;
+1A25;TAI THAM LETTER LOW KHA;Lo;0;L;;;;;N;;;;;
+1A26;TAI THAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+1A27;TAI THAM LETTER HIGH CA;Lo;0;L;;;;;N;;;;;
+1A28;TAI THAM LETTER HIGH CHA;Lo;0;L;;;;;N;;;;;
+1A29;TAI THAM LETTER LOW CA;Lo;0;L;;;;;N;;;;;
+1A2A;TAI THAM LETTER LOW SA;Lo;0;L;;;;;N;;;;;
+1A2B;TAI THAM LETTER LOW CHA;Lo;0;L;;;;;N;;;;;
+1A2C;TAI THAM LETTER NYA;Lo;0;L;;;;;N;;;;;
+1A2D;TAI THAM LETTER RATA;Lo;0;L;;;;;N;;;;;
+1A2E;TAI THAM LETTER HIGH RATHA;Lo;0;L;;;;;N;;;;;
+1A2F;TAI THAM LETTER DA;Lo;0;L;;;;;N;;;;;
+1A30;TAI THAM LETTER LOW RATHA;Lo;0;L;;;;;N;;;;;
+1A31;TAI THAM LETTER RANA;Lo;0;L;;;;;N;;;;;
+1A32;TAI THAM LETTER HIGH TA;Lo;0;L;;;;;N;;;;;
+1A33;TAI THAM LETTER HIGH THA;Lo;0;L;;;;;N;;;;;
+1A34;TAI THAM LETTER LOW TA;Lo;0;L;;;;;N;;;;;
+1A35;TAI THAM LETTER LOW THA;Lo;0;L;;;;;N;;;;;
+1A36;TAI THAM LETTER NA;Lo;0;L;;;;;N;;;;;
+1A37;TAI THAM LETTER BA;Lo;0;L;;;;;N;;;;;
+1A38;TAI THAM LETTER HIGH PA;Lo;0;L;;;;;N;;;;;
+1A39;TAI THAM LETTER HIGH PHA;Lo;0;L;;;;;N;;;;;
+1A3A;TAI THAM LETTER HIGH FA;Lo;0;L;;;;;N;;;;;
+1A3B;TAI THAM LETTER LOW PA;Lo;0;L;;;;;N;;;;;
+1A3C;TAI THAM LETTER LOW FA;Lo;0;L;;;;;N;;;;;
+1A3D;TAI THAM LETTER LOW PHA;Lo;0;L;;;;;N;;;;;
+1A3E;TAI THAM LETTER MA;Lo;0;L;;;;;N;;;;;
+1A3F;TAI THAM LETTER LOW YA;Lo;0;L;;;;;N;;;;;
+1A40;TAI THAM LETTER HIGH YA;Lo;0;L;;;;;N;;;;;
+1A41;TAI THAM LETTER RA;Lo;0;L;;;;;N;;;;;
+1A42;TAI THAM LETTER RUE;Lo;0;L;;;;;N;;;;;
+1A43;TAI THAM LETTER LA;Lo;0;L;;;;;N;;;;;
+1A44;TAI THAM LETTER LUE;Lo;0;L;;;;;N;;;;;
+1A45;TAI THAM LETTER WA;Lo;0;L;;;;;N;;;;;
+1A46;TAI THAM LETTER HIGH SHA;Lo;0;L;;;;;N;;;;;
+1A47;TAI THAM LETTER HIGH SSA;Lo;0;L;;;;;N;;;;;
+1A48;TAI THAM LETTER HIGH SA;Lo;0;L;;;;;N;;;;;
+1A49;TAI THAM LETTER HIGH HA;Lo;0;L;;;;;N;;;;;
+1A4A;TAI THAM LETTER LLA;Lo;0;L;;;;;N;;;;;
+1A4B;TAI THAM LETTER A;Lo;0;L;;;;;N;;;;;
+1A4C;TAI THAM LETTER LOW HA;Lo;0;L;;;;;N;;;;;
+1A4D;TAI THAM LETTER I;Lo;0;L;;;;;N;;;;;
+1A4E;TAI THAM LETTER II;Lo;0;L;;;;;N;;;;;
+1A4F;TAI THAM LETTER U;Lo;0;L;;;;;N;;;;;
+1A50;TAI THAM LETTER UU;Lo;0;L;;;;;N;;;;;
+1A51;TAI THAM LETTER EE;Lo;0;L;;;;;N;;;;;
+1A52;TAI THAM LETTER OO;Lo;0;L;;;;;N;;;;;
+1A53;TAI THAM LETTER LAE;Lo;0;L;;;;;N;;;;;
+1A54;TAI THAM LETTER GREAT SA;Lo;0;L;;;;;N;;;;;
+1A55;TAI THAM CONSONANT SIGN MEDIAL RA;Mc;0;L;;;;;N;;;;;
+1A56;TAI THAM CONSONANT SIGN MEDIAL LA;Mn;0;NSM;;;;;N;;;;;
+1A57;TAI THAM CONSONANT SIGN LA TANG LAI;Mc;0;L;;;;;N;;;;;
+1A58;TAI THAM SIGN MAI KANG LAI;Mn;0;NSM;;;;;N;;;;;
+1A59;TAI THAM CONSONANT SIGN FINAL NGA;Mn;0;NSM;;;;;N;;;;;
+1A5A;TAI THAM CONSONANT SIGN LOW PA;Mn;0;NSM;;;;;N;;;;;
+1A5B;TAI THAM CONSONANT SIGN HIGH RATHA OR LOW PA;Mn;0;NSM;;;;;N;;;;;
+1A5C;TAI THAM CONSONANT SIGN MA;Mn;0;NSM;;;;;N;;;;;
+1A5D;TAI THAM CONSONANT SIGN BA;Mn;0;NSM;;;;;N;;;;;
+1A5E;TAI THAM CONSONANT SIGN SA;Mn;0;NSM;;;;;N;;;;;
+1A60;TAI THAM SIGN SAKOT;Mn;9;NSM;;;;;N;;;;;
+1A61;TAI THAM VOWEL SIGN A;Mc;0;L;;;;;N;;;;;
+1A62;TAI THAM VOWEL SIGN MAI SAT;Mn;0;NSM;;;;;N;;;;;
+1A63;TAI THAM VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+1A64;TAI THAM VOWEL SIGN TALL AA;Mc;0;L;;;;;N;;;;;
+1A65;TAI THAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+1A66;TAI THAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+1A67;TAI THAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
+1A68;TAI THAM VOWEL SIGN UUE;Mn;0;NSM;;;;;N;;;;;
+1A69;TAI THAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+1A6A;TAI THAM VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+1A6B;TAI THAM VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+1A6C;TAI THAM VOWEL SIGN OA BELOW;Mn;0;NSM;;;;;N;;;;;
+1A6D;TAI THAM VOWEL SIGN OY;Mc;0;L;;;;;N;;;;;
+1A6E;TAI THAM VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+1A6F;TAI THAM VOWEL SIGN AE;Mc;0;L;;;;;N;;;;;
+1A70;TAI THAM VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1A71;TAI THAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+1A72;TAI THAM VOWEL SIGN THAM AI;Mc;0;L;;;;;N;;;;;
+1A73;TAI THAM VOWEL SIGN OA ABOVE;Mn;0;NSM;;;;;N;;;;;
+1A74;TAI THAM SIGN MAI KANG;Mn;0;NSM;;;;;N;;;;;
+1A75;TAI THAM SIGN TONE-1;Mn;230;NSM;;;;;N;;;;;
+1A76;TAI THAM SIGN TONE-2;Mn;230;NSM;;;;;N;;;;;
+1A77;TAI THAM SIGN KHUEN TONE-3;Mn;230;NSM;;;;;N;;;;;
+1A78;TAI THAM SIGN KHUEN TONE-4;Mn;230;NSM;;;;;N;;;;;
+1A79;TAI THAM SIGN KHUEN TONE-5;Mn;230;NSM;;;;;N;;;;;
+1A7A;TAI THAM SIGN RA HAAM;Mn;230;NSM;;;;;N;;;;;
+1A7B;TAI THAM SIGN MAI SAM;Mn;230;NSM;;;;;N;;;;;
+1A7C;TAI THAM SIGN KHUEN-LUE KARAN;Mn;230;NSM;;;;;N;;;;;
+1A7F;TAI THAM COMBINING CRYPTOGRAMMIC DOT;Mn;220;NSM;;;;;N;;;;;
+1A80;TAI THAM HORA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1A81;TAI THAM HORA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1A82;TAI THAM HORA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1A83;TAI THAM HORA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1A84;TAI THAM HORA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1A85;TAI THAM HORA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1A86;TAI THAM HORA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1A87;TAI THAM HORA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1A88;TAI THAM HORA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1A89;TAI THAM HORA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1A90;TAI THAM THAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1A91;TAI THAM THAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1A92;TAI THAM THAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1A93;TAI THAM THAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1A94;TAI THAM THAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1A95;TAI THAM THAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1A96;TAI THAM THAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1A97;TAI THAM THAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1A98;TAI THAM THAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1A99;TAI THAM THAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1AA0;TAI THAM SIGN WIANG;Po;0;L;;;;;N;;;;;
+1AA1;TAI THAM SIGN WIANGWAAK;Po;0;L;;;;;N;;;;;
+1AA2;TAI THAM SIGN SAWAN;Po;0;L;;;;;N;;;;;
+1AA3;TAI THAM SIGN KEOW;Po;0;L;;;;;N;;;;;
+1AA4;TAI THAM SIGN HOY;Po;0;L;;;;;N;;;;;
+1AA5;TAI THAM SIGN DOKMAI;Po;0;L;;;;;N;;;;;
+1AA6;TAI THAM SIGN REVERSED ROTATED RANA;Po;0;L;;;;;N;;;;;
+1AA7;TAI THAM SIGN MAI YAMOK;Lm;0;L;;;;;N;;;;;
+1AA8;TAI THAM SIGN KAAN;Po;0;L;;;;;N;;;;;
+1AA9;TAI THAM SIGN KAANKUU;Po;0;L;;;;;N;;;;;
+1AAA;TAI THAM SIGN SATKAAN;Po;0;L;;;;;N;;;;;
+1AAB;TAI THAM SIGN SATKAANKUU;Po;0;L;;;;;N;;;;;
+1AAC;TAI THAM SIGN HANG;Po;0;L;;;;;N;;;;;
+1AAD;TAI THAM SIGN CAANG;Po;0;L;;;;;N;;;;;
+1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;;
+1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;;
+1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;;
+1B03;BALINESE SIGN SURANG;Mn;0;NSM;;;;;N;;;;;
+1B04;BALINESE SIGN BISAH;Mc;0;L;;;;;N;;;;;
+1B05;BALINESE LETTER AKARA;Lo;0;L;;;;;N;;;;;
+1B06;BALINESE LETTER AKARA TEDUNG;Lo;0;L;1B05 1B35;;;;N;;;;;
+1B07;BALINESE LETTER IKARA;Lo;0;L;;;;;N;;;;;
+1B08;BALINESE LETTER IKARA TEDUNG;Lo;0;L;1B07 1B35;;;;N;;;;;
+1B09;BALINESE LETTER UKARA;Lo;0;L;;;;;N;;;;;
+1B0A;BALINESE LETTER UKARA TEDUNG;Lo;0;L;1B09 1B35;;;;N;;;;;
+1B0B;BALINESE LETTER RA REPA;Lo;0;L;;;;;N;;;;;
+1B0C;BALINESE LETTER RA REPA TEDUNG;Lo;0;L;1B0B 1B35;;;;N;;;;;
+1B0D;BALINESE LETTER LA LENGA;Lo;0;L;;;;;N;;;;;
+1B0E;BALINESE LETTER LA LENGA TEDUNG;Lo;0;L;1B0D 1B35;;;;N;;;;;
+1B0F;BALINESE LETTER EKARA;Lo;0;L;;;;;N;;;;;
+1B10;BALINESE LETTER AIKARA;Lo;0;L;;;;;N;;;;;
+1B11;BALINESE LETTER OKARA;Lo;0;L;;;;;N;;;;;
+1B12;BALINESE LETTER OKARA TEDUNG;Lo;0;L;1B11 1B35;;;;N;;;;;
+1B13;BALINESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B14;BALINESE LETTER KA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+1B15;BALINESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B16;BALINESE LETTER GA GORA;Lo;0;L;;;;;N;;;;;
+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;;;;;
+1B1A;BALINESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B1B;BALINESE LETTER JA JERA;Lo;0;L;;;;;N;;;;;
+1B1C;BALINESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B1D;BALINESE LETTER TA LATIK;Lo;0;L;;;;;N;;;;;
+1B1E;BALINESE LETTER TA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+1B1F;BALINESE LETTER DA MURDA ALPAPRANA;Lo;0;L;;;;;N;;;;;
+1B20;BALINESE LETTER DA MURDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+1B21;BALINESE LETTER NA RAMBAT;Lo;0;L;;;;;N;;;;;
+1B22;BALINESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B23;BALINESE LETTER TA TAWA;Lo;0;L;;;;;N;;;;;
+1B24;BALINESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B25;BALINESE LETTER DA MADU;Lo;0;L;;;;;N;;;;;
+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;;;;;
+1B29;BALINESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B2A;BALINESE LETTER BA KEMBANG;Lo;0;L;;;;;N;;;;;
+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;;;;;
+1B31;BALINESE LETTER SA SAPA;Lo;0;L;;;;;N;;;;;
+1B32;BALINESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B33;BALINESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1B34;BALINESE SIGN REREKAN;Mn;7;NSM;;;;;N;;;;;
+1B35;BALINESE VOWEL SIGN TEDUNG;Mc;0;L;;;;;N;;;;;
+1B36;BALINESE VOWEL SIGN ULU;Mn;0;NSM;;;;;N;;;;;
+1B37;BALINESE VOWEL SIGN ULU SARI;Mn;0;NSM;;;;;N;;;;;
+1B38;BALINESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;
+1B39;BALINESE VOWEL SIGN SUKU ILUT;Mn;0;NSM;;;;;N;;;;;
+1B3A;BALINESE VOWEL SIGN RA REPA;Mn;0;NSM;;;;;N;;;;;
+1B3B;BALINESE VOWEL SIGN RA REPA TEDUNG;Mc;0;L;1B3A 1B35;;;;N;;;;;
+1B3C;BALINESE VOWEL SIGN LA LENGA;Mn;0;NSM;;;;;N;;;;;
+1B3D;BALINESE VOWEL SIGN LA LENGA TEDUNG;Mc;0;L;1B3C 1B35;;;;N;;;;;
+1B3E;BALINESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;
+1B3F;BALINESE VOWEL SIGN TALING REPA;Mc;0;L;;;;;N;;;;;
+1B40;BALINESE VOWEL SIGN TALING TEDUNG;Mc;0;L;1B3E 1B35;;;;N;;;;;
+1B41;BALINESE VOWEL SIGN TALING REPA TEDUNG;Mc;0;L;1B3F 1B35;;;;N;;;;;
+1B42;BALINESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;
+1B43;BALINESE VOWEL SIGN PEPET TEDUNG;Mc;0;L;1B42 1B35;;;;N;;;;;
+1B44;BALINESE ADEG ADEG;Mc;9;L;;;;;N;;;;;
+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;;;;;
+1B5B;BALINESE PAMADA;Po;0;L;;;;;N;;;;;
+1B5C;BALINESE WINDU;Po;0;L;;;;;N;;;;;
+1B5D;BALINESE CARIK PAMUNGKAH;Po;0;L;;;;;N;;;;;
+1B5E;BALINESE CARIK SIKI;Po;0;L;;;;;N;;;;;
+1B5F;BALINESE CARIK PAREREN;Po;0;L;;;;;N;;;;;
+1B60;BALINESE PAMENENG;Po;0;L;;;;;N;;;;;
+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;;;;;
+1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
+1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
+1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
+1B83;SUNDANESE LETTER A;Lo;0;L;;;;;N;;;;;
+1B84;SUNDANESE LETTER I;Lo;0;L;;;;;N;;;;;
+1B85;SUNDANESE LETTER U;Lo;0;L;;;;;N;;;;;
+1B86;SUNDANESE LETTER AE;Lo;0;L;;;;;N;;;;;
+1B87;SUNDANESE LETTER O;Lo;0;L;;;;;N;;;;;
+1B88;SUNDANESE LETTER E;Lo;0;L;;;;;N;;;;;
+1B89;SUNDANESE LETTER EU;Lo;0;L;;;;;N;;;;;
+1B8A;SUNDANESE LETTER KA;Lo;0;L;;;;;N;;;;;
+1B8B;SUNDANESE LETTER QA;Lo;0;L;;;;;N;;;;;
+1B8C;SUNDANESE LETTER GA;Lo;0;L;;;;;N;;;;;
+1B8D;SUNDANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+1B8E;SUNDANESE LETTER CA;Lo;0;L;;;;;N;;;;;
+1B8F;SUNDANESE LETTER JA;Lo;0;L;;;;;N;;;;;
+1B90;SUNDANESE LETTER ZA;Lo;0;L;;;;;N;;;;;
+1B91;SUNDANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+1B92;SUNDANESE LETTER TA;Lo;0;L;;;;;N;;;;;
+1B93;SUNDANESE LETTER DA;Lo;0;L;;;;;N;;;;;
+1B94;SUNDANESE LETTER NA;Lo;0;L;;;;;N;;;;;
+1B95;SUNDANESE LETTER PA;Lo;0;L;;;;;N;;;;;
+1B96;SUNDANESE LETTER FA;Lo;0;L;;;;;N;;;;;
+1B97;SUNDANESE LETTER VA;Lo;0;L;;;;;N;;;;;
+1B98;SUNDANESE LETTER BA;Lo;0;L;;;;;N;;;;;
+1B99;SUNDANESE LETTER MA;Lo;0;L;;;;;N;;;;;
+1B9A;SUNDANESE LETTER YA;Lo;0;L;;;;;N;;;;;
+1B9B;SUNDANESE LETTER RA;Lo;0;L;;;;;N;;;;;
+1B9C;SUNDANESE LETTER LA;Lo;0;L;;;;;N;;;;;
+1B9D;SUNDANESE LETTER WA;Lo;0;L;;;;;N;;;;;
+1B9E;SUNDANESE LETTER SA;Lo;0;L;;;;;N;;;;;
+1B9F;SUNDANESE LETTER XA;Lo;0;L;;;;;N;;;;;
+1BA0;SUNDANESE LETTER HA;Lo;0;L;;;;;N;;;;;
+1BA1;SUNDANESE CONSONANT SIGN PAMINGKAL;Mc;0;L;;;;;N;;;;;
+1BA2;SUNDANESE CONSONANT SIGN PANYAKRA;Mn;0;NSM;;;;;N;;;;;
+1BA3;SUNDANESE CONSONANT SIGN PANYIKU;Mn;0;NSM;;;;;N;;;;;
+1BA4;SUNDANESE VOWEL SIGN PANGHULU;Mn;0;NSM;;;;;N;;;;;
+1BA5;SUNDANESE VOWEL SIGN PANYUKU;Mn;0;NSM;;;;;N;;;;;
+1BA6;SUNDANESE VOWEL SIGN PANAELAENG;Mc;0;L;;;;;N;;;;;
+1BA7;SUNDANESE VOWEL SIGN PANOLONG;Mc;0;L;;;;;N;;;;;
+1BA8;SUNDANESE VOWEL SIGN PAMEPET;Mn;0;NSM;;;;;N;;;;;
+1BA9;SUNDANESE VOWEL SIGN PANEULEUNG;Mn;0;NSM;;;;;N;;;;;
+1BAA;SUNDANESE SIGN PAMAAEH;Mc;9;L;;;;;N;;;;;
+1BAE;SUNDANESE LETTER KHA;Lo;0;L;;;;;N;;;;;
+1BAF;SUNDANESE LETTER SYA;Lo;0;L;;;;;N;;;;;
+1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C00;LEPCHA LETTER KA;Lo;0;L;;;;;N;;;;;
+1C01;LEPCHA LETTER KLA;Lo;0;L;;;;;N;;;;;
+1C02;LEPCHA LETTER KHA;Lo;0;L;;;;;N;;;;;
+1C03;LEPCHA LETTER GA;Lo;0;L;;;;;N;;;;;
+1C04;LEPCHA LETTER GLA;Lo;0;L;;;;;N;;;;;
+1C05;LEPCHA LETTER NGA;Lo;0;L;;;;;N;;;;;
+1C06;LEPCHA LETTER CA;Lo;0;L;;;;;N;;;;;
+1C07;LEPCHA LETTER CHA;Lo;0;L;;;;;N;;;;;
+1C08;LEPCHA LETTER JA;Lo;0;L;;;;;N;;;;;
+1C09;LEPCHA LETTER NYA;Lo;0;L;;;;;N;;;;;
+1C0A;LEPCHA LETTER TA;Lo;0;L;;;;;N;;;;;
+1C0B;LEPCHA LETTER THA;Lo;0;L;;;;;N;;;;;
+1C0C;LEPCHA LETTER DA;Lo;0;L;;;;;N;;;;;
+1C0D;LEPCHA LETTER NA;Lo;0;L;;;;;N;;;;;
+1C0E;LEPCHA LETTER PA;Lo;0;L;;;;;N;;;;;
+1C0F;LEPCHA LETTER PLA;Lo;0;L;;;;;N;;;;;
+1C10;LEPCHA LETTER PHA;Lo;0;L;;;;;N;;;;;
+1C11;LEPCHA LETTER FA;Lo;0;L;;;;;N;;;;;
+1C12;LEPCHA LETTER FLA;Lo;0;L;;;;;N;;;;;
+1C13;LEPCHA LETTER BA;Lo;0;L;;;;;N;;;;;
+1C14;LEPCHA LETTER BLA;Lo;0;L;;;;;N;;;;;
+1C15;LEPCHA LETTER MA;Lo;0;L;;;;;N;;;;;
+1C16;LEPCHA LETTER MLA;Lo;0;L;;;;;N;;;;;
+1C17;LEPCHA LETTER TSA;Lo;0;L;;;;;N;;;;;
+1C18;LEPCHA LETTER TSHA;Lo;0;L;;;;;N;;;;;
+1C19;LEPCHA LETTER DZA;Lo;0;L;;;;;N;;;;;
+1C1A;LEPCHA LETTER YA;Lo;0;L;;;;;N;;;;;
+1C1B;LEPCHA LETTER RA;Lo;0;L;;;;;N;;;;;
+1C1C;LEPCHA LETTER LA;Lo;0;L;;;;;N;;;;;
+1C1D;LEPCHA LETTER HA;Lo;0;L;;;;;N;;;;;
+1C1E;LEPCHA LETTER HLA;Lo;0;L;;;;;N;;;;;
+1C1F;LEPCHA LETTER VA;Lo;0;L;;;;;N;;;;;
+1C20;LEPCHA LETTER SA;Lo;0;L;;;;;N;;;;;
+1C21;LEPCHA LETTER SHA;Lo;0;L;;;;;N;;;;;
+1C22;LEPCHA LETTER WA;Lo;0;L;;;;;N;;;;;
+1C23;LEPCHA LETTER A;Lo;0;L;;;;;N;;;;;
+1C24;LEPCHA SUBJOINED LETTER YA;Mc;0;L;;;;;N;;;;;
+1C25;LEPCHA SUBJOINED LETTER RA;Mc;0;L;;;;;N;;;;;
+1C26;LEPCHA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+1C27;LEPCHA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+1C28;LEPCHA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+1C29;LEPCHA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+1C2A;LEPCHA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+1C2B;LEPCHA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+1C2C;LEPCHA VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+1C2D;LEPCHA CONSONANT SIGN K;Mn;0;NSM;;;;;N;;;;;
+1C2E;LEPCHA CONSONANT SIGN M;Mn;0;NSM;;;;;N;;;;;
+1C2F;LEPCHA CONSONANT SIGN L;Mn;0;NSM;;;;;N;;;;;
+1C30;LEPCHA CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+1C31;LEPCHA CONSONANT SIGN P;Mn;0;NSM;;;;;N;;;;;
+1C32;LEPCHA CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+1C33;LEPCHA CONSONANT SIGN T;Mn;0;NSM;;;;;N;;;;;
+1C34;LEPCHA CONSONANT SIGN NYIN-DO;Mc;0;L;;;;;N;;;;;
+1C35;LEPCHA CONSONANT SIGN KANG;Mc;0;L;;;;;N;;;;;
+1C36;LEPCHA SIGN RAN;Mn;0;NSM;;;;;N;;;;;
+1C37;LEPCHA SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+1C3B;LEPCHA PUNCTUATION TA-ROL;Po;0;L;;;;;N;;;;;
+1C3C;LEPCHA PUNCTUATION NYET THYOOM TA-ROL;Po;0;L;;;;;N;;;;;
+1C3D;LEPCHA PUNCTUATION CER-WA;Po;0;L;;;;;N;;;;;
+1C3E;LEPCHA PUNCTUATION TSHOOK CER-WA;Po;0;L;;;;;N;;;;;
+1C3F;LEPCHA PUNCTUATION TSHOOK;Po;0;L;;;;;N;;;;;
+1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C4D;LEPCHA LETTER TTA;Lo;0;L;;;;;N;;;;;
+1C4E;LEPCHA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+1C4F;LEPCHA LETTER DDA;Lo;0;L;;;;;N;;;;;
+1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+1C5A;OL CHIKI LETTER LA;Lo;0;L;;;;;N;;;;;
+1C5B;OL CHIKI LETTER AT;Lo;0;L;;;;;N;;;;;
+1C5C;OL CHIKI LETTER AG;Lo;0;L;;;;;N;;;;;
+1C5D;OL CHIKI LETTER ANG;Lo;0;L;;;;;N;;;;;
+1C5E;OL CHIKI LETTER AL;Lo;0;L;;;;;N;;;;;
+1C5F;OL CHIKI LETTER LAA;Lo;0;L;;;;;N;;;;;
+1C60;OL CHIKI LETTER AAK;Lo;0;L;;;;;N;;;;;
+1C61;OL CHIKI LETTER AAJ;Lo;0;L;;;;;N;;;;;
+1C62;OL CHIKI LETTER AAM;Lo;0;L;;;;;N;;;;;
+1C63;OL CHIKI LETTER AAW;Lo;0;L;;;;;N;;;;;
+1C64;OL CHIKI LETTER LI;Lo;0;L;;;;;N;;;;;
+1C65;OL CHIKI LETTER IS;Lo;0;L;;;;;N;;;;;
+1C66;OL CHIKI LETTER IH;Lo;0;L;;;;;N;;;;;
+1C67;OL CHIKI LETTER INY;Lo;0;L;;;;;N;;;;;
+1C68;OL CHIKI LETTER IR;Lo;0;L;;;;;N;;;;;
+1C69;OL CHIKI LETTER LU;Lo;0;L;;;;;N;;;;;
+1C6A;OL CHIKI LETTER UC;Lo;0;L;;;;;N;;;;;
+1C6B;OL CHIKI LETTER UD;Lo;0;L;;;;;N;;;;;
+1C6C;OL CHIKI LETTER UNN;Lo;0;L;;;;;N;;;;;
+1C6D;OL CHIKI LETTER UY;Lo;0;L;;;;;N;;;;;
+1C6E;OL CHIKI LETTER LE;Lo;0;L;;;;;N;;;;;
+1C6F;OL CHIKI LETTER EP;Lo;0;L;;;;;N;;;;;
+1C70;OL CHIKI LETTER EDD;Lo;0;L;;;;;N;;;;;
+1C71;OL CHIKI LETTER EN;Lo;0;L;;;;;N;;;;;
+1C72;OL CHIKI LETTER ERR;Lo;0;L;;;;;N;;;;;
+1C73;OL CHIKI LETTER LO;Lo;0;L;;;;;N;;;;;
+1C74;OL CHIKI LETTER OTT;Lo;0;L;;;;;N;;;;;
+1C75;OL CHIKI LETTER OB;Lo;0;L;;;;;N;;;;;
+1C76;OL CHIKI LETTER OV;Lo;0;L;;;;;N;;;;;
+1C77;OL CHIKI LETTER OH;Lo;0;L;;;;;N;;;;;
+1C78;OL CHIKI MU TTUDDAG;Lm;0;L;;;;;N;;;;;
+1C79;OL CHIKI GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7A;OL CHIKI MU-GAAHLAA TTUDDAAG;Lm;0;L;;;;;N;;;;;
+1C7B;OL CHIKI RELAA;Lm;0;L;;;;;N;;;;;
+1C7C;OL CHIKI PHAARKAA;Lm;0;L;;;;;N;;;;;
+1C7D;OL CHIKI AHAD;Lm;0;L;;;;;N;;;;;
+1C7E;OL CHIKI PUNCTUATION MUCAAD;Po;0;L;;;;;N;;;;;
+1C7F;OL CHIKI PUNCTUATION DOUBLE MUCAAD;Po;0;L;;;;;N;;;;;
+1CD0;VEDIC TONE KARSHANA;Mn;230;NSM;;;;;N;;;;;
+1CD1;VEDIC TONE SHARA;Mn;230;NSM;;;;;N;;;;;
+1CD2;VEDIC TONE PRENKHA;Mn;230;NSM;;;;;N;;;;;
+1CD3;VEDIC SIGN NIHSHVASA;Po;0;L;;;;;N;;;;;
+1CD4;VEDIC SIGN YAJURVEDIC MIDLINE SVARITA;Mn;1;NSM;;;;;N;;;;;
+1CD5;VEDIC TONE YAJURVEDIC AGGRAVATED INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
+1CD6;VEDIC TONE YAJURVEDIC INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
+1CD7;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA;Mn;220;NSM;;;;;N;;;;;
+1CD8;VEDIC TONE CANDRA BELOW;Mn;220;NSM;;;;;N;;;;;
+1CD9;VEDIC TONE YAJURVEDIC KATHAKA INDEPENDENT SVARITA SCHROEDER;Mn;220;NSM;;;;;N;;;;;
+1CDA;VEDIC TONE DOUBLE SVARITA;Mn;230;NSM;;;;;N;;;;;
+1CDB;VEDIC TONE TRIPLE SVARITA;Mn;230;NSM;;;;;N;;;;;
+1CDC;VEDIC TONE KATHAKA ANUDATTA;Mn;220;NSM;;;;;N;;;;;
+1CDD;VEDIC TONE DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+1CDE;VEDIC TONE TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+1CDF;VEDIC TONE THREE DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+1CE0;VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA;Mn;230;NSM;;;;;N;;;;;
+1CE1;VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA;Mc;0;L;;;;;N;;;;;
+1CE2;VEDIC SIGN VISARGA SVARITA;Mn;1;NSM;;;;;N;;;;;
+1CE3;VEDIC SIGN VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;
+1CE4;VEDIC SIGN REVERSED VISARGA UDATTA;Mn;1;NSM;;;;;N;;;;;
+1CE5;VEDIC SIGN VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;
+1CE6;VEDIC SIGN REVERSED VISARGA ANUDATTA;Mn;1;NSM;;;;;N;;;;;
+1CE7;VEDIC SIGN VISARGA UDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;
+1CE8;VEDIC SIGN VISARGA ANUDATTA WITH TAIL;Mn;1;NSM;;;;;N;;;;;
+1CE9;VEDIC SIGN ANUSVARA ANTARGOMUKHA;Lo;0;L;;;;;N;;;;;
+1CEA;VEDIC SIGN ANUSVARA BAHIRGOMUKHA;Lo;0;L;;;;;N;;;;;
+1CEB;VEDIC SIGN ANUSVARA VAMAGOMUKHA;Lo;0;L;;;;;N;;;;;
+1CEC;VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL;Lo;0;L;;;;;N;;;;;
+1CED;VEDIC SIGN TIRYAK;Mn;220;NSM;;;;;N;;;;;
+1CEE;VEDIC SIGN HEXIFORM LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
+1CEF;VEDIC SIGN LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
+1CF0;VEDIC SIGN RTHANG LONG ANUSVARA;Lo;0;L;;;;;N;;;;;
+1CF1;VEDIC SIGN ANUSVARA UBHAYATO MUKHA;Lo;0;L;;;;;N;;;;;
+1CF2;VEDIC SIGN ARDHAVISARGA;Mc;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;<super> 0041;;;;N;;;;;
+1D2D;MODIFIER LETTER CAPITAL AE;Lm;0;L;<super> 00C6;;;;N;;;;;
+1D2E;MODIFIER LETTER CAPITAL B;Lm;0;L;<super> 0042;;;;N;;;;;
+1D2F;MODIFIER LETTER CAPITAL BARRED B;Lm;0;L;;;;;N;;;;;
+1D30;MODIFIER LETTER CAPITAL D;Lm;0;L;<super> 0044;;;;N;;;;;
+1D31;MODIFIER LETTER CAPITAL E;Lm;0;L;<super> 0045;;;;N;;;;;
+1D32;MODIFIER LETTER CAPITAL REVERSED E;Lm;0;L;<super> 018E;;;;N;;;;;
+1D33;MODIFIER LETTER CAPITAL G;Lm;0;L;<super> 0047;;;;N;;;;;
+1D34;MODIFIER LETTER CAPITAL H;Lm;0;L;<super> 0048;;;;N;;;;;
+1D35;MODIFIER LETTER CAPITAL I;Lm;0;L;<super> 0049;;;;N;;;;;
+1D36;MODIFIER LETTER CAPITAL J;Lm;0;L;<super> 004A;;;;N;;;;;
+1D37;MODIFIER LETTER CAPITAL K;Lm;0;L;<super> 004B;;;;N;;;;;
+1D38;MODIFIER LETTER CAPITAL L;Lm;0;L;<super> 004C;;;;N;;;;;
+1D39;MODIFIER LETTER CAPITAL M;Lm;0;L;<super> 004D;;;;N;;;;;
+1D3A;MODIFIER LETTER CAPITAL N;Lm;0;L;<super> 004E;;;;N;;;;;
+1D3B;MODIFIER LETTER CAPITAL REVERSED N;Lm;0;L;;;;;N;;;;;
+1D3C;MODIFIER LETTER CAPITAL O;Lm;0;L;<super> 004F;;;;N;;;;;
+1D3D;MODIFIER LETTER CAPITAL OU;Lm;0;L;<super> 0222;;;;N;;;;;
+1D3E;MODIFIER LETTER CAPITAL P;Lm;0;L;<super> 0050;;;;N;;;;;
+1D3F;MODIFIER LETTER CAPITAL R;Lm;0;L;<super> 0052;;;;N;;;;;
+1D40;MODIFIER LETTER CAPITAL T;Lm;0;L;<super> 0054;;;;N;;;;;
+1D41;MODIFIER LETTER CAPITAL U;Lm;0;L;<super> 0055;;;;N;;;;;
+1D42;MODIFIER LETTER CAPITAL W;Lm;0;L;<super> 0057;;;;N;;;;;
+1D43;MODIFIER LETTER SMALL A;Lm;0;L;<super> 0061;;;;N;;;;;
+1D44;MODIFIER LETTER SMALL TURNED A;Lm;0;L;<super> 0250;;;;N;;;;;
+1D45;MODIFIER LETTER SMALL ALPHA;Lm;0;L;<super> 0251;;;;N;;;;;
+1D46;MODIFIER LETTER SMALL TURNED AE;Lm;0;L;<super> 1D02;;;;N;;;;;
+1D47;MODIFIER LETTER SMALL B;Lm;0;L;<super> 0062;;;;N;;;;;
+1D48;MODIFIER LETTER SMALL D;Lm;0;L;<super> 0064;;;;N;;;;;
+1D49;MODIFIER LETTER SMALL E;Lm;0;L;<super> 0065;;;;N;;;;;
+1D4A;MODIFIER LETTER SMALL SCHWA;Lm;0;L;<super> 0259;;;;N;;;;;
+1D4B;MODIFIER LETTER SMALL OPEN E;Lm;0;L;<super> 025B;;;;N;;;;;
+1D4C;MODIFIER LETTER SMALL TURNED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1D4D;MODIFIER LETTER SMALL G;Lm;0;L;<super> 0067;;;;N;;;;;
+1D4E;MODIFIER LETTER SMALL TURNED I;Lm;0;L;;;;;N;;;;;
+1D4F;MODIFIER LETTER SMALL K;Lm;0;L;<super> 006B;;;;N;;;;;
+1D50;MODIFIER LETTER SMALL M;Lm;0;L;<super> 006D;;;;N;;;;;
+1D51;MODIFIER LETTER SMALL ENG;Lm;0;L;<super> 014B;;;;N;;;;;
+1D52;MODIFIER LETTER SMALL O;Lm;0;L;<super> 006F;;;;N;;;;;
+1D53;MODIFIER LETTER SMALL OPEN O;Lm;0;L;<super> 0254;;;;N;;;;;
+1D54;MODIFIER LETTER SMALL TOP HALF O;Lm;0;L;<super> 1D16;;;;N;;;;;
+1D55;MODIFIER LETTER SMALL BOTTOM HALF O;Lm;0;L;<super> 1D17;;;;N;;;;;
+1D56;MODIFIER LETTER SMALL P;Lm;0;L;<super> 0070;;;;N;;;;;
+1D57;MODIFIER LETTER SMALL T;Lm;0;L;<super> 0074;;;;N;;;;;
+1D58;MODIFIER LETTER SMALL U;Lm;0;L;<super> 0075;;;;N;;;;;
+1D59;MODIFIER LETTER SMALL SIDEWAYS U;Lm;0;L;<super> 1D1D;;;;N;;;;;
+1D5A;MODIFIER LETTER SMALL TURNED M;Lm;0;L;<super> 026F;;;;N;;;;;
+1D5B;MODIFIER LETTER SMALL V;Lm;0;L;<super> 0076;;;;N;;;;;
+1D5C;MODIFIER LETTER SMALL AIN;Lm;0;L;<super> 1D25;;;;N;;;;;
+1D5D;MODIFIER LETTER SMALL BETA;Lm;0;L;<super> 03B2;;;;N;;;;;
+1D5E;MODIFIER LETTER SMALL GREEK GAMMA;Lm;0;L;<super> 03B3;;;;N;;;;;
+1D5F;MODIFIER LETTER SMALL DELTA;Lm;0;L;<super> 03B4;;;;N;;;;;
+1D60;MODIFIER LETTER SMALL GREEK PHI;Lm;0;L;<super> 03C6;;;;N;;;;;
+1D61;MODIFIER LETTER SMALL CHI;Lm;0;L;<super> 03C7;;;;N;;;;;
+1D62;LATIN SUBSCRIPT SMALL LETTER I;Ll;0;L;<sub> 0069;;;;N;;;;;
+1D63;LATIN SUBSCRIPT SMALL LETTER R;Ll;0;L;<sub> 0072;;;;N;;;;;
+1D64;LATIN SUBSCRIPT SMALL LETTER U;Ll;0;L;<sub> 0075;;;;N;;;;;
+1D65;LATIN SUBSCRIPT SMALL LETTER V;Ll;0;L;<sub> 0076;;;;N;;;;;
+1D66;GREEK SUBSCRIPT SMALL LETTER BETA;Ll;0;L;<sub> 03B2;;;;N;;;;;
+1D67;GREEK SUBSCRIPT SMALL LETTER GAMMA;Ll;0;L;<sub> 03B3;;;;N;;;;;
+1D68;GREEK SUBSCRIPT SMALL LETTER RHO;Ll;0;L;<sub> 03C1;;;;N;;;;;
+1D69;GREEK SUBSCRIPT SMALL LETTER PHI;Ll;0;L;<sub> 03C6;;;;N;;;;;
+1D6A;GREEK SUBSCRIPT SMALL LETTER CHI;Ll;0;L;<sub> 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;<super> 043D;;;;N;;;;;
+1D79;LATIN SMALL LETTER INSULAR G;Ll;0;L;;;;;N;;;A77D;;A77D
+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;<super> 0252;;;;N;;;;;
+1D9C;MODIFIER LETTER SMALL C;Lm;0;L;<super> 0063;;;;N;;;;;
+1D9D;MODIFIER LETTER SMALL C WITH CURL;Lm;0;L;<super> 0255;;;;N;;;;;
+1D9E;MODIFIER LETTER SMALL ETH;Lm;0;L;<super> 00F0;;;;N;;;;;
+1D9F;MODIFIER LETTER SMALL REVERSED OPEN E;Lm;0;L;<super> 025C;;;;N;;;;;
+1DA0;MODIFIER LETTER SMALL F;Lm;0;L;<super> 0066;;;;N;;;;;
+1DA1;MODIFIER LETTER SMALL DOTLESS J WITH STROKE;Lm;0;L;<super> 025F;;;;N;;;;;
+1DA2;MODIFIER LETTER SMALL SCRIPT G;Lm;0;L;<super> 0261;;;;N;;;;;
+1DA3;MODIFIER LETTER SMALL TURNED H;Lm;0;L;<super> 0265;;;;N;;;;;
+1DA4;MODIFIER LETTER SMALL I WITH STROKE;Lm;0;L;<super> 0268;;;;N;;;;;
+1DA5;MODIFIER LETTER SMALL IOTA;Lm;0;L;<super> 0269;;;;N;;;;;
+1DA6;MODIFIER LETTER SMALL CAPITAL I;Lm;0;L;<super> 026A;;;;N;;;;;
+1DA7;MODIFIER LETTER SMALL CAPITAL I WITH STROKE;Lm;0;L;<super> 1D7B;;;;N;;;;;
+1DA8;MODIFIER LETTER SMALL J WITH CROSSED-TAIL;Lm;0;L;<super> 029D;;;;N;;;;;
+1DA9;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK;Lm;0;L;<super> 026D;;;;N;;;;;
+1DAA;MODIFIER LETTER SMALL L WITH PALATAL HOOK;Lm;0;L;<super> 1D85;;;;N;;;;;
+1DAB;MODIFIER LETTER SMALL CAPITAL L;Lm;0;L;<super> 029F;;;;N;;;;;
+1DAC;MODIFIER LETTER SMALL M WITH HOOK;Lm;0;L;<super> 0271;;;;N;;;;;
+1DAD;MODIFIER LETTER SMALL TURNED M WITH LONG LEG;Lm;0;L;<super> 0270;;;;N;;;;;
+1DAE;MODIFIER LETTER SMALL N WITH LEFT HOOK;Lm;0;L;<super> 0272;;;;N;;;;;
+1DAF;MODIFIER LETTER SMALL N WITH RETROFLEX HOOK;Lm;0;L;<super> 0273;;;;N;;;;;
+1DB0;MODIFIER LETTER SMALL CAPITAL N;Lm;0;L;<super> 0274;;;;N;;;;;
+1DB1;MODIFIER LETTER SMALL BARRED O;Lm;0;L;<super> 0275;;;;N;;;;;
+1DB2;MODIFIER LETTER SMALL PHI;Lm;0;L;<super> 0278;;;;N;;;;;
+1DB3;MODIFIER LETTER SMALL S WITH HOOK;Lm;0;L;<super> 0282;;;;N;;;;;
+1DB4;MODIFIER LETTER SMALL ESH;Lm;0;L;<super> 0283;;;;N;;;;;
+1DB5;MODIFIER LETTER SMALL T WITH PALATAL HOOK;Lm;0;L;<super> 01AB;;;;N;;;;;
+1DB6;MODIFIER LETTER SMALL U BAR;Lm;0;L;<super> 0289;;;;N;;;;;
+1DB7;MODIFIER LETTER SMALL UPSILON;Lm;0;L;<super> 028A;;;;N;;;;;
+1DB8;MODIFIER LETTER SMALL CAPITAL U;Lm;0;L;<super> 1D1C;;;;N;;;;;
+1DB9;MODIFIER LETTER SMALL V WITH HOOK;Lm;0;L;<super> 028B;;;;N;;;;;
+1DBA;MODIFIER LETTER SMALL TURNED V;Lm;0;L;<super> 028C;;;;N;;;;;
+1DBB;MODIFIER LETTER SMALL Z;Lm;0;L;<super> 007A;;;;N;;;;;
+1DBC;MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK;Lm;0;L;<super> 0290;;;;N;;;;;
+1DBD;MODIFIER LETTER SMALL Z WITH CURL;Lm;0;L;<super> 0291;;;;N;;;;;
+1DBE;MODIFIER LETTER SMALL EZH;Lm;0;L;<super> 0292;;;;N;;;;;
+1DBF;MODIFIER LETTER SMALL THETA;Lm;0;L;<super> 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;;;;;
+1DCB;COMBINING BREVE-MACRON;Mn;230;NSM;;;;;N;;;;;
+1DCC;COMBINING MACRON-BREVE;Mn;230;NSM;;;;;N;;;;;
+1DCD;COMBINING DOUBLE CIRCUMFLEX ABOVE;Mn;234;NSM;;;;;N;;;;;
+1DCE;COMBINING OGONEK ABOVE;Mn;214;NSM;;;;;N;;;;;
+1DCF;COMBINING ZIGZAG BELOW;Mn;220;NSM;;;;;N;;;;;
+1DD0;COMBINING IS BELOW;Mn;202;NSM;;;;;N;;;;;
+1DD1;COMBINING UR ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD2;COMBINING US ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD3;COMBINING LATIN SMALL LETTER FLATTENED OPEN A ABOVE;Mn;230;NSM;;;;;N;;;;;
+1DD4;COMBINING LATIN SMALL LETTER AE;Mn;230;NSM;;;;;N;;;;;
+1DD5;COMBINING LATIN SMALL LETTER AO;Mn;230;NSM;;;;;N;;;;;
+1DD6;COMBINING LATIN SMALL LETTER AV;Mn;230;NSM;;;;;N;;;;;
+1DD7;COMBINING LATIN SMALL LETTER C CEDILLA;Mn;230;NSM;;;;;N;;;;;
+1DD8;COMBINING LATIN SMALL LETTER INSULAR D;Mn;230;NSM;;;;;N;;;;;
+1DD9;COMBINING LATIN SMALL LETTER ETH;Mn;230;NSM;;;;;N;;;;;
+1DDA;COMBINING LATIN SMALL LETTER G;Mn;230;NSM;;;;;N;;;;;
+1DDB;COMBINING LATIN LETTER SMALL CAPITAL G;Mn;230;NSM;;;;;N;;;;;
+1DDC;COMBINING LATIN SMALL LETTER K;Mn;230;NSM;;;;;N;;;;;
+1DDD;COMBINING LATIN SMALL LETTER L;Mn;230;NSM;;;;;N;;;;;
+1DDE;COMBINING LATIN LETTER SMALL CAPITAL L;Mn;230;NSM;;;;;N;;;;;
+1DDF;COMBINING LATIN LETTER SMALL CAPITAL M;Mn;230;NSM;;;;;N;;;;;
+1DE0;COMBINING LATIN SMALL LETTER N;Mn;230;NSM;;;;;N;;;;;
+1DE1;COMBINING LATIN LETTER SMALL CAPITAL N;Mn;230;NSM;;;;;N;;;;;
+1DE2;COMBINING LATIN LETTER SMALL CAPITAL R;Mn;230;NSM;;;;;N;;;;;
+1DE3;COMBINING LATIN SMALL LETTER R ROTUNDA;Mn;230;NSM;;;;;N;;;;;
+1DE4;COMBINING LATIN SMALL LETTER S;Mn;230;NSM;;;;;N;;;;;
+1DE5;COMBINING LATIN SMALL LETTER LONG S;Mn;230;NSM;;;;;N;;;;;
+1DE6;COMBINING LATIN SMALL LETTER Z;Mn;230;NSM;;;;;N;;;;;
+1DFD;COMBINING ALMOST EQUAL TO 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;<compat> 0061 02BE;;;;N;;;;;
+1E9B;LATIN SMALL LETTER LONG S WITH DOT ABOVE;Ll;0;L;017F 0307;;;;N;;;1E60;;1E60
+1E9C;LATIN SMALL LETTER LONG S WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;;;
+1E9D;LATIN SMALL LETTER LONG S WITH HIGH STROKE;Ll;0;L;;;;;N;;;;;
+1E9E;LATIN CAPITAL LETTER SHARP S;Lu;0;L;;;;;N;;;;00DF;
+1E9F;LATIN SMALL LETTER DELTA;Ll;0;L;;;;;N;;;;;
+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
+1EFA;LATIN CAPITAL LETTER MIDDLE-WELSH LL;Lu;0;L;;;;;N;;;;1EFB;
+1EFB;LATIN SMALL LETTER MIDDLE-WELSH LL;Ll;0;L;;;;;N;;;1EFA;;1EFA
+1EFC;LATIN CAPITAL LETTER MIDDLE-WELSH V;Lu;0;L;;;;;N;;;;1EFD;
+1EFD;LATIN SMALL LETTER MIDDLE-WELSH V;Ll;0;L;;;;;N;;;1EFC;;1EFC
+1EFE;LATIN CAPITAL LETTER Y WITH LOOP;Lu;0;L;;;;;N;;;;1EFF;
+1EFF;LATIN SMALL LETTER Y WITH LOOP;Ll;0;L;;;;;N;;;1EFE;;1EFE
+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;<compat> 0020 0313;;;;N;;;;;
+1FBE;GREEK PROSGEGRAMMENI;Ll;0;L;03B9;;;;N;;;0399;;0399
+1FBF;GREEK PSILI;Sk;0;ON;<compat> 0020 0313;;;;N;;;;;
+1FC0;GREEK PERISPOMENI;Sk;0;ON;<compat> 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;<compat> 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;<compat> 0020;;;;N;;;;;
+2003;EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2004;THREE-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2005;FOUR-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2006;SIX-PER-EM SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2007;FIGURE SPACE;Zs;0;WS;<noBreak> 0020;;;;N;;;;;
+2008;PUNCTUATION SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+2009;THIN SPACE;Zs;0;WS;<compat> 0020;;;;N;;;;;
+200A;HAIR SPACE;Zs;0;WS;<compat> 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;<noBreak> 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;<compat> 0020 0333;;;;N;SPACING DOUBLE UNDERSCORE;;;;
+2018;LEFT SINGLE QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE TURNED COMMA QUOTATION MARK;;;;
+2019;RIGHT SINGLE QUOTATION MARK;Pf;0;ON;;;;;N;SINGLE COMMA QUOTATION MARK;;;;
+201A;SINGLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW SINGLE COMMA QUOTATION MARK;;;;
+201B;SINGLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;SINGLE REVERSED COMMA QUOTATION MARK;;;;
+201C;LEFT DOUBLE QUOTATION MARK;Pi;0;ON;;;;;N;DOUBLE TURNED COMMA QUOTATION MARK;;;;
+201D;RIGHT DOUBLE QUOTATION MARK;Pf;0;ON;;;;;N;DOUBLE COMMA QUOTATION MARK;;;;
+201E;DOUBLE LOW-9 QUOTATION MARK;Ps;0;ON;;;;;N;LOW DOUBLE COMMA QUOTATION MARK;;;;
+201F;DOUBLE HIGH-REVERSED-9 QUOTATION MARK;Pi;0;ON;;;;;N;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;<compat> 002E;;;;N;;;;;
+2025;TWO DOT LEADER;Po;0;ON;<compat> 002E 002E;;;;N;;;;;
+2026;HORIZONTAL ELLIPSIS;Po;0;ON;<compat> 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;<noBreak> 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;<compat> 2032 2032;;;;N;;;;;
+2034;TRIPLE PRIME;Po;0;ET;<compat> 2032 2032 2032;;;;N;;;;;
+2035;REVERSED PRIME;Po;0;ON;;;;;N;;;;;
+2036;REVERSED DOUBLE PRIME;Po;0;ON;<compat> 2035 2035;;;;N;;;;;
+2037;REVERSED TRIPLE PRIME;Po;0;ON;<compat> 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;<compat> 0021 0021;;;;N;;;;;
+203D;INTERROBANG;Po;0;ON;;;;;N;;;;;
+203E;OVERLINE;Po;0;ON;<compat> 0020 0305;;;;N;SPACING OVERSCORE;;;;
+203F;UNDERTIE;Pc;0;ON;;;;;N;;;;;
+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;<compat> 003F 003F;;;;N;;;;;
+2048;QUESTION EXCLAMATION MARK;Po;0;ON;<compat> 003F 0021;;;;N;;;;;
+2049;EXCLAMATION QUESTION MARK;Po;0;ON;<compat> 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;<compat> 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;<compat> 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;;;;;
+2064;INVISIBLE PLUS;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;<super> 0030;;0;0;N;SUPERSCRIPT DIGIT ZERO;;;;
+2071;SUPERSCRIPT LATIN SMALL LETTER I;Lm;0;L;<super> 0069;;;;N;;;;;
+2074;SUPERSCRIPT FOUR;No;0;EN;<super> 0034;;4;4;N;SUPERSCRIPT DIGIT FOUR;;;;
+2075;SUPERSCRIPT FIVE;No;0;EN;<super> 0035;;5;5;N;SUPERSCRIPT DIGIT FIVE;;;;
+2076;SUPERSCRIPT SIX;No;0;EN;<super> 0036;;6;6;N;SUPERSCRIPT DIGIT SIX;;;;
+2077;SUPERSCRIPT SEVEN;No;0;EN;<super> 0037;;7;7;N;SUPERSCRIPT DIGIT SEVEN;;;;
+2078;SUPERSCRIPT EIGHT;No;0;EN;<super> 0038;;8;8;N;SUPERSCRIPT DIGIT EIGHT;;;;
+2079;SUPERSCRIPT NINE;No;0;EN;<super> 0039;;9;9;N;SUPERSCRIPT DIGIT NINE;;;;
+207A;SUPERSCRIPT PLUS SIGN;Sm;0;ES;<super> 002B;;;;N;;;;;
+207B;SUPERSCRIPT MINUS;Sm;0;ES;<super> 2212;;;;N;SUPERSCRIPT HYPHEN-MINUS;;;;
+207C;SUPERSCRIPT EQUALS SIGN;Sm;0;ON;<super> 003D;;;;N;;;;;
+207D;SUPERSCRIPT LEFT PARENTHESIS;Ps;0;ON;<super> 0028;;;;Y;SUPERSCRIPT OPENING PARENTHESIS;;;;
+207E;SUPERSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<super> 0029;;;;Y;SUPERSCRIPT CLOSING PARENTHESIS;;;;
+207F;SUPERSCRIPT LATIN SMALL LETTER N;Lm;0;L;<super> 006E;;;;N;;;;;
+2080;SUBSCRIPT ZERO;No;0;EN;<sub> 0030;;0;0;N;SUBSCRIPT DIGIT ZERO;;;;
+2081;SUBSCRIPT ONE;No;0;EN;<sub> 0031;;1;1;N;SUBSCRIPT DIGIT ONE;;;;
+2082;SUBSCRIPT TWO;No;0;EN;<sub> 0032;;2;2;N;SUBSCRIPT DIGIT TWO;;;;
+2083;SUBSCRIPT THREE;No;0;EN;<sub> 0033;;3;3;N;SUBSCRIPT DIGIT THREE;;;;
+2084;SUBSCRIPT FOUR;No;0;EN;<sub> 0034;;4;4;N;SUBSCRIPT DIGIT FOUR;;;;
+2085;SUBSCRIPT FIVE;No;0;EN;<sub> 0035;;5;5;N;SUBSCRIPT DIGIT FIVE;;;;
+2086;SUBSCRIPT SIX;No;0;EN;<sub> 0036;;6;6;N;SUBSCRIPT DIGIT SIX;;;;
+2087;SUBSCRIPT SEVEN;No;0;EN;<sub> 0037;;7;7;N;SUBSCRIPT DIGIT SEVEN;;;;
+2088;SUBSCRIPT EIGHT;No;0;EN;<sub> 0038;;8;8;N;SUBSCRIPT DIGIT EIGHT;;;;
+2089;SUBSCRIPT NINE;No;0;EN;<sub> 0039;;9;9;N;SUBSCRIPT DIGIT NINE;;;;
+208A;SUBSCRIPT PLUS SIGN;Sm;0;ES;<sub> 002B;;;;N;;;;;
+208B;SUBSCRIPT MINUS;Sm;0;ES;<sub> 2212;;;;N;SUBSCRIPT HYPHEN-MINUS;;;;
+208C;SUBSCRIPT EQUALS SIGN;Sm;0;ON;<sub> 003D;;;;N;;;;;
+208D;SUBSCRIPT LEFT PARENTHESIS;Ps;0;ON;<sub> 0028;;;;Y;SUBSCRIPT OPENING PARENTHESIS;;;;
+208E;SUBSCRIPT RIGHT PARENTHESIS;Pe;0;ON;<sub> 0029;;;;Y;SUBSCRIPT CLOSING PARENTHESIS;;;;
+2090;LATIN SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0061;;;;N;;;;;
+2091;LATIN SUBSCRIPT SMALL LETTER E;Lm;0;L;<sub> 0065;;;;N;;;;;
+2092;LATIN SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 006F;;;;N;;;;;
+2093;LATIN SUBSCRIPT SMALL LETTER X;Lm;0;L;<sub> 0078;;;;N;;;;;
+2094;LATIN SUBSCRIPT SMALL LETTER SCHWA;Lm;0;L;<sub> 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;<compat> 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;;;;;
+20B6;LIVRE TOURNOIS SIGN;Sc;0;ET;;;;;N;;;;;
+20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;
+20B8;TENGE 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;;;;;
+20F0;COMBINING ASTERISK ABOVE;Mn;230;NSM;;;;;N;;;;;
+2100;ACCOUNT OF;So;0;ON;<compat> 0061 002F 0063;;;;N;;;;;
+2101;ADDRESSED TO THE SUBJECT;So;0;ON;<compat> 0061 002F 0073;;;;N;;;;;
+2102;DOUBLE-STRUCK CAPITAL C;Lu;0;L;<font> 0043;;;;N;DOUBLE-STRUCK C;;;;
+2103;DEGREE CELSIUS;So;0;ON;<compat> 00B0 0043;;;;N;DEGREES CENTIGRADE;;;;
+2104;CENTRE LINE SYMBOL;So;0;ON;;;;;N;C L SYMBOL;;;;
+2105;CARE OF;So;0;ON;<compat> 0063 002F 006F;;;;N;;;;;
+2106;CADA UNA;So;0;ON;<compat> 0063 002F 0075;;;;N;;;;;
+2107;EULER CONSTANT;Lu;0;L;<compat> 0190;;;;N;EULERS;;;;
+2108;SCRUPLE;So;0;ON;;;;;N;;;;;
+2109;DEGREE FAHRENHEIT;So;0;ON;<compat> 00B0 0046;;;;N;DEGREES FAHRENHEIT;;;;
+210A;SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+210B;SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;SCRIPT H;;;;
+210C;BLACK-LETTER CAPITAL H;Lu;0;L;<font> 0048;;;;N;BLACK-LETTER H;;;;
+210D;DOUBLE-STRUCK CAPITAL H;Lu;0;L;<font> 0048;;;;N;DOUBLE-STRUCK H;;;;
+210E;PLANCK CONSTANT;Ll;0;L;<font> 0068;;;;N;;;;;
+210F;PLANCK CONSTANT OVER TWO PI;Ll;0;L;<font> 0127;;;;N;PLANCK CONSTANT OVER 2 PI;;;;
+2110;SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;SCRIPT I;;;;
+2111;BLACK-LETTER CAPITAL I;Lu;0;L;<font> 0049;;;;N;BLACK-LETTER I;;;;
+2112;SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;SCRIPT L;;;;
+2113;SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+2114;L B BAR SYMBOL;So;0;ON;;;;;N;;;;;
+2115;DOUBLE-STRUCK CAPITAL N;Lu;0;L;<font> 004E;;;;N;DOUBLE-STRUCK N;;;;
+2116;NUMERO SIGN;So;0;ON;<compat> 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;<font> 0050;;;;N;DOUBLE-STRUCK P;;;;
+211A;DOUBLE-STRUCK CAPITAL Q;Lu;0;L;<font> 0051;;;;N;DOUBLE-STRUCK Q;;;;
+211B;SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;SCRIPT R;;;;
+211C;BLACK-LETTER CAPITAL R;Lu;0;L;<font> 0052;;;;N;BLACK-LETTER R;;;;
+211D;DOUBLE-STRUCK CAPITAL R;Lu;0;L;<font> 0052;;;;N;DOUBLE-STRUCK R;;;;
+211E;PRESCRIPTION TAKE;So;0;ON;;;;;N;;;;;
+211F;RESPONSE;So;0;ON;;;;;N;;;;;
+2120;SERVICE MARK;So;0;ON;<super> 0053 004D;;;;N;;;;;
+2121;TELEPHONE SIGN;So;0;ON;<compat> 0054 0045 004C;;;;N;T E L SYMBOL;;;;
+2122;TRADE MARK SIGN;So;0;ON;<super> 0054 004D;;;;N;TRADEMARK;;;;
+2123;VERSICLE;So;0;ON;;;;;N;;;;;
+2124;DOUBLE-STRUCK CAPITAL Z;Lu;0;L;<font> 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;<font> 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;<font> 0042;;;;N;SCRIPT B;;;;
+212D;BLACK-LETTER CAPITAL C;Lu;0;L;<font> 0043;;;;N;BLACK-LETTER C;;;;
+212E;ESTIMATED SYMBOL;So;0;ET;;;;;N;;;;;
+212F;SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2130;SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;SCRIPT E;;;;
+2131;SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;SCRIPT F;;;;
+2132;TURNED CAPITAL F;Lu;0;L;;;;;N;TURNED F;;;214E;
+2133;SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;SCRIPT M;;;;
+2134;SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+2135;ALEF SYMBOL;Lo;0;L;<compat> 05D0;;;;N;FIRST TRANSFINITE CARDINAL;;;;
+2136;BET SYMBOL;Lo;0;L;<compat> 05D1;;;;N;SECOND TRANSFINITE CARDINAL;;;;
+2137;GIMEL SYMBOL;Lo;0;L;<compat> 05D2;;;;N;THIRD TRANSFINITE CARDINAL;;;;
+2138;DALET SYMBOL;Lo;0;L;<compat> 05D3;;;;N;FOURTH TRANSFINITE CARDINAL;;;;
+2139;INFORMATION SOURCE;Ll;0;L;<font> 0069;;;;N;;;;;
+213A;ROTATED CAPITAL Q;So;0;ON;;;;;N;;;;;
+213B;FACSIMILE SIGN;So;0;ON;<compat> 0046 0041 0058;;;;N;;;;;
+213C;DOUBLE-STRUCK SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+213D;DOUBLE-STRUCK SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+213E;DOUBLE-STRUCK CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+213F;DOUBLE-STRUCK CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+2140;DOUBLE-STRUCK N-ARY SUMMATION;Sm;0;ON;<font> 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;<font> 0044;;;;N;;;;;
+2146;DOUBLE-STRUCK ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+2147;DOUBLE-STRUCK ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+2148;DOUBLE-STRUCK ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+2149;DOUBLE-STRUCK ITALIC SMALL J;Ll;0;L;<font> 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
+214F;SYMBOL FOR SAMARITAN SOURCE;So;0;L;;;;;N;;;;;
+2150;VULGAR FRACTION ONE SEVENTH;No;0;ON;<fraction> 0031 2044 0037;;;1/7;N;;;;;
+2151;VULGAR FRACTION ONE NINTH;No;0;ON;<fraction> 0031 2044 0039;;;1/9;N;;;;;
+2152;VULGAR FRACTION ONE TENTH;No;0;ON;<fraction> 0031 2044 0031 0030;;;1/10;N;;;;;
+2153;VULGAR FRACTION ONE THIRD;No;0;ON;<fraction> 0031 2044 0033;;;1/3;N;FRACTION ONE THIRD;;;;
+2154;VULGAR FRACTION TWO THIRDS;No;0;ON;<fraction> 0032 2044 0033;;;2/3;N;FRACTION TWO THIRDS;;;;
+2155;VULGAR FRACTION ONE FIFTH;No;0;ON;<fraction> 0031 2044 0035;;;1/5;N;FRACTION ONE FIFTH;;;;
+2156;VULGAR FRACTION TWO FIFTHS;No;0;ON;<fraction> 0032 2044 0035;;;2/5;N;FRACTION TWO FIFTHS;;;;
+2157;VULGAR FRACTION THREE FIFTHS;No;0;ON;<fraction> 0033 2044 0035;;;3/5;N;FRACTION THREE FIFTHS;;;;
+2158;VULGAR FRACTION FOUR FIFTHS;No;0;ON;<fraction> 0034 2044 0035;;;4/5;N;FRACTION FOUR FIFTHS;;;;
+2159;VULGAR FRACTION ONE SIXTH;No;0;ON;<fraction> 0031 2044 0036;;;1/6;N;FRACTION ONE SIXTH;;;;
+215A;VULGAR FRACTION FIVE SIXTHS;No;0;ON;<fraction> 0035 2044 0036;;;5/6;N;FRACTION FIVE SIXTHS;;;;
+215B;VULGAR FRACTION ONE EIGHTH;No;0;ON;<fraction> 0031 2044 0038;;;1/8;N;FRACTION ONE EIGHTH;;;;
+215C;VULGAR FRACTION THREE EIGHTHS;No;0;ON;<fraction> 0033 2044 0038;;;3/8;N;FRACTION THREE EIGHTHS;;;;
+215D;VULGAR FRACTION FIVE EIGHTHS;No;0;ON;<fraction> 0035 2044 0038;;;5/8;N;FRACTION FIVE EIGHTHS;;;;
+215E;VULGAR FRACTION SEVEN EIGHTHS;No;0;ON;<fraction> 0037 2044 0038;;;7/8;N;FRACTION SEVEN EIGHTHS;;;;
+215F;FRACTION NUMERATOR ONE;No;0;ON;<fraction> 0031 2044;;;1;N;;;;;
+2160;ROMAN NUMERAL ONE;Nl;0;L;<compat> 0049;;;1;N;;;;2170;
+2161;ROMAN NUMERAL TWO;Nl;0;L;<compat> 0049 0049;;;2;N;;;;2171;
+2162;ROMAN NUMERAL THREE;Nl;0;L;<compat> 0049 0049 0049;;;3;N;;;;2172;
+2163;ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0049 0056;;;4;N;;;;2173;
+2164;ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0056;;;5;N;;;;2174;
+2165;ROMAN NUMERAL SIX;Nl;0;L;<compat> 0056 0049;;;6;N;;;;2175;
+2166;ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0056 0049 0049;;;7;N;;;;2176;
+2167;ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0056 0049 0049 0049;;;8;N;;;;2177;
+2168;ROMAN NUMERAL NINE;Nl;0;L;<compat> 0049 0058;;;9;N;;;;2178;
+2169;ROMAN NUMERAL TEN;Nl;0;L;<compat> 0058;;;10;N;;;;2179;
+216A;ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0058 0049;;;11;N;;;;217A;
+216B;ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0058 0049 0049;;;12;N;;;;217B;
+216C;ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 004C;;;50;N;;;;217C;
+216D;ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0043;;;100;N;;;;217D;
+216E;ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0044;;;500;N;;;;217E;
+216F;ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 004D;;;1000;N;;;;217F;
+2170;SMALL ROMAN NUMERAL ONE;Nl;0;L;<compat> 0069;;;1;N;;;2160;;2160
+2171;SMALL ROMAN NUMERAL TWO;Nl;0;L;<compat> 0069 0069;;;2;N;;;2161;;2161
+2172;SMALL ROMAN NUMERAL THREE;Nl;0;L;<compat> 0069 0069 0069;;;3;N;;;2162;;2162
+2173;SMALL ROMAN NUMERAL FOUR;Nl;0;L;<compat> 0069 0076;;;4;N;;;2163;;2163
+2174;SMALL ROMAN NUMERAL FIVE;Nl;0;L;<compat> 0076;;;5;N;;;2164;;2164
+2175;SMALL ROMAN NUMERAL SIX;Nl;0;L;<compat> 0076 0069;;;6;N;;;2165;;2165
+2176;SMALL ROMAN NUMERAL SEVEN;Nl;0;L;<compat> 0076 0069 0069;;;7;N;;;2166;;2166
+2177;SMALL ROMAN NUMERAL EIGHT;Nl;0;L;<compat> 0076 0069 0069 0069;;;8;N;;;2167;;2167
+2178;SMALL ROMAN NUMERAL NINE;Nl;0;L;<compat> 0069 0078;;;9;N;;;2168;;2168
+2179;SMALL ROMAN NUMERAL TEN;Nl;0;L;<compat> 0078;;;10;N;;;2169;;2169
+217A;SMALL ROMAN NUMERAL ELEVEN;Nl;0;L;<compat> 0078 0069;;;11;N;;;216A;;216A
+217B;SMALL ROMAN NUMERAL TWELVE;Nl;0;L;<compat> 0078 0069 0069;;;12;N;;;216B;;216B
+217C;SMALL ROMAN NUMERAL FIFTY;Nl;0;L;<compat> 006C;;;50;N;;;216C;;216C
+217D;SMALL ROMAN NUMERAL ONE HUNDRED;Nl;0;L;<compat> 0063;;;100;N;;;216D;;216D
+217E;SMALL ROMAN NUMERAL FIVE HUNDRED;Nl;0;L;<compat> 0064;;;500;N;;;216E;;216E
+217F;SMALL ROMAN NUMERAL ONE THOUSAND;Nl;0;L;<compat> 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
+2185;ROMAN NUMERAL SIX LATE FORM;Nl;0;L;;;;6;N;;;;;
+2186;ROMAN NUMERAL FIFTY EARLY FORM;Nl;0;L;;;;50;N;;;;;
+2187;ROMAN NUMERAL FIFTY THOUSAND;Nl;0;L;;;;50000;N;;;;;
+2188;ROMAN NUMERAL ONE HUNDRED THOUSAND;Nl;0;L;;;;100000;N;;;;;
+2189;VULGAR FRACTION ZERO THIRDS;No;0;ON;<fraction> 0030 2044 0033;;;0;N;;;;;
+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;<compat> 222B 222B;;;;Y;;;;;
+222D;TRIPLE INTEGRAL;Sm;0;ON;<compat> 222B 222B 222B;;;;Y;;;;;
+222E;CONTOUR INTEGRAL;Sm;0;ON;;;;;Y;;;;;
+222F;SURFACE INTEGRAL;Sm;0;ON;<compat> 222E 222E;;;;Y;;;;;
+2230;VOLUME INTEGRAL;Sm;0;ON;<compat> 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;;;;;
+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;;;;;
+238A;CIRCLED TRIANGLE DOWN;So;0;ON;;;;;N;;;;;
+238B;BROKEN CIRCLE WITH NORTHWEST ARROW;So;0;ON;;;;;N;;;;;
+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;;;;;
+23DD;BOTTOM PARENTHESIS;Sm;0;ON;;;;;N;;;;;
+23DE;TOP CURLY BRACKET;Sm;0;ON;;;;;N;;;;;
+23DF;BOTTOM CURLY BRACKET;Sm;0;ON;;;;;N;;;;;
+23E0;TOP TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;
+23E1;BOTTOM TORTOISE SHELL BRACKET;Sm;0;ON;;;;;N;;;;;
+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;;;;;
+23E8;DECIMAL EXPONENT SYMBOL;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;<circle> 0031;;1;1;N;;;;;
+2461;CIRCLED DIGIT TWO;No;0;ON;<circle> 0032;;2;2;N;;;;;
+2462;CIRCLED DIGIT THREE;No;0;ON;<circle> 0033;;3;3;N;;;;;
+2463;CIRCLED DIGIT FOUR;No;0;ON;<circle> 0034;;4;4;N;;;;;
+2464;CIRCLED DIGIT FIVE;No;0;ON;<circle> 0035;;5;5;N;;;;;
+2465;CIRCLED DIGIT SIX;No;0;ON;<circle> 0036;;6;6;N;;;;;
+2466;CIRCLED DIGIT SEVEN;No;0;ON;<circle> 0037;;7;7;N;;;;;
+2467;CIRCLED DIGIT EIGHT;No;0;ON;<circle> 0038;;8;8;N;;;;;
+2468;CIRCLED DIGIT NINE;No;0;ON;<circle> 0039;;9;9;N;;;;;
+2469;CIRCLED NUMBER TEN;No;0;ON;<circle> 0031 0030;;;10;N;;;;;
+246A;CIRCLED NUMBER ELEVEN;No;0;ON;<circle> 0031 0031;;;11;N;;;;;
+246B;CIRCLED NUMBER TWELVE;No;0;ON;<circle> 0031 0032;;;12;N;;;;;
+246C;CIRCLED NUMBER THIRTEEN;No;0;ON;<circle> 0031 0033;;;13;N;;;;;
+246D;CIRCLED NUMBER FOURTEEN;No;0;ON;<circle> 0031 0034;;;14;N;;;;;
+246E;CIRCLED NUMBER FIFTEEN;No;0;ON;<circle> 0031 0035;;;15;N;;;;;
+246F;CIRCLED NUMBER SIXTEEN;No;0;ON;<circle> 0031 0036;;;16;N;;;;;
+2470;CIRCLED NUMBER SEVENTEEN;No;0;ON;<circle> 0031 0037;;;17;N;;;;;
+2471;CIRCLED NUMBER EIGHTEEN;No;0;ON;<circle> 0031 0038;;;18;N;;;;;
+2472;CIRCLED NUMBER NINETEEN;No;0;ON;<circle> 0031 0039;;;19;N;;;;;
+2473;CIRCLED NUMBER TWENTY;No;0;ON;<circle> 0032 0030;;;20;N;;;;;
+2474;PARENTHESIZED DIGIT ONE;No;0;ON;<compat> 0028 0031 0029;;1;1;N;;;;;
+2475;PARENTHESIZED DIGIT TWO;No;0;ON;<compat> 0028 0032 0029;;2;2;N;;;;;
+2476;PARENTHESIZED DIGIT THREE;No;0;ON;<compat> 0028 0033 0029;;3;3;N;;;;;
+2477;PARENTHESIZED DIGIT FOUR;No;0;ON;<compat> 0028 0034 0029;;4;4;N;;;;;
+2478;PARENTHESIZED DIGIT FIVE;No;0;ON;<compat> 0028 0035 0029;;5;5;N;;;;;
+2479;PARENTHESIZED DIGIT SIX;No;0;ON;<compat> 0028 0036 0029;;6;6;N;;;;;
+247A;PARENTHESIZED DIGIT SEVEN;No;0;ON;<compat> 0028 0037 0029;;7;7;N;;;;;
+247B;PARENTHESIZED DIGIT EIGHT;No;0;ON;<compat> 0028 0038 0029;;8;8;N;;;;;
+247C;PARENTHESIZED DIGIT NINE;No;0;ON;<compat> 0028 0039 0029;;9;9;N;;;;;
+247D;PARENTHESIZED NUMBER TEN;No;0;ON;<compat> 0028 0031 0030 0029;;;10;N;;;;;
+247E;PARENTHESIZED NUMBER ELEVEN;No;0;ON;<compat> 0028 0031 0031 0029;;;11;N;;;;;
+247F;PARENTHESIZED NUMBER TWELVE;No;0;ON;<compat> 0028 0031 0032 0029;;;12;N;;;;;
+2480;PARENTHESIZED NUMBER THIRTEEN;No;0;ON;<compat> 0028 0031 0033 0029;;;13;N;;;;;
+2481;PARENTHESIZED NUMBER FOURTEEN;No;0;ON;<compat> 0028 0031 0034 0029;;;14;N;;;;;
+2482;PARENTHESIZED NUMBER FIFTEEN;No;0;ON;<compat> 0028 0031 0035 0029;;;15;N;;;;;
+2483;PARENTHESIZED NUMBER SIXTEEN;No;0;ON;<compat> 0028 0031 0036 0029;;;16;N;;;;;
+2484;PARENTHESIZED NUMBER SEVENTEEN;No;0;ON;<compat> 0028 0031 0037 0029;;;17;N;;;;;
+2485;PARENTHESIZED NUMBER EIGHTEEN;No;0;ON;<compat> 0028 0031 0038 0029;;;18;N;;;;;
+2486;PARENTHESIZED NUMBER NINETEEN;No;0;ON;<compat> 0028 0031 0039 0029;;;19;N;;;;;
+2487;PARENTHESIZED NUMBER TWENTY;No;0;ON;<compat> 0028 0032 0030 0029;;;20;N;;;;;
+2488;DIGIT ONE FULL STOP;No;0;EN;<compat> 0031 002E;;1;1;N;DIGIT ONE PERIOD;;;;
+2489;DIGIT TWO FULL STOP;No;0;EN;<compat> 0032 002E;;2;2;N;DIGIT TWO PERIOD;;;;
+248A;DIGIT THREE FULL STOP;No;0;EN;<compat> 0033 002E;;3;3;N;DIGIT THREE PERIOD;;;;
+248B;DIGIT FOUR FULL STOP;No;0;EN;<compat> 0034 002E;;4;4;N;DIGIT FOUR PERIOD;;;;
+248C;DIGIT FIVE FULL STOP;No;0;EN;<compat> 0035 002E;;5;5;N;DIGIT FIVE PERIOD;;;;
+248D;DIGIT SIX FULL STOP;No;0;EN;<compat> 0036 002E;;6;6;N;DIGIT SIX PERIOD;;;;
+248E;DIGIT SEVEN FULL STOP;No;0;EN;<compat> 0037 002E;;7;7;N;DIGIT SEVEN PERIOD;;;;
+248F;DIGIT EIGHT FULL STOP;No;0;EN;<compat> 0038 002E;;8;8;N;DIGIT EIGHT PERIOD;;;;
+2490;DIGIT NINE FULL STOP;No;0;EN;<compat> 0039 002E;;9;9;N;DIGIT NINE PERIOD;;;;
+2491;NUMBER TEN FULL STOP;No;0;EN;<compat> 0031 0030 002E;;;10;N;NUMBER TEN PERIOD;;;;
+2492;NUMBER ELEVEN FULL STOP;No;0;EN;<compat> 0031 0031 002E;;;11;N;NUMBER ELEVEN PERIOD;;;;
+2493;NUMBER TWELVE FULL STOP;No;0;EN;<compat> 0031 0032 002E;;;12;N;NUMBER TWELVE PERIOD;;;;
+2494;NUMBER THIRTEEN FULL STOP;No;0;EN;<compat> 0031 0033 002E;;;13;N;NUMBER THIRTEEN PERIOD;;;;
+2495;NUMBER FOURTEEN FULL STOP;No;0;EN;<compat> 0031 0034 002E;;;14;N;NUMBER FOURTEEN PERIOD;;;;
+2496;NUMBER FIFTEEN FULL STOP;No;0;EN;<compat> 0031 0035 002E;;;15;N;NUMBER FIFTEEN PERIOD;;;;
+2497;NUMBER SIXTEEN FULL STOP;No;0;EN;<compat> 0031 0036 002E;;;16;N;NUMBER SIXTEEN PERIOD;;;;
+2498;NUMBER SEVENTEEN FULL STOP;No;0;EN;<compat> 0031 0037 002E;;;17;N;NUMBER SEVENTEEN PERIOD;;;;
+2499;NUMBER EIGHTEEN FULL STOP;No;0;EN;<compat> 0031 0038 002E;;;18;N;NUMBER EIGHTEEN PERIOD;;;;
+249A;NUMBER NINETEEN FULL STOP;No;0;EN;<compat> 0031 0039 002E;;;19;N;NUMBER NINETEEN PERIOD;;;;
+249B;NUMBER TWENTY FULL STOP;No;0;EN;<compat> 0032 0030 002E;;;20;N;NUMBER TWENTY PERIOD;;;;
+249C;PARENTHESIZED LATIN SMALL LETTER A;So;0;L;<compat> 0028 0061 0029;;;;N;;;;;
+249D;PARENTHESIZED LATIN SMALL LETTER B;So;0;L;<compat> 0028 0062 0029;;;;N;;;;;
+249E;PARENTHESIZED LATIN SMALL LETTER C;So;0;L;<compat> 0028 0063 0029;;;;N;;;;;
+249F;PARENTHESIZED LATIN SMALL LETTER D;So;0;L;<compat> 0028 0064 0029;;;;N;;;;;
+24A0;PARENTHESIZED LATIN SMALL LETTER E;So;0;L;<compat> 0028 0065 0029;;;;N;;;;;
+24A1;PARENTHESIZED LATIN SMALL LETTER F;So;0;L;<compat> 0028 0066 0029;;;;N;;;;;
+24A2;PARENTHESIZED LATIN SMALL LETTER G;So;0;L;<compat> 0028 0067 0029;;;;N;;;;;
+24A3;PARENTHESIZED LATIN SMALL LETTER H;So;0;L;<compat> 0028 0068 0029;;;;N;;;;;
+24A4;PARENTHESIZED LATIN SMALL LETTER I;So;0;L;<compat> 0028 0069 0029;;;;N;;;;;
+24A5;PARENTHESIZED LATIN SMALL LETTER J;So;0;L;<compat> 0028 006A 0029;;;;N;;;;;
+24A6;PARENTHESIZED LATIN SMALL LETTER K;So;0;L;<compat> 0028 006B 0029;;;;N;;;;;
+24A7;PARENTHESIZED LATIN SMALL LETTER L;So;0;L;<compat> 0028 006C 0029;;;;N;;;;;
+24A8;PARENTHESIZED LATIN SMALL LETTER M;So;0;L;<compat> 0028 006D 0029;;;;N;;;;;
+24A9;PARENTHESIZED LATIN SMALL LETTER N;So;0;L;<compat> 0028 006E 0029;;;;N;;;;;
+24AA;PARENTHESIZED LATIN SMALL LETTER O;So;0;L;<compat> 0028 006F 0029;;;;N;;;;;
+24AB;PARENTHESIZED LATIN SMALL LETTER P;So;0;L;<compat> 0028 0070 0029;;;;N;;;;;
+24AC;PARENTHESIZED LATIN SMALL LETTER Q;So;0;L;<compat> 0028 0071 0029;;;;N;;;;;
+24AD;PARENTHESIZED LATIN SMALL LETTER R;So;0;L;<compat> 0028 0072 0029;;;;N;;;;;
+24AE;PARENTHESIZED LATIN SMALL LETTER S;So;0;L;<compat> 0028 0073 0029;;;;N;;;;;
+24AF;PARENTHESIZED LATIN SMALL LETTER T;So;0;L;<compat> 0028 0074 0029;;;;N;;;;;
+24B0;PARENTHESIZED LATIN SMALL LETTER U;So;0;L;<compat> 0028 0075 0029;;;;N;;;;;
+24B1;PARENTHESIZED LATIN SMALL LETTER V;So;0;L;<compat> 0028 0076 0029;;;;N;;;;;
+24B2;PARENTHESIZED LATIN SMALL LETTER W;So;0;L;<compat> 0028 0077 0029;;;;N;;;;;
+24B3;PARENTHESIZED LATIN SMALL LETTER X;So;0;L;<compat> 0028 0078 0029;;;;N;;;;;
+24B4;PARENTHESIZED LATIN SMALL LETTER Y;So;0;L;<compat> 0028 0079 0029;;;;N;;;;;
+24B5;PARENTHESIZED LATIN SMALL LETTER Z;So;0;L;<compat> 0028 007A 0029;;;;N;;;;;
+24B6;CIRCLED LATIN CAPITAL LETTER A;So;0;L;<circle> 0041;;;;N;;;;24D0;
+24B7;CIRCLED LATIN CAPITAL LETTER B;So;0;L;<circle> 0042;;;;N;;;;24D1;
+24B8;CIRCLED LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;24D2;
+24B9;CIRCLED LATIN CAPITAL LETTER D;So;0;L;<circle> 0044;;;;N;;;;24D3;
+24BA;CIRCLED LATIN CAPITAL LETTER E;So;0;L;<circle> 0045;;;;N;;;;24D4;
+24BB;CIRCLED LATIN CAPITAL LETTER F;So;0;L;<circle> 0046;;;;N;;;;24D5;
+24BC;CIRCLED LATIN CAPITAL LETTER G;So;0;L;<circle> 0047;;;;N;;;;24D6;
+24BD;CIRCLED LATIN CAPITAL LETTER H;So;0;L;<circle> 0048;;;;N;;;;24D7;
+24BE;CIRCLED LATIN CAPITAL LETTER I;So;0;L;<circle> 0049;;;;N;;;;24D8;
+24BF;CIRCLED LATIN CAPITAL LETTER J;So;0;L;<circle> 004A;;;;N;;;;24D9;
+24C0;CIRCLED LATIN CAPITAL LETTER K;So;0;L;<circle> 004B;;;;N;;;;24DA;
+24C1;CIRCLED LATIN CAPITAL LETTER L;So;0;L;<circle> 004C;;;;N;;;;24DB;
+24C2;CIRCLED LATIN CAPITAL LETTER M;So;0;L;<circle> 004D;;;;N;;;;24DC;
+24C3;CIRCLED LATIN CAPITAL LETTER N;So;0;L;<circle> 004E;;;;N;;;;24DD;
+24C4;CIRCLED LATIN CAPITAL LETTER O;So;0;L;<circle> 004F;;;;N;;;;24DE;
+24C5;CIRCLED LATIN CAPITAL LETTER P;So;0;L;<circle> 0050;;;;N;;;;24DF;
+24C6;CIRCLED LATIN CAPITAL LETTER Q;So;0;L;<circle> 0051;;;;N;;;;24E0;
+24C7;CIRCLED LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;24E1;
+24C8;CIRCLED LATIN CAPITAL LETTER S;So;0;L;<circle> 0053;;;;N;;;;24E2;
+24C9;CIRCLED LATIN CAPITAL LETTER T;So;0;L;<circle> 0054;;;;N;;;;24E3;
+24CA;CIRCLED LATIN CAPITAL LETTER U;So;0;L;<circle> 0055;;;;N;;;;24E4;
+24CB;CIRCLED LATIN CAPITAL LETTER V;So;0;L;<circle> 0056;;;;N;;;;24E5;
+24CC;CIRCLED LATIN CAPITAL LETTER W;So;0;L;<circle> 0057;;;;N;;;;24E6;
+24CD;CIRCLED LATIN CAPITAL LETTER X;So;0;L;<circle> 0058;;;;N;;;;24E7;
+24CE;CIRCLED LATIN CAPITAL LETTER Y;So;0;L;<circle> 0059;;;;N;;;;24E8;
+24CF;CIRCLED LATIN CAPITAL LETTER Z;So;0;L;<circle> 005A;;;;N;;;;24E9;
+24D0;CIRCLED LATIN SMALL LETTER A;So;0;L;<circle> 0061;;;;N;;;24B6;;24B6
+24D1;CIRCLED LATIN SMALL LETTER B;So;0;L;<circle> 0062;;;;N;;;24B7;;24B7
+24D2;CIRCLED LATIN SMALL LETTER C;So;0;L;<circle> 0063;;;;N;;;24B8;;24B8
+24D3;CIRCLED LATIN SMALL LETTER D;So;0;L;<circle> 0064;;;;N;;;24B9;;24B9
+24D4;CIRCLED LATIN SMALL LETTER E;So;0;L;<circle> 0065;;;;N;;;24BA;;24BA
+24D5;CIRCLED LATIN SMALL LETTER F;So;0;L;<circle> 0066;;;;N;;;24BB;;24BB
+24D6;CIRCLED LATIN SMALL LETTER G;So;0;L;<circle> 0067;;;;N;;;24BC;;24BC
+24D7;CIRCLED LATIN SMALL LETTER H;So;0;L;<circle> 0068;;;;N;;;24BD;;24BD
+24D8;CIRCLED LATIN SMALL LETTER I;So;0;L;<circle> 0069;;;;N;;;24BE;;24BE
+24D9;CIRCLED LATIN SMALL LETTER J;So;0;L;<circle> 006A;;;;N;;;24BF;;24BF
+24DA;CIRCLED LATIN SMALL LETTER K;So;0;L;<circle> 006B;;;;N;;;24C0;;24C0
+24DB;CIRCLED LATIN SMALL LETTER L;So;0;L;<circle> 006C;;;;N;;;24C1;;24C1
+24DC;CIRCLED LATIN SMALL LETTER M;So;0;L;<circle> 006D;;;;N;;;24C2;;24C2
+24DD;CIRCLED LATIN SMALL LETTER N;So;0;L;<circle> 006E;;;;N;;;24C3;;24C3
+24DE;CIRCLED LATIN SMALL LETTER O;So;0;L;<circle> 006F;;;;N;;;24C4;;24C4
+24DF;CIRCLED LATIN SMALL LETTER P;So;0;L;<circle> 0070;;;;N;;;24C5;;24C5
+24E0;CIRCLED LATIN SMALL LETTER Q;So;0;L;<circle> 0071;;;;N;;;24C6;;24C6
+24E1;CIRCLED LATIN SMALL LETTER R;So;0;L;<circle> 0072;;;;N;;;24C7;;24C7
+24E2;CIRCLED LATIN SMALL LETTER S;So;0;L;<circle> 0073;;;;N;;;24C8;;24C8
+24E3;CIRCLED LATIN SMALL LETTER T;So;0;L;<circle> 0074;;;;N;;;24C9;;24C9
+24E4;CIRCLED LATIN SMALL LETTER U;So;0;L;<circle> 0075;;;;N;;;24CA;;24CA
+24E5;CIRCLED LATIN SMALL LETTER V;So;0;L;<circle> 0076;;;;N;;;24CB;;24CB
+24E6;CIRCLED LATIN SMALL LETTER W;So;0;L;<circle> 0077;;;;N;;;24CC;;24CC
+24E7;CIRCLED LATIN SMALL LETTER X;So;0;L;<circle> 0078;;;;N;;;24CD;;24CD
+24E8;CIRCLED LATIN SMALL LETTER Y;So;0;L;<circle> 0079;;;;N;;;24CE;;24CE
+24E9;CIRCLED LATIN SMALL LETTER Z;So;0;L;<circle> 007A;;;;N;;;24CF;;24CF
+24EA;CIRCLED DIGIT ZERO;No;0;ON;<circle> 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;;;;;
+2674;RECYCLING SYMBOL FOR TYPE-2 PLASTICS;So;0;ON;;;;;N;;;;;
+2675;RECYCLING SYMBOL FOR TYPE-3 PLASTICS;So;0;ON;;;;;N;;;;;
+2676;RECYCLING SYMBOL FOR TYPE-4 PLASTICS;So;0;ON;;;;;N;;;;;
+2677;RECYCLING SYMBOL FOR TYPE-5 PLASTICS;So;0;ON;;;;;N;;;;;
+2678;RECYCLING SYMBOL FOR TYPE-6 PLASTICS;So;0;ON;;;;;N;;;;;
+2679;RECYCLING SYMBOL FOR TYPE-7 PLASTICS;So;0;ON;;;;;N;;;;;
+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;;;;;
+269D;OUTLINED WHITE STAR;So;0;ON;;;;;N;;;;;
+269E;THREE LINES CONVERGING RIGHT;So;0;ON;;;;;N;;;;;
+269F;THREE LINES CONVERGING LEFT;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;;;;;
+26B3;CERES;So;0;ON;;;;;N;;;;;
+26B4;PALLAS;So;0;ON;;;;;N;;;;;
+26B5;JUNO;So;0;ON;;;;;N;;;;;
+26B6;VESTA;So;0;ON;;;;;N;;;;;
+26B7;CHIRON;So;0;ON;;;;;N;;;;;
+26B8;BLACK MOON LILITH;So;0;ON;;;;;N;;;;;
+26B9;SEXTILE;So;0;ON;;;;;N;;;;;
+26BA;SEMISEXTILE;So;0;ON;;;;;N;;;;;
+26BB;QUINCUNX;So;0;ON;;;;;N;;;;;
+26BC;SESQUIQUADRATE;So;0;ON;;;;;N;;;;;
+26BD;SOCCER BALL;So;0;ON;;;;;N;;;;;
+26BE;BASEBALL;So;0;ON;;;;;N;;;;;
+26BF;SQUARED KEY;So;0;ON;;;;;N;;;;;
+26C0;WHITE DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C1;WHITE DRAUGHTS KING;So;0;ON;;;;;N;;;;;
+26C2;BLACK DRAUGHTS MAN;So;0;ON;;;;;N;;;;;
+26C3;BLACK DRAUGHTS KING;So;0;ON;;;;;N;;;;;
+26C4;SNOWMAN WITHOUT SNOW;So;0;ON;;;;;N;;;;;
+26C5;SUN BEHIND CLOUD;So;0;ON;;;;;N;;;;;
+26C6;RAIN;So;0;ON;;;;;N;;;;;
+26C7;BLACK SNOWMAN;So;0;ON;;;;;N;;;;;
+26C8;THUNDER CLOUD AND RAIN;So;0;ON;;;;;N;;;;;
+26C9;TURNED WHITE SHOGI PIECE;So;0;ON;;;;;N;;;;;
+26CA;TURNED BLACK SHOGI PIECE;So;0;ON;;;;;N;;;;;
+26CB;WHITE DIAMOND IN SQUARE;So;0;ON;;;;;N;;;;;
+26CC;CROSSING LANES;So;0;ON;;;;;N;;;;;
+26CD;DISABLED CAR;So;0;ON;;;;;N;;;;;
+26CF;PICK;So;0;ON;;;;;N;;;;;
+26D0;CAR SLIDING;So;0;ON;;;;;N;;;;;
+26D1;HELMET WITH WHITE CROSS;So;0;ON;;;;;N;;;;;
+26D2;CIRCLED CROSSING LANES;So;0;ON;;;;;N;;;;;
+26D3;CHAINS;So;0;ON;;;;;N;;;;;
+26D4;NO ENTRY;So;0;ON;;;;;N;;;;;
+26D5;ALTERNATE ONE-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
+26D6;BLACK TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
+26D7;WHITE TWO-WAY LEFT WAY TRAFFIC;So;0;ON;;;;;N;;;;;
+26D8;BLACK LEFT LANE MERGE;So;0;ON;;;;;N;;;;;
+26D9;WHITE LEFT LANE MERGE;So;0;ON;;;;;N;;;;;
+26DA;DRIVE SLOW SIGN;So;0;ON;;;;;N;;;;;
+26DB;HEAVY WHITE DOWN-POINTING TRIANGLE;So;0;ON;;;;;N;;;;;
+26DC;LEFT CLOSED ENTRY;So;0;ON;;;;;N;;;;;
+26DD;SQUARED SALTIRE;So;0;ON;;;;;N;;;;;
+26DE;FALLING DIAGONAL IN WHITE CIRCLE IN BLACK SQUARE;So;0;ON;;;;;N;;;;;
+26DF;BLACK TRUCK;So;0;ON;;;;;N;;;;;
+26E0;RESTRICTED LEFT ENTRY-1;So;0;ON;;;;;N;;;;;
+26E1;RESTRICTED LEFT ENTRY-2;So;0;ON;;;;;N;;;;;
+26E3;HEAVY CIRCLE WITH STROKE AND TWO DOTS ABOVE;So;0;ON;;;;;N;;;;;
+26E8;BLACK CROSS ON SHIELD;So;0;ON;;;;;N;;;;;
+26E9;SHINTO SHRINE;So;0;ON;;;;;N;;;;;
+26EA;CHURCH;So;0;ON;;;;;N;;;;;
+26EB;CASTLE;So;0;ON;;;;;N;;;;;
+26EC;HISTORIC SITE;So;0;ON;;;;;N;;;;;
+26ED;GEAR WITHOUT HUB;So;0;ON;;;;;N;;;;;
+26EE;GEAR WITH HANDLES;So;0;ON;;;;;N;;;;;
+26EF;MAP SYMBOL FOR LIGHTHOUSE;So;0;ON;;;;;N;;;;;
+26F0;MOUNTAIN;So;0;ON;;;;;N;;;;;
+26F1;UMBRELLA ON GROUND;So;0;ON;;;;;N;;;;;
+26F2;FOUNTAIN;So;0;ON;;;;;N;;;;;
+26F3;FLAG IN HOLE;So;0;ON;;;;;N;;;;;
+26F4;FERRY;So;0;ON;;;;;N;;;;;
+26F5;SAILBOAT;So;0;ON;;;;;N;;;;;
+26F6;SQUARE FOUR CORNERS;So;0;ON;;;;;N;;;;;
+26F7;SKIER;So;0;ON;;;;;N;;;;;
+26F8;ICE SKATE;So;0;ON;;;;;N;;;;;
+26F9;PERSON WITH BALL;So;0;ON;;;;;N;;;;;
+26FA;TENT;So;0;ON;;;;;N;;;;;
+26FB;JAPANESE BANK SYMBOL;So;0;ON;;;;;N;;;;;
+26FC;HEADSTONE GRAVEYARD SYMBOL;So;0;ON;;;;;N;;;;;
+26FD;FUEL PUMP;So;0;ON;;;;;N;;;;;
+26FE;CUP ON BLACK SQUARE;So;0;ON;;;;;N;;;;;
+26FF;WHITE FLAG WITH HORIZONTAL MIDDLE BLACK STRIPE;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;;;;;
+2757;HEAVY EXCLAMATION MARK SYMBOL;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;;;;;Y;;;;;
+27C9;SUPERSET PRECEDING SOLIDUS;Sm;0;ON;;;;;Y;;;;;
+27CA;VERTICAL BAR WITH HORIZONTAL STROKE;Sm;0;ON;;;;;N;;;;;
+27CC;LONG DIVISION;Sm;0;ON;;;;;Y;;;;;
+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;;;;;
+27EC;MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET;Ps;0;ON;;;;;Y;;;;;
+27ED;MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET;Pe;0;ON;;;;;Y;;;;;
+27EE;MATHEMATICAL LEFT FLATTENED PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+27EF;MATHEMATICAL RIGHT FLATTENED PARENTHESIS;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;<compat> 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;<compat> 003A 003A 003D;;;;Y;;;;;
+2A75;TWO CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 003D 003D;;;;N;;;;;
+2A76;THREE CONSECUTIVE EQUALS SIGNS;Sm;0;ON;<compat> 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;;;;;
+2ADD;NONFORKING;Sm;0;ON;;;;;N;;;;;
+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;;;;;
+2B1B;BLACK LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1C;WHITE LARGE SQUARE;So;0;ON;;;;;N;;;;;
+2B1D;BLACK VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1E;WHITE VERY SMALL SQUARE;So;0;ON;;;;;N;;;;;
+2B1F;BLACK PENTAGON;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;;;;;
+2B24;BLACK LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2B25;BLACK MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B26;WHITE MEDIUM DIAMOND;So;0;ON;;;;;N;;;;;
+2B27;BLACK MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B28;WHITE MEDIUM LOZENGE;So;0;ON;;;;;N;;;;;
+2B29;BLACK SMALL DIAMOND;So;0;ON;;;;;N;;;;;
+2B2A;BLACK SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2B;WHITE SMALL LOZENGE;So;0;ON;;;;;N;;;;;
+2B2C;BLACK HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2D;WHITE HORIZONTAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2E;BLACK VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B2F;WHITE VERTICAL ELLIPSE;So;0;ON;;;;;N;;;;;
+2B30;LEFT ARROW WITH SMALL CIRCLE;Sm;0;ON;;;;;N;;;;;
+2B31;THREE LEFTWARDS ARROWS;Sm;0;ON;;;;;N;;;;;
+2B32;LEFT ARROW WITH CIRCLED PLUS;Sm;0;ON;;;;;N;;;;;
+2B33;LONG LEFTWARDS SQUIGGLE ARROW;Sm;0;ON;;;;;N;;;;;
+2B34;LEFTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B35;LEFTWARDS TWO-HEADED ARROW WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B36;LEFTWARDS TWO-HEADED ARROW FROM BAR;Sm;0;ON;;;;;N;;;;;
+2B37;LEFTWARDS TWO-HEADED TRIPLE DASH ARROW;Sm;0;ON;;;;;N;;;;;
+2B38;LEFTWARDS ARROW WITH DOTTED STEM;Sm;0;ON;;;;;N;;;;;
+2B39;LEFTWARDS ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3A;LEFTWARDS ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3B;LEFTWARDS TWO-HEADED ARROW WITH TAIL;Sm;0;ON;;;;;N;;;;;
+2B3C;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3D;LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH DOUBLE VERTICAL STROKE;Sm;0;ON;;;;;N;;;;;
+2B3E;LEFTWARDS ARROW THROUGH X;Sm;0;ON;;;;;N;;;;;
+2B3F;WAVE ARROW POINTING DIRECTLY LEFT;Sm;0;ON;;;;;N;;;;;
+2B40;EQUALS SIGN ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B41;REVERSE TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B42;LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B43;RIGHTWARDS ARROW THROUGH GREATER-THAN;Sm;0;ON;;;;;N;;;;;
+2B44;RIGHTWARDS ARROW THROUGH SUPERSET;Sm;0;ON;;;;;N;;;;;
+2B45;LEFTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B46;RIGHTWARDS QUADRUPLE ARROW;So;0;ON;;;;;N;;;;;
+2B47;REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B48;RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B49;TILDE OPERATOR ABOVE LEFTWARDS ARROW;Sm;0;ON;;;;;N;;;;;
+2B4A;LEFTWARDS ARROW ABOVE ALMOST EQUAL TO;Sm;0;ON;;;;;N;;;;;
+2B4B;LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B4C;RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR;Sm;0;ON;;;;;N;;;;;
+2B50;WHITE MEDIUM STAR;So;0;ON;;;;;N;;;;;
+2B51;BLACK SMALL STAR;So;0;ON;;;;;N;;;;;
+2B52;WHITE SMALL STAR;So;0;ON;;;;;N;;;;;
+2B53;BLACK RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2B54;WHITE RIGHT-POINTING PENTAGON;So;0;ON;;;;;N;;;;;
+2B55;HEAVY LARGE CIRCLE;So;0;ON;;;;;N;;;;;
+2B56;HEAVY OVAL WITH OVAL INSIDE;So;0;ON;;;;;N;;;;;
+2B57;HEAVY CIRCLE WITH CIRCLE INSIDE;So;0;ON;;;;;N;;;;;
+2B58;HEAVY CIRCLE;So;0;ON;;;;;N;;;;;
+2B59;HEAVY CIRCLED SALTIRE;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
+2C6D;LATIN CAPITAL LETTER ALPHA;Lu;0;L;;;;;N;;;;0251;
+2C6E;LATIN CAPITAL LETTER M WITH HOOK;Lu;0;L;;;;;N;;;;0271;
+2C6F;LATIN CAPITAL LETTER TURNED A;Lu;0;L;;;;;N;;;;0250;
+2C70;LATIN CAPITAL LETTER TURNED ALPHA;Lu;0;L;;;;;N;;;;0252;
+2C71;LATIN SMALL LETTER V WITH RIGHT HOOK;Ll;0;L;;;;;N;;;;;
+2C72;LATIN CAPITAL LETTER W WITH HOOK;Lu;0;L;;;;;N;;;;2C73;
+2C73;LATIN SMALL LETTER W WITH HOOK;Ll;0;L;;;;;N;;;2C72;;2C72
+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;;;;;
+2C78;LATIN SMALL LETTER E WITH NOTCH;Ll;0;L;;;;;N;;;;;
+2C79;LATIN SMALL LETTER TURNED R WITH TAIL;Ll;0;L;;;;;N;;;;;
+2C7A;LATIN SMALL LETTER O WITH LOW RING INSIDE;Ll;0;L;;;;;N;;;;;
+2C7B;LATIN LETTER SMALL CAPITAL TURNED E;Ll;0;L;;;;;N;;;;;
+2C7C;LATIN SUBSCRIPT SMALL LETTER J;Ll;0;L;<sub> 006A;;;;N;;;;;
+2C7D;MODIFIER LETTER CAPITAL V;Lm;0;L;<super> 0056;;;;N;;;;;
+2C7E;LATIN CAPITAL LETTER S WITH SWASH TAIL;Lu;0;L;;;;;N;;;;023F;
+2C7F;LATIN CAPITAL LETTER Z WITH SWASH TAIL;Lu;0;L;;;;;N;;;;0240;
+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;;;;;
+2CEB;COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI;Lu;0;L;;;;;N;;;;2CEC;
+2CEC;COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI;Ll;0;L;;;;;N;;;2CEB;;2CEB
+2CED;COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA;Lu;0;L;;;;;N;;;;2CEE;
+2CEE;COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA;Ll;0;L;;;;;N;;;2CED;;2CED
+2CEF;COPTIC COMBINING NI ABOVE;Mn;230;NSM;;;;;N;;;;;
+2CF0;COPTIC COMBINING SPIRITUS ASPER;Mn;230;NSM;;;;;N;;;;;
+2CF1;COPTIC COMBINING SPIRITUS LENIS;Mn;230;NSM;;;;;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;;;10A0;;10A0
+2D01;GEORGIAN SMALL LETTER BAN;Ll;0;L;;;;;N;;;10A1;;10A1
+2D02;GEORGIAN SMALL LETTER GAN;Ll;0;L;;;;;N;;;10A2;;10A2
+2D03;GEORGIAN SMALL LETTER DON;Ll;0;L;;;;;N;;;10A3;;10A3
+2D04;GEORGIAN SMALL LETTER EN;Ll;0;L;;;;;N;;;10A4;;10A4
+2D05;GEORGIAN SMALL LETTER VIN;Ll;0;L;;;;;N;;;10A5;;10A5
+2D06;GEORGIAN SMALL LETTER ZEN;Ll;0;L;;;;;N;;;10A6;;10A6
+2D07;GEORGIAN SMALL LETTER TAN;Ll;0;L;;;;;N;;;10A7;;10A7
+2D08;GEORGIAN SMALL LETTER IN;Ll;0;L;;;;;N;;;10A8;;10A8
+2D09;GEORGIAN SMALL LETTER KAN;Ll;0;L;;;;;N;;;10A9;;10A9
+2D0A;GEORGIAN SMALL LETTER LAS;Ll;0;L;;;;;N;;;10AA;;10AA
+2D0B;GEORGIAN SMALL LETTER MAN;Ll;0;L;;;;;N;;;10AB;;10AB
+2D0C;GEORGIAN SMALL LETTER NAR;Ll;0;L;;;;;N;;;10AC;;10AC
+2D0D;GEORGIAN SMALL LETTER ON;Ll;0;L;;;;;N;;;10AD;;10AD
+2D0E;GEORGIAN SMALL LETTER PAR;Ll;0;L;;;;;N;;;10AE;;10AE
+2D0F;GEORGIAN SMALL LETTER ZHAR;Ll;0;L;;;;;N;;;10AF;;10AF
+2D10;GEORGIAN SMALL LETTER RAE;Ll;0;L;;;;;N;;;10B0;;10B0
+2D11;GEORGIAN SMALL LETTER SAN;Ll;0;L;;;;;N;;;10B1;;10B1
+2D12;GEORGIAN SMALL LETTER TAR;Ll;0;L;;;;;N;;;10B2;;10B2
+2D13;GEORGIAN SMALL LETTER UN;Ll;0;L;;;;;N;;;10B3;;10B3
+2D14;GEORGIAN SMALL LETTER PHAR;Ll;0;L;;;;;N;;;10B4;;10B4
+2D15;GEORGIAN SMALL LETTER KHAR;Ll;0;L;;;;;N;;;10B5;;10B5
+2D16;GEORGIAN SMALL LETTER GHAN;Ll;0;L;;;;;N;;;10B6;;10B6
+2D17;GEORGIAN SMALL LETTER QAR;Ll;0;L;;;;;N;;;10B7;;10B7
+2D18;GEORGIAN SMALL LETTER SHIN;Ll;0;L;;;;;N;;;10B8;;10B8
+2D19;GEORGIAN SMALL LETTER CHIN;Ll;0;L;;;;;N;;;10B9;;10B9
+2D1A;GEORGIAN SMALL LETTER CAN;Ll;0;L;;;;;N;;;10BA;;10BA
+2D1B;GEORGIAN SMALL LETTER JIL;Ll;0;L;;;;;N;;;10BB;;10BB
+2D1C;GEORGIAN SMALL LETTER CIL;Ll;0;L;;;;;N;;;10BC;;10BC
+2D1D;GEORGIAN SMALL LETTER CHAR;Ll;0;L;;;;;N;;;10BD;;10BD
+2D1E;GEORGIAN SMALL LETTER XAN;Ll;0;L;;;;;N;;;10BE;;10BE
+2D1F;GEORGIAN SMALL LETTER JHAN;Ll;0;L;;;;;N;;;10BF;;10BF
+2D20;GEORGIAN SMALL LETTER HAE;Ll;0;L;;;;;N;;;10C0;;10C0
+2D21;GEORGIAN SMALL LETTER HE;Ll;0;L;;;;;N;;;10C1;;10C1
+2D22;GEORGIAN SMALL LETTER HIE;Ll;0;L;;;;;N;;;10C2;;10C2
+2D23;GEORGIAN SMALL LETTER WE;Ll;0;L;;;;;N;;;10C3;;10C3
+2D24;GEORGIAN SMALL LETTER HAR;Ll;0;L;;;;;N;;;10C4;;10C4
+2D25;GEORGIAN SMALL LETTER HOE;Ll;0;L;;;;;N;;;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;;;;;
+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;;;;;
+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;;;;;
+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;;;;;
+2D65;TIFINAGH LETTER YAZZ;Lo;0;L;;;;;N;;;;;
+2D6F;TIFINAGH MODIFIER LETTER LABIALIZATION MARK;Lm;0;L;<super> 2D61;;;;N;;;;;
+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;;;;;
+2DE0;COMBINING CYRILLIC LETTER BE;Mn;230;NSM;;;;;N;;;;;
+2DE1;COMBINING CYRILLIC LETTER VE;Mn;230;NSM;;;;;N;;;;;
+2DE2;COMBINING CYRILLIC LETTER GHE;Mn;230;NSM;;;;;N;;;;;
+2DE3;COMBINING CYRILLIC LETTER DE;Mn;230;NSM;;;;;N;;;;;
+2DE4;COMBINING CYRILLIC LETTER ZHE;Mn;230;NSM;;;;;N;;;;;
+2DE5;COMBINING CYRILLIC LETTER ZE;Mn;230;NSM;;;;;N;;;;;
+2DE6;COMBINING CYRILLIC LETTER KA;Mn;230;NSM;;;;;N;;;;;
+2DE7;COMBINING CYRILLIC LETTER EL;Mn;230;NSM;;;;;N;;;;;
+2DE8;COMBINING CYRILLIC LETTER EM;Mn;230;NSM;;;;;N;;;;;
+2DE9;COMBINING CYRILLIC LETTER EN;Mn;230;NSM;;;;;N;;;;;
+2DEA;COMBINING CYRILLIC LETTER O;Mn;230;NSM;;;;;N;;;;;
+2DEB;COMBINING CYRILLIC LETTER PE;Mn;230;NSM;;;;;N;;;;;
+2DEC;COMBINING CYRILLIC LETTER ER;Mn;230;NSM;;;;;N;;;;;
+2DED;COMBINING CYRILLIC LETTER ES;Mn;230;NSM;;;;;N;;;;;
+2DEE;COMBINING CYRILLIC LETTER TE;Mn;230;NSM;;;;;N;;;;;
+2DEF;COMBINING CYRILLIC LETTER HA;Mn;230;NSM;;;;;N;;;;;
+2DF0;COMBINING CYRILLIC LETTER TSE;Mn;230;NSM;;;;;N;;;;;
+2DF1;COMBINING CYRILLIC LETTER CHE;Mn;230;NSM;;;;;N;;;;;
+2DF2;COMBINING CYRILLIC LETTER SHA;Mn;230;NSM;;;;;N;;;;;
+2DF3;COMBINING CYRILLIC LETTER SHCHA;Mn;230;NSM;;;;;N;;;;;
+2DF4;COMBINING CYRILLIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
+2DF5;COMBINING CYRILLIC LETTER ES-TE;Mn;230;NSM;;;;;N;;;;;
+2DF6;COMBINING CYRILLIC LETTER A;Mn;230;NSM;;;;;N;;;;;
+2DF7;COMBINING CYRILLIC LETTER IE;Mn;230;NSM;;;;;N;;;;;
+2DF8;COMBINING CYRILLIC LETTER DJERV;Mn;230;NSM;;;;;N;;;;;
+2DF9;COMBINING CYRILLIC LETTER MONOGRAPH UK;Mn;230;NSM;;;;;N;;;;;
+2DFA;COMBINING CYRILLIC LETTER YAT;Mn;230;NSM;;;;;N;;;;;
+2DFB;COMBINING CYRILLIC LETTER YU;Mn;230;NSM;;;;;N;;;;;
+2DFC;COMBINING CYRILLIC LETTER IOTIFIED A;Mn;230;NSM;;;;;N;;;;;
+2DFD;COMBINING CYRILLIC LETTER LITTLE YUS;Mn;230;NSM;;;;;N;;;;;
+2DFE;COMBINING CYRILLIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
+2DFF;COMBINING CYRILLIC LETTER IOTIFIED BIG YUS;Mn;230;NSM;;;;;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;;;;;
+2E18;INVERTED INTERROBANG;Po;0;ON;;;;;N;;;;;
+2E19;PALM BRANCH;Po;0;ON;;;;;N;;;;;
+2E1A;HYPHEN WITH DIAERESIS;Pd;0;ON;;;;;N;;;;;
+2E1B;TILDE WITH RING ABOVE;Po;0;ON;;;;;N;;;;;
+2E1C;LEFT LOW PARAPHRASE BRACKET;Pi;0;ON;;;;;Y;;;;;
+2E1D;RIGHT LOW PARAPHRASE BRACKET;Pf;0;ON;;;;;Y;;;;;
+2E1E;TILDE WITH DOT ABOVE;Po;0;ON;;;;;N;;;;;
+2E1F;TILDE WITH DOT BELOW;Po;0;ON;;;;;N;;;;;
+2E20;LEFT VERTICAL BAR WITH QUILL;Pi;0;ON;;;;;Y;;;;;
+2E21;RIGHT VERTICAL BAR WITH QUILL;Pf;0;ON;;;;;Y;;;;;
+2E22;TOP LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E23;TOP RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E24;BOTTOM LEFT HALF BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E25;BOTTOM RIGHT HALF BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E26;LEFT SIDEWAYS U BRACKET;Ps;0;ON;;;;;Y;;;;;
+2E27;RIGHT SIDEWAYS U BRACKET;Pe;0;ON;;;;;Y;;;;;
+2E28;LEFT DOUBLE PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+2E29;RIGHT DOUBLE PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+2E2A;TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2B;ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2C;SQUARED FOUR DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+2E2D;FIVE DOT MARK;Po;0;ON;;;;;N;;;;;
+2E2E;REVERSED QUESTION MARK;Po;0;ON;;;;;N;;;;;
+2E2F;VERTICAL TILDE;Lm;0;ON;;;;;N;;;;;
+2E30;RING POINT;Po;0;ON;;;;;N;;;;;
+2E31;WORD SEPARATOR MIDDLE DOT;Po;0;ON;;;;;N;;;;;
+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;<compat> 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;<compat> 9F9F;;;;N;;;;;
+2F00;KANGXI RADICAL ONE;So;0;ON;<compat> 4E00;;;;N;;;;;
+2F01;KANGXI RADICAL LINE;So;0;ON;<compat> 4E28;;;;N;;;;;
+2F02;KANGXI RADICAL DOT;So;0;ON;<compat> 4E36;;;;N;;;;;
+2F03;KANGXI RADICAL SLASH;So;0;ON;<compat> 4E3F;;;;N;;;;;
+2F04;KANGXI RADICAL SECOND;So;0;ON;<compat> 4E59;;;;N;;;;;
+2F05;KANGXI RADICAL HOOK;So;0;ON;<compat> 4E85;;;;N;;;;;
+2F06;KANGXI RADICAL TWO;So;0;ON;<compat> 4E8C;;;;N;;;;;
+2F07;KANGXI RADICAL LID;So;0;ON;<compat> 4EA0;;;;N;;;;;
+2F08;KANGXI RADICAL MAN;So;0;ON;<compat> 4EBA;;;;N;;;;;
+2F09;KANGXI RADICAL LEGS;So;0;ON;<compat> 513F;;;;N;;;;;
+2F0A;KANGXI RADICAL ENTER;So;0;ON;<compat> 5165;;;;N;;;;;
+2F0B;KANGXI RADICAL EIGHT;So;0;ON;<compat> 516B;;;;N;;;;;
+2F0C;KANGXI RADICAL DOWN BOX;So;0;ON;<compat> 5182;;;;N;;;;;
+2F0D;KANGXI RADICAL COVER;So;0;ON;<compat> 5196;;;;N;;;;;
+2F0E;KANGXI RADICAL ICE;So;0;ON;<compat> 51AB;;;;N;;;;;
+2F0F;KANGXI RADICAL TABLE;So;0;ON;<compat> 51E0;;;;N;;;;;
+2F10;KANGXI RADICAL OPEN BOX;So;0;ON;<compat> 51F5;;;;N;;;;;
+2F11;KANGXI RADICAL KNIFE;So;0;ON;<compat> 5200;;;;N;;;;;
+2F12;KANGXI RADICAL POWER;So;0;ON;<compat> 529B;;;;N;;;;;
+2F13;KANGXI RADICAL WRAP;So;0;ON;<compat> 52F9;;;;N;;;;;
+2F14;KANGXI RADICAL SPOON;So;0;ON;<compat> 5315;;;;N;;;;;
+2F15;KANGXI RADICAL RIGHT OPEN BOX;So;0;ON;<compat> 531A;;;;N;;;;;
+2F16;KANGXI RADICAL HIDING ENCLOSURE;So;0;ON;<compat> 5338;;;;N;;;;;
+2F17;KANGXI RADICAL TEN;So;0;ON;<compat> 5341;;;;N;;;;;
+2F18;KANGXI RADICAL DIVINATION;So;0;ON;<compat> 535C;;;;N;;;;;
+2F19;KANGXI RADICAL SEAL;So;0;ON;<compat> 5369;;;;N;;;;;
+2F1A;KANGXI RADICAL CLIFF;So;0;ON;<compat> 5382;;;;N;;;;;
+2F1B;KANGXI RADICAL PRIVATE;So;0;ON;<compat> 53B6;;;;N;;;;;
+2F1C;KANGXI RADICAL AGAIN;So;0;ON;<compat> 53C8;;;;N;;;;;
+2F1D;KANGXI RADICAL MOUTH;So;0;ON;<compat> 53E3;;;;N;;;;;
+2F1E;KANGXI RADICAL ENCLOSURE;So;0;ON;<compat> 56D7;;;;N;;;;;
+2F1F;KANGXI RADICAL EARTH;So;0;ON;<compat> 571F;;;;N;;;;;
+2F20;KANGXI RADICAL SCHOLAR;So;0;ON;<compat> 58EB;;;;N;;;;;
+2F21;KANGXI RADICAL GO;So;0;ON;<compat> 5902;;;;N;;;;;
+2F22;KANGXI RADICAL GO SLOWLY;So;0;ON;<compat> 590A;;;;N;;;;;
+2F23;KANGXI RADICAL EVENING;So;0;ON;<compat> 5915;;;;N;;;;;
+2F24;KANGXI RADICAL BIG;So;0;ON;<compat> 5927;;;;N;;;;;
+2F25;KANGXI RADICAL WOMAN;So;0;ON;<compat> 5973;;;;N;;;;;
+2F26;KANGXI RADICAL CHILD;So;0;ON;<compat> 5B50;;;;N;;;;;
+2F27;KANGXI RADICAL ROOF;So;0;ON;<compat> 5B80;;;;N;;;;;
+2F28;KANGXI RADICAL INCH;So;0;ON;<compat> 5BF8;;;;N;;;;;
+2F29;KANGXI RADICAL SMALL;So;0;ON;<compat> 5C0F;;;;N;;;;;
+2F2A;KANGXI RADICAL LAME;So;0;ON;<compat> 5C22;;;;N;;;;;
+2F2B;KANGXI RADICAL CORPSE;So;0;ON;<compat> 5C38;;;;N;;;;;
+2F2C;KANGXI RADICAL SPROUT;So;0;ON;<compat> 5C6E;;;;N;;;;;
+2F2D;KANGXI RADICAL MOUNTAIN;So;0;ON;<compat> 5C71;;;;N;;;;;
+2F2E;KANGXI RADICAL RIVER;So;0;ON;<compat> 5DDB;;;;N;;;;;
+2F2F;KANGXI RADICAL WORK;So;0;ON;<compat> 5DE5;;;;N;;;;;
+2F30;KANGXI RADICAL ONESELF;So;0;ON;<compat> 5DF1;;;;N;;;;;
+2F31;KANGXI RADICAL TURBAN;So;0;ON;<compat> 5DFE;;;;N;;;;;
+2F32;KANGXI RADICAL DRY;So;0;ON;<compat> 5E72;;;;N;;;;;
+2F33;KANGXI RADICAL SHORT THREAD;So;0;ON;<compat> 5E7A;;;;N;;;;;
+2F34;KANGXI RADICAL DOTTED CLIFF;So;0;ON;<compat> 5E7F;;;;N;;;;;
+2F35;KANGXI RADICAL LONG STRIDE;So;0;ON;<compat> 5EF4;;;;N;;;;;
+2F36;KANGXI RADICAL TWO HANDS;So;0;ON;<compat> 5EFE;;;;N;;;;;
+2F37;KANGXI RADICAL SHOOT;So;0;ON;<compat> 5F0B;;;;N;;;;;
+2F38;KANGXI RADICAL BOW;So;0;ON;<compat> 5F13;;;;N;;;;;
+2F39;KANGXI RADICAL SNOUT;So;0;ON;<compat> 5F50;;;;N;;;;;
+2F3A;KANGXI RADICAL BRISTLE;So;0;ON;<compat> 5F61;;;;N;;;;;
+2F3B;KANGXI RADICAL STEP;So;0;ON;<compat> 5F73;;;;N;;;;;
+2F3C;KANGXI RADICAL HEART;So;0;ON;<compat> 5FC3;;;;N;;;;;
+2F3D;KANGXI RADICAL HALBERD;So;0;ON;<compat> 6208;;;;N;;;;;
+2F3E;KANGXI RADICAL DOOR;So;0;ON;<compat> 6236;;;;N;;;;;
+2F3F;KANGXI RADICAL HAND;So;0;ON;<compat> 624B;;;;N;;;;;
+2F40;KANGXI RADICAL BRANCH;So;0;ON;<compat> 652F;;;;N;;;;;
+2F41;KANGXI RADICAL RAP;So;0;ON;<compat> 6534;;;;N;;;;;
+2F42;KANGXI RADICAL SCRIPT;So;0;ON;<compat> 6587;;;;N;;;;;
+2F43;KANGXI RADICAL DIPPER;So;0;ON;<compat> 6597;;;;N;;;;;
+2F44;KANGXI RADICAL AXE;So;0;ON;<compat> 65A4;;;;N;;;;;
+2F45;KANGXI RADICAL SQUARE;So;0;ON;<compat> 65B9;;;;N;;;;;
+2F46;KANGXI RADICAL NOT;So;0;ON;<compat> 65E0;;;;N;;;;;
+2F47;KANGXI RADICAL SUN;So;0;ON;<compat> 65E5;;;;N;;;;;
+2F48;KANGXI RADICAL SAY;So;0;ON;<compat> 66F0;;;;N;;;;;
+2F49;KANGXI RADICAL MOON;So;0;ON;<compat> 6708;;;;N;;;;;
+2F4A;KANGXI RADICAL TREE;So;0;ON;<compat> 6728;;;;N;;;;;
+2F4B;KANGXI RADICAL LACK;So;0;ON;<compat> 6B20;;;;N;;;;;
+2F4C;KANGXI RADICAL STOP;So;0;ON;<compat> 6B62;;;;N;;;;;
+2F4D;KANGXI RADICAL DEATH;So;0;ON;<compat> 6B79;;;;N;;;;;
+2F4E;KANGXI RADICAL WEAPON;So;0;ON;<compat> 6BB3;;;;N;;;;;
+2F4F;KANGXI RADICAL DO NOT;So;0;ON;<compat> 6BCB;;;;N;;;;;
+2F50;KANGXI RADICAL COMPARE;So;0;ON;<compat> 6BD4;;;;N;;;;;
+2F51;KANGXI RADICAL FUR;So;0;ON;<compat> 6BDB;;;;N;;;;;
+2F52;KANGXI RADICAL CLAN;So;0;ON;<compat> 6C0F;;;;N;;;;;
+2F53;KANGXI RADICAL STEAM;So;0;ON;<compat> 6C14;;;;N;;;;;
+2F54;KANGXI RADICAL WATER;So;0;ON;<compat> 6C34;;;;N;;;;;
+2F55;KANGXI RADICAL FIRE;So;0;ON;<compat> 706B;;;;N;;;;;
+2F56;KANGXI RADICAL CLAW;So;0;ON;<compat> 722A;;;;N;;;;;
+2F57;KANGXI RADICAL FATHER;So;0;ON;<compat> 7236;;;;N;;;;;
+2F58;KANGXI RADICAL DOUBLE X;So;0;ON;<compat> 723B;;;;N;;;;;
+2F59;KANGXI RADICAL HALF TREE TRUNK;So;0;ON;<compat> 723F;;;;N;;;;;
+2F5A;KANGXI RADICAL SLICE;So;0;ON;<compat> 7247;;;;N;;;;;
+2F5B;KANGXI RADICAL FANG;So;0;ON;<compat> 7259;;;;N;;;;;
+2F5C;KANGXI RADICAL COW;So;0;ON;<compat> 725B;;;;N;;;;;
+2F5D;KANGXI RADICAL DOG;So;0;ON;<compat> 72AC;;;;N;;;;;
+2F5E;KANGXI RADICAL PROFOUND;So;0;ON;<compat> 7384;;;;N;;;;;
+2F5F;KANGXI RADICAL JADE;So;0;ON;<compat> 7389;;;;N;;;;;
+2F60;KANGXI RADICAL MELON;So;0;ON;<compat> 74DC;;;;N;;;;;
+2F61;KANGXI RADICAL TILE;So;0;ON;<compat> 74E6;;;;N;;;;;
+2F62;KANGXI RADICAL SWEET;So;0;ON;<compat> 7518;;;;N;;;;;
+2F63;KANGXI RADICAL LIFE;So;0;ON;<compat> 751F;;;;N;;;;;
+2F64;KANGXI RADICAL USE;So;0;ON;<compat> 7528;;;;N;;;;;
+2F65;KANGXI RADICAL FIELD;So;0;ON;<compat> 7530;;;;N;;;;;
+2F66;KANGXI RADICAL BOLT OF CLOTH;So;0;ON;<compat> 758B;;;;N;;;;;
+2F67;KANGXI RADICAL SICKNESS;So;0;ON;<compat> 7592;;;;N;;;;;
+2F68;KANGXI RADICAL DOTTED TENT;So;0;ON;<compat> 7676;;;;N;;;;;
+2F69;KANGXI RADICAL WHITE;So;0;ON;<compat> 767D;;;;N;;;;;
+2F6A;KANGXI RADICAL SKIN;So;0;ON;<compat> 76AE;;;;N;;;;;
+2F6B;KANGXI RADICAL DISH;So;0;ON;<compat> 76BF;;;;N;;;;;
+2F6C;KANGXI RADICAL EYE;So;0;ON;<compat> 76EE;;;;N;;;;;
+2F6D;KANGXI RADICAL SPEAR;So;0;ON;<compat> 77DB;;;;N;;;;;
+2F6E;KANGXI RADICAL ARROW;So;0;ON;<compat> 77E2;;;;N;;;;;
+2F6F;KANGXI RADICAL STONE;So;0;ON;<compat> 77F3;;;;N;;;;;
+2F70;KANGXI RADICAL SPIRIT;So;0;ON;<compat> 793A;;;;N;;;;;
+2F71;KANGXI RADICAL TRACK;So;0;ON;<compat> 79B8;;;;N;;;;;
+2F72;KANGXI RADICAL GRAIN;So;0;ON;<compat> 79BE;;;;N;;;;;
+2F73;KANGXI RADICAL CAVE;So;0;ON;<compat> 7A74;;;;N;;;;;
+2F74;KANGXI RADICAL STAND;So;0;ON;<compat> 7ACB;;;;N;;;;;
+2F75;KANGXI RADICAL BAMBOO;So;0;ON;<compat> 7AF9;;;;N;;;;;
+2F76;KANGXI RADICAL RICE;So;0;ON;<compat> 7C73;;;;N;;;;;
+2F77;KANGXI RADICAL SILK;So;0;ON;<compat> 7CF8;;;;N;;;;;
+2F78;KANGXI RADICAL JAR;So;0;ON;<compat> 7F36;;;;N;;;;;
+2F79;KANGXI RADICAL NET;So;0;ON;<compat> 7F51;;;;N;;;;;
+2F7A;KANGXI RADICAL SHEEP;So;0;ON;<compat> 7F8A;;;;N;;;;;
+2F7B;KANGXI RADICAL FEATHER;So;0;ON;<compat> 7FBD;;;;N;;;;;
+2F7C;KANGXI RADICAL OLD;So;0;ON;<compat> 8001;;;;N;;;;;
+2F7D;KANGXI RADICAL AND;So;0;ON;<compat> 800C;;;;N;;;;;
+2F7E;KANGXI RADICAL PLOW;So;0;ON;<compat> 8012;;;;N;;;;;
+2F7F;KANGXI RADICAL EAR;So;0;ON;<compat> 8033;;;;N;;;;;
+2F80;KANGXI RADICAL BRUSH;So;0;ON;<compat> 807F;;;;N;;;;;
+2F81;KANGXI RADICAL MEAT;So;0;ON;<compat> 8089;;;;N;;;;;
+2F82;KANGXI RADICAL MINISTER;So;0;ON;<compat> 81E3;;;;N;;;;;
+2F83;KANGXI RADICAL SELF;So;0;ON;<compat> 81EA;;;;N;;;;;
+2F84;KANGXI RADICAL ARRIVE;So;0;ON;<compat> 81F3;;;;N;;;;;
+2F85;KANGXI RADICAL MORTAR;So;0;ON;<compat> 81FC;;;;N;;;;;
+2F86;KANGXI RADICAL TONGUE;So;0;ON;<compat> 820C;;;;N;;;;;
+2F87;KANGXI RADICAL OPPOSE;So;0;ON;<compat> 821B;;;;N;;;;;
+2F88;KANGXI RADICAL BOAT;So;0;ON;<compat> 821F;;;;N;;;;;
+2F89;KANGXI RADICAL STOPPING;So;0;ON;<compat> 826E;;;;N;;;;;
+2F8A;KANGXI RADICAL COLOR;So;0;ON;<compat> 8272;;;;N;;;;;
+2F8B;KANGXI RADICAL GRASS;So;0;ON;<compat> 8278;;;;N;;;;;
+2F8C;KANGXI RADICAL TIGER;So;0;ON;<compat> 864D;;;;N;;;;;
+2F8D;KANGXI RADICAL INSECT;So;0;ON;<compat> 866B;;;;N;;;;;
+2F8E;KANGXI RADICAL BLOOD;So;0;ON;<compat> 8840;;;;N;;;;;
+2F8F;KANGXI RADICAL WALK ENCLOSURE;So;0;ON;<compat> 884C;;;;N;;;;;
+2F90;KANGXI RADICAL CLOTHES;So;0;ON;<compat> 8863;;;;N;;;;;
+2F91;KANGXI RADICAL WEST;So;0;ON;<compat> 897E;;;;N;;;;;
+2F92;KANGXI RADICAL SEE;So;0;ON;<compat> 898B;;;;N;;;;;
+2F93;KANGXI RADICAL HORN;So;0;ON;<compat> 89D2;;;;N;;;;;
+2F94;KANGXI RADICAL SPEECH;So;0;ON;<compat> 8A00;;;;N;;;;;
+2F95;KANGXI RADICAL VALLEY;So;0;ON;<compat> 8C37;;;;N;;;;;
+2F96;KANGXI RADICAL BEAN;So;0;ON;<compat> 8C46;;;;N;;;;;
+2F97;KANGXI RADICAL PIG;So;0;ON;<compat> 8C55;;;;N;;;;;
+2F98;KANGXI RADICAL BADGER;So;0;ON;<compat> 8C78;;;;N;;;;;
+2F99;KANGXI RADICAL SHELL;So;0;ON;<compat> 8C9D;;;;N;;;;;
+2F9A;KANGXI RADICAL RED;So;0;ON;<compat> 8D64;;;;N;;;;;
+2F9B;KANGXI RADICAL RUN;So;0;ON;<compat> 8D70;;;;N;;;;;
+2F9C;KANGXI RADICAL FOOT;So;0;ON;<compat> 8DB3;;;;N;;;;;
+2F9D;KANGXI RADICAL BODY;So;0;ON;<compat> 8EAB;;;;N;;;;;
+2F9E;KANGXI RADICAL CART;So;0;ON;<compat> 8ECA;;;;N;;;;;
+2F9F;KANGXI RADICAL BITTER;So;0;ON;<compat> 8F9B;;;;N;;;;;
+2FA0;KANGXI RADICAL MORNING;So;0;ON;<compat> 8FB0;;;;N;;;;;
+2FA1;KANGXI RADICAL WALK;So;0;ON;<compat> 8FB5;;;;N;;;;;
+2FA2;KANGXI RADICAL CITY;So;0;ON;<compat> 9091;;;;N;;;;;
+2FA3;KANGXI RADICAL WINE;So;0;ON;<compat> 9149;;;;N;;;;;
+2FA4;KANGXI RADICAL DISTINGUISH;So;0;ON;<compat> 91C6;;;;N;;;;;
+2FA5;KANGXI RADICAL VILLAGE;So;0;ON;<compat> 91CC;;;;N;;;;;
+2FA6;KANGXI RADICAL GOLD;So;0;ON;<compat> 91D1;;;;N;;;;;
+2FA7;KANGXI RADICAL LONG;So;0;ON;<compat> 9577;;;;N;;;;;
+2FA8;KANGXI RADICAL GATE;So;0;ON;<compat> 9580;;;;N;;;;;
+2FA9;KANGXI RADICAL MOUND;So;0;ON;<compat> 961C;;;;N;;;;;
+2FAA;KANGXI RADICAL SLAVE;So;0;ON;<compat> 96B6;;;;N;;;;;
+2FAB;KANGXI RADICAL SHORT TAILED BIRD;So;0;ON;<compat> 96B9;;;;N;;;;;
+2FAC;KANGXI RADICAL RAIN;So;0;ON;<compat> 96E8;;;;N;;;;;
+2FAD;KANGXI RADICAL BLUE;So;0;ON;<compat> 9751;;;;N;;;;;
+2FAE;KANGXI RADICAL WRONG;So;0;ON;<compat> 975E;;;;N;;;;;
+2FAF;KANGXI RADICAL FACE;So;0;ON;<compat> 9762;;;;N;;;;;
+2FB0;KANGXI RADICAL LEATHER;So;0;ON;<compat> 9769;;;;N;;;;;
+2FB1;KANGXI RADICAL TANNED LEATHER;So;0;ON;<compat> 97CB;;;;N;;;;;
+2FB2;KANGXI RADICAL LEEK;So;0;ON;<compat> 97ED;;;;N;;;;;
+2FB3;KANGXI RADICAL SOUND;So;0;ON;<compat> 97F3;;;;N;;;;;
+2FB4;KANGXI RADICAL LEAF;So;0;ON;<compat> 9801;;;;N;;;;;
+2FB5;KANGXI RADICAL WIND;So;0;ON;<compat> 98A8;;;;N;;;;;
+2FB6;KANGXI RADICAL FLY;So;0;ON;<compat> 98DB;;;;N;;;;;
+2FB7;KANGXI RADICAL EAT;So;0;ON;<compat> 98DF;;;;N;;;;;
+2FB8;KANGXI RADICAL HEAD;So;0;ON;<compat> 9996;;;;N;;;;;
+2FB9;KANGXI RADICAL FRAGRANT;So;0;ON;<compat> 9999;;;;N;;;;;
+2FBA;KANGXI RADICAL HORSE;So;0;ON;<compat> 99AC;;;;N;;;;;
+2FBB;KANGXI RADICAL BONE;So;0;ON;<compat> 9AA8;;;;N;;;;;
+2FBC;KANGXI RADICAL TALL;So;0;ON;<compat> 9AD8;;;;N;;;;;
+2FBD;KANGXI RADICAL HAIR;So;0;ON;<compat> 9ADF;;;;N;;;;;
+2FBE;KANGXI RADICAL FIGHT;So;0;ON;<compat> 9B25;;;;N;;;;;
+2FBF;KANGXI RADICAL SACRIFICIAL WINE;So;0;ON;<compat> 9B2F;;;;N;;;;;
+2FC0;KANGXI RADICAL CAULDRON;So;0;ON;<compat> 9B32;;;;N;;;;;
+2FC1;KANGXI RADICAL GHOST;So;0;ON;<compat> 9B3C;;;;N;;;;;
+2FC2;KANGXI RADICAL FISH;So;0;ON;<compat> 9B5A;;;;N;;;;;
+2FC3;KANGXI RADICAL BIRD;So;0;ON;<compat> 9CE5;;;;N;;;;;
+2FC4;KANGXI RADICAL SALT;So;0;ON;<compat> 9E75;;;;N;;;;;
+2FC5;KANGXI RADICAL DEER;So;0;ON;<compat> 9E7F;;;;N;;;;;
+2FC6;KANGXI RADICAL WHEAT;So;0;ON;<compat> 9EA5;;;;N;;;;;
+2FC7;KANGXI RADICAL HEMP;So;0;ON;<compat> 9EBB;;;;N;;;;;
+2FC8;KANGXI RADICAL YELLOW;So;0;ON;<compat> 9EC3;;;;N;;;;;
+2FC9;KANGXI RADICAL MILLET;So;0;ON;<compat> 9ECD;;;;N;;;;;
+2FCA;KANGXI RADICAL BLACK;So;0;ON;<compat> 9ED1;;;;N;;;;;
+2FCB;KANGXI RADICAL EMBROIDERY;So;0;ON;<compat> 9EF9;;;;N;;;;;
+2FCC;KANGXI RADICAL FROG;So;0;ON;<compat> 9EFD;;;;N;;;;;
+2FCD;KANGXI RADICAL TRIPOD;So;0;ON;<compat> 9F0E;;;;N;;;;;
+2FCE;KANGXI RADICAL DRUM;So;0;ON;<compat> 9F13;;;;N;;;;;
+2FCF;KANGXI RADICAL RAT;So;0;ON;<compat> 9F20;;;;N;;;;;
+2FD0;KANGXI RADICAL NOSE;So;0;ON;<compat> 9F3B;;;;N;;;;;
+2FD1;KANGXI RADICAL EVEN;So;0;ON;<compat> 9F4A;;;;N;;;;;
+2FD2;KANGXI RADICAL TOOTH;So;0;ON;<compat> 9F52;;;;N;;;;;
+2FD3;KANGXI RADICAL DRAGON;So;0;ON;<compat> 9F8D;;;;N;;;;;
+2FD4;KANGXI RADICAL TURTLE;So;0;ON;<compat> 9F9C;;;;N;;;;;
+2FD5;KANGXI RADICAL FLUTE;So;0;ON;<compat> 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;<wide> 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;;;;;N;;;;;
+301E;DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+301F;LOW DOUBLE PRIME QUOTATION MARK;Pe;0;ON;;;;;N;;;;;
+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;<compat> 3012;;;;N;;;;;
+3037;IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL;So;0;ON;;;;;N;;;;;
+3038;HANGZHOU NUMERAL TEN;Nl;0;L;<compat> 5341;;;10;N;;;;;
+3039;HANGZHOU NUMERAL TWENTY;Nl;0;L;<compat> 5344;;;20;N;;;;;
+303A;HANGZHOU NUMERAL THIRTY;Nl;0;L;<compat> 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;<compat> 0020 3099;;;;N;;;;;
+309C;KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK;Sk;0;ON;<compat> 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;<vertical> 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;<vertical> 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;;;;;
+312D;BOPOMOFO LETTER IH;Lo;0;L;;;;;N;;;;;
+3131;HANGUL LETTER KIYEOK;Lo;0;L;<compat> 1100;;;;N;HANGUL LETTER GIYEOG;;;;
+3132;HANGUL LETTER SSANGKIYEOK;Lo;0;L;<compat> 1101;;;;N;HANGUL LETTER SSANG GIYEOG;;;;
+3133;HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<compat> 11AA;;;;N;HANGUL LETTER GIYEOG SIOS;;;;
+3134;HANGUL LETTER NIEUN;Lo;0;L;<compat> 1102;;;;N;;;;;
+3135;HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<compat> 11AC;;;;N;HANGUL LETTER NIEUN JIEUJ;;;;
+3136;HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<compat> 11AD;;;;N;HANGUL LETTER NIEUN HIEUH;;;;
+3137;HANGUL LETTER TIKEUT;Lo;0;L;<compat> 1103;;;;N;HANGUL LETTER DIGEUD;;;;
+3138;HANGUL LETTER SSANGTIKEUT;Lo;0;L;<compat> 1104;;;;N;HANGUL LETTER SSANG DIGEUD;;;;
+3139;HANGUL LETTER RIEUL;Lo;0;L;<compat> 1105;;;;N;HANGUL LETTER LIEUL;;;;
+313A;HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<compat> 11B0;;;;N;HANGUL LETTER LIEUL GIYEOG;;;;
+313B;HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<compat> 11B1;;;;N;HANGUL LETTER LIEUL MIEUM;;;;
+313C;HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<compat> 11B2;;;;N;HANGUL LETTER LIEUL BIEUB;;;;
+313D;HANGUL LETTER RIEUL-SIOS;Lo;0;L;<compat> 11B3;;;;N;HANGUL LETTER LIEUL SIOS;;;;
+313E;HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<compat> 11B4;;;;N;HANGUL LETTER LIEUL TIEUT;;;;
+313F;HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<compat> 11B5;;;;N;HANGUL LETTER LIEUL PIEUP;;;;
+3140;HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<compat> 111A;;;;N;HANGUL LETTER LIEUL HIEUH;;;;
+3141;HANGUL LETTER MIEUM;Lo;0;L;<compat> 1106;;;;N;;;;;
+3142;HANGUL LETTER PIEUP;Lo;0;L;<compat> 1107;;;;N;HANGUL LETTER BIEUB;;;;
+3143;HANGUL LETTER SSANGPIEUP;Lo;0;L;<compat> 1108;;;;N;HANGUL LETTER SSANG BIEUB;;;;
+3144;HANGUL LETTER PIEUP-SIOS;Lo;0;L;<compat> 1121;;;;N;HANGUL LETTER BIEUB SIOS;;;;
+3145;HANGUL LETTER SIOS;Lo;0;L;<compat> 1109;;;;N;;;;;
+3146;HANGUL LETTER SSANGSIOS;Lo;0;L;<compat> 110A;;;;N;HANGUL LETTER SSANG SIOS;;;;
+3147;HANGUL LETTER IEUNG;Lo;0;L;<compat> 110B;;;;N;;;;;
+3148;HANGUL LETTER CIEUC;Lo;0;L;<compat> 110C;;;;N;HANGUL LETTER JIEUJ;;;;
+3149;HANGUL LETTER SSANGCIEUC;Lo;0;L;<compat> 110D;;;;N;HANGUL LETTER SSANG JIEUJ;;;;
+314A;HANGUL LETTER CHIEUCH;Lo;0;L;<compat> 110E;;;;N;HANGUL LETTER CIEUC;;;;
+314B;HANGUL LETTER KHIEUKH;Lo;0;L;<compat> 110F;;;;N;HANGUL LETTER KIYEOK;;;;
+314C;HANGUL LETTER THIEUTH;Lo;0;L;<compat> 1110;;;;N;HANGUL LETTER TIEUT;;;;
+314D;HANGUL LETTER PHIEUPH;Lo;0;L;<compat> 1111;;;;N;HANGUL LETTER PIEUP;;;;
+314E;HANGUL LETTER HIEUH;Lo;0;L;<compat> 1112;;;;N;;;;;
+314F;HANGUL LETTER A;Lo;0;L;<compat> 1161;;;;N;;;;;
+3150;HANGUL LETTER AE;Lo;0;L;<compat> 1162;;;;N;;;;;
+3151;HANGUL LETTER YA;Lo;0;L;<compat> 1163;;;;N;;;;;
+3152;HANGUL LETTER YAE;Lo;0;L;<compat> 1164;;;;N;;;;;
+3153;HANGUL LETTER EO;Lo;0;L;<compat> 1165;;;;N;;;;;
+3154;HANGUL LETTER E;Lo;0;L;<compat> 1166;;;;N;;;;;
+3155;HANGUL LETTER YEO;Lo;0;L;<compat> 1167;;;;N;;;;;
+3156;HANGUL LETTER YE;Lo;0;L;<compat> 1168;;;;N;;;;;
+3157;HANGUL LETTER O;Lo;0;L;<compat> 1169;;;;N;;;;;
+3158;HANGUL LETTER WA;Lo;0;L;<compat> 116A;;;;N;;;;;
+3159;HANGUL LETTER WAE;Lo;0;L;<compat> 116B;;;;N;;;;;
+315A;HANGUL LETTER OE;Lo;0;L;<compat> 116C;;;;N;;;;;
+315B;HANGUL LETTER YO;Lo;0;L;<compat> 116D;;;;N;;;;;
+315C;HANGUL LETTER U;Lo;0;L;<compat> 116E;;;;N;;;;;
+315D;HANGUL LETTER WEO;Lo;0;L;<compat> 116F;;;;N;;;;;
+315E;HANGUL LETTER WE;Lo;0;L;<compat> 1170;;;;N;;;;;
+315F;HANGUL LETTER WI;Lo;0;L;<compat> 1171;;;;N;;;;;
+3160;HANGUL LETTER YU;Lo;0;L;<compat> 1172;;;;N;;;;;
+3161;HANGUL LETTER EU;Lo;0;L;<compat> 1173;;;;N;;;;;
+3162;HANGUL LETTER YI;Lo;0;L;<compat> 1174;;;;N;;;;;
+3163;HANGUL LETTER I;Lo;0;L;<compat> 1175;;;;N;;;;;
+3164;HANGUL FILLER;Lo;0;L;<compat> 1160;;;;N;HANGUL CAE OM;;;;
+3165;HANGUL LETTER SSANGNIEUN;Lo;0;L;<compat> 1114;;;;N;HANGUL LETTER SSANG NIEUN;;;;
+3166;HANGUL LETTER NIEUN-TIKEUT;Lo;0;L;<compat> 1115;;;;N;HANGUL LETTER NIEUN DIGEUD;;;;
+3167;HANGUL LETTER NIEUN-SIOS;Lo;0;L;<compat> 11C7;;;;N;HANGUL LETTER NIEUN SIOS;;;;
+3168;HANGUL LETTER NIEUN-PANSIOS;Lo;0;L;<compat> 11C8;;;;N;HANGUL LETTER NIEUN BAN CHI EUM;;;;
+3169;HANGUL LETTER RIEUL-KIYEOK-SIOS;Lo;0;L;<compat> 11CC;;;;N;HANGUL LETTER LIEUL GIYEOG SIOS;;;;
+316A;HANGUL LETTER RIEUL-TIKEUT;Lo;0;L;<compat> 11CE;;;;N;HANGUL LETTER LIEUL DIGEUD;;;;
+316B;HANGUL LETTER RIEUL-PIEUP-SIOS;Lo;0;L;<compat> 11D3;;;;N;HANGUL LETTER LIEUL BIEUB SIOS;;;;
+316C;HANGUL LETTER RIEUL-PANSIOS;Lo;0;L;<compat> 11D7;;;;N;HANGUL LETTER LIEUL BAN CHI EUM;;;;
+316D;HANGUL LETTER RIEUL-YEORINHIEUH;Lo;0;L;<compat> 11D9;;;;N;HANGUL LETTER LIEUL YEOLIN HIEUH;;;;
+316E;HANGUL LETTER MIEUM-PIEUP;Lo;0;L;<compat> 111C;;;;N;HANGUL LETTER MIEUM BIEUB;;;;
+316F;HANGUL LETTER MIEUM-SIOS;Lo;0;L;<compat> 11DD;;;;N;HANGUL LETTER MIEUM SIOS;;;;
+3170;HANGUL LETTER MIEUM-PANSIOS;Lo;0;L;<compat> 11DF;;;;N;HANGUL LETTER BIEUB BAN CHI EUM;;;;
+3171;HANGUL LETTER KAPYEOUNMIEUM;Lo;0;L;<compat> 111D;;;;N;HANGUL LETTER MIEUM SUN GYEONG EUM;;;;
+3172;HANGUL LETTER PIEUP-KIYEOK;Lo;0;L;<compat> 111E;;;;N;HANGUL LETTER BIEUB GIYEOG;;;;
+3173;HANGUL LETTER PIEUP-TIKEUT;Lo;0;L;<compat> 1120;;;;N;HANGUL LETTER BIEUB DIGEUD;;;;
+3174;HANGUL LETTER PIEUP-SIOS-KIYEOK;Lo;0;L;<compat> 1122;;;;N;HANGUL LETTER BIEUB SIOS GIYEOG;;;;
+3175;HANGUL LETTER PIEUP-SIOS-TIKEUT;Lo;0;L;<compat> 1123;;;;N;HANGUL LETTER BIEUB SIOS DIGEUD;;;;
+3176;HANGUL LETTER PIEUP-CIEUC;Lo;0;L;<compat> 1127;;;;N;HANGUL LETTER BIEUB JIEUJ;;;;
+3177;HANGUL LETTER PIEUP-THIEUTH;Lo;0;L;<compat> 1129;;;;N;HANGUL LETTER BIEUB TIEUT;;;;
+3178;HANGUL LETTER KAPYEOUNPIEUP;Lo;0;L;<compat> 112B;;;;N;HANGUL LETTER BIEUB SUN GYEONG EUM;;;;
+3179;HANGUL LETTER KAPYEOUNSSANGPIEUP;Lo;0;L;<compat> 112C;;;;N;HANGUL LETTER SSANG BIEUB SUN GYEONG EUM;;;;
+317A;HANGUL LETTER SIOS-KIYEOK;Lo;0;L;<compat> 112D;;;;N;HANGUL LETTER SIOS GIYEOG;;;;
+317B;HANGUL LETTER SIOS-NIEUN;Lo;0;L;<compat> 112E;;;;N;HANGUL LETTER SIOS NIEUN;;;;
+317C;HANGUL LETTER SIOS-TIKEUT;Lo;0;L;<compat> 112F;;;;N;HANGUL LETTER SIOS DIGEUD;;;;
+317D;HANGUL LETTER SIOS-PIEUP;Lo;0;L;<compat> 1132;;;;N;HANGUL LETTER SIOS BIEUB;;;;
+317E;HANGUL LETTER SIOS-CIEUC;Lo;0;L;<compat> 1136;;;;N;HANGUL LETTER SIOS JIEUJ;;;;
+317F;HANGUL LETTER PANSIOS;Lo;0;L;<compat> 1140;;;;N;HANGUL LETTER BAN CHI EUM;;;;
+3180;HANGUL LETTER SSANGIEUNG;Lo;0;L;<compat> 1147;;;;N;HANGUL LETTER SSANG IEUNG;;;;
+3181;HANGUL LETTER YESIEUNG;Lo;0;L;<compat> 114C;;;;N;HANGUL LETTER NGIEUNG;;;;
+3182;HANGUL LETTER YESIEUNG-SIOS;Lo;0;L;<compat> 11F1;;;;N;HANGUL LETTER NGIEUNG SIOS;;;;
+3183;HANGUL LETTER YESIEUNG-PANSIOS;Lo;0;L;<compat> 11F2;;;;N;HANGUL LETTER NGIEUNG BAN CHI EUM;;;;
+3184;HANGUL LETTER KAPYEOUNPHIEUPH;Lo;0;L;<compat> 1157;;;;N;HANGUL LETTER PIEUP SUN GYEONG EUM;;;;
+3185;HANGUL LETTER SSANGHIEUH;Lo;0;L;<compat> 1158;;;;N;HANGUL LETTER SSANG HIEUH;;;;
+3186;HANGUL LETTER YEORINHIEUH;Lo;0;L;<compat> 1159;;;;N;HANGUL LETTER YEOLIN HIEUH;;;;
+3187;HANGUL LETTER YO-YA;Lo;0;L;<compat> 1184;;;;N;HANGUL LETTER YOYA;;;;
+3188;HANGUL LETTER YO-YAE;Lo;0;L;<compat> 1185;;;;N;HANGUL LETTER YOYAE;;;;
+3189;HANGUL LETTER YO-I;Lo;0;L;<compat> 1188;;;;N;HANGUL LETTER YOI;;;;
+318A;HANGUL LETTER YU-YEO;Lo;0;L;<compat> 1191;;;;N;HANGUL LETTER YUYEO;;;;
+318B;HANGUL LETTER YU-YE;Lo;0;L;<compat> 1192;;;;N;HANGUL LETTER YUYE;;;;
+318C;HANGUL LETTER YU-I;Lo;0;L;<compat> 1194;;;;N;HANGUL LETTER YUI;;;;
+318D;HANGUL LETTER ARAEA;Lo;0;L;<compat> 119E;;;;N;HANGUL LETTER ALAE A;;;;
+318E;HANGUL LETTER ARAEAE;Lo;0;L;<compat> 11A1;;;;N;HANGUL LETTER ALAE AE;;;;
+3190;IDEOGRAPHIC ANNOTATION LINKING MARK;So;0;L;;;;;N;KANBUN TATETEN;;;;
+3191;IDEOGRAPHIC ANNOTATION REVERSE MARK;So;0;L;;;;;N;KAERITEN RE;;;;
+3192;IDEOGRAPHIC ANNOTATION ONE MARK;No;0;L;<super> 4E00;;;1;N;KAERITEN ITI;;;;
+3193;IDEOGRAPHIC ANNOTATION TWO MARK;No;0;L;<super> 4E8C;;;2;N;KAERITEN NI;;;;
+3194;IDEOGRAPHIC ANNOTATION THREE MARK;No;0;L;<super> 4E09;;;3;N;KAERITEN SAN;;;;
+3195;IDEOGRAPHIC ANNOTATION FOUR MARK;No;0;L;<super> 56DB;;;4;N;KAERITEN SI;;;;
+3196;IDEOGRAPHIC ANNOTATION TOP MARK;So;0;L;<super> 4E0A;;;;N;KAERITEN ZYOU;;;;
+3197;IDEOGRAPHIC ANNOTATION MIDDLE MARK;So;0;L;<super> 4E2D;;;;N;KAERITEN TYUU;;;;
+3198;IDEOGRAPHIC ANNOTATION BOTTOM MARK;So;0;L;<super> 4E0B;;;;N;KAERITEN GE;;;;
+3199;IDEOGRAPHIC ANNOTATION FIRST MARK;So;0;L;<super> 7532;;;;N;KAERITEN KOU;;;;
+319A;IDEOGRAPHIC ANNOTATION SECOND MARK;So;0;L;<super> 4E59;;;;N;KAERITEN OTU;;;;
+319B;IDEOGRAPHIC ANNOTATION THIRD MARK;So;0;L;<super> 4E19;;;;N;KAERITEN HEI;;;;
+319C;IDEOGRAPHIC ANNOTATION FOURTH MARK;So;0;L;<super> 4E01;;;;N;KAERITEN TEI;;;;
+319D;IDEOGRAPHIC ANNOTATION HEAVEN MARK;So;0;L;<super> 5929;;;;N;KAERITEN TEN;;;;
+319E;IDEOGRAPHIC ANNOTATION EARTH MARK;So;0;L;<super> 5730;;;;N;KAERITEN TI;;;;
+319F;IDEOGRAPHIC ANNOTATION MAN MARK;So;0;L;<super> 4EBA;;;;N;KAERITEN ZIN;;;;
+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;;;;;
+31D0;CJK STROKE H;So;0;ON;;;;;N;;;;;
+31D1;CJK STROKE S;So;0;ON;;;;;N;;;;;
+31D2;CJK STROKE P;So;0;ON;;;;;N;;;;;
+31D3;CJK STROKE SP;So;0;ON;;;;;N;;;;;
+31D4;CJK STROKE D;So;0;ON;;;;;N;;;;;
+31D5;CJK STROKE HZ;So;0;ON;;;;;N;;;;;
+31D6;CJK STROKE HG;So;0;ON;;;;;N;;;;;
+31D7;CJK STROKE SZ;So;0;ON;;;;;N;;;;;
+31D8;CJK STROKE SWZ;So;0;ON;;;;;N;;;;;
+31D9;CJK STROKE ST;So;0;ON;;;;;N;;;;;
+31DA;CJK STROKE SG;So;0;ON;;;;;N;;;;;
+31DB;CJK STROKE PD;So;0;ON;;;;;N;;;;;
+31DC;CJK STROKE PZ;So;0;ON;;;;;N;;;;;
+31DD;CJK STROKE TN;So;0;ON;;;;;N;;;;;
+31DE;CJK STROKE SZZ;So;0;ON;;;;;N;;;;;
+31DF;CJK STROKE SWG;So;0;ON;;;;;N;;;;;
+31E0;CJK STROKE HXWG;So;0;ON;;;;;N;;;;;
+31E1;CJK STROKE HZZZG;So;0;ON;;;;;N;;;;;
+31E2;CJK STROKE PG;So;0;ON;;;;;N;;;;;
+31E3;CJK STROKE Q;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;<compat> 0028 1100 0029;;;;N;PARENTHESIZED HANGUL GIYEOG;;;;
+3201;PARENTHESIZED HANGUL NIEUN;So;0;L;<compat> 0028 1102 0029;;;;N;;;;;
+3202;PARENTHESIZED HANGUL TIKEUT;So;0;L;<compat> 0028 1103 0029;;;;N;PARENTHESIZED HANGUL DIGEUD;;;;
+3203;PARENTHESIZED HANGUL RIEUL;So;0;L;<compat> 0028 1105 0029;;;;N;PARENTHESIZED HANGUL LIEUL;;;;
+3204;PARENTHESIZED HANGUL MIEUM;So;0;L;<compat> 0028 1106 0029;;;;N;;;;;
+3205;PARENTHESIZED HANGUL PIEUP;So;0;L;<compat> 0028 1107 0029;;;;N;PARENTHESIZED HANGUL BIEUB;;;;
+3206;PARENTHESIZED HANGUL SIOS;So;0;L;<compat> 0028 1109 0029;;;;N;;;;;
+3207;PARENTHESIZED HANGUL IEUNG;So;0;L;<compat> 0028 110B 0029;;;;N;;;;;
+3208;PARENTHESIZED HANGUL CIEUC;So;0;L;<compat> 0028 110C 0029;;;;N;PARENTHESIZED HANGUL JIEUJ;;;;
+3209;PARENTHESIZED HANGUL CHIEUCH;So;0;L;<compat> 0028 110E 0029;;;;N;PARENTHESIZED HANGUL CIEUC;;;;
+320A;PARENTHESIZED HANGUL KHIEUKH;So;0;L;<compat> 0028 110F 0029;;;;N;PARENTHESIZED HANGUL KIYEOK;;;;
+320B;PARENTHESIZED HANGUL THIEUTH;So;0;L;<compat> 0028 1110 0029;;;;N;PARENTHESIZED HANGUL TIEUT;;;;
+320C;PARENTHESIZED HANGUL PHIEUPH;So;0;L;<compat> 0028 1111 0029;;;;N;PARENTHESIZED HANGUL PIEUP;;;;
+320D;PARENTHESIZED HANGUL HIEUH;So;0;L;<compat> 0028 1112 0029;;;;N;;;;;
+320E;PARENTHESIZED HANGUL KIYEOK A;So;0;L;<compat> 0028 1100 1161 0029;;;;N;PARENTHESIZED HANGUL GA;;;;
+320F;PARENTHESIZED HANGUL NIEUN A;So;0;L;<compat> 0028 1102 1161 0029;;;;N;PARENTHESIZED HANGUL NA;;;;
+3210;PARENTHESIZED HANGUL TIKEUT A;So;0;L;<compat> 0028 1103 1161 0029;;;;N;PARENTHESIZED HANGUL DA;;;;
+3211;PARENTHESIZED HANGUL RIEUL A;So;0;L;<compat> 0028 1105 1161 0029;;;;N;PARENTHESIZED HANGUL LA;;;;
+3212;PARENTHESIZED HANGUL MIEUM A;So;0;L;<compat> 0028 1106 1161 0029;;;;N;PARENTHESIZED HANGUL MA;;;;
+3213;PARENTHESIZED HANGUL PIEUP A;So;0;L;<compat> 0028 1107 1161 0029;;;;N;PARENTHESIZED HANGUL BA;;;;
+3214;PARENTHESIZED HANGUL SIOS A;So;0;L;<compat> 0028 1109 1161 0029;;;;N;PARENTHESIZED HANGUL SA;;;;
+3215;PARENTHESIZED HANGUL IEUNG A;So;0;L;<compat> 0028 110B 1161 0029;;;;N;PARENTHESIZED HANGUL A;;;;
+3216;PARENTHESIZED HANGUL CIEUC A;So;0;L;<compat> 0028 110C 1161 0029;;;;N;PARENTHESIZED HANGUL JA;;;;
+3217;PARENTHESIZED HANGUL CHIEUCH A;So;0;L;<compat> 0028 110E 1161 0029;;;;N;PARENTHESIZED HANGUL CA;;;;
+3218;PARENTHESIZED HANGUL KHIEUKH A;So;0;L;<compat> 0028 110F 1161 0029;;;;N;PARENTHESIZED HANGUL KA;;;;
+3219;PARENTHESIZED HANGUL THIEUTH A;So;0;L;<compat> 0028 1110 1161 0029;;;;N;PARENTHESIZED HANGUL TA;;;;
+321A;PARENTHESIZED HANGUL PHIEUPH A;So;0;L;<compat> 0028 1111 1161 0029;;;;N;PARENTHESIZED HANGUL PA;;;;
+321B;PARENTHESIZED HANGUL HIEUH A;So;0;L;<compat> 0028 1112 1161 0029;;;;N;PARENTHESIZED HANGUL HA;;;;
+321C;PARENTHESIZED HANGUL CIEUC U;So;0;L;<compat> 0028 110C 116E 0029;;;;N;PARENTHESIZED HANGUL JU;;;;
+321D;PARENTHESIZED KOREAN CHARACTER OJEON;So;0;ON;<compat> 0028 110B 1169 110C 1165 11AB 0029;;;;N;;;;;
+321E;PARENTHESIZED KOREAN CHARACTER O HU;So;0;ON;<compat> 0028 110B 1169 1112 116E 0029;;;;N;;;;;
+3220;PARENTHESIZED IDEOGRAPH ONE;No;0;L;<compat> 0028 4E00 0029;;;1;N;;;;;
+3221;PARENTHESIZED IDEOGRAPH TWO;No;0;L;<compat> 0028 4E8C 0029;;;2;N;;;;;
+3222;PARENTHESIZED IDEOGRAPH THREE;No;0;L;<compat> 0028 4E09 0029;;;3;N;;;;;
+3223;PARENTHESIZED IDEOGRAPH FOUR;No;0;L;<compat> 0028 56DB 0029;;;4;N;;;;;
+3224;PARENTHESIZED IDEOGRAPH FIVE;No;0;L;<compat> 0028 4E94 0029;;;5;N;;;;;
+3225;PARENTHESIZED IDEOGRAPH SIX;No;0;L;<compat> 0028 516D 0029;;;6;N;;;;;
+3226;PARENTHESIZED IDEOGRAPH SEVEN;No;0;L;<compat> 0028 4E03 0029;;;7;N;;;;;
+3227;PARENTHESIZED IDEOGRAPH EIGHT;No;0;L;<compat> 0028 516B 0029;;;8;N;;;;;
+3228;PARENTHESIZED IDEOGRAPH NINE;No;0;L;<compat> 0028 4E5D 0029;;;9;N;;;;;
+3229;PARENTHESIZED IDEOGRAPH TEN;No;0;L;<compat> 0028 5341 0029;;;10;N;;;;;
+322A;PARENTHESIZED IDEOGRAPH MOON;So;0;L;<compat> 0028 6708 0029;;;;N;;;;;
+322B;PARENTHESIZED IDEOGRAPH FIRE;So;0;L;<compat> 0028 706B 0029;;;;N;;;;;
+322C;PARENTHESIZED IDEOGRAPH WATER;So;0;L;<compat> 0028 6C34 0029;;;;N;;;;;
+322D;PARENTHESIZED IDEOGRAPH WOOD;So;0;L;<compat> 0028 6728 0029;;;;N;;;;;
+322E;PARENTHESIZED IDEOGRAPH METAL;So;0;L;<compat> 0028 91D1 0029;;;;N;;;;;
+322F;PARENTHESIZED IDEOGRAPH EARTH;So;0;L;<compat> 0028 571F 0029;;;;N;;;;;
+3230;PARENTHESIZED IDEOGRAPH SUN;So;0;L;<compat> 0028 65E5 0029;;;;N;;;;;
+3231;PARENTHESIZED IDEOGRAPH STOCK;So;0;L;<compat> 0028 682A 0029;;;;N;;;;;
+3232;PARENTHESIZED IDEOGRAPH HAVE;So;0;L;<compat> 0028 6709 0029;;;;N;;;;;
+3233;PARENTHESIZED IDEOGRAPH SOCIETY;So;0;L;<compat> 0028 793E 0029;;;;N;;;;;
+3234;PARENTHESIZED IDEOGRAPH NAME;So;0;L;<compat> 0028 540D 0029;;;;N;;;;;
+3235;PARENTHESIZED IDEOGRAPH SPECIAL;So;0;L;<compat> 0028 7279 0029;;;;N;;;;;
+3236;PARENTHESIZED IDEOGRAPH FINANCIAL;So;0;L;<compat> 0028 8CA1 0029;;;;N;;;;;
+3237;PARENTHESIZED IDEOGRAPH CONGRATULATION;So;0;L;<compat> 0028 795D 0029;;;;N;;;;;
+3238;PARENTHESIZED IDEOGRAPH LABOR;So;0;L;<compat> 0028 52B4 0029;;;;N;;;;;
+3239;PARENTHESIZED IDEOGRAPH REPRESENT;So;0;L;<compat> 0028 4EE3 0029;;;;N;;;;;
+323A;PARENTHESIZED IDEOGRAPH CALL;So;0;L;<compat> 0028 547C 0029;;;;N;;;;;
+323B;PARENTHESIZED IDEOGRAPH STUDY;So;0;L;<compat> 0028 5B66 0029;;;;N;;;;;
+323C;PARENTHESIZED IDEOGRAPH SUPERVISE;So;0;L;<compat> 0028 76E3 0029;;;;N;;;;;
+323D;PARENTHESIZED IDEOGRAPH ENTERPRISE;So;0;L;<compat> 0028 4F01 0029;;;;N;;;;;
+323E;PARENTHESIZED IDEOGRAPH RESOURCE;So;0;L;<compat> 0028 8CC7 0029;;;;N;;;;;
+323F;PARENTHESIZED IDEOGRAPH ALLIANCE;So;0;L;<compat> 0028 5354 0029;;;;N;;;;;
+3240;PARENTHESIZED IDEOGRAPH FESTIVAL;So;0;L;<compat> 0028 796D 0029;;;;N;;;;;
+3241;PARENTHESIZED IDEOGRAPH REST;So;0;L;<compat> 0028 4F11 0029;;;;N;;;;;
+3242;PARENTHESIZED IDEOGRAPH SELF;So;0;L;<compat> 0028 81EA 0029;;;;N;;;;;
+3243;PARENTHESIZED IDEOGRAPH REACH;So;0;L;<compat> 0028 81F3 0029;;;;N;;;;;
+3244;CIRCLED IDEOGRAPH QUESTION;So;0;L;<circle> 554F;;;;N;;;;;
+3245;CIRCLED IDEOGRAPH KINDERGARTEN;So;0;L;<circle> 5E7C;;;;N;;;;;
+3246;CIRCLED IDEOGRAPH SCHOOL;So;0;L;<circle> 6587;;;;N;;;;;
+3247;CIRCLED IDEOGRAPH KOTO;So;0;L;<circle> 7B8F;;;;N;;;;;
+3248;CIRCLED NUMBER TEN ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+3249;CIRCLED NUMBER TWENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+324A;CIRCLED NUMBER THIRTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+324B;CIRCLED NUMBER FORTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+324C;CIRCLED NUMBER FIFTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+324D;CIRCLED NUMBER SIXTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+324E;CIRCLED NUMBER SEVENTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+324F;CIRCLED NUMBER EIGHTY ON BLACK SQUARE;So;0;L;;;;;N;;;;;
+3250;PARTNERSHIP SIGN;So;0;ON;<square> 0050 0054 0045;;;;N;;;;;
+3251;CIRCLED NUMBER TWENTY ONE;No;0;ON;<circle> 0032 0031;;;21;N;;;;;
+3252;CIRCLED NUMBER TWENTY TWO;No;0;ON;<circle> 0032 0032;;;22;N;;;;;
+3253;CIRCLED NUMBER TWENTY THREE;No;0;ON;<circle> 0032 0033;;;23;N;;;;;
+3254;CIRCLED NUMBER TWENTY FOUR;No;0;ON;<circle> 0032 0034;;;24;N;;;;;
+3255;CIRCLED NUMBER TWENTY FIVE;No;0;ON;<circle> 0032 0035;;;25;N;;;;;
+3256;CIRCLED NUMBER TWENTY SIX;No;0;ON;<circle> 0032 0036;;;26;N;;;;;
+3257;CIRCLED NUMBER TWENTY SEVEN;No;0;ON;<circle> 0032 0037;;;27;N;;;;;
+3258;CIRCLED NUMBER TWENTY EIGHT;No;0;ON;<circle> 0032 0038;;;28;N;;;;;
+3259;CIRCLED NUMBER TWENTY NINE;No;0;ON;<circle> 0032 0039;;;29;N;;;;;
+325A;CIRCLED NUMBER THIRTY;No;0;ON;<circle> 0033 0030;;;30;N;;;;;
+325B;CIRCLED NUMBER THIRTY ONE;No;0;ON;<circle> 0033 0031;;;31;N;;;;;
+325C;CIRCLED NUMBER THIRTY TWO;No;0;ON;<circle> 0033 0032;;;32;N;;;;;
+325D;CIRCLED NUMBER THIRTY THREE;No;0;ON;<circle> 0033 0033;;;33;N;;;;;
+325E;CIRCLED NUMBER THIRTY FOUR;No;0;ON;<circle> 0033 0034;;;34;N;;;;;
+325F;CIRCLED NUMBER THIRTY FIVE;No;0;ON;<circle> 0033 0035;;;35;N;;;;;
+3260;CIRCLED HANGUL KIYEOK;So;0;L;<circle> 1100;;;;N;CIRCLED HANGUL GIYEOG;;;;
+3261;CIRCLED HANGUL NIEUN;So;0;L;<circle> 1102;;;;N;;;;;
+3262;CIRCLED HANGUL TIKEUT;So;0;L;<circle> 1103;;;;N;CIRCLED HANGUL DIGEUD;;;;
+3263;CIRCLED HANGUL RIEUL;So;0;L;<circle> 1105;;;;N;CIRCLED HANGUL LIEUL;;;;
+3264;CIRCLED HANGUL MIEUM;So;0;L;<circle> 1106;;;;N;;;;;
+3265;CIRCLED HANGUL PIEUP;So;0;L;<circle> 1107;;;;N;CIRCLED HANGUL BIEUB;;;;
+3266;CIRCLED HANGUL SIOS;So;0;L;<circle> 1109;;;;N;;;;;
+3267;CIRCLED HANGUL IEUNG;So;0;L;<circle> 110B;;;;N;;;;;
+3268;CIRCLED HANGUL CIEUC;So;0;L;<circle> 110C;;;;N;CIRCLED HANGUL JIEUJ;;;;
+3269;CIRCLED HANGUL CHIEUCH;So;0;L;<circle> 110E;;;;N;CIRCLED HANGUL CIEUC;;;;
+326A;CIRCLED HANGUL KHIEUKH;So;0;L;<circle> 110F;;;;N;CIRCLED HANGUL KIYEOK;;;;
+326B;CIRCLED HANGUL THIEUTH;So;0;L;<circle> 1110;;;;N;CIRCLED HANGUL TIEUT;;;;
+326C;CIRCLED HANGUL PHIEUPH;So;0;L;<circle> 1111;;;;N;CIRCLED HANGUL PIEUP;;;;
+326D;CIRCLED HANGUL HIEUH;So;0;L;<circle> 1112;;;;N;;;;;
+326E;CIRCLED HANGUL KIYEOK A;So;0;L;<circle> 1100 1161;;;;N;CIRCLED HANGUL GA;;;;
+326F;CIRCLED HANGUL NIEUN A;So;0;L;<circle> 1102 1161;;;;N;CIRCLED HANGUL NA;;;;
+3270;CIRCLED HANGUL TIKEUT A;So;0;L;<circle> 1103 1161;;;;N;CIRCLED HANGUL DA;;;;
+3271;CIRCLED HANGUL RIEUL A;So;0;L;<circle> 1105 1161;;;;N;CIRCLED HANGUL LA;;;;
+3272;CIRCLED HANGUL MIEUM A;So;0;L;<circle> 1106 1161;;;;N;CIRCLED HANGUL MA;;;;
+3273;CIRCLED HANGUL PIEUP A;So;0;L;<circle> 1107 1161;;;;N;CIRCLED HANGUL BA;;;;
+3274;CIRCLED HANGUL SIOS A;So;0;L;<circle> 1109 1161;;;;N;CIRCLED HANGUL SA;;;;
+3275;CIRCLED HANGUL IEUNG A;So;0;L;<circle> 110B 1161;;;;N;CIRCLED HANGUL A;;;;
+3276;CIRCLED HANGUL CIEUC A;So;0;L;<circle> 110C 1161;;;;N;CIRCLED HANGUL JA;;;;
+3277;CIRCLED HANGUL CHIEUCH A;So;0;L;<circle> 110E 1161;;;;N;CIRCLED HANGUL CA;;;;
+3278;CIRCLED HANGUL KHIEUKH A;So;0;L;<circle> 110F 1161;;;;N;CIRCLED HANGUL KA;;;;
+3279;CIRCLED HANGUL THIEUTH A;So;0;L;<circle> 1110 1161;;;;N;CIRCLED HANGUL TA;;;;
+327A;CIRCLED HANGUL PHIEUPH A;So;0;L;<circle> 1111 1161;;;;N;CIRCLED HANGUL PA;;;;
+327B;CIRCLED HANGUL HIEUH A;So;0;L;<circle> 1112 1161;;;;N;CIRCLED HANGUL HA;;;;
+327C;CIRCLED KOREAN CHARACTER CHAMKO;So;0;ON;<circle> 110E 1161 11B7 1100 1169;;;;N;;;;;
+327D;CIRCLED KOREAN CHARACTER JUEUI;So;0;ON;<circle> 110C 116E 110B 1174;;;;N;;;;;
+327E;CIRCLED HANGUL IEUNG U;So;0;ON;<circle> 110B 116E;;;;N;;;;;
+327F;KOREAN STANDARD SYMBOL;So;0;L;;;;;N;;;;;
+3280;CIRCLED IDEOGRAPH ONE;No;0;L;<circle> 4E00;;;1;N;;;;;
+3281;CIRCLED IDEOGRAPH TWO;No;0;L;<circle> 4E8C;;;2;N;;;;;
+3282;CIRCLED IDEOGRAPH THREE;No;0;L;<circle> 4E09;;;3;N;;;;;
+3283;CIRCLED IDEOGRAPH FOUR;No;0;L;<circle> 56DB;;;4;N;;;;;
+3284;CIRCLED IDEOGRAPH FIVE;No;0;L;<circle> 4E94;;;5;N;;;;;
+3285;CIRCLED IDEOGRAPH SIX;No;0;L;<circle> 516D;;;6;N;;;;;
+3286;CIRCLED IDEOGRAPH SEVEN;No;0;L;<circle> 4E03;;;7;N;;;;;
+3287;CIRCLED IDEOGRAPH EIGHT;No;0;L;<circle> 516B;;;8;N;;;;;
+3288;CIRCLED IDEOGRAPH NINE;No;0;L;<circle> 4E5D;;;9;N;;;;;
+3289;CIRCLED IDEOGRAPH TEN;No;0;L;<circle> 5341;;;10;N;;;;;
+328A;CIRCLED IDEOGRAPH MOON;So;0;L;<circle> 6708;;;;N;;;;;
+328B;CIRCLED IDEOGRAPH FIRE;So;0;L;<circle> 706B;;;;N;;;;;
+328C;CIRCLED IDEOGRAPH WATER;So;0;L;<circle> 6C34;;;;N;;;;;
+328D;CIRCLED IDEOGRAPH WOOD;So;0;L;<circle> 6728;;;;N;;;;;
+328E;CIRCLED IDEOGRAPH METAL;So;0;L;<circle> 91D1;;;;N;;;;;
+328F;CIRCLED IDEOGRAPH EARTH;So;0;L;<circle> 571F;;;;N;;;;;
+3290;CIRCLED IDEOGRAPH SUN;So;0;L;<circle> 65E5;;;;N;;;;;
+3291;CIRCLED IDEOGRAPH STOCK;So;0;L;<circle> 682A;;;;N;;;;;
+3292;CIRCLED IDEOGRAPH HAVE;So;0;L;<circle> 6709;;;;N;;;;;
+3293;CIRCLED IDEOGRAPH SOCIETY;So;0;L;<circle> 793E;;;;N;;;;;
+3294;CIRCLED IDEOGRAPH NAME;So;0;L;<circle> 540D;;;;N;;;;;
+3295;CIRCLED IDEOGRAPH SPECIAL;So;0;L;<circle> 7279;;;;N;;;;;
+3296;CIRCLED IDEOGRAPH FINANCIAL;So;0;L;<circle> 8CA1;;;;N;;;;;
+3297;CIRCLED IDEOGRAPH CONGRATULATION;So;0;L;<circle> 795D;;;;N;;;;;
+3298;CIRCLED IDEOGRAPH LABOR;So;0;L;<circle> 52B4;;;;N;;;;;
+3299;CIRCLED IDEOGRAPH SECRET;So;0;L;<circle> 79D8;;;;N;;;;;
+329A;CIRCLED IDEOGRAPH MALE;So;0;L;<circle> 7537;;;;N;;;;;
+329B;CIRCLED IDEOGRAPH FEMALE;So;0;L;<circle> 5973;;;;N;;;;;
+329C;CIRCLED IDEOGRAPH SUITABLE;So;0;L;<circle> 9069;;;;N;;;;;
+329D;CIRCLED IDEOGRAPH EXCELLENT;So;0;L;<circle> 512A;;;;N;;;;;
+329E;CIRCLED IDEOGRAPH PRINT;So;0;L;<circle> 5370;;;;N;;;;;
+329F;CIRCLED IDEOGRAPH ATTENTION;So;0;L;<circle> 6CE8;;;;N;;;;;
+32A0;CIRCLED IDEOGRAPH ITEM;So;0;L;<circle> 9805;;;;N;;;;;
+32A1;CIRCLED IDEOGRAPH REST;So;0;L;<circle> 4F11;;;;N;;;;;
+32A2;CIRCLED IDEOGRAPH COPY;So;0;L;<circle> 5199;;;;N;;;;;
+32A3;CIRCLED IDEOGRAPH CORRECT;So;0;L;<circle> 6B63;;;;N;;;;;
+32A4;CIRCLED IDEOGRAPH HIGH;So;0;L;<circle> 4E0A;;;;N;;;;;
+32A5;CIRCLED IDEOGRAPH CENTRE;So;0;L;<circle> 4E2D;;;;N;CIRCLED IDEOGRAPH CENTER;;;;
+32A6;CIRCLED IDEOGRAPH LOW;So;0;L;<circle> 4E0B;;;;N;;;;;
+32A7;CIRCLED IDEOGRAPH LEFT;So;0;L;<circle> 5DE6;;;;N;;;;;
+32A8;CIRCLED IDEOGRAPH RIGHT;So;0;L;<circle> 53F3;;;;N;;;;;
+32A9;CIRCLED IDEOGRAPH MEDICINE;So;0;L;<circle> 533B;;;;N;;;;;
+32AA;CIRCLED IDEOGRAPH RELIGION;So;0;L;<circle> 5B97;;;;N;;;;;
+32AB;CIRCLED IDEOGRAPH STUDY;So;0;L;<circle> 5B66;;;;N;;;;;
+32AC;CIRCLED IDEOGRAPH SUPERVISE;So;0;L;<circle> 76E3;;;;N;;;;;
+32AD;CIRCLED IDEOGRAPH ENTERPRISE;So;0;L;<circle> 4F01;;;;N;;;;;
+32AE;CIRCLED IDEOGRAPH RESOURCE;So;0;L;<circle> 8CC7;;;;N;;;;;
+32AF;CIRCLED IDEOGRAPH ALLIANCE;So;0;L;<circle> 5354;;;;N;;;;;
+32B0;CIRCLED IDEOGRAPH NIGHT;So;0;L;<circle> 591C;;;;N;;;;;
+32B1;CIRCLED NUMBER THIRTY SIX;No;0;ON;<circle> 0033 0036;;;36;N;;;;;
+32B2;CIRCLED NUMBER THIRTY SEVEN;No;0;ON;<circle> 0033 0037;;;37;N;;;;;
+32B3;CIRCLED NUMBER THIRTY EIGHT;No;0;ON;<circle> 0033 0038;;;38;N;;;;;
+32B4;CIRCLED NUMBER THIRTY NINE;No;0;ON;<circle> 0033 0039;;;39;N;;;;;
+32B5;CIRCLED NUMBER FORTY;No;0;ON;<circle> 0034 0030;;;40;N;;;;;
+32B6;CIRCLED NUMBER FORTY ONE;No;0;ON;<circle> 0034 0031;;;41;N;;;;;
+32B7;CIRCLED NUMBER FORTY TWO;No;0;ON;<circle> 0034 0032;;;42;N;;;;;
+32B8;CIRCLED NUMBER FORTY THREE;No;0;ON;<circle> 0034 0033;;;43;N;;;;;
+32B9;CIRCLED NUMBER FORTY FOUR;No;0;ON;<circle> 0034 0034;;;44;N;;;;;
+32BA;CIRCLED NUMBER FORTY FIVE;No;0;ON;<circle> 0034 0035;;;45;N;;;;;
+32BB;CIRCLED NUMBER FORTY SIX;No;0;ON;<circle> 0034 0036;;;46;N;;;;;
+32BC;CIRCLED NUMBER FORTY SEVEN;No;0;ON;<circle> 0034 0037;;;47;N;;;;;
+32BD;CIRCLED NUMBER FORTY EIGHT;No;0;ON;<circle> 0034 0038;;;48;N;;;;;
+32BE;CIRCLED NUMBER FORTY NINE;No;0;ON;<circle> 0034 0039;;;49;N;;;;;
+32BF;CIRCLED NUMBER FIFTY;No;0;ON;<circle> 0035 0030;;;50;N;;;;;
+32C0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY;So;0;L;<compat> 0031 6708;;;;N;;;;;
+32C1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY;So;0;L;<compat> 0032 6708;;;;N;;;;;
+32C2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH;So;0;L;<compat> 0033 6708;;;;N;;;;;
+32C3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL;So;0;L;<compat> 0034 6708;;;;N;;;;;
+32C4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY;So;0;L;<compat> 0035 6708;;;;N;;;;;
+32C5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE;So;0;L;<compat> 0036 6708;;;;N;;;;;
+32C6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY;So;0;L;<compat> 0037 6708;;;;N;;;;;
+32C7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST;So;0;L;<compat> 0038 6708;;;;N;;;;;
+32C8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER;So;0;L;<compat> 0039 6708;;;;N;;;;;
+32C9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER;So;0;L;<compat> 0031 0030 6708;;;;N;;;;;
+32CA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER;So;0;L;<compat> 0031 0031 6708;;;;N;;;;;
+32CB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER;So;0;L;<compat> 0031 0032 6708;;;;N;;;;;
+32CC;SQUARE HG;So;0;ON;<square> 0048 0067;;;;N;;;;;
+32CD;SQUARE ERG;So;0;ON;<square> 0065 0072 0067;;;;N;;;;;
+32CE;SQUARE EV;So;0;ON;<square> 0065 0056;;;;N;;;;;
+32CF;LIMITED LIABILITY SIGN;So;0;ON;<square> 004C 0054 0044;;;;N;;;;;
+32D0;CIRCLED KATAKANA A;So;0;L;<circle> 30A2;;;;N;;;;;
+32D1;CIRCLED KATAKANA I;So;0;L;<circle> 30A4;;;;N;;;;;
+32D2;CIRCLED KATAKANA U;So;0;L;<circle> 30A6;;;;N;;;;;
+32D3;CIRCLED KATAKANA E;So;0;L;<circle> 30A8;;;;N;;;;;
+32D4;CIRCLED KATAKANA O;So;0;L;<circle> 30AA;;;;N;;;;;
+32D5;CIRCLED KATAKANA KA;So;0;L;<circle> 30AB;;;;N;;;;;
+32D6;CIRCLED KATAKANA KI;So;0;L;<circle> 30AD;;;;N;;;;;
+32D7;CIRCLED KATAKANA KU;So;0;L;<circle> 30AF;;;;N;;;;;
+32D8;CIRCLED KATAKANA KE;So;0;L;<circle> 30B1;;;;N;;;;;
+32D9;CIRCLED KATAKANA KO;So;0;L;<circle> 30B3;;;;N;;;;;
+32DA;CIRCLED KATAKANA SA;So;0;L;<circle> 30B5;;;;N;;;;;
+32DB;CIRCLED KATAKANA SI;So;0;L;<circle> 30B7;;;;N;;;;;
+32DC;CIRCLED KATAKANA SU;So;0;L;<circle> 30B9;;;;N;;;;;
+32DD;CIRCLED KATAKANA SE;So;0;L;<circle> 30BB;;;;N;;;;;
+32DE;CIRCLED KATAKANA SO;So;0;L;<circle> 30BD;;;;N;;;;;
+32DF;CIRCLED KATAKANA TA;So;0;L;<circle> 30BF;;;;N;;;;;
+32E0;CIRCLED KATAKANA TI;So;0;L;<circle> 30C1;;;;N;;;;;
+32E1;CIRCLED KATAKANA TU;So;0;L;<circle> 30C4;;;;N;;;;;
+32E2;CIRCLED KATAKANA TE;So;0;L;<circle> 30C6;;;;N;;;;;
+32E3;CIRCLED KATAKANA TO;So;0;L;<circle> 30C8;;;;N;;;;;
+32E4;CIRCLED KATAKANA NA;So;0;L;<circle> 30CA;;;;N;;;;;
+32E5;CIRCLED KATAKANA NI;So;0;L;<circle> 30CB;;;;N;;;;;
+32E6;CIRCLED KATAKANA NU;So;0;L;<circle> 30CC;;;;N;;;;;
+32E7;CIRCLED KATAKANA NE;So;0;L;<circle> 30CD;;;;N;;;;;
+32E8;CIRCLED KATAKANA NO;So;0;L;<circle> 30CE;;;;N;;;;;
+32E9;CIRCLED KATAKANA HA;So;0;L;<circle> 30CF;;;;N;;;;;
+32EA;CIRCLED KATAKANA HI;So;0;L;<circle> 30D2;;;;N;;;;;
+32EB;CIRCLED KATAKANA HU;So;0;L;<circle> 30D5;;;;N;;;;;
+32EC;CIRCLED KATAKANA HE;So;0;L;<circle> 30D8;;;;N;;;;;
+32ED;CIRCLED KATAKANA HO;So;0;L;<circle> 30DB;;;;N;;;;;
+32EE;CIRCLED KATAKANA MA;So;0;L;<circle> 30DE;;;;N;;;;;
+32EF;CIRCLED KATAKANA MI;So;0;L;<circle> 30DF;;;;N;;;;;
+32F0;CIRCLED KATAKANA MU;So;0;L;<circle> 30E0;;;;N;;;;;
+32F1;CIRCLED KATAKANA ME;So;0;L;<circle> 30E1;;;;N;;;;;
+32F2;CIRCLED KATAKANA MO;So;0;L;<circle> 30E2;;;;N;;;;;
+32F3;CIRCLED KATAKANA YA;So;0;L;<circle> 30E4;;;;N;;;;;
+32F4;CIRCLED KATAKANA YU;So;0;L;<circle> 30E6;;;;N;;;;;
+32F5;CIRCLED KATAKANA YO;So;0;L;<circle> 30E8;;;;N;;;;;
+32F6;CIRCLED KATAKANA RA;So;0;L;<circle> 30E9;;;;N;;;;;
+32F7;CIRCLED KATAKANA RI;So;0;L;<circle> 30EA;;;;N;;;;;
+32F8;CIRCLED KATAKANA RU;So;0;L;<circle> 30EB;;;;N;;;;;
+32F9;CIRCLED KATAKANA RE;So;0;L;<circle> 30EC;;;;N;;;;;
+32FA;CIRCLED KATAKANA RO;So;0;L;<circle> 30ED;;;;N;;;;;
+32FB;CIRCLED KATAKANA WA;So;0;L;<circle> 30EF;;;;N;;;;;
+32FC;CIRCLED KATAKANA WI;So;0;L;<circle> 30F0;;;;N;;;;;
+32FD;CIRCLED KATAKANA WE;So;0;L;<circle> 30F1;;;;N;;;;;
+32FE;CIRCLED KATAKANA WO;So;0;L;<circle> 30F2;;;;N;;;;;
+3300;SQUARE APAATO;So;0;L;<square> 30A2 30D1 30FC 30C8;;;;N;SQUARED APAATO;;;;
+3301;SQUARE ARUHUA;So;0;L;<square> 30A2 30EB 30D5 30A1;;;;N;SQUARED ARUHUA;;;;
+3302;SQUARE ANPEA;So;0;L;<square> 30A2 30F3 30DA 30A2;;;;N;SQUARED ANPEA;;;;
+3303;SQUARE AARU;So;0;L;<square> 30A2 30FC 30EB;;;;N;SQUARED AARU;;;;
+3304;SQUARE ININGU;So;0;L;<square> 30A4 30CB 30F3 30B0;;;;N;SQUARED ININGU;;;;
+3305;SQUARE INTI;So;0;L;<square> 30A4 30F3 30C1;;;;N;SQUARED INTI;;;;
+3306;SQUARE UON;So;0;L;<square> 30A6 30A9 30F3;;;;N;SQUARED UON;;;;
+3307;SQUARE ESUKUUDO;So;0;L;<square> 30A8 30B9 30AF 30FC 30C9;;;;N;SQUARED ESUKUUDO;;;;
+3308;SQUARE EEKAA;So;0;L;<square> 30A8 30FC 30AB 30FC;;;;N;SQUARED EEKAA;;;;
+3309;SQUARE ONSU;So;0;L;<square> 30AA 30F3 30B9;;;;N;SQUARED ONSU;;;;
+330A;SQUARE OOMU;So;0;L;<square> 30AA 30FC 30E0;;;;N;SQUARED OOMU;;;;
+330B;SQUARE KAIRI;So;0;L;<square> 30AB 30A4 30EA;;;;N;SQUARED KAIRI;;;;
+330C;SQUARE KARATTO;So;0;L;<square> 30AB 30E9 30C3 30C8;;;;N;SQUARED KARATTO;;;;
+330D;SQUARE KARORII;So;0;L;<square> 30AB 30ED 30EA 30FC;;;;N;SQUARED KARORII;;;;
+330E;SQUARE GARON;So;0;L;<square> 30AC 30ED 30F3;;;;N;SQUARED GARON;;;;
+330F;SQUARE GANMA;So;0;L;<square> 30AC 30F3 30DE;;;;N;SQUARED GANMA;;;;
+3310;SQUARE GIGA;So;0;L;<square> 30AE 30AC;;;;N;SQUARED GIGA;;;;
+3311;SQUARE GINII;So;0;L;<square> 30AE 30CB 30FC;;;;N;SQUARED GINII;;;;
+3312;SQUARE KYURII;So;0;L;<square> 30AD 30E5 30EA 30FC;;;;N;SQUARED KYURII;;;;
+3313;SQUARE GIRUDAA;So;0;L;<square> 30AE 30EB 30C0 30FC;;;;N;SQUARED GIRUDAA;;;;
+3314;SQUARE KIRO;So;0;L;<square> 30AD 30ED;;;;N;SQUARED KIRO;;;;
+3315;SQUARE KIROGURAMU;So;0;L;<square> 30AD 30ED 30B0 30E9 30E0;;;;N;SQUARED KIROGURAMU;;;;
+3316;SQUARE KIROMEETORU;So;0;L;<square> 30AD 30ED 30E1 30FC 30C8 30EB;;;;N;SQUARED KIROMEETORU;;;;
+3317;SQUARE KIROWATTO;So;0;L;<square> 30AD 30ED 30EF 30C3 30C8;;;;N;SQUARED KIROWATTO;;;;
+3318;SQUARE GURAMU;So;0;L;<square> 30B0 30E9 30E0;;;;N;SQUARED GURAMU;;;;
+3319;SQUARE GURAMUTON;So;0;L;<square> 30B0 30E9 30E0 30C8 30F3;;;;N;SQUARED GURAMUTON;;;;
+331A;SQUARE KURUZEIRO;So;0;L;<square> 30AF 30EB 30BC 30A4 30ED;;;;N;SQUARED KURUZEIRO;;;;
+331B;SQUARE KUROONE;So;0;L;<square> 30AF 30ED 30FC 30CD;;;;N;SQUARED KUROONE;;;;
+331C;SQUARE KEESU;So;0;L;<square> 30B1 30FC 30B9;;;;N;SQUARED KEESU;;;;
+331D;SQUARE KORUNA;So;0;L;<square> 30B3 30EB 30CA;;;;N;SQUARED KORUNA;;;;
+331E;SQUARE KOOPO;So;0;L;<square> 30B3 30FC 30DD;;;;N;SQUARED KOOPO;;;;
+331F;SQUARE SAIKURU;So;0;L;<square> 30B5 30A4 30AF 30EB;;;;N;SQUARED SAIKURU;;;;
+3320;SQUARE SANTIIMU;So;0;L;<square> 30B5 30F3 30C1 30FC 30E0;;;;N;SQUARED SANTIIMU;;;;
+3321;SQUARE SIRINGU;So;0;L;<square> 30B7 30EA 30F3 30B0;;;;N;SQUARED SIRINGU;;;;
+3322;SQUARE SENTI;So;0;L;<square> 30BB 30F3 30C1;;;;N;SQUARED SENTI;;;;
+3323;SQUARE SENTO;So;0;L;<square> 30BB 30F3 30C8;;;;N;SQUARED SENTO;;;;
+3324;SQUARE DAASU;So;0;L;<square> 30C0 30FC 30B9;;;;N;SQUARED DAASU;;;;
+3325;SQUARE DESI;So;0;L;<square> 30C7 30B7;;;;N;SQUARED DESI;;;;
+3326;SQUARE DORU;So;0;L;<square> 30C9 30EB;;;;N;SQUARED DORU;;;;
+3327;SQUARE TON;So;0;L;<square> 30C8 30F3;;;;N;SQUARED TON;;;;
+3328;SQUARE NANO;So;0;L;<square> 30CA 30CE;;;;N;SQUARED NANO;;;;
+3329;SQUARE NOTTO;So;0;L;<square> 30CE 30C3 30C8;;;;N;SQUARED NOTTO;;;;
+332A;SQUARE HAITU;So;0;L;<square> 30CF 30A4 30C4;;;;N;SQUARED HAITU;;;;
+332B;SQUARE PAASENTO;So;0;L;<square> 30D1 30FC 30BB 30F3 30C8;;;;N;SQUARED PAASENTO;;;;
+332C;SQUARE PAATU;So;0;L;<square> 30D1 30FC 30C4;;;;N;SQUARED PAATU;;;;
+332D;SQUARE BAARERU;So;0;L;<square> 30D0 30FC 30EC 30EB;;;;N;SQUARED BAARERU;;;;
+332E;SQUARE PIASUTORU;So;0;L;<square> 30D4 30A2 30B9 30C8 30EB;;;;N;SQUARED PIASUTORU;;;;
+332F;SQUARE PIKURU;So;0;L;<square> 30D4 30AF 30EB;;;;N;SQUARED PIKURU;;;;
+3330;SQUARE PIKO;So;0;L;<square> 30D4 30B3;;;;N;SQUARED PIKO;;;;
+3331;SQUARE BIRU;So;0;L;<square> 30D3 30EB;;;;N;SQUARED BIRU;;;;
+3332;SQUARE HUARADDO;So;0;L;<square> 30D5 30A1 30E9 30C3 30C9;;;;N;SQUARED HUARADDO;;;;
+3333;SQUARE HUIITO;So;0;L;<square> 30D5 30A3 30FC 30C8;;;;N;SQUARED HUIITO;;;;
+3334;SQUARE BUSSYERU;So;0;L;<square> 30D6 30C3 30B7 30A7 30EB;;;;N;SQUARED BUSSYERU;;;;
+3335;SQUARE HURAN;So;0;L;<square> 30D5 30E9 30F3;;;;N;SQUARED HURAN;;;;
+3336;SQUARE HEKUTAARU;So;0;L;<square> 30D8 30AF 30BF 30FC 30EB;;;;N;SQUARED HEKUTAARU;;;;
+3337;SQUARE PESO;So;0;L;<square> 30DA 30BD;;;;N;SQUARED PESO;;;;
+3338;SQUARE PENIHI;So;0;L;<square> 30DA 30CB 30D2;;;;N;SQUARED PENIHI;;;;
+3339;SQUARE HERUTU;So;0;L;<square> 30D8 30EB 30C4;;;;N;SQUARED HERUTU;;;;
+333A;SQUARE PENSU;So;0;L;<square> 30DA 30F3 30B9;;;;N;SQUARED PENSU;;;;
+333B;SQUARE PEEZI;So;0;L;<square> 30DA 30FC 30B8;;;;N;SQUARED PEEZI;;;;
+333C;SQUARE BEETA;So;0;L;<square> 30D9 30FC 30BF;;;;N;SQUARED BEETA;;;;
+333D;SQUARE POINTO;So;0;L;<square> 30DD 30A4 30F3 30C8;;;;N;SQUARED POINTO;;;;
+333E;SQUARE BORUTO;So;0;L;<square> 30DC 30EB 30C8;;;;N;SQUARED BORUTO;;;;
+333F;SQUARE HON;So;0;L;<square> 30DB 30F3;;;;N;SQUARED HON;;;;
+3340;SQUARE PONDO;So;0;L;<square> 30DD 30F3 30C9;;;;N;SQUARED PONDO;;;;
+3341;SQUARE HOORU;So;0;L;<square> 30DB 30FC 30EB;;;;N;SQUARED HOORU;;;;
+3342;SQUARE HOON;So;0;L;<square> 30DB 30FC 30F3;;;;N;SQUARED HOON;;;;
+3343;SQUARE MAIKURO;So;0;L;<square> 30DE 30A4 30AF 30ED;;;;N;SQUARED MAIKURO;;;;
+3344;SQUARE MAIRU;So;0;L;<square> 30DE 30A4 30EB;;;;N;SQUARED MAIRU;;;;
+3345;SQUARE MAHHA;So;0;L;<square> 30DE 30C3 30CF;;;;N;SQUARED MAHHA;;;;
+3346;SQUARE MARUKU;So;0;L;<square> 30DE 30EB 30AF;;;;N;SQUARED MARUKU;;;;
+3347;SQUARE MANSYON;So;0;L;<square> 30DE 30F3 30B7 30E7 30F3;;;;N;SQUARED MANSYON;;;;
+3348;SQUARE MIKURON;So;0;L;<square> 30DF 30AF 30ED 30F3;;;;N;SQUARED MIKURON;;;;
+3349;SQUARE MIRI;So;0;L;<square> 30DF 30EA;;;;N;SQUARED MIRI;;;;
+334A;SQUARE MIRIBAARU;So;0;L;<square> 30DF 30EA 30D0 30FC 30EB;;;;N;SQUARED MIRIBAARU;;;;
+334B;SQUARE MEGA;So;0;L;<square> 30E1 30AC;;;;N;SQUARED MEGA;;;;
+334C;SQUARE MEGATON;So;0;L;<square> 30E1 30AC 30C8 30F3;;;;N;SQUARED MEGATON;;;;
+334D;SQUARE MEETORU;So;0;L;<square> 30E1 30FC 30C8 30EB;;;;N;SQUARED MEETORU;;;;
+334E;SQUARE YAADO;So;0;L;<square> 30E4 30FC 30C9;;;;N;SQUARED YAADO;;;;
+334F;SQUARE YAARU;So;0;L;<square> 30E4 30FC 30EB;;;;N;SQUARED YAARU;;;;
+3350;SQUARE YUAN;So;0;L;<square> 30E6 30A2 30F3;;;;N;SQUARED YUAN;;;;
+3351;SQUARE RITTORU;So;0;L;<square> 30EA 30C3 30C8 30EB;;;;N;SQUARED RITTORU;;;;
+3352;SQUARE RIRA;So;0;L;<square> 30EA 30E9;;;;N;SQUARED RIRA;;;;
+3353;SQUARE RUPII;So;0;L;<square> 30EB 30D4 30FC;;;;N;SQUARED RUPII;;;;
+3354;SQUARE RUUBURU;So;0;L;<square> 30EB 30FC 30D6 30EB;;;;N;SQUARED RUUBURU;;;;
+3355;SQUARE REMU;So;0;L;<square> 30EC 30E0;;;;N;SQUARED REMU;;;;
+3356;SQUARE RENTOGEN;So;0;L;<square> 30EC 30F3 30C8 30B2 30F3;;;;N;SQUARED RENTOGEN;;;;
+3357;SQUARE WATTO;So;0;L;<square> 30EF 30C3 30C8;;;;N;SQUARED WATTO;;;;
+3358;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO;So;0;L;<compat> 0030 70B9;;;;N;;;;;
+3359;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE;So;0;L;<compat> 0031 70B9;;;;N;;;;;
+335A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO;So;0;L;<compat> 0032 70B9;;;;N;;;;;
+335B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE;So;0;L;<compat> 0033 70B9;;;;N;;;;;
+335C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR;So;0;L;<compat> 0034 70B9;;;;N;;;;;
+335D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE;So;0;L;<compat> 0035 70B9;;;;N;;;;;
+335E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX;So;0;L;<compat> 0036 70B9;;;;N;;;;;
+335F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN;So;0;L;<compat> 0037 70B9;;;;N;;;;;
+3360;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT;So;0;L;<compat> 0038 70B9;;;;N;;;;;
+3361;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE;So;0;L;<compat> 0039 70B9;;;;N;;;;;
+3362;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN;So;0;L;<compat> 0031 0030 70B9;;;;N;;;;;
+3363;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN;So;0;L;<compat> 0031 0031 70B9;;;;N;;;;;
+3364;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE;So;0;L;<compat> 0031 0032 70B9;;;;N;;;;;
+3365;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN;So;0;L;<compat> 0031 0033 70B9;;;;N;;;;;
+3366;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN;So;0;L;<compat> 0031 0034 70B9;;;;N;;;;;
+3367;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN;So;0;L;<compat> 0031 0035 70B9;;;;N;;;;;
+3368;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN;So;0;L;<compat> 0031 0036 70B9;;;;N;;;;;
+3369;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN;So;0;L;<compat> 0031 0037 70B9;;;;N;;;;;
+336A;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN;So;0;L;<compat> 0031 0038 70B9;;;;N;;;;;
+336B;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN;So;0;L;<compat> 0031 0039 70B9;;;;N;;;;;
+336C;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY;So;0;L;<compat> 0032 0030 70B9;;;;N;;;;;
+336D;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE;So;0;L;<compat> 0032 0031 70B9;;;;N;;;;;
+336E;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO;So;0;L;<compat> 0032 0032 70B9;;;;N;;;;;
+336F;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE;So;0;L;<compat> 0032 0033 70B9;;;;N;;;;;
+3370;IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR;So;0;L;<compat> 0032 0034 70B9;;;;N;;;;;
+3371;SQUARE HPA;So;0;L;<square> 0068 0050 0061;;;;N;;;;;
+3372;SQUARE DA;So;0;L;<square> 0064 0061;;;;N;;;;;
+3373;SQUARE AU;So;0;L;<square> 0041 0055;;;;N;;;;;
+3374;SQUARE BAR;So;0;L;<square> 0062 0061 0072;;;;N;;;;;
+3375;SQUARE OV;So;0;L;<square> 006F 0056;;;;N;;;;;
+3376;SQUARE PC;So;0;L;<square> 0070 0063;;;;N;;;;;
+3377;SQUARE DM;So;0;ON;<square> 0064 006D;;;;N;;;;;
+3378;SQUARE DM SQUARED;So;0;ON;<square> 0064 006D 00B2;;;;N;;;;;
+3379;SQUARE DM CUBED;So;0;ON;<square> 0064 006D 00B3;;;;N;;;;;
+337A;SQUARE IU;So;0;ON;<square> 0049 0055;;;;N;;;;;
+337B;SQUARE ERA NAME HEISEI;So;0;L;<square> 5E73 6210;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME HEISEI;;;;
+337C;SQUARE ERA NAME SYOUWA;So;0;L;<square> 662D 548C;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME SYOUWA;;;;
+337D;SQUARE ERA NAME TAISYOU;So;0;L;<square> 5927 6B63;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME TAISYOU;;;;
+337E;SQUARE ERA NAME MEIZI;So;0;L;<square> 660E 6CBB;;;;N;SQUARED TWO IDEOGRAPHS ERA NAME MEIZI;;;;
+337F;SQUARE CORPORATION;So;0;L;<square> 682A 5F0F 4F1A 793E;;;;N;SQUARED FOUR IDEOGRAPHS CORPORATION;;;;
+3380;SQUARE PA AMPS;So;0;L;<square> 0070 0041;;;;N;SQUARED PA AMPS;;;;
+3381;SQUARE NA;So;0;L;<square> 006E 0041;;;;N;SQUARED NA;;;;
+3382;SQUARE MU A;So;0;L;<square> 03BC 0041;;;;N;SQUARED MU A;;;;
+3383;SQUARE MA;So;0;L;<square> 006D 0041;;;;N;SQUARED MA;;;;
+3384;SQUARE KA;So;0;L;<square> 006B 0041;;;;N;SQUARED KA;;;;
+3385;SQUARE KB;So;0;L;<square> 004B 0042;;;;N;SQUARED KB;;;;
+3386;SQUARE MB;So;0;L;<square> 004D 0042;;;;N;SQUARED MB;;;;
+3387;SQUARE GB;So;0;L;<square> 0047 0042;;;;N;SQUARED GB;;;;
+3388;SQUARE CAL;So;0;L;<square> 0063 0061 006C;;;;N;SQUARED CAL;;;;
+3389;SQUARE KCAL;So;0;L;<square> 006B 0063 0061 006C;;;;N;SQUARED KCAL;;;;
+338A;SQUARE PF;So;0;L;<square> 0070 0046;;;;N;SQUARED PF;;;;
+338B;SQUARE NF;So;0;L;<square> 006E 0046;;;;N;SQUARED NF;;;;
+338C;SQUARE MU F;So;0;L;<square> 03BC 0046;;;;N;SQUARED MU F;;;;
+338D;SQUARE MU G;So;0;L;<square> 03BC 0067;;;;N;SQUARED MU G;;;;
+338E;SQUARE MG;So;0;L;<square> 006D 0067;;;;N;SQUARED MG;;;;
+338F;SQUARE KG;So;0;L;<square> 006B 0067;;;;N;SQUARED KG;;;;
+3390;SQUARE HZ;So;0;L;<square> 0048 007A;;;;N;SQUARED HZ;;;;
+3391;SQUARE KHZ;So;0;L;<square> 006B 0048 007A;;;;N;SQUARED KHZ;;;;
+3392;SQUARE MHZ;So;0;L;<square> 004D 0048 007A;;;;N;SQUARED MHZ;;;;
+3393;SQUARE GHZ;So;0;L;<square> 0047 0048 007A;;;;N;SQUARED GHZ;;;;
+3394;SQUARE THZ;So;0;L;<square> 0054 0048 007A;;;;N;SQUARED THZ;;;;
+3395;SQUARE MU L;So;0;L;<square> 03BC 2113;;;;N;SQUARED MU L;;;;
+3396;SQUARE ML;So;0;L;<square> 006D 2113;;;;N;SQUARED ML;;;;
+3397;SQUARE DL;So;0;L;<square> 0064 2113;;;;N;SQUARED DL;;;;
+3398;SQUARE KL;So;0;L;<square> 006B 2113;;;;N;SQUARED KL;;;;
+3399;SQUARE FM;So;0;L;<square> 0066 006D;;;;N;SQUARED FM;;;;
+339A;SQUARE NM;So;0;L;<square> 006E 006D;;;;N;SQUARED NM;;;;
+339B;SQUARE MU M;So;0;L;<square> 03BC 006D;;;;N;SQUARED MU M;;;;
+339C;SQUARE MM;So;0;L;<square> 006D 006D;;;;N;SQUARED MM;;;;
+339D;SQUARE CM;So;0;L;<square> 0063 006D;;;;N;SQUARED CM;;;;
+339E;SQUARE KM;So;0;L;<square> 006B 006D;;;;N;SQUARED KM;;;;
+339F;SQUARE MM SQUARED;So;0;L;<square> 006D 006D 00B2;;;;N;SQUARED MM SQUARED;;;;
+33A0;SQUARE CM SQUARED;So;0;L;<square> 0063 006D 00B2;;;;N;SQUARED CM SQUARED;;;;
+33A1;SQUARE M SQUARED;So;0;L;<square> 006D 00B2;;;;N;SQUARED M SQUARED;;;;
+33A2;SQUARE KM SQUARED;So;0;L;<square> 006B 006D 00B2;;;;N;SQUARED KM SQUARED;;;;
+33A3;SQUARE MM CUBED;So;0;L;<square> 006D 006D 00B3;;;;N;SQUARED MM CUBED;;;;
+33A4;SQUARE CM CUBED;So;0;L;<square> 0063 006D 00B3;;;;N;SQUARED CM CUBED;;;;
+33A5;SQUARE M CUBED;So;0;L;<square> 006D 00B3;;;;N;SQUARED M CUBED;;;;
+33A6;SQUARE KM CUBED;So;0;L;<square> 006B 006D 00B3;;;;N;SQUARED KM CUBED;;;;
+33A7;SQUARE M OVER S;So;0;L;<square> 006D 2215 0073;;;;N;SQUARED M OVER S;;;;
+33A8;SQUARE M OVER S SQUARED;So;0;L;<square> 006D 2215 0073 00B2;;;;N;SQUARED M OVER S SQUARED;;;;
+33A9;SQUARE PA;So;0;L;<square> 0050 0061;;;;N;SQUARED PA;;;;
+33AA;SQUARE KPA;So;0;L;<square> 006B 0050 0061;;;;N;SQUARED KPA;;;;
+33AB;SQUARE MPA;So;0;L;<square> 004D 0050 0061;;;;N;SQUARED MPA;;;;
+33AC;SQUARE GPA;So;0;L;<square> 0047 0050 0061;;;;N;SQUARED GPA;;;;
+33AD;SQUARE RAD;So;0;L;<square> 0072 0061 0064;;;;N;SQUARED RAD;;;;
+33AE;SQUARE RAD OVER S;So;0;L;<square> 0072 0061 0064 2215 0073;;;;N;SQUARED RAD OVER S;;;;
+33AF;SQUARE RAD OVER S SQUARED;So;0;L;<square> 0072 0061 0064 2215 0073 00B2;;;;N;SQUARED RAD OVER S SQUARED;;;;
+33B0;SQUARE PS;So;0;L;<square> 0070 0073;;;;N;SQUARED PS;;;;
+33B1;SQUARE NS;So;0;L;<square> 006E 0073;;;;N;SQUARED NS;;;;
+33B2;SQUARE MU S;So;0;L;<square> 03BC 0073;;;;N;SQUARED MU S;;;;
+33B3;SQUARE MS;So;0;L;<square> 006D 0073;;;;N;SQUARED MS;;;;
+33B4;SQUARE PV;So;0;L;<square> 0070 0056;;;;N;SQUARED PV;;;;
+33B5;SQUARE NV;So;0;L;<square> 006E 0056;;;;N;SQUARED NV;;;;
+33B6;SQUARE MU V;So;0;L;<square> 03BC 0056;;;;N;SQUARED MU V;;;;
+33B7;SQUARE MV;So;0;L;<square> 006D 0056;;;;N;SQUARED MV;;;;
+33B8;SQUARE KV;So;0;L;<square> 006B 0056;;;;N;SQUARED KV;;;;
+33B9;SQUARE MV MEGA;So;0;L;<square> 004D 0056;;;;N;SQUARED MV MEGA;;;;
+33BA;SQUARE PW;So;0;L;<square> 0070 0057;;;;N;SQUARED PW;;;;
+33BB;SQUARE NW;So;0;L;<square> 006E 0057;;;;N;SQUARED NW;;;;
+33BC;SQUARE MU W;So;0;L;<square> 03BC 0057;;;;N;SQUARED MU W;;;;
+33BD;SQUARE MW;So;0;L;<square> 006D 0057;;;;N;SQUARED MW;;;;
+33BE;SQUARE KW;So;0;L;<square> 006B 0057;;;;N;SQUARED KW;;;;
+33BF;SQUARE MW MEGA;So;0;L;<square> 004D 0057;;;;N;SQUARED MW MEGA;;;;
+33C0;SQUARE K OHM;So;0;L;<square> 006B 03A9;;;;N;SQUARED K OHM;;;;
+33C1;SQUARE M OHM;So;0;L;<square> 004D 03A9;;;;N;SQUARED M OHM;;;;
+33C2;SQUARE AM;So;0;L;<square> 0061 002E 006D 002E;;;;N;SQUARED AM;;;;
+33C3;SQUARE BQ;So;0;L;<square> 0042 0071;;;;N;SQUARED BQ;;;;
+33C4;SQUARE CC;So;0;L;<square> 0063 0063;;;;N;SQUARED CC;;;;
+33C5;SQUARE CD;So;0;L;<square> 0063 0064;;;;N;SQUARED CD;;;;
+33C6;SQUARE C OVER KG;So;0;L;<square> 0043 2215 006B 0067;;;;N;SQUARED C OVER KG;;;;
+33C7;SQUARE CO;So;0;L;<square> 0043 006F 002E;;;;N;SQUARED CO;;;;
+33C8;SQUARE DB;So;0;L;<square> 0064 0042;;;;N;SQUARED DB;;;;
+33C9;SQUARE GY;So;0;L;<square> 0047 0079;;;;N;SQUARED GY;;;;
+33CA;SQUARE HA;So;0;L;<square> 0068 0061;;;;N;SQUARED HA;;;;
+33CB;SQUARE HP;So;0;L;<square> 0048 0050;;;;N;SQUARED HP;;;;
+33CC;SQUARE IN;So;0;L;<square> 0069 006E;;;;N;SQUARED IN;;;;
+33CD;SQUARE KK;So;0;L;<square> 004B 004B;;;;N;SQUARED KK;;;;
+33CE;SQUARE KM CAPITAL;So;0;L;<square> 004B 004D;;;;N;SQUARED KM CAPITAL;;;;
+33CF;SQUARE KT;So;0;L;<square> 006B 0074;;;;N;SQUARED KT;;;;
+33D0;SQUARE LM;So;0;L;<square> 006C 006D;;;;N;SQUARED LM;;;;
+33D1;SQUARE LN;So;0;L;<square> 006C 006E;;;;N;SQUARED LN;;;;
+33D2;SQUARE LOG;So;0;L;<square> 006C 006F 0067;;;;N;SQUARED LOG;;;;
+33D3;SQUARE LX;So;0;L;<square> 006C 0078;;;;N;SQUARED LX;;;;
+33D4;SQUARE MB SMALL;So;0;L;<square> 006D 0062;;;;N;SQUARED MB SMALL;;;;
+33D5;SQUARE MIL;So;0;L;<square> 006D 0069 006C;;;;N;SQUARED MIL;;;;
+33D6;SQUARE MOL;So;0;L;<square> 006D 006F 006C;;;;N;SQUARED MOL;;;;
+33D7;SQUARE PH;So;0;L;<square> 0050 0048;;;;N;SQUARED PH;;;;
+33D8;SQUARE PM;So;0;L;<square> 0070 002E 006D 002E;;;;N;SQUARED PM;;;;
+33D9;SQUARE PPM;So;0;L;<square> 0050 0050 004D;;;;N;SQUARED PPM;;;;
+33DA;SQUARE PR;So;0;L;<square> 0050 0052;;;;N;SQUARED PR;;;;
+33DB;SQUARE SR;So;0;L;<square> 0073 0072;;;;N;SQUARED SR;;;;
+33DC;SQUARE SV;So;0;L;<square> 0053 0076;;;;N;SQUARED SV;;;;
+33DD;SQUARE WB;So;0;L;<square> 0057 0062;;;;N;SQUARED WB;;;;
+33DE;SQUARE V OVER M;So;0;ON;<square> 0056 2215 006D;;;;N;;;;;
+33DF;SQUARE A OVER M;So;0;ON;<square> 0041 2215 006D;;;;N;;;;;
+33E0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE;So;0;L;<compat> 0031 65E5;;;;N;;;;;
+33E1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO;So;0;L;<compat> 0032 65E5;;;;N;;;;;
+33E2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE;So;0;L;<compat> 0033 65E5;;;;N;;;;;
+33E3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR;So;0;L;<compat> 0034 65E5;;;;N;;;;;
+33E4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE;So;0;L;<compat> 0035 65E5;;;;N;;;;;
+33E5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX;So;0;L;<compat> 0036 65E5;;;;N;;;;;
+33E6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN;So;0;L;<compat> 0037 65E5;;;;N;;;;;
+33E7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT;So;0;L;<compat> 0038 65E5;;;;N;;;;;
+33E8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE;So;0;L;<compat> 0039 65E5;;;;N;;;;;
+33E9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN;So;0;L;<compat> 0031 0030 65E5;;;;N;;;;;
+33EA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN;So;0;L;<compat> 0031 0031 65E5;;;;N;;;;;
+33EB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE;So;0;L;<compat> 0031 0032 65E5;;;;N;;;;;
+33EC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN;So;0;L;<compat> 0031 0033 65E5;;;;N;;;;;
+33ED;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN;So;0;L;<compat> 0031 0034 65E5;;;;N;;;;;
+33EE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN;So;0;L;<compat> 0031 0035 65E5;;;;N;;;;;
+33EF;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN;So;0;L;<compat> 0031 0036 65E5;;;;N;;;;;
+33F0;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN;So;0;L;<compat> 0031 0037 65E5;;;;N;;;;;
+33F1;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN;So;0;L;<compat> 0031 0038 65E5;;;;N;;;;;
+33F2;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN;So;0;L;<compat> 0031 0039 65E5;;;;N;;;;;
+33F3;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY;So;0;L;<compat> 0032 0030 65E5;;;;N;;;;;
+33F4;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE;So;0;L;<compat> 0032 0031 65E5;;;;N;;;;;
+33F5;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO;So;0;L;<compat> 0032 0032 65E5;;;;N;;;;;
+33F6;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE;So;0;L;<compat> 0032 0033 65E5;;;;N;;;;;
+33F7;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR;So;0;L;<compat> 0032 0034 65E5;;;;N;;;;;
+33F8;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE;So;0;L;<compat> 0032 0035 65E5;;;;N;;;;;
+33F9;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX;So;0;L;<compat> 0032 0036 65E5;;;;N;;;;;
+33FA;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN;So;0;L;<compat> 0032 0037 65E5;;;;N;;;;;
+33FB;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT;So;0;L;<compat> 0032 0038 65E5;;;;N;;;;;
+33FC;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE;So;0;L;<compat> 0032 0039 65E5;;;;N;;;;;
+33FD;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY;So;0;L;<compat> 0033 0030 65E5;;;;N;;;;;
+33FE;IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE;So;0;L;<compat> 0033 0031 65E5;;;;N;;;;;
+33FF;SQUARE GAL;So;0;ON;<square> 0067 0061 006C;;;;N;;;;;
+3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;;
+4DB5;<CJK Ideograph Extension A, Last>;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;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
+9FCB;<CJK Ideograph, Last>;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;;;;;
+A4D0;LISU LETTER BA;Lo;0;L;;;;;N;;;;;
+A4D1;LISU LETTER PA;Lo;0;L;;;;;N;;;;;
+A4D2;LISU LETTER PHA;Lo;0;L;;;;;N;;;;;
+A4D3;LISU LETTER DA;Lo;0;L;;;;;N;;;;;
+A4D4;LISU LETTER TA;Lo;0;L;;;;;N;;;;;
+A4D5;LISU LETTER THA;Lo;0;L;;;;;N;;;;;
+A4D6;LISU LETTER GA;Lo;0;L;;;;;N;;;;;
+A4D7;LISU LETTER KA;Lo;0;L;;;;;N;;;;;
+A4D8;LISU LETTER KHA;Lo;0;L;;;;;N;;;;;
+A4D9;LISU LETTER JA;Lo;0;L;;;;;N;;;;;
+A4DA;LISU LETTER CA;Lo;0;L;;;;;N;;;;;
+A4DB;LISU LETTER CHA;Lo;0;L;;;;;N;;;;;
+A4DC;LISU LETTER DZA;Lo;0;L;;;;;N;;;;;
+A4DD;LISU LETTER TSA;Lo;0;L;;;;;N;;;;;
+A4DE;LISU LETTER TSHA;Lo;0;L;;;;;N;;;;;
+A4DF;LISU LETTER MA;Lo;0;L;;;;;N;;;;;
+A4E0;LISU LETTER NA;Lo;0;L;;;;;N;;;;;
+A4E1;LISU LETTER LA;Lo;0;L;;;;;N;;;;;
+A4E2;LISU LETTER SA;Lo;0;L;;;;;N;;;;;
+A4E3;LISU LETTER ZHA;Lo;0;L;;;;;N;;;;;
+A4E4;LISU LETTER ZA;Lo;0;L;;;;;N;;;;;
+A4E5;LISU LETTER NGA;Lo;0;L;;;;;N;;;;;
+A4E6;LISU LETTER HA;Lo;0;L;;;;;N;;;;;
+A4E7;LISU LETTER XA;Lo;0;L;;;;;N;;;;;
+A4E8;LISU LETTER HHA;Lo;0;L;;;;;N;;;;;
+A4E9;LISU LETTER FA;Lo;0;L;;;;;N;;;;;
+A4EA;LISU LETTER WA;Lo;0;L;;;;;N;;;;;
+A4EB;LISU LETTER SHA;Lo;0;L;;;;;N;;;;;
+A4EC;LISU LETTER YA;Lo;0;L;;;;;N;;;;;
+A4ED;LISU LETTER GHA;Lo;0;L;;;;;N;;;;;
+A4EE;LISU LETTER A;Lo;0;L;;;;;N;;;;;
+A4EF;LISU LETTER AE;Lo;0;L;;;;;N;;;;;
+A4F0;LISU LETTER E;Lo;0;L;;;;;N;;;;;
+A4F1;LISU LETTER EU;Lo;0;L;;;;;N;;;;;
+A4F2;LISU LETTER I;Lo;0;L;;;;;N;;;;;
+A4F3;LISU LETTER O;Lo;0;L;;;;;N;;;;;
+A4F4;LISU LETTER U;Lo;0;L;;;;;N;;;;;
+A4F5;LISU LETTER UE;Lo;0;L;;;;;N;;;;;
+A4F6;LISU LETTER UH;Lo;0;L;;;;;N;;;;;
+A4F7;LISU LETTER OE;Lo;0;L;;;;;N;;;;;
+A4F8;LISU LETTER TONE MYA TI;Lm;0;L;;;;;N;;;;;
+A4F9;LISU LETTER TONE NA PO;Lm;0;L;;;;;N;;;;;
+A4FA;LISU LETTER TONE MYA CYA;Lm;0;L;;;;;N;;;;;
+A4FB;LISU LETTER TONE MYA BO;Lm;0;L;;;;;N;;;;;
+A4FC;LISU LETTER TONE MYA NA;Lm;0;L;;;;;N;;;;;
+A4FD;LISU LETTER TONE MYA JEU;Lm;0;L;;;;;N;;;;;
+A4FE;LISU PUNCTUATION COMMA;Po;0;L;;;;;N;;;;;
+A4FF;LISU PUNCTUATION FULL STOP;Po;0;L;;;;;N;;;;;
+A500;VAI SYLLABLE EE;Lo;0;L;;;;;N;;;;;
+A501;VAI SYLLABLE EEN;Lo;0;L;;;;;N;;;;;
+A502;VAI SYLLABLE HEE;Lo;0;L;;;;;N;;;;;
+A503;VAI SYLLABLE WEE;Lo;0;L;;;;;N;;;;;
+A504;VAI SYLLABLE WEEN;Lo;0;L;;;;;N;;;;;
+A505;VAI SYLLABLE PEE;Lo;0;L;;;;;N;;;;;
+A506;VAI SYLLABLE BHEE;Lo;0;L;;;;;N;;;;;
+A507;VAI SYLLABLE BEE;Lo;0;L;;;;;N;;;;;
+A508;VAI SYLLABLE MBEE;Lo;0;L;;;;;N;;;;;
+A509;VAI SYLLABLE KPEE;Lo;0;L;;;;;N;;;;;
+A50A;VAI SYLLABLE MGBEE;Lo;0;L;;;;;N;;;;;
+A50B;VAI SYLLABLE GBEE;Lo;0;L;;;;;N;;;;;
+A50C;VAI SYLLABLE FEE;Lo;0;L;;;;;N;;;;;
+A50D;VAI SYLLABLE VEE;Lo;0;L;;;;;N;;;;;
+A50E;VAI SYLLABLE TEE;Lo;0;L;;;;;N;;;;;
+A50F;VAI SYLLABLE THEE;Lo;0;L;;;;;N;;;;;
+A510;VAI SYLLABLE DHEE;Lo;0;L;;;;;N;;;;;
+A511;VAI SYLLABLE DHHEE;Lo;0;L;;;;;N;;;;;
+A512;VAI SYLLABLE LEE;Lo;0;L;;;;;N;;;;;
+A513;VAI SYLLABLE REE;Lo;0;L;;;;;N;;;;;
+A514;VAI SYLLABLE DEE;Lo;0;L;;;;;N;;;;;
+A515;VAI SYLLABLE NDEE;Lo;0;L;;;;;N;;;;;
+A516;VAI SYLLABLE SEE;Lo;0;L;;;;;N;;;;;
+A517;VAI SYLLABLE SHEE;Lo;0;L;;;;;N;;;;;
+A518;VAI SYLLABLE ZEE;Lo;0;L;;;;;N;;;;;
+A519;VAI SYLLABLE ZHEE;Lo;0;L;;;;;N;;;;;
+A51A;VAI SYLLABLE CEE;Lo;0;L;;;;;N;;;;;
+A51B;VAI SYLLABLE JEE;Lo;0;L;;;;;N;;;;;
+A51C;VAI SYLLABLE NJEE;Lo;0;L;;;;;N;;;;;
+A51D;VAI SYLLABLE YEE;Lo;0;L;;;;;N;;;;;
+A51E;VAI SYLLABLE KEE;Lo;0;L;;;;;N;;;;;
+A51F;VAI SYLLABLE NGGEE;Lo;0;L;;;;;N;;;;;
+A520;VAI SYLLABLE GEE;Lo;0;L;;;;;N;;;;;
+A521;VAI SYLLABLE MEE;Lo;0;L;;;;;N;;;;;
+A522;VAI SYLLABLE NEE;Lo;0;L;;;;;N;;;;;
+A523;VAI SYLLABLE NYEE;Lo;0;L;;;;;N;;;;;
+A524;VAI SYLLABLE I;Lo;0;L;;;;;N;;;;;
+A525;VAI SYLLABLE IN;Lo;0;L;;;;;N;;;;;
+A526;VAI SYLLABLE HI;Lo;0;L;;;;;N;;;;;
+A527;VAI SYLLABLE HIN;Lo;0;L;;;;;N;;;;;
+A528;VAI SYLLABLE WI;Lo;0;L;;;;;N;;;;;
+A529;VAI SYLLABLE WIN;Lo;0;L;;;;;N;;;;;
+A52A;VAI SYLLABLE PI;Lo;0;L;;;;;N;;;;;
+A52B;VAI SYLLABLE BHI;Lo;0;L;;;;;N;;;;;
+A52C;VAI SYLLABLE BI;Lo;0;L;;;;;N;;;;;
+A52D;VAI SYLLABLE MBI;Lo;0;L;;;;;N;;;;;
+A52E;VAI SYLLABLE KPI;Lo;0;L;;;;;N;;;;;
+A52F;VAI SYLLABLE MGBI;Lo;0;L;;;;;N;;;;;
+A530;VAI SYLLABLE GBI;Lo;0;L;;;;;N;;;;;
+A531;VAI SYLLABLE FI;Lo;0;L;;;;;N;;;;;
+A532;VAI SYLLABLE VI;Lo;0;L;;;;;N;;;;;
+A533;VAI SYLLABLE TI;Lo;0;L;;;;;N;;;;;
+A534;VAI SYLLABLE THI;Lo;0;L;;;;;N;;;;;
+A535;VAI SYLLABLE DHI;Lo;0;L;;;;;N;;;;;
+A536;VAI SYLLABLE DHHI;Lo;0;L;;;;;N;;;;;
+A537;VAI SYLLABLE LI;Lo;0;L;;;;;N;;;;;
+A538;VAI SYLLABLE RI;Lo;0;L;;;;;N;;;;;
+A539;VAI SYLLABLE DI;Lo;0;L;;;;;N;;;;;
+A53A;VAI SYLLABLE NDI;Lo;0;L;;;;;N;;;;;
+A53B;VAI SYLLABLE SI;Lo;0;L;;;;;N;;;;;
+A53C;VAI SYLLABLE SHI;Lo;0;L;;;;;N;;;;;
+A53D;VAI SYLLABLE ZI;Lo;0;L;;;;;N;;;;;
+A53E;VAI SYLLABLE ZHI;Lo;0;L;;;;;N;;;;;
+A53F;VAI SYLLABLE CI;Lo;0;L;;;;;N;;;;;
+A540;VAI SYLLABLE JI;Lo;0;L;;;;;N;;;;;
+A541;VAI SYLLABLE NJI;Lo;0;L;;;;;N;;;;;
+A542;VAI SYLLABLE YI;Lo;0;L;;;;;N;;;;;
+A543;VAI SYLLABLE KI;Lo;0;L;;;;;N;;;;;
+A544;VAI SYLLABLE NGGI;Lo;0;L;;;;;N;;;;;
+A545;VAI SYLLABLE GI;Lo;0;L;;;;;N;;;;;
+A546;VAI SYLLABLE MI;Lo;0;L;;;;;N;;;;;
+A547;VAI SYLLABLE NI;Lo;0;L;;;;;N;;;;;
+A548;VAI SYLLABLE NYI;Lo;0;L;;;;;N;;;;;
+A549;VAI SYLLABLE A;Lo;0;L;;;;;N;;;;;
+A54A;VAI SYLLABLE AN;Lo;0;L;;;;;N;;;;;
+A54B;VAI SYLLABLE NGAN;Lo;0;L;;;;;N;;;;;
+A54C;VAI SYLLABLE HA;Lo;0;L;;;;;N;;;;;
+A54D;VAI SYLLABLE HAN;Lo;0;L;;;;;N;;;;;
+A54E;VAI SYLLABLE WA;Lo;0;L;;;;;N;;;;;
+A54F;VAI SYLLABLE WAN;Lo;0;L;;;;;N;;;;;
+A550;VAI SYLLABLE PA;Lo;0;L;;;;;N;;;;;
+A551;VAI SYLLABLE BHA;Lo;0;L;;;;;N;;;;;
+A552;VAI SYLLABLE BA;Lo;0;L;;;;;N;;;;;
+A553;VAI SYLLABLE MBA;Lo;0;L;;;;;N;;;;;
+A554;VAI SYLLABLE KPA;Lo;0;L;;;;;N;;;;;
+A555;VAI SYLLABLE KPAN;Lo;0;L;;;;;N;;;;;
+A556;VAI SYLLABLE MGBA;Lo;0;L;;;;;N;;;;;
+A557;VAI SYLLABLE GBA;Lo;0;L;;;;;N;;;;;
+A558;VAI SYLLABLE FA;Lo;0;L;;;;;N;;;;;
+A559;VAI SYLLABLE VA;Lo;0;L;;;;;N;;;;;
+A55A;VAI SYLLABLE TA;Lo;0;L;;;;;N;;;;;
+A55B;VAI SYLLABLE THA;Lo;0;L;;;;;N;;;;;
+A55C;VAI SYLLABLE DHA;Lo;0;L;;;;;N;;;;;
+A55D;VAI SYLLABLE DHHA;Lo;0;L;;;;;N;;;;;
+A55E;VAI SYLLABLE LA;Lo;0;L;;;;;N;;;;;
+A55F;VAI SYLLABLE RA;Lo;0;L;;;;;N;;;;;
+A560;VAI SYLLABLE DA;Lo;0;L;;;;;N;;;;;
+A561;VAI SYLLABLE NDA;Lo;0;L;;;;;N;;;;;
+A562;VAI SYLLABLE SA;Lo;0;L;;;;;N;;;;;
+A563;VAI SYLLABLE SHA;Lo;0;L;;;;;N;;;;;
+A564;VAI SYLLABLE ZA;Lo;0;L;;;;;N;;;;;
+A565;VAI SYLLABLE ZHA;Lo;0;L;;;;;N;;;;;
+A566;VAI SYLLABLE CA;Lo;0;L;;;;;N;;;;;
+A567;VAI SYLLABLE JA;Lo;0;L;;;;;N;;;;;
+A568;VAI SYLLABLE NJA;Lo;0;L;;;;;N;;;;;
+A569;VAI SYLLABLE YA;Lo;0;L;;;;;N;;;;;
+A56A;VAI SYLLABLE KA;Lo;0;L;;;;;N;;;;;
+A56B;VAI SYLLABLE KAN;Lo;0;L;;;;;N;;;;;
+A56C;VAI SYLLABLE NGGA;Lo;0;L;;;;;N;;;;;
+A56D;VAI SYLLABLE GA;Lo;0;L;;;;;N;;;;;
+A56E;VAI SYLLABLE MA;Lo;0;L;;;;;N;;;;;
+A56F;VAI SYLLABLE NA;Lo;0;L;;;;;N;;;;;
+A570;VAI SYLLABLE NYA;Lo;0;L;;;;;N;;;;;
+A571;VAI SYLLABLE OO;Lo;0;L;;;;;N;;;;;
+A572;VAI SYLLABLE OON;Lo;0;L;;;;;N;;;;;
+A573;VAI SYLLABLE HOO;Lo;0;L;;;;;N;;;;;
+A574;VAI SYLLABLE WOO;Lo;0;L;;;;;N;;;;;
+A575;VAI SYLLABLE WOON;Lo;0;L;;;;;N;;;;;
+A576;VAI SYLLABLE POO;Lo;0;L;;;;;N;;;;;
+A577;VAI SYLLABLE BHOO;Lo;0;L;;;;;N;;;;;
+A578;VAI SYLLABLE BOO;Lo;0;L;;;;;N;;;;;
+A579;VAI SYLLABLE MBOO;Lo;0;L;;;;;N;;;;;
+A57A;VAI SYLLABLE KPOO;Lo;0;L;;;;;N;;;;;
+A57B;VAI SYLLABLE MGBOO;Lo;0;L;;;;;N;;;;;
+A57C;VAI SYLLABLE GBOO;Lo;0;L;;;;;N;;;;;
+A57D;VAI SYLLABLE FOO;Lo;0;L;;;;;N;;;;;
+A57E;VAI SYLLABLE VOO;Lo;0;L;;;;;N;;;;;
+A57F;VAI SYLLABLE TOO;Lo;0;L;;;;;N;;;;;
+A580;VAI SYLLABLE THOO;Lo;0;L;;;;;N;;;;;
+A581;VAI SYLLABLE DHOO;Lo;0;L;;;;;N;;;;;
+A582;VAI SYLLABLE DHHOO;Lo;0;L;;;;;N;;;;;
+A583;VAI SYLLABLE LOO;Lo;0;L;;;;;N;;;;;
+A584;VAI SYLLABLE ROO;Lo;0;L;;;;;N;;;;;
+A585;VAI SYLLABLE DOO;Lo;0;L;;;;;N;;;;;
+A586;VAI SYLLABLE NDOO;Lo;0;L;;;;;N;;;;;
+A587;VAI SYLLABLE SOO;Lo;0;L;;;;;N;;;;;
+A588;VAI SYLLABLE SHOO;Lo;0;L;;;;;N;;;;;
+A589;VAI SYLLABLE ZOO;Lo;0;L;;;;;N;;;;;
+A58A;VAI SYLLABLE ZHOO;Lo;0;L;;;;;N;;;;;
+A58B;VAI SYLLABLE COO;Lo;0;L;;;;;N;;;;;
+A58C;VAI SYLLABLE JOO;Lo;0;L;;;;;N;;;;;
+A58D;VAI SYLLABLE NJOO;Lo;0;L;;;;;N;;;;;
+A58E;VAI SYLLABLE YOO;Lo;0;L;;;;;N;;;;;
+A58F;VAI SYLLABLE KOO;Lo;0;L;;;;;N;;;;;
+A590;VAI SYLLABLE NGGOO;Lo;0;L;;;;;N;;;;;
+A591;VAI SYLLABLE GOO;Lo;0;L;;;;;N;;;;;
+A592;VAI SYLLABLE MOO;Lo;0;L;;;;;N;;;;;
+A593;VAI SYLLABLE NOO;Lo;0;L;;;;;N;;;;;
+A594;VAI SYLLABLE NYOO;Lo;0;L;;;;;N;;;;;
+A595;VAI SYLLABLE U;Lo;0;L;;;;;N;;;;;
+A596;VAI SYLLABLE UN;Lo;0;L;;;;;N;;;;;
+A597;VAI SYLLABLE HU;Lo;0;L;;;;;N;;;;;
+A598;VAI SYLLABLE HUN;Lo;0;L;;;;;N;;;;;
+A599;VAI SYLLABLE WU;Lo;0;L;;;;;N;;;;;
+A59A;VAI SYLLABLE WUN;Lo;0;L;;;;;N;;;;;
+A59B;VAI SYLLABLE PU;Lo;0;L;;;;;N;;;;;
+A59C;VAI SYLLABLE BHU;Lo;0;L;;;;;N;;;;;
+A59D;VAI SYLLABLE BU;Lo;0;L;;;;;N;;;;;
+A59E;VAI SYLLABLE MBU;Lo;0;L;;;;;N;;;;;
+A59F;VAI SYLLABLE KPU;Lo;0;L;;;;;N;;;;;
+A5A0;VAI SYLLABLE MGBU;Lo;0;L;;;;;N;;;;;
+A5A1;VAI SYLLABLE GBU;Lo;0;L;;;;;N;;;;;
+A5A2;VAI SYLLABLE FU;Lo;0;L;;;;;N;;;;;
+A5A3;VAI SYLLABLE VU;Lo;0;L;;;;;N;;;;;
+A5A4;VAI SYLLABLE TU;Lo;0;L;;;;;N;;;;;
+A5A5;VAI SYLLABLE THU;Lo;0;L;;;;;N;;;;;
+A5A6;VAI SYLLABLE DHU;Lo;0;L;;;;;N;;;;;
+A5A7;VAI SYLLABLE DHHU;Lo;0;L;;;;;N;;;;;
+A5A8;VAI SYLLABLE LU;Lo;0;L;;;;;N;;;;;
+A5A9;VAI SYLLABLE RU;Lo;0;L;;;;;N;;;;;
+A5AA;VAI SYLLABLE DU;Lo;0;L;;;;;N;;;;;
+A5AB;VAI SYLLABLE NDU;Lo;0;L;;;;;N;;;;;
+A5AC;VAI SYLLABLE SU;Lo;0;L;;;;;N;;;;;
+A5AD;VAI SYLLABLE SHU;Lo;0;L;;;;;N;;;;;
+A5AE;VAI SYLLABLE ZU;Lo;0;L;;;;;N;;;;;
+A5AF;VAI SYLLABLE ZHU;Lo;0;L;;;;;N;;;;;
+A5B0;VAI SYLLABLE CU;Lo;0;L;;;;;N;;;;;
+A5B1;VAI SYLLABLE JU;Lo;0;L;;;;;N;;;;;
+A5B2;VAI SYLLABLE NJU;Lo;0;L;;;;;N;;;;;
+A5B3;VAI SYLLABLE YU;Lo;0;L;;;;;N;;;;;
+A5B4;VAI SYLLABLE KU;Lo;0;L;;;;;N;;;;;
+A5B5;VAI SYLLABLE NGGU;Lo;0;L;;;;;N;;;;;
+A5B6;VAI SYLLABLE GU;Lo;0;L;;;;;N;;;;;
+A5B7;VAI SYLLABLE MU;Lo;0;L;;;;;N;;;;;
+A5B8;VAI SYLLABLE NU;Lo;0;L;;;;;N;;;;;
+A5B9;VAI SYLLABLE NYU;Lo;0;L;;;;;N;;;;;
+A5BA;VAI SYLLABLE O;Lo;0;L;;;;;N;;;;;
+A5BB;VAI SYLLABLE ON;Lo;0;L;;;;;N;;;;;
+A5BC;VAI SYLLABLE NGON;Lo;0;L;;;;;N;;;;;
+A5BD;VAI SYLLABLE HO;Lo;0;L;;;;;N;;;;;
+A5BE;VAI SYLLABLE HON;Lo;0;L;;;;;N;;;;;
+A5BF;VAI SYLLABLE WO;Lo;0;L;;;;;N;;;;;
+A5C0;VAI SYLLABLE WON;Lo;0;L;;;;;N;;;;;
+A5C1;VAI SYLLABLE PO;Lo;0;L;;;;;N;;;;;
+A5C2;VAI SYLLABLE BHO;Lo;0;L;;;;;N;;;;;
+A5C3;VAI SYLLABLE BO;Lo;0;L;;;;;N;;;;;
+A5C4;VAI SYLLABLE MBO;Lo;0;L;;;;;N;;;;;
+A5C5;VAI SYLLABLE KPO;Lo;0;L;;;;;N;;;;;
+A5C6;VAI SYLLABLE MGBO;Lo;0;L;;;;;N;;;;;
+A5C7;VAI SYLLABLE GBO;Lo;0;L;;;;;N;;;;;
+A5C8;VAI SYLLABLE GBON;Lo;0;L;;;;;N;;;;;
+A5C9;VAI SYLLABLE FO;Lo;0;L;;;;;N;;;;;
+A5CA;VAI SYLLABLE VO;Lo;0;L;;;;;N;;;;;
+A5CB;VAI SYLLABLE TO;Lo;0;L;;;;;N;;;;;
+A5CC;VAI SYLLABLE THO;Lo;0;L;;;;;N;;;;;
+A5CD;VAI SYLLABLE DHO;Lo;0;L;;;;;N;;;;;
+A5CE;VAI SYLLABLE DHHO;Lo;0;L;;;;;N;;;;;
+A5CF;VAI SYLLABLE LO;Lo;0;L;;;;;N;;;;;
+A5D0;VAI SYLLABLE RO;Lo;0;L;;;;;N;;;;;
+A5D1;VAI SYLLABLE DO;Lo;0;L;;;;;N;;;;;
+A5D2;VAI SYLLABLE NDO;Lo;0;L;;;;;N;;;;;
+A5D3;VAI SYLLABLE SO;Lo;0;L;;;;;N;;;;;
+A5D4;VAI SYLLABLE SHO;Lo;0;L;;;;;N;;;;;
+A5D5;VAI SYLLABLE ZO;Lo;0;L;;;;;N;;;;;
+A5D6;VAI SYLLABLE ZHO;Lo;0;L;;;;;N;;;;;
+A5D7;VAI SYLLABLE CO;Lo;0;L;;;;;N;;;;;
+A5D8;VAI SYLLABLE JO;Lo;0;L;;;;;N;;;;;
+A5D9;VAI SYLLABLE NJO;Lo;0;L;;;;;N;;;;;
+A5DA;VAI SYLLABLE YO;Lo;0;L;;;;;N;;;;;
+A5DB;VAI SYLLABLE KO;Lo;0;L;;;;;N;;;;;
+A5DC;VAI SYLLABLE NGGO;Lo;0;L;;;;;N;;;;;
+A5DD;VAI SYLLABLE GO;Lo;0;L;;;;;N;;;;;
+A5DE;VAI SYLLABLE MO;Lo;0;L;;;;;N;;;;;
+A5DF;VAI SYLLABLE NO;Lo;0;L;;;;;N;;;;;
+A5E0;VAI SYLLABLE NYO;Lo;0;L;;;;;N;;;;;
+A5E1;VAI SYLLABLE E;Lo;0;L;;;;;N;;;;;
+A5E2;VAI SYLLABLE EN;Lo;0;L;;;;;N;;;;;
+A5E3;VAI SYLLABLE NGEN;Lo;0;L;;;;;N;;;;;
+A5E4;VAI SYLLABLE HE;Lo;0;L;;;;;N;;;;;
+A5E5;VAI SYLLABLE HEN;Lo;0;L;;;;;N;;;;;
+A5E6;VAI SYLLABLE WE;Lo;0;L;;;;;N;;;;;
+A5E7;VAI SYLLABLE WEN;Lo;0;L;;;;;N;;;;;
+A5E8;VAI SYLLABLE PE;Lo;0;L;;;;;N;;;;;
+A5E9;VAI SYLLABLE BHE;Lo;0;L;;;;;N;;;;;
+A5EA;VAI SYLLABLE BE;Lo;0;L;;;;;N;;;;;
+A5EB;VAI SYLLABLE MBE;Lo;0;L;;;;;N;;;;;
+A5EC;VAI SYLLABLE KPE;Lo;0;L;;;;;N;;;;;
+A5ED;VAI SYLLABLE KPEN;Lo;0;L;;;;;N;;;;;
+A5EE;VAI SYLLABLE MGBE;Lo;0;L;;;;;N;;;;;
+A5EF;VAI SYLLABLE GBE;Lo;0;L;;;;;N;;;;;
+A5F0;VAI SYLLABLE GBEN;Lo;0;L;;;;;N;;;;;
+A5F1;VAI SYLLABLE FE;Lo;0;L;;;;;N;;;;;
+A5F2;VAI SYLLABLE VE;Lo;0;L;;;;;N;;;;;
+A5F3;VAI SYLLABLE TE;Lo;0;L;;;;;N;;;;;
+A5F4;VAI SYLLABLE THE;Lo;0;L;;;;;N;;;;;
+A5F5;VAI SYLLABLE DHE;Lo;0;L;;;;;N;;;;;
+A5F6;VAI SYLLABLE DHHE;Lo;0;L;;;;;N;;;;;
+A5F7;VAI SYLLABLE LE;Lo;0;L;;;;;N;;;;;
+A5F8;VAI SYLLABLE RE;Lo;0;L;;;;;N;;;;;
+A5F9;VAI SYLLABLE DE;Lo;0;L;;;;;N;;;;;
+A5FA;VAI SYLLABLE NDE;Lo;0;L;;;;;N;;;;;
+A5FB;VAI SYLLABLE SE;Lo;0;L;;;;;N;;;;;
+A5FC;VAI SYLLABLE SHE;Lo;0;L;;;;;N;;;;;
+A5FD;VAI SYLLABLE ZE;Lo;0;L;;;;;N;;;;;
+A5FE;VAI SYLLABLE ZHE;Lo;0;L;;;;;N;;;;;
+A5FF;VAI SYLLABLE CE;Lo;0;L;;;;;N;;;;;
+A600;VAI SYLLABLE JE;Lo;0;L;;;;;N;;;;;
+A601;VAI SYLLABLE NJE;Lo;0;L;;;;;N;;;;;
+A602;VAI SYLLABLE YE;Lo;0;L;;;;;N;;;;;
+A603;VAI SYLLABLE KE;Lo;0;L;;;;;N;;;;;
+A604;VAI SYLLABLE NGGE;Lo;0;L;;;;;N;;;;;
+A605;VAI SYLLABLE NGGEN;Lo;0;L;;;;;N;;;;;
+A606;VAI SYLLABLE GE;Lo;0;L;;;;;N;;;;;
+A607;VAI SYLLABLE GEN;Lo;0;L;;;;;N;;;;;
+A608;VAI SYLLABLE ME;Lo;0;L;;;;;N;;;;;
+A609;VAI SYLLABLE NE;Lo;0;L;;;;;N;;;;;
+A60A;VAI SYLLABLE NYE;Lo;0;L;;;;;N;;;;;
+A60B;VAI SYLLABLE NG;Lo;0;L;;;;;N;;;;;
+A60C;VAI SYLLABLE LENGTHENER;Lm;0;L;;;;;N;;;;;
+A60D;VAI COMMA;Po;0;ON;;;;;N;;;;;
+A60E;VAI FULL STOP;Po;0;ON;;;;;N;;;;;
+A60F;VAI QUESTION MARK;Po;0;ON;;;;;N;;;;;
+A610;VAI SYLLABLE NDOLE FA;Lo;0;L;;;;;N;;;;;
+A611;VAI SYLLABLE NDOLE KA;Lo;0;L;;;;;N;;;;;
+A612;VAI SYLLABLE NDOLE SOO;Lo;0;L;;;;;N;;;;;
+A613;VAI SYMBOL FEENG;Lo;0;L;;;;;N;;;;;
+A614;VAI SYMBOL KEENG;Lo;0;L;;;;;N;;;;;
+A615;VAI SYMBOL TING;Lo;0;L;;;;;N;;;;;
+A616;VAI SYMBOL NII;Lo;0;L;;;;;N;;;;;
+A617;VAI SYMBOL BANG;Lo;0;L;;;;;N;;;;;
+A618;VAI SYMBOL FAA;Lo;0;L;;;;;N;;;;;
+A619;VAI SYMBOL TAA;Lo;0;L;;;;;N;;;;;
+A61A;VAI SYMBOL DANG;Lo;0;L;;;;;N;;;;;
+A61B;VAI SYMBOL DOONG;Lo;0;L;;;;;N;;;;;
+A61C;VAI SYMBOL KUNG;Lo;0;L;;;;;N;;;;;
+A61D;VAI SYMBOL TONG;Lo;0;L;;;;;N;;;;;
+A61E;VAI SYMBOL DO-O;Lo;0;L;;;;;N;;;;;
+A61F;VAI SYMBOL JONG;Lo;0;L;;;;;N;;;;;
+A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A62A;VAI SYLLABLE NDOLE MA;Lo;0;L;;;;;N;;;;;
+A62B;VAI SYLLABLE NDOLE DO;Lo;0;L;;;;;N;;;;;
+A640;CYRILLIC CAPITAL LETTER ZEMLYA;Lu;0;L;;;;;N;;;;A641;
+A641;CYRILLIC SMALL LETTER ZEMLYA;Ll;0;L;;;;;N;;;A640;;A640
+A642;CYRILLIC CAPITAL LETTER DZELO;Lu;0;L;;;;;N;;;;A643;
+A643;CYRILLIC SMALL LETTER DZELO;Ll;0;L;;;;;N;;;A642;;A642
+A644;CYRILLIC CAPITAL LETTER REVERSED DZE;Lu;0;L;;;;;N;;;;A645;
+A645;CYRILLIC SMALL LETTER REVERSED DZE;Ll;0;L;;;;;N;;;A644;;A644
+A646;CYRILLIC CAPITAL LETTER IOTA;Lu;0;L;;;;;N;;;;A647;
+A647;CYRILLIC SMALL LETTER IOTA;Ll;0;L;;;;;N;;;A646;;A646
+A648;CYRILLIC CAPITAL LETTER DJERV;Lu;0;L;;;;;N;;;;A649;
+A649;CYRILLIC SMALL LETTER DJERV;Ll;0;L;;;;;N;;;A648;;A648
+A64A;CYRILLIC CAPITAL LETTER MONOGRAPH UK;Lu;0;L;;;;;N;;;;A64B;
+A64B;CYRILLIC SMALL LETTER MONOGRAPH UK;Ll;0;L;;;;;N;;;A64A;;A64A
+A64C;CYRILLIC CAPITAL LETTER BROAD OMEGA;Lu;0;L;;;;;N;;;;A64D;
+A64D;CYRILLIC SMALL LETTER BROAD OMEGA;Ll;0;L;;;;;N;;;A64C;;A64C
+A64E;CYRILLIC CAPITAL LETTER NEUTRAL YER;Lu;0;L;;;;;N;;;;A64F;
+A64F;CYRILLIC SMALL LETTER NEUTRAL YER;Ll;0;L;;;;;N;;;A64E;;A64E
+A650;CYRILLIC CAPITAL LETTER YERU WITH BACK YER;Lu;0;L;;;;;N;;;;A651;
+A651;CYRILLIC SMALL LETTER YERU WITH BACK YER;Ll;0;L;;;;;N;;;A650;;A650
+A652;CYRILLIC CAPITAL LETTER IOTIFIED YAT;Lu;0;L;;;;;N;;;;A653;
+A653;CYRILLIC SMALL LETTER IOTIFIED YAT;Ll;0;L;;;;;N;;;A652;;A652
+A654;CYRILLIC CAPITAL LETTER REVERSED YU;Lu;0;L;;;;;N;;;;A655;
+A655;CYRILLIC SMALL LETTER REVERSED YU;Ll;0;L;;;;;N;;;A654;;A654
+A656;CYRILLIC CAPITAL LETTER IOTIFIED A;Lu;0;L;;;;;N;;;;A657;
+A657;CYRILLIC SMALL LETTER IOTIFIED A;Ll;0;L;;;;;N;;;A656;;A656
+A658;CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A659;
+A659;CYRILLIC SMALL LETTER CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A658;;A658
+A65A;CYRILLIC CAPITAL LETTER BLENDED YUS;Lu;0;L;;;;;N;;;;A65B;
+A65B;CYRILLIC SMALL LETTER BLENDED YUS;Ll;0;L;;;;;N;;;A65A;;A65A
+A65C;CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS;Lu;0;L;;;;;N;;;;A65D;
+A65D;CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS;Ll;0;L;;;;;N;;;A65C;;A65C
+A65E;CYRILLIC CAPITAL LETTER YN;Lu;0;L;;;;;N;;;;A65F;
+A65F;CYRILLIC SMALL LETTER YN;Ll;0;L;;;;;N;;;A65E;;A65E
+A662;CYRILLIC CAPITAL LETTER SOFT DE;Lu;0;L;;;;;N;;;;A663;
+A663;CYRILLIC SMALL LETTER SOFT DE;Ll;0;L;;;;;N;;;A662;;A662
+A664;CYRILLIC CAPITAL LETTER SOFT EL;Lu;0;L;;;;;N;;;;A665;
+A665;CYRILLIC SMALL LETTER SOFT EL;Ll;0;L;;;;;N;;;A664;;A664
+A666;CYRILLIC CAPITAL LETTER SOFT EM;Lu;0;L;;;;;N;;;;A667;
+A667;CYRILLIC SMALL LETTER SOFT EM;Ll;0;L;;;;;N;;;A666;;A666
+A668;CYRILLIC CAPITAL LETTER MONOCULAR O;Lu;0;L;;;;;N;;;;A669;
+A669;CYRILLIC SMALL LETTER MONOCULAR O;Ll;0;L;;;;;N;;;A668;;A668
+A66A;CYRILLIC CAPITAL LETTER BINOCULAR O;Lu;0;L;;;;;N;;;;A66B;
+A66B;CYRILLIC SMALL LETTER BINOCULAR O;Ll;0;L;;;;;N;;;A66A;;A66A
+A66C;CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O;Lu;0;L;;;;;N;;;;A66D;
+A66D;CYRILLIC SMALL LETTER DOUBLE MONOCULAR O;Ll;0;L;;;;;N;;;A66C;;A66C
+A66E;CYRILLIC LETTER MULTIOCULAR O;Lo;0;L;;;;;N;;;;;
+A66F;COMBINING CYRILLIC VZMET;Mn;230;NSM;;;;;N;;;;;
+A670;COMBINING CYRILLIC TEN MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A671;COMBINING CYRILLIC HUNDRED MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A672;COMBINING CYRILLIC THOUSAND MILLIONS SIGN;Me;0;NSM;;;;;N;;;;;
+A673;SLAVONIC ASTERISK;Po;0;ON;;;;;N;;;;;
+A67C;COMBINING CYRILLIC KAVYKA;Mn;230;NSM;;;;;N;;;;;
+A67D;COMBINING CYRILLIC PAYEROK;Mn;230;NSM;;;;;N;;;;;
+A67E;CYRILLIC KAVYKA;Po;0;ON;;;;;N;;;;;
+A67F;CYRILLIC PAYEROK;Lm;0;ON;;;;;N;;;;;
+A680;CYRILLIC CAPITAL LETTER DWE;Lu;0;L;;;;;N;;;;A681;
+A681;CYRILLIC SMALL LETTER DWE;Ll;0;L;;;;;N;;;A680;;A680
+A682;CYRILLIC CAPITAL LETTER DZWE;Lu;0;L;;;;;N;;;;A683;
+A683;CYRILLIC SMALL LETTER DZWE;Ll;0;L;;;;;N;;;A682;;A682
+A684;CYRILLIC CAPITAL LETTER ZHWE;Lu;0;L;;;;;N;;;;A685;
+A685;CYRILLIC SMALL LETTER ZHWE;Ll;0;L;;;;;N;;;A684;;A684
+A686;CYRILLIC CAPITAL LETTER CCHE;Lu;0;L;;;;;N;;;;A687;
+A687;CYRILLIC SMALL LETTER CCHE;Ll;0;L;;;;;N;;;A686;;A686
+A688;CYRILLIC CAPITAL LETTER DZZE;Lu;0;L;;;;;N;;;;A689;
+A689;CYRILLIC SMALL LETTER DZZE;Ll;0;L;;;;;N;;;A688;;A688
+A68A;CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK;Lu;0;L;;;;;N;;;;A68B;
+A68B;CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK;Ll;0;L;;;;;N;;;A68A;;A68A
+A68C;CYRILLIC CAPITAL LETTER TWE;Lu;0;L;;;;;N;;;;A68D;
+A68D;CYRILLIC SMALL LETTER TWE;Ll;0;L;;;;;N;;;A68C;;A68C
+A68E;CYRILLIC CAPITAL LETTER TSWE;Lu;0;L;;;;;N;;;;A68F;
+A68F;CYRILLIC SMALL LETTER TSWE;Ll;0;L;;;;;N;;;A68E;;A68E
+A690;CYRILLIC CAPITAL LETTER TSSE;Lu;0;L;;;;;N;;;;A691;
+A691;CYRILLIC SMALL LETTER TSSE;Ll;0;L;;;;;N;;;A690;;A690
+A692;CYRILLIC CAPITAL LETTER TCHE;Lu;0;L;;;;;N;;;;A693;
+A693;CYRILLIC SMALL LETTER TCHE;Ll;0;L;;;;;N;;;A692;;A692
+A694;CYRILLIC CAPITAL LETTER HWE;Lu;0;L;;;;;N;;;;A695;
+A695;CYRILLIC SMALL LETTER HWE;Ll;0;L;;;;;N;;;A694;;A694
+A696;CYRILLIC CAPITAL LETTER SHWE;Lu;0;L;;;;;N;;;;A697;
+A697;CYRILLIC SMALL LETTER SHWE;Ll;0;L;;;;;N;;;A696;;A696
+A6A0;BAMUM LETTER A;Lo;0;L;;;;;N;;;;;
+A6A1;BAMUM LETTER KA;Lo;0;L;;;;;N;;;;;
+A6A2;BAMUM LETTER U;Lo;0;L;;;;;N;;;;;
+A6A3;BAMUM LETTER KU;Lo;0;L;;;;;N;;;;;
+A6A4;BAMUM LETTER EE;Lo;0;L;;;;;N;;;;;
+A6A5;BAMUM LETTER REE;Lo;0;L;;;;;N;;;;;
+A6A6;BAMUM LETTER TAE;Lo;0;L;;;;;N;;;;;
+A6A7;BAMUM LETTER O;Lo;0;L;;;;;N;;;;;
+A6A8;BAMUM LETTER NYI;Lo;0;L;;;;;N;;;;;
+A6A9;BAMUM LETTER I;Lo;0;L;;;;;N;;;;;
+A6AA;BAMUM LETTER LA;Lo;0;L;;;;;N;;;;;
+A6AB;BAMUM LETTER PA;Lo;0;L;;;;;N;;;;;
+A6AC;BAMUM LETTER RII;Lo;0;L;;;;;N;;;;;
+A6AD;BAMUM LETTER RIEE;Lo;0;L;;;;;N;;;;;
+A6AE;BAMUM LETTER LEEEE;Lo;0;L;;;;;N;;;;;
+A6AF;BAMUM LETTER MEEEE;Lo;0;L;;;;;N;;;;;
+A6B0;BAMUM LETTER TAA;Lo;0;L;;;;;N;;;;;
+A6B1;BAMUM LETTER NDAA;Lo;0;L;;;;;N;;;;;
+A6B2;BAMUM LETTER NJAEM;Lo;0;L;;;;;N;;;;;
+A6B3;BAMUM LETTER M;Lo;0;L;;;;;N;;;;;
+A6B4;BAMUM LETTER SUU;Lo;0;L;;;;;N;;;;;
+A6B5;BAMUM LETTER MU;Lo;0;L;;;;;N;;;;;
+A6B6;BAMUM LETTER SHII;Lo;0;L;;;;;N;;;;;
+A6B7;BAMUM LETTER SI;Lo;0;L;;;;;N;;;;;
+A6B8;BAMUM LETTER SHEUX;Lo;0;L;;;;;N;;;;;
+A6B9;BAMUM LETTER SEUX;Lo;0;L;;;;;N;;;;;
+A6BA;BAMUM LETTER KYEE;Lo;0;L;;;;;N;;;;;
+A6BB;BAMUM LETTER KET;Lo;0;L;;;;;N;;;;;
+A6BC;BAMUM LETTER NUAE;Lo;0;L;;;;;N;;;;;
+A6BD;BAMUM LETTER NU;Lo;0;L;;;;;N;;;;;
+A6BE;BAMUM LETTER NJUAE;Lo;0;L;;;;;N;;;;;
+A6BF;BAMUM LETTER YOQ;Lo;0;L;;;;;N;;;;;
+A6C0;BAMUM LETTER SHU;Lo;0;L;;;;;N;;;;;
+A6C1;BAMUM LETTER YUQ;Lo;0;L;;;;;N;;;;;
+A6C2;BAMUM LETTER YA;Lo;0;L;;;;;N;;;;;
+A6C3;BAMUM LETTER NSHA;Lo;0;L;;;;;N;;;;;
+A6C4;BAMUM LETTER KEUX;Lo;0;L;;;;;N;;;;;
+A6C5;BAMUM LETTER PEUX;Lo;0;L;;;;;N;;;;;
+A6C6;BAMUM LETTER NJEE;Lo;0;L;;;;;N;;;;;
+A6C7;BAMUM LETTER NTEE;Lo;0;L;;;;;N;;;;;
+A6C8;BAMUM LETTER PUE;Lo;0;L;;;;;N;;;;;
+A6C9;BAMUM LETTER WUE;Lo;0;L;;;;;N;;;;;
+A6CA;BAMUM LETTER PEE;Lo;0;L;;;;;N;;;;;
+A6CB;BAMUM LETTER FEE;Lo;0;L;;;;;N;;;;;
+A6CC;BAMUM LETTER RU;Lo;0;L;;;;;N;;;;;
+A6CD;BAMUM LETTER LU;Lo;0;L;;;;;N;;;;;
+A6CE;BAMUM LETTER MI;Lo;0;L;;;;;N;;;;;
+A6CF;BAMUM LETTER NI;Lo;0;L;;;;;N;;;;;
+A6D0;BAMUM LETTER REUX;Lo;0;L;;;;;N;;;;;
+A6D1;BAMUM LETTER RAE;Lo;0;L;;;;;N;;;;;
+A6D2;BAMUM LETTER KEN;Lo;0;L;;;;;N;;;;;
+A6D3;BAMUM LETTER NGKWAEN;Lo;0;L;;;;;N;;;;;
+A6D4;BAMUM LETTER NGGA;Lo;0;L;;;;;N;;;;;
+A6D5;BAMUM LETTER NGA;Lo;0;L;;;;;N;;;;;
+A6D6;BAMUM LETTER SHO;Lo;0;L;;;;;N;;;;;
+A6D7;BAMUM LETTER PUAE;Lo;0;L;;;;;N;;;;;
+A6D8;BAMUM LETTER FU;Lo;0;L;;;;;N;;;;;
+A6D9;BAMUM LETTER FOM;Lo;0;L;;;;;N;;;;;
+A6DA;BAMUM LETTER WA;Lo;0;L;;;;;N;;;;;
+A6DB;BAMUM LETTER NA;Lo;0;L;;;;;N;;;;;
+A6DC;BAMUM LETTER LI;Lo;0;L;;;;;N;;;;;
+A6DD;BAMUM LETTER PI;Lo;0;L;;;;;N;;;;;
+A6DE;BAMUM LETTER LOQ;Lo;0;L;;;;;N;;;;;
+A6DF;BAMUM LETTER KO;Lo;0;L;;;;;N;;;;;
+A6E0;BAMUM LETTER MBEN;Lo;0;L;;;;;N;;;;;
+A6E1;BAMUM LETTER REN;Lo;0;L;;;;;N;;;;;
+A6E2;BAMUM LETTER MEN;Lo;0;L;;;;;N;;;;;
+A6E3;BAMUM LETTER MA;Lo;0;L;;;;;N;;;;;
+A6E4;BAMUM LETTER TI;Lo;0;L;;;;;N;;;;;
+A6E5;BAMUM LETTER KI;Lo;0;L;;;;;N;;;;;
+A6E6;BAMUM LETTER MO;Nl;0;L;;;;1;N;;;;;
+A6E7;BAMUM LETTER MBAA;Nl;0;L;;;;2;N;;;;;
+A6E8;BAMUM LETTER TET;Nl;0;L;;;;3;N;;;;;
+A6E9;BAMUM LETTER KPA;Nl;0;L;;;;4;N;;;;;
+A6EA;BAMUM LETTER TEN;Nl;0;L;;;;5;N;;;;;
+A6EB;BAMUM LETTER NTUU;Nl;0;L;;;;6;N;;;;;
+A6EC;BAMUM LETTER SAMBA;Nl;0;L;;;;7;N;;;;;
+A6ED;BAMUM LETTER FAAMAE;Nl;0;L;;;;8;N;;;;;
+A6EE;BAMUM LETTER KOVUU;Nl;0;L;;;;9;N;;;;;
+A6EF;BAMUM LETTER KOGHOM;Nl;0;L;;;;0;N;;;;;
+A6F0;BAMUM COMBINING MARK KOQNDON;Mn;230;NSM;;;;;N;;;;;
+A6F1;BAMUM COMBINING MARK TUKWENTIS;Mn;230;NSM;;;;;N;;;;;
+A6F2;BAMUM NJAEMLI;Po;0;L;;;;;N;;;;;
+A6F3;BAMUM FULL STOP;Po;0;L;;;;;N;;;;;
+A6F4;BAMUM COLON;Po;0;L;;;;;N;;;;;
+A6F5;BAMUM COMMA;Po;0;L;;;;;N;;;;;
+A6F6;BAMUM SEMICOLON;Po;0;L;;;;;N;;;;;
+A6F7;BAMUM QUESTION MARK;Po;0;L;;;;;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;;;;;
+A71B;MODIFIER LETTER RAISED UP ARROW;Lm;0;ON;;;;;N;;;;;
+A71C;MODIFIER LETTER RAISED DOWN ARROW;Lm;0;ON;;;;;N;;;;;
+A71D;MODIFIER LETTER RAISED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71E;MODIFIER LETTER RAISED INVERTED EXCLAMATION MARK;Lm;0;ON;;;;;N;;;;;
+A71F;MODIFIER LETTER LOW INVERTED EXCLAMATION MARK;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;;;;;
+A722;LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF;Lu;0;L;;;;;N;;;;A723;
+A723;LATIN SMALL LETTER EGYPTOLOGICAL ALEF;Ll;0;L;;;;;N;;;A722;;A722
+A724;LATIN CAPITAL LETTER EGYPTOLOGICAL AIN;Lu;0;L;;;;;N;;;;A725;
+A725;LATIN SMALL LETTER EGYPTOLOGICAL AIN;Ll;0;L;;;;;N;;;A724;;A724
+A726;LATIN CAPITAL LETTER HENG;Lu;0;L;;;;;N;;;;A727;
+A727;LATIN SMALL LETTER HENG;Ll;0;L;;;;;N;;;A726;;A726
+A728;LATIN CAPITAL LETTER TZ;Lu;0;L;;;;;N;;;;A729;
+A729;LATIN SMALL LETTER TZ;Ll;0;L;;;;;N;;;A728;;A728
+A72A;LATIN CAPITAL LETTER TRESILLO;Lu;0;L;;;;;N;;;;A72B;
+A72B;LATIN SMALL LETTER TRESILLO;Ll;0;L;;;;;N;;;A72A;;A72A
+A72C;LATIN CAPITAL LETTER CUATRILLO;Lu;0;L;;;;;N;;;;A72D;
+A72D;LATIN SMALL LETTER CUATRILLO;Ll;0;L;;;;;N;;;A72C;;A72C
+A72E;LATIN CAPITAL LETTER CUATRILLO WITH COMMA;Lu;0;L;;;;;N;;;;A72F;
+A72F;LATIN SMALL LETTER CUATRILLO WITH COMMA;Ll;0;L;;;;;N;;;A72E;;A72E
+A730;LATIN LETTER SMALL CAPITAL F;Ll;0;L;;;;;N;;;;;
+A731;LATIN LETTER SMALL CAPITAL S;Ll;0;L;;;;;N;;;;;
+A732;LATIN CAPITAL LETTER AA;Lu;0;L;;;;;N;;;;A733;
+A733;LATIN SMALL LETTER AA;Ll;0;L;;;;;N;;;A732;;A732
+A734;LATIN CAPITAL LETTER AO;Lu;0;L;;;;;N;;;;A735;
+A735;LATIN SMALL LETTER AO;Ll;0;L;;;;;N;;;A734;;A734
+A736;LATIN CAPITAL LETTER AU;Lu;0;L;;;;;N;;;;A737;
+A737;LATIN SMALL LETTER AU;Ll;0;L;;;;;N;;;A736;;A736
+A738;LATIN CAPITAL LETTER AV;Lu;0;L;;;;;N;;;;A739;
+A739;LATIN SMALL LETTER AV;Ll;0;L;;;;;N;;;A738;;A738
+A73A;LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR;Lu;0;L;;;;;N;;;;A73B;
+A73B;LATIN SMALL LETTER AV WITH HORIZONTAL BAR;Ll;0;L;;;;;N;;;A73A;;A73A
+A73C;LATIN CAPITAL LETTER AY;Lu;0;L;;;;;N;;;;A73D;
+A73D;LATIN SMALL LETTER AY;Ll;0;L;;;;;N;;;A73C;;A73C
+A73E;LATIN CAPITAL LETTER REVERSED C WITH DOT;Lu;0;L;;;;;N;;;;A73F;
+A73F;LATIN SMALL LETTER REVERSED C WITH DOT;Ll;0;L;;;;;N;;;A73E;;A73E
+A740;LATIN CAPITAL LETTER K WITH STROKE;Lu;0;L;;;;;N;;;;A741;
+A741;LATIN SMALL LETTER K WITH STROKE;Ll;0;L;;;;;N;;;A740;;A740
+A742;LATIN CAPITAL LETTER K WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A743;
+A743;LATIN SMALL LETTER K WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A742;;A742
+A744;LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A745;
+A745;LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE;Ll;0;L;;;;;N;;;A744;;A744
+A746;LATIN CAPITAL LETTER BROKEN L;Lu;0;L;;;;;N;;;;A747;
+A747;LATIN SMALL LETTER BROKEN L;Ll;0;L;;;;;N;;;A746;;A746
+A748;LATIN CAPITAL LETTER L WITH HIGH STROKE;Lu;0;L;;;;;N;;;;A749;
+A749;LATIN SMALL LETTER L WITH HIGH STROKE;Ll;0;L;;;;;N;;;A748;;A748
+A74A;LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY;Lu;0;L;;;;;N;;;;A74B;
+A74B;LATIN SMALL LETTER O WITH LONG STROKE OVERLAY;Ll;0;L;;;;;N;;;A74A;;A74A
+A74C;LATIN CAPITAL LETTER O WITH LOOP;Lu;0;L;;;;;N;;;;A74D;
+A74D;LATIN SMALL LETTER O WITH LOOP;Ll;0;L;;;;;N;;;A74C;;A74C
+A74E;LATIN CAPITAL LETTER OO;Lu;0;L;;;;;N;;;;A74F;
+A74F;LATIN SMALL LETTER OO;Ll;0;L;;;;;N;;;A74E;;A74E
+A750;LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A751;
+A751;LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A750;;A750
+A752;LATIN CAPITAL LETTER P WITH FLOURISH;Lu;0;L;;;;;N;;;;A753;
+A753;LATIN SMALL LETTER P WITH FLOURISH;Ll;0;L;;;;;N;;;A752;;A752
+A754;LATIN CAPITAL LETTER P WITH SQUIRREL TAIL;Lu;0;L;;;;;N;;;;A755;
+A755;LATIN SMALL LETTER P WITH SQUIRREL TAIL;Ll;0;L;;;;;N;;;A754;;A754
+A756;LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A757;
+A757;LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A756;;A756
+A758;LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A759;
+A759;LATIN SMALL LETTER Q WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A758;;A758
+A75A;LATIN CAPITAL LETTER R ROTUNDA;Lu;0;L;;;;;N;;;;A75B;
+A75B;LATIN SMALL LETTER R ROTUNDA;Ll;0;L;;;;;N;;;A75A;;A75A
+A75C;LATIN CAPITAL LETTER RUM ROTUNDA;Lu;0;L;;;;;N;;;;A75D;
+A75D;LATIN SMALL LETTER RUM ROTUNDA;Ll;0;L;;;;;N;;;A75C;;A75C
+A75E;LATIN CAPITAL LETTER V WITH DIAGONAL STROKE;Lu;0;L;;;;;N;;;;A75F;
+A75F;LATIN SMALL LETTER V WITH DIAGONAL STROKE;Ll;0;L;;;;;N;;;A75E;;A75E
+A760;LATIN CAPITAL LETTER VY;Lu;0;L;;;;;N;;;;A761;
+A761;LATIN SMALL LETTER VY;Ll;0;L;;;;;N;;;A760;;A760
+A762;LATIN CAPITAL LETTER VISIGOTHIC Z;Lu;0;L;;;;;N;;;;A763;
+A763;LATIN SMALL LETTER VISIGOTHIC Z;Ll;0;L;;;;;N;;;A762;;A762
+A764;LATIN CAPITAL LETTER THORN WITH STROKE;Lu;0;L;;;;;N;;;;A765;
+A765;LATIN SMALL LETTER THORN WITH STROKE;Ll;0;L;;;;;N;;;A764;;A764
+A766;LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER;Lu;0;L;;;;;N;;;;A767;
+A767;LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER;Ll;0;L;;;;;N;;;A766;;A766
+A768;LATIN CAPITAL LETTER VEND;Lu;0;L;;;;;N;;;;A769;
+A769;LATIN SMALL LETTER VEND;Ll;0;L;;;;;N;;;A768;;A768
+A76A;LATIN CAPITAL LETTER ET;Lu;0;L;;;;;N;;;;A76B;
+A76B;LATIN SMALL LETTER ET;Ll;0;L;;;;;N;;;A76A;;A76A
+A76C;LATIN CAPITAL LETTER IS;Lu;0;L;;;;;N;;;;A76D;
+A76D;LATIN SMALL LETTER IS;Ll;0;L;;;;;N;;;A76C;;A76C
+A76E;LATIN CAPITAL LETTER CON;Lu;0;L;;;;;N;;;;A76F;
+A76F;LATIN SMALL LETTER CON;Ll;0;L;;;;;N;;;A76E;;A76E
+A770;MODIFIER LETTER US;Lm;0;L;<super> A76F;;;;N;;;;;
+A771;LATIN SMALL LETTER DUM;Ll;0;L;;;;;N;;;;;
+A772;LATIN SMALL LETTER LUM;Ll;0;L;;;;;N;;;;;
+A773;LATIN SMALL LETTER MUM;Ll;0;L;;;;;N;;;;;
+A774;LATIN SMALL LETTER NUM;Ll;0;L;;;;;N;;;;;
+A775;LATIN SMALL LETTER RUM;Ll;0;L;;;;;N;;;;;
+A776;LATIN LETTER SMALL CAPITAL RUM;Ll;0;L;;;;;N;;;;;
+A777;LATIN SMALL LETTER TUM;Ll;0;L;;;;;N;;;;;
+A778;LATIN SMALL LETTER UM;Ll;0;L;;;;;N;;;;;
+A779;LATIN CAPITAL LETTER INSULAR D;Lu;0;L;;;;;N;;;;A77A;
+A77A;LATIN SMALL LETTER INSULAR D;Ll;0;L;;;;;N;;;A779;;A779
+A77B;LATIN CAPITAL LETTER INSULAR F;Lu;0;L;;;;;N;;;;A77C;
+A77C;LATIN SMALL LETTER INSULAR F;Ll;0;L;;;;;N;;;A77B;;A77B
+A77D;LATIN CAPITAL LETTER INSULAR G;Lu;0;L;;;;;N;;;;1D79;
+A77E;LATIN CAPITAL LETTER TURNED INSULAR G;Lu;0;L;;;;;N;;;;A77F;
+A77F;LATIN SMALL LETTER TURNED INSULAR G;Ll;0;L;;;;;N;;;A77E;;A77E
+A780;LATIN CAPITAL LETTER TURNED L;Lu;0;L;;;;;N;;;;A781;
+A781;LATIN SMALL LETTER TURNED L;Ll;0;L;;;;;N;;;A780;;A780
+A782;LATIN CAPITAL LETTER INSULAR R;Lu;0;L;;;;;N;;;;A783;
+A783;LATIN SMALL LETTER INSULAR R;Ll;0;L;;;;;N;;;A782;;A782
+A784;LATIN CAPITAL LETTER INSULAR S;Lu;0;L;;;;;N;;;;A785;
+A785;LATIN SMALL LETTER INSULAR S;Ll;0;L;;;;;N;;;A784;;A784
+A786;LATIN CAPITAL LETTER INSULAR T;Lu;0;L;;;;;N;;;;A787;
+A787;LATIN SMALL LETTER INSULAR T;Ll;0;L;;;;;N;;;A786;;A786
+A788;MODIFIER LETTER LOW CIRCUMFLEX ACCENT;Lm;0;ON;;;;;N;;;;;
+A789;MODIFIER LETTER COLON;Sk;0;L;;;;;N;;;;;
+A78A;MODIFIER LETTER SHORT EQUALS SIGN;Sk;0;L;;;;;N;;;;;
+A78B;LATIN CAPITAL LETTER SALTILLO;Lu;0;L;;;;;N;;;;A78C;
+A78C;LATIN SMALL LETTER SALTILLO;Ll;0;L;;;;;N;;;A78B;;A78B
+A7FB;LATIN EPIGRAPHIC LETTER REVERSED F;Lo;0;L;;;;;N;;;;;
+A7FC;LATIN EPIGRAPHIC LETTER REVERSED P;Lo;0;L;;;;;N;;;;;
+A7FD;LATIN EPIGRAPHIC LETTER INVERTED M;Lo;0;L;;;;;N;;;;;
+A7FE;LATIN EPIGRAPHIC LETTER I LONGA;Lo;0;L;;;;;N;;;;;
+A7FF;LATIN EPIGRAPHIC LETTER ARCHAIC M;Lo;0;L;;;;;N;;;;;
+A800;SYLOTI NAGRI LETTER A;Lo;0;L;;;;;N;;;;;
+A801;SYLOTI NAGRI LETTER I;Lo;0;L;;;;;N;;;;;
+A802;SYLOTI NAGRI SIGN DVISVARA;Mn;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;;;;;
+A830;NORTH INDIC FRACTION ONE QUARTER;No;0;L;;;;1/4;N;;;;;
+A831;NORTH INDIC FRACTION ONE HALF;No;0;L;;;;1/2;N;;;;;
+A832;NORTH INDIC FRACTION THREE QUARTERS;No;0;L;;;;3/4;N;;;;;
+A833;NORTH INDIC FRACTION ONE SIXTEENTH;No;0;L;;;;1/16;N;;;;;
+A834;NORTH INDIC FRACTION ONE EIGHTH;No;0;L;;;;1/8;N;;;;;
+A835;NORTH INDIC FRACTION THREE SIXTEENTHS;No;0;L;;;;3/16;N;;;;;
+A836;NORTH INDIC QUARTER MARK;So;0;L;;;;;N;;;;;
+A837;NORTH INDIC PLACEHOLDER MARK;So;0;L;;;;;N;;;;;
+A838;NORTH INDIC RUPEE MARK;Sc;0;ET;;;;;N;;;;;
+A839;NORTH INDIC QUANTITY MARK;So;0;ET;;;;;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;;;;;
+A880;SAURASHTRA SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
+A881;SAURASHTRA SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+A882;SAURASHTRA LETTER A;Lo;0;L;;;;;N;;;;;
+A883;SAURASHTRA LETTER AA;Lo;0;L;;;;;N;;;;;
+A884;SAURASHTRA LETTER I;Lo;0;L;;;;;N;;;;;
+A885;SAURASHTRA LETTER II;Lo;0;L;;;;;N;;;;;
+A886;SAURASHTRA LETTER U;Lo;0;L;;;;;N;;;;;
+A887;SAURASHTRA LETTER UU;Lo;0;L;;;;;N;;;;;
+A888;SAURASHTRA LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+A889;SAURASHTRA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+A88A;SAURASHTRA LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+A88B;SAURASHTRA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+A88C;SAURASHTRA LETTER E;Lo;0;L;;;;;N;;;;;
+A88D;SAURASHTRA LETTER EE;Lo;0;L;;;;;N;;;;;
+A88E;SAURASHTRA LETTER AI;Lo;0;L;;;;;N;;;;;
+A88F;SAURASHTRA LETTER O;Lo;0;L;;;;;N;;;;;
+A890;SAURASHTRA LETTER OO;Lo;0;L;;;;;N;;;;;
+A891;SAURASHTRA LETTER AU;Lo;0;L;;;;;N;;;;;
+A892;SAURASHTRA LETTER KA;Lo;0;L;;;;;N;;;;;
+A893;SAURASHTRA LETTER KHA;Lo;0;L;;;;;N;;;;;
+A894;SAURASHTRA LETTER GA;Lo;0;L;;;;;N;;;;;
+A895;SAURASHTRA LETTER GHA;Lo;0;L;;;;;N;;;;;
+A896;SAURASHTRA LETTER NGA;Lo;0;L;;;;;N;;;;;
+A897;SAURASHTRA LETTER CA;Lo;0;L;;;;;N;;;;;
+A898;SAURASHTRA LETTER CHA;Lo;0;L;;;;;N;;;;;
+A899;SAURASHTRA LETTER JA;Lo;0;L;;;;;N;;;;;
+A89A;SAURASHTRA LETTER JHA;Lo;0;L;;;;;N;;;;;
+A89B;SAURASHTRA LETTER NYA;Lo;0;L;;;;;N;;;;;
+A89C;SAURASHTRA LETTER TTA;Lo;0;L;;;;;N;;;;;
+A89D;SAURASHTRA LETTER TTHA;Lo;0;L;;;;;N;;;;;
+A89E;SAURASHTRA LETTER DDA;Lo;0;L;;;;;N;;;;;
+A89F;SAURASHTRA LETTER DDHA;Lo;0;L;;;;;N;;;;;
+A8A0;SAURASHTRA LETTER NNA;Lo;0;L;;;;;N;;;;;
+A8A1;SAURASHTRA LETTER TA;Lo;0;L;;;;;N;;;;;
+A8A2;SAURASHTRA LETTER THA;Lo;0;L;;;;;N;;;;;
+A8A3;SAURASHTRA LETTER DA;Lo;0;L;;;;;N;;;;;
+A8A4;SAURASHTRA LETTER DHA;Lo;0;L;;;;;N;;;;;
+A8A5;SAURASHTRA LETTER NA;Lo;0;L;;;;;N;;;;;
+A8A6;SAURASHTRA LETTER PA;Lo;0;L;;;;;N;;;;;
+A8A7;SAURASHTRA LETTER PHA;Lo;0;L;;;;;N;;;;;
+A8A8;SAURASHTRA LETTER BA;Lo;0;L;;;;;N;;;;;
+A8A9;SAURASHTRA LETTER BHA;Lo;0;L;;;;;N;;;;;
+A8AA;SAURASHTRA LETTER MA;Lo;0;L;;;;;N;;;;;
+A8AB;SAURASHTRA LETTER YA;Lo;0;L;;;;;N;;;;;
+A8AC;SAURASHTRA LETTER RA;Lo;0;L;;;;;N;;;;;
+A8AD;SAURASHTRA LETTER LA;Lo;0;L;;;;;N;;;;;
+A8AE;SAURASHTRA LETTER VA;Lo;0;L;;;;;N;;;;;
+A8AF;SAURASHTRA LETTER SHA;Lo;0;L;;;;;N;;;;;
+A8B0;SAURASHTRA LETTER SSA;Lo;0;L;;;;;N;;;;;
+A8B1;SAURASHTRA LETTER SA;Lo;0;L;;;;;N;;;;;
+A8B2;SAURASHTRA LETTER HA;Lo;0;L;;;;;N;;;;;
+A8B3;SAURASHTRA LETTER LLA;Lo;0;L;;;;;N;;;;;
+A8B4;SAURASHTRA CONSONANT SIGN HAARU;Mc;0;L;;;;;N;;;;;
+A8B5;SAURASHTRA VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+A8B6;SAURASHTRA VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+A8B7;SAURASHTRA VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+A8B8;SAURASHTRA VOWEL SIGN U;Mc;0;L;;;;;N;;;;;
+A8B9;SAURASHTRA VOWEL SIGN UU;Mc;0;L;;;;;N;;;;;
+A8BA;SAURASHTRA VOWEL SIGN VOCALIC R;Mc;0;L;;;;;N;;;;;
+A8BB;SAURASHTRA VOWEL SIGN VOCALIC RR;Mc;0;L;;;;;N;;;;;
+A8BC;SAURASHTRA VOWEL SIGN VOCALIC L;Mc;0;L;;;;;N;;;;;
+A8BD;SAURASHTRA VOWEL SIGN VOCALIC LL;Mc;0;L;;;;;N;;;;;
+A8BE;SAURASHTRA VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+A8BF;SAURASHTRA VOWEL SIGN EE;Mc;0;L;;;;;N;;;;;
+A8C0;SAURASHTRA VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+A8C1;SAURASHTRA VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+A8C2;SAURASHTRA VOWEL SIGN OO;Mc;0;L;;;;;N;;;;;
+A8C3;SAURASHTRA VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+A8C4;SAURASHTRA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+A8CE;SAURASHTRA DANDA;Po;0;L;;;;;N;;;;;
+A8CF;SAURASHTRA DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A8E0;COMBINING DEVANAGARI DIGIT ZERO;Mn;230;NSM;;;;;N;;;;;
+A8E1;COMBINING DEVANAGARI DIGIT ONE;Mn;230;NSM;;;;;N;;;;;
+A8E2;COMBINING DEVANAGARI DIGIT TWO;Mn;230;NSM;;;;;N;;;;;
+A8E3;COMBINING DEVANAGARI DIGIT THREE;Mn;230;NSM;;;;;N;;;;;
+A8E4;COMBINING DEVANAGARI DIGIT FOUR;Mn;230;NSM;;;;;N;;;;;
+A8E5;COMBINING DEVANAGARI DIGIT FIVE;Mn;230;NSM;;;;;N;;;;;
+A8E6;COMBINING DEVANAGARI DIGIT SIX;Mn;230;NSM;;;;;N;;;;;
+A8E7;COMBINING DEVANAGARI DIGIT SEVEN;Mn;230;NSM;;;;;N;;;;;
+A8E8;COMBINING DEVANAGARI DIGIT EIGHT;Mn;230;NSM;;;;;N;;;;;
+A8E9;COMBINING DEVANAGARI DIGIT NINE;Mn;230;NSM;;;;;N;;;;;
+A8EA;COMBINING DEVANAGARI LETTER A;Mn;230;NSM;;;;;N;;;;;
+A8EB;COMBINING DEVANAGARI LETTER U;Mn;230;NSM;;;;;N;;;;;
+A8EC;COMBINING DEVANAGARI LETTER KA;Mn;230;NSM;;;;;N;;;;;
+A8ED;COMBINING DEVANAGARI LETTER NA;Mn;230;NSM;;;;;N;;;;;
+A8EE;COMBINING DEVANAGARI LETTER PA;Mn;230;NSM;;;;;N;;;;;
+A8EF;COMBINING DEVANAGARI LETTER RA;Mn;230;NSM;;;;;N;;;;;
+A8F0;COMBINING DEVANAGARI LETTER VI;Mn;230;NSM;;;;;N;;;;;
+A8F1;COMBINING DEVANAGARI SIGN AVAGRAHA;Mn;230;NSM;;;;;N;;;;;
+A8F2;DEVANAGARI SIGN SPACING CANDRABINDU;Lo;0;L;;;;;N;;;;;
+A8F3;DEVANAGARI SIGN CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;
+A8F4;DEVANAGARI SIGN DOUBLE CANDRABINDU VIRAMA;Lo;0;L;;;;;N;;;;;
+A8F5;DEVANAGARI SIGN CANDRABINDU TWO;Lo;0;L;;;;;N;;;;;
+A8F6;DEVANAGARI SIGN CANDRABINDU THREE;Lo;0;L;;;;;N;;;;;
+A8F7;DEVANAGARI SIGN CANDRABINDU AVAGRAHA;Lo;0;L;;;;;N;;;;;
+A8F8;DEVANAGARI SIGN PUSHPIKA;Po;0;L;;;;;N;;;;;
+A8F9;DEVANAGARI GAP FILLER;Po;0;L;;;;;N;;;;;
+A8FA;DEVANAGARI CARET;Po;0;L;;;;;N;;;;;
+A8FB;DEVANAGARI HEADSTROKE;Lo;0;L;;;;;N;;;;;
+A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A90A;KAYAH LI LETTER KA;Lo;0;L;;;;;N;;;;;
+A90B;KAYAH LI LETTER KHA;Lo;0;L;;;;;N;;;;;
+A90C;KAYAH LI LETTER GA;Lo;0;L;;;;;N;;;;;
+A90D;KAYAH LI LETTER NGA;Lo;0;L;;;;;N;;;;;
+A90E;KAYAH LI LETTER SA;Lo;0;L;;;;;N;;;;;
+A90F;KAYAH LI LETTER SHA;Lo;0;L;;;;;N;;;;;
+A910;KAYAH LI LETTER ZA;Lo;0;L;;;;;N;;;;;
+A911;KAYAH LI LETTER NYA;Lo;0;L;;;;;N;;;;;
+A912;KAYAH LI LETTER TA;Lo;0;L;;;;;N;;;;;
+A913;KAYAH LI LETTER HTA;Lo;0;L;;;;;N;;;;;
+A914;KAYAH LI LETTER NA;Lo;0;L;;;;;N;;;;;
+A915;KAYAH LI LETTER PA;Lo;0;L;;;;;N;;;;;
+A916;KAYAH LI LETTER PHA;Lo;0;L;;;;;N;;;;;
+A917;KAYAH LI LETTER MA;Lo;0;L;;;;;N;;;;;
+A918;KAYAH LI LETTER DA;Lo;0;L;;;;;N;;;;;
+A919;KAYAH LI LETTER BA;Lo;0;L;;;;;N;;;;;
+A91A;KAYAH LI LETTER RA;Lo;0;L;;;;;N;;;;;
+A91B;KAYAH LI LETTER YA;Lo;0;L;;;;;N;;;;;
+A91C;KAYAH LI LETTER LA;Lo;0;L;;;;;N;;;;;
+A91D;KAYAH LI LETTER WA;Lo;0;L;;;;;N;;;;;
+A91E;KAYAH LI LETTER THA;Lo;0;L;;;;;N;;;;;
+A91F;KAYAH LI LETTER HA;Lo;0;L;;;;;N;;;;;
+A920;KAYAH LI LETTER VA;Lo;0;L;;;;;N;;;;;
+A921;KAYAH LI LETTER CA;Lo;0;L;;;;;N;;;;;
+A922;KAYAH LI LETTER A;Lo;0;L;;;;;N;;;;;
+A923;KAYAH LI LETTER OE;Lo;0;L;;;;;N;;;;;
+A924;KAYAH LI LETTER I;Lo;0;L;;;;;N;;;;;
+A925;KAYAH LI LETTER OO;Lo;0;L;;;;;N;;;;;
+A926;KAYAH LI VOWEL UE;Mn;0;NSM;;;;;N;;;;;
+A927;KAYAH LI VOWEL E;Mn;0;NSM;;;;;N;;;;;
+A928;KAYAH LI VOWEL U;Mn;0;NSM;;;;;N;;;;;
+A929;KAYAH LI VOWEL EE;Mn;0;NSM;;;;;N;;;;;
+A92A;KAYAH LI VOWEL O;Mn;0;NSM;;;;;N;;;;;
+A92B;KAYAH LI TONE PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92C;KAYAH LI TONE CALYA;Mn;220;NSM;;;;;N;;;;;
+A92D;KAYAH LI TONE CALYA PLOPHU;Mn;220;NSM;;;;;N;;;;;
+A92E;KAYAH LI SIGN CWI;Po;0;L;;;;;N;;;;;
+A92F;KAYAH LI SIGN SHYA;Po;0;L;;;;;N;;;;;
+A930;REJANG LETTER KA;Lo;0;L;;;;;N;;;;;
+A931;REJANG LETTER GA;Lo;0;L;;;;;N;;;;;
+A932;REJANG LETTER NGA;Lo;0;L;;;;;N;;;;;
+A933;REJANG LETTER TA;Lo;0;L;;;;;N;;;;;
+A934;REJANG LETTER DA;Lo;0;L;;;;;N;;;;;
+A935;REJANG LETTER NA;Lo;0;L;;;;;N;;;;;
+A936;REJANG LETTER PA;Lo;0;L;;;;;N;;;;;
+A937;REJANG LETTER BA;Lo;0;L;;;;;N;;;;;
+A938;REJANG LETTER MA;Lo;0;L;;;;;N;;;;;
+A939;REJANG LETTER CA;Lo;0;L;;;;;N;;;;;
+A93A;REJANG LETTER JA;Lo;0;L;;;;;N;;;;;
+A93B;REJANG LETTER NYA;Lo;0;L;;;;;N;;;;;
+A93C;REJANG LETTER SA;Lo;0;L;;;;;N;;;;;
+A93D;REJANG LETTER RA;Lo;0;L;;;;;N;;;;;
+A93E;REJANG LETTER LA;Lo;0;L;;;;;N;;;;;
+A93F;REJANG LETTER YA;Lo;0;L;;;;;N;;;;;
+A940;REJANG LETTER WA;Lo;0;L;;;;;N;;;;;
+A941;REJANG LETTER HA;Lo;0;L;;;;;N;;;;;
+A942;REJANG LETTER MBA;Lo;0;L;;;;;N;;;;;
+A943;REJANG LETTER NGGA;Lo;0;L;;;;;N;;;;;
+A944;REJANG LETTER NDA;Lo;0;L;;;;;N;;;;;
+A945;REJANG LETTER NYJA;Lo;0;L;;;;;N;;;;;
+A946;REJANG LETTER A;Lo;0;L;;;;;N;;;;;
+A947;REJANG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+A948;REJANG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+A949;REJANG VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+A94A;REJANG VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+A94B;REJANG VOWEL SIGN O;Mn;0;NSM;;;;;N;;;;;
+A94C;REJANG VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+A94D;REJANG VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
+A94E;REJANG VOWEL SIGN EA;Mn;0;NSM;;;;;N;;;;;
+A94F;REJANG CONSONANT SIGN NG;Mn;0;NSM;;;;;N;;;;;
+A950;REJANG CONSONANT SIGN N;Mn;0;NSM;;;;;N;;;;;
+A951;REJANG CONSONANT SIGN R;Mn;0;NSM;;;;;N;;;;;
+A952;REJANG CONSONANT SIGN H;Mc;0;L;;;;;N;;;;;
+A953;REJANG VIRAMA;Mc;9;L;;;;;N;;;;;
+A95F;REJANG SECTION MARK;Po;0;L;;;;;N;;;;;
+A960;HANGUL CHOSEONG TIKEUT-MIEUM;Lo;0;L;;;;;N;;;;;
+A961;HANGUL CHOSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
+A962;HANGUL CHOSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;
+A963;HANGUL CHOSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;
+A964;HANGUL CHOSEONG RIEUL-KIYEOK;Lo;0;L;;;;;N;;;;;
+A965;HANGUL CHOSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+A966;HANGUL CHOSEONG RIEUL-TIKEUT;Lo;0;L;;;;;N;;;;;
+A967;HANGUL CHOSEONG RIEUL-SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
+A968;HANGUL CHOSEONG RIEUL-MIEUM;Lo;0;L;;;;;N;;;;;
+A969;HANGUL CHOSEONG RIEUL-PIEUP;Lo;0;L;;;;;N;;;;;
+A96A;HANGUL CHOSEONG RIEUL-SSANGPIEUP;Lo;0;L;;;;;N;;;;;
+A96B;HANGUL CHOSEONG RIEUL-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+A96C;HANGUL CHOSEONG RIEUL-SIOS;Lo;0;L;;;;;N;;;;;
+A96D;HANGUL CHOSEONG RIEUL-CIEUC;Lo;0;L;;;;;N;;;;;
+A96E;HANGUL CHOSEONG RIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+A96F;HANGUL CHOSEONG MIEUM-KIYEOK;Lo;0;L;;;;;N;;;;;
+A970;HANGUL CHOSEONG MIEUM-TIKEUT;Lo;0;L;;;;;N;;;;;
+A971;HANGUL CHOSEONG MIEUM-SIOS;Lo;0;L;;;;;N;;;;;
+A972;HANGUL CHOSEONG PIEUP-SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+A973;HANGUL CHOSEONG PIEUP-KHIEUKH;Lo;0;L;;;;;N;;;;;
+A974;HANGUL CHOSEONG PIEUP-HIEUH;Lo;0;L;;;;;N;;;;;
+A975;HANGUL CHOSEONG SSANGSIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+A976;HANGUL CHOSEONG IEUNG-RIEUL;Lo;0;L;;;;;N;;;;;
+A977;HANGUL CHOSEONG IEUNG-HIEUH;Lo;0;L;;;;;N;;;;;
+A978;HANGUL CHOSEONG SSANGCIEUC-HIEUH;Lo;0;L;;;;;N;;;;;
+A979;HANGUL CHOSEONG SSANGTHIEUTH;Lo;0;L;;;;;N;;;;;
+A97A;HANGUL CHOSEONG PHIEUPH-HIEUH;Lo;0;L;;;;;N;;;;;
+A97B;HANGUL CHOSEONG HIEUH-SIOS;Lo;0;L;;;;;N;;;;;
+A97C;HANGUL CHOSEONG SSANGYEORINHIEUH;Lo;0;L;;;;;N;;;;;
+A980;JAVANESE SIGN PANYANGGA;Mn;0;NSM;;;;;N;;;;;
+A981;JAVANESE SIGN CECAK;Mn;0;NSM;;;;;N;;;;;
+A982;JAVANESE SIGN LAYAR;Mn;0;NSM;;;;;N;;;;;
+A983;JAVANESE SIGN WIGNYAN;Mc;0;L;;;;;N;;;;;
+A984;JAVANESE LETTER A;Lo;0;L;;;;;N;;;;;
+A985;JAVANESE LETTER I KAWI;Lo;0;L;;;;;N;;;;;
+A986;JAVANESE LETTER I;Lo;0;L;;;;;N;;;;;
+A987;JAVANESE LETTER II;Lo;0;L;;;;;N;;;;;
+A988;JAVANESE LETTER U;Lo;0;L;;;;;N;;;;;
+A989;JAVANESE LETTER PA CEREK;Lo;0;L;;;;;N;;;;;
+A98A;JAVANESE LETTER NGA LELET;Lo;0;L;;;;;N;;;;;
+A98B;JAVANESE LETTER NGA LELET RASWADI;Lo;0;L;;;;;N;;;;;
+A98C;JAVANESE LETTER E;Lo;0;L;;;;;N;;;;;
+A98D;JAVANESE LETTER AI;Lo;0;L;;;;;N;;;;;
+A98E;JAVANESE LETTER O;Lo;0;L;;;;;N;;;;;
+A98F;JAVANESE LETTER KA;Lo;0;L;;;;;N;;;;;
+A990;JAVANESE LETTER KA SASAK;Lo;0;L;;;;;N;;;;;
+A991;JAVANESE LETTER KA MURDA;Lo;0;L;;;;;N;;;;;
+A992;JAVANESE LETTER GA;Lo;0;L;;;;;N;;;;;
+A993;JAVANESE LETTER GA MURDA;Lo;0;L;;;;;N;;;;;
+A994;JAVANESE LETTER NGA;Lo;0;L;;;;;N;;;;;
+A995;JAVANESE LETTER CA;Lo;0;L;;;;;N;;;;;
+A996;JAVANESE LETTER CA MURDA;Lo;0;L;;;;;N;;;;;
+A997;JAVANESE LETTER JA;Lo;0;L;;;;;N;;;;;
+A998;JAVANESE LETTER NYA MURDA;Lo;0;L;;;;;N;;;;;
+A999;JAVANESE LETTER JA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+A99A;JAVANESE LETTER NYA;Lo;0;L;;;;;N;;;;;
+A99B;JAVANESE LETTER TTA;Lo;0;L;;;;;N;;;;;
+A99C;JAVANESE LETTER TTA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+A99D;JAVANESE LETTER DDA;Lo;0;L;;;;;N;;;;;
+A99E;JAVANESE LETTER DDA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+A99F;JAVANESE LETTER NA MURDA;Lo;0;L;;;;;N;;;;;
+A9A0;JAVANESE LETTER TA;Lo;0;L;;;;;N;;;;;
+A9A1;JAVANESE LETTER TA MURDA;Lo;0;L;;;;;N;;;;;
+A9A2;JAVANESE LETTER DA;Lo;0;L;;;;;N;;;;;
+A9A3;JAVANESE LETTER DA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+A9A4;JAVANESE LETTER NA;Lo;0;L;;;;;N;;;;;
+A9A5;JAVANESE LETTER PA;Lo;0;L;;;;;N;;;;;
+A9A6;JAVANESE LETTER PA MURDA;Lo;0;L;;;;;N;;;;;
+A9A7;JAVANESE LETTER BA;Lo;0;L;;;;;N;;;;;
+A9A8;JAVANESE LETTER BA MURDA;Lo;0;L;;;;;N;;;;;
+A9A9;JAVANESE LETTER MA;Lo;0;L;;;;;N;;;;;
+A9AA;JAVANESE LETTER YA;Lo;0;L;;;;;N;;;;;
+A9AB;JAVANESE LETTER RA;Lo;0;L;;;;;N;;;;;
+A9AC;JAVANESE LETTER RA AGUNG;Lo;0;L;;;;;N;;;;;
+A9AD;JAVANESE LETTER LA;Lo;0;L;;;;;N;;;;;
+A9AE;JAVANESE LETTER WA;Lo;0;L;;;;;N;;;;;
+A9AF;JAVANESE LETTER SA MURDA;Lo;0;L;;;;;N;;;;;
+A9B0;JAVANESE LETTER SA MAHAPRANA;Lo;0;L;;;;;N;;;;;
+A9B1;JAVANESE LETTER SA;Lo;0;L;;;;;N;;;;;
+A9B2;JAVANESE LETTER HA;Lo;0;L;;;;;N;;;;;
+A9B3;JAVANESE SIGN CECAK TELU;Mn;7;NSM;;;;;N;;;;;
+A9B4;JAVANESE VOWEL SIGN TARUNG;Mc;0;L;;;;;N;;;;;
+A9B5;JAVANESE VOWEL SIGN TOLONG;Mc;0;L;;;;;N;;;;;
+A9B6;JAVANESE VOWEL SIGN WULU;Mn;0;NSM;;;;;N;;;;;
+A9B7;JAVANESE VOWEL SIGN WULU MELIK;Mn;0;NSM;;;;;N;;;;;
+A9B8;JAVANESE VOWEL SIGN SUKU;Mn;0;NSM;;;;;N;;;;;
+A9B9;JAVANESE VOWEL SIGN SUKU MENDUT;Mn;0;NSM;;;;;N;;;;;
+A9BA;JAVANESE VOWEL SIGN TALING;Mc;0;L;;;;;N;;;;;
+A9BB;JAVANESE VOWEL SIGN DIRGA MURE;Mc;0;L;;;;;N;;;;;
+A9BC;JAVANESE VOWEL SIGN PEPET;Mn;0;NSM;;;;;N;;;;;
+A9BD;JAVANESE CONSONANT SIGN KERET;Mc;0;L;;;;;N;;;;;
+A9BE;JAVANESE CONSONANT SIGN PENGKAL;Mc;0;L;;;;;N;;;;;
+A9BF;JAVANESE CONSONANT SIGN CAKRA;Mc;0;L;;;;;N;;;;;
+A9C0;JAVANESE PANGKON;Mc;9;L;;;;;N;;;;;
+A9C1;JAVANESE LEFT RERENGGAN;Po;0;L;;;;;N;;;;;
+A9C2;JAVANESE RIGHT RERENGGAN;Po;0;L;;;;;N;;;;;
+A9C3;JAVANESE PADA ANDAP;Po;0;L;;;;;N;;;;;
+A9C4;JAVANESE PADA MADYA;Po;0;L;;;;;N;;;;;
+A9C5;JAVANESE PADA LUHUR;Po;0;L;;;;;N;;;;;
+A9C6;JAVANESE PADA WINDU;Po;0;L;;;;;N;;;;;
+A9C7;JAVANESE PADA PANGKAT;Po;0;L;;;;;N;;;;;
+A9C8;JAVANESE PADA LINGSA;Po;0;L;;;;;N;;;;;
+A9C9;JAVANESE PADA LUNGSI;Po;0;L;;;;;N;;;;;
+A9CA;JAVANESE PADA ADEG;Po;0;L;;;;;N;;;;;
+A9CB;JAVANESE PADA ADEG ADEG;Po;0;L;;;;;N;;;;;
+A9CC;JAVANESE PADA PISELEH;Po;0;L;;;;;N;;;;;
+A9CD;JAVANESE TURNED PADA PISELEH;Po;0;L;;;;;N;;;;;
+A9CF;JAVANESE PANGRANGKEP;Lm;0;L;;;;;N;;;;;
+A9D0;JAVANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+A9D1;JAVANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+A9D2;JAVANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+A9D3;JAVANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+A9D4;JAVANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+A9D5;JAVANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+A9D6;JAVANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+A9D7;JAVANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+A9D8;JAVANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+A9D9;JAVANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+A9DE;JAVANESE PADA TIRTA TUMETES;Po;0;L;;;;;N;;;;;
+A9DF;JAVANESE PADA ISEN-ISEN;Po;0;L;;;;;N;;;;;
+AA00;CHAM LETTER A;Lo;0;L;;;;;N;;;;;
+AA01;CHAM LETTER I;Lo;0;L;;;;;N;;;;;
+AA02;CHAM LETTER U;Lo;0;L;;;;;N;;;;;
+AA03;CHAM LETTER E;Lo;0;L;;;;;N;;;;;
+AA04;CHAM LETTER AI;Lo;0;L;;;;;N;;;;;
+AA05;CHAM LETTER O;Lo;0;L;;;;;N;;;;;
+AA06;CHAM LETTER KA;Lo;0;L;;;;;N;;;;;
+AA07;CHAM LETTER KHA;Lo;0;L;;;;;N;;;;;
+AA08;CHAM LETTER GA;Lo;0;L;;;;;N;;;;;
+AA09;CHAM LETTER GHA;Lo;0;L;;;;;N;;;;;
+AA0A;CHAM LETTER NGUE;Lo;0;L;;;;;N;;;;;
+AA0B;CHAM LETTER NGA;Lo;0;L;;;;;N;;;;;
+AA0C;CHAM LETTER CHA;Lo;0;L;;;;;N;;;;;
+AA0D;CHAM LETTER CHHA;Lo;0;L;;;;;N;;;;;
+AA0E;CHAM LETTER JA;Lo;0;L;;;;;N;;;;;
+AA0F;CHAM LETTER JHA;Lo;0;L;;;;;N;;;;;
+AA10;CHAM LETTER NHUE;Lo;0;L;;;;;N;;;;;
+AA11;CHAM LETTER NHA;Lo;0;L;;;;;N;;;;;
+AA12;CHAM LETTER NHJA;Lo;0;L;;;;;N;;;;;
+AA13;CHAM LETTER TA;Lo;0;L;;;;;N;;;;;
+AA14;CHAM LETTER THA;Lo;0;L;;;;;N;;;;;
+AA15;CHAM LETTER DA;Lo;0;L;;;;;N;;;;;
+AA16;CHAM LETTER DHA;Lo;0;L;;;;;N;;;;;
+AA17;CHAM LETTER NUE;Lo;0;L;;;;;N;;;;;
+AA18;CHAM LETTER NA;Lo;0;L;;;;;N;;;;;
+AA19;CHAM LETTER DDA;Lo;0;L;;;;;N;;;;;
+AA1A;CHAM LETTER PA;Lo;0;L;;;;;N;;;;;
+AA1B;CHAM LETTER PPA;Lo;0;L;;;;;N;;;;;
+AA1C;CHAM LETTER PHA;Lo;0;L;;;;;N;;;;;
+AA1D;CHAM LETTER BA;Lo;0;L;;;;;N;;;;;
+AA1E;CHAM LETTER BHA;Lo;0;L;;;;;N;;;;;
+AA1F;CHAM LETTER MUE;Lo;0;L;;;;;N;;;;;
+AA20;CHAM LETTER MA;Lo;0;L;;;;;N;;;;;
+AA21;CHAM LETTER BBA;Lo;0;L;;;;;N;;;;;
+AA22;CHAM LETTER YA;Lo;0;L;;;;;N;;;;;
+AA23;CHAM LETTER RA;Lo;0;L;;;;;N;;;;;
+AA24;CHAM LETTER LA;Lo;0;L;;;;;N;;;;;
+AA25;CHAM LETTER VA;Lo;0;L;;;;;N;;;;;
+AA26;CHAM LETTER SSA;Lo;0;L;;;;;N;;;;;
+AA27;CHAM LETTER SA;Lo;0;L;;;;;N;;;;;
+AA28;CHAM LETTER HA;Lo;0;L;;;;;N;;;;;
+AA29;CHAM VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
+AA2A;CHAM VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+AA2B;CHAM VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+AA2C;CHAM VOWEL SIGN EI;Mn;0;NSM;;;;;N;;;;;
+AA2D;CHAM VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+AA2E;CHAM VOWEL SIGN OE;Mn;0;NSM;;;;;N;;;;;
+AA2F;CHAM VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+AA30;CHAM VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+AA31;CHAM VOWEL SIGN AU;Mn;0;NSM;;;;;N;;;;;
+AA32;CHAM VOWEL SIGN UE;Mn;0;NSM;;;;;N;;;;;
+AA33;CHAM CONSONANT SIGN YA;Mc;0;L;;;;;N;;;;;
+AA34;CHAM CONSONANT SIGN RA;Mc;0;L;;;;;N;;;;;
+AA35;CHAM CONSONANT SIGN LA;Mn;0;NSM;;;;;N;;;;;
+AA36;CHAM CONSONANT SIGN WA;Mn;0;NSM;;;;;N;;;;;
+AA40;CHAM LETTER FINAL K;Lo;0;L;;;;;N;;;;;
+AA41;CHAM LETTER FINAL G;Lo;0;L;;;;;N;;;;;
+AA42;CHAM LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+AA43;CHAM CONSONANT SIGN FINAL NG;Mn;0;NSM;;;;;N;;;;;
+AA44;CHAM LETTER FINAL CH;Lo;0;L;;;;;N;;;;;
+AA45;CHAM LETTER FINAL T;Lo;0;L;;;;;N;;;;;
+AA46;CHAM LETTER FINAL N;Lo;0;L;;;;;N;;;;;
+AA47;CHAM LETTER FINAL P;Lo;0;L;;;;;N;;;;;
+AA48;CHAM LETTER FINAL Y;Lo;0;L;;;;;N;;;;;
+AA49;CHAM LETTER FINAL R;Lo;0;L;;;;;N;;;;;
+AA4A;CHAM LETTER FINAL L;Lo;0;L;;;;;N;;;;;
+AA4B;CHAM LETTER FINAL SS;Lo;0;L;;;;;N;;;;;
+AA4C;CHAM CONSONANT SIGN FINAL M;Mn;0;NSM;;;;;N;;;;;
+AA4D;CHAM CONSONANT SIGN FINAL H;Mc;0;L;;;;;N;;;;;
+AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+AA5C;CHAM PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
+AA5D;CHAM PUNCTUATION DANDA;Po;0;L;;;;;N;;;;;
+AA5E;CHAM PUNCTUATION DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+AA5F;CHAM PUNCTUATION TRIPLE DANDA;Po;0;L;;;;;N;;;;;
+AA60;MYANMAR LETTER KHAMTI GA;Lo;0;L;;;;;N;;;;;
+AA61;MYANMAR LETTER KHAMTI CA;Lo;0;L;;;;;N;;;;;
+AA62;MYANMAR LETTER KHAMTI CHA;Lo;0;L;;;;;N;;;;;
+AA63;MYANMAR LETTER KHAMTI JA;Lo;0;L;;;;;N;;;;;
+AA64;MYANMAR LETTER KHAMTI JHA;Lo;0;L;;;;;N;;;;;
+AA65;MYANMAR LETTER KHAMTI NYA;Lo;0;L;;;;;N;;;;;
+AA66;MYANMAR LETTER KHAMTI TTA;Lo;0;L;;;;;N;;;;;
+AA67;MYANMAR LETTER KHAMTI TTHA;Lo;0;L;;;;;N;;;;;
+AA68;MYANMAR LETTER KHAMTI DDA;Lo;0;L;;;;;N;;;;;
+AA69;MYANMAR LETTER KHAMTI DDHA;Lo;0;L;;;;;N;;;;;
+AA6A;MYANMAR LETTER KHAMTI DHA;Lo;0;L;;;;;N;;;;;
+AA6B;MYANMAR LETTER KHAMTI NA;Lo;0;L;;;;;N;;;;;
+AA6C;MYANMAR LETTER KHAMTI SA;Lo;0;L;;;;;N;;;;;
+AA6D;MYANMAR LETTER KHAMTI HA;Lo;0;L;;;;;N;;;;;
+AA6E;MYANMAR LETTER KHAMTI HHA;Lo;0;L;;;;;N;;;;;
+AA6F;MYANMAR LETTER KHAMTI FA;Lo;0;L;;;;;N;;;;;
+AA70;MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION;Lm;0;L;;;;;N;;;;;
+AA71;MYANMAR LETTER KHAMTI XA;Lo;0;L;;;;;N;;;;;
+AA72;MYANMAR LETTER KHAMTI ZA;Lo;0;L;;;;;N;;;;;
+AA73;MYANMAR LETTER KHAMTI RA;Lo;0;L;;;;;N;;;;;
+AA74;MYANMAR LOGOGRAM KHAMTI OAY;Lo;0;L;;;;;N;;;;;
+AA75;MYANMAR LOGOGRAM KHAMTI QN;Lo;0;L;;;;;N;;;;;
+AA76;MYANMAR LOGOGRAM KHAMTI HM;Lo;0;L;;;;;N;;;;;
+AA77;MYANMAR SYMBOL AITON EXCLAMATION;So;0;L;;;;;N;;;;;
+AA78;MYANMAR SYMBOL AITON ONE;So;0;L;;;;;N;;;;;
+AA79;MYANMAR SYMBOL AITON TWO;So;0;L;;;;;N;;;;;
+AA7A;MYANMAR LETTER AITON RA;Lo;0;L;;;;;N;;;;;
+AA7B;MYANMAR SIGN PAO KAREN TONE;Mc;0;L;;;;;N;;;;;
+AA80;TAI VIET LETTER LOW KO;Lo;0;L;;;;;N;;;;;
+AA81;TAI VIET LETTER HIGH KO;Lo;0;L;;;;;N;;;;;
+AA82;TAI VIET LETTER LOW KHO;Lo;0;L;;;;;N;;;;;
+AA83;TAI VIET LETTER HIGH KHO;Lo;0;L;;;;;N;;;;;
+AA84;TAI VIET LETTER LOW KHHO;Lo;0;L;;;;;N;;;;;
+AA85;TAI VIET LETTER HIGH KHHO;Lo;0;L;;;;;N;;;;;
+AA86;TAI VIET LETTER LOW GO;Lo;0;L;;;;;N;;;;;
+AA87;TAI VIET LETTER HIGH GO;Lo;0;L;;;;;N;;;;;
+AA88;TAI VIET LETTER LOW NGO;Lo;0;L;;;;;N;;;;;
+AA89;TAI VIET LETTER HIGH NGO;Lo;0;L;;;;;N;;;;;
+AA8A;TAI VIET LETTER LOW CO;Lo;0;L;;;;;N;;;;;
+AA8B;TAI VIET LETTER HIGH CO;Lo;0;L;;;;;N;;;;;
+AA8C;TAI VIET LETTER LOW CHO;Lo;0;L;;;;;N;;;;;
+AA8D;TAI VIET LETTER HIGH CHO;Lo;0;L;;;;;N;;;;;
+AA8E;TAI VIET LETTER LOW SO;Lo;0;L;;;;;N;;;;;
+AA8F;TAI VIET LETTER HIGH SO;Lo;0;L;;;;;N;;;;;
+AA90;TAI VIET LETTER LOW NYO;Lo;0;L;;;;;N;;;;;
+AA91;TAI VIET LETTER HIGH NYO;Lo;0;L;;;;;N;;;;;
+AA92;TAI VIET LETTER LOW DO;Lo;0;L;;;;;N;;;;;
+AA93;TAI VIET LETTER HIGH DO;Lo;0;L;;;;;N;;;;;
+AA94;TAI VIET LETTER LOW TO;Lo;0;L;;;;;N;;;;;
+AA95;TAI VIET LETTER HIGH TO;Lo;0;L;;;;;N;;;;;
+AA96;TAI VIET LETTER LOW THO;Lo;0;L;;;;;N;;;;;
+AA97;TAI VIET LETTER HIGH THO;Lo;0;L;;;;;N;;;;;
+AA98;TAI VIET LETTER LOW NO;Lo;0;L;;;;;N;;;;;
+AA99;TAI VIET LETTER HIGH NO;Lo;0;L;;;;;N;;;;;
+AA9A;TAI VIET LETTER LOW BO;Lo;0;L;;;;;N;;;;;
+AA9B;TAI VIET LETTER HIGH BO;Lo;0;L;;;;;N;;;;;
+AA9C;TAI VIET LETTER LOW PO;Lo;0;L;;;;;N;;;;;
+AA9D;TAI VIET LETTER HIGH PO;Lo;0;L;;;;;N;;;;;
+AA9E;TAI VIET LETTER LOW PHO;Lo;0;L;;;;;N;;;;;
+AA9F;TAI VIET LETTER HIGH PHO;Lo;0;L;;;;;N;;;;;
+AAA0;TAI VIET LETTER LOW FO;Lo;0;L;;;;;N;;;;;
+AAA1;TAI VIET LETTER HIGH FO;Lo;0;L;;;;;N;;;;;
+AAA2;TAI VIET LETTER LOW MO;Lo;0;L;;;;;N;;;;;
+AAA3;TAI VIET LETTER HIGH MO;Lo;0;L;;;;;N;;;;;
+AAA4;TAI VIET LETTER LOW YO;Lo;0;L;;;;;N;;;;;
+AAA5;TAI VIET LETTER HIGH YO;Lo;0;L;;;;;N;;;;;
+AAA6;TAI VIET LETTER LOW RO;Lo;0;L;;;;;N;;;;;
+AAA7;TAI VIET LETTER HIGH RO;Lo;0;L;;;;;N;;;;;
+AAA8;TAI VIET LETTER LOW LO;Lo;0;L;;;;;N;;;;;
+AAA9;TAI VIET LETTER HIGH LO;Lo;0;L;;;;;N;;;;;
+AAAA;TAI VIET LETTER LOW VO;Lo;0;L;;;;;N;;;;;
+AAAB;TAI VIET LETTER HIGH VO;Lo;0;L;;;;;N;;;;;
+AAAC;TAI VIET LETTER LOW HO;Lo;0;L;;;;;N;;;;;
+AAAD;TAI VIET LETTER HIGH HO;Lo;0;L;;;;;N;;;;;
+AAAE;TAI VIET LETTER LOW O;Lo;0;L;;;;;N;;;;;
+AAAF;TAI VIET LETTER HIGH O;Lo;0;L;;;;;N;;;;;
+AAB0;TAI VIET MAI KANG;Mn;230;NSM;;;;;N;;;;;
+AAB1;TAI VIET VOWEL AA;Lo;0;L;;;;;N;;;;;
+AAB2;TAI VIET VOWEL I;Mn;230;NSM;;;;;N;;;;;
+AAB3;TAI VIET VOWEL UE;Mn;230;NSM;;;;;N;;;;;
+AAB4;TAI VIET VOWEL U;Mn;220;NSM;;;;;N;;;;;
+AAB5;TAI VIET VOWEL E;Lo;0;L;;;;;N;;;;;
+AAB6;TAI VIET VOWEL O;Lo;0;L;;;;;N;;;;;
+AAB7;TAI VIET MAI KHIT;Mn;230;NSM;;;;;N;;;;;
+AAB8;TAI VIET VOWEL IA;Mn;230;NSM;;;;;N;;;;;
+AAB9;TAI VIET VOWEL UEA;Lo;0;L;;;;;N;;;;;
+AABA;TAI VIET VOWEL UA;Lo;0;L;;;;;N;;;;;
+AABB;TAI VIET VOWEL AUE;Lo;0;L;;;;;N;;;;;
+AABC;TAI VIET VOWEL AY;Lo;0;L;;;;;N;;;;;
+AABD;TAI VIET VOWEL AN;Lo;0;L;;;;;N;;;;;
+AABE;TAI VIET VOWEL AM;Mn;230;NSM;;;;;N;;;;;
+AABF;TAI VIET TONE MAI EK;Mn;230;NSM;;;;;N;;;;;
+AAC0;TAI VIET TONE MAI NUENG;Lo;0;L;;;;;N;;;;;
+AAC1;TAI VIET TONE MAI THO;Mn;230;NSM;;;;;N;;;;;
+AAC2;TAI VIET TONE MAI SONG;Lo;0;L;;;;;N;;;;;
+AADB;TAI VIET SYMBOL KON;Lo;0;L;;;;;N;;;;;
+AADC;TAI VIET SYMBOL NUENG;Lo;0;L;;;;;N;;;;;
+AADD;TAI VIET SYMBOL SAM;Lm;0;L;;;;;N;;;;;
+AADE;TAI VIET SYMBOL HO HOI;Po;0;L;;;;;N;;;;;
+AADF;TAI VIET SYMBOL KOI KOI;Po;0;L;;;;;N;;;;;
+ABC0;MEETEI MAYEK LETTER KOK;Lo;0;L;;;;;N;;;;;
+ABC1;MEETEI MAYEK LETTER SAM;Lo;0;L;;;;;N;;;;;
+ABC2;MEETEI MAYEK LETTER LAI;Lo;0;L;;;;;N;;;;;
+ABC3;MEETEI MAYEK LETTER MIT;Lo;0;L;;;;;N;;;;;
+ABC4;MEETEI MAYEK LETTER PA;Lo;0;L;;;;;N;;;;;
+ABC5;MEETEI MAYEK LETTER NA;Lo;0;L;;;;;N;;;;;
+ABC6;MEETEI MAYEK LETTER CHIL;Lo;0;L;;;;;N;;;;;
+ABC7;MEETEI MAYEK LETTER TIL;Lo;0;L;;;;;N;;;;;
+ABC8;MEETEI MAYEK LETTER KHOU;Lo;0;L;;;;;N;;;;;
+ABC9;MEETEI MAYEK LETTER NGOU;Lo;0;L;;;;;N;;;;;
+ABCA;MEETEI MAYEK LETTER THOU;Lo;0;L;;;;;N;;;;;
+ABCB;MEETEI MAYEK LETTER WAI;Lo;0;L;;;;;N;;;;;
+ABCC;MEETEI MAYEK LETTER YANG;Lo;0;L;;;;;N;;;;;
+ABCD;MEETEI MAYEK LETTER HUK;Lo;0;L;;;;;N;;;;;
+ABCE;MEETEI MAYEK LETTER UN;Lo;0;L;;;;;N;;;;;
+ABCF;MEETEI MAYEK LETTER I;Lo;0;L;;;;;N;;;;;
+ABD0;MEETEI MAYEK LETTER PHAM;Lo;0;L;;;;;N;;;;;
+ABD1;MEETEI MAYEK LETTER ATIYA;Lo;0;L;;;;;N;;;;;
+ABD2;MEETEI MAYEK LETTER GOK;Lo;0;L;;;;;N;;;;;
+ABD3;MEETEI MAYEK LETTER JHAM;Lo;0;L;;;;;N;;;;;
+ABD4;MEETEI MAYEK LETTER RAI;Lo;0;L;;;;;N;;;;;
+ABD5;MEETEI MAYEK LETTER BA;Lo;0;L;;;;;N;;;;;
+ABD6;MEETEI MAYEK LETTER JIL;Lo;0;L;;;;;N;;;;;
+ABD7;MEETEI MAYEK LETTER DIL;Lo;0;L;;;;;N;;;;;
+ABD8;MEETEI MAYEK LETTER GHOU;Lo;0;L;;;;;N;;;;;
+ABD9;MEETEI MAYEK LETTER DHOU;Lo;0;L;;;;;N;;;;;
+ABDA;MEETEI MAYEK LETTER BHAM;Lo;0;L;;;;;N;;;;;
+ABDB;MEETEI MAYEK LETTER KOK LONSUM;Lo;0;L;;;;;N;;;;;
+ABDC;MEETEI MAYEK LETTER LAI LONSUM;Lo;0;L;;;;;N;;;;;
+ABDD;MEETEI MAYEK LETTER MIT LONSUM;Lo;0;L;;;;;N;;;;;
+ABDE;MEETEI MAYEK LETTER PA LONSUM;Lo;0;L;;;;;N;;;;;
+ABDF;MEETEI MAYEK LETTER NA LONSUM;Lo;0;L;;;;;N;;;;;
+ABE0;MEETEI MAYEK LETTER TIL LONSUM;Lo;0;L;;;;;N;;;;;
+ABE1;MEETEI MAYEK LETTER NGOU LONSUM;Lo;0;L;;;;;N;;;;;
+ABE2;MEETEI MAYEK LETTER I LONSUM;Lo;0;L;;;;;N;;;;;
+ABE3;MEETEI MAYEK VOWEL SIGN ONAP;Mc;0;L;;;;;N;;;;;
+ABE4;MEETEI MAYEK VOWEL SIGN INAP;Mc;0;L;;;;;N;;;;;
+ABE5;MEETEI MAYEK VOWEL SIGN ANAP;Mn;0;NSM;;;;;N;;;;;
+ABE6;MEETEI MAYEK VOWEL SIGN YENAP;Mc;0;L;;;;;N;;;;;
+ABE7;MEETEI MAYEK VOWEL SIGN SOUNAP;Mc;0;L;;;;;N;;;;;
+ABE8;MEETEI MAYEK VOWEL SIGN UNAP;Mn;0;NSM;;;;;N;;;;;
+ABE9;MEETEI MAYEK VOWEL SIGN CHEINAP;Mc;0;L;;;;;N;;;;;
+ABEA;MEETEI MAYEK VOWEL SIGN NUNG;Mc;0;L;;;;;N;;;;;
+ABEB;MEETEI MAYEK CHEIKHEI;Po;0;L;;;;;N;;;;;
+ABEC;MEETEI MAYEK LUM IYEK;Mc;0;L;;;;;N;;;;;
+ABED;MEETEI MAYEK APUN IYEK;Mn;9;NSM;;;;;N;;;;;
+ABF0;MEETEI MAYEK DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+ABF1;MEETEI MAYEK DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+ABF2;MEETEI MAYEK DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+ABF3;MEETEI MAYEK DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+ABF4;MEETEI MAYEK DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+ABF5;MEETEI MAYEK DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+ABF6;MEETEI MAYEK DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+ABF7;MEETEI MAYEK DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+ABF8;MEETEI MAYEK DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+ABF9;MEETEI MAYEK DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+AC00;<Hangul Syllable, First>;Lo;0;L;;;;;N;;;;;
+D7A3;<Hangul Syllable, Last>;Lo;0;L;;;;;N;;;;;
+D7B0;HANGUL JUNGSEONG O-YEO;Lo;0;L;;;;;N;;;;;
+D7B1;HANGUL JUNGSEONG O-O-I;Lo;0;L;;;;;N;;;;;
+D7B2;HANGUL JUNGSEONG YO-A;Lo;0;L;;;;;N;;;;;
+D7B3;HANGUL JUNGSEONG YO-AE;Lo;0;L;;;;;N;;;;;
+D7B4;HANGUL JUNGSEONG YO-EO;Lo;0;L;;;;;N;;;;;
+D7B5;HANGUL JUNGSEONG U-YEO;Lo;0;L;;;;;N;;;;;
+D7B6;HANGUL JUNGSEONG U-I-I;Lo;0;L;;;;;N;;;;;
+D7B7;HANGUL JUNGSEONG YU-AE;Lo;0;L;;;;;N;;;;;
+D7B8;HANGUL JUNGSEONG YU-O;Lo;0;L;;;;;N;;;;;
+D7B9;HANGUL JUNGSEONG EU-A;Lo;0;L;;;;;N;;;;;
+D7BA;HANGUL JUNGSEONG EU-EO;Lo;0;L;;;;;N;;;;;
+D7BB;HANGUL JUNGSEONG EU-E;Lo;0;L;;;;;N;;;;;
+D7BC;HANGUL JUNGSEONG EU-O;Lo;0;L;;;;;N;;;;;
+D7BD;HANGUL JUNGSEONG I-YA-O;Lo;0;L;;;;;N;;;;;
+D7BE;HANGUL JUNGSEONG I-YAE;Lo;0;L;;;;;N;;;;;
+D7BF;HANGUL JUNGSEONG I-YEO;Lo;0;L;;;;;N;;;;;
+D7C0;HANGUL JUNGSEONG I-YE;Lo;0;L;;;;;N;;;;;
+D7C1;HANGUL JUNGSEONG I-O-I;Lo;0;L;;;;;N;;;;;
+D7C2;HANGUL JUNGSEONG I-YO;Lo;0;L;;;;;N;;;;;
+D7C3;HANGUL JUNGSEONG I-YU;Lo;0;L;;;;;N;;;;;
+D7C4;HANGUL JUNGSEONG I-I;Lo;0;L;;;;;N;;;;;
+D7C5;HANGUL JUNGSEONG ARAEA-A;Lo;0;L;;;;;N;;;;;
+D7C6;HANGUL JUNGSEONG ARAEA-E;Lo;0;L;;;;;N;;;;;
+D7CB;HANGUL JONGSEONG NIEUN-RIEUL;Lo;0;L;;;;;N;;;;;
+D7CC;HANGUL JONGSEONG NIEUN-CHIEUCH;Lo;0;L;;;;;N;;;;;
+D7CD;HANGUL JONGSEONG SSANGTIKEUT;Lo;0;L;;;;;N;;;;;
+D7CE;HANGUL JONGSEONG SSANGTIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
+D7CF;HANGUL JONGSEONG TIKEUT-PIEUP;Lo;0;L;;;;;N;;;;;
+D7D0;HANGUL JONGSEONG TIKEUT-SIOS;Lo;0;L;;;;;N;;;;;
+D7D1;HANGUL JONGSEONG TIKEUT-SIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+D7D2;HANGUL JONGSEONG TIKEUT-CIEUC;Lo;0;L;;;;;N;;;;;
+D7D3;HANGUL JONGSEONG TIKEUT-CHIEUCH;Lo;0;L;;;;;N;;;;;
+D7D4;HANGUL JONGSEONG TIKEUT-THIEUTH;Lo;0;L;;;;;N;;;;;
+D7D5;HANGUL JONGSEONG RIEUL-SSANGKIYEOK;Lo;0;L;;;;;N;;;;;
+D7D6;HANGUL JONGSEONG RIEUL-KIYEOK-HIEUH;Lo;0;L;;;;;N;;;;;
+D7D7;HANGUL JONGSEONG SSANGRIEUL-KHIEUKH;Lo;0;L;;;;;N;;;;;
+D7D8;HANGUL JONGSEONG RIEUL-MIEUM-HIEUH;Lo;0;L;;;;;N;;;;;
+D7D9;HANGUL JONGSEONG RIEUL-PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+D7DA;HANGUL JONGSEONG RIEUL-PIEUP-PHIEUPH;Lo;0;L;;;;;N;;;;;
+D7DB;HANGUL JONGSEONG RIEUL-YESIEUNG;Lo;0;L;;;;;N;;;;;
+D7DC;HANGUL JONGSEONG RIEUL-YEORINHIEUH-HIEUH;Lo;0;L;;;;;N;;;;;
+D7DD;HANGUL JONGSEONG KAPYEOUNRIEUL;Lo;0;L;;;;;N;;;;;
+D7DE;HANGUL JONGSEONG MIEUM-NIEUN;Lo;0;L;;;;;N;;;;;
+D7DF;HANGUL JONGSEONG MIEUM-SSANGNIEUN;Lo;0;L;;;;;N;;;;;
+D7E0;HANGUL JONGSEONG SSANGMIEUM;Lo;0;L;;;;;N;;;;;
+D7E1;HANGUL JONGSEONG MIEUM-PIEUP-SIOS;Lo;0;L;;;;;N;;;;;
+D7E2;HANGUL JONGSEONG MIEUM-CIEUC;Lo;0;L;;;;;N;;;;;
+D7E3;HANGUL JONGSEONG PIEUP-TIKEUT;Lo;0;L;;;;;N;;;;;
+D7E4;HANGUL JONGSEONG PIEUP-RIEUL-PHIEUPH;Lo;0;L;;;;;N;;;;;
+D7E5;HANGUL JONGSEONG PIEUP-MIEUM;Lo;0;L;;;;;N;;;;;
+D7E6;HANGUL JONGSEONG SSANGPIEUP;Lo;0;L;;;;;N;;;;;
+D7E7;HANGUL JONGSEONG PIEUP-SIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+D7E8;HANGUL JONGSEONG PIEUP-CIEUC;Lo;0;L;;;;;N;;;;;
+D7E9;HANGUL JONGSEONG PIEUP-CHIEUCH;Lo;0;L;;;;;N;;;;;
+D7EA;HANGUL JONGSEONG SIOS-MIEUM;Lo;0;L;;;;;N;;;;;
+D7EB;HANGUL JONGSEONG SIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+D7EC;HANGUL JONGSEONG SSANGSIOS-KIYEOK;Lo;0;L;;;;;N;;;;;
+D7ED;HANGUL JONGSEONG SSANGSIOS-TIKEUT;Lo;0;L;;;;;N;;;;;
+D7EE;HANGUL JONGSEONG SIOS-PANSIOS;Lo;0;L;;;;;N;;;;;
+D7EF;HANGUL JONGSEONG SIOS-CIEUC;Lo;0;L;;;;;N;;;;;
+D7F0;HANGUL JONGSEONG SIOS-CHIEUCH;Lo;0;L;;;;;N;;;;;
+D7F1;HANGUL JONGSEONG SIOS-THIEUTH;Lo;0;L;;;;;N;;;;;
+D7F2;HANGUL JONGSEONG SIOS-HIEUH;Lo;0;L;;;;;N;;;;;
+D7F3;HANGUL JONGSEONG PANSIOS-PIEUP;Lo;0;L;;;;;N;;;;;
+D7F4;HANGUL JONGSEONG PANSIOS-KAPYEOUNPIEUP;Lo;0;L;;;;;N;;;;;
+D7F5;HANGUL JONGSEONG YESIEUNG-MIEUM;Lo;0;L;;;;;N;;;;;
+D7F6;HANGUL JONGSEONG YESIEUNG-HIEUH;Lo;0;L;;;;;N;;;;;
+D7F7;HANGUL JONGSEONG CIEUC-PIEUP;Lo;0;L;;;;;N;;;;;
+D7F8;HANGUL JONGSEONG CIEUC-SSANGPIEUP;Lo;0;L;;;;;N;;;;;
+D7F9;HANGUL JONGSEONG SSANGCIEUC;Lo;0;L;;;;;N;;;;;
+D7FA;HANGUL JONGSEONG PHIEUPH-SIOS;Lo;0;L;;;;;N;;;;;
+D7FB;HANGUL JONGSEONG PHIEUPH-THIEUTH;Lo;0;L;;;;;N;;;;;
+D800;<Non Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DB7F;<Non Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DB80;<Private Use High Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DBFF;<Private Use High Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+DC00;<Low Surrogate, First>;Cs;0;L;;;;;N;;;;;
+DFFF;<Low Surrogate, Last>;Cs;0;L;;;;;N;;;;;
+E000;<Private Use, First>;Co;0;L;;;;;N;;;;;
+F8FF;<Private Use, Last>;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;;;3;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;;;10;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;;;2;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;;;0;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;;;6;N;;;;;
+F9D2;CJK COMPATIBILITY IDEOGRAPH-F9D2;Lo;0;L;622E;;;;N;;;;;
+F9D3;CJK COMPATIBILITY IDEOGRAPH-F9D3;Lo;0;L;9678;;;6;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;;;10;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;;;;;
+FA6B;CJK COMPATIBILITY IDEOGRAPH-FA6B;Lo;0;L;6075;;;;N;;;;;
+FA6C;CJK COMPATIBILITY IDEOGRAPH-FA6C;Lo;0;L;242EE;;;;N;;;;;
+FA6D;CJK COMPATIBILITY IDEOGRAPH-FA6D;Lo;0;L;8218;;;;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;<compat> 0066 0066;;;;N;;;;;
+FB01;LATIN SMALL LIGATURE FI;Ll;0;L;<compat> 0066 0069;;;;N;;;;;
+FB02;LATIN SMALL LIGATURE FL;Ll;0;L;<compat> 0066 006C;;;;N;;;;;
+FB03;LATIN SMALL LIGATURE FFI;Ll;0;L;<compat> 0066 0066 0069;;;;N;;;;;
+FB04;LATIN SMALL LIGATURE FFL;Ll;0;L;<compat> 0066 0066 006C;;;;N;;;;;
+FB05;LATIN SMALL LIGATURE LONG S T;Ll;0;L;<compat> 017F 0074;;;;N;;;;;
+FB06;LATIN SMALL LIGATURE ST;Ll;0;L;<compat> 0073 0074;;;;N;;;;;
+FB13;ARMENIAN SMALL LIGATURE MEN NOW;Ll;0;L;<compat> 0574 0576;;;;N;;;;;
+FB14;ARMENIAN SMALL LIGATURE MEN ECH;Ll;0;L;<compat> 0574 0565;;;;N;;;;;
+FB15;ARMENIAN SMALL LIGATURE MEN INI;Ll;0;L;<compat> 0574 056B;;;;N;;;;;
+FB16;ARMENIAN SMALL LIGATURE VEW NOW;Ll;0;L;<compat> 057E 0576;;;;N;;;;;
+FB17;ARMENIAN SMALL LIGATURE MEN XEH;Ll;0;L;<compat> 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;<font> 05E2;;;;N;;;;;
+FB21;HEBREW LETTER WIDE ALEF;Lo;0;R;<font> 05D0;;;;N;;;;;
+FB22;HEBREW LETTER WIDE DALET;Lo;0;R;<font> 05D3;;;;N;;;;;
+FB23;HEBREW LETTER WIDE HE;Lo;0;R;<font> 05D4;;;;N;;;;;
+FB24;HEBREW LETTER WIDE KAF;Lo;0;R;<font> 05DB;;;;N;;;;;
+FB25;HEBREW LETTER WIDE LAMED;Lo;0;R;<font> 05DC;;;;N;;;;;
+FB26;HEBREW LETTER WIDE FINAL MEM;Lo;0;R;<font> 05DD;;;;N;;;;;
+FB27;HEBREW LETTER WIDE RESH;Lo;0;R;<font> 05E8;;;;N;;;;;
+FB28;HEBREW LETTER WIDE TAV;Lo;0;R;<font> 05EA;;;;N;;;;;
+FB29;HEBREW LETTER ALTERNATIVE PLUS SIGN;Sm;0;ES;<font> 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;<compat> 05D0 05DC;;;;N;;;;;
+FB50;ARABIC LETTER ALEF WASLA ISOLATED FORM;Lo;0;AL;<isolated> 0671;;;;N;;;;;
+FB51;ARABIC LETTER ALEF WASLA FINAL FORM;Lo;0;AL;<final> 0671;;;;N;;;;;
+FB52;ARABIC LETTER BEEH ISOLATED FORM;Lo;0;AL;<isolated> 067B;;;;N;;;;;
+FB53;ARABIC LETTER BEEH FINAL FORM;Lo;0;AL;<final> 067B;;;;N;;;;;
+FB54;ARABIC LETTER BEEH INITIAL FORM;Lo;0;AL;<initial> 067B;;;;N;;;;;
+FB55;ARABIC LETTER BEEH MEDIAL FORM;Lo;0;AL;<medial> 067B;;;;N;;;;;
+FB56;ARABIC LETTER PEH ISOLATED FORM;Lo;0;AL;<isolated> 067E;;;;N;;;;;
+FB57;ARABIC LETTER PEH FINAL FORM;Lo;0;AL;<final> 067E;;;;N;;;;;
+FB58;ARABIC LETTER PEH INITIAL FORM;Lo;0;AL;<initial> 067E;;;;N;;;;;
+FB59;ARABIC LETTER PEH MEDIAL FORM;Lo;0;AL;<medial> 067E;;;;N;;;;;
+FB5A;ARABIC LETTER BEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0680;;;;N;;;;;
+FB5B;ARABIC LETTER BEHEH FINAL FORM;Lo;0;AL;<final> 0680;;;;N;;;;;
+FB5C;ARABIC LETTER BEHEH INITIAL FORM;Lo;0;AL;<initial> 0680;;;;N;;;;;
+FB5D;ARABIC LETTER BEHEH MEDIAL FORM;Lo;0;AL;<medial> 0680;;;;N;;;;;
+FB5E;ARABIC LETTER TTEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067A;;;;N;;;;;
+FB5F;ARABIC LETTER TTEHEH FINAL FORM;Lo;0;AL;<final> 067A;;;;N;;;;;
+FB60;ARABIC LETTER TTEHEH INITIAL FORM;Lo;0;AL;<initial> 067A;;;;N;;;;;
+FB61;ARABIC LETTER TTEHEH MEDIAL FORM;Lo;0;AL;<medial> 067A;;;;N;;;;;
+FB62;ARABIC LETTER TEHEH ISOLATED FORM;Lo;0;AL;<isolated> 067F;;;;N;;;;;
+FB63;ARABIC LETTER TEHEH FINAL FORM;Lo;0;AL;<final> 067F;;;;N;;;;;
+FB64;ARABIC LETTER TEHEH INITIAL FORM;Lo;0;AL;<initial> 067F;;;;N;;;;;
+FB65;ARABIC LETTER TEHEH MEDIAL FORM;Lo;0;AL;<medial> 067F;;;;N;;;;;
+FB66;ARABIC LETTER TTEH ISOLATED FORM;Lo;0;AL;<isolated> 0679;;;;N;;;;;
+FB67;ARABIC LETTER TTEH FINAL FORM;Lo;0;AL;<final> 0679;;;;N;;;;;
+FB68;ARABIC LETTER TTEH INITIAL FORM;Lo;0;AL;<initial> 0679;;;;N;;;;;
+FB69;ARABIC LETTER TTEH MEDIAL FORM;Lo;0;AL;<medial> 0679;;;;N;;;;;
+FB6A;ARABIC LETTER VEH ISOLATED FORM;Lo;0;AL;<isolated> 06A4;;;;N;;;;;
+FB6B;ARABIC LETTER VEH FINAL FORM;Lo;0;AL;<final> 06A4;;;;N;;;;;
+FB6C;ARABIC LETTER VEH INITIAL FORM;Lo;0;AL;<initial> 06A4;;;;N;;;;;
+FB6D;ARABIC LETTER VEH MEDIAL FORM;Lo;0;AL;<medial> 06A4;;;;N;;;;;
+FB6E;ARABIC LETTER PEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A6;;;;N;;;;;
+FB6F;ARABIC LETTER PEHEH FINAL FORM;Lo;0;AL;<final> 06A6;;;;N;;;;;
+FB70;ARABIC LETTER PEHEH INITIAL FORM;Lo;0;AL;<initial> 06A6;;;;N;;;;;
+FB71;ARABIC LETTER PEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A6;;;;N;;;;;
+FB72;ARABIC LETTER DYEH ISOLATED FORM;Lo;0;AL;<isolated> 0684;;;;N;;;;;
+FB73;ARABIC LETTER DYEH FINAL FORM;Lo;0;AL;<final> 0684;;;;N;;;;;
+FB74;ARABIC LETTER DYEH INITIAL FORM;Lo;0;AL;<initial> 0684;;;;N;;;;;
+FB75;ARABIC LETTER DYEH MEDIAL FORM;Lo;0;AL;<medial> 0684;;;;N;;;;;
+FB76;ARABIC LETTER NYEH ISOLATED FORM;Lo;0;AL;<isolated> 0683;;;;N;;;;;
+FB77;ARABIC LETTER NYEH FINAL FORM;Lo;0;AL;<final> 0683;;;;N;;;;;
+FB78;ARABIC LETTER NYEH INITIAL FORM;Lo;0;AL;<initial> 0683;;;;N;;;;;
+FB79;ARABIC LETTER NYEH MEDIAL FORM;Lo;0;AL;<medial> 0683;;;;N;;;;;
+FB7A;ARABIC LETTER TCHEH ISOLATED FORM;Lo;0;AL;<isolated> 0686;;;;N;;;;;
+FB7B;ARABIC LETTER TCHEH FINAL FORM;Lo;0;AL;<final> 0686;;;;N;;;;;
+FB7C;ARABIC LETTER TCHEH INITIAL FORM;Lo;0;AL;<initial> 0686;;;;N;;;;;
+FB7D;ARABIC LETTER TCHEH MEDIAL FORM;Lo;0;AL;<medial> 0686;;;;N;;;;;
+FB7E;ARABIC LETTER TCHEHEH ISOLATED FORM;Lo;0;AL;<isolated> 0687;;;;N;;;;;
+FB7F;ARABIC LETTER TCHEHEH FINAL FORM;Lo;0;AL;<final> 0687;;;;N;;;;;
+FB80;ARABIC LETTER TCHEHEH INITIAL FORM;Lo;0;AL;<initial> 0687;;;;N;;;;;
+FB81;ARABIC LETTER TCHEHEH MEDIAL FORM;Lo;0;AL;<medial> 0687;;;;N;;;;;
+FB82;ARABIC LETTER DDAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068D;;;;N;;;;;
+FB83;ARABIC LETTER DDAHAL FINAL FORM;Lo;0;AL;<final> 068D;;;;N;;;;;
+FB84;ARABIC LETTER DAHAL ISOLATED FORM;Lo;0;AL;<isolated> 068C;;;;N;;;;;
+FB85;ARABIC LETTER DAHAL FINAL FORM;Lo;0;AL;<final> 068C;;;;N;;;;;
+FB86;ARABIC LETTER DUL ISOLATED FORM;Lo;0;AL;<isolated> 068E;;;;N;;;;;
+FB87;ARABIC LETTER DUL FINAL FORM;Lo;0;AL;<final> 068E;;;;N;;;;;
+FB88;ARABIC LETTER DDAL ISOLATED FORM;Lo;0;AL;<isolated> 0688;;;;N;;;;;
+FB89;ARABIC LETTER DDAL FINAL FORM;Lo;0;AL;<final> 0688;;;;N;;;;;
+FB8A;ARABIC LETTER JEH ISOLATED FORM;Lo;0;AL;<isolated> 0698;;;;N;;;;;
+FB8B;ARABIC LETTER JEH FINAL FORM;Lo;0;AL;<final> 0698;;;;N;;;;;
+FB8C;ARABIC LETTER RREH ISOLATED FORM;Lo;0;AL;<isolated> 0691;;;;N;;;;;
+FB8D;ARABIC LETTER RREH FINAL FORM;Lo;0;AL;<final> 0691;;;;N;;;;;
+FB8E;ARABIC LETTER KEHEH ISOLATED FORM;Lo;0;AL;<isolated> 06A9;;;;N;;;;;
+FB8F;ARABIC LETTER KEHEH FINAL FORM;Lo;0;AL;<final> 06A9;;;;N;;;;;
+FB90;ARABIC LETTER KEHEH INITIAL FORM;Lo;0;AL;<initial> 06A9;;;;N;;;;;
+FB91;ARABIC LETTER KEHEH MEDIAL FORM;Lo;0;AL;<medial> 06A9;;;;N;;;;;
+FB92;ARABIC LETTER GAF ISOLATED FORM;Lo;0;AL;<isolated> 06AF;;;;N;;;;;
+FB93;ARABIC LETTER GAF FINAL FORM;Lo;0;AL;<final> 06AF;;;;N;;;;;
+FB94;ARABIC LETTER GAF INITIAL FORM;Lo;0;AL;<initial> 06AF;;;;N;;;;;
+FB95;ARABIC LETTER GAF MEDIAL FORM;Lo;0;AL;<medial> 06AF;;;;N;;;;;
+FB96;ARABIC LETTER GUEH ISOLATED FORM;Lo;0;AL;<isolated> 06B3;;;;N;;;;;
+FB97;ARABIC LETTER GUEH FINAL FORM;Lo;0;AL;<final> 06B3;;;;N;;;;;
+FB98;ARABIC LETTER GUEH INITIAL FORM;Lo;0;AL;<initial> 06B3;;;;N;;;;;
+FB99;ARABIC LETTER GUEH MEDIAL FORM;Lo;0;AL;<medial> 06B3;;;;N;;;;;
+FB9A;ARABIC LETTER NGOEH ISOLATED FORM;Lo;0;AL;<isolated> 06B1;;;;N;;;;;
+FB9B;ARABIC LETTER NGOEH FINAL FORM;Lo;0;AL;<final> 06B1;;;;N;;;;;
+FB9C;ARABIC LETTER NGOEH INITIAL FORM;Lo;0;AL;<initial> 06B1;;;;N;;;;;
+FB9D;ARABIC LETTER NGOEH MEDIAL FORM;Lo;0;AL;<medial> 06B1;;;;N;;;;;
+FB9E;ARABIC LETTER NOON GHUNNA ISOLATED FORM;Lo;0;AL;<isolated> 06BA;;;;N;;;;;
+FB9F;ARABIC LETTER NOON GHUNNA FINAL FORM;Lo;0;AL;<final> 06BA;;;;N;;;;;
+FBA0;ARABIC LETTER RNOON ISOLATED FORM;Lo;0;AL;<isolated> 06BB;;;;N;;;;;
+FBA1;ARABIC LETTER RNOON FINAL FORM;Lo;0;AL;<final> 06BB;;;;N;;;;;
+FBA2;ARABIC LETTER RNOON INITIAL FORM;Lo;0;AL;<initial> 06BB;;;;N;;;;;
+FBA3;ARABIC LETTER RNOON MEDIAL FORM;Lo;0;AL;<medial> 06BB;;;;N;;;;;
+FBA4;ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06C0;;;;N;;;;;
+FBA5;ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM;Lo;0;AL;<final> 06C0;;;;N;;;;;
+FBA6;ARABIC LETTER HEH GOAL ISOLATED FORM;Lo;0;AL;<isolated> 06C1;;;;N;;;;;
+FBA7;ARABIC LETTER HEH GOAL FINAL FORM;Lo;0;AL;<final> 06C1;;;;N;;;;;
+FBA8;ARABIC LETTER HEH GOAL INITIAL FORM;Lo;0;AL;<initial> 06C1;;;;N;;;;;
+FBA9;ARABIC LETTER HEH GOAL MEDIAL FORM;Lo;0;AL;<medial> 06C1;;;;N;;;;;
+FBAA;ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM;Lo;0;AL;<isolated> 06BE;;;;N;;;;;
+FBAB;ARABIC LETTER HEH DOACHASHMEE FINAL FORM;Lo;0;AL;<final> 06BE;;;;N;;;;;
+FBAC;ARABIC LETTER HEH DOACHASHMEE INITIAL FORM;Lo;0;AL;<initial> 06BE;;;;N;;;;;
+FBAD;ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM;Lo;0;AL;<medial> 06BE;;;;N;;;;;
+FBAE;ARABIC LETTER YEH BARREE ISOLATED FORM;Lo;0;AL;<isolated> 06D2;;;;N;;;;;
+FBAF;ARABIC LETTER YEH BARREE FINAL FORM;Lo;0;AL;<final> 06D2;;;;N;;;;;
+FBB0;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 06D3;;;;N;;;;;
+FBB1;ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 06D3;;;;N;;;;;
+FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
+FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
+FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
+FBD6;ARABIC LETTER NG MEDIAL FORM;Lo;0;AL;<medial> 06AD;;;;N;;;;;
+FBD7;ARABIC LETTER U ISOLATED FORM;Lo;0;AL;<isolated> 06C7;;;;N;;;;;
+FBD8;ARABIC LETTER U FINAL FORM;Lo;0;AL;<final> 06C7;;;;N;;;;;
+FBD9;ARABIC LETTER OE ISOLATED FORM;Lo;0;AL;<isolated> 06C6;;;;N;;;;;
+FBDA;ARABIC LETTER OE FINAL FORM;Lo;0;AL;<final> 06C6;;;;N;;;;;
+FBDB;ARABIC LETTER YU ISOLATED FORM;Lo;0;AL;<isolated> 06C8;;;;N;;;;;
+FBDC;ARABIC LETTER YU FINAL FORM;Lo;0;AL;<final> 06C8;;;;N;;;;;
+FBDD;ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0677;;;;N;;;;;
+FBDE;ARABIC LETTER VE ISOLATED FORM;Lo;0;AL;<isolated> 06CB;;;;N;;;;;
+FBDF;ARABIC LETTER VE FINAL FORM;Lo;0;AL;<final> 06CB;;;;N;;;;;
+FBE0;ARABIC LETTER KIRGHIZ OE ISOLATED FORM;Lo;0;AL;<isolated> 06C5;;;;N;;;;;
+FBE1;ARABIC LETTER KIRGHIZ OE FINAL FORM;Lo;0;AL;<final> 06C5;;;;N;;;;;
+FBE2;ARABIC LETTER KIRGHIZ YU ISOLATED FORM;Lo;0;AL;<isolated> 06C9;;;;N;;;;;
+FBE3;ARABIC LETTER KIRGHIZ YU FINAL FORM;Lo;0;AL;<final> 06C9;;;;N;;;;;
+FBE4;ARABIC LETTER E ISOLATED FORM;Lo;0;AL;<isolated> 06D0;;;;N;;;;;
+FBE5;ARABIC LETTER E FINAL FORM;Lo;0;AL;<final> 06D0;;;;N;;;;;
+FBE6;ARABIC LETTER E INITIAL FORM;Lo;0;AL;<initial> 06D0;;;;N;;;;;
+FBE7;ARABIC LETTER E MEDIAL FORM;Lo;0;AL;<medial> 06D0;;;;N;;;;;
+FBE8;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0649;;;;N;;;;;
+FBE9;ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM;Lo;0;AL;<medial> 0649;;;;N;;;;;
+FBEA;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0626 0627;;;;N;;;;;
+FBEB;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM;Lo;0;AL;<final> 0626 0627;;;;N;;;;;
+FBEC;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D5;;;;N;;;;;
+FBED;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM;Lo;0;AL;<final> 0626 06D5;;;;N;;;;;
+FBEE;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM;Lo;0;AL;<isolated> 0626 0648;;;;N;;;;;
+FBEF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM;Lo;0;AL;<final> 0626 0648;;;;N;;;;;
+FBF0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C7;;;;N;;;;;
+FBF1;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM;Lo;0;AL;<final> 0626 06C7;;;;N;;;;;
+FBF2;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C6;;;;N;;;;;
+FBF3;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM;Lo;0;AL;<final> 0626 06C6;;;;N;;;;;
+FBF4;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM;Lo;0;AL;<isolated> 0626 06C8;;;;N;;;;;
+FBF5;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM;Lo;0;AL;<final> 0626 06C8;;;;N;;;;;
+FBF6;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM;Lo;0;AL;<isolated> 0626 06D0;;;;N;;;;;
+FBF7;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E FINAL FORM;Lo;0;AL;<final> 0626 06D0;;;;N;;;;;
+FBF8;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM;Lo;0;AL;<initial> 0626 06D0;;;;N;;;;;
+FBF9;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FBFA;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FBFB;ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM;Lo;0;AL;<initial> 0626 0649;;;;N;;;;;
+FBFC;ARABIC LETTER FARSI YEH ISOLATED FORM;Lo;0;AL;<isolated> 06CC;;;;N;;;;;
+FBFD;ARABIC LETTER FARSI YEH FINAL FORM;Lo;0;AL;<final> 06CC;;;;N;;;;;
+FBFE;ARABIC LETTER FARSI YEH INITIAL FORM;Lo;0;AL;<initial> 06CC;;;;N;;;;;
+FBFF;ARABIC LETTER FARSI YEH MEDIAL FORM;Lo;0;AL;<medial> 06CC;;;;N;;;;;
+FC00;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 062C;;;;N;;;;;
+FC01;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0626 062D;;;;N;;;;;
+FC02;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0626 0645;;;;N;;;;;
+FC03;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0626 0649;;;;N;;;;;
+FC04;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0626 064A;;;;N;;;;;
+FC05;ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 062C;;;;N;;;;;
+FC06;ARABIC LIGATURE BEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062D;;;;N;;;;;
+FC07;ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0628 062E;;;;N;;;;;
+FC08;ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0628 0645;;;;N;;;;;
+FC09;ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0628 0649;;;;N;;;;;
+FC0A;ARABIC LIGATURE BEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0628 064A;;;;N;;;;;
+FC0B;ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 062C;;;;N;;;;;
+FC0C;ARABIC LIGATURE TEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062D;;;;N;;;;;
+FC0D;ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062A 062E;;;;N;;;;;
+FC0E;ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062A 0645;;;;N;;;;;
+FC0F;ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062A 0649;;;;N;;;;;
+FC10;ARABIC LIGATURE TEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062A 064A;;;;N;;;;;
+FC11;ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 062C;;;;N;;;;;
+FC12;ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062B 0645;;;;N;;;;;
+FC13;ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062B 0649;;;;N;;;;;
+FC14;ARABIC LIGATURE THEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062B 064A;;;;N;;;;;
+FC15;ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062C 062D;;;;N;;;;;
+FC16;ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C 0645;;;;N;;;;;
+FC17;ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 062C;;;;N;;;;;
+FC18;ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062D 0645;;;;N;;;;;
+FC19;ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 062C;;;;N;;;;;
+FC1A;ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 062E 062D;;;;N;;;;;
+FC1B;ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 062E 0645;;;;N;;;;;
+FC1C;ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 062C;;;;N;;;;;
+FC1D;ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062D;;;;N;;;;;
+FC1E;ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0633 062E;;;;N;;;;;
+FC1F;ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0633 0645;;;;N;;;;;
+FC20;ARABIC LIGATURE SAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0635 062D;;;;N;;;;;
+FC21;ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0645;;;;N;;;;;
+FC22;ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 062C;;;;N;;;;;
+FC23;ARABIC LIGATURE DAD WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062D;;;;N;;;;;
+FC24;ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0636 062E;;;;N;;;;;
+FC25;ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0636 0645;;;;N;;;;;
+FC26;ARABIC LIGATURE TAH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0637 062D;;;;N;;;;;
+FC27;ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0637 0645;;;;N;;;;;
+FC28;ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0638 0645;;;;N;;;;;
+FC29;ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 062C;;;;N;;;;;
+FC2A;ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0639 0645;;;;N;;;;;
+FC2B;ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 062C;;;;N;;;;;
+FC2C;ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 063A 0645;;;;N;;;;;
+FC2D;ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 062C;;;;N;;;;;
+FC2E;ARABIC LIGATURE FEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062D;;;;N;;;;;
+FC2F;ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0641 062E;;;;N;;;;;
+FC30;ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0641 0645;;;;N;;;;;
+FC31;ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0641 0649;;;;N;;;;;
+FC32;ARABIC LIGATURE FEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0641 064A;;;;N;;;;;
+FC33;ARABIC LIGATURE QAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0642 062D;;;;N;;;;;
+FC34;ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0642 0645;;;;N;;;;;
+FC35;ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0642 0649;;;;N;;;;;
+FC36;ARABIC LIGATURE QAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0642 064A;;;;N;;;;;
+FC37;ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0643 0627;;;;N;;;;;
+FC38;ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 062C;;;;N;;;;;
+FC39;ARABIC LIGATURE KAF WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062D;;;;N;;;;;
+FC3A;ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0643 062E;;;;N;;;;;
+FC3B;ARABIC LIGATURE KAF WITH LAM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0644;;;;N;;;;;
+FC3C;ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0643 0645;;;;N;;;;;
+FC3D;ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0643 0649;;;;N;;;;;
+FC3E;ARABIC LIGATURE KAF WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0643 064A;;;;N;;;;;
+FC3F;ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 062C;;;;N;;;;;
+FC40;ARABIC LIGATURE LAM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062D;;;;N;;;;;
+FC41;ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0644 062E;;;;N;;;;;
+FC42;ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0644 0645;;;;N;;;;;
+FC43;ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0644 0649;;;;N;;;;;
+FC44;ARABIC LIGATURE LAM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0644 064A;;;;N;;;;;
+FC45;ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 062C;;;;N;;;;;
+FC46;ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D;;;;N;;;;;
+FC47;ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0645 062E;;;;N;;;;;
+FC48;ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645 0645;;;;N;;;;;
+FC49;ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0645 0649;;;;N;;;;;
+FC4A;ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0645 064A;;;;N;;;;;
+FC4B;ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 062C;;;;N;;;;;
+FC4C;ARABIC LIGATURE NOON WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062D;;;;N;;;;;
+FC4D;ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0646 062E;;;;N;;;;;
+FC4E;ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0646 0645;;;;N;;;;;
+FC4F;ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0646 0649;;;;N;;;;;
+FC50;ARABIC LIGATURE NOON WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0646 064A;;;;N;;;;;
+FC51;ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 062C;;;;N;;;;;
+FC52;ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0647 0645;;;;N;;;;;
+FC53;ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0647 0649;;;;N;;;;;
+FC54;ARABIC LIGATURE HEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0647 064A;;;;N;;;;;
+FC55;ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 062C;;;;N;;;;;
+FC56;ARABIC LIGATURE YEH WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062D;;;;N;;;;;
+FC57;ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 064A 062E;;;;N;;;;;
+FC58;ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 064A 0645;;;;N;;;;;
+FC59;ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 064A 0649;;;;N;;;;;
+FC5A;ARABIC LIGATURE YEH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A 064A;;;;N;;;;;
+FC5B;ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0630 0670;;;;N;;;;;
+FC5C;ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0631 0670;;;;N;;;;;
+FC5D;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0649 0670;;;;N;;;;;
+FC5E;ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C 0651;;;;N;;;;;
+FC5F;ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D 0651;;;;N;;;;;
+FC60;ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E 0651;;;;N;;;;;
+FC61;ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F 0651;;;;N;;;;;
+FC62;ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650 0651;;;;N;;;;;
+FC63;ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651 0670;;;;N;;;;;
+FC64;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM;Lo;0;AL;<final> 0626 0631;;;;N;;;;;
+FC65;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0626 0632;;;;N;;;;;
+FC66;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM;Lo;0;AL;<final> 0626 0645;;;;N;;;;;
+FC67;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM;Lo;0;AL;<final> 0626 0646;;;;N;;;;;
+FC68;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0626 0649;;;;N;;;;;
+FC69;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM;Lo;0;AL;<final> 0626 064A;;;;N;;;;;
+FC6A;ARABIC LIGATURE BEH WITH REH FINAL FORM;Lo;0;AL;<final> 0628 0631;;;;N;;;;;
+FC6B;ARABIC LIGATURE BEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0628 0632;;;;N;;;;;
+FC6C;ARABIC LIGATURE BEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0628 0645;;;;N;;;;;
+FC6D;ARABIC LIGATURE BEH WITH NOON FINAL FORM;Lo;0;AL;<final> 0628 0646;;;;N;;;;;
+FC6E;ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0628 0649;;;;N;;;;;
+FC6F;ARABIC LIGATURE BEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 064A;;;;N;;;;;
+FC70;ARABIC LIGATURE TEH WITH REH FINAL FORM;Lo;0;AL;<final> 062A 0631;;;;N;;;;;
+FC71;ARABIC LIGATURE TEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062A 0632;;;;N;;;;;
+FC72;ARABIC LIGATURE TEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062A 0645;;;;N;;;;;
+FC73;ARABIC LIGATURE TEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062A 0646;;;;N;;;;;
+FC74;ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0649;;;;N;;;;;
+FC75;ARABIC LIGATURE TEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 064A;;;;N;;;;;
+FC76;ARABIC LIGATURE THEH WITH REH FINAL FORM;Lo;0;AL;<final> 062B 0631;;;;N;;;;;
+FC77;ARABIC LIGATURE THEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 062B 0632;;;;N;;;;;
+FC78;ARABIC LIGATURE THEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 062B 0645;;;;N;;;;;
+FC79;ARABIC LIGATURE THEH WITH NOON FINAL FORM;Lo;0;AL;<final> 062B 0646;;;;N;;;;;
+FC7A;ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062B 0649;;;;N;;;;;
+FC7B;ARABIC LIGATURE THEH WITH YEH FINAL FORM;Lo;0;AL;<final> 062B 064A;;;;N;;;;;
+FC7C;ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0641 0649;;;;N;;;;;
+FC7D;ARABIC LIGATURE FEH WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 064A;;;;N;;;;;
+FC7E;ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0642 0649;;;;N;;;;;
+FC7F;ARABIC LIGATURE QAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 064A;;;;N;;;;;
+FC80;ARABIC LIGATURE KAF WITH ALEF FINAL FORM;Lo;0;AL;<final> 0643 0627;;;;N;;;;;
+FC81;ARABIC LIGATURE KAF WITH LAM FINAL FORM;Lo;0;AL;<final> 0643 0644;;;;N;;;;;
+FC82;ARABIC LIGATURE KAF WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645;;;;N;;;;;
+FC83;ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0643 0649;;;;N;;;;;
+FC84;ARABIC LIGATURE KAF WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 064A;;;;N;;;;;
+FC85;ARABIC LIGATURE LAM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 0645;;;;N;;;;;
+FC86;ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 0649;;;;N;;;;;
+FC87;ARABIC LIGATURE LAM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 064A;;;;N;;;;;
+FC88;ARABIC LIGATURE MEEM WITH ALEF FINAL FORM;Lo;0;AL;<final> 0645 0627;;;;N;;;;;
+FC89;ARABIC LIGATURE MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0645 0645;;;;N;;;;;
+FC8A;ARABIC LIGATURE NOON WITH REH FINAL FORM;Lo;0;AL;<final> 0646 0631;;;;N;;;;;
+FC8B;ARABIC LIGATURE NOON WITH ZAIN FINAL FORM;Lo;0;AL;<final> 0646 0632;;;;N;;;;;
+FC8C;ARABIC LIGATURE NOON WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 0645;;;;N;;;;;
+FC8D;ARABIC LIGATURE NOON WITH NOON FINAL FORM;Lo;0;AL;<final> 0646 0646;;;;N;;;;;
+FC8E;ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0649;;;;N;;;;;
+FC8F;ARABIC LIGATURE NOON WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 064A;;;;N;;;;;
+FC90;ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM;Lo;0;AL;<final> 0649 0670;;;;N;;;;;
+FC91;ARABIC LIGATURE YEH WITH REH FINAL FORM;Lo;0;AL;<final> 064A 0631;;;;N;;;;;
+FC92;ARABIC LIGATURE YEH WITH ZAIN FINAL FORM;Lo;0;AL;<final> 064A 0632;;;;N;;;;;
+FC93;ARABIC LIGATURE YEH WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645;;;;N;;;;;
+FC94;ARABIC LIGATURE YEH WITH NOON FINAL FORM;Lo;0;AL;<final> 064A 0646;;;;N;;;;;
+FC95;ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 064A 0649;;;;N;;;;;
+FC96;ARABIC LIGATURE YEH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 064A;;;;N;;;;;
+FC97;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0626 062C;;;;N;;;;;
+FC98;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0626 062D;;;;N;;;;;
+FC99;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0626 062E;;;;N;;;;;
+FC9A;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0626 0645;;;;N;;;;;
+FC9B;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0626 0647;;;;N;;;;;
+FC9C;ARABIC LIGATURE BEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0628 062C;;;;N;;;;;
+FC9D;ARABIC LIGATURE BEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0628 062D;;;;N;;;;;
+FC9E;ARABIC LIGATURE BEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0628 062E;;;;N;;;;;
+FC9F;ARABIC LIGATURE BEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0628 0645;;;;N;;;;;
+FCA0;ARABIC LIGATURE BEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0628 0647;;;;N;;;;;
+FCA1;ARABIC LIGATURE TEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C;;;;N;;;;;
+FCA2;ARABIC LIGATURE TEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 062D;;;;N;;;;;
+FCA3;ARABIC LIGATURE TEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 062E;;;;N;;;;;
+FCA4;ARABIC LIGATURE TEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645;;;;N;;;;;
+FCA5;ARABIC LIGATURE TEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 062A 0647;;;;N;;;;;
+FCA6;ARABIC LIGATURE THEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062B 0645;;;;N;;;;;
+FCA7;ARABIC LIGATURE JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 062D;;;;N;;;;;
+FCA8;ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062C 0645;;;;N;;;;;
+FCA9;ARABIC LIGATURE HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062D 062C;;;;N;;;;;
+FCAA;ARABIC LIGATURE HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062D 0645;;;;N;;;;;
+FCAB;ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062E 062C;;;;N;;;;;
+FCAC;ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062E 0645;;;;N;;;;;
+FCAD;ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062C;;;;N;;;;;
+FCAE;ARABIC LIGATURE SEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062D;;;;N;;;;;
+FCAF;ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0633 062E;;;;N;;;;;
+FCB0;ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645;;;;N;;;;;
+FCB1;ARABIC LIGATURE SAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D;;;;N;;;;;
+FCB2;ARABIC LIGATURE SAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0635 062E;;;;N;;;;;
+FCB3;ARABIC LIGATURE SAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645;;;;N;;;;;
+FCB4;ARABIC LIGATURE DAD WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062C;;;;N;;;;;
+FCB5;ARABIC LIGATURE DAD WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0636 062D;;;;N;;;;;
+FCB6;ARABIC LIGATURE DAD WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0636 062E;;;;N;;;;;
+FCB7;ARABIC LIGATURE DAD WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 0645;;;;N;;;;;
+FCB8;ARABIC LIGATURE TAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 062D;;;;N;;;;;
+FCB9;ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0638 0645;;;;N;;;;;
+FCBA;ARABIC LIGATURE AIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C;;;;N;;;;;
+FCBB;ARABIC LIGATURE AIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645;;;;N;;;;;
+FCBC;ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 063A 062C;;;;N;;;;;
+FCBD;ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 063A 0645;;;;N;;;;;
+FCBE;ARABIC LIGATURE FEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062C;;;;N;;;;;
+FCBF;ARABIC LIGATURE FEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0641 062D;;;;N;;;;;
+FCC0;ARABIC LIGATURE FEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0641 062E;;;;N;;;;;
+FCC1;ARABIC LIGATURE FEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 0645;;;;N;;;;;
+FCC2;ARABIC LIGATURE QAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 062D;;;;N;;;;;
+FCC3;ARABIC LIGATURE QAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0642 0645;;;;N;;;;;
+FCC4;ARABIC LIGATURE KAF WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0643 062C;;;;N;;;;;
+FCC5;ARABIC LIGATURE KAF WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0643 062D;;;;N;;;;;
+FCC6;ARABIC LIGATURE KAF WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0643 062E;;;;N;;;;;
+FCC7;ARABIC LIGATURE KAF WITH LAM INITIAL FORM;Lo;0;AL;<initial> 0643 0644;;;;N;;;;;
+FCC8;ARABIC LIGATURE KAF WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645;;;;N;;;;;
+FCC9;ARABIC LIGATURE LAM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C;;;;N;;;;;
+FCCA;ARABIC LIGATURE LAM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 062D;;;;N;;;;;
+FCCB;ARABIC LIGATURE LAM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0644 062E;;;;N;;;;;
+FCCC;ARABIC LIGATURE LAM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 0645;;;;N;;;;;
+FCCD;ARABIC LIGATURE LAM WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0644 0647;;;;N;;;;;
+FCCE;ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C;;;;N;;;;;
+FCCF;ARABIC LIGATURE MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062D;;;;N;;;;;
+FCD0;ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062E;;;;N;;;;;
+FCD1;ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 0645;;;;N;;;;;
+FCD2;ARABIC LIGATURE NOON WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C;;;;N;;;;;
+FCD3;ARABIC LIGATURE NOON WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062D;;;;N;;;;;
+FCD4;ARABIC LIGATURE NOON WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0646 062E;;;;N;;;;;
+FCD5;ARABIC LIGATURE NOON WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 0645;;;;N;;;;;
+FCD6;ARABIC LIGATURE NOON WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0646 0647;;;;N;;;;;
+FCD7;ARABIC LIGATURE HEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 062C;;;;N;;;;;
+FCD8;ARABIC LIGATURE HEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645;;;;N;;;;;
+FCD9;ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM;Lo;0;AL;<initial> 0647 0670;;;;N;;;;;
+FCDA;ARABIC LIGATURE YEH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 064A 062C;;;;N;;;;;
+FCDB;ARABIC LIGATURE YEH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 064A 062D;;;;N;;;;;
+FCDC;ARABIC LIGATURE YEH WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 064A 062E;;;;N;;;;;
+FCDD;ARABIC LIGATURE YEH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645;;;;N;;;;;
+FCDE;ARABIC LIGATURE YEH WITH HEH INITIAL FORM;Lo;0;AL;<initial> 064A 0647;;;;N;;;;;
+FCDF;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0626 0645;;;;N;;;;;
+FCE0;ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0626 0647;;;;N;;;;;
+FCE1;ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0628 0645;;;;N;;;;;
+FCE2;ARABIC LIGATURE BEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0628 0647;;;;N;;;;;
+FCE3;ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062A 0645;;;;N;;;;;
+FCE4;ARABIC LIGATURE TEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062A 0647;;;;N;;;;;
+FCE5;ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 062B 0645;;;;N;;;;;
+FCE6;ARABIC LIGATURE THEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 062B 0647;;;;N;;;;;
+FCE7;ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 0645;;;;N;;;;;
+FCE8;ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0633 0647;;;;N;;;;;
+FCE9;ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 0645;;;;N;;;;;
+FCEA;ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0634 0647;;;;N;;;;;
+FCEB;ARABIC LIGATURE KAF WITH LAM MEDIAL FORM;Lo;0;AL;<medial> 0643 0644;;;;N;;;;;
+FCEC;ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0643 0645;;;;N;;;;;
+FCED;ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0644 0645;;;;N;;;;;
+FCEE;ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0646 0645;;;;N;;;;;
+FCEF;ARABIC LIGATURE NOON WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 0646 0647;;;;N;;;;;
+FCF0;ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 064A 0645;;;;N;;;;;
+FCF1;ARABIC LIGATURE YEH WITH HEH MEDIAL FORM;Lo;0;AL;<medial> 064A 0647;;;;N;;;;;
+FCF2;ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E 0651;;;;N;;;;;
+FCF3;ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F 0651;;;;N;;;;;
+FCF4;ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650 0651;;;;N;;;;;
+FCF5;ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0637 0649;;;;N;;;;;
+FCF6;ARABIC LIGATURE TAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0637 064A;;;;N;;;;;
+FCF7;ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0639 0649;;;;N;;;;;
+FCF8;ARABIC LIGATURE AIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0639 064A;;;;N;;;;;
+FCF9;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 063A 0649;;;;N;;;;;
+FCFA;ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 063A 064A;;;;N;;;;;
+FCFB;ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0633 0649;;;;N;;;;;
+FCFC;ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0633 064A;;;;N;;;;;
+FCFD;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0634 0649;;;;N;;;;;
+FCFE;ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0634 064A;;;;N;;;;;
+FCFF;ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062D 0649;;;;N;;;;;
+FD00;ARABIC LIGATURE HAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062D 064A;;;;N;;;;;
+FD01;ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062C 0649;;;;N;;;;;
+FD02;ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062C 064A;;;;N;;;;;
+FD03;ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 062E 0649;;;;N;;;;;
+FD04;ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 062E 064A;;;;N;;;;;
+FD05;ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0649;;;;N;;;;;
+FD06;ARABIC LIGATURE SAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0635 064A;;;;N;;;;;
+FD07;ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0636 0649;;;;N;;;;;
+FD08;ARABIC LIGATURE DAD WITH YEH ISOLATED FORM;Lo;0;AL;<isolated> 0636 064A;;;;N;;;;;
+FD09;ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 062C;;;;N;;;;;
+FD0A;ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062D;;;;N;;;;;
+FD0B;ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM;Lo;0;AL;<isolated> 0634 062E;;;;N;;;;;
+FD0C;ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0634 0645;;;;N;;;;;
+FD0D;ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0634 0631;;;;N;;;;;
+FD0E;ARABIC LIGATURE SEEN WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0633 0631;;;;N;;;;;
+FD0F;ARABIC LIGATURE SAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0635 0631;;;;N;;;;;
+FD10;ARABIC LIGATURE DAD WITH REH ISOLATED FORM;Lo;0;AL;<isolated> 0636 0631;;;;N;;;;;
+FD11;ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0637 0649;;;;N;;;;;
+FD12;ARABIC LIGATURE TAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 064A;;;;N;;;;;
+FD13;ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0649;;;;N;;;;;
+FD14;ARABIC LIGATURE AIN WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 064A;;;;N;;;;;
+FD15;ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0649;;;;N;;;;;
+FD16;ARABIC LIGATURE GHAIN WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 064A;;;;N;;;;;
+FD17;ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 0649;;;;N;;;;;
+FD18;ARABIC LIGATURE SEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 064A;;;;N;;;;;
+FD19;ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0634 0649;;;;N;;;;;
+FD1A;ARABIC LIGATURE SHEEN WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 064A;;;;N;;;;;
+FD1B;ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0649;;;;N;;;;;
+FD1C;ARABIC LIGATURE HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 064A;;;;N;;;;;
+FD1D;ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0649;;;;N;;;;;
+FD1E;ARABIC LIGATURE JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 064A;;;;N;;;;;
+FD1F;ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062E 0649;;;;N;;;;;
+FD20;ARABIC LIGATURE KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062E 064A;;;;N;;;;;
+FD21;ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0635 0649;;;;N;;;;;
+FD22;ARABIC LIGATURE SAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 064A;;;;N;;;;;
+FD23;ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 0649;;;;N;;;;;
+FD24;ARABIC LIGATURE DAD WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 064A;;;;N;;;;;
+FD25;ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM;Lo;0;AL;<final> 0634 062C;;;;N;;;;;
+FD26;ARABIC LIGATURE SHEEN WITH HAH FINAL FORM;Lo;0;AL;<final> 0634 062D;;;;N;;;;;
+FD27;ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 062E;;;;N;;;;;
+FD28;ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645;;;;N;;;;;
+FD29;ARABIC LIGATURE SHEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0634 0631;;;;N;;;;;
+FD2A;ARABIC LIGATURE SEEN WITH REH FINAL FORM;Lo;0;AL;<final> 0633 0631;;;;N;;;;;
+FD2B;ARABIC LIGATURE SAD WITH REH FINAL FORM;Lo;0;AL;<final> 0635 0631;;;;N;;;;;
+FD2C;ARABIC LIGATURE DAD WITH REH FINAL FORM;Lo;0;AL;<final> 0636 0631;;;;N;;;;;
+FD2D;ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062C;;;;N;;;;;
+FD2E;ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0634 062D;;;;N;;;;;
+FD2F;ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 062E;;;;N;;;;;
+FD30;ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645;;;;N;;;;;
+FD31;ARABIC LIGATURE SEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0633 0647;;;;N;;;;;
+FD32;ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM;Lo;0;AL;<initial> 0634 0647;;;;N;;;;;
+FD33;ARABIC LIGATURE TAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645;;;;N;;;;;
+FD34;ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0633 062C;;;;N;;;;;
+FD35;ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062D;;;;N;;;;;
+FD36;ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0633 062E;;;;N;;;;;
+FD37;ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM;Lo;0;AL;<medial> 0634 062C;;;;N;;;;;
+FD38;ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062D;;;;N;;;;;
+FD39;ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM;Lo;0;AL;<medial> 0634 062E;;;;N;;;;;
+FD3A;ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0637 0645;;;;N;;;;;
+FD3B;ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM;Lo;0;AL;<medial> 0638 0645;;;;N;;;;;
+FD3C;ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM;Lo;0;AL;<final> 0627 064B;;;;N;;;;;
+FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 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;<initial> 062A 062C 0645;;;;N;;;;;
+FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
+FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
+FD53;ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 0645;;;;N;;;;;
+FD54;ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062E 0645;;;;N;;;;;
+FD55;ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062C;;;;N;;;;;
+FD56;ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062D;;;;N;;;;;
+FD57;ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 062A 0645 062E;;;;N;;;;;
+FD58;ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 062C 0645 062D;;;;N;;;;;
+FD59;ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 062C 0645 062D;;;;N;;;;;
+FD5A;ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 0645 064A;;;;N;;;;;
+FD5B;ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062D 0645 0649;;;;N;;;;;
+FD5C;ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 062D 062C;;;;N;;;;;
+FD5D;ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 062C 062D;;;;N;;;;;
+FD5E;ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062C 0649;;;;N;;;;;
+FD5F;ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0633 0645 062D;;;;N;;;;;
+FD60;ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062D;;;;N;;;;;
+FD61;ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 062C;;;;N;;;;;
+FD62;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0633 0645 0645;;;;N;;;;;
+FD63;ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0633 0645 0645;;;;N;;;;;
+FD64;ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM;Lo;0;AL;<final> 0635 062D 062D;;;;N;;;;;
+FD65;ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0635 062D 062D;;;;N;;;;;
+FD66;ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0635 0645 0645;;;;N;;;;;
+FD67;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 062D 0645;;;;N;;;;;
+FD68;ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 062D 0645;;;;N;;;;;
+FD69;ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062C 064A;;;;N;;;;;
+FD6A;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM;Lo;0;AL;<final> 0634 0645 062E;;;;N;;;;;
+FD6B;ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0634 0645 062E;;;;N;;;;;
+FD6C;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0634 0645 0645;;;;N;;;;;
+FD6D;ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0634 0645 0645;;;;N;;;;;
+FD6E;ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0636 062D 0649;;;;N;;;;;
+FD6F;ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0636 062E 0645;;;;N;;;;;
+FD70;ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0636 062E 0645;;;;N;;;;;
+FD71;ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0637 0645 062D;;;;N;;;;;
+FD72;ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0637 0645 062D;;;;N;;;;;
+FD73;ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0637 0645 0645;;;;N;;;;;
+FD74;ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0637 0645 064A;;;;N;;;;;
+FD75;ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 062C 0645;;;;N;;;;;
+FD76;ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0639 0645 0645;;;;N;;;;;
+FD77;ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 0645 0645;;;;N;;;;;
+FD78;ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0639 0645 0649;;;;N;;;;;
+FD79;ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 063A 0645 0645;;;;N;;;;;
+FD7A;ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 063A 0645 064A;;;;N;;;;;
+FD7B;ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 063A 0645 0649;;;;N;;;;;
+FD7C;ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0641 062E 0645;;;;N;;;;;
+FD7D;ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0641 062E 0645;;;;N;;;;;
+FD7E;ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0642 0645 062D;;;;N;;;;;
+FD7F;ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0642 0645 0645;;;;N;;;;;
+FD80;ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062D 0645;;;;N;;;;;
+FD81;ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062D 064A;;;;N;;;;;
+FD82;ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0644 062D 0649;;;;N;;;;;
+FD83;ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 062C;;;;N;;;;;
+FD84;ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 062C;;;;N;;;;;
+FD85;ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062E 0645;;;;N;;;;;
+FD86;ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062E 0645;;;;N;;;;;
+FD87;ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0644 0645 062D;;;;N;;;;;
+FD88;ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0644 0645 062D;;;;N;;;;;
+FD89;ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 062C;;;;N;;;;;
+FD8A;ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062D 0645;;;;N;;;;;
+FD8B;ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062D 064A;;;;N;;;;;
+FD8C;ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062D;;;;N;;;;;
+FD8D;ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062C 0645;;;;N;;;;;
+FD8E;ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 062C;;;;N;;;;;
+FD8F;ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0645 062E 0645;;;;N;;;;;
+FD92;ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM;Lo;0;AL;<initial> 0645 062C 062E;;;;N;;;;;
+FD93;ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 062C;;;;N;;;;;
+FD94;ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0647 0645 0645;;;;N;;;;;
+FD95;ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062D 0645;;;;N;;;;;
+FD96;ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062D 0649;;;;N;;;;;
+FD97;ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0646 062C 0645;;;;N;;;;;
+FD98;ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0646 062C 0645;;;;N;;;;;
+FD99;ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 062C 0649;;;;N;;;;;
+FD9A;ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 0645 064A;;;;N;;;;;
+FD9B;ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0646 0645 0649;;;;N;;;;;
+FD9C;ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 064A 0645 0645;;;;N;;;;;
+FD9D;ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 064A 0645 0645;;;;N;;;;;
+FD9E;ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062E 064A;;;;N;;;;;
+FD9F;ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062C 064A;;;;N;;;;;
+FDA0;ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062C 0649;;;;N;;;;;
+FDA1;ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 062E 064A;;;;N;;;;;
+FDA2;ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 062E 0649;;;;N;;;;;
+FDA3;ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062A 0645 064A;;;;N;;;;;
+FDA4;ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062A 0645 0649;;;;N;;;;;
+FDA5;ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 0645 064A;;;;N;;;;;
+FDA6;ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 062D 0649;;;;N;;;;;
+FDA7;ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 062C 0645 0649;;;;N;;;;;
+FDA8;ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0633 062E 0649;;;;N;;;;;
+FDA9;ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0635 062D 064A;;;;N;;;;;
+FDAA;ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0634 062D 064A;;;;N;;;;;
+FDAB;ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0636 062D 064A;;;;N;;;;;
+FDAC;ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 062C 064A;;;;N;;;;;
+FDAD;ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0644 0645 064A;;;;N;;;;;
+FDAE;ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062D 064A;;;;N;;;;;
+FDAF;ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 062C 064A;;;;N;;;;;
+FDB0;ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 064A 0645 064A;;;;N;;;;;
+FDB1;ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 0645 064A;;;;N;;;;;
+FDB2;ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0642 0645 064A;;;;N;;;;;
+FDB3;ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062D 064A;;;;N;;;;;
+FDB4;ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0642 0645 062D;;;;N;;;;;
+FDB5;ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062D 0645;;;;N;;;;;
+FDB6;ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0639 0645 064A;;;;N;;;;;
+FDB7;ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0643 0645 064A;;;;N;;;;;
+FDB8;ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM;Lo;0;AL;<initial> 0646 062C 062D;;;;N;;;;;
+FDB9;ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062E 064A;;;;N;;;;;
+FDBA;ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0644 062C 0645;;;;N;;;;;
+FDBB;ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0643 0645 0645;;;;N;;;;;
+FDBC;ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM;Lo;0;AL;<final> 0644 062C 0645;;;;N;;;;;
+FDBD;ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM;Lo;0;AL;<final> 0646 062C 062D;;;;N;;;;;
+FDBE;ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 062C 062D 064A;;;;N;;;;;
+FDBF;ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 062D 062C 064A;;;;N;;;;;
+FDC0;ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0645 062C 064A;;;;N;;;;;
+FDC1;ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0641 0645 064A;;;;N;;;;;
+FDC2;ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0628 062D 064A;;;;N;;;;;
+FDC3;ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0643 0645 0645;;;;N;;;;;
+FDC4;ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0639 062C 0645;;;;N;;;;;
+FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
+FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
+FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
+FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
+FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
+FDF3;ARABIC LIGATURE AKBAR ISOLATED FORM;Lo;0;AL;<isolated> 0627 0643 0628 0631;;;;N;;;;;
+FDF4;ARABIC LIGATURE MOHAMMAD ISOLATED FORM;Lo;0;AL;<isolated> 0645 062D 0645 062F;;;;N;;;;;
+FDF5;ARABIC LIGATURE SALAM ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0639 0645;;;;N;;;;;
+FDF6;ARABIC LIGATURE RASOUL ISOLATED FORM;Lo;0;AL;<isolated> 0631 0633 0648 0644;;;;N;;;;;
+FDF7;ARABIC LIGATURE ALAYHE ISOLATED FORM;Lo;0;AL;<isolated> 0639 0644 064A 0647;;;;N;;;;;
+FDF8;ARABIC LIGATURE WASALLAM ISOLATED FORM;Lo;0;AL;<isolated> 0648 0633 0644 0645;;;;N;;;;;
+FDF9;ARABIC LIGATURE SALLA ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 0649;;;;N;;;;;
+FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM;Lo;0;AL;<isolated> 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;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
+FDFC;RIAL SIGN;Sc;0;AL;<isolated> 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;<vertical> 002C;;;;N;;;;;
+FE11;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA;Po;0;ON;<vertical> 3001;;;;N;;;;;
+FE12;PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP;Po;0;ON;<vertical> 3002;;;;N;;;;;
+FE13;PRESENTATION FORM FOR VERTICAL COLON;Po;0;ON;<vertical> 003A;;;;N;;;;;
+FE14;PRESENTATION FORM FOR VERTICAL SEMICOLON;Po;0;ON;<vertical> 003B;;;;N;;;;;
+FE15;PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK;Po;0;ON;<vertical> 0021;;;;N;;;;;
+FE16;PRESENTATION FORM FOR VERTICAL QUESTION MARK;Po;0;ON;<vertical> 003F;;;;N;;;;;
+FE17;PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET;Ps;0;ON;<vertical> 3016;;;;N;;;;;
+FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET;Pe;0;ON;<vertical> 3017;;;;N;;;;;
+FE19;PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS;Po;0;ON;<vertical> 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;;;;;
+FE24;COMBINING MACRON LEFT HALF;Mn;230;NSM;;;;;N;;;;;
+FE25;COMBINING MACRON RIGHT HALF;Mn;230;NSM;;;;;N;;;;;
+FE26;COMBINING CONJOINING MACRON;Mn;230;NSM;;;;;N;;;;;
+FE30;PRESENTATION FORM FOR VERTICAL TWO DOT LEADER;Po;0;ON;<vertical> 2025;;;;N;GLYPH FOR VERTICAL TWO DOT LEADER;;;;
+FE31;PRESENTATION FORM FOR VERTICAL EM DASH;Pd;0;ON;<vertical> 2014;;;;N;GLYPH FOR VERTICAL EM DASH;;;;
+FE32;PRESENTATION FORM FOR VERTICAL EN DASH;Pd;0;ON;<vertical> 2013;;;;N;GLYPH FOR VERTICAL EN DASH;;;;
+FE33;PRESENTATION FORM FOR VERTICAL LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING UNDERSCORE;;;;
+FE34;PRESENTATION FORM FOR VERTICAL WAVY LOW LINE;Pc;0;ON;<vertical> 005F;;;;N;GLYPH FOR VERTICAL SPACING WAVY UNDERSCORE;;;;
+FE35;PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS;Ps;0;ON;<vertical> 0028;;;;N;GLYPH FOR VERTICAL OPENING PARENTHESIS;;;;
+FE36;PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS;Pe;0;ON;<vertical> 0029;;;;N;GLYPH FOR VERTICAL CLOSING PARENTHESIS;;;;
+FE37;PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET;Ps;0;ON;<vertical> 007B;;;;N;GLYPH FOR VERTICAL OPENING CURLY BRACKET;;;;
+FE38;PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET;Pe;0;ON;<vertical> 007D;;;;N;GLYPH FOR VERTICAL CLOSING CURLY BRACKET;;;;
+FE39;PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<vertical> 3014;;;;N;GLYPH FOR VERTICAL OPENING TORTOISE SHELL BRACKET;;;;
+FE3A;PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<vertical> 3015;;;;N;GLYPH FOR VERTICAL CLOSING TORTOISE SHELL BRACKET;;;;
+FE3B;PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET;Ps;0;ON;<vertical> 3010;;;;N;GLYPH FOR VERTICAL OPENING BLACK LENTICULAR BRACKET;;;;
+FE3C;PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET;Pe;0;ON;<vertical> 3011;;;;N;GLYPH FOR VERTICAL CLOSING BLACK LENTICULAR BRACKET;;;;
+FE3D;PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET;Ps;0;ON;<vertical> 300A;;;;N;GLYPH FOR VERTICAL OPENING DOUBLE ANGLE BRACKET;;;;
+FE3E;PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET;Pe;0;ON;<vertical> 300B;;;;N;GLYPH FOR VERTICAL CLOSING DOUBLE ANGLE BRACKET;;;;
+FE3F;PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET;Ps;0;ON;<vertical> 3008;;;;N;GLYPH FOR VERTICAL OPENING ANGLE BRACKET;;;;
+FE40;PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET;Pe;0;ON;<vertical> 3009;;;;N;GLYPH FOR VERTICAL CLOSING ANGLE BRACKET;;;;
+FE41;PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET;Ps;0;ON;<vertical> 300C;;;;N;GLYPH FOR VERTICAL OPENING CORNER BRACKET;;;;
+FE42;PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET;Pe;0;ON;<vertical> 300D;;;;N;GLYPH FOR VERTICAL CLOSING CORNER BRACKET;;;;
+FE43;PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET;Ps;0;ON;<vertical> 300E;;;;N;GLYPH FOR VERTICAL OPENING WHITE CORNER BRACKET;;;;
+FE44;PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET;Pe;0;ON;<vertical> 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;<vertical> 005B;;;;N;;;;;
+FE48;PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET;Pe;0;ON;<vertical> 005D;;;;N;;;;;
+FE49;DASHED OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DASHED OVERSCORE;;;;
+FE4A;CENTRELINE OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING CENTERLINE OVERSCORE;;;;
+FE4B;WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING WAVY OVERSCORE;;;;
+FE4C;DOUBLE WAVY OVERLINE;Po;0;ON;<compat> 203E;;;;N;SPACING DOUBLE WAVY OVERSCORE;;;;
+FE4D;DASHED LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING DASHED UNDERSCORE;;;;
+FE4E;CENTRELINE LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING CENTERLINE UNDERSCORE;;;;
+FE4F;WAVY LOW LINE;Pc;0;ON;<compat> 005F;;;;N;SPACING WAVY UNDERSCORE;;;;
+FE50;SMALL COMMA;Po;0;CS;<small> 002C;;;;N;;;;;
+FE51;SMALL IDEOGRAPHIC COMMA;Po;0;ON;<small> 3001;;;;N;;;;;
+FE52;SMALL FULL STOP;Po;0;CS;<small> 002E;;;;N;SMALL PERIOD;;;;
+FE54;SMALL SEMICOLON;Po;0;ON;<small> 003B;;;;N;;;;;
+FE55;SMALL COLON;Po;0;CS;<small> 003A;;;;N;;;;;
+FE56;SMALL QUESTION MARK;Po;0;ON;<small> 003F;;;;N;;;;;
+FE57;SMALL EXCLAMATION MARK;Po;0;ON;<small> 0021;;;;N;;;;;
+FE58;SMALL EM DASH;Pd;0;ON;<small> 2014;;;;N;;;;;
+FE59;SMALL LEFT PARENTHESIS;Ps;0;ON;<small> 0028;;;;Y;SMALL OPENING PARENTHESIS;;;;
+FE5A;SMALL RIGHT PARENTHESIS;Pe;0;ON;<small> 0029;;;;Y;SMALL CLOSING PARENTHESIS;;;;
+FE5B;SMALL LEFT CURLY BRACKET;Ps;0;ON;<small> 007B;;;;Y;SMALL OPENING CURLY BRACKET;;;;
+FE5C;SMALL RIGHT CURLY BRACKET;Pe;0;ON;<small> 007D;;;;Y;SMALL CLOSING CURLY BRACKET;;;;
+FE5D;SMALL LEFT TORTOISE SHELL BRACKET;Ps;0;ON;<small> 3014;;;;Y;SMALL OPENING TORTOISE SHELL BRACKET;;;;
+FE5E;SMALL RIGHT TORTOISE SHELL BRACKET;Pe;0;ON;<small> 3015;;;;Y;SMALL CLOSING TORTOISE SHELL BRACKET;;;;
+FE5F;SMALL NUMBER SIGN;Po;0;ET;<small> 0023;;;;N;;;;;
+FE60;SMALL AMPERSAND;Po;0;ON;<small> 0026;;;;N;;;;;
+FE61;SMALL ASTERISK;Po;0;ON;<small> 002A;;;;N;;;;;
+FE62;SMALL PLUS SIGN;Sm;0;ES;<small> 002B;;;;N;;;;;
+FE63;SMALL HYPHEN-MINUS;Pd;0;ES;<small> 002D;;;;N;;;;;
+FE64;SMALL LESS-THAN SIGN;Sm;0;ON;<small> 003C;;;;Y;;;;;
+FE65;SMALL GREATER-THAN SIGN;Sm;0;ON;<small> 003E;;;;Y;;;;;
+FE66;SMALL EQUALS SIGN;Sm;0;ON;<small> 003D;;;;N;;;;;
+FE68;SMALL REVERSE SOLIDUS;Po;0;ON;<small> 005C;;;;N;SMALL BACKSLASH;;;;
+FE69;SMALL DOLLAR SIGN;Sc;0;ET;<small> 0024;;;;N;;;;;
+FE6A;SMALL PERCENT SIGN;Po;0;ET;<small> 0025;;;;N;;;;;
+FE6B;SMALL COMMERCIAL AT;Po;0;ON;<small> 0040;;;;N;;;;;
+FE70;ARABIC FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064B;;;;N;ARABIC SPACING FATHATAN;;;;
+FE71;ARABIC TATWEEL WITH FATHATAN ABOVE;Lo;0;AL;<medial> 0640 064B;;;;N;ARABIC FATHATAN ON TATWEEL;;;;
+FE72;ARABIC DAMMATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064C;;;;N;ARABIC SPACING DAMMATAN;;;;
+FE73;ARABIC TAIL FRAGMENT;Lo;0;AL;;;;;N;;;;;
+FE74;ARABIC KASRATAN ISOLATED FORM;Lo;0;AL;<isolated> 0020 064D;;;;N;ARABIC SPACING KASRATAN;;;;
+FE76;ARABIC FATHA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064E;;;;N;ARABIC SPACING FATHAH;;;;
+FE77;ARABIC FATHA MEDIAL FORM;Lo;0;AL;<medial> 0640 064E;;;;N;ARABIC FATHAH ON TATWEEL;;;;
+FE78;ARABIC DAMMA ISOLATED FORM;Lo;0;AL;<isolated> 0020 064F;;;;N;ARABIC SPACING DAMMAH;;;;
+FE79;ARABIC DAMMA MEDIAL FORM;Lo;0;AL;<medial> 0640 064F;;;;N;ARABIC DAMMAH ON TATWEEL;;;;
+FE7A;ARABIC KASRA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0650;;;;N;ARABIC SPACING KASRAH;;;;
+FE7B;ARABIC KASRA MEDIAL FORM;Lo;0;AL;<medial> 0640 0650;;;;N;ARABIC KASRAH ON TATWEEL;;;;
+FE7C;ARABIC SHADDA ISOLATED FORM;Lo;0;AL;<isolated> 0020 0651;;;;N;ARABIC SPACING SHADDAH;;;;
+FE7D;ARABIC SHADDA MEDIAL FORM;Lo;0;AL;<medial> 0640 0651;;;;N;ARABIC SHADDAH ON TATWEEL;;;;
+FE7E;ARABIC SUKUN ISOLATED FORM;Lo;0;AL;<isolated> 0020 0652;;;;N;ARABIC SPACING SUKUN;;;;
+FE7F;ARABIC SUKUN MEDIAL FORM;Lo;0;AL;<medial> 0640 0652;;;;N;ARABIC SUKUN ON TATWEEL;;;;
+FE80;ARABIC LETTER HAMZA ISOLATED FORM;Lo;0;AL;<isolated> 0621;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH;;;;
+FE81;ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0622;;;;N;GLYPH FOR ISOLATE ARABIC MADDAH ON ALEF;;;;
+FE82;ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM;Lo;0;AL;<final> 0622;;;;N;GLYPH FOR FINAL ARABIC MADDAH ON ALEF;;;;
+FE83;ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0623;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON ALEF;;;;
+FE84;ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0623;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON ALEF;;;;
+FE85;ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0624;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON WAW;;;;
+FE86;ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0624;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON WAW;;;;
+FE87;ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM;Lo;0;AL;<isolated> 0625;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH UNDER ALEF;;;;
+FE88;ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM;Lo;0;AL;<final> 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER ALEF;;;;
+FE89;ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 0626;;;;N;GLYPH FOR ISOLATE ARABIC HAMZAH ON YA;;;;
+FE8A;ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM;Lo;0;AL;<final> 0626;;;;N;GLYPH FOR FINAL ARABIC HAMZAH ON YA;;;;
+FE8B;ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM;Lo;0;AL;<initial> 0626;;;;N;GLYPH FOR INITIAL ARABIC HAMZAH ON YA;;;;
+FE8C;ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM;Lo;0;AL;<medial> 0626;;;;N;GLYPH FOR MEDIAL ARABIC HAMZAH ON YA;;;;
+FE8D;ARABIC LETTER ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0627;;;;N;GLYPH FOR ISOLATE ARABIC ALEF;;;;
+FE8E;ARABIC LETTER ALEF FINAL FORM;Lo;0;AL;<final> 0627;;;;N;GLYPH FOR FINAL ARABIC ALEF;;;;
+FE8F;ARABIC LETTER BEH ISOLATED FORM;Lo;0;AL;<isolated> 0628;;;;N;GLYPH FOR ISOLATE ARABIC BAA;;;;
+FE90;ARABIC LETTER BEH FINAL FORM;Lo;0;AL;<final> 0628;;;;N;GLYPH FOR FINAL ARABIC BAA;;;;
+FE91;ARABIC LETTER BEH INITIAL FORM;Lo;0;AL;<initial> 0628;;;;N;GLYPH FOR INITIAL ARABIC BAA;;;;
+FE92;ARABIC LETTER BEH MEDIAL FORM;Lo;0;AL;<medial> 0628;;;;N;GLYPH FOR MEDIAL ARABIC BAA;;;;
+FE93;ARABIC LETTER TEH MARBUTA ISOLATED FORM;Lo;0;AL;<isolated> 0629;;;;N;GLYPH FOR ISOLATE ARABIC TAA MARBUTAH;;;;
+FE94;ARABIC LETTER TEH MARBUTA FINAL FORM;Lo;0;AL;<final> 0629;;;;N;GLYPH FOR FINAL ARABIC TAA MARBUTAH;;;;
+FE95;ARABIC LETTER TEH ISOLATED FORM;Lo;0;AL;<isolated> 062A;;;;N;GLYPH FOR ISOLATE ARABIC TAA;;;;
+FE96;ARABIC LETTER TEH FINAL FORM;Lo;0;AL;<final> 062A;;;;N;GLYPH FOR FINAL ARABIC TAA;;;;
+FE97;ARABIC LETTER TEH INITIAL FORM;Lo;0;AL;<initial> 062A;;;;N;GLYPH FOR INITIAL ARABIC TAA;;;;
+FE98;ARABIC LETTER TEH MEDIAL FORM;Lo;0;AL;<medial> 062A;;;;N;GLYPH FOR MEDIAL ARABIC TAA;;;;
+FE99;ARABIC LETTER THEH ISOLATED FORM;Lo;0;AL;<isolated> 062B;;;;N;GLYPH FOR ISOLATE ARABIC THAA;;;;
+FE9A;ARABIC LETTER THEH FINAL FORM;Lo;0;AL;<final> 062B;;;;N;GLYPH FOR FINAL ARABIC THAA;;;;
+FE9B;ARABIC LETTER THEH INITIAL FORM;Lo;0;AL;<initial> 062B;;;;N;GLYPH FOR INITIAL ARABIC THAA;;;;
+FE9C;ARABIC LETTER THEH MEDIAL FORM;Lo;0;AL;<medial> 062B;;;;N;GLYPH FOR MEDIAL ARABIC THAA;;;;
+FE9D;ARABIC LETTER JEEM ISOLATED FORM;Lo;0;AL;<isolated> 062C;;;;N;GLYPH FOR ISOLATE ARABIC JEEM;;;;
+FE9E;ARABIC LETTER JEEM FINAL FORM;Lo;0;AL;<final> 062C;;;;N;GLYPH FOR FINAL ARABIC JEEM;;;;
+FE9F;ARABIC LETTER JEEM INITIAL FORM;Lo;0;AL;<initial> 062C;;;;N;GLYPH FOR INITIAL ARABIC JEEM;;;;
+FEA0;ARABIC LETTER JEEM MEDIAL FORM;Lo;0;AL;<medial> 062C;;;;N;GLYPH FOR MEDIAL ARABIC JEEM;;;;
+FEA1;ARABIC LETTER HAH ISOLATED FORM;Lo;0;AL;<isolated> 062D;;;;N;GLYPH FOR ISOLATE ARABIC HAA;;;;
+FEA2;ARABIC LETTER HAH FINAL FORM;Lo;0;AL;<final> 062D;;;;N;GLYPH FOR FINAL ARABIC HAA;;;;
+FEA3;ARABIC LETTER HAH INITIAL FORM;Lo;0;AL;<initial> 062D;;;;N;GLYPH FOR INITIAL ARABIC HAA;;;;
+FEA4;ARABIC LETTER HAH MEDIAL FORM;Lo;0;AL;<medial> 062D;;;;N;GLYPH FOR MEDIAL ARABIC HAA;;;;
+FEA5;ARABIC LETTER KHAH ISOLATED FORM;Lo;0;AL;<isolated> 062E;;;;N;GLYPH FOR ISOLATE ARABIC KHAA;;;;
+FEA6;ARABIC LETTER KHAH FINAL FORM;Lo;0;AL;<final> 062E;;;;N;GLYPH FOR FINAL ARABIC KHAA;;;;
+FEA7;ARABIC LETTER KHAH INITIAL FORM;Lo;0;AL;<initial> 062E;;;;N;GLYPH FOR INITIAL ARABIC KHAA;;;;
+FEA8;ARABIC LETTER KHAH MEDIAL FORM;Lo;0;AL;<medial> 062E;;;;N;GLYPH FOR MEDIAL ARABIC KHAA;;;;
+FEA9;ARABIC LETTER DAL ISOLATED FORM;Lo;0;AL;<isolated> 062F;;;;N;GLYPH FOR ISOLATE ARABIC DAL;;;;
+FEAA;ARABIC LETTER DAL FINAL FORM;Lo;0;AL;<final> 062F;;;;N;GLYPH FOR FINAL ARABIC DAL;;;;
+FEAB;ARABIC LETTER THAL ISOLATED FORM;Lo;0;AL;<isolated> 0630;;;;N;GLYPH FOR ISOLATE ARABIC THAL;;;;
+FEAC;ARABIC LETTER THAL FINAL FORM;Lo;0;AL;<final> 0630;;;;N;GLYPH FOR FINAL ARABIC THAL;;;;
+FEAD;ARABIC LETTER REH ISOLATED FORM;Lo;0;AL;<isolated> 0631;;;;N;GLYPH FOR ISOLATE ARABIC RA;;;;
+FEAE;ARABIC LETTER REH FINAL FORM;Lo;0;AL;<final> 0631;;;;N;GLYPH FOR FINAL ARABIC RA;;;;
+FEAF;ARABIC LETTER ZAIN ISOLATED FORM;Lo;0;AL;<isolated> 0632;;;;N;GLYPH FOR ISOLATE ARABIC ZAIN;;;;
+FEB0;ARABIC LETTER ZAIN FINAL FORM;Lo;0;AL;<final> 0632;;;;N;GLYPH FOR FINAL ARABIC ZAIN;;;;
+FEB1;ARABIC LETTER SEEN ISOLATED FORM;Lo;0;AL;<isolated> 0633;;;;N;GLYPH FOR ISOLATE ARABIC SEEN;;;;
+FEB2;ARABIC LETTER SEEN FINAL FORM;Lo;0;AL;<final> 0633;;;;N;GLYPH FOR FINAL ARABIC SEEN;;;;
+FEB3;ARABIC LETTER SEEN INITIAL FORM;Lo;0;AL;<initial> 0633;;;;N;GLYPH FOR INITIAL ARABIC SEEN;;;;
+FEB4;ARABIC LETTER SEEN MEDIAL FORM;Lo;0;AL;<medial> 0633;;;;N;GLYPH FOR MEDIAL ARABIC SEEN;;;;
+FEB5;ARABIC LETTER SHEEN ISOLATED FORM;Lo;0;AL;<isolated> 0634;;;;N;GLYPH FOR ISOLATE ARABIC SHEEN;;;;
+FEB6;ARABIC LETTER SHEEN FINAL FORM;Lo;0;AL;<final> 0634;;;;N;GLYPH FOR FINAL ARABIC SHEEN;;;;
+FEB7;ARABIC LETTER SHEEN INITIAL FORM;Lo;0;AL;<initial> 0634;;;;N;GLYPH FOR INITIAL ARABIC SHEEN;;;;
+FEB8;ARABIC LETTER SHEEN MEDIAL FORM;Lo;0;AL;<medial> 0634;;;;N;GLYPH FOR MEDIAL ARABIC SHEEN;;;;
+FEB9;ARABIC LETTER SAD ISOLATED FORM;Lo;0;AL;<isolated> 0635;;;;N;GLYPH FOR ISOLATE ARABIC SAD;;;;
+FEBA;ARABIC LETTER SAD FINAL FORM;Lo;0;AL;<final> 0635;;;;N;GLYPH FOR FINAL ARABIC SAD;;;;
+FEBB;ARABIC LETTER SAD INITIAL FORM;Lo;0;AL;<initial> 0635;;;;N;GLYPH FOR INITIAL ARABIC SAD;;;;
+FEBC;ARABIC LETTER SAD MEDIAL FORM;Lo;0;AL;<medial> 0635;;;;N;GLYPH FOR MEDIAL ARABIC SAD;;;;
+FEBD;ARABIC LETTER DAD ISOLATED FORM;Lo;0;AL;<isolated> 0636;;;;N;GLYPH FOR ISOLATE ARABIC DAD;;;;
+FEBE;ARABIC LETTER DAD FINAL FORM;Lo;0;AL;<final> 0636;;;;N;GLYPH FOR FINAL ARABIC DAD;;;;
+FEBF;ARABIC LETTER DAD INITIAL FORM;Lo;0;AL;<initial> 0636;;;;N;GLYPH FOR INITIAL ARABIC DAD;;;;
+FEC0;ARABIC LETTER DAD MEDIAL FORM;Lo;0;AL;<medial> 0636;;;;N;GLYPH FOR MEDIAL ARABIC DAD;;;;
+FEC1;ARABIC LETTER TAH ISOLATED FORM;Lo;0;AL;<isolated> 0637;;;;N;GLYPH FOR ISOLATE ARABIC TAH;;;;
+FEC2;ARABIC LETTER TAH FINAL FORM;Lo;0;AL;<final> 0637;;;;N;GLYPH FOR FINAL ARABIC TAH;;;;
+FEC3;ARABIC LETTER TAH INITIAL FORM;Lo;0;AL;<initial> 0637;;;;N;GLYPH FOR INITIAL ARABIC TAH;;;;
+FEC4;ARABIC LETTER TAH MEDIAL FORM;Lo;0;AL;<medial> 0637;;;;N;GLYPH FOR MEDIAL ARABIC TAH;;;;
+FEC5;ARABIC LETTER ZAH ISOLATED FORM;Lo;0;AL;<isolated> 0638;;;;N;GLYPH FOR ISOLATE ARABIC DHAH;;;;
+FEC6;ARABIC LETTER ZAH FINAL FORM;Lo;0;AL;<final> 0638;;;;N;GLYPH FOR FINAL ARABIC DHAH;;;;
+FEC7;ARABIC LETTER ZAH INITIAL FORM;Lo;0;AL;<initial> 0638;;;;N;GLYPH FOR INITIAL ARABIC DHAH;;;;
+FEC8;ARABIC LETTER ZAH MEDIAL FORM;Lo;0;AL;<medial> 0638;;;;N;GLYPH FOR MEDIAL ARABIC DHAH;;;;
+FEC9;ARABIC LETTER AIN ISOLATED FORM;Lo;0;AL;<isolated> 0639;;;;N;GLYPH FOR ISOLATE ARABIC AIN;;;;
+FECA;ARABIC LETTER AIN FINAL FORM;Lo;0;AL;<final> 0639;;;;N;GLYPH FOR FINAL ARABIC AIN;;;;
+FECB;ARABIC LETTER AIN INITIAL FORM;Lo;0;AL;<initial> 0639;;;;N;GLYPH FOR INITIAL ARABIC AIN;;;;
+FECC;ARABIC LETTER AIN MEDIAL FORM;Lo;0;AL;<medial> 0639;;;;N;GLYPH FOR MEDIAL ARABIC AIN;;;;
+FECD;ARABIC LETTER GHAIN ISOLATED FORM;Lo;0;AL;<isolated> 063A;;;;N;GLYPH FOR ISOLATE ARABIC GHAIN;;;;
+FECE;ARABIC LETTER GHAIN FINAL FORM;Lo;0;AL;<final> 063A;;;;N;GLYPH FOR FINAL ARABIC GHAIN;;;;
+FECF;ARABIC LETTER GHAIN INITIAL FORM;Lo;0;AL;<initial> 063A;;;;N;GLYPH FOR INITIAL ARABIC GHAIN;;;;
+FED0;ARABIC LETTER GHAIN MEDIAL FORM;Lo;0;AL;<medial> 063A;;;;N;GLYPH FOR MEDIAL ARABIC GHAIN;;;;
+FED1;ARABIC LETTER FEH ISOLATED FORM;Lo;0;AL;<isolated> 0641;;;;N;GLYPH FOR ISOLATE ARABIC FA;;;;
+FED2;ARABIC LETTER FEH FINAL FORM;Lo;0;AL;<final> 0641;;;;N;GLYPH FOR FINAL ARABIC FA;;;;
+FED3;ARABIC LETTER FEH INITIAL FORM;Lo;0;AL;<initial> 0641;;;;N;GLYPH FOR INITIAL ARABIC FA;;;;
+FED4;ARABIC LETTER FEH MEDIAL FORM;Lo;0;AL;<medial> 0641;;;;N;GLYPH FOR MEDIAL ARABIC FA;;;;
+FED5;ARABIC LETTER QAF ISOLATED FORM;Lo;0;AL;<isolated> 0642;;;;N;GLYPH FOR ISOLATE ARABIC QAF;;;;
+FED6;ARABIC LETTER QAF FINAL FORM;Lo;0;AL;<final> 0642;;;;N;GLYPH FOR FINAL ARABIC QAF;;;;
+FED7;ARABIC LETTER QAF INITIAL FORM;Lo;0;AL;<initial> 0642;;;;N;GLYPH FOR INITIAL ARABIC QAF;;;;
+FED8;ARABIC LETTER QAF MEDIAL FORM;Lo;0;AL;<medial> 0642;;;;N;GLYPH FOR MEDIAL ARABIC QAF;;;;
+FED9;ARABIC LETTER KAF ISOLATED FORM;Lo;0;AL;<isolated> 0643;;;;N;GLYPH FOR ISOLATE ARABIC CAF;;;;
+FEDA;ARABIC LETTER KAF FINAL FORM;Lo;0;AL;<final> 0643;;;;N;GLYPH FOR FINAL ARABIC CAF;;;;
+FEDB;ARABIC LETTER KAF INITIAL FORM;Lo;0;AL;<initial> 0643;;;;N;GLYPH FOR INITIAL ARABIC CAF;;;;
+FEDC;ARABIC LETTER KAF MEDIAL FORM;Lo;0;AL;<medial> 0643;;;;N;GLYPH FOR MEDIAL ARABIC CAF;;;;
+FEDD;ARABIC LETTER LAM ISOLATED FORM;Lo;0;AL;<isolated> 0644;;;;N;GLYPH FOR ISOLATE ARABIC LAM;;;;
+FEDE;ARABIC LETTER LAM FINAL FORM;Lo;0;AL;<final> 0644;;;;N;GLYPH FOR FINAL ARABIC LAM;;;;
+FEDF;ARABIC LETTER LAM INITIAL FORM;Lo;0;AL;<initial> 0644;;;;N;GLYPH FOR INITIAL ARABIC LAM;;;;
+FEE0;ARABIC LETTER LAM MEDIAL FORM;Lo;0;AL;<medial> 0644;;;;N;GLYPH FOR MEDIAL ARABIC LAM;;;;
+FEE1;ARABIC LETTER MEEM ISOLATED FORM;Lo;0;AL;<isolated> 0645;;;;N;GLYPH FOR ISOLATE ARABIC MEEM;;;;
+FEE2;ARABIC LETTER MEEM FINAL FORM;Lo;0;AL;<final> 0645;;;;N;GLYPH FOR FINAL ARABIC MEEM;;;;
+FEE3;ARABIC LETTER MEEM INITIAL FORM;Lo;0;AL;<initial> 0645;;;;N;GLYPH FOR INITIAL ARABIC MEEM;;;;
+FEE4;ARABIC LETTER MEEM MEDIAL FORM;Lo;0;AL;<medial> 0645;;;;N;GLYPH FOR MEDIAL ARABIC MEEM;;;;
+FEE5;ARABIC LETTER NOON ISOLATED FORM;Lo;0;AL;<isolated> 0646;;;;N;GLYPH FOR ISOLATE ARABIC NOON;;;;
+FEE6;ARABIC LETTER NOON FINAL FORM;Lo;0;AL;<final> 0646;;;;N;GLYPH FOR FINAL ARABIC NOON;;;;
+FEE7;ARABIC LETTER NOON INITIAL FORM;Lo;0;AL;<initial> 0646;;;;N;GLYPH FOR INITIAL ARABIC NOON;;;;
+FEE8;ARABIC LETTER NOON MEDIAL FORM;Lo;0;AL;<medial> 0646;;;;N;GLYPH FOR MEDIAL ARABIC NOON;;;;
+FEE9;ARABIC LETTER HEH ISOLATED FORM;Lo;0;AL;<isolated> 0647;;;;N;GLYPH FOR ISOLATE ARABIC HA;;;;
+FEEA;ARABIC LETTER HEH FINAL FORM;Lo;0;AL;<final> 0647;;;;N;GLYPH FOR FINAL ARABIC HA;;;;
+FEEB;ARABIC LETTER HEH INITIAL FORM;Lo;0;AL;<initial> 0647;;;;N;GLYPH FOR INITIAL ARABIC HA;;;;
+FEEC;ARABIC LETTER HEH MEDIAL FORM;Lo;0;AL;<medial> 0647;;;;N;GLYPH FOR MEDIAL ARABIC HA;;;;
+FEED;ARABIC LETTER WAW ISOLATED FORM;Lo;0;AL;<isolated> 0648;;;;N;GLYPH FOR ISOLATE ARABIC WAW;;;;
+FEEE;ARABIC LETTER WAW FINAL FORM;Lo;0;AL;<final> 0648;;;;N;GLYPH FOR FINAL ARABIC WAW;;;;
+FEEF;ARABIC LETTER ALEF MAKSURA ISOLATED FORM;Lo;0;AL;<isolated> 0649;;;;N;GLYPH FOR ISOLATE ARABIC ALEF MAQSURAH;;;;
+FEF0;ARABIC LETTER ALEF MAKSURA FINAL FORM;Lo;0;AL;<final> 0649;;;;N;GLYPH FOR FINAL ARABIC ALEF MAQSURAH;;;;
+FEF1;ARABIC LETTER YEH ISOLATED FORM;Lo;0;AL;<isolated> 064A;;;;N;GLYPH FOR ISOLATE ARABIC YA;;;;
+FEF2;ARABIC LETTER YEH FINAL FORM;Lo;0;AL;<final> 064A;;;;N;GLYPH FOR FINAL ARABIC YA;;;;
+FEF3;ARABIC LETTER YEH INITIAL FORM;Lo;0;AL;<initial> 064A;;;;N;GLYPH FOR INITIAL ARABIC YA;;;;
+FEF4;ARABIC LETTER YEH MEDIAL FORM;Lo;0;AL;<medial> 064A;;;;N;GLYPH FOR MEDIAL ARABIC YA;;;;
+FEF5;ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM;Lo;0;AL;<isolated> 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;<final> 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;<isolated> 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;<final> 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;<isolated> 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;<final> 0644 0625;;;;N;GLYPH FOR FINAL ARABIC HAMZAH UNDER LIGATURE LAM ALEF;;;;
+FEFB;ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM;Lo;0;AL;<isolated> 0644 0627;;;;N;GLYPH FOR ISOLATE ARABIC LIGATURE LAM ALEF;;;;
+FEFC;ARABIC LIGATURE LAM WITH ALEF FINAL FORM;Lo;0;AL;<final> 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;<wide> 0021;;;;N;;;;;
+FF02;FULLWIDTH QUOTATION MARK;Po;0;ON;<wide> 0022;;;;N;;;;;
+FF03;FULLWIDTH NUMBER SIGN;Po;0;ET;<wide> 0023;;;;N;;;;;
+FF04;FULLWIDTH DOLLAR SIGN;Sc;0;ET;<wide> 0024;;;;N;;;;;
+FF05;FULLWIDTH PERCENT SIGN;Po;0;ET;<wide> 0025;;;;N;;;;;
+FF06;FULLWIDTH AMPERSAND;Po;0;ON;<wide> 0026;;;;N;;;;;
+FF07;FULLWIDTH APOSTROPHE;Po;0;ON;<wide> 0027;;;;N;;;;;
+FF08;FULLWIDTH LEFT PARENTHESIS;Ps;0;ON;<wide> 0028;;;;Y;FULLWIDTH OPENING PARENTHESIS;;;;
+FF09;FULLWIDTH RIGHT PARENTHESIS;Pe;0;ON;<wide> 0029;;;;Y;FULLWIDTH CLOSING PARENTHESIS;;;;
+FF0A;FULLWIDTH ASTERISK;Po;0;ON;<wide> 002A;;;;N;;;;;
+FF0B;FULLWIDTH PLUS SIGN;Sm;0;ES;<wide> 002B;;;;N;;;;;
+FF0C;FULLWIDTH COMMA;Po;0;CS;<wide> 002C;;;;N;;;;;
+FF0D;FULLWIDTH HYPHEN-MINUS;Pd;0;ES;<wide> 002D;;;;N;;;;;
+FF0E;FULLWIDTH FULL STOP;Po;0;CS;<wide> 002E;;;;N;FULLWIDTH PERIOD;;;;
+FF0F;FULLWIDTH SOLIDUS;Po;0;CS;<wide> 002F;;;;N;FULLWIDTH SLASH;;;;
+FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
+FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
+FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
+FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
+FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
+FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
+FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
+FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
+FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
+FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
+FF1A;FULLWIDTH COLON;Po;0;CS;<wide> 003A;;;;N;;;;;
+FF1B;FULLWIDTH SEMICOLON;Po;0;ON;<wide> 003B;;;;N;;;;;
+FF1C;FULLWIDTH LESS-THAN SIGN;Sm;0;ON;<wide> 003C;;;;Y;;;;;
+FF1D;FULLWIDTH EQUALS SIGN;Sm;0;ON;<wide> 003D;;;;N;;;;;
+FF1E;FULLWIDTH GREATER-THAN SIGN;Sm;0;ON;<wide> 003E;;;;Y;;;;;
+FF1F;FULLWIDTH QUESTION MARK;Po;0;ON;<wide> 003F;;;;N;;;;;
+FF20;FULLWIDTH COMMERCIAL AT;Po;0;ON;<wide> 0040;;;;N;;;;;
+FF21;FULLWIDTH LATIN CAPITAL LETTER A;Lu;0;L;<wide> 0041;;;;N;;;;FF41;
+FF22;FULLWIDTH LATIN CAPITAL LETTER B;Lu;0;L;<wide> 0042;;;;N;;;;FF42;
+FF23;FULLWIDTH LATIN CAPITAL LETTER C;Lu;0;L;<wide> 0043;;;;N;;;;FF43;
+FF24;FULLWIDTH LATIN CAPITAL LETTER D;Lu;0;L;<wide> 0044;;;;N;;;;FF44;
+FF25;FULLWIDTH LATIN CAPITAL LETTER E;Lu;0;L;<wide> 0045;;;;N;;;;FF45;
+FF26;FULLWIDTH LATIN CAPITAL LETTER F;Lu;0;L;<wide> 0046;;;;N;;;;FF46;
+FF27;FULLWIDTH LATIN CAPITAL LETTER G;Lu;0;L;<wide> 0047;;;;N;;;;FF47;
+FF28;FULLWIDTH LATIN CAPITAL LETTER H;Lu;0;L;<wide> 0048;;;;N;;;;FF48;
+FF29;FULLWIDTH LATIN CAPITAL LETTER I;Lu;0;L;<wide> 0049;;;;N;;;;FF49;
+FF2A;FULLWIDTH LATIN CAPITAL LETTER J;Lu;0;L;<wide> 004A;;;;N;;;;FF4A;
+FF2B;FULLWIDTH LATIN CAPITAL LETTER K;Lu;0;L;<wide> 004B;;;;N;;;;FF4B;
+FF2C;FULLWIDTH LATIN CAPITAL LETTER L;Lu;0;L;<wide> 004C;;;;N;;;;FF4C;
+FF2D;FULLWIDTH LATIN CAPITAL LETTER M;Lu;0;L;<wide> 004D;;;;N;;;;FF4D;
+FF2E;FULLWIDTH LATIN CAPITAL LETTER N;Lu;0;L;<wide> 004E;;;;N;;;;FF4E;
+FF2F;FULLWIDTH LATIN CAPITAL LETTER O;Lu;0;L;<wide> 004F;;;;N;;;;FF4F;
+FF30;FULLWIDTH LATIN CAPITAL LETTER P;Lu;0;L;<wide> 0050;;;;N;;;;FF50;
+FF31;FULLWIDTH LATIN CAPITAL LETTER Q;Lu;0;L;<wide> 0051;;;;N;;;;FF51;
+FF32;FULLWIDTH LATIN CAPITAL LETTER R;Lu;0;L;<wide> 0052;;;;N;;;;FF52;
+FF33;FULLWIDTH LATIN CAPITAL LETTER S;Lu;0;L;<wide> 0053;;;;N;;;;FF53;
+FF34;FULLWIDTH LATIN CAPITAL LETTER T;Lu;0;L;<wide> 0054;;;;N;;;;FF54;
+FF35;FULLWIDTH LATIN CAPITAL LETTER U;Lu;0;L;<wide> 0055;;;;N;;;;FF55;
+FF36;FULLWIDTH LATIN CAPITAL LETTER V;Lu;0;L;<wide> 0056;;;;N;;;;FF56;
+FF37;FULLWIDTH LATIN CAPITAL LETTER W;Lu;0;L;<wide> 0057;;;;N;;;;FF57;
+FF38;FULLWIDTH LATIN CAPITAL LETTER X;Lu;0;L;<wide> 0058;;;;N;;;;FF58;
+FF39;FULLWIDTH LATIN CAPITAL LETTER Y;Lu;0;L;<wide> 0059;;;;N;;;;FF59;
+FF3A;FULLWIDTH LATIN CAPITAL LETTER Z;Lu;0;L;<wide> 005A;;;;N;;;;FF5A;
+FF3B;FULLWIDTH LEFT SQUARE BRACKET;Ps;0;ON;<wide> 005B;;;;Y;FULLWIDTH OPENING SQUARE BRACKET;;;;
+FF3C;FULLWIDTH REVERSE SOLIDUS;Po;0;ON;<wide> 005C;;;;N;FULLWIDTH BACKSLASH;;;;
+FF3D;FULLWIDTH RIGHT SQUARE BRACKET;Pe;0;ON;<wide> 005D;;;;Y;FULLWIDTH CLOSING SQUARE BRACKET;;;;
+FF3E;FULLWIDTH CIRCUMFLEX ACCENT;Sk;0;ON;<wide> 005E;;;;N;FULLWIDTH SPACING CIRCUMFLEX;;;;
+FF3F;FULLWIDTH LOW LINE;Pc;0;ON;<wide> 005F;;;;N;FULLWIDTH SPACING UNDERSCORE;;;;
+FF40;FULLWIDTH GRAVE ACCENT;Sk;0;ON;<wide> 0060;;;;N;FULLWIDTH SPACING GRAVE;;;;
+FF41;FULLWIDTH LATIN SMALL LETTER A;Ll;0;L;<wide> 0061;;;;N;;;FF21;;FF21
+FF42;FULLWIDTH LATIN SMALL LETTER B;Ll;0;L;<wide> 0062;;;;N;;;FF22;;FF22
+FF43;FULLWIDTH LATIN SMALL LETTER C;Ll;0;L;<wide> 0063;;;;N;;;FF23;;FF23
+FF44;FULLWIDTH LATIN SMALL LETTER D;Ll;0;L;<wide> 0064;;;;N;;;FF24;;FF24
+FF45;FULLWIDTH LATIN SMALL LETTER E;Ll;0;L;<wide> 0065;;;;N;;;FF25;;FF25
+FF46;FULLWIDTH LATIN SMALL LETTER F;Ll;0;L;<wide> 0066;;;;N;;;FF26;;FF26
+FF47;FULLWIDTH LATIN SMALL LETTER G;Ll;0;L;<wide> 0067;;;;N;;;FF27;;FF27
+FF48;FULLWIDTH LATIN SMALL LETTER H;Ll;0;L;<wide> 0068;;;;N;;;FF28;;FF28
+FF49;FULLWIDTH LATIN SMALL LETTER I;Ll;0;L;<wide> 0069;;;;N;;;FF29;;FF29
+FF4A;FULLWIDTH LATIN SMALL LETTER J;Ll;0;L;<wide> 006A;;;;N;;;FF2A;;FF2A
+FF4B;FULLWIDTH LATIN SMALL LETTER K;Ll;0;L;<wide> 006B;;;;N;;;FF2B;;FF2B
+FF4C;FULLWIDTH LATIN SMALL LETTER L;Ll;0;L;<wide> 006C;;;;N;;;FF2C;;FF2C
+FF4D;FULLWIDTH LATIN SMALL LETTER M;Ll;0;L;<wide> 006D;;;;N;;;FF2D;;FF2D
+FF4E;FULLWIDTH LATIN SMALL LETTER N;Ll;0;L;<wide> 006E;;;;N;;;FF2E;;FF2E
+FF4F;FULLWIDTH LATIN SMALL LETTER O;Ll;0;L;<wide> 006F;;;;N;;;FF2F;;FF2F
+FF50;FULLWIDTH LATIN SMALL LETTER P;Ll;0;L;<wide> 0070;;;;N;;;FF30;;FF30
+FF51;FULLWIDTH LATIN SMALL LETTER Q;Ll;0;L;<wide> 0071;;;;N;;;FF31;;FF31
+FF52;FULLWIDTH LATIN SMALL LETTER R;Ll;0;L;<wide> 0072;;;;N;;;FF32;;FF32
+FF53;FULLWIDTH LATIN SMALL LETTER S;Ll;0;L;<wide> 0073;;;;N;;;FF33;;FF33
+FF54;FULLWIDTH LATIN SMALL LETTER T;Ll;0;L;<wide> 0074;;;;N;;;FF34;;FF34
+FF55;FULLWIDTH LATIN SMALL LETTER U;Ll;0;L;<wide> 0075;;;;N;;;FF35;;FF35
+FF56;FULLWIDTH LATIN SMALL LETTER V;Ll;0;L;<wide> 0076;;;;N;;;FF36;;FF36
+FF57;FULLWIDTH LATIN SMALL LETTER W;Ll;0;L;<wide> 0077;;;;N;;;FF37;;FF37
+FF58;FULLWIDTH LATIN SMALL LETTER X;Ll;0;L;<wide> 0078;;;;N;;;FF38;;FF38
+FF59;FULLWIDTH LATIN SMALL LETTER Y;Ll;0;L;<wide> 0079;;;;N;;;FF39;;FF39
+FF5A;FULLWIDTH LATIN SMALL LETTER Z;Ll;0;L;<wide> 007A;;;;N;;;FF3A;;FF3A
+FF5B;FULLWIDTH LEFT CURLY BRACKET;Ps;0;ON;<wide> 007B;;;;Y;FULLWIDTH OPENING CURLY BRACKET;;;;
+FF5C;FULLWIDTH VERTICAL LINE;Sm;0;ON;<wide> 007C;;;;N;FULLWIDTH VERTICAL BAR;;;;
+FF5D;FULLWIDTH RIGHT CURLY BRACKET;Pe;0;ON;<wide> 007D;;;;Y;FULLWIDTH CLOSING CURLY BRACKET;;;;
+FF5E;FULLWIDTH TILDE;Sm;0;ON;<wide> 007E;;;;N;FULLWIDTH SPACING TILDE;;;;
+FF5F;FULLWIDTH LEFT WHITE PARENTHESIS;Ps;0;ON;<wide> 2985;;;;Y;;;;;
+FF60;FULLWIDTH RIGHT WHITE PARENTHESIS;Pe;0;ON;<wide> 2986;;;;Y;;;;;
+FF61;HALFWIDTH IDEOGRAPHIC FULL STOP;Po;0;ON;<narrow> 3002;;;;N;HALFWIDTH IDEOGRAPHIC PERIOD;;;;
+FF62;HALFWIDTH LEFT CORNER BRACKET;Ps;0;ON;<narrow> 300C;;;;Y;HALFWIDTH OPENING CORNER BRACKET;;;;
+FF63;HALFWIDTH RIGHT CORNER BRACKET;Pe;0;ON;<narrow> 300D;;;;Y;HALFWIDTH CLOSING CORNER BRACKET;;;;
+FF64;HALFWIDTH IDEOGRAPHIC COMMA;Po;0;ON;<narrow> 3001;;;;N;;;;;
+FF65;HALFWIDTH KATAKANA MIDDLE DOT;Po;0;ON;<narrow> 30FB;;;;N;;;;;
+FF66;HALFWIDTH KATAKANA LETTER WO;Lo;0;L;<narrow> 30F2;;;;N;;;;;
+FF67;HALFWIDTH KATAKANA LETTER SMALL A;Lo;0;L;<narrow> 30A1;;;;N;;;;;
+FF68;HALFWIDTH KATAKANA LETTER SMALL I;Lo;0;L;<narrow> 30A3;;;;N;;;;;
+FF69;HALFWIDTH KATAKANA LETTER SMALL U;Lo;0;L;<narrow> 30A5;;;;N;;;;;
+FF6A;HALFWIDTH KATAKANA LETTER SMALL E;Lo;0;L;<narrow> 30A7;;;;N;;;;;
+FF6B;HALFWIDTH KATAKANA LETTER SMALL O;Lo;0;L;<narrow> 30A9;;;;N;;;;;
+FF6C;HALFWIDTH KATAKANA LETTER SMALL YA;Lo;0;L;<narrow> 30E3;;;;N;;;;;
+FF6D;HALFWIDTH KATAKANA LETTER SMALL YU;Lo;0;L;<narrow> 30E5;;;;N;;;;;
+FF6E;HALFWIDTH KATAKANA LETTER SMALL YO;Lo;0;L;<narrow> 30E7;;;;N;;;;;
+FF6F;HALFWIDTH KATAKANA LETTER SMALL TU;Lo;0;L;<narrow> 30C3;;;;N;;;;;
+FF70;HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK;Lm;0;L;<narrow> 30FC;;;;N;;;;;
+FF71;HALFWIDTH KATAKANA LETTER A;Lo;0;L;<narrow> 30A2;;;;N;;;;;
+FF72;HALFWIDTH KATAKANA LETTER I;Lo;0;L;<narrow> 30A4;;;;N;;;;;
+FF73;HALFWIDTH KATAKANA LETTER U;Lo;0;L;<narrow> 30A6;;;;N;;;;;
+FF74;HALFWIDTH KATAKANA LETTER E;Lo;0;L;<narrow> 30A8;;;;N;;;;;
+FF75;HALFWIDTH KATAKANA LETTER O;Lo;0;L;<narrow> 30AA;;;;N;;;;;
+FF76;HALFWIDTH KATAKANA LETTER KA;Lo;0;L;<narrow> 30AB;;;;N;;;;;
+FF77;HALFWIDTH KATAKANA LETTER KI;Lo;0;L;<narrow> 30AD;;;;N;;;;;
+FF78;HALFWIDTH KATAKANA LETTER KU;Lo;0;L;<narrow> 30AF;;;;N;;;;;
+FF79;HALFWIDTH KATAKANA LETTER KE;Lo;0;L;<narrow> 30B1;;;;N;;;;;
+FF7A;HALFWIDTH KATAKANA LETTER KO;Lo;0;L;<narrow> 30B3;;;;N;;;;;
+FF7B;HALFWIDTH KATAKANA LETTER SA;Lo;0;L;<narrow> 30B5;;;;N;;;;;
+FF7C;HALFWIDTH KATAKANA LETTER SI;Lo;0;L;<narrow> 30B7;;;;N;;;;;
+FF7D;HALFWIDTH KATAKANA LETTER SU;Lo;0;L;<narrow> 30B9;;;;N;;;;;
+FF7E;HALFWIDTH KATAKANA LETTER SE;Lo;0;L;<narrow> 30BB;;;;N;;;;;
+FF7F;HALFWIDTH KATAKANA LETTER SO;Lo;0;L;<narrow> 30BD;;;;N;;;;;
+FF80;HALFWIDTH KATAKANA LETTER TA;Lo;0;L;<narrow> 30BF;;;;N;;;;;
+FF81;HALFWIDTH KATAKANA LETTER TI;Lo;0;L;<narrow> 30C1;;;;N;;;;;
+FF82;HALFWIDTH KATAKANA LETTER TU;Lo;0;L;<narrow> 30C4;;;;N;;;;;
+FF83;HALFWIDTH KATAKANA LETTER TE;Lo;0;L;<narrow> 30C6;;;;N;;;;;
+FF84;HALFWIDTH KATAKANA LETTER TO;Lo;0;L;<narrow> 30C8;;;;N;;;;;
+FF85;HALFWIDTH KATAKANA LETTER NA;Lo;0;L;<narrow> 30CA;;;;N;;;;;
+FF86;HALFWIDTH KATAKANA LETTER NI;Lo;0;L;<narrow> 30CB;;;;N;;;;;
+FF87;HALFWIDTH KATAKANA LETTER NU;Lo;0;L;<narrow> 30CC;;;;N;;;;;
+FF88;HALFWIDTH KATAKANA LETTER NE;Lo;0;L;<narrow> 30CD;;;;N;;;;;
+FF89;HALFWIDTH KATAKANA LETTER NO;Lo;0;L;<narrow> 30CE;;;;N;;;;;
+FF8A;HALFWIDTH KATAKANA LETTER HA;Lo;0;L;<narrow> 30CF;;;;N;;;;;
+FF8B;HALFWIDTH KATAKANA LETTER HI;Lo;0;L;<narrow> 30D2;;;;N;;;;;
+FF8C;HALFWIDTH KATAKANA LETTER HU;Lo;0;L;<narrow> 30D5;;;;N;;;;;
+FF8D;HALFWIDTH KATAKANA LETTER HE;Lo;0;L;<narrow> 30D8;;;;N;;;;;
+FF8E;HALFWIDTH KATAKANA LETTER HO;Lo;0;L;<narrow> 30DB;;;;N;;;;;
+FF8F;HALFWIDTH KATAKANA LETTER MA;Lo;0;L;<narrow> 30DE;;;;N;;;;;
+FF90;HALFWIDTH KATAKANA LETTER MI;Lo;0;L;<narrow> 30DF;;;;N;;;;;
+FF91;HALFWIDTH KATAKANA LETTER MU;Lo;0;L;<narrow> 30E0;;;;N;;;;;
+FF92;HALFWIDTH KATAKANA LETTER ME;Lo;0;L;<narrow> 30E1;;;;N;;;;;
+FF93;HALFWIDTH KATAKANA LETTER MO;Lo;0;L;<narrow> 30E2;;;;N;;;;;
+FF94;HALFWIDTH KATAKANA LETTER YA;Lo;0;L;<narrow> 30E4;;;;N;;;;;
+FF95;HALFWIDTH KATAKANA LETTER YU;Lo;0;L;<narrow> 30E6;;;;N;;;;;
+FF96;HALFWIDTH KATAKANA LETTER YO;Lo;0;L;<narrow> 30E8;;;;N;;;;;
+FF97;HALFWIDTH KATAKANA LETTER RA;Lo;0;L;<narrow> 30E9;;;;N;;;;;
+FF98;HALFWIDTH KATAKANA LETTER RI;Lo;0;L;<narrow> 30EA;;;;N;;;;;
+FF99;HALFWIDTH KATAKANA LETTER RU;Lo;0;L;<narrow> 30EB;;;;N;;;;;
+FF9A;HALFWIDTH KATAKANA LETTER RE;Lo;0;L;<narrow> 30EC;;;;N;;;;;
+FF9B;HALFWIDTH KATAKANA LETTER RO;Lo;0;L;<narrow> 30ED;;;;N;;;;;
+FF9C;HALFWIDTH KATAKANA LETTER WA;Lo;0;L;<narrow> 30EF;;;;N;;;;;
+FF9D;HALFWIDTH KATAKANA LETTER N;Lo;0;L;<narrow> 30F3;;;;N;;;;;
+FF9E;HALFWIDTH KATAKANA VOICED SOUND MARK;Lm;0;L;<narrow> 3099;;;;N;;;;;
+FF9F;HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK;Lm;0;L;<narrow> 309A;;;;N;;;;;
+FFA0;HALFWIDTH HANGUL FILLER;Lo;0;L;<narrow> 3164;;;;N;HALFWIDTH HANGUL CAE OM;;;;
+FFA1;HALFWIDTH HANGUL LETTER KIYEOK;Lo;0;L;<narrow> 3131;;;;N;HALFWIDTH HANGUL LETTER GIYEOG;;;;
+FFA2;HALFWIDTH HANGUL LETTER SSANGKIYEOK;Lo;0;L;<narrow> 3132;;;;N;HALFWIDTH HANGUL LETTER SSANG GIYEOG;;;;
+FFA3;HALFWIDTH HANGUL LETTER KIYEOK-SIOS;Lo;0;L;<narrow> 3133;;;;N;HALFWIDTH HANGUL LETTER GIYEOG SIOS;;;;
+FFA4;HALFWIDTH HANGUL LETTER NIEUN;Lo;0;L;<narrow> 3134;;;;N;;;;;
+FFA5;HALFWIDTH HANGUL LETTER NIEUN-CIEUC;Lo;0;L;<narrow> 3135;;;;N;HALFWIDTH HANGUL LETTER NIEUN JIEUJ;;;;
+FFA6;HALFWIDTH HANGUL LETTER NIEUN-HIEUH;Lo;0;L;<narrow> 3136;;;;N;HALFWIDTH HANGUL LETTER NIEUN HIEUH;;;;
+FFA7;HALFWIDTH HANGUL LETTER TIKEUT;Lo;0;L;<narrow> 3137;;;;N;HALFWIDTH HANGUL LETTER DIGEUD;;;;
+FFA8;HALFWIDTH HANGUL LETTER SSANGTIKEUT;Lo;0;L;<narrow> 3138;;;;N;HALFWIDTH HANGUL LETTER SSANG DIGEUD;;;;
+FFA9;HALFWIDTH HANGUL LETTER RIEUL;Lo;0;L;<narrow> 3139;;;;N;HALFWIDTH HANGUL LETTER LIEUL;;;;
+FFAA;HALFWIDTH HANGUL LETTER RIEUL-KIYEOK;Lo;0;L;<narrow> 313A;;;;N;HALFWIDTH HANGUL LETTER LIEUL GIYEOG;;;;
+FFAB;HALFWIDTH HANGUL LETTER RIEUL-MIEUM;Lo;0;L;<narrow> 313B;;;;N;HALFWIDTH HANGUL LETTER LIEUL MIEUM;;;;
+FFAC;HALFWIDTH HANGUL LETTER RIEUL-PIEUP;Lo;0;L;<narrow> 313C;;;;N;HALFWIDTH HANGUL LETTER LIEUL BIEUB;;;;
+FFAD;HALFWIDTH HANGUL LETTER RIEUL-SIOS;Lo;0;L;<narrow> 313D;;;;N;HALFWIDTH HANGUL LETTER LIEUL SIOS;;;;
+FFAE;HALFWIDTH HANGUL LETTER RIEUL-THIEUTH;Lo;0;L;<narrow> 313E;;;;N;HALFWIDTH HANGUL LETTER LIEUL TIEUT;;;;
+FFAF;HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH;Lo;0;L;<narrow> 313F;;;;N;HALFWIDTH HANGUL LETTER LIEUL PIEUP;;;;
+FFB0;HALFWIDTH HANGUL LETTER RIEUL-HIEUH;Lo;0;L;<narrow> 3140;;;;N;HALFWIDTH HANGUL LETTER LIEUL HIEUH;;;;
+FFB1;HALFWIDTH HANGUL LETTER MIEUM;Lo;0;L;<narrow> 3141;;;;N;;;;;
+FFB2;HALFWIDTH HANGUL LETTER PIEUP;Lo;0;L;<narrow> 3142;;;;N;HALFWIDTH HANGUL LETTER BIEUB;;;;
+FFB3;HALFWIDTH HANGUL LETTER SSANGPIEUP;Lo;0;L;<narrow> 3143;;;;N;HALFWIDTH HANGUL LETTER SSANG BIEUB;;;;
+FFB4;HALFWIDTH HANGUL LETTER PIEUP-SIOS;Lo;0;L;<narrow> 3144;;;;N;HALFWIDTH HANGUL LETTER BIEUB SIOS;;;;
+FFB5;HALFWIDTH HANGUL LETTER SIOS;Lo;0;L;<narrow> 3145;;;;N;;;;;
+FFB6;HALFWIDTH HANGUL LETTER SSANGSIOS;Lo;0;L;<narrow> 3146;;;;N;HALFWIDTH HANGUL LETTER SSANG SIOS;;;;
+FFB7;HALFWIDTH HANGUL LETTER IEUNG;Lo;0;L;<narrow> 3147;;;;N;;;;;
+FFB8;HALFWIDTH HANGUL LETTER CIEUC;Lo;0;L;<narrow> 3148;;;;N;HALFWIDTH HANGUL LETTER JIEUJ;;;;
+FFB9;HALFWIDTH HANGUL LETTER SSANGCIEUC;Lo;0;L;<narrow> 3149;;;;N;HALFWIDTH HANGUL LETTER SSANG JIEUJ;;;;
+FFBA;HALFWIDTH HANGUL LETTER CHIEUCH;Lo;0;L;<narrow> 314A;;;;N;HALFWIDTH HANGUL LETTER CIEUC;;;;
+FFBB;HALFWIDTH HANGUL LETTER KHIEUKH;Lo;0;L;<narrow> 314B;;;;N;HALFWIDTH HANGUL LETTER KIYEOK;;;;
+FFBC;HALFWIDTH HANGUL LETTER THIEUTH;Lo;0;L;<narrow> 314C;;;;N;HALFWIDTH HANGUL LETTER TIEUT;;;;
+FFBD;HALFWIDTH HANGUL LETTER PHIEUPH;Lo;0;L;<narrow> 314D;;;;N;HALFWIDTH HANGUL LETTER PIEUP;;;;
+FFBE;HALFWIDTH HANGUL LETTER HIEUH;Lo;0;L;<narrow> 314E;;;;N;;;;;
+FFC2;HALFWIDTH HANGUL LETTER A;Lo;0;L;<narrow> 314F;;;;N;;;;;
+FFC3;HALFWIDTH HANGUL LETTER AE;Lo;0;L;<narrow> 3150;;;;N;;;;;
+FFC4;HALFWIDTH HANGUL LETTER YA;Lo;0;L;<narrow> 3151;;;;N;;;;;
+FFC5;HALFWIDTH HANGUL LETTER YAE;Lo;0;L;<narrow> 3152;;;;N;;;;;
+FFC6;HALFWIDTH HANGUL LETTER EO;Lo;0;L;<narrow> 3153;;;;N;;;;;
+FFC7;HALFWIDTH HANGUL LETTER E;Lo;0;L;<narrow> 3154;;;;N;;;;;
+FFCA;HALFWIDTH HANGUL LETTER YEO;Lo;0;L;<narrow> 3155;;;;N;;;;;
+FFCB;HALFWIDTH HANGUL LETTER YE;Lo;0;L;<narrow> 3156;;;;N;;;;;
+FFCC;HALFWIDTH HANGUL LETTER O;Lo;0;L;<narrow> 3157;;;;N;;;;;
+FFCD;HALFWIDTH HANGUL LETTER WA;Lo;0;L;<narrow> 3158;;;;N;;;;;
+FFCE;HALFWIDTH HANGUL LETTER WAE;Lo;0;L;<narrow> 3159;;;;N;;;;;
+FFCF;HALFWIDTH HANGUL LETTER OE;Lo;0;L;<narrow> 315A;;;;N;;;;;
+FFD2;HALFWIDTH HANGUL LETTER YO;Lo;0;L;<narrow> 315B;;;;N;;;;;
+FFD3;HALFWIDTH HANGUL LETTER U;Lo;0;L;<narrow> 315C;;;;N;;;;;
+FFD4;HALFWIDTH HANGUL LETTER WEO;Lo;0;L;<narrow> 315D;;;;N;;;;;
+FFD5;HALFWIDTH HANGUL LETTER WE;Lo;0;L;<narrow> 315E;;;;N;;;;;
+FFD6;HALFWIDTH HANGUL LETTER WI;Lo;0;L;<narrow> 315F;;;;N;;;;;
+FFD7;HALFWIDTH HANGUL LETTER YU;Lo;0;L;<narrow> 3160;;;;N;;;;;
+FFDA;HALFWIDTH HANGUL LETTER EU;Lo;0;L;<narrow> 3161;;;;N;;;;;
+FFDB;HALFWIDTH HANGUL LETTER YI;Lo;0;L;<narrow> 3162;;;;N;;;;;
+FFDC;HALFWIDTH HANGUL LETTER I;Lo;0;L;<narrow> 3163;;;;N;;;;;
+FFE0;FULLWIDTH CENT SIGN;Sc;0;ET;<wide> 00A2;;;;N;;;;;
+FFE1;FULLWIDTH POUND SIGN;Sc;0;ET;<wide> 00A3;;;;N;;;;;
+FFE2;FULLWIDTH NOT SIGN;Sm;0;ON;<wide> 00AC;;;;N;;;;;
+FFE3;FULLWIDTH MACRON;Sk;0;ON;<wide> 00AF;;;;N;FULLWIDTH SPACING MACRON;;;;
+FFE4;FULLWIDTH BROKEN BAR;So;0;ON;<wide> 00A6;;;;N;FULLWIDTH BROKEN VERTICAL BAR;;;;
+FFE5;FULLWIDTH YEN SIGN;Sc;0;ET;<wide> 00A5;;;;N;;;;;
+FFE6;FULLWIDTH WON SIGN;Sc;0;ET;<wide> 20A9;;;;N;;;;;
+FFE8;HALFWIDTH FORMS LIGHT VERTICAL;So;0;ON;<narrow> 2502;;;;N;;;;;
+FFE9;HALFWIDTH LEFTWARDS ARROW;Sm;0;ON;<narrow> 2190;;;;N;;;;;
+FFEA;HALFWIDTH UPWARDS ARROW;Sm;0;ON;<narrow> 2191;;;;N;;;;;
+FFEB;HALFWIDTH RIGHTWARDS ARROW;Sm;0;ON;<narrow> 2192;;;;N;;;;;
+FFEC;HALFWIDTH DOWNWARDS ARROW;Sm;0;ON;<narrow> 2193;;;;N;;;;;
+FFED;HALFWIDTH BLACK SQUARE;So;0;ON;<narrow> 25A0;;;;N;;;;;
+FFEE;HALFWIDTH WHITE CIRCLE;So;0;ON;<narrow> 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;;;;;
+100CA;LINEAR B IDEOGRAM B234;Lo;0;L;;;;;N;;;;;
+100CB;LINEAR B IDEOGRAM B236;Lo;0;L;;;;;N;;;;;
+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;;;;;
+10190;ROMAN SEXTANS SIGN;So;0;ON;;;;;N;;;;;
+10191;ROMAN UNCIA SIGN;So;0;ON;;;;;N;;;;;
+10192;ROMAN SEMUNCIA SIGN;So;0;ON;;;;;N;;;;;
+10193;ROMAN SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10194;ROMAN DIMIDIA SEXTULA SIGN;So;0;ON;;;;;N;;;;;
+10195;ROMAN SILIQUA SIGN;So;0;ON;;;;;N;;;;;
+10196;ROMAN DENARIUS SIGN;So;0;ON;;;;;N;;;;;
+10197;ROMAN QUINARIUS SIGN;So;0;ON;;;;;N;;;;;
+10198;ROMAN SESTERTIUS SIGN;So;0;ON;;;;;N;;;;;
+10199;ROMAN DUPONDIUS SIGN;So;0;ON;;;;;N;;;;;
+1019A;ROMAN AS SIGN;So;0;ON;;;;;N;;;;;
+1019B;ROMAN CENTURIAL SIGN;So;0;ON;;;;;N;;;;;
+101D0;PHAISTOS DISC SIGN PEDESTRIAN;So;0;L;;;;;N;;;;;
+101D1;PHAISTOS DISC SIGN PLUMED HEAD;So;0;L;;;;;N;;;;;
+101D2;PHAISTOS DISC SIGN TATTOOED HEAD;So;0;L;;;;;N;;;;;
+101D3;PHAISTOS DISC SIGN CAPTIVE;So;0;L;;;;;N;;;;;
+101D4;PHAISTOS DISC SIGN CHILD;So;0;L;;;;;N;;;;;
+101D5;PHAISTOS DISC SIGN WOMAN;So;0;L;;;;;N;;;;;
+101D6;PHAISTOS DISC SIGN HELMET;So;0;L;;;;;N;;;;;
+101D7;PHAISTOS DISC SIGN GAUNTLET;So;0;L;;;;;N;;;;;
+101D8;PHAISTOS DISC SIGN TIARA;So;0;L;;;;;N;;;;;
+101D9;PHAISTOS DISC SIGN ARROW;So;0;L;;;;;N;;;;;
+101DA;PHAISTOS DISC SIGN BOW;So;0;L;;;;;N;;;;;
+101DB;PHAISTOS DISC SIGN SHIELD;So;0;L;;;;;N;;;;;
+101DC;PHAISTOS DISC SIGN CLUB;So;0;L;;;;;N;;;;;
+101DD;PHAISTOS DISC SIGN MANACLES;So;0;L;;;;;N;;;;;
+101DE;PHAISTOS DISC SIGN MATTOCK;So;0;L;;;;;N;;;;;
+101DF;PHAISTOS DISC SIGN SAW;So;0;L;;;;;N;;;;;
+101E0;PHAISTOS DISC SIGN LID;So;0;L;;;;;N;;;;;
+101E1;PHAISTOS DISC SIGN BOOMERANG;So;0;L;;;;;N;;;;;
+101E2;PHAISTOS DISC SIGN CARPENTRY PLANE;So;0;L;;;;;N;;;;;
+101E3;PHAISTOS DISC SIGN DOLIUM;So;0;L;;;;;N;;;;;
+101E4;PHAISTOS DISC SIGN COMB;So;0;L;;;;;N;;;;;
+101E5;PHAISTOS DISC SIGN SLING;So;0;L;;;;;N;;;;;
+101E6;PHAISTOS DISC SIGN COLUMN;So;0;L;;;;;N;;;;;
+101E7;PHAISTOS DISC SIGN BEEHIVE;So;0;L;;;;;N;;;;;
+101E8;PHAISTOS DISC SIGN SHIP;So;0;L;;;;;N;;;;;
+101E9;PHAISTOS DISC SIGN HORN;So;0;L;;;;;N;;;;;
+101EA;PHAISTOS DISC SIGN HIDE;So;0;L;;;;;N;;;;;
+101EB;PHAISTOS DISC SIGN BULLS LEG;So;0;L;;;;;N;;;;;
+101EC;PHAISTOS DISC SIGN CAT;So;0;L;;;;;N;;;;;
+101ED;PHAISTOS DISC SIGN RAM;So;0;L;;;;;N;;;;;
+101EE;PHAISTOS DISC SIGN EAGLE;So;0;L;;;;;N;;;;;
+101EF;PHAISTOS DISC SIGN DOVE;So;0;L;;;;;N;;;;;
+101F0;PHAISTOS DISC SIGN TUNNY;So;0;L;;;;;N;;;;;
+101F1;PHAISTOS DISC SIGN BEE;So;0;L;;;;;N;;;;;
+101F2;PHAISTOS DISC SIGN PLANE TREE;So;0;L;;;;;N;;;;;
+101F3;PHAISTOS DISC SIGN VINE;So;0;L;;;;;N;;;;;
+101F4;PHAISTOS DISC SIGN PAPYRUS;So;0;L;;;;;N;;;;;
+101F5;PHAISTOS DISC SIGN ROSETTE;So;0;L;;;;;N;;;;;
+101F6;PHAISTOS DISC SIGN LILY;So;0;L;;;;;N;;;;;
+101F7;PHAISTOS DISC SIGN OX BACK;So;0;L;;;;;N;;;;;
+101F8;PHAISTOS DISC SIGN FLUTE;So;0;L;;;;;N;;;;;
+101F9;PHAISTOS DISC SIGN GRATER;So;0;L;;;;;N;;;;;
+101FA;PHAISTOS DISC SIGN STRAINER;So;0;L;;;;;N;;;;;
+101FB;PHAISTOS DISC SIGN SMALL AXE;So;0;L;;;;;N;;;;;
+101FC;PHAISTOS DISC SIGN WAVY BAND;So;0;L;;;;;N;;;;;
+101FD;PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE;Mn;220;NSM;;;;;N;;;;;
+10280;LYCIAN LETTER A;Lo;0;L;;;;;N;;;;;
+10281;LYCIAN LETTER E;Lo;0;L;;;;;N;;;;;
+10282;LYCIAN LETTER B;Lo;0;L;;;;;N;;;;;
+10283;LYCIAN LETTER BH;Lo;0;L;;;;;N;;;;;
+10284;LYCIAN LETTER G;Lo;0;L;;;;;N;;;;;
+10285;LYCIAN LETTER D;Lo;0;L;;;;;N;;;;;
+10286;LYCIAN LETTER I;Lo;0;L;;;;;N;;;;;
+10287;LYCIAN LETTER W;Lo;0;L;;;;;N;;;;;
+10288;LYCIAN LETTER Z;Lo;0;L;;;;;N;;;;;
+10289;LYCIAN LETTER TH;Lo;0;L;;;;;N;;;;;
+1028A;LYCIAN LETTER J;Lo;0;L;;;;;N;;;;;
+1028B;LYCIAN LETTER K;Lo;0;L;;;;;N;;;;;
+1028C;LYCIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+1028D;LYCIAN LETTER L;Lo;0;L;;;;;N;;;;;
+1028E;LYCIAN LETTER M;Lo;0;L;;;;;N;;;;;
+1028F;LYCIAN LETTER N;Lo;0;L;;;;;N;;;;;
+10290;LYCIAN LETTER MM;Lo;0;L;;;;;N;;;;;
+10291;LYCIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+10292;LYCIAN LETTER U;Lo;0;L;;;;;N;;;;;
+10293;LYCIAN LETTER P;Lo;0;L;;;;;N;;;;;
+10294;LYCIAN LETTER KK;Lo;0;L;;;;;N;;;;;
+10295;LYCIAN LETTER R;Lo;0;L;;;;;N;;;;;
+10296;LYCIAN LETTER S;Lo;0;L;;;;;N;;;;;
+10297;LYCIAN LETTER T;Lo;0;L;;;;;N;;;;;
+10298;LYCIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+10299;LYCIAN LETTER AN;Lo;0;L;;;;;N;;;;;
+1029A;LYCIAN LETTER EN;Lo;0;L;;;;;N;;;;;
+1029B;LYCIAN LETTER H;Lo;0;L;;;;;N;;;;;
+1029C;LYCIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102A0;CARIAN LETTER A;Lo;0;L;;;;;N;;;;;
+102A1;CARIAN LETTER P2;Lo;0;L;;;;;N;;;;;
+102A2;CARIAN LETTER D;Lo;0;L;;;;;N;;;;;
+102A3;CARIAN LETTER L;Lo;0;L;;;;;N;;;;;
+102A4;CARIAN LETTER UUU;Lo;0;L;;;;;N;;;;;
+102A5;CARIAN LETTER R;Lo;0;L;;;;;N;;;;;
+102A6;CARIAN LETTER LD;Lo;0;L;;;;;N;;;;;
+102A7;CARIAN LETTER A2;Lo;0;L;;;;;N;;;;;
+102A8;CARIAN LETTER Q;Lo;0;L;;;;;N;;;;;
+102A9;CARIAN LETTER B;Lo;0;L;;;;;N;;;;;
+102AA;CARIAN LETTER M;Lo;0;L;;;;;N;;;;;
+102AB;CARIAN LETTER O;Lo;0;L;;;;;N;;;;;
+102AC;CARIAN LETTER D2;Lo;0;L;;;;;N;;;;;
+102AD;CARIAN LETTER T;Lo;0;L;;;;;N;;;;;
+102AE;CARIAN LETTER SH;Lo;0;L;;;;;N;;;;;
+102AF;CARIAN LETTER SH2;Lo;0;L;;;;;N;;;;;
+102B0;CARIAN LETTER S;Lo;0;L;;;;;N;;;;;
+102B1;CARIAN LETTER C-18;Lo;0;L;;;;;N;;;;;
+102B2;CARIAN LETTER U;Lo;0;L;;;;;N;;;;;
+102B3;CARIAN LETTER NN;Lo;0;L;;;;;N;;;;;
+102B4;CARIAN LETTER X;Lo;0;L;;;;;N;;;;;
+102B5;CARIAN LETTER N;Lo;0;L;;;;;N;;;;;
+102B6;CARIAN LETTER TT2;Lo;0;L;;;;;N;;;;;
+102B7;CARIAN LETTER P;Lo;0;L;;;;;N;;;;;
+102B8;CARIAN LETTER SS;Lo;0;L;;;;;N;;;;;
+102B9;CARIAN LETTER I;Lo;0;L;;;;;N;;;;;
+102BA;CARIAN LETTER E;Lo;0;L;;;;;N;;;;;
+102BB;CARIAN LETTER UUUU;Lo;0;L;;;;;N;;;;;
+102BC;CARIAN LETTER K;Lo;0;L;;;;;N;;;;;
+102BD;CARIAN LETTER K2;Lo;0;L;;;;;N;;;;;
+102BE;CARIAN LETTER ND;Lo;0;L;;;;;N;;;;;
+102BF;CARIAN LETTER UU;Lo;0;L;;;;;N;;;;;
+102C0;CARIAN LETTER G;Lo;0;L;;;;;N;;;;;
+102C1;CARIAN LETTER G2;Lo;0;L;;;;;N;;;;;
+102C2;CARIAN LETTER ST;Lo;0;L;;;;;N;;;;;
+102C3;CARIAN LETTER ST2;Lo;0;L;;;;;N;;;;;
+102C4;CARIAN LETTER NG;Lo;0;L;;;;;N;;;;;
+102C5;CARIAN LETTER II;Lo;0;L;;;;;N;;;;;
+102C6;CARIAN LETTER C-39;Lo;0;L;;;;;N;;;;;
+102C7;CARIAN LETTER TT;Lo;0;L;;;;;N;;;;;
+102C8;CARIAN LETTER UUU2;Lo;0;L;;;;;N;;;;;
+102C9;CARIAN LETTER RR;Lo;0;L;;;;;N;;;;;
+102CA;CARIAN LETTER MB;Lo;0;L;;;;;N;;;;;
+102CB;CARIAN LETTER MB2;Lo;0;L;;;;;N;;;;;
+102CC;CARIAN LETTER MB3;Lo;0;L;;;;;N;;;;;
+102CD;CARIAN LETTER MB4;Lo;0;L;;;;;N;;;;;
+102CE;CARIAN LETTER LD2;Lo;0;L;;;;;N;;;;;
+102CF;CARIAN LETTER E2;Lo;0;L;;;;;N;;;;;
+102D0;CARIAN LETTER UUU3;Lo;0;L;;;;;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;;;;;
+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;;;;;
+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;;;;;
+1031C;OLD ITALIC LETTER CHE;Lo;0;L;;;;;N;;;;;
+1031D;OLD ITALIC LETTER II;Lo;0;L;;;;;N;;;;;
+1031E;OLD ITALIC LETTER UU;Lo;0;L;;;;;N;;;;;
+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;;;;;
+10840;IMPERIAL ARAMAIC LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+10841;IMPERIAL ARAMAIC LETTER BETH;Lo;0;R;;;;;N;;;;;
+10842;IMPERIAL ARAMAIC LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+10843;IMPERIAL ARAMAIC LETTER DALETH;Lo;0;R;;;;;N;;;;;
+10844;IMPERIAL ARAMAIC LETTER HE;Lo;0;R;;;;;N;;;;;
+10845;IMPERIAL ARAMAIC LETTER WAW;Lo;0;R;;;;;N;;;;;
+10846;IMPERIAL ARAMAIC LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+10847;IMPERIAL ARAMAIC LETTER HETH;Lo;0;R;;;;;N;;;;;
+10848;IMPERIAL ARAMAIC LETTER TETH;Lo;0;R;;;;;N;;;;;
+10849;IMPERIAL ARAMAIC LETTER YODH;Lo;0;R;;;;;N;;;;;
+1084A;IMPERIAL ARAMAIC LETTER KAPH;Lo;0;R;;;;;N;;;;;
+1084B;IMPERIAL ARAMAIC LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+1084C;IMPERIAL ARAMAIC LETTER MEM;Lo;0;R;;;;;N;;;;;
+1084D;IMPERIAL ARAMAIC LETTER NUN;Lo;0;R;;;;;N;;;;;
+1084E;IMPERIAL ARAMAIC LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+1084F;IMPERIAL ARAMAIC LETTER AYIN;Lo;0;R;;;;;N;;;;;
+10850;IMPERIAL ARAMAIC LETTER PE;Lo;0;R;;;;;N;;;;;
+10851;IMPERIAL ARAMAIC LETTER SADHE;Lo;0;R;;;;;N;;;;;
+10852;IMPERIAL ARAMAIC LETTER QOPH;Lo;0;R;;;;;N;;;;;
+10853;IMPERIAL ARAMAIC LETTER RESH;Lo;0;R;;;;;N;;;;;
+10854;IMPERIAL ARAMAIC LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10855;IMPERIAL ARAMAIC LETTER TAW;Lo;0;R;;;;;N;;;;;
+10857;IMPERIAL ARAMAIC SECTION SIGN;Po;0;R;;;;;N;;;;;
+10858;IMPERIAL ARAMAIC NUMBER ONE;No;0;R;;;;1;N;;;;;
+10859;IMPERIAL ARAMAIC NUMBER TWO;No;0;R;;;;2;N;;;;;
+1085A;IMPERIAL ARAMAIC NUMBER THREE;No;0;R;;;;3;N;;;;;
+1085B;IMPERIAL ARAMAIC NUMBER TEN;No;0;R;;;;10;N;;;;;
+1085C;IMPERIAL ARAMAIC NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+1085D;IMPERIAL ARAMAIC NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+1085E;IMPERIAL ARAMAIC NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+1085F;IMPERIAL ARAMAIC NUMBER TEN THOUSAND;No;0;R;;;;10000;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;;;;;
+1091A;PHOENICIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
+1091B;PHOENICIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
+1091F;PHOENICIAN WORD SEPARATOR;Po;0;ON;;;;;N;;;;;
+10920;LYDIAN LETTER A;Lo;0;R;;;;;N;;;;;
+10921;LYDIAN LETTER B;Lo;0;R;;;;;N;;;;;
+10922;LYDIAN LETTER G;Lo;0;R;;;;;N;;;;;
+10923;LYDIAN LETTER D;Lo;0;R;;;;;N;;;;;
+10924;LYDIAN LETTER E;Lo;0;R;;;;;N;;;;;
+10925;LYDIAN LETTER V;Lo;0;R;;;;;N;;;;;
+10926;LYDIAN LETTER I;Lo;0;R;;;;;N;;;;;
+10927;LYDIAN LETTER Y;Lo;0;R;;;;;N;;;;;
+10928;LYDIAN LETTER K;Lo;0;R;;;;;N;;;;;
+10929;LYDIAN LETTER L;Lo;0;R;;;;;N;;;;;
+1092A;LYDIAN LETTER M;Lo;0;R;;;;;N;;;;;
+1092B;LYDIAN LETTER N;Lo;0;R;;;;;N;;;;;
+1092C;LYDIAN LETTER O;Lo;0;R;;;;;N;;;;;
+1092D;LYDIAN LETTER R;Lo;0;R;;;;;N;;;;;
+1092E;LYDIAN LETTER SS;Lo;0;R;;;;;N;;;;;
+1092F;LYDIAN LETTER T;Lo;0;R;;;;;N;;;;;
+10930;LYDIAN LETTER U;Lo;0;R;;;;;N;;;;;
+10931;LYDIAN LETTER F;Lo;0;R;;;;;N;;;;;
+10932;LYDIAN LETTER Q;Lo;0;R;;;;;N;;;;;
+10933;LYDIAN LETTER S;Lo;0;R;;;;;N;;;;;
+10934;LYDIAN LETTER TT;Lo;0;R;;;;;N;;;;;
+10935;LYDIAN LETTER AN;Lo;0;R;;;;;N;;;;;
+10936;LYDIAN LETTER EN;Lo;0;R;;;;;N;;;;;
+10937;LYDIAN LETTER LY;Lo;0;R;;;;;N;;;;;
+10938;LYDIAN LETTER NN;Lo;0;R;;;;;N;;;;;
+10939;LYDIAN LETTER C;Lo;0;R;;;;;N;;;;;
+1093F;LYDIAN TRIANGULAR MARK;Po;0;R;;;;;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;;;;;
+10A60;OLD SOUTH ARABIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10A61;OLD SOUTH ARABIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+10A62;OLD SOUTH ARABIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
+10A63;OLD SOUTH ARABIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+10A64;OLD SOUTH ARABIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;
+10A65;OLD SOUTH ARABIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
+10A66;OLD SOUTH ARABIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10A67;OLD SOUTH ARABIAN LETTER RESH;Lo;0;R;;;;;N;;;;;
+10A68;OLD SOUTH ARABIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
+10A69;OLD SOUTH ARABIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
+10A6A;OLD SOUTH ARABIAN LETTER SAT;Lo;0;R;;;;;N;;;;;
+10A6B;OLD SOUTH ARABIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
+10A6C;OLD SOUTH ARABIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+10A6D;OLD SOUTH ARABIAN LETTER KHETH;Lo;0;R;;;;;N;;;;;
+10A6E;OLD SOUTH ARABIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
+10A6F;OLD SOUTH ARABIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+10A70;OLD SOUTH ARABIAN LETTER FE;Lo;0;R;;;;;N;;;;;
+10A71;OLD SOUTH ARABIAN LETTER ALEF;Lo;0;R;;;;;N;;;;;
+10A72;OLD SOUTH ARABIAN LETTER AYN;Lo;0;R;;;;;N;;;;;
+10A73;OLD SOUTH ARABIAN LETTER DHADHE;Lo;0;R;;;;;N;;;;;
+10A74;OLD SOUTH ARABIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+10A75;OLD SOUTH ARABIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;
+10A76;OLD SOUTH ARABIAN LETTER GHAYN;Lo;0;R;;;;;N;;;;;
+10A77;OLD SOUTH ARABIAN LETTER TETH;Lo;0;R;;;;;N;;;;;
+10A78;OLD SOUTH ARABIAN LETTER ZAYN;Lo;0;R;;;;;N;;;;;
+10A79;OLD SOUTH ARABIAN LETTER DHALETH;Lo;0;R;;;;;N;;;;;
+10A7A;OLD SOUTH ARABIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
+10A7B;OLD SOUTH ARABIAN LETTER THAW;Lo;0;R;;;;;N;;;;;
+10A7C;OLD SOUTH ARABIAN LETTER THETH;Lo;0;R;;;;;N;;;;;
+10A7D;OLD SOUTH ARABIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10A7E;OLD SOUTH ARABIAN NUMBER FIFTY;No;0;R;;;;50;N;;;;;
+10A7F;OLD SOUTH ARABIAN NUMERIC INDICATOR;Po;0;R;;;;;N;;;;;
+10B00;AVESTAN LETTER A;Lo;0;R;;;;;N;;;;;
+10B01;AVESTAN LETTER AA;Lo;0;R;;;;;N;;;;;
+10B02;AVESTAN LETTER AO;Lo;0;R;;;;;N;;;;;
+10B03;AVESTAN LETTER AAO;Lo;0;R;;;;;N;;;;;
+10B04;AVESTAN LETTER AN;Lo;0;R;;;;;N;;;;;
+10B05;AVESTAN LETTER AAN;Lo;0;R;;;;;N;;;;;
+10B06;AVESTAN LETTER AE;Lo;0;R;;;;;N;;;;;
+10B07;AVESTAN LETTER AEE;Lo;0;R;;;;;N;;;;;
+10B08;AVESTAN LETTER E;Lo;0;R;;;;;N;;;;;
+10B09;AVESTAN LETTER EE;Lo;0;R;;;;;N;;;;;
+10B0A;AVESTAN LETTER O;Lo;0;R;;;;;N;;;;;
+10B0B;AVESTAN LETTER OO;Lo;0;R;;;;;N;;;;;
+10B0C;AVESTAN LETTER I;Lo;0;R;;;;;N;;;;;
+10B0D;AVESTAN LETTER II;Lo;0;R;;;;;N;;;;;
+10B0E;AVESTAN LETTER U;Lo;0;R;;;;;N;;;;;
+10B0F;AVESTAN LETTER UU;Lo;0;R;;;;;N;;;;;
+10B10;AVESTAN LETTER KE;Lo;0;R;;;;;N;;;;;
+10B11;AVESTAN LETTER XE;Lo;0;R;;;;;N;;;;;
+10B12;AVESTAN LETTER XYE;Lo;0;R;;;;;N;;;;;
+10B13;AVESTAN LETTER XVE;Lo;0;R;;;;;N;;;;;
+10B14;AVESTAN LETTER GE;Lo;0;R;;;;;N;;;;;
+10B15;AVESTAN LETTER GGE;Lo;0;R;;;;;N;;;;;
+10B16;AVESTAN LETTER GHE;Lo;0;R;;;;;N;;;;;
+10B17;AVESTAN LETTER CE;Lo;0;R;;;;;N;;;;;
+10B18;AVESTAN LETTER JE;Lo;0;R;;;;;N;;;;;
+10B19;AVESTAN LETTER TE;Lo;0;R;;;;;N;;;;;
+10B1A;AVESTAN LETTER THE;Lo;0;R;;;;;N;;;;;
+10B1B;AVESTAN LETTER DE;Lo;0;R;;;;;N;;;;;
+10B1C;AVESTAN LETTER DHE;Lo;0;R;;;;;N;;;;;
+10B1D;AVESTAN LETTER TTE;Lo;0;R;;;;;N;;;;;
+10B1E;AVESTAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10B1F;AVESTAN LETTER FE;Lo;0;R;;;;;N;;;;;
+10B20;AVESTAN LETTER BE;Lo;0;R;;;;;N;;;;;
+10B21;AVESTAN LETTER BHE;Lo;0;R;;;;;N;;;;;
+10B22;AVESTAN LETTER NGE;Lo;0;R;;;;;N;;;;;
+10B23;AVESTAN LETTER NGYE;Lo;0;R;;;;;N;;;;;
+10B24;AVESTAN LETTER NGVE;Lo;0;R;;;;;N;;;;;
+10B25;AVESTAN LETTER NE;Lo;0;R;;;;;N;;;;;
+10B26;AVESTAN LETTER NYE;Lo;0;R;;;;;N;;;;;
+10B27;AVESTAN LETTER NNE;Lo;0;R;;;;;N;;;;;
+10B28;AVESTAN LETTER ME;Lo;0;R;;;;;N;;;;;
+10B29;AVESTAN LETTER HME;Lo;0;R;;;;;N;;;;;
+10B2A;AVESTAN LETTER YYE;Lo;0;R;;;;;N;;;;;
+10B2B;AVESTAN LETTER YE;Lo;0;R;;;;;N;;;;;
+10B2C;AVESTAN LETTER VE;Lo;0;R;;;;;N;;;;;
+10B2D;AVESTAN LETTER RE;Lo;0;R;;;;;N;;;;;
+10B2E;AVESTAN LETTER LE;Lo;0;R;;;;;N;;;;;
+10B2F;AVESTAN LETTER SE;Lo;0;R;;;;;N;;;;;
+10B30;AVESTAN LETTER ZE;Lo;0;R;;;;;N;;;;;
+10B31;AVESTAN LETTER SHE;Lo;0;R;;;;;N;;;;;
+10B32;AVESTAN LETTER ZHE;Lo;0;R;;;;;N;;;;;
+10B33;AVESTAN LETTER SHYE;Lo;0;R;;;;;N;;;;;
+10B34;AVESTAN LETTER SSHE;Lo;0;R;;;;;N;;;;;
+10B35;AVESTAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10B39;AVESTAN ABBREVIATION MARK;Po;0;ON;;;;;N;;;;;
+10B3A;TINY TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+10B3B;SMALL TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+10B3C;LARGE TWO DOTS OVER ONE DOT PUNCTUATION;Po;0;ON;;;;;N;;;;;
+10B3D;LARGE ONE DOT OVER TWO DOTS PUNCTUATION;Po;0;ON;;;;;N;;;;;
+10B3E;LARGE TWO RINGS OVER ONE RING PUNCTUATION;Po;0;ON;;;;;N;;;;;
+10B3F;LARGE ONE RING OVER TWO RINGS PUNCTUATION;Po;0;ON;;;;;N;;;;;
+10B40;INSCRIPTIONAL PARTHIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+10B41;INSCRIPTIONAL PARTHIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
+10B42;INSCRIPTIONAL PARTHIAN LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+10B43;INSCRIPTIONAL PARTHIAN LETTER DALETH;Lo;0;R;;;;;N;;;;;
+10B44;INSCRIPTIONAL PARTHIAN LETTER HE;Lo;0;R;;;;;N;;;;;
+10B45;INSCRIPTIONAL PARTHIAN LETTER WAW;Lo;0;R;;;;;N;;;;;
+10B46;INSCRIPTIONAL PARTHIAN LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+10B47;INSCRIPTIONAL PARTHIAN LETTER HETH;Lo;0;R;;;;;N;;;;;
+10B48;INSCRIPTIONAL PARTHIAN LETTER TETH;Lo;0;R;;;;;N;;;;;
+10B49;INSCRIPTIONAL PARTHIAN LETTER YODH;Lo;0;R;;;;;N;;;;;
+10B4A;INSCRIPTIONAL PARTHIAN LETTER KAPH;Lo;0;R;;;;;N;;;;;
+10B4B;INSCRIPTIONAL PARTHIAN LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+10B4C;INSCRIPTIONAL PARTHIAN LETTER MEM;Lo;0;R;;;;;N;;;;;
+10B4D;INSCRIPTIONAL PARTHIAN LETTER NUN;Lo;0;R;;;;;N;;;;;
+10B4E;INSCRIPTIONAL PARTHIAN LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+10B4F;INSCRIPTIONAL PARTHIAN LETTER AYIN;Lo;0;R;;;;;N;;;;;
+10B50;INSCRIPTIONAL PARTHIAN LETTER PE;Lo;0;R;;;;;N;;;;;
+10B51;INSCRIPTIONAL PARTHIAN LETTER SADHE;Lo;0;R;;;;;N;;;;;
+10B52;INSCRIPTIONAL PARTHIAN LETTER QOPH;Lo;0;R;;;;;N;;;;;
+10B53;INSCRIPTIONAL PARTHIAN LETTER RESH;Lo;0;R;;;;;N;;;;;
+10B54;INSCRIPTIONAL PARTHIAN LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10B55;INSCRIPTIONAL PARTHIAN LETTER TAW;Lo;0;R;;;;;N;;;;;
+10B58;INSCRIPTIONAL PARTHIAN NUMBER ONE;No;0;R;;;;1;N;;;;;
+10B59;INSCRIPTIONAL PARTHIAN NUMBER TWO;No;0;R;;;;2;N;;;;;
+10B5A;INSCRIPTIONAL PARTHIAN NUMBER THREE;No;0;R;;;;3;N;;;;;
+10B5B;INSCRIPTIONAL PARTHIAN NUMBER FOUR;No;0;R;;;;4;N;;;;;
+10B5C;INSCRIPTIONAL PARTHIAN NUMBER TEN;No;0;R;;;;10;N;;;;;
+10B5D;INSCRIPTIONAL PARTHIAN NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10B5E;INSCRIPTIONAL PARTHIAN NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10B5F;INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10B60;INSCRIPTIONAL PAHLAVI LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+10B61;INSCRIPTIONAL PAHLAVI LETTER BETH;Lo;0;R;;;;;N;;;;;
+10B62;INSCRIPTIONAL PAHLAVI LETTER GIMEL;Lo;0;R;;;;;N;;;;;
+10B63;INSCRIPTIONAL PAHLAVI LETTER DALETH;Lo;0;R;;;;;N;;;;;
+10B64;INSCRIPTIONAL PAHLAVI LETTER HE;Lo;0;R;;;;;N;;;;;
+10B65;INSCRIPTIONAL PAHLAVI LETTER WAW-AYIN-RESH;Lo;0;R;;;;;N;;;;;
+10B66;INSCRIPTIONAL PAHLAVI LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+10B67;INSCRIPTIONAL PAHLAVI LETTER HETH;Lo;0;R;;;;;N;;;;;
+10B68;INSCRIPTIONAL PAHLAVI LETTER TETH;Lo;0;R;;;;;N;;;;;
+10B69;INSCRIPTIONAL PAHLAVI LETTER YODH;Lo;0;R;;;;;N;;;;;
+10B6A;INSCRIPTIONAL PAHLAVI LETTER KAPH;Lo;0;R;;;;;N;;;;;
+10B6B;INSCRIPTIONAL PAHLAVI LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+10B6C;INSCRIPTIONAL PAHLAVI LETTER MEM-QOPH;Lo;0;R;;;;;N;;;;;
+10B6D;INSCRIPTIONAL PAHLAVI LETTER NUN;Lo;0;R;;;;;N;;;;;
+10B6E;INSCRIPTIONAL PAHLAVI LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+10B6F;INSCRIPTIONAL PAHLAVI LETTER PE;Lo;0;R;;;;;N;;;;;
+10B70;INSCRIPTIONAL PAHLAVI LETTER SADHE;Lo;0;R;;;;;N;;;;;
+10B71;INSCRIPTIONAL PAHLAVI LETTER SHIN;Lo;0;R;;;;;N;;;;;
+10B72;INSCRIPTIONAL PAHLAVI LETTER TAW;Lo;0;R;;;;;N;;;;;
+10B78;INSCRIPTIONAL PAHLAVI NUMBER ONE;No;0;R;;;;1;N;;;;;
+10B79;INSCRIPTIONAL PAHLAVI NUMBER TWO;No;0;R;;;;2;N;;;;;
+10B7A;INSCRIPTIONAL PAHLAVI NUMBER THREE;No;0;R;;;;3;N;;;;;
+10B7B;INSCRIPTIONAL PAHLAVI NUMBER FOUR;No;0;R;;;;4;N;;;;;
+10B7C;INSCRIPTIONAL PAHLAVI NUMBER TEN;No;0;R;;;;10;N;;;;;
+10B7D;INSCRIPTIONAL PAHLAVI NUMBER TWENTY;No;0;R;;;;20;N;;;;;
+10B7E;INSCRIPTIONAL PAHLAVI NUMBER ONE HUNDRED;No;0;R;;;;100;N;;;;;
+10B7F;INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND;No;0;R;;;;1000;N;;;;;
+10C00;OLD TURKIC LETTER ORKHON A;Lo;0;R;;;;;N;;;;;
+10C01;OLD TURKIC LETTER YENISEI A;Lo;0;R;;;;;N;;;;;
+10C02;OLD TURKIC LETTER YENISEI AE;Lo;0;R;;;;;N;;;;;
+10C03;OLD TURKIC LETTER ORKHON I;Lo;0;R;;;;;N;;;;;
+10C04;OLD TURKIC LETTER YENISEI I;Lo;0;R;;;;;N;;;;;
+10C05;OLD TURKIC LETTER YENISEI E;Lo;0;R;;;;;N;;;;;
+10C06;OLD TURKIC LETTER ORKHON O;Lo;0;R;;;;;N;;;;;
+10C07;OLD TURKIC LETTER ORKHON OE;Lo;0;R;;;;;N;;;;;
+10C08;OLD TURKIC LETTER YENISEI OE;Lo;0;R;;;;;N;;;;;
+10C09;OLD TURKIC LETTER ORKHON AB;Lo;0;R;;;;;N;;;;;
+10C0A;OLD TURKIC LETTER YENISEI AB;Lo;0;R;;;;;N;;;;;
+10C0B;OLD TURKIC LETTER ORKHON AEB;Lo;0;R;;;;;N;;;;;
+10C0C;OLD TURKIC LETTER YENISEI AEB;Lo;0;R;;;;;N;;;;;
+10C0D;OLD TURKIC LETTER ORKHON AG;Lo;0;R;;;;;N;;;;;
+10C0E;OLD TURKIC LETTER YENISEI AG;Lo;0;R;;;;;N;;;;;
+10C0F;OLD TURKIC LETTER ORKHON AEG;Lo;0;R;;;;;N;;;;;
+10C10;OLD TURKIC LETTER YENISEI AEG;Lo;0;R;;;;;N;;;;;
+10C11;OLD TURKIC LETTER ORKHON AD;Lo;0;R;;;;;N;;;;;
+10C12;OLD TURKIC LETTER YENISEI AD;Lo;0;R;;;;;N;;;;;
+10C13;OLD TURKIC LETTER ORKHON AED;Lo;0;R;;;;;N;;;;;
+10C14;OLD TURKIC LETTER ORKHON EZ;Lo;0;R;;;;;N;;;;;
+10C15;OLD TURKIC LETTER YENISEI EZ;Lo;0;R;;;;;N;;;;;
+10C16;OLD TURKIC LETTER ORKHON AY;Lo;0;R;;;;;N;;;;;
+10C17;OLD TURKIC LETTER YENISEI AY;Lo;0;R;;;;;N;;;;;
+10C18;OLD TURKIC LETTER ORKHON AEY;Lo;0;R;;;;;N;;;;;
+10C19;OLD TURKIC LETTER YENISEI AEY;Lo;0;R;;;;;N;;;;;
+10C1A;OLD TURKIC LETTER ORKHON AEK;Lo;0;R;;;;;N;;;;;
+10C1B;OLD TURKIC LETTER YENISEI AEK;Lo;0;R;;;;;N;;;;;
+10C1C;OLD TURKIC LETTER ORKHON OEK;Lo;0;R;;;;;N;;;;;
+10C1D;OLD TURKIC LETTER YENISEI OEK;Lo;0;R;;;;;N;;;;;
+10C1E;OLD TURKIC LETTER ORKHON AL;Lo;0;R;;;;;N;;;;;
+10C1F;OLD TURKIC LETTER YENISEI AL;Lo;0;R;;;;;N;;;;;
+10C20;OLD TURKIC LETTER ORKHON AEL;Lo;0;R;;;;;N;;;;;
+10C21;OLD TURKIC LETTER ORKHON ELT;Lo;0;R;;;;;N;;;;;
+10C22;OLD TURKIC LETTER ORKHON EM;Lo;0;R;;;;;N;;;;;
+10C23;OLD TURKIC LETTER ORKHON AN;Lo;0;R;;;;;N;;;;;
+10C24;OLD TURKIC LETTER ORKHON AEN;Lo;0;R;;;;;N;;;;;
+10C25;OLD TURKIC LETTER YENISEI AEN;Lo;0;R;;;;;N;;;;;
+10C26;OLD TURKIC LETTER ORKHON ENT;Lo;0;R;;;;;N;;;;;
+10C27;OLD TURKIC LETTER YENISEI ENT;Lo;0;R;;;;;N;;;;;
+10C28;OLD TURKIC LETTER ORKHON ENC;Lo;0;R;;;;;N;;;;;
+10C29;OLD TURKIC LETTER YENISEI ENC;Lo;0;R;;;;;N;;;;;
+10C2A;OLD TURKIC LETTER ORKHON ENY;Lo;0;R;;;;;N;;;;;
+10C2B;OLD TURKIC LETTER YENISEI ENY;Lo;0;R;;;;;N;;;;;
+10C2C;OLD TURKIC LETTER YENISEI ANG;Lo;0;R;;;;;N;;;;;
+10C2D;OLD TURKIC LETTER ORKHON ENG;Lo;0;R;;;;;N;;;;;
+10C2E;OLD TURKIC LETTER YENISEI AENG;Lo;0;R;;;;;N;;;;;
+10C2F;OLD TURKIC LETTER ORKHON EP;Lo;0;R;;;;;N;;;;;
+10C30;OLD TURKIC LETTER ORKHON OP;Lo;0;R;;;;;N;;;;;
+10C31;OLD TURKIC LETTER ORKHON IC;Lo;0;R;;;;;N;;;;;
+10C32;OLD TURKIC LETTER ORKHON EC;Lo;0;R;;;;;N;;;;;
+10C33;OLD TURKIC LETTER YENISEI EC;Lo;0;R;;;;;N;;;;;
+10C34;OLD TURKIC LETTER ORKHON AQ;Lo;0;R;;;;;N;;;;;
+10C35;OLD TURKIC LETTER YENISEI AQ;Lo;0;R;;;;;N;;;;;
+10C36;OLD TURKIC LETTER ORKHON IQ;Lo;0;R;;;;;N;;;;;
+10C37;OLD TURKIC LETTER YENISEI IQ;Lo;0;R;;;;;N;;;;;
+10C38;OLD TURKIC LETTER ORKHON OQ;Lo;0;R;;;;;N;;;;;
+10C39;OLD TURKIC LETTER YENISEI OQ;Lo;0;R;;;;;N;;;;;
+10C3A;OLD TURKIC LETTER ORKHON AR;Lo;0;R;;;;;N;;;;;
+10C3B;OLD TURKIC LETTER YENISEI AR;Lo;0;R;;;;;N;;;;;
+10C3C;OLD TURKIC LETTER ORKHON AER;Lo;0;R;;;;;N;;;;;
+10C3D;OLD TURKIC LETTER ORKHON AS;Lo;0;R;;;;;N;;;;;
+10C3E;OLD TURKIC LETTER ORKHON AES;Lo;0;R;;;;;N;;;;;
+10C3F;OLD TURKIC LETTER ORKHON ASH;Lo;0;R;;;;;N;;;;;
+10C40;OLD TURKIC LETTER YENISEI ASH;Lo;0;R;;;;;N;;;;;
+10C41;OLD TURKIC LETTER ORKHON ESH;Lo;0;R;;;;;N;;;;;
+10C42;OLD TURKIC LETTER YENISEI ESH;Lo;0;R;;;;;N;;;;;
+10C43;OLD TURKIC LETTER ORKHON AT;Lo;0;R;;;;;N;;;;;
+10C44;OLD TURKIC LETTER YENISEI AT;Lo;0;R;;;;;N;;;;;
+10C45;OLD TURKIC LETTER ORKHON AET;Lo;0;R;;;;;N;;;;;
+10C46;OLD TURKIC LETTER YENISEI AET;Lo;0;R;;;;;N;;;;;
+10C47;OLD TURKIC LETTER ORKHON OT;Lo;0;R;;;;;N;;;;;
+10C48;OLD TURKIC LETTER ORKHON BASH;Lo;0;R;;;;;N;;;;;
+10E60;RUMI DIGIT ONE;No;0;AN;;;1;1;N;;;;;
+10E61;RUMI DIGIT TWO;No;0;AN;;;2;2;N;;;;;
+10E62;RUMI DIGIT THREE;No;0;AN;;;3;3;N;;;;;
+10E63;RUMI DIGIT FOUR;No;0;AN;;;4;4;N;;;;;
+10E64;RUMI DIGIT FIVE;No;0;AN;;;5;5;N;;;;;
+10E65;RUMI DIGIT SIX;No;0;AN;;;6;6;N;;;;;
+10E66;RUMI DIGIT SEVEN;No;0;AN;;;7;7;N;;;;;
+10E67;RUMI DIGIT EIGHT;No;0;AN;;;8;8;N;;;;;
+10E68;RUMI DIGIT NINE;No;0;AN;;;9;9;N;;;;;
+10E69;RUMI NUMBER TEN;No;0;AN;;;;10;N;;;;;
+10E6A;RUMI NUMBER TWENTY;No;0;AN;;;;20;N;;;;;
+10E6B;RUMI NUMBER THIRTY;No;0;AN;;;;30;N;;;;;
+10E6C;RUMI NUMBER FORTY;No;0;AN;;;;40;N;;;;;
+10E6D;RUMI NUMBER FIFTY;No;0;AN;;;;50;N;;;;;
+10E6E;RUMI NUMBER SIXTY;No;0;AN;;;;60;N;;;;;
+10E6F;RUMI NUMBER SEVENTY;No;0;AN;;;;70;N;;;;;
+10E70;RUMI NUMBER EIGHTY;No;0;AN;;;;80;N;;;;;
+10E71;RUMI NUMBER NINETY;No;0;AN;;;;90;N;;;;;
+10E72;RUMI NUMBER ONE HUNDRED;No;0;AN;;;;100;N;;;;;
+10E73;RUMI NUMBER TWO HUNDRED;No;0;AN;;;;200;N;;;;;
+10E74;RUMI NUMBER THREE HUNDRED;No;0;AN;;;;300;N;;;;;
+10E75;RUMI NUMBER FOUR HUNDRED;No;0;AN;;;;400;N;;;;;
+10E76;RUMI NUMBER FIVE HUNDRED;No;0;AN;;;;500;N;;;;;
+10E77;RUMI NUMBER SIX HUNDRED;No;0;AN;;;;600;N;;;;;
+10E78;RUMI NUMBER SEVEN HUNDRED;No;0;AN;;;;700;N;;;;;
+10E79;RUMI NUMBER EIGHT HUNDRED;No;0;AN;;;;800;N;;;;;
+10E7A;RUMI NUMBER NINE HUNDRED;No;0;AN;;;;900;N;;;;;
+10E7B;RUMI FRACTION ONE HALF;No;0;AN;;;;1/2;N;;;;;
+10E7C;RUMI FRACTION ONE QUARTER;No;0;AN;;;;1/4;N;;;;;
+10E7D;RUMI FRACTION ONE THIRD;No;0;AN;;;;1/3;N;;;;;
+10E7E;RUMI FRACTION TWO THIRDS;No;0;AN;;;;2/3;N;;;;;
+11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+11082;KAITHI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+11083;KAITHI LETTER A;Lo;0;L;;;;;N;;;;;
+11084;KAITHI LETTER AA;Lo;0;L;;;;;N;;;;;
+11085;KAITHI LETTER I;Lo;0;L;;;;;N;;;;;
+11086;KAITHI LETTER II;Lo;0;L;;;;;N;;;;;
+11087;KAITHI LETTER U;Lo;0;L;;;;;N;;;;;
+11088;KAITHI LETTER UU;Lo;0;L;;;;;N;;;;;
+11089;KAITHI LETTER E;Lo;0;L;;;;;N;;;;;
+1108A;KAITHI LETTER AI;Lo;0;L;;;;;N;;;;;
+1108B;KAITHI LETTER O;Lo;0;L;;;;;N;;;;;
+1108C;KAITHI LETTER AU;Lo;0;L;;;;;N;;;;;
+1108D;KAITHI LETTER KA;Lo;0;L;;;;;N;;;;;
+1108E;KAITHI LETTER KHA;Lo;0;L;;;;;N;;;;;
+1108F;KAITHI LETTER GA;Lo;0;L;;;;;N;;;;;
+11090;KAITHI LETTER GHA;Lo;0;L;;;;;N;;;;;
+11091;KAITHI LETTER NGA;Lo;0;L;;;;;N;;;;;
+11092;KAITHI LETTER CA;Lo;0;L;;;;;N;;;;;
+11093;KAITHI LETTER CHA;Lo;0;L;;;;;N;;;;;
+11094;KAITHI LETTER JA;Lo;0;L;;;;;N;;;;;
+11095;KAITHI LETTER JHA;Lo;0;L;;;;;N;;;;;
+11096;KAITHI LETTER NYA;Lo;0;L;;;;;N;;;;;
+11097;KAITHI LETTER TTA;Lo;0;L;;;;;N;;;;;
+11098;KAITHI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+11099;KAITHI LETTER DDA;Lo;0;L;;;;;N;;;;;
+1109A;KAITHI LETTER DDDHA;Lo;0;L;11099 110BA;;;;N;;;;;
+1109B;KAITHI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+1109C;KAITHI LETTER RHA;Lo;0;L;1109B 110BA;;;;N;;;;;
+1109D;KAITHI LETTER NNA;Lo;0;L;;;;;N;;;;;
+1109E;KAITHI LETTER TA;Lo;0;L;;;;;N;;;;;
+1109F;KAITHI LETTER THA;Lo;0;L;;;;;N;;;;;
+110A0;KAITHI LETTER DA;Lo;0;L;;;;;N;;;;;
+110A1;KAITHI LETTER DHA;Lo;0;L;;;;;N;;;;;
+110A2;KAITHI LETTER NA;Lo;0;L;;;;;N;;;;;
+110A3;KAITHI LETTER PA;Lo;0;L;;;;;N;;;;;
+110A4;KAITHI LETTER PHA;Lo;0;L;;;;;N;;;;;
+110A5;KAITHI LETTER BA;Lo;0;L;;;;;N;;;;;
+110A6;KAITHI LETTER BHA;Lo;0;L;;;;;N;;;;;
+110A7;KAITHI LETTER MA;Lo;0;L;;;;;N;;;;;
+110A8;KAITHI LETTER YA;Lo;0;L;;;;;N;;;;;
+110A9;KAITHI LETTER RA;Lo;0;L;;;;;N;;;;;
+110AA;KAITHI LETTER LA;Lo;0;L;;;;;N;;;;;
+110AB;KAITHI LETTER VA;Lo;0;L;110A5 110BA;;;;N;;;;;
+110AC;KAITHI LETTER SHA;Lo;0;L;;;;;N;;;;;
+110AD;KAITHI LETTER SSA;Lo;0;L;;;;;N;;;;;
+110AE;KAITHI LETTER SA;Lo;0;L;;;;;N;;;;;
+110AF;KAITHI LETTER HA;Lo;0;L;;;;;N;;;;;
+110B0;KAITHI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+110B1;KAITHI VOWEL SIGN I;Mc;0;L;;;;;N;;;;;
+110B2;KAITHI VOWEL SIGN II;Mc;0;L;;;;;N;;;;;
+110B3;KAITHI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+110B4;KAITHI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+110B5;KAITHI VOWEL SIGN E;Mn;0;NSM;;;;;N;;;;;
+110B6;KAITHI VOWEL SIGN AI;Mn;0;NSM;;;;;N;;;;;
+110B7;KAITHI VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
+110B8;KAITHI VOWEL SIGN AU;Mc;0;L;;;;;N;;;;;
+110B9;KAITHI SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+110BA;KAITHI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
+110BB;KAITHI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
+110BC;KAITHI ENUMERATION SIGN;Po;0;L;;;;;N;;;;;
+110BD;KAITHI NUMBER SIGN;Cf;0;L;;;;;N;;;;;
+110BE;KAITHI SECTION MARK;Po;0;L;;;;;N;;;;;
+110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
+110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;
+110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;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;;;;;
+13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
+13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
+13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
+13003;EGYPTIAN HIEROGLYPH A004;Lo;0;L;;;;;N;;;;;
+13004;EGYPTIAN HIEROGLYPH A005;Lo;0;L;;;;;N;;;;;
+13005;EGYPTIAN HIEROGLYPH A005A;Lo;0;L;;;;;N;;;;;
+13006;EGYPTIAN HIEROGLYPH A006;Lo;0;L;;;;;N;;;;;
+13007;EGYPTIAN HIEROGLYPH A006A;Lo;0;L;;;;;N;;;;;
+13008;EGYPTIAN HIEROGLYPH A006B;Lo;0;L;;;;;N;;;;;
+13009;EGYPTIAN HIEROGLYPH A007;Lo;0;L;;;;;N;;;;;
+1300A;EGYPTIAN HIEROGLYPH A008;Lo;0;L;;;;;N;;;;;
+1300B;EGYPTIAN HIEROGLYPH A009;Lo;0;L;;;;;N;;;;;
+1300C;EGYPTIAN HIEROGLYPH A010;Lo;0;L;;;;;N;;;;;
+1300D;EGYPTIAN HIEROGLYPH A011;Lo;0;L;;;;;N;;;;;
+1300E;EGYPTIAN HIEROGLYPH A012;Lo;0;L;;;;;N;;;;;
+1300F;EGYPTIAN HIEROGLYPH A013;Lo;0;L;;;;;N;;;;;
+13010;EGYPTIAN HIEROGLYPH A014;Lo;0;L;;;;;N;;;;;
+13011;EGYPTIAN HIEROGLYPH A014A;Lo;0;L;;;;;N;;;;;
+13012;EGYPTIAN HIEROGLYPH A015;Lo;0;L;;;;;N;;;;;
+13013;EGYPTIAN HIEROGLYPH A016;Lo;0;L;;;;;N;;;;;
+13014;EGYPTIAN HIEROGLYPH A017;Lo;0;L;;;;;N;;;;;
+13015;EGYPTIAN HIEROGLYPH A017A;Lo;0;L;;;;;N;;;;;
+13016;EGYPTIAN HIEROGLYPH A018;Lo;0;L;;;;;N;;;;;
+13017;EGYPTIAN HIEROGLYPH A019;Lo;0;L;;;;;N;;;;;
+13018;EGYPTIAN HIEROGLYPH A020;Lo;0;L;;;;;N;;;;;
+13019;EGYPTIAN HIEROGLYPH A021;Lo;0;L;;;;;N;;;;;
+1301A;EGYPTIAN HIEROGLYPH A022;Lo;0;L;;;;;N;;;;;
+1301B;EGYPTIAN HIEROGLYPH A023;Lo;0;L;;;;;N;;;;;
+1301C;EGYPTIAN HIEROGLYPH A024;Lo;0;L;;;;;N;;;;;
+1301D;EGYPTIAN HIEROGLYPH A025;Lo;0;L;;;;;N;;;;;
+1301E;EGYPTIAN HIEROGLYPH A026;Lo;0;L;;;;;N;;;;;
+1301F;EGYPTIAN HIEROGLYPH A027;Lo;0;L;;;;;N;;;;;
+13020;EGYPTIAN HIEROGLYPH A028;Lo;0;L;;;;;N;;;;;
+13021;EGYPTIAN HIEROGLYPH A029;Lo;0;L;;;;;N;;;;;
+13022;EGYPTIAN HIEROGLYPH A030;Lo;0;L;;;;;N;;;;;
+13023;EGYPTIAN HIEROGLYPH A031;Lo;0;L;;;;;N;;;;;
+13024;EGYPTIAN HIEROGLYPH A032;Lo;0;L;;;;;N;;;;;
+13025;EGYPTIAN HIEROGLYPH A032A;Lo;0;L;;;;;N;;;;;
+13026;EGYPTIAN HIEROGLYPH A033;Lo;0;L;;;;;N;;;;;
+13027;EGYPTIAN HIEROGLYPH A034;Lo;0;L;;;;;N;;;;;
+13028;EGYPTIAN HIEROGLYPH A035;Lo;0;L;;;;;N;;;;;
+13029;EGYPTIAN HIEROGLYPH A036;Lo;0;L;;;;;N;;;;;
+1302A;EGYPTIAN HIEROGLYPH A037;Lo;0;L;;;;;N;;;;;
+1302B;EGYPTIAN HIEROGLYPH A038;Lo;0;L;;;;;N;;;;;
+1302C;EGYPTIAN HIEROGLYPH A039;Lo;0;L;;;;;N;;;;;
+1302D;EGYPTIAN HIEROGLYPH A040;Lo;0;L;;;;;N;;;;;
+1302E;EGYPTIAN HIEROGLYPH A040A;Lo;0;L;;;;;N;;;;;
+1302F;EGYPTIAN HIEROGLYPH A041;Lo;0;L;;;;;N;;;;;
+13030;EGYPTIAN HIEROGLYPH A042;Lo;0;L;;;;;N;;;;;
+13031;EGYPTIAN HIEROGLYPH A042A;Lo;0;L;;;;;N;;;;;
+13032;EGYPTIAN HIEROGLYPH A043;Lo;0;L;;;;;N;;;;;
+13033;EGYPTIAN HIEROGLYPH A043A;Lo;0;L;;;;;N;;;;;
+13034;EGYPTIAN HIEROGLYPH A044;Lo;0;L;;;;;N;;;;;
+13035;EGYPTIAN HIEROGLYPH A045;Lo;0;L;;;;;N;;;;;
+13036;EGYPTIAN HIEROGLYPH A045A;Lo;0;L;;;;;N;;;;;
+13037;EGYPTIAN HIEROGLYPH A046;Lo;0;L;;;;;N;;;;;
+13038;EGYPTIAN HIEROGLYPH A047;Lo;0;L;;;;;N;;;;;
+13039;EGYPTIAN HIEROGLYPH A048;Lo;0;L;;;;;N;;;;;
+1303A;EGYPTIAN HIEROGLYPH A049;Lo;0;L;;;;;N;;;;;
+1303B;EGYPTIAN HIEROGLYPH A050;Lo;0;L;;;;;N;;;;;
+1303C;EGYPTIAN HIEROGLYPH A051;Lo;0;L;;;;;N;;;;;
+1303D;EGYPTIAN HIEROGLYPH A052;Lo;0;L;;;;;N;;;;;
+1303E;EGYPTIAN HIEROGLYPH A053;Lo;0;L;;;;;N;;;;;
+1303F;EGYPTIAN HIEROGLYPH A054;Lo;0;L;;;;;N;;;;;
+13040;EGYPTIAN HIEROGLYPH A055;Lo;0;L;;;;;N;;;;;
+13041;EGYPTIAN HIEROGLYPH A056;Lo;0;L;;;;;N;;;;;
+13042;EGYPTIAN HIEROGLYPH A057;Lo;0;L;;;;;N;;;;;
+13043;EGYPTIAN HIEROGLYPH A058;Lo;0;L;;;;;N;;;;;
+13044;EGYPTIAN HIEROGLYPH A059;Lo;0;L;;;;;N;;;;;
+13045;EGYPTIAN HIEROGLYPH A060;Lo;0;L;;;;;N;;;;;
+13046;EGYPTIAN HIEROGLYPH A061;Lo;0;L;;;;;N;;;;;
+13047;EGYPTIAN HIEROGLYPH A062;Lo;0;L;;;;;N;;;;;
+13048;EGYPTIAN HIEROGLYPH A063;Lo;0;L;;;;;N;;;;;
+13049;EGYPTIAN HIEROGLYPH A064;Lo;0;L;;;;;N;;;;;
+1304A;EGYPTIAN HIEROGLYPH A065;Lo;0;L;;;;;N;;;;;
+1304B;EGYPTIAN HIEROGLYPH A066;Lo;0;L;;;;;N;;;;;
+1304C;EGYPTIAN HIEROGLYPH A067;Lo;0;L;;;;;N;;;;;
+1304D;EGYPTIAN HIEROGLYPH A068;Lo;0;L;;;;;N;;;;;
+1304E;EGYPTIAN HIEROGLYPH A069;Lo;0;L;;;;;N;;;;;
+1304F;EGYPTIAN HIEROGLYPH A070;Lo;0;L;;;;;N;;;;;
+13050;EGYPTIAN HIEROGLYPH B001;Lo;0;L;;;;;N;;;;;
+13051;EGYPTIAN HIEROGLYPH B002;Lo;0;L;;;;;N;;;;;
+13052;EGYPTIAN HIEROGLYPH B003;Lo;0;L;;;;;N;;;;;
+13053;EGYPTIAN HIEROGLYPH B004;Lo;0;L;;;;;N;;;;;
+13054;EGYPTIAN HIEROGLYPH B005;Lo;0;L;;;;;N;;;;;
+13055;EGYPTIAN HIEROGLYPH B005A;Lo;0;L;;;;;N;;;;;
+13056;EGYPTIAN HIEROGLYPH B006;Lo;0;L;;;;;N;;;;;
+13057;EGYPTIAN HIEROGLYPH B007;Lo;0;L;;;;;N;;;;;
+13058;EGYPTIAN HIEROGLYPH B008;Lo;0;L;;;;;N;;;;;
+13059;EGYPTIAN HIEROGLYPH B009;Lo;0;L;;;;;N;;;;;
+1305A;EGYPTIAN HIEROGLYPH C001;Lo;0;L;;;;;N;;;;;
+1305B;EGYPTIAN HIEROGLYPH C002;Lo;0;L;;;;;N;;;;;
+1305C;EGYPTIAN HIEROGLYPH C002A;Lo;0;L;;;;;N;;;;;
+1305D;EGYPTIAN HIEROGLYPH C002B;Lo;0;L;;;;;N;;;;;
+1305E;EGYPTIAN HIEROGLYPH C002C;Lo;0;L;;;;;N;;;;;
+1305F;EGYPTIAN HIEROGLYPH C003;Lo;0;L;;;;;N;;;;;
+13060;EGYPTIAN HIEROGLYPH C004;Lo;0;L;;;;;N;;;;;
+13061;EGYPTIAN HIEROGLYPH C005;Lo;0;L;;;;;N;;;;;
+13062;EGYPTIAN HIEROGLYPH C006;Lo;0;L;;;;;N;;;;;
+13063;EGYPTIAN HIEROGLYPH C007;Lo;0;L;;;;;N;;;;;
+13064;EGYPTIAN HIEROGLYPH C008;Lo;0;L;;;;;N;;;;;
+13065;EGYPTIAN HIEROGLYPH C009;Lo;0;L;;;;;N;;;;;
+13066;EGYPTIAN HIEROGLYPH C010;Lo;0;L;;;;;N;;;;;
+13067;EGYPTIAN HIEROGLYPH C010A;Lo;0;L;;;;;N;;;;;
+13068;EGYPTIAN HIEROGLYPH C011;Lo;0;L;;;;;N;;;;;
+13069;EGYPTIAN HIEROGLYPH C012;Lo;0;L;;;;;N;;;;;
+1306A;EGYPTIAN HIEROGLYPH C013;Lo;0;L;;;;;N;;;;;
+1306B;EGYPTIAN HIEROGLYPH C014;Lo;0;L;;;;;N;;;;;
+1306C;EGYPTIAN HIEROGLYPH C015;Lo;0;L;;;;;N;;;;;
+1306D;EGYPTIAN HIEROGLYPH C016;Lo;0;L;;;;;N;;;;;
+1306E;EGYPTIAN HIEROGLYPH C017;Lo;0;L;;;;;N;;;;;
+1306F;EGYPTIAN HIEROGLYPH C018;Lo;0;L;;;;;N;;;;;
+13070;EGYPTIAN HIEROGLYPH C019;Lo;0;L;;;;;N;;;;;
+13071;EGYPTIAN HIEROGLYPH C020;Lo;0;L;;;;;N;;;;;
+13072;EGYPTIAN HIEROGLYPH C021;Lo;0;L;;;;;N;;;;;
+13073;EGYPTIAN HIEROGLYPH C022;Lo;0;L;;;;;N;;;;;
+13074;EGYPTIAN HIEROGLYPH C023;Lo;0;L;;;;;N;;;;;
+13075;EGYPTIAN HIEROGLYPH C024;Lo;0;L;;;;;N;;;;;
+13076;EGYPTIAN HIEROGLYPH D001;Lo;0;L;;;;;N;;;;;
+13077;EGYPTIAN HIEROGLYPH D002;Lo;0;L;;;;;N;;;;;
+13078;EGYPTIAN HIEROGLYPH D003;Lo;0;L;;;;;N;;;;;
+13079;EGYPTIAN HIEROGLYPH D004;Lo;0;L;;;;;N;;;;;
+1307A;EGYPTIAN HIEROGLYPH D005;Lo;0;L;;;;;N;;;;;
+1307B;EGYPTIAN HIEROGLYPH D006;Lo;0;L;;;;;N;;;;;
+1307C;EGYPTIAN HIEROGLYPH D007;Lo;0;L;;;;;N;;;;;
+1307D;EGYPTIAN HIEROGLYPH D008;Lo;0;L;;;;;N;;;;;
+1307E;EGYPTIAN HIEROGLYPH D008A;Lo;0;L;;;;;N;;;;;
+1307F;EGYPTIAN HIEROGLYPH D009;Lo;0;L;;;;;N;;;;;
+13080;EGYPTIAN HIEROGLYPH D010;Lo;0;L;;;;;N;;;;;
+13081;EGYPTIAN HIEROGLYPH D011;Lo;0;L;;;;;N;;;;;
+13082;EGYPTIAN HIEROGLYPH D012;Lo;0;L;;;;;N;;;;;
+13083;EGYPTIAN HIEROGLYPH D013;Lo;0;L;;;;;N;;;;;
+13084;EGYPTIAN HIEROGLYPH D014;Lo;0;L;;;;;N;;;;;
+13085;EGYPTIAN HIEROGLYPH D015;Lo;0;L;;;;;N;;;;;
+13086;EGYPTIAN HIEROGLYPH D016;Lo;0;L;;;;;N;;;;;
+13087;EGYPTIAN HIEROGLYPH D017;Lo;0;L;;;;;N;;;;;
+13088;EGYPTIAN HIEROGLYPH D018;Lo;0;L;;;;;N;;;;;
+13089;EGYPTIAN HIEROGLYPH D019;Lo;0;L;;;;;N;;;;;
+1308A;EGYPTIAN HIEROGLYPH D020;Lo;0;L;;;;;N;;;;;
+1308B;EGYPTIAN HIEROGLYPH D021;Lo;0;L;;;;;N;;;;;
+1308C;EGYPTIAN HIEROGLYPH D022;Lo;0;L;;;;;N;;;;;
+1308D;EGYPTIAN HIEROGLYPH D023;Lo;0;L;;;;;N;;;;;
+1308E;EGYPTIAN HIEROGLYPH D024;Lo;0;L;;;;;N;;;;;
+1308F;EGYPTIAN HIEROGLYPH D025;Lo;0;L;;;;;N;;;;;
+13090;EGYPTIAN HIEROGLYPH D026;Lo;0;L;;;;;N;;;;;
+13091;EGYPTIAN HIEROGLYPH D027;Lo;0;L;;;;;N;;;;;
+13092;EGYPTIAN HIEROGLYPH D027A;Lo;0;L;;;;;N;;;;;
+13093;EGYPTIAN HIEROGLYPH D028;Lo;0;L;;;;;N;;;;;
+13094;EGYPTIAN HIEROGLYPH D029;Lo;0;L;;;;;N;;;;;
+13095;EGYPTIAN HIEROGLYPH D030;Lo;0;L;;;;;N;;;;;
+13096;EGYPTIAN HIEROGLYPH D031;Lo;0;L;;;;;N;;;;;
+13097;EGYPTIAN HIEROGLYPH D031A;Lo;0;L;;;;;N;;;;;
+13098;EGYPTIAN HIEROGLYPH D032;Lo;0;L;;;;;N;;;;;
+13099;EGYPTIAN HIEROGLYPH D033;Lo;0;L;;;;;N;;;;;
+1309A;EGYPTIAN HIEROGLYPH D034;Lo;0;L;;;;;N;;;;;
+1309B;EGYPTIAN HIEROGLYPH D034A;Lo;0;L;;;;;N;;;;;
+1309C;EGYPTIAN HIEROGLYPH D035;Lo;0;L;;;;;N;;;;;
+1309D;EGYPTIAN HIEROGLYPH D036;Lo;0;L;;;;;N;;;;;
+1309E;EGYPTIAN HIEROGLYPH D037;Lo;0;L;;;;;N;;;;;
+1309F;EGYPTIAN HIEROGLYPH D038;Lo;0;L;;;;;N;;;;;
+130A0;EGYPTIAN HIEROGLYPH D039;Lo;0;L;;;;;N;;;;;
+130A1;EGYPTIAN HIEROGLYPH D040;Lo;0;L;;;;;N;;;;;
+130A2;EGYPTIAN HIEROGLYPH D041;Lo;0;L;;;;;N;;;;;
+130A3;EGYPTIAN HIEROGLYPH D042;Lo;0;L;;;;;N;;;;;
+130A4;EGYPTIAN HIEROGLYPH D043;Lo;0;L;;;;;N;;;;;
+130A5;EGYPTIAN HIEROGLYPH D044;Lo;0;L;;;;;N;;;;;
+130A6;EGYPTIAN HIEROGLYPH D045;Lo;0;L;;;;;N;;;;;
+130A7;EGYPTIAN HIEROGLYPH D046;Lo;0;L;;;;;N;;;;;
+130A8;EGYPTIAN HIEROGLYPH D046A;Lo;0;L;;;;;N;;;;;
+130A9;EGYPTIAN HIEROGLYPH D047;Lo;0;L;;;;;N;;;;;
+130AA;EGYPTIAN HIEROGLYPH D048;Lo;0;L;;;;;N;;;;;
+130AB;EGYPTIAN HIEROGLYPH D048A;Lo;0;L;;;;;N;;;;;
+130AC;EGYPTIAN HIEROGLYPH D049;Lo;0;L;;;;;N;;;;;
+130AD;EGYPTIAN HIEROGLYPH D050;Lo;0;L;;;;;N;;;;;
+130AE;EGYPTIAN HIEROGLYPH D050A;Lo;0;L;;;;;N;;;;;
+130AF;EGYPTIAN HIEROGLYPH D050B;Lo;0;L;;;;;N;;;;;
+130B0;EGYPTIAN HIEROGLYPH D050C;Lo;0;L;;;;;N;;;;;
+130B1;EGYPTIAN HIEROGLYPH D050D;Lo;0;L;;;;;N;;;;;
+130B2;EGYPTIAN HIEROGLYPH D050E;Lo;0;L;;;;;N;;;;;
+130B3;EGYPTIAN HIEROGLYPH D050F;Lo;0;L;;;;;N;;;;;
+130B4;EGYPTIAN HIEROGLYPH D050G;Lo;0;L;;;;;N;;;;;
+130B5;EGYPTIAN HIEROGLYPH D050H;Lo;0;L;;;;;N;;;;;
+130B6;EGYPTIAN HIEROGLYPH D050I;Lo;0;L;;;;;N;;;;;
+130B7;EGYPTIAN HIEROGLYPH D051;Lo;0;L;;;;;N;;;;;
+130B8;EGYPTIAN HIEROGLYPH D052;Lo;0;L;;;;;N;;;;;
+130B9;EGYPTIAN HIEROGLYPH D052A;Lo;0;L;;;;;N;;;;;
+130BA;EGYPTIAN HIEROGLYPH D053;Lo;0;L;;;;;N;;;;;
+130BB;EGYPTIAN HIEROGLYPH D054;Lo;0;L;;;;;N;;;;;
+130BC;EGYPTIAN HIEROGLYPH D054A;Lo;0;L;;;;;N;;;;;
+130BD;EGYPTIAN HIEROGLYPH D055;Lo;0;L;;;;;N;;;;;
+130BE;EGYPTIAN HIEROGLYPH D056;Lo;0;L;;;;;N;;;;;
+130BF;EGYPTIAN HIEROGLYPH D057;Lo;0;L;;;;;N;;;;;
+130C0;EGYPTIAN HIEROGLYPH D058;Lo;0;L;;;;;N;;;;;
+130C1;EGYPTIAN HIEROGLYPH D059;Lo;0;L;;;;;N;;;;;
+130C2;EGYPTIAN HIEROGLYPH D060;Lo;0;L;;;;;N;;;;;
+130C3;EGYPTIAN HIEROGLYPH D061;Lo;0;L;;;;;N;;;;;
+130C4;EGYPTIAN HIEROGLYPH D062;Lo;0;L;;;;;N;;;;;
+130C5;EGYPTIAN HIEROGLYPH D063;Lo;0;L;;;;;N;;;;;
+130C6;EGYPTIAN HIEROGLYPH D064;Lo;0;L;;;;;N;;;;;
+130C7;EGYPTIAN HIEROGLYPH D065;Lo;0;L;;;;;N;;;;;
+130C8;EGYPTIAN HIEROGLYPH D066;Lo;0;L;;;;;N;;;;;
+130C9;EGYPTIAN HIEROGLYPH D067;Lo;0;L;;;;;N;;;;;
+130CA;EGYPTIAN HIEROGLYPH D067A;Lo;0;L;;;;;N;;;;;
+130CB;EGYPTIAN HIEROGLYPH D067B;Lo;0;L;;;;;N;;;;;
+130CC;EGYPTIAN HIEROGLYPH D067C;Lo;0;L;;;;;N;;;;;
+130CD;EGYPTIAN HIEROGLYPH D067D;Lo;0;L;;;;;N;;;;;
+130CE;EGYPTIAN HIEROGLYPH D067E;Lo;0;L;;;;;N;;;;;
+130CF;EGYPTIAN HIEROGLYPH D067F;Lo;0;L;;;;;N;;;;;
+130D0;EGYPTIAN HIEROGLYPH D067G;Lo;0;L;;;;;N;;;;;
+130D1;EGYPTIAN HIEROGLYPH D067H;Lo;0;L;;;;;N;;;;;
+130D2;EGYPTIAN HIEROGLYPH E001;Lo;0;L;;;;;N;;;;;
+130D3;EGYPTIAN HIEROGLYPH E002;Lo;0;L;;;;;N;;;;;
+130D4;EGYPTIAN HIEROGLYPH E003;Lo;0;L;;;;;N;;;;;
+130D5;EGYPTIAN HIEROGLYPH E004;Lo;0;L;;;;;N;;;;;
+130D6;EGYPTIAN HIEROGLYPH E005;Lo;0;L;;;;;N;;;;;
+130D7;EGYPTIAN HIEROGLYPH E006;Lo;0;L;;;;;N;;;;;
+130D8;EGYPTIAN HIEROGLYPH E007;Lo;0;L;;;;;N;;;;;
+130D9;EGYPTIAN HIEROGLYPH E008;Lo;0;L;;;;;N;;;;;
+130DA;EGYPTIAN HIEROGLYPH E008A;Lo;0;L;;;;;N;;;;;
+130DB;EGYPTIAN HIEROGLYPH E009;Lo;0;L;;;;;N;;;;;
+130DC;EGYPTIAN HIEROGLYPH E009A;Lo;0;L;;;;;N;;;;;
+130DD;EGYPTIAN HIEROGLYPH E010;Lo;0;L;;;;;N;;;;;
+130DE;EGYPTIAN HIEROGLYPH E011;Lo;0;L;;;;;N;;;;;
+130DF;EGYPTIAN HIEROGLYPH E012;Lo;0;L;;;;;N;;;;;
+130E0;EGYPTIAN HIEROGLYPH E013;Lo;0;L;;;;;N;;;;;
+130E1;EGYPTIAN HIEROGLYPH E014;Lo;0;L;;;;;N;;;;;
+130E2;EGYPTIAN HIEROGLYPH E015;Lo;0;L;;;;;N;;;;;
+130E3;EGYPTIAN HIEROGLYPH E016;Lo;0;L;;;;;N;;;;;
+130E4;EGYPTIAN HIEROGLYPH E016A;Lo;0;L;;;;;N;;;;;
+130E5;EGYPTIAN HIEROGLYPH E017;Lo;0;L;;;;;N;;;;;
+130E6;EGYPTIAN HIEROGLYPH E017A;Lo;0;L;;;;;N;;;;;
+130E7;EGYPTIAN HIEROGLYPH E018;Lo;0;L;;;;;N;;;;;
+130E8;EGYPTIAN HIEROGLYPH E019;Lo;0;L;;;;;N;;;;;
+130E9;EGYPTIAN HIEROGLYPH E020;Lo;0;L;;;;;N;;;;;
+130EA;EGYPTIAN HIEROGLYPH E020A;Lo;0;L;;;;;N;;;;;
+130EB;EGYPTIAN HIEROGLYPH E021;Lo;0;L;;;;;N;;;;;
+130EC;EGYPTIAN HIEROGLYPH E022;Lo;0;L;;;;;N;;;;;
+130ED;EGYPTIAN HIEROGLYPH E023;Lo;0;L;;;;;N;;;;;
+130EE;EGYPTIAN HIEROGLYPH E024;Lo;0;L;;;;;N;;;;;
+130EF;EGYPTIAN HIEROGLYPH E025;Lo;0;L;;;;;N;;;;;
+130F0;EGYPTIAN HIEROGLYPH E026;Lo;0;L;;;;;N;;;;;
+130F1;EGYPTIAN HIEROGLYPH E027;Lo;0;L;;;;;N;;;;;
+130F2;EGYPTIAN HIEROGLYPH E028;Lo;0;L;;;;;N;;;;;
+130F3;EGYPTIAN HIEROGLYPH E028A;Lo;0;L;;;;;N;;;;;
+130F4;EGYPTIAN HIEROGLYPH E029;Lo;0;L;;;;;N;;;;;
+130F5;EGYPTIAN HIEROGLYPH E030;Lo;0;L;;;;;N;;;;;
+130F6;EGYPTIAN HIEROGLYPH E031;Lo;0;L;;;;;N;;;;;
+130F7;EGYPTIAN HIEROGLYPH E032;Lo;0;L;;;;;N;;;;;
+130F8;EGYPTIAN HIEROGLYPH E033;Lo;0;L;;;;;N;;;;;
+130F9;EGYPTIAN HIEROGLYPH E034;Lo;0;L;;;;;N;;;;;
+130FA;EGYPTIAN HIEROGLYPH E034A;Lo;0;L;;;;;N;;;;;
+130FB;EGYPTIAN HIEROGLYPH E036;Lo;0;L;;;;;N;;;;;
+130FC;EGYPTIAN HIEROGLYPH E037;Lo;0;L;;;;;N;;;;;
+130FD;EGYPTIAN HIEROGLYPH E038;Lo;0;L;;;;;N;;;;;
+130FE;EGYPTIAN HIEROGLYPH F001;Lo;0;L;;;;;N;;;;;
+130FF;EGYPTIAN HIEROGLYPH F001A;Lo;0;L;;;;;N;;;;;
+13100;EGYPTIAN HIEROGLYPH F002;Lo;0;L;;;;;N;;;;;
+13101;EGYPTIAN HIEROGLYPH F003;Lo;0;L;;;;;N;;;;;
+13102;EGYPTIAN HIEROGLYPH F004;Lo;0;L;;;;;N;;;;;
+13103;EGYPTIAN HIEROGLYPH F005;Lo;0;L;;;;;N;;;;;
+13104;EGYPTIAN HIEROGLYPH F006;Lo;0;L;;;;;N;;;;;
+13105;EGYPTIAN HIEROGLYPH F007;Lo;0;L;;;;;N;;;;;
+13106;EGYPTIAN HIEROGLYPH F008;Lo;0;L;;;;;N;;;;;
+13107;EGYPTIAN HIEROGLYPH F009;Lo;0;L;;;;;N;;;;;
+13108;EGYPTIAN HIEROGLYPH F010;Lo;0;L;;;;;N;;;;;
+13109;EGYPTIAN HIEROGLYPH F011;Lo;0;L;;;;;N;;;;;
+1310A;EGYPTIAN HIEROGLYPH F012;Lo;0;L;;;;;N;;;;;
+1310B;EGYPTIAN HIEROGLYPH F013;Lo;0;L;;;;;N;;;;;
+1310C;EGYPTIAN HIEROGLYPH F013A;Lo;0;L;;;;;N;;;;;
+1310D;EGYPTIAN HIEROGLYPH F014;Lo;0;L;;;;;N;;;;;
+1310E;EGYPTIAN HIEROGLYPH F015;Lo;0;L;;;;;N;;;;;
+1310F;EGYPTIAN HIEROGLYPH F016;Lo;0;L;;;;;N;;;;;
+13110;EGYPTIAN HIEROGLYPH F017;Lo;0;L;;;;;N;;;;;
+13111;EGYPTIAN HIEROGLYPH F018;Lo;0;L;;;;;N;;;;;
+13112;EGYPTIAN HIEROGLYPH F019;Lo;0;L;;;;;N;;;;;
+13113;EGYPTIAN HIEROGLYPH F020;Lo;0;L;;;;;N;;;;;
+13114;EGYPTIAN HIEROGLYPH F021;Lo;0;L;;;;;N;;;;;
+13115;EGYPTIAN HIEROGLYPH F021A;Lo;0;L;;;;;N;;;;;
+13116;EGYPTIAN HIEROGLYPH F022;Lo;0;L;;;;;N;;;;;
+13117;EGYPTIAN HIEROGLYPH F023;Lo;0;L;;;;;N;;;;;
+13118;EGYPTIAN HIEROGLYPH F024;Lo;0;L;;;;;N;;;;;
+13119;EGYPTIAN HIEROGLYPH F025;Lo;0;L;;;;;N;;;;;
+1311A;EGYPTIAN HIEROGLYPH F026;Lo;0;L;;;;;N;;;;;
+1311B;EGYPTIAN HIEROGLYPH F027;Lo;0;L;;;;;N;;;;;
+1311C;EGYPTIAN HIEROGLYPH F028;Lo;0;L;;;;;N;;;;;
+1311D;EGYPTIAN HIEROGLYPH F029;Lo;0;L;;;;;N;;;;;
+1311E;EGYPTIAN HIEROGLYPH F030;Lo;0;L;;;;;N;;;;;
+1311F;EGYPTIAN HIEROGLYPH F031;Lo;0;L;;;;;N;;;;;
+13120;EGYPTIAN HIEROGLYPH F031A;Lo;0;L;;;;;N;;;;;
+13121;EGYPTIAN HIEROGLYPH F032;Lo;0;L;;;;;N;;;;;
+13122;EGYPTIAN HIEROGLYPH F033;Lo;0;L;;;;;N;;;;;
+13123;EGYPTIAN HIEROGLYPH F034;Lo;0;L;;;;;N;;;;;
+13124;EGYPTIAN HIEROGLYPH F035;Lo;0;L;;;;;N;;;;;
+13125;EGYPTIAN HIEROGLYPH F036;Lo;0;L;;;;;N;;;;;
+13126;EGYPTIAN HIEROGLYPH F037;Lo;0;L;;;;;N;;;;;
+13127;EGYPTIAN HIEROGLYPH F037A;Lo;0;L;;;;;N;;;;;
+13128;EGYPTIAN HIEROGLYPH F038;Lo;0;L;;;;;N;;;;;
+13129;EGYPTIAN HIEROGLYPH F038A;Lo;0;L;;;;;N;;;;;
+1312A;EGYPTIAN HIEROGLYPH F039;Lo;0;L;;;;;N;;;;;
+1312B;EGYPTIAN HIEROGLYPH F040;Lo;0;L;;;;;N;;;;;
+1312C;EGYPTIAN HIEROGLYPH F041;Lo;0;L;;;;;N;;;;;
+1312D;EGYPTIAN HIEROGLYPH F042;Lo;0;L;;;;;N;;;;;
+1312E;EGYPTIAN HIEROGLYPH F043;Lo;0;L;;;;;N;;;;;
+1312F;EGYPTIAN HIEROGLYPH F044;Lo;0;L;;;;;N;;;;;
+13130;EGYPTIAN HIEROGLYPH F045;Lo;0;L;;;;;N;;;;;
+13131;EGYPTIAN HIEROGLYPH F045A;Lo;0;L;;;;;N;;;;;
+13132;EGYPTIAN HIEROGLYPH F046;Lo;0;L;;;;;N;;;;;
+13133;EGYPTIAN HIEROGLYPH F046A;Lo;0;L;;;;;N;;;;;
+13134;EGYPTIAN HIEROGLYPH F047;Lo;0;L;;;;;N;;;;;
+13135;EGYPTIAN HIEROGLYPH F047A;Lo;0;L;;;;;N;;;;;
+13136;EGYPTIAN HIEROGLYPH F048;Lo;0;L;;;;;N;;;;;
+13137;EGYPTIAN HIEROGLYPH F049;Lo;0;L;;;;;N;;;;;
+13138;EGYPTIAN HIEROGLYPH F050;Lo;0;L;;;;;N;;;;;
+13139;EGYPTIAN HIEROGLYPH F051;Lo;0;L;;;;;N;;;;;
+1313A;EGYPTIAN HIEROGLYPH F051A;Lo;0;L;;;;;N;;;;;
+1313B;EGYPTIAN HIEROGLYPH F051B;Lo;0;L;;;;;N;;;;;
+1313C;EGYPTIAN HIEROGLYPH F051C;Lo;0;L;;;;;N;;;;;
+1313D;EGYPTIAN HIEROGLYPH F052;Lo;0;L;;;;;N;;;;;
+1313E;EGYPTIAN HIEROGLYPH F053;Lo;0;L;;;;;N;;;;;
+1313F;EGYPTIAN HIEROGLYPH G001;Lo;0;L;;;;;N;;;;;
+13140;EGYPTIAN HIEROGLYPH G002;Lo;0;L;;;;;N;;;;;
+13141;EGYPTIAN HIEROGLYPH G003;Lo;0;L;;;;;N;;;;;
+13142;EGYPTIAN HIEROGLYPH G004;Lo;0;L;;;;;N;;;;;
+13143;EGYPTIAN HIEROGLYPH G005;Lo;0;L;;;;;N;;;;;
+13144;EGYPTIAN HIEROGLYPH G006;Lo;0;L;;;;;N;;;;;
+13145;EGYPTIAN HIEROGLYPH G006A;Lo;0;L;;;;;N;;;;;
+13146;EGYPTIAN HIEROGLYPH G007;Lo;0;L;;;;;N;;;;;
+13147;EGYPTIAN HIEROGLYPH G007A;Lo;0;L;;;;;N;;;;;
+13148;EGYPTIAN HIEROGLYPH G007B;Lo;0;L;;;;;N;;;;;
+13149;EGYPTIAN HIEROGLYPH G008;Lo;0;L;;;;;N;;;;;
+1314A;EGYPTIAN HIEROGLYPH G009;Lo;0;L;;;;;N;;;;;
+1314B;EGYPTIAN HIEROGLYPH G010;Lo;0;L;;;;;N;;;;;
+1314C;EGYPTIAN HIEROGLYPH G011;Lo;0;L;;;;;N;;;;;
+1314D;EGYPTIAN HIEROGLYPH G011A;Lo;0;L;;;;;N;;;;;
+1314E;EGYPTIAN HIEROGLYPH G012;Lo;0;L;;;;;N;;;;;
+1314F;EGYPTIAN HIEROGLYPH G013;Lo;0;L;;;;;N;;;;;
+13150;EGYPTIAN HIEROGLYPH G014;Lo;0;L;;;;;N;;;;;
+13151;EGYPTIAN HIEROGLYPH G015;Lo;0;L;;;;;N;;;;;
+13152;EGYPTIAN HIEROGLYPH G016;Lo;0;L;;;;;N;;;;;
+13153;EGYPTIAN HIEROGLYPH G017;Lo;0;L;;;;;N;;;;;
+13154;EGYPTIAN HIEROGLYPH G018;Lo;0;L;;;;;N;;;;;
+13155;EGYPTIAN HIEROGLYPH G019;Lo;0;L;;;;;N;;;;;
+13156;EGYPTIAN HIEROGLYPH G020;Lo;0;L;;;;;N;;;;;
+13157;EGYPTIAN HIEROGLYPH G020A;Lo;0;L;;;;;N;;;;;
+13158;EGYPTIAN HIEROGLYPH G021;Lo;0;L;;;;;N;;;;;
+13159;EGYPTIAN HIEROGLYPH G022;Lo;0;L;;;;;N;;;;;
+1315A;EGYPTIAN HIEROGLYPH G023;Lo;0;L;;;;;N;;;;;
+1315B;EGYPTIAN HIEROGLYPH G024;Lo;0;L;;;;;N;;;;;
+1315C;EGYPTIAN HIEROGLYPH G025;Lo;0;L;;;;;N;;;;;
+1315D;EGYPTIAN HIEROGLYPH G026;Lo;0;L;;;;;N;;;;;
+1315E;EGYPTIAN HIEROGLYPH G026A;Lo;0;L;;;;;N;;;;;
+1315F;EGYPTIAN HIEROGLYPH G027;Lo;0;L;;;;;N;;;;;
+13160;EGYPTIAN HIEROGLYPH G028;Lo;0;L;;;;;N;;;;;
+13161;EGYPTIAN HIEROGLYPH G029;Lo;0;L;;;;;N;;;;;
+13162;EGYPTIAN HIEROGLYPH G030;Lo;0;L;;;;;N;;;;;
+13163;EGYPTIAN HIEROGLYPH G031;Lo;0;L;;;;;N;;;;;
+13164;EGYPTIAN HIEROGLYPH G032;Lo;0;L;;;;;N;;;;;
+13165;EGYPTIAN HIEROGLYPH G033;Lo;0;L;;;;;N;;;;;
+13166;EGYPTIAN HIEROGLYPH G034;Lo;0;L;;;;;N;;;;;
+13167;EGYPTIAN HIEROGLYPH G035;Lo;0;L;;;;;N;;;;;
+13168;EGYPTIAN HIEROGLYPH G036;Lo;0;L;;;;;N;;;;;
+13169;EGYPTIAN HIEROGLYPH G036A;Lo;0;L;;;;;N;;;;;
+1316A;EGYPTIAN HIEROGLYPH G037;Lo;0;L;;;;;N;;;;;
+1316B;EGYPTIAN HIEROGLYPH G037A;Lo;0;L;;;;;N;;;;;
+1316C;EGYPTIAN HIEROGLYPH G038;Lo;0;L;;;;;N;;;;;
+1316D;EGYPTIAN HIEROGLYPH G039;Lo;0;L;;;;;N;;;;;
+1316E;EGYPTIAN HIEROGLYPH G040;Lo;0;L;;;;;N;;;;;
+1316F;EGYPTIAN HIEROGLYPH G041;Lo;0;L;;;;;N;;;;;
+13170;EGYPTIAN HIEROGLYPH G042;Lo;0;L;;;;;N;;;;;
+13171;EGYPTIAN HIEROGLYPH G043;Lo;0;L;;;;;N;;;;;
+13172;EGYPTIAN HIEROGLYPH G043A;Lo;0;L;;;;;N;;;;;
+13173;EGYPTIAN HIEROGLYPH G044;Lo;0;L;;;;;N;;;;;
+13174;EGYPTIAN HIEROGLYPH G045;Lo;0;L;;;;;N;;;;;
+13175;EGYPTIAN HIEROGLYPH G045A;Lo;0;L;;;;;N;;;;;
+13176;EGYPTIAN HIEROGLYPH G046;Lo;0;L;;;;;N;;;;;
+13177;EGYPTIAN HIEROGLYPH G047;Lo;0;L;;;;;N;;;;;
+13178;EGYPTIAN HIEROGLYPH G048;Lo;0;L;;;;;N;;;;;
+13179;EGYPTIAN HIEROGLYPH G049;Lo;0;L;;;;;N;;;;;
+1317A;EGYPTIAN HIEROGLYPH G050;Lo;0;L;;;;;N;;;;;
+1317B;EGYPTIAN HIEROGLYPH G051;Lo;0;L;;;;;N;;;;;
+1317C;EGYPTIAN HIEROGLYPH G052;Lo;0;L;;;;;N;;;;;
+1317D;EGYPTIAN HIEROGLYPH G053;Lo;0;L;;;;;N;;;;;
+1317E;EGYPTIAN HIEROGLYPH G054;Lo;0;L;;;;;N;;;;;
+1317F;EGYPTIAN HIEROGLYPH H001;Lo;0;L;;;;;N;;;;;
+13180;EGYPTIAN HIEROGLYPH H002;Lo;0;L;;;;;N;;;;;
+13181;EGYPTIAN HIEROGLYPH H003;Lo;0;L;;;;;N;;;;;
+13182;EGYPTIAN HIEROGLYPH H004;Lo;0;L;;;;;N;;;;;
+13183;EGYPTIAN HIEROGLYPH H005;Lo;0;L;;;;;N;;;;;
+13184;EGYPTIAN HIEROGLYPH H006;Lo;0;L;;;;;N;;;;;
+13185;EGYPTIAN HIEROGLYPH H006A;Lo;0;L;;;;;N;;;;;
+13186;EGYPTIAN HIEROGLYPH H007;Lo;0;L;;;;;N;;;;;
+13187;EGYPTIAN HIEROGLYPH H008;Lo;0;L;;;;;N;;;;;
+13188;EGYPTIAN HIEROGLYPH I001;Lo;0;L;;;;;N;;;;;
+13189;EGYPTIAN HIEROGLYPH I002;Lo;0;L;;;;;N;;;;;
+1318A;EGYPTIAN HIEROGLYPH I003;Lo;0;L;;;;;N;;;;;
+1318B;EGYPTIAN HIEROGLYPH I004;Lo;0;L;;;;;N;;;;;
+1318C;EGYPTIAN HIEROGLYPH I005;Lo;0;L;;;;;N;;;;;
+1318D;EGYPTIAN HIEROGLYPH I005A;Lo;0;L;;;;;N;;;;;
+1318E;EGYPTIAN HIEROGLYPH I006;Lo;0;L;;;;;N;;;;;
+1318F;EGYPTIAN HIEROGLYPH I007;Lo;0;L;;;;;N;;;;;
+13190;EGYPTIAN HIEROGLYPH I008;Lo;0;L;;;;;N;;;;;
+13191;EGYPTIAN HIEROGLYPH I009;Lo;0;L;;;;;N;;;;;
+13192;EGYPTIAN HIEROGLYPH I009A;Lo;0;L;;;;;N;;;;;
+13193;EGYPTIAN HIEROGLYPH I010;Lo;0;L;;;;;N;;;;;
+13194;EGYPTIAN HIEROGLYPH I010A;Lo;0;L;;;;;N;;;;;
+13195;EGYPTIAN HIEROGLYPH I011;Lo;0;L;;;;;N;;;;;
+13196;EGYPTIAN HIEROGLYPH I011A;Lo;0;L;;;;;N;;;;;
+13197;EGYPTIAN HIEROGLYPH I012;Lo;0;L;;;;;N;;;;;
+13198;EGYPTIAN HIEROGLYPH I013;Lo;0;L;;;;;N;;;;;
+13199;EGYPTIAN HIEROGLYPH I014;Lo;0;L;;;;;N;;;;;
+1319A;EGYPTIAN HIEROGLYPH I015;Lo;0;L;;;;;N;;;;;
+1319B;EGYPTIAN HIEROGLYPH K001;Lo;0;L;;;;;N;;;;;
+1319C;EGYPTIAN HIEROGLYPH K002;Lo;0;L;;;;;N;;;;;
+1319D;EGYPTIAN HIEROGLYPH K003;Lo;0;L;;;;;N;;;;;
+1319E;EGYPTIAN HIEROGLYPH K004;Lo;0;L;;;;;N;;;;;
+1319F;EGYPTIAN HIEROGLYPH K005;Lo;0;L;;;;;N;;;;;
+131A0;EGYPTIAN HIEROGLYPH K006;Lo;0;L;;;;;N;;;;;
+131A1;EGYPTIAN HIEROGLYPH K007;Lo;0;L;;;;;N;;;;;
+131A2;EGYPTIAN HIEROGLYPH K008;Lo;0;L;;;;;N;;;;;
+131A3;EGYPTIAN HIEROGLYPH L001;Lo;0;L;;;;;N;;;;;
+131A4;EGYPTIAN HIEROGLYPH L002;Lo;0;L;;;;;N;;;;;
+131A5;EGYPTIAN HIEROGLYPH L002A;Lo;0;L;;;;;N;;;;;
+131A6;EGYPTIAN HIEROGLYPH L003;Lo;0;L;;;;;N;;;;;
+131A7;EGYPTIAN HIEROGLYPH L004;Lo;0;L;;;;;N;;;;;
+131A8;EGYPTIAN HIEROGLYPH L005;Lo;0;L;;;;;N;;;;;
+131A9;EGYPTIAN HIEROGLYPH L006;Lo;0;L;;;;;N;;;;;
+131AA;EGYPTIAN HIEROGLYPH L006A;Lo;0;L;;;;;N;;;;;
+131AB;EGYPTIAN HIEROGLYPH L007;Lo;0;L;;;;;N;;;;;
+131AC;EGYPTIAN HIEROGLYPH L008;Lo;0;L;;;;;N;;;;;
+131AD;EGYPTIAN HIEROGLYPH M001;Lo;0;L;;;;;N;;;;;
+131AE;EGYPTIAN HIEROGLYPH M001A;Lo;0;L;;;;;N;;;;;
+131AF;EGYPTIAN HIEROGLYPH M001B;Lo;0;L;;;;;N;;;;;
+131B0;EGYPTIAN HIEROGLYPH M002;Lo;0;L;;;;;N;;;;;
+131B1;EGYPTIAN HIEROGLYPH M003;Lo;0;L;;;;;N;;;;;
+131B2;EGYPTIAN HIEROGLYPH M003A;Lo;0;L;;;;;N;;;;;
+131B3;EGYPTIAN HIEROGLYPH M004;Lo;0;L;;;;;N;;;;;
+131B4;EGYPTIAN HIEROGLYPH M005;Lo;0;L;;;;;N;;;;;
+131B5;EGYPTIAN HIEROGLYPH M006;Lo;0;L;;;;;N;;;;;
+131B6;EGYPTIAN HIEROGLYPH M007;Lo;0;L;;;;;N;;;;;
+131B7;EGYPTIAN HIEROGLYPH M008;Lo;0;L;;;;;N;;;;;
+131B8;EGYPTIAN HIEROGLYPH M009;Lo;0;L;;;;;N;;;;;
+131B9;EGYPTIAN HIEROGLYPH M010;Lo;0;L;;;;;N;;;;;
+131BA;EGYPTIAN HIEROGLYPH M010A;Lo;0;L;;;;;N;;;;;
+131BB;EGYPTIAN HIEROGLYPH M011;Lo;0;L;;;;;N;;;;;
+131BC;EGYPTIAN HIEROGLYPH M012;Lo;0;L;;;;;N;;;;;
+131BD;EGYPTIAN HIEROGLYPH M012A;Lo;0;L;;;;;N;;;;;
+131BE;EGYPTIAN HIEROGLYPH M012B;Lo;0;L;;;;;N;;;;;
+131BF;EGYPTIAN HIEROGLYPH M012C;Lo;0;L;;;;;N;;;;;
+131C0;EGYPTIAN HIEROGLYPH M012D;Lo;0;L;;;;;N;;;;;
+131C1;EGYPTIAN HIEROGLYPH M012E;Lo;0;L;;;;;N;;;;;
+131C2;EGYPTIAN HIEROGLYPH M012F;Lo;0;L;;;;;N;;;;;
+131C3;EGYPTIAN HIEROGLYPH M012G;Lo;0;L;;;;;N;;;;;
+131C4;EGYPTIAN HIEROGLYPH M012H;Lo;0;L;;;;;N;;;;;
+131C5;EGYPTIAN HIEROGLYPH M013;Lo;0;L;;;;;N;;;;;
+131C6;EGYPTIAN HIEROGLYPH M014;Lo;0;L;;;;;N;;;;;
+131C7;EGYPTIAN HIEROGLYPH M015;Lo;0;L;;;;;N;;;;;
+131C8;EGYPTIAN HIEROGLYPH M015A;Lo;0;L;;;;;N;;;;;
+131C9;EGYPTIAN HIEROGLYPH M016;Lo;0;L;;;;;N;;;;;
+131CA;EGYPTIAN HIEROGLYPH M016A;Lo;0;L;;;;;N;;;;;
+131CB;EGYPTIAN HIEROGLYPH M017;Lo;0;L;;;;;N;;;;;
+131CC;EGYPTIAN HIEROGLYPH M017A;Lo;0;L;;;;;N;;;;;
+131CD;EGYPTIAN HIEROGLYPH M018;Lo;0;L;;;;;N;;;;;
+131CE;EGYPTIAN HIEROGLYPH M019;Lo;0;L;;;;;N;;;;;
+131CF;EGYPTIAN HIEROGLYPH M020;Lo;0;L;;;;;N;;;;;
+131D0;EGYPTIAN HIEROGLYPH M021;Lo;0;L;;;;;N;;;;;
+131D1;EGYPTIAN HIEROGLYPH M022;Lo;0;L;;;;;N;;;;;
+131D2;EGYPTIAN HIEROGLYPH M022A;Lo;0;L;;;;;N;;;;;
+131D3;EGYPTIAN HIEROGLYPH M023;Lo;0;L;;;;;N;;;;;
+131D4;EGYPTIAN HIEROGLYPH M024;Lo;0;L;;;;;N;;;;;
+131D5;EGYPTIAN HIEROGLYPH M024A;Lo;0;L;;;;;N;;;;;
+131D6;EGYPTIAN HIEROGLYPH M025;Lo;0;L;;;;;N;;;;;
+131D7;EGYPTIAN HIEROGLYPH M026;Lo;0;L;;;;;N;;;;;
+131D8;EGYPTIAN HIEROGLYPH M027;Lo;0;L;;;;;N;;;;;
+131D9;EGYPTIAN HIEROGLYPH M028;Lo;0;L;;;;;N;;;;;
+131DA;EGYPTIAN HIEROGLYPH M028A;Lo;0;L;;;;;N;;;;;
+131DB;EGYPTIAN HIEROGLYPH M029;Lo;0;L;;;;;N;;;;;
+131DC;EGYPTIAN HIEROGLYPH M030;Lo;0;L;;;;;N;;;;;
+131DD;EGYPTIAN HIEROGLYPH M031;Lo;0;L;;;;;N;;;;;
+131DE;EGYPTIAN HIEROGLYPH M031A;Lo;0;L;;;;;N;;;;;
+131DF;EGYPTIAN HIEROGLYPH M032;Lo;0;L;;;;;N;;;;;
+131E0;EGYPTIAN HIEROGLYPH M033;Lo;0;L;;;;;N;;;;;
+131E1;EGYPTIAN HIEROGLYPH M033A;Lo;0;L;;;;;N;;;;;
+131E2;EGYPTIAN HIEROGLYPH M033B;Lo;0;L;;;;;N;;;;;
+131E3;EGYPTIAN HIEROGLYPH M034;Lo;0;L;;;;;N;;;;;
+131E4;EGYPTIAN HIEROGLYPH M035;Lo;0;L;;;;;N;;;;;
+131E5;EGYPTIAN HIEROGLYPH M036;Lo;0;L;;;;;N;;;;;
+131E6;EGYPTIAN HIEROGLYPH M037;Lo;0;L;;;;;N;;;;;
+131E7;EGYPTIAN HIEROGLYPH M038;Lo;0;L;;;;;N;;;;;
+131E8;EGYPTIAN HIEROGLYPH M039;Lo;0;L;;;;;N;;;;;
+131E9;EGYPTIAN HIEROGLYPH M040;Lo;0;L;;;;;N;;;;;
+131EA;EGYPTIAN HIEROGLYPH M040A;Lo;0;L;;;;;N;;;;;
+131EB;EGYPTIAN HIEROGLYPH M041;Lo;0;L;;;;;N;;;;;
+131EC;EGYPTIAN HIEROGLYPH M042;Lo;0;L;;;;;N;;;;;
+131ED;EGYPTIAN HIEROGLYPH M043;Lo;0;L;;;;;N;;;;;
+131EE;EGYPTIAN HIEROGLYPH M044;Lo;0;L;;;;;N;;;;;
+131EF;EGYPTIAN HIEROGLYPH N001;Lo;0;L;;;;;N;;;;;
+131F0;EGYPTIAN HIEROGLYPH N002;Lo;0;L;;;;;N;;;;;
+131F1;EGYPTIAN HIEROGLYPH N003;Lo;0;L;;;;;N;;;;;
+131F2;EGYPTIAN HIEROGLYPH N004;Lo;0;L;;;;;N;;;;;
+131F3;EGYPTIAN HIEROGLYPH N005;Lo;0;L;;;;;N;;;;;
+131F4;EGYPTIAN HIEROGLYPH N006;Lo;0;L;;;;;N;;;;;
+131F5;EGYPTIAN HIEROGLYPH N007;Lo;0;L;;;;;N;;;;;
+131F6;EGYPTIAN HIEROGLYPH N008;Lo;0;L;;;;;N;;;;;
+131F7;EGYPTIAN HIEROGLYPH N009;Lo;0;L;;;;;N;;;;;
+131F8;EGYPTIAN HIEROGLYPH N010;Lo;0;L;;;;;N;;;;;
+131F9;EGYPTIAN HIEROGLYPH N011;Lo;0;L;;;;;N;;;;;
+131FA;EGYPTIAN HIEROGLYPH N012;Lo;0;L;;;;;N;;;;;
+131FB;EGYPTIAN HIEROGLYPH N013;Lo;0;L;;;;;N;;;;;
+131FC;EGYPTIAN HIEROGLYPH N014;Lo;0;L;;;;;N;;;;;
+131FD;EGYPTIAN HIEROGLYPH N015;Lo;0;L;;;;;N;;;;;
+131FE;EGYPTIAN HIEROGLYPH N016;Lo;0;L;;;;;N;;;;;
+131FF;EGYPTIAN HIEROGLYPH N017;Lo;0;L;;;;;N;;;;;
+13200;EGYPTIAN HIEROGLYPH N018;Lo;0;L;;;;;N;;;;;
+13201;EGYPTIAN HIEROGLYPH N018A;Lo;0;L;;;;;N;;;;;
+13202;EGYPTIAN HIEROGLYPH N018B;Lo;0;L;;;;;N;;;;;
+13203;EGYPTIAN HIEROGLYPH N019;Lo;0;L;;;;;N;;;;;
+13204;EGYPTIAN HIEROGLYPH N020;Lo;0;L;;;;;N;;;;;
+13205;EGYPTIAN HIEROGLYPH N021;Lo;0;L;;;;;N;;;;;
+13206;EGYPTIAN HIEROGLYPH N022;Lo;0;L;;;;;N;;;;;
+13207;EGYPTIAN HIEROGLYPH N023;Lo;0;L;;;;;N;;;;;
+13208;EGYPTIAN HIEROGLYPH N024;Lo;0;L;;;;;N;;;;;
+13209;EGYPTIAN HIEROGLYPH N025;Lo;0;L;;;;;N;;;;;
+1320A;EGYPTIAN HIEROGLYPH N025A;Lo;0;L;;;;;N;;;;;
+1320B;EGYPTIAN HIEROGLYPH N026;Lo;0;L;;;;;N;;;;;
+1320C;EGYPTIAN HIEROGLYPH N027;Lo;0;L;;;;;N;;;;;
+1320D;EGYPTIAN HIEROGLYPH N028;Lo;0;L;;;;;N;;;;;
+1320E;EGYPTIAN HIEROGLYPH N029;Lo;0;L;;;;;N;;;;;
+1320F;EGYPTIAN HIEROGLYPH N030;Lo;0;L;;;;;N;;;;;
+13210;EGYPTIAN HIEROGLYPH N031;Lo;0;L;;;;;N;;;;;
+13211;EGYPTIAN HIEROGLYPH N032;Lo;0;L;;;;;N;;;;;
+13212;EGYPTIAN HIEROGLYPH N033;Lo;0;L;;;;;N;;;;;
+13213;EGYPTIAN HIEROGLYPH N033A;Lo;0;L;;;;;N;;;;;
+13214;EGYPTIAN HIEROGLYPH N034;Lo;0;L;;;;;N;;;;;
+13215;EGYPTIAN HIEROGLYPH N034A;Lo;0;L;;;;;N;;;;;
+13216;EGYPTIAN HIEROGLYPH N035;Lo;0;L;;;;;N;;;;;
+13217;EGYPTIAN HIEROGLYPH N035A;Lo;0;L;;;;;N;;;;;
+13218;EGYPTIAN HIEROGLYPH N036;Lo;0;L;;;;;N;;;;;
+13219;EGYPTIAN HIEROGLYPH N037;Lo;0;L;;;;;N;;;;;
+1321A;EGYPTIAN HIEROGLYPH N037A;Lo;0;L;;;;;N;;;;;
+1321B;EGYPTIAN HIEROGLYPH N038;Lo;0;L;;;;;N;;;;;
+1321C;EGYPTIAN HIEROGLYPH N039;Lo;0;L;;;;;N;;;;;
+1321D;EGYPTIAN HIEROGLYPH N040;Lo;0;L;;;;;N;;;;;
+1321E;EGYPTIAN HIEROGLYPH N041;Lo;0;L;;;;;N;;;;;
+1321F;EGYPTIAN HIEROGLYPH N042;Lo;0;L;;;;;N;;;;;
+13220;EGYPTIAN HIEROGLYPH NL001;Lo;0;L;;;;;N;;;;;
+13221;EGYPTIAN HIEROGLYPH NL002;Lo;0;L;;;;;N;;;;;
+13222;EGYPTIAN HIEROGLYPH NL003;Lo;0;L;;;;;N;;;;;
+13223;EGYPTIAN HIEROGLYPH NL004;Lo;0;L;;;;;N;;;;;
+13224;EGYPTIAN HIEROGLYPH NL005;Lo;0;L;;;;;N;;;;;
+13225;EGYPTIAN HIEROGLYPH NL005A;Lo;0;L;;;;;N;;;;;
+13226;EGYPTIAN HIEROGLYPH NL006;Lo;0;L;;;;;N;;;;;
+13227;EGYPTIAN HIEROGLYPH NL007;Lo;0;L;;;;;N;;;;;
+13228;EGYPTIAN HIEROGLYPH NL008;Lo;0;L;;;;;N;;;;;
+13229;EGYPTIAN HIEROGLYPH NL009;Lo;0;L;;;;;N;;;;;
+1322A;EGYPTIAN HIEROGLYPH NL010;Lo;0;L;;;;;N;;;;;
+1322B;EGYPTIAN HIEROGLYPH NL011;Lo;0;L;;;;;N;;;;;
+1322C;EGYPTIAN HIEROGLYPH NL012;Lo;0;L;;;;;N;;;;;
+1322D;EGYPTIAN HIEROGLYPH NL013;Lo;0;L;;;;;N;;;;;
+1322E;EGYPTIAN HIEROGLYPH NL014;Lo;0;L;;;;;N;;;;;
+1322F;EGYPTIAN HIEROGLYPH NL015;Lo;0;L;;;;;N;;;;;
+13230;EGYPTIAN HIEROGLYPH NL016;Lo;0;L;;;;;N;;;;;
+13231;EGYPTIAN HIEROGLYPH NL017;Lo;0;L;;;;;N;;;;;
+13232;EGYPTIAN HIEROGLYPH NL017A;Lo;0;L;;;;;N;;;;;
+13233;EGYPTIAN HIEROGLYPH NL018;Lo;0;L;;;;;N;;;;;
+13234;EGYPTIAN HIEROGLYPH NL019;Lo;0;L;;;;;N;;;;;
+13235;EGYPTIAN HIEROGLYPH NL020;Lo;0;L;;;;;N;;;;;
+13236;EGYPTIAN HIEROGLYPH NU001;Lo;0;L;;;;;N;;;;;
+13237;EGYPTIAN HIEROGLYPH NU002;Lo;0;L;;;;;N;;;;;
+13238;EGYPTIAN HIEROGLYPH NU003;Lo;0;L;;;;;N;;;;;
+13239;EGYPTIAN HIEROGLYPH NU004;Lo;0;L;;;;;N;;;;;
+1323A;EGYPTIAN HIEROGLYPH NU005;Lo;0;L;;;;;N;;;;;
+1323B;EGYPTIAN HIEROGLYPH NU006;Lo;0;L;;;;;N;;;;;
+1323C;EGYPTIAN HIEROGLYPH NU007;Lo;0;L;;;;;N;;;;;
+1323D;EGYPTIAN HIEROGLYPH NU008;Lo;0;L;;;;;N;;;;;
+1323E;EGYPTIAN HIEROGLYPH NU009;Lo;0;L;;;;;N;;;;;
+1323F;EGYPTIAN HIEROGLYPH NU010;Lo;0;L;;;;;N;;;;;
+13240;EGYPTIAN HIEROGLYPH NU010A;Lo;0;L;;;;;N;;;;;
+13241;EGYPTIAN HIEROGLYPH NU011;Lo;0;L;;;;;N;;;;;
+13242;EGYPTIAN HIEROGLYPH NU011A;Lo;0;L;;;;;N;;;;;
+13243;EGYPTIAN HIEROGLYPH NU012;Lo;0;L;;;;;N;;;;;
+13244;EGYPTIAN HIEROGLYPH NU013;Lo;0;L;;;;;N;;;;;
+13245;EGYPTIAN HIEROGLYPH NU014;Lo;0;L;;;;;N;;;;;
+13246;EGYPTIAN HIEROGLYPH NU015;Lo;0;L;;;;;N;;;;;
+13247;EGYPTIAN HIEROGLYPH NU016;Lo;0;L;;;;;N;;;;;
+13248;EGYPTIAN HIEROGLYPH NU017;Lo;0;L;;;;;N;;;;;
+13249;EGYPTIAN HIEROGLYPH NU018;Lo;0;L;;;;;N;;;;;
+1324A;EGYPTIAN HIEROGLYPH NU018A;Lo;0;L;;;;;N;;;;;
+1324B;EGYPTIAN HIEROGLYPH NU019;Lo;0;L;;;;;N;;;;;
+1324C;EGYPTIAN HIEROGLYPH NU020;Lo;0;L;;;;;N;;;;;
+1324D;EGYPTIAN HIEROGLYPH NU021;Lo;0;L;;;;;N;;;;;
+1324E;EGYPTIAN HIEROGLYPH NU022;Lo;0;L;;;;;N;;;;;
+1324F;EGYPTIAN HIEROGLYPH NU022A;Lo;0;L;;;;;N;;;;;
+13250;EGYPTIAN HIEROGLYPH O001;Lo;0;L;;;;;N;;;;;
+13251;EGYPTIAN HIEROGLYPH O001A;Lo;0;L;;;;;N;;;;;
+13252;EGYPTIAN HIEROGLYPH O002;Lo;0;L;;;;;N;;;;;
+13253;EGYPTIAN HIEROGLYPH O003;Lo;0;L;;;;;N;;;;;
+13254;EGYPTIAN HIEROGLYPH O004;Lo;0;L;;;;;N;;;;;
+13255;EGYPTIAN HIEROGLYPH O005;Lo;0;L;;;;;N;;;;;
+13256;EGYPTIAN HIEROGLYPH O005A;Lo;0;L;;;;;N;;;;;
+13257;EGYPTIAN HIEROGLYPH O006;Lo;0;L;;;;;N;;;;;
+13258;EGYPTIAN HIEROGLYPH O006A;Lo;0;L;;;;;N;;;;;
+13259;EGYPTIAN HIEROGLYPH O006B;Lo;0;L;;;;;N;;;;;
+1325A;EGYPTIAN HIEROGLYPH O006C;Lo;0;L;;;;;N;;;;;
+1325B;EGYPTIAN HIEROGLYPH O006D;Lo;0;L;;;;;N;;;;;
+1325C;EGYPTIAN HIEROGLYPH O006E;Lo;0;L;;;;;N;;;;;
+1325D;EGYPTIAN HIEROGLYPH O006F;Lo;0;L;;;;;N;;;;;
+1325E;EGYPTIAN HIEROGLYPH O007;Lo;0;L;;;;;N;;;;;
+1325F;EGYPTIAN HIEROGLYPH O008;Lo;0;L;;;;;N;;;;;
+13260;EGYPTIAN HIEROGLYPH O009;Lo;0;L;;;;;N;;;;;
+13261;EGYPTIAN HIEROGLYPH O010;Lo;0;L;;;;;N;;;;;
+13262;EGYPTIAN HIEROGLYPH O010A;Lo;0;L;;;;;N;;;;;
+13263;EGYPTIAN HIEROGLYPH O010B;Lo;0;L;;;;;N;;;;;
+13264;EGYPTIAN HIEROGLYPH O010C;Lo;0;L;;;;;N;;;;;
+13265;EGYPTIAN HIEROGLYPH O011;Lo;0;L;;;;;N;;;;;
+13266;EGYPTIAN HIEROGLYPH O012;Lo;0;L;;;;;N;;;;;
+13267;EGYPTIAN HIEROGLYPH O013;Lo;0;L;;;;;N;;;;;
+13268;EGYPTIAN HIEROGLYPH O014;Lo;0;L;;;;;N;;;;;
+13269;EGYPTIAN HIEROGLYPH O015;Lo;0;L;;;;;N;;;;;
+1326A;EGYPTIAN HIEROGLYPH O016;Lo;0;L;;;;;N;;;;;
+1326B;EGYPTIAN HIEROGLYPH O017;Lo;0;L;;;;;N;;;;;
+1326C;EGYPTIAN HIEROGLYPH O018;Lo;0;L;;;;;N;;;;;
+1326D;EGYPTIAN HIEROGLYPH O019;Lo;0;L;;;;;N;;;;;
+1326E;EGYPTIAN HIEROGLYPH O019A;Lo;0;L;;;;;N;;;;;
+1326F;EGYPTIAN HIEROGLYPH O020;Lo;0;L;;;;;N;;;;;
+13270;EGYPTIAN HIEROGLYPH O020A;Lo;0;L;;;;;N;;;;;
+13271;EGYPTIAN HIEROGLYPH O021;Lo;0;L;;;;;N;;;;;
+13272;EGYPTIAN HIEROGLYPH O022;Lo;0;L;;;;;N;;;;;
+13273;EGYPTIAN HIEROGLYPH O023;Lo;0;L;;;;;N;;;;;
+13274;EGYPTIAN HIEROGLYPH O024;Lo;0;L;;;;;N;;;;;
+13275;EGYPTIAN HIEROGLYPH O024A;Lo;0;L;;;;;N;;;;;
+13276;EGYPTIAN HIEROGLYPH O025;Lo;0;L;;;;;N;;;;;
+13277;EGYPTIAN HIEROGLYPH O025A;Lo;0;L;;;;;N;;;;;
+13278;EGYPTIAN HIEROGLYPH O026;Lo;0;L;;;;;N;;;;;
+13279;EGYPTIAN HIEROGLYPH O027;Lo;0;L;;;;;N;;;;;
+1327A;EGYPTIAN HIEROGLYPH O028;Lo;0;L;;;;;N;;;;;
+1327B;EGYPTIAN HIEROGLYPH O029;Lo;0;L;;;;;N;;;;;
+1327C;EGYPTIAN HIEROGLYPH O029A;Lo;0;L;;;;;N;;;;;
+1327D;EGYPTIAN HIEROGLYPH O030;Lo;0;L;;;;;N;;;;;
+1327E;EGYPTIAN HIEROGLYPH O030A;Lo;0;L;;;;;N;;;;;
+1327F;EGYPTIAN HIEROGLYPH O031;Lo;0;L;;;;;N;;;;;
+13280;EGYPTIAN HIEROGLYPH O032;Lo;0;L;;;;;N;;;;;
+13281;EGYPTIAN HIEROGLYPH O033;Lo;0;L;;;;;N;;;;;
+13282;EGYPTIAN HIEROGLYPH O033A;Lo;0;L;;;;;N;;;;;
+13283;EGYPTIAN HIEROGLYPH O034;Lo;0;L;;;;;N;;;;;
+13284;EGYPTIAN HIEROGLYPH O035;Lo;0;L;;;;;N;;;;;
+13285;EGYPTIAN HIEROGLYPH O036;Lo;0;L;;;;;N;;;;;
+13286;EGYPTIAN HIEROGLYPH O036A;Lo;0;L;;;;;N;;;;;
+13287;EGYPTIAN HIEROGLYPH O036B;Lo;0;L;;;;;N;;;;;
+13288;EGYPTIAN HIEROGLYPH O036C;Lo;0;L;;;;;N;;;;;
+13289;EGYPTIAN HIEROGLYPH O036D;Lo;0;L;;;;;N;;;;;
+1328A;EGYPTIAN HIEROGLYPH O037;Lo;0;L;;;;;N;;;;;
+1328B;EGYPTIAN HIEROGLYPH O038;Lo;0;L;;;;;N;;;;;
+1328C;EGYPTIAN HIEROGLYPH O039;Lo;0;L;;;;;N;;;;;
+1328D;EGYPTIAN HIEROGLYPH O040;Lo;0;L;;;;;N;;;;;
+1328E;EGYPTIAN HIEROGLYPH O041;Lo;0;L;;;;;N;;;;;
+1328F;EGYPTIAN HIEROGLYPH O042;Lo;0;L;;;;;N;;;;;
+13290;EGYPTIAN HIEROGLYPH O043;Lo;0;L;;;;;N;;;;;
+13291;EGYPTIAN HIEROGLYPH O044;Lo;0;L;;;;;N;;;;;
+13292;EGYPTIAN HIEROGLYPH O045;Lo;0;L;;;;;N;;;;;
+13293;EGYPTIAN HIEROGLYPH O046;Lo;0;L;;;;;N;;;;;
+13294;EGYPTIAN HIEROGLYPH O047;Lo;0;L;;;;;N;;;;;
+13295;EGYPTIAN HIEROGLYPH O048;Lo;0;L;;;;;N;;;;;
+13296;EGYPTIAN HIEROGLYPH O049;Lo;0;L;;;;;N;;;;;
+13297;EGYPTIAN HIEROGLYPH O050;Lo;0;L;;;;;N;;;;;
+13298;EGYPTIAN HIEROGLYPH O050A;Lo;0;L;;;;;N;;;;;
+13299;EGYPTIAN HIEROGLYPH O050B;Lo;0;L;;;;;N;;;;;
+1329A;EGYPTIAN HIEROGLYPH O051;Lo;0;L;;;;;N;;;;;
+1329B;EGYPTIAN HIEROGLYPH P001;Lo;0;L;;;;;N;;;;;
+1329C;EGYPTIAN HIEROGLYPH P001A;Lo;0;L;;;;;N;;;;;
+1329D;EGYPTIAN HIEROGLYPH P002;Lo;0;L;;;;;N;;;;;
+1329E;EGYPTIAN HIEROGLYPH P003;Lo;0;L;;;;;N;;;;;
+1329F;EGYPTIAN HIEROGLYPH P003A;Lo;0;L;;;;;N;;;;;
+132A0;EGYPTIAN HIEROGLYPH P004;Lo;0;L;;;;;N;;;;;
+132A1;EGYPTIAN HIEROGLYPH P005;Lo;0;L;;;;;N;;;;;
+132A2;EGYPTIAN HIEROGLYPH P006;Lo;0;L;;;;;N;;;;;
+132A3;EGYPTIAN HIEROGLYPH P007;Lo;0;L;;;;;N;;;;;
+132A4;EGYPTIAN HIEROGLYPH P008;Lo;0;L;;;;;N;;;;;
+132A5;EGYPTIAN HIEROGLYPH P009;Lo;0;L;;;;;N;;;;;
+132A6;EGYPTIAN HIEROGLYPH P010;Lo;0;L;;;;;N;;;;;
+132A7;EGYPTIAN HIEROGLYPH P011;Lo;0;L;;;;;N;;;;;
+132A8;EGYPTIAN HIEROGLYPH Q001;Lo;0;L;;;;;N;;;;;
+132A9;EGYPTIAN HIEROGLYPH Q002;Lo;0;L;;;;;N;;;;;
+132AA;EGYPTIAN HIEROGLYPH Q003;Lo;0;L;;;;;N;;;;;
+132AB;EGYPTIAN HIEROGLYPH Q004;Lo;0;L;;;;;N;;;;;
+132AC;EGYPTIAN HIEROGLYPH Q005;Lo;0;L;;;;;N;;;;;
+132AD;EGYPTIAN HIEROGLYPH Q006;Lo;0;L;;;;;N;;;;;
+132AE;EGYPTIAN HIEROGLYPH Q007;Lo;0;L;;;;;N;;;;;
+132AF;EGYPTIAN HIEROGLYPH R001;Lo;0;L;;;;;N;;;;;
+132B0;EGYPTIAN HIEROGLYPH R002;Lo;0;L;;;;;N;;;;;
+132B1;EGYPTIAN HIEROGLYPH R002A;Lo;0;L;;;;;N;;;;;
+132B2;EGYPTIAN HIEROGLYPH R003;Lo;0;L;;;;;N;;;;;
+132B3;EGYPTIAN HIEROGLYPH R003A;Lo;0;L;;;;;N;;;;;
+132B4;EGYPTIAN HIEROGLYPH R003B;Lo;0;L;;;;;N;;;;;
+132B5;EGYPTIAN HIEROGLYPH R004;Lo;0;L;;;;;N;;;;;
+132B6;EGYPTIAN HIEROGLYPH R005;Lo;0;L;;;;;N;;;;;
+132B7;EGYPTIAN HIEROGLYPH R006;Lo;0;L;;;;;N;;;;;
+132B8;EGYPTIAN HIEROGLYPH R007;Lo;0;L;;;;;N;;;;;
+132B9;EGYPTIAN HIEROGLYPH R008;Lo;0;L;;;;;N;;;;;
+132BA;EGYPTIAN HIEROGLYPH R009;Lo;0;L;;;;;N;;;;;
+132BB;EGYPTIAN HIEROGLYPH R010;Lo;0;L;;;;;N;;;;;
+132BC;EGYPTIAN HIEROGLYPH R010A;Lo;0;L;;;;;N;;;;;
+132BD;EGYPTIAN HIEROGLYPH R011;Lo;0;L;;;;;N;;;;;
+132BE;EGYPTIAN HIEROGLYPH R012;Lo;0;L;;;;;N;;;;;
+132BF;EGYPTIAN HIEROGLYPH R013;Lo;0;L;;;;;N;;;;;
+132C0;EGYPTIAN HIEROGLYPH R014;Lo;0;L;;;;;N;;;;;
+132C1;EGYPTIAN HIEROGLYPH R015;Lo;0;L;;;;;N;;;;;
+132C2;EGYPTIAN HIEROGLYPH R016;Lo;0;L;;;;;N;;;;;
+132C3;EGYPTIAN HIEROGLYPH R016A;Lo;0;L;;;;;N;;;;;
+132C4;EGYPTIAN HIEROGLYPH R017;Lo;0;L;;;;;N;;;;;
+132C5;EGYPTIAN HIEROGLYPH R018;Lo;0;L;;;;;N;;;;;
+132C6;EGYPTIAN HIEROGLYPH R019;Lo;0;L;;;;;N;;;;;
+132C7;EGYPTIAN HIEROGLYPH R020;Lo;0;L;;;;;N;;;;;
+132C8;EGYPTIAN HIEROGLYPH R021;Lo;0;L;;;;;N;;;;;
+132C9;EGYPTIAN HIEROGLYPH R022;Lo;0;L;;;;;N;;;;;
+132CA;EGYPTIAN HIEROGLYPH R023;Lo;0;L;;;;;N;;;;;
+132CB;EGYPTIAN HIEROGLYPH R024;Lo;0;L;;;;;N;;;;;
+132CC;EGYPTIAN HIEROGLYPH R025;Lo;0;L;;;;;N;;;;;
+132CD;EGYPTIAN HIEROGLYPH R026;Lo;0;L;;;;;N;;;;;
+132CE;EGYPTIAN HIEROGLYPH R027;Lo;0;L;;;;;N;;;;;
+132CF;EGYPTIAN HIEROGLYPH R028;Lo;0;L;;;;;N;;;;;
+132D0;EGYPTIAN HIEROGLYPH R029;Lo;0;L;;;;;N;;;;;
+132D1;EGYPTIAN HIEROGLYPH S001;Lo;0;L;;;;;N;;;;;
+132D2;EGYPTIAN HIEROGLYPH S002;Lo;0;L;;;;;N;;;;;
+132D3;EGYPTIAN HIEROGLYPH S002A;Lo;0;L;;;;;N;;;;;
+132D4;EGYPTIAN HIEROGLYPH S003;Lo;0;L;;;;;N;;;;;
+132D5;EGYPTIAN HIEROGLYPH S004;Lo;0;L;;;;;N;;;;;
+132D6;EGYPTIAN HIEROGLYPH S005;Lo;0;L;;;;;N;;;;;
+132D7;EGYPTIAN HIEROGLYPH S006;Lo;0;L;;;;;N;;;;;
+132D8;EGYPTIAN HIEROGLYPH S006A;Lo;0;L;;;;;N;;;;;
+132D9;EGYPTIAN HIEROGLYPH S007;Lo;0;L;;;;;N;;;;;
+132DA;EGYPTIAN HIEROGLYPH S008;Lo;0;L;;;;;N;;;;;
+132DB;EGYPTIAN HIEROGLYPH S009;Lo;0;L;;;;;N;;;;;
+132DC;EGYPTIAN HIEROGLYPH S010;Lo;0;L;;;;;N;;;;;
+132DD;EGYPTIAN HIEROGLYPH S011;Lo;0;L;;;;;N;;;;;
+132DE;EGYPTIAN HIEROGLYPH S012;Lo;0;L;;;;;N;;;;;
+132DF;EGYPTIAN HIEROGLYPH S013;Lo;0;L;;;;;N;;;;;
+132E0;EGYPTIAN HIEROGLYPH S014;Lo;0;L;;;;;N;;;;;
+132E1;EGYPTIAN HIEROGLYPH S014A;Lo;0;L;;;;;N;;;;;
+132E2;EGYPTIAN HIEROGLYPH S014B;Lo;0;L;;;;;N;;;;;
+132E3;EGYPTIAN HIEROGLYPH S015;Lo;0;L;;;;;N;;;;;
+132E4;EGYPTIAN HIEROGLYPH S016;Lo;0;L;;;;;N;;;;;
+132E5;EGYPTIAN HIEROGLYPH S017;Lo;0;L;;;;;N;;;;;
+132E6;EGYPTIAN HIEROGLYPH S017A;Lo;0;L;;;;;N;;;;;
+132E7;EGYPTIAN HIEROGLYPH S018;Lo;0;L;;;;;N;;;;;
+132E8;EGYPTIAN HIEROGLYPH S019;Lo;0;L;;;;;N;;;;;
+132E9;EGYPTIAN HIEROGLYPH S020;Lo;0;L;;;;;N;;;;;
+132EA;EGYPTIAN HIEROGLYPH S021;Lo;0;L;;;;;N;;;;;
+132EB;EGYPTIAN HIEROGLYPH S022;Lo;0;L;;;;;N;;;;;
+132EC;EGYPTIAN HIEROGLYPH S023;Lo;0;L;;;;;N;;;;;
+132ED;EGYPTIAN HIEROGLYPH S024;Lo;0;L;;;;;N;;;;;
+132EE;EGYPTIAN HIEROGLYPH S025;Lo;0;L;;;;;N;;;;;
+132EF;EGYPTIAN HIEROGLYPH S026;Lo;0;L;;;;;N;;;;;
+132F0;EGYPTIAN HIEROGLYPH S026A;Lo;0;L;;;;;N;;;;;
+132F1;EGYPTIAN HIEROGLYPH S026B;Lo;0;L;;;;;N;;;;;
+132F2;EGYPTIAN HIEROGLYPH S027;Lo;0;L;;;;;N;;;;;
+132F3;EGYPTIAN HIEROGLYPH S028;Lo;0;L;;;;;N;;;;;
+132F4;EGYPTIAN HIEROGLYPH S029;Lo;0;L;;;;;N;;;;;
+132F5;EGYPTIAN HIEROGLYPH S030;Lo;0;L;;;;;N;;;;;
+132F6;EGYPTIAN HIEROGLYPH S031;Lo;0;L;;;;;N;;;;;
+132F7;EGYPTIAN HIEROGLYPH S032;Lo;0;L;;;;;N;;;;;
+132F8;EGYPTIAN HIEROGLYPH S033;Lo;0;L;;;;;N;;;;;
+132F9;EGYPTIAN HIEROGLYPH S034;Lo;0;L;;;;;N;;;;;
+132FA;EGYPTIAN HIEROGLYPH S035;Lo;0;L;;;;;N;;;;;
+132FB;EGYPTIAN HIEROGLYPH S035A;Lo;0;L;;;;;N;;;;;
+132FC;EGYPTIAN HIEROGLYPH S036;Lo;0;L;;;;;N;;;;;
+132FD;EGYPTIAN HIEROGLYPH S037;Lo;0;L;;;;;N;;;;;
+132FE;EGYPTIAN HIEROGLYPH S038;Lo;0;L;;;;;N;;;;;
+132FF;EGYPTIAN HIEROGLYPH S039;Lo;0;L;;;;;N;;;;;
+13300;EGYPTIAN HIEROGLYPH S040;Lo;0;L;;;;;N;;;;;
+13301;EGYPTIAN HIEROGLYPH S041;Lo;0;L;;;;;N;;;;;
+13302;EGYPTIAN HIEROGLYPH S042;Lo;0;L;;;;;N;;;;;
+13303;EGYPTIAN HIEROGLYPH S043;Lo;0;L;;;;;N;;;;;
+13304;EGYPTIAN HIEROGLYPH S044;Lo;0;L;;;;;N;;;;;
+13305;EGYPTIAN HIEROGLYPH S045;Lo;0;L;;;;;N;;;;;
+13306;EGYPTIAN HIEROGLYPH S046;Lo;0;L;;;;;N;;;;;
+13307;EGYPTIAN HIEROGLYPH T001;Lo;0;L;;;;;N;;;;;
+13308;EGYPTIAN HIEROGLYPH T002;Lo;0;L;;;;;N;;;;;
+13309;EGYPTIAN HIEROGLYPH T003;Lo;0;L;;;;;N;;;;;
+1330A;EGYPTIAN HIEROGLYPH T003A;Lo;0;L;;;;;N;;;;;
+1330B;EGYPTIAN HIEROGLYPH T004;Lo;0;L;;;;;N;;;;;
+1330C;EGYPTIAN HIEROGLYPH T005;Lo;0;L;;;;;N;;;;;
+1330D;EGYPTIAN HIEROGLYPH T006;Lo;0;L;;;;;N;;;;;
+1330E;EGYPTIAN HIEROGLYPH T007;Lo;0;L;;;;;N;;;;;
+1330F;EGYPTIAN HIEROGLYPH T007A;Lo;0;L;;;;;N;;;;;
+13310;EGYPTIAN HIEROGLYPH T008;Lo;0;L;;;;;N;;;;;
+13311;EGYPTIAN HIEROGLYPH T008A;Lo;0;L;;;;;N;;;;;
+13312;EGYPTIAN HIEROGLYPH T009;Lo;0;L;;;;;N;;;;;
+13313;EGYPTIAN HIEROGLYPH T009A;Lo;0;L;;;;;N;;;;;
+13314;EGYPTIAN HIEROGLYPH T010;Lo;0;L;;;;;N;;;;;
+13315;EGYPTIAN HIEROGLYPH T011;Lo;0;L;;;;;N;;;;;
+13316;EGYPTIAN HIEROGLYPH T011A;Lo;0;L;;;;;N;;;;;
+13317;EGYPTIAN HIEROGLYPH T012;Lo;0;L;;;;;N;;;;;
+13318;EGYPTIAN HIEROGLYPH T013;Lo;0;L;;;;;N;;;;;
+13319;EGYPTIAN HIEROGLYPH T014;Lo;0;L;;;;;N;;;;;
+1331A;EGYPTIAN HIEROGLYPH T015;Lo;0;L;;;;;N;;;;;
+1331B;EGYPTIAN HIEROGLYPH T016;Lo;0;L;;;;;N;;;;;
+1331C;EGYPTIAN HIEROGLYPH T016A;Lo;0;L;;;;;N;;;;;
+1331D;EGYPTIAN HIEROGLYPH T017;Lo;0;L;;;;;N;;;;;
+1331E;EGYPTIAN HIEROGLYPH T018;Lo;0;L;;;;;N;;;;;
+1331F;EGYPTIAN HIEROGLYPH T019;Lo;0;L;;;;;N;;;;;
+13320;EGYPTIAN HIEROGLYPH T020;Lo;0;L;;;;;N;;;;;
+13321;EGYPTIAN HIEROGLYPH T021;Lo;0;L;;;;;N;;;;;
+13322;EGYPTIAN HIEROGLYPH T022;Lo;0;L;;;;;N;;;;;
+13323;EGYPTIAN HIEROGLYPH T023;Lo;0;L;;;;;N;;;;;
+13324;EGYPTIAN HIEROGLYPH T024;Lo;0;L;;;;;N;;;;;
+13325;EGYPTIAN HIEROGLYPH T025;Lo;0;L;;;;;N;;;;;
+13326;EGYPTIAN HIEROGLYPH T026;Lo;0;L;;;;;N;;;;;
+13327;EGYPTIAN HIEROGLYPH T027;Lo;0;L;;;;;N;;;;;
+13328;EGYPTIAN HIEROGLYPH T028;Lo;0;L;;;;;N;;;;;
+13329;EGYPTIAN HIEROGLYPH T029;Lo;0;L;;;;;N;;;;;
+1332A;EGYPTIAN HIEROGLYPH T030;Lo;0;L;;;;;N;;;;;
+1332B;EGYPTIAN HIEROGLYPH T031;Lo;0;L;;;;;N;;;;;
+1332C;EGYPTIAN HIEROGLYPH T032;Lo;0;L;;;;;N;;;;;
+1332D;EGYPTIAN HIEROGLYPH T032A;Lo;0;L;;;;;N;;;;;
+1332E;EGYPTIAN HIEROGLYPH T033;Lo;0;L;;;;;N;;;;;
+1332F;EGYPTIAN HIEROGLYPH T033A;Lo;0;L;;;;;N;;;;;
+13330;EGYPTIAN HIEROGLYPH T034;Lo;0;L;;;;;N;;;;;
+13331;EGYPTIAN HIEROGLYPH T035;Lo;0;L;;;;;N;;;;;
+13332;EGYPTIAN HIEROGLYPH T036;Lo;0;L;;;;;N;;;;;
+13333;EGYPTIAN HIEROGLYPH U001;Lo;0;L;;;;;N;;;;;
+13334;EGYPTIAN HIEROGLYPH U002;Lo;0;L;;;;;N;;;;;
+13335;EGYPTIAN HIEROGLYPH U003;Lo;0;L;;;;;N;;;;;
+13336;EGYPTIAN HIEROGLYPH U004;Lo;0;L;;;;;N;;;;;
+13337;EGYPTIAN HIEROGLYPH U005;Lo;0;L;;;;;N;;;;;
+13338;EGYPTIAN HIEROGLYPH U006;Lo;0;L;;;;;N;;;;;
+13339;EGYPTIAN HIEROGLYPH U006A;Lo;0;L;;;;;N;;;;;
+1333A;EGYPTIAN HIEROGLYPH U006B;Lo;0;L;;;;;N;;;;;
+1333B;EGYPTIAN HIEROGLYPH U007;Lo;0;L;;;;;N;;;;;
+1333C;EGYPTIAN HIEROGLYPH U008;Lo;0;L;;;;;N;;;;;
+1333D;EGYPTIAN HIEROGLYPH U009;Lo;0;L;;;;;N;;;;;
+1333E;EGYPTIAN HIEROGLYPH U010;Lo;0;L;;;;;N;;;;;
+1333F;EGYPTIAN HIEROGLYPH U011;Lo;0;L;;;;;N;;;;;
+13340;EGYPTIAN HIEROGLYPH U012;Lo;0;L;;;;;N;;;;;
+13341;EGYPTIAN HIEROGLYPH U013;Lo;0;L;;;;;N;;;;;
+13342;EGYPTIAN HIEROGLYPH U014;Lo;0;L;;;;;N;;;;;
+13343;EGYPTIAN HIEROGLYPH U015;Lo;0;L;;;;;N;;;;;
+13344;EGYPTIAN HIEROGLYPH U016;Lo;0;L;;;;;N;;;;;
+13345;EGYPTIAN HIEROGLYPH U017;Lo;0;L;;;;;N;;;;;
+13346;EGYPTIAN HIEROGLYPH U018;Lo;0;L;;;;;N;;;;;
+13347;EGYPTIAN HIEROGLYPH U019;Lo;0;L;;;;;N;;;;;
+13348;EGYPTIAN HIEROGLYPH U020;Lo;0;L;;;;;N;;;;;
+13349;EGYPTIAN HIEROGLYPH U021;Lo;0;L;;;;;N;;;;;
+1334A;EGYPTIAN HIEROGLYPH U022;Lo;0;L;;;;;N;;;;;
+1334B;EGYPTIAN HIEROGLYPH U023;Lo;0;L;;;;;N;;;;;
+1334C;EGYPTIAN HIEROGLYPH U023A;Lo;0;L;;;;;N;;;;;
+1334D;EGYPTIAN HIEROGLYPH U024;Lo;0;L;;;;;N;;;;;
+1334E;EGYPTIAN HIEROGLYPH U025;Lo;0;L;;;;;N;;;;;
+1334F;EGYPTIAN HIEROGLYPH U026;Lo;0;L;;;;;N;;;;;
+13350;EGYPTIAN HIEROGLYPH U027;Lo;0;L;;;;;N;;;;;
+13351;EGYPTIAN HIEROGLYPH U028;Lo;0;L;;;;;N;;;;;
+13352;EGYPTIAN HIEROGLYPH U029;Lo;0;L;;;;;N;;;;;
+13353;EGYPTIAN HIEROGLYPH U029A;Lo;0;L;;;;;N;;;;;
+13354;EGYPTIAN HIEROGLYPH U030;Lo;0;L;;;;;N;;;;;
+13355;EGYPTIAN HIEROGLYPH U031;Lo;0;L;;;;;N;;;;;
+13356;EGYPTIAN HIEROGLYPH U032;Lo;0;L;;;;;N;;;;;
+13357;EGYPTIAN HIEROGLYPH U032A;Lo;0;L;;;;;N;;;;;
+13358;EGYPTIAN HIEROGLYPH U033;Lo;0;L;;;;;N;;;;;
+13359;EGYPTIAN HIEROGLYPH U034;Lo;0;L;;;;;N;;;;;
+1335A;EGYPTIAN HIEROGLYPH U035;Lo;0;L;;;;;N;;;;;
+1335B;EGYPTIAN HIEROGLYPH U036;Lo;0;L;;;;;N;;;;;
+1335C;EGYPTIAN HIEROGLYPH U037;Lo;0;L;;;;;N;;;;;
+1335D;EGYPTIAN HIEROGLYPH U038;Lo;0;L;;;;;N;;;;;
+1335E;EGYPTIAN HIEROGLYPH U039;Lo;0;L;;;;;N;;;;;
+1335F;EGYPTIAN HIEROGLYPH U040;Lo;0;L;;;;;N;;;;;
+13360;EGYPTIAN HIEROGLYPH U041;Lo;0;L;;;;;N;;;;;
+13361;EGYPTIAN HIEROGLYPH U042;Lo;0;L;;;;;N;;;;;
+13362;EGYPTIAN HIEROGLYPH V001;Lo;0;L;;;;;N;;;;;
+13363;EGYPTIAN HIEROGLYPH V001A;Lo;0;L;;;;;N;;;;;
+13364;EGYPTIAN HIEROGLYPH V001B;Lo;0;L;;;;;N;;;;;
+13365;EGYPTIAN HIEROGLYPH V001C;Lo;0;L;;;;;N;;;;;
+13366;EGYPTIAN HIEROGLYPH V001D;Lo;0;L;;;;;N;;;;;
+13367;EGYPTIAN HIEROGLYPH V001E;Lo;0;L;;;;;N;;;;;
+13368;EGYPTIAN HIEROGLYPH V001F;Lo;0;L;;;;;N;;;;;
+13369;EGYPTIAN HIEROGLYPH V001G;Lo;0;L;;;;;N;;;;;
+1336A;EGYPTIAN HIEROGLYPH V001H;Lo;0;L;;;;;N;;;;;
+1336B;EGYPTIAN HIEROGLYPH V001I;Lo;0;L;;;;;N;;;;;
+1336C;EGYPTIAN HIEROGLYPH V002;Lo;0;L;;;;;N;;;;;
+1336D;EGYPTIAN HIEROGLYPH V002A;Lo;0;L;;;;;N;;;;;
+1336E;EGYPTIAN HIEROGLYPH V003;Lo;0;L;;;;;N;;;;;
+1336F;EGYPTIAN HIEROGLYPH V004;Lo;0;L;;;;;N;;;;;
+13370;EGYPTIAN HIEROGLYPH V005;Lo;0;L;;;;;N;;;;;
+13371;EGYPTIAN HIEROGLYPH V006;Lo;0;L;;;;;N;;;;;
+13372;EGYPTIAN HIEROGLYPH V007;Lo;0;L;;;;;N;;;;;
+13373;EGYPTIAN HIEROGLYPH V007A;Lo;0;L;;;;;N;;;;;
+13374;EGYPTIAN HIEROGLYPH V007B;Lo;0;L;;;;;N;;;;;
+13375;EGYPTIAN HIEROGLYPH V008;Lo;0;L;;;;;N;;;;;
+13376;EGYPTIAN HIEROGLYPH V009;Lo;0;L;;;;;N;;;;;
+13377;EGYPTIAN HIEROGLYPH V010;Lo;0;L;;;;;N;;;;;
+13378;EGYPTIAN HIEROGLYPH V011;Lo;0;L;;;;;N;;;;;
+13379;EGYPTIAN HIEROGLYPH V011A;Lo;0;L;;;;;N;;;;;
+1337A;EGYPTIAN HIEROGLYPH V011B;Lo;0;L;;;;;N;;;;;
+1337B;EGYPTIAN HIEROGLYPH V011C;Lo;0;L;;;;;N;;;;;
+1337C;EGYPTIAN HIEROGLYPH V012;Lo;0;L;;;;;N;;;;;
+1337D;EGYPTIAN HIEROGLYPH V012A;Lo;0;L;;;;;N;;;;;
+1337E;EGYPTIAN HIEROGLYPH V012B;Lo;0;L;;;;;N;;;;;
+1337F;EGYPTIAN HIEROGLYPH V013;Lo;0;L;;;;;N;;;;;
+13380;EGYPTIAN HIEROGLYPH V014;Lo;0;L;;;;;N;;;;;
+13381;EGYPTIAN HIEROGLYPH V015;Lo;0;L;;;;;N;;;;;
+13382;EGYPTIAN HIEROGLYPH V016;Lo;0;L;;;;;N;;;;;
+13383;EGYPTIAN HIEROGLYPH V017;Lo;0;L;;;;;N;;;;;
+13384;EGYPTIAN HIEROGLYPH V018;Lo;0;L;;;;;N;;;;;
+13385;EGYPTIAN HIEROGLYPH V019;Lo;0;L;;;;;N;;;;;
+13386;EGYPTIAN HIEROGLYPH V020;Lo;0;L;;;;;N;;;;;
+13387;EGYPTIAN HIEROGLYPH V020A;Lo;0;L;;;;;N;;;;;
+13388;EGYPTIAN HIEROGLYPH V020B;Lo;0;L;;;;;N;;;;;
+13389;EGYPTIAN HIEROGLYPH V020C;Lo;0;L;;;;;N;;;;;
+1338A;EGYPTIAN HIEROGLYPH V020D;Lo;0;L;;;;;N;;;;;
+1338B;EGYPTIAN HIEROGLYPH V020E;Lo;0;L;;;;;N;;;;;
+1338C;EGYPTIAN HIEROGLYPH V020F;Lo;0;L;;;;;N;;;;;
+1338D;EGYPTIAN HIEROGLYPH V020G;Lo;0;L;;;;;N;;;;;
+1338E;EGYPTIAN HIEROGLYPH V020H;Lo;0;L;;;;;N;;;;;
+1338F;EGYPTIAN HIEROGLYPH V020I;Lo;0;L;;;;;N;;;;;
+13390;EGYPTIAN HIEROGLYPH V020J;Lo;0;L;;;;;N;;;;;
+13391;EGYPTIAN HIEROGLYPH V020K;Lo;0;L;;;;;N;;;;;
+13392;EGYPTIAN HIEROGLYPH V020L;Lo;0;L;;;;;N;;;;;
+13393;EGYPTIAN HIEROGLYPH V021;Lo;0;L;;;;;N;;;;;
+13394;EGYPTIAN HIEROGLYPH V022;Lo;0;L;;;;;N;;;;;
+13395;EGYPTIAN HIEROGLYPH V023;Lo;0;L;;;;;N;;;;;
+13396;EGYPTIAN HIEROGLYPH V023A;Lo;0;L;;;;;N;;;;;
+13397;EGYPTIAN HIEROGLYPH V024;Lo;0;L;;;;;N;;;;;
+13398;EGYPTIAN HIEROGLYPH V025;Lo;0;L;;;;;N;;;;;
+13399;EGYPTIAN HIEROGLYPH V026;Lo;0;L;;;;;N;;;;;
+1339A;EGYPTIAN HIEROGLYPH V027;Lo;0;L;;;;;N;;;;;
+1339B;EGYPTIAN HIEROGLYPH V028;Lo;0;L;;;;;N;;;;;
+1339C;EGYPTIAN HIEROGLYPH V028A;Lo;0;L;;;;;N;;;;;
+1339D;EGYPTIAN HIEROGLYPH V029;Lo;0;L;;;;;N;;;;;
+1339E;EGYPTIAN HIEROGLYPH V029A;Lo;0;L;;;;;N;;;;;
+1339F;EGYPTIAN HIEROGLYPH V030;Lo;0;L;;;;;N;;;;;
+133A0;EGYPTIAN HIEROGLYPH V030A;Lo;0;L;;;;;N;;;;;
+133A1;EGYPTIAN HIEROGLYPH V031;Lo;0;L;;;;;N;;;;;
+133A2;EGYPTIAN HIEROGLYPH V031A;Lo;0;L;;;;;N;;;;;
+133A3;EGYPTIAN HIEROGLYPH V032;Lo;0;L;;;;;N;;;;;
+133A4;EGYPTIAN HIEROGLYPH V033;Lo;0;L;;;;;N;;;;;
+133A5;EGYPTIAN HIEROGLYPH V033A;Lo;0;L;;;;;N;;;;;
+133A6;EGYPTIAN HIEROGLYPH V034;Lo;0;L;;;;;N;;;;;
+133A7;EGYPTIAN HIEROGLYPH V035;Lo;0;L;;;;;N;;;;;
+133A8;EGYPTIAN HIEROGLYPH V036;Lo;0;L;;;;;N;;;;;
+133A9;EGYPTIAN HIEROGLYPH V037;Lo;0;L;;;;;N;;;;;
+133AA;EGYPTIAN HIEROGLYPH V037A;Lo;0;L;;;;;N;;;;;
+133AB;EGYPTIAN HIEROGLYPH V038;Lo;0;L;;;;;N;;;;;
+133AC;EGYPTIAN HIEROGLYPH V039;Lo;0;L;;;;;N;;;;;
+133AD;EGYPTIAN HIEROGLYPH V040;Lo;0;L;;;;;N;;;;;
+133AE;EGYPTIAN HIEROGLYPH V040A;Lo;0;L;;;;;N;;;;;
+133AF;EGYPTIAN HIEROGLYPH W001;Lo;0;L;;;;;N;;;;;
+133B0;EGYPTIAN HIEROGLYPH W002;Lo;0;L;;;;;N;;;;;
+133B1;EGYPTIAN HIEROGLYPH W003;Lo;0;L;;;;;N;;;;;
+133B2;EGYPTIAN HIEROGLYPH W003A;Lo;0;L;;;;;N;;;;;
+133B3;EGYPTIAN HIEROGLYPH W004;Lo;0;L;;;;;N;;;;;
+133B4;EGYPTIAN HIEROGLYPH W005;Lo;0;L;;;;;N;;;;;
+133B5;EGYPTIAN HIEROGLYPH W006;Lo;0;L;;;;;N;;;;;
+133B6;EGYPTIAN HIEROGLYPH W007;Lo;0;L;;;;;N;;;;;
+133B7;EGYPTIAN HIEROGLYPH W008;Lo;0;L;;;;;N;;;;;
+133B8;EGYPTIAN HIEROGLYPH W009;Lo;0;L;;;;;N;;;;;
+133B9;EGYPTIAN HIEROGLYPH W009A;Lo;0;L;;;;;N;;;;;
+133BA;EGYPTIAN HIEROGLYPH W010;Lo;0;L;;;;;N;;;;;
+133BB;EGYPTIAN HIEROGLYPH W010A;Lo;0;L;;;;;N;;;;;
+133BC;EGYPTIAN HIEROGLYPH W011;Lo;0;L;;;;;N;;;;;
+133BD;EGYPTIAN HIEROGLYPH W012;Lo;0;L;;;;;N;;;;;
+133BE;EGYPTIAN HIEROGLYPH W013;Lo;0;L;;;;;N;;;;;
+133BF;EGYPTIAN HIEROGLYPH W014;Lo;0;L;;;;;N;;;;;
+133C0;EGYPTIAN HIEROGLYPH W014A;Lo;0;L;;;;;N;;;;;
+133C1;EGYPTIAN HIEROGLYPH W015;Lo;0;L;;;;;N;;;;;
+133C2;EGYPTIAN HIEROGLYPH W016;Lo;0;L;;;;;N;;;;;
+133C3;EGYPTIAN HIEROGLYPH W017;Lo;0;L;;;;;N;;;;;
+133C4;EGYPTIAN HIEROGLYPH W017A;Lo;0;L;;;;;N;;;;;
+133C5;EGYPTIAN HIEROGLYPH W018;Lo;0;L;;;;;N;;;;;
+133C6;EGYPTIAN HIEROGLYPH W018A;Lo;0;L;;;;;N;;;;;
+133C7;EGYPTIAN HIEROGLYPH W019;Lo;0;L;;;;;N;;;;;
+133C8;EGYPTIAN HIEROGLYPH W020;Lo;0;L;;;;;N;;;;;
+133C9;EGYPTIAN HIEROGLYPH W021;Lo;0;L;;;;;N;;;;;
+133CA;EGYPTIAN HIEROGLYPH W022;Lo;0;L;;;;;N;;;;;
+133CB;EGYPTIAN HIEROGLYPH W023;Lo;0;L;;;;;N;;;;;
+133CC;EGYPTIAN HIEROGLYPH W024;Lo;0;L;;;;;N;;;;;
+133CD;EGYPTIAN HIEROGLYPH W024A;Lo;0;L;;;;;N;;;;;
+133CE;EGYPTIAN HIEROGLYPH W025;Lo;0;L;;;;;N;;;;;
+133CF;EGYPTIAN HIEROGLYPH X001;Lo;0;L;;;;;N;;;;;
+133D0;EGYPTIAN HIEROGLYPH X002;Lo;0;L;;;;;N;;;;;
+133D1;EGYPTIAN HIEROGLYPH X003;Lo;0;L;;;;;N;;;;;
+133D2;EGYPTIAN HIEROGLYPH X004;Lo;0;L;;;;;N;;;;;
+133D3;EGYPTIAN HIEROGLYPH X004A;Lo;0;L;;;;;N;;;;;
+133D4;EGYPTIAN HIEROGLYPH X004B;Lo;0;L;;;;;N;;;;;
+133D5;EGYPTIAN HIEROGLYPH X005;Lo;0;L;;;;;N;;;;;
+133D6;EGYPTIAN HIEROGLYPH X006;Lo;0;L;;;;;N;;;;;
+133D7;EGYPTIAN HIEROGLYPH X006A;Lo;0;L;;;;;N;;;;;
+133D8;EGYPTIAN HIEROGLYPH X007;Lo;0;L;;;;;N;;;;;
+133D9;EGYPTIAN HIEROGLYPH X008;Lo;0;L;;;;;N;;;;;
+133DA;EGYPTIAN HIEROGLYPH X008A;Lo;0;L;;;;;N;;;;;
+133DB;EGYPTIAN HIEROGLYPH Y001;Lo;0;L;;;;;N;;;;;
+133DC;EGYPTIAN HIEROGLYPH Y001A;Lo;0;L;;;;;N;;;;;
+133DD;EGYPTIAN HIEROGLYPH Y002;Lo;0;L;;;;;N;;;;;
+133DE;EGYPTIAN HIEROGLYPH Y003;Lo;0;L;;;;;N;;;;;
+133DF;EGYPTIAN HIEROGLYPH Y004;Lo;0;L;;;;;N;;;;;
+133E0;EGYPTIAN HIEROGLYPH Y005;Lo;0;L;;;;;N;;;;;
+133E1;EGYPTIAN HIEROGLYPH Y006;Lo;0;L;;;;;N;;;;;
+133E2;EGYPTIAN HIEROGLYPH Y007;Lo;0;L;;;;;N;;;;;
+133E3;EGYPTIAN HIEROGLYPH Y008;Lo;0;L;;;;;N;;;;;
+133E4;EGYPTIAN HIEROGLYPH Z001;Lo;0;L;;;;;N;;;;;
+133E5;EGYPTIAN HIEROGLYPH Z002;Lo;0;L;;;;;N;;;;;
+133E6;EGYPTIAN HIEROGLYPH Z002A;Lo;0;L;;;;;N;;;;;
+133E7;EGYPTIAN HIEROGLYPH Z002B;Lo;0;L;;;;;N;;;;;
+133E8;EGYPTIAN HIEROGLYPH Z002C;Lo;0;L;;;;;N;;;;;
+133E9;EGYPTIAN HIEROGLYPH Z002D;Lo;0;L;;;;;N;;;;;
+133EA;EGYPTIAN HIEROGLYPH Z003;Lo;0;L;;;;;N;;;;;
+133EB;EGYPTIAN HIEROGLYPH Z003A;Lo;0;L;;;;;N;;;;;
+133EC;EGYPTIAN HIEROGLYPH Z003B;Lo;0;L;;;;;N;;;;;
+133ED;EGYPTIAN HIEROGLYPH Z004;Lo;0;L;;;;;N;;;;;
+133EE;EGYPTIAN HIEROGLYPH Z004A;Lo;0;L;;;;;N;;;;;
+133EF;EGYPTIAN HIEROGLYPH Z005;Lo;0;L;;;;;N;;;;;
+133F0;EGYPTIAN HIEROGLYPH Z005A;Lo;0;L;;;;;N;;;;;
+133F1;EGYPTIAN HIEROGLYPH Z006;Lo;0;L;;;;;N;;;;;
+133F2;EGYPTIAN HIEROGLYPH Z007;Lo;0;L;;;;;N;;;;;
+133F3;EGYPTIAN HIEROGLYPH Z008;Lo;0;L;;;;;N;;;;;
+133F4;EGYPTIAN HIEROGLYPH Z009;Lo;0;L;;;;;N;;;;;
+133F5;EGYPTIAN HIEROGLYPH Z010;Lo;0;L;;;;;N;;;;;
+133F6;EGYPTIAN HIEROGLYPH Z011;Lo;0;L;;;;;N;;;;;
+133F7;EGYPTIAN HIEROGLYPH Z012;Lo;0;L;;;;;N;;;;;
+133F8;EGYPTIAN HIEROGLYPH Z013;Lo;0;L;;;;;N;;;;;
+133F9;EGYPTIAN HIEROGLYPH Z014;Lo;0;L;;;;;N;;;;;
+133FA;EGYPTIAN HIEROGLYPH Z015;Lo;0;L;;;;;N;;;;;
+133FB;EGYPTIAN HIEROGLYPH Z015A;Lo;0;L;;;;;N;;;;;
+133FC;EGYPTIAN HIEROGLYPH Z015B;Lo;0;L;;;;;N;;;;;
+133FD;EGYPTIAN HIEROGLYPH Z015C;Lo;0;L;;;;;N;;;;;
+133FE;EGYPTIAN HIEROGLYPH Z015D;Lo;0;L;;;;;N;;;;;
+133FF;EGYPTIAN HIEROGLYPH Z015E;Lo;0;L;;;;;N;;;;;
+13400;EGYPTIAN HIEROGLYPH Z015F;Lo;0;L;;;;;N;;;;;
+13401;EGYPTIAN HIEROGLYPH Z015G;Lo;0;L;;;;;N;;;;;
+13402;EGYPTIAN HIEROGLYPH Z015H;Lo;0;L;;;;;N;;;;;
+13403;EGYPTIAN HIEROGLYPH Z015I;Lo;0;L;;;;;N;;;;;
+13404;EGYPTIAN HIEROGLYPH Z016;Lo;0;L;;;;;N;;;;;
+13405;EGYPTIAN HIEROGLYPH Z016A;Lo;0;L;;;;;N;;;;;
+13406;EGYPTIAN HIEROGLYPH Z016B;Lo;0;L;;;;;N;;;;;
+13407;EGYPTIAN HIEROGLYPH Z016C;Lo;0;L;;;;;N;;;;;
+13408;EGYPTIAN HIEROGLYPH Z016D;Lo;0;L;;;;;N;;;;;
+13409;EGYPTIAN HIEROGLYPH Z016E;Lo;0;L;;;;;N;;;;;
+1340A;EGYPTIAN HIEROGLYPH Z016F;Lo;0;L;;;;;N;;;;;
+1340B;EGYPTIAN HIEROGLYPH Z016G;Lo;0;L;;;;;N;;;;;
+1340C;EGYPTIAN HIEROGLYPH Z016H;Lo;0;L;;;;;N;;;;;
+1340D;EGYPTIAN HIEROGLYPH AA001;Lo;0;L;;;;;N;;;;;
+1340E;EGYPTIAN HIEROGLYPH AA002;Lo;0;L;;;;;N;;;;;
+1340F;EGYPTIAN HIEROGLYPH AA003;Lo;0;L;;;;;N;;;;;
+13410;EGYPTIAN HIEROGLYPH AA004;Lo;0;L;;;;;N;;;;;
+13411;EGYPTIAN HIEROGLYPH AA005;Lo;0;L;;;;;N;;;;;
+13412;EGYPTIAN HIEROGLYPH AA006;Lo;0;L;;;;;N;;;;;
+13413;EGYPTIAN HIEROGLYPH AA007;Lo;0;L;;;;;N;;;;;
+13414;EGYPTIAN HIEROGLYPH AA007A;Lo;0;L;;;;;N;;;;;
+13415;EGYPTIAN HIEROGLYPH AA007B;Lo;0;L;;;;;N;;;;;
+13416;EGYPTIAN HIEROGLYPH AA008;Lo;0;L;;;;;N;;;;;
+13417;EGYPTIAN HIEROGLYPH AA009;Lo;0;L;;;;;N;;;;;
+13418;EGYPTIAN HIEROGLYPH AA010;Lo;0;L;;;;;N;;;;;
+13419;EGYPTIAN HIEROGLYPH AA011;Lo;0;L;;;;;N;;;;;
+1341A;EGYPTIAN HIEROGLYPH AA012;Lo;0;L;;;;;N;;;;;
+1341B;EGYPTIAN HIEROGLYPH AA013;Lo;0;L;;;;;N;;;;;
+1341C;EGYPTIAN HIEROGLYPH AA014;Lo;0;L;;;;;N;;;;;
+1341D;EGYPTIAN HIEROGLYPH AA015;Lo;0;L;;;;;N;;;;;
+1341E;EGYPTIAN HIEROGLYPH AA016;Lo;0;L;;;;;N;;;;;
+1341F;EGYPTIAN HIEROGLYPH AA017;Lo;0;L;;;;;N;;;;;
+13420;EGYPTIAN HIEROGLYPH AA018;Lo;0;L;;;;;N;;;;;
+13421;EGYPTIAN HIEROGLYPH AA019;Lo;0;L;;;;;N;;;;;
+13422;EGYPTIAN HIEROGLYPH AA020;Lo;0;L;;;;;N;;;;;
+13423;EGYPTIAN HIEROGLYPH AA021;Lo;0;L;;;;;N;;;;;
+13424;EGYPTIAN HIEROGLYPH AA022;Lo;0;L;;;;;N;;;;;
+13425;EGYPTIAN HIEROGLYPH AA023;Lo;0;L;;;;;N;;;;;
+13426;EGYPTIAN HIEROGLYPH AA024;Lo;0;L;;;;;N;;;;;
+13427;EGYPTIAN HIEROGLYPH AA025;Lo;0;L;;;;;N;;;;;
+13428;EGYPTIAN HIEROGLYPH AA026;Lo;0;L;;;;;N;;;;;
+13429;EGYPTIAN HIEROGLYPH AA027;Lo;0;L;;;;;N;;;;;
+1342A;EGYPTIAN HIEROGLYPH AA028;Lo;0;L;;;;;N;;;;;
+1342B;EGYPTIAN HIEROGLYPH AA029;Lo;0;L;;;;;N;;;;;
+1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;
+1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;
+1342E;EGYPTIAN HIEROGLYPH AA032;Lo;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;;;;;
+1D129;MUSICAL SYMBOL MULTIPLE MEASURE REST;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;;;;;
+1D301;DIGRAM FOR HEAVENLY EARTH;So;0;ON;;;;;N;;;;;
+1D302;DIGRAM FOR HUMAN EARTH;So;0;ON;;;;;N;;;;;
+1D303;DIGRAM FOR EARTHLY HEAVEN;So;0;ON;;;;;N;;;;;
+1D304;DIGRAM FOR EARTHLY HUMAN;So;0;ON;;;;;N;;;;;
+1D305;DIGRAM FOR EARTH;So;0;ON;;;;;N;;;;;
+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;<font> 0041;;;;N;;;;;
+1D401;MATHEMATICAL BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D402;MATHEMATICAL BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D403;MATHEMATICAL BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D404;MATHEMATICAL BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D405;MATHEMATICAL BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D406;MATHEMATICAL BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D407;MATHEMATICAL BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D408;MATHEMATICAL BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D409;MATHEMATICAL BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D40A;MATHEMATICAL BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D40B;MATHEMATICAL BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D40C;MATHEMATICAL BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D40D;MATHEMATICAL BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D40E;MATHEMATICAL BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D40F;MATHEMATICAL BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D410;MATHEMATICAL BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D411;MATHEMATICAL BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D412;MATHEMATICAL BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D413;MATHEMATICAL BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D414;MATHEMATICAL BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D415;MATHEMATICAL BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D416;MATHEMATICAL BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D417;MATHEMATICAL BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D418;MATHEMATICAL BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D419;MATHEMATICAL BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D41A;MATHEMATICAL BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D41B;MATHEMATICAL BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D41C;MATHEMATICAL BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D41D;MATHEMATICAL BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D41E;MATHEMATICAL BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D41F;MATHEMATICAL BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D420;MATHEMATICAL BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D421;MATHEMATICAL BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D422;MATHEMATICAL BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D423;MATHEMATICAL BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D424;MATHEMATICAL BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D425;MATHEMATICAL BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D426;MATHEMATICAL BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D427;MATHEMATICAL BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D428;MATHEMATICAL BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D429;MATHEMATICAL BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D42A;MATHEMATICAL BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D42B;MATHEMATICAL BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D42C;MATHEMATICAL BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D42D;MATHEMATICAL BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D42E;MATHEMATICAL BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D42F;MATHEMATICAL BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D430;MATHEMATICAL BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D431;MATHEMATICAL BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D432;MATHEMATICAL BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D433;MATHEMATICAL BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D434;MATHEMATICAL ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D435;MATHEMATICAL ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D436;MATHEMATICAL ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D437;MATHEMATICAL ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D438;MATHEMATICAL ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D439;MATHEMATICAL ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D43A;MATHEMATICAL ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D43B;MATHEMATICAL ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D43C;MATHEMATICAL ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D43D;MATHEMATICAL ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D43E;MATHEMATICAL ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D43F;MATHEMATICAL ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D440;MATHEMATICAL ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D441;MATHEMATICAL ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D442;MATHEMATICAL ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D443;MATHEMATICAL ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D444;MATHEMATICAL ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D445;MATHEMATICAL ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D446;MATHEMATICAL ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D447;MATHEMATICAL ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D448;MATHEMATICAL ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D449;MATHEMATICAL ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D44A;MATHEMATICAL ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D44B;MATHEMATICAL ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D44C;MATHEMATICAL ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D44D;MATHEMATICAL ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D44E;MATHEMATICAL ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D44F;MATHEMATICAL ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D450;MATHEMATICAL ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D451;MATHEMATICAL ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D452;MATHEMATICAL ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D453;MATHEMATICAL ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D454;MATHEMATICAL ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D456;MATHEMATICAL ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D457;MATHEMATICAL ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D458;MATHEMATICAL ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D459;MATHEMATICAL ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D45A;MATHEMATICAL ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D45B;MATHEMATICAL ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D45C;MATHEMATICAL ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D45D;MATHEMATICAL ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D45E;MATHEMATICAL ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D45F;MATHEMATICAL ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D460;MATHEMATICAL ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D461;MATHEMATICAL ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D462;MATHEMATICAL ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D463;MATHEMATICAL ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D464;MATHEMATICAL ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D465;MATHEMATICAL ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D466;MATHEMATICAL ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D467;MATHEMATICAL ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D468;MATHEMATICAL BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D469;MATHEMATICAL BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D46A;MATHEMATICAL BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D46B;MATHEMATICAL BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D46C;MATHEMATICAL BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D46D;MATHEMATICAL BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D46E;MATHEMATICAL BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D46F;MATHEMATICAL BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D470;MATHEMATICAL BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D471;MATHEMATICAL BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D472;MATHEMATICAL BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D473;MATHEMATICAL BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D474;MATHEMATICAL BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D475;MATHEMATICAL BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D476;MATHEMATICAL BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D477;MATHEMATICAL BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D478;MATHEMATICAL BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D479;MATHEMATICAL BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D47A;MATHEMATICAL BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D47B;MATHEMATICAL BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D47C;MATHEMATICAL BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D47D;MATHEMATICAL BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D47E;MATHEMATICAL BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D47F;MATHEMATICAL BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D480;MATHEMATICAL BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D481;MATHEMATICAL BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D482;MATHEMATICAL BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D483;MATHEMATICAL BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D484;MATHEMATICAL BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D485;MATHEMATICAL BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D486;MATHEMATICAL BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D487;MATHEMATICAL BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D488;MATHEMATICAL BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D489;MATHEMATICAL BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D48A;MATHEMATICAL BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D48B;MATHEMATICAL BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D48C;MATHEMATICAL BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D48D;MATHEMATICAL BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D48E;MATHEMATICAL BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D48F;MATHEMATICAL BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D490;MATHEMATICAL BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D491;MATHEMATICAL BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D492;MATHEMATICAL BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D493;MATHEMATICAL BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D494;MATHEMATICAL BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D495;MATHEMATICAL BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D496;MATHEMATICAL BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D497;MATHEMATICAL BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D498;MATHEMATICAL BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D499;MATHEMATICAL BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D49A;MATHEMATICAL BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D49B;MATHEMATICAL BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D49C;MATHEMATICAL SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D49E;MATHEMATICAL SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D49F;MATHEMATICAL SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4A2;MATHEMATICAL SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4A5;MATHEMATICAL SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4A6;MATHEMATICAL SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4A9;MATHEMATICAL SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4AA;MATHEMATICAL SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4AB;MATHEMATICAL SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4AC;MATHEMATICAL SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4AE;MATHEMATICAL SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4AF;MATHEMATICAL SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4B0;MATHEMATICAL SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4B1;MATHEMATICAL SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4B2;MATHEMATICAL SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4B3;MATHEMATICAL SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4B4;MATHEMATICAL SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4B5;MATHEMATICAL SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4B6;MATHEMATICAL SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4B7;MATHEMATICAL SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4B8;MATHEMATICAL SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4B9;MATHEMATICAL SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4BB;MATHEMATICAL SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4BD;MATHEMATICAL SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4BE;MATHEMATICAL SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4BF;MATHEMATICAL SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4C0;MATHEMATICAL SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4C1;MATHEMATICAL SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4C2;MATHEMATICAL SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4C3;MATHEMATICAL SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4C5;MATHEMATICAL SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4C6;MATHEMATICAL SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4C7;MATHEMATICAL SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4C8;MATHEMATICAL SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4C9;MATHEMATICAL SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4CA;MATHEMATICAL SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4CB;MATHEMATICAL SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D4CC;MATHEMATICAL SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D4CD;MATHEMATICAL SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D4CE;MATHEMATICAL SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D4CF;MATHEMATICAL SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D4D0;MATHEMATICAL BOLD SCRIPT CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D4D1;MATHEMATICAL BOLD SCRIPT CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D4D2;MATHEMATICAL BOLD SCRIPT CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D4D3;MATHEMATICAL BOLD SCRIPT CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D4D4;MATHEMATICAL BOLD SCRIPT CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D4D5;MATHEMATICAL BOLD SCRIPT CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D4D6;MATHEMATICAL BOLD SCRIPT CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D4D7;MATHEMATICAL BOLD SCRIPT CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D4D8;MATHEMATICAL BOLD SCRIPT CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D4D9;MATHEMATICAL BOLD SCRIPT CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D4DA;MATHEMATICAL BOLD SCRIPT CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D4DB;MATHEMATICAL BOLD SCRIPT CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D4DC;MATHEMATICAL BOLD SCRIPT CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D4DD;MATHEMATICAL BOLD SCRIPT CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D4DE;MATHEMATICAL BOLD SCRIPT CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D4DF;MATHEMATICAL BOLD SCRIPT CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D4E0;MATHEMATICAL BOLD SCRIPT CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D4E1;MATHEMATICAL BOLD SCRIPT CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D4E2;MATHEMATICAL BOLD SCRIPT CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D4E3;MATHEMATICAL BOLD SCRIPT CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D4E4;MATHEMATICAL BOLD SCRIPT CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D4E5;MATHEMATICAL BOLD SCRIPT CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D4E6;MATHEMATICAL BOLD SCRIPT CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D4E7;MATHEMATICAL BOLD SCRIPT CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D4E8;MATHEMATICAL BOLD SCRIPT CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D4E9;MATHEMATICAL BOLD SCRIPT CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D4EA;MATHEMATICAL BOLD SCRIPT SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D4EB;MATHEMATICAL BOLD SCRIPT SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D4EC;MATHEMATICAL BOLD SCRIPT SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D4ED;MATHEMATICAL BOLD SCRIPT SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D4EE;MATHEMATICAL BOLD SCRIPT SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D4EF;MATHEMATICAL BOLD SCRIPT SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D4F0;MATHEMATICAL BOLD SCRIPT SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D4F1;MATHEMATICAL BOLD SCRIPT SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D4F2;MATHEMATICAL BOLD SCRIPT SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D4F3;MATHEMATICAL BOLD SCRIPT SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D4F4;MATHEMATICAL BOLD SCRIPT SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D4F5;MATHEMATICAL BOLD SCRIPT SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D4F6;MATHEMATICAL BOLD SCRIPT SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D4F7;MATHEMATICAL BOLD SCRIPT SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D4F8;MATHEMATICAL BOLD SCRIPT SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D4F9;MATHEMATICAL BOLD SCRIPT SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D4FA;MATHEMATICAL BOLD SCRIPT SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D4FB;MATHEMATICAL BOLD SCRIPT SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D4FC;MATHEMATICAL BOLD SCRIPT SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D4FD;MATHEMATICAL BOLD SCRIPT SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D4FE;MATHEMATICAL BOLD SCRIPT SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D4FF;MATHEMATICAL BOLD SCRIPT SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D500;MATHEMATICAL BOLD SCRIPT SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D501;MATHEMATICAL BOLD SCRIPT SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D502;MATHEMATICAL BOLD SCRIPT SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D503;MATHEMATICAL BOLD SCRIPT SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D504;MATHEMATICAL FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D505;MATHEMATICAL FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D507;MATHEMATICAL FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D508;MATHEMATICAL FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D509;MATHEMATICAL FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D50A;MATHEMATICAL FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D50D;MATHEMATICAL FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D50E;MATHEMATICAL FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D50F;MATHEMATICAL FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D510;MATHEMATICAL FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D511;MATHEMATICAL FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D512;MATHEMATICAL FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D513;MATHEMATICAL FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D514;MATHEMATICAL FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D516;MATHEMATICAL FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D517;MATHEMATICAL FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D518;MATHEMATICAL FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D519;MATHEMATICAL FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D51A;MATHEMATICAL FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D51B;MATHEMATICAL FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D51C;MATHEMATICAL FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D51E;MATHEMATICAL FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D51F;MATHEMATICAL FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D520;MATHEMATICAL FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D521;MATHEMATICAL FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D522;MATHEMATICAL FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D523;MATHEMATICAL FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D524;MATHEMATICAL FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D525;MATHEMATICAL FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D526;MATHEMATICAL FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D527;MATHEMATICAL FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D528;MATHEMATICAL FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D529;MATHEMATICAL FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D52A;MATHEMATICAL FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D52B;MATHEMATICAL FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D52C;MATHEMATICAL FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D52D;MATHEMATICAL FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D52E;MATHEMATICAL FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D52F;MATHEMATICAL FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D530;MATHEMATICAL FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D531;MATHEMATICAL FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D532;MATHEMATICAL FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D533;MATHEMATICAL FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D534;MATHEMATICAL FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D535;MATHEMATICAL FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D536;MATHEMATICAL FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D537;MATHEMATICAL FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D538;MATHEMATICAL DOUBLE-STRUCK CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D539;MATHEMATICAL DOUBLE-STRUCK CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D53B;MATHEMATICAL DOUBLE-STRUCK CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D53C;MATHEMATICAL DOUBLE-STRUCK CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D53D;MATHEMATICAL DOUBLE-STRUCK CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D53E;MATHEMATICAL DOUBLE-STRUCK CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D540;MATHEMATICAL DOUBLE-STRUCK CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D541;MATHEMATICAL DOUBLE-STRUCK CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D542;MATHEMATICAL DOUBLE-STRUCK CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D543;MATHEMATICAL DOUBLE-STRUCK CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D544;MATHEMATICAL DOUBLE-STRUCK CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D546;MATHEMATICAL DOUBLE-STRUCK CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D54A;MATHEMATICAL DOUBLE-STRUCK CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D54B;MATHEMATICAL DOUBLE-STRUCK CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D54C;MATHEMATICAL DOUBLE-STRUCK CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D54D;MATHEMATICAL DOUBLE-STRUCK CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D54E;MATHEMATICAL DOUBLE-STRUCK CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D54F;MATHEMATICAL DOUBLE-STRUCK CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D550;MATHEMATICAL DOUBLE-STRUCK CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D552;MATHEMATICAL DOUBLE-STRUCK SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D553;MATHEMATICAL DOUBLE-STRUCK SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D554;MATHEMATICAL DOUBLE-STRUCK SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D555;MATHEMATICAL DOUBLE-STRUCK SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D556;MATHEMATICAL DOUBLE-STRUCK SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D557;MATHEMATICAL DOUBLE-STRUCK SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D558;MATHEMATICAL DOUBLE-STRUCK SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D559;MATHEMATICAL DOUBLE-STRUCK SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D55A;MATHEMATICAL DOUBLE-STRUCK SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D55B;MATHEMATICAL DOUBLE-STRUCK SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D55C;MATHEMATICAL DOUBLE-STRUCK SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D55D;MATHEMATICAL DOUBLE-STRUCK SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D55E;MATHEMATICAL DOUBLE-STRUCK SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D55F;MATHEMATICAL DOUBLE-STRUCK SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D560;MATHEMATICAL DOUBLE-STRUCK SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D561;MATHEMATICAL DOUBLE-STRUCK SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D562;MATHEMATICAL DOUBLE-STRUCK SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D563;MATHEMATICAL DOUBLE-STRUCK SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D564;MATHEMATICAL DOUBLE-STRUCK SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D565;MATHEMATICAL DOUBLE-STRUCK SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D566;MATHEMATICAL DOUBLE-STRUCK SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D567;MATHEMATICAL DOUBLE-STRUCK SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D568;MATHEMATICAL DOUBLE-STRUCK SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D569;MATHEMATICAL DOUBLE-STRUCK SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D56A;MATHEMATICAL DOUBLE-STRUCK SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D56B;MATHEMATICAL DOUBLE-STRUCK SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D56C;MATHEMATICAL BOLD FRAKTUR CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D56D;MATHEMATICAL BOLD FRAKTUR CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D56E;MATHEMATICAL BOLD FRAKTUR CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D56F;MATHEMATICAL BOLD FRAKTUR CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D570;MATHEMATICAL BOLD FRAKTUR CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D571;MATHEMATICAL BOLD FRAKTUR CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D572;MATHEMATICAL BOLD FRAKTUR CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D573;MATHEMATICAL BOLD FRAKTUR CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D574;MATHEMATICAL BOLD FRAKTUR CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D575;MATHEMATICAL BOLD FRAKTUR CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D576;MATHEMATICAL BOLD FRAKTUR CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D577;MATHEMATICAL BOLD FRAKTUR CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D578;MATHEMATICAL BOLD FRAKTUR CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D579;MATHEMATICAL BOLD FRAKTUR CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D57A;MATHEMATICAL BOLD FRAKTUR CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D57B;MATHEMATICAL BOLD FRAKTUR CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D57C;MATHEMATICAL BOLD FRAKTUR CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D57D;MATHEMATICAL BOLD FRAKTUR CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D57E;MATHEMATICAL BOLD FRAKTUR CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D57F;MATHEMATICAL BOLD FRAKTUR CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D580;MATHEMATICAL BOLD FRAKTUR CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D581;MATHEMATICAL BOLD FRAKTUR CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D582;MATHEMATICAL BOLD FRAKTUR CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D583;MATHEMATICAL BOLD FRAKTUR CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D584;MATHEMATICAL BOLD FRAKTUR CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D585;MATHEMATICAL BOLD FRAKTUR CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D586;MATHEMATICAL BOLD FRAKTUR SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D587;MATHEMATICAL BOLD FRAKTUR SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D588;MATHEMATICAL BOLD FRAKTUR SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D589;MATHEMATICAL BOLD FRAKTUR SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D58A;MATHEMATICAL BOLD FRAKTUR SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D58B;MATHEMATICAL BOLD FRAKTUR SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D58C;MATHEMATICAL BOLD FRAKTUR SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D58D;MATHEMATICAL BOLD FRAKTUR SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D58E;MATHEMATICAL BOLD FRAKTUR SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D58F;MATHEMATICAL BOLD FRAKTUR SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D590;MATHEMATICAL BOLD FRAKTUR SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D591;MATHEMATICAL BOLD FRAKTUR SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D592;MATHEMATICAL BOLD FRAKTUR SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D593;MATHEMATICAL BOLD FRAKTUR SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D594;MATHEMATICAL BOLD FRAKTUR SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D595;MATHEMATICAL BOLD FRAKTUR SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D596;MATHEMATICAL BOLD FRAKTUR SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D597;MATHEMATICAL BOLD FRAKTUR SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D598;MATHEMATICAL BOLD FRAKTUR SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D599;MATHEMATICAL BOLD FRAKTUR SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D59A;MATHEMATICAL BOLD FRAKTUR SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D59B;MATHEMATICAL BOLD FRAKTUR SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D59C;MATHEMATICAL BOLD FRAKTUR SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D59D;MATHEMATICAL BOLD FRAKTUR SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D59E;MATHEMATICAL BOLD FRAKTUR SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D59F;MATHEMATICAL BOLD FRAKTUR SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5A0;MATHEMATICAL SANS-SERIF CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5A1;MATHEMATICAL SANS-SERIF CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5A2;MATHEMATICAL SANS-SERIF CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5A3;MATHEMATICAL SANS-SERIF CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5A4;MATHEMATICAL SANS-SERIF CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5A5;MATHEMATICAL SANS-SERIF CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5A6;MATHEMATICAL SANS-SERIF CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5A7;MATHEMATICAL SANS-SERIF CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5A8;MATHEMATICAL SANS-SERIF CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5A9;MATHEMATICAL SANS-SERIF CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5AA;MATHEMATICAL SANS-SERIF CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5AB;MATHEMATICAL SANS-SERIF CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5AC;MATHEMATICAL SANS-SERIF CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5AD;MATHEMATICAL SANS-SERIF CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5AE;MATHEMATICAL SANS-SERIF CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5AF;MATHEMATICAL SANS-SERIF CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5B0;MATHEMATICAL SANS-SERIF CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5B1;MATHEMATICAL SANS-SERIF CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5B2;MATHEMATICAL SANS-SERIF CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5B3;MATHEMATICAL SANS-SERIF CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5B4;MATHEMATICAL SANS-SERIF CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5B5;MATHEMATICAL SANS-SERIF CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5B6;MATHEMATICAL SANS-SERIF CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5B7;MATHEMATICAL SANS-SERIF CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5B8;MATHEMATICAL SANS-SERIF CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5B9;MATHEMATICAL SANS-SERIF CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5BA;MATHEMATICAL SANS-SERIF SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5BB;MATHEMATICAL SANS-SERIF SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5BC;MATHEMATICAL SANS-SERIF SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5BD;MATHEMATICAL SANS-SERIF SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5BE;MATHEMATICAL SANS-SERIF SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5BF;MATHEMATICAL SANS-SERIF SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5C0;MATHEMATICAL SANS-SERIF SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5C1;MATHEMATICAL SANS-SERIF SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5C2;MATHEMATICAL SANS-SERIF SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5C3;MATHEMATICAL SANS-SERIF SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5C4;MATHEMATICAL SANS-SERIF SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5C5;MATHEMATICAL SANS-SERIF SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5C6;MATHEMATICAL SANS-SERIF SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5C7;MATHEMATICAL SANS-SERIF SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5C8;MATHEMATICAL SANS-SERIF SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5C9;MATHEMATICAL SANS-SERIF SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5CA;MATHEMATICAL SANS-SERIF SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5CB;MATHEMATICAL SANS-SERIF SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D5CC;MATHEMATICAL SANS-SERIF SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D5CD;MATHEMATICAL SANS-SERIF SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D5CE;MATHEMATICAL SANS-SERIF SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D5CF;MATHEMATICAL SANS-SERIF SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D5D0;MATHEMATICAL SANS-SERIF SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D5D1;MATHEMATICAL SANS-SERIF SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D5D2;MATHEMATICAL SANS-SERIF SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D5D3;MATHEMATICAL SANS-SERIF SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D5D4;MATHEMATICAL SANS-SERIF BOLD CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D5D5;MATHEMATICAL SANS-SERIF BOLD CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D5D6;MATHEMATICAL SANS-SERIF BOLD CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D5D7;MATHEMATICAL SANS-SERIF BOLD CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D5D8;MATHEMATICAL SANS-SERIF BOLD CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D5D9;MATHEMATICAL SANS-SERIF BOLD CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D5DA;MATHEMATICAL SANS-SERIF BOLD CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D5DB;MATHEMATICAL SANS-SERIF BOLD CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D5DC;MATHEMATICAL SANS-SERIF BOLD CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D5DD;MATHEMATICAL SANS-SERIF BOLD CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D5DE;MATHEMATICAL SANS-SERIF BOLD CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D5DF;MATHEMATICAL SANS-SERIF BOLD CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D5E0;MATHEMATICAL SANS-SERIF BOLD CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D5E1;MATHEMATICAL SANS-SERIF BOLD CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D5E2;MATHEMATICAL SANS-SERIF BOLD CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D5E3;MATHEMATICAL SANS-SERIF BOLD CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D5E4;MATHEMATICAL SANS-SERIF BOLD CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D5E5;MATHEMATICAL SANS-SERIF BOLD CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D5E6;MATHEMATICAL SANS-SERIF BOLD CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D5E7;MATHEMATICAL SANS-SERIF BOLD CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D5E8;MATHEMATICAL SANS-SERIF BOLD CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D5E9;MATHEMATICAL SANS-SERIF BOLD CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D5EA;MATHEMATICAL SANS-SERIF BOLD CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D5EB;MATHEMATICAL SANS-SERIF BOLD CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D5EC;MATHEMATICAL SANS-SERIF BOLD CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D5ED;MATHEMATICAL SANS-SERIF BOLD CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D5EE;MATHEMATICAL SANS-SERIF BOLD SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D5EF;MATHEMATICAL SANS-SERIF BOLD SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D5F0;MATHEMATICAL SANS-SERIF BOLD SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D5F1;MATHEMATICAL SANS-SERIF BOLD SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D5F2;MATHEMATICAL SANS-SERIF BOLD SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D5F3;MATHEMATICAL SANS-SERIF BOLD SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D5F4;MATHEMATICAL SANS-SERIF BOLD SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D5F5;MATHEMATICAL SANS-SERIF BOLD SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D5F6;MATHEMATICAL SANS-SERIF BOLD SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D5F7;MATHEMATICAL SANS-SERIF BOLD SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D5F8;MATHEMATICAL SANS-SERIF BOLD SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D5F9;MATHEMATICAL SANS-SERIF BOLD SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D5FA;MATHEMATICAL SANS-SERIF BOLD SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D5FB;MATHEMATICAL SANS-SERIF BOLD SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D5FC;MATHEMATICAL SANS-SERIF BOLD SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D5FD;MATHEMATICAL SANS-SERIF BOLD SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D5FE;MATHEMATICAL SANS-SERIF BOLD SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D5FF;MATHEMATICAL SANS-SERIF BOLD SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D600;MATHEMATICAL SANS-SERIF BOLD SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D601;MATHEMATICAL SANS-SERIF BOLD SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D602;MATHEMATICAL SANS-SERIF BOLD SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D603;MATHEMATICAL SANS-SERIF BOLD SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D604;MATHEMATICAL SANS-SERIF BOLD SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D605;MATHEMATICAL SANS-SERIF BOLD SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D606;MATHEMATICAL SANS-SERIF BOLD SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D607;MATHEMATICAL SANS-SERIF BOLD SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D608;MATHEMATICAL SANS-SERIF ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D609;MATHEMATICAL SANS-SERIF ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D60A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D60B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D60C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D60D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D60E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D60F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D610;MATHEMATICAL SANS-SERIF ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D611;MATHEMATICAL SANS-SERIF ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D612;MATHEMATICAL SANS-SERIF ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D613;MATHEMATICAL SANS-SERIF ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D614;MATHEMATICAL SANS-SERIF ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D615;MATHEMATICAL SANS-SERIF ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D616;MATHEMATICAL SANS-SERIF ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D617;MATHEMATICAL SANS-SERIF ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D618;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D619;MATHEMATICAL SANS-SERIF ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D61A;MATHEMATICAL SANS-SERIF ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D61B;MATHEMATICAL SANS-SERIF ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D61C;MATHEMATICAL SANS-SERIF ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D61D;MATHEMATICAL SANS-SERIF ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D61E;MATHEMATICAL SANS-SERIF ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D61F;MATHEMATICAL SANS-SERIF ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D620;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D621;MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D622;MATHEMATICAL SANS-SERIF ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D623;MATHEMATICAL SANS-SERIF ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D624;MATHEMATICAL SANS-SERIF ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D625;MATHEMATICAL SANS-SERIF ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D626;MATHEMATICAL SANS-SERIF ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D627;MATHEMATICAL SANS-SERIF ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D628;MATHEMATICAL SANS-SERIF ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D629;MATHEMATICAL SANS-SERIF ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D62A;MATHEMATICAL SANS-SERIF ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D62B;MATHEMATICAL SANS-SERIF ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D62C;MATHEMATICAL SANS-SERIF ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D62D;MATHEMATICAL SANS-SERIF ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D62E;MATHEMATICAL SANS-SERIF ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D62F;MATHEMATICAL SANS-SERIF ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D630;MATHEMATICAL SANS-SERIF ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D631;MATHEMATICAL SANS-SERIF ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D632;MATHEMATICAL SANS-SERIF ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D633;MATHEMATICAL SANS-SERIF ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D634;MATHEMATICAL SANS-SERIF ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D635;MATHEMATICAL SANS-SERIF ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D636;MATHEMATICAL SANS-SERIF ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D637;MATHEMATICAL SANS-SERIF ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D638;MATHEMATICAL SANS-SERIF ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D639;MATHEMATICAL SANS-SERIF ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D63A;MATHEMATICAL SANS-SERIF ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D63B;MATHEMATICAL SANS-SERIF ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D63C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D63D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D63E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D63F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D640;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D641;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D642;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D643;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D644;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D645;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D646;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D647;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D648;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D649;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D64A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D64B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D64C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D64D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D64E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D64F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D650;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D651;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D652;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D653;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D654;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D655;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D656;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D657;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D658;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D659;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D65A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D65B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D65C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D65D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D65E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D65F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D660;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D661;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D662;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D663;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D664;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D665;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D666;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D667;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D668;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D669;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D66A;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D66B;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D66C;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D66D;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D66E;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D66F;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D670;MATHEMATICAL MONOSPACE CAPITAL A;Lu;0;L;<font> 0041;;;;N;;;;;
+1D671;MATHEMATICAL MONOSPACE CAPITAL B;Lu;0;L;<font> 0042;;;;N;;;;;
+1D672;MATHEMATICAL MONOSPACE CAPITAL C;Lu;0;L;<font> 0043;;;;N;;;;;
+1D673;MATHEMATICAL MONOSPACE CAPITAL D;Lu;0;L;<font> 0044;;;;N;;;;;
+1D674;MATHEMATICAL MONOSPACE CAPITAL E;Lu;0;L;<font> 0045;;;;N;;;;;
+1D675;MATHEMATICAL MONOSPACE CAPITAL F;Lu;0;L;<font> 0046;;;;N;;;;;
+1D676;MATHEMATICAL MONOSPACE CAPITAL G;Lu;0;L;<font> 0047;;;;N;;;;;
+1D677;MATHEMATICAL MONOSPACE CAPITAL H;Lu;0;L;<font> 0048;;;;N;;;;;
+1D678;MATHEMATICAL MONOSPACE CAPITAL I;Lu;0;L;<font> 0049;;;;N;;;;;
+1D679;MATHEMATICAL MONOSPACE CAPITAL J;Lu;0;L;<font> 004A;;;;N;;;;;
+1D67A;MATHEMATICAL MONOSPACE CAPITAL K;Lu;0;L;<font> 004B;;;;N;;;;;
+1D67B;MATHEMATICAL MONOSPACE CAPITAL L;Lu;0;L;<font> 004C;;;;N;;;;;
+1D67C;MATHEMATICAL MONOSPACE CAPITAL M;Lu;0;L;<font> 004D;;;;N;;;;;
+1D67D;MATHEMATICAL MONOSPACE CAPITAL N;Lu;0;L;<font> 004E;;;;N;;;;;
+1D67E;MATHEMATICAL MONOSPACE CAPITAL O;Lu;0;L;<font> 004F;;;;N;;;;;
+1D67F;MATHEMATICAL MONOSPACE CAPITAL P;Lu;0;L;<font> 0050;;;;N;;;;;
+1D680;MATHEMATICAL MONOSPACE CAPITAL Q;Lu;0;L;<font> 0051;;;;N;;;;;
+1D681;MATHEMATICAL MONOSPACE CAPITAL R;Lu;0;L;<font> 0052;;;;N;;;;;
+1D682;MATHEMATICAL MONOSPACE CAPITAL S;Lu;0;L;<font> 0053;;;;N;;;;;
+1D683;MATHEMATICAL MONOSPACE CAPITAL T;Lu;0;L;<font> 0054;;;;N;;;;;
+1D684;MATHEMATICAL MONOSPACE CAPITAL U;Lu;0;L;<font> 0055;;;;N;;;;;
+1D685;MATHEMATICAL MONOSPACE CAPITAL V;Lu;0;L;<font> 0056;;;;N;;;;;
+1D686;MATHEMATICAL MONOSPACE CAPITAL W;Lu;0;L;<font> 0057;;;;N;;;;;
+1D687;MATHEMATICAL MONOSPACE CAPITAL X;Lu;0;L;<font> 0058;;;;N;;;;;
+1D688;MATHEMATICAL MONOSPACE CAPITAL Y;Lu;0;L;<font> 0059;;;;N;;;;;
+1D689;MATHEMATICAL MONOSPACE CAPITAL Z;Lu;0;L;<font> 005A;;;;N;;;;;
+1D68A;MATHEMATICAL MONOSPACE SMALL A;Ll;0;L;<font> 0061;;;;N;;;;;
+1D68B;MATHEMATICAL MONOSPACE SMALL B;Ll;0;L;<font> 0062;;;;N;;;;;
+1D68C;MATHEMATICAL MONOSPACE SMALL C;Ll;0;L;<font> 0063;;;;N;;;;;
+1D68D;MATHEMATICAL MONOSPACE SMALL D;Ll;0;L;<font> 0064;;;;N;;;;;
+1D68E;MATHEMATICAL MONOSPACE SMALL E;Ll;0;L;<font> 0065;;;;N;;;;;
+1D68F;MATHEMATICAL MONOSPACE SMALL F;Ll;0;L;<font> 0066;;;;N;;;;;
+1D690;MATHEMATICAL MONOSPACE SMALL G;Ll;0;L;<font> 0067;;;;N;;;;;
+1D691;MATHEMATICAL MONOSPACE SMALL H;Ll;0;L;<font> 0068;;;;N;;;;;
+1D692;MATHEMATICAL MONOSPACE SMALL I;Ll;0;L;<font> 0069;;;;N;;;;;
+1D693;MATHEMATICAL MONOSPACE SMALL J;Ll;0;L;<font> 006A;;;;N;;;;;
+1D694;MATHEMATICAL MONOSPACE SMALL K;Ll;0;L;<font> 006B;;;;N;;;;;
+1D695;MATHEMATICAL MONOSPACE SMALL L;Ll;0;L;<font> 006C;;;;N;;;;;
+1D696;MATHEMATICAL MONOSPACE SMALL M;Ll;0;L;<font> 006D;;;;N;;;;;
+1D697;MATHEMATICAL MONOSPACE SMALL N;Ll;0;L;<font> 006E;;;;N;;;;;
+1D698;MATHEMATICAL MONOSPACE SMALL O;Ll;0;L;<font> 006F;;;;N;;;;;
+1D699;MATHEMATICAL MONOSPACE SMALL P;Ll;0;L;<font> 0070;;;;N;;;;;
+1D69A;MATHEMATICAL MONOSPACE SMALL Q;Ll;0;L;<font> 0071;;;;N;;;;;
+1D69B;MATHEMATICAL MONOSPACE SMALL R;Ll;0;L;<font> 0072;;;;N;;;;;
+1D69C;MATHEMATICAL MONOSPACE SMALL S;Ll;0;L;<font> 0073;;;;N;;;;;
+1D69D;MATHEMATICAL MONOSPACE SMALL T;Ll;0;L;<font> 0074;;;;N;;;;;
+1D69E;MATHEMATICAL MONOSPACE SMALL U;Ll;0;L;<font> 0075;;;;N;;;;;
+1D69F;MATHEMATICAL MONOSPACE SMALL V;Ll;0;L;<font> 0076;;;;N;;;;;
+1D6A0;MATHEMATICAL MONOSPACE SMALL W;Ll;0;L;<font> 0077;;;;N;;;;;
+1D6A1;MATHEMATICAL MONOSPACE SMALL X;Ll;0;L;<font> 0078;;;;N;;;;;
+1D6A2;MATHEMATICAL MONOSPACE SMALL Y;Ll;0;L;<font> 0079;;;;N;;;;;
+1D6A3;MATHEMATICAL MONOSPACE SMALL Z;Ll;0;L;<font> 007A;;;;N;;;;;
+1D6A4;MATHEMATICAL ITALIC SMALL DOTLESS I;Ll;0;L;<font> 0131;;;;N;;;;;
+1D6A5;MATHEMATICAL ITALIC SMALL DOTLESS J;Ll;0;L;<font> 0237;;;;N;;;;;
+1D6A8;MATHEMATICAL BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6A9;MATHEMATICAL BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6AA;MATHEMATICAL BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6AB;MATHEMATICAL BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6AC;MATHEMATICAL BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6AD;MATHEMATICAL BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6AE;MATHEMATICAL BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6AF;MATHEMATICAL BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6B0;MATHEMATICAL BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6B1;MATHEMATICAL BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6B2;MATHEMATICAL BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6B3;MATHEMATICAL BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6B4;MATHEMATICAL BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6B5;MATHEMATICAL BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6B6;MATHEMATICAL BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6B7;MATHEMATICAL BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6B8;MATHEMATICAL BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6B9;MATHEMATICAL BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6BA;MATHEMATICAL BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6BB;MATHEMATICAL BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6BC;MATHEMATICAL BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6BD;MATHEMATICAL BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6BE;MATHEMATICAL BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6BF;MATHEMATICAL BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6C0;MATHEMATICAL BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6C1;MATHEMATICAL BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6C2;MATHEMATICAL BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6C3;MATHEMATICAL BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6C4;MATHEMATICAL BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6C5;MATHEMATICAL BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D6C6;MATHEMATICAL BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D6C7;MATHEMATICAL BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D6C8;MATHEMATICAL BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D6C9;MATHEMATICAL BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D6CA;MATHEMATICAL BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D6CB;MATHEMATICAL BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D6CC;MATHEMATICAL BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D6CD;MATHEMATICAL BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D6CE;MATHEMATICAL BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D6CF;MATHEMATICAL BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D6D0;MATHEMATICAL BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D6D1;MATHEMATICAL BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D6D2;MATHEMATICAL BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D6D3;MATHEMATICAL BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D6D4;MATHEMATICAL BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D6D5;MATHEMATICAL BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D6D6;MATHEMATICAL BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D6D7;MATHEMATICAL BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D6D8;MATHEMATICAL BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D6D9;MATHEMATICAL BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D6DA;MATHEMATICAL BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D6DB;MATHEMATICAL BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
+1D6DC;MATHEMATICAL BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D6DD;MATHEMATICAL BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D6DE;MATHEMATICAL BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D6DF;MATHEMATICAL BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D6E0;MATHEMATICAL BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D6E1;MATHEMATICAL BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D6E2;MATHEMATICAL ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D6E3;MATHEMATICAL ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D6E4;MATHEMATICAL ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D6E5;MATHEMATICAL ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D6E6;MATHEMATICAL ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D6E7;MATHEMATICAL ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D6E8;MATHEMATICAL ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D6E9;MATHEMATICAL ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D6EA;MATHEMATICAL ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D6EB;MATHEMATICAL ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D6EC;MATHEMATICAL ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D6ED;MATHEMATICAL ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D6EE;MATHEMATICAL ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D6EF;MATHEMATICAL ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D6F0;MATHEMATICAL ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D6F1;MATHEMATICAL ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D6F2;MATHEMATICAL ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D6F3;MATHEMATICAL ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D6F4;MATHEMATICAL ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D6F5;MATHEMATICAL ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D6F6;MATHEMATICAL ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D6F7;MATHEMATICAL ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D6F8;MATHEMATICAL ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D6F9;MATHEMATICAL ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D6FA;MATHEMATICAL ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D6FB;MATHEMATICAL ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D6FC;MATHEMATICAL ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D6FD;MATHEMATICAL ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D6FE;MATHEMATICAL ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D6FF;MATHEMATICAL ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D700;MATHEMATICAL ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D701;MATHEMATICAL ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D702;MATHEMATICAL ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D703;MATHEMATICAL ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D704;MATHEMATICAL ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D705;MATHEMATICAL ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D706;MATHEMATICAL ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D707;MATHEMATICAL ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D708;MATHEMATICAL ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D709;MATHEMATICAL ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D70A;MATHEMATICAL ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D70B;MATHEMATICAL ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D70C;MATHEMATICAL ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D70D;MATHEMATICAL ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D70E;MATHEMATICAL ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D70F;MATHEMATICAL ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D710;MATHEMATICAL ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D711;MATHEMATICAL ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D712;MATHEMATICAL ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D713;MATHEMATICAL ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D714;MATHEMATICAL ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D715;MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
+1D716;MATHEMATICAL ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D717;MATHEMATICAL ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D718;MATHEMATICAL ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D719;MATHEMATICAL ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D71A;MATHEMATICAL ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D71B;MATHEMATICAL ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D71C;MATHEMATICAL BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D71D;MATHEMATICAL BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D71E;MATHEMATICAL BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D71F;MATHEMATICAL BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D720;MATHEMATICAL BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D721;MATHEMATICAL BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D722;MATHEMATICAL BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D723;MATHEMATICAL BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D724;MATHEMATICAL BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D725;MATHEMATICAL BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D726;MATHEMATICAL BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D727;MATHEMATICAL BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D728;MATHEMATICAL BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D729;MATHEMATICAL BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D72A;MATHEMATICAL BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D72B;MATHEMATICAL BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D72C;MATHEMATICAL BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D72D;MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D72E;MATHEMATICAL BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D72F;MATHEMATICAL BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D730;MATHEMATICAL BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D731;MATHEMATICAL BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D732;MATHEMATICAL BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D733;MATHEMATICAL BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D734;MATHEMATICAL BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D735;MATHEMATICAL BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D736;MATHEMATICAL BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D737;MATHEMATICAL BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D738;MATHEMATICAL BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D739;MATHEMATICAL BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D73A;MATHEMATICAL BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D73B;MATHEMATICAL BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D73C;MATHEMATICAL BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D73D;MATHEMATICAL BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D73E;MATHEMATICAL BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D73F;MATHEMATICAL BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D740;MATHEMATICAL BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D741;MATHEMATICAL BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D742;MATHEMATICAL BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D743;MATHEMATICAL BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D744;MATHEMATICAL BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D745;MATHEMATICAL BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D746;MATHEMATICAL BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D747;MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D748;MATHEMATICAL BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D749;MATHEMATICAL BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D74A;MATHEMATICAL BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D74B;MATHEMATICAL BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D74C;MATHEMATICAL BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D74D;MATHEMATICAL BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D74E;MATHEMATICAL BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D74F;MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
+1D750;MATHEMATICAL BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D751;MATHEMATICAL BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D752;MATHEMATICAL BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D753;MATHEMATICAL BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D754;MATHEMATICAL BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D755;MATHEMATICAL BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D756;MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D757;MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D758;MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D759;MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D75A;MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D75B;MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D75C;MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D75D;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D75E;MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D75F;MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D760;MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D761;MATHEMATICAL SANS-SERIF BOLD CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D762;MATHEMATICAL SANS-SERIF BOLD CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D763;MATHEMATICAL SANS-SERIF BOLD CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D764;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D765;MATHEMATICAL SANS-SERIF BOLD CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D766;MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D767;MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D768;MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D769;MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D76A;MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D76B;MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D76C;MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D76D;MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D76E;MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D76F;MATHEMATICAL SANS-SERIF BOLD NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D770;MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D771;MATHEMATICAL SANS-SERIF BOLD SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D772;MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D773;MATHEMATICAL SANS-SERIF BOLD SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D774;MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D775;MATHEMATICAL SANS-SERIF BOLD SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D776;MATHEMATICAL SANS-SERIF BOLD SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D777;MATHEMATICAL SANS-SERIF BOLD SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D778;MATHEMATICAL SANS-SERIF BOLD SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D779;MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D77A;MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D77B;MATHEMATICAL SANS-SERIF BOLD SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D77C;MATHEMATICAL SANS-SERIF BOLD SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D77D;MATHEMATICAL SANS-SERIF BOLD SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D77E;MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D77F;MATHEMATICAL SANS-SERIF BOLD SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D780;MATHEMATICAL SANS-SERIF BOLD SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D781;MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D782;MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D783;MATHEMATICAL SANS-SERIF BOLD SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D784;MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D785;MATHEMATICAL SANS-SERIF BOLD SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D786;MATHEMATICAL SANS-SERIF BOLD SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D787;MATHEMATICAL SANS-SERIF BOLD SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D788;MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D789;MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
+1D78A;MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D78B;MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D78C;MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D78D;MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D78E;MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D78F;MATHEMATICAL SANS-SERIF BOLD PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D790;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA;Lu;0;L;<font> 0391;;;;N;;;;;
+1D791;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA;Lu;0;L;<font> 0392;;;;N;;;;;
+1D792;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA;Lu;0;L;<font> 0393;;;;N;;;;;
+1D793;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA;Lu;0;L;<font> 0394;;;;N;;;;;
+1D794;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON;Lu;0;L;<font> 0395;;;;N;;;;;
+1D795;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA;Lu;0;L;<font> 0396;;;;N;;;;;
+1D796;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA;Lu;0;L;<font> 0397;;;;N;;;;;
+1D797;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA;Lu;0;L;<font> 0398;;;;N;;;;;
+1D798;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA;Lu;0;L;<font> 0399;;;;N;;;;;
+1D799;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA;Lu;0;L;<font> 039A;;;;N;;;;;
+1D79A;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA;Lu;0;L;<font> 039B;;;;N;;;;;
+1D79B;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU;Lu;0;L;<font> 039C;;;;N;;;;;
+1D79C;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU;Lu;0;L;<font> 039D;;;;N;;;;;
+1D79D;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI;Lu;0;L;<font> 039E;;;;N;;;;;
+1D79E;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON;Lu;0;L;<font> 039F;;;;N;;;;;
+1D79F;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI;Lu;0;L;<font> 03A0;;;;N;;;;;
+1D7A0;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO;Lu;0;L;<font> 03A1;;;;N;;;;;
+1D7A1;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL;Lu;0;L;<font> 03F4;;;;N;;;;;
+1D7A2;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA;Lu;0;L;<font> 03A3;;;;N;;;;;
+1D7A3;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU;Lu;0;L;<font> 03A4;;;;N;;;;;
+1D7A4;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON;Lu;0;L;<font> 03A5;;;;N;;;;;
+1D7A5;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI;Lu;0;L;<font> 03A6;;;;N;;;;;
+1D7A6;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI;Lu;0;L;<font> 03A7;;;;N;;;;;
+1D7A7;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI;Lu;0;L;<font> 03A8;;;;N;;;;;
+1D7A8;MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA;Lu;0;L;<font> 03A9;;;;N;;;;;
+1D7A9;MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA;Sm;0;L;<font> 2207;;;;N;;;;;
+1D7AA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA;Ll;0;L;<font> 03B1;;;;N;;;;;
+1D7AB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA;Ll;0;L;<font> 03B2;;;;N;;;;;
+1D7AC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA;Ll;0;L;<font> 03B3;;;;N;;;;;
+1D7AD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA;Ll;0;L;<font> 03B4;;;;N;;;;;
+1D7AE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON;Ll;0;L;<font> 03B5;;;;N;;;;;
+1D7AF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA;Ll;0;L;<font> 03B6;;;;N;;;;;
+1D7B0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA;Ll;0;L;<font> 03B7;;;;N;;;;;
+1D7B1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA;Ll;0;L;<font> 03B8;;;;N;;;;;
+1D7B2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA;Ll;0;L;<font> 03B9;;;;N;;;;;
+1D7B3;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA;Ll;0;L;<font> 03BA;;;;N;;;;;
+1D7B4;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA;Ll;0;L;<font> 03BB;;;;N;;;;;
+1D7B5;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU;Ll;0;L;<font> 03BC;;;;N;;;;;
+1D7B6;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU;Ll;0;L;<font> 03BD;;;;N;;;;;
+1D7B7;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI;Ll;0;L;<font> 03BE;;;;N;;;;;
+1D7B8;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON;Ll;0;L;<font> 03BF;;;;N;;;;;
+1D7B9;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI;Ll;0;L;<font> 03C0;;;;N;;;;;
+1D7BA;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO;Ll;0;L;<font> 03C1;;;;N;;;;;
+1D7BB;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA;Ll;0;L;<font> 03C2;;;;N;;;;;
+1D7BC;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA;Ll;0;L;<font> 03C3;;;;N;;;;;
+1D7BD;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU;Ll;0;L;<font> 03C4;;;;N;;;;;
+1D7BE;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON;Ll;0;L;<font> 03C5;;;;N;;;;;
+1D7BF;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI;Ll;0;L;<font> 03C6;;;;N;;;;;
+1D7C0;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI;Ll;0;L;<font> 03C7;;;;N;;;;;
+1D7C1;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI;Ll;0;L;<font> 03C8;;;;N;;;;;
+1D7C2;MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA;Ll;0;L;<font> 03C9;;;;N;;;;;
+1D7C3;MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL;Sm;0;ON;<font> 2202;;;;Y;;;;;
+1D7C4;MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL;Ll;0;L;<font> 03F5;;;;N;;;;;
+1D7C5;MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL;Ll;0;L;<font> 03D1;;;;N;;;;;
+1D7C6;MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL;Ll;0;L;<font> 03F0;;;;N;;;;;
+1D7C7;MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL;Ll;0;L;<font> 03D5;;;;N;;;;;
+1D7C8;MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL;Ll;0;L;<font> 03F1;;;;N;;;;;
+1D7C9;MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL;Ll;0;L;<font> 03D6;;;;N;;;;;
+1D7CA;MATHEMATICAL BOLD CAPITAL DIGAMMA;Lu;0;L;<font> 03DC;;;;N;;;;;
+1D7CB;MATHEMATICAL BOLD SMALL DIGAMMA;Ll;0;L;<font> 03DD;;;;N;;;;;
+1D7CE;MATHEMATICAL BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7CF;MATHEMATICAL BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7D0;MATHEMATICAL BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7D1;MATHEMATICAL BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7D2;MATHEMATICAL BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7D3;MATHEMATICAL BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7D4;MATHEMATICAL BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7D5;MATHEMATICAL BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7D6;MATHEMATICAL BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7D7;MATHEMATICAL BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7D8;MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7D9;MATHEMATICAL DOUBLE-STRUCK DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7DA;MATHEMATICAL DOUBLE-STRUCK DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7DB;MATHEMATICAL DOUBLE-STRUCK DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7DC;MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7DD;MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7DE;MATHEMATICAL DOUBLE-STRUCK DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7DF;MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7E0;MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7E1;MATHEMATICAL DOUBLE-STRUCK DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7E2;MATHEMATICAL SANS-SERIF DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7E3;MATHEMATICAL SANS-SERIF DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7E4;MATHEMATICAL SANS-SERIF DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7E5;MATHEMATICAL SANS-SERIF DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7E6;MATHEMATICAL SANS-SERIF DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7E7;MATHEMATICAL SANS-SERIF DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7E8;MATHEMATICAL SANS-SERIF DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7E9;MATHEMATICAL SANS-SERIF DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7EA;MATHEMATICAL SANS-SERIF DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7EB;MATHEMATICAL SANS-SERIF DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7EC;MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7ED;MATHEMATICAL SANS-SERIF BOLD DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7EE;MATHEMATICAL SANS-SERIF BOLD DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7EF;MATHEMATICAL SANS-SERIF BOLD DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7F0;MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7F1;MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7F2;MATHEMATICAL SANS-SERIF BOLD DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7F3;MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7F4;MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7F5;MATHEMATICAL SANS-SERIF BOLD DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1D7F6;MATHEMATICAL MONOSPACE DIGIT ZERO;Nd;0;EN;<font> 0030;0;0;0;N;;;;;
+1D7F7;MATHEMATICAL MONOSPACE DIGIT ONE;Nd;0;EN;<font> 0031;1;1;1;N;;;;;
+1D7F8;MATHEMATICAL MONOSPACE DIGIT TWO;Nd;0;EN;<font> 0032;2;2;2;N;;;;;
+1D7F9;MATHEMATICAL MONOSPACE DIGIT THREE;Nd;0;EN;<font> 0033;3;3;3;N;;;;;
+1D7FA;MATHEMATICAL MONOSPACE DIGIT FOUR;Nd;0;EN;<font> 0034;4;4;4;N;;;;;
+1D7FB;MATHEMATICAL MONOSPACE DIGIT FIVE;Nd;0;EN;<font> 0035;5;5;5;N;;;;;
+1D7FC;MATHEMATICAL MONOSPACE DIGIT SIX;Nd;0;EN;<font> 0036;6;6;6;N;;;;;
+1D7FD;MATHEMATICAL MONOSPACE DIGIT SEVEN;Nd;0;EN;<font> 0037;7;7;7;N;;;;;
+1D7FE;MATHEMATICAL MONOSPACE DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
+1D7FF;MATHEMATICAL MONOSPACE DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
+1F000;MAHJONG TILE EAST WIND;So;0;ON;;;;;N;;;;;
+1F001;MAHJONG TILE SOUTH WIND;So;0;ON;;;;;N;;;;;
+1F002;MAHJONG TILE WEST WIND;So;0;ON;;;;;N;;;;;
+1F003;MAHJONG TILE NORTH WIND;So;0;ON;;;;;N;;;;;
+1F004;MAHJONG TILE RED DRAGON;So;0;ON;;;;;N;;;;;
+1F005;MAHJONG TILE GREEN DRAGON;So;0;ON;;;;;N;;;;;
+1F006;MAHJONG TILE WHITE DRAGON;So;0;ON;;;;;N;;;;;
+1F007;MAHJONG TILE ONE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F008;MAHJONG TILE TWO OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F009;MAHJONG TILE THREE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00A;MAHJONG TILE FOUR OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00B;MAHJONG TILE FIVE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00C;MAHJONG TILE SIX OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00D;MAHJONG TILE SEVEN OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00E;MAHJONG TILE EIGHT OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F00F;MAHJONG TILE NINE OF CHARACTERS;So;0;ON;;;;;N;;;;;
+1F010;MAHJONG TILE ONE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F011;MAHJONG TILE TWO OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F012;MAHJONG TILE THREE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F013;MAHJONG TILE FOUR OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F014;MAHJONG TILE FIVE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F015;MAHJONG TILE SIX OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F016;MAHJONG TILE SEVEN OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F017;MAHJONG TILE EIGHT OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F018;MAHJONG TILE NINE OF BAMBOOS;So;0;ON;;;;;N;;;;;
+1F019;MAHJONG TILE ONE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01A;MAHJONG TILE TWO OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01B;MAHJONG TILE THREE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01C;MAHJONG TILE FOUR OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01D;MAHJONG TILE FIVE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01E;MAHJONG TILE SIX OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F01F;MAHJONG TILE SEVEN OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F020;MAHJONG TILE EIGHT OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F021;MAHJONG TILE NINE OF CIRCLES;So;0;ON;;;;;N;;;;;
+1F022;MAHJONG TILE PLUM;So;0;ON;;;;;N;;;;;
+1F023;MAHJONG TILE ORCHID;So;0;ON;;;;;N;;;;;
+1F024;MAHJONG TILE BAMBOO;So;0;ON;;;;;N;;;;;
+1F025;MAHJONG TILE CHRYSANTHEMUM;So;0;ON;;;;;N;;;;;
+1F026;MAHJONG TILE SPRING;So;0;ON;;;;;N;;;;;
+1F027;MAHJONG TILE SUMMER;So;0;ON;;;;;N;;;;;
+1F028;MAHJONG TILE AUTUMN;So;0;ON;;;;;N;;;;;
+1F029;MAHJONG TILE WINTER;So;0;ON;;;;;N;;;;;
+1F02A;MAHJONG TILE JOKER;So;0;ON;;;;;N;;;;;
+1F02B;MAHJONG TILE BACK;So;0;ON;;;;;N;;;;;
+1F030;DOMINO TILE HORIZONTAL BACK;So;0;ON;;;;;N;;;;;
+1F031;DOMINO TILE HORIZONTAL-00-00;So;0;ON;;;;;N;;;;;
+1F032;DOMINO TILE HORIZONTAL-00-01;So;0;ON;;;;;N;;;;;
+1F033;DOMINO TILE HORIZONTAL-00-02;So;0;ON;;;;;N;;;;;
+1F034;DOMINO TILE HORIZONTAL-00-03;So;0;ON;;;;;N;;;;;
+1F035;DOMINO TILE HORIZONTAL-00-04;So;0;ON;;;;;N;;;;;
+1F036;DOMINO TILE HORIZONTAL-00-05;So;0;ON;;;;;N;;;;;
+1F037;DOMINO TILE HORIZONTAL-00-06;So;0;ON;;;;;N;;;;;
+1F038;DOMINO TILE HORIZONTAL-01-00;So;0;ON;;;;;N;;;;;
+1F039;DOMINO TILE HORIZONTAL-01-01;So;0;ON;;;;;N;;;;;
+1F03A;DOMINO TILE HORIZONTAL-01-02;So;0;ON;;;;;N;;;;;
+1F03B;DOMINO TILE HORIZONTAL-01-03;So;0;ON;;;;;N;;;;;
+1F03C;DOMINO TILE HORIZONTAL-01-04;So;0;ON;;;;;N;;;;;
+1F03D;DOMINO TILE HORIZONTAL-01-05;So;0;ON;;;;;N;;;;;
+1F03E;DOMINO TILE HORIZONTAL-01-06;So;0;ON;;;;;N;;;;;
+1F03F;DOMINO TILE HORIZONTAL-02-00;So;0;ON;;;;;N;;;;;
+1F040;DOMINO TILE HORIZONTAL-02-01;So;0;ON;;;;;N;;;;;
+1F041;DOMINO TILE HORIZONTAL-02-02;So;0;ON;;;;;N;;;;;
+1F042;DOMINO TILE HORIZONTAL-02-03;So;0;ON;;;;;N;;;;;
+1F043;DOMINO TILE HORIZONTAL-02-04;So;0;ON;;;;;N;;;;;
+1F044;DOMINO TILE HORIZONTAL-02-05;So;0;ON;;;;;N;;;;;
+1F045;DOMINO TILE HORIZONTAL-02-06;So;0;ON;;;;;N;;;;;
+1F046;DOMINO TILE HORIZONTAL-03-00;So;0;ON;;;;;N;;;;;
+1F047;DOMINO TILE HORIZONTAL-03-01;So;0;ON;;;;;N;;;;;
+1F048;DOMINO TILE HORIZONTAL-03-02;So;0;ON;;;;;N;;;;;
+1F049;DOMINO TILE HORIZONTAL-03-03;So;0;ON;;;;;N;;;;;
+1F04A;DOMINO TILE HORIZONTAL-03-04;So;0;ON;;;;;N;;;;;
+1F04B;DOMINO TILE HORIZONTAL-03-05;So;0;ON;;;;;N;;;;;
+1F04C;DOMINO TILE HORIZONTAL-03-06;So;0;ON;;;;;N;;;;;
+1F04D;DOMINO TILE HORIZONTAL-04-00;So;0;ON;;;;;N;;;;;
+1F04E;DOMINO TILE HORIZONTAL-04-01;So;0;ON;;;;;N;;;;;
+1F04F;DOMINO TILE HORIZONTAL-04-02;So;0;ON;;;;;N;;;;;
+1F050;DOMINO TILE HORIZONTAL-04-03;So;0;ON;;;;;N;;;;;
+1F051;DOMINO TILE HORIZONTAL-04-04;So;0;ON;;;;;N;;;;;
+1F052;DOMINO TILE HORIZONTAL-04-05;So;0;ON;;;;;N;;;;;
+1F053;DOMINO TILE HORIZONTAL-04-06;So;0;ON;;;;;N;;;;;
+1F054;DOMINO TILE HORIZONTAL-05-00;So;0;ON;;;;;N;;;;;
+1F055;DOMINO TILE HORIZONTAL-05-01;So;0;ON;;;;;N;;;;;
+1F056;DOMINO TILE HORIZONTAL-05-02;So;0;ON;;;;;N;;;;;
+1F057;DOMINO TILE HORIZONTAL-05-03;So;0;ON;;;;;N;;;;;
+1F058;DOMINO TILE HORIZONTAL-05-04;So;0;ON;;;;;N;;;;;
+1F059;DOMINO TILE HORIZONTAL-05-05;So;0;ON;;;;;N;;;;;
+1F05A;DOMINO TILE HORIZONTAL-05-06;So;0;ON;;;;;N;;;;;
+1F05B;DOMINO TILE HORIZONTAL-06-00;So;0;ON;;;;;N;;;;;
+1F05C;DOMINO TILE HORIZONTAL-06-01;So;0;ON;;;;;N;;;;;
+1F05D;DOMINO TILE HORIZONTAL-06-02;So;0;ON;;;;;N;;;;;
+1F05E;DOMINO TILE HORIZONTAL-06-03;So;0;ON;;;;;N;;;;;
+1F05F;DOMINO TILE HORIZONTAL-06-04;So;0;ON;;;;;N;;;;;
+1F060;DOMINO TILE HORIZONTAL-06-05;So;0;ON;;;;;N;;;;;
+1F061;DOMINO TILE HORIZONTAL-06-06;So;0;ON;;;;;N;;;;;
+1F062;DOMINO TILE VERTICAL BACK;So;0;ON;;;;;N;;;;;
+1F063;DOMINO TILE VERTICAL-00-00;So;0;ON;;;;;N;;;;;
+1F064;DOMINO TILE VERTICAL-00-01;So;0;ON;;;;;N;;;;;
+1F065;DOMINO TILE VERTICAL-00-02;So;0;ON;;;;;N;;;;;
+1F066;DOMINO TILE VERTICAL-00-03;So;0;ON;;;;;N;;;;;
+1F067;DOMINO TILE VERTICAL-00-04;So;0;ON;;;;;N;;;;;
+1F068;DOMINO TILE VERTICAL-00-05;So;0;ON;;;;;N;;;;;
+1F069;DOMINO TILE VERTICAL-00-06;So;0;ON;;;;;N;;;;;
+1F06A;DOMINO TILE VERTICAL-01-00;So;0;ON;;;;;N;;;;;
+1F06B;DOMINO TILE VERTICAL-01-01;So;0;ON;;;;;N;;;;;
+1F06C;DOMINO TILE VERTICAL-01-02;So;0;ON;;;;;N;;;;;
+1F06D;DOMINO TILE VERTICAL-01-03;So;0;ON;;;;;N;;;;;
+1F06E;DOMINO TILE VERTICAL-01-04;So;0;ON;;;;;N;;;;;
+1F06F;DOMINO TILE VERTICAL-01-05;So;0;ON;;;;;N;;;;;
+1F070;DOMINO TILE VERTICAL-01-06;So;0;ON;;;;;N;;;;;
+1F071;DOMINO TILE VERTICAL-02-00;So;0;ON;;;;;N;;;;;
+1F072;DOMINO TILE VERTICAL-02-01;So;0;ON;;;;;N;;;;;
+1F073;DOMINO TILE VERTICAL-02-02;So;0;ON;;;;;N;;;;;
+1F074;DOMINO TILE VERTICAL-02-03;So;0;ON;;;;;N;;;;;
+1F075;DOMINO TILE VERTICAL-02-04;So;0;ON;;;;;N;;;;;
+1F076;DOMINO TILE VERTICAL-02-05;So;0;ON;;;;;N;;;;;
+1F077;DOMINO TILE VERTICAL-02-06;So;0;ON;;;;;N;;;;;
+1F078;DOMINO TILE VERTICAL-03-00;So;0;ON;;;;;N;;;;;
+1F079;DOMINO TILE VERTICAL-03-01;So;0;ON;;;;;N;;;;;
+1F07A;DOMINO TILE VERTICAL-03-02;So;0;ON;;;;;N;;;;;
+1F07B;DOMINO TILE VERTICAL-03-03;So;0;ON;;;;;N;;;;;
+1F07C;DOMINO TILE VERTICAL-03-04;So;0;ON;;;;;N;;;;;
+1F07D;DOMINO TILE VERTICAL-03-05;So;0;ON;;;;;N;;;;;
+1F07E;DOMINO TILE VERTICAL-03-06;So;0;ON;;;;;N;;;;;
+1F07F;DOMINO TILE VERTICAL-04-00;So;0;ON;;;;;N;;;;;
+1F080;DOMINO TILE VERTICAL-04-01;So;0;ON;;;;;N;;;;;
+1F081;DOMINO TILE VERTICAL-04-02;So;0;ON;;;;;N;;;;;
+1F082;DOMINO TILE VERTICAL-04-03;So;0;ON;;;;;N;;;;;
+1F083;DOMINO TILE VERTICAL-04-04;So;0;ON;;;;;N;;;;;
+1F084;DOMINO TILE VERTICAL-04-05;So;0;ON;;;;;N;;;;;
+1F085;DOMINO TILE VERTICAL-04-06;So;0;ON;;;;;N;;;;;
+1F086;DOMINO TILE VERTICAL-05-00;So;0;ON;;;;;N;;;;;
+1F087;DOMINO TILE VERTICAL-05-01;So;0;ON;;;;;N;;;;;
+1F088;DOMINO TILE VERTICAL-05-02;So;0;ON;;;;;N;;;;;
+1F089;DOMINO TILE VERTICAL-05-03;So;0;ON;;;;;N;;;;;
+1F08A;DOMINO TILE VERTICAL-05-04;So;0;ON;;;;;N;;;;;
+1F08B;DOMINO TILE VERTICAL-05-05;So;0;ON;;;;;N;;;;;
+1F08C;DOMINO TILE VERTICAL-05-06;So;0;ON;;;;;N;;;;;
+1F08D;DOMINO TILE VERTICAL-06-00;So;0;ON;;;;;N;;;;;
+1F08E;DOMINO TILE VERTICAL-06-01;So;0;ON;;;;;N;;;;;
+1F08F;DOMINO TILE VERTICAL-06-02;So;0;ON;;;;;N;;;;;
+1F090;DOMINO TILE VERTICAL-06-03;So;0;ON;;;;;N;;;;;
+1F091;DOMINO TILE VERTICAL-06-04;So;0;ON;;;;;N;;;;;
+1F092;DOMINO TILE VERTICAL-06-05;So;0;ON;;;;;N;;;;;
+1F093;DOMINO TILE VERTICAL-06-06;So;0;ON;;;;;N;;;;;
+1F100;DIGIT ZERO FULL STOP;No;0;EN;<compat> 0030 002E;;0;0;N;;;;;
+1F101;DIGIT ZERO COMMA;No;0;EN;<compat> 0030 002C;;0;0;N;;;;;
+1F102;DIGIT ONE COMMA;No;0;EN;<compat> 0031 002C;;1;1;N;;;;;
+1F103;DIGIT TWO COMMA;No;0;EN;<compat> 0032 002C;;2;2;N;;;;;
+1F104;DIGIT THREE COMMA;No;0;EN;<compat> 0033 002C;;3;3;N;;;;;
+1F105;DIGIT FOUR COMMA;No;0;EN;<compat> 0034 002C;;4;4;N;;;;;
+1F106;DIGIT FIVE COMMA;No;0;EN;<compat> 0035 002C;;5;5;N;;;;;
+1F107;DIGIT SIX COMMA;No;0;EN;<compat> 0036 002C;;6;6;N;;;;;
+1F108;DIGIT SEVEN COMMA;No;0;EN;<compat> 0037 002C;;7;7;N;;;;;
+1F109;DIGIT EIGHT COMMA;No;0;EN;<compat> 0038 002C;;8;8;N;;;;;
+1F10A;DIGIT NINE COMMA;No;0;EN;<compat> 0039 002C;;9;9;N;;;;;
+1F110;PARENTHESIZED LATIN CAPITAL LETTER A;So;0;L;<compat> 0028 0041 0029;;;;N;;;;;
+1F111;PARENTHESIZED LATIN CAPITAL LETTER B;So;0;L;<compat> 0028 0042 0029;;;;N;;;;;
+1F112;PARENTHESIZED LATIN CAPITAL LETTER C;So;0;L;<compat> 0028 0043 0029;;;;N;;;;;
+1F113;PARENTHESIZED LATIN CAPITAL LETTER D;So;0;L;<compat> 0028 0044 0029;;;;N;;;;;
+1F114;PARENTHESIZED LATIN CAPITAL LETTER E;So;0;L;<compat> 0028 0045 0029;;;;N;;;;;
+1F115;PARENTHESIZED LATIN CAPITAL LETTER F;So;0;L;<compat> 0028 0046 0029;;;;N;;;;;
+1F116;PARENTHESIZED LATIN CAPITAL LETTER G;So;0;L;<compat> 0028 0047 0029;;;;N;;;;;
+1F117;PARENTHESIZED LATIN CAPITAL LETTER H;So;0;L;<compat> 0028 0048 0029;;;;N;;;;;
+1F118;PARENTHESIZED LATIN CAPITAL LETTER I;So;0;L;<compat> 0028 0049 0029;;;;N;;;;;
+1F119;PARENTHESIZED LATIN CAPITAL LETTER J;So;0;L;<compat> 0028 004A 0029;;;;N;;;;;
+1F11A;PARENTHESIZED LATIN CAPITAL LETTER K;So;0;L;<compat> 0028 004B 0029;;;;N;;;;;
+1F11B;PARENTHESIZED LATIN CAPITAL LETTER L;So;0;L;<compat> 0028 004C 0029;;;;N;;;;;
+1F11C;PARENTHESIZED LATIN CAPITAL LETTER M;So;0;L;<compat> 0028 004D 0029;;;;N;;;;;
+1F11D;PARENTHESIZED LATIN CAPITAL LETTER N;So;0;L;<compat> 0028 004E 0029;;;;N;;;;;
+1F11E;PARENTHESIZED LATIN CAPITAL LETTER O;So;0;L;<compat> 0028 004F 0029;;;;N;;;;;
+1F11F;PARENTHESIZED LATIN CAPITAL LETTER P;So;0;L;<compat> 0028 0050 0029;;;;N;;;;;
+1F120;PARENTHESIZED LATIN CAPITAL LETTER Q;So;0;L;<compat> 0028 0051 0029;;;;N;;;;;
+1F121;PARENTHESIZED LATIN CAPITAL LETTER R;So;0;L;<compat> 0028 0052 0029;;;;N;;;;;
+1F122;PARENTHESIZED LATIN CAPITAL LETTER S;So;0;L;<compat> 0028 0053 0029;;;;N;;;;;
+1F123;PARENTHESIZED LATIN CAPITAL LETTER T;So;0;L;<compat> 0028 0054 0029;;;;N;;;;;
+1F124;PARENTHESIZED LATIN CAPITAL LETTER U;So;0;L;<compat> 0028 0055 0029;;;;N;;;;;
+1F125;PARENTHESIZED LATIN CAPITAL LETTER V;So;0;L;<compat> 0028 0056 0029;;;;N;;;;;
+1F126;PARENTHESIZED LATIN CAPITAL LETTER W;So;0;L;<compat> 0028 0057 0029;;;;N;;;;;
+1F127;PARENTHESIZED LATIN CAPITAL LETTER X;So;0;L;<compat> 0028 0058 0029;;;;N;;;;;
+1F128;PARENTHESIZED LATIN CAPITAL LETTER Y;So;0;L;<compat> 0028 0059 0029;;;;N;;;;;
+1F129;PARENTHESIZED LATIN CAPITAL LETTER Z;So;0;L;<compat> 0028 005A 0029;;;;N;;;;;
+1F12A;TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S;So;0;L;<compat> 3014 0053 3015;;;;N;;;;;
+1F12B;CIRCLED ITALIC LATIN CAPITAL LETTER C;So;0;L;<circle> 0043;;;;N;;;;;
+1F12C;CIRCLED ITALIC LATIN CAPITAL LETTER R;So;0;L;<circle> 0052;;;;N;;;;;
+1F12D;CIRCLED CD;So;0;L;<circle> 0043 0044;;;;N;;;;;
+1F12E;CIRCLED WZ;So;0;L;<circle> 0057 005A;;;;N;;;;;
+1F131;SQUARED LATIN CAPITAL LETTER B;So;0;L;<square> 0042;;;;N;;;;;
+1F13D;SQUARED LATIN CAPITAL LETTER N;So;0;L;<square> 004E;;;;N;;;;;
+1F13F;SQUARED LATIN CAPITAL LETTER P;So;0;L;<square> 0050;;;;N;;;;;
+1F142;SQUARED LATIN CAPITAL LETTER S;So;0;L;<square> 0053;;;;N;;;;;
+1F146;SQUARED LATIN CAPITAL LETTER W;So;0;L;<square> 0057;;;;N;;;;;
+1F14A;SQUARED HV;So;0;L;<square> 0048 0056;;;;N;;;;;
+1F14B;SQUARED MV;So;0;L;<square> 004D 0056;;;;N;;;;;
+1F14C;SQUARED SD;So;0;L;<square> 0053 0044;;;;N;;;;;
+1F14D;SQUARED SS;So;0;L;<square> 0053 0053;;;;N;;;;;
+1F14E;SQUARED PPV;So;0;L;<square> 0050 0050 0056;;;;N;;;;;
+1F157;NEGATIVE CIRCLED LATIN CAPITAL LETTER H;So;0;L;;;;;N;;;;;
+1F15F;NEGATIVE CIRCLED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
+1F179;NEGATIVE SQUARED LATIN CAPITAL LETTER J;So;0;L;;;;;N;;;;;
+1F17B;NEGATIVE SQUARED LATIN CAPITAL LETTER L;So;0;L;;;;;N;;;;;
+1F17C;NEGATIVE SQUARED LATIN CAPITAL LETTER M;So;0;L;;;;;N;;;;;
+1F17F;NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
+1F18A;CROSSED NEGATIVE SQUARED LATIN CAPITAL LETTER P;So;0;L;;;;;N;;;;;
+1F18B;NEGATIVE SQUARED IC;So;0;L;;;;;N;;;;;
+1F18C;NEGATIVE SQUARED PA;So;0;L;;;;;N;;;;;
+1F18D;NEGATIVE SQUARED SA;So;0;L;;;;;N;;;;;
+1F190;SQUARE DJ;So;0;L;<square> 0044 004A;;;;N;;;;;
+1F200;SQUARE HIRAGANA HOKA;So;0;L;<square> 307B 304B;;;;N;;;;;
+1F210;SQUARED CJK UNIFIED IDEOGRAPH-624B;So;0;L;<square> 624B;;;;N;;;;;
+1F211;SQUARED CJK UNIFIED IDEOGRAPH-5B57;So;0;L;<square> 5B57;;;;N;;;;;
+1F212;SQUARED CJK UNIFIED IDEOGRAPH-53CC;So;0;L;<square> 53CC;;;;N;;;;;
+1F213;SQUARED KATAKANA DE;So;0;L;<square> 30C7;;;;N;;;;;
+1F214;SQUARED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<square> 4E8C;;;;N;;;;;
+1F215;SQUARED CJK UNIFIED IDEOGRAPH-591A;So;0;L;<square> 591A;;;;N;;;;;
+1F216;SQUARED CJK UNIFIED IDEOGRAPH-89E3;So;0;L;<square> 89E3;;;;N;;;;;
+1F217;SQUARED CJK UNIFIED IDEOGRAPH-5929;So;0;L;<square> 5929;;;;N;;;;;
+1F218;SQUARED CJK UNIFIED IDEOGRAPH-4EA4;So;0;L;<square> 4EA4;;;;N;;;;;
+1F219;SQUARED CJK UNIFIED IDEOGRAPH-6620;So;0;L;<square> 6620;;;;N;;;;;
+1F21A;SQUARED CJK UNIFIED IDEOGRAPH-7121;So;0;L;<square> 7121;;;;N;;;;;
+1F21B;SQUARED CJK UNIFIED IDEOGRAPH-6599;So;0;L;<square> 6599;;;;N;;;;;
+1F21C;SQUARED CJK UNIFIED IDEOGRAPH-524D;So;0;L;<square> 524D;;;;N;;;;;
+1F21D;SQUARED CJK UNIFIED IDEOGRAPH-5F8C;So;0;L;<square> 5F8C;;;;N;;;;;
+1F21E;SQUARED CJK UNIFIED IDEOGRAPH-518D;So;0;L;<square> 518D;;;;N;;;;;
+1F21F;SQUARED CJK UNIFIED IDEOGRAPH-65B0;So;0;L;<square> 65B0;;;;N;;;;;
+1F220;SQUARED CJK UNIFIED IDEOGRAPH-521D;So;0;L;<square> 521D;;;;N;;;;;
+1F221;SQUARED CJK UNIFIED IDEOGRAPH-7D42;So;0;L;<square> 7D42;;;;N;;;;;
+1F222;SQUARED CJK UNIFIED IDEOGRAPH-751F;So;0;L;<square> 751F;;;;N;;;;;
+1F223;SQUARED CJK UNIFIED IDEOGRAPH-8CA9;So;0;L;<square> 8CA9;;;;N;;;;;
+1F224;SQUARED CJK UNIFIED IDEOGRAPH-58F0;So;0;L;<square> 58F0;;;;N;;;;;
+1F225;SQUARED CJK UNIFIED IDEOGRAPH-5439;So;0;L;<square> 5439;;;;N;;;;;
+1F226;SQUARED CJK UNIFIED IDEOGRAPH-6F14;So;0;L;<square> 6F14;;;;N;;;;;
+1F227;SQUARED CJK UNIFIED IDEOGRAPH-6295;So;0;L;<square> 6295;;;;N;;;;;
+1F228;SQUARED CJK UNIFIED IDEOGRAPH-6355;So;0;L;<square> 6355;;;;N;;;;;
+1F229;SQUARED CJK UNIFIED IDEOGRAPH-4E00;So;0;L;<square> 4E00;;;;N;;;;;
+1F22A;SQUARED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<square> 4E09;;;;N;;;;;
+1F22B;SQUARED CJK UNIFIED IDEOGRAPH-904A;So;0;L;<square> 904A;;;;N;;;;;
+1F22C;SQUARED CJK UNIFIED IDEOGRAPH-5DE6;So;0;L;<square> 5DE6;;;;N;;;;;
+1F22D;SQUARED CJK UNIFIED IDEOGRAPH-4E2D;So;0;L;<square> 4E2D;;;;N;;;;;
+1F22E;SQUARED CJK UNIFIED IDEOGRAPH-53F3;So;0;L;<square> 53F3;;;;N;;;;;
+1F22F;SQUARED CJK UNIFIED IDEOGRAPH-6307;So;0;L;<square> 6307;;;;N;;;;;
+1F230;SQUARED CJK UNIFIED IDEOGRAPH-8D70;So;0;L;<square> 8D70;;;;N;;;;;
+1F231;SQUARED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<square> 6253;;;;N;;;;;
+1F240;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C;So;0;L;<compat> 3014 672C 3015;;;;N;;;;;
+1F241;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09;So;0;L;<compat> 3014 4E09 3015;;;;N;;;;;
+1F242;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C;So;0;L;<compat> 3014 4E8C 3015;;;;N;;;;;
+1F243;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89;So;0;L;<compat> 3014 5B89 3015;;;;N;;;;;
+1F244;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9;So;0;L;<compat> 3014 70B9 3015;;;;N;;;;;
+1F245;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253;So;0;L;<compat> 3014 6253 3015;;;;N;;;;;
+1F246;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7;So;0;L;<compat> 3014 76D7 3015;;;;N;;;;;
+1F247;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD;So;0;L;<compat> 3014 52DD 3015;;;;N;;;;;
+1F248;TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557;So;0;L;<compat> 3014 6557 3015;;;;N;;;;;
+20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
+2A6D6;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
+2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
+2B734;<CJK Ideograph Extension C, Last>;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;;;9;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;;;;;
diff --git a/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php b/inc/3rdparty/libraries/mpdf/utils/UnicodeRanges.php
new file mode 100644 (file)
index 0000000..ce2b1a2
--- /dev/null
@@ -0,0 +1,218 @@
+<?php
+
+/////////////////
+$unicode_ranges = array(
+array('starthex'=> '0000', 'endhex'=>'007E', 'startdec'=> 0, 'enddec'=>126 , 'range'=>'Basic Latin'),
+array('starthex'=> '00A0', 'endhex'=>'00FF', 'startdec'=> 160, 'enddec'=>255 , 'range'=>'Latin-1 Supplement'),
+array('starthex'=> '0100', 'endhex'=>'017F', 'startdec'=> 256, 'enddec'=>383 , 'range'=>'Latin Extended-A'),
+array('starthex'=> '0180', 'endhex'=>'024F', 'startdec'=> 384, 'enddec'=>591 , 'range'=>'Latin Extended-B'),
+array('starthex'=> '0250', 'endhex'=>'02AF', 'startdec'=> 592, 'enddec'=>687 , 'range'=>'IPA Extensions'),
+array('starthex'=> '02B0', 'endhex'=>'02FF', 'startdec'=> 688, 'enddec'=>767 , 'range'=>'Spacing Modifier Letters'),
+array('starthex'=> '0300', 'endhex'=>'036F', 'startdec'=> 768, 'enddec'=>879 , 'range'=>'Combining Diacritical Marks', 'combining'=>true),
+array('starthex'=> '0370', 'endhex'=>'03FF', 'startdec'=> 880, 'enddec'=>1023 , 'range'=>'Greek'),
+array('starthex'=> '0400', 'endhex'=>'04FF', 'startdec'=> 1024, 'enddec'=>1279 , 'range'=>'Cyrillic'),
+array('starthex'=> '0500', 'endhex'=>'052F', 'startdec'=> 1280, 'enddec'=>1327 , 'range'=>'Cyrillic Supplement'),
+array('starthex'=> '0530', 'endhex'=>'058F', 'startdec'=> 1328, 'enddec'=>1423 , 'range'=>'Armenian'),
+array('starthex'=> '0590', 'endhex'=>'05FF', 'startdec'=> 1424, 'enddec'=>1535 , 'range'=>'Hebrew', 'rtl'=>true, 'special'=>true),
+array('starthex'=> '0600', 'endhex'=>'06FF', 'startdec'=> 1536, 'enddec'=>1791 , 'range'=>'Arabic', 'rtl'=>true, 'special'=>true),
+array('starthex'=> '0700', 'endhex'=>'074F', 'startdec'=> 1792, 'enddec'=>1871 , 'range'=>'Syriac', 'rtl'=>true, 'special'=>true),
+array('starthex'=> '0750', 'endhex'=>'077F', 'startdec'=> 1872, 'enddec'=>1919 , 'range'=>'Arabic Supplement', 'rtl'=>true, 'special'=>true),
+array('starthex'=> '0780', 'endhex'=>'07BF', 'startdec'=> 1920, 'enddec'=>1983 , 'range'=>'Thaana', 'rtl'=>true, 'special'=>true),
+array('starthex'=> '07C0', 'endhex'=>'07FF', 'startdec'=> 1984, 'enddec'=>2047 , 'range'=>'N\'Ko (Mandenkan)', 'rtl'=>true),
+array('starthex'=> '0800', 'endhex'=>'083E', 'startdec'=> 2048, 'enddec'=> 2110, 'range'=>'Samaritan', 'rtl'=>true),
+array('starthex'=> '0900', 'endhex'=>'097F', 'startdec'=> 2304, 'enddec'=>2431 , 'range'=>'Devanagari', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0980', 'endhex'=>'09FF', 'startdec'=> 2432, 'enddec'=>2559 , 'range'=>'Bengali', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0A00', 'endhex'=>'0A7F', 'startdec'=> 2560, 'enddec'=>2687 , 'range'=>'Gurmukhi', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0A80', 'endhex'=>'0AFF', 'startdec'=> 2688, 'enddec'=>2815 , 'range'=>'Gujarati', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0B00', 'endhex'=>'0B7F', 'startdec'=> 2816, 'enddec'=>2943 , 'range'=>'Oriya', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0B80', 'endhex'=>'0BFF', 'startdec'=> 2944, 'enddec'=>3071 , 'range'=>'Tamil', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0C00', 'endhex'=>'0C7F', 'startdec'=> 3072, 'enddec'=>3199 , 'range'=>'Telugu', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0C80', 'endhex'=>'0CFF', 'startdec'=> 3200, 'enddec'=>3327 , 'range'=>'Kannada', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0D00', 'endhex'=>'0D7F', 'startdec'=> 3328, 'enddec'=>3455 , 'range'=>'Malayalam', 'indic'=>true, 'special'=>true),
+array('starthex'=> '0D80', 'endhex'=>'0DFF', 'startdec'=> 3456, 'enddec'=>3583 , 'range'=>'Sinhala', 'special'=>true),
+array('starthex'=> '0E00', 'endhex'=>'0E7F', 'startdec'=> 3584, 'enddec'=>3711 , 'range'=>'Thai'),
+array('starthex'=> '0E80', 'endhex'=>'0EFF', 'startdec'=> 3712, 'enddec'=>3839 , 'range'=>'Lao'),
+array('starthex'=> '0F00', 'endhex'=>'0FFF', 'startdec'=> 3840, 'enddec'=>4095 , 'range'=>'Tibetan', 'special'=>true),
+array('starthex'=> '1000', 'endhex'=>'109F', 'startdec'=> 4096, 'enddec'=>4255 , 'range'=>'Myanmar', 'special'=>true),
+array('starthex'=> '10A0', 'endhex'=>'10FF', 'startdec'=> 4256, 'enddec'=>4351 , 'range'=>'Georgian'),
+array('starthex'=> '1100', 'endhex'=>'11FF', 'startdec'=> 4352, 'enddec'=>4607 , 'range'=>'Hangul Jamo', 'cjk'=>true),
+array('starthex'=> '1200', 'endhex'=>'137F', 'startdec'=> 4608, 'enddec'=>4991 , 'range'=>'Ethiopic'),
+array('starthex'=> '1380', 'endhex'=>'139F', 'startdec'=> 4992, 'enddec'=>5023 , 'range'=>'Ethiopic Supplement'),
+array('starthex'=> '13A0', 'endhex'=>'13FF', 'startdec'=> 5024, 'enddec'=>5119 , 'range'=>'Cherokee'),
+array('starthex'=> '1400', 'endhex'=>'167F', 'startdec'=> 5120, 'enddec'=>5759 , 'range'=>'Unified Canadian Aboriginal Syllabics'),
+array('starthex'=> '1680', 'endhex'=>'169F', 'startdec'=> 5760, 'enddec'=>5791 , 'range'=>'Ogham'),
+array('starthex'=> '16A0', 'endhex'=>'16FF', 'startdec'=> 5792, 'enddec'=>5887 , 'range'=>'Runic'),
+array('starthex'=> '1700', 'endhex'=>'171F', 'startdec'=> 5888, 'enddec'=> 5919, 'range'=>'Tagalog (Philippine)'),
+array('starthex'=> '1720', 'endhex'=>'173F', 'startdec'=> 5920, 'enddec'=> 5951, 'range'=>'Hanunoo (Philippine)'),
+array('starthex'=> '1740', 'endhex'=>'175F', 'startdec'=> 5952, 'enddec'=> 5983, 'range'=>'Buhid (Philippine)'),
+array('starthex'=> '1760', 'endhex'=>'177F', 'startdec'=> 5984, 'enddec'=> 6015, 'range'=>'Tagbanwa (Philippine)'),
+array('starthex'=> '1780', 'endhex'=>'17FF', 'startdec'=> 6016, 'enddec'=>6143 , 'range'=>'Khmer', 'special'=>true),
+array('starthex'=> '1800', 'endhex'=>'18AF', 'startdec'=> 6144, 'enddec'=>6319 , 'range'=>'Mongolian', 'vertical'=>true),
+array('starthex'=> '18B0', 'endhex'=>'18F5', 'startdec'=> 6320, 'enddec'=>6389 , 'range'=>'Canadian Syllabics'),
+array('starthex'=> '1900', 'endhex'=>'194F', 'startdec'=> 6400, 'enddec'=> 6479, 'range'=>'Limbu'),
+array('starthex'=> '1950', 'endhex'=>'197F', 'startdec'=> 6480, 'enddec'=> 6527, 'range'=>'Tai Le'),
+array('starthex'=> '1980', 'endhex'=>'19DF', 'startdec'=> 6528, 'enddec'=> 6623, 'range'=>'New Tai Lue'),
+array('starthex'=> '19E0', 'endhex'=>'19FF', 'startdec'=> 6624, 'enddec'=> 6655, 'range'=>'Khmer Symbols', 'special'=>true),
+array('starthex'=> '1A00', 'endhex'=>'1A1F', 'startdec'=> 6656, 'enddec'=> 6687, 'range'=>'Buginese'),
+array('starthex'=> '1A20', 'endhex'=>'1AAF', 'startdec'=> 6688, 'enddec'=> 6831, 'range'=>'Tai Tham'),
+array('starthex'=> '1B00', 'endhex'=>'1B7F', 'startdec'=> 6912, 'enddec'=> 7039, 'range'=>'Balinese', 'special'=>true),
+array('starthex'=> '1B80', 'endhex'=>'1BBF', 'startdec'=> 7040, 'enddec'=> 7103, 'range'=>'Sundanese'),
+array('starthex'=> '1C00', 'endhex'=>'1C4F', 'startdec'=> 7168, 'enddec'=> 7247, 'range'=>'Lepcha (Rong)'),
+array('starthex'=> '1C50', 'endhex'=>'1C7F', 'startdec'=> 7248, 'enddec'=> 7295, 'range'=>'Ol Chiki (Santali / Ol Cemet)'),
+array('starthex'=> '1CD0', 'endhex'=>'1CFF', 'startdec'=> 7376, 'enddec'=> 7423, 'range'=>'Vedic Extensions'),
+array('starthex'=> '1D00', 'endhex'=>'1D7F', 'startdec'=> 7424, 'enddec'=> 7551, 'range'=>'Phonetic Extensions'),
+array('starthex'=> '1D80', 'endhex'=>'1DBF', 'startdec'=> 7552, 'enddec'=> 7615, 'range'=>'Phonetic Extensions Supplement'),
+array('starthex'=> '1DC0', 'endhex'=>'1DFF', 'startdec'=> 7616, 'enddec'=> 7679, 'range'=>'Combining Diacritical Marks Supplement', 'combining'=>true),
+array('starthex'=> '1E00', 'endhex'=>'1EFF', 'startdec'=> 7680, 'enddec'=>7935 , 'range'=>'Latin Extended Additional'),
+array('starthex'=> '1F00', 'endhex'=>'1FFF', 'startdec'=> 7936, 'enddec'=>8191 , 'range'=>'Greek Extended'),
+array('starthex'=> '2000', 'endhex'=>'206F', 'startdec'=> 8192, 'enddec'=>8303 , 'range'=>'General Punctuation'),
+array('starthex'=> '2070', 'endhex'=>'209F', 'startdec'=> 8304, 'enddec'=>8351 , 'range'=>'Superscripts and Subscripts'),
+array('starthex'=> '20A0', 'endhex'=>'20CF', 'startdec'=> 8352, 'enddec'=>8399 , 'range'=>'Currency Symbols'),
+array('starthex'=> '20D0', 'endhex'=>'20FF', 'startdec'=> 8400, 'enddec'=>8447 , 'range'=>'Combining Marks for Symbols', 'combining'=>true),
+array('starthex'=> '2100', 'endhex'=>'214F', 'startdec'=> 8448, 'enddec'=>8527 , 'range'=>'Letterlike Symbols'),
+array('starthex'=> '2150', 'endhex'=>'218F', 'startdec'=> 8528, 'enddec'=>8591 , 'range'=>'Number Forms'),
+array('starthex'=> '2190', 'endhex'=>'21FF', 'startdec'=> 8592, 'enddec'=>8703 , 'range'=>'Arrows'),
+array('starthex'=> '2200', 'endhex'=>'22FF', 'startdec'=> 8704, 'enddec'=>8959 , 'range'=>'Mathematical Operators'),
+array('starthex'=> '2300', 'endhex'=>'23FF', 'startdec'=> 8960, 'enddec'=>9215 , 'range'=>'Miscellaneous Technical'),
+array('starthex'=> '2400', 'endhex'=>'243F', 'startdec'=> 9216, 'enddec'=>9279 , 'range'=>'Control Pictures'),
+array('starthex'=> '2440', 'endhex'=>'245F', 'startdec'=> 9280, 'enddec'=>9311 , 'range'=>'Optical Character Recognition'),
+array('starthex'=> '2460', 'endhex'=>'24FF', 'startdec'=> 9312, 'enddec'=>9471 , 'range'=>'Enclosed Alphanumerics'),
+array('starthex'=> '2500', 'endhex'=>'257F', 'startdec'=> 9472, 'enddec'=>9599 , 'range'=>'Box Drawing'),
+array('starthex'=> '2580', 'endhex'=>'259F', 'startdec'=> 9600, 'enddec'=>9631 , 'range'=>'Block Elements'),
+array('starthex'=> '25A0', 'endhex'=>'25FF', 'startdec'=> 9632, 'enddec'=>9727 , 'range'=>'Geometric Shapes'),
+array('starthex'=> '2600', 'endhex'=>'26FF', 'startdec'=> 9728, 'enddec'=>9983 , 'range'=>'Miscellaneous Symbols'),
+array('starthex'=> '2700', 'endhex'=>'27BF', 'startdec'=> 9984, 'enddec'=>10175 , 'range'=>'Dingbats'),
+array('starthex'=> '27C0', 'endhex'=>'27EF', 'startdec'=> 10176, 'enddec'=> 10223, 'range'=>'Miscellaneous Mathematical Symbols-A'),
+array('starthex'=> '27F0', 'endhex'=>'27FF', 'startdec'=> 10224, 'enddec'=> 10239, 'range'=>'Supplemental Arrows-A'),
+array('starthex'=> '2800', 'endhex'=>'28FF', 'startdec'=> 10240, 'enddec'=>10495 , 'range'=>'Braille Patterns'),
+array('starthex'=> '2900', 'endhex'=>'297F', 'startdec'=> 10496, 'enddec'=> 10623, 'range'=>'Supplemental Arrows-B'),
+array('starthex'=> '2980', 'endhex'=>'29FF', 'startdec'=> 10624, 'enddec'=> 10751, 'range'=>'Miscellaneous Mathematical Symbols-B'),
+array('starthex'=> '2A00', 'endhex'=>'2AFF', 'startdec'=> 10752, 'enddec'=> 11007, 'range'=>'Supplemental Mathematical Operators'),
+array('starthex'=> '2B00', 'endhex'=>'2BFF', 'startdec'=> 11008, 'enddec'=> 11263, 'range'=>'Miscellaneous Symbols and Arrows'),
+array('starthex'=> '2C00', 'endhex'=>'2C5F', 'startdec'=> 11264, 'enddec'=> 11359, 'range'=>'Glagolitic'),
+array('starthex'=> '2C60', 'endhex'=>'2C7F', 'startdec'=> 11360, 'enddec'=> 11391, 'range'=>'Latin Extended-C'),
+array('starthex'=> '2C80', 'endhex'=>'2CFF', 'startdec'=> 11392, 'enddec'=> 11519, 'range'=>'Coptic'),
+array('starthex'=> '2D00', 'endhex'=>'2D2F', 'startdec'=> 11520, 'enddec'=> 11567, 'range'=>'Georgian Supplement'),
+array('starthex'=> '2D30', 'endhex'=>'2D7F', 'startdec'=> 11568, 'enddec'=> 11647, 'range'=>'Tifinagh'),
+array('starthex'=> '2D80', 'endhex'=>'2DDF', 'startdec'=> 11648, 'enddec'=> 11743, 'range'=>'Ethiopic Extended'),
+array('starthex'=> '2DE0', 'endhex'=>'2DFF', 'startdec'=> 11744, 'enddec'=> 11775, 'range'=>'Cyrillic Extended-A'),
+array('starthex'=> '2E00', 'endhex'=>'2E7F', 'startdec'=> 11776, 'enddec'=> 11903, 'range'=>'Supplemental Punctuation'),
+
+array('starthex'=> '2E80', 'endhex'=>'2EFF', 'startdec'=> 11904, 'enddec'=>12031 , 'range'=>'CJK Radicals Supplement', 'cjk'=>true),
+array('starthex'=> '2F00', 'endhex'=>'2FDF', 'startdec'=> 12032, 'enddec'=>12255 , 'range'=>'Kangxi Radicals', 'cjk'=>true),
+array('starthex'=> '2FF0', 'endhex'=>'2FFF', 'startdec'=> 12272, 'enddec'=>12287 , 'range'=>'Ideographic Description Characters', 'cjk'=>true),
+array('starthex'=> '3000', 'endhex'=>'303F', 'startdec'=> 12288, 'enddec'=>12351 , 'range'=>'CJK Symbols and Punctuation', 'cjk'=>true),
+array('starthex'=> '3040', 'endhex'=>'309F', 'startdec'=> 12352, 'enddec'=>12447 , 'range'=>'Hiragana', 'cjk'=>true),
+array('starthex'=> '30A0', 'endhex'=>'30FF', 'startdec'=> 12448, 'enddec'=>12543 , 'range'=>'Katakana', 'cjk'=>true),
+array('starthex'=> '3100', 'endhex'=>'312F', 'startdec'=> 12544, 'enddec'=>12591 , 'range'=>'Bopomofo', 'cjk'=>true),
+array('starthex'=> '3130', 'endhex'=>'318F', 'startdec'=> 12592, 'enddec'=>12687 , 'range'=>'Hangul Compatibility Jamo', 'cjk'=>true),
+array('starthex'=> '3190', 'endhex'=>'319F', 'startdec'=> 12688, 'enddec'=>12703 , 'range'=>'Kanbun', 'cjk'=>true),
+array('starthex'=> '31A0', 'endhex'=>'31BF', 'startdec'=> 12704, 'enddec'=>12735 , 'range'=>'Bopomofo Extended', 'cjk'=>true),
+array('starthex'=> '31C0', 'endhex'=>'31EF', 'startdec'=> 12736, 'enddec'=> 12783, 'range'=>'CJK Strokes', 'cjk'=>true),
+array('starthex'=> '31F0', 'endhex'=>'31FF', 'startdec'=> 12784, 'enddec'=> 12799, 'range'=>'Katakana Phonetic Extensions', 'cjk'=>true),
+array('starthex'=> '3200', 'endhex'=>'32FF', 'startdec'=> 12800, 'enddec'=>13055 , 'range'=>'Enclosed CJK Letters and Months', 'cjk'=>true),
+array('starthex'=> '3300', 'endhex'=>'33FF', 'startdec'=> 13056, 'enddec'=>13311 , 'range'=>'CJK Compatibility', 'cjk'=>true),
+array('starthex'=> '3400', 'endhex'=>'4DB5', 'startdec'=> 13312, 'enddec'=>19893 , 'range'=>'CJK Unified Ideographs Extension A', 'cjk'=>true),
+array('starthex'=> '4DC0', 'endhex'=>'4DFF', 'startdec'=> 19904, 'enddec'=> 19967, 'range'=>'Yijing Hexagram Symbols', 'cjk'=>true),
+array('starthex'=> '4E00', 'endhex'=>'9FFF', 'startdec'=> 19968, 'enddec'=>40959 , 'range'=>'CJK Unified Ideographs', 'cjk'=>true),
+array('starthex'=> 'A000', 'endhex'=>'A48F', 'startdec'=> 40960, 'enddec'=>42127 , 'range'=>'Yi Syllables', 'cjk'=>true),
+array('starthex'=> 'A490', 'endhex'=>'A4CF', 'startdec'=> 42128, 'enddec'=> 42191, 'range'=>'Yi Radicals', 'cjk'=>true),
+
+array('starthex'=> 'A4D0', 'endhex'=>'A4FF', 'startdec'=> 42192, 'enddec'=> 42239, 'range'=>'Lisu'),
+
+array('starthex'=> 'A500', 'endhex'=>'A63F', 'startdec'=> 42240, 'enddec'=> 42559, 'range'=>'Vai'),
+array('starthex'=> 'A640', 'endhex'=>'A69F', 'startdec'=> 42560, 'enddec'=> 42655, 'range'=>'Cyrillic Extended-B'),
+
+array('starthex'=> 'A6A0', 'endhex'=>'A6FF', 'startdec'=> 42656, 'enddec'=> 42751, 'range'=>'Bamum'),
+
+array('starthex'=> 'A700', 'endhex'=>'A71F', 'startdec'=> 42752, 'enddec'=> 42783, 'range'=>'Modifier Tone Letters'),
+array('starthex'=> 'A720', 'endhex'=>'A7FF', 'startdec'=> 42784, 'enddec'=> 43007, 'range'=>'Latin Extended-D'),
+array('starthex'=> 'A800', 'endhex'=>'A82F', 'startdec'=> 43008, 'enddec'=> 43055, 'range'=>'Syloti Nagri'),
+
+array('starthex'=> 'A840', 'endhex'=>'A87F', 'startdec'=> 43072, 'enddec'=> 43135, 'range'=>'Phags-pa', 'vertical'=>true),
+array('starthex'=> 'A880', 'endhex'=>'A8DF', 'startdec'=> 43136, 'enddec'=> 43231, 'range'=>'Saurashtra'),
+
+array('starthex'=> 'A900', 'endhex'=>'A92F', 'startdec'=> 43264, 'enddec'=> 43311, 'range'=>'Kayah Li'),
+array('starthex'=> 'A930', 'endhex'=>'A95F', 'startdec'=> 43312, 'enddec'=> 43359, 'range'=>'Rejang'),
+
+array('starthex'=> 'A960', 'endhex'=>'A97F', 'startdec'=> 43360, 'enddec'=> 43391, 'range'=>'Hangul Choseong', 'cjk'=>true),
+array('starthex'=> 'A980', 'endhex'=>'A9DF', 'startdec'=> 43392, 'enddec'=> 43487, 'range'=>'Javanese'),
+
+array('starthex'=> 'AA00', 'endhex'=>'AA5F', 'startdec'=> 43520, 'enddec'=> 43615, 'range'=>'Cham'),
+array('starthex'=> 'AA60', 'endhex'=>'AA7B', 'startdec'=> 43616, 'enddec'=> 43647, 'range'=>'Myanmar', 'special'=>true),
+array('starthex'=> 'AA80', 'endhex'=>'AADF', 'startdec'=> 43648, 'enddec'=> 43743, 'range'=>'Tai Viet'),
+
+array('starthex'=> 'ABC0', 'endhex'=>'ABF9', 'startdec'=> 43968, 'enddec'=> 44025, 'range'=>'Meetei Mayek'),
+
+array('starthex'=> 'AC00', 'endhex'=>'D7FF', 'startdec'=> 44032, 'enddec'=>55295 , 'range'=>'Hangul Syllables', 'cjk'=>true),
+
+/*
+array('starthex'=> 'D800', 'endhex'=>'DB7F', 'startdec'=> 55296, 'enddec'=>56191 , 'range'=>'High Surrogates', 'reserved'=>true),
+array('starthex'=> 'DB80', 'endhex'=>'DBFF', 'startdec'=> 56192, 'enddec'=>56319 , 'range'=>'High Private Use Surrogates', 'reserved'=>true),
+array('starthex'=> 'DC00', 'endhex'=>'DFFF', 'startdec'=> 56320, 'enddec'=>57343 , 'range'=>'Low Surrogates', 'reserved'=>true),
+*/
+
+array('starthex'=> 'E000', 'endhex'=>'F8FF', 'startdec'=> 57344, 'enddec'=>63743 , 'range'=>'Private Use', 'pua'=>true),
+
+array('starthex'=> 'F900', 'endhex'=>'FAFF', 'startdec'=> 63744, 'enddec'=>64255 , 'range'=>'CJK Compatibility Ideographs', 'cjk'=>true),
+array('starthex'=> 'FB00', 'endhex'=>'FB4F', 'startdec'=> 64256, 'enddec'=>64335 , 'range'=>'Alphabetic Presentation Forms'),
+array('starthex'=> 'FB50', 'endhex'=>'FDFF', 'startdec'=> 64336, 'enddec'=>65023 , 'range'=>'Arabic Presentation Forms-A', 'rtl'=>true),
+
+array('starthex'=> 'FE00', 'endhex'=>'FE0F', 'startdec'=> 65024, 'enddec'=> 65039, 'range'=>'Variation Selectors'),
+
+array('starthex'=> 'FE10', 'endhex'=>'FE1F', 'startdec'=> 65040, 'enddec'=> 65055, 'range'=>'Vertical Forms'),
+array('starthex'=> 'FE20', 'endhex'=>'FE2F', 'startdec'=> 65056, 'enddec'=>65071 , 'range'=>'Combining Half Marks', 'combining'=>true),
+array('starthex'=> 'FE30', 'endhex'=>'FE4F', 'startdec'=> 65072, 'enddec'=>65103 , 'range'=>'CJK Compatibility Forms', 'cjk'=>true),
+array('starthex'=> 'FE50', 'endhex'=>'FE6F', 'startdec'=> 65104, 'enddec'=>65135 , 'range'=>'Small Form Variants', 'cjk'=>true),
+array('starthex'=> 'FE70', 'endhex'=>'FEFE', 'startdec'=> 65136, 'enddec'=>65278 , 'range'=>'Arabic Presentation Forms-B', 'rtl'=>true),
+array('starthex'=> 'FEFF', 'endhex'=>'FEFF', 'startdec'=> 65279, 'enddec'=>65279 , 'range'=>'Specials'),
+array('starthex'=> 'FF00', 'endhex'=>'FFEF', 'startdec'=> 65280, 'enddec'=>65519 , 'range'=>'Halfwidth and Fullwidth Forms', 'cjk'=>true),
+array('starthex'=> 'FFF0', 'endhex'=>'FFFD', 'startdec'=> 65520, 'enddec'=>65533 , 'range'=>'Specials'),
+
+/* PLANE 1 */
+
+array('starthex'=> '10000', 'endhex'=>'1007F', 'startdec'=> 65536 , 'enddec'=> 65663, 'range'=>'Linear B Syllabary'),
+array('starthex'=> '10080', 'endhex'=>'100FF', 'startdec'=> 65664 , 'enddec'=> 65791, 'range'=>'Linear B Ideograms'),
+array('starthex'=> '10100', 'endhex'=>'1013F', 'startdec'=> 65792 , 'enddec'=> 65855, 'range'=>'Aegean Numbers'),
+array('starthex'=> '10140', 'endhex'=>'1018F', 'startdec'=> 65856 , 'enddec'=> 65935, 'range'=>'Ancient Greek Numbers'),
+array('starthex'=> '10190', 'endhex'=>'101CF', 'startdec'=> 65936 , 'enddec'=> 65999, 'range'=>'Ancient Symbols'),
+array('starthex'=> '101D0', 'endhex'=>'101FF', 'startdec'=> 66000 , 'enddec'=> 66047, 'range'=>'Phaistos Disc'),
+array('starthex'=> '10280', 'endhex'=>'1029F', 'startdec'=> 66176 , 'enddec'=> 66207, 'range'=>'Lycian'),
+array('starthex'=> '102A0', 'endhex'=>'102DF', 'startdec'=> 66208 , 'enddec'=> 66271, 'range'=>'Carian'),
+array('starthex'=> '10300', 'endhex'=>'1032F', 'startdec'=> 66304 , 'enddec'=> 66351, 'range'=>'Old Italic'),
+array('starthex'=> '10330', 'endhex'=>'1034F', 'startdec'=> 66352 , 'enddec'=> 66383, 'range'=>'Gothic'),
+array('starthex'=> '10380', 'endhex'=>'1039F', 'startdec'=> 66432 , 'enddec'=> 66463, 'range'=>'Ugaritic'),
+array('starthex'=> '103A0', 'endhex'=>'103DF', 'startdec'=> 66464 , 'enddec'=> 66527, 'range'=>'Old Persian'),
+array('starthex'=> '10400', 'endhex'=>'1044F', 'startdec'=> 66560 , 'enddec'=> 66639, 'range'=>'Deseret'),
+array('starthex'=> '10450', 'endhex'=>'1047F', 'startdec'=> 66640 , 'enddec'=> 66687, 'range'=>'Shavian'),
+array('starthex'=> '10480', 'endhex'=>'104AF', 'startdec'=> 66688 , 'enddec'=> 66735, 'range'=>'Osmanya'),
+array('starthex'=> '10800', 'endhex'=>'1083F', 'startdec'=> 67584 , 'enddec'=> 67647, 'range'=>'Cypriot Syllabary'),
+array('starthex'=> '10900', 'endhex'=>'1091F', 'startdec'=> 67840 , 'enddec'=> 67871, 'range'=>'Phoenician'),
+array('starthex'=> '10920', 'endhex'=>'1093F', 'startdec'=> 67872 , 'enddec'=> 67903, 'range'=>'Lydian'),
+array('starthex'=> '10A00', 'endhex'=>'10A5F', 'startdec'=> 68096 , 'enddec'=> 68191, 'range'=>'Kharoshthi'),
+
+array('starthex'=> '11080', 'endhex'=>'110CF', 'startdec'=> 69760 , 'enddec'=> 69839, 'range'=>'Kaithi'),
+
+array('starthex'=> '12000', 'endhex'=>'123FF', 'startdec'=> 73728 , 'enddec'=> 74751, 'range'=>'Cuneiform (Sumero-Akkadian)'),
+array('starthex'=> '12400', 'endhex'=>'1247F', 'startdec'=> 74752 , 'enddec'=> 74879, 'range'=>'Cuneiform Numbers and Punctuation'),
+
+array('starthex'=> '13000', 'endhex'=>'1342F', 'startdec'=> 77824 , 'enddec'=> 78895, 'range'=>'Egyptian Hieroglyphs'),
+
+array('starthex'=> '1D000', 'endhex'=>'1D0FF', 'startdec'=> 118784 , 'enddec'=> 119039, 'range'=>'Byzantine Musical Symbols'),
+array('starthex'=> '1D100', 'endhex'=>'1D1FF', 'startdec'=> 119040 , 'enddec'=> 119295, 'range'=>'Musical Symbols'),
+array('starthex'=> '1D200', 'endhex'=>'1D24F', 'startdec'=> 119296 , 'enddec'=> 119375, 'range'=>'Ancient Greek Musical Notation'),
+array('starthex'=> '1D300', 'endhex'=>'1D35F', 'startdec'=> 119552 , 'enddec'=> 119647, 'range'=>'Tai Xuan Jing Symbols'),
+array('starthex'=> '1D360', 'endhex'=>'1D37F', 'startdec'=> 119648 , 'enddec'=> 119679, 'range'=>'Counting Rod Numerals'),
+array('starthex'=> '1D400', 'endhex'=>'1D7FF', 'startdec'=> 119808 , 'enddec'=> 120831, 'range'=>'Mathematical Alphanumeric Symbols'),
+array('starthex'=> '1F000', 'endhex'=>'1F02F', 'startdec'=> 126976 , 'enddec'=> 127023, 'range'=>'Mahjong Tiles'),
+array('starthex'=> '1F030', 'endhex'=>'1F09F', 'startdec'=> 127024 , 'enddec'=> 127135, 'range'=>'Domino Tiles'),
+
+/* PLANE 2 */
+
+array('starthex'=> '20000', 'endhex'=>'2A6DF', 'startdec'=> 131072 , 'enddec'=> 173791, 'range'=>'CJK Unified Ideographs Extension B'),
+array('starthex'=> '2A700', 'endhex'=>'2B734', 'startdec'=> 173824 , 'enddec'=> 177972, 'range'=>'CJK Unified Ideographs Extension C'),
+array('starthex'=> '2F800', 'endhex'=>'2FA1F', 'startdec'=> 194560 , 'enddec'=> 195103, 'range'=>'CJK Compatibility Ideographs Supplement'),
+
+);
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_collections.php b/inc/3rdparty/libraries/mpdf/utils/font_collections.php
new file mode 100644 (file)
index 0000000..20f387e
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+/* This script prints out details of any TrueType collection font files
+   in your font directory. Files ending wih .otc are examined.
+   Point your browser to 
+   http://your.domain/your_path_to _mpdf/utils/font_collections.php
+   By default this will examine the folder /ttfonts/ (or the default font
+   directory defined by _MPDF_TTFONTPATH.
+   You can optionally define an alternative folder to examine by setting 
+   the variable below (must be a relative path, or filesystem path):
+*/
+
+
+$checkdir = '';
+
+
+//////////////////////////////////
+//////////////////////////////////
+//////////////////////////////////
+
+ini_set("memory_limit","256M");
+
+
+define('_MPDF_PATH','../');
+
+include("../mpdf.php");
+$mpdf=new mPDF('');
+if ($checkdir) { 
+       $ttfdir = $checkdir;
+}
+else { $ttfdir = _MPDF_TTFONTPATH; }
+
+
+
+$mqr=ini_get("magic_quotes_runtime");
+if ($mqr) { set_magic_quotes_runtime(0); }
+if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); }
+$ttf = new TTFontFile_Analysis();
+
+$ff = scandir($ttfdir);
+
+echo '<h3>Font collection files found in '.$ttfdir.' directory</h3>';
+foreach($ff AS $f) {
+       $ret = array();
+       if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-4,4))=='.ttcf') {      // Mac ttcf
+               $ttf->getTTCFonts($ttfdir.$f);
+               $nf = $ttf->numTTCFonts;
+               echo '<p>Font collection file ('.$f.') contains the following fonts:</p>';
+               for ($i=1; $i<=$nf; $i++) {
+                       $ret = $ttf->extractCoreInfo($ttfdir.$f, $i);
+                       $tfname = $ret[0];
+                       $bold = $ret[1];
+                       $italic = $ret[2];
+                       $fname = strtolower($tfname );
+                       $fname = preg_replace('/[ ()]/','',$fname );
+                       $style = '';
+                       if ($bold) { $style .= 'Bold'; }
+                       if ($italic) { $style .= 'Italic'; }
+                       if (!$style) { $style = 'Regular'; }
+
+
+                       echo '<div>['.$i.'] '.$tfname.' ('.$fname.') '.$style.'</div>';
+
+               }
+               echo '<hr />';
+       }
+}
+
+
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_coverage.php b/inc/3rdparty/libraries/mpdf/utils/font_coverage.php
new file mode 100644 (file)
index 0000000..5286d74
--- /dev/null
@@ -0,0 +1,255 @@
+<?php
+
+/* This script prints out the Unicode coverage of all TrueType font files
+   in your font directory. 
+   Point your browser to 
+   http://your.domain/your_path_to _mpdf/utils/font_coverage.php
+   By default this will examine the folder /ttfonts/ (or the default font
+   directory defined by _MPDF_TTFONTPATH.
+   You can optionally define an alternative folder to examine by setting 
+   the variable below (must be a relative path, or filesystem path):
+*/
+
+
+$checkdir = '';
+
+
+//////////////////////////////////
+//////////////////////////////////
+//////////////////////////////////
+
+
+set_time_limit(600);
+ini_set("memory_limit","256M");
+
+//==============================================================
+//==============================================================
+include("../mpdf.php");
+
+$mpdf=new mPDF('','A4-L','','',10,10,10,10); 
+$mpdf->SetDisplayMode('fullpage');
+$mpdf->useSubstitutions = true;
+$mpdf->debug = true;
+$mpdf->simpleTables = true;
+if ($checkdir) { 
+       $ttfdir = $checkdir;
+}
+else { $ttfdir = _MPDF_TTFONTPATH; }
+
+
+
+$mqr=ini_get("magic_quotes_runtime");
+if ($mqr) { set_magic_quotes_runtime(0); }
+if (!class_exists('TTFontFile_Analysis', false)) { include(_MPDF_PATH .'classes/ttfontsuni_analysis.php'); }
+
+//==============================================================
+       $smp = true;
+       $maxt = 131071;
+//==============================================================
+//==============================================================
+$unifile = file('UnicodeData.txt');
+$unichars = array();
+foreach($unifile AS $line) {
+       if (preg_match('/<control>/',$line,$m)) { 
+         $rangename = '';
+         continue;
+       }
+       else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), Last>/',$line,$m)) { 
+         if ($rangename && $rangename == $m[2]) {
+               $endrange = hexdec($m[1]);
+               for ($i=$startrange;$i<=$endrange; $i++) {
+                       $unichars[$i] = $i;
+               }
+         }
+         $rangename = '';
+       }
+       else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});<(.*?), First>/',$line,$m)) { 
+         $startrange = hexdec($m[1]);
+         $rangename = $m[2];
+       }
+       else if (preg_match('/^([12]{0,1}[0-9A-Za-z]{4});/',$line,$m)) { 
+         $unichars[hexdec($m[1])] = hexdec($m[1]);
+         $rangename = '';
+       }
+}
+
+// loads array $unicode_ranges
+include('UnicodeRanges.php'); 
+//==============================================================
+$html = '<html><head><style>td { border: 0.1mm solid #555555; } 
+body { font-weight: normal; font-family: helvetica;font-size:8pt; }
+td { font-family: helvetica;font-size:8pt; vertical-align: top;}
+</style></head><body>';
+
+//==============================================================
+$ff = scandir($ttfdir);
+$tempfontdata = array();
+foreach($ff AS $f) {
+       $ttf = new TTFontFile_Analysis();
+       $ret = array();
+       $isTTC = false;
+       if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf') {
+               $ret[] = $ttf->extractCoreInfo($ttfdir.$f);
+       }
+       for ($i=0; $i<count($ret); $i++) {
+          if (is_array($ret[$i])) { 
+               $tfname = $ret[$i][0];
+               $bold = $ret[$i][1];
+               $italic = $ret[$i][2];
+               $fname = strtolower($tfname );
+               $fname = preg_replace('/[ ()]/','',$fname );
+               //$tempfonttrans[$tfname] = $fname;
+               $style = '';
+               if ($bold) { $style .= 'B'; }
+               if ($italic) { $style .= 'I'; }
+               if (!$style) { 
+                       $tempfontdata[$fname]['file'] = $f;
+                       if ($isTTC) { 
+                               $tempfontdata[$fname]['TTCfontID'] = $ret[$i][4];
+                       }
+               }
+          }
+       }
+       unset($ttf);
+
+}
+
+$fullcovers = array();
+$nearlycovers = array();
+ksort($tempfontdata);
+$ningroup = 14;
+$nofgroups = ceil(count($unicode_ranges)/$ningroup);
+
+//==============================================================
+
+
+for ($urgp = 0; $urgp < $nofgroups; $urgp++) {
+
+
+   $html .= '<table cellpadding="2" cellspacing="0" style="page-break-inside:avoid; text-align:center; border-collapse: collapse; ">';
+   $html .= '<thead><tr><td></td>';
+
+   foreach($unicode_ranges AS $urk => $ur) {
+          if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) {
+                               $rangekey = $urk;
+                               $range = $ur['range'];
+                               $rangestart = $ur['starthex'];
+                               $rangeend = $ur['endhex'];
+                               $html .= '<td style="font-family:helvetica;font-size:8pt;font-weight:bold;">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')</td>';
+          }
+   }
+   $html .= '</tr></thead>';
+
+
+  foreach ($tempfontdata AS $fname => $v) {
+       $cw = '';
+       if (file_exists((_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'))) { $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); }
+       else {
+               $mpdf->fontdata[$fname]['R'] = $tempfontdata[$fname]['file']; 
+               $mpdf->AddFont($fname);
+               $cw = file_get_contents(_MPDF_TTFONTDATAPATH.$fname.'.cw.dat'); 
+       }
+       if (!$cw) {
+               continue;
+               die("Font data not available for $fname");
+       }
+
+       $counter=0;
+       $max = $maxt;
+
+       // create HTML content
+       $html .= '<tr>';
+       $html .= '<td>'.$fname.'</td>';
+
+       foreach($unicode_ranges AS $urk => $ur) {
+          if ($urk >= ($urgp*$ningroup) && $urk < (($urgp+1)*$ningroup)) {
+           if ($ur['pua'] || $ur['reserved'] || $ur['control']) {
+               $html .= '<td style="background-color: #000000;"></td>'; 
+           }
+           else {
+               $rangekey = $urk;
+               $range = $ur['range'];
+               $rangestart = $ur['starthex'];
+               $rangeend = $ur['endhex'];
+               $rangestartdec = $ur['startdec'];
+               $rangeenddec = $ur['enddec'];
+               $uniinrange = 0;
+               $fontinrange = 0;
+               for ($i=$rangestartdec; $i<=$rangeenddec; $i++) {
+                       //if (isset($cw[$i])) { $fontinrange++; }
+                       if ($mpdf->_charDefined($cw, $i)) { $fontinrange++; }
+                       if (isset($unichars[$i])) { $uniinrange++; }
+               }
+               if ($uniinrange) {
+                       if ($fontinrange) {
+                               $pc = ($fontinrange/$uniinrange);
+                               $str = '('.$fontinrange.'/'.$uniinrange.')';
+                               if ($pc==1) { 
+                                       $fullcovers[$urk][] = $fname;
+                                       $html .= '<td style="background-color: #00FF00;"></td>'; 
+                               }
+                               else if ($pc>1) { 
+                                       $fullcovers[$urk][] = $fname;
+                                       $html .= '<td style="background-color: #00FF00;">'.$str.'</td>'; 
+                               }
+                               else if ($pc>=0.9) { 
+                                       $html .= '<td style="background-color: #AAFFAA;">'.$str.'</td>'; 
+                                       $nearlycovers[$urk][] = $fname;
+                               }
+                               else if ($pc>0.75) { $html .= '<td style="background-color: #00FFAA;">'.$str.'</td>'; }
+                               else if ($pc>0.5) { $html .= '<td style="background-color: #AAAAFF;">'.$str.'</td>'; }
+                               else if ($pc>0.25) { $html .= '<td style="background-color: #FFFFAA;">'.$str.'</td>'; }
+                               else { $html .= '<td style="background-color: #FFAAAA;">'.$str.'</td>'; }
+                       }
+                       else { $html .= '<td style="background-color: #555555;">(0/0)</td>'; }
+               }
+               else { $html .= '<td style="background-color: #000000;"></td>'; }
+           }
+          }
+       }
+
+
+       $html .= '</tr>';
+
+   }
+//==============================================================
+  $html .= '</table><pagebreak />';
+}
+
+$html .= '<h4>Fonts with full coverage of Unicode Ranges</h4>';
+$html .= '<table>';
+//$html .= '<tr><td></td><td></td></tr>';
+foreach($unicode_ranges AS $urk => $ur) {
+       if ($ur['pua'] || $ur['reserved'] || $ur['control']) { continue; }
+       $rangekey = $urk;
+       $range = $ur['range'];
+       $rangestart = $ur['starthex'];
+       $rangeend = $ur['endhex'];
+       $ext = $ext2 = '';
+       if ($ur['combining']) { $ext = 'background-color:#DDDDFF;'; $ext2 = '<br /><span style="color:#AA0000">Special positioning required</span>'; }
+       if ($ur['vertical']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '<br /><span style="color:#AA0000">Vertical positioning required</span>'; }
+       if ($ur['special']) { $ext = 'background-color:#FFDDDD;'; $ext2 = '<br /><span style="color:#AA0000">Special processing required</span>'; }
+
+
+       $html .= '<tr><td style="font-family:helvetica;font-size:8pt;font-weight:bold;'.$ext.'">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')'.$ext2.'</td>';
+       $arr = $fullcovers[$urk];
+       $narr = $nearlycovers[$urk];
+       if (is_array($arr)) { $html .= '<td>'. implode(', ',$arr). '</td></tr>'; }
+       else if (is_array($narr)) { $html .= '<td style="background-color: #AAAAAA;">'. implode(', ',$narr). ' (>90%)</td></tr>'; }
+       else { $html .= '<td style="background-color: #555555;"> </td></tr>'; }
+}
+$html.= '</table>';
+
+
+//==============================================================
+echo $html;
+
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_dump.php b/inc/3rdparty/libraries/mpdf/utils/font_dump.php
new file mode 100644 (file)
index 0000000..9073140
--- /dev/null
@@ -0,0 +1,222 @@
+<?php
+
+/* 
+   This script prints out all characters in a TrueType font file
+   to a PDF document. Point your browser to 
+   http://your.domain/your_path_to _mpdf/utils/font_dump.php
+   The font file must be located in /ttfonts/ (or the default font
+   directory defined by _MPDF_TTFONTPATH.
+   By default this will examine the font dejavusanscondensed.
+   You can optionally define an alternative font file to examine by setting 
+   the variable below (must be a relative path, or filesystem path):
+*/
+
+
+$font = 'dejavusanscondensed'; // Use internal mPDF font-name
+
+$showmissing = true;   // Show all missing unicode blocks / characters
+
+
+//////////////////////////////////
+//////////////////////////////////
+//////////////////////////////////
+
+set_time_limit(600);
+ini_set("memory_limit","256M");
+
+//==============================================================
+//==============================================================
+define('_MPDF_URI', '../');
+include("../mpdf.php");
+
+$mpdf=new mPDF(''); 
+$mpdf->StartProgressBarOutput(2);
+
+$mpdf->SetDisplayMode('fullpage');
+
+$mpdf->useSubstitutions = true;
+$mpdf->debug = true;
+$mpdf->simpleTables = true;
+// force fonts to be embedded whole i.e. NOT susbet
+$mpdf->percentSubset = 0;
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+// This generates a .mtx.php file if not already generated
+$mpdf->WriteHTML('<style>td { border: 0.1mm solid #555555; } body { font-weight: normal; }</style>');
+$mpdf->WriteHTML('<h3 style="font-family:'.$font.'">'.strtoupper($font).'</h3>');      // Separate Paragraphs  defined by font
+$html = '';
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+$unifile = file('UnicodeData.txt');
+$unichars = array();
+
+foreach($unifile AS $line) {
+       if ($smp && preg_match('/^(1[0-9A-Za-z]{4});/',$line,$m)) { 
+         $unichars[hexdec($m[1])] = hexdec($m[1]);
+       }
+       else if (preg_match('/^([0-9A-Za-z]{4});/',$line,$m)) { 
+         $unichars[hexdec($m[1])] = hexdec($m[1]);
+       }
+}
+
+// loads array $unicode_ranges
+include('UnicodeRanges.php'); 
+//==============================================================
+//==============================================================
+
+
+
+$cw = file_get_contents(_MPDF_TTFONTDATAPATH.$font.'.cw.dat');
+if (!$cw) { die("Error - Must be able to read font metrics file: "._MPDF_TTFONTDATAPATH.$font.'.cw.dat'); }
+$counter=0;
+
+
+include(_MPDF_TTFONTDATAPATH.$font.'.mtx.php');
+
+if ($smp) {
+       $max = 131071;
+}
+else { 
+       $max = 65535;
+}
+
+
+$justfinishedblank = false;
+$justfinishedblankinvalid = false;
+
+               foreach($unicode_ranges AS $urk => $ur) {
+                       if (0 >= $ur['startdec'] && 0 <= $ur['enddec']) {
+                               $rangekey = $urk;
+                               $range = $ur['range'];
+                               $rangestart = $ur['starthex'];
+                               $rangeend = $ur['endhex'];
+                               break;
+                       }
+               }
+         $lastrange  = $range ;
+    // create HTML content
+    $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
+    $html .= '<tr><td colspan="18" style="font-family:helvetica;font-weight:bold">'.strtoupper($font).'</td></tr>';
+    $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart .'-U+'.$rangeend.')</td></tr>';
+    $html .= '<tr><td></td>';
+
+    $html .= '<td></td>';
+    for ($i = 0; $i < 16; $i++) {
+            $html .= '<td><b>-'.sprintf('%X', $i).'</b></td>';
+    }
+
+
+    // print each character
+    for ($i = 32; $i < $max; ++$i) {
+        if (($i > 0) AND (($i % 16) == 0)) {
+               $notthisline = true;
+               while($notthisline) {
+                  for ($j = 0; $j < 16; $j++) {
+                       if ($mpdf->_charDefined($cw, ($i + $j))) {
+                       //if (isset($cw[($i+$j)])) { 
+                               $notthisline = false; 
+                       }
+                  }
+                  if ($notthisline) { 
+                   if ($showmissing) {
+                       $range = '';
+                       foreach($unicode_ranges AS $urk => $ur) {
+                               if ($i >= $ur['startdec'] && $i <= $ur['enddec']) {
+                                       $rangekey = $urk;
+                                       $range = $ur['range'];
+                                       $rangestart = $ur['starthex'];
+                                       $rangeend = $ur['endhex'];
+                                       break;
+                               }
+                       }
+                       $anyvalid = false;
+                       for ($j = 0; $j < 16; $j++) {
+                               if (isset($unichars[$i+$j])) { $anyvalid = true; break; }
+                       }
+                       if ($range && $range == $lastrange) {
+                               if (!$anyvalid) { 
+                                       if (!$justfinishedblankinvalid) { 
+                                               $html .= '<tr><td colspan="18" style="background-color:#555555; font-size: 4pt;">&nbsp;</td></tr>'; 
+                                       }
+                                       $justfinishedblankinvalid = true;
+                               }
+                               else if (!$justfinishedblank ) { 
+                                       $html .= '<tr><td colspan="18" style="background-color:#FFAAAA; font-size: 4pt;">&nbsp;</td></tr>'; 
+                                       $justfinishedblank = true;
+                               }
+                       }
+                       else if($range) {
+                               $html .= '</tr></table><br />';
+                               $mpdf->WriteHTML($html); $html = '';
+                               $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
+                               $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')</td></tr>';
+                               $html .= '<tr><td></td>';
+                               $html .= '<td></td>';
+                               for ($k = 0; $k < 16; $k++) {
+                             $html .= '<td><b>-'.sprintf('%X', $k).'</b></td>';
+                               }
+                               $justfinishedblank = false;
+                               $justfinishedblankinvalid = false;
+                       }
+                       $lastrange = $range ;
+                   }
+                   $i +=16; 
+                   if ($i > $max) { break 2; }
+                  }
+               }
+               foreach($unicode_ranges AS $urk => $ur) {
+                       if ($i >= $ur['startdec'] && $i <= $ur['enddec']) {
+                               $rangekey = $urk;
+                               $range = $ur['range'];
+                               $rangestart = $ur['starthex'];
+                               $rangeend = $ur['endhex'];
+                               break;
+                       }
+               }
+
+               if ($i > 0 && ($i % 16) == 0 && ($range != $lastrange)) {
+                       $html .= '</tr></table><br />';
+                       $mpdf->WriteHTML($html); $html = '';
+                       $html .= '<table cellpadding="2" cellspacing="0" style="font-family:'.$font.';text-align:center; border-collapse: collapse; ">';
+                       $html .= '<tr><td colspan="18" style="font-family:helvetica;font-size:8pt;font-weight:bold">'.strtoupper($range).' (U+'.$rangestart.'-U+'.$rangeend.')</td></tr>';
+                       $html .= '<tr><td></td>';
+                       $html .= '<td></td>';
+                       for ($k = 0; $k < 16; $k++) {
+                     $html .= '<td><b>-'.sprintf('%X', $k).'</b></td>';
+                       }
+               }
+               $lastrange  = $range ;
+               $justfinishedblank = false;
+               $justfinishedblankinvalid = false;
+            $html .= '</tr><tr><td><i>'.(floor($i / 16)*16).'</i></td>';
+            $html .= '<td><b>'.sprintf('%03X', floor($i / 16)).'-</b></td>';
+        }
+         if ($mpdf->_charDefined($cw, $i)) { $html .= '<td>&#'.$i.';</td>'; $counter++; }
+         else if (isset($unichars[$i])) { $html .= '<td style="background-color: #FFAAAA;"></td>'; }
+         else { $html .= '<td style="background-color: #555555;"></td>'; }
+    }
+
+    if (($i % 16) > 0) {
+       for ($j = ($i % 16); $j < 16; ++$j) { $html .= '<td style="background-color: #555555;"></td>'; }
+    }
+    $html .= '</tr></table><br />';
+//==============================================================
+//==============================================================
+$mpdf->WriteHTML($html);       // Separate Paragraphs  defined by font
+
+$mpdf->Output(); 
+exit;
+
+//==============================================================
+//==============================================================
+//==============================================================
+//==============================================================
+
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/font_names.php b/inc/3rdparty/libraries/mpdf/utils/font_names.php
new file mode 100644 (file)
index 0000000..21773b8
--- /dev/null
@@ -0,0 +1,200 @@
+<?php
+
+/* This script examines your font directory. 
+   Point your browser to 
+   http://your.domain/your_path_to _mpdf/utils/font_names.php
+   By default this will examine the folder /ttfonts/ (or the default font
+   directory defined by _MPDF_TTFONTPATH.
+   You can optionally define an alternative folder to examine by setting 
+   the variable checkdir below (must be a relative path, or filesystem path).
+   You can optionally output just the font samples as a PDF file by setting $pdf=true.
+*/
+
+
+$checkdir = '';
+
+$pdf = false;
+
+//////////////////////////////////
+//////////////////////////////////
+//////////////////////////////////
+
+ini_set("memory_limit","256M");
+
+define('_MPDF_PATH','../');
+
+include("../mpdf.php");
+$mpdf=new mPDF('s');
+$mpdf->useSubstitutions = true;
+if ($checkdir) { 
+       $ttfdir = $checkdir; 
+}
+else { $ttfdir = _MPDF_TTFONTPATH; }
+
+$mqr=ini_get("magic_quotes_runtime");
+if ($mqr) { set_magic_quotes_runtime(0); }
+if (!class_exists('TTFontFile', false)) { include(_MPDF_PATH .'classes/ttfontsuni.php'); }
+$ttf = new TTFontFile();
+
+$tempfontdata = array();
+$tempsansfonts = array();
+$tempseriffonts = array();
+$tempmonofonts = array();
+$tempfonttrans = array();
+
+$ff = scandir($ttfdir);
+
+foreach($ff AS $f) {
+       $ret = array();
+       $isTTC = false;
+       if (strtolower(substr($f,-4,4))=='.ttc' || strtolower(substr($f,-5,5))=='.ttcf') {      // Mac ttcf
+               $isTTC = true;
+               $ttf->getTTCFonts($ttfdir.$f);
+               $nf = $ttf->numTTCFonts;
+               for ($i=1; $i<=$nf; $i++) {
+                       $ret[] = $ttf->extractCoreInfo($ttfdir.$f, $i);
+               }
+       }
+       else if (strtolower(substr($f,-4,4))=='.ttf' || strtolower(substr($f,-4,4))=='.otf' ) {
+               $ret[] = $ttf->extractCoreInfo($ttfdir.$f);
+       }
+       for ($i=0; $i<count($ret); $i++) {
+          if (!is_array($ret[$i])) { 
+               if (!$pdf) echo $ret[$i].'<br />'; 
+          }
+          else {
+               $tfname = $ret[$i][0];
+               $bold = $ret[$i][1];
+               $italic = $ret[$i][2];
+               $fname = strtolower($tfname );
+               $fname = preg_replace('/[ ()]/','',$fname );
+               $tempfonttrans[$tfname] = $fname;
+               $style = '';
+               if ($bold) { $style .= 'B'; }
+               if ($italic) { $style .= 'I'; }
+               if (!$style) { $style = 'R'; }
+               $tempfontdata[$fname][$style] = $f;
+               if ($isTTC) { 
+                       $tempfontdata[$fname]['TTCfontID'][$style] = $ret[$i][4];
+               }
+               //if ($ret[$i][5]) { $tempfontdata[$fname]['rtl'] = true; }
+               //if ($ret[$i][7]) { $tempfontdata[$fname]['cjk'] = true; }
+               if ($ret[$i][8]) { $tempfontdata[$fname]['sip'] = true; }
+               if ($ret[$i][9]) { $tempfontdata[$fname]['smp'] = true; }
+
+               $ftype = $ret[$i][3];           // mono, sans or serif
+               if ($ftype=='sans') { $tempsansfonts[] = $fname; }
+               else if ($ftype=='serif') { $tempseriffonts[] = $fname; }
+               else if ($ftype=='mono') { $tempmonofonts[] = $fname; }
+          }
+       }
+
+}
+$tempsansfonts = array_unique($tempsansfonts);
+$tempseriffonts = array_unique($tempseriffonts );
+$tempmonofonts = array_unique($tempmonofonts );
+$tempfonttrans = array_unique($tempfonttrans);
+
+if (!$pdf) {
+       echo '<h3>Information</h3>';
+}
+
+foreach ($tempfontdata AS $fname => $v) {
+       if (!isset($tempfontdata[$fname]['R']) || !$tempfontdata[$fname]['R']) {
+               if (!$pdf) echo 'WARNING - Font file for '.$fname.' may be an italic cursive script, or extra-bold etc.<br />';
+               if (isset($tempfontdata[$fname]['I']) && $tempfontdata[$fname]['I']) {
+                       $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['I'];
+               }
+               else if (isset($tempfontdata[$fname]['B']) && $tempfontdata[$fname]['B']) {
+                       $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['B'];
+               }
+               else if (isset($tempfontdata[$fname]['BI']) && $tempfontdata[$fname]['BI']) {
+                       $tempfontdata[$fname]['R'] = $tempfontdata[$fname]['BI'];
+               }
+       }
+       if (isset($tempfontdata[$fname]['smp']) && $tempfontdata[$fname]['smp']) {
+               if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 1 SMP<br />';
+               $tempfontdata[$fname]['smp'] = false;
+       }
+       if (isset($tempfontdata[$fname]['sip']) && $tempfontdata[$fname]['sip']) {
+               if (!$pdf) echo 'INFO - Font file '.$fname.' contains characters in Unicode Plane 2 SIP<br />';
+               if (preg_match('/^(.*)-extb/',$fname, $fm)) {
+                       if (isset($tempfontdata[($fm[1])]) && $tempfontdata[($fm[1])]) {
+                               $tempfontdata[($fm[1])]['sip-ext'] = $fname;
+                               if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1]).'<br />';
+                       }
+                       else if (isset($tempfontdata[($fm[1].'-exta')]) && $tempfontdata[($fm[1].'-exta')]) {
+                               $tempfontdata[($fm[1].'-exta')]['sip-ext'] = $fname;
+                               if (!$pdf) echo 'INFO - Font file '.$fname.' has been defined as a CJK ext-B for '.($fm[1].'-exta').'<br />';
+                       }
+               }
+               // else { unset($tempfontdata[$fname]['sip']); }
+       }
+       unset($tempfontdata[$fname]['sip']);
+       unset($tempfontdata[$fname]['smp']); 
+}
+
+$mpdf->fontdata = array_merge($tempfontdata ,$mpdf->fontdata);
+
+       $mpdf->available_unifonts = array();
+       foreach ($mpdf->fontdata AS $f => $fs) {
+               if (isset($fs['R']) && $fs['R']) { $mpdf->available_unifonts[] = $f; }
+               if (isset($fs['B']) && $fs['B']) { $mpdf->available_unifonts[] = $f.'B'; }
+               if (isset($fs['I']) && $fs['I']) { $mpdf->available_unifonts[] = $f.'I'; }
+               if (isset($fs['BI']) && $fs['BI']) { $mpdf->available_unifonts[] = $f.'BI'; }
+       }
+
+       $mpdf->default_available_fonts = $mpdf->available_unifonts;
+
+if (!$pdf) {
+       echo '<hr />';
+       echo '<h3>Font names as parsed by mPDF</h3>';
+}
+
+ksort($tempfonttrans);
+$html = '';
+foreach($tempfonttrans AS $on=>$mn) {
+       if (!file_exists($ttfdir.$mpdf->fontdata[$mn]['R'])) { continue; }
+       $ond = '"'.$on.'"'; 
+       $html .= '<p style="font-family:'.$on.';">'.$ond.' font is available as '.$mn;
+       if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) {
+               $html .= '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext'];
+       }
+       $html .= '</p>';
+}
+
+if ($pdf) {
+       $mpdf->WriteHTML($html);
+       $mpdf->Output();
+       exit;
+}
+
+foreach($tempfonttrans AS $on=>$mn) {
+       $ond = '"'.$on.'"'; 
+       echo '<div style="font-family:\''.$on.'\';">'.$ond.' font is available as '.$mn;
+       if (isset($mpdf->fontdata[$mn]['sip-ext']) && $mpdf->fontdata[$mn]['sip-ext']) {
+               echo '; CJK ExtB: '.$mpdf->fontdata[$mn]['sip-ext'];
+       }
+       echo '</div>';
+}
+echo '<hr />';
+
+echo '<h3>Sample config_fonts.php file</h3>';
+echo '<div>Remember to edit the following arrays to place your preferred default first in order:</div>';
+
+echo '<pre>';
+
+ksort($tempfontdata);
+echo '$this->fontdata = '.var_export($tempfontdata,true).";\n";
+
+sort($tempsansfonts);
+echo '$this->sans_fonts = array(\''.implode("', '", $tempsansfonts)."');\n";
+sort($tempseriffonts);
+echo '$this->serif_fonts = array(\''.implode("', '", $tempseriffonts)."');\n";
+sort($tempmonofonts);
+echo '$this->mono_fonts = array(\''.implode("', '", $tempmonofonts)."');\n";
+echo '</pre>';
+
+exit;
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/mpdf/utils/index.php b/inc/3rdparty/libraries/mpdf/utils/index.php
new file mode 100644 (file)
index 0000000..544f7f2
--- /dev/null
@@ -0,0 +1,26 @@
+
+<html>
+<head>
+</head>
+<body bgcolor=#FFFFFF text=#001C66>
+
+<h2>mPDF Font Utility scripts for Version 5.0</h2>
+<p>
+<a href="font_dump.php">Dump all characters from a font (font_dump.php)</a> 
+</p>
+<p>
+<a href="font_names.php">Show a list of all font names available (font_names.php)</a> 
+</p>
+<p>
+<a href="font_collections.php">Show fonts in Collections .ttc (font_collections.php)</a> 
+</p>
+<p>
+<a href="font_coverage.php">Show coverage of characters from all fonts (font_coverage.php)</a> 
+</p>
+
+<p>Edit the scripts to change the font folder if you wish - this is set by default to /ttfonts/</p>
+
+
+
+</body>
+</html>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/CharacterEntities.php
new file mode 100644 (file)
index 0000000..de896f8
--- /dev/null
@@ -0,0 +1,413 @@
+<?php
+
+/**
+ * Description of CharacterEntities
+ *
+ * @author Sander
+ */
+class CharacterEntities {
+       public static function convert($str){
+               //Assume the encoding is UTF-8 -> output is UTF-8
+               return $str;
+               //return utf8_encode($str);
+               //Convert to CP1252
+               list($from, $to) = CharacterEntities::generateTables();
+               return str_replace($from, $to, $str);
+       }
+
+       private static function generateTables(){
+               $from = array();
+               $to = array();
+
+               for($i = 0; $i < 256; $i++){
+                       $from[$i] = $to[$i] = chr($i);
+               }
+               
+               $from[0x80] = "€";
+               $from[0x82] = "‚";
+               $from[0x83] = "ƒ";
+               $from[0x84] = "„";
+               $from[0x85] = "…";
+               $from[0x86] = "†";
+               $from[0x87] = "‡";
+               $from[0x88] = "ˆ";
+               $from[0x89] = "‰";
+               $from[0x8A] = "Š";
+               $from[0x8B] = "‹";
+               $from[0x8C] = "Œ";
+               $from[0x8E] = "Ž";
+
+               $from[0x91] = "‘";
+               $from[0x92] = "’";
+               $from[0x93] = "“";
+               $from[0x94] = "”";
+               $from[0x95] = "•";
+               $from[0x96] = "–";
+               $from[0x97] = "—";
+               $from[0x98] = "˜";
+               $from[0x99] = "™";
+               $from[0x9A] = "š";
+               $from[0x9B] = "›";
+               $from[0x9C] = "œ";
+               $from[0x9E] = "ž";
+               $from[0x9F] = "Ÿ";
+
+               $from[0xA1] = "¡";
+               $from[0xA2] = "¢";
+               $from[0xA3] = "£";
+               $from[0xA4] = "¤";
+               $from[0xA5] = "¥";
+               $from[0xA6] = "¦";
+               $from[0xA7] = "§";
+               $from[0xA8] = "¨";
+               $from[0xA9] = "©";
+               $from[0xAA] = "ª";
+               $from[0xAB] = "«";
+               $from[0xAC] = "¬";
+               $from[0xAE] = "®";
+               $from[0xAF] = "¯";
+
+               $from[0xB0] = "°";
+               $from[0xB1] = "±";
+               $from[0xB2] = "²";
+               $from[0xB3] = "³";
+               $from[0xB4] = "´";
+               $from[0xB5] = "µ";
+               $from[0xB6] = "¶";
+               $from[0xB7] = "·";
+               $from[0xB8] = "¸";
+               $from[0xB9] = "¹";
+               $from[0xBA] = "º";
+               $from[0xBB] = "»";
+               $from[0xBC] = "¼";
+               $from[0xBD] = "½";
+               $from[0xBE] = "¾";
+               $from[0xBF] = "¿";
+
+               $from[0xC0] = "À";
+               $from[0xC1] = "Á";
+               $from[0xC2] = "Â";
+               $from[0xC3] = "Ã";
+               $from[0xC4] = "Ä";
+               $from[0xC5] = "Å";
+               $from[0xC6] = "Æ";
+               $from[0xC7] = "Ç";
+               $from[0xC8] = "È";
+               $from[0xC9] = "É";
+               $from[0xCA] = "Ê";
+               $from[0xCB] = "Ë";
+               $from[0xCC] = "Ì";
+               $from[0xCD] = "Í";
+               $from[0xCE] = "Î";
+               $from[0xCF] = "Ï";
+
+               $from[0xD0] = "Ð";
+               $from[0xD1] = "Ñ";
+               $from[0xD2] = "Ò";
+               $from[0xD3] = "Ó";
+               $from[0xD4] = "Ô";
+               $from[0xD5] = "Õ";
+               $from[0xD6] = "Ö";
+               $from[0xD7] = "×";
+               $from[0xD8] = "Ø";
+               $from[0xD9] = "Ù";
+               $from[0xDA] = "Ú";
+               $from[0xDB] = "Û";
+               $from[0xDC] = "Ü";
+               $from[0xDD] = "Ý";
+               $from[0xDE] = "Þ";
+               $from[0xDF] = "ß";
+
+               $from[0xE0] = "à";
+               $from[0xE1] = "á";
+               $from[0xE2] = "â";
+               $from[0xE3] = "ã";
+               $from[0xE4] = "ä";
+               $from[0xE5] = "å";
+               $from[0xE6] = "æ";
+               $from[0xE7] = "ç";
+               $from[0xE8] = "è";
+               $from[0xE9] = "é";
+               $from[0xEA] = "ê";
+               $from[0xEB] = "ë";
+               $from[0xEC] = "ì";
+               $from[0xED] = "í";
+               $from[0xEE] = "î";
+               $from[0xEF] = "ï";
+
+               $from[0xF0] = "ð";
+               $from[0xF1] = "ñ";
+               $from[0xF2] = "ò";
+               $from[0xF3] = "ó";
+               $from[0xF4] = "ô";
+               $from[0xF5] = "õ";
+               $from[0xF6] = "ö";
+               $from[0xF7] = "÷";
+               $from[0xF8] = "ø";
+               $from[0xF9] = "ù";
+               $from[0xFA] = "ú";
+               $from[0xFB] = "û";
+               $from[0xFC] = "ü";
+               $from[0xFD] = "ý";
+               $from[0xFE] = "þ";
+               $from[0xFF] = "ÿ";
+               
+
+               return array($from, $to);
+       }
+       /*
+       00 = U+0000 : NULL
+01 = U+0001 : START OF HEADING
+02 = U+0002 : START OF TEXT
+03 = U+0003 : END OF TEXT
+04 = U+0004 : END OF TRANSMISSION
+05 = U+0005 : ENQUIRY
+06 = U+0006 : ACKNOWLEDGE
+07 = U+0007 : BELL
+08 = U+0008 : BACKSPACE
+09 = U+0009 : HORIZONTAL TABULATION
+0A = U+000A : LINE FEED
+0B = U+000B : VERTICAL TABULATION
+0C = U+000C : FORM FEED
+0D = U+000D : CARRIAGE RETURN
+0E = U+000E : SHIFT OUT
+0F = U+000F : SHIFT IN
+10 = U+0010 : DATA LINK ESCAPE
+11 = U+0011 : DEVICE CONTROL ONE
+12 = U+0012 : DEVICE CONTROL TWO
+13 = U+0013 : DEVICE CONTROL THREE
+14 = U+0014 : DEVICE CONTROL FOUR
+15 = U+0015 : NEGATIVE ACKNOWLEDGE
+16 = U+0016 : SYNCHRONOUS IDLE
+17 = U+0017 : END OF TRANSMISSION BLOCK
+18 = U+0018 : CANCEL
+19 = U+0019 : END OF MEDIUM
+1A = U+001A : SUBSTITUTE
+1B = U+001B : ESCAPE
+1C = U+001C : FILE SEPARATOR
+1D = U+001D : GROUP SEPARATOR
+1E = U+001E : RECORD SEPARATOR
+1F = U+001F : UNIT SEPARATOR
+20 = U+0020 : SPACE
+21 = U+0021 : EXCLAMATION MARK
+22 = U+0022 : QUOTATION MARK
+23 = U+0023 : NUMBER SIGN
+24 = U+0024 : DOLLAR SIGN
+25 = U+0025 : PERCENT SIGN
+26 = U+0026 : AMPERSAND
+27 = U+0027 : APOSTROPHE
+28 = U+0028 : LEFT PARENTHESIS
+29 = U+0029 : RIGHT PARENTHESIS
+2A = U+002A : ASTERISK
+2B = U+002B : PLUS SIGN
+2C = U+002C : COMMA
+2D = U+002D : HYPHEN-MINUS
+2E = U+002E : FULL STOP
+2F = U+002F : SOLIDUS
+30 = U+0030 : DIGIT ZERO
+31 = U+0031 : DIGIT ONE
+32 = U+0032 : DIGIT TWO
+33 = U+0033 : DIGIT THREE
+34 = U+0034 : DIGIT FOUR
+35 = U+0035 : DIGIT FIVE
+36 = U+0036 : DIGIT SIX
+37 = U+0037 : DIGIT SEVEN
+38 = U+0038 : DIGIT EIGHT
+39 = U+0039 : DIGIT NINE
+3A = U+003A : COLON
+3B = U+003B : SEMICOLON
+3C = U+003C : LESS-THAN SIGN
+3D = U+003D : EQUALS SIGN
+3E = U+003E : GREATER-THAN SIGN
+3F = U+003F : QUESTION MARK
+40 = U+0040 : COMMERCIAL AT
+41 = U+0041 : LATIN CAPITAL LETTER A
+42 = U+0042 : LATIN CAPITAL LETTER B
+43 = U+0043 : LATIN CAPITAL LETTER C
+44 = U+0044 : LATIN CAPITAL LETTER D
+45 = U+0045 : LATIN CAPITAL LETTER E
+46 = U+0046 : LATIN CAPITAL LETTER F
+47 = U+0047 : LATIN CAPITAL LETTER G
+48 = U+0048 : LATIN CAPITAL LETTER H
+49 = U+0049 : LATIN CAPITAL LETTER I
+4A = U+004A : LATIN CAPITAL LETTER J
+4B = U+004B : LATIN CAPITAL LETTER K
+4C = U+004C : LATIN CAPITAL LETTER L
+4D = U+004D : LATIN CAPITAL LETTER M
+4E = U+004E : LATIN CAPITAL LETTER N
+4F = U+004F : LATIN CAPITAL LETTER O
+50 = U+0050 : LATIN CAPITAL LETTER P
+51 = U+0051 : LATIN CAPITAL LETTER Q
+52 = U+0052 : LATIN CAPITAL LETTER R
+53 = U+0053 : LATIN CAPITAL LETTER S
+54 = U+0054 : LATIN CAPITAL LETTER T
+55 = U+0055 : LATIN CAPITAL LETTER U
+56 = U+0056 : LATIN CAPITAL LETTER V
+57 = U+0057 : LATIN CAPITAL LETTER W
+58 = U+0058 : LATIN CAPITAL LETTER X
+59 = U+0059 : LATIN CAPITAL LETTER Y
+5A = U+005A : LATIN CAPITAL LETTER Z
+5B = U+005B : LEFT SQUARE BRACKET
+5C = U+005C : REVERSE SOLIDUS
+5D = U+005D : RIGHT SQUARE BRACKET
+5E = U+005E : CIRCUMFLEX ACCENT
+5F = U+005F : LOW LINE
+60 = U+0060 : GRAVE ACCENT
+61 = U+0061 : LATIN SMALL LETTER A
+62 = U+0062 : LATIN SMALL LETTER B
+63 = U+0063 : LATIN SMALL LETTER C
+64 = U+0064 : LATIN SMALL LETTER D
+65 = U+0065 : LATIN SMALL LETTER E
+66 = U+0066 : LATIN SMALL LETTER F
+67 = U+0067 : LATIN SMALL LETTER G
+68 = U+0068 : LATIN SMALL LETTER H
+69 = U+0069 : LATIN SMALL LETTER I
+6A = U+006A : LATIN SMALL LETTER J
+6B = U+006B : LATIN SMALL LETTER K
+6C = U+006C : LATIN SMALL LETTER L
+6D = U+006D : LATIN SMALL LETTER M
+6E = U+006E : LATIN SMALL LETTER N
+6F = U+006F : LATIN SMALL LETTER O
+70 = U+0070 : LATIN SMALL LETTER P
+71 = U+0071 : LATIN SMALL LETTER Q
+72 = U+0072 : LATIN SMALL LETTER R
+73 = U+0073 : LATIN SMALL LETTER S
+74 = U+0074 : LATIN SMALL LETTER T
+75 = U+0075 : LATIN SMALL LETTER U
+76 = U+0076 : LATIN SMALL LETTER V
+77 = U+0077 : LATIN SMALL LETTER W
+78 = U+0078 : LATIN SMALL LETTER X
+79 = U+0079 : LATIN SMALL LETTER Y
+7A = U+007A : LATIN SMALL LETTER Z
+7B = U+007B : LEFT CURLY BRACKET
+7C = U+007C : VERTICAL LINE
+7D = U+007D : RIGHT CURLY BRACKET
+7E = U+007E : TILDE
+7F = U+007F : DELETE
+80 = U+20AC : EURO SIGN
+82 = U+201A : SINGLE LOW-9 QUOTATION MARK
+83 = U+0192 : LATIN SMALL LETTER F WITH HOOK
+84 = U+201E : DOUBLE LOW-9 QUOTATION MARK
+85 = U+2026 : HORIZONTAL ELLIPSIS
+86 = U+2020 : DAGGER
+87 = U+2021 : DOUBLE DAGGER
+88 = U+02C6 : MODIFIER LETTER CIRCUMFLEX ACCENT
+89 = U+2030 : PER MILLE SIGN
+8A = U+0160 : LATIN CAPITAL LETTER S WITH CARON
+8B = U+2039 : SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+8C = U+0152 : LATIN CAPITAL LIGATURE OE
+8E = U+017D : LATIN CAPITAL LETTER Z WITH CARON
+91 = U+2018 : LEFT SINGLE QUOTATION MARK
+92 = U+2019 : RIGHT SINGLE QUOTATION MARK
+93 = U+201C : LEFT DOUBLE QUOTATION MARK
+94 = U+201D : RIGHT DOUBLE QUOTATION MARK
+95 = U+2022 : BULLET
+96 = U+2013 : EN DASH
+97 = U+2014 : EM DASH
+98 = U+02DC : SMALL TILDE
+99 = U+2122 : TRADE MARK SIGN
+9A = U+0161 : LATIN SMALL LETTER S WITH CARON
+9B = U+203A : SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+9C = U+0153 : LATIN SMALL LIGATURE OE
+9E = U+017E : LATIN SMALL LETTER Z WITH CARON
+9F = U+0178 : LATIN CAPITAL LETTER Y WITH DIAERESIS
+A0 = U+00A0 : NO-BREAK SPACE
+A1 = U+00A1 : INVERTED EXCLAMATION MARK
+A2 = U+00A2 : CENT SIGN
+A3 = U+00A3 : POUND SIGN
+A4 = U+00A4 : CURRENCY SIGN
+A5 = U+00A5 : YEN SIGN
+A6 = U+00A6 : BROKEN BAR
+A7 = U+00A7 : SECTION SIGN
+A8 = U+00A8 : DIAERESIS
+A9 = U+00A9 : COPYRIGHT SIGN
+AA = U+00AA : FEMININE ORDINAL INDICATOR
+AB = U+00AB : LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+AC = U+00AC : NOT SIGN
+AD = U+00AD : SOFT HYPHEN
+AE = U+00AE : REGISTERED SIGN
+AF = U+00AF : MACRON
+B0 = U+00B0 : DEGREE SIGN
+B1 = U+00B1 : PLUS-MINUS SIGN
+B2 = U+00B2 : SUPERSCRIPT TWO
+B3 = U+00B3 : SUPERSCRIPT THREE
+B4 = U+00B4 : ACUTE ACCENT
+B5 = U+00B5 : MICRO SIGN
+B6 = U+00B6 : PILCROW SIGN
+B7 = U+00B7 : MIDDLE DOT
+B8 = U+00B8 : CEDILLA
+B9 = U+00B9 : SUPERSCRIPT ONE
+BA = U+00BA : MASCULINE ORDINAL INDICATOR
+BB = U+00BB : RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+BC = U+00BC : VULGAR FRACTION ONE QUARTER
+BD = U+00BD : VULGAR FRACTION ONE HALF
+BE = U+00BE : VULGAR FRACTION THREE QUARTERS
+BF = U+00BF : INVERTED QUESTION MARK
+C0 = U+00C0 : LATIN CAPITAL LETTER A WITH GRAVE
+C1 = U+00C1 : LATIN CAPITAL LETTER A WITH ACUTE
+C2 = U+00C2 : LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+C3 = U+00C3 : LATIN CAPITAL LETTER A WITH TILDE
+C4 = U+00C4 : LATIN CAPITAL LETTER A WITH DIAERESIS
+C5 = U+00C5 : LATIN CAPITAL LETTER A WITH RING ABOVE
+C6 = U+00C6 : LATIN CAPITAL LETTER AE
+C7 = U+00C7 : LATIN CAPITAL LETTER C WITH CEDILLA
+C8 = U+00C8 : LATIN CAPITAL LETTER E WITH GRAVE
+C9 = U+00C9 : LATIN CAPITAL LETTER E WITH ACUTE
+CA = U+00CA : LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+CB = U+00CB : LATIN CAPITAL LETTER E WITH DIAERESIS
+CC = U+00CC : LATIN CAPITAL LETTER I WITH GRAVE
+CD = U+00CD : LATIN CAPITAL LETTER I WITH ACUTE
+CE = U+00CE : LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+CF = U+00CF : LATIN CAPITAL LETTER I WITH DIAERESIS
+D0 = U+00D0 : LATIN CAPITAL LETTER ETH
+D1 = U+00D1 : LATIN CAPITAL LETTER N WITH TILDE
+D2 = U+00D2 : LATIN CAPITAL LETTER O WITH GRAVE
+D3 = U+00D3 : LATIN CAPITAL LETTER O WITH ACUTE
+D4 = U+00D4 : LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+D5 = U+00D5 : LATIN CAPITAL LETTER O WITH TILDE
+D6 = U+00D6 : LATIN CAPITAL LETTER O WITH DIAERESIS
+D7 = U+00D7 : MULTIPLICATION SIGN
+D8 = U+00D8 : LATIN CAPITAL LETTER O WITH STROKE
+D9 = U+00D9 : LATIN CAPITAL LETTER U WITH GRAVE
+DA = U+00DA : LATIN CAPITAL LETTER U WITH ACUTE
+DB = U+00DB : LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+DC = U+00DC : LATIN CAPITAL LETTER U WITH DIAERESIS
+DD = U+00DD : LATIN CAPITAL LETTER Y WITH ACUTE
+DE = U+00DE : LATIN CAPITAL LETTER THORN
+DF = U+00DF : LATIN SMALL LETTER SHARP S
+E0 = U+00E0 : LATIN SMALL LETTER A WITH GRAVE
+E1 = U+00E1 : LATIN SMALL LETTER A WITH ACUTE
+E2 = U+00E2 : LATIN SMALL LETTER A WITH CIRCUMFLEX
+E3 = U+00E3 : LATIN SMALL LETTER A WITH TILDE
+E4 = U+00E4 : LATIN SMALL LETTER A WITH DIAERESIS
+E5 = U+00E5 : LATIN SMALL LETTER A WITH RING ABOVE
+E6 = U+00E6 : LATIN SMALL LETTER AE
+E7 = U+00E7 : LATIN SMALL LETTER C WITH CEDILLA
+E8 = U+00E8 : LATIN SMALL LETTER E WITH GRAVE
+E9 = U+00E9 : LATIN SMALL LETTER E WITH ACUTE
+EA = U+00EA : LATIN SMALL LETTER E WITH CIRCUMFLEX
+EB = U+00EB : LATIN SMALL LETTER E WITH DIAERESIS
+EC = U+00EC : LATIN SMALL LETTER I WITH GRAVE
+ED = U+00ED : LATIN SMALL LETTER I WITH ACUTE
+EE = U+00EE : LATIN SMALL LETTER I WITH CIRCUMFLEX
+EF = U+00EF : LATIN SMALL LETTER I WITH DIAERESIS
+F0 = U+00F0 : LATIN SMALL LETTER ETH
+F1 = U+00F1 : LATIN SMALL LETTER N WITH TILDE
+F2 = U+00F2 : LATIN SMALL LETTER O WITH GRAVE
+F3 = U+00F3 : LATIN SMALL LETTER O WITH ACUTE
+F4 = U+00F4 : LATIN SMALL LETTER O WITH CIRCUMFLEX
+F5 = U+00F5 : LATIN SMALL LETTER O WITH TILDE
+F6 = U+00F6 : LATIN SMALL LETTER O WITH DIAERESIS
+F7 = U+00F7 : DIVISION SIGN
+F8 = U+00F8 : LATIN SMALL LETTER O WITH STROKE
+F9 = U+00F9 : LATIN SMALL LETTER U WITH GRAVE
+FA = U+00FA : LATIN SMALL LETTER U WITH ACUTE
+FB = U+00FB : LATIN SMALL LETTER U WITH CIRCUMFLEX
+FC = U+00FC : LATIN SMALL LETTER U WITH DIAERESIS
+FD = U+00FD : LATIN SMALL LETTER Y WITH ACUTE
+FE = U+00FE : LATIN SMALL LETTER THORN
+FF = U+00FF : LATIN SMALL LETTER Y WITH DIAERESIS
+        * 
+        */
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/ContentProvider.php
new file mode 100644 (file)
index 0000000..dcf9c4d
--- /dev/null
@@ -0,0 +1,22 @@
+<?php
+
+abstract class ContentProvider{
+       /**
+        * Get the text data to be integrated in the MOBI file
+        * @return string
+        */
+       public abstract function getTextData();
+       /**
+        * Get the images (an array containing the jpeg data). Array entry 0 will
+        * correspond to image record 0.
+        * @return array
+        */
+       public abstract function getImages();
+       /**
+        * Get the metadata in the form of a hashtable (for example, title or author).
+        * @return array
+        */
+       public abstract function getMetaData();
+}
+
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/EXTHHelper.php
new file mode 100644 (file)
index 0000000..275142b
--- /dev/null
@@ -0,0 +1,132 @@
+<?php
+//Reference: http://wiki.mobileread.com/wiki/MOBI
+
+class EXTHHelper{
+       static function typeToText($type){
+               $types = self::$types;
+               if(isset($types[$type])){
+                       return $types[$type];
+               }
+               return $type;
+       }
+       static function textToType($text){
+               $text = strtolower($text);
+               if(isset(self::$flippedTypes[$text])){
+                       return self::$flippedTypes[$text];
+               }
+               return false;
+       }
+       
+       static function convert($n, $size){
+               $mask = 0xFF;
+               $out = "";
+               for($i = 0; $i < $size; $i++){
+                       $out = chr(($n & $mask) >> (8*$i)).$out;
+                       $mask = $mask << 8;
+               }
+               return $out;
+       }
+       
+       static function getRightRepresentation($type, $value){
+               if($type >= 100 && $type < 200){
+                       return $value;
+               }else{
+                       return self::toHex($value);
+               }
+       }
+       
+       static function toHex($value){
+               $out = "";
+               for($i = 0, $len = strlen($value); $i < $len; $i++){
+                       if($i > 0) $out .= " ";
+                       $hex = dechex(ord($value[$i]));
+                       if(strlen($hex) < 2) $hex = "0".$hex;
+                       $out .= $hex;
+               }
+               return $out;
+       }
+       
+       
+       static private $types = array(
+               1 => "drm server id",
+               2 => "drm commerce id",
+               3 => "drm ebookbase book id",
+               100 => "author",
+               101 => "publisher",
+               102 => "imprint",
+               103 => "description",
+               104 => "isbn",
+               105 => "subject",
+               106 => "publishingdate",
+               107 => "review",
+               108 => "contributor",
+               109 => "rights",
+               110 => "subjectcode",
+               111 => "type",
+               112 => "source",
+               113 => "asin",
+               114 => "versionnumber",
+               115 => "sample",
+               116 => "startreading",
+               118 => "retail price",
+               119 => "retail price currency",
+               201 => "coveroffset",
+               202 => "thumboffset",
+               203 => "hasfakecover",
+               204 => "Creator Software",
+               205 => "Creator Major Version",
+               206 => "Creator Minor Version",
+               207 => "Creator Build Number",
+               208 => "watermark",
+               209 => "tamper proof keys",
+               300 => "fontsignature",
+               401 => "clippinglimit",
+               402 => "publisherlimit",
+               403 => "403",
+               404 => "ttsflag",
+               501 => "cdetype",
+               502 => "lastupdatetime",
+               503 => "updatedtitle"
+       );
+       static private $flippedTypes = array(
+               "drm server id" => 1,
+               "drm commerce id" => 2,
+               "drm ebookbase book id" => 3,
+               "author" => 100,
+               "publisher" => 101,
+               "imprint" => 102,
+               "description" => 103,
+               "isbn" => 104,
+               "subject" => 105,
+               "publishingdate" => 106,
+               "review" => 107,
+               "contributor" => 108,
+               "rights" => 109,
+               "subjectcode" => 110,
+               "type" => 111,
+               "source" => 112,
+               "asin" => 113,
+               "versionnumber" => 114,
+               "sample" => 115,
+               "startreading" => 116,
+               "retail price" => 118,
+               "retail price currency" => 119,
+               "coveroffset" => 201,
+               "thumboffset" => 202,
+               "hasfakecover" => 203,
+               "Creator Software" => 204,
+               "Creator Major Version" => 205,
+               "Creator Minor Version" => 206,
+               "Creator Build Number" => 207,
+               "watermark" => 208,
+               "tamper proof keys" => 209,
+               "fontsignature" => 300,
+               "clippinglimit" => 401,
+               "publisherlimit" => 402,
+               "403" => 403,
+               "ttsflag" => 404,
+               "cdetype" => 501,
+               "lastupdatetime" => 502,
+               "updatedtitle" => 503
+       );
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileByte.php
new file mode 100644 (file)
index 0000000..05fc7d0
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Description of FileByte
+ *
+ * @author Sander
+ */
+class FileByte extends FileObject {
+       private $data;
+
+       /**
+        * Make a short to be stored in a file
+        * @param short $n
+        */
+       public function __construct($n = 0){
+               parent::__construct(1);
+               $this->set($n);
+       }
+
+       public function get(){
+               return $this->data;
+       }
+
+       public function set($value){
+               $this->data = intval($value) & 0xFF;
+       }
+
+       public function serialize() {
+               return $this->byteToString($this->data);
+       }
+
+       public function unserialize($data) {
+               __construct($this->toInt($data));
+       }
+
+
+       public function __toString(){
+               return "FileByte: {".$this->byteAsString($this->data)."}";
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileDate.php
new file mode 100644 (file)
index 0000000..2284eba
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Description of FileDate
+ *
+ * @author Sander
+ */
+class FileDate extends FileObject {
+       private $data;
+
+       /**
+        * Make an integer to be stored in a file
+        * @param int $n
+        */
+       public function __construct($n = 0){
+               parent::__construct(4);
+               $this->set($n);
+       }
+
+       public function get(){
+               return $this->data;
+       }
+
+       public function set($value){
+               $this->data = intval($value);
+       }
+       
+       public function serialize() {
+               return $this->intToString($this->data);
+       }
+
+       public function unserialize($data) {
+               __construct($this->toInt($data));
+       }
+
+       public function __toString(){
+               return "FileDate: {".(date("r", $this->data-94694400))."}";
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileElement.php
new file mode 100644 (file)
index 0000000..552d04a
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * Description of FileElement
+ *
+ * @author Sander
+ */
+class FileElement {
+       /**
+        * @var FileObject
+        */
+       public $elements;
+
+       /**
+        * Make a record to be stored in a file
+        * @param Record $record
+        */
+       public function __construct($elements = array()){
+               $this->elements = $elements;
+       }
+
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               $total = 0;
+               foreach($this->elements as $val){
+                       $total += $val->getByteLength();
+               }
+               return $total;
+       }
+
+       public function offsetToEntry($name){
+               $pos = 0;
+               foreach($this->elements as $key=>$value){
+                       if($name == $key){
+                               break;
+                       }
+                       $pos += $value->getByteLength();
+               }
+               return $pos;
+       }
+
+       public function exists($key){
+               return isset($this->elements[$key]);
+       }
+       /**
+        * @param string $key
+        * @return FileObject
+        */
+       public function get($key){
+               return $this->elements[$key];
+       }
+
+       /**
+        * @param string $key
+        * @param FileObject $value
+        */
+       public function set($key, $value){
+               $this->elements[$key] = $value;
+       }
+
+       public function add($key, $value){
+               $this->elements[$key] = $value;
+       }
+
+       public function serialize() {
+               $result = "";
+               foreach($this->elements as $val){
+                       $result .= $val->serialize();
+               }
+               return $result;
+       }
+
+       public function unserialize($data) {
+               //TODO: If reading is needed -> way more complex
+       }
+
+       public function __toString(){
+               $output = "FileElement (".$this->getByteLength()." bytes): {\n";
+               foreach($this->elements as $key=>$value){
+                       $output .= "\t".$key.": ".$value."\n";
+               }
+               $output .= "}";
+               return $output;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileInt.php
new file mode 100644 (file)
index 0000000..ebe86f8
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+
+/**
+ * Description of FileInt
+ *
+ * @author Sander
+ */
+class FileInt extends FileObject {
+       private $data;
+
+       /**
+        * Make an integer to be stored in a file
+        * @param int $n
+        */
+       public function __construct($n = 0){
+               parent::__construct(4);
+               $this->set($n);
+       }
+
+       public function get(){
+               return $this->data;
+       }
+
+       public function set($value){
+               $this->data = intval($value);
+       }
+       
+       public function serialize() {
+               return $this->intToString($this->data);
+       }
+
+       public function unserialize($data) {
+               __construct($this->toInt($data));
+       }
+
+       public function __toString(){
+               return "FileInt: {".$this->intAsString($this->data)."}";
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileObject.php
new file mode 100644 (file)
index 0000000..0df17df
--- /dev/null
@@ -0,0 +1,168 @@
+<?php
+
+/**
+ * Description of FileObject
+ *
+ * @author Sander
+ */
+abstract class FileObject {
+       private $byteLength = -1;
+
+       public function __construct($byteLength = -1){
+               $this->byteLength = $byteLength;
+       }
+
+       public function getByteLength(){
+               if($this->byteLength >= 0){
+                       return $this->byteLength;
+               }
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               throw new Exception("Sub-class needs to implement this if it doesn't have a fixed length");
+       }
+
+       /**
+        * Convert a string to byte format (maximum 4 bytes)
+        * @param string $string Input string
+        * @return int Output integer
+        */
+       public function toInt($string){
+               $out = 0;
+               for($i = 0, $len = min(4, strlen($string)); $i < $len; $i++){
+                       $out = $out | (ord($string[$i]) << (($len-$i-1)*8));
+               }
+               return $out;
+       }
+
+       /**
+        * Convert a byte (stored in an integer) to a string
+        * @param byte $int
+        * @return string
+        */
+       public function byteToString($int){
+               return $this->toString($int, 1);
+       }
+
+       /**
+        * Convert a byte (stored in an integer) to a string
+        * @param byte $int
+        * @return string
+        */
+       public function byteAsString($int){
+               return $this->asString($int, 1);
+       }
+
+       /**
+        * Convert a short (stored in an integer) to a string
+        * @param short $int
+        * @return string
+        */
+       public function shortToString($int){
+               return $this->toString($int, 2);
+       }
+
+       /**
+        * Convert a short (stored in an integer) to a string
+        * @param short $int
+        * @return string
+        */
+       public function shortAsString($int){
+               return $this->asString($int, 2);
+       }
+
+       /**
+        * Convert a tri-byte (stored in an integer) to a string
+        * @param tri-byte $int
+        * @return string
+        */
+       public function triToString($int){
+               return $this->toString($int, 3);
+       }
+
+       /**
+        * Convert a tri-byte (stored in an integer) to a string
+        * @param tri-byte $int
+        * @return string
+        */
+       public function triAsString($int){
+               return $this->asString($int, 3);
+       }
+
+       /**
+        * Convert an integer to a string
+        * @param int $int
+        * @return string
+        */
+       public function intToString($int){
+               return $this->toString($int, 4);
+       }
+
+       /**
+        * Convert an integer to a string
+        * @param int $int
+        * @return string
+        */
+       public function intAsString($int){
+               return $this->asString($int, 4);
+       }
+
+       /**
+        * Convert a number of n bytes to a string
+        * @param int $int Number that should be converted
+        * @param int $size Number of bytes to convert
+        * @return string Output string
+        */
+       private function toString($int, $size){
+               $out = "";
+               for($i = 0; $i < $size; $i++){
+                       $out = chr($int & 0xFF).$out;
+                       $int = $int >> 8;
+               }
+               return $out;
+       }
+
+       /**
+        * Convert a number of n bytes to a string
+        * @param int $int Number that should be converted
+        * @param int $size Number of bytes to convert
+        * @return string Output string
+        */
+       private function asString($int, $size){
+               $out = "";
+               for($i = 0; $i < $size; $i++){
+                       if($i > 0) $out = " ".$out;
+                       $byte = dechex($int & 0xFF);
+                       if(strlen($byte) == 1) $byte = "0".$byte;
+                       $out = $byte.$out;
+                       $int = $int >> 8;
+               }
+               return $out;
+       }
+
+       /**
+        * Get the value
+        * @return mixed Value to get
+        */
+    abstract public function get();
+
+       /**
+        * Set the value
+        * @return mixed Value to set
+        */
+    abstract public function set($value);
+
+       /**
+        * Serialize the object
+        * @return string String representation
+        */
+    abstract public function serialize();
+
+       /**
+        * Unserialize the object
+        * @param string $data String representation
+        */
+    abstract public function unserialize($data);
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileRecord.php
new file mode 100644 (file)
index 0000000..494a72e
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * Description of FileRecord
+ *
+ * @author Sander
+ */
+class FileRecord extends FileObject {
+       /**
+        * @var Record
+        */
+       private $record;
+
+       /**
+        * Make a record to be stored in a file
+        * @param Record $record
+        */
+       public function __construct($record){
+               $this->record = $record;
+       }
+
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               return $this->record->getLength();
+       }
+
+       public function get(){
+               return $this->record;
+       }
+
+       public function set($record){
+               $this->record = $record;
+       }
+
+       public function serialize() {
+               return $this->record->serialize();
+       }
+
+       public function unserialize($data) {
+               __construct($this->record->unserialize($data));
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileShort.php
new file mode 100644 (file)
index 0000000..9921ea8
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Description of FileShort
+ *
+ * @author Sander
+ */
+class FileShort extends FileObject {
+       private $data;
+
+       /**
+        * Make a short to be stored in a file
+        * @param short $n
+        */
+       public function __construct($n = 0){
+               parent::__construct(2);
+               $this->set($n);
+       }
+
+       public function get(){
+               return $this->data;
+       }
+
+       public function set($value){
+               $this->data = intval($value) & 0xFFFF;
+       }
+
+       public function serialize() {
+               return $this->shortToString($this->data);
+       }
+
+       public function unserialize($data) {
+               __construct($this->toInt($data));
+       }
+
+
+       public function __toString(){
+               return "FileShort: {".$this->shortAsString($this->data)."}";
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileString.php
new file mode 100644 (file)
index 0000000..16e906a
--- /dev/null
@@ -0,0 +1,83 @@
+<?php
+
+/**
+ * Description of FileString
+ *
+ * @author Sander
+ */
+class FileString extends FileObject {
+       private $forcedLength;
+       private $data;
+
+       /**
+        * Make a string to be stored in a file
+        * @param string|int $first Optional, if it is a string, it will be the contents,
+        * if it is a number, it will set the forced length.
+        * @param int $second Optional, will set the forced length. Can only be used when the
+        * first argument is contents.
+        */
+       public function __construct($first = null, $second = null){
+               $this->forcedLength = -1;
+               $this->data = "";
+               
+               if($second != null){
+                       $this->data = $first;
+                       $this->forcedLength = $second;
+               }else if($first != null){
+                       if(is_string($first)){
+                               $this->data = $first;
+                       }else{
+                               $this->forcedLength = $first;
+                       }
+               }
+       }
+
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               if($this->forcedLength >= 0){
+                       return $this->forcedLength;
+               }
+               return strlen($this->data);
+       }
+
+       public function get(){
+               return $this->data;
+       }
+
+       public function set($value){
+               $this->data = $value;
+       }
+
+       public function serialize() {
+               $output = $this->data;
+               $curLength = strlen($output);
+
+               if($this->forcedLength >= 0){
+                       if($this->forcedLength > $curLength){
+                               return str_pad($output, $this->forcedLength, "\0", STR_PAD_RIGHT);
+                       }elseif($this->forcedLength == $curLength){
+                               return $output;
+                       }else{
+                               return substr($output, 0, $this->forcedLength);
+                       }
+               }
+               return $output;
+       }
+
+       public function unserialize($data) {
+               __construct($data);
+       }
+
+       public function __toString(){
+               $out = "FileString";
+               if($this->forcedLength >= 0){
+                       $out .= " ".$this->forcedLength;
+               }
+               $out .= ": {\"".str_replace(array(" ", "\0"), "&nbsp;", $this->serialize())."\"}";
+               return $out;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/FileTri.php
new file mode 100644 (file)
index 0000000..6cacc0b
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * Description of FileTri
+ *
+ * @author Sander
+ */
+class FileTri extends FileObject {
+       private $data;
+
+       /**
+        * Make a tri-byte to be stored in a file
+        * @param tri-byte $n
+        */
+       public function __construct($n = 0){
+               parent::__construct(3);
+               $this->set($n);
+       }
+
+       public function get(){
+               return $this->data;
+       }
+
+       public function set($value){
+               $this->data = intval($value) & 0xFFFFFF;
+       }
+
+       public function serialize() {
+               return $this->triToString($this->data);
+       }
+
+       public function unserialize($data) {
+               __construct($this->toInt($data));
+       }
+
+
+       public function __toString(){
+               return "FileTri: {".$this->triAsString($this->data)."}";
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Http.php
new file mode 100644 (file)
index 0000000..9e5852e
--- /dev/null
@@ -0,0 +1,171 @@
+<?php
+class Http{
+       private static $cache = false;
+
+       public static function Request($url){
+               $url_parts = parse_url($url);
+               $url_parts["port"] = isset($url_parts["port"]) ? $url_parts["port"] : 80;
+               $url_parts["path"] = isset($url_parts["path"]) ? $url_parts["path"] : "/";
+
+               return self::FullRequest("GET", $url_parts["host"], $url_parts["port"], $url_parts["path"]);
+       }
+
+       public static function FullRequest(
+                       $verb = 'GET',             /* HTTP Request Method (GET and POST supported) */
+                       $ip,                       /* Target IP/Hostname */
+                       $port = 80,                /* Target TCP port */
+                       $uri = '/',                /* Target URI */
+                       $getdata = array(),        /* HTTP GET Data ie. array('var1' => 'val1', 'var2' => 'val2') */
+                       $postdata = array(),       /* HTTP POST Data ie. array('var1' => 'val1', 'var2' => 'val2') */
+                       $cookie = array(),         /* HTTP Cookie Data ie. array('var1' => 'val1', 'var2' => 'val2') */
+                       $custom_headers = array(), /* Custom HTTP headers ie. array('Referer: http://localhost/ */
+                       $timeout = 1000,           /* Socket timeout in milliseconds */
+                       $req_hdr = false,          /* Include HTTP request headers */
+                       $res_hdr = false,           /* Include HTTP response headers */
+                       $depth = 4                                      /* Depth of the iteration left (to avoid redirection loops) */
+                       )
+       {
+               if(self::$cache){
+                       $cacheFile = "cache/".$ip."/".str_replace("/", "...", $uri);
+
+                       if(is_file($cacheFile)){
+                               $data = file_get_contents($cacheFile);
+
+                               return self::resolveTruncated($data);
+                       }
+               }
+               $ret = '';
+               $verb = strtoupper($verb);
+               $cookie_str = '';
+               $getdata_str = count($getdata) ? '?' : '';
+               $postdata_str = '';
+
+               foreach ($getdata as $k => $v)
+                       $getdata_str .= urlencode($k) .'='. urlencode($v);
+
+               foreach ($postdata as $k => $v)
+                       $postdata_str .= urlencode($k) .'='. urlencode($v) .'&';
+
+               foreach ($cookie as $k => $v)
+                       $cookie_str .= urlencode($k) .'='. urlencode($v) .'; ';
+
+               $crlf = "\r\n";
+               $req = $verb .' '. $uri . $getdata_str .' HTTP/1.1' . $crlf;
+               $req .= 'Host: '. $ip . $crlf;
+               $req .= 'User-Agent: Mozilla/5.0 Firefox/3.6.12' . $crlf;
+               $req .= 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' . $crlf;
+               $req .= 'Accept-Language: en-us,en;q=0.5' . $crlf;
+               $req .= 'Accept-Encoding: deflate' . $crlf;
+               $req .= 'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' . $crlf;
+               
+
+               foreach ($custom_headers as $k => $v)
+                       $req .= $k .': '. $v . $crlf;
+
+               if (!empty($cookie_str))
+                       $req .= 'Cookie: '. substr($cookie_str, 0, -2) . $crlf;
+
+               if ($verb == 'POST' && !empty($postdata_str))
+               {
+                       $postdata_str = substr($postdata_str, 0, -1);
+                       $req .= 'Content-Type: application/x-www-form-urlencoded' . $crlf;
+                       $req .= 'Content-Length: '. strlen($postdata_str) . $crlf . $crlf;
+                       $req .= $postdata_str;
+               }
+               else $req .= $crlf;
+
+               if ($req_hdr)
+                       $ret .= $req;
+
+               if (($fp = @fsockopen($ip, $port, $errno, $errstr)) == false)
+                       return "Error $errno: $errstr\n";
+
+               stream_set_timeout($fp, 0, $timeout * 1000);
+
+               fputs($fp, $req);
+               $ret .= stream_get_contents($fp);
+               fclose($fp);
+
+               $headerSplit = strpos($ret, "\r\n\r\n");
+               $header = substr($ret, 0, $headerSplit);
+
+               $redirectURL = self::CheckForRedirect($header);
+
+               if($redirectURL !== false){
+                       if($depth > 0){
+                               $url_parts = parse_url($redirectURL);
+                               $url_parts["port"] = isset($url_parts["port"]) ? $url_parts["port"] : 80;
+                               $url_parts["path"] = isset($url_parts["path"]) ? $url_parts["path"] : "/";
+
+                               return self::FullRequest($verb, $url_parts["host"], $url_parts["port"], $url_parts["path"], $getdata, $postdata, $cookie, $custom_headers, $timeout, $req_hdr, $res_hdr, $depth-1);
+                       }else{
+                               return "Redirect loop, stopping...";
+                       }
+               }
+
+               $truncated = false;
+               $headerLines = explode("\r\n", $header);
+               foreach($headerLines as $line){
+                       list($name, $value) = explode(":", $line);
+                       $name = trim($name);
+                       $value = trim($value);
+
+                       if(strtolower($name) == "transfer-encoding" && strtolower($value) == "chunked"){                //TODO: Put right values!
+                               $truncated = true;
+                       }
+               }
+
+               if (!$res_hdr)
+                       $ret = substr($ret, $headerSplit + 4);
+
+               if($truncated){
+                       $ret = self::resolveTruncated($ret);
+               }
+               if(self::$cache){
+                       if(!is_dir("cache")){
+                               mkdir("cache");
+                       }
+                       if(!is_dir("cache/".$ip)){
+                               mkdir("cache/".$ip);
+                       }
+                       if(!is_file("cache/".$ip."/".str_replace("/", "...", $uri))){
+                               $h = fopen("cache/".$ip."/".str_replace("/", "...", $uri), "w");
+                               fwrite($h, $ret);
+                               fclose($h);
+                       }
+               }
+               
+               return $ret;
+       }
+
+       private static function resolveTruncated($data){
+               $pos = 0;
+               $end = strlen($data);
+               $out = "";
+
+               while($pos < $end){
+                       $endVal = strpos($data, "\r\n", $pos);
+                       $value = hexdec(substr($data, $pos, $endVal-$pos));
+                       $out .= substr($data, $endVal+2, $value);
+                       $pos = $endVal+2+$value;
+               }
+
+               return $out;
+       }
+
+       private static function CheckForRedirect($header){
+               $firstLine = substr($header, 0, strpos($header, "\r\n"));
+               list($httpVersion, $statusCode, $message) = explode(" ", $firstLine);
+
+               if(substr($statusCode, 0, 1) == "3"){
+                       $part = substr($header, strpos(strtolower($header), "location: ")+strlen("location: "));
+                       $location = trim(substr($part, 0, strpos($part, "\r\n")));
+
+                       if(strlen($location) > 0){
+                               return $location;
+                       }
+               }
+               return false;
+       }
+}
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/ImageHandler.php
new file mode 100644 (file)
index 0000000..f620fc1
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+class ImageHandler {
+       /**
+        * Download an image
+        * @param string $url Url to the image
+        * @return false|string False if failed, else the data of the image (converted to grayscale jpeg)
+        */
+       public static function DownloadImage($url){
+               $data = Http::Request($url);
+               $imgFile = @imagecreatefromstring($data);
+               
+               if($imgFile !== false){
+                       @imagefilter($imgFile, IMG_FILTER_GRAYSCALE);
+
+                       ob_start();
+                       @imagejpeg($imgFile);
+                       $image = ob_get_contents();
+                       ob_end_clean();
+                       
+                       @imagedestroy($imgFile);
+
+                       return $image;
+               }
+               return false;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php
new file mode 100644 (file)
index 0000000..9532bbf
--- /dev/null
@@ -0,0 +1,205 @@
+<?php
+require_once(dirname(__FILE__)."/readability/Readability.php");
+require_once(dirname(__FILE__).'/CharacterEntities.php');
+require_once(dirname(__FILE__).'/constants.php');
+require_once(dirname(__FILE__).'/ContentProvider.php');
+require_once(dirname(__FILE__).'/MultipleFileHandler.php');
+require_once(dirname(__FILE__)."/downloaders/FanFictionNet.php");
+require_once(dirname(__FILE__).'/EXTHHelper.php');
+require_once(dirname(__FILE__).'/FileObject.php');
+require_once(dirname(__FILE__).'/FileByte.php');
+require_once(dirname(__FILE__).'/FileDate.php');
+require_once(dirname(__FILE__).'/FileElement.php');
+require_once(dirname(__FILE__).'/FileInt.php');
+require_once(dirname(__FILE__).'/FileRecord.php');
+require_once(dirname(__FILE__).'/FileShort.php');
+require_once(dirname(__FILE__).'/FileString.php');
+require_once(dirname(__FILE__).'/FileTri.php');
+require_once(dirname(__FILE__).'/Http.php');
+require_once(dirname(__FILE__).'/http_build_url.php');
+require_once(dirname(__FILE__).'/ImageHandler.php');
+require_once(dirname(__FILE__).'/OnlineArticle.php');
+require_once(dirname(__FILE__).'/PalmRecord.php');
+require_once(dirname(__FILE__).'/PEOFRecord.php');
+require_once(dirname(__FILE__).'/PFCISRecord.php');
+require_once(dirname(__FILE__).'/PFLISRecord.php');
+require_once(dirname(__FILE__).'/Prc.php');
+require_once(dirname(__FILE__).'/PreprocessedArticle.php');
+require_once(dirname(__FILE__).'/RecognizeURL.php');
+require_once(dirname(__FILE__).'/Record.php');
+require_once(dirname(__FILE__).'/RecordFactory.php');
+require_once(dirname(__FILE__).'/Settings.php');
+
+/**
+ * Description of MOBI.
+ *
+ * Usage:
+ * include("MOBIClass/MOBI.php");
+ *
+ * $mobi = new MOBI();
+ *
+ * //Then use one of the following ways to prepare information (it should be in the form of valid html)
+ * $mobi->setInternetSource($url);             //Load URL, the result will be cleaned using a Readability port
+ * $mobi->setFileSource($file);                        //Load a local file without any extra changes
+ * $mobi->setData($data);                              //Load data
+ *
+ * //If you want, you can set some optional settings
+ * $options = array(
+ *             "title"=>"Insert title here",
+ *             "author"=>"Author"
+ * );
+ * $mobi->setOptions($options);
+ *
+ * //Then there are two ways to output it:
+ * $mobi->save($file);                                 //Save the file locally
+ * $mobi->download($name);                             //Let the client download the file, make sure the page
+ *                                                                             //that calls it doesn't output anything, otherwise it might
+ *                                                                             //conflict with the download. $name contains the file name,
+ *                                                                             //usually something like "title.mobi" (where the title should
+ *                                                                             //be cleaned so as not to contain illegal characters).
+ *
+ *
+ * @author Sander Kromwijk
+ */
+class MOBI {
+       private $source = false;
+       private $images = array();
+       private $optional = array();
+       private $imgCounter = 0;
+       private $debug = false;
+       private $prc = false;
+       
+       public function __construct(){
+
+       }
+
+       public function getTitle(){
+               if(isset($this->optional["title"])){
+                       return $this->optional["title"];
+               }
+               return false;
+       }
+       
+       /**
+        * Set a content provider as source
+        * @param ContentProvider $content Content Provider to use
+        */
+       public function setContentProvider($content){
+               $this->setOptions($content->getMetaData());
+               $this->images = $content->getImages();
+               $this->setData($content->getTextData());
+       }
+
+       /**
+        * Set a local file as source
+        * @param string $file Path to the file
+        */
+       public function setFileSource($file){
+               $this->setData(file_get_contents($file));
+       }
+
+       /**
+        * Set the data to use
+        * @param string $data Data to put in the file
+        */
+       public function setData($data){
+               //$data = utf8_encode($data);
+               $data = CharacterEntities::convert($data);
+               //$data = utf8_decode($data);
+               //$this->source = iconv('UTF-8', 'ISO-8859-1//TRANSLIT', $data);
+               $this->source = $data;
+               $this->prc = false;
+       }
+
+       /**
+        * Set the images to use
+        * @param array $data Data to put in the file
+        */
+       public function setImages($data){
+               $this->images = $data;
+               $this->prc = false;
+       }
+
+       /**
+        * Set options, usually for things like titles, authors, etc...
+        * @param array $options Options to set
+        */
+       public function setOptions($options){
+               $this->optional = $options;
+               $this->prc = false;
+       }
+
+       /**
+        * Prepare the prc file
+        * @return Prc The file that can be used to be saved/downloaded
+        */
+       private function preparePRC(){
+               if($this->source === false){
+                       throw new Exception("No data set");
+               }
+               if($this->prc !== false) return $this->prc;
+
+               $data = $this->source;
+               $len = strlen($data);
+               
+               $settings = new Settings($this->optional);
+               $rec = new RecordFactory($settings);
+               $dataRecords = $rec->createRecords($data);
+               $nRecords = sizeof($dataRecords);
+               $mobiHeader = new PalmRecord($settings, $dataRecords, $nRecords, $len, sizeof($this->images));
+               array_unshift($dataRecords, $mobiHeader);
+               $dataRecords = array_merge($dataRecords, $this->images);
+               $mobiFooter1 = new PFLISRecord($len);
+               $mobiFooter2 = new PFCISRecord($len);
+               $mobiFooter3 = new PEOFRecord($len);
+               $dataRecords[] = $mobiFooter1;
+               $dataRecords[] = $mobiFooter2;
+               $dataRecords[] = $mobiFooter3;
+               /*$dataRecords = array_merge($dataRecords, $mobiFooter);
+               *$dataRecords[] = $rec->createFLISRecord();*
+               $dataRecords[] = $rec->createFCISRecord($len);
+               $dataRecords[] = $rec->createEOFRecord();*/
+               $this->prc = new Prc($settings, $dataRecords);
+               return $this->prc;
+       }
+
+       /**
+        * Save the file locally
+        * @param string $filename Path to save the file
+        */
+       public function save($filename){
+               $prc = $this->preparePRC();
+               $prc->save($filename);
+       }
+
+       /**
+        * Let the client download the file. Warning! No data should be
+        * outputted before or after.
+        * @param string $name Name used for download, usually "title.mobi"
+        */
+       public function download($name){
+               $prc = $this->preparePRC();
+               $data = $prc->serialize();
+               $length = strlen($data);
+
+               if($this->debug) return;                //In debug mode, don't start the download
+/*
+               header("Content-Type: application/x-mobipocket-ebook");
+               header("Content-Disposition: attachment; filename=\"".$name."\"");
+               header("Content-Transfer-Encoding: binary");
+               header("Accept-Ranges: bytes");
+               header("Cache-control: private");
+               header('Pragma: private');
+               header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
+               header("Content-Length: ".$length);
+               echo $data;*/
+               
+               
+               $hh = fopen("D:\hakuna.mobi", "w");
+               fwrite($hh, $data);
+               fclose($hh);
+               //Finished!
+       }
+       
+}
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/MultipleFileHandler.php
new file mode 100644 (file)
index 0000000..e979281
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+
+/**
+ * Description of MultipleFileHandler
+ *
+ * @author Sander
+ */
+abstract class MultipleFileHandler extends ContentProvider {
+       /**
+        * @var array
+        */
+       private $files = array();
+       /**
+        * @var array
+        */
+       private $images = array();
+       /**
+        * @var array
+        */
+       private $metadata = array();
+
+       private $toc = array();
+
+       /**
+        * Add a page to the file
+        * @param string $contents Contents of the chapter/page
+        * @param string $title Optional, title of the chapter/page. Will automatically add a h2
+        * before the contents
+        */
+       public function addPage($contents, $title = ""){
+               if($title != ""){
+                       //TODO: Add in TOC (and add a way of generating it
+                       $contents = "<h2>".$title."</h2>".$contents."<mbp:pagebreak>";
+               }
+               $pos = 0;
+
+               if(sizeof($this->toc) > 0){
+                       $lastToc = $this->toc[sizeof($this->toc)-1];
+                       $lastFile = $this->files[sizeof($this->files)-1];
+                       $pos = $lastToc["pos"] + strlen($lastFile) + 1;
+               }
+               
+               $this->files[] = $contents;
+               $this->toc[] = array("title"=>$title, "pos"=>$pos);
+       }
+
+       /**
+        * Add an image to the file
+        * @param string $imageContents Data string containing the binary data of the image
+        * @return int The reference of the image
+        */
+       public function addImage($imageContents){
+               $this->images[] = $imageContents;
+               return sizeof($this->images)-1;
+       }
+
+       /**
+        * Add an image to the file
+        * @param string $url Url to the image
+        * @return int The reference of the image, false if the image couldn't be downloaded
+        */
+       public function addImageFromUrl($url){
+               $image = ImageHandler::DownloadImage($url);
+
+               if($image === false) return false;
+               return $this->addImage($image);
+       }
+
+       /**
+        * Set the metadata
+        * @param string $key Key
+        * @param string $value Value
+        */
+       public function setMetadata($key, $value){
+               $this->metadata[$key] = $value;
+       }
+
+       /**
+        * Get the text data to be integrated in the MOBI file
+        * @return string
+        */
+       public function getTextData(){
+               $data = implode("\n", $this->files);
+               $begin = "<html><head><guide><reference title='CONTENT' type='toc' filepos=0000000000 /></guide></head><body>";
+               $beforeTOC = $begin.$data;
+
+               $tocPos = strlen($beforeTOC);
+
+               $toc = $this->generateTOC(strlen($begin));
+
+               $customBegin = "<html><head><guide><reference title='CONTENT' type='toc' filepos=".$this->forceLength($tocPos, 10)." /></guide></head><body>";
+               $data = $customBegin.$data.$toc."</body></html>";
+               return $data;
+       }
+
+       public function forceLength($n, $l){
+               $str = $n."";
+               $cur = strlen($str);
+               while($cur < $l){
+                       $str = "0".$str;
+                       $cur++;
+               }
+               return $str;
+       }
+
+       public function generateTOC($base = 0){
+               $toc = "<h2>Contents</h2>";
+               $toc .= "<blockquote><table summary='Table of Contents'><b><col/><col/><tbody>";
+               for($i = 0, $len = sizeof($this->toc); $i < $len; $i++){
+                       $entry = $this->toc[$i];
+                       $position = $entry["pos"]+$base;
+                       $toc .= "<tr><td>".($i+1).".</td><td><a filepos=".$position.">".$entry["title"]."</a></td></tr>";
+               }
+               $toc .= "</tbody></b></table></blockquote>";
+
+               return $toc;
+       }
+       /**
+        * Get the images (an array containing the jpeg data). Array entry 0 will
+        * correspond to image record 0.
+        * @return array
+        */
+       public function getImages(){
+               return $this->images;
+       }
+
+       /**
+        * Get the metadata in the form of a hashtable (for example, title or author).
+        * @return array
+        */
+       public function getMetaData(){
+               return $this->metadata;
+       }
+       
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/OnlineArticle.php
new file mode 100644 (file)
index 0000000..ec3182f
--- /dev/null
@@ -0,0 +1,116 @@
+<?php
+
+/**
+ * Description of OnlineArticle
+ *
+ * @author Sander
+ */
+class OnlineArticle extends ContentProvider {
+       private $text;
+       private $images;
+       private $metadata = array();
+       private $imgCounter = 0;
+
+       public function  __construct($url) {
+               if (!preg_match('!^https?://!i', $url)) $url = 'http://'.$url;
+
+               $data = Http::Request($url);
+               //$enc = mb_detect_encoding($str, "UTF-8,ISO-8859-1,ASCII");
+               $html = mb_convert_encoding($data, "UTF-8", "UTF-8,ISO-8859-1,ASCII");
+               //$html = utf8_encode($html);
+               $r = new Readability($html, $url);
+               $r->init();
+               if(!isset($this->metadata["title"])){
+                       $this->metadata["title"] = CharacterEntities::convert(strip_tags($r->getTitle()->innerHTML));
+               }
+               if(!isset($this->metadata["author"])){
+                       $parts = parse_url($url);
+                       $this->metadata["author"] = $parts["host"];
+               }
+
+               $article = $r->getContent()->innerHTML;
+               if(substr($article, 0, 5) == "<body"){
+                       $article = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/></head>".$article."</html>";
+               }else{
+                       $article = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=UTF-8'/></head><body>".$article."</body></html>";
+               }
+               $doc = new DOMDocument();
+               @$doc->loadHTML($article) or die($article);
+               $doc->normalizeDocument();
+
+               $this->images = $this->handleImages($doc, $url);
+               $this->text = $doc->saveHTML();
+       }
+
+       /**
+        * Get the text data to be integrated in the MOBI file
+        * @return string
+        */
+       public function getTextData(){
+               return $this->text;
+       }
+       /**
+        * Get the images (an array containing the jpeg data). Array entry 0 will
+        * correspond to image record 0.
+        * @return array
+        */
+       public function getImages(){
+               return $this->images;
+       }
+       /**
+        * Get the metadata in the form of a hashtable (for example, title or author).
+        * @return array
+        */
+       public function getMetaData(){
+               return $this->metadata;
+       }
+       /**
+        *
+        * @param DOMElement $dom
+        * @return array
+        */
+       private function handleImages($dom, $url){
+               $images = array();
+
+               $parts = parse_url($url);
+
+               $savedImages = array();
+
+               $imgElements = $dom->getElementsByTagName('img');
+               foreach($imgElements as $img) {
+                       $src = $img->getAttribute("src");
+                       
+                       $is_root = false;
+                       if(substr($src, 0, 1) == "/"){
+                               $is_root = true;
+                       }
+                       
+                       $parsed = parse_url($src);
+
+                       if(!isset($parsed["host"])){
+                               if($is_root){
+                                       $src = http_build_url($url, $parsed, HTTP_URL_REPLACE);
+                               }else{
+                                       $src = http_build_url($url, $parsed, HTTP_URL_JOIN_PATH);
+                               }
+                       }
+                       $img->setAttribute("src", "");
+                       if(isset($savedImages[$src])){
+                               $img->setAttribute("recindex", $savedImages[$src]);
+                       }else{
+                               $image = ImageHandler::DownloadImage($src);
+                               
+                               if($image !== false){
+                                       $images[$this->imgCounter] = new FileRecord(new Record($image));
+
+                                       $img->setAttribute("recindex", $this->imgCounter);
+                                       $savedImages[$src] = $this->imgCounter;
+                                       $this->imgCounter++;
+                               }
+                       }
+               }
+
+               return $images;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PEOFRecord.php
new file mode 100644 (file)
index 0000000..a2b0fee
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+/**
+ * A Record of a End file
+ *
+ * @author Pratyush
+ */
+ class PEOFRecord extends FileObject {
+ /**
+        * @var FileElement
+        */
+       private $elements;
+
+       public function __construct($leng){
+       $this->elements = new FileElement(array(
+                       
+                       "offset44"=>new FileInt(0xe98e0d0a)
+                               ));
+       }
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               return $this->elements->getByteLength();
+       }
+
+       public function get(){
+               return $this;
+       }
+
+       public function set($elements){
+               throw new Exception("Unallowed set");
+       }
+
+       public function serialize() {
+               return $this->elements->serialize();
+       }
+
+       public function unserialize($data) {
+               $this->elements->unserialize($data);
+       }
+
+       public function __toString(){
+               $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n";
+               $output .= $this->elements;
+               return $output;
+       }                       
+       
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFCISRecord.php
new file mode 100644 (file)
index 0000000..9e72cc1
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+/**
+ * A Record of a End file
+ *
+ * @author Pratyush
+ */
+ class PFCISRecord extends FileObject {
+ /**
+        * @var FileElement
+        */
+       private $elements;
+
+       public function __construct($leng){
+       $this->elements = new FileElement(array(
+                       "offset0"=>new FileString("FCIS", 4),   //FCIS
+                       "offset4"=>new FileInt(0x014),
+                       "offset8"=>new FileInt(0x10),
+                       "offset12"=>new FileInt(0x01),
+                       "offset16"=>new FileInt(),
+                       "offset20"=>new FileInt($leng),
+                       "offset24"=>new FileInt(),
+                       "offset28"=>new FileInt(0x20),
+                       "offset32"=>new FileInt(0x08),
+                       "offset36"=>new FileShort(0x01),
+                       "offset38"=>new FileShort(0x01),
+                       "offset40"=>new FileInt()
+                               ));
+       }
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               return $this->elements->getByteLength();
+       }
+
+       public function get(){
+               return $this;
+       }
+
+       public function set($elements){
+               throw new Exception("Unallowed set");
+       }
+
+       public function serialize() {
+               return $this->elements->serialize();
+       }
+
+       public function unserialize($data) {
+               $this->elements->unserialize($data);
+       }
+
+       public function __toString(){
+               $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n";
+               $output .= $this->elements;
+               return $output;
+       }                       
+       
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PFLISRecord.php
new file mode 100644 (file)
index 0000000..dbd8ecf
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+/**
+ * A Record of a End file
+ *
+ * @author Pratyush
+ */
+ class PFLISRecord extends FileObject {
+ /**
+        * @var FileElement
+        */
+       private $elements;
+
+       public function __construct($leng){
+       $this->elements = new FileElement(array(
+                       "offsetL0"=>new FileString("FLIS", 4),  //FLIS
+                       "offsetL4"=>new FileInt(0x08),
+                       "offsetL8"=>new FileShort(0x41),
+                       "offsetL10"=>new FileString(6),
+                       "offsetL16"=>new FileInt(0xFFFFFFFF),
+                       "offsetL20"=>new FileShort(0x01),               
+                       "offsetL22"=>new FileShort(0x03),
+                       "offsetL24"=>new FileInt(0x03),
+                       "offsetL28"=>new FileInt(0x01),
+                       "offsetL32"=>new FileInt(0xFFFFFFFF)
+       
+                               ));
+       }
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               return $this->elements->getByteLength();
+       }
+
+       public function get(){
+               return $this;
+       }
+
+       public function set($elements){
+               throw new Exception("Unallowed set");
+       }
+
+       public function serialize() {
+               return $this->elements->serialize();
+       }
+
+       public function unserialize($data) {
+               $this->elements->unserialize($data);
+       }
+
+       public function __toString(){
+               $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n";
+               $output .= $this->elements;
+               return $output;
+       }                       
+       
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PalmRecord.php
new file mode 100644 (file)
index 0000000..29dc978
--- /dev/null
@@ -0,0 +1,154 @@
+<?php
+/**
+ * A Record of a PDB file
+ *
+ * @author Sander
+ */
+class PalmRecord extends FileObject {
+       /**
+        * @var FileElement
+        */
+       private $elements;
+
+       public function __construct($settings, $records, $textRecords, $textLength, $images){
+               $this->elements = new FileElement(array(
+                       "compression"=>new FileShort(),
+                       "unused"=>new FileShort(),
+                       "textLength"=>new FileInt(),
+                       "recordCount"=>new FileShort(),
+                       "recordSize"=>new FileShort(),
+                       "encryptionType"=>new FileShort(),
+                       "unused2"=>new FileShort(),
+                       //MOBI Header
+                       "mobiIdentifier"=>new FileString("MOBI", 4),
+                       "mobiHeaderLength"=>new FileInt(),
+                       "mobiType"=>new FileInt(),
+                       "textEncoding"=>new FileInt(),
+                       "uniqueID"=>new FileInt(),
+                       "fileVersion"=>new FileInt(),
+                       "reserved"=>new FileString(40),
+                       "firstNonBookIndex"=>new FileInt(),
+                       "fullNameOffset"=>new FileInt(),
+                       "fullNameLength"=>new FileInt(),
+                       "locale"=>new FileInt(),
+                       "inputLanguage"=>new FileInt(),
+                       "outputLanguage"=>new FileInt(),
+                       "minimumVersion"=>new FileInt(),
+                       "firstImageIndex"=>new FileInt(),
+                       "huffmanRecordOffset"=>new FileInt(),
+                       "huffmanRecordCount"=>new FileInt(),
+                       "unused3"=>new FileString(8),
+                       "exthFlags"=>new FileInt(0x50),
+                       "unknown"=>new FileString(32),
+                       "drmOffset"=>new FileInt(0xFFFFFFFF),
+                       "drmCount"=>new FileInt(0xFFFFFFFF),
+                       "drmSize"=>new FileInt(),
+                       "drmFlags"=>new FileInt(),
+                       "mobiFiller"=>new FileString(12),
+                       "offset192"=>new FileShort(0x01),
+                       "offset194"=>new FileShort(),
+                       "offset196"=>new FileInt(0x01),
+                       "offset200"=>new FileInt(),
+                       "offset204"=>new FileInt(0x01),
+                       "offset208"=>new FileInt(),
+                       "offset212"=>new FileInt(0x01),
+                       "offset216"=>new FileString(8),
+                       "offset224"=>new FileInt(0xFFFFFFFF),
+                       "offset228"=>new FileInt(),
+                       "offset232"=>new FileString(8),
+                       "offset240"=>new FileInt(0x01),
+                       "offset244"=>new FileInt(0xFFFFFFFF),
+                       //EXTH Header
+                       "exthIdentifier"=>new FileString("EXTH", 4),
+                       "exthHeaderLength"=>new FileInt(),
+                       "exthRecordCount"=>new FileInt(),
+                       "exthRecords"=>new FileElement(),
+                       "exthPadding"=>new FileString(),//added the 2 extra pad bytes that comes before name/title
+                       //"fullNamePadding"=>new FileString(100),
+                       "fullName"=>new FileString()
+                               ));
+
+               //Set values from the info block
+               foreach($settings->values as $name => $val){
+                       //echo $name.", ";
+                       if($this->elements->exists($name)){
+                               $this->elements->get($name)->set($settings->get($name));
+                       }
+               }
+
+               $els = $settings->values;
+
+               $exthElems = new FileElement();
+               $i = 0;
+               $l = 0;
+               foreach($els as $name=>$val){
+                       $type = EXTHHelper::textToType($name);
+                       if($type !== false){
+                               $type = new FileInt($type);
+                               $length = new FileInt(8+strlen($val));
+                               $data = new FileString($val);
+                               $l += 8+strlen($val);
+                               $exthElems->add("type".$i, $type);
+                               $exthElems->add("length".$i, $length);
+                               $exthElems->add("data".$i, $data);
+                               $i++;
+                       }
+               }
+
+               if($images > 0){
+                       $this->elements->get("firstImageIndex")->set($textRecords+2);
+               }
+               $this->elements->get("firstNonBookIndex")->set($textRecords+2+$images);
+               $this->elements->get("reserved")->set(str_pad("", 40, chr(255), STR_PAD_RIGHT));
+               $this->elements->get("exthRecordCount")->set($i);
+               $this->elements->set("exthRecords", $exthElems);
+               $pad = $l%4;
+               $pad = (4-$pad)%4;
+               $this->elements->get("exthPadding")->set(str_pad("", $pad+2, "\0", STR_PAD_RIGHT));
+               $this->elements->get("exthHeaderLength")->set(12+$l+$pad);
+
+
+               $this->elements->get("recordCount")->set($textRecords);
+               
+               $this->elements->get("fullNameOffset")->set($this->elements->offsetToEntry("fullName"));//need to be checked
+               $this->elements->get("fullNameLength")->set(strlen($settings->get("title")));
+               $this->elements->get("fullName")->set($settings->get("title"));
+               $this->elements->get("textLength")->set($textLength);
+               
+               $this->elements->get("offset194")->set($textRecords+2+$images);
+               $this->elements->get("offset200")->set($textRecords+4+$images);
+               $this->elements->get("offset208")->set($textRecords+3+$images);
+               $this->elements->get("offset232")->set(str_pad("", 8, chr(255), STR_PAD_RIGHT));
+       }
+
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       public function getLength(){
+               return $this->elements->getByteLength();
+       }
+
+       public function get(){
+               return $this;
+       }
+
+       public function set($elements){
+               throw new Exception("Unallowed set");
+       }
+
+       public function serialize() {
+               return $this->elements->serialize();
+       }
+
+       public function unserialize($data) {
+               $this->elements->unserialize($data);
+       }
+
+       public function __toString(){
+               $output = "PalmDoc Record (".$this->getByteLength()." bytes):\n";
+               $output .= $this->elements;
+               return $output;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Prc.php
new file mode 100644 (file)
index 0000000..1507e24
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+
+/**
+ * Description of Prc
+ *
+ * @author Sander
+ */
+class Prc extends FileElement {
+       public function __construct($settings, $records){
+               parent::__construct(array(
+                       "title"=>new FileString(32),
+                       "attributes"=>new FileShort(),
+                       "version"=>new FileShort(),
+                       "creationTime"=>new FileDate(),
+                       "modificationTime"=>new FileDate(),
+                       "backupTime"=>new FileDate(),
+                       "modificationNumber"=>new FileInt(),
+                       "appInfoID"=>new FileInt(),
+                       "sortInfoID"=>new FileInt(),
+                       "prcType"=>new FileString(4),
+                       "creator"=>new FileString(4),
+                       "uniqueIDSeed"=>new FileInt(),
+                       "nextRecordListID"=>new FileInt(),
+                       "numberRecords"=>new FileShort(),
+                       "recordList"=>new FileElement(),
+                       "filler"=>new FileShort(),
+                       "records"=>new FileElement()
+               ));
+
+               //Set values from the info block
+               foreach($this->elements as $name => $val){
+                       if($settings->exists($name)){
+                               $this->get($name)->set($settings->get($name));
+                       }
+               }
+               
+               $this->get("numberRecords")->set(sizeof($records));
+
+               $i = 0;
+               foreach($records as $record){
+                       $offset = new FileInt();
+                       $attr = new FileByte();
+                       $uniqueID = new FileTri(2*$i);
+                       
+                       $this->elements["recordList"]->add("Rec".$i, new FileElement(array(
+                               "offset"=>$offset,
+                               "attribute"=>$attr,
+                               "uniqueID"=>$uniqueID
+                       )));
+                       
+                       $this->elements["records"]->add("Rec".$i, $record);
+                       $i+=1;
+               }
+
+               $this->updateOffsets($records);
+       }
+
+       public function getByteLength(){
+               throw new Exception("Test");
+       }
+
+       public function updateOffsets($records){
+               $base = $this->offsetToEntry("records");
+
+               $i = 0;
+               
+               foreach($records as $record){
+                       $el = $this->elements["recordList"]->get("Rec".$i);
+                       
+                       $local = $this->elements["records"]->offsetToEntry("Rec".$i);
+                       
+                       $el->get("offset")->set($base+$local);
+
+                       $i++;
+               }
+       }
+
+       public function save($file){
+               $handle = fopen($file, "w");
+               fwrite($handle, $this->serialize());
+               fclose($handle);
+       }
+
+       public function output(){
+               echo $this->serialize();
+       }
+
+       public function __toString(){
+               $output = "Prc (".$this->getByteLength()." bytes): {\n";
+               foreach($this->elements as $key=>$value){
+                       $output .= "\t".$key.": ".$value."\n";
+               }
+               $output .= "}";
+               return $output;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/PreprocessedArticle.php
new file mode 100644 (file)
index 0000000..2e99240
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * Description of OnlineArticle
+ *
+ * @author Sander
+ */
+class PreprocessedArticle extends ContentProvider {
+       private $text;
+       private $images;
+       private $metadata = array();
+       private $imgCounter = 0;
+
+       public function  __construct($textData, $imageLinks, $metadata) {
+               $this->text = $textData;
+               $this->metadata = $metadata;
+
+               $this->images = $this->downloadImages($imageLinks);
+       }
+
+       /**
+        * Create a Preprocessed article from a json string
+        * @param string $json JSON data. Should be of the following format:
+        * {"text": "TEXT", "images: ["imageURL1", "imageURL2"], "metadata": {"key": "value"}}
+        *
+        * Note: Any image tags should have the recindex attribute set to the appropriate index (the
+        * same index as the image in the array)
+        * @return PreprocessedArticle The generated preprocessed array
+        */
+       static public function CreateFromJson($json){
+               $data = json_decode($json);
+               return new PreprocessedArticle($data["text"], $data["images"], $data["metadata"]);
+       }
+
+       /**
+        * Get the text data to be integrated in the MOBI file
+        * @return string
+        */
+       public function getTextData(){
+               return $this->text;
+       }
+       /**
+        * Get the images (an array containing the jpeg data). Array entry 0 will
+        * correspond to image record 0.
+        * @return array
+        */
+       public function getImages(){
+               return $this->images;
+       }
+       /**
+        * Get the metadata in the form of a hashtable (for example, title or author).
+        * @return array
+        */
+       public function getMetaData(){
+               return $this->metadata;
+       }
+       /**
+        *
+        * @param DOMElement $dom
+        * @return array
+        */
+       private function downloadImages($links){
+               $images = array();
+               foreach($links as $link) {
+                       $imgFile = @imagecreatefromstring(Http::Request($link));
+
+                       if($imgFile === false){
+                               $imgFile = @imagecreate(1, 1);
+                               $black = @imagecolorallocate($imgFile, 255, 255, 255);
+                       }
+                       if($imgFile !== false){
+                               @imagefilter($imgFile, IMG_FILTER_GRAYSCALE);
+
+                               ob_start();
+                               @imagejpeg($imgFile);
+                               $image = ob_get_contents();
+                               ob_end_clean();
+
+                               $images[$this->imgCounter] = new FileRecord(new Record($image));
+                               imagedestroy($imgFile);
+                               
+                               $this->imgCounter++;
+                       }
+               }
+
+               return $images;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/RecognizeURL.php
new file mode 100644 (file)
index 0000000..6319ed5
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * Description of RecognizeURL
+ *
+ * @author Sander
+ */
+class RecognizeURL {
+       public static function GetContentHandler($url){
+               if(FanFictionNet::Matches($url)){
+                       return new FanFictionNet($url);
+               }
+               return null;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Record.php
new file mode 100644 (file)
index 0000000..3cb3958
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+/**
+ * A Record of a PDB file
+ *
+ * @author Sander
+ */
+class Record extends FileObject {
+       /**
+        * Data in the record
+        * @var string
+        */
+       private $data;
+       /**
+        * Length of the record
+        * @var int
+        */
+       private $length;
+
+       /**
+        * Create a record
+        * @param string $data Data contained in the record
+        * @param int $length Length of the record (if set to -1,
+        * the length of $data will be taken)
+        */
+       public function __construct($data = "", $length = -1){
+               $this->data = $data;
+               if($length >= 0){
+                       $this->length = $length;
+               }else{
+                       $this->length = strlen($data);
+               }
+       }
+
+       public function compress($compression_method){
+               switch($compression_method){
+                       case NO_COMPRESSION:
+                               //Finished!
+                               break;
+                       case PALMDOC_COMPRESSION:
+                               throw new Exception("Not implemented yet");
+                               break;
+                       case HUFF:
+                               throw new Exception("Not implemented yet");
+                               break;
+                       default:
+                               throw new Exception("Invalid argument");
+               }
+       }
+
+       public function getByteLength(){
+               return $this->getLength();
+       }
+
+       /**
+        * Get the length of the record
+        * @return int Length of the data
+        */
+       public function getLength(){
+               return $this->length;
+       }
+
+       /**
+        * Get the data contained in the record
+        * @return string Data contained in the record
+        */
+       public function get(){
+               return $this->data;
+       }
+
+       /**
+        * Set the data contained in the record
+        * @param string $value Data contained in the record
+        */
+       public function set($value){
+               $this->data = $value;
+       }
+       
+    public function serialize(){
+        return $this->data;
+    }
+    public function unserialize($data){
+        __construct($data);
+    }
+       
+       public function __toString() {
+               $toShow = $this->data;
+               if(strlen($this->data) > 103){
+                       $toShow = substr($this->data, 0, 100)."...";
+               }
+               $out = "Record: {\n";
+               $out .= "\t".htmlspecialchars($toShow)."\n";
+               $out .= "}";
+               return $out;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/RecordFactory.php
new file mode 100644 (file)
index 0000000..8bf0c97
--- /dev/null
@@ -0,0 +1,129 @@
+<?php
+
+/**
+ * Helper class to help with creating records from a
+ * long data stream
+ *
+ * @author Sander
+ */
+class RecordFactory {
+       /**
+        * Settings for the record factory
+        * @var Settings
+        */
+       private $settings;
+
+       /**
+        * Create the helper class
+        * @param Settings $settings The Settings to be used for the records
+        */
+       public function __construct($settings){
+               $this->settings = $settings;
+       }
+
+       /**
+        * Create records from a data string
+        * @param string $data
+        * @return array(Record)
+        */
+       public function createRecords($data){
+               $records = array();
+               $size = $this->settings->get("recordSize");
+               $compression = $this->settings->get("compression");
+
+               $dataEntries = mb_str_split($data, $size);
+
+               for($i = 0, $len = sizeof($dataEntries); $i < $len; $i++){
+                       $records[$i] = new Record($dataEntries[$i]);
+                       $records[$i]->compress($compression);
+               }
+
+               return $records;
+       }
+
+       public function createEOFRecord(){
+               return new Record(0xe98e0d0a);
+       }
+
+       public function createFCISRecord($textLength){
+               $r = "FCIS";
+               $r .= $this->asString(20, 4);
+               $r .= $this->asString(16, 4);
+               $r .= $this->asString(1, 4);
+               $r .= $this->asString(0, 4);
+               $r .= $this->asString($textLength, 4);
+               $r .= $this->asString(0, 4);
+               $r .= $this->asString(32, 4);
+               $r .= $this->asString(8, 4);
+               $r .= $this->asString(1, 2);
+               $r .= $this->asString(1, 2);
+               $r .= $this->asString(0, 4);
+               return new Record($r);
+       }
+
+       public function createFLISRecord(){
+               
+               $this->elements = new FileElement(array(
+                       "offsetL0"=>new FileString("FLIS", 4),  //FLIS
+                       "offsetL4"=>new FileInt(0x08),
+                       "offsetL8"=>new FileShort(0x41),
+                       "offsetL10"=>new FileTri(),
+                       "offsetL16"=>new FileInt(0xFFFFFFFF),
+                       "offsetL20"=>new FileShort(0x01),               
+                       "offsetL22"=>new FileShort(0x03),
+                       "offsetL24"=>new FileInt(0x03),
+                       "offsetL28"=>new FileInt(0x01),
+                       "offsetL32"=>new FileInt(0xFFFFFFFF)
+                       ));
+               
+               /*$r = "FLIS";
+               $r .= $this->asString(8, 4);
+               $r .= $this->asString(65, 2);
+               $r .= $this->asString(0, 2);
+               $r .= $this->asString(0, 4);
+               $r .= $this->asString(-1, 4);
+               $r .= $this->asString(1, 2);
+               $r .= $this->asString(3, 2);
+               $r .= $this->asString(3, 4);
+               $r .= $this->asString(1, 4);
+               $r .= $this->asString(-1, 4);
+               return new Record($r);*/
+       }
+       
+       private function asString($int, $size){
+               $out = "";
+               for($i = 0; $i < $size; $i++){
+                       if($i > 0) $out = " ".$out;
+                       $byte = dechex($int & 0xFF);
+                       if(strlen($byte) == 1) $byte = "0".$byte;
+                       $out = $byte.$out;
+                       $int = $int >> 8;
+               }
+               return $out;
+       }
+
+       public function __toString() {
+               $out = "Record Factory: {\n";
+               $out .= "\tRecord Size: ".$this->settings->get("recordSize")."\n";
+               $out .= "\tCompression: ".$this->settings->get("compression")."\n";
+               $out .= "}";
+               return $out;
+       }
+}
+function mb_str_split($string, $split_length = 1){
+       mb_internal_encoding('UTF-8');
+       mb_regex_encoding('UTF-8');
+
+       $split_length = ($split_length <= 0) ? 1 : $split_length;
+
+       $mb_strlen = mb_strlen($string, 'utf-8');
+
+       $array = array();
+
+       for($i = 0; $i < $mb_strlen; $i += $split_length){
+               $array[] = mb_substr($string, $i, $split_length);
+       }
+
+       return $array;
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/Settings.php
new file mode 100644 (file)
index 0000000..6bde0ba
--- /dev/null
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * Description of Settings
+ *
+ * @author Sander
+ */
+class Settings {
+       /**
+        * Values of the settings
+        * @var array 
+        */
+       public $values;
+
+       /**
+        * Construct a Settings object with the default settings. If necessary,
+        * those settings can be extended with additional settings
+        * @param array $additionalSettings Additional settings to add (should
+        * be added with a key/value pair format.
+        */
+       public function  __construct($additionalSettings = array()) {
+               $this->values = array(
+                       "attributes"=>0,
+                       "version"=>0,
+                       "creationTime"=>time()+94694400,
+                       "modificationTime"=>time()+94694400,
+                       "backupTime"=>0,
+                       "modificationNumber"=>0,
+                       "appInfoID"=>0,
+                       "sortInfoID"=>0,
+                       "prcType"=>"BOOK",
+                       "creator"=>"MOBI",
+                       "uniqueIDSeed"=>rand(),
+                       "nextRecordListID"=>0,
+                       "recordAttributes"=>0,
+                       "compression"=>NO_COMPRESSION,
+                       "recordSize"=>RECORD_SIZE,
+                       "encryptionType"=>NO_ENCRYPTION,
+                       "mobiIdentifier"=>"MOBI",
+                       "mobiHeaderLength"=>0xe8,
+                       "mobiType"=>MOBIPOCKET_BOOK,
+                       "textEncoding"=>UTF8,
+                       "uniqueID"=>rand(),
+                       "fileVersion"=>6,
+                       "locale"=>0x09,
+                       "inputLanguage"=>0,
+                       "outputLanguage"=>0,
+                       "minimumVersion"=>6,
+                       "huffmanRecordOffset"=>0,
+                       "huffmanRecordCount"=>0,
+                       "exthFlags"=>0x50,
+                       "drmOffset"=>0xFFFFFFFF,
+                       "drmCount"=>0xFFFFFFFF,
+                       "drmSize"=>0,
+                       "drmFlags"=>0,
+                       "extraDataFlags"=>0,
+                       "exthIdentifier"=>"EXTH",
+                       "title"=>"Unknown title",
+                       "author"=>"Unknown author",
+                       "subject"=>"Unknown subject"
+               );
+               
+               foreach($additionalSettings as $key=>$value){
+                       $this->values[$key] = $value;
+               }
+       }
+
+       /**
+        * Get a value from the settings
+        * @param string $key Key of the setting
+        * @return mixed The value of the setting
+        */
+       public function get($key){
+               return $this->values[$key];
+       }
+
+       /**
+        * Checks if a value is set
+        * @param string $key Key of the setting
+        * @return bool True if the value exists
+        */
+       public function exists($key){
+               return isset($this->values[$key]);
+       }
+
+       public function __toString() {
+               $out = "Settings: {\n";
+               foreach($this->values as $key=>$value){
+                       $out .= "\t".$key.": ".$value."\n";
+               }
+               $out .= "}";
+               return $out;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/constants.php
new file mode 100644 (file)
index 0000000..bd36311
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+define("NO_COMPRESSION", 1);
+define("PALMDOC_COMPRESSION", 2);
+define("HUFF", 17480);
+define("RECORD_SIZE", 4096);
+
+define("NO_ENCRYPTION", 0);
+
+define("MOBIPOCKET_BOOK", 2);
+define("CP1252", 1252);
+define("UTF8", 65001);
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/downloaders/FanFictionNet.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/downloaders/FanFictionNet.php
new file mode 100644 (file)
index 0000000..65d5a46
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+
+/**
+ * Description of FanFictionNet
+ *
+ * @author Sander
+ */
+class FanFictionNet extends MultipleFileHandler {
+       private static $prefix = "http://www.fanfiction.net/s/";
+       private $downloadedMetadata = false;
+       private $id = 0;
+       private $chapterCount = -1;
+       
+       public function  __construct($url) {
+               $ending = substr($url, strlen(self::$prefix));
+               $this->id = intval(substr($ending, 0, strpos($ending, "/")));
+
+               for($i = 1; $i <= max(1, $this->chapterCount); $i++){
+                       $this->addChapter($i);
+               }
+       }
+
+       private function addChapter($n){
+               $doc = new DOMDocument();
+               $file = Http::Request(self::$prefix.$this->id."/".$n."/");
+               @$doc->loadHTML($file) or die($file);
+               
+               if(!$this->downloadedMetadata){
+                       $this->loadMetadata($doc);
+                       $this->downloadedMetadata = true;
+               }
+               if($this->chapterCount < 0){
+                       $this->chapterCount = $this->getNumberChapters($doc);
+
+                       if($this->chapterCount > 4){
+                               die("Too many files to download, don't use php for this!");
+                       }
+               }
+
+               $textEl = $doc->getElementById("storytext");
+               if($textEl == null) die("Error: ".$doc->saveHTML());
+               $horizontalRulebars = $doc->getElementsByTagName('hr');
+               /**
+                * @var DOMNode
+                */
+               $hr;
+               foreach($horizontalRulebars as $hr) {
+                       $hr->setAttribute("size", null);
+                       $hr->setAttribute("noshade", null);
+               }
+               $text = $this->innerHtml($textEl);
+               
+               $title = "";
+               $selects = $doc->getElementsByTagName('select');
+               foreach($selects as $select) {
+                       if($select->hasAttribute("name") && $select->getAttribute("name") == "chapter"){
+                               $options = $select->getElementsByTagName("option");
+
+                               $test = $n.". ";
+                               foreach($options as $option){
+                                       $val = $option->nodeValue;
+                                       if(substr($val, 0, strlen($test)) == $test){
+                                               $title = substr($val, strlen($test));
+                                               break;
+                                       }
+                               }
+                               break;
+                       }
+               }
+               $this->addPage($text, $title);
+       }
+
+       private function getNumberChapters($doc){
+               $selects = $doc->getElementsByTagName('select');
+               foreach($selects as $select) {
+                       if($select->hasAttribute("name") && $select->getAttribute("name") == "chapter"){
+                               $options = $select->getElementsByTagName("option");
+
+                               $count = $options->length;
+                               return $count;
+                       }
+               }
+       }
+
+       private function loadMetadata($doc){
+               //Author
+               $links = $doc->getElementsByTagName('a');
+               foreach($links as $link) {
+                       if($link == null){
+                               var_dump($link);
+                       }
+                       if($link->hasAttribute("href") && substr($link->getAttribute("href"), 0, 3) == "/u/"){
+                               $this->setMetadata("author", $link->nodeValue);
+                       }
+               }
+               //Title
+               /*
+               $links = $doc->getElementsByTagName('link');
+               foreach($links as $link) {
+                       if($link->hasAttribute("rel") && $link->getAttribute("rel") == "canonical"){
+                               $url = $link->getAttribute("href");
+                               $title = str_replace("_", " ", substr($url, strrpos($url, "/")+1));
+                               $this->setMetadata("title", $title);
+                       }
+               }*/
+
+               //TODO: Find a more reliable way to extract the title
+               $title = $doc->getElementsByTagName("b")->item(0)->nodeValue;
+               $this->setMetadata("title", $title);
+       }
+
+       private function innerHtml($node){
+               $doc = new DOMDocument();
+               foreach ($node->childNodes as $child)
+                       $doc->appendChild($doc->importNode($child, true));
+               
+               return $doc->saveHTML();
+       }
+
+       public static function Matches($url){
+               //TODO: Implement with regex
+               return strpos($url, self::$prefix) !== false;
+       }
+}
+?>
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/http_build_url.php
new file mode 100644 (file)
index 0000000..b475edb
--- /dev/null
@@ -0,0 +1,94 @@
+<?php
+if(!is_callable("http_build_url")){
+       define('HTTP_URL_REPLACE', 1);          // Replace every part of the first URL when there's one of the second URL
+       define('HTTP_URL_JOIN_PATH', 2);        // Join relative paths
+       define('HTTP_URL_JOIN_QUERY', 4);       // Join query strings
+       define('HTTP_URL_STRIP_USER', 8);       // Strip any user authentication information
+       define('HTTP_URL_STRIP_PASS', 16);      // Strip any password authentication information
+       define('HTTP_URL_STRIP_AUTH', 32);      // Strip any authentication information
+       define('HTTP_URL_STRIP_PORT', 64);      // Strip explicit port numbers
+       define('HTTP_URL_STRIP_PATH', 128);     // Strip complete path
+       define('HTTP_URL_STRIP_QUERY', 256);    // Strip query string
+       define('HTTP_URL_STRIP_FRAGMENT', 512); // Strip any fragments (#identifier)
+       define('HTTP_URL_STRIP_ALL', 1024);     // Strip anything but scheme and host
+
+       // Build an URL
+       // The parts of the second URL will be merged into the first according to the flags argument.
+       //
+       // @param mixed     (Part(s) of) an URL in form of a string or associative array like parse_url() returns
+       // @param mixed     Same as the first argument
+       // @param int       A bitmask of binary or'ed HTTP_URL constants (Optional)HTTP_URL_REPLACE is the default
+       // @param array     If set, it will be filled with the parts of the composed url like parse_url() would return
+       function http_build_url($url, $parts = array (), $flags = HTTP_URL_REPLACE, &$new_url = false) {
+         $keys = array (
+               'user',
+               'pass',
+               'port',
+               'path',
+               'query',
+               'fragment'
+         );
+
+         // HTTP_URL_STRIP_ALL becomes all the HTTP_URL_STRIP_Xs
+         if ($flags & HTTP_URL_STRIP_ALL) {
+               $flags |= HTTP_URL_STRIP_USER;
+               $flags |= HTTP_URL_STRIP_PASS;
+               $flags |= HTTP_URL_STRIP_PORT;
+               $flags |= HTTP_URL_STRIP_PATH;
+               $flags |= HTTP_URL_STRIP_QUERY;
+               $flags |= HTTP_URL_STRIP_FRAGMENT;
+         }
+         // HTTP_URL_STRIP_AUTH becomes HTTP_URL_STRIP_USER and HTTP_URL_STRIP_PASS
+         else if ($flags & HTTP_URL_STRIP_AUTH) {
+               $flags |= HTTP_URL_STRIP_USER;
+               $flags |= HTTP_URL_STRIP_PASS;
+         }
+
+         // Parse the original URL
+         $parse_url = parse_url($url);
+
+         // Scheme and Host are always replaced
+         if (isset($parts['scheme']))
+               $parse_url['scheme'] = $parts['scheme'];
+
+         if (isset($parts['host']))
+               $parse_url['host'] = $parts['host'];
+
+         // (If applicable) Replace the original URL with it's new parts
+         if ($flags & HTTP_URL_REPLACE) {
+               foreach ($keys as $key) {
+                 if (isset($parts[$key]))
+                       $parse_url[$key] = $parts[$key];
+               }
+         } else {
+               // Join the original URL path with the new path
+               if (isset($parts['path']) && ($flags & HTTP_URL_JOIN_PATH)) {
+                 if (isset($parse_url['path']))
+                       $parse_url['path'] = rtrim(str_replace(basename($parse_url['path']), '', $parse_url['path']), '/') . '/' . ltrim($parts['path'], '/');
+                 else
+                       $parse_url['path'] = $parts['path'];
+               }
+
+               // Join the original query string with the new query string
+               if (isset($parts['query']) && ($flags & HTTP_URL_JOIN_QUERY)) {
+                 if (isset($parse_url['query']))
+                       $parse_url['query'] .= '&' . $parts['query'];
+                 else
+                       $parse_url['query'] = $parts['query'];
+               }
+         }
+
+         // Strips all the applicable sections of the URL
+         // Note: Scheme and Host are never stripped
+         foreach ($keys as $key) {
+               if ($flags & (int)constant('HTTP_URL_STRIP_' . strtoupper($key)))
+                 unset($parse_url[$key]);
+         }
+
+         $new_url = $parse_url;
+
+         return ((isset($parse_url['scheme'])) ? $parse_url['scheme'] . '://' : '') . ((isset($parse_url['user'])) ? $parse_url['user'] . ((isset($parse_url['pass'])) ? ':' . $parse_url['pass'] : '') . '@' : '')
+               . ((isset($parse_url['host'])) ? $parse_url['host'] : '') . ((isset($parse_url['port'])) ? ':' . $parse_url['port'] : '') . ((isset($parse_url['path'])) ? $parse_url['path'] : '')
+               . ((isset($parse_url['query'])) ? '?' . $parse_url['query'] : '') . ((isset($parse_url['fragment'])) ? '#' . $parse_url['fragment'] : '');
+       }
+}
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/JSLikeHTMLElement.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/JSLikeHTMLElement.php
new file mode 100644 (file)
index 0000000..1a8ec88
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+/**
+* JavaScript-like HTML DOM Element
+*
+* This class extends PHP's DOMElement to allow
+* users to get and set the innerHTML property of
+* HTML elements in the same way it's done in
+* JavaScript.
+*
+* Example usage:
+* @code
+* require_once 'JSLikeHTMLElement.php';
+* header('Content-Type: text/plain');
+* $doc = new DOMDocument();
+* $doc->registerNodeClass('DOMElement', 'JSLikeHTMLElement');
+* $doc->loadHTML('<div><p>Para 1</p><p>Para 2</p></div>');
+* $elem = $doc->getElementsByTagName('div')->item(0);
+*
+* // print innerHTML
+* echo $elem->innerHTML; // prints '<p>Para 1</p><p>Para 2</p>'
+* echo "\n\n";
+*
+* // set innerHTML
+* $elem->innerHTML = '<a href="http://fivefilters.org">FiveFilters.org</a>';
+* echo $elem->innerHTML; // prints '<a href="http://fivefilters.org">FiveFilters.org</a>'
+* echo "\n\n";
+*
+* // print document (with our changes)
+* echo $doc->saveXML();
+* @endcode
+*
+* @author Keyvan Minoukadeh - http://www.keyvan.net - keyvan@keyvan.net
+* @see http://fivefilters.org (the project this was written for)
+*/
+class JSLikeHTMLElement extends DOMElement
+{
+       /**
+       * Used for setting innerHTML like it's done in JavaScript:
+       * @code
+       * $div->innerHTML = '<h2>Chapter 2</h2><p>The story begins...</p>';
+       * @endcode
+       */
+       public function __set($name, $value) {
+               if ($name == 'innerHTML') {
+                       // first, empty the element
+                       for ($x=$this->childNodes->length-1; $x>=0; $x--) {
+                               $this->removeChild($this->childNodes->item($x));
+                       }
+                       // $value holds our new inner HTML
+                       if ($value != '') {
+                               $f = $this->ownerDocument->createDocumentFragment();
+                               // appendXML() expects well-formed markup (XHTML)
+                               $result = @$f->appendXML($value); // @ to suppress PHP warnings
+                               if ($result) {
+                                       if ($f->hasChildNodes()) $this->appendChild($f);
+                               } else {
+                                       // $value is probably ill-formed
+                                       $f = new DOMDocument();
+                                       $value = mb_convert_encoding($value, 'HTML-ENTITIES', 'UTF-8');
+                                       // Using <htmlfragment> will generate a warning, but so will bad HTML
+                                       // (and by this point, bad HTML is what we've got).
+                                       // We use it (and suppress the warning) because an HTML fragment will
+                                       // be wrapped around <html><body> tags which we don't really want to keep.
+                                       // Note: despite the warning, if loadHTML succeeds it will return true.
+                                       $result = @$f->loadHTML('<htmlfragment>'.$value.'</htmlfragment>');
+                                       if ($result) {
+                                               $import = $f->getElementsByTagName('htmlfragment')->item(0);
+                                               foreach ($import->childNodes as $child) {
+                                                       $importedNode = $this->ownerDocument->importNode($child, true);
+                                                       $this->appendChild($importedNode);
+                                               }
+                                       } else {
+                                               // oh well, we tried, we really did. :(
+                                               // this element is now empty
+                                       }
+                               }
+                       }
+               } else {
+                       $trace = debug_backtrace();
+                       trigger_error('Undefined property via __set(): '.$name.' in '.$trace[0]['file'].' on line '.$trace[0]['line'], E_USER_NOTICE);
+               }
+       }
+
+       /**
+       * Used for getting innerHTML like it's done in JavaScript:
+       * @code
+       * $string = $div->innerHTML;
+       * @endcode
+       */
+       public function __get($name)
+       {
+               if ($name == 'innerHTML') {
+                       $inner = '';
+                       foreach ($this->childNodes as $child) {
+                               $inner .= $this->ownerDocument->saveXML($child);
+                       }
+                       return $inner;
+               }
+
+               $trace = debug_backtrace();
+               trigger_error('Undefined property via __get(): '.$name.' in '.$trace[0]['file'].' on line '.$trace[0]['line'], E_USER_NOTICE);
+               return null;
+       }
+
+       public function __toString()
+       {
+               return '['.$this->tagName.']';
+       }
+}
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php b/inc/3rdparty/libraries/send2kindle/MOBIClass/readability/Readability.php
new file mode 100644 (file)
index 0000000..9155424
--- /dev/null
@@ -0,0 +1,1069 @@
+<?php
+/**
+* Arc90's Readability ported to PHP for FiveFilters.org
+* Based on readability.js version 1.7.1 (without multi-page support)
+* ------------------------------------------------------
+* Original URL: http://lab.arc90.com/experiments/readability/js/readability.js
+* Arc90's project URL: http://lab.arc90.com/experiments/readability/
+* JS Source: http://code.google.com/p/arc90labs-readability
+* Ported by: Keyvan Minoukadeh, http://www.keyvan.net
+* More information: http://fivefilters.org/content-only/
+* License: Apache License, Version 2.0
+* Requires: PHP5
+* Date: 2010-10-29
+*
+* Differences between the PHP port and the original
+* ------------------------------------------------------
+* Arc90's Readability is designed to run in the browser. It works on the DOM
+* tree (the parsed HTML) after the page's CSS styles have been applied and
+* Javascript code executed. This PHP port does not run inside a browser.
+* We use PHP's ability to parse HTML to build our DOM tree, but we cannot
+* rely on CSS or Javascript support. As such, the results will not always
+* match Arc90's Readability. (For example, if a web page contains CSS style
+* rules or Javascript code which hide certain HTML elements from display,
+* Arc90's Readability will dismiss those from consideration but our PHP port,
+* unable to understand CSS or Javascript, will not know any better.)
+*
+* Another significant difference is that the aim of Arc90's Readability is
+* to re-present the main content block of a given web page so users can
+* read it more easily in their browsers. Correct identification, clean up,
+* and separation of the content block is only a part of this process.
+* This PHP port is only concerned with this part, it does not include code
+* that relates to presentation in the browser - Arc90 already do
+* that extremely well, and for PDF output there's FiveFilters.org's
+* PDF Newspaper: http://fivefilters.org/pdf-newspaper/.
+*
+* Finally, this class contains methods that might be useful for developers
+* working on HTML document fragments. So without deviating too much from
+* the original code (which I don't want to do because it makes debugging
+* and updating more difficult), I've tried to make it a little more
+* developer friendly. You should be able to use the methods here on
+* existing DOMElement objects without passing an entire HTML document to
+* be parsed.
+*/
+
+// This class allows us to do JavaScript like assignements to innerHTML
+require_once(dirname(__FILE__).'/JSLikeHTMLElement.php');
+
+// Alternative usage (for testing only!)
+// uncomment the lins below and call Readability.php in your browser
+// passing it the URL of the page you'd like content from, e.g.:
+// Readability.php?url=http://medialens.org/alerts/09/090615_the_guardian_climate.php
+
+/*
+if (!isset($_GET['url']) || $_GET['url'] == '') {
+       die('Please pass a URL to the script. E.g. Readability.php?url=bla.com/story.html');
+}
+$url = $_GET['url'];
+if (!preg_match('!^https?://!i', $url)) $url = 'http://'.$url;
+$html = file_get_contents($url);
+$r = new Readability($html, $url);
+$r->init();
+echo $r->articleContent->innerHTML;
+*/
+
+class Readability
+{
+       public $version = '1.7.1-without-multi-page';
+       public $convertLinksToFootnotes = false;
+       public $revertForcedParagraphElements = true;
+       public $articleTitle;
+       public $articleContent;
+       public $dom;
+       public $url = null; // optional - URL where HTML was retrieved
+       public $debug = false;
+       protected $body = null; //
+       protected $bodyCache = null; // Cache the body HTML in case we need to re-use it later
+       protected $flags = 7; // 1 | 2 | 4;   // Start with all flags set.
+       protected $success = false; // indicates whether we were able to extract or not
+
+       /**
+       * All of the regular expressions in use within readability.
+       * Defined up here so we don't instantiate them repeatedly in loops.
+       **/
+       public $regexps = array(
+               'unlikelyCandidates' => '/combx|comment|community|disqus|extra|foot|header|menu|remark|rss|shoutbox|sidebar|sponsor|ad-break|agegate|pagination|pager|popup|tweet|twitter/i',
+               'okMaybeItsACandidate' => '/and|article|body|column|main|shadow/i',
+               'positive' => '/article|body|content|entry|hentry|main|page|pagination|post|text|blog|story/i',
+               'negative' => '/combx|comment|com-|contact|foot|footer|footnote|masthead|media|meta|outbrain|promo|related|scroll|shoutbox|sidebar|sponsor|shopping|tags|tool|widget/i',
+               'divToPElements' => '/<(a|blockquote|dl|div|img|ol|p|pre|table|ul)/i',
+               'replaceBrs' => '/(<br[^>]*>[ \n\r\t]*){2,}/i',
+               'replaceFonts' => '/<(\/?)font[^>]*>/i',
+               // 'trimRe' => '/^\s+|\s+$/g', // PHP has trim()
+               'normalize' => '/\s{2,}/',
+               'killBreaks' => '/(<br\s*\/?>(\s|&nbsp;?)*){1,}/',
+               'video' => '/http:\/\/(www\.)?(youtube|vimeo)\.com/i',
+               'skipFootnoteLink' => '/^\s*(\[?[a-z0-9]{1,2}\]?|^|edit|citation needed)\s*$/i'
+       );
+
+       /* constants */
+       const FLAG_STRIP_UNLIKELYS = 1;
+       const FLAG_WEIGHT_CLASSES = 2;
+       const FLAG_CLEAN_CONDITIONALLY = 4;
+
+       /**
+       * Create instance of Readability
+       * @param string UTF-8 encoded string
+       * @param string (optional) URL associated with HTML (used for footnotes)
+       */
+       function __construct($html, $url=null)
+       {
+               /* Turn all double br's into p's */
+               /* Note, this is pretty costly as far as processing goes. Maybe optimize later. */
+               $html = preg_replace($this->regexps['replaceBrs'], '</p><p>', $html);
+               $html = preg_replace($this->regexps['replaceFonts'], '<$1span>', $html);
+               $html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");
+               $this->dom = new DOMDocument();
+               $this->dom->preserveWhiteSpace = false;
+               $this->dom->registerNodeClass('DOMElement', 'JSLikeHTMLElement');
+               @$this->dom->loadHTML($html);
+               $this->url = $url;
+       }
+
+       /**
+       * Get article title element
+       * @return DOMElement
+       */
+       public function getTitle() {
+               return $this->articleTitle;
+       }
+
+       /**
+       * Get article content element
+       * @return DOMElement
+       */
+       public function getContent() {
+               return $this->articleContent;
+       }
+
+       /**
+       * Runs readability.
+       *
+       * Workflow:
+       *  1. Prep the document by removing script tags, css, etc.
+       *  2. Build readability's DOM tree.
+       *  3. Grab the article content from the current dom tree.
+       *  4. Replace the current DOM tree with the new one.
+       *  5. Read peacefully.
+       *
+       * @return boolean true if we found content, false otherwise
+       **/
+       public function init()
+       {
+               $this->removeScripts($this->dom);
+
+               // Assume successful outcome
+               $this->success = true;
+
+               $bodyElems = $this->dom->getElementsByTagName('body');
+               if ($bodyElems->length > 0) {
+                       if ($this->bodyCache == null) {
+                               $this->bodyCache = $bodyElems->item(0)->innerHTML;
+                       }
+                       if ($this->body == null) {
+                               $this->body = $bodyElems->item(0);
+                       }
+               }
+
+               $this->prepDocument();
+
+               //die($this->dom->documentElement->parentNode->nodeType);
+               //$this->setInnerHTML($this->dom->documentElement, $this->getInnerHTML($this->dom->documentElement));
+               //die($this->getInnerHTML($this->dom->documentElement));
+
+               /* Build readability's DOM tree */
+               $overlay        = $this->dom->createElement('div');
+               $innerDiv       = $this->dom->createElement('div');
+               $articleTitle   = $this->getArticleTitle();
+               $articleContent = $this->grabArticle();
+
+               if (!$articleContent) {
+                       $this->success = false;
+                       $articleContent = $this->dom->createElement('div');
+                       $articleContent->setAttribute('id', 'readability-content');
+                       $articleContent->innerHTML = '<p>Sorry, Readability was unable to parse this page for content.</p>';
+               }
+
+               $overlay->setAttribute('id', 'readOverlay');
+               $innerDiv->setAttribute('id', 'readInner');
+
+               /* Glue the structure of our document together. */
+               $innerDiv->appendChild($articleTitle);
+               $innerDiv->appendChild($articleContent);
+               $overlay->appendChild($innerDiv);
+
+               /* Clear the old HTML, insert the new content. */
+               $this->body->innerHTML = '';
+               $this->body->appendChild($overlay);
+               //document.body.insertBefore(overlay, document.body.firstChild);
+               $this->body->removeAttribute('style');
+
+               $this->postProcessContent($articleContent);
+
+               // Set title and content instance variables
+               $this->articleTitle = $articleTitle;
+               $this->articleContent = $articleContent;
+
+               return $this->success;
+       }
+
+       /**
+       * Debug
+       */
+       protected function dbg($msg) {
+               if ($this->debug) echo '* ',$msg, '<br />', "\n";
+       }
+
+       /**
+       * Run any post-process modifications to article content as necessary.
+       *
+       * @param DOMElement
+       * @return void
+       */
+       public function postProcessContent($articleContent) {
+               if ($this->convertLinksToFootnotes && !preg_match('/wikipedia\.org/', @$this->url)) {
+                       $this->addFootnotes($articleContent);
+               }
+       }
+
+       /**
+       * Get the article title as an H1.
+       *
+       * @return DOMElement
+       */
+       protected function getArticleTitle() {
+               $curTitle = '';
+               $origTitle = '';
+
+               try {
+                       $curTitle = $origTitle = $this->getInnerText($this->dom->getElementsByTagName('title')->item(0));
+               } catch(Exception $e) {}
+
+               if (preg_match('/ [\|\-] /', $curTitle))
+               {
+                       $curTitle = preg_replace('/(.*)[\|\-] .*/i', '$1', $origTitle);
+
+                       if (count(explode(' ', $curTitle)) < 3) {
+                               $curTitle = preg_replace('/[^\|\-]*[\|\-](.*)/i', '$1', $origTitle);
+                       }
+               }
+               else if (strpos($curTitle, ': ') !== false)
+               {
+                       $curTitle = preg_replace('/.*:(.*)/i', '$1', $origTitle);
+
+                       if (count(explode(' ', $curTitle)) < 3) {
+                               $curTitle = preg_replace('/[^:]*[:](.*)/i','$1', $origTitle);
+                       }
+               }
+               else if(strlen($curTitle) > 150 || strlen($curTitle) < 15)
+               {
+                       $hOnes = $this->dom->getElementsByTagName('h1');
+                       if($hOnes->length == 1)
+                       {
+                               $curTitle = $this->getInnerText($hOnes->item(0));
+                       }
+               }
+
+               $curTitle = trim($curTitle);
+
+               if (count(explode(' ', $curTitle)) <= 4) {
+                       $curTitle = $origTitle;
+               }
+
+               $articleTitle = $this->dom->createElement('h1');
+               $articleTitle->innerHTML = $curTitle;
+
+               return $articleTitle;
+       }
+
+       /**
+       * Prepare the HTML document for readability to scrape it.
+       * This includes things like stripping javascript, CSS, and handling terrible markup.
+       *
+       * @return void
+       **/
+       protected function prepDocument() {
+               /**
+               * In some cases a body element can't be found (if the HTML is totally hosed for example)
+               * so we create a new body node and append it to the document.
+               */
+               if($this->dom->documentElement == null){
+                       throw new Exception("No document element");
+               }
+               if ($this->body == null)
+               {
+                       $this->body = $this->dom->createElement('body');
+                       $this->dom->documentElement->appendChild($this->body);
+               }
+
+               $this->body->setAttribute('id', 'readabilityBody');
+
+               /* Remove all style tags in head */
+               $styleTags = $this->dom->getElementsByTagName('style');
+               for ($i = $styleTags->length-1; $i >= 0; $i--)
+               {
+                       $styleTags->item($i)->parentNode->removeChild($styleTags->item($i));
+               }
+
+               /* Turn all double br's into p's */
+               /* Note, this is pretty costly as far as processing goes. Maybe optimize later. */
+               //document.body.innerHTML = document.body.innerHTML.replace(readability.regexps.replaceBrs, '</p><p>').replace(readability.regexps.replaceFonts, '<$1span>');
+               // We do this in the constructor for PHP as that's when we have raw HTML - before parsing it into a DOM tree.
+               // Manipulating innerHTML as it's done in JS is not possible in PHP.
+       }
+
+       /**
+       * For easier reading, convert this document to have footnotes at the bottom rather than inline links.
+       * @see http://www.roughtype.com/archives/2010/05/experiments_in.php
+       *
+       * @return void
+       **/
+       public function addFootnotes($articleContent) {
+               $footnotesWrapper = $this->dom->createElement('div');
+               $footnotesWrapper->setAttribute('id', 'readability-footnotes');
+               $footnotesWrapper->innerHTML = '<h3>References</h3>';
+
+               $articleFootnotes = $this->dom->createElement('ol');
+               $articleFootnotes->setAttribute('id', 'readability-footnotes-list');
+               $footnotesWrapper->appendChild($articleFootnotes);
+
+               $articleLinks = $articleContent->getElementsByTagName('a');
+
+               $linkCount = 0;
+               for ($i = 0; $i < $articleLinks->length; $i++)
+               {
+                       $articleLink  = $articleLinks->item($i);
+                       $footnoteLink = $articleLink->cloneNode(true);
+                       $refLink      = $this->dom->createElement('a');
+                       $footnote     = $this->dom->createElement('li');
+                       $linkDomain   = @parse_url($footnoteLink->getAttribute('href'), PHP_URL_HOST);
+                       if (!$linkDomain && isset($this->url)) $linkDomain = @parse_url($this->url, PHP_URL_HOST);
+                       //linkDomain   = footnoteLink.host ? footnoteLink.host : document.location.host,
+                       $linkText     = $this->getInnerText($articleLink);
+
+                       if ((strpos($articleLink->getAttribute('class'), 'readability-DoNotFootnote') !== false) || preg_match($this->regexps['skipFootnoteLink'], $linkText)) {
+                               continue;
+                       }
+
+                       $linkCount++;
+
+                       /** Add a superscript reference after the article link */
+                       $refLink->setAttribute('href', '#readabilityFootnoteLink-' . $linkCount);
+                       $refLink->innerHTML = '<small><sup>[' . $linkCount . ']</sup></small>';
+                       $refLink->setAttribute('class', 'readability-DoNotFootnote');
+                       $refLink->setAttribute('style', 'color: inherit;');
+
+                       //TODO: does this work or should we use DOMNode.isSameNode()?
+                       if ($articleLink->parentNode->lastChild == $articleLink) {
+                               $articleLink->parentNode->appendChild($refLink);
+                       } else {
+                               $articleLink->parentNode->insertBefore($refLink, $articleLink->nextSibling);
+                       }
+
+                       $articleLink->setAttribute('style', 'color: inherit; text-decoration: none;');
+                       $articleLink->setAttribute('name', 'readabilityLink-' . $linkCount);
+
+                       $footnote->innerHTML = '<small><sup><a href="#readabilityLink-' . $linkCount . '" title="Jump to Link in Article">^</a></sup></small> ';
+
+                       $footnoteLink->innerHTML = ($footnoteLink->getAttribute('title') != '' ? $footnoteLink->getAttribute('title') : $linkText);
+                       $footnoteLink->setAttribute('name', 'readabilityFootnoteLink-' . $linkCount);
+
+                       $footnote->appendChild($footnoteLink);
+                       if ($linkDomain) $footnote->innerHTML = $footnote->innerHTML . '<small> (' . $linkDomain . ')</small>';
+
+                       $articleFootnotes->appendChild($footnote);
+               }
+
+               if ($linkCount > 0) {
+                       $articleContent->appendChild($footnotesWrapper);
+               }
+       }
+
+       /**
+       * Reverts P elements with class 'readability-styled'
+       * to text nodes - which is what they were before.
+       *
+       * @param DOMElement
+       * @return void
+       */
+       function revertReadabilityStyledElements($articleContent) {
+               $xpath = new DOMXPath($articleContent->ownerDocument);
+               $elems = $xpath->query('.//p[@class="readability-styled"]', $articleContent);
+               //$elems = $articleContent->getElementsByTagName('p');
+               for ($i = $elems->length-1; $i >= 0; $i--) {
+                       $e = $elems->item($i);
+                       $e->parentNode->replaceChild($articleContent->ownerDocument->createTextNode($e->textContent), $e);
+                       //if ($e->hasAttribute('class') && $e->getAttribute('class') == 'readability-styled') {
+                       //      $e->parentNode->replaceChild($this->dom->createTextNode($e->textContent), $e);
+                       //}
+               }
+       }
+
+       /**
+       * Prepare the article node for display. Clean out any inline styles,
+       * iframes, forms, strip extraneous <p> tags, etc.
+       *
+       * @param DOMElement
+       * @return void
+       */
+       function prepArticle($articleContent) {
+               $this->cleanStyles($articleContent);
+               $this->killBreaks($articleContent);
+               if ($this->revertForcedParagraphElements) {
+                       $this->revertReadabilityStyledElements($articleContent);
+               }
+
+               /* Clean out junk from the article content */
+               $this->cleanConditionally($articleContent, 'form');
+               $this->clean($articleContent, 'object');
+               $this->clean($articleContent, 'h1');
+
+               /**
+               * If there is only one h2, they are probably using it
+               * as a header and not a subheader, so remove it since we already have a header.
+               ***/
+               if ($articleContent->getElementsByTagName('h2')->length == 1) {
+                       $this->clean($articleContent, 'h2');
+               }
+               $this->clean($articleContent, 'iframe');
+
+               $this->cleanHeaders($articleContent);
+
+               /* Do these last as the previous stuff may have removed junk that will affect these */
+               $this->cleanConditionally($articleContent, 'table');
+               $this->cleanConditionally($articleContent, 'ul');
+               $this->cleanConditionally($articleContent, 'div');
+
+               /* Remove extra paragraphs */
+               $articleParagraphs = $articleContent->getElementsByTagName('p');
+               for ($i = $articleParagraphs->length-1; $i >= 0; $i--)
+               {
+                       $imgCount    = $articleParagraphs->item($i)->getElementsByTagName('img')->length;
+                       $embedCount  = $articleParagraphs->item($i)->getElementsByTagName('embed')->length;
+                       $objectCount = $articleParagraphs->item($i)->getElementsByTagName('object')->length;
+
+                       if ($imgCount === 0 && $embedCount === 0 && $objectCount === 0 && $this->getInnerText($articleParagraphs->item($i), false) == '')
+                       {
+                               $articleParagraphs->item($i)->parentNode->removeChild($articleParagraphs->item($i));
+                       }
+               }
+
+               try {
+                       $articleContent->innerHTML = preg_replace('/<br[^>]*>\s*<p/i', '<p', $articleContent->innerHTML);
+                       //articleContent.innerHTML = articleContent.innerHTML.replace(/<br[^>]*>\s*<p/gi, '<p');
+               }
+               catch (Exception $e) {
+                       $this->dbg("Cleaning innerHTML of breaks failed. This is an IE strict-block-elements bug. Ignoring.: " . $e);
+               }
+       }
+
+       /**
+       * Initialize a node with the readability object. Also checks the
+       * className/id for special names to add to its score.
+       *
+       * @param Element
+       * @return void
+       **/
+       protected function initializeNode($node) {
+               $readability = $this->dom->createAttribute('readability');
+               $readability->value = 0; // this is our contentScore
+               $node->setAttributeNode($readability);
+
+               switch (strtoupper($node->tagName)) { // unsure if strtoupper is needed, but using it just in case
+                       case 'DIV':
+                               $readability->value += 5;
+                               break;
+
+                       case 'PRE':
+                       case 'TD':
+                       case 'BLOCKQUOTE':
+                               $readability->value += 3;
+                               break;
+
+                       case 'ADDRESS':
+                       case 'OL':
+                       case 'UL':
+                       case 'DL':
+                       case 'DD':
+                       case 'DT':
+                       case 'LI':
+                       case 'FORM':
+                               $readability->value -= 3;
+                               break;
+
+                       case 'H1':
+                       case 'H2':
+                       case 'H3':
+                       case 'H4':
+                       case 'H5':
+                       case 'H6':
+                       case 'TH':
+                               $readability->value -= 5;
+                               break;
+               }
+               $readability->value += $this->getClassWeight($node);
+       }
+
+       /***
+       * grabArticle - Using a variety of metrics (content score, classname, element types), find the content that is
+       *               most likely to be the stuff a user wants to read. Then return it wrapped up in a div.
+       *
+       * @return DOMElement
+       **/
+       protected function grabArticle($page=null) {
+               $stripUnlikelyCandidates = $this->flagIsActive(self::FLAG_STRIP_UNLIKELYS);
+               if (!$page) $page = $this->dom;
+               $allElements = $page->getElementsByTagName('*');
+               /**
+               * First, node prepping. Trash nodes that look cruddy (like ones with the class name "comment", etc), and turn divs
+               * into P tags where they have been used inappropriately (as in, where they contain no other block level elements.)
+               *
+               * Note: Assignment from index for performance. See http://www.peachpit.com/articles/article.aspx?p=31567&seqNum=5
+               * TODO: Shouldn't this be a reverse traversal?
+               **/
+               $node = null;
+               $nodesToScore = array();
+               for ($nodeIndex = 0; ($node = $allElements->item($nodeIndex)); $nodeIndex++) {
+               //for ($nodeIndex=$targetList->length-1; $nodeIndex >= 0; $nodeIndex--) {
+                       //$node = $targetList->item($nodeIndex);
+                       $tagName = strtoupper($node->tagName);
+                       /* Remove unlikely candidates */
+                       if ($stripUnlikelyCandidates) {
+                               $unlikelyMatchString = $node->getAttribute('class') . $node->getAttribute('id');
+                               if (
+                                       preg_match($this->regexps['unlikelyCandidates'], $unlikelyMatchString) &&
+                                       !preg_match($this->regexps['okMaybeItsACandidate'], $unlikelyMatchString) &&
+                                       $tagName != 'BODY'
+                               )
+                               {
+                                       $this->dbg('Removing unlikely candidate - ' . $unlikelyMatchString);
+                                       //$nodesToRemove[] = $node;
+                                       $node->parentNode->removeChild($node);
+                                       $nodeIndex--;
+                                       continue;
+                               }
+                       }
+
+                       if ($tagName == 'P' || $tagName == 'TD' || $tagName == 'PRE') {
+                               $nodesToScore[] = $node;
+                       }
+
+                       /* Turn all divs that don't have children block level elements into p's */
+                       if ($tagName == 'DIV') {
+                               if (!preg_match($this->regexps['divToPElements'], $node->innerHTML)) {
+                                       //$this->dbg('Altering div to p');
+                                       $newNode = $this->dom->createElement('p');
+                                       try {
+                                               $newNode->innerHTML = $node->innerHTML;
+                                               //$nodesToReplace[] = array('new'=>$newNode, 'old'=>$node);
+                                               $node->parentNode->replaceChild($newNode, $node);
+                                               $nodeIndex--;
+                                               $nodesToScore[] = $node; // or $newNode?
+                                       }
+                                       catch(Exception $e) {
+                                               $this->dbg('Could not alter div to p, reverting back to div.: ' . $e);
+                                       }
+                               }
+                               else
+                               {
+                                       /* EXPERIMENTAL */
+                                       // TODO: change these p elements back to text nodes after processing
+                                       for ($i = 0, $il = $node->childNodes->length; $i < $il; $i++) {
+                                               $childNode = $node->childNodes->item($i);
+                                               if ($childNode->nodeType == 3) { // XML_TEXT_NODE
+                                                       //$this->dbg('replacing text node with a p tag with the same content.');
+                                                       $p = $this->dom->createElement('p');
+                                                       $p->innerHTML = $childNode->nodeValue;
+                                                       $p->setAttribute('style', 'display: inline;');
+                                                       $p->setAttribute('class', 'readability-styled');
+                                                       $childNode->parentNode->replaceChild($p, $childNode);
+                                               }
+                                       }
+                               }
+                       }
+               }
+
+               /**
+               * Loop through all paragraphs, and assign a score to them based on how content-y they look.
+               * Then add their score to their parent node.
+               *
+               * A score is determined by things like number of commas, class names, etc. Maybe eventually link density.
+               **/
+               $candidates = array();
+               for ($pt=0; $pt < count($nodesToScore); $pt++) {
+                       $parentNode      = $nodesToScore[$pt]->parentNode;
+                       // $grandParentNode = $parentNode ? $parentNode->parentNode : null;
+                       $grandParentNode = !$parentNode ? null : (($parentNode->parentNode instanceof DOMElement) ? $parentNode->parentNode : null);
+                       $innerText       = $this->getInnerText($nodesToScore[$pt]);
+
+                       if (!$parentNode || !isset($parentNode->tagName)) {
+                               continue;
+                       }
+
+                       /* If this paragraph is less than 25 characters, don't even count it. */
+                       if(strlen($innerText) < 25) {
+                               continue;
+                       }
+
+                       /* Initialize readability data for the parent. */
+                       if (!$parentNode->hasAttribute('readability'))
+                       {
+                               $this->initializeNode($parentNode);
+                               $candidates[] = $parentNode;
+                       }
+
+                       /* Initialize readability data for the grandparent. */
+                       if ($grandParentNode && !$grandParentNode->hasAttribute('readability') && isset($grandParentNode->tagName))
+                       {
+                               $this->initializeNode($grandParentNode);
+                               $candidates[] = $grandParentNode;
+                       }
+
+                       $contentScore = 0;
+
+                       /* Add a point for the paragraph itself as a base. */
+                       $contentScore++;
+
+                       /* Add points for any commas within this paragraph */
+                       $contentScore += count(explode(',', $innerText));
+
+                       /* For every 100 characters in this paragraph, add another point. Up to 3 points. */
+                       $contentScore += min(floor(strlen($innerText) / 100), 3);
+
+                       /* Add the score to the parent. The grandparent gets half. */
+                       $parentNode->getAttributeNode('readability')->value += $contentScore;
+
+                       if ($grandParentNode) {
+                               $grandParentNode->getAttributeNode('readability')->value += $contentScore/2;
+                       }
+               }
+
+               /**
+               * After we've calculated scores, loop through all of the possible candidate nodes we found
+               * and find the one with the highest score.
+               **/
+               $topCandidate = null;
+               for ($c=0, $cl=count($candidates); $c < $cl; $c++)
+               {
+                       /**
+                       * Scale the final candidates score based on link density. Good content should have a
+                       * relatively small link density (5% or less) and be mostly unaffected by this operation.
+                       **/
+                       $readability = $candidates[$c]->getAttributeNode('readability');
+                       $readability->value = $readability->value * (1-$this->getLinkDensity($candidates[$c]));
+
+                       $this->dbg('Candidate: ' . $candidates[$c]->tagName . ' (' . $candidates[$c]->getAttribute('class') . ':' . $candidates[$c]->getAttribute('id') . ') with score ' . $readability->value);
+
+                       if (!$topCandidate || $readability->value > (int)$topCandidate->getAttribute('readability')) {
+                               $topCandidate = $candidates[$c];
+                       }
+               }
+
+               /**
+               * If we still have no top candidate, just use the body as a last resort.
+               * We also have to copy the body node so it is something we can modify.
+               **/
+               if ($topCandidate === null || strtoupper($topCandidate->tagName) == 'BODY')
+               {
+                       $topCandidate = $this->dom->createElement('div');
+                       $topCandidate->innerHTML = ($page instanceof DOMDocument) ? $page->saveXML($page->documentElement) : $page->innerHTML;
+                       $page->innerHTML = '';
+                       $page->appendChild($topCandidate);
+                       $this->initializeNode($topCandidate);
+               }
+
+               /**
+               * Now that we have the top candidate, look through its siblings for content that might also be related.
+               * Things like preambles, content split by ads that we removed, etc.
+               **/
+               $articleContent        = $this->dom->createElement('div');
+               $articleContent->setAttribute('id', 'readability-content');
+               $siblingScoreThreshold = max(10, ((int)$topCandidate->getAttribute('readability')) * 0.2);
+               $siblingNodes          = $topCandidate->parentNode->childNodes;
+
+               for ($s=0, $sl=$siblingNodes->length; $s < $sl; $s++)
+               {
+                       $siblingNode = $siblingNodes->item($s);
+                       $append      = false;
+
+                       $this->dbg('Looking at sibling node: ' . $siblingNode->nodeName . (($siblingNode->nodeType === XML_ELEMENT_NODE && $siblingNode->hasAttribute('readability')) ? (' with score ' . $siblingNode->getAttribute('readability')) : ''));
+
+                       //dbg('Sibling has score ' . ($siblingNode->readability ? siblingNode.readability.contentScore : 'Unknown'));
+
+                       if ($siblingNode === $topCandidate)
+                       // or if ($siblingNode->isSameNode($topCandidate))
+                       {
+                               $append = true;
+                       }
+
+                       $contentBonus = 0;
+                       /* Give a bonus if sibling nodes and top candidates have the example same classname */
+                       if ($siblingNode->nodeType === XML_ELEMENT_NODE && $siblingNode->getAttribute('class') == $topCandidate->getAttribute('class') && $topCandidate->getAttribute('class') != '') {
+                               $contentBonus += ((int)$topCandidate->getAttribute('readability')) * 0.2;
+                       }
+
+                       if ($siblingNode->nodeType === XML_ELEMENT_NODE && $siblingNode->hasAttribute('readability') && (((int)$siblingNode->getAttribute('readability')) + $contentBonus) >= $siblingScoreThreshold)
+                       {
+                               $append = true;
+                       }
+
+                       if (strtoupper($siblingNode->nodeName) == 'P') {
+                               $linkDensity = $this->getLinkDensity($siblingNode);
+                               $nodeContent = $this->getInnerText($siblingNode);
+                               $nodeLength  = strlen($nodeContent);
+
+                               if ($nodeLength > 80 && $linkDensity < 0.25)
+                               {
+                                       $append = true;
+                               }
+                               else if ($nodeLength < 80 && $linkDensity === 0 && preg_match('/\.( |$)/', $nodeContent))
+                               {
+                                       $append = true;
+                               }
+                       }
+
+                       if ($append)
+                       {
+                               $this->dbg('Appending node: ' . $siblingNode->nodeName);
+
+                               $nodeToAppend = null;
+                               $sibNodeName = strtoupper($siblingNode->nodeName);
+                               if ($sibNodeName != 'DIV' && $sibNodeName != 'P') {
+                                       /* We have a node that isn't a common block level element, like a form or td tag. Turn it into a div so it doesn't get filtered out later by accident. */
+
+                                       $this->dbg('Altering siblingNode of ' . $sibNodeName . ' to div.');
+                                       $nodeToAppend = $this->dom->createElement('div');
+                                       try {
+                                               $nodeToAppend->setAttribute('id', $siblingNode->getAttribute('id'));
+                                               $nodeToAppend->innerHTML = $siblingNode->innerHTML;
+                                       }
+                                       catch(Exception $e)
+                                       {
+                                               $this->dbg('Could not alter siblingNode to div, reverting back to original.');
+                                               $nodeToAppend = $siblingNode;
+                                               $s--;
+                                               $sl--;
+                                       }
+                               } else {
+                                       $nodeToAppend = $siblingNode;
+                                       $s--;
+                                       $sl--;
+                               }
+
+                               /* To ensure a node does not interfere with readability styles, remove its classnames */
+                               $nodeToAppend->removeAttribute('class');
+
+                               /* Append sibling and subtract from our list because it removes the node when you append to another node */
+                               $articleContent->appendChild($nodeToAppend);
+                       }
+               }
+
+               /**
+               * So we have all of the content that we need. Now we clean it up for presentation.
+               **/
+               $this->prepArticle($articleContent);
+
+               /**
+               * Now that we've gone through the full algorithm, check to see if we got any meaningful content.
+               * If we didn't, we may need to re-run grabArticle with different flags set. This gives us a higher
+               * likelihood of finding the content, and the sieve approach gives us a higher likelihood of
+               * finding the -right- content.
+               **/
+               if (strlen($this->getInnerText($articleContent, false)) < 250)
+               {
+                       $this->body->innerHTML = $this->bodyCache;
+
+                       if ($this->flagIsActive(self::FLAG_STRIP_UNLIKELYS)) {
+                               $this->removeFlag(self::FLAG_STRIP_UNLIKELYS);
+                               return $this->grabArticle($this->body);
+                       }
+                       else if ($this->flagIsActive(self::FLAG_WEIGHT_CLASSES)) {
+                               $this->removeFlag(self::FLAG_WEIGHT_CLASSES);
+                               return $this->grabArticle($this->body);
+                       }
+                       else if ($this->flagIsActive(self::FLAG_CLEAN_CONDITIONALLY)) {
+                               $this->removeFlag(self::FLAG_CLEAN_CONDITIONALLY);
+                               return $this->grabArticle($this->body);
+                       }
+                       else {
+                               return false;
+                       }
+               }
+               return $articleContent;
+       }
+
+       /**
+       * Remove script tags from document
+       *
+       * @param DOMElement
+       * @return void
+       */
+       public function removeScripts($doc) {
+               $scripts = $doc->getElementsByTagName('script');
+               for($i = $scripts->length-1; $i >= 0; $i--)
+               {
+                       $scripts->item($i)->parentNode->removeChild($scripts->item($i));
+               }
+       }
+
+       /**
+       * Get the inner text of a node.
+       * This also strips out any excess whitespace to be found.
+       *
+       * @param DOMElement $
+       * @param boolean $normalizeSpaces (default: true)
+       * @return string
+       **/
+       public function getInnerText($e, $normalizeSpaces=true) {
+               $textContent = '';
+
+               if (!isset($e->textContent) || $e->textContent == '') {
+                       return '';
+               }
+
+               $textContent = trim($e->textContent);
+
+               if ($normalizeSpaces) {
+                       return preg_replace($this->regexps['normalize'], ' ', $textContent);
+               } else {
+                       return $textContent;
+               }
+       }
+
+       /**
+       * Get the number of times a string $s appears in the node $e.
+       *
+       * @param DOMElement $e
+       * @param string - what to count. Default is ","
+       * @return number (integer)
+       **/
+       public function getCharCount($e, $s=',') {
+               return substr_count($this->getInnerText($e), $s);
+       }
+
+       /**
+       * Remove the style attribute on every $e and under.
+       *
+       * @param DOMElement $e
+       * @return void
+       */
+       public function cleanStyles($e) {
+               $elems = $e->getElementsByTagName('*');
+               foreach ($elems as $elem) {
+                       $elem->removeAttribute('style');
+               }
+       }
+
+       /**
+       * Get the density of links as a percentage of the content
+       * This is the amount of text that is inside a link divided by the total text in the node.
+       *
+       * @param DOMElement $e
+       * @return number (float)
+       */
+       public function getLinkDensity($e) {
+               $links      = $e->getElementsByTagName('a');
+               $textLength = strlen($this->getInnerText($e));
+               $linkLength = 0;
+               for ($i=0, $il=$links->length; $i < $il; $i++)
+               {
+                       $linkLength += strlen($this->getInnerText($links->item($i)));
+               }
+               if ($textLength > 0) {
+                       return $linkLength / $textLength;
+               } else {
+                       return 0;
+               }
+       }
+
+       /**
+       * Get an elements class/id weight. Uses regular expressions to tell if this
+       * element looks good or bad.
+       *
+       * @param DOMElement $e
+       * @return number (Integer)
+       */
+       public function getClassWeight($e) {
+               if(!$this->flagIsActive(self::FLAG_WEIGHT_CLASSES)) {
+                       return 0;
+               }
+
+               $weight = 0;
+
+               /* Look for a special classname */
+               if ($e->hasAttribute('class') && $e->getAttribute('class') != '')
+               {
+                       if (preg_match($this->regexps['negative'], $e->getAttribute('class'))) {
+                               $weight -= 25;
+                       }
+                       if (preg_match($this->regexps['positive'], $e->getAttribute('class'))) {
+                               $weight += 25;
+                       }
+               }
+
+               /* Look for a special ID */
+               if ($e->hasAttribute('id') && $e->getAttribute('id') != '')
+               {
+                       if (preg_match($this->regexps['negative'], $e->getAttribute('id'))) {
+                               $weight -= 25;
+                       }
+                       if (preg_match($this->regexps['positive'], $e->getAttribute('id'))) {
+                               $weight += 25;
+                       }
+               }
+               return $weight;
+       }
+
+       /**
+       * Remove extraneous break tags from a node.
+       *
+       * @param DOMElement $node
+       * @return void
+       */
+       public function killBreaks($node) {
+               $html = $node->innerHTML;
+               $html = preg_replace($this->regexps['killBreaks'], '<br />', $html);
+               $node->innerHTML = $html;
+       }
+
+       /**
+       * Clean a node of all elements of type "tag".
+       * (Unless it's a youtube/vimeo video. People love movies.)
+       *
+       * @param DOMElement $e
+       * @param string $tag
+       * @return void
+       */
+       public function clean($e, $tag) {
+               $targetList = $e->getElementsByTagName($tag);
+               $isEmbed = ($tag == 'object' || $tag == 'embed');
+
+               for ($y=$targetList->length-1; $y >= 0; $y--) {
+                       /* Allow youtube and vimeo videos through as people usually want to see those. */
+                       if ($isEmbed) {
+                               $attributeValues = '';
+                               for ($i=0, $il=$targetList->item($y)->attributes->length; $i < $il; $i++) {
+                                       $attributeValues .= $targetList->item($y)->attributes->item($i)->value . '|'; // DOMAttr? (TODO: test)
+                               }
+
+                               /* First, check the elements attributes to see if any of them contain youtube or vimeo */
+                               if (preg_match($this->regexps['video'], $attributeValues)) {
+                                       continue;
+                               }
+
+                               /* Then check the elements inside this element for the same. */
+                               if (preg_match($this->regexps['video'], $targetList->item($y)->innerHTML)) {
+                                       continue;
+                               }
+                       }
+                       $targetList->item($y)->parentNode->removeChild($targetList->item($y));
+               }
+       }
+
+       /**
+       * Clean an element of all tags of type "tag" if they look fishy.
+       * "Fishy" is an algorithm based on content length, classnames,
+       * link density, number of images & embeds, etc.
+       *
+       * @param DOMElement $e
+       * @param string $tag
+       * @return void
+       */
+       public function cleanConditionally($e, $tag) {
+               if (!$this->flagIsActive(self::FLAG_CLEAN_CONDITIONALLY)) {
+                       return;
+               }
+
+               $tagsList = $e->getElementsByTagName($tag);
+               $curTagsLength = $tagsList->length;
+
+               /**
+               * Gather counts for other typical elements embedded within.
+               * Traverse backwards so we can remove nodes at the same time without effecting the traversal.
+               *
+               * TODO: Consider taking into account original contentScore here.
+               */
+               for ($i=$curTagsLength-1; $i >= 0; $i--) {
+                       $weight = $this->getClassWeight($tagsList->item($i));
+                       $contentScore = ($tagsList->item($i)->hasAttribute('readability')) ? (int)$tagsList->item($i)->getAttribute('readability') : 0;
+
+                       $this->dbg('Cleaning Conditionally ' . $tagsList->item($i)->tagName . ' (' . $tagsList->item($i)->getAttribute('class') . ':' . $tagsList->item($i)->getAttribute('id') . ')' . (($tagsList->item($i)->hasAttribute('readability')) ? (' with score ' . $tagsList->item($i)->getAttribute('readability')) : ''));
+
+                       if ($weight + $contentScore < 0) {
+                               $tagsList->item($i)->parentNode->removeChild($tagsList->item($i));
+                       }
+                       else if ( $this->getCharCount($tagsList->item($i), ',') < 10) {
+                               /**
+                               * If there are not very many commas, and the number of
+                               * non-paragraph elements is more than paragraphs or other ominous signs, remove the element.
+                               **/
+                               $p      = $tagsList->item($i)->getElementsByTagName('p')->length;
+                               $img    = $tagsList->item($i)->getElementsByTagName('img')->length;
+                               $li     = $tagsList->item($i)->getElementsByTagName('li')->length-100;
+                               $input  = $tagsList->item($i)->getElementsByTagName('input')->length;
+
+                               $embedCount = 0;
+                               $embeds = $tagsList->item($i)->getElementsByTagName('embed');
+                               for ($ei=0, $il=$embeds->length; $ei < $il; $ei++) {
+                                       if (preg_match($this->regexps['video'], $embeds->item($ei)->getAttribute('src'))) {
+                                       $embedCount++;
+                                       }
+                               }
+
+                               $linkDensity   = $this->getLinkDensity($tagsList->item($i));
+                               $contentLength = strlen($this->getInnerText($tagsList->item($i)));
+                               $toRemove      = false;
+
+                               if ( $img > $p ) {
+                                       $toRemove = true;
+                               } else if ($li > $p && $tag != 'ul' && $tag != 'ol') {
+                                       $toRemove = true;
+                               } else if ( $input > floor($p/3) ) {
+                                       $toRemove = true;
+                               } else if ($contentLength < 25 && ($img === 0 || $img > 2) ) {
+                                       $toRemove = true;
+                               } else if($weight < 25 && $linkDensity > 0.2) {
+                                       $toRemove = true;
+                               } else if($weight >= 25 && $linkDensity > 0.5) {
+                                       $toRemove = true;
+                               } else if(($embedCount == 1 && $contentLength < 75) || $embedCount > 1) {
+                                       $toRemove = true;
+                               }
+
+                               if ($toRemove) {
+                                       $tagsList->item($i)->parentNode->removeChild($tagsList->item($i));
+                               }
+                       }
+               }
+       }
+
+       /**
+       * Clean out spurious headers from an Element. Checks things like classnames and link density.
+       *
+       * @param DOMElement $e
+       * @return void
+       */
+       public function cleanHeaders($e) {
+               for ($headerIndex = 1; $headerIndex < 3; $headerIndex++) {
+                       $headers = $e->getElementsByTagName('h' . $headerIndex);
+                       for ($i=$headers->length-1; $i >=0; $i--) {
+                               if ($this->getClassWeight($headers->item($i)) < 0 || $this->getLinkDensity($headers->item($i)) > 0.33) {
+                                       $headers->item($i)->parentNode->removeChild($headers->item($i));
+                               }
+                       }
+               }
+       }
+
+       public function flagIsActive($flag) {
+               return ($this->flags & $flag) > 0;
+       }
+
+       public function addFlag($flag) {
+               $this->flags = $this->flags | $flag;
+       }
+
+       public function removeFlag($flag) {
+               $this->flags = $this->flags & ~$flag;
+       }
+}
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/api.php b/inc/3rdparty/libraries/send2kindle/api.php
new file mode 100644 (file)
index 0000000..564c171
--- /dev/null
@@ -0,0 +1,234 @@
+<?php
+/**
+*     @author Dimmduh
+*     @email dimmduh@gmail.com
+*/
+class API{
+    
+    private $service;
+    private $auth;
+    private $token;
+    private $source = 'GoogleReaderAPIClass-0.1';
+    private $client = 'scroll';
+    private $account_type = 'HOSTED_OR_GOOGLE';
+    private $clientlogin_url = 'https://www.google.com/accounts/ClientLogin';
+    private $reader_api_url = 'http://www.google.com/reader/api/0/';
+    private $session_var_auth_name = 'google_auth';
+
+    
+    public function __construct( $email, $password, $service = 'reader' ){
+        if (isset( $service ) ){
+            $this -> service = $service;
+        }
+        /* if ( isset($_SESSION[ $this -> session_var_auth_name ] ) ){
+            $this -> auth = $_SESSION[ $this -> session_var_auth_name ];
+            echo "Loading";
+        } else { */
+            $this -> clientLogin( $email, $password );
+            $this -> get_token();
+        /* } */
+     }
+          
+     
+    private function request( $url, $type = 'get', $headers = false, $fields = false, $cookie = false){
+     
+          $curl = curl_init();
+                    
+          if ( $fields ){
+               if ($type == 'get'){
+                    $url .= '?'.http_build_query( $fields );
+               } else {
+                    curl_setopt($curl, CURLOPT_POST, true);
+                    curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($fields) );
+               }
+          }
+          if ( $headers ){
+               curl_setopt($curl, CURLOPT_HEADER, true);
+               curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
+          }
+           if ( $cookie ){
+               curl_setopt($curl, CURLOPT_COOKIE, $cookie);
+          }
+          
+          curl_setopt($curl, CURLOPT_URL, $url);
+          if (strpos($url, 'https://') !== false){
+               curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
+          }
+          curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+          curl_setopt($curl, CURLINFO_HEADER_OUT, true);
+          
+          $response = array();
+          $response['text'] = curl_exec($curl);
+          $response['info'] = curl_getinfo( $curl);
+          $response['code'] = curl_getinfo( $curl, CURLINFO_HTTP_CODE );
+          $response['body'] = substr( $response['text'], $response['info']['header_size'] );
+
+          curl_close( $curl );
+          return $response;
+     }
+
+     private function request2google( $url, $type = 'get', $headers = false, $fields = false ){
+          if ( $this -> auth ){
+               $headers[] = 'Content-type: application/x-www-form-urlencoded';
+               $headers[] = 'Authorization: GoogleLogin auth='.$this -> auth;
+               
+               if ( strpos( $url, 'http://') === false && strpos( $url, 'https://' ) === false ){
+                    $url = $this -> reader_api_url.$url;
+               }
+               
+               $response = $this -> request( $url, $type, $headers, $fields);               
+               if ( $response['code'] == 200 ){
+                    if ( isset( $fields['output'] ) ){
+                         switch ($fields['output']){
+                              case 'xml':
+                                   return (new SimpleXMLElement( $response['body'] ) );
+                                   break;
+                              case 'json':
+                              default:
+                                   return json_decode( $response['body'] );
+                                   break;
+                         }
+                    } else {
+                         return $response['body'];
+                    }
+               } else {
+                    Throw new AutentificationException('Auth error: server response '.$response['code'] );
+               }
+               
+          } else {
+               Throw new AutentificationException('Auth error: not finded Auth token');
+          }
+     }
+     
+     public function get_tag_list( $output = 'json' ){
+          return $this -> request2google('tag/list', "get", false, array(
+                    'output' => $output,
+                    'ck' => time(),
+                    'client' => $this -> client,
+               ));
+     }
+     public function get_subscription_list( $output = 'json' ){
+          return $this -> request2google('subscription/list', "get", false, array(
+                    'output' => $output,
+                    'ck' => time(),
+                    'client' => $this -> client,
+               ));
+     }
+     public function get_preference_list( $output = 'json' ){
+          return $this -> request2google('preference/list', "get", false, array(
+                    'output' => $output,
+                    'ck' => time(),
+                    'client' => $this -> client,
+               ));
+     }
+     public function get_unread_count( $output = 'json' ){
+          return $this -> request2google('unread-count', "get", false, array(
+                    'all' => true,
+                    'output' => $output,
+                    'ck' => time(),
+                    'client' => $this -> client,
+               ));
+     }
+     public function get_user_info( $output = 'json' ){
+          return $this -> request2google('user-info', "get", false, array(
+                    'output' => $output,
+                    'ck' => time(),
+                    'client' => $this -> client,
+               ));
+     }
+     private function get_token(){
+          $this -> token = $this -> request2google('token');
+     }
+     
+     //get contents functions
+     /*
+          r - order
+          r = n - new items
+          r = o - old items
+          r = a - auto sort
+     
+     */
+     private function get_content( $content_url = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){
+          $fields = array(
+               'ck' => time(),
+               'client' => $this -> client,
+               'n' => $number,
+               'r' => $order,
+               'output' => 'json',
+          );
+          if ( !empty($exclude_target) ){$fields['xt'] = $exclude_target;}
+          if ( !empty($start_time) ){$fields['ot'] = $start_time;}
+          if ( !empty($continuation) ){$fields['c'] = $continuation;}
+          
+          return $this -> request2google('stream/contents/'.Utils::urlencode( $content_url ), 'get', false, $fields);
+     }
+     
+     public function get_content_feed( $feed_url = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){
+          return $this -> get_content( $feed_url, $number, $order, $exclude_target, $start_time, $continuation );
+     }
+     public function get_content_by_label( $label = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){
+          return $this -> get_content( (strpos($label, '/') === false?'user/-/label/':'').$label, $number, $order, $exclude_target, $start_time, $continuation );
+     }
+     public function get_content_by_state( $state = '', $number = 20, $order = 'n', $exclude_target = '', $start_time = '', $continuation = ''){
+          return $this -> get_content( (strpos($state, '/') === false?'user/-/state/com.google/':'').$state, $number, $order, $exclude_target, $start_time, $continuation );
+     }
+
+    public function get_unread( $number = 20, $order = 'n' ){
+        return $this ->get_content_by_state('reading-list', $number, $order, 'user/-/state/com.google/read');
+    }
+
+    public function get_starred($number = 20, $order = 'n'){
+        return $this ->get_content_by_state('starred', $number, $order);
+    }
+
+    /*
+     Edit functions
+     */
+     private function edit_do( $api_function , $post_fields ){
+          $post_fields['T'] = $this -> token;
+          if ( $this -> request2google( $api_function, "post", false, $post_fields ) == "OK"){
+                    return true;
+                } else {
+                    return false;
+                }
+     }
+     
+     /* public function edit_subscription( 
+     s     return $this -> edit_do( 'subscription/edit', 
+     } */
+     public function set_state( $itemId, $state = 'read'){
+            $post_fields = array(
+                "i" => $itemId,
+                "a" => 'user/-/state/com.google/'.$state,
+            );
+            //print_r( $post_fields );
+            return $this ->edit_do('edit-tag?client='.$this -> client, $post_fields);
+        }
+
+     private function clientLogin( $email, $password ){
+          
+          $response = $this -> request( $this -> clientlogin_url, 'post', false, array(
+               "accountType" => $this -> account_type,
+               "Email" => $email,
+               "Passwd" => $password,
+               "service" => $this -> service,
+               "source" => $this -> source,
+          ));
+                    
+          if ( $response['code'] == 200) {
+               preg_match("/Auth=([a-z0-9_\-]+)/i", $response['body'], $matches_auth);               
+               if ($matches_auth[1]){
+                    $this -> auth = $matches_auth[1];
+                    $_SESSION[ $this -> session_var_auth_name ] = $this -> auth;
+                    return true;
+               } else {
+                    Throw new AutentificationException('Auth error: not finded Auth token in response');
+               }
+          } else {
+               Throw new AutentificationException('Auth error: server response '.$response['code'] );
+          }
+     }
+}
+
+//Exceptions
+class AutentificationException extends Exception {}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/images.php b/inc/3rdparty/libraries/send2kindle/images.php
new file mode 100644 (file)
index 0000000..63f0562
--- /dev/null
@@ -0,0 +1,136 @@
+<?php
+
+/**
+ * Get images from content and prepare to save in articles
+ */
+class Images {
+
+    /**
+     * JPER quality for resize
+     */
+    const JPEG_QUALITY = 80;
+
+    /**
+     * Articles content
+     * @var string
+     */
+    private $_content;
+
+    /**
+     * Storage to keep images
+     * @var object Storage
+     */
+    private $_storage;
+
+    /**
+     * images from content
+     * @var array
+     */
+    private $_images_from_content = array();
+
+    /**
+     * Prepare get images
+     * @param Strage $storage
+     * @param string $article_content
+     */
+    public function __construct(Storage $storage, $article_content)
+    {
+        $this->_storage = $storage;
+        $this->_content = $article_content;
+        $this->_images_from_content = $this->_get_images_from_content($article_content);
+    }
+
+    /**
+     * get images from url
+     * @param string $content
+     * @return array images hashtable
+     */
+    private function _get_images_from_content($content)
+    {
+        $result = array();
+        preg_match_all('/src=\"([a-zA-Z0-9\.\/\-\_\?\+\%\~\&\;\=\:]+)\"/i', $content, $result);
+
+        return $result[1];
+    }
+
+    /**
+     * Start conversion
+     * @return string converted content
+     */
+    public function convert()
+    {
+        foreach ( $this->_images_from_content as $n => $image_url )
+        {
+            $image = $this->_get_image($image_url);
+            $this->_content = str_replace($image_url, '" recindex="'.(int)basename($image), $this->_content);
+        }
+
+        return $this->_content;
+    }
+
+    /**
+     * Resize image
+     * @param string $file path
+     * @param int $new_width max width
+     */
+    private function _resize($file, $new_width = 500)
+    {
+        list($width, $height) = getimagesize($file);
+
+        $new_height = 0;
+
+        //setup the new size of the image
+        if( $width > $new_width )
+        {
+            $ratio = $height/$width;
+            $new_height = $new_width * $ratio;
+        }
+        else
+        {
+            $new_width = $width;
+            $new_height = $height;
+        }
+
+        // resample the image        
+        $new_image = imagecreatetruecolor($new_width, $new_height);        
+        
+        $type = exif_imagetype ( $file );
+
+        switch ( $type )
+        {
+            case IMAGETYPE_JPEG:
+                $old_image = imagecreatefromjpeg($file);
+                imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+                imagejpeg($new_image, $file, self::JPEG_QUALITY);
+                break;
+            case IMAGETYPE_PNG:
+                $old_image = imagecreatefrompng($file);
+                imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+                imagepng($new_image, $file);
+                break;
+            case IMAGETYPE_GIF:
+                $old_image = imagecreatefromgif($file); 
+                imagecopyresampled($new_image, $old_image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
+                imagegif($new_image, $file);
+                break;
+        }
+    }
+
+    /**
+     * Resize image
+     * @return string image path
+     */
+    private function _get_image($url)
+    {
+        $image_data = @file_get_contents($url);
+
+        if ( $image_data !== false )
+        {
+            $image_name = $this->_storage->save_image($image_data);
+            $this->_resize($image_name);
+
+            return $image_name;
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/io.php b/inc/3rdparty/libraries/send2kindle/io.php
new file mode 100644 (file)
index 0000000..284c08c
--- /dev/null
@@ -0,0 +1,250 @@
+<?php
+/**
+ * Simple output message and args prepared
+ *
+ * @author Jakub Westfalewski <jwest@jwest.pl>
+ */
+class IO {
+
+    /**
+     * Max line height
+     */
+    const COMMAND_LENGTH = 50;
+
+    /**
+     * args for run screen
+     * @var array
+     */
+    protected static $_args = array
+    (
+        'help' => array('value' => FALSE, 'description' => 'show help for news2kindle'),
+        'grab' => array('value' => FALSE, 'description' => 'grab articles from google reader'),
+        'mobi' => array('value' => FALSE, 'description' => 'prepare mobi format'),
+        'send' => array('value' => FALSE, 'description' => 'send articles to kindle'),
+        'login' => array('value' => NULL, 'description' => 'your login to google account *requred'),
+        'password' => array('value' => NULL, 'description' => 'your password to google account *required'),
+        'kindle' => array('value' => NULL, 'description' => 'your kindle email *required'),
+        'items' => array('value' => 100, 'description' => 'max items to grab in run'),        
+        'render' => array('value' => 'std', 'description' => 'name of html template for newspapper'),
+        //'timeout' => array('value' => FALSE, 'description' => 'timeout is most important than items count'),
+    );
+
+    /**
+     * Write on screen text line
+     * @param string $message
+     * @param bool   $broken_line
+     */
+    public static function msg($message, $broken_line = TRUE)
+    {
+        echo ( $broken_line ? "\n" : "" ) . $message;
+    }
+
+    /**
+     * Write command for status
+     * @param string $message
+     */
+    public static function command($message)
+    {
+        $output_whitespaces = '';
+
+        for ($i = strlen($message); $i <= self::COMMAND_LENGTH; ++$i )
+        {
+            $output_whitespaces .= '-';
+        }
+
+        self::msg( $message . ' ' . $output_whitespaces.' ' );
+    }
+
+    /**
+     * Status - OK
+     */
+    public static function ok()
+    {
+        $colored_string = "\033[1;37m" . "\033[42m" . ' OK ' . "\033[0m";
+        self::msg( $colored_string, FALSE );
+    }
+
+    /**
+     * Status - Error
+     */
+    public static function error($message = NULL)
+    {
+        $colored_string = "\033[1;37m" . "\033[41m" . ' ERROR ' . "\033[0m";
+        self::msg( $colored_string, FALSE );
+
+        if ( $message !== NULL )
+        {
+            self::msg( '  - ' . $message );            
+        }
+    }
+
+    /**
+     * Get run args
+     * @param string $name key config
+     * @return mixed config value
+     */
+    public static function arg($name)
+    {
+        return self::$_args[$name]['value'];
+    }
+
+    /**
+     * Get config from ini
+     * @param string $path
+     * @return void
+     */
+    protected static function _get_config($path)
+    {
+        $config = parse_ini_file( $path . 'config.ini' );
+
+        foreach($config as $key => $value)
+        {
+            self::$_args[$key]['value'] = $value;
+        }
+    }
+
+    /**
+     * Prepare args for script
+     * (from http://php.net/manual/en/features.commandline.php)
+     * @param array $argv array
+     * @param string $path
+     * @return bool success or error
+     */
+    public static function prepare_args($argv, $path)
+    {
+        self::command('Parse args');
+
+        self::_get_config($path);
+
+        array_shift($argv);
+        $out = array();
+
+        foreach ( $argv as $arg )
+        {
+            if ( substr($arg,0,2) == '--' )
+            {
+                $eqPos = strpos($arg,'=');
+
+                if ( $eqPos === false )
+                {
+                    $key = substr($arg,2);
+                    $out[$key] = isset($out[$key]) ? $out[$key] : true;
+                } 
+                else 
+                {
+                    $key = substr($arg,2,$eqPos-2);
+                    $out[$key] = substr($arg,$eqPos+1);
+                }
+
+            } 
+            else if ( substr($arg,0,1) == '-' )
+            {
+                if ( substr($arg,2,1) == '=' )
+                {
+                    $key = substr($arg,1,1);
+                    $out[$key] = substr($arg,3);
+                } 
+                else 
+                {
+                    $chars = str_split(substr($arg,1));
+
+                    foreach ( $chars as $char )
+                    {
+                        $key = $char;
+                        $out[$key] = isset($out[$key]) ? $out[$key] : true;
+                    }
+                }
+            } 
+            else 
+            {
+                $out[] = $arg;
+            }
+        }
+
+        try
+        {
+            $args = self::_validate_args($out);
+
+            foreach ( $args as $key => $value )
+            {
+                self::$_args[$key]['value'] = $value;
+            }
+        }
+        catch(Exception $e)
+        {
+            self::error($e->getMessage());
+            return false;
+        }
+
+        self::ok();
+
+        return true;
+    }
+
+    /**
+     * Validate args for script
+     * (from http://php.net/manual/en/features.commandline.php)
+     * @param array $argv array
+     * @return array args
+     */
+    private static function _validate_args($args)
+    {
+        if( array_key_exists('help', $args) OR array_key_exists('h', $args) )
+        {
+            $args['grab'] = false;
+            $args['mobi'] = false;
+            $args['send'] = false;
+            $args['login'] = false;
+            $args['password'] = false;
+            $args['kindle'] = false;
+        }
+
+        foreach ( $args as $key => $arg ) 
+        {
+            if ( strlen($key) === 1 )
+            {
+                foreach ( self::$_args as $keyA => $argA )
+                {
+                    if($keyA[0] === $key )
+                    {
+                        unset( $args[$key] );
+                        $args[$keyA] = $arg;
+                        $key = $keyA;
+                    }
+                }
+            }
+
+            if ( ! array_key_exists($key, self::$_args) )
+            {
+                throw new Exception('Param "'.$key.'" is invalid!');
+            }
+        }
+
+        foreach ( self::$_args as $key => $arg )
+        {
+            if( self::$_args[$key]['value'] === NULL AND !array_key_exists($key, $args) )
+            {
+                throw new Exception('Param "'.$key.'" must be declared!');
+            }
+        }
+
+        return $args;
+    }
+
+    /**
+     * Prepare help
+     * @return array
+     */
+    public static function get_help()
+    {
+        $output = array();
+
+        foreach ( self::$_args as $arg => $item )
+        {
+            $output[$arg] = $item['description'];
+        }
+
+        return $output;
+    }
+
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/readability.php b/inc/3rdparty/libraries/send2kindle/readability.php
new file mode 100644 (file)
index 0000000..18c2dbd
--- /dev/null
@@ -0,0 +1,249 @@
+<?php
+/**
+ * PHP Readability
+ *
+ * Readability PHP 版本,详见
+ *      http://code.google.com/p/arc90labs-readability/
+ *
+ * ChangeLog:
+ *
+ *      [+] 2011-02-17 初始化版本
+ *
+ * @author mingcheng<i.feelinglucky#gmail.com>
+ * @date   2011-02-17
+ * @link   http://www.gracecode.com/
+ */
+
+define("READABILITY_VERSION", 0.12);
+
+class Readability2 {
+    // 保存判定结果的标记位名称
+    const ATTR_CONTENT_SCORE = "contentScore";
+
+    // DOM 解析类目前只支持 UTF-8 编码
+    const DOM_DEFAULT_CHARSET = "utf-8";
+
+    // 当判定失败时显示的内容
+    const MESSAGE_CAN_NOT_GET = "Sorry, readability was unable to parse this page for content.  \n
+            If you feel like it should have been able to, 
+            please let me know by mail: lucky[at]gracecode.com";
+
+    // DOM 解析类(PHP5 已内置)
+    protected $DOM = null;
+
+    // 需要解析的源代码
+    protected $source = "";
+
+    // 章节的父元素列表
+    private $parentNodes = array();
+
+    // 需要删除的标签
+    private $junkTags = Array("style", "form", "iframe", "script", "button", "input", "textarea");
+
+    // 需要删除的属性
+    private $junkAttrs = Array("style", "class", "onclick", "onmouseover", "align", "border", "margin");
+
+
+    /**
+     * 构造函数
+     *      @param $input_char 字符串的编码。默认 utf-8,可以省略
+     */
+    function __construct($source, $input_char = "utf-8") {
+        $this->source = $source;
+
+        // DOM 解析类只能处理 UTF-8 格式的字符
+        $source = mb_convert_encoding($source, 'HTML-ENTITIES', $input_char);
+
+        // 预处理 HTML 标签,剔除冗余的标签等
+        $source = $this->preparSource($source);
+
+        // 生成 DOM 解析类
+        $this->DOM = new DOMDocument('1.0', $input_char);
+        try {
+            //libxml_use_internal_errors(true);
+            // 会有些错误信息,不过不要紧 :^)
+            if (!@$this->DOM->loadHTML('<?xml encoding="'.Readability2::DOM_DEFAULT_CHARSET.'">'.$source)) {
+                throw new Exception("Parse HTML Error!");
+            }
+
+            foreach ($this->DOM->childNodes as $item) {
+                if ($item->nodeType == XML_PI_NODE) {
+                    $this->DOM->removeChild($item); // remove hack
+                }
+            }
+
+            // insert proper
+            $this->DOM->encoding = Readability2::DOM_DEFAULT_CHARSET;
+        } catch (Exception $e) {
+            // ...
+        }
+    }
+
+
+    /**
+     * 预处理 HTML 标签,使其能够准确被 DOM 解析类处理
+     *
+     * @return String
+     */
+    private function preparSource($string) {
+        // 剔除多余的 HTML 编码标记,避免解析出错
+        preg_match("/charset=([\w|\-]+);?/", $string, $match);
+        if (isset($match[1])) {
+            $string = preg_replace("/charset=([\w|\-]+);?/", "", $string, 1);
+        }
+
+        // Replace all doubled-up <BR> tags with <P> tags, and remove fonts.
+        $string = preg_replace("/<br\/?>[ \r\n\s]*<br\/?>/i", "</p><p>", $string);
+        $string = preg_replace("/<\/?font[^>]*>/i", "", $string);
+
+        return trim($string);
+    }
+
+
+    /**
+     * 删除 DOM 元素中所有的 $TagName 标签
+     *
+     * @return DOMDocument
+     */
+    private function removeJunkTag($RootNode, $TagName) {
+        $Tags = $RootNode->getElementsByTagName($TagName);
+
+        $i = 0;
+        while($Tag = $Tags->item($i++)) {
+            $parentNode = $Tag->parentNode;
+            $parentNode->removeChild($Tag);
+        }
+
+        return $RootNode;
+    }
+
+    /**
+     * 删除元素中所有不需要的属性
+     */
+    private function removeJunkAttr($RootNode, $Attr) {
+        $Tags = $RootNode->getElementsByTagName("*");
+
+        $i = 0;
+        while($Tag = $Tags->item($i++)) {
+            $Tag->removeAttribute($Attr);
+        }
+
+        return $RootNode;
+    }
+
+    /**
+     * 根据评分获取页面主要内容的盒模型
+     *      判定算法来自:http://code.google.com/p/arc90labs-readability/
+     *
+     * @return DOMNode
+     */
+    private function getTopBox() {
+        // 获得页面所有的章节
+        $allParagraphs = $this->DOM->getElementsByTagName("p");
+
+        // Study all the paragraphs and find the chunk that has the best score.
+        // A score is determined by things like: Number of <p>'s, commas, special classes, etc.
+        $i = 0;
+        while($paragraph = $allParagraphs->item($i++)) {
+            $parentNode   = $paragraph->parentNode;
+            $contentScore = intval($parentNode->getAttribute(Readability2::ATTR_CONTENT_SCORE));
+            $className    = $parentNode->getAttribute("class");
+            $id           = $parentNode->getAttribute("id");
+
+            // Look for a special classname
+            if (preg_match("/(comment|meta|footer|footnote)/i", $className)) {
+                $contentScore -= 50;
+            } else if(preg_match(
+                "/((^|\\s)(post|hentry|entry[-]?(content|text|body)?|article[-]?(content|text|body)?)(\\s|$))/i",
+                $className)) {
+                $contentScore += 25;
+            }
+
+            // Look for a special ID
+            if (preg_match("/(comment|meta|footer|footnote)/i", $id)) {
+                $contentScore -= 50;
+            } else if (preg_match(
+                "/^(post|hentry|entry[-]?(content|text|body)?|article[-]?(content|text|body)?)$/i",
+                $id)) {
+                $contentScore += 25;
+            }
+
+            // Add a point for the paragraph found
+            // Add points for any commas within this paragraph
+            if (strlen($paragraph->nodeValue) > 10) {
+                $contentScore += strlen($paragraph->nodeValue);
+            }
+
+            // 保存父元素的判定得分
+            $parentNode->setAttribute(Readability2::ATTR_CONTENT_SCORE, $contentScore);
+
+            // 保存章节的父元素,以便下次快速获取
+            array_push($this->parentNodes, $parentNode);
+        }
+
+        $topBox = $this->DOM->createElement('div', Readability2::MESSAGE_CAN_NOT_GET);
+        // Assignment from index for performance. 
+        //     See http://www.peachpit.com/articles/article.aspx?p=31567&seqNum=5 
+        for ($i = 0, $len = sizeof($this->parentNodes); $i < $len; $i++) {
+            $parentNode      = $this->parentNodes[$i];
+            $contentScore    = intval($parentNode->getAttribute(Readability2::ATTR_CONTENT_SCORE));
+            $orgContentScore = intval($topBox->getAttribute(Readability2::ATTR_CONTENT_SCORE));
+
+            if ($contentScore && $contentScore > $orgContentScore) {
+                $topBox = $parentNode;
+            }
+        }
+
+        // 此时,$topBox 应为已经判定后的页面内容主元素
+        return $topBox;
+    }
+
+
+    /**
+     * 获取 HTML 页面标题
+     *
+     * @return String
+     */
+    public function getTitle() {
+        $title = $this->DOM->getElementsByTagName("title");
+        return $title->item(0);
+    }
+
+
+    /**
+     * 获取页面的主要内容(Readability 以后的内容)
+     *
+     * @return Array
+     */
+    public function getContent() {
+        if (!$this->DOM) return false;
+
+        // 获取页面标题
+        $ContentTitle = $this->getTitle();
+
+        // 获取页面主内容
+        $ContentBox = $this->getTopBox();
+
+        // 复制内容到新的 DOMDocument
+        $Target = new DOMDocument;
+        $Target->appendChild($Target->importNode($ContentBox, true));
+
+        // 删除不需要的标签
+        foreach ($this->junkTags as $tag) {
+            $Target = $this->removeJunkTag($Target, $tag);
+        }
+
+        // 删除不需要的属性
+        foreach ($this->junkAttrs as $attr) {
+            $Target = $this->removeJunkAttr($Target, $attr);
+        }
+
+        // 多个数据,以数组的形式返回
+        return Array(
+            'title'   => $ContentTitle ? $ContentTitle->nodeValue : "",
+            'content' => $Target->saveHTML()
+        );
+    }
+
+    function __destruct() { }
+}
diff --git a/inc/3rdparty/libraries/send2kindle/send.php b/inc/3rdparty/libraries/send2kindle/send.php
new file mode 100644 (file)
index 0000000..a4861d3
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Send to kindle email
+ * @author jwest <jwest@jwest.pl>
+ */
+class Send {
+
+    /**
+     * Your kindle email
+     * @var string
+     */
+    private $_kindle_email;
+
+    /**
+     * Your email (must be added on amazon)
+     * @var string
+     */
+    private $_email;
+
+    /**
+     * Prepare mail
+     * @param string $kindle_email your kindle email
+     * @param string $email email for send to kindle
+     */
+    public function __construct($kindle_email, $email)
+    {
+        $this->_kindle_email = $kindle_email;
+        $this->_email = $email;   
+    }
+
+    /**
+     * Send file
+     * @param string $file path to file
+     * @return bool
+     */
+    public function send($file)
+    {
+        //prepare file
+        $file_size = filesize($file);
+        $filename = basename($file);
+        $handle = fopen($file, "r");
+        $content = fread($handle, $file_size);
+        fclose($handle);
+        $content = chunk_split(base64_encode($content));
+
+        $uid = md5(uniqid(time())); 
+
+        //generate header for mail
+        $header  = "From: News2Kindle <".$this->_email.">\r\n";        
+        $header .= "MIME-Version: 1.0\r\n";
+        $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
+        $header .= "This is a multi-part message in MIME format.\r\n";
+        $header .= "--".$uid."\r\n";
+        $header .= "Content-type:text/plain; charset=iso-8859-1\r\n";
+        $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
+        $header .= "send via News2Kindle script\r\n\r\n";
+        $header .= "--".$uid."\r\n";
+        $header .= "Content-Type: application/x-mobipocket-ebook; name=\"".$filename."\"\r\n";
+        $header .= "Content-Transfer-Encoding: base64\r\n";
+        $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
+        $header .= $content."\r\n\r\n";
+        $header .= "--".$uid."--";
+
+        //send mail
+        return mail( $this->_kindle_email, '[newsToKindle] ' . $filename, "", $header );
+    }
+}
+
+?>
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/storage.php b/inc/3rdparty/libraries/send2kindle/storage.php
new file mode 100644 (file)
index 0000000..5c38ce8
--- /dev/null
@@ -0,0 +1,230 @@
+<?php
+/**
+ * Storage for news2Kindle
+ * @author jwest <jwest@jwest.pl>
+ */
+class Storage {
+
+    /**
+     * Newspapper name
+     * @var string
+     */
+    private $_name;
+
+    /**
+     * Default dir
+     * @var string
+     */
+    private $_default_dir = 'data/';
+
+    /**
+     * Info about newspapper
+     * @var array
+     */
+    private $_info;
+
+    /**
+     * Prepare storage
+     * @param string $newspapper
+     * @param string $default_dir
+     */
+    public function __construct($newspapper, $default_dir = NULL)
+    {
+        $this->_name = $newspapper;
+
+        if ( $default_dir !== NULL )
+        {
+            $this->_default_dir = $default_dir;
+        }
+
+        $this->_info = $this->_get_info();
+    }
+
+    /**
+     * save info before exit from script
+     */
+    public function __destruct()
+    {
+        $this->_save_info($this->_info);
+    }
+
+    /**
+     * Get path
+     * @param bool $newspapper path to newspapper
+     * @return string path to repository
+     */
+    public function get_path($newspapper = true)
+    {
+        $path = $this->_default_dir;
+
+        if ( $newspapper ) 
+        {
+            $path .= $this->_name . '/';
+        }
+
+        return $path;
+    }
+
+    /**
+     * Get info about newspapper
+     * @return array newspapper info
+     */
+    private function _get_info()
+    {        
+        $content = unserialize( $this->_get_file('info.dat') );
+
+        if( $content === FALSE )
+        {
+            $content = (object) array
+            (
+                'images_count' => 0,
+                'articles_count' => 0,
+                'images' => array(),
+            );
+
+            $this->_save_info($content);
+        }
+
+        return $content;
+    }
+
+    /**
+     * Get info key
+     * @param $key
+     * @return mixed
+     */
+    public function info($key)
+    {
+        return $this->_info->$key;
+    }
+
+    /**
+     * Save info
+     * @param array $info info from class
+     */
+    private function _save_info($info)
+    {
+        $this->_save_file( 'info.dat', serialize($info) );
+    }
+
+    /**
+     * Save image in storage
+     * @param resource $image
+     * @param string $name image name, if null create auto name
+     * @return string image name
+     */
+    public function save_image($image, $name = NULL)
+    {
+        if ( $name === NULL )
+        {
+            $image_name = (string) $this->_info->images_count;
+                    
+            for ($i=strlen($image_name); $i<6; $i++)
+            {
+                $image_name = '0'.$image_name;
+            }
+
+            $this->_info->images_count++;
+            $this->_info->images[$this->_info->images_count] = $image_name;
+
+            $name = $image_name;
+        }
+
+        $this->_save_file($name, $image);
+
+        return $this->_default_dir . $this->_name . '/' . $name;
+    }
+
+    /**
+     * Get image
+     * @param  string $name image name
+     * @return resource
+     */
+    public function get_image($name)
+    {
+        return $this->_get_file($name);
+    }
+
+    /**
+     * Put article contents
+     * @param string $id unique id for article
+     * @param string $title
+     * @param string $content article content
+     * @param string $url url for article
+     * @param object $website
+     */
+    public function add_content($id, $title, $content, $url, $website)
+    {
+        $articles = unserialize( $this->_get_file('articles.dat') );
+        
+        $articles[$id] = (object) array
+        (
+            'id' => $id,
+            'title' => $title,
+            'content' => $content,
+            'url' => $url,
+            'website' => $website,
+        );
+
+        $this->_save_file( 'articles.dat', serialize($articles) );
+    }
+
+    /**
+     * Get articles contents
+     * @param string $file_name
+     * @param string $file_content
+     */
+    public function get_contents()
+    {
+        return unserialize( $this->_get_file( 'articles.dat' ) );
+    }
+
+    /**
+     * Get file content
+     * @param string $file_name
+     * @param string $file_content
+     */
+    private function _save_file($file_name, $file_content)
+    {
+        if( ! file_exists( $this->_default_dir . $this->_name ) )
+        {
+            mkdir( $this->_default_dir . $this->_name, 0777, TRUE );
+        }
+
+        file_put_contents($this->_default_dir . $this->_name . '/' . $file_name, $file_content);
+    }
+
+    /**
+     * Get file content
+     * @param string $file_name
+     * @param string $default_file_content (if file not exists)
+     * @return string file content
+     */
+    private function _get_file($file_name, $default_file_content = NULL)
+    {
+        $content = @file_get_contents($this->_default_dir . $this->_name . '/' . $file_name);
+
+        if ($content === FALSE)
+        {
+            return $default_file_content;
+        }
+
+        return $content;
+    }
+
+    /**
+     * Clean newspapper after convert to mobi
+     */
+    public function clean()
+    {
+        $files_to_remove = glob($this->_default_dir . $this->_name . '/*');
+
+        foreach ( $files_to_remove as $file )
+        {
+            unlink( $file );
+        }
+
+        rmdir( $this->_default_dir . $this->_name );
+    }
+
+}
\ No newline at end of file
diff --git a/inc/3rdparty/libraries/send2kindle/utils.php b/inc/3rdparty/libraries/send2kindle/utils.php
new file mode 100644 (file)
index 0000000..87cc3de
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Utils for news2kindle
+ * @author jwest <jwest@jwest.pl>
+ */
+class Utils
+{
+    /**
+     * URL encode
+     * @param string $url
+     * @return string $ar_url
+     */
+    public static function urlencode( $url )
+    {
+        $ar_url = explode( '/', $url );
+
+        foreach ( $ar_url as $key => $val )
+        {
+            $ar_url[ $key ] = urlencode( $val );
+        }
+
+        return implode('/', $ar_url );
+    }
+
+    /**
+     * Prepare ID for google rss article    
+     * @param string $id
+     * @return string
+     */
+    public static function prepare_id($id)
+    {
+        $char_in = array('/', '.', ',', ':');
+        $id = str_replace($char_in, '-', $id);
+        
+        return $id;
+    }
+}
\ No newline at end of file
index 9c4d3566d558fdcc7207f6b20720e4ef1a66ee7f..1477442570adefc20a79a53eac4ccd4d151abfe6 100644 (file)
@@ -8,11 +8,14 @@
  * @license    http://opensource.org/licenses/MIT see COPYING file
  */
 
-class WallabagEpub
+class WallabagEBooks
 {
-    protected $wallabag;
+       protected $wallabag;
     protected $method;
     protected $value;
+    protected $entries;
+    protected $bookTitle;
+    protected $bookFileName;
 
     public function __construct(Poche $wallabag, $method, $value)
     {
@@ -21,10 +24,7 @@ class WallabagEpub
         $this->value    = $value;
     }
 
-    /**
-     * handle ePub
-     */
-    public function run()
+    public function prepareData()
     {
         switch ($this->method) {
             case 'id':
@@ -62,7 +62,16 @@ class WallabagEpub
             case 'default':
                 die(_('Uh, there is a problem while generating epub.'));
         }
+    }
+}
 
+class WallabagEpub extends WallabagEBooks
+{
+    /**
+     * handle ePub
+     */
+    public function produceEpub()
+    {
         $content_start =
             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
             . "<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:epub=\"http://www.idpf.org/2007/ops\">\n"
@@ -132,4 +141,95 @@ class WallabagEpub
         $book->finalize();
         $zipData = $book->sendBook($bookFileName);
     }
-} 
\ No newline at end of file
+} 
+
+class WallabagMobi extends WallabagEBooks
+{
+       /**
+       * Adapted from News2Kindle
+       * @author Jakub Westfalewski <jwest@jwest.pl>
+       *
+       */
+
+       public function produceMobi()
+       {
+               $storage = new Storage('static');
+               $this->prepareData();
+               foreach ($entries as $i => $item) {
+                       $content = $item['content'];
+                       $images = new Images($storage, $content);
+            $content = $images->convert();
+                       $storage->add_content
+            (
+                md5($item['title']),
+                mb_convert_encoding($item['title'], 'HTML-ENTITIES', 'utf-8'), 
+                $content, 
+                $item['url']], 
+                ""
+            );
+               }
+               $articles = $storage->get_contents();
+               $toc = array();
+        $articles_count = count($articles);
+
+        foreach($articles as $article){
+            if(array_key_exists($article->website->title, $toc)){
+                $toc[$article->website->title]->articles[] = $article;             
+            }else{
+                $toc[$article->website->title] = (object)array(
+                    'articles' => array($article),
+                    'title' => $article->website->title,
+                    'streamId' => $article->website->streamId,
+                    'url' => $article->website->htmlUrl,
+                );
+            }           
+        }
+
+        $mobi = new MOBI(); 
+        $mobi->setData($content);
+        $mobi->setOptions(array( 
+            'title' => 'Articles from '.date('Y-m-d'), 
+            'author' => 'wallabag', 
+            'subject' => 'Articles from '.date('Y-m-d'),
+        ));
+
+        $images = array();
+
+        //prepare images for mobi format
+        foreach ( $storage->info('images') as $n => $image )
+        {
+            $images[$n] = new FileRecord(new Record(file_get_contents($storage->get_path() . $image)));
+        }
+
+        $mobi->setImages($images);
+        $mobi->save( $storage->get_path(FALSE) . 'articles-' . date('Y-m-d') . '.mobi');
+
+        $storage->clean();
+
+        if ($send) {
+               $files = glob($storage->get_path(FALSE).'*.mobi');
+               $mail = new Send(KINDLEMAIL,MAIL);
+               foreach ( $files as $file_mobi )
+               {
+               $mail->send( $file_mobi );
+               }
+               // clean cache 
+               foreach ( $files as $file_mobi )
+               {
+                       unlink( $file_mobi );
+               }
+        }
+       }
+}
+
+class WallabagPDF extends WallabagEbooks
+{
+       public function producePDF()
+       {
+               $mpdf = new mPDF('c'); 
+
+               $mpdf->WriteHTML($html);
+               $mpdf->Output();
+               exit;
+       }
+}
\ No newline at end of file
index b8c487e39277e604c684c880e4b03d55d358829e..e3687eb2563da2eb1f440613489da24b75aafed5 100755 (executable)
@@ -41,6 +41,16 @@ require_once INCLUDES . '/3rdparty/libraries/PHPePub/Logger.php';
 require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPub.php';
 require_once INCLUDES . '/3rdparty/libraries/PHPePub/EPubChapterSplitter.php';
 
+# mobi library
+require_once INCLUDES . '/3rdparty/libraries/send2kindle/send.php';
+require_once INCLUDES . '/3rdparty/libraries/send2kindle/images.php';
+require_once INCLUDES . '/3rdparty/libraries/send2kindle/storage.php';
+require_once INCLUDES . '/3rdparty/libraries/send2kindle/MOBIClass/MOBI.php';
+require_once INCLUDES . '/3rdparty/libraries/send2kindle/utils.php';
+
+# pdf library
+require_once INCLUDES . '/3rdparty/libraries/mpdf/mpdf.php';
+
 # system configuration; database credentials et caetera
 require_once INCLUDES . '/poche/config.inc.php';
 require_once INCLUDES . '/poche/config.inc.default.php';