[Libreoffice-commits] core.git: sw/qa sw/source writerfilter/source

Mark Hung marklh9 at gmail.com
Thu Aug 27 10:02:52 PDT 2015


 sw/qa/extras/ooxmlimport/data/tdf49073.docx       |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx          |   17 +
 sw/qa/extras/rtfexport/data/tdf49073.rtf          |  248 ++++++++++++++++++++++
 sw/qa/extras/rtfexport/rtfexport.cxx              |   17 +
 sw/source/filter/ww8/rtfattributeoutput.cxx       |  151 ++++++++++++-
 writerfilter/source/dmapper/ConversionHelper.cxx  |   26 ++
 writerfilter/source/dmapper/ConversionHelper.hxx  |    1 
 writerfilter/source/dmapper/DomainMapper.cxx      |   70 ++++++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |   77 ++++++
 writerfilter/source/dmapper/DomainMapper_Impl.hxx |   28 ++
 writerfilter/source/dmapper/PropertyIds.cxx       |    3 
 writerfilter/source/dmapper/PropertyIds.hxx       |    3 
 writerfilter/source/ooxml/model.xml               |   44 +++
 13 files changed, 669 insertions(+), 16 deletions(-)

New commits:
commit e2be23d1718b363650bf1853d629df89347d906e
Author: Mark Hung <marklh9 at gmail.com>
Date:   Thu Jul 16 02:55:32 2015 +0800

    Improving Asian phonetic guide for docx and rtf files.
    
    RTF import, export, and ooxml export for ruby text are implemented.
    
    tdf#49073 - FILEOPEN: Furigana (ruby text) and characters with them are
    missing in opened .docx files.
    
    tdf#50786 - [TASK, METABUG] FILEOPEN, FILESAVE, FORMATTING : Japanese
    ruby-character handling is broken
    
    Change-Id: I4a5c30bad180241e3344e9da7efe7da4369fb325
    Reviewed-on: https://gerrit.libreoffice.org/17241
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sw/qa/extras/ooxmlimport/data/tdf49073.docx b/sw/qa/extras/ooxmlimport/data/tdf49073.docx
new file mode 100644
index 0000000..2fe82a3
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf49073.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 820d6f5..4108c49 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -51,6 +51,7 @@
 #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
 #include <com/sun/star/text/XTextViewCursorSupplier.hpp>
 #include <com/sun/star/style/BreakType.hpp>
+#include <com/sun/star/text/RubyAdjust.hpp>
 #include <com/sun/star/style/ParagraphAdjust.hpp>
 #include <com/sun/star/style/LineSpacing.hpp>
 #include <com/sun/star/style/LineSpacingMode.hpp>
@@ -2706,6 +2707,22 @@ DECLARE_OOXMLIMPORT_TEST(mathtype, "mathtype.docx")
     CPPUNIT_ASSERT(xModel->supportsService("com.sun.star.formula.FormulaProperties"));
 }
 
+DECLARE_OOXMLIMPORT_TEST(testTdf49073, "tdf49073.docx")
+{
+    // test case for Asisan phontic guide ( ruby text.)
+    sal_Unicode aRuby[3] = {0x304D,0x3082,0x3093};
+    OUString sRuby = OUString(aRuby, SAL_N_ELEMENTS(aRuby));
+    CPPUNIT_ASSERT_EQUAL(sRuby,getProperty<OUString>(getParagraph(1)->getStart(), "RubyText"));
+    OUString sStyle = getProperty<OUString>( getParagraph(1)->getStart(), "RubyCharStyleName");
+    uno::Reference<beans::XPropertySet> xPropertySet(getStyles("CharacterStyles")->getByName(sStyle), uno::UNO_QUERY );
+    CPPUNIT_ASSERT_EQUAL(5.f, getProperty<float>(xPropertySet, "CharHeight"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_CENTER) ,getProperty<sal_Int16>(getParagraph(2)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_BLOCK)  ,getProperty<sal_Int16>(getParagraph(3)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_INDENT_BLOCK),getProperty<sal_Int16>(getParagraph(4)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_LEFT)   ,getProperty<sal_Int16>(getParagraph(5)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_RIGHT)  ,getProperty<sal_Int16>(getParagraph(6)->getStart(),"RubyAdjust"));
+}
+
 DECLARE_OOXMLIMPORT_TEST(testTdf8255, "tdf8255.docx")
 {
     uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
diff --git a/sw/qa/extras/rtfexport/data/tdf49073.rtf b/sw/qa/extras/rtfexport/data/tdf49073.rtf
new file mode 100755
index 0000000..20fb927
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/tdf49073.rtf
@@ -0,0 +1,248 @@
+{\rtf1\adeflang1025\ansi\ansicpg950\uc2\adeff0\deff0\stshfdbch11\stshfloch21\stshfhich21\stshfbi0\deflang1033\deflangfe1028\themelang1033\themelangfe1041\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\f11\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f14\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}\'b7\'73\'b2\'d3\'a9\'fa\'c5\'e9{\*\falt PMingLiU};}
+{\f21\fbidi \froman\fcharset0\fprq2{\*\panose 02040604050505020304}Century;}{\f21\fbidi \froman\fcharset0\fprq2{\*\panose 02040604050505020304}Century;}{\f38\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}
+{\f39\fbidi \froman\fcharset136\fprq2{\*\panose 02020500000000000000}@\'b7\'73\'b2\'d3\'a9\'fa\'c5\'e9;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbmajor\f31501\fbidi \fmodern\fcharset128\fprq1{\*\panose 020b0609070205080204}MS Gothic{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
+{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}
+{\fdbminor\f31505\fbidi \fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fhiminor\f31506\fbidi \froman\fcharset0\fprq2{\*\panose 02040604050505020304}Century;}
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f40\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f41\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\f43\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f44\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f45\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f46\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\f47\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f48\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f152\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
+{\f150\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f151\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
+{\f153\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f154\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
+{\f157\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f182\fbidi \froman\fcharset0\fprq2 PMingLiU Western{\*\falt PMingLiU};}{\f250\fbidi \froman\fcharset238\fprq2 Century CE;}
+{\f251\fbidi \froman\fcharset204\fprq2 Century Cyr;}{\f253\fbidi \froman\fcharset161\fprq2 Century Greek;}{\f254\fbidi \froman\fcharset162\fprq2 Century Tur;}{\f257\fbidi \froman\fcharset186\fprq2 Century Baltic;}
+{\f250\fbidi \froman\fcharset238\fprq2 Century CE;}{\f251\fbidi \froman\fcharset204\fprq2 Century Cyr;}{\f253\fbidi \froman\fcharset161\fprq2 Century Greek;}{\f254\fbidi \froman\fcharset162\fprq2 Century Tur;}
+{\f257\fbidi \froman\fcharset186\fprq2 Century Baltic;}{\f422\fbidi \fmodern\fcharset0\fprq1 @MS Mincho Western;}{\f420\fbidi \fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f421\fbidi \fmodern\fcharset204\fprq1 @MS Mincho Cyr;}
+{\f423\fbidi \fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f424\fbidi \fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f427\fbidi \fmodern\fcharset186\fprq1 @MS Mincho Baltic;}{\f432\fbidi \froman\fcharset0\fprq2 @\'b7\'73\'b2\'d3\'a9\'fa\'c5\'e9 Western;}
+{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbmajor\f31520\fbidi \fmodern\fcharset0\fprq1 MS Gothic Western{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31518\fbidi \fmodern\fcharset238\fprq1 MS Gothic CE{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}
+{\fdbmajor\f31519\fbidi \fmodern\fcharset204\fprq1 MS Gothic Cyr{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31521\fbidi \fmodern\fcharset161\fprq1 MS Gothic Greek{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}
+{\fdbmajor\f31522\fbidi \fmodern\fcharset162\fprq1 MS Gothic Tur{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}{\fdbmajor\f31525\fbidi \fmodern\fcharset186\fprq1 MS Gothic Baltic{\*\falt \'82\'6c\'82\'72 \'83\'53\'83\'56\'83\'62\'83\'4e};}
+{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}
+{\fhimajor\f31533\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\fhimajor\f31534\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}
+{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}
+{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}
+{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}
+{\fdbminor\f31560\fbidi \fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fdbminor\f31558\fbidi \fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
+{\fdbminor\f31559\fbidi \fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fdbminor\f31561\fbidi \fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
+{\fdbminor\f31562\fbidi \fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\fdbminor\f31565\fbidi \fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
+{\fhiminor\f31568\fbidi \froman\fcharset238\fprq2 Century CE;}{\fhiminor\f31569\fbidi \froman\fcharset204\fprq2 Century Cyr;}{\fhiminor\f31571\fbidi \froman\fcharset161\fprq2 Century Greek;}{\fhiminor\f31572\fbidi \froman\fcharset162\fprq2 Century Tur;}
+{\fhiminor\f31575\fbidi \froman\fcharset186\fprq2 Century Baltic;}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}
+{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
+{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}
+{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
+\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp \loch\af21\hich\af21\dbch\af11 }{\*\defpap 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\f21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 \snext0 \sqformat \spriority0 Normal;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv 
+\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1028\loch\f21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1028 \snext11 \ssemihidden \sunhideused 
+Normal Table;}{\*\cs15 \additive \ul\cf2 \spriority0 \styrsid803037 Hyperlink;}{\s16\qj \li0\ri0\nowidctlpar\tqc\tx4252\tqr\tx8504\wrapdefault\aspalpha\aspnum\faauto\nosnaplinegrid\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\f21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 \sbasedon0 \snext16 \slink17 \spriority0 \styrsid14094704 header;}{\*\cs17 \additive \fs24\kerning2 \slink16 \slocked \spriority0 \styrsid14094704 
+\'ad\'b6\'ad\'ba \'a6\'72\'a4\'b8;}{\s18\qj \li0\ri0\nowidctlpar\tqc\tx4252\tqr\tx8504\wrapdefault\aspalpha\aspnum\faauto\nosnaplinegrid\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\f21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 \sbasedon0 \snext18 \slink19 \spriority0 \styrsid14094704 footer;}{\*\cs19 \additive \fs24\kerning2 \slink18 \slocked \spriority0 \styrsid14094704 
+\'ad\'b6\'a7\'c0 \'a6\'72\'a4\'b8;}}{\*\rsidtbl \rsid23672\rsid30947\rsid31012\rsid82288\rsid346725\rsid413901\rsid554586\rsid620713\rsid663701\rsid732578\rsid788601\rsid803036\rsid803037\rsid876770\rsid918329\rsid928450\rsid935569\rsid946901\rsid1008247
+\rsid1118389\rsid1141272\rsid1205259\rsid1448701\rsid1472946\rsid1591126\rsid1729212\rsid1846850\rsid1993485\rsid2122473\rsid2243098\rsid2316610\rsid2556805\rsid2560625\rsid2570414\rsid2572162\rsid2578603\rsid2702481\rsid2707373\rsid2829973\rsid2850223
+\rsid2886543\rsid2899805\rsid2970147\rsid3081136\rsid3107761\rsid3159692\rsid3168653\rsid3419833\rsid3432180\rsid3435529\rsid3477773\rsid3546296\rsid3553544\rsid3634007\rsid3677756\rsid3937898\rsid3947473\rsid4004186\rsid4025911\rsid4070377\rsid4078003
+\rsid4091643\rsid4094663\rsid4143810\rsid4197832\rsid4269669\rsid4280418\rsid4283264\rsid4327767\rsid4392333\rsid4395625\rsid4416212\rsid4481477\rsid4527589\rsid4596999\rsid4653793\rsid4656684\rsid4670619\rsid4732617\rsid4803098\rsid4864258\rsid4877728
+\rsid4881952\rsid5054701\rsid5056515\rsid5062559\rsid5117611\rsid5118629\rsid5132244\rsid5192195\rsid5197103\rsid5251286\rsid5264210\rsid5322045\rsid5395100\rsid5522990\rsid5571741\rsid5589822\rsid5602802\rsid5705885\rsid5731287\rsid5777580\rsid5908280
+\rsid5979166\rsid5982689\rsid6239107\rsid6430820\rsid6496184\rsid6508554\rsid6567118\rsid6577596\rsid6621411\rsid6623602\rsid6630650\rsid6632405\rsid6645120\rsid6693336\rsid6717422\rsid6769258\rsid6822523\rsid6840578\rsid6912954\rsid7014335\rsid7040533
+\rsid7159041\rsid7231469\rsid7232528\rsid7239023\rsid7364196\rsid7476065\rsid7486571\rsid7490005\rsid7495947\rsid7539123\rsid7624072\rsid7632437\rsid7734719\rsid7735956\rsid7737039\rsid7743213\rsid7802656\rsid7804234\rsid7891906\rsid7943299\rsid7948917
+\rsid7951114\rsid8092488\rsid8195686\rsid8196715\rsid8216276\rsid8290222\rsid8334092\rsid8354461\rsid8400188\rsid8467086\rsid8475509\rsid8525469\rsid8587168\rsid8602350\rsid8658211\rsid8720071\rsid8793351\rsid8862604\rsid8917351\rsid8929644\rsid8938584
+\rsid8982819\rsid8990180\rsid9113161\rsid9130240\rsid9189379\rsid9190144\rsid9248820\rsid9335612\rsid9510773\rsid9578119\rsid9639257\rsid9644025\rsid9646211\rsid9722221\rsid9771214\rsid9787595\rsid10039433\rsid10046310\rsid10103227\rsid10113218
+\rsid10178686\rsid10245768\rsid10248512\rsid10367212\rsid10500674\rsid10514755\rsid10518494\rsid10566009\rsid10629216\rsid10641679\rsid10647504\rsid10704111\rsid10756699\rsid10771539\rsid10832873\rsid10948074\rsid10963412\rsid11037359\rsid11041476
+\rsid11076844\rsid11227022\rsid11238577\rsid11482727\rsid11551494\rsid11667498\rsid11685269\rsid11687336\rsid11697339\rsid11760644\rsid11819100\rsid11866161\rsid11932279\rsid11950296\rsid11999657\rsid12013584\rsid12081840\rsid12133723\rsid12261138
+\rsid12264788\rsid12265407\rsid12386324\rsid12528218\rsid12531640\rsid12550120\rsid12589772\rsid12652992\rsid12662144\rsid12677435\rsid12717390\rsid12720413\rsid12730290\rsid12742735\rsid12793552\rsid12801650\rsid12858828\rsid12864933\rsid12931366
+\rsid12934351\rsid12979847\rsid13121399\rsid13197173\rsid13254297\rsid13305404\rsid13383836\rsid13443897\rsid13446813\rsid13452185\rsid13506869\rsid13649317\rsid13725615\rsid13836418\rsid13843665\rsid13911801\rsid13969104\rsid13972974\rsid13976729
+\rsid13979703\rsid13986050\rsid14028393\rsid14094704\rsid14164385\rsid14289100\rsid14296877\rsid14360047\rsid14376472\rsid14448093\rsid14555991\rsid14687060\rsid14688710\rsid14777111\rsid14815447\rsid14891545\rsid14963643\rsid14969086\rsid14973664
+\rsid15018323\rsid15023171\rsid15033291\rsid15078460\rsid15159072\rsid15164320\rsid15270363\rsid15293880\rsid15337149\rsid15351703\rsid15364511\rsid15413175\rsid15427733\rsid15536030\rsid15620458\rsid15686615\rsid15691612\rsid15801060\rsid15870517
+\rsid15955916\rsid16083162\rsid16125816\rsid16133704\rsid16192985\rsid16214633\rsid16255323\rsid16341811\rsid16350635\rsid16389440\rsid16404733\rsid16404994\rsid16519605\rsid16539836\rsid16585642\rsid16675948\rsid16732166}{\mmathPr\mmathFont34\mbrkBin0
+\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\title (Created originally using MS Word 2003)}{\author ci}{\operator Hunglm}{\creatim\yr2015\mo7\dy25\hr23\min29}{\revtim\yr2015\mo7\dy25\hr23\min29}
+{\version2}{\edmins0}{\nofpages1}{\nofwords177}{\nofchars1012}{\*\company UNL-YRP}{\nofcharsws1187}{\vern49167}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}
+\paperw11906\paperh16838\margl1701\margr1701\margt1985\margb1701\gutter0\ltrsect 
+\deftab840\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont1\relyonvml0\donotembedlingdata0\grfdocevents0\validatexml1\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors1\formshade\horzdoc\dgmargin\dghspace180\dgvspace180
+\dghorigin1701\dgvorigin1985\dghshow0\dgvshow2\jcompress\lnongrid
+\viewkind1\viewscale100\splytwnine\ftnlytwnine\htmautsp\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct\asianbrkrule\rsidroot803037\newtblstyruls\nogrowautofit\utinl {\upr{\*\fchars 
+!),.:\'3b?]\'7d\'a2\'46\'a1\'50\'a1\'56\'a1\'58\'a1\'a6\'a1\'a8\'a1\'45\'a1\'4c\'a1\'4b\'a1\'45\'a1\'ac\'a1\'5a\'a1\'42\'a1\'43\'a1\'72\'a1\'6e\'a1\'76\'a1\'7a\'a1\'6a\'a1\'66\'a1\'aa\'a1\'4a\'a1\'57\'a1\'59\'a1\'5b\'a1\'60\'a1\'64\'a1\'68\'a1\'6c\'a1\'70\'a1\'74\'a1\'78\'a1\'7c\'a1\'5c\'a1\'4d\'a1\'4e\'a1\'4f\'a1\'51\'a1\'52\'a1\'53\'a1\'54\'a1\'7e\'a1\'a2\'a1\'a4\'a1\'49\'a1\'5e\'a1\'41\'a1\'44\'a1\'47\'a1\'46\'a1\'48\'a1\'66\'a1\'55\'a1\'62\'a1\'4e
+}{\*\ud\uc0{\*\fchars 
+!),.:\'3b?]\'7d{\uc2\u162 \'a2F\'a1P\'a1V\'a1X\'a1\'a6\'a1\'a8\u8226 \'a1E\'a1L\'a1K\'a1E\'a1\'ac\'a1Z\'a1B\'a1C\'a1r\'a1n\'a1v\'a1z\'a1j\'a1f\'a1\'aa\'a1J\'a1W\'a1Y\'a1[\'a1`\'a1d\'a1h\'a1l\'a1p\'a1t\'a1x\'a1|\'a1\'5c\'a1M\'a1N\'a1O\'a1Q\'a1R\'a1S\'a1T\'a1~\'a1\'a2\'a1\'a4\'a1I\'a1^\'a1A\'a1D\'a1G\'a1F\'a1H\u-195 \'a1f\'a1U\'a1b\u-156 \'a1N}
+}}}{\upr{\*\lchars ([\'7b\'a2\'47\'a2\'44\'a1\'a5\'a1\'a7\'a1\'ab\'a1\'71\'a1\'6d\'a1\'75\'a1\'79\'a1\'69\'a1\'65\'a1\'a9\'a1\'5f\'a1\'63\'a1\'67\'a1\'6b\'a1\'6f\'a1\'73\'a1\'77\'a1\'7b\'a1\'7d\'a1\'a1\'a1\'a3\'a1\'5d\'a1\'61}{\*\ud\uc0{\*\lchars 
+([\'7b{\uc2\u163 \'a2G\u165 \'a2D\'a1\'a5\'a1\'a7\'a1\'ab\'a1q\'a1m\'a1u\'a1y\'a1i\'a1e\'a1\'a9\'a1_\'a1c\'a1g\'a1k\'a1o\'a1s\'a1w\'a1\'7b\'a1\'7d\'a1\'a1\'a1\'a3\'a1]\'a1a}}}}\fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0{\*\ftnsep \ltrpar 
+\pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14094704 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\af21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14376472 \chftnsep 
+\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14094704 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\af21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14376472 \chftnsepc 
+\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14094704 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\af21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14376472 \chftnsep 
+\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14094704 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\af21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid14376472 \chftnsepc 
+\par }}\ltrpar \sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}
+{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta \dbch )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl6
+\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl9
+\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}\pard\plain \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid803037 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 
+\fs21\lang1033\langfe1041\kerning2\loch\af21\hich\af21\dbch\af11\cgrid\langnp1033\langfenp1041 {\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 EQ \\* jc2 \\* "Font:MS Mincho" \\
+* hps10 \\o\\ad(\\s\\up 9(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs48\insrsid803037\charrsid803037 \loch\af11\hich\af11\dbch\f11 \'82\'ab\'82\'e0\'82\'f1}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 
+\hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'8b\'53\'96\'e5}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 )}
+}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'cc}{\field{\*\fldinst {\rtlch\fcs1 
+\af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 EQ \\* jc2 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 9(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs48\insrsid803037\charrsid803037 \loch\af11\hich\af11\dbch\f11 
+\'82\'d9\'82\'a4\'82\'aa\'82\'ad}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'95\'fb\'8a\'70}
+{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid803037\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'f0}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 EQ \\* jc2 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 9(}
+{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs48\insrsid803037\charrsid803037 \loch\af11\hich\af11\dbch\f11 \'82\'ac\'82\'e5\'82\'a4\'82\'b5}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 
+\af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'8b\'c3\'8e\'8b}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect
+\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid803037\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'b7\'82\'e9\'81\'42}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid803037\charrsid803037 
+\par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid2316610 {\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc0 \\
+* "Font:MS Mincho" \\* hps10 \\o(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'ab\'82\'e0\'82\'f1}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 
+\hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'53\'96\'e5}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect
+\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'cc}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc0 \\* "Font:MS Mincho" \\* hps10 \\o(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'d9\'82\'a4\'82\'aa\'82\'ad}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'95\'fb\'8a\'70}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 
+\hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'f0}
+{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc0 \\* "Font:MS Mincho" \\* hps10 \\o(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 
+\loch\af11\hich\af11\dbch\f11 \'82\'ac\'82\'e5\'82\'a4\'82\'b5}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'c3
+\'8e\'8b}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'b7\'82\'e9\'81\'42}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 
+\par }{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc1 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 
+\loch\af11\hich\af11\dbch\f11 \'82\'ab\'82\'e0\'82\'f1}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'53\'96\'e5}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'cc}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc1 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 23(}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'d9\'82\'a4\'82\'aa\'82\'ad}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 
+\ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'95\'fb\'8a\'70}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect
+\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'f0}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc1 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'ac\'82\'e5\'82\'a4\'82\'b5}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'c3\'8e\'8b}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 
+\hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'b7
+\'82\'e9\'81\'42}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 
+\par }{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc2 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 
+\loch\af11\hich\af11\dbch\f11 \'82\'ab\'82\'e0\'82\'f1}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'53\'96\'e5}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'cc}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc2 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 23(}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'d9\'82\'a4\'82\'aa\'82\'ad}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 
+\ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'95\'fb\'8a\'70}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect
+\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'f0}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc2 \\* "Font:MS Mincho" \\* hps10 \\o\\ad(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'ac\'82\'e5\'82\'a4\'82\'b5}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'c3\'8e\'8b}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 
+\hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'b7
+\'82\'e9\'81\'42}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 
+\par }{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc3 \\* "Font:MS Mincho" \\* hps10 \\o\\al(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 
+\loch\af11\hich\af11\dbch\f11 \'82\'ab\'82\'e0\'82\'f1}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'53\'96\'e5}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'cc}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc3 \\* "Font:MS Mincho" \\* hps10 \\o\\al
+\hich\af21\dbch\af11\loch\f21 (\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'d9\'82\'a4\'82\'aa\'82\'ad}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 
+\hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'95\'fb\'8a\'70}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect
+\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'f0}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc3 \\* "Font:MS Mincho" \\* hps10 \\o\\al(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'ac\'82\'e5\'82\'a4\'82\'b5}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'c3\'8e\'8b}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 
+\hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'b7
+\'82\'e9\'81\'42}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 
+\par }{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc4 \\* "Font:MS Mincho" \\* hps10 \\o\\ar(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 
+\loch\af11\hich\af11\dbch\f11 \'82\'ab\'82\'e0\'82\'f1}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'53\'96\'e5}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'cc}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc4 \\* "Font:MS Mincho" \\* hps10 \\o\\ar(\\s\\up 23(}{
+\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 \'82\'d9\'82\'a4\'82\'aa\'82\'ad}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 
+\ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'95\'fb\'8a\'70}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect
+\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 \loch\af21\hich\af21\dbch\f11 \'82\'f0}{\field{\*\fldinst {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 
+\fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 EQ \\* jc4 \\* "Font:MS Mincho" \\* h\hich\af21\dbch\af11\loch\f21 ps10 \\o\\ar(\\s\\up 23(}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \f11\fs10\insrsid2316610\charrsid2316610 \loch\af11\hich\af11\dbch\f11 
+\'82\'ac\'82\'e5\'82\'a4\'82\'b5}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 ),}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610 \loch\af21\hich\af21\dbch\f11 \'8b\'c3\'8e\'8b}{\rtlch\fcs1 \af0\afs48 
+\ltrch\fcs0 \fs48\insrsid2316610 \hich\af21\dbch\af11\loch\f21 )}}{\fldrslt }}\sectd \ltrsect\linex0\headery851\footery992\colsx425\endnhere\sectlinegrid360\sectspecifyl\sftnbj {\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 
+\loch\af21\hich\af21\dbch\f11 \'82\'b7\'82\'e9\'81\'42}{\rtlch\fcs1 \af0\afs48 \ltrch\fcs0 \fs48\insrsid2316610\charrsid803037 
+\par }\pard \ltrpar\qj \li0\ri0\nowidctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid803037 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe1028\dbch\af14\langfenp1028\insrsid803037\charrsid2316610 
+\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a
+9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad
+5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6
+b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0
+0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6
+a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f
+c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512
+0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462
+a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865
+6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b
+4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b
+4757e8d3f729e245eb2b260a0238fd010000ffff0300504b0304140006000800000021007b6f841b9a060000521b0000160000007468656d652f7468656d652f
+7468656d65312e786d6cec594d6f1b4518be23f11f467b6f6327761a4775aad8b11b68d346b15bd4e37877bc3bcdecce6a669cd437d4485c9090100571a0881b
+0704546a252ee5d7048aa048fd0bbc33b3bbde89d74a5222a8a03e24ded967deefaf195fbdf62066e880084979d2f6ea976b1e2289cf039a846defceb07f69cd
+4352e124c08c27a4ed4d89f4ae6dbcfbce55bcae22121304fb13b98edb5ea454babeb4247d58c6f2324f4902efc65cc458c1a3089702810f816ecc96966bb5d5
+a518d3c443098e81ecedf198fa041d1f7d747cf4fcf8e86b6f2367d063c02551522ff84c0c3479e2ec32d860bfae11722abb4ca003ccda1ef00af8e1903c501e
+62582a78d1f66ae6e32d6d5c5dc2ebd926a616ec2dedeb9b4fb62fdb10ec2f1b9e221c154cebfd46ebca5641df00989ac7f57abd6eaf5ed03300ecfba0a995a5
+4cb3d15fab77729a2590fd3a4fbb5b6bd61a2ebe447f654ee656a7d369b632592c5103b25f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257
+e7f0fd2badd5868b37a088d1647f0ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe7a20f000d6458d104a9694ac6d887
+48de1414334d1eaf135c5ab74bbe9c5bd29c90f4054d55db7b3fc59013336aaf9e7fffeaf95374fcf0d9f1c39f8e8f8e8e1ffe680939bbb671129677bdfcf6d3
+3f1f7f88fe78facdcb479f57e36519ffeb0f1ffff2f367d540489e99382fbe78f2dbb3272fbefce4f7ef1e55c037051e95e1431a13896e9143b4c76350cc58c5
+959c8cc4f9760c234ccb3b369350e2046b2e15f47b2a72d0b7a698e10a5c87b816bc2ba0785401af4fee3b020f223151b482e28d2876803b9cb30e179556b8a1
+7995cc3c9c246135733129e3f6303ea8e2ddc589e3dfde2485aa49ab487623e288b9cb70a2704812a2907ec7f709a9d0ee1ea58e5d77a82fb8e46385ee51d4c1
+b4d224433a72a269b6699bc6e097699580e06fc7363b775187b32aadb7c8818b84acc853d109ba21618e19afe389c27115c9218e59d9e037b18aaa841c4c855f
+c6f5a4024f878471d40b8894557b6e0bd0b7e4f41b18ea55a5db77d834769142d1fd2a9a3731e765e416dfef46384eabb0039a4465ec7b721f4214a35daeaae0
+3bdccd10fd0c7ec0c94277dfa5c471f7e9d5e00e0d1d916601a2df4c840e4428d44efd8d69b2b81877a19f4ec4d406f0c5956328802fbe7a5c91166f6a212e35
+252713b64f94df45b89345b7cb4540dffc9abb8527c92e81309f6f3c6f4beedb92ebfde74beea27c3e6ba19dd55628bbba72d891d80cc8f1c2f9784c191ba829
+2337a5199125f489a00f8b7a9f391f92e2bc9446f035abeb0e2e14d8ec4182ab0fa88a06114e61bcae7b9a482833d2a144299770ac33cb95b4351e4674650f85
+4d7d5cb0f54062b5c303bbbca297f3534141c6749bd01c3d73462b9ac05999ad5cc98882daafc3acae853a33b7ba11cd943a875ba132f8705e35582cac090308
+82b105acbc0a2774cd1a0e26989140dbddf6dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90780d8a9f0913ee29d62b512b79626fb37b89dc54965
+768d05ec72effd1d2fe5113cf392cedb13e9c8927272b2041db6bd5673b9e9211fa76d6f0c275af81aa7e075a9673ecc42b81af295b0617f6a329b2c9f79b395
+2be626411d2e29acdde71476ea402aa4dac232b2a1615e6521c012cdc9cabfdc04b35e940236d25f438a953508867f4d0ab0a3eb5a321e135f959d5d5ad1b6b3
+8f5929e51345c4200a0ed1884dc41e06f7eb50057d022ae16ac25404fd00b768dadae6955b9cb3a42bdf5d199c5dc72c8d70566e758ae6996ce1268f0b19cc53
+493cd0ad5276a3dcf95531297f41aa94c3f87fa68aee277053b012680ff870912b30d2f9daf6b85011872a9446d4ef0b181c4ced8068819b58780d4105d7c9e6
+bf2007fabfcd394bc3a4351cf8d41e0d91a0d08f542408d985b264a2ef1462f5ac7759922c236422aa24ae4cadd8237240d850d7c055dddb3d1441a89b6a9295
+01833b197fee739641a3500f39e57c736a48d17b6d0efcd3938f4d6650caadc366a0c9ed5f8858d155ed7eb33defbd6545f48bd998d5c8b30298955a412b4bfb
+d714e19cadd656ac398d979bb970e0c5798d61b1188852b8ef41fa0ff43f2a7c464c18eb863ae47b505b11fccca08941d840545fb28307d205d22e8e6070b28b
+369834296bda6c74d256cb9bf5054fba05df13c6d6929dc5dfe73476319cb9ec9c5cbc48636716766c6dd7169a1a3c7b324561699c1f648c63cc8f5ae5df9cf8
+e83e387a0b6ef7274c49134cf08b92c0307a0e4c1e40f25b8e66ebc65f000000ffff0300504b0304140006000800000021000dd1909fb60000001b0100002700
+00007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0ad
+d40384e4350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b
+284d262452282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f16
+5dfe514173d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000
+000000000000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000
+00000000000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000
+000000190200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d00140006000800000021007b6f841b9a060000521b000016
+00000000000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b
+0100002700000000000000000000000000a40900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d0100009f0a00000000}
+{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d
+617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169
+6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363
+656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e}
+{\*\latentstyles\lsdstimax267\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef0{\lsdlockedexcept \lsdqformat1 \lsdlocked0 Normal;\lsdqformat1 \lsdlocked0 heading 1;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 4;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 7;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdlocked0 caption;\lsdqformat1 \lsdlocked0 Title;
+\lsdqformat1 \lsdlocked0 Subtitle;\lsdqformat1 \lsdlocked0 Strong;\lsdqformat1 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdpriority99 \lsdlocked0 Placeholder Text;\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;
+\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2;\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;
+\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List;\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;
+\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1;\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;
+\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdpriority99 \lsdlocked0 Revision;\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;
+\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;
+\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;
+\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;
+\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;
+\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2;\lsdpriority60 \lsdlocked0 Light Shading Accent 3;
+\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;
+\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3;\lsdpriority70 \lsdlocked0 Dark List Accent 3;
+\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4;\lsdpriority61 \lsdlocked0 Light List Accent 4;
+\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5;\lsdpriority62 \lsdlocked0 Light Grid Accent 5;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6;
+\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6;
+\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6;
+\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;
+\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography;
+\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 0105000002000000180000004d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000c032
+95b3eec6d001feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000
+0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 5127496..9f8818e 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -27,6 +27,7 @@
 #include <com/sun/star/text/XTextViewCursorSupplier.hpp>
 #include <com/sun/star/text/WritingMode2.hpp>
 #include <com/sun/star/view/XViewSettingsSupplier.hpp>
+#include <com/sun/star/text/RubyAdjust.hpp>
 
 #include <vcl/svapp.hxx>
 
@@ -348,6 +349,22 @@ DECLARE_RTFEXPORT_TEST(testMathVerticalstacks, "math-vertical-stacks.rtf")
     CPPUNIT_ASSERT_EQUAL(OUString("stack { a # stack { b # c } }"), getFormula(getRun(getParagraph(4), 1)));
 }
 
+DECLARE_RTFEXPORT_TEST(testTdf49073, "tdf49073.rtf")
+{
+    // test case for Asisan phontic guide ( ruby text.)
+    sal_Unicode aRuby[3] = {0x304D,0x3082,0x3093};
+    OUString sRuby = OUString(aRuby, SAL_N_ELEMENTS(aRuby));
+    CPPUNIT_ASSERT_EQUAL(sRuby,getProperty<OUString>(getParagraph(1)->getStart(), "RubyText"));
+    OUString sStyle = getProperty<OUString>( getParagraph(1)->getStart(), "RubyCharStyleName");
+    uno::Reference<beans::XPropertySet> xPropertySet(getStyles("CharacterStyles")->getByName(sStyle), uno::UNO_QUERY );
+    CPPUNIT_ASSERT_EQUAL(5.f, getProperty<float>(xPropertySet, "CharHeight"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_CENTER) ,getProperty<sal_Int16>(getParagraph(2)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_BLOCK)  ,getProperty<sal_Int16>(getParagraph(3)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_INDENT_BLOCK),getProperty<sal_Int16>(getParagraph(4)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_LEFT)   ,getProperty<sal_Int16>(getParagraph(5)->getStart(),"RubyAdjust"));
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(text::RubyAdjust_RIGHT)  ,getProperty<sal_Int16>(getParagraph(6)->getStart(),"RubyAdjust"));
+}
+
 DECLARE_RTFEXPORT_TEST(testMathRuns, "math-runs.rtf")
 {
     // was [](){}, i.e. first curly bracket had an incorrect position
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 4e0c0a2..bebcd00 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -62,6 +62,7 @@
 #include <fmtclds.hxx>
 #include <fmtrowsplt.hxx>
 #include <fmtline.hxx>
+#include <breakit.hxx>
 #include <fmtanchr.hxx>
 #include <htmltbl.hxx>
 #include <ndgrf.hxx>
@@ -78,8 +79,11 @@
 #include <vcl/cvtgrf.hxx>
 #include <oox/mathml/export.hxx>
 #include <com/sun/star/i18n/ScriptType.hpp>
+#include "writerhelper.hxx"
 
 using namespace ::com::sun::star;
+using namespace sw::util;
+using namespace nsFieldFlags;
 
 static OString OutTBLBorderLine(RtfExport& rExport, const editeng::SvxBorderLine* pLine, const sal_Char* pStr)
 {
@@ -411,14 +415,119 @@ void RtfAttributeOutput::RawText(const OUString& rText, rtl_TextEncoding eCharSe
     m_aRunText->append(msfilter::rtfutil::OutString(rText, eCharSet));
 }
 
-void RtfAttributeOutput::StartRuby(const SwTextNode& /*rNode*/, sal_Int32 /*nPos*/, const SwFormatRuby& /*rRuby*/)
+void RtfAttributeOutput::StartRuby(const SwTextNode& rNode, sal_Int32 /*nPos*/, const SwFormatRuby& rRuby)
 {
-    SAL_INFO("sw.rtf", "TODO: " << OSL_THIS_FUNC);
+    OUString aStr( FieldString( ww::eEQ ) );
+    aStr += "\\* jc";
+    sal_Int32 nJC = 0;
+    sal_Char cDirective = 0;
+    switch ( rRuby.GetAdjustment() )
+    {
+        case 0:
+            nJC = 3;
+            cDirective = 'l';
+            break;
+        case 1:
+            //defaults to 0
+            break;
+        case 2:
+            nJC = 4;
+            cDirective = 'r';
+            break;
+        case 3:
+            nJC = 1;
+            cDirective = 'd';
+            break;
+        case 4:
+            nJC = 2;
+            cDirective = 'd';
+            break;
+        default:
+            OSL_ENSURE( false,"Unhandled Ruby justication code" );
+            break;
+    }
+    aStr += OUString::number( nJC );
+
+    /*
+     MS needs to know the name and size of the font used in the ruby item,
+     but we could have written it in a mixture of asian and western
+     scripts, and each of these can be a different font and size than the
+     other, so we make a guess based upon the first character of the text,
+     defaulting to asian.
+     */
+    sal_uInt16 nRubyScript;
+    if( g_pBreakIt->GetBreakIter().is() )
+        nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType( rRuby.GetText(), 0);
+    else
+        nRubyScript = i18n::ScriptType::ASIAN;
+
+    const SwTextRuby* pRubyText = rRuby.GetTextRuby();
+    const SwCharFormat* pFormat = pRubyText ? pRubyText->GetCharFormat() : 0;
+    OUString sFamilyName;
+    long nHeight;
+    if ( pFormat )
+    {
+        const SvxFontItem &rFont = ItemGet< SvxFontItem >( *pFormat,
+                GetWhichOfScript(RES_CHRATR_FONT,nRubyScript) );
+        sFamilyName = rFont.GetFamilyName();
+
+        const SvxFontHeightItem &rHeight = ItemGet< SvxFontHeightItem >( *pFormat,
+                GetWhichOfScript( RES_CHRATR_FONTSIZE, nRubyScript ) );
+        nHeight = rHeight.GetHeight();
+    }
+    else
+    {
+        /*Get defaults if no formatting on ruby text*/
+
+        const SfxItemPool *pPool = rNode.GetSwAttrSet().GetPool();
+        pPool = pPool ? pPool : &m_rExport.m_pDoc->GetAttrPool();
+
+        const SvxFontItem &rFont  = DefaultItemGet< SvxFontItem >( *pPool,
+                GetWhichOfScript( RES_CHRATR_FONT,nRubyScript ) );
+        sFamilyName = rFont.GetFamilyName();
+
+        const SvxFontHeightItem &rHeight = DefaultItemGet< SvxFontHeightItem >
+            ( *pPool, GetWhichOfScript( RES_CHRATR_FONTSIZE, nRubyScript ) );
+        nHeight = rHeight.GetHeight();
+    }
+    nHeight = (nHeight + 5)/10;
+
+    aStr += " \\* \"Font:";
+    aStr += sFamilyName;
+    aStr += "\" \\* hps";
+    aStr += OUString::number( nHeight );
+    aStr += " \\o";
+    if ( cDirective )
+    {
+        aStr += "\\a" + OUString(cDirective);
+    }
+    aStr += "(\\s\\up ";
+
+    if ( g_pBreakIt->GetBreakIter().is() )
+        nRubyScript = g_pBreakIt->GetBreakIter()->getScriptType( rNode.GetText(),
+                pRubyText->GetStart() );
+    else
+        nRubyScript = i18n::ScriptType::ASIAN;
+
+    const SwAttrSet& rSet = rNode.GetSwAttrSet();
+    const SvxFontHeightItem &rHeightItem  =
+        static_cast< const SvxFontHeightItem& >(rSet.Get(
+                                             GetWhichOfScript( RES_CHRATR_FONTSIZE, nRubyScript ) ));
+    nHeight = (rHeightItem.GetHeight() + 10)/20-1;
+    aStr += OUString::number(nHeight);
+    aStr += "(";
+    EndRun();
+    m_rExport.OutputField( 0, ww::eEQ, aStr, WRITEFIELD_START | WRITEFIELD_CMD_START );
+    aStr  = rRuby.GetText();
+    aStr += ")";
+    aStr += ",";
+    m_rExport.OutputField( 0, ww::eEQ, aStr, 0);
 }
 
 void RtfAttributeOutput::EndRuby()
 {
-    SAL_INFO("sw.rtf", "TODO: " << OSL_THIS_FUNC);
+    m_rExport.OutputField( 0, ww::eEQ, OUString(")"), WRITEFIELD_END | WRITEFIELD_CLOSE );
+    EndRun( );
 }
 
 bool RtfAttributeOutput::StartURL(const OUString& rUrl, const OUString& rTarget)
@@ -1442,21 +1551,37 @@ void RtfAttributeOutput::NumberingLevel(sal_uInt8 nLevel,
         m_rExport.Strm().WriteChar('}');
 }
 
-void RtfAttributeOutput::WriteField_Impl(const SwField* pField, ww::eField /*eType*/, const OUString& rFieldCmd, sal_uInt8 /*nMode*/)
+void RtfAttributeOutput::WriteField_Impl(const SwField* pField, ww::eField eType, const OUString& rFieldCmd, sal_uInt8 nMode)
 {
     // If there are no field instructions, don't export it as a field.
     bool bHasInstructions = !rFieldCmd.isEmpty();
-    if (bHasInstructions)
+    if (WRITEFIELD_ALL == nMode)
     {
-        m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_FIELD);
-        m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_IGNORE OOO_STRING_SVTOOLS_RTF_FLDINST " ");
-        m_aRunText->append(msfilter::rtfutil::OutString(rFieldCmd, m_rExport.eCurrentEncoding));
-        m_aRunText->append("}{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " ");
+        if (bHasInstructions)
+        {
+            m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_FIELD);
+            m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_IGNORE OOO_STRING_SVTOOLS_RTF_FLDINST " ");
+            m_aRunText->append(msfilter::rtfutil::OutString(rFieldCmd, m_rExport.eCurrentEncoding));
+            m_aRunText->append("}{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " ");
+        }
+        if (pField)
+            m_aRunText->append(msfilter::rtfutil::OutString(pField->ExpandField(true), m_rExport.eDefaultEncoding));
+        if (bHasInstructions)
+            m_aRunText->append("}}");
+    } else if (eType == ww::eEQ) {
+        if (WRITEFIELD_START & nMode)
+        {
+            m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_FIELD);
+            m_aRunText->append("{" OOO_STRING_SVTOOLS_RTF_IGNORE OOO_STRING_SVTOOLS_RTF_FLDINST " ");
+        }
+        if (bHasInstructions)
+            m_aRunText->append(msfilter::rtfutil::OutString(rFieldCmd, m_rExport.eCurrentEncoding));
+        if (WRITEFIELD_END & nMode)
+        {
+            m_aRunText->append("}{" OOO_STRING_SVTOOLS_RTF_FLDRSLT " ");
+            m_aRunText->append("}}");
+        }
     }
-    if (pField)
-        m_aRunText->append(msfilter::rtfutil::OutString(pField->ExpandField(true), m_rExport.eDefaultEncoding));
-    if (bHasInstructions)
-        m_aRunText->append("}}");
 }
 
 void RtfAttributeOutput::WriteBookmarks_Impl(std::vector< OUString >& rStarts, std::vector< OUString >& rEnds)
diff --git a/writerfilter/source/dmapper/ConversionHelper.cxx b/writerfilter/source/dmapper/ConversionHelper.cxx
index 77f935c..e64c091 100644
--- a/writerfilter/source/dmapper/ConversionHelper.cxx
+++ b/writerfilter/source/dmapper/ConversionHelper.cxx
@@ -22,6 +22,7 @@
 #include <com/sun/star/lang/Locale.hpp>
 #include <com/sun/star/text/HoriOrientation.hpp>
 #include <com/sun/star/style/NumberingType.hpp>
+#include <com/sun/star/text/RubyAdjust.hpp>
 #include <editeng/borderline.hxx>
 #include <ooxml/resourceids.hxx>
 #include <rtl/ustrbuf.hxx>
@@ -423,6 +424,31 @@ sal_uInt32 convertTwipToMM100Unsigned(sal_Int32 _t)
     return convertTwipToMM100( _t );
 }
 
+sal_Int16 convertRubyAlign( sal_Int32 nIntValue )
+{
+    sal_Int16 rubyAdjust = text::RubyAdjust_LEFT;
+    switch( nIntValue )
+    {
+        case NS_ooxml::LN_Value_ST_RubyAlign_center:
+        case NS_ooxml::LN_Value_ST_RubyAlign_rightVertical:
+            rubyAdjust = text::RubyAdjust_CENTER;
+            break;
+        case NS_ooxml::LN_Value_ST_RubyAlign_distributeLetter:
+            rubyAdjust = text::RubyAdjust_BLOCK;
+            break;
+        case NS_ooxml::LN_Value_ST_RubyAlign_distributeSpace:
+            rubyAdjust = text::RubyAdjust_INDENT_BLOCK;
+            break;
+        case NS_ooxml::LN_Value_ST_RubyAlign_left:
+            rubyAdjust = text::RubyAdjust_LEFT;
+            break;
+        case NS_ooxml::LN_Value_ST_RubyAlign_right:
+            rubyAdjust = text::RubyAdjust_RIGHT;
+            break;
+    }
+    return rubyAdjust;
+}
+
 sal_Int16 convertTableJustification( sal_Int32 nIntValue )
 {
     sal_Int16 nOrient = text::HoriOrientation::LEFT_AND_WIDTH;
diff --git a/writerfilter/source/dmapper/ConversionHelper.hxx b/writerfilter/source/dmapper/ConversionHelper.hxx
index b906775..faf5c27 100644
--- a/writerfilter/source/dmapper/ConversionHelper.hxx
+++ b/writerfilter/source/dmapper/ConversionHelper.hxx
@@ -47,6 +47,7 @@ namespace ConversionHelper{
     SAL_DLLPUBLIC_EXPORT sal_Int32 convertTwipToMM100(sal_Int32 _t);
     SAL_DLLPUBLIC_EXPORT sal_uInt32 convertTwipToMM100Unsigned(sal_Int32 _t);
     sal_Int16 convertTableJustification( sal_Int32 nIntValue );
+    sal_Int16 convertRubyAlign( sal_Int32 nIntValue );
     sal_Int16 ConvertNumberingType(sal_Int32 nFmt);
 
     css::util::DateTime ConvertDateStringToDateTime(const OUString& rDateTime);
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 267dc54..a27bf85 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1560,7 +1560,18 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
             else
             {
                 bool bIgnore = false;
-                if (m_pImpl->m_bInTableStyleRunProps)
+                const   RubyInfo    &aInfo = m_pImpl->GetRubyInfo();
+                if (aInfo.nSprmId == NS_ooxml::LN_CT_Ruby_rt && aInfo.nHps > 0 )
+                {
+                    fVal = double(aInfo.nHps) / 2.;
+                    aVal = uno::makeAny( fVal );
+                }
+                else if (aInfo.nSprmId  == NS_ooxml::LN_CT_Ruby_rubyBase && aInfo.nHpsBaseText > 0 )
+                {
+                    fVal = double(aInfo.nHpsBaseText) / 2.;
+                    aVal = uno::makeAny( fVal );
+                }
+                else if (m_pImpl->m_bInTableStyleRunProps)
                 {
                     // If the default para style contains PROP_CHAR_HEIGHT, that should have priority over the table style.
                     StyleSheetEntryPtr pTable = m_pImpl->GetStyleSheetTable()->FindDefaultParaStyle();
@@ -2544,6 +2555,54 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
         }
     }
     break;
+    case NS_ooxml::LN_EG_RunInnerContent_ruby:
+    {
+        RubyInfo    aInfo ;
+        m_pImpl->SetRubyInfo(aInfo);
+    }
+    case NS_ooxml::LN_CT_RubyPr:
+    case NS_ooxml::LN_CT_Ruby_rt:
+    case NS_ooxml::LN_CT_Ruby_rubyBase:
+    {
+        m_pImpl->SetRubySprmId(nSprmId);
+        if (nSprmId == NS_ooxml::LN_CT_RubyPr)
+        {
+            resolveSprmProps(*this, rSprm);
+        }
+    }
+    break;
+    case NS_ooxml::LN_EG_RubyContent_r:
+    {
+        const RubyInfo & aInfo = m_pImpl->GetRubyInfo();
+        if (aInfo.nSprmId == NS_ooxml::LN_CT_Ruby_rubyBase)
+        {
+            rContext->Insert(PROP_RUBY_TEXT, uno::makeAny(aInfo.sRubyText));
+            rContext->Insert(PROP_RUBY_STYLE, uno::makeAny(aInfo.sRubyStyle));
+            rContext->Insert(PROP_RUBY_ADJUST, uno::makeAny(ConversionHelper::convertRubyAlign(aInfo.nRubyAlign)));
+            m_pImpl->SetRubySprmId(0);
+        }
+    }
+    break;
+    case NS_ooxml::LN_CT_RubyPr_rubyAlign:
+    case NS_ooxml::LN_CT_RubyPr_hps:
+    case NS_ooxml::LN_CT_RubyPr_hpsBaseText:
+    {
+        RubyInfo    aInfo = m_pImpl->GetRubyInfo();
+        switch(nSprmId)
+        {
+            case NS_ooxml::LN_CT_RubyPr_rubyAlign:
+                aInfo.nRubyAlign = nIntValue;
+                break;
+            case NS_ooxml::LN_CT_RubyPr_hps:
+                aInfo.nHps= nIntValue;
+                break;
+            case NS_ooxml::LN_CT_RubyPr_hpsBaseText:
+                aInfo.nHpsBaseText = nIntValue;
+                break;
+        }
+        m_pImpl->SetRubyInfo(aInfo);
+    }
+    break;
     default:
         {
 #ifdef DEBUG_WRITERFILTER
@@ -2954,6 +3013,15 @@ void DomainMapper::lcl_utext(const sal_uInt8 * data_, size_t len)
     OUStringBuffer aBuffer = OUStringBuffer(sal::static_int_cast<int>(len));
     aBuffer.append( reinterpret_cast<const sal_Unicode *>(data_), len);
     sText = aBuffer.makeStringAndClear();
+    const RubyInfo & aInfo = m_pImpl->GetRubyInfo();
+    if (aInfo.nSprmId == NS_ooxml::LN_CT_Ruby_rt)
+    {
+        PropertyMapPtr pContext = m_pImpl->GetTopContext();
+        PropertyValueVector_t aProps = comphelper::sequenceToContainer< PropertyValueVector_t >(pContext->GetPropertyValues());
+        OUString sStyle = getOrCreateCharStyle(aProps);
+        m_pImpl->SetRubyText(sText,sStyle);
+        return;
+    }
 
     if (m_pImpl->isSdtEndDeferred())
     {
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 3f0e6a3..c47584e 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -2929,6 +2929,79 @@ void DomainMapper_Impl::handleFieldAsk
     }
 }
 
+
+void  DomainMapper_Impl::handleRubyEQField( FieldContextPtr pContext)
+{
+    const OUString & rCommand(pContext->GetCommand());
+    sal_Int32 nIndex = 0, nEnd = 0;
+    OUString aToken ,sFont;
+    RubyInfo aInfo ;
+    nIndex = rCommand.indexOf("\\* jc" );
+    if (nIndex != -1)
+    {
+        nIndex += 5;
+        sal_uInt32  nJc = rCommand.getToken(0, ' ',nIndex).toInt32();
+        const   sal_Int32   aRubyAlignValues[] =
+        {
+            NS_ooxml::LN_Value_ST_RubyAlign_center,
+            NS_ooxml::LN_Value_ST_RubyAlign_distributeLetter,
+            NS_ooxml::LN_Value_ST_RubyAlign_distributeSpace,
+            NS_ooxml::LN_Value_ST_RubyAlign_left,
+            NS_ooxml::LN_Value_ST_RubyAlign_right,
+            NS_ooxml::LN_Value_ST_RubyAlign_rightVertical,
+        };
+        aInfo.nRubyAlign = aRubyAlignValues[(nJc<SAL_N_ELEMENTS(aRubyAlignValues))?nJc:0];
+    }
+
+    nIndex = rCommand.indexOf("\\* \"Font:" );
+    if (nIndex != -1)
+    {
+        nIndex += 9;
+        aToken = rCommand.getToken(0, '"',nIndex);
+        sFont = aToken;
+    }
+    nIndex = rCommand.indexOf("\\* hps" );
+    if (nIndex != -1)
+    {
+        nIndex += 6;
+        aInfo.nHps = rCommand.getToken(0, ' ',nIndex).toInt32();
+    }
+
+    nIndex = rCommand.indexOf("\\o");
+    if (nIndex != -1 && (nIndex = rCommand.indexOf('(', nIndex)) != -1 && (nEnd = rCommand.lastIndexOf(')'))!=-1 && nEnd > nIndex)
+    {
+        OUString sRubyParts = rCommand.copy(nIndex+1,nEnd-nIndex-1);
+        nIndex = 0;
+        OUString sPart1 = sRubyParts.getToken(0, ',', nIndex);
+        OUString sPart2 = sRubyParts.getToken(0, ',', nIndex);
+        if ((nIndex = sPart1.indexOf('(', 0)) != -1 && (nEnd = sPart1.lastIndexOf(')'))!=-1 )
+        {
+            aInfo.sRubyText = sPart1.copy(nIndex+1,nEnd-nIndex-1);
+        }
+
+        PropertyMapPtr pRubyContext(new PropertyMap());
+        pRubyContext->InsertProps(GetTopContext());
+        if (aInfo.nHps > 0)
+        {
+            double fVal = double(aInfo.nHps) / 2.;
+            uno::Any aVal = uno::makeAny( fVal );
+
+            pRubyContext->Insert(PROP_CHAR_HEIGHT, aVal);
+            pRubyContext->Insert(PROP_CHAR_HEIGHT_ASIAN, aVal);
+        }
+        PropertyValueVector_t aProps = comphelper::sequenceToContainer< PropertyValueVector_t >(pRubyContext->GetPropertyValues());
+        aInfo.sRubyStyle = m_rDMapper.getOrCreateCharStyle(aProps);
+        PropertyMapPtr pCharContext(new PropertyMap());
+        if (m_pLastCharacterContext.get())
+            pCharContext->InsertProps(m_pLastCharacterContext);
+        pCharContext->InsertProps(pContext->getProperties());
+        pCharContext->Insert(PROP_RUBY_TEXT, uno::makeAny( aInfo.sRubyText ) );
+        pCharContext->Insert(PROP_RUBY_ADJUST, uno::makeAny(ConversionHelper::convertRubyAlign(aInfo.nRubyAlign)));
+        pCharContext->Insert(PROP_RUBY_STYLE, uno::makeAny(aInfo.sRubyStyle));
+        appendTextPortion(sPart2, pCharContext);
+    }
+}
+
 void DomainMapper_Impl::handleAutoNum
     (FieldContextPtr pContext,
     uno::Reference< uno::XInterface > & xFieldInterface,
@@ -3677,6 +3750,10 @@ void DomainMapper_Impl::CloseFieldCommand()
                                     }
                                 }
                             }
+                            else if (aCommand.startsWith("\\* jc"))
+                            {
+                                handleRubyEQField(pContext);
+                            }
                         }
                     }
                     break;
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 8dc1856..55d059d 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -267,6 +267,24 @@ struct AnnotationPosition
     css::uno::Reference<css::text::XTextRange> m_xEnd;
 };
 
+struct RubyInfo
+{
+    OUString    sRubyText;
+    OUString    sRubyStyle;
+    sal_uInt32  nSprmId;
+    sal_uInt32  nRubyAlign;
+    sal_uInt32  nHps;
+    sal_uInt32  nHpsBaseText;
+
+    RubyInfo():
+        nSprmId(0),
+        nRubyAlign(0),
+        nHps(0),
+        nHpsBaseText(0)
+    {
+    }
+};
+
 struct LineNumberSettings
 {
     bool        bIsOn;
@@ -399,6 +417,7 @@ private:
     bool                            m_bIsInFootnoteProperties;
     bool                            m_bIsCustomFtnMark;
 
+    RubyInfo                        m_aRubyInfo;
     //registered frame properties
     std::vector<css::beans::PropertyValue> m_aFrameProperties;
     css::uno::Reference<css::text::XTextRange> m_xFrameStartRange;
@@ -488,6 +507,14 @@ public:
     void RemoveLastParagraph( );
     void SetIsLastParagraphInSection( bool bIsLast );
     bool GetIsLastParagraphInSection() { return m_bIsLastParaInSection;}
+    void SetRubySprmId( sal_uInt32 nSprmId) { m_aRubyInfo.nSprmId = nSprmId ; }
+    void SetRubyText( OUString &sText,OUString &sStyle) {
+        m_aRubyInfo.sRubyText = sText;
+        m_aRubyInfo.sRubyStyle = sStyle;
+    }
+    const RubyInfo & GetRubyInfo() const { return m_aRubyInfo;}
+    void SetRubyInfo(const RubyInfo & rInfo) { m_aRubyInfo = rInfo;}
+
     void SetIsLastSectionGroup( bool bIsLast );
     bool GetIsLastSectionGroup() { return m_bIsLastSectionGroup;}
     void SetIsFirstParagraphInSection( bool bIsFirst );
@@ -620,6 +647,7 @@ public:
     void SetFieldLocked();
     //collect the pieces of the command
     void AppendFieldCommand(OUString& rPartOfCommand);
+    void handleRubyEQField( FieldContextPtr pContext);
     void handleFieldAsk
         (FieldContextPtr pContext,
         css::uno::Reference< css::uno::XInterface > & xFieldInterface,
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index 5bf3715..e8b85d7 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -379,6 +379,9 @@ OUString getPropertyName( PropertyIds eId )
         case PROP_FILL_COLOR: sName = "FillColor"; break;
         case PROP_SNAP_TO_GRID: sName = "SnapToGrid"; break;
         case PROP_GRID_SNAP_TO_CHARS: sName = "GridSnapToChars"; break;
+        case PROP_RUBY_STYLE: sName = "RubyCharStyleName"; break;
+        case PROP_RUBY_TEXT: sName = "RubyText"; break;
+        case PROP_RUBY_ADJUST: sName = "RubyAdjust"; break;
     }
     assert(sName.getLength()>0);
     return sName;
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index 89feb8c..75a2a9b 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -377,6 +377,9 @@ enum PropertyIds
         ,PROP_FILL_COLOR
         ,PROP_SNAP_TO_GRID
         ,PROP_GRID_SNAP_TO_CHARS
+        ,PROP_RUBY_STYLE
+        ,PROP_RUBY_TEXT
+        ,PROP_RUBY_ADJUST
     };
 
 //Returns the UNO string equivalent to eId.
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 860655e..260aa3d 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -13706,9 +13706,19 @@
           <ref name="CT_OnOff"/>
         </element>
       </define>
+      <define name="ST_RubyAlign">
+        <choice>
+          <value>center</value>
+          <value>distributeLetter</value>
+          <value>distributeSpace</value>
+          <value>left</value>
+          <value>right</value>
+          <value>rightVertical</value>
+        </choice>
+      </define>
       <define name="CT_RubyAlign">
         <attribute name="val">
-          <data type="string"/>
+          <ref name="ST_RubyAlign"/>
         </attribute>
       </define>
       <define name="CT_RubyPr">
@@ -17900,6 +17910,7 @@
     </resource>
     <resource name="CT_R" resource="Stream">
       <action name="start" action="startCharacterGroup"/>
+      <action name="start" action="sendPropertiesWithId" tokenid="ooxml:EG_RubyContent_r" sendtokenid="ooxml:EG_RubyContent_r"/>
     </resource>
     <resource name="ST_Hint" resource="List">
       <value tokenid="ooxml:Value_ST_Hint_default">default</value>
@@ -17997,9 +18008,38 @@
       <action name="start" action="sendPropertiesWithId" sendtokenid="ooxml:paratrackchange"/>
       <action name="start" action="clearProps"/>
     </resource>
+    <resource name="ST_RubyAlign" resource="List">
+      <value tokenid="ooxml:Value_ST_RubyAlign_center">center</value>
+      <value tokenid="ooxml:Value_ST_RubyAlign_distributeLetter">distributeLetter</value>
+      <value tokenid="ooxml:Value_ST_RubyAlign_distributeSpace">distributeSpace</value>
+      <value tokenid="ooxml:Value_ST_RubyAlign_left">left</value>
+      <value tokenid="ooxml:Value_ST_RubyAlign_right">right</value>
+      <value tokenid="ooxml:Value_ST_RubyAlign_rightVertical">rightVertical</value>
+    </resource>
     <resource name="CT_RubyAlign" resource="Value">
       <attribute name="val" tokenid="ooxml:CT_RubyAlign_val" action="setValue"/>
-      <action name="start" action="setDefaultStringValue"/>
+    </resource>
+    <resource name="CT_RubyPr" resource="Properties">
+        <element name="rubyAlign" tokenid="ooxml:CT_RubyPr_rubyAlign"/>
+        <element name="hps" tokenid="ooxml:CT_RubyPr_hps"/>
+        <element name="hpsRaise" tokenid="ooxml:CT_RubyPr_hpsRaise"/>
+        <element name="hpsBaseText" tokenid="ooxml:CT_RubyPr_hpsBaseText"/>
+        <element name="lid" tokenid="ooxml:CT_RubyPr_lid"/>
+        <element name="dirty" tokenid="ooxml:CT_RubyPr_dirty"/>
+        <action name="start" action="sendPropertiesWithId" tokenid="ooxml:CT_RubyPr" sendtokenid="ooxml:CT_RubyPr"/>
+    </resource>
+    <resource name="CT_Ruby" resource="Stream">
+        <element name="rubyPr" tokenid="ooxml:CT_RubyPr"/>
+        <element name="rt" tokenid="ooxml:CT_Ruby_rt"/>
+        <element name="rubyBase" tokenid="ooxml:CT_Ruby_rubyBase"/>
+        <action name="start" action="sendPropertiesWithId" tokenid="ooxml:EG_RunInnerContent_ruby" sendtokenid="ooxml:EG_RunInnerContent_ruby"/>
+    </resource>
+    <resource name="CT_RubyContent" resource="Stream">
+      <action name="start" action="sendPropertiesWithId" tokenid="ooxml:CT_Ruby_rt" sendtokenid="ooxml:CT_Ruby_rt"/>
+      <action name="start" action="sendPropertiesWithId" tokenid="ooxml:CT_Ruby_rubyBase" sendtokenid="ooxml:CT_Ruby_rubyBase"/>
+    </resource>
+    <resource name="EG_RubyContent" resource="Stream">
+      <element name="r" tokenid="ooxml:EG_RubyContent_r"/>
     </resource>
     <resource name="CT_Lock" resource="Value">
       <attribute name="val" tokenid="ooxml:CT_Lock_val" action="setValue"/>


More information about the Libreoffice-commits mailing list